xref: /petsc/src/sys/objects/ftn-custom/zoptionsf.c (revision 455a3cf93c789f7bd94748e76501df731d52b08f)
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)
11*455a3cf9SBarry 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)
31*455a3cf9SBarry 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 
54390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsinsertstring_(PetscOptions *options,char* file PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
55ab66e762SBarry Smith {
56ab66e762SBarry Smith   char *c1;
57ab66e762SBarry Smith 
58ab66e762SBarry Smith   FIXCHAR(file,len,c1);
59c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
60c5929fdfSBarry Smith   *ierr = PetscOptionsInsertString(*options,c1);
61ab66e762SBarry Smith   FREECHAR(file,c1);
62ab66e762SBarry Smith }
63ab66e762SBarry Smith 
64390e1bf2SBarry 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))
659306f9a3SSatish Balay {
669306f9a3SSatish Balay   char *c1;
679306f9a3SSatish Balay 
689306f9a3SSatish Balay   FIXCHAR(file,len,c1);
69c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
70c5929fdfSBarry Smith   *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm),*options,c1,*require);
719306f9a3SSatish Balay   FREECHAR(file,c1);
729306f9a3SSatish Balay }
739306f9a3SSatish Balay 
74390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionssetvalue_(PetscOptions *options,char* name PETSC_MIXED_LEN(len1),char* value PETSC_MIXED_LEN(len2),
759306f9a3SSatish Balay                    PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
769306f9a3SSatish Balay {
779306f9a3SSatish Balay   char *c1,*c2;
789306f9a3SSatish Balay 
799306f9a3SSatish Balay   FIXCHAR(name,len1,c1);
809306f9a3SSatish Balay   FIXCHAR(value,len2,c2);
81c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
82c5929fdfSBarry Smith   *ierr = PetscOptionsSetValue(*options,c1,c2);
839306f9a3SSatish Balay   FREECHAR(name,c1);
849306f9a3SSatish Balay   FREECHAR(value,c2);
859306f9a3SSatish Balay }
869306f9a3SSatish Balay 
87c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsclear_(PetscOptions *options,PetscErrorCode *ierr)
88a542b6e8SBarry Smith {
89c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
90c5929fdfSBarry Smith   *ierr = PetscOptionsClear(*options);
91a542b6e8SBarry Smith }
92a542b6e8SBarry Smith 
93390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsclearvalue_(PetscOptions *options,char* name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
949306f9a3SSatish Balay {
959306f9a3SSatish Balay   char *c1;
969306f9a3SSatish Balay 
979306f9a3SSatish Balay   FIXCHAR(name,len,c1);
98c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
99c5929fdfSBarry Smith   *ierr = PetscOptionsClearValue(*options,c1);
1009306f9a3SSatish Balay   FREECHAR(name,c1);
1019306f9a3SSatish Balay }
1029306f9a3SSatish Balay 
103390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionshasname_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2),
104ace3abfcSBarry Smith                     PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1059306f9a3SSatish Balay {
1069306f9a3SSatish Balay   char *c1,*c2;
1079306f9a3SSatish Balay 
1089306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1099306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
110c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
111c5929fdfSBarry Smith   *ierr = PetscOptionsHasName(*options,c1,c2,flg);
1129306f9a3SSatish Balay   FREECHAR(pre,c1);
1139306f9a3SSatish Balay   FREECHAR(name,c2);
1149306f9a3SSatish Balay }
1159306f9a3SSatish Balay 
116*455a3cf9SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsallused_(PetscOptions *opt,PetscInt *n,PetscErrorCode *ierr)
117*455a3cf9SBarry Smith {
118*455a3cf9SBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(opt);
119*455a3cf9SBarry Smith   *ierr = PetscOptionsAllUsed(*opt,n);
120*455a3cf9SBarry Smith }
121*455a3cf9SBarry Smith 
122390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetint_(PetscOptions *opt,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2),
123ace3abfcSBarry Smith                     PetscInt *ivalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1249306f9a3SSatish Balay {
1259306f9a3SSatish Balay   char      *c1,*c2;
126ace3abfcSBarry Smith   PetscBool flag;
1279306f9a3SSatish Balay 
1289306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1299306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
130c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(opt);
131c5929fdfSBarry Smith   *ierr = PetscOptionsGetInt(*opt,c1,c2,ivalue,&flag);
1325c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1339306f9a3SSatish Balay   FREECHAR(pre,c1);
1349306f9a3SSatish Balay   FREECHAR(name,c2);
1359306f9a3SSatish Balay }
1369306f9a3SSatish Balay 
137390e1bf2SBarry 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,
13847340559SBarry Smith                     PetscEnum *ivalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
13947340559SBarry Smith {
14047340559SBarry Smith   char      *c1,*c2;
14147340559SBarry Smith   PetscBool flag;
14247340559SBarry Smith 
14347340559SBarry Smith   FIXCHAR(pre,len1,c1);
14447340559SBarry Smith   FIXCHAR(name,len2,c2);
145c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
146c5929fdfSBarry Smith   *ierr = PetscOptionsGetEnum(*options,c1,c2,list,ivalue,&flag);
14747340559SBarry Smith   if (!FORTRANNULLBOOL(flg)) *flg = flag;
14847340559SBarry Smith   FREECHAR(pre,c1);
14947340559SBarry Smith   FREECHAR(name,c2);
15047340559SBarry Smith }
15147340559SBarry Smith 
152390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetbool_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2),
153ace3abfcSBarry Smith                     PetscBool  *ivalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1549306f9a3SSatish Balay {
1559306f9a3SSatish Balay   char      *c1,*c2;
156ace3abfcSBarry Smith   PetscBool flag;
1579306f9a3SSatish Balay 
1589306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1599306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
160c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
161c5929fdfSBarry Smith   *ierr = PetscOptionsGetBool(*options,c1,c2,ivalue,&flag);
1625c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1639306f9a3SSatish Balay   FREECHAR(pre,c1);
1649306f9a3SSatish Balay   FREECHAR(name,c2);
1659306f9a3SSatish Balay }
1669306f9a3SSatish Balay 
167390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetreal_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2),
168ace3abfcSBarry Smith                     PetscReal *dvalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1699306f9a3SSatish Balay {
1709306f9a3SSatish Balay   char *c1,*c2;
171ace3abfcSBarry Smith   PetscBool  flag;
1729306f9a3SSatish Balay 
1739306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1749306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
175c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
176c5929fdfSBarry Smith   *ierr = PetscOptionsGetReal(*options,c1,c2,dvalue,&flag);
1775c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1789306f9a3SSatish Balay   FREECHAR(pre,c1);
1799306f9a3SSatish Balay   FREECHAR(name,c2);
1809306f9a3SSatish Balay }
1819306f9a3SSatish Balay 
182390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetscalar_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2),
1837a7a6802SBarry Smith                     PetscScalar *dvalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1847a7a6802SBarry Smith {
1857a7a6802SBarry Smith   char *c1,*c2;
1867a7a6802SBarry Smith   PetscBool  flag;
1877a7a6802SBarry Smith 
1887a7a6802SBarry Smith   FIXCHAR(pre,len1,c1);
1897a7a6802SBarry Smith   FIXCHAR(name,len2,c2);
1907a7a6802SBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
191bf63e7e7SBarry Smith   *ierr = PetscOptionsGetScalar(*options,c1,c2,dvalue,&flag);
1927a7a6802SBarry Smith   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1937a7a6802SBarry Smith   FREECHAR(pre,c1);
1947a7a6802SBarry Smith   FREECHAR(name,c2);
1957a7a6802SBarry Smith }
1967a7a6802SBarry Smith 
197390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetrealarray_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2),
198ace3abfcSBarry Smith                 PetscReal *dvalue,PetscInt *nmax,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1999306f9a3SSatish Balay {
2009306f9a3SSatish Balay   char      *c1,*c2;
201ace3abfcSBarry Smith   PetscBool flag;
2029306f9a3SSatish Balay 
2039306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
2049306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
205c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
206c5929fdfSBarry Smith   *ierr = PetscOptionsGetRealArray(*options,c1,c2,dvalue,nmax,&flag);
2075c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2089306f9a3SSatish Balay   FREECHAR(pre,c1);
2099306f9a3SSatish Balay   FREECHAR(name,c2);
2109306f9a3SSatish Balay }
2119306f9a3SSatish Balay 
212390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetintarray_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2),
213ace3abfcSBarry Smith                    PetscInt *dvalue,PetscInt *nmax,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
2149306f9a3SSatish Balay {
2159306f9a3SSatish Balay   char      *c1,*c2;
216ace3abfcSBarry Smith   PetscBool flag;
2179306f9a3SSatish Balay 
2189306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
2199306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
220c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
221c5929fdfSBarry Smith   *ierr = PetscOptionsGetIntArray(*options,c1,c2,dvalue,nmax,&flag);
2225c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2239306f9a3SSatish Balay   FREECHAR(pre,c1);
2249306f9a3SSatish Balay   FREECHAR(name,c2);
2259306f9a3SSatish Balay }
2269306f9a3SSatish Balay 
227390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetstring_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2),
228390e1bf2SBarry Smith                     char* string PETSC_MIXED_LEN(len),PetscBool  *flg,
2299306f9a3SSatish Balay                     PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len))
2309306f9a3SSatish Balay {
2319306f9a3SSatish Balay   char      *c1,*c2,*c3;
2324610e317SSatish Balay   size_t    len3;
233ace3abfcSBarry Smith   PetscBool flag;
2349306f9a3SSatish Balay 
2359306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
2369306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
2379306f9a3SSatish Balay   c3   = string;
2389306f9a3SSatish Balay   len3 = len - 1;
2399306f9a3SSatish Balay 
240c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
241c5929fdfSBarry Smith   *ierr = PetscOptionsGetString(*options,c1,c2,c3,len3,&flag);
2425c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2439306f9a3SSatish Balay   FREECHAR(pre,c1);
2449306f9a3SSatish Balay   FREECHAR(name,c2);
2457c363081SBarry Smith   FIXRETURNCHAR(flag,string,len);
2469306f9a3SSatish Balay }
2479306f9a3SSatish Balay 
248390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscgetprogramname_(char* name PETSC_MIXED_LEN(len_in),PetscErrorCode *ierr PETSC_END_LEN(len_in))
2499306f9a3SSatish Balay {
2509306f9a3SSatish Balay   char   *tmp;
2514610e317SSatish Balay   size_t len;
2529306f9a3SSatish Balay   tmp   = name;
2539306f9a3SSatish Balay   len   = len_in - 1;
2549306f9a3SSatish Balay   *ierr = PetscGetProgramName(tmp,len);
2557c363081SBarry Smith   FIXRETURNCHAR(PETSC_TRUE,name,len_in);
2569306f9a3SSatish Balay }
2579306f9a3SSatish Balay 
258c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsview_(PetscOptions *options,PetscViewer *vin,PetscErrorCode *ierr)
2593a15af8cSBlaise Bourdin {
2603a15af8cSBlaise Bourdin   PetscViewer v;
2613a15af8cSBlaise Bourdin 
2623a15af8cSBlaise Bourdin   PetscPatchDefaultViewers_Fortran(vin,v);
263c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
264c5929fdfSBarry Smith   *ierr = PetscOptionsView(*options,v);
2653a15af8cSBlaise Bourdin }
2663a15af8cSBlaise Bourdin 
267ac9b46efSSatish Balay PETSC_EXTERN void PETSC_STDCALL petscoptionsleft_(PetscOptions *options,PetscErrorCode *ierr)
268ac9b46efSSatish Balay {
269ac9b46efSSatish Balay   CHKFORTRANNULLOBJECTDEREFERENCE(options);
270ac9b46efSSatish Balay   *ierr = PetscOptionsLeft(*options);
271ac9b46efSSatish Balay }
272ac9b46efSSatish Balay 
273ac9b46efSSatish Balay 
274390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscobjectviewfromoptions_(PetscObject *obj,PetscObject *bobj,char* option PETSC_MIXED_LEN(loption),PetscErrorCode *ierr  PETSC_END_LEN(loption))
275a2865142SMatthew G. Knepley {
276685405a1SBarry Smith   char *o;
277a2865142SMatthew G. Knepley 
278a2865142SMatthew G. Knepley   FIXCHAR(option, loption, o);
27946475a24SBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(bobj);
280685405a1SBarry Smith   *ierr = PetscObjectViewFromOptions(*obj, *bobj, o);
281a2865142SMatthew G. Knepley   FREECHAR(option, o);
282a2865142SMatthew G. Knepley }
283