xref: /petsc/src/sys/objects/ftn-custom/zoptionsf.c (revision b0c0aa2b402794874120526435a0fac3e9105b95)
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)
11a530d236SBarry Smith #define petscsubcommview_                  PETSCSUBCOMMVIEW
12a530d236SBarry Smith #define petscsubcommgetparent_             PETSCSUBCOMMGETPARENT
13a530d236SBarry Smith #define petscsubcommgetcontiguousparent_   PETSCSUBCOMMGETCONTIGUOUSPARENT
14a530d236SBarry Smith #define petscsubcommgetchild_              PETSCSUBCOMMGETCHILD
15455a3cf9SBarry Smith #define petscoptionsallused_               PETSCOPTIONSALLUSED
1647340559SBarry Smith #define petscoptionsgetenumprivate_        PETSCOPTIONSGETENUMPRIVATE
1708f86b60SJed Brown #define petscoptionsgetbool_               PETSCOPTIONSGETBOOL
18*b0c0aa2bSBlaise Bourdin #define petscoptionsgetboolarray_          PETSCOPTIONSGETBOOLARRAY
199306f9a3SSatish Balay #define petscoptionsgetintarray_           PETSCOPTIONSGETINTARRAY
209306f9a3SSatish Balay #define petscoptionssetvalue_              PETSCOPTIONSSETVALUE
219306f9a3SSatish Balay #define petscoptionsclearvalue_            PETSCOPTIONSCLEARVALUE
229306f9a3SSatish Balay #define petscoptionshasname_               PETSCOPTIONSHASNAME
239306f9a3SSatish Balay #define petscoptionsgetint_                PETSCOPTIONSGETINT
249306f9a3SSatish Balay #define petscoptionsgetreal_               PETSCOPTIONSGETREAL
257a7a6802SBarry Smith #define petscoptionsgetscalar_             PETSCOPTIONSGETSCALAR
26*b0c0aa2bSBlaise Bourdin #define petscoptionsgetscalararray_        PETSCOPTIONSGETSCALARARRAY
279306f9a3SSatish Balay #define petscoptionsgetrealarray_          PETSCOPTIONSGETREALARRAY
289306f9a3SSatish Balay #define petscoptionsgetstring_             PETSCOPTIONSGETSTRING
299306f9a3SSatish Balay #define petscgetprogramname                PETSCGETPROGRAMNAME
309306f9a3SSatish Balay #define petscoptionsinsertfile_            PETSCOPTIONSINSERTFILE
31a542b6e8SBarry Smith #define petscoptionsclear_                 PETSCOPTIONSCLEAR
32ab66e762SBarry Smith #define petscoptionsinsertstring_          PETSCOPTIONSINSERTSTRING
333a15af8cSBlaise Bourdin #define petscoptionsview_                  PETSCOPTIONSVIEW
34ac9b46efSSatish Balay #define petscoptionsleft_                  PETSCOPTIONSLEFT
35a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_        PETSCOBJECTVIEWFROMOPTIONS
369306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
37a530d236SBarry Smith #define petscsubcommview_                  petscsubcommview
38a530d236SBarry Smith #define petscsubcommgetparent_             petscsubcommgetparent
39a530d236SBarry Smith #define petscsubcommgetcontiguousparent_   petscsubcommgetcontiguousparent
40a530d236SBarry Smith #define petscsubcommgetchild_              petscsubcommgetchild
41455a3cf9SBarry Smith #define petscoptionsallused_               petscoptionsallused
4247340559SBarry Smith #define petscoptionsgetenumprivate_        petscoptionsgetenumprivate
4308f86b60SJed Brown #define petscoptionsgetbool_               petscoptionsgetbool
44*b0c0aa2bSBlaise Bourdin #define petscoptionsgetboolarray_          petscoptionsgetboolarray
459306f9a3SSatish Balay #define petscoptionssetvalue_              petscoptionssetvalue
469306f9a3SSatish Balay #define petscoptionsclearvalue_            petscoptionsclearvalue
479306f9a3SSatish Balay #define petscoptionshasname_               petscoptionshasname
489306f9a3SSatish Balay #define petscoptionsgetint_                petscoptionsgetint
499306f9a3SSatish Balay #define petscoptionsgetreal_               petscoptionsgetreal
507a7a6802SBarry Smith #define petscoptionsgetscalar_             petscoptionsgetscalar
51*b0c0aa2bSBlaise Bourdin #define petscoptionsgetscalararray_        petscoptionsgetscalararray
529306f9a3SSatish Balay #define petscoptionsgetrealarray_          petscoptionsgetrealarray
539306f9a3SSatish Balay #define petscoptionsgetstring_             petscoptionsgetstring
549306f9a3SSatish Balay #define petscoptionsgetintarray_           petscoptionsgetintarray
559306f9a3SSatish Balay #define petscgetprogramname_               petscgetprogramname
569306f9a3SSatish Balay #define petscoptionsinsertfile_            petscoptionsinsertfile
57a542b6e8SBarry Smith #define petscoptionsclear_                 petscoptionsclear
58ab66e762SBarry Smith #define petscoptionsinsertstring_          petscoptionsinsertstring
593a15af8cSBlaise Bourdin #define petscoptionsview_                  petscoptionsview
60ac9b46efSSatish Balay #define petscoptionsleft_                  petscoptionsleft
61a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_        petscobjectviewfromoptions
629306f9a3SSatish Balay #endif
639306f9a3SSatish Balay 
649306f9a3SSatish Balay /* ---------------------------------------------------------------------*/
659306f9a3SSatish Balay 
6619caf8f3SSatish Balay PETSC_EXTERN void petscoptionsinsertstring_(PetscOptions *options,char* file,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
67ab66e762SBarry Smith {
68ab66e762SBarry Smith   char *c1;
69ab66e762SBarry Smith 
70ab66e762SBarry Smith   FIXCHAR(file,len,c1);
71d49bb8f9SBarry Smith   *ierr = PetscOptionsInsertString(*options,c1);if (*ierr) return;
72ab66e762SBarry Smith   FREECHAR(file,c1);
73ab66e762SBarry Smith }
74ab66e762SBarry Smith 
7519caf8f3SSatish Balay PETSC_EXTERN void petscoptionsinsertfile_(MPI_Fint *comm,PetscOptions *options,char* file,PetscBool *require,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
769306f9a3SSatish Balay {
779306f9a3SSatish Balay   char *c1;
789306f9a3SSatish Balay 
799306f9a3SSatish Balay   FIXCHAR(file,len,c1);
80d49bb8f9SBarry Smith   *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm),*options,c1,*require);if (*ierr) return;
819306f9a3SSatish Balay   FREECHAR(file,c1);
829306f9a3SSatish Balay }
839306f9a3SSatish Balay 
8419caf8f3SSatish Balay PETSC_EXTERN void petscoptionssetvalue_(PetscOptions *options,char* name,char* value,
8519caf8f3SSatish Balay                    PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
869306f9a3SSatish Balay {
879306f9a3SSatish Balay   char *c1,*c2;
889306f9a3SSatish Balay 
899306f9a3SSatish Balay   FIXCHAR(name,len1,c1);
909306f9a3SSatish Balay   FIXCHAR(value,len2,c2);
91d49bb8f9SBarry Smith   *ierr = PetscOptionsSetValue(*options,c1,c2);if (*ierr) return;
929306f9a3SSatish Balay   FREECHAR(name,c1);
939306f9a3SSatish Balay   FREECHAR(value,c2);
949306f9a3SSatish Balay }
959306f9a3SSatish Balay 
9619caf8f3SSatish Balay PETSC_EXTERN void petscoptionsclear_(PetscOptions *options,PetscErrorCode *ierr)
97a542b6e8SBarry Smith {
98c5929fdfSBarry Smith   *ierr = PetscOptionsClear(*options);
99a542b6e8SBarry Smith }
100a542b6e8SBarry Smith 
10119caf8f3SSatish Balay PETSC_EXTERN void petscoptionsclearvalue_(PetscOptions *options,char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
1029306f9a3SSatish Balay {
1039306f9a3SSatish Balay   char *c1;
1049306f9a3SSatish Balay 
1059306f9a3SSatish Balay   FIXCHAR(name,len,c1);
106d49bb8f9SBarry Smith   *ierr = PetscOptionsClearValue(*options,c1);if (*ierr) return;
1079306f9a3SSatish Balay   FREECHAR(name,c1);
1089306f9a3SSatish Balay }
1099306f9a3SSatish Balay 
11019caf8f3SSatish Balay PETSC_EXTERN void petscoptionshasname_(PetscOptions *options,char* pre,char* name,
11119caf8f3SSatish Balay                     PetscBool  *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
1129306f9a3SSatish Balay {
1139306f9a3SSatish Balay   char *c1,*c2;
1149306f9a3SSatish Balay 
1159306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1169306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
117d49bb8f9SBarry Smith   *ierr = PetscOptionsHasName(*options,c1,c2,flg);if (*ierr) return;
1189306f9a3SSatish Balay   FREECHAR(pre,c1);
1199306f9a3SSatish Balay   FREECHAR(name,c2);
1209306f9a3SSatish Balay }
1219306f9a3SSatish Balay 
12219caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetint_(PetscOptions *opt,char* pre,char* name,
12319caf8f3SSatish Balay                     PetscInt *ivalue,PetscBool  *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T 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);
130d49bb8f9SBarry Smith   *ierr = PetscOptionsGetInt(*opt,c1,c2,ivalue,&flag);if (*ierr) return;
1315c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1329306f9a3SSatish Balay   FREECHAR(pre,c1);
1339306f9a3SSatish Balay   FREECHAR(name,c2);
1349306f9a3SSatish Balay }
1359306f9a3SSatish Balay 
13619caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetenumprivate_(PetscOptions *options,char* pre,char* name,const char *const*list,
13719caf8f3SSatish Balay                     PetscEnum *ivalue,PetscBool  *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
13847340559SBarry Smith {
13947340559SBarry Smith   char      *c1,*c2;
14047340559SBarry Smith   PetscBool flag;
14147340559SBarry Smith 
14247340559SBarry Smith   FIXCHAR(pre,len1,c1);
14347340559SBarry Smith   FIXCHAR(name,len2,c2);
144d49bb8f9SBarry Smith   *ierr = PetscOptionsGetEnum(*options,c1,c2,list,ivalue,&flag);if (*ierr) return;
14547340559SBarry Smith   if (!FORTRANNULLBOOL(flg)) *flg = flag;
14647340559SBarry Smith   FREECHAR(pre,c1);
14747340559SBarry Smith   FREECHAR(name,c2);
14847340559SBarry Smith }
14947340559SBarry Smith 
15019caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetbool_(PetscOptions *options,char* pre,char* name,
15119caf8f3SSatish Balay                     PetscBool  *ivalue,PetscBool  *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
1529306f9a3SSatish Balay {
1539306f9a3SSatish Balay   char      *c1,*c2;
154ace3abfcSBarry Smith   PetscBool flag;
1559306f9a3SSatish Balay 
1569306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1579306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
158d49bb8f9SBarry Smith   *ierr = PetscOptionsGetBool(*options,c1,c2,ivalue,&flag);if (*ierr) return;
1595c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1609306f9a3SSatish Balay   FREECHAR(pre,c1);
1619306f9a3SSatish Balay   FREECHAR(name,c2);
1629306f9a3SSatish Balay }
1639306f9a3SSatish Balay 
164*b0c0aa2bSBlaise Bourdin PETSC_EXTERN void petscoptionsgetboolarray_(PetscOptions *options,char* pre,char* name,
165*b0c0aa2bSBlaise Bourdin                    PetscBool *dvalue,PetscInt *nmax,PetscBool  *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
166*b0c0aa2bSBlaise Bourdin {
167*b0c0aa2bSBlaise Bourdin   char      *c1,*c2;
168*b0c0aa2bSBlaise Bourdin   PetscBool flag;
169*b0c0aa2bSBlaise Bourdin 
170*b0c0aa2bSBlaise Bourdin   FIXCHAR(pre,len1,c1);
171*b0c0aa2bSBlaise Bourdin   FIXCHAR(name,len2,c2);
172*b0c0aa2bSBlaise Bourdin   *ierr = PetscOptionsGetBoolArray(*options,c1,c2,dvalue,nmax,&flag);if (*ierr) return;
173*b0c0aa2bSBlaise Bourdin   if (!FORTRANNULLBOOL(flg)) *flg = flag;
174*b0c0aa2bSBlaise Bourdin   FREECHAR(pre,c1);
175*b0c0aa2bSBlaise Bourdin   FREECHAR(name,c2);
176*b0c0aa2bSBlaise Bourdin }
177*b0c0aa2bSBlaise Bourdin 
17819caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetreal_(PetscOptions *options,char* pre,char* name,
17919caf8f3SSatish Balay                     PetscReal *dvalue,PetscBool  *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
1809306f9a3SSatish Balay {
1819306f9a3SSatish Balay   char *c1,*c2;
182ace3abfcSBarry Smith   PetscBool  flag;
1839306f9a3SSatish Balay 
1849306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
1859306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
186d49bb8f9SBarry Smith   *ierr = PetscOptionsGetReal(*options,c1,c2,dvalue,&flag);if (*ierr) return;
1875c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1889306f9a3SSatish Balay   FREECHAR(pre,c1);
1899306f9a3SSatish Balay   FREECHAR(name,c2);
1909306f9a3SSatish Balay }
1919306f9a3SSatish Balay 
19219caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetscalar_(PetscOptions *options,char* pre,char* name,
19319caf8f3SSatish Balay                     PetscScalar *dvalue,PetscBool  *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
1947a7a6802SBarry Smith {
1957a7a6802SBarry Smith   char *c1,*c2;
1967a7a6802SBarry Smith   PetscBool  flag;
1977a7a6802SBarry Smith 
1987a7a6802SBarry Smith   FIXCHAR(pre,len1,c1);
1997a7a6802SBarry Smith   FIXCHAR(name,len2,c2);
200d49bb8f9SBarry Smith   *ierr = PetscOptionsGetScalar(*options,c1,c2,dvalue,&flag);if (*ierr) return;
2017a7a6802SBarry Smith   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2027a7a6802SBarry Smith   FREECHAR(pre,c1);
2037a7a6802SBarry Smith   FREECHAR(name,c2);
2047a7a6802SBarry Smith }
2057a7a6802SBarry Smith 
206*b0c0aa2bSBlaise Bourdin PETSC_EXTERN void petscoptionsgetscalararray_(PetscOptions *options,char* pre,char* name,
207*b0c0aa2bSBlaise Bourdin                 PetscScalar *dvalue,PetscInt *nmax,PetscBool  *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
208*b0c0aa2bSBlaise Bourdin {
209*b0c0aa2bSBlaise Bourdin   char      *c1,*c2;
210*b0c0aa2bSBlaise Bourdin   PetscBool flag;
211*b0c0aa2bSBlaise Bourdin 
212*b0c0aa2bSBlaise Bourdin   FIXCHAR(pre,len1,c1);
213*b0c0aa2bSBlaise Bourdin   FIXCHAR(name,len2,c2);
214*b0c0aa2bSBlaise Bourdin   *ierr = PetscOptionsGetScalarArray(*options,c1,c2,dvalue,nmax,&flag);if (*ierr) return;
215*b0c0aa2bSBlaise Bourdin   if (!FORTRANNULLBOOL(flg)) *flg = flag;
216*b0c0aa2bSBlaise Bourdin   FREECHAR(pre,c1);
217*b0c0aa2bSBlaise Bourdin   FREECHAR(name,c2);
218*b0c0aa2bSBlaise Bourdin }
219*b0c0aa2bSBlaise Bourdin 
22019caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetrealarray_(PetscOptions *options,char* pre,char* name,
22119caf8f3SSatish Balay                 PetscReal *dvalue,PetscInt *nmax,PetscBool  *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
2229306f9a3SSatish Balay {
2239306f9a3SSatish Balay   char      *c1,*c2;
224ace3abfcSBarry Smith   PetscBool flag;
2259306f9a3SSatish Balay 
2269306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
2279306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
228d49bb8f9SBarry Smith   *ierr = PetscOptionsGetRealArray(*options,c1,c2,dvalue,nmax,&flag);if (*ierr) return;
2295c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2309306f9a3SSatish Balay   FREECHAR(pre,c1);
2319306f9a3SSatish Balay   FREECHAR(name,c2);
2329306f9a3SSatish Balay }
2339306f9a3SSatish Balay 
23419caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetintarray_(PetscOptions *options,char* pre,char* name,
23519caf8f3SSatish Balay                    PetscInt *dvalue,PetscInt *nmax,PetscBool  *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)
2369306f9a3SSatish Balay {
2379306f9a3SSatish Balay   char      *c1,*c2;
238ace3abfcSBarry Smith   PetscBool flag;
2399306f9a3SSatish Balay 
2409306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
2419306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
242d49bb8f9SBarry Smith   *ierr = PetscOptionsGetIntArray(*options,c1,c2,dvalue,nmax,&flag);if (*ierr) return;
2435c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2449306f9a3SSatish Balay   FREECHAR(pre,c1);
2459306f9a3SSatish Balay   FREECHAR(name,c2);
2469306f9a3SSatish Balay }
2479306f9a3SSatish Balay 
24819caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetstring_(PetscOptions *options,char* pre,char* name,
24919caf8f3SSatish Balay                     char* string,PetscBool  *flg,
25019caf8f3SSatish Balay                     PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2,PETSC_FORTRAN_CHARLEN_T len)
2519306f9a3SSatish Balay {
2529306f9a3SSatish Balay   char      *c1,*c2,*c3;
2534610e317SSatish Balay   size_t    len3;
254ace3abfcSBarry Smith   PetscBool flag;
2559306f9a3SSatish Balay 
2569306f9a3SSatish Balay   FIXCHAR(pre,len1,c1);
2579306f9a3SSatish Balay   FIXCHAR(name,len2,c2);
2589306f9a3SSatish Balay   c3   = string;
2599306f9a3SSatish Balay   len3 = len - 1;
2609306f9a3SSatish Balay 
261d49bb8f9SBarry Smith   *ierr = PetscOptionsGetString(*options,c1,c2,c3,len3,&flag);if (*ierr) return;
2625c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2639306f9a3SSatish Balay   FREECHAR(pre,c1);
2649306f9a3SSatish Balay   FREECHAR(name,c2);
2657c363081SBarry Smith   FIXRETURNCHAR(flag,string,len);
2669306f9a3SSatish Balay }
2679306f9a3SSatish Balay 
26819caf8f3SSatish Balay PETSC_EXTERN void petscgetprogramname_(char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len_in)
2699306f9a3SSatish Balay {
2709306f9a3SSatish Balay   char   *tmp;
2714610e317SSatish Balay   size_t len;
2729306f9a3SSatish Balay   tmp   = name;
2739306f9a3SSatish Balay   len   = len_in - 1;
2749306f9a3SSatish Balay   *ierr = PetscGetProgramName(tmp,len);
2757c363081SBarry Smith   FIXRETURNCHAR(PETSC_TRUE,name,len_in);
2769306f9a3SSatish Balay }
2779306f9a3SSatish Balay 
27819caf8f3SSatish Balay PETSC_EXTERN void petscoptionsview_(PetscOptions *options,PetscViewer *vin,PetscErrorCode *ierr)
2793a15af8cSBlaise Bourdin {
2803a15af8cSBlaise Bourdin   PetscViewer v;
2813a15af8cSBlaise Bourdin 
2823a15af8cSBlaise Bourdin   PetscPatchDefaultViewers_Fortran(vin,v);
283c5929fdfSBarry Smith   *ierr = PetscOptionsView(*options,v);
2843a15af8cSBlaise Bourdin }
2853a15af8cSBlaise Bourdin 
28619caf8f3SSatish Balay PETSC_EXTERN void petscobjectviewfromoptions_(PetscObject *obj,PetscObject *bobj,char* option,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T loption)
287a2865142SMatthew G. Knepley {
288685405a1SBarry Smith   char *o;
289a2865142SMatthew G. Knepley 
290a2865142SMatthew G. Knepley   FIXCHAR(option, loption, o);
291b14c0cbaSBlaise Bourdin   CHKFORTRANNULLOBJECT(obj);
292d49bb8f9SBarry Smith   *ierr = PetscObjectViewFromOptions(*obj, *bobj, o);if (*ierr) return;
293a2865142SMatthew G. Knepley   FREECHAR(option, o);
294a2865142SMatthew G. Knepley }
295a530d236SBarry Smith 
296a530d236SBarry Smith PETSC_EXTERN void petscsubcommgetparent_(PetscSubcomm *scomm,MPI_Fint *pcomm, int *ierr)
297a530d236SBarry Smith {
298a530d236SBarry Smith   MPI_Comm tcomm;
299a530d236SBarry Smith   *ierr = PetscSubcommGetParent(*scomm,&tcomm);
300a530d236SBarry Smith   *pcomm = MPI_Comm_c2f(tcomm);
301a530d236SBarry Smith }
302a530d236SBarry Smith 
303a530d236SBarry Smith PETSC_EXTERN void petscsubcommgetcontiguousparent_(PetscSubcomm *scomm,MPI_Fint *pcomm, int *ierr)
304a530d236SBarry Smith {
305a530d236SBarry Smith   MPI_Comm tcomm;
306a530d236SBarry Smith   *ierr = PetscSubcommGetContiguousParent(*scomm,&tcomm);
307a530d236SBarry Smith   *pcomm = MPI_Comm_c2f(tcomm);
308a530d236SBarry Smith }
309a530d236SBarry Smith 
310a530d236SBarry Smith PETSC_EXTERN void petscsubcommgetchild_(PetscSubcomm *scomm,MPI_Fint *ccomm, int *ierr)
311a530d236SBarry Smith {
312a530d236SBarry Smith   MPI_Comm tcomm;
313a530d236SBarry Smith   *ierr = PetscSubcommGetChild(*scomm,&tcomm);
314a530d236SBarry Smith   *ccomm = MPI_Comm_c2f(tcomm);
315a530d236SBarry Smith }
316a530d236SBarry Smith 
317a530d236SBarry Smith PETSC_EXTERN void petscsubcommview_(PetscSubcomm *psubcomm,PetscViewer *viewer, int *ierr)
318a530d236SBarry Smith {
319a530d236SBarry Smith   PetscViewer v;
320a530d236SBarry Smith   PetscPatchDefaultViewers_Fortran(viewer,v);
321a530d236SBarry Smith   *ierr = PetscSubcommView(*psubcomm,v);
322a530d236SBarry Smith }
323