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) 114bb2516aSBarry Smith #define petscoptionsbegin_ PETSCOPTIONSBEGIN 124bb2516aSBarry Smith #define petscoptionsend_ PETSCOPTIONSEND 134bb2516aSBarry Smith #define petscoptionsbool_ PETSCOPTIONSBOOL 144bb2516aSBarry Smith #define petscoptionsboolarray_ PETSCOPTIONSBOOLARRAY 154bb2516aSBarry Smith #define petscoptionsenumprivate_ PETSCOPTIONSENUMPRIVATE 164bb2516aSBarry Smith #define petscoptionsint_ PETSCOPTIONSINT 174bb2516aSBarry Smith #define petscoptionsintarray_ PETSCOPTIONSINTARRAY 184bb2516aSBarry Smith #define petscoptionsreal_ PETSCOPTIONSREAL 194bb2516aSBarry Smith #define petscoptionsrealarray_ PETSCOPTIONSREALARRAY 204bb2516aSBarry Smith #define petscoptionsscalar_ PETSCOPTIONSSCALAR 214bb2516aSBarry Smith #define petscoptionsscalararray_ PETSCOPTIONSSCALARARRAY 22*c0eeb270SSatish Balay #define petscoptionsstring_ PETSCOPTIONSSTRING 23a530d236SBarry Smith #define petscsubcommview_ PETSCSUBCOMMVIEW 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 2908f86b60SJed Brown #define petscoptionsgetbool_ PETSCOPTIONSGETBOOL 30b0c0aa2bSBlaise Bourdin #define petscoptionsgetboolarray_ PETSCOPTIONSGETBOOLARRAY 319306f9a3SSatish Balay #define petscoptionsgetintarray_ PETSCOPTIONSGETINTARRAY 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 38b0c0aa2bSBlaise Bourdin #define petscoptionsgetscalararray_ PETSCOPTIONSGETSCALARARRAY 399306f9a3SSatish Balay #define petscoptionsgetrealarray_ PETSCOPTIONSGETREALARRAY 409306f9a3SSatish Balay #define petscoptionsgetstring_ PETSCOPTIONSGETSTRING 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 46ac9b46efSSatish Balay #define petscoptionsleft_ PETSCOPTIONSLEFT 47a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_ PETSCOBJECTVIEWFROMOPTIONS 489306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 494bb2516aSBarry Smith #define petscoptionsbegin_ petscoptionsbegin 504bb2516aSBarry Smith #define petscoptionsend_ petscoptionsend 514bb2516aSBarry Smith #define petscoptionsbool_ petscoptionsbool 524bb2516aSBarry Smith #define petscoptionsboolarray_ petscoptionsboolarray 534bb2516aSBarry Smith #define petscoptionsenumprivate_ petscoptionsenumprivate_ 544bb2516aSBarry Smith #define petscoptionsint_ petscoptionsint 554bb2516aSBarry Smith #define petscoptionsintarray_ petscoptionsintarray 564bb2516aSBarry Smith #define petscoptionsreal_ petscoptionsreal 574bb2516aSBarry Smith #define petscoptionsrealarray_ petscoptionsrealarray 584bb2516aSBarry Smith #define petscoptionsscalar_ petscoptionsscalar 594bb2516aSBarry Smith #define petscoptionsscalararray_ petscoptionsscalararray 604bb2516aSBarry Smith #define petscoptionsstring_ petscoptionsstring 61a530d236SBarry Smith #define petscsubcommview_ petscsubcommview 62a530d236SBarry Smith #define petscsubcommgetparent_ petscsubcommgetparent 63a530d236SBarry Smith #define petscsubcommgetcontiguousparent_ petscsubcommgetcontiguousparent 64a530d236SBarry Smith #define petscsubcommgetchild_ petscsubcommgetchild 65455a3cf9SBarry Smith #define petscoptionsallused_ petscoptionsallused 6647340559SBarry Smith #define petscoptionsgetenumprivate_ petscoptionsgetenumprivate 6708f86b60SJed Brown #define petscoptionsgetbool_ petscoptionsgetbool 68b0c0aa2bSBlaise Bourdin #define petscoptionsgetboolarray_ petscoptionsgetboolarray 699306f9a3SSatish Balay #define petscoptionssetvalue_ petscoptionssetvalue 709306f9a3SSatish Balay #define petscoptionsclearvalue_ petscoptionsclearvalue 719306f9a3SSatish Balay #define petscoptionshasname_ petscoptionshasname 729306f9a3SSatish Balay #define petscoptionsgetint_ petscoptionsgetint 739306f9a3SSatish Balay #define petscoptionsgetreal_ petscoptionsgetreal 747a7a6802SBarry Smith #define petscoptionsgetscalar_ petscoptionsgetscalar 75b0c0aa2bSBlaise Bourdin #define petscoptionsgetscalararray_ petscoptionsgetscalararray 769306f9a3SSatish Balay #define petscoptionsgetrealarray_ petscoptionsgetrealarray 779306f9a3SSatish Balay #define petscoptionsgetstring_ petscoptionsgetstring 789306f9a3SSatish Balay #define petscoptionsgetintarray_ petscoptionsgetintarray 799306f9a3SSatish Balay #define petscgetprogramname_ petscgetprogramname 809306f9a3SSatish Balay #define petscoptionsinsertfile_ petscoptionsinsertfile 81a542b6e8SBarry Smith #define petscoptionsclear_ petscoptionsclear 82ab66e762SBarry Smith #define petscoptionsinsertstring_ petscoptionsinsertstring 833a15af8cSBlaise Bourdin #define petscoptionsview_ petscoptionsview 84ac9b46efSSatish Balay #define petscoptionsleft_ petscoptionsleft 85a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_ petscobjectviewfromoptions 869306f9a3SSatish Balay #endif 879306f9a3SSatish Balay 884bb2516aSBarry Smith static PetscOptionItems PetscOptionsObjectBase, *PetscOptionsObject = NULL; 894bb2516aSBarry Smith 904bb2516aSBarry 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) 914bb2516aSBarry Smith { 924bb2516aSBarry Smith MPI_Comm comm = MPI_Comm_f2c(*fcomm); 934bb2516aSBarry Smith char *cprefix, *cmess, *csec; 944bb2516aSBarry Smith 954bb2516aSBarry Smith FIXCHAR(prefix, lenprefix, cprefix); 964bb2516aSBarry Smith FIXCHAR(mess, lenmess, cmess); 974bb2516aSBarry Smith FIXCHAR(sec, lensec, csec); 984bb2516aSBarry Smith if (PetscOptionsObject) { 994bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 1004bb2516aSBarry Smith return; 1014bb2516aSBarry Smith } 1024bb2516aSBarry Smith PetscOptionsObject = &PetscOptionsObjectBase; 1034bb2516aSBarry Smith *ierr = PetscMemzero(PetscOptionsObject, sizeof(*PetscOptionsObject)); 1044bb2516aSBarry Smith if (*ierr) return; 1054bb2516aSBarry Smith PetscOptionsObject->count = 1; 1064bb2516aSBarry Smith *ierr = PetscOptionsBegin_Private(PetscOptionsObject, comm, cprefix, cmess, csec); 1074bb2516aSBarry Smith if (*ierr) return; 1084bb2516aSBarry Smith FREECHAR(prefix, cprefix); 1094bb2516aSBarry Smith FREECHAR(mess, cmess); 1104bb2516aSBarry Smith FREECHAR(sec, csec); 1114bb2516aSBarry Smith } 1124bb2516aSBarry Smith 1134bb2516aSBarry Smith PETSC_EXTERN void petscoptionsend_(PetscErrorCode *ierr) 1144bb2516aSBarry Smith { 1154bb2516aSBarry Smith if (!PetscOptionsObject) { 1164bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 1174bb2516aSBarry Smith return; 1184bb2516aSBarry Smith } 1194bb2516aSBarry Smith PetscOptionsObject->count = 1; 1204bb2516aSBarry Smith *ierr = PetscOptionsEnd_Private(PetscOptionsObject); 1214bb2516aSBarry Smith PetscOptionsObject = NULL; 1224bb2516aSBarry Smith } 1234bb2516aSBarry Smith 1244bb2516aSBarry 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) 1254bb2516aSBarry Smith { 1264bb2516aSBarry Smith char *copt, *ctext, *cman; 1274bb2516aSBarry Smith 1284bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt); 1294bb2516aSBarry Smith FIXCHAR(text, lentext, ctext); 1304bb2516aSBarry Smith FIXCHAR(man, lenman, cman); 1314bb2516aSBarry Smith if (!PetscOptionsObject) { 1324bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 1334bb2516aSBarry Smith return; 1344bb2516aSBarry Smith } 1354bb2516aSBarry Smith PetscOptionsObject->count = 1; 1364bb2516aSBarry Smith *ierr = PetscOptionsBool_Private(PetscOptionsObject, copt, ctext, cman, *currentvalue, value, set); 1374bb2516aSBarry Smith if (*ierr) return; 1384bb2516aSBarry Smith FREECHAR(opt, copt); 1394bb2516aSBarry Smith FREECHAR(text, ctext); 1404bb2516aSBarry Smith FREECHAR(man, cman); 1414bb2516aSBarry Smith } 1424bb2516aSBarry Smith 1434bb2516aSBarry 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) 1444bb2516aSBarry Smith { 1454bb2516aSBarry Smith char *copt, *ctext, *cman; 1464bb2516aSBarry Smith PetscBool flag; 1474bb2516aSBarry Smith 1484bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt); 1494bb2516aSBarry Smith FIXCHAR(text, lentext, ctext); 1504bb2516aSBarry Smith FIXCHAR(man, lenman, cman); 1514bb2516aSBarry Smith if (!PetscOptionsObject) { 1524bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 1534bb2516aSBarry Smith return; 1544bb2516aSBarry Smith } 1554bb2516aSBarry Smith PetscOptionsObject->count = 1; 1564bb2516aSBarry Smith *ierr = PetscOptionsBoolArray_Private(PetscOptionsObject, copt, ctext, cman, dvalue, nmax, &flag); 1574bb2516aSBarry Smith if (*ierr) return; 1584bb2516aSBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 1594bb2516aSBarry Smith FREECHAR(opt, copt); 1604bb2516aSBarry Smith FREECHAR(text, ctext); 1614bb2516aSBarry Smith FREECHAR(man, cman); 1624bb2516aSBarry Smith } 1634bb2516aSBarry Smith 1644bb2516aSBarry 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) 1654bb2516aSBarry Smith { 1664bb2516aSBarry Smith char *copt, *ctext, *cman; 1674bb2516aSBarry Smith PetscBool flag; 1684bb2516aSBarry Smith 1694bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt); 1704bb2516aSBarry Smith FIXCHAR(text, lentext, ctext); 1714bb2516aSBarry Smith FIXCHAR(man, lenman, cman); 1724bb2516aSBarry Smith if (!PetscOptionsObject) { 1734bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 1744bb2516aSBarry Smith return; 1754bb2516aSBarry Smith } 1764bb2516aSBarry Smith PetscOptionsObject->count = 1; 1774bb2516aSBarry Smith *ierr = PetscOptionsEnum_Private(PetscOptionsObject, copt, ctext, cman, list, *currentvalue, ivalue, &flag); 1784bb2516aSBarry Smith if (*ierr) return; 1794bb2516aSBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 1804bb2516aSBarry Smith FREECHAR(opt, copt); 1814bb2516aSBarry Smith FREECHAR(text, ctext); 1824bb2516aSBarry Smith FREECHAR(man, cman); 1834bb2516aSBarry Smith } 1844bb2516aSBarry Smith 1854bb2516aSBarry 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) 1864bb2516aSBarry Smith { 1874bb2516aSBarry Smith char *copt, *ctext, *cman; 1884bb2516aSBarry Smith 1894bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt); 1904bb2516aSBarry Smith FIXCHAR(text, lentext, ctext); 1914bb2516aSBarry Smith FIXCHAR(man, lenman, cman); 1924bb2516aSBarry Smith if (!PetscOptionsObject) { 1934bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 1944bb2516aSBarry Smith return; 1954bb2516aSBarry Smith } 1964bb2516aSBarry Smith PetscOptionsObject->count = 1; 1974bb2516aSBarry Smith *ierr = PetscOptionsInt_Private(PetscOptionsObject, copt, ctext, cman, *currentvalue, value, set, PETSC_MIN_INT, PETSC_MAX_INT); 1984bb2516aSBarry Smith if (*ierr) return; 1994bb2516aSBarry Smith FREECHAR(opt, copt); 2004bb2516aSBarry Smith FREECHAR(text, ctext); 2014bb2516aSBarry Smith FREECHAR(man, cman); 2024bb2516aSBarry Smith } 2034bb2516aSBarry Smith 2044bb2516aSBarry 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) 2054bb2516aSBarry Smith { 2064bb2516aSBarry Smith char *copt, *ctext, *cman; 2074bb2516aSBarry Smith 2084bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt); 2094bb2516aSBarry Smith FIXCHAR(text, lentext, ctext); 2104bb2516aSBarry Smith FIXCHAR(man, lenman, cman); 2114bb2516aSBarry Smith if (!PetscOptionsObject) { 2124bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 2134bb2516aSBarry Smith return; 2144bb2516aSBarry Smith } 2154bb2516aSBarry Smith PetscOptionsObject->count = 1; 2164bb2516aSBarry Smith *ierr = PetscOptionsIntArray_Private(PetscOptionsObject, copt, ctext, cman, currentvalue, n, set); 2174bb2516aSBarry Smith if (*ierr) return; 2184bb2516aSBarry Smith FREECHAR(opt, copt); 2194bb2516aSBarry Smith FREECHAR(text, ctext); 2204bb2516aSBarry Smith FREECHAR(man, cman); 2214bb2516aSBarry Smith } 2224bb2516aSBarry Smith 2234bb2516aSBarry 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) 2244bb2516aSBarry Smith { 2254bb2516aSBarry Smith char *copt, *ctext, *cman; 2264bb2516aSBarry Smith 2274bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt); 2284bb2516aSBarry Smith FIXCHAR(text, lentext, ctext); 2294bb2516aSBarry Smith FIXCHAR(man, lenman, cman); 2304bb2516aSBarry Smith if (!PetscOptionsObject) { 2314bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 2324bb2516aSBarry Smith return; 2334bb2516aSBarry Smith } 2344bb2516aSBarry Smith PetscOptionsObject->count = 1; 23552ce0ab5SPierre Jolivet *ierr = PetscOptionsReal_Private(PetscOptionsObject, copt, ctext, cman, *currentvalue, value, set, PETSC_MIN_REAL, PETSC_MAX_REAL); 2364bb2516aSBarry Smith if (*ierr) return; 2374bb2516aSBarry Smith FREECHAR(opt, copt); 2384bb2516aSBarry Smith FREECHAR(text, ctext); 2394bb2516aSBarry Smith FREECHAR(man, cman); 2404bb2516aSBarry Smith } 2414bb2516aSBarry Smith 2424bb2516aSBarry 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) 2434bb2516aSBarry Smith { 2444bb2516aSBarry Smith char *copt, *ctext, *cman; 2454bb2516aSBarry Smith 2464bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt); 2474bb2516aSBarry Smith FIXCHAR(text, lentext, ctext); 2484bb2516aSBarry Smith FIXCHAR(man, lenman, cman); 2494bb2516aSBarry Smith if (!PetscOptionsObject) { 2504bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 2514bb2516aSBarry Smith return; 2524bb2516aSBarry Smith } 2534bb2516aSBarry Smith PetscOptionsObject->count = 1; 2544bb2516aSBarry Smith *ierr = PetscOptionsRealArray_Private(PetscOptionsObject, copt, ctext, cman, currentvalue, n, set); 2554bb2516aSBarry Smith if (*ierr) return; 2564bb2516aSBarry Smith FREECHAR(opt, copt); 2574bb2516aSBarry Smith FREECHAR(text, ctext); 2584bb2516aSBarry Smith FREECHAR(man, cman); 2594bb2516aSBarry Smith } 2604bb2516aSBarry Smith 2614bb2516aSBarry 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) 2624bb2516aSBarry Smith { 2634bb2516aSBarry Smith char *copt, *ctext, *cman; 2644bb2516aSBarry Smith 2654bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt); 2664bb2516aSBarry Smith FIXCHAR(text, lentext, ctext); 2674bb2516aSBarry Smith FIXCHAR(man, lenman, cman); 2684bb2516aSBarry Smith if (!PetscOptionsObject) { 2694bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 2704bb2516aSBarry Smith return; 2714bb2516aSBarry Smith } 2724bb2516aSBarry Smith PetscOptionsObject->count = 1; 2734bb2516aSBarry Smith *ierr = PetscOptionsScalar_Private(PetscOptionsObject, copt, ctext, cman, *currentvalue, value, set); 2744bb2516aSBarry Smith if (*ierr) return; 2754bb2516aSBarry Smith FREECHAR(opt, copt); 2764bb2516aSBarry Smith FREECHAR(text, ctext); 2774bb2516aSBarry Smith FREECHAR(man, cman); 2784bb2516aSBarry Smith } 2794bb2516aSBarry Smith 2804bb2516aSBarry 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) 2814bb2516aSBarry Smith { 2824bb2516aSBarry Smith char *copt, *ctext, *cman; 2834bb2516aSBarry Smith 2844bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt); 2854bb2516aSBarry Smith FIXCHAR(text, lentext, ctext); 2864bb2516aSBarry Smith FIXCHAR(man, lenman, cman); 2874bb2516aSBarry Smith if (!PetscOptionsObject) { 2884bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 2894bb2516aSBarry Smith return; 2904bb2516aSBarry Smith } 2914bb2516aSBarry Smith PetscOptionsObject->count = 1; 2924bb2516aSBarry Smith *ierr = PetscOptionsScalarArray_Private(PetscOptionsObject, copt, ctext, cman, currentvalue, n, set); 2934bb2516aSBarry Smith if (*ierr) return; 2944bb2516aSBarry Smith FREECHAR(opt, copt); 2954bb2516aSBarry Smith FREECHAR(text, ctext); 2964bb2516aSBarry Smith FREECHAR(man, cman); 2974bb2516aSBarry Smith } 2984bb2516aSBarry Smith 2994bb2516aSBarry 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) 3004bb2516aSBarry Smith { 3014bb2516aSBarry Smith char *copt, *ctext, *cman, *ccurrent; 3024bb2516aSBarry Smith PetscBool flag; 3034bb2516aSBarry Smith 3044bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt); 3054bb2516aSBarry Smith FIXCHAR(text, lentext, ctext); 3064bb2516aSBarry Smith FIXCHAR(man, lenman, cman); 3074bb2516aSBarry Smith FIXCHAR(currentvalue, lencurrent, ccurrent); 3084bb2516aSBarry Smith 3094bb2516aSBarry Smith if (!PetscOptionsObject) { 3104bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 3114bb2516aSBarry Smith return; 3124bb2516aSBarry Smith } 3134bb2516aSBarry Smith PetscOptionsObject->count = 1; 3144bb2516aSBarry Smith 3154bb2516aSBarry Smith *ierr = PetscOptionsString_Private(PetscOptionsObject, copt, ctext, cman, ccurrent, value, lenvalue - 1, &flag); 3164bb2516aSBarry Smith if (*ierr) return; 3174bb2516aSBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 3184bb2516aSBarry Smith FREECHAR(opt, copt); 3194bb2516aSBarry Smith FREECHAR(text, ctext); 3204bb2516aSBarry Smith FREECHAR(man, cman); 3214bb2516aSBarry Smith FREECHAR(currentvalue, ccurrent); 3224bb2516aSBarry Smith FIXRETURNCHAR(flag, value, lenvalue); 3234bb2516aSBarry Smith } 3249306f9a3SSatish Balay 32519caf8f3SSatish Balay PETSC_EXTERN void petscoptionsinsertstring_(PetscOptions *options, char *file, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 326ab66e762SBarry Smith { 327ab66e762SBarry Smith char *c1; 328ab66e762SBarry Smith 329ab66e762SBarry Smith FIXCHAR(file, len, c1); 3305975b3b6SBarry Smith *ierr = PetscOptionsInsertString(*options, c1); 3315975b3b6SBarry Smith if (*ierr) return; 332ab66e762SBarry Smith FREECHAR(file, c1); 333ab66e762SBarry Smith } 334ab66e762SBarry Smith 33519caf8f3SSatish Balay PETSC_EXTERN void petscoptionsinsertfile_(MPI_Fint *comm, PetscOptions *options, char *file, PetscBool *require, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 3369306f9a3SSatish Balay { 3379306f9a3SSatish Balay char *c1; 3389306f9a3SSatish Balay 3399306f9a3SSatish Balay FIXCHAR(file, len, c1); 3405975b3b6SBarry Smith *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm), *options, c1, *require); 3415975b3b6SBarry Smith if (*ierr) return; 3429306f9a3SSatish Balay FREECHAR(file, c1); 3439306f9a3SSatish Balay } 3449306f9a3SSatish Balay 3455975b3b6SBarry Smith PETSC_EXTERN void petscoptionssetvalue_(PetscOptions *options, char *name, char *value, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1, PETSC_FORTRAN_CHARLEN_T len2) 3469306f9a3SSatish Balay { 3479306f9a3SSatish Balay char *c1, *c2; 3489306f9a3SSatish Balay 3499306f9a3SSatish Balay FIXCHAR(name, len1, c1); 3509306f9a3SSatish Balay FIXCHAR(value, len2, c2); 3515975b3b6SBarry Smith *ierr = PetscOptionsSetValue(*options, c1, c2); 3525975b3b6SBarry Smith if (*ierr) return; 3539306f9a3SSatish Balay FREECHAR(name, c1); 3549306f9a3SSatish Balay FREECHAR(value, c2); 3559306f9a3SSatish Balay } 3569306f9a3SSatish Balay 35719caf8f3SSatish Balay PETSC_EXTERN void petscoptionsclear_(PetscOptions *options, PetscErrorCode *ierr) 358a542b6e8SBarry Smith { 359c5929fdfSBarry Smith *ierr = PetscOptionsClear(*options); 360a542b6e8SBarry Smith } 361a542b6e8SBarry Smith 36219caf8f3SSatish Balay PETSC_EXTERN void petscoptionsclearvalue_(PetscOptions *options, char *name, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len) 3639306f9a3SSatish Balay { 3649306f9a3SSatish Balay char *c1; 3659306f9a3SSatish Balay 3669306f9a3SSatish Balay FIXCHAR(name, len, c1); 3675975b3b6SBarry Smith *ierr = PetscOptionsClearValue(*options, c1); 3685975b3b6SBarry Smith if (*ierr) return; 3699306f9a3SSatish Balay FREECHAR(name, c1); 3709306f9a3SSatish Balay } 3719306f9a3SSatish Balay 3725975b3b6SBarry 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) 3739306f9a3SSatish Balay { 3749306f9a3SSatish Balay char *c1, *c2; 3759306f9a3SSatish Balay 3769306f9a3SSatish Balay FIXCHAR(pre, len1, c1); 3779306f9a3SSatish Balay FIXCHAR(name, len2, c2); 3785975b3b6SBarry Smith *ierr = PetscOptionsHasName(*options, c1, c2, flg); 3795975b3b6SBarry Smith if (*ierr) return; 3809306f9a3SSatish Balay FREECHAR(pre, c1); 3819306f9a3SSatish Balay FREECHAR(name, c2); 3829306f9a3SSatish Balay } 3839306f9a3SSatish Balay 3845975b3b6SBarry 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) 3859306f9a3SSatish Balay { 3869306f9a3SSatish Balay char *c1, *c2; 387ace3abfcSBarry Smith PetscBool flag; 3889306f9a3SSatish Balay 3899306f9a3SSatish Balay FIXCHAR(pre, len1, c1); 3909306f9a3SSatish Balay FIXCHAR(name, len2, c2); 3915975b3b6SBarry Smith *ierr = PetscOptionsGetInt(*opt, c1, c2, ivalue, &flag); 3925975b3b6SBarry Smith if (*ierr) return; 3935c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 3949306f9a3SSatish Balay FREECHAR(pre, c1); 3959306f9a3SSatish Balay FREECHAR(name, c2); 3969306f9a3SSatish Balay } 3979306f9a3SSatish Balay 3985975b3b6SBarry 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) 39947340559SBarry Smith { 40047340559SBarry Smith char *c1, *c2; 40147340559SBarry Smith PetscBool flag; 40247340559SBarry Smith 40347340559SBarry Smith FIXCHAR(pre, len1, c1); 40447340559SBarry Smith FIXCHAR(name, len2, c2); 4055975b3b6SBarry Smith *ierr = PetscOptionsGetEnum(*options, c1, c2, list, ivalue, &flag); 4065975b3b6SBarry Smith if (*ierr) return; 40747340559SBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 40847340559SBarry Smith FREECHAR(pre, c1); 40947340559SBarry Smith FREECHAR(name, c2); 41047340559SBarry Smith } 41147340559SBarry Smith 4125975b3b6SBarry 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) 4139306f9a3SSatish Balay { 4149306f9a3SSatish Balay char *c1, *c2; 415ace3abfcSBarry Smith PetscBool flag; 4169306f9a3SSatish Balay 4179306f9a3SSatish Balay FIXCHAR(pre, len1, c1); 4189306f9a3SSatish Balay FIXCHAR(name, len2, c2); 4195975b3b6SBarry Smith *ierr = PetscOptionsGetBool(*options, c1, c2, ivalue, &flag); 4205975b3b6SBarry Smith if (*ierr) return; 4215c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 4229306f9a3SSatish Balay FREECHAR(pre, c1); 4239306f9a3SSatish Balay FREECHAR(name, c2); 4249306f9a3SSatish Balay } 4259306f9a3SSatish Balay 4265975b3b6SBarry 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) 427b0c0aa2bSBlaise Bourdin { 428b0c0aa2bSBlaise Bourdin char *c1, *c2; 429b0c0aa2bSBlaise Bourdin PetscBool flag; 430b0c0aa2bSBlaise Bourdin 431b0c0aa2bSBlaise Bourdin FIXCHAR(pre, len1, c1); 432b0c0aa2bSBlaise Bourdin FIXCHAR(name, len2, c2); 4335975b3b6SBarry Smith *ierr = PetscOptionsGetBoolArray(*options, c1, c2, dvalue, nmax, &flag); 4345975b3b6SBarry Smith if (*ierr) return; 435b0c0aa2bSBlaise Bourdin if (!FORTRANNULLBOOL(flg)) *flg = flag; 436b0c0aa2bSBlaise Bourdin FREECHAR(pre, c1); 437b0c0aa2bSBlaise Bourdin FREECHAR(name, c2); 438b0c0aa2bSBlaise Bourdin } 439b0c0aa2bSBlaise Bourdin 4405975b3b6SBarry 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) 4419306f9a3SSatish Balay { 4429306f9a3SSatish Balay char *c1, *c2; 443ace3abfcSBarry Smith PetscBool flag; 4449306f9a3SSatish Balay 4459306f9a3SSatish Balay FIXCHAR(pre, len1, c1); 4469306f9a3SSatish Balay FIXCHAR(name, len2, c2); 4475975b3b6SBarry Smith *ierr = PetscOptionsGetReal(*options, c1, c2, dvalue, &flag); 4485975b3b6SBarry Smith if (*ierr) return; 4495c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 4509306f9a3SSatish Balay FREECHAR(pre, c1); 4519306f9a3SSatish Balay FREECHAR(name, c2); 4529306f9a3SSatish Balay } 4539306f9a3SSatish Balay 4545975b3b6SBarry 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) 4557a7a6802SBarry Smith { 4567a7a6802SBarry Smith char *c1, *c2; 4577a7a6802SBarry Smith PetscBool flag; 4587a7a6802SBarry Smith 4597a7a6802SBarry Smith FIXCHAR(pre, len1, c1); 4607a7a6802SBarry Smith FIXCHAR(name, len2, c2); 4615975b3b6SBarry Smith *ierr = PetscOptionsGetScalar(*options, c1, c2, dvalue, &flag); 4625975b3b6SBarry Smith if (*ierr) return; 4637a7a6802SBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 4647a7a6802SBarry Smith FREECHAR(pre, c1); 4657a7a6802SBarry Smith FREECHAR(name, c2); 4667a7a6802SBarry Smith } 4677a7a6802SBarry Smith 4685975b3b6SBarry 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) 469b0c0aa2bSBlaise Bourdin { 470b0c0aa2bSBlaise Bourdin char *c1, *c2; 471b0c0aa2bSBlaise Bourdin PetscBool flag; 472b0c0aa2bSBlaise Bourdin 473b0c0aa2bSBlaise Bourdin FIXCHAR(pre, len1, c1); 474b0c0aa2bSBlaise Bourdin FIXCHAR(name, len2, c2); 4755975b3b6SBarry Smith *ierr = PetscOptionsGetScalarArray(*options, c1, c2, dvalue, nmax, &flag); 4765975b3b6SBarry Smith if (*ierr) return; 477b0c0aa2bSBlaise Bourdin if (!FORTRANNULLBOOL(flg)) *flg = flag; 478b0c0aa2bSBlaise Bourdin FREECHAR(pre, c1); 479b0c0aa2bSBlaise Bourdin FREECHAR(name, c2); 480b0c0aa2bSBlaise Bourdin } 481b0c0aa2bSBlaise Bourdin 4825975b3b6SBarry 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) 4839306f9a3SSatish Balay { 4849306f9a3SSatish Balay char *c1, *c2; 485ace3abfcSBarry Smith PetscBool flag; 4869306f9a3SSatish Balay 4879306f9a3SSatish Balay FIXCHAR(pre, len1, c1); 4889306f9a3SSatish Balay FIXCHAR(name, len2, c2); 4895975b3b6SBarry Smith *ierr = PetscOptionsGetRealArray(*options, c1, c2, dvalue, nmax, &flag); 4905975b3b6SBarry Smith if (*ierr) return; 4915c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 4929306f9a3SSatish Balay FREECHAR(pre, c1); 4939306f9a3SSatish Balay FREECHAR(name, c2); 4949306f9a3SSatish Balay } 4959306f9a3SSatish Balay 4965975b3b6SBarry 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) 4979306f9a3SSatish Balay { 4989306f9a3SSatish Balay char *c1, *c2; 499ace3abfcSBarry Smith PetscBool flag; 5009306f9a3SSatish Balay 5019306f9a3SSatish Balay FIXCHAR(pre, len1, c1); 5029306f9a3SSatish Balay FIXCHAR(name, len2, c2); 5035975b3b6SBarry Smith *ierr = PetscOptionsGetIntArray(*options, c1, c2, dvalue, nmax, &flag); 5045975b3b6SBarry Smith if (*ierr) return; 5055c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 5069306f9a3SSatish Balay FREECHAR(pre, c1); 5079306f9a3SSatish Balay FREECHAR(name, c2); 5089306f9a3SSatish Balay } 5099306f9a3SSatish Balay 5105975b3b6SBarry 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) 5119306f9a3SSatish Balay { 5129306f9a3SSatish Balay char *c1, *c2, *c3; 5134610e317SSatish Balay size_t len3; 514ace3abfcSBarry Smith PetscBool flag; 5159306f9a3SSatish Balay 5169306f9a3SSatish Balay FIXCHAR(pre, len1, c1); 5179306f9a3SSatish Balay FIXCHAR(name, len2, c2); 5189306f9a3SSatish Balay c3 = string; 5199306f9a3SSatish Balay len3 = len - 1; 5209306f9a3SSatish Balay 5215975b3b6SBarry Smith *ierr = PetscOptionsGetString(*options, c1, c2, c3, len3, &flag); 5225975b3b6SBarry Smith if (*ierr) return; 5235c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 5249306f9a3SSatish Balay FREECHAR(pre, c1); 5259306f9a3SSatish Balay FREECHAR(name, c2); 5267c363081SBarry Smith FIXRETURNCHAR(flag, string, len); 5279306f9a3SSatish Balay } 5289306f9a3SSatish Balay 52919caf8f3SSatish Balay PETSC_EXTERN void petscgetprogramname_(char *name, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len_in) 5309306f9a3SSatish Balay { 5319306f9a3SSatish Balay char *tmp; 5324610e317SSatish Balay size_t len; 5339306f9a3SSatish Balay tmp = name; 5349306f9a3SSatish Balay len = len_in - 1; 5359306f9a3SSatish Balay *ierr = PetscGetProgramName(tmp, len); 5367c363081SBarry Smith FIXRETURNCHAR(PETSC_TRUE, name, len_in); 5379306f9a3SSatish Balay } 5389306f9a3SSatish Balay 53919caf8f3SSatish Balay PETSC_EXTERN void petscoptionsview_(PetscOptions *options, PetscViewer *vin, PetscErrorCode *ierr) 5403a15af8cSBlaise Bourdin { 5413a15af8cSBlaise Bourdin PetscViewer v; 5423a15af8cSBlaise Bourdin 5433a15af8cSBlaise Bourdin PetscPatchDefaultViewers_Fortran(vin, v); 544c5929fdfSBarry Smith *ierr = PetscOptionsView(*options, v); 5453a15af8cSBlaise Bourdin } 5463a15af8cSBlaise Bourdin 54719caf8f3SSatish Balay PETSC_EXTERN void petscobjectviewfromoptions_(PetscObject *obj, PetscObject *bobj, char *option, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T loption) 548a2865142SMatthew G. Knepley { 549685405a1SBarry Smith char *o; 550a2865142SMatthew G. Knepley 551a2865142SMatthew G. Knepley FIXCHAR(option, loption, o); 552b14c0cbaSBlaise Bourdin CHKFORTRANNULLOBJECT(obj); 5535975b3b6SBarry Smith *ierr = PetscObjectViewFromOptions(*obj, *bobj, o); 5545975b3b6SBarry Smith if (*ierr) return; 555a2865142SMatthew G. Knepley FREECHAR(option, o); 556a2865142SMatthew G. Knepley } 557a530d236SBarry Smith 558a530d236SBarry Smith PETSC_EXTERN void petscsubcommgetparent_(PetscSubcomm *scomm, MPI_Fint *pcomm, int *ierr) 559a530d236SBarry Smith { 560a530d236SBarry Smith MPI_Comm tcomm; 561a530d236SBarry Smith *ierr = PetscSubcommGetParent(*scomm, &tcomm); 562a530d236SBarry Smith *pcomm = MPI_Comm_c2f(tcomm); 563a530d236SBarry Smith } 564a530d236SBarry Smith 565a530d236SBarry Smith PETSC_EXTERN void petscsubcommgetcontiguousparent_(PetscSubcomm *scomm, MPI_Fint *pcomm, int *ierr) 566a530d236SBarry Smith { 567a530d236SBarry Smith MPI_Comm tcomm; 568a530d236SBarry Smith *ierr = PetscSubcommGetContiguousParent(*scomm, &tcomm); 569a530d236SBarry Smith *pcomm = MPI_Comm_c2f(tcomm); 570a530d236SBarry Smith } 571a530d236SBarry Smith 572a530d236SBarry Smith PETSC_EXTERN void petscsubcommgetchild_(PetscSubcomm *scomm, MPI_Fint *ccomm, int *ierr) 573a530d236SBarry Smith { 574a530d236SBarry Smith MPI_Comm tcomm; 575a530d236SBarry Smith *ierr = PetscSubcommGetChild(*scomm, &tcomm); 576a530d236SBarry Smith *ccomm = MPI_Comm_c2f(tcomm); 577a530d236SBarry Smith } 578a530d236SBarry Smith 579a530d236SBarry Smith PETSC_EXTERN void petscsubcommview_(PetscSubcomm *psubcomm, PetscViewer *viewer, int *ierr) 580a530d236SBarry Smith { 581a530d236SBarry Smith PetscViewer v; 582a530d236SBarry Smith PetscPatchDefaultViewers_Fortran(viewer, v); 583a530d236SBarry Smith *ierr = PetscSubcommView(*psubcomm, v); 584a530d236SBarry Smith } 585