xref: /petsc/src/sys/objects/ftn-custom/zoptionsf.c (revision ac9b46efc7fec2fa4db1ef93447f15df33c17000)
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
197a7a6802SBarry Smith #define petscoptionsgetscalar_             PETSCOPTIONSGETSCALAR
209306f9a3SSatish Balay #define petscoptionsgetrealarray_          PETSCOPTIONSGETREALARRAY
219306f9a3SSatish Balay #define petscoptionsgetstring_             PETSCOPTIONSGETSTRING
229306f9a3SSatish Balay #define petscgetprogramname                PETSCGETPROGRAMNAME
239306f9a3SSatish Balay #define petscoptionsinsertfile_            PETSCOPTIONSINSERTFILE
24a542b6e8SBarry Smith #define petscoptionsclear_                 PETSCOPTIONSCLEAR
25ab66e762SBarry Smith #define petscoptionsinsertstring_          PETSCOPTIONSINSERTSTRING
263a15af8cSBlaise Bourdin #define petscoptionsview_                  PETSCOPTIONSVIEW
27*ac9b46efSSatish Balay #define petscoptionsleft_                  PETSCOPTIONSLEFT
28a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_        PETSCOBJECTVIEWFROMOPTIONS
299306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
3047340559SBarry Smith #define petscoptionsgetenumprivate_        petscoptionsgetenumprivate
3108f86b60SJed Brown #define petscoptionsgetbool_               petscoptionsgetbool
329306f9a3SSatish Balay #define petscoptionssetvalue_              petscoptionssetvalue
339306f9a3SSatish Balay #define petscoptionsclearvalue_            petscoptionsclearvalue
349306f9a3SSatish Balay #define petscoptionshasname_               petscoptionshasname
359306f9a3SSatish Balay #define petscoptionsgetint_                petscoptionsgetint
369306f9a3SSatish Balay #define petscoptionsgetreal_               petscoptionsgetreal
377a7a6802SBarry Smith #define petscoptionsgetscalar_             petscoptionsgetscalar
389306f9a3SSatish Balay #define petscoptionsgetrealarray_          petscoptionsgetrealarray
399306f9a3SSatish Balay #define petscoptionsgetstring_             petscoptionsgetstring
409306f9a3SSatish Balay #define petscoptionsgetintarray_           petscoptionsgetintarray
419306f9a3SSatish Balay #define petscgetprogramname_               petscgetprogramname
429306f9a3SSatish Balay #define petscoptionsinsertfile_            petscoptionsinsertfile
43a542b6e8SBarry Smith #define petscoptionsclear_                 petscoptionsclear
44ab66e762SBarry Smith #define petscoptionsinsertstring_          petscoptionsinsertstring
453a15af8cSBlaise Bourdin #define petscoptionsview_                  petscoptionsview
46*ac9b46efSSatish Balay #define petscoptionsleft_                  petscoptionsleft
47a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_        petscobjectviewfromoptions
489306f9a3SSatish Balay #endif
499306f9a3SSatish Balay 
509306f9a3SSatish Balay /* ---------------------------------------------------------------------*/
519306f9a3SSatish Balay 
52390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsinsertstring_(PetscOptions *options,char* file PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
53ab66e762SBarry Smith {
54ab66e762SBarry Smith   char *c1;
55ab66e762SBarry Smith 
56ab66e762SBarry Smith   FIXCHAR(file,len,c1);
57c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
58c5929fdfSBarry Smith   *ierr = PetscOptionsInsertString(*options,c1);
59ab66e762SBarry Smith   FREECHAR(file,c1);
60ab66e762SBarry Smith }
61ab66e762SBarry Smith 
62390e1bf2SBarry 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))
639306f9a3SSatish Balay {
649306f9a3SSatish Balay   char *c1;
659306f9a3SSatish Balay 
669306f9a3SSatish Balay   FIXCHAR(file,len,c1);
67c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
68c5929fdfSBarry Smith   *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm),*options,c1,*require);
699306f9a3SSatish Balay   FREECHAR(file,c1);
709306f9a3SSatish Balay }
719306f9a3SSatish Balay 
72390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionssetvalue_(PetscOptions *options,char* name PETSC_MIXED_LEN(len1),char* value PETSC_MIXED_LEN(len2),
739306f9a3SSatish Balay                    PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
749306f9a3SSatish Balay {
759306f9a3SSatish Balay   char *c1,*c2;
769306f9a3SSatish Balay 
779306f9a3SSatish Balay   FIXCHAR(name,len1,c1);
789306f9a3SSatish Balay   FIXCHAR(value,len2,c2);
79c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
80c5929fdfSBarry Smith   *ierr = PetscOptionsSetValue(*options,c1,c2);
819306f9a3SSatish Balay   FREECHAR(name,c1);
829306f9a3SSatish Balay   FREECHAR(value,c2);
839306f9a3SSatish Balay }
849306f9a3SSatish Balay 
85c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsclear_(PetscOptions *options,PetscErrorCode *ierr)
86a542b6e8SBarry Smith {
87c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
88c5929fdfSBarry Smith   *ierr = PetscOptionsClear(*options);
89a542b6e8SBarry Smith }
90a542b6e8SBarry Smith 
91390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsclearvalue_(PetscOptions *options,char* name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
929306f9a3SSatish Balay {
939306f9a3SSatish Balay   char *c1;
949306f9a3SSatish Balay 
959306f9a3SSatish Balay   FIXCHAR(name,len,c1);
96c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
97c5929fdfSBarry Smith   *ierr = PetscOptionsClearValue(*options,c1);
989306f9a3SSatish Balay   FREECHAR(name,c1);
999306f9a3SSatish Balay }
1009306f9a3SSatish Balay 
101390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionshasname_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2),
102ace3abfcSBarry Smith                     PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1039306f9a3SSatish Balay {
1049306f9a3SSatish Balay   char *c1,*c2;
1059306f9a3SSatish Balay 
1069306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1079306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
108c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
109c5929fdfSBarry Smith   *ierr = PetscOptionsHasName(*options,c1,c2,flg);
1109306f9a3SSatish Balay   FREECHAR(pre,c1);
1119306f9a3SSatish Balay   FREECHAR(name,c2);
1129306f9a3SSatish Balay }
1139306f9a3SSatish Balay 
114390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetint_(PetscOptions *opt,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2),
115ace3abfcSBarry Smith                     PetscInt *ivalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1169306f9a3SSatish Balay {
1179306f9a3SSatish Balay   char      *c1,*c2;
118ace3abfcSBarry Smith   PetscBool flag;
1199306f9a3SSatish Balay 
1209306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1219306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
122c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(opt);
123c5929fdfSBarry Smith   *ierr = PetscOptionsGetInt(*opt,c1,c2,ivalue,&flag);
1245c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1259306f9a3SSatish Balay   FREECHAR(pre,c1);
1269306f9a3SSatish Balay   FREECHAR(name,c2);
1279306f9a3SSatish Balay }
1289306f9a3SSatish Balay 
129390e1bf2SBarry 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,
13047340559SBarry Smith                     PetscEnum *ivalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
13147340559SBarry Smith {
13247340559SBarry Smith   char      *c1,*c2;
13347340559SBarry Smith   PetscBool flag;
13447340559SBarry Smith 
13547340559SBarry Smith   FIXCHAR(pre,len1,c1);
13647340559SBarry Smith   FIXCHAR(name,len2,c2);
137c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
138c5929fdfSBarry Smith   *ierr = PetscOptionsGetEnum(*options,c1,c2,list,ivalue,&flag);
13947340559SBarry Smith   if (!FORTRANNULLBOOL(flg)) *flg = flag;
14047340559SBarry Smith   FREECHAR(pre,c1);
14147340559SBarry Smith   FREECHAR(name,c2);
14247340559SBarry Smith }
14347340559SBarry Smith 
144390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetbool_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2),
145ace3abfcSBarry Smith                     PetscBool  *ivalue,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);
152c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
153c5929fdfSBarry Smith   *ierr = PetscOptionsGetBool(*options,c1,c2,ivalue,&flag);
1545c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1559306f9a3SSatish Balay   FREECHAR(pre,c1);
1569306f9a3SSatish Balay   FREECHAR(name,c2);
1579306f9a3SSatish Balay }
1589306f9a3SSatish Balay 
159390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetreal_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2),
160ace3abfcSBarry Smith                     PetscReal *dvalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1619306f9a3SSatish Balay {
1629306f9a3SSatish Balay   char *c1,*c2;
163ace3abfcSBarry Smith   PetscBool  flag;
1649306f9a3SSatish Balay 
1659306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1669306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
167c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
168c5929fdfSBarry Smith   *ierr = PetscOptionsGetReal(*options,c1,c2,dvalue,&flag);
1695c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1709306f9a3SSatish Balay   FREECHAR(pre,c1);
1719306f9a3SSatish Balay   FREECHAR(name,c2);
1729306f9a3SSatish Balay }
1739306f9a3SSatish Balay 
174390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetscalar_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2),
1757a7a6802SBarry Smith                     PetscScalar *dvalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1767a7a6802SBarry Smith {
1777a7a6802SBarry Smith   char *c1,*c2;
1787a7a6802SBarry Smith   PetscBool  flag;
1797a7a6802SBarry Smith 
1807a7a6802SBarry Smith   FIXCHAR(pre,len1,c1);
1817a7a6802SBarry Smith   FIXCHAR(name,len2,c2);
1827a7a6802SBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
183bf63e7e7SBarry Smith   *ierr = PetscOptionsGetScalar(*options,c1,c2,dvalue,&flag);
1847a7a6802SBarry Smith   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1857a7a6802SBarry Smith   FREECHAR(pre,c1);
1867a7a6802SBarry Smith   FREECHAR(name,c2);
1877a7a6802SBarry Smith }
1887a7a6802SBarry Smith 
189390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetrealarray_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2),
190ace3abfcSBarry Smith                 PetscReal *dvalue,PetscInt *nmax,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1919306f9a3SSatish Balay {
1929306f9a3SSatish Balay   char      *c1,*c2;
193ace3abfcSBarry Smith   PetscBool flag;
1949306f9a3SSatish Balay 
1959306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1969306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
197c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
198c5929fdfSBarry Smith   *ierr = PetscOptionsGetRealArray(*options,c1,c2,dvalue,nmax,&flag);
1995c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2009306f9a3SSatish Balay   FREECHAR(pre,c1);
2019306f9a3SSatish Balay   FREECHAR(name,c2);
2029306f9a3SSatish Balay }
2039306f9a3SSatish Balay 
204390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetintarray_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2),
205ace3abfcSBarry Smith                    PetscInt *dvalue,PetscInt *nmax,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
2069306f9a3SSatish Balay {
2079306f9a3SSatish Balay   char      *c1,*c2;
208ace3abfcSBarry Smith   PetscBool flag;
2099306f9a3SSatish Balay 
2109306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
2119306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
212c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
213c5929fdfSBarry Smith   *ierr = PetscOptionsGetIntArray(*options,c1,c2,dvalue,nmax,&flag);
2145c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2159306f9a3SSatish Balay   FREECHAR(pre,c1);
2169306f9a3SSatish Balay   FREECHAR(name,c2);
2179306f9a3SSatish Balay }
2189306f9a3SSatish Balay 
219390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetstring_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2),
220390e1bf2SBarry Smith                     char* string PETSC_MIXED_LEN(len),PetscBool  *flg,
2219306f9a3SSatish Balay                     PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len))
2229306f9a3SSatish Balay {
2239306f9a3SSatish Balay   char      *c1,*c2,*c3;
2244610e317SSatish Balay   size_t    len3;
225ace3abfcSBarry Smith   PetscBool flag;
2269306f9a3SSatish Balay 
2279306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
2289306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
2299306f9a3SSatish Balay   c3   = string;
2309306f9a3SSatish Balay   len3 = len - 1;
2319306f9a3SSatish Balay 
232c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
233c5929fdfSBarry Smith   *ierr = PetscOptionsGetString(*options,c1,c2,c3,len3,&flag);
2345c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2359306f9a3SSatish Balay   FREECHAR(pre,c1);
2369306f9a3SSatish Balay   FREECHAR(name,c2);
2377c363081SBarry Smith   FIXRETURNCHAR(flag,string,len);
2389306f9a3SSatish Balay }
2399306f9a3SSatish Balay 
240390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscgetprogramname_(char* name PETSC_MIXED_LEN(len_in),PetscErrorCode *ierr PETSC_END_LEN(len_in))
2419306f9a3SSatish Balay {
2429306f9a3SSatish Balay   char   *tmp;
2434610e317SSatish Balay   size_t len;
2449306f9a3SSatish Balay   tmp   = name;
2459306f9a3SSatish Balay   len   = len_in - 1;
2469306f9a3SSatish Balay   *ierr = PetscGetProgramName(tmp,len);
2477c363081SBarry Smith   FIXRETURNCHAR(PETSC_TRUE,name,len_in);
2489306f9a3SSatish Balay }
2499306f9a3SSatish Balay 
250c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsview_(PetscOptions *options,PetscViewer *vin,PetscErrorCode *ierr)
2513a15af8cSBlaise Bourdin {
2523a15af8cSBlaise Bourdin   PetscViewer v;
2533a15af8cSBlaise Bourdin 
2543a15af8cSBlaise Bourdin   PetscPatchDefaultViewers_Fortran(vin,v);
255c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
256c5929fdfSBarry Smith   *ierr = PetscOptionsView(*options,v);
2573a15af8cSBlaise Bourdin }
2583a15af8cSBlaise Bourdin 
259*ac9b46efSSatish Balay PETSC_EXTERN void PETSC_STDCALL petscoptionsleft_(PetscOptions *options,PetscErrorCode *ierr)
260*ac9b46efSSatish Balay {
261*ac9b46efSSatish Balay   CHKFORTRANNULLOBJECTDEREFERENCE(options);
262*ac9b46efSSatish Balay   *ierr = PetscOptionsLeft(*options);
263*ac9b46efSSatish Balay }
264*ac9b46efSSatish Balay 
265*ac9b46efSSatish Balay 
266390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscobjectviewfromoptions_(PetscObject *obj,PetscObject *bobj,char* option PETSC_MIXED_LEN(loption),PetscErrorCode *ierr  PETSC_END_LEN(loption))
267a2865142SMatthew G. Knepley {
268685405a1SBarry Smith   char *o;
269a2865142SMatthew G. Knepley 
270a2865142SMatthew G. Knepley   FIXCHAR(option, loption, o);
27146475a24SBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(bobj);
272685405a1SBarry Smith   *ierr = PetscObjectViewFromOptions(*obj, *bobj, o);
273a2865142SMatthew G. Knepley   FREECHAR(option, o);
274a2865142SMatthew G. Knepley }
275