Actual source code: zbvf.c
slepc-3.21.1 2024-04-26
1: /*
2: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3: SLEPc - Scalable Library for Eigenvalue Problem Computations
4: Copyright (c) 2002-, Universitat Politecnica de Valencia, Spain
6: This file is part of SLEPc.
7: SLEPc is distributed under a 2-clause BSD license (see LICENSE).
8: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
9: */
11: #include <petsc/private/fortranimpl.h>
12: #include <slepcbv.h>
14: #if defined(PETSC_HAVE_FORTRAN_CAPS)
15: #define bvsettype_ BVSETTYPE
16: #define bvgettype_ BVGETTYPE
17: #define bvsetoptionsprefix_ BVSETOPTIONSPREFIX
18: #define bvappendoptionsprefix_ BVAPPENDOPTIONSPREFIX
19: #define bvgetoptionsprefix_ BVGETOPTIONSPREFIX
20: #define bvdestroy_ BVDESTROY
21: #define bvview_ BVVIEW
22: #define bvviewfromoptions_ BVVIEWFROMOPTIONS
23: #define bvsetvectype_ BVSETVECTYPE
24: #define bvgetvectype_ BVGETVECTYPE
25: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
26: #define bvsettype_ bvsettype
27: #define bvgettype_ bvgettype
28: #define bvsetoptionsprefix_ bvsetoptionsprefix
29: #define bvappendoptionsprefix_ bvappendoptionsprefix
30: #define bvgetoptionsprefix_ bvgetoptionsprefix
31: #define bvdestroy_ bvdestroy
32: #define bvview_ bvview
33: #define bvviewfromoptions_ bvviewfromoptions
34: #define bvsetvectype_ bvsetvectype
35: #define bvgetvectype_ bvgetvectype
36: #endif
38: SLEPC_EXTERN void bvsettype_(BV *bv,char *type,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
39: {
40: char *t;
42: FIXCHAR(type,len,t);
43: *ierr = BVSetType(*bv,t);if (*ierr) return;
44: FREECHAR(type,t);
45: }
47: SLEPC_EXTERN void bvgettype_(BV *bv,char *name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
48: {
49: BVType tname;
51: *ierr = BVGetType(*bv,&tname); if (*ierr) return;
52: *ierr = PetscStrncpy(name,tname,len);if (*ierr) return;
53: FIXRETURNCHAR(PETSC_TRUE,name,len);
54: }
56: SLEPC_EXTERN void bvsetoptionsprefix_(BV *bv,char *prefix,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
57: {
58: char *t;
60: FIXCHAR(prefix,len,t);
61: *ierr = BVSetOptionsPrefix(*bv,t);if (*ierr) return;
62: FREECHAR(prefix,t);
63: }
65: SLEPC_EXTERN void bvappendoptionsprefix_(BV *bv,char *prefix,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
66: {
67: char *t;
69: FIXCHAR(prefix,len,t);
70: *ierr = BVAppendOptionsPrefix(*bv,t);if (*ierr) return;
71: FREECHAR(prefix,t);
72: }
74: SLEPC_EXTERN void bvgetoptionsprefix_(BV *bv,char *prefix,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
75: {
76: const char *tname;
78: *ierr = BVGetOptionsPrefix(*bv,&tname); if (*ierr) return;
79: *ierr = PetscStrncpy(prefix,tname,len);if (*ierr) return;
80: FIXRETURNCHAR(PETSC_TRUE,prefix,len);
81: }
83: SLEPC_EXTERN void bvdestroy_(BV *bv,PetscErrorCode *ierr)
84: {
85: PETSC_FORTRAN_OBJECT_F_DESTROYED_TO_C_NULL(bv);
86: *ierr = BVDestroy(bv); if (*ierr) return;
87: PETSC_FORTRAN_OBJECT_C_NULL_TO_F_DESTROYED(bv);
88: }
90: SLEPC_EXTERN void bvview_(BV *bv,PetscViewer *viewer,PetscErrorCode *ierr)
91: {
92: PetscViewer v;
93: PetscPatchDefaultViewers_Fortran(viewer,v);
94: *ierr = BVView(*bv,v);
95: }
97: SLEPC_EXTERN void bvviewfromoptions_(BV *bv,PetscObject obj,char* type,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
98: {
99: char *t;
101: FIXCHAR(type,len,t);
102: CHKFORTRANNULLOBJECT(obj);
103: *ierr = BVViewFromOptions(*bv,obj,t);if (*ierr) return;
104: FREECHAR(type,t);
105: }
107: SLEPC_EXTERN void bvsetvectype_(BV *bv,char *vtype,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
108: {
109: char *t;
111: FIXCHAR(vtype,len,t);
112: *ierr = BVSetVecType(*bv,t);if (*ierr) return;
113: FREECHAR(vtype, t);
114: }
116: SLEPC_EXTERN void bvgetvectype_(BV *bv,char *vtype,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
117: {
118: const char *tname;
120: *ierr = BVGetVecType(*bv,&tname);if (*ierr) return;
121: if (vtype!=PETSC_NULL_CHARACTER_Fortran) {
122: *ierr = PetscStrncpy(vtype,tname,len);if (*ierr) return;
123: }
124: FIXRETURNCHAR(PETSC_TRUE,vtype,len);
125: }