xref: /petsc/src/sys/objects/ftn-custom/zoptionsf.c (revision 19caf8f3c08b1f0ca9f5469bde385c134aa76c82)
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 
7af0996ceSBarry Smith #include <petsc/private/fortranimpl.h>
8665c2dedSJed Brown #include <petscviewer.h>
99306f9a3SSatish Balay 
10519f805aSKarl Rupp #if defined(PETSC_HAVE_FORTRAN_CAPS)
11455a3cf9SBarry Smith #define petscoptionsallused_               PETSCOPTIONSALLUSED
1247340559SBarry Smith #define petscoptionsgetenumprivate_        PETSCOPTIONSGETENUMPRIVATE
1308f86b60SJed Brown #define petscoptionsgetbool_               PETSCOPTIONSGETBOOL
149306f9a3SSatish Balay #define petscoptionsgetintarray_           PETSCOPTIONSGETINTARRAY
159306f9a3SSatish Balay #define petscoptionssetvalue_              PETSCOPTIONSSETVALUE
169306f9a3SSatish Balay #define petscoptionsclearvalue_            PETSCOPTIONSCLEARVALUE
179306f9a3SSatish Balay #define petscoptionshasname_               PETSCOPTIONSHASNAME
189306f9a3SSatish Balay #define petscoptionsgetint_                PETSCOPTIONSGETINT
199306f9a3SSatish Balay #define petscoptionsgetreal_               PETSCOPTIONSGETREAL
207a7a6802SBarry Smith #define petscoptionsgetscalar_             PETSCOPTIONSGETSCALAR
219306f9a3SSatish Balay #define petscoptionsgetrealarray_          PETSCOPTIONSGETREALARRAY
229306f9a3SSatish Balay #define petscoptionsgetstring_             PETSCOPTIONSGETSTRING
239306f9a3SSatish Balay #define petscgetprogramname                PETSCGETPROGRAMNAME
249306f9a3SSatish Balay #define petscoptionsinsertfile_            PETSCOPTIONSINSERTFILE
25a542b6e8SBarry Smith #define petscoptionsclear_                 PETSCOPTIONSCLEAR
26ab66e762SBarry Smith #define petscoptionsinsertstring_          PETSCOPTIONSINSERTSTRING
273a15af8cSBlaise Bourdin #define petscoptionsview_                  PETSCOPTIONSVIEW
28ac9b46efSSatish Balay #define petscoptionsleft_                  PETSCOPTIONSLEFT
29a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_        PETSCOBJECTVIEWFROMOPTIONS
309306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
31455a3cf9SBarry Smith #define petscoptionsallused_               petscoptionsallused
3247340559SBarry Smith #define petscoptionsgetenumprivate_        petscoptionsgetenumprivate
3308f86b60SJed Brown #define petscoptionsgetbool_               petscoptionsgetbool
349306f9a3SSatish Balay #define petscoptionssetvalue_              petscoptionssetvalue
359306f9a3SSatish Balay #define petscoptionsclearvalue_            petscoptionsclearvalue
369306f9a3SSatish Balay #define petscoptionshasname_               petscoptionshasname
379306f9a3SSatish Balay #define petscoptionsgetint_                petscoptionsgetint
389306f9a3SSatish Balay #define petscoptionsgetreal_               petscoptionsgetreal
397a7a6802SBarry Smith #define petscoptionsgetscalar_             petscoptionsgetscalar
409306f9a3SSatish Balay #define petscoptionsgetrealarray_          petscoptionsgetrealarray
419306f9a3SSatish Balay #define petscoptionsgetstring_             petscoptionsgetstring
429306f9a3SSatish Balay #define petscoptionsgetintarray_           petscoptionsgetintarray
439306f9a3SSatish Balay #define petscgetprogramname_               petscgetprogramname
449306f9a3SSatish Balay #define petscoptionsinsertfile_            petscoptionsinsertfile
45a542b6e8SBarry Smith #define petscoptionsclear_                 petscoptionsclear
46ab66e762SBarry Smith #define petscoptionsinsertstring_          petscoptionsinsertstring
473a15af8cSBlaise Bourdin #define petscoptionsview_                  petscoptionsview
48ac9b46efSSatish Balay #define petscoptionsleft_                  petscoptionsleft
49a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_        petscobjectviewfromoptions
509306f9a3SSatish Balay #endif
519306f9a3SSatish Balay 
529306f9a3SSatish Balay /* ---------------------------------------------------------------------*/
539306f9a3SSatish Balay 
54*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsinsertstring_(PetscOptions *options,char* file,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
55ab66e762SBarry Smith {
56ab66e762SBarry Smith   char *c1;
57ab66e762SBarry Smith 
58ab66e762SBarry Smith   FIXCHAR(file,len,c1);
59d49bb8f9SBarry Smith   *ierr = PetscOptionsInsertString(*options,c1);if (*ierr) return;
60ab66e762SBarry Smith   FREECHAR(file,c1);
61ab66e762SBarry Smith }
62ab66e762SBarry Smith 
63*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsinsertfile_(MPI_Fint *comm,PetscOptions *options,char* file,PetscBool *require,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
649306f9a3SSatish Balay {
659306f9a3SSatish Balay   char *c1;
669306f9a3SSatish Balay 
679306f9a3SSatish Balay   FIXCHAR(file,len,c1);
68d49bb8f9SBarry Smith   *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm),*options,c1,*require);if (*ierr) return;
699306f9a3SSatish Balay   FREECHAR(file,c1);
709306f9a3SSatish Balay }
719306f9a3SSatish Balay 
72*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionssetvalue_(PetscOptions *options,char* name,char* value,
73*19caf8f3SSatish Balay                    PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
749306f9a3SSatish Balay {
759306f9a3SSatish Balay   char *c1,*c2;
769306f9a3SSatish Balay 
779306f9a3SSatish Balay   FIXCHAR(name,len1,c1);
789306f9a3SSatish Balay   FIXCHAR(value,len2,c2);
79d49bb8f9SBarry Smith   *ierr = PetscOptionsSetValue(*options,c1,c2);if (*ierr) return;
809306f9a3SSatish Balay   FREECHAR(name,c1);
819306f9a3SSatish Balay   FREECHAR(value,c2);
829306f9a3SSatish Balay }
839306f9a3SSatish Balay 
84*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsclear_(PetscOptions *options,PetscErrorCode *ierr)
85a542b6e8SBarry Smith {
86c5929fdfSBarry Smith   *ierr = PetscOptionsClear(*options);
87a542b6e8SBarry Smith }
88a542b6e8SBarry Smith 
89*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsclearvalue_(PetscOptions *options,char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
909306f9a3SSatish Balay {
919306f9a3SSatish Balay   char *c1;
929306f9a3SSatish Balay 
939306f9a3SSatish Balay   FIXCHAR(name,len,c1);
94d49bb8f9SBarry Smith   *ierr = PetscOptionsClearValue(*options,c1);if (*ierr) return;
959306f9a3SSatish Balay   FREECHAR(name,c1);
969306f9a3SSatish Balay }
979306f9a3SSatish Balay 
98*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionshasname_(PetscOptions *options,char* pre,char* name,
99*19caf8f3SSatish Balay                     PetscBool  *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
1009306f9a3SSatish Balay {
1019306f9a3SSatish Balay   char *c1,*c2;
1029306f9a3SSatish Balay 
1039306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1049306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
105d49bb8f9SBarry Smith   *ierr = PetscOptionsHasName(*options,c1,c2,flg);if (*ierr) return;
1069306f9a3SSatish Balay   FREECHAR(pre,c1);
1079306f9a3SSatish Balay   FREECHAR(name,c2);
1089306f9a3SSatish Balay }
1099306f9a3SSatish Balay 
110455a3cf9SBarry Smith 
111*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetint_(PetscOptions *opt,char* pre,char* name,
112*19caf8f3SSatish Balay                     PetscInt *ivalue,PetscBool  *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
1139306f9a3SSatish Balay {
1149306f9a3SSatish Balay   char      *c1,*c2;
115ace3abfcSBarry Smith   PetscBool flag;
1169306f9a3SSatish Balay 
1179306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1189306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
119d49bb8f9SBarry Smith   *ierr = PetscOptionsGetInt(*opt,c1,c2,ivalue,&flag);if (*ierr) return;
1205c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1219306f9a3SSatish Balay   FREECHAR(pre,c1);
1229306f9a3SSatish Balay   FREECHAR(name,c2);
1239306f9a3SSatish Balay }
1249306f9a3SSatish Balay 
125*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetenumprivate_(PetscOptions *options,char* pre,char* name,const char *const*list,
126*19caf8f3SSatish Balay                     PetscEnum *ivalue,PetscBool  *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
12747340559SBarry Smith {
12847340559SBarry Smith   char      *c1,*c2;
12947340559SBarry Smith   PetscBool flag;
13047340559SBarry Smith 
13147340559SBarry Smith   FIXCHAR(pre,len1,c1);
13247340559SBarry Smith   FIXCHAR(name,len2,c2);
133d49bb8f9SBarry Smith   *ierr = PetscOptionsGetEnum(*options,c1,c2,list,ivalue,&flag);if (*ierr) return;
13447340559SBarry Smith   if (!FORTRANNULLBOOL(flg)) *flg = flag;
13547340559SBarry Smith   FREECHAR(pre,c1);
13647340559SBarry Smith   FREECHAR(name,c2);
13747340559SBarry Smith }
13847340559SBarry Smith 
139*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetbool_(PetscOptions *options,char* pre,char* name,
140*19caf8f3SSatish Balay                     PetscBool  *ivalue,PetscBool  *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
1419306f9a3SSatish Balay {
1429306f9a3SSatish Balay   char      *c1,*c2;
143ace3abfcSBarry Smith   PetscBool flag;
1449306f9a3SSatish Balay 
1459306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1469306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
147d49bb8f9SBarry Smith   *ierr = PetscOptionsGetBool(*options,c1,c2,ivalue,&flag);if (*ierr) return;
1485c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1499306f9a3SSatish Balay   FREECHAR(pre,c1);
1509306f9a3SSatish Balay   FREECHAR(name,c2);
1519306f9a3SSatish Balay }
1529306f9a3SSatish Balay 
153*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetreal_(PetscOptions *options,char* pre,char* name,
154*19caf8f3SSatish Balay                     PetscReal *dvalue,PetscBool  *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
1559306f9a3SSatish Balay {
1569306f9a3SSatish Balay   char *c1,*c2;
157ace3abfcSBarry Smith   PetscBool  flag;
1589306f9a3SSatish Balay 
1599306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1609306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
161d49bb8f9SBarry Smith   *ierr = PetscOptionsGetReal(*options,c1,c2,dvalue,&flag);if (*ierr) return;
1625c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1639306f9a3SSatish Balay   FREECHAR(pre,c1);
1649306f9a3SSatish Balay   FREECHAR(name,c2);
1659306f9a3SSatish Balay }
1669306f9a3SSatish Balay 
167*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetscalar_(PetscOptions *options,char* pre,char* name,
168*19caf8f3SSatish Balay                     PetscScalar *dvalue,PetscBool  *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
1697a7a6802SBarry Smith {
1707a7a6802SBarry Smith   char *c1,*c2;
1717a7a6802SBarry Smith   PetscBool  flag;
1727a7a6802SBarry Smith 
1737a7a6802SBarry Smith   FIXCHAR(pre,len1,c1);
1747a7a6802SBarry Smith   FIXCHAR(name,len2,c2);
175d49bb8f9SBarry Smith   *ierr = PetscOptionsGetScalar(*options,c1,c2,dvalue,&flag);if (*ierr) return;
1767a7a6802SBarry Smith   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1777a7a6802SBarry Smith   FREECHAR(pre,c1);
1787a7a6802SBarry Smith   FREECHAR(name,c2);
1797a7a6802SBarry Smith }
1807a7a6802SBarry Smith 
181*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetrealarray_(PetscOptions *options,char* pre,char* name,
182*19caf8f3SSatish Balay                 PetscReal *dvalue,PetscInt *nmax,PetscBool  *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
1839306f9a3SSatish Balay {
1849306f9a3SSatish Balay   char      *c1,*c2;
185ace3abfcSBarry Smith   PetscBool flag;
1869306f9a3SSatish Balay 
1879306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1889306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
189d49bb8f9SBarry Smith   *ierr = PetscOptionsGetRealArray(*options,c1,c2,dvalue,nmax,&flag);if (*ierr) return;
1905c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1919306f9a3SSatish Balay   FREECHAR(pre,c1);
1929306f9a3SSatish Balay   FREECHAR(name,c2);
1939306f9a3SSatish Balay }
1949306f9a3SSatish Balay 
195*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetintarray_(PetscOptions *options,char* pre,char* name,
196*19caf8f3SSatish Balay                    PetscInt *dvalue,PetscInt *nmax,PetscBool  *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
1979306f9a3SSatish Balay {
1989306f9a3SSatish Balay   char      *c1,*c2;
199ace3abfcSBarry Smith   PetscBool flag;
2009306f9a3SSatish Balay 
2019306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
2029306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
203d49bb8f9SBarry Smith   *ierr = PetscOptionsGetIntArray(*options,c1,c2,dvalue,nmax,&flag);if (*ierr) return;
2045c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2059306f9a3SSatish Balay   FREECHAR(pre,c1);
2069306f9a3SSatish Balay   FREECHAR(name,c2);
2079306f9a3SSatish Balay }
2089306f9a3SSatish Balay 
209*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetstring_(PetscOptions *options,char* pre,char* name,
210*19caf8f3SSatish Balay                     char* string,PetscBool  *flg,
211*19caf8f3SSatish Balay                     PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2,PETSC_FORTRAN_CHARLEN_T len)
2129306f9a3SSatish Balay {
2139306f9a3SSatish Balay   char      *c1,*c2,*c3;
2144610e317SSatish Balay   size_t    len3;
215ace3abfcSBarry Smith   PetscBool flag;
2169306f9a3SSatish Balay 
2179306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
2189306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
2199306f9a3SSatish Balay   c3   = string;
2209306f9a3SSatish Balay   len3 = len - 1;
2219306f9a3SSatish Balay 
222d49bb8f9SBarry Smith   *ierr = PetscOptionsGetString(*options,c1,c2,c3,len3,&flag);if (*ierr) return;
2235c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2249306f9a3SSatish Balay   FREECHAR(pre,c1);
2259306f9a3SSatish Balay   FREECHAR(name,c2);
2267c363081SBarry Smith   FIXRETURNCHAR(flag,string,len);
2279306f9a3SSatish Balay }
2289306f9a3SSatish Balay 
229*19caf8f3SSatish Balay PETSC_EXTERN void petscgetprogramname_(char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len_in)
2309306f9a3SSatish Balay {
2319306f9a3SSatish Balay   char   *tmp;
2324610e317SSatish Balay   size_t len;
2339306f9a3SSatish Balay   tmp   = name;
2349306f9a3SSatish Balay   len   = len_in - 1;
2359306f9a3SSatish Balay   *ierr = PetscGetProgramName(tmp,len);
2367c363081SBarry Smith   FIXRETURNCHAR(PETSC_TRUE,name,len_in);
2379306f9a3SSatish Balay }
2389306f9a3SSatish Balay 
239*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsview_(PetscOptions *options,PetscViewer *vin,PetscErrorCode *ierr)
2403a15af8cSBlaise Bourdin {
2413a15af8cSBlaise Bourdin   PetscViewer v;
2423a15af8cSBlaise Bourdin 
2433a15af8cSBlaise Bourdin   PetscPatchDefaultViewers_Fortran(vin,v);
244c5929fdfSBarry Smith   *ierr = PetscOptionsView(*options,v);
2453a15af8cSBlaise Bourdin }
2463a15af8cSBlaise Bourdin 
247*19caf8f3SSatish Balay PETSC_EXTERN void petscobjectviewfromoptions_(PetscObject *obj,PetscObject *bobj,char* option,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T loption)
248a2865142SMatthew G. Knepley {
249685405a1SBarry Smith   char *o;
250a2865142SMatthew G. Knepley 
251a2865142SMatthew G. Knepley   FIXCHAR(option, loption, o);
252d49bb8f9SBarry Smith   *ierr = PetscObjectViewFromOptions(*obj, *bobj, o);if (*ierr) return;
253a2865142SMatthew G. Knepley   FREECHAR(option, o);
254a2865142SMatthew G. Knepley }
255