xref: /petsc/src/sys/objects/ftn-custom/zoptionsf.c (revision c5929fdf3082647d199855a5c1d0286204349b03)
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)
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
26a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_        PETSCOBJECTVIEWFROMOPTIONS
279306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
2847340559SBarry Smith #define petscoptionsgetenumprivate_        petscoptionsgetenumprivate
2908f86b60SJed Brown #define petscoptionsgetbool_               petscoptionsgetbool
309306f9a3SSatish Balay #define petscoptionssetvalue_              petscoptionssetvalue
319306f9a3SSatish Balay #define petscoptionsclearvalue_            petscoptionsclearvalue
329306f9a3SSatish Balay #define petscoptionshasname_               petscoptionshasname
339306f9a3SSatish Balay #define petscoptionsgetint_                petscoptionsgetint
349306f9a3SSatish Balay #define petscoptionsgetreal_               petscoptionsgetreal
359306f9a3SSatish Balay #define petscoptionsgetrealarray_          petscoptionsgetrealarray
369306f9a3SSatish Balay #define petscoptionsgetstring_             petscoptionsgetstring
379306f9a3SSatish Balay #define petscoptionsgetintarray_           petscoptionsgetintarray
389306f9a3SSatish Balay #define petscgetprogramname_               petscgetprogramname
399306f9a3SSatish Balay #define petscoptionsinsertfile_            petscoptionsinsertfile
40a542b6e8SBarry Smith #define petscoptionsclear_                 petscoptionsclear
41ab66e762SBarry Smith #define petscoptionsinsertstring_          petscoptionsinsertstring
423a15af8cSBlaise Bourdin #define petscoptionsview_                  petscoptionsview
43a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_        petscobjectviewfromoptions
449306f9a3SSatish Balay #endif
459306f9a3SSatish Balay 
469306f9a3SSatish Balay /* ---------------------------------------------------------------------*/
479306f9a3SSatish Balay 
48*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsinsertstring_(PetscOptions *options,CHAR file PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
49ab66e762SBarry Smith {
50ab66e762SBarry Smith   char *c1;
51ab66e762SBarry Smith 
52ab66e762SBarry Smith   FIXCHAR(file,len,c1);
53*c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
54*c5929fdfSBarry Smith   *ierr = PetscOptionsInsertString(*options,c1);
55ab66e762SBarry Smith   FREECHAR(file,c1);
56ab66e762SBarry Smith }
57ab66e762SBarry Smith 
58*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsinsertfile_(MPI_Fint *comm,PetscOptions *options,CHAR file PETSC_MIXED_LEN(len),PetscBool *require,PetscErrorCode *ierr PETSC_END_LEN(len))
599306f9a3SSatish Balay {
609306f9a3SSatish Balay   char *c1;
619306f9a3SSatish Balay 
629306f9a3SSatish Balay   FIXCHAR(file,len,c1);
63*c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
64*c5929fdfSBarry Smith   *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm),*options,c1,*require);
659306f9a3SSatish Balay   FREECHAR(file,c1);
669306f9a3SSatish Balay }
679306f9a3SSatish Balay 
68*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionssetvalue_(PetscOptions *options,CHAR name PETSC_MIXED_LEN(len1),CHAR value PETSC_MIXED_LEN(len2),
699306f9a3SSatish Balay                    PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
709306f9a3SSatish Balay {
719306f9a3SSatish Balay   char *c1,*c2;
729306f9a3SSatish Balay 
739306f9a3SSatish Balay   FIXCHAR(name,len1,c1);
749306f9a3SSatish Balay   FIXCHAR(value,len2,c2);
75*c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
76*c5929fdfSBarry Smith   *ierr = PetscOptionsSetValue(*options,c1,c2);
779306f9a3SSatish Balay   FREECHAR(name,c1);
789306f9a3SSatish Balay   FREECHAR(value,c2);
799306f9a3SSatish Balay }
809306f9a3SSatish Balay 
81*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsclear_(PetscOptions *options,PetscErrorCode *ierr)
82a542b6e8SBarry Smith {
83*c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
84*c5929fdfSBarry Smith   *ierr = PetscOptionsClear(*options);
85a542b6e8SBarry Smith }
86a542b6e8SBarry Smith 
87*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsclearvalue_(PetscOptions *options,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
889306f9a3SSatish Balay {
899306f9a3SSatish Balay   char *c1;
909306f9a3SSatish Balay 
919306f9a3SSatish Balay   FIXCHAR(name,len,c1);
92*c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
93*c5929fdfSBarry Smith   *ierr = PetscOptionsClearValue(*options,c1);
949306f9a3SSatish Balay   FREECHAR(name,c1);
959306f9a3SSatish Balay }
969306f9a3SSatish Balay 
97*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionshasname_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
98ace3abfcSBarry Smith                     PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
999306f9a3SSatish Balay {
1009306f9a3SSatish Balay   char *c1,*c2;
1019306f9a3SSatish Balay 
1029306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1039306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
104*c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
105*c5929fdfSBarry Smith   *ierr = PetscOptionsHasName(*options,c1,c2,flg);
1069306f9a3SSatish Balay   FREECHAR(pre,c1);
1079306f9a3SSatish Balay   FREECHAR(name,c2);
1089306f9a3SSatish Balay }
1099306f9a3SSatish Balay 
110*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetint_(PetscOptions *opt,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
111ace3abfcSBarry Smith                     PetscInt *ivalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1129306f9a3SSatish Balay {
1139306f9a3SSatish Balay   char      *c1,*c2;
114ace3abfcSBarry Smith   PetscBool flag;
1159306f9a3SSatish Balay 
1169306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1179306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
118*c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(opt);
119*c5929fdfSBarry Smith   *ierr = PetscOptionsGetInt(*opt,c1,c2,ivalue,&flag);
1205c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1219306f9a3SSatish Balay   FREECHAR(pre,c1);
1229306f9a3SSatish Balay   FREECHAR(name,c2);
1239306f9a3SSatish Balay }
1249306f9a3SSatish Balay 
125*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetenumprivate_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),const char *const*list,
12647340559SBarry Smith                     PetscEnum *ivalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(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);
133*c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
134*c5929fdfSBarry Smith   *ierr = PetscOptionsGetEnum(*options,c1,c2,list,ivalue,&flag);
13547340559SBarry Smith   if (!FORTRANNULLBOOL(flg)) *flg = flag;
13647340559SBarry Smith   FREECHAR(pre,c1);
13747340559SBarry Smith   FREECHAR(name,c2);
13847340559SBarry Smith }
13947340559SBarry Smith 
140*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetbool_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
141ace3abfcSBarry Smith                     PetscBool  *ivalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1429306f9a3SSatish Balay {
1439306f9a3SSatish Balay   char      *c1,*c2;
144ace3abfcSBarry Smith   PetscBool flag;
1459306f9a3SSatish Balay 
1469306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1479306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
148*c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
149*c5929fdfSBarry Smith   *ierr = PetscOptionsGetBool(*options,c1,c2,ivalue,&flag);
1505c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1519306f9a3SSatish Balay   FREECHAR(pre,c1);
1529306f9a3SSatish Balay   FREECHAR(name,c2);
1539306f9a3SSatish Balay }
1549306f9a3SSatish Balay 
155*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetreal_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
156ace3abfcSBarry Smith                     PetscReal *dvalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1579306f9a3SSatish Balay {
1589306f9a3SSatish Balay   char *c1,*c2;
159ace3abfcSBarry Smith   PetscBool  flag;
1609306f9a3SSatish Balay 
1619306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1629306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
163*c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
164*c5929fdfSBarry Smith   *ierr = PetscOptionsGetReal(*options,c1,c2,dvalue,&flag);
1655c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1669306f9a3SSatish Balay   FREECHAR(pre,c1);
1679306f9a3SSatish Balay   FREECHAR(name,c2);
1689306f9a3SSatish Balay }
1699306f9a3SSatish Balay 
170*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetrealarray_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
171ace3abfcSBarry Smith                 PetscReal *dvalue,PetscInt *nmax,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1729306f9a3SSatish Balay {
1739306f9a3SSatish Balay   char      *c1,*c2;
174ace3abfcSBarry Smith   PetscBool flag;
1759306f9a3SSatish Balay 
1769306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1779306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
178*c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
179*c5929fdfSBarry Smith   *ierr = PetscOptionsGetRealArray(*options,c1,c2,dvalue,nmax,&flag);
1805c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1819306f9a3SSatish Balay   FREECHAR(pre,c1);
1829306f9a3SSatish Balay   FREECHAR(name,c2);
1839306f9a3SSatish Balay }
1849306f9a3SSatish Balay 
185*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetintarray_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
186ace3abfcSBarry Smith                    PetscInt *dvalue,PetscInt *nmax,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1879306f9a3SSatish Balay {
1889306f9a3SSatish Balay   char      *c1,*c2;
189ace3abfcSBarry Smith   PetscBool flag;
1909306f9a3SSatish Balay 
1919306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1929306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
193*c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
194*c5929fdfSBarry Smith   *ierr = PetscOptionsGetIntArray(*options,c1,c2,dvalue,nmax,&flag);
1955c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1969306f9a3SSatish Balay   FREECHAR(pre,c1);
1979306f9a3SSatish Balay   FREECHAR(name,c2);
1989306f9a3SSatish Balay }
1999306f9a3SSatish Balay 
200*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetstring_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
201ace3abfcSBarry Smith                     CHAR string PETSC_MIXED_LEN(len),PetscBool  *flg,
2029306f9a3SSatish Balay                     PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len))
2039306f9a3SSatish Balay {
2049306f9a3SSatish Balay   char      *c1,*c2,*c3;
2054610e317SSatish Balay   size_t    len3;
206ace3abfcSBarry Smith   PetscBool flag;
2079306f9a3SSatish Balay 
2089306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
2099306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
2109306f9a3SSatish Balay   c3   = string;
2119306f9a3SSatish Balay   len3 = len - 1;
2129306f9a3SSatish Balay 
213*c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
214*c5929fdfSBarry Smith   *ierr = PetscOptionsGetString(*options,c1,c2,c3,len3,&flag);
2155c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2169306f9a3SSatish Balay   FREECHAR(pre,c1);
2179306f9a3SSatish Balay   FREECHAR(name,c2);
2187c363081SBarry Smith   FIXRETURNCHAR(flag,string,len);
2199306f9a3SSatish Balay }
2209306f9a3SSatish Balay 
2218cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscgetprogramname_(CHAR name PETSC_MIXED_LEN(len_in),PetscErrorCode *ierr PETSC_END_LEN(len_in))
2229306f9a3SSatish Balay {
2239306f9a3SSatish Balay   char   *tmp;
2244610e317SSatish Balay   size_t len;
2259306f9a3SSatish Balay   tmp   = name;
2269306f9a3SSatish Balay   len   = len_in - 1;
2279306f9a3SSatish Balay   *ierr = PetscGetProgramName(tmp,len);
2287c363081SBarry Smith   FIXRETURNCHAR(PETSC_TRUE,name,len_in);
2299306f9a3SSatish Balay }
2309306f9a3SSatish Balay 
231*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsview_(PetscOptions *options,PetscViewer *vin,PetscErrorCode *ierr)
2323a15af8cSBlaise Bourdin {
2333a15af8cSBlaise Bourdin   PetscViewer v;
2343a15af8cSBlaise Bourdin 
2353a15af8cSBlaise Bourdin   PetscPatchDefaultViewers_Fortran(vin,v);
236*c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
237*c5929fdfSBarry Smith   *ierr = PetscOptionsView(*options,v);
2383a15af8cSBlaise Bourdin }
2393a15af8cSBlaise Bourdin 
240685405a1SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscobjectviewfromoptions_(PetscObject *obj,PetscObject *bobj,CHAR option PETSC_MIXED_LEN(loption),PetscErrorCode *ierr  PETSC_END_LEN(loption))
241a2865142SMatthew G. Knepley {
242685405a1SBarry Smith   char *o;
243a2865142SMatthew G. Knepley 
244a2865142SMatthew G. Knepley   FIXCHAR(option, loption, o);
24546475a24SBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(bobj);
246685405a1SBarry Smith   *ierr = PetscObjectViewFromOptions(*obj, *bobj, o);
247a2865142SMatthew G. Knepley   FREECHAR(option, o);
248a2865142SMatthew G. Knepley }
249