xref: /petsc/src/sys/objects/ftn-custom/zoptionsf.c (revision 5975b3b6e3931510e2a64a701673cbe1930c6f42)
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
18b0c0aa2bSBlaise 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
26b0c0aa2bSBlaise 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
44b0c0aa2bSBlaise 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
51b0c0aa2bSBlaise 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);
71*5975b3b6SBarry Smith   *ierr = PetscOptionsInsertString(*options, c1);
72*5975b3b6SBarry Smith   if (*ierr) return;
73ab66e762SBarry Smith   FREECHAR(file, c1);
74ab66e762SBarry Smith }
75ab66e762SBarry Smith 
7619caf8f3SSatish Balay PETSC_EXTERN void petscoptionsinsertfile_(MPI_Fint *comm, PetscOptions *options, char *file, PetscBool *require, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
779306f9a3SSatish Balay {
789306f9a3SSatish Balay   char *c1;
799306f9a3SSatish Balay 
809306f9a3SSatish Balay   FIXCHAR(file, len, c1);
81*5975b3b6SBarry Smith   *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm), *options, c1, *require);
82*5975b3b6SBarry Smith   if (*ierr) return;
839306f9a3SSatish Balay   FREECHAR(file, c1);
849306f9a3SSatish Balay }
859306f9a3SSatish Balay 
86*5975b3b6SBarry Smith PETSC_EXTERN void petscoptionssetvalue_(PetscOptions *options, char *name, char *value, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1, PETSC_FORTRAN_CHARLEN_T len2)
879306f9a3SSatish Balay {
889306f9a3SSatish Balay   char *c1, *c2;
899306f9a3SSatish Balay 
909306f9a3SSatish Balay   FIXCHAR(name, len1, c1);
919306f9a3SSatish Balay   FIXCHAR(value, len2, c2);
92*5975b3b6SBarry Smith   *ierr = PetscOptionsSetValue(*options, c1, c2);
93*5975b3b6SBarry Smith   if (*ierr) return;
949306f9a3SSatish Balay   FREECHAR(name, c1);
959306f9a3SSatish Balay   FREECHAR(value, c2);
969306f9a3SSatish Balay }
979306f9a3SSatish Balay 
9819caf8f3SSatish Balay PETSC_EXTERN void petscoptionsclear_(PetscOptions *options, PetscErrorCode *ierr)
99a542b6e8SBarry Smith {
100c5929fdfSBarry Smith   *ierr = PetscOptionsClear(*options);
101a542b6e8SBarry Smith }
102a542b6e8SBarry Smith 
10319caf8f3SSatish Balay PETSC_EXTERN void petscoptionsclearvalue_(PetscOptions *options, char *name, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
1049306f9a3SSatish Balay {
1059306f9a3SSatish Balay   char *c1;
1069306f9a3SSatish Balay 
1079306f9a3SSatish Balay   FIXCHAR(name, len, c1);
108*5975b3b6SBarry Smith   *ierr = PetscOptionsClearValue(*options, c1);
109*5975b3b6SBarry Smith   if (*ierr) return;
1109306f9a3SSatish Balay   FREECHAR(name, c1);
1119306f9a3SSatish Balay }
1129306f9a3SSatish Balay 
113*5975b3b6SBarry Smith PETSC_EXTERN void petscoptionshasname_(PetscOptions *options, char *pre, char *name, PetscBool *flg, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1, PETSC_FORTRAN_CHARLEN_T len2)
1149306f9a3SSatish Balay {
1159306f9a3SSatish Balay   char *c1, *c2;
1169306f9a3SSatish Balay 
1179306f9a3SSatish Balay   FIXCHAR(pre, len1, c1);
1189306f9a3SSatish Balay   FIXCHAR(name, len2, c2);
119*5975b3b6SBarry Smith   *ierr = PetscOptionsHasName(*options, c1, c2, flg);
120*5975b3b6SBarry Smith   if (*ierr) return;
1219306f9a3SSatish Balay   FREECHAR(pre, c1);
1229306f9a3SSatish Balay   FREECHAR(name, c2);
1239306f9a3SSatish Balay }
1249306f9a3SSatish Balay 
125*5975b3b6SBarry Smith PETSC_EXTERN void petscoptionsgetint_(PetscOptions *opt, char *pre, char *name, PetscInt *ivalue, PetscBool *flg, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1, PETSC_FORTRAN_CHARLEN_T len2)
1269306f9a3SSatish Balay {
1279306f9a3SSatish Balay   char     *c1, *c2;
128ace3abfcSBarry Smith   PetscBool flag;
1299306f9a3SSatish Balay 
1309306f9a3SSatish Balay   FIXCHAR(pre, len1, c1);
1319306f9a3SSatish Balay   FIXCHAR(name, len2, c2);
132*5975b3b6SBarry Smith   *ierr = PetscOptionsGetInt(*opt, c1, c2, ivalue, &flag);
133*5975b3b6SBarry Smith   if (*ierr) return;
1345c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1359306f9a3SSatish Balay   FREECHAR(pre, c1);
1369306f9a3SSatish Balay   FREECHAR(name, c2);
1379306f9a3SSatish Balay }
1389306f9a3SSatish Balay 
139*5975b3b6SBarry Smith PETSC_EXTERN void petscoptionsgetenumprivate_(PetscOptions *options, char *pre, char *name, const char *const *list, PetscEnum *ivalue, PetscBool *flg, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1, PETSC_FORTRAN_CHARLEN_T len2)
14047340559SBarry Smith {
14147340559SBarry Smith   char     *c1, *c2;
14247340559SBarry Smith   PetscBool flag;
14347340559SBarry Smith 
14447340559SBarry Smith   FIXCHAR(pre, len1, c1);
14547340559SBarry Smith   FIXCHAR(name, len2, c2);
146*5975b3b6SBarry Smith   *ierr = PetscOptionsGetEnum(*options, c1, c2, list, ivalue, &flag);
147*5975b3b6SBarry Smith   if (*ierr) return;
14847340559SBarry Smith   if (!FORTRANNULLBOOL(flg)) *flg = flag;
14947340559SBarry Smith   FREECHAR(pre, c1);
15047340559SBarry Smith   FREECHAR(name, c2);
15147340559SBarry Smith }
15247340559SBarry Smith 
153*5975b3b6SBarry Smith PETSC_EXTERN void petscoptionsgetbool_(PetscOptions *options, char *pre, char *name, PetscBool *ivalue, PetscBool *flg, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1, PETSC_FORTRAN_CHARLEN_T 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);
160*5975b3b6SBarry Smith   *ierr = PetscOptionsGetBool(*options, c1, c2, ivalue, &flag);
161*5975b3b6SBarry Smith   if (*ierr) return;
1625c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1639306f9a3SSatish Balay   FREECHAR(pre, c1);
1649306f9a3SSatish Balay   FREECHAR(name, c2);
1659306f9a3SSatish Balay }
1669306f9a3SSatish Balay 
167*5975b3b6SBarry Smith PETSC_EXTERN void petscoptionsgetboolarray_(PetscOptions *options, char *pre, char *name, PetscBool *dvalue, PetscInt *nmax, PetscBool *flg, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1, PETSC_FORTRAN_CHARLEN_T len2)
168b0c0aa2bSBlaise Bourdin {
169b0c0aa2bSBlaise Bourdin   char     *c1, *c2;
170b0c0aa2bSBlaise Bourdin   PetscBool flag;
171b0c0aa2bSBlaise Bourdin 
172b0c0aa2bSBlaise Bourdin   FIXCHAR(pre, len1, c1);
173b0c0aa2bSBlaise Bourdin   FIXCHAR(name, len2, c2);
174*5975b3b6SBarry Smith   *ierr = PetscOptionsGetBoolArray(*options, c1, c2, dvalue, nmax, &flag);
175*5975b3b6SBarry Smith   if (*ierr) return;
176b0c0aa2bSBlaise Bourdin   if (!FORTRANNULLBOOL(flg)) *flg = flag;
177b0c0aa2bSBlaise Bourdin   FREECHAR(pre, c1);
178b0c0aa2bSBlaise Bourdin   FREECHAR(name, c2);
179b0c0aa2bSBlaise Bourdin }
180b0c0aa2bSBlaise Bourdin 
181*5975b3b6SBarry Smith PETSC_EXTERN void petscoptionsgetreal_(PetscOptions *options, char *pre, char *name, PetscReal *dvalue, PetscBool *flg, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1, PETSC_FORTRAN_CHARLEN_T len2)
1829306f9a3SSatish Balay {
1839306f9a3SSatish Balay   char     *c1, *c2;
184ace3abfcSBarry Smith   PetscBool flag;
1859306f9a3SSatish Balay 
1869306f9a3SSatish Balay   FIXCHAR(pre, len1, c1);
1879306f9a3SSatish Balay   FIXCHAR(name, len2, c2);
188*5975b3b6SBarry Smith   *ierr = PetscOptionsGetReal(*options, c1, c2, dvalue, &flag);
189*5975b3b6SBarry Smith   if (*ierr) return;
1905c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
1919306f9a3SSatish Balay   FREECHAR(pre, c1);
1929306f9a3SSatish Balay   FREECHAR(name, c2);
1939306f9a3SSatish Balay }
1949306f9a3SSatish Balay 
195*5975b3b6SBarry Smith PETSC_EXTERN void petscoptionsgetscalar_(PetscOptions *options, char *pre, char *name, PetscScalar *dvalue, PetscBool *flg, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1, PETSC_FORTRAN_CHARLEN_T len2)
1967a7a6802SBarry Smith {
1977a7a6802SBarry Smith   char     *c1, *c2;
1987a7a6802SBarry Smith   PetscBool flag;
1997a7a6802SBarry Smith 
2007a7a6802SBarry Smith   FIXCHAR(pre, len1, c1);
2017a7a6802SBarry Smith   FIXCHAR(name, len2, c2);
202*5975b3b6SBarry Smith   *ierr = PetscOptionsGetScalar(*options, c1, c2, dvalue, &flag);
203*5975b3b6SBarry Smith   if (*ierr) return;
2047a7a6802SBarry Smith   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2057a7a6802SBarry Smith   FREECHAR(pre, c1);
2067a7a6802SBarry Smith   FREECHAR(name, c2);
2077a7a6802SBarry Smith }
2087a7a6802SBarry Smith 
209*5975b3b6SBarry Smith PETSC_EXTERN void petscoptionsgetscalararray_(PetscOptions *options, char *pre, char *name, PetscScalar *dvalue, PetscInt *nmax, PetscBool *flg, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1, PETSC_FORTRAN_CHARLEN_T len2)
210b0c0aa2bSBlaise Bourdin {
211b0c0aa2bSBlaise Bourdin   char     *c1, *c2;
212b0c0aa2bSBlaise Bourdin   PetscBool flag;
213b0c0aa2bSBlaise Bourdin 
214b0c0aa2bSBlaise Bourdin   FIXCHAR(pre, len1, c1);
215b0c0aa2bSBlaise Bourdin   FIXCHAR(name, len2, c2);
216*5975b3b6SBarry Smith   *ierr = PetscOptionsGetScalarArray(*options, c1, c2, dvalue, nmax, &flag);
217*5975b3b6SBarry Smith   if (*ierr) return;
218b0c0aa2bSBlaise Bourdin   if (!FORTRANNULLBOOL(flg)) *flg = flag;
219b0c0aa2bSBlaise Bourdin   FREECHAR(pre, c1);
220b0c0aa2bSBlaise Bourdin   FREECHAR(name, c2);
221b0c0aa2bSBlaise Bourdin }
222b0c0aa2bSBlaise Bourdin 
223*5975b3b6SBarry Smith PETSC_EXTERN void petscoptionsgetrealarray_(PetscOptions *options, char *pre, char *name, PetscReal *dvalue, PetscInt *nmax, PetscBool *flg, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1, PETSC_FORTRAN_CHARLEN_T len2)
2249306f9a3SSatish Balay {
2259306f9a3SSatish Balay   char     *c1, *c2;
226ace3abfcSBarry Smith   PetscBool flag;
2279306f9a3SSatish Balay 
2289306f9a3SSatish Balay   FIXCHAR(pre, len1, c1);
2299306f9a3SSatish Balay   FIXCHAR(name, len2, c2);
230*5975b3b6SBarry Smith   *ierr = PetscOptionsGetRealArray(*options, c1, c2, dvalue, nmax, &flag);
231*5975b3b6SBarry Smith   if (*ierr) return;
2325c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2339306f9a3SSatish Balay   FREECHAR(pre, c1);
2349306f9a3SSatish Balay   FREECHAR(name, c2);
2359306f9a3SSatish Balay }
2369306f9a3SSatish Balay 
237*5975b3b6SBarry Smith PETSC_EXTERN void petscoptionsgetintarray_(PetscOptions *options, char *pre, char *name, PetscInt *dvalue, PetscInt *nmax, PetscBool *flg, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1, PETSC_FORTRAN_CHARLEN_T len2)
2389306f9a3SSatish Balay {
2399306f9a3SSatish Balay   char     *c1, *c2;
240ace3abfcSBarry Smith   PetscBool flag;
2419306f9a3SSatish Balay 
2429306f9a3SSatish Balay   FIXCHAR(pre, len1, c1);
2439306f9a3SSatish Balay   FIXCHAR(name, len2, c2);
244*5975b3b6SBarry Smith   *ierr = PetscOptionsGetIntArray(*options, c1, c2, dvalue, nmax, &flag);
245*5975b3b6SBarry Smith   if (*ierr) return;
2465c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2479306f9a3SSatish Balay   FREECHAR(pre, c1);
2489306f9a3SSatish Balay   FREECHAR(name, c2);
2499306f9a3SSatish Balay }
2509306f9a3SSatish Balay 
251*5975b3b6SBarry Smith PETSC_EXTERN void petscoptionsgetstring_(PetscOptions *options, char *pre, char *name, char *string, PetscBool *flg, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1, PETSC_FORTRAN_CHARLEN_T len2, PETSC_FORTRAN_CHARLEN_T len)
2529306f9a3SSatish Balay {
2539306f9a3SSatish Balay   char     *c1, *c2, *c3;
2544610e317SSatish Balay   size_t    len3;
255ace3abfcSBarry Smith   PetscBool flag;
2569306f9a3SSatish Balay 
2579306f9a3SSatish Balay   FIXCHAR(pre, len1, c1);
2589306f9a3SSatish Balay   FIXCHAR(name, len2, c2);
2599306f9a3SSatish Balay   c3   = string;
2609306f9a3SSatish Balay   len3 = len - 1;
2619306f9a3SSatish Balay 
262*5975b3b6SBarry Smith   *ierr = PetscOptionsGetString(*options, c1, c2, c3, len3, &flag);
263*5975b3b6SBarry Smith   if (*ierr) return;
2645c550465SJed Brown   if (!FORTRANNULLBOOL(flg)) *flg = flag;
2659306f9a3SSatish Balay   FREECHAR(pre, c1);
2669306f9a3SSatish Balay   FREECHAR(name, c2);
2677c363081SBarry Smith   FIXRETURNCHAR(flag, string, len);
2689306f9a3SSatish Balay }
2699306f9a3SSatish Balay 
27019caf8f3SSatish Balay PETSC_EXTERN void petscgetprogramname_(char *name, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len_in)
2719306f9a3SSatish Balay {
2729306f9a3SSatish Balay   char  *tmp;
2734610e317SSatish Balay   size_t len;
2749306f9a3SSatish Balay   tmp   = name;
2759306f9a3SSatish Balay   len   = len_in - 1;
2769306f9a3SSatish Balay   *ierr = PetscGetProgramName(tmp, len);
2777c363081SBarry Smith   FIXRETURNCHAR(PETSC_TRUE, name, len_in);
2789306f9a3SSatish Balay }
2799306f9a3SSatish Balay 
28019caf8f3SSatish Balay PETSC_EXTERN void petscoptionsview_(PetscOptions *options, PetscViewer *vin, PetscErrorCode *ierr)
2813a15af8cSBlaise Bourdin {
2823a15af8cSBlaise Bourdin   PetscViewer v;
2833a15af8cSBlaise Bourdin 
2843a15af8cSBlaise Bourdin   PetscPatchDefaultViewers_Fortran(vin, v);
285c5929fdfSBarry Smith   *ierr = PetscOptionsView(*options, v);
2863a15af8cSBlaise Bourdin }
2873a15af8cSBlaise Bourdin 
28819caf8f3SSatish Balay PETSC_EXTERN void petscobjectviewfromoptions_(PetscObject *obj, PetscObject *bobj, char *option, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T loption)
289a2865142SMatthew G. Knepley {
290685405a1SBarry Smith   char *o;
291a2865142SMatthew G. Knepley 
292a2865142SMatthew G. Knepley   FIXCHAR(option, loption, o);
293b14c0cbaSBlaise Bourdin   CHKFORTRANNULLOBJECT(obj);
294*5975b3b6SBarry Smith   *ierr = PetscObjectViewFromOptions(*obj, *bobj, o);
295*5975b3b6SBarry Smith   if (*ierr) return;
296a2865142SMatthew G. Knepley   FREECHAR(option, o);
297a2865142SMatthew G. Knepley }
298a530d236SBarry Smith 
299a530d236SBarry Smith PETSC_EXTERN void petscsubcommgetparent_(PetscSubcomm *scomm, MPI_Fint *pcomm, int *ierr)
300a530d236SBarry Smith {
301a530d236SBarry Smith   MPI_Comm tcomm;
302a530d236SBarry Smith   *ierr  = PetscSubcommGetParent(*scomm, &tcomm);
303a530d236SBarry Smith   *pcomm = MPI_Comm_c2f(tcomm);
304a530d236SBarry Smith }
305a530d236SBarry Smith 
306a530d236SBarry Smith PETSC_EXTERN void petscsubcommgetcontiguousparent_(PetscSubcomm *scomm, MPI_Fint *pcomm, int *ierr)
307a530d236SBarry Smith {
308a530d236SBarry Smith   MPI_Comm tcomm;
309a530d236SBarry Smith   *ierr  = PetscSubcommGetContiguousParent(*scomm, &tcomm);
310a530d236SBarry Smith   *pcomm = MPI_Comm_c2f(tcomm);
311a530d236SBarry Smith }
312a530d236SBarry Smith 
313a530d236SBarry Smith PETSC_EXTERN void petscsubcommgetchild_(PetscSubcomm *scomm, MPI_Fint *ccomm, int *ierr)
314a530d236SBarry Smith {
315a530d236SBarry Smith   MPI_Comm tcomm;
316a530d236SBarry Smith   *ierr  = PetscSubcommGetChild(*scomm, &tcomm);
317a530d236SBarry Smith   *ccomm = MPI_Comm_c2f(tcomm);
318a530d236SBarry Smith }
319a530d236SBarry Smith 
320a530d236SBarry Smith PETSC_EXTERN void petscsubcommview_(PetscSubcomm *psubcomm, PetscViewer *viewer, int *ierr)
321a530d236SBarry Smith {
322a530d236SBarry Smith   PetscViewer v;
323a530d236SBarry Smith   PetscPatchDefaultViewers_Fortran(viewer, v);
324a530d236SBarry Smith   *ierr = PetscSubcommView(*psubcomm, v);
325a530d236SBarry Smith }
326