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
76dd63270SBarry Smith #include <petsc/private/ftnimpl.h>
8665c2dedSJed Brown #include <petscviewer.h>
99306f9a3SSatish Balay
10519f805aSKarl Rupp #if defined(PETSC_HAVE_FORTRAN_CAPS)
114bb2516aSBarry Smith #define petscoptionsbegin_ PETSCOPTIONSBEGIN
124bb2516aSBarry Smith #define petscoptionsend_ PETSCOPTIONSEND
134bb2516aSBarry Smith #define petscoptionsbool_ PETSCOPTIONSBOOL
14*4d81f786SBarry Smith #define petscoptionsbool3_ PETSCOPTIONSBOOL3
154bb2516aSBarry Smith #define petscoptionsboolarray_ PETSCOPTIONSBOOLARRAY
164bb2516aSBarry Smith #define petscoptionsenumprivate_ PETSCOPTIONSENUMPRIVATE
174bb2516aSBarry Smith #define petscoptionsint_ PETSCOPTIONSINT
184bb2516aSBarry Smith #define petscoptionsintarray_ PETSCOPTIONSINTARRAY
194bb2516aSBarry Smith #define petscoptionsreal_ PETSCOPTIONSREAL
204bb2516aSBarry Smith #define petscoptionsrealarray_ PETSCOPTIONSREALARRAY
214bb2516aSBarry Smith #define petscoptionsscalar_ PETSCOPTIONSSCALAR
224bb2516aSBarry Smith #define petscoptionsscalararray_ PETSCOPTIONSSCALARARRAY
23c0eeb270SSatish Balay #define petscoptionsstring_ PETSCOPTIONSSTRING
24a530d236SBarry Smith #define petscsubcommgetparent_ PETSCSUBCOMMGETPARENT
25a530d236SBarry Smith #define petscsubcommgetcontiguousparent_ PETSCSUBCOMMGETCONTIGUOUSPARENT
26a530d236SBarry Smith #define petscsubcommgetchild_ PETSCSUBCOMMGETCHILD
27455a3cf9SBarry Smith #define petscoptionsallused_ PETSCOPTIONSALLUSED
2847340559SBarry Smith #define petscoptionsgetenumprivate_ PETSCOPTIONSGETENUMPRIVATE
299306f9a3SSatish Balay #define petscoptionsgetstring_ PETSCOPTIONSGETSTRING
309306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
314bb2516aSBarry Smith #define petscoptionsbegin_ petscoptionsbegin
324bb2516aSBarry Smith #define petscoptionsend_ petscoptionsend
334bb2516aSBarry Smith #define petscoptionsbool_ petscoptionsbool
34*4d81f786SBarry Smith #define petscoptionsbool3_ petscoptionsbool3
354bb2516aSBarry Smith #define petscoptionsboolarray_ petscoptionsboolarray
3647582d61SSatish Balay #define petscoptionsenumprivate_ petscoptionsenumprivate
374bb2516aSBarry Smith #define petscoptionsint_ petscoptionsint
384bb2516aSBarry Smith #define petscoptionsintarray_ petscoptionsintarray
394bb2516aSBarry Smith #define petscoptionsreal_ petscoptionsreal
404bb2516aSBarry Smith #define petscoptionsrealarray_ petscoptionsrealarray
414bb2516aSBarry Smith #define petscoptionsscalar_ petscoptionsscalar
424bb2516aSBarry Smith #define petscoptionsscalararray_ petscoptionsscalararray
434bb2516aSBarry Smith #define petscoptionsstring_ petscoptionsstring
44a530d236SBarry Smith #define petscsubcommgetparent_ petscsubcommgetparent
45a530d236SBarry Smith #define petscsubcommgetcontiguousparent_ petscsubcommgetcontiguousparent
46a530d236SBarry Smith #define petscsubcommgetchild_ petscsubcommgetchild
47455a3cf9SBarry Smith #define petscoptionsallused_ petscoptionsallused
4847340559SBarry Smith #define petscoptionsgetenumprivate_ petscoptionsgetenumprivate
499306f9a3SSatish Balay #define petscoptionsgetstring_ petscoptionsgetstring
509306f9a3SSatish Balay #endif
519306f9a3SSatish Balay
52ce78bad3SBarry Smith static struct _n_PetscOptionItems PetscOptionsObjectBase;
53ce78bad3SBarry Smith static PetscOptionItems PetscOptionsObject = NULL;
544bb2516aSBarry Smith
petscoptionsbegin_(MPI_Fint * fcomm,char * prefix,char * mess,char * sec,PetscErrorCode * ierr,PETSC_FORTRAN_CHARLEN_T lenprefix,PETSC_FORTRAN_CHARLEN_T lenmess,PETSC_FORTRAN_CHARLEN_T lensec)554bb2516aSBarry Smith PETSC_EXTERN void petscoptionsbegin_(MPI_Fint *fcomm, char *prefix, char *mess, char *sec, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T lenprefix, PETSC_FORTRAN_CHARLEN_T lenmess, PETSC_FORTRAN_CHARLEN_T lensec)
564bb2516aSBarry Smith {
574bb2516aSBarry Smith MPI_Comm comm = MPI_Comm_f2c(*fcomm);
584bb2516aSBarry Smith char *cprefix, *cmess, *csec;
594bb2516aSBarry Smith
604bb2516aSBarry Smith FIXCHAR(prefix, lenprefix, cprefix);
614bb2516aSBarry Smith FIXCHAR(mess, lenmess, cmess);
624bb2516aSBarry Smith FIXCHAR(sec, lensec, csec);
634bb2516aSBarry Smith if (PetscOptionsObject) {
644bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE;
654bb2516aSBarry Smith return;
664bb2516aSBarry Smith }
674bb2516aSBarry Smith PetscOptionsObject = &PetscOptionsObjectBase;
684bb2516aSBarry Smith *ierr = PetscMemzero(PetscOptionsObject, sizeof(*PetscOptionsObject));
694bb2516aSBarry Smith if (*ierr) return;
704bb2516aSBarry Smith PetscOptionsObject->count = 1;
714bb2516aSBarry Smith *ierr = PetscOptionsBegin_Private(PetscOptionsObject, comm, cprefix, cmess, csec);
724bb2516aSBarry Smith if (*ierr) return;
734bb2516aSBarry Smith FREECHAR(prefix, cprefix);
744bb2516aSBarry Smith FREECHAR(mess, cmess);
754bb2516aSBarry Smith FREECHAR(sec, csec);
764bb2516aSBarry Smith }
774bb2516aSBarry Smith
petscoptionsend_(PetscErrorCode * ierr)784bb2516aSBarry Smith PETSC_EXTERN void petscoptionsend_(PetscErrorCode *ierr)
794bb2516aSBarry Smith {
804bb2516aSBarry Smith if (!PetscOptionsObject) {
814bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE;
824bb2516aSBarry Smith return;
834bb2516aSBarry Smith }
844bb2516aSBarry Smith PetscOptionsObject->count = 1;
854bb2516aSBarry Smith *ierr = PetscOptionsEnd_Private(PetscOptionsObject);
864bb2516aSBarry Smith PetscOptionsObject = NULL;
874bb2516aSBarry Smith }
884bb2516aSBarry Smith
petscoptionsbool_(char * opt,char * text,char * man,PetscBool * currentvalue,PetscBool * value,PetscBool * set,PetscErrorCode * ierr,PETSC_FORTRAN_CHARLEN_T lenopt,PETSC_FORTRAN_CHARLEN_T lentext,PETSC_FORTRAN_CHARLEN_T lenman)894bb2516aSBarry Smith PETSC_EXTERN void petscoptionsbool_(char *opt, char *text, char *man, PetscBool *currentvalue, PetscBool *value, PetscBool *set, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T lenopt, PETSC_FORTRAN_CHARLEN_T lentext, PETSC_FORTRAN_CHARLEN_T lenman)
904bb2516aSBarry Smith {
914bb2516aSBarry Smith char *copt, *ctext, *cman;
924bb2516aSBarry Smith
934bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt);
944bb2516aSBarry Smith FIXCHAR(text, lentext, ctext);
954bb2516aSBarry Smith FIXCHAR(man, lenman, cman);
964bb2516aSBarry Smith if (!PetscOptionsObject) {
974bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE;
984bb2516aSBarry Smith return;
994bb2516aSBarry Smith }
1004bb2516aSBarry Smith PetscOptionsObject->count = 1;
1014bb2516aSBarry Smith *ierr = PetscOptionsBool_Private(PetscOptionsObject, copt, ctext, cman, *currentvalue, value, set);
1024bb2516aSBarry Smith if (*ierr) return;
1034bb2516aSBarry Smith FREECHAR(opt, copt);
1044bb2516aSBarry Smith FREECHAR(text, ctext);
1054bb2516aSBarry Smith FREECHAR(man, cman);
1064bb2516aSBarry Smith }
1074bb2516aSBarry Smith
petscoptionsbool3_(char * opt,char * text,char * man,PetscBool3 * currentvalue,PetscBool3 * value,PetscBool * set,PetscErrorCode * ierr,PETSC_FORTRAN_CHARLEN_T lenopt,PETSC_FORTRAN_CHARLEN_T lentext,PETSC_FORTRAN_CHARLEN_T lenman)108*4d81f786SBarry Smith PETSC_EXTERN void petscoptionsbool3_(char *opt, char *text, char *man, PetscBool3 *currentvalue, PetscBool3 *value, PetscBool *set, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T lenopt, PETSC_FORTRAN_CHARLEN_T lentext, PETSC_FORTRAN_CHARLEN_T lenman)
109*4d81f786SBarry Smith {
110*4d81f786SBarry Smith char *copt, *ctext, *cman;
111*4d81f786SBarry Smith
112*4d81f786SBarry Smith FIXCHAR(opt, lenopt, copt);
113*4d81f786SBarry Smith FIXCHAR(text, lentext, ctext);
114*4d81f786SBarry Smith FIXCHAR(man, lenman, cman);
115*4d81f786SBarry Smith if (!PetscOptionsObject) {
116*4d81f786SBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE;
117*4d81f786SBarry Smith return;
118*4d81f786SBarry Smith }
119*4d81f786SBarry Smith PetscOptionsObject->count = 1;
120*4d81f786SBarry Smith *ierr = PetscOptionsBool3_Private(PetscOptionsObject, copt, ctext, cman, *currentvalue, value, set);
121*4d81f786SBarry Smith if (*ierr) return;
122*4d81f786SBarry Smith FREECHAR(opt, copt);
123*4d81f786SBarry Smith FREECHAR(text, ctext);
124*4d81f786SBarry Smith FREECHAR(man, cman);
125*4d81f786SBarry Smith }
126*4d81f786SBarry Smith
petscoptionsboolarray_(char * opt,char * text,char * man,PetscBool * dvalue,PetscInt * nmax,PetscBool * flg,PetscErrorCode * ierr,PETSC_FORTRAN_CHARLEN_T lenopt,PETSC_FORTRAN_CHARLEN_T lentext,PETSC_FORTRAN_CHARLEN_T lenman)1274bb2516aSBarry Smith PETSC_EXTERN void petscoptionsboolarray_(char *opt, char *text, char *man, PetscBool *dvalue, PetscInt *nmax, PetscBool *flg, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T lenopt, PETSC_FORTRAN_CHARLEN_T lentext, PETSC_FORTRAN_CHARLEN_T lenman)
1284bb2516aSBarry Smith {
1294bb2516aSBarry Smith char *copt, *ctext, *cman;
1304bb2516aSBarry Smith PetscBool flag;
1314bb2516aSBarry Smith
1324bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt);
1334bb2516aSBarry Smith FIXCHAR(text, lentext, ctext);
1344bb2516aSBarry Smith FIXCHAR(man, lenman, cman);
1354bb2516aSBarry Smith if (!PetscOptionsObject) {
1364bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE;
1374bb2516aSBarry Smith return;
1384bb2516aSBarry Smith }
1394bb2516aSBarry Smith PetscOptionsObject->count = 1;
1404bb2516aSBarry Smith *ierr = PetscOptionsBoolArray_Private(PetscOptionsObject, copt, ctext, cman, dvalue, nmax, &flag);
1414bb2516aSBarry Smith if (*ierr) return;
1424bb2516aSBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag;
1434bb2516aSBarry Smith FREECHAR(opt, copt);
1444bb2516aSBarry Smith FREECHAR(text, ctext);
1454bb2516aSBarry Smith FREECHAR(man, cman);
1464bb2516aSBarry Smith }
1474bb2516aSBarry Smith
petscoptionsenumprivate_(char * opt,char * text,char * man,const char * const * list,PetscEnum * currentvalue,PetscEnum * ivalue,PetscBool * flg,PetscErrorCode * ierr,PETSC_FORTRAN_CHARLEN_T lenopt,PETSC_FORTRAN_CHARLEN_T lentext,PETSC_FORTRAN_CHARLEN_T lenman)1484bb2516aSBarry Smith PETSC_EXTERN void petscoptionsenumprivate_(char *opt, char *text, char *man, const char *const *list, PetscEnum *currentvalue, PetscEnum *ivalue, PetscBool *flg, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T lenopt, PETSC_FORTRAN_CHARLEN_T lentext, PETSC_FORTRAN_CHARLEN_T lenman)
1494bb2516aSBarry Smith {
1504bb2516aSBarry Smith char *copt, *ctext, *cman;
1514bb2516aSBarry Smith PetscBool flag;
1524bb2516aSBarry Smith
1534bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt);
1544bb2516aSBarry Smith FIXCHAR(text, lentext, ctext);
1554bb2516aSBarry Smith FIXCHAR(man, lenman, cman);
1564bb2516aSBarry Smith if (!PetscOptionsObject) {
1574bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE;
1584bb2516aSBarry Smith return;
1594bb2516aSBarry Smith }
1604bb2516aSBarry Smith PetscOptionsObject->count = 1;
1614bb2516aSBarry Smith *ierr = PetscOptionsEnum_Private(PetscOptionsObject, copt, ctext, cman, list, *currentvalue, ivalue, &flag);
1624bb2516aSBarry Smith if (*ierr) return;
1634bb2516aSBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag;
1644bb2516aSBarry Smith FREECHAR(opt, copt);
1654bb2516aSBarry Smith FREECHAR(text, ctext);
1664bb2516aSBarry Smith FREECHAR(man, cman);
1674bb2516aSBarry Smith }
1684bb2516aSBarry Smith
petscoptionsint_(char * opt,char * text,char * man,PetscInt * currentvalue,PetscInt * value,PetscBool * set,PetscErrorCode * ierr,PETSC_FORTRAN_CHARLEN_T lenopt,PETSC_FORTRAN_CHARLEN_T lentext,PETSC_FORTRAN_CHARLEN_T lenman)1694bb2516aSBarry Smith PETSC_EXTERN void petscoptionsint_(char *opt, char *text, char *man, PetscInt *currentvalue, PetscInt *value, PetscBool *set, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T lenopt, PETSC_FORTRAN_CHARLEN_T lentext, PETSC_FORTRAN_CHARLEN_T lenman)
1704bb2516aSBarry Smith {
1714bb2516aSBarry Smith char *copt, *ctext, *cman;
1724bb2516aSBarry Smith
1734bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt);
1744bb2516aSBarry Smith FIXCHAR(text, lentext, ctext);
1754bb2516aSBarry Smith FIXCHAR(man, lenman, cman);
1764bb2516aSBarry Smith if (!PetscOptionsObject) {
1774bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE;
1784bb2516aSBarry Smith return;
1794bb2516aSBarry Smith }
1804bb2516aSBarry Smith PetscOptionsObject->count = 1;
1811690c2aeSBarry Smith *ierr = PetscOptionsInt_Private(PetscOptionsObject, copt, ctext, cman, *currentvalue, value, set, PETSC_INT_MIN, PETSC_INT_MAX);
1824bb2516aSBarry Smith if (*ierr) return;
1834bb2516aSBarry Smith FREECHAR(opt, copt);
1844bb2516aSBarry Smith FREECHAR(text, ctext);
1854bb2516aSBarry Smith FREECHAR(man, cman);
1864bb2516aSBarry Smith }
1874bb2516aSBarry Smith
petscoptionsintarray_(char * opt,char * text,char * man,PetscInt * currentvalue,PetscInt * n,PetscBool * set,PetscErrorCode * ierr,PETSC_FORTRAN_CHARLEN_T lenopt,PETSC_FORTRAN_CHARLEN_T lentext,PETSC_FORTRAN_CHARLEN_T lenman)1884bb2516aSBarry Smith PETSC_EXTERN void petscoptionsintarray_(char *opt, char *text, char *man, PetscInt *currentvalue, PetscInt *n, PetscBool *set, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T lenopt, PETSC_FORTRAN_CHARLEN_T lentext, PETSC_FORTRAN_CHARLEN_T lenman)
1894bb2516aSBarry Smith {
1904bb2516aSBarry Smith char *copt, *ctext, *cman;
1914bb2516aSBarry Smith
1924bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt);
1934bb2516aSBarry Smith FIXCHAR(text, lentext, ctext);
1944bb2516aSBarry Smith FIXCHAR(man, lenman, cman);
1954bb2516aSBarry Smith if (!PetscOptionsObject) {
1964bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE;
1974bb2516aSBarry Smith return;
1984bb2516aSBarry Smith }
1994bb2516aSBarry Smith PetscOptionsObject->count = 1;
2004bb2516aSBarry Smith *ierr = PetscOptionsIntArray_Private(PetscOptionsObject, copt, ctext, cman, currentvalue, n, set);
2014bb2516aSBarry Smith if (*ierr) return;
2024bb2516aSBarry Smith FREECHAR(opt, copt);
2034bb2516aSBarry Smith FREECHAR(text, ctext);
2044bb2516aSBarry Smith FREECHAR(man, cman);
2054bb2516aSBarry Smith }
2064bb2516aSBarry Smith
petscoptionsreal_(char * opt,char * text,char * man,PetscReal * currentvalue,PetscReal * value,PetscBool * set,PetscErrorCode * ierr,PETSC_FORTRAN_CHARLEN_T lenopt,PETSC_FORTRAN_CHARLEN_T lentext,PETSC_FORTRAN_CHARLEN_T lenman)2074bb2516aSBarry Smith PETSC_EXTERN void petscoptionsreal_(char *opt, char *text, char *man, PetscReal *currentvalue, PetscReal *value, PetscBool *set, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T lenopt, PETSC_FORTRAN_CHARLEN_T lentext, PETSC_FORTRAN_CHARLEN_T lenman)
2084bb2516aSBarry Smith {
2094bb2516aSBarry Smith char *copt, *ctext, *cman;
2104bb2516aSBarry Smith
2114bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt);
2124bb2516aSBarry Smith FIXCHAR(text, lentext, ctext);
2134bb2516aSBarry Smith FIXCHAR(man, lenman, cman);
2144bb2516aSBarry Smith if (!PetscOptionsObject) {
2154bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE;
2164bb2516aSBarry Smith return;
2174bb2516aSBarry Smith }
2184bb2516aSBarry Smith PetscOptionsObject->count = 1;
21952ce0ab5SPierre Jolivet *ierr = PetscOptionsReal_Private(PetscOptionsObject, copt, ctext, cman, *currentvalue, value, set, PETSC_MIN_REAL, PETSC_MAX_REAL);
2204bb2516aSBarry Smith if (*ierr) return;
2214bb2516aSBarry Smith FREECHAR(opt, copt);
2224bb2516aSBarry Smith FREECHAR(text, ctext);
2234bb2516aSBarry Smith FREECHAR(man, cman);
2244bb2516aSBarry Smith }
2254bb2516aSBarry Smith
petscoptionsrealarray_(char * opt,char * text,char * man,PetscReal * currentvalue,PetscInt * n,PetscBool * set,PetscErrorCode * ierr,PETSC_FORTRAN_CHARLEN_T lenopt,PETSC_FORTRAN_CHARLEN_T lentext,PETSC_FORTRAN_CHARLEN_T lenman)2264bb2516aSBarry Smith PETSC_EXTERN void petscoptionsrealarray_(char *opt, char *text, char *man, PetscReal *currentvalue, PetscInt *n, PetscBool *set, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T lenopt, PETSC_FORTRAN_CHARLEN_T lentext, PETSC_FORTRAN_CHARLEN_T lenman)
2274bb2516aSBarry Smith {
2284bb2516aSBarry Smith char *copt, *ctext, *cman;
2294bb2516aSBarry Smith
2304bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt);
2314bb2516aSBarry Smith FIXCHAR(text, lentext, ctext);
2324bb2516aSBarry Smith FIXCHAR(man, lenman, cman);
2334bb2516aSBarry Smith if (!PetscOptionsObject) {
2344bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE;
2354bb2516aSBarry Smith return;
2364bb2516aSBarry Smith }
2374bb2516aSBarry Smith PetscOptionsObject->count = 1;
2384bb2516aSBarry Smith *ierr = PetscOptionsRealArray_Private(PetscOptionsObject, copt, ctext, cman, currentvalue, n, set);
2394bb2516aSBarry Smith if (*ierr) return;
2404bb2516aSBarry Smith FREECHAR(opt, copt);
2414bb2516aSBarry Smith FREECHAR(text, ctext);
2424bb2516aSBarry Smith FREECHAR(man, cman);
2434bb2516aSBarry Smith }
2444bb2516aSBarry Smith
petscoptionsscalar_(char * opt,char * text,char * man,PetscScalar * currentvalue,PetscScalar * value,PetscBool * set,PetscErrorCode * ierr,PETSC_FORTRAN_CHARLEN_T lenopt,PETSC_FORTRAN_CHARLEN_T lentext,PETSC_FORTRAN_CHARLEN_T lenman)2454bb2516aSBarry Smith PETSC_EXTERN void petscoptionsscalar_(char *opt, char *text, char *man, PetscScalar *currentvalue, PetscScalar *value, PetscBool *set, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T lenopt, PETSC_FORTRAN_CHARLEN_T lentext, PETSC_FORTRAN_CHARLEN_T lenman)
2464bb2516aSBarry Smith {
2474bb2516aSBarry Smith char *copt, *ctext, *cman;
2484bb2516aSBarry Smith
2494bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt);
2504bb2516aSBarry Smith FIXCHAR(text, lentext, ctext);
2514bb2516aSBarry Smith FIXCHAR(man, lenman, cman);
2524bb2516aSBarry Smith if (!PetscOptionsObject) {
2534bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE;
2544bb2516aSBarry Smith return;
2554bb2516aSBarry Smith }
2564bb2516aSBarry Smith PetscOptionsObject->count = 1;
2574bb2516aSBarry Smith *ierr = PetscOptionsScalar_Private(PetscOptionsObject, copt, ctext, cman, *currentvalue, value, set);
2584bb2516aSBarry Smith if (*ierr) return;
2594bb2516aSBarry Smith FREECHAR(opt, copt);
2604bb2516aSBarry Smith FREECHAR(text, ctext);
2614bb2516aSBarry Smith FREECHAR(man, cman);
2624bb2516aSBarry Smith }
2634bb2516aSBarry Smith
petscoptionsscalararray_(char * opt,char * text,char * man,PetscScalar * currentvalue,PetscInt * n,PetscBool * set,PetscErrorCode * ierr,PETSC_FORTRAN_CHARLEN_T lenopt,PETSC_FORTRAN_CHARLEN_T lentext,PETSC_FORTRAN_CHARLEN_T lenman)2644bb2516aSBarry Smith PETSC_EXTERN void petscoptionsscalararray_(char *opt, char *text, char *man, PetscScalar *currentvalue, PetscInt *n, PetscBool *set, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T lenopt, PETSC_FORTRAN_CHARLEN_T lentext, PETSC_FORTRAN_CHARLEN_T lenman)
2654bb2516aSBarry Smith {
2664bb2516aSBarry Smith char *copt, *ctext, *cman;
2674bb2516aSBarry Smith
2684bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt);
2694bb2516aSBarry Smith FIXCHAR(text, lentext, ctext);
2704bb2516aSBarry Smith FIXCHAR(man, lenman, cman);
2714bb2516aSBarry Smith if (!PetscOptionsObject) {
2724bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE;
2734bb2516aSBarry Smith return;
2744bb2516aSBarry Smith }
2754bb2516aSBarry Smith PetscOptionsObject->count = 1;
2764bb2516aSBarry Smith *ierr = PetscOptionsScalarArray_Private(PetscOptionsObject, copt, ctext, cman, currentvalue, n, set);
2774bb2516aSBarry Smith if (*ierr) return;
2784bb2516aSBarry Smith FREECHAR(opt, copt);
2794bb2516aSBarry Smith FREECHAR(text, ctext);
2804bb2516aSBarry Smith FREECHAR(man, cman);
2814bb2516aSBarry Smith }
2824bb2516aSBarry Smith
petscoptionsstring_(char * opt,char * text,char * man,char * currentvalue,char * value,PetscBool * flg,PetscErrorCode * ierr,PETSC_FORTRAN_CHARLEN_T lenopt,PETSC_FORTRAN_CHARLEN_T lentext,PETSC_FORTRAN_CHARLEN_T lenman,PETSC_FORTRAN_CHARLEN_T lencurrent,PETSC_FORTRAN_CHARLEN_T lenvalue)2834bb2516aSBarry Smith PETSC_EXTERN void petscoptionsstring_(char *opt, char *text, char *man, char *currentvalue, char *value, PetscBool *flg, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T lenopt, PETSC_FORTRAN_CHARLEN_T lentext, PETSC_FORTRAN_CHARLEN_T lenman, PETSC_FORTRAN_CHARLEN_T lencurrent, PETSC_FORTRAN_CHARLEN_T lenvalue)
2844bb2516aSBarry Smith {
2854bb2516aSBarry Smith char *copt, *ctext, *cman, *ccurrent;
2864bb2516aSBarry Smith PetscBool flag;
2874bb2516aSBarry Smith
2884bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt);
2894bb2516aSBarry Smith FIXCHAR(text, lentext, ctext);
2904bb2516aSBarry Smith FIXCHAR(man, lenman, cman);
2914bb2516aSBarry Smith FIXCHAR(currentvalue, lencurrent, ccurrent);
2924bb2516aSBarry Smith
2934bb2516aSBarry Smith if (!PetscOptionsObject) {
2944bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE;
2954bb2516aSBarry Smith return;
2964bb2516aSBarry Smith }
2974bb2516aSBarry Smith PetscOptionsObject->count = 1;
2984bb2516aSBarry Smith
2994bb2516aSBarry Smith *ierr = PetscOptionsString_Private(PetscOptionsObject, copt, ctext, cman, ccurrent, value, lenvalue - 1, &flag);
3004bb2516aSBarry Smith if (*ierr) return;
3014bb2516aSBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag;
3024bb2516aSBarry Smith FREECHAR(opt, copt);
3034bb2516aSBarry Smith FREECHAR(text, ctext);
3044bb2516aSBarry Smith FREECHAR(man, cman);
3054bb2516aSBarry Smith FREECHAR(currentvalue, ccurrent);
3064bb2516aSBarry Smith FIXRETURNCHAR(flag, value, lenvalue);
3074bb2516aSBarry Smith }
3089306f9a3SSatish Balay
petscoptionsgetenumprivate_(PetscOptions * opt,char * pre,char * name,const char * const * list,PetscEnum * ivalue,PetscBool * flg,PetscErrorCode * ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2)309ce78bad3SBarry Smith PETSC_EXTERN void petscoptionsgetenumprivate_(PetscOptions *opt, char *pre, char *name, const char *const *list, PetscEnum *ivalue, PetscBool *flg, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1, PETSC_FORTRAN_CHARLEN_T len2)
3109306f9a3SSatish Balay {
3119306f9a3SSatish Balay char *c1, *c2;
312ace3abfcSBarry Smith PetscBool flag;
3139306f9a3SSatish Balay
3149306f9a3SSatish Balay FIXCHAR(pre, len1, c1);
3159306f9a3SSatish Balay FIXCHAR(name, len2, c2);
316ce78bad3SBarry Smith *ierr = PetscOptionsGetEnum(*opt, c1, c2, list, ivalue, &flag);
3175975b3b6SBarry Smith if (*ierr) return;
3185c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag;
3199306f9a3SSatish Balay FREECHAR(pre, c1);
3209306f9a3SSatish Balay FREECHAR(name, c2);
3219306f9a3SSatish Balay }
3229306f9a3SSatish Balay
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)3235975b3b6SBarry 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)
3249306f9a3SSatish Balay {
3259306f9a3SSatish Balay char *c1, *c2, *c3;
3264610e317SSatish Balay size_t len3;
327ace3abfcSBarry Smith PetscBool flag;
3289306f9a3SSatish Balay
3299306f9a3SSatish Balay FIXCHAR(pre, len1, c1);
3309306f9a3SSatish Balay FIXCHAR(name, len2, c2);
3319306f9a3SSatish Balay c3 = string;
3329306f9a3SSatish Balay len3 = len - 1;
3339306f9a3SSatish Balay
3345975b3b6SBarry Smith *ierr = PetscOptionsGetString(*options, c1, c2, c3, len3, &flag);
3355975b3b6SBarry Smith if (*ierr) return;
3365c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag;
3379306f9a3SSatish Balay FREECHAR(pre, c1);
3389306f9a3SSatish Balay FREECHAR(name, c2);
3397c363081SBarry Smith FIXRETURNCHAR(flag, string, len);
3409306f9a3SSatish Balay }
petscsubcommgetparent_(PetscSubcomm * scomm,MPI_Fint * pcomm,int * ierr)341a530d236SBarry Smith PETSC_EXTERN void petscsubcommgetparent_(PetscSubcomm *scomm, MPI_Fint *pcomm, int *ierr)
342a530d236SBarry Smith {
343a530d236SBarry Smith MPI_Comm tcomm;
344ce78bad3SBarry Smith
345a530d236SBarry Smith *ierr = PetscSubcommGetParent(*scomm, &tcomm);
346a530d236SBarry Smith *pcomm = MPI_Comm_c2f(tcomm);
347a530d236SBarry Smith }
348a530d236SBarry Smith
petscsubcommgetcontiguousparent_(PetscSubcomm * scomm,MPI_Fint * pcomm,int * ierr)349a530d236SBarry Smith PETSC_EXTERN void petscsubcommgetcontiguousparent_(PetscSubcomm *scomm, MPI_Fint *pcomm, int *ierr)
350a530d236SBarry Smith {
351a530d236SBarry Smith MPI_Comm tcomm;
352ce78bad3SBarry Smith
353a530d236SBarry Smith *ierr = PetscSubcommGetContiguousParent(*scomm, &tcomm);
354a530d236SBarry Smith *pcomm = MPI_Comm_c2f(tcomm);
355a530d236SBarry Smith }
356a530d236SBarry Smith
petscsubcommgetchild_(PetscSubcomm * scomm,MPI_Fint * ccomm,int * ierr)357a530d236SBarry Smith PETSC_EXTERN void petscsubcommgetchild_(PetscSubcomm *scomm, MPI_Fint *ccomm, int *ierr)
358a530d236SBarry Smith {
359a530d236SBarry Smith MPI_Comm tcomm;
360ce78bad3SBarry Smith
361a530d236SBarry Smith *ierr = PetscSubcommGetChild(*scomm, &tcomm);
362a530d236SBarry Smith *ccomm = MPI_Comm_c2f(tcomm);
363a530d236SBarry Smith }
364