xref: /petsc/src/sys/objects/ftn-custom/zoptionsf.c (revision 8cc058d9cd56c1ccb3be12a47760ddfc446aaffc)
19306f9a3SSatish Balay /*
29306f9a3SSatish Balay   This file contains Fortran stubs for Options routines.
39306f9a3SSatish Balay   These are not generated automatically since they require passing strings
49306f9a3SSatish Balay   between Fortran and C.
59306f9a3SSatish Balay */
69306f9a3SSatish Balay 
7b45d2f2cSJed Brown #include <petsc-private/fortranimpl.h>
8665c2dedSJed Brown #include <petscviewer.h>
99306f9a3SSatish Balay 
10519f805aSKarl Rupp #if defined(PETSC_HAVE_FORTRAN_CAPS)
1147340559SBarry Smith #define petscoptionsgetenumprivate_        PETSCOPTIONSGETENUMPRIVATE
1208f86b60SJed Brown #define petscoptionsgetbool_               PETSCOPTIONSGETBOOL
139306f9a3SSatish Balay #define petscoptionsgetintarray_           PETSCOPTIONSGETINTARRAY
149306f9a3SSatish Balay #define petscoptionssetvalue_              PETSCOPTIONSSETVALUE
159306f9a3SSatish Balay #define petscoptionsclearvalue_            PETSCOPTIONSCLEARVALUE
169306f9a3SSatish Balay #define petscoptionshasname_               PETSCOPTIONSHASNAME
179306f9a3SSatish Balay #define petscoptionsgetint_                PETSCOPTIONSGETINT
189306f9a3SSatish Balay #define petscoptionsgetreal_               PETSCOPTIONSGETREAL
199306f9a3SSatish Balay #define petscoptionsgetrealarray_          PETSCOPTIONSGETREALARRAY
209306f9a3SSatish Balay #define petscoptionsgetstring_             PETSCOPTIONSGETSTRING
219306f9a3SSatish Balay #define petscgetprogramname                PETSCGETPROGRAMNAME
229306f9a3SSatish Balay #define petscoptionsinsertfile_            PETSCOPTIONSINSERTFILE
23a542b6e8SBarry Smith #define petscoptionsclear_                 PETSCOPTIONSCLEAR
24ab66e762SBarry Smith #define petscoptionsinsertstring_          PETSCOPTIONSINSERTSTRING
253a15af8cSBlaise Bourdin #define petscoptionsview_                  PETSCOPTIONSVIEW
269306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
2747340559SBarry Smith #define petscoptionsgetenumprivate_        petscoptionsgetenumprivate
2808f86b60SJed Brown #define petscoptionsgetbool_               petscoptionsgetbool
299306f9a3SSatish Balay #define petscoptionssetvalue_              petscoptionssetvalue
309306f9a3SSatish Balay #define petscoptionsclearvalue_            petscoptionsclearvalue
319306f9a3SSatish Balay #define petscoptionshasname_               petscoptionshasname
329306f9a3SSatish Balay #define petscoptionsgetint_                petscoptionsgetint
339306f9a3SSatish Balay #define petscoptionsgetreal_               petscoptionsgetreal
349306f9a3SSatish Balay #define petscoptionsgetrealarray_          petscoptionsgetrealarray
359306f9a3SSatish Balay #define petscoptionsgetstring_             petscoptionsgetstring
369306f9a3SSatish Balay #define petscoptionsgetintarray_           petscoptionsgetintarray
379306f9a3SSatish Balay #define petscgetprogramname_               petscgetprogramname
389306f9a3SSatish Balay #define petscoptionsinsertfile_            petscoptionsinsertfile
39a542b6e8SBarry Smith #define petscoptionsclear_                 petscoptionsclear
40ab66e762SBarry Smith #define petscoptionsinsertstring_          petscoptionsinsertstring
413a15af8cSBlaise Bourdin #define petscoptionsview_                  petscoptionsview
429306f9a3SSatish Balay #endif
439306f9a3SSatish Balay 
449306f9a3SSatish Balay /* ---------------------------------------------------------------------*/
459306f9a3SSatish Balay 
46*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsinsertstring_(CHAR file PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
47ab66e762SBarry Smith {
48ab66e762SBarry Smith   char *c1;
49ab66e762SBarry Smith 
50ab66e762SBarry Smith   FIXCHAR(file,len,c1);
51ab66e762SBarry Smith   *ierr = PetscOptionsInsertString(c1);
52ab66e762SBarry Smith   FREECHAR(file,c1);
53ab66e762SBarry Smith }
54ab66e762SBarry Smith 
55*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsinsertfile_(MPI_Fint *comm,CHAR file PETSC_MIXED_LEN(len),PetscBool *require,PetscErrorCode *ierr PETSC_END_LEN(len))
569306f9a3SSatish Balay {
579306f9a3SSatish Balay   char *c1;
589306f9a3SSatish Balay 
599306f9a3SSatish Balay   FIXCHAR(file,len,c1);
609b754dc9SBarry Smith   *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm),c1,*require);
619306f9a3SSatish Balay   FREECHAR(file,c1);
629306f9a3SSatish Balay }
639306f9a3SSatish Balay 
64*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionssetvalue_(CHAR name PETSC_MIXED_LEN(len1),CHAR value PETSC_MIXED_LEN(len2),
659306f9a3SSatish Balay                    PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
669306f9a3SSatish Balay {
679306f9a3SSatish Balay   char *c1,*c2;
689306f9a3SSatish Balay 
699306f9a3SSatish Balay   FIXCHAR(name,len1,c1);
709306f9a3SSatish Balay   FIXCHAR(value,len2,c2);
719306f9a3SSatish Balay   *ierr = PetscOptionsSetValue(c1,c2);
729306f9a3SSatish Balay   FREECHAR(name,c1);
739306f9a3SSatish Balay   FREECHAR(value,c2);
749306f9a3SSatish Balay }
759306f9a3SSatish Balay 
76*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsclear_(PetscErrorCode *ierr)
77a542b6e8SBarry Smith {
78a542b6e8SBarry Smith   *ierr = PetscOptionsClear();
79a542b6e8SBarry Smith }
80a542b6e8SBarry Smith 
81*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsclearvalue_(CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
829306f9a3SSatish Balay {
839306f9a3SSatish Balay   char *c1;
849306f9a3SSatish Balay 
859306f9a3SSatish Balay   FIXCHAR(name,len,c1);
869306f9a3SSatish Balay   *ierr = PetscOptionsClearValue(c1);
879306f9a3SSatish Balay   FREECHAR(name,c1);
889306f9a3SSatish Balay }
899306f9a3SSatish Balay 
90*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionshasname_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
91ace3abfcSBarry Smith                     PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
929306f9a3SSatish Balay {
939306f9a3SSatish Balay   char *c1,*c2;
949306f9a3SSatish Balay 
959306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
969306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
979306f9a3SSatish Balay   *ierr = PetscOptionsHasName(c1,c2,flg);
989306f9a3SSatish Balay   FREECHAR(pre,c1);
999306f9a3SSatish Balay   FREECHAR(name,c2);
1009306f9a3SSatish Balay }
1019306f9a3SSatish Balay 
102*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsgetint_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
103ace3abfcSBarry Smith                     PetscInt *ivalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1049306f9a3SSatish Balay {
1059306f9a3SSatish Balay   char      *c1,*c2;
106ace3abfcSBarry Smith   PetscBool flag;
1079306f9a3SSatish Balay 
1089306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1099306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
1107c363081SBarry Smith   *ierr = PetscOptionsGetInt(c1,c2,ivalue,&flag);
1115c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1129306f9a3SSatish Balay   FREECHAR(pre,c1);
1139306f9a3SSatish Balay   FREECHAR(name,c2);
1149306f9a3SSatish Balay }
1159306f9a3SSatish Balay 
116*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsgetenumprivate_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),const char *const*list,
11747340559SBarry Smith                     PetscEnum *ivalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
11847340559SBarry Smith {
11947340559SBarry Smith   char      *c1,*c2;
12047340559SBarry Smith   PetscBool flag;
12147340559SBarry Smith 
12247340559SBarry Smith   FIXCHAR(pre,len1,c1);
12347340559SBarry Smith   FIXCHAR(name,len2,c2);
12447340559SBarry Smith   *ierr = PetscOptionsGetEnum(c1,c2,list,ivalue,&flag);
12547340559SBarry Smith   if (!FORTRANNULLBOOL(flg)) *flg = flag;
12647340559SBarry Smith   FREECHAR(pre,c1);
12747340559SBarry Smith   FREECHAR(name,c2);
12847340559SBarry Smith }
12947340559SBarry Smith 
130*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsgetbool_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
131ace3abfcSBarry Smith                     PetscBool  *ivalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1329306f9a3SSatish Balay {
1339306f9a3SSatish Balay   char      *c1,*c2;
134ace3abfcSBarry Smith   PetscBool flag;
1359306f9a3SSatish Balay 
1369306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1379306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
138acfcf0e5SJed Brown   *ierr = PetscOptionsGetBool(c1,c2,ivalue,&flag);
1395c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1409306f9a3SSatish Balay   FREECHAR(pre,c1);
1419306f9a3SSatish Balay   FREECHAR(name,c2);
1429306f9a3SSatish Balay }
1439306f9a3SSatish Balay 
144*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsgetreal_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
145ace3abfcSBarry Smith                     PetscReal *dvalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1469306f9a3SSatish Balay {
1479306f9a3SSatish Balay   char *c1,*c2;
148ace3abfcSBarry Smith   PetscBool  flag;
1499306f9a3SSatish Balay 
1509306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1519306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
1527c363081SBarry Smith   *ierr = PetscOptionsGetReal(c1,c2,dvalue,&flag);
1535c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1549306f9a3SSatish Balay   FREECHAR(pre,c1);
1559306f9a3SSatish Balay   FREECHAR(name,c2);
1569306f9a3SSatish Balay }
1579306f9a3SSatish Balay 
158*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsgetrealarray_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
159ace3abfcSBarry Smith                 PetscReal *dvalue,PetscInt *nmax,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1609306f9a3SSatish Balay {
1619306f9a3SSatish Balay   char      *c1,*c2;
162ace3abfcSBarry Smith   PetscBool flag;
1639306f9a3SSatish Balay 
1649306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1659306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
1667c363081SBarry Smith   *ierr = PetscOptionsGetRealArray(c1,c2,dvalue,nmax,&flag);
1675c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1689306f9a3SSatish Balay   FREECHAR(pre,c1);
1699306f9a3SSatish Balay   FREECHAR(name,c2);
1709306f9a3SSatish Balay }
1719306f9a3SSatish Balay 
172*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsgetintarray_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
173ace3abfcSBarry Smith                    PetscInt *dvalue,PetscInt *nmax,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1749306f9a3SSatish Balay {
1759306f9a3SSatish Balay   char      *c1,*c2;
176ace3abfcSBarry Smith   PetscBool flag;
1779306f9a3SSatish Balay 
1789306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1799306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
1807c363081SBarry Smith   *ierr = PetscOptionsGetIntArray(c1,c2,dvalue,nmax,&flag);
1815c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1829306f9a3SSatish Balay   FREECHAR(pre,c1);
1839306f9a3SSatish Balay   FREECHAR(name,c2);
1849306f9a3SSatish Balay }
1859306f9a3SSatish Balay 
186*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsgetstring_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
187ace3abfcSBarry Smith                     CHAR string PETSC_MIXED_LEN(len),PetscBool  *flg,
1889306f9a3SSatish Balay                     PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len))
1899306f9a3SSatish Balay {
1909306f9a3SSatish Balay   char      *c1,*c2,*c3;
1914610e317SSatish Balay   size_t    len3;
192ace3abfcSBarry Smith   PetscBool flag;
1939306f9a3SSatish Balay 
1949306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1959306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
1969306f9a3SSatish Balay   c3   = string;
1979306f9a3SSatish Balay   len3 = len - 1;
1989306f9a3SSatish Balay 
1997c363081SBarry Smith   *ierr = PetscOptionsGetString(c1,c2,c3,len3,&flag);
2005c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2019306f9a3SSatish Balay   FREECHAR(pre,c1);
2029306f9a3SSatish Balay   FREECHAR(name,c2);
2037c363081SBarry Smith   FIXRETURNCHAR(flag,string,len);
2049306f9a3SSatish Balay }
2059306f9a3SSatish Balay 
206*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscgetprogramname_(CHAR name PETSC_MIXED_LEN(len_in),PetscErrorCode *ierr PETSC_END_LEN(len_in))
2079306f9a3SSatish Balay {
2089306f9a3SSatish Balay   char   *tmp;
2094610e317SSatish Balay   size_t len;
2109306f9a3SSatish Balay   tmp   = name;
2119306f9a3SSatish Balay   len   = len_in - 1;
2129306f9a3SSatish Balay   *ierr = PetscGetProgramName(tmp,len);
2137c363081SBarry Smith   FIXRETURNCHAR(PETSC_TRUE,name,len_in);
2149306f9a3SSatish Balay }
2159306f9a3SSatish Balay 
216*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsview_(PetscViewer *vin,PetscErrorCode *ierr)
2173a15af8cSBlaise Bourdin {
2183a15af8cSBlaise Bourdin   PetscViewer v;
2193a15af8cSBlaise Bourdin 
2203a15af8cSBlaise Bourdin   PetscPatchDefaultViewers_Fortran(vin,v);
2213a15af8cSBlaise Bourdin   *ierr = PetscOptionsView(v);
2223a15af8cSBlaise Bourdin }
2233a15af8cSBlaise Bourdin 
224