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 22c0eeb270SSatish Balay #define petscoptionsstring_ PETSCOPTIONSSTRING 23a530d236SBarry Smith #define petscsubcommgetparent_ PETSCSUBCOMMGETPARENT 24a530d236SBarry Smith #define petscsubcommgetcontiguousparent_ PETSCSUBCOMMGETCONTIGUOUSPARENT 25a530d236SBarry Smith #define petscsubcommgetchild_ PETSCSUBCOMMGETCHILD 26455a3cf9SBarry Smith #define petscoptionsallused_ PETSCOPTIONSALLUSED 2747340559SBarry Smith #define petscoptionsgetenumprivate_ PETSCOPTIONSGETENUMPRIVATE 2808f86b60SJed Brown #define petscoptionsgetbool_ PETSCOPTIONSGETBOOL 29b0c0aa2bSBlaise Bourdin #define petscoptionsgetboolarray_ PETSCOPTIONSGETBOOLARRAY 309306f9a3SSatish Balay #define petscoptionsgetintarray_ PETSCOPTIONSGETINTARRAY 319306f9a3SSatish Balay #define petscoptionsgetint_ PETSCOPTIONSGETINT 329306f9a3SSatish Balay #define petscoptionsgetreal_ PETSCOPTIONSGETREAL 337a7a6802SBarry Smith #define petscoptionsgetscalar_ PETSCOPTIONSGETSCALAR 34b0c0aa2bSBlaise Bourdin #define petscoptionsgetscalararray_ PETSCOPTIONSGETSCALARARRAY 359306f9a3SSatish Balay #define petscoptionsgetrealarray_ PETSCOPTIONSGETREALARRAY 369306f9a3SSatish Balay #define petscoptionsgetstring_ PETSCOPTIONSGETSTRING 379306f9a3SSatish Balay #define petscgetprogramname PETSCGETPROGRAMNAME 389306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 394bb2516aSBarry Smith #define petscoptionsbegin_ petscoptionsbegin 404bb2516aSBarry Smith #define petscoptionsend_ petscoptionsend 414bb2516aSBarry Smith #define petscoptionsbool_ petscoptionsbool 424bb2516aSBarry Smith #define petscoptionsboolarray_ petscoptionsboolarray 4347582d61SSatish Balay #define petscoptionsenumprivate_ petscoptionsenumprivate 444bb2516aSBarry Smith #define petscoptionsint_ petscoptionsint 454bb2516aSBarry Smith #define petscoptionsintarray_ petscoptionsintarray 464bb2516aSBarry Smith #define petscoptionsreal_ petscoptionsreal 474bb2516aSBarry Smith #define petscoptionsrealarray_ petscoptionsrealarray 484bb2516aSBarry Smith #define petscoptionsscalar_ petscoptionsscalar 494bb2516aSBarry Smith #define petscoptionsscalararray_ petscoptionsscalararray 504bb2516aSBarry Smith #define petscoptionsstring_ petscoptionsstring 51a530d236SBarry Smith #define petscsubcommgetparent_ petscsubcommgetparent 52a530d236SBarry Smith #define petscsubcommgetcontiguousparent_ petscsubcommgetcontiguousparent 53a530d236SBarry Smith #define petscsubcommgetchild_ petscsubcommgetchild 54455a3cf9SBarry Smith #define petscoptionsallused_ petscoptionsallused 5547340559SBarry Smith #define petscoptionsgetenumprivate_ petscoptionsgetenumprivate 5608f86b60SJed Brown #define petscoptionsgetbool_ petscoptionsgetbool 57b0c0aa2bSBlaise Bourdin #define petscoptionsgetboolarray_ petscoptionsgetboolarray 589306f9a3SSatish Balay #define petscoptionsgetint_ petscoptionsgetint 599306f9a3SSatish Balay #define petscoptionsgetreal_ petscoptionsgetreal 607a7a6802SBarry Smith #define petscoptionsgetscalar_ petscoptionsgetscalar 61b0c0aa2bSBlaise Bourdin #define petscoptionsgetscalararray_ petscoptionsgetscalararray 629306f9a3SSatish Balay #define petscoptionsgetrealarray_ petscoptionsgetrealarray 639306f9a3SSatish Balay #define petscoptionsgetstring_ petscoptionsgetstring 649306f9a3SSatish Balay #define petscoptionsgetintarray_ petscoptionsgetintarray 659306f9a3SSatish Balay #define petscgetprogramname_ petscgetprogramname 669306f9a3SSatish Balay #endif 679306f9a3SSatish Balay 684bb2516aSBarry Smith static PetscOptionItems PetscOptionsObjectBase, *PetscOptionsObject = NULL; 694bb2516aSBarry Smith 704bb2516aSBarry 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) 714bb2516aSBarry Smith { 724bb2516aSBarry Smith MPI_Comm comm = MPI_Comm_f2c(*fcomm); 734bb2516aSBarry Smith char *cprefix, *cmess, *csec; 744bb2516aSBarry Smith 754bb2516aSBarry Smith FIXCHAR(prefix, lenprefix, cprefix); 764bb2516aSBarry Smith FIXCHAR(mess, lenmess, cmess); 774bb2516aSBarry Smith FIXCHAR(sec, lensec, csec); 784bb2516aSBarry Smith if (PetscOptionsObject) { 794bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 804bb2516aSBarry Smith return; 814bb2516aSBarry Smith } 824bb2516aSBarry Smith PetscOptionsObject = &PetscOptionsObjectBase; 834bb2516aSBarry Smith *ierr = PetscMemzero(PetscOptionsObject, sizeof(*PetscOptionsObject)); 844bb2516aSBarry Smith if (*ierr) return; 854bb2516aSBarry Smith PetscOptionsObject->count = 1; 864bb2516aSBarry Smith *ierr = PetscOptionsBegin_Private(PetscOptionsObject, comm, cprefix, cmess, csec); 874bb2516aSBarry Smith if (*ierr) return; 884bb2516aSBarry Smith FREECHAR(prefix, cprefix); 894bb2516aSBarry Smith FREECHAR(mess, cmess); 904bb2516aSBarry Smith FREECHAR(sec, csec); 914bb2516aSBarry Smith } 924bb2516aSBarry Smith 934bb2516aSBarry Smith PETSC_EXTERN void petscoptionsend_(PetscErrorCode *ierr) 944bb2516aSBarry Smith { 954bb2516aSBarry Smith if (!PetscOptionsObject) { 964bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 974bb2516aSBarry Smith return; 984bb2516aSBarry Smith } 994bb2516aSBarry Smith PetscOptionsObject->count = 1; 1004bb2516aSBarry Smith *ierr = PetscOptionsEnd_Private(PetscOptionsObject); 1014bb2516aSBarry Smith PetscOptionsObject = NULL; 1024bb2516aSBarry Smith } 1034bb2516aSBarry Smith 1044bb2516aSBarry 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) 1054bb2516aSBarry Smith { 1064bb2516aSBarry Smith char *copt, *ctext, *cman; 1074bb2516aSBarry Smith 1084bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt); 1094bb2516aSBarry Smith FIXCHAR(text, lentext, ctext); 1104bb2516aSBarry Smith FIXCHAR(man, lenman, cman); 1114bb2516aSBarry Smith if (!PetscOptionsObject) { 1124bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 1134bb2516aSBarry Smith return; 1144bb2516aSBarry Smith } 1154bb2516aSBarry Smith PetscOptionsObject->count = 1; 1164bb2516aSBarry Smith *ierr = PetscOptionsBool_Private(PetscOptionsObject, copt, ctext, cman, *currentvalue, value, set); 1174bb2516aSBarry Smith if (*ierr) return; 1184bb2516aSBarry Smith FREECHAR(opt, copt); 1194bb2516aSBarry Smith FREECHAR(text, ctext); 1204bb2516aSBarry Smith FREECHAR(man, cman); 1214bb2516aSBarry Smith } 1224bb2516aSBarry Smith 1234bb2516aSBarry 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) 1244bb2516aSBarry Smith { 1254bb2516aSBarry Smith char *copt, *ctext, *cman; 1264bb2516aSBarry Smith PetscBool flag; 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 = PetscOptionsBoolArray_Private(PetscOptionsObject, copt, ctext, cman, dvalue, nmax, &flag); 1374bb2516aSBarry Smith if (*ierr) return; 1384bb2516aSBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 1394bb2516aSBarry Smith FREECHAR(opt, copt); 1404bb2516aSBarry Smith FREECHAR(text, ctext); 1414bb2516aSBarry Smith FREECHAR(man, cman); 1424bb2516aSBarry Smith } 1434bb2516aSBarry Smith 1444bb2516aSBarry 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) 1454bb2516aSBarry Smith { 1464bb2516aSBarry Smith char *copt, *ctext, *cman; 1474bb2516aSBarry Smith PetscBool flag; 1484bb2516aSBarry Smith 1494bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt); 1504bb2516aSBarry Smith FIXCHAR(text, lentext, ctext); 1514bb2516aSBarry Smith FIXCHAR(man, lenman, cman); 1524bb2516aSBarry Smith if (!PetscOptionsObject) { 1534bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 1544bb2516aSBarry Smith return; 1554bb2516aSBarry Smith } 1564bb2516aSBarry Smith PetscOptionsObject->count = 1; 1574bb2516aSBarry Smith *ierr = PetscOptionsEnum_Private(PetscOptionsObject, copt, ctext, cman, list, *currentvalue, ivalue, &flag); 1584bb2516aSBarry Smith if (*ierr) return; 1594bb2516aSBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 1604bb2516aSBarry Smith FREECHAR(opt, copt); 1614bb2516aSBarry Smith FREECHAR(text, ctext); 1624bb2516aSBarry Smith FREECHAR(man, cman); 1634bb2516aSBarry Smith } 1644bb2516aSBarry Smith 1654bb2516aSBarry 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) 1664bb2516aSBarry Smith { 1674bb2516aSBarry Smith char *copt, *ctext, *cman; 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; 177*1690c2aeSBarry Smith *ierr = PetscOptionsInt_Private(PetscOptionsObject, copt, ctext, cman, *currentvalue, value, set, PETSC_INT_MIN, PETSC_INT_MAX); 1784bb2516aSBarry Smith if (*ierr) return; 1794bb2516aSBarry Smith FREECHAR(opt, copt); 1804bb2516aSBarry Smith FREECHAR(text, ctext); 1814bb2516aSBarry Smith FREECHAR(man, cman); 1824bb2516aSBarry Smith } 1834bb2516aSBarry Smith 1844bb2516aSBarry 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) 1854bb2516aSBarry Smith { 1864bb2516aSBarry Smith char *copt, *ctext, *cman; 1874bb2516aSBarry Smith 1884bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt); 1894bb2516aSBarry Smith FIXCHAR(text, lentext, ctext); 1904bb2516aSBarry Smith FIXCHAR(man, lenman, cman); 1914bb2516aSBarry Smith if (!PetscOptionsObject) { 1924bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 1934bb2516aSBarry Smith return; 1944bb2516aSBarry Smith } 1954bb2516aSBarry Smith PetscOptionsObject->count = 1; 1964bb2516aSBarry Smith *ierr = PetscOptionsIntArray_Private(PetscOptionsObject, copt, ctext, cman, currentvalue, n, set); 1974bb2516aSBarry Smith if (*ierr) return; 1984bb2516aSBarry Smith FREECHAR(opt, copt); 1994bb2516aSBarry Smith FREECHAR(text, ctext); 2004bb2516aSBarry Smith FREECHAR(man, cman); 2014bb2516aSBarry Smith } 2024bb2516aSBarry Smith 2034bb2516aSBarry 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) 2044bb2516aSBarry Smith { 2054bb2516aSBarry Smith char *copt, *ctext, *cman; 2064bb2516aSBarry Smith 2074bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt); 2084bb2516aSBarry Smith FIXCHAR(text, lentext, ctext); 2094bb2516aSBarry Smith FIXCHAR(man, lenman, cman); 2104bb2516aSBarry Smith if (!PetscOptionsObject) { 2114bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 2124bb2516aSBarry Smith return; 2134bb2516aSBarry Smith } 2144bb2516aSBarry Smith PetscOptionsObject->count = 1; 21552ce0ab5SPierre Jolivet *ierr = PetscOptionsReal_Private(PetscOptionsObject, copt, ctext, cman, *currentvalue, value, set, PETSC_MIN_REAL, PETSC_MAX_REAL); 2164bb2516aSBarry Smith if (*ierr) return; 2174bb2516aSBarry Smith FREECHAR(opt, copt); 2184bb2516aSBarry Smith FREECHAR(text, ctext); 2194bb2516aSBarry Smith FREECHAR(man, cman); 2204bb2516aSBarry Smith } 2214bb2516aSBarry Smith 2224bb2516aSBarry 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) 2234bb2516aSBarry Smith { 2244bb2516aSBarry Smith char *copt, *ctext, *cman; 2254bb2516aSBarry Smith 2264bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt); 2274bb2516aSBarry Smith FIXCHAR(text, lentext, ctext); 2284bb2516aSBarry Smith FIXCHAR(man, lenman, cman); 2294bb2516aSBarry Smith if (!PetscOptionsObject) { 2304bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 2314bb2516aSBarry Smith return; 2324bb2516aSBarry Smith } 2334bb2516aSBarry Smith PetscOptionsObject->count = 1; 2344bb2516aSBarry Smith *ierr = PetscOptionsRealArray_Private(PetscOptionsObject, copt, ctext, cman, currentvalue, n, set); 2354bb2516aSBarry Smith if (*ierr) return; 2364bb2516aSBarry Smith FREECHAR(opt, copt); 2374bb2516aSBarry Smith FREECHAR(text, ctext); 2384bb2516aSBarry Smith FREECHAR(man, cman); 2394bb2516aSBarry Smith } 2404bb2516aSBarry Smith 2414bb2516aSBarry 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) 2424bb2516aSBarry Smith { 2434bb2516aSBarry Smith char *copt, *ctext, *cman; 2444bb2516aSBarry Smith 2454bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt); 2464bb2516aSBarry Smith FIXCHAR(text, lentext, ctext); 2474bb2516aSBarry Smith FIXCHAR(man, lenman, cman); 2484bb2516aSBarry Smith if (!PetscOptionsObject) { 2494bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 2504bb2516aSBarry Smith return; 2514bb2516aSBarry Smith } 2524bb2516aSBarry Smith PetscOptionsObject->count = 1; 2534bb2516aSBarry Smith *ierr = PetscOptionsScalar_Private(PetscOptionsObject, copt, ctext, cman, *currentvalue, value, set); 2544bb2516aSBarry Smith if (*ierr) return; 2554bb2516aSBarry Smith FREECHAR(opt, copt); 2564bb2516aSBarry Smith FREECHAR(text, ctext); 2574bb2516aSBarry Smith FREECHAR(man, cman); 2584bb2516aSBarry Smith } 2594bb2516aSBarry Smith 2604bb2516aSBarry 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) 2614bb2516aSBarry Smith { 2624bb2516aSBarry Smith char *copt, *ctext, *cman; 2634bb2516aSBarry Smith 2644bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt); 2654bb2516aSBarry Smith FIXCHAR(text, lentext, ctext); 2664bb2516aSBarry Smith FIXCHAR(man, lenman, cman); 2674bb2516aSBarry Smith if (!PetscOptionsObject) { 2684bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 2694bb2516aSBarry Smith return; 2704bb2516aSBarry Smith } 2714bb2516aSBarry Smith PetscOptionsObject->count = 1; 2724bb2516aSBarry Smith *ierr = PetscOptionsScalarArray_Private(PetscOptionsObject, copt, ctext, cman, currentvalue, n, set); 2734bb2516aSBarry Smith if (*ierr) return; 2744bb2516aSBarry Smith FREECHAR(opt, copt); 2754bb2516aSBarry Smith FREECHAR(text, ctext); 2764bb2516aSBarry Smith FREECHAR(man, cman); 2774bb2516aSBarry Smith } 2784bb2516aSBarry Smith 2794bb2516aSBarry 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) 2804bb2516aSBarry Smith { 2814bb2516aSBarry Smith char *copt, *ctext, *cman, *ccurrent; 2824bb2516aSBarry Smith PetscBool flag; 2834bb2516aSBarry Smith 2844bb2516aSBarry Smith FIXCHAR(opt, lenopt, copt); 2854bb2516aSBarry Smith FIXCHAR(text, lentext, ctext); 2864bb2516aSBarry Smith FIXCHAR(man, lenman, cman); 2874bb2516aSBarry Smith FIXCHAR(currentvalue, lencurrent, ccurrent); 2884bb2516aSBarry Smith 2894bb2516aSBarry Smith if (!PetscOptionsObject) { 2904bb2516aSBarry Smith *ierr = PETSC_ERR_ARG_WRONGSTATE; 2914bb2516aSBarry Smith return; 2924bb2516aSBarry Smith } 2934bb2516aSBarry Smith PetscOptionsObject->count = 1; 2944bb2516aSBarry Smith 2954bb2516aSBarry Smith *ierr = PetscOptionsString_Private(PetscOptionsObject, copt, ctext, cman, ccurrent, value, lenvalue - 1, &flag); 2964bb2516aSBarry Smith if (*ierr) return; 2974bb2516aSBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 2984bb2516aSBarry Smith FREECHAR(opt, copt); 2994bb2516aSBarry Smith FREECHAR(text, ctext); 3004bb2516aSBarry Smith FREECHAR(man, cman); 3014bb2516aSBarry Smith FREECHAR(currentvalue, ccurrent); 3024bb2516aSBarry Smith FIXRETURNCHAR(flag, value, lenvalue); 3034bb2516aSBarry Smith } 3049306f9a3SSatish Balay 3055975b3b6SBarry 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) 3069306f9a3SSatish Balay { 3079306f9a3SSatish Balay char *c1, *c2; 308ace3abfcSBarry Smith PetscBool flag; 3099306f9a3SSatish Balay 3109306f9a3SSatish Balay FIXCHAR(pre, len1, c1); 3119306f9a3SSatish Balay FIXCHAR(name, len2, c2); 3125975b3b6SBarry Smith *ierr = PetscOptionsGetInt(*opt, c1, c2, ivalue, &flag); 3135975b3b6SBarry Smith if (*ierr) return; 3145c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 3159306f9a3SSatish Balay FREECHAR(pre, c1); 3169306f9a3SSatish Balay FREECHAR(name, c2); 3179306f9a3SSatish Balay } 3189306f9a3SSatish Balay 3195975b3b6SBarry 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) 32047340559SBarry Smith { 32147340559SBarry Smith char *c1, *c2; 32247340559SBarry Smith PetscBool flag; 32347340559SBarry Smith 32447340559SBarry Smith FIXCHAR(pre, len1, c1); 32547340559SBarry Smith FIXCHAR(name, len2, c2); 3265975b3b6SBarry Smith *ierr = PetscOptionsGetEnum(*options, c1, c2, list, ivalue, &flag); 3275975b3b6SBarry Smith if (*ierr) return; 32847340559SBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 32947340559SBarry Smith FREECHAR(pre, c1); 33047340559SBarry Smith FREECHAR(name, c2); 33147340559SBarry Smith } 33247340559SBarry Smith 3335975b3b6SBarry 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) 3349306f9a3SSatish Balay { 3359306f9a3SSatish Balay char *c1, *c2; 336ace3abfcSBarry Smith PetscBool flag; 3379306f9a3SSatish Balay 3389306f9a3SSatish Balay FIXCHAR(pre, len1, c1); 3399306f9a3SSatish Balay FIXCHAR(name, len2, c2); 3405975b3b6SBarry Smith *ierr = PetscOptionsGetBool(*options, c1, c2, ivalue, &flag); 3415975b3b6SBarry Smith if (*ierr) return; 3425c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 3439306f9a3SSatish Balay FREECHAR(pre, c1); 3449306f9a3SSatish Balay FREECHAR(name, c2); 3459306f9a3SSatish Balay } 3469306f9a3SSatish Balay 3475975b3b6SBarry 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) 348b0c0aa2bSBlaise Bourdin { 349b0c0aa2bSBlaise Bourdin char *c1, *c2; 350b0c0aa2bSBlaise Bourdin PetscBool flag; 351b0c0aa2bSBlaise Bourdin 352b0c0aa2bSBlaise Bourdin FIXCHAR(pre, len1, c1); 353b0c0aa2bSBlaise Bourdin FIXCHAR(name, len2, c2); 3545975b3b6SBarry Smith *ierr = PetscOptionsGetBoolArray(*options, c1, c2, dvalue, nmax, &flag); 3555975b3b6SBarry Smith if (*ierr) return; 356b0c0aa2bSBlaise Bourdin if (!FORTRANNULLBOOL(flg)) *flg = flag; 357b0c0aa2bSBlaise Bourdin FREECHAR(pre, c1); 358b0c0aa2bSBlaise Bourdin FREECHAR(name, c2); 359b0c0aa2bSBlaise Bourdin } 360b0c0aa2bSBlaise Bourdin 3615975b3b6SBarry 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) 3629306f9a3SSatish Balay { 3639306f9a3SSatish Balay char *c1, *c2; 364ace3abfcSBarry Smith PetscBool flag; 3659306f9a3SSatish Balay 3669306f9a3SSatish Balay FIXCHAR(pre, len1, c1); 3679306f9a3SSatish Balay FIXCHAR(name, len2, c2); 3685975b3b6SBarry Smith *ierr = PetscOptionsGetReal(*options, c1, c2, dvalue, &flag); 3695975b3b6SBarry Smith if (*ierr) return; 3705c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 3719306f9a3SSatish Balay FREECHAR(pre, c1); 3729306f9a3SSatish Balay FREECHAR(name, c2); 3739306f9a3SSatish Balay } 3749306f9a3SSatish Balay 3755975b3b6SBarry 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) 3767a7a6802SBarry Smith { 3777a7a6802SBarry Smith char *c1, *c2; 3787a7a6802SBarry Smith PetscBool flag; 3797a7a6802SBarry Smith 3807a7a6802SBarry Smith FIXCHAR(pre, len1, c1); 3817a7a6802SBarry Smith FIXCHAR(name, len2, c2); 3825975b3b6SBarry Smith *ierr = PetscOptionsGetScalar(*options, c1, c2, dvalue, &flag); 3835975b3b6SBarry Smith if (*ierr) return; 3847a7a6802SBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 3857a7a6802SBarry Smith FREECHAR(pre, c1); 3867a7a6802SBarry Smith FREECHAR(name, c2); 3877a7a6802SBarry Smith } 3887a7a6802SBarry Smith 3895975b3b6SBarry 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) 390b0c0aa2bSBlaise Bourdin { 391b0c0aa2bSBlaise Bourdin char *c1, *c2; 392b0c0aa2bSBlaise Bourdin PetscBool flag; 393b0c0aa2bSBlaise Bourdin 394b0c0aa2bSBlaise Bourdin FIXCHAR(pre, len1, c1); 395b0c0aa2bSBlaise Bourdin FIXCHAR(name, len2, c2); 3965975b3b6SBarry Smith *ierr = PetscOptionsGetScalarArray(*options, c1, c2, dvalue, nmax, &flag); 3975975b3b6SBarry Smith if (*ierr) return; 398b0c0aa2bSBlaise Bourdin if (!FORTRANNULLBOOL(flg)) *flg = flag; 399b0c0aa2bSBlaise Bourdin FREECHAR(pre, c1); 400b0c0aa2bSBlaise Bourdin FREECHAR(name, c2); 401b0c0aa2bSBlaise Bourdin } 402b0c0aa2bSBlaise Bourdin 4035975b3b6SBarry 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) 4049306f9a3SSatish Balay { 4059306f9a3SSatish Balay char *c1, *c2; 406ace3abfcSBarry Smith PetscBool flag; 4079306f9a3SSatish Balay 4089306f9a3SSatish Balay FIXCHAR(pre, len1, c1); 4099306f9a3SSatish Balay FIXCHAR(name, len2, c2); 4105975b3b6SBarry Smith *ierr = PetscOptionsGetRealArray(*options, c1, c2, dvalue, nmax, &flag); 4115975b3b6SBarry Smith if (*ierr) return; 4125c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 4139306f9a3SSatish Balay FREECHAR(pre, c1); 4149306f9a3SSatish Balay FREECHAR(name, c2); 4159306f9a3SSatish Balay } 4169306f9a3SSatish Balay 4175975b3b6SBarry 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) 4189306f9a3SSatish Balay { 4199306f9a3SSatish Balay char *c1, *c2; 420ace3abfcSBarry Smith PetscBool flag; 4219306f9a3SSatish Balay 4229306f9a3SSatish Balay FIXCHAR(pre, len1, c1); 4239306f9a3SSatish Balay FIXCHAR(name, len2, c2); 4245975b3b6SBarry Smith *ierr = PetscOptionsGetIntArray(*options, c1, c2, dvalue, nmax, &flag); 4255975b3b6SBarry Smith if (*ierr) return; 4265c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 4279306f9a3SSatish Balay FREECHAR(pre, c1); 4289306f9a3SSatish Balay FREECHAR(name, c2); 4299306f9a3SSatish Balay } 4309306f9a3SSatish Balay 4315975b3b6SBarry 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) 4329306f9a3SSatish Balay { 4339306f9a3SSatish Balay char *c1, *c2, *c3; 4344610e317SSatish Balay size_t len3; 435ace3abfcSBarry Smith PetscBool flag; 4369306f9a3SSatish Balay 4379306f9a3SSatish Balay FIXCHAR(pre, len1, c1); 4389306f9a3SSatish Balay FIXCHAR(name, len2, c2); 4399306f9a3SSatish Balay c3 = string; 4409306f9a3SSatish Balay len3 = len - 1; 4419306f9a3SSatish Balay 4425975b3b6SBarry Smith *ierr = PetscOptionsGetString(*options, c1, c2, c3, len3, &flag); 4435975b3b6SBarry Smith if (*ierr) return; 4445c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 4459306f9a3SSatish Balay FREECHAR(pre, c1); 4469306f9a3SSatish Balay FREECHAR(name, c2); 4477c363081SBarry Smith FIXRETURNCHAR(flag, string, len); 4489306f9a3SSatish Balay } 4499306f9a3SSatish Balay 45019caf8f3SSatish Balay PETSC_EXTERN void petscgetprogramname_(char *name, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len_in) 4519306f9a3SSatish Balay { 4529306f9a3SSatish Balay char *tmp; 4534610e317SSatish Balay size_t len; 4549306f9a3SSatish Balay tmp = name; 4559306f9a3SSatish Balay len = len_in - 1; 4569306f9a3SSatish Balay *ierr = PetscGetProgramName(tmp, len); 4577c363081SBarry Smith FIXRETURNCHAR(PETSC_TRUE, name, len_in); 4589306f9a3SSatish Balay } 4599306f9a3SSatish Balay 460a530d236SBarry Smith PETSC_EXTERN void petscsubcommgetparent_(PetscSubcomm *scomm, MPI_Fint *pcomm, int *ierr) 461a530d236SBarry Smith { 462a530d236SBarry Smith MPI_Comm tcomm; 463a530d236SBarry Smith *ierr = PetscSubcommGetParent(*scomm, &tcomm); 464a530d236SBarry Smith *pcomm = MPI_Comm_c2f(tcomm); 465a530d236SBarry Smith } 466a530d236SBarry Smith 467a530d236SBarry Smith PETSC_EXTERN void petscsubcommgetcontiguousparent_(PetscSubcomm *scomm, MPI_Fint *pcomm, int *ierr) 468a530d236SBarry Smith { 469a530d236SBarry Smith MPI_Comm tcomm; 470a530d236SBarry Smith *ierr = PetscSubcommGetContiguousParent(*scomm, &tcomm); 471a530d236SBarry Smith *pcomm = MPI_Comm_c2f(tcomm); 472a530d236SBarry Smith } 473a530d236SBarry Smith 474a530d236SBarry Smith PETSC_EXTERN void petscsubcommgetchild_(PetscSubcomm *scomm, MPI_Fint *ccomm, int *ierr) 475a530d236SBarry Smith { 476a530d236SBarry Smith MPI_Comm tcomm; 477a530d236SBarry Smith *ierr = PetscSubcommGetChild(*scomm, &tcomm); 478a530d236SBarry Smith *ccomm = MPI_Comm_c2f(tcomm); 479a530d236SBarry Smith } 480