xref: /petsc/src/sys/objects/ftn-custom/zoptionsf.c (revision ab66e7628d261cbb66cdd29d76a6a59eb36aee60)
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 
7ce0a2cd1SBarry Smith #include "private/fortranimpl.h"
89306f9a3SSatish Balay #include "petscsys.h"
99306f9a3SSatish Balay 
109306f9a3SSatish Balay #ifdef PETSC_HAVE_FORTRAN_CAPS
119306f9a3SSatish Balay #define petscoptionsgettruth_              PETSCOPTIONSGETTRUTH
129306f9a3SSatish Balay #define petscoptionsgetintarray_           PETSCOPTIONSGETINTARRAY
139306f9a3SSatish Balay #define petscoptionssetvalue_              PETSCOPTIONSSETVALUE
149306f9a3SSatish Balay #define petscoptionsclearvalue_            PETSCOPTIONSCLEARVALUE
159306f9a3SSatish Balay #define petscoptionshasname_               PETSCOPTIONSHASNAME
169306f9a3SSatish Balay #define petscoptionsgetint_                PETSCOPTIONSGETINT
179306f9a3SSatish Balay #define petscoptionsgetreal_               PETSCOPTIONSGETREAL
189306f9a3SSatish Balay #define petscoptionsgetrealarray_          PETSCOPTIONSGETREALARRAY
199306f9a3SSatish Balay #define petscoptionsgetstring_             PETSCOPTIONSGETSTRING
209306f9a3SSatish Balay #define petscgetprogramname                PETSCGETPROGRAMNAME
219306f9a3SSatish Balay #define petscoptionsinsertfile_            PETSCOPTIONSINSERTFILE
22a542b6e8SBarry Smith #define petscoptionsclear_                 PETSCOPTIONSCLEAR
23*ab66e762SBarry Smith #define petscoptionsinsertstring_          PETSCOPTIONSINSERTSTRING
249306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
259306f9a3SSatish Balay #define petscoptionsgettruth_              petscoptionsgettruth
269306f9a3SSatish Balay #define petscoptionssetvalue_              petscoptionssetvalue
279306f9a3SSatish Balay #define petscoptionsclearvalue_            petscoptionsclearvalue
289306f9a3SSatish Balay #define petscoptionshasname_               petscoptionshasname
299306f9a3SSatish Balay #define petscoptionsgetint_                petscoptionsgetint
309306f9a3SSatish Balay #define petscoptionsgetreal_               petscoptionsgetreal
319306f9a3SSatish Balay #define petscoptionsgetrealarray_          petscoptionsgetrealarray
329306f9a3SSatish Balay #define petscoptionsgetstring_             petscoptionsgetstring
339306f9a3SSatish Balay #define petscoptionsgetintarray_           petscoptionsgetintarray
349306f9a3SSatish Balay #define petscgetprogramname_               petscgetprogramname
359306f9a3SSatish Balay #define petscoptionsinsertfile_            petscoptionsinsertfile
36a542b6e8SBarry Smith #define petscoptionsclear_                 petscoptionsclear
37*ab66e762SBarry Smith #define petscoptionsinsertstring_          petscoptionsinsertstring
389306f9a3SSatish Balay #endif
399306f9a3SSatish Balay 
409306f9a3SSatish Balay EXTERN_C_BEGIN
419306f9a3SSatish Balay 
429306f9a3SSatish Balay /* ---------------------------------------------------------------------*/
439306f9a3SSatish Balay 
44*ab66e762SBarry Smith void PETSC_STDCALL petscoptionsinsertstring_(CHAR file PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
45*ab66e762SBarry Smith {
46*ab66e762SBarry Smith   char *c1;
47*ab66e762SBarry Smith 
48*ab66e762SBarry Smith   FIXCHAR(file,len,c1);
49*ab66e762SBarry Smith   *ierr = PetscOptionsInsertString(c1);
50*ab66e762SBarry Smith   FREECHAR(file,c1);
51*ab66e762SBarry Smith }
52*ab66e762SBarry Smith 
539b754dc9SBarry Smith void PETSC_STDCALL petscoptionsinsertfile_(MPI_Fint *comm,CHAR file PETSC_MIXED_LEN(len),PetscTruth *require,PetscErrorCode *ierr PETSC_END_LEN(len))
549306f9a3SSatish Balay {
559306f9a3SSatish Balay   char *c1;
569306f9a3SSatish Balay 
579306f9a3SSatish Balay   FIXCHAR(file,len,c1);
589b754dc9SBarry Smith   *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm),c1,*require);
599306f9a3SSatish Balay   FREECHAR(file,c1);
609306f9a3SSatish Balay }
619306f9a3SSatish Balay 
629306f9a3SSatish Balay void PETSC_STDCALL petscoptionssetvalue_(CHAR name PETSC_MIXED_LEN(len1),CHAR value PETSC_MIXED_LEN(len2),
639306f9a3SSatish Balay                    PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
649306f9a3SSatish Balay {
659306f9a3SSatish Balay   char *c1,*c2;
669306f9a3SSatish Balay 
679306f9a3SSatish Balay   FIXCHAR(name,len1,c1);
689306f9a3SSatish Balay   FIXCHAR(value,len2,c2);
699306f9a3SSatish Balay   *ierr = PetscOptionsSetValue(c1,c2);
709306f9a3SSatish Balay   FREECHAR(name,c1);
719306f9a3SSatish Balay   FREECHAR(value,c2);
729306f9a3SSatish Balay }
739306f9a3SSatish Balay 
74a542b6e8SBarry Smith void PETSC_STDCALL petscoptionsclear_(PetscErrorCode *ierr)
75a542b6e8SBarry Smith {
76a542b6e8SBarry Smith   *ierr = PetscOptionsClear();
77a542b6e8SBarry Smith }
78a542b6e8SBarry Smith 
799306f9a3SSatish Balay void PETSC_STDCALL petscoptionsclearvalue_(CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
809306f9a3SSatish Balay {
819306f9a3SSatish Balay   char *c1;
829306f9a3SSatish Balay 
839306f9a3SSatish Balay   FIXCHAR(name,len,c1);
849306f9a3SSatish Balay   *ierr = PetscOptionsClearValue(c1);
859306f9a3SSatish Balay   FREECHAR(name,c1);
869306f9a3SSatish Balay }
879306f9a3SSatish Balay 
889306f9a3SSatish Balay void PETSC_STDCALL petscoptionshasname_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
899306f9a3SSatish Balay                     PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
909306f9a3SSatish Balay {
919306f9a3SSatish Balay   char *c1,*c2;
929306f9a3SSatish Balay 
939306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
949306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
959306f9a3SSatish Balay   *ierr = PetscOptionsHasName(c1,c2,flg);
969306f9a3SSatish Balay   FREECHAR(pre,c1);
979306f9a3SSatish Balay   FREECHAR(name,c2);
989306f9a3SSatish Balay }
999306f9a3SSatish Balay 
1009306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetint_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
1019306f9a3SSatish Balay                     PetscInt *ivalue,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1029306f9a3SSatish Balay {
1039306f9a3SSatish Balay   char *c1,*c2;
1047c363081SBarry Smith   PetscTruth flag;
1059306f9a3SSatish Balay 
1069306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1079306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
1087c363081SBarry Smith   *ierr = PetscOptionsGetInt(c1,c2,ivalue,&flag);
1097c363081SBarry Smith   if (!FORTRANNULLTRUTH(flg)) *flg = flag;
1109306f9a3SSatish Balay   FREECHAR(pre,c1);
1119306f9a3SSatish Balay   FREECHAR(name,c2);
1129306f9a3SSatish Balay }
1139306f9a3SSatish Balay 
1149306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgettruth_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
1159306f9a3SSatish Balay                     PetscTruth *ivalue,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1169306f9a3SSatish Balay {
1179306f9a3SSatish Balay   char *c1,*c2;
1187c363081SBarry Smith   PetscTruth flag;
1199306f9a3SSatish Balay 
1209306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1219306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
1227c363081SBarry Smith   *ierr = PetscOptionsGetTruth(c1,c2,ivalue,&flag);
1237c363081SBarry Smith   if (!FORTRANNULLTRUTH(flg)) *flg = flag;
1249306f9a3SSatish Balay   FREECHAR(pre,c1);
1259306f9a3SSatish Balay   FREECHAR(name,c2);
1269306f9a3SSatish Balay }
1279306f9a3SSatish Balay 
1289306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetreal_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
1299306f9a3SSatish Balay                     PetscReal *dvalue,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1309306f9a3SSatish Balay {
1319306f9a3SSatish Balay   char *c1,*c2;
1327c363081SBarry Smith   PetscTruth flag;
1339306f9a3SSatish Balay 
1349306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1359306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
1367c363081SBarry Smith   *ierr = PetscOptionsGetReal(c1,c2,dvalue,&flag);
1377c363081SBarry Smith   if (!FORTRANNULLTRUTH(flg)) *flg = flag;
1389306f9a3SSatish Balay   FREECHAR(pre,c1);
1399306f9a3SSatish Balay   FREECHAR(name,c2);
1409306f9a3SSatish Balay }
1419306f9a3SSatish Balay 
1429306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetrealarray_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
1439306f9a3SSatish Balay                 PetscReal *dvalue,PetscInt *nmax,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1449306f9a3SSatish Balay {
1459306f9a3SSatish Balay   char *c1,*c2;
1467c363081SBarry Smith   PetscTruth flag;
1479306f9a3SSatish Balay 
1489306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1499306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
1507c363081SBarry Smith   *ierr = PetscOptionsGetRealArray(c1,c2,dvalue,nmax,&flag);
1517c363081SBarry Smith   if (!FORTRANNULLTRUTH(flg)) *flg = flag;
1529306f9a3SSatish Balay   FREECHAR(pre,c1);
1539306f9a3SSatish Balay   FREECHAR(name,c2);
1549306f9a3SSatish Balay }
1559306f9a3SSatish Balay 
1569306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetintarray_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
1579306f9a3SSatish Balay                    PetscInt *dvalue,PetscInt *nmax,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1589306f9a3SSatish Balay {
1599306f9a3SSatish Balay   char *c1,*c2;
1607c363081SBarry Smith   PetscTruth flag;
1619306f9a3SSatish Balay 
1629306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1639306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
1647c363081SBarry Smith   *ierr = PetscOptionsGetIntArray(c1,c2,dvalue,nmax,&flag);
1657c363081SBarry Smith   if (!FORTRANNULLTRUTH(flg)) *flg = flag;
1669306f9a3SSatish Balay   FREECHAR(pre,c1);
1679306f9a3SSatish Balay   FREECHAR(name,c2);
1689306f9a3SSatish Balay }
1699306f9a3SSatish Balay 
1709306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetstring_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
1719306f9a3SSatish Balay                     CHAR string PETSC_MIXED_LEN(len),PetscTruth *flg,
1729306f9a3SSatish Balay                     PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len))
1739306f9a3SSatish Balay {
1749306f9a3SSatish Balay   char *c1,*c2,*c3;
1754610e317SSatish Balay   size_t len3;
1767c363081SBarry Smith   PetscTruth flag;
1779306f9a3SSatish Balay 
1789306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1799306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
1809306f9a3SSatish Balay   c3   = string;
1819306f9a3SSatish Balay   len3 = len - 1;
1829306f9a3SSatish Balay 
1837c363081SBarry Smith   *ierr = PetscOptionsGetString(c1,c2,c3,len3,&flag);
1847c363081SBarry Smith   if (!FORTRANNULLTRUTH(flg)) *flg = flag;
1859306f9a3SSatish Balay   FREECHAR(pre,c1);
1869306f9a3SSatish Balay   FREECHAR(name,c2);
1877c363081SBarry Smith   FIXRETURNCHAR(flag,string,len);
1889306f9a3SSatish Balay }
1899306f9a3SSatish Balay 
1909306f9a3SSatish Balay void PETSC_STDCALL petscgetprogramname_(CHAR name PETSC_MIXED_LEN(len_in),PetscErrorCode *ierr PETSC_END_LEN(len_in))
1919306f9a3SSatish Balay {
1929306f9a3SSatish Balay   char *tmp;
1934610e317SSatish Balay   size_t len;
1949306f9a3SSatish Balay   tmp = name;
1959306f9a3SSatish Balay   len = len_in - 1;
1969306f9a3SSatish Balay   *ierr = PetscGetProgramName(tmp,len);
1977c363081SBarry Smith   FIXRETURNCHAR(PETSC_TRUE,name,len_in);
1989306f9a3SSatish Balay }
1999306f9a3SSatish Balay 
2009306f9a3SSatish Balay EXTERN_C_END
2019306f9a3SSatish Balay 
202