xref: /petsc/src/sys/objects/ftn-custom/zoptionsf.c (revision 9306f9a34965603a078d4120a577c738c77fe6b5)
1*9306f9a3SSatish Balay /*
2*9306f9a3SSatish Balay   This file contains Fortran stubs for Options routines.
3*9306f9a3SSatish Balay   These are not generated automatically since they require passing strings
4*9306f9a3SSatish Balay   between Fortran and C.
5*9306f9a3SSatish Balay */
6*9306f9a3SSatish Balay 
7*9306f9a3SSatish Balay #include "zpetsc.h"
8*9306f9a3SSatish Balay #include "petscsys.h"
9*9306f9a3SSatish Balay 
10*9306f9a3SSatish Balay #ifdef PETSC_HAVE_FORTRAN_CAPS
11*9306f9a3SSatish Balay #define petscoptionsgettruth_            PETSCOPTIONSGETTRUTH
12*9306f9a3SSatish Balay #define petscoptionsgetintarray_           PETSCOPTIONSGETINTARRAY
13*9306f9a3SSatish Balay #define petscoptionssetvalue_              PETSCOPTIONSSETVALUE
14*9306f9a3SSatish Balay #define petscoptionsclearvalue_            PETSCOPTIONSCLEARVALUE
15*9306f9a3SSatish Balay #define petscoptionshasname_               PETSCOPTIONSHASNAME
16*9306f9a3SSatish Balay #define petscoptionsgetint_                PETSCOPTIONSGETINT
17*9306f9a3SSatish Balay #define petscoptionsgetreal_               PETSCOPTIONSGETREAL
18*9306f9a3SSatish Balay #define petscoptionsgetrealarray_          PETSCOPTIONSGETREALARRAY
19*9306f9a3SSatish Balay #define petscoptionsgetstring_             PETSCOPTIONSGETSTRING
20*9306f9a3SSatish Balay #define petscgetprogramname                PETSCGETPROGRAMNAME
21*9306f9a3SSatish Balay #define petscoptionsinsertfile_            PETSCOPTIONSINSERTFILE
22*9306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
23*9306f9a3SSatish Balay #define petscoptionsgettruth_            petscoptionsgettruth
24*9306f9a3SSatish Balay #define petscoptionssetvalue_              petscoptionssetvalue
25*9306f9a3SSatish Balay #define petscoptionsclearvalue_            petscoptionsclearvalue
26*9306f9a3SSatish Balay #define petscoptionshasname_               petscoptionshasname
27*9306f9a3SSatish Balay #define petscoptionsgetint_                petscoptionsgetint
28*9306f9a3SSatish Balay #define petscoptionsgetreal_               petscoptionsgetreal
29*9306f9a3SSatish Balay #define petscoptionsgetrealarray_          petscoptionsgetrealarray
30*9306f9a3SSatish Balay #define petscoptionsgetstring_             petscoptionsgetstring
31*9306f9a3SSatish Balay #define petscoptionsgetintarray_           petscoptionsgetintarray
32*9306f9a3SSatish Balay #define petscgetprogramname_               petscgetprogramname
33*9306f9a3SSatish Balay #define petscoptionsinsertfile_            petscoptionsinsertfile
34*9306f9a3SSatish Balay #endif
35*9306f9a3SSatish Balay 
36*9306f9a3SSatish Balay EXTERN_C_BEGIN
37*9306f9a3SSatish Balay 
38*9306f9a3SSatish Balay /* ---------------------------------------------------------------------*/
39*9306f9a3SSatish Balay 
40*9306f9a3SSatish Balay void PETSC_STDCALL petscoptionsinsertfile_(CHAR file PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
41*9306f9a3SSatish Balay {
42*9306f9a3SSatish Balay   char *c1;
43*9306f9a3SSatish Balay 
44*9306f9a3SSatish Balay   FIXCHAR(file,len,c1);
45*9306f9a3SSatish Balay   *ierr = PetscOptionsInsertFile(c1);
46*9306f9a3SSatish Balay   FREECHAR(file,c1);
47*9306f9a3SSatish Balay }
48*9306f9a3SSatish Balay 
49*9306f9a3SSatish Balay void PETSC_STDCALL petscoptionssetvalue_(CHAR name PETSC_MIXED_LEN(len1),CHAR value PETSC_MIXED_LEN(len2),
50*9306f9a3SSatish Balay                    PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
51*9306f9a3SSatish Balay {
52*9306f9a3SSatish Balay   char *c1,*c2;
53*9306f9a3SSatish Balay 
54*9306f9a3SSatish Balay   FIXCHAR(name,len1,c1);
55*9306f9a3SSatish Balay   FIXCHAR(value,len2,c2);
56*9306f9a3SSatish Balay   *ierr = PetscOptionsSetValue(c1,c2);
57*9306f9a3SSatish Balay   FREECHAR(name,c1);
58*9306f9a3SSatish Balay   FREECHAR(value,c2);
59*9306f9a3SSatish Balay }
60*9306f9a3SSatish Balay 
61*9306f9a3SSatish Balay void PETSC_STDCALL petscoptionsclearvalue_(CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
62*9306f9a3SSatish Balay {
63*9306f9a3SSatish Balay   char *c1;
64*9306f9a3SSatish Balay 
65*9306f9a3SSatish Balay   FIXCHAR(name,len,c1);
66*9306f9a3SSatish Balay   *ierr = PetscOptionsClearValue(c1);
67*9306f9a3SSatish Balay   FREECHAR(name,c1);
68*9306f9a3SSatish Balay }
69*9306f9a3SSatish Balay 
70*9306f9a3SSatish Balay void PETSC_STDCALL petscoptionshasname_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
71*9306f9a3SSatish Balay                     PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
72*9306f9a3SSatish Balay {
73*9306f9a3SSatish Balay   char *c1,*c2;
74*9306f9a3SSatish Balay 
75*9306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
76*9306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
77*9306f9a3SSatish Balay   *ierr = PetscOptionsHasName(c1,c2,flg);
78*9306f9a3SSatish Balay   FREECHAR(pre,c1);
79*9306f9a3SSatish Balay   FREECHAR(name,c2);
80*9306f9a3SSatish Balay }
81*9306f9a3SSatish Balay 
82*9306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetint_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
83*9306f9a3SSatish Balay                     PetscInt *ivalue,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
84*9306f9a3SSatish Balay {
85*9306f9a3SSatish Balay   char *c1,*c2;
86*9306f9a3SSatish Balay 
87*9306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
88*9306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
89*9306f9a3SSatish Balay   *ierr = PetscOptionsGetInt(c1,c2,ivalue,flg);
90*9306f9a3SSatish Balay   FREECHAR(pre,c1);
91*9306f9a3SSatish Balay   FREECHAR(name,c2);
92*9306f9a3SSatish Balay }
93*9306f9a3SSatish Balay 
94*9306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgettruth_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
95*9306f9a3SSatish Balay                     PetscTruth *ivalue,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
96*9306f9a3SSatish Balay {
97*9306f9a3SSatish Balay   char *c1,*c2;
98*9306f9a3SSatish Balay 
99*9306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
100*9306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
101*9306f9a3SSatish Balay   *ierr = PetscOptionsGetTruth(c1,c2,ivalue,flg);
102*9306f9a3SSatish Balay   FREECHAR(pre,c1);
103*9306f9a3SSatish Balay   FREECHAR(name,c2);
104*9306f9a3SSatish Balay }
105*9306f9a3SSatish Balay 
106*9306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetreal_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
107*9306f9a3SSatish Balay                     PetscReal *dvalue,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
108*9306f9a3SSatish Balay {
109*9306f9a3SSatish Balay   char *c1,*c2;
110*9306f9a3SSatish Balay 
111*9306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
112*9306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
113*9306f9a3SSatish Balay   *ierr = PetscOptionsGetReal(c1,c2,dvalue,flg);
114*9306f9a3SSatish Balay   FREECHAR(pre,c1);
115*9306f9a3SSatish Balay   FREECHAR(name,c2);
116*9306f9a3SSatish Balay }
117*9306f9a3SSatish Balay 
118*9306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetrealarray_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
119*9306f9a3SSatish Balay                 PetscReal *dvalue,PetscInt *nmax,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
120*9306f9a3SSatish Balay {
121*9306f9a3SSatish Balay   char *c1,*c2;
122*9306f9a3SSatish Balay 
123*9306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
124*9306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
125*9306f9a3SSatish Balay   *ierr = PetscOptionsGetRealArray(c1,c2,dvalue,nmax,flg);
126*9306f9a3SSatish Balay   FREECHAR(pre,c1);
127*9306f9a3SSatish Balay   FREECHAR(name,c2);
128*9306f9a3SSatish Balay }
129*9306f9a3SSatish Balay 
130*9306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetintarray_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
131*9306f9a3SSatish Balay                    PetscInt *dvalue,PetscInt *nmax,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
132*9306f9a3SSatish Balay {
133*9306f9a3SSatish Balay   char *c1,*c2;
134*9306f9a3SSatish Balay 
135*9306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
136*9306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
137*9306f9a3SSatish Balay   *ierr = PetscOptionsGetIntArray(c1,c2,dvalue,nmax,flg);
138*9306f9a3SSatish Balay   FREECHAR(pre,c1);
139*9306f9a3SSatish Balay   FREECHAR(name,c2);
140*9306f9a3SSatish Balay }
141*9306f9a3SSatish Balay 
142*9306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetstring_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
143*9306f9a3SSatish Balay                     CHAR string PETSC_MIXED_LEN(len),PetscTruth *flg,
144*9306f9a3SSatish Balay                     PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len))
145*9306f9a3SSatish Balay {
146*9306f9a3SSatish Balay   char *c1,*c2,*c3;
147*9306f9a3SSatish Balay   int  len3;
148*9306f9a3SSatish Balay 
149*9306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
150*9306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
151*9306f9a3SSatish Balay #if defined(PETSC_USES_CPTOFCD)
152*9306f9a3SSatish Balay     c3   = _fcdtocp(string);
153*9306f9a3SSatish Balay     len3 = _fcdlen(string) - 1;
154*9306f9a3SSatish Balay #else
155*9306f9a3SSatish Balay     c3   = string;
156*9306f9a3SSatish Balay     len3 = len - 1;
157*9306f9a3SSatish Balay #endif
158*9306f9a3SSatish Balay 
159*9306f9a3SSatish Balay   *ierr = PetscOptionsGetString(c1,c2,c3,len3,flg);
160*9306f9a3SSatish Balay   FREECHAR(pre,c1);
161*9306f9a3SSatish Balay   FREECHAR(name,c2);
162*9306f9a3SSatish Balay   FIXRETURNCHAR(string,len);
163*9306f9a3SSatish Balay }
164*9306f9a3SSatish Balay 
165*9306f9a3SSatish Balay void PETSC_STDCALL petscgetprogramname_(CHAR name PETSC_MIXED_LEN(len_in),PetscErrorCode *ierr PETSC_END_LEN(len_in))
166*9306f9a3SSatish Balay {
167*9306f9a3SSatish Balay   char *tmp;
168*9306f9a3SSatish Balay   int  len;
169*9306f9a3SSatish Balay #if defined(PETSC_USES_CPTOFCD)
170*9306f9a3SSatish Balay   tmp = _fcdtocp(name);
171*9306f9a3SSatish Balay   len = _fcdlen(name) - 1;
172*9306f9a3SSatish Balay #else
173*9306f9a3SSatish Balay   tmp = name;
174*9306f9a3SSatish Balay   len = len_in - 1;
175*9306f9a3SSatish Balay #endif
176*9306f9a3SSatish Balay   *ierr = PetscGetProgramName(tmp,len);
177*9306f9a3SSatish Balay   FIXRETURNCHAR(name,len_in);
178*9306f9a3SSatish Balay }
179*9306f9a3SSatish Balay 
180*9306f9a3SSatish Balay EXTERN_C_END
181*9306f9a3SSatish Balay 
182