xref: /petsc/src/sys/objects/ftn-custom/zoptionsf.c (revision 7a7a6802389809b0b3ed75b7e16dab02fcfe4ef5)
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
19*7a7a6802SBarry 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
27a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_        PETSCOBJECTVIEWFROMOPTIONS
289306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
2947340559SBarry Smith #define petscoptionsgetenumprivate_        petscoptionsgetenumprivate
3008f86b60SJed Brown #define petscoptionsgetbool_               petscoptionsgetbool
319306f9a3SSatish Balay #define petscoptionssetvalue_              petscoptionssetvalue
329306f9a3SSatish Balay #define petscoptionsclearvalue_            petscoptionsclearvalue
339306f9a3SSatish Balay #define petscoptionshasname_               petscoptionshasname
349306f9a3SSatish Balay #define petscoptionsgetint_                petscoptionsgetint
359306f9a3SSatish Balay #define petscoptionsgetreal_               petscoptionsgetreal
36*7a7a6802SBarry Smith #define petscoptionsgetscalar_             petscoptionsgetscalar
379306f9a3SSatish Balay #define petscoptionsgetrealarray_          petscoptionsgetrealarray
389306f9a3SSatish Balay #define petscoptionsgetstring_             petscoptionsgetstring
399306f9a3SSatish Balay #define petscoptionsgetintarray_           petscoptionsgetintarray
409306f9a3SSatish Balay #define petscgetprogramname_               petscgetprogramname
419306f9a3SSatish Balay #define petscoptionsinsertfile_            petscoptionsinsertfile
42a542b6e8SBarry Smith #define petscoptionsclear_                 petscoptionsclear
43ab66e762SBarry Smith #define petscoptionsinsertstring_          petscoptionsinsertstring
443a15af8cSBlaise Bourdin #define petscoptionsview_                  petscoptionsview
45a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_        petscobjectviewfromoptions
469306f9a3SSatish Balay #endif
479306f9a3SSatish Balay 
489306f9a3SSatish Balay /* ---------------------------------------------------------------------*/
499306f9a3SSatish Balay 
50c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsinsertstring_(PetscOptions *options,CHAR file PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
51ab66e762SBarry Smith {
52ab66e762SBarry Smith   char *c1;
53ab66e762SBarry Smith 
54ab66e762SBarry Smith   FIXCHAR(file,len,c1);
55c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
56c5929fdfSBarry Smith   *ierr = PetscOptionsInsertString(*options,c1);
57ab66e762SBarry Smith   FREECHAR(file,c1);
58ab66e762SBarry Smith }
59ab66e762SBarry Smith 
60c5929fdfSBarry 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))
619306f9a3SSatish Balay {
629306f9a3SSatish Balay   char *c1;
639306f9a3SSatish Balay 
649306f9a3SSatish Balay   FIXCHAR(file,len,c1);
65c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
66c5929fdfSBarry Smith   *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm),*options,c1,*require);
679306f9a3SSatish Balay   FREECHAR(file,c1);
689306f9a3SSatish Balay }
699306f9a3SSatish Balay 
70c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionssetvalue_(PetscOptions *options,CHAR name PETSC_MIXED_LEN(len1),CHAR value PETSC_MIXED_LEN(len2),
719306f9a3SSatish Balay                    PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
729306f9a3SSatish Balay {
739306f9a3SSatish Balay   char *c1,*c2;
749306f9a3SSatish Balay 
759306f9a3SSatish Balay   FIXCHAR(name,len1,c1);
769306f9a3SSatish Balay   FIXCHAR(value,len2,c2);
77c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
78c5929fdfSBarry Smith   *ierr = PetscOptionsSetValue(*options,c1,c2);
799306f9a3SSatish Balay   FREECHAR(name,c1);
809306f9a3SSatish Balay   FREECHAR(value,c2);
819306f9a3SSatish Balay }
829306f9a3SSatish Balay 
83c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsclear_(PetscOptions *options,PetscErrorCode *ierr)
84a542b6e8SBarry Smith {
85c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
86c5929fdfSBarry Smith   *ierr = PetscOptionsClear(*options);
87a542b6e8SBarry Smith }
88a542b6e8SBarry Smith 
89c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsclearvalue_(PetscOptions *options,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
909306f9a3SSatish Balay {
919306f9a3SSatish Balay   char *c1;
929306f9a3SSatish Balay 
939306f9a3SSatish Balay   FIXCHAR(name,len,c1);
94c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
95c5929fdfSBarry Smith   *ierr = PetscOptionsClearValue(*options,c1);
969306f9a3SSatish Balay   FREECHAR(name,c1);
979306f9a3SSatish Balay }
989306f9a3SSatish Balay 
99c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionshasname_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
100ace3abfcSBarry Smith                     PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1019306f9a3SSatish Balay {
1029306f9a3SSatish Balay   char *c1,*c2;
1039306f9a3SSatish Balay 
1049306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1059306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
106c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
107c5929fdfSBarry Smith   *ierr = PetscOptionsHasName(*options,c1,c2,flg);
1089306f9a3SSatish Balay   FREECHAR(pre,c1);
1099306f9a3SSatish Balay   FREECHAR(name,c2);
1109306f9a3SSatish Balay }
1119306f9a3SSatish Balay 
112c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetint_(PetscOptions *opt,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
113ace3abfcSBarry Smith                     PetscInt *ivalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1149306f9a3SSatish Balay {
1159306f9a3SSatish Balay   char      *c1,*c2;
116ace3abfcSBarry Smith   PetscBool flag;
1179306f9a3SSatish Balay 
1189306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1199306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
120c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(opt);
121c5929fdfSBarry Smith   *ierr = PetscOptionsGetInt(*opt,c1,c2,ivalue,&flag);
1225c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1239306f9a3SSatish Balay   FREECHAR(pre,c1);
1249306f9a3SSatish Balay   FREECHAR(name,c2);
1259306f9a3SSatish Balay }
1269306f9a3SSatish Balay 
127c5929fdfSBarry 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,
12847340559SBarry Smith                     PetscEnum *ivalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
12947340559SBarry Smith {
13047340559SBarry Smith   char      *c1,*c2;
13147340559SBarry Smith   PetscBool flag;
13247340559SBarry Smith 
13347340559SBarry Smith   FIXCHAR(pre,len1,c1);
13447340559SBarry Smith   FIXCHAR(name,len2,c2);
135c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
136c5929fdfSBarry Smith   *ierr = PetscOptionsGetEnum(*options,c1,c2,list,ivalue,&flag);
13747340559SBarry Smith   if (!FORTRANNULLBOOL(flg)) *flg = flag;
13847340559SBarry Smith   FREECHAR(pre,c1);
13947340559SBarry Smith   FREECHAR(name,c2);
14047340559SBarry Smith }
14147340559SBarry Smith 
142c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetbool_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
143ace3abfcSBarry Smith                     PetscBool  *ivalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1449306f9a3SSatish Balay {
1459306f9a3SSatish Balay   char      *c1,*c2;
146ace3abfcSBarry Smith   PetscBool flag;
1479306f9a3SSatish Balay 
1489306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1499306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
150c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
151c5929fdfSBarry Smith   *ierr = PetscOptionsGetBool(*options,c1,c2,ivalue,&flag);
1525c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1539306f9a3SSatish Balay   FREECHAR(pre,c1);
1549306f9a3SSatish Balay   FREECHAR(name,c2);
1559306f9a3SSatish Balay }
1569306f9a3SSatish Balay 
157c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetreal_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
158ace3abfcSBarry Smith                     PetscReal *dvalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1599306f9a3SSatish Balay {
1609306f9a3SSatish Balay   char *c1,*c2;
161ace3abfcSBarry Smith   PetscBool  flag;
1629306f9a3SSatish Balay 
1639306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1649306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
165c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
166c5929fdfSBarry Smith   *ierr = PetscOptionsGetReal(*options,c1,c2,dvalue,&flag);
1675c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1689306f9a3SSatish Balay   FREECHAR(pre,c1);
1699306f9a3SSatish Balay   FREECHAR(name,c2);
1709306f9a3SSatish Balay }
1719306f9a3SSatish Balay 
172*7a7a6802SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetscalar_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
173*7a7a6802SBarry Smith                     PetscScalar *dvalue,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
174*7a7a6802SBarry Smith {
175*7a7a6802SBarry Smith   char *c1,*c2;
176*7a7a6802SBarry Smith   PetscBool  flag;
177*7a7a6802SBarry Smith 
178*7a7a6802SBarry Smith   FIXCHAR(pre,len1,c1);
179*7a7a6802SBarry Smith   FIXCHAR(name,len2,c2);
180*7a7a6802SBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
181*7a7a6802SBarry Smith   *ierr = PetscOptionsGetReal(*options,c1,c2,dvalue,&flag);
182*7a7a6802SBarry Smith   if (!FORTRANNULLBOOL(flg)) *flg = flag;
183*7a7a6802SBarry Smith   FREECHAR(pre,c1);
184*7a7a6802SBarry Smith   FREECHAR(name,c2);
185*7a7a6802SBarry Smith }
186*7a7a6802SBarry Smith 
187c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetrealarray_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
188ace3abfcSBarry Smith                 PetscReal *dvalue,PetscInt *nmax,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
1899306f9a3SSatish Balay {
1909306f9a3SSatish Balay   char      *c1,*c2;
191ace3abfcSBarry Smith   PetscBool flag;
1929306f9a3SSatish Balay 
1939306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1949306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
195c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
196c5929fdfSBarry Smith   *ierr = PetscOptionsGetRealArray(*options,c1,c2,dvalue,nmax,&flag);
1975c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1989306f9a3SSatish Balay   FREECHAR(pre,c1);
1999306f9a3SSatish Balay   FREECHAR(name,c2);
2009306f9a3SSatish Balay }
2019306f9a3SSatish Balay 
202c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetintarray_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
203ace3abfcSBarry Smith                    PetscInt *dvalue,PetscInt *nmax,PetscBool  *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
2049306f9a3SSatish Balay {
2059306f9a3SSatish Balay   char      *c1,*c2;
206ace3abfcSBarry Smith   PetscBool flag;
2079306f9a3SSatish Balay 
2089306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
2099306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
210c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
211c5929fdfSBarry Smith   *ierr = PetscOptionsGetIntArray(*options,c1,c2,dvalue,nmax,&flag);
2125c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2139306f9a3SSatish Balay   FREECHAR(pre,c1);
2149306f9a3SSatish Balay   FREECHAR(name,c2);
2159306f9a3SSatish Balay }
2169306f9a3SSatish Balay 
217c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetstring_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),
218ace3abfcSBarry Smith                     CHAR string PETSC_MIXED_LEN(len),PetscBool  *flg,
2199306f9a3SSatish Balay                     PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len))
2209306f9a3SSatish Balay {
2219306f9a3SSatish Balay   char      *c1,*c2,*c3;
2224610e317SSatish Balay   size_t    len3;
223ace3abfcSBarry Smith   PetscBool flag;
2249306f9a3SSatish Balay 
2259306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
2269306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
2279306f9a3SSatish Balay   c3   = string;
2289306f9a3SSatish Balay   len3 = len - 1;
2299306f9a3SSatish Balay 
230c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
231c5929fdfSBarry Smith   *ierr = PetscOptionsGetString(*options,c1,c2,c3,len3,&flag);
2325c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2339306f9a3SSatish Balay   FREECHAR(pre,c1);
2349306f9a3SSatish Balay   FREECHAR(name,c2);
2357c363081SBarry Smith   FIXRETURNCHAR(flag,string,len);
2369306f9a3SSatish Balay }
2379306f9a3SSatish Balay 
2388cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscgetprogramname_(CHAR name PETSC_MIXED_LEN(len_in),PetscErrorCode *ierr PETSC_END_LEN(len_in))
2399306f9a3SSatish Balay {
2409306f9a3SSatish Balay   char   *tmp;
2414610e317SSatish Balay   size_t len;
2429306f9a3SSatish Balay   tmp   = name;
2439306f9a3SSatish Balay   len   = len_in - 1;
2449306f9a3SSatish Balay   *ierr = PetscGetProgramName(tmp,len);
2457c363081SBarry Smith   FIXRETURNCHAR(PETSC_TRUE,name,len_in);
2469306f9a3SSatish Balay }
2479306f9a3SSatish Balay 
248c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsview_(PetscOptions *options,PetscViewer *vin,PetscErrorCode *ierr)
2493a15af8cSBlaise Bourdin {
2503a15af8cSBlaise Bourdin   PetscViewer v;
2513a15af8cSBlaise Bourdin 
2523a15af8cSBlaise Bourdin   PetscPatchDefaultViewers_Fortran(vin,v);
253c5929fdfSBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(options);
254c5929fdfSBarry Smith   *ierr = PetscOptionsView(*options,v);
2553a15af8cSBlaise Bourdin }
2563a15af8cSBlaise Bourdin 
257685405a1SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscobjectviewfromoptions_(PetscObject *obj,PetscObject *bobj,CHAR option PETSC_MIXED_LEN(loption),PetscErrorCode *ierr  PETSC_END_LEN(loption))
258a2865142SMatthew G. Knepley {
259685405a1SBarry Smith   char *o;
260a2865142SMatthew G. Knepley 
261a2865142SMatthew G. Knepley   FIXCHAR(option, loption, o);
26246475a24SBarry Smith   CHKFORTRANNULLOBJECTDEREFERENCE(bobj);
263685405a1SBarry Smith   *ierr = PetscObjectViewFromOptions(*obj, *bobj, o);
264a2865142SMatthew G. Knepley   FREECHAR(option, o);
265a2865142SMatthew G. Knepley }
266