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 189306f9a3SSatish Balay #define petscoptionsgetintarray_ PETSCOPTIONSGETINTARRAY 199306f9a3SSatish Balay #define petscoptionssetvalue_ PETSCOPTIONSSETVALUE 209306f9a3SSatish Balay #define petscoptionsclearvalue_ PETSCOPTIONSCLEARVALUE 219306f9a3SSatish Balay #define petscoptionshasname_ PETSCOPTIONSHASNAME 229306f9a3SSatish Balay #define petscoptionsgetint_ PETSCOPTIONSGETINT 239306f9a3SSatish Balay #define petscoptionsgetreal_ PETSCOPTIONSGETREAL 247a7a6802SBarry Smith #define petscoptionsgetscalar_ PETSCOPTIONSGETSCALAR 259306f9a3SSatish Balay #define petscoptionsgetrealarray_ PETSCOPTIONSGETREALARRAY 269306f9a3SSatish Balay #define petscoptionsgetstring_ PETSCOPTIONSGETSTRING 279306f9a3SSatish Balay #define petscgetprogramname PETSCGETPROGRAMNAME 289306f9a3SSatish Balay #define petscoptionsinsertfile_ PETSCOPTIONSINSERTFILE 29a542b6e8SBarry Smith #define petscoptionsclear_ PETSCOPTIONSCLEAR 30ab66e762SBarry Smith #define petscoptionsinsertstring_ PETSCOPTIONSINSERTSTRING 313a15af8cSBlaise Bourdin #define petscoptionsview_ PETSCOPTIONSVIEW 32ac9b46efSSatish Balay #define petscoptionsleft_ PETSCOPTIONSLEFT 33a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_ PETSCOBJECTVIEWFROMOPTIONS 349306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 35a530d236SBarry Smith #define petscsubcommview_ petscsubcommview 36a530d236SBarry Smith #define petscsubcommgetparent_ petscsubcommgetparent 37a530d236SBarry Smith #define petscsubcommgetcontiguousparent_ petscsubcommgetcontiguousparent 38a530d236SBarry Smith #define petscsubcommgetchild_ petscsubcommgetchild 39455a3cf9SBarry Smith #define petscoptionsallused_ petscoptionsallused 4047340559SBarry Smith #define petscoptionsgetenumprivate_ petscoptionsgetenumprivate 4108f86b60SJed Brown #define petscoptionsgetbool_ petscoptionsgetbool 429306f9a3SSatish Balay #define petscoptionssetvalue_ petscoptionssetvalue 439306f9a3SSatish Balay #define petscoptionsclearvalue_ petscoptionsclearvalue 449306f9a3SSatish Balay #define petscoptionshasname_ petscoptionshasname 459306f9a3SSatish Balay #define petscoptionsgetint_ petscoptionsgetint 469306f9a3SSatish Balay #define petscoptionsgetreal_ petscoptionsgetreal 477a7a6802SBarry Smith #define petscoptionsgetscalar_ petscoptionsgetscalar 489306f9a3SSatish Balay #define petscoptionsgetrealarray_ petscoptionsgetrealarray 499306f9a3SSatish Balay #define petscoptionsgetstring_ petscoptionsgetstring 509306f9a3SSatish Balay #define petscoptionsgetintarray_ petscoptionsgetintarray 519306f9a3SSatish Balay #define petscgetprogramname_ petscgetprogramname 529306f9a3SSatish Balay #define petscoptionsinsertfile_ petscoptionsinsertfile 53a542b6e8SBarry Smith #define petscoptionsclear_ petscoptionsclear 54ab66e762SBarry Smith #define petscoptionsinsertstring_ petscoptionsinsertstring 553a15af8cSBlaise Bourdin #define petscoptionsview_ petscoptionsview 56ac9b46efSSatish Balay #define petscoptionsleft_ petscoptionsleft 57a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_ petscobjectviewfromoptions 589306f9a3SSatish Balay #endif 599306f9a3SSatish Balay 609306f9a3SSatish Balay /* ---------------------------------------------------------------------*/ 619306f9a3SSatish Balay 6219caf8f3SSatish Balay PETSC_EXTERN void petscoptionsinsertstring_(PetscOptions *options,char* file,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 63ab66e762SBarry Smith { 64ab66e762SBarry Smith char *c1; 65ab66e762SBarry Smith 66ab66e762SBarry Smith FIXCHAR(file,len,c1); 67d49bb8f9SBarry Smith *ierr = PetscOptionsInsertString(*options,c1);if (*ierr) return; 68ab66e762SBarry Smith FREECHAR(file,c1); 69ab66e762SBarry Smith } 70ab66e762SBarry Smith 7119caf8f3SSatish Balay PETSC_EXTERN void petscoptionsinsertfile_(MPI_Fint *comm,PetscOptions *options,char* file,PetscBool *require,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 729306f9a3SSatish Balay { 739306f9a3SSatish Balay char *c1; 749306f9a3SSatish Balay 759306f9a3SSatish Balay FIXCHAR(file,len,c1); 76d49bb8f9SBarry Smith *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm),*options,c1,*require);if (*ierr) return; 779306f9a3SSatish Balay FREECHAR(file,c1); 789306f9a3SSatish Balay } 799306f9a3SSatish Balay 8019caf8f3SSatish Balay PETSC_EXTERN void petscoptionssetvalue_(PetscOptions *options,char* name,char* value, 8119caf8f3SSatish Balay PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 829306f9a3SSatish Balay { 839306f9a3SSatish Balay char *c1,*c2; 849306f9a3SSatish Balay 859306f9a3SSatish Balay FIXCHAR(name,len1,c1); 869306f9a3SSatish Balay FIXCHAR(value,len2,c2); 87d49bb8f9SBarry Smith *ierr = PetscOptionsSetValue(*options,c1,c2);if (*ierr) return; 889306f9a3SSatish Balay FREECHAR(name,c1); 899306f9a3SSatish Balay FREECHAR(value,c2); 909306f9a3SSatish Balay } 919306f9a3SSatish Balay 9219caf8f3SSatish Balay PETSC_EXTERN void petscoptionsclear_(PetscOptions *options,PetscErrorCode *ierr) 93a542b6e8SBarry Smith { 94c5929fdfSBarry Smith *ierr = PetscOptionsClear(*options); 95a542b6e8SBarry Smith } 96a542b6e8SBarry Smith 9719caf8f3SSatish Balay PETSC_EXTERN void petscoptionsclearvalue_(PetscOptions *options,char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 989306f9a3SSatish Balay { 999306f9a3SSatish Balay char *c1; 1009306f9a3SSatish Balay 1019306f9a3SSatish Balay FIXCHAR(name,len,c1); 102d49bb8f9SBarry Smith *ierr = PetscOptionsClearValue(*options,c1);if (*ierr) return; 1039306f9a3SSatish Balay FREECHAR(name,c1); 1049306f9a3SSatish Balay } 1059306f9a3SSatish Balay 10619caf8f3SSatish Balay PETSC_EXTERN void petscoptionshasname_(PetscOptions *options,char* pre,char* name, 10719caf8f3SSatish Balay PetscBool *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 1089306f9a3SSatish Balay { 1099306f9a3SSatish Balay char *c1,*c2; 1109306f9a3SSatish Balay 1119306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1129306f9a3SSatish Balay FIXCHAR(name,len2,c2); 113d49bb8f9SBarry Smith *ierr = PetscOptionsHasName(*options,c1,c2,flg);if (*ierr) return; 1149306f9a3SSatish Balay FREECHAR(pre,c1); 1159306f9a3SSatish Balay FREECHAR(name,c2); 1169306f9a3SSatish Balay } 1179306f9a3SSatish Balay 118455a3cf9SBarry Smith 11919caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetint_(PetscOptions *opt,char* pre,char* name, 12019caf8f3SSatish Balay PetscInt *ivalue,PetscBool *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 1219306f9a3SSatish Balay { 1229306f9a3SSatish Balay char *c1,*c2; 123ace3abfcSBarry Smith PetscBool flag; 1249306f9a3SSatish Balay 1259306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1269306f9a3SSatish Balay FIXCHAR(name,len2,c2); 127d49bb8f9SBarry Smith *ierr = PetscOptionsGetInt(*opt,c1,c2,ivalue,&flag);if (*ierr) return; 1285c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1299306f9a3SSatish Balay FREECHAR(pre,c1); 1309306f9a3SSatish Balay FREECHAR(name,c2); 1319306f9a3SSatish Balay } 1329306f9a3SSatish Balay 13319caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetenumprivate_(PetscOptions *options,char* pre,char* name,const char *const*list, 13419caf8f3SSatish Balay PetscEnum *ivalue,PetscBool *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 13547340559SBarry Smith { 13647340559SBarry Smith char *c1,*c2; 13747340559SBarry Smith PetscBool flag; 13847340559SBarry Smith 13947340559SBarry Smith FIXCHAR(pre,len1,c1); 14047340559SBarry Smith FIXCHAR(name,len2,c2); 141d49bb8f9SBarry Smith *ierr = PetscOptionsGetEnum(*options,c1,c2,list,ivalue,&flag);if (*ierr) return; 14247340559SBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 14347340559SBarry Smith FREECHAR(pre,c1); 14447340559SBarry Smith FREECHAR(name,c2); 14547340559SBarry Smith } 14647340559SBarry Smith 14719caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetbool_(PetscOptions *options,char* pre,char* name, 14819caf8f3SSatish Balay PetscBool *ivalue,PetscBool *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 1499306f9a3SSatish Balay { 1509306f9a3SSatish Balay char *c1,*c2; 151ace3abfcSBarry Smith PetscBool flag; 1529306f9a3SSatish Balay 1539306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1549306f9a3SSatish Balay FIXCHAR(name,len2,c2); 155d49bb8f9SBarry Smith *ierr = PetscOptionsGetBool(*options,c1,c2,ivalue,&flag);if (*ierr) return; 1565c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1579306f9a3SSatish Balay FREECHAR(pre,c1); 1589306f9a3SSatish Balay FREECHAR(name,c2); 1599306f9a3SSatish Balay } 1609306f9a3SSatish Balay 16119caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetreal_(PetscOptions *options,char* pre,char* name, 16219caf8f3SSatish Balay PetscReal *dvalue,PetscBool *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 1639306f9a3SSatish Balay { 1649306f9a3SSatish Balay char *c1,*c2; 165ace3abfcSBarry Smith PetscBool flag; 1669306f9a3SSatish Balay 1679306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1689306f9a3SSatish Balay FIXCHAR(name,len2,c2); 169d49bb8f9SBarry Smith *ierr = PetscOptionsGetReal(*options,c1,c2,dvalue,&flag);if (*ierr) return; 1705c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1719306f9a3SSatish Balay FREECHAR(pre,c1); 1729306f9a3SSatish Balay FREECHAR(name,c2); 1739306f9a3SSatish Balay } 1749306f9a3SSatish Balay 17519caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetscalar_(PetscOptions *options,char* pre,char* name, 17619caf8f3SSatish Balay PetscScalar *dvalue,PetscBool *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 1777a7a6802SBarry Smith { 1787a7a6802SBarry Smith char *c1,*c2; 1797a7a6802SBarry Smith PetscBool flag; 1807a7a6802SBarry Smith 1817a7a6802SBarry Smith FIXCHAR(pre,len1,c1); 1827a7a6802SBarry Smith FIXCHAR(name,len2,c2); 183d49bb8f9SBarry Smith *ierr = PetscOptionsGetScalar(*options,c1,c2,dvalue,&flag);if (*ierr) return; 1847a7a6802SBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 1857a7a6802SBarry Smith FREECHAR(pre,c1); 1867a7a6802SBarry Smith FREECHAR(name,c2); 1877a7a6802SBarry Smith } 1887a7a6802SBarry Smith 18919caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetrealarray_(PetscOptions *options,char* pre,char* name, 19019caf8f3SSatish Balay PetscReal *dvalue,PetscInt *nmax,PetscBool *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 1919306f9a3SSatish Balay { 1929306f9a3SSatish Balay char *c1,*c2; 193ace3abfcSBarry Smith PetscBool flag; 1949306f9a3SSatish Balay 1959306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1969306f9a3SSatish Balay FIXCHAR(name,len2,c2); 197d49bb8f9SBarry Smith *ierr = PetscOptionsGetRealArray(*options,c1,c2,dvalue,nmax,&flag);if (*ierr) return; 1985c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1999306f9a3SSatish Balay FREECHAR(pre,c1); 2009306f9a3SSatish Balay FREECHAR(name,c2); 2019306f9a3SSatish Balay } 2029306f9a3SSatish Balay 20319caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetintarray_(PetscOptions *options,char* pre,char* name, 20419caf8f3SSatish Balay PetscInt *dvalue,PetscInt *nmax,PetscBool *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 2059306f9a3SSatish Balay { 2069306f9a3SSatish Balay char *c1,*c2; 207ace3abfcSBarry Smith PetscBool flag; 2089306f9a3SSatish Balay 2099306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 2109306f9a3SSatish Balay FIXCHAR(name,len2,c2); 211d49bb8f9SBarry Smith *ierr = PetscOptionsGetIntArray(*options,c1,c2,dvalue,nmax,&flag);if (*ierr) return; 2125c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 2139306f9a3SSatish Balay FREECHAR(pre,c1); 2149306f9a3SSatish Balay FREECHAR(name,c2); 2159306f9a3SSatish Balay } 2169306f9a3SSatish Balay 21719caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetstring_(PetscOptions *options,char* pre,char* name, 21819caf8f3SSatish Balay char* string,PetscBool *flg, 21919caf8f3SSatish Balay PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2,PETSC_FORTRAN_CHARLEN_T len) 2209306f9a3SSatish Balay { 2219306f9a3SSatish Balay char *c1,*c2,*c3; 2224610e317SSatish Balay size_t len3; 223ace3abfcSBarry Smith PetscBool flag; 2249306f9a3SSatish Balay 2259306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 2269306f9a3SSatish Balay FIXCHAR(name,len2,c2); 2279306f9a3SSatish Balay c3 = string; 2289306f9a3SSatish Balay len3 = len - 1; 2299306f9a3SSatish Balay 230d49bb8f9SBarry Smith *ierr = PetscOptionsGetString(*options,c1,c2,c3,len3,&flag);if (*ierr) return; 2315c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 2329306f9a3SSatish Balay FREECHAR(pre,c1); 2339306f9a3SSatish Balay FREECHAR(name,c2); 2347c363081SBarry Smith FIXRETURNCHAR(flag,string,len); 2359306f9a3SSatish Balay } 2369306f9a3SSatish Balay 23719caf8f3SSatish Balay PETSC_EXTERN void petscgetprogramname_(char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len_in) 2389306f9a3SSatish Balay { 2399306f9a3SSatish Balay char *tmp; 2404610e317SSatish Balay size_t len; 2419306f9a3SSatish Balay tmp = name; 2429306f9a3SSatish Balay len = len_in - 1; 2439306f9a3SSatish Balay *ierr = PetscGetProgramName(tmp,len); 2447c363081SBarry Smith FIXRETURNCHAR(PETSC_TRUE,name,len_in); 2459306f9a3SSatish Balay } 2469306f9a3SSatish Balay 24719caf8f3SSatish Balay PETSC_EXTERN void petscoptionsview_(PetscOptions *options,PetscViewer *vin,PetscErrorCode *ierr) 2483a15af8cSBlaise Bourdin { 2493a15af8cSBlaise Bourdin PetscViewer v; 2503a15af8cSBlaise Bourdin 2513a15af8cSBlaise Bourdin PetscPatchDefaultViewers_Fortran(vin,v); 252c5929fdfSBarry Smith *ierr = PetscOptionsView(*options,v); 2533a15af8cSBlaise Bourdin } 2543a15af8cSBlaise Bourdin 25519caf8f3SSatish Balay PETSC_EXTERN void petscobjectviewfromoptions_(PetscObject *obj,PetscObject *bobj,char* option,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T loption) 256a2865142SMatthew G. Knepley { 257685405a1SBarry Smith char *o; 258a2865142SMatthew G. Knepley 259a2865142SMatthew G. Knepley FIXCHAR(option, loption, o); 260*b14c0cbaSBlaise Bourdin CHKFORTRANNULLOBJECT(obj); 261d49bb8f9SBarry Smith *ierr = PetscObjectViewFromOptions(*obj, *bobj, o);if (*ierr) return; 262a2865142SMatthew G. Knepley FREECHAR(option, o); 263a2865142SMatthew G. Knepley } 264a530d236SBarry Smith 265a530d236SBarry Smith PETSC_EXTERN void petscsubcommgetparent_(PetscSubcomm *scomm,MPI_Fint *pcomm, int *ierr) 266a530d236SBarry Smith { 267a530d236SBarry Smith MPI_Comm tcomm; 268a530d236SBarry Smith *ierr = PetscSubcommGetParent(*scomm,&tcomm); 269a530d236SBarry Smith *pcomm = MPI_Comm_c2f(tcomm); 270a530d236SBarry Smith } 271a530d236SBarry Smith 272a530d236SBarry Smith PETSC_EXTERN void petscsubcommgetcontiguousparent_(PetscSubcomm *scomm,MPI_Fint *pcomm, int *ierr) 273a530d236SBarry Smith { 274a530d236SBarry Smith MPI_Comm tcomm; 275a530d236SBarry Smith *ierr = PetscSubcommGetContiguousParent(*scomm,&tcomm); 276a530d236SBarry Smith *pcomm = MPI_Comm_c2f(tcomm); 277a530d236SBarry Smith } 278a530d236SBarry Smith 279a530d236SBarry Smith PETSC_EXTERN void petscsubcommgetchild_(PetscSubcomm *scomm,MPI_Fint *ccomm, int *ierr) 280a530d236SBarry Smith { 281a530d236SBarry Smith MPI_Comm tcomm; 282a530d236SBarry Smith *ierr = PetscSubcommGetChild(*scomm,&tcomm); 283a530d236SBarry Smith *ccomm = MPI_Comm_c2f(tcomm); 284a530d236SBarry Smith } 285a530d236SBarry Smith 286a530d236SBarry Smith PETSC_EXTERN void petscsubcommview_(PetscSubcomm *psubcomm,PetscViewer *viewer, int *ierr) 287a530d236SBarry Smith { 288a530d236SBarry Smith PetscViewer v; 289a530d236SBarry Smith PetscPatchDefaultViewers_Fortran(viewer,v); 290a530d236SBarry Smith *ierr = PetscSubcommView(*psubcomm,v); 291a530d236SBarry Smith } 292