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