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) 11455a3cf9SBarry Smith #define petscoptionsallused_ PETSCOPTIONSALLUSED 1247340559SBarry Smith #define petscoptionsgetenumprivate_ PETSCOPTIONSGETENUMPRIVATE 1308f86b60SJed Brown #define petscoptionsgetbool_ PETSCOPTIONSGETBOOL 149306f9a3SSatish Balay #define petscoptionsgetintarray_ PETSCOPTIONSGETINTARRAY 159306f9a3SSatish Balay #define petscoptionssetvalue_ PETSCOPTIONSSETVALUE 169306f9a3SSatish Balay #define petscoptionsclearvalue_ PETSCOPTIONSCLEARVALUE 179306f9a3SSatish Balay #define petscoptionshasname_ PETSCOPTIONSHASNAME 189306f9a3SSatish Balay #define petscoptionsgetint_ PETSCOPTIONSGETINT 199306f9a3SSatish Balay #define petscoptionsgetreal_ PETSCOPTIONSGETREAL 207a7a6802SBarry Smith #define petscoptionsgetscalar_ PETSCOPTIONSGETSCALAR 219306f9a3SSatish Balay #define petscoptionsgetrealarray_ PETSCOPTIONSGETREALARRAY 229306f9a3SSatish Balay #define petscoptionsgetstring_ PETSCOPTIONSGETSTRING 239306f9a3SSatish Balay #define petscgetprogramname PETSCGETPROGRAMNAME 249306f9a3SSatish Balay #define petscoptionsinsertfile_ PETSCOPTIONSINSERTFILE 25a542b6e8SBarry Smith #define petscoptionsclear_ PETSCOPTIONSCLEAR 26ab66e762SBarry Smith #define petscoptionsinsertstring_ PETSCOPTIONSINSERTSTRING 273a15af8cSBlaise Bourdin #define petscoptionsview_ PETSCOPTIONSVIEW 28ac9b46efSSatish Balay #define petscoptionsleft_ PETSCOPTIONSLEFT 29a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_ PETSCOBJECTVIEWFROMOPTIONS 309306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 31455a3cf9SBarry Smith #define petscoptionsallused_ petscoptionsallused 3247340559SBarry Smith #define petscoptionsgetenumprivate_ petscoptionsgetenumprivate 3308f86b60SJed Brown #define petscoptionsgetbool_ petscoptionsgetbool 349306f9a3SSatish Balay #define petscoptionssetvalue_ petscoptionssetvalue 359306f9a3SSatish Balay #define petscoptionsclearvalue_ petscoptionsclearvalue 369306f9a3SSatish Balay #define petscoptionshasname_ petscoptionshasname 379306f9a3SSatish Balay #define petscoptionsgetint_ petscoptionsgetint 389306f9a3SSatish Balay #define petscoptionsgetreal_ petscoptionsgetreal 397a7a6802SBarry Smith #define petscoptionsgetscalar_ petscoptionsgetscalar 409306f9a3SSatish Balay #define petscoptionsgetrealarray_ petscoptionsgetrealarray 419306f9a3SSatish Balay #define petscoptionsgetstring_ petscoptionsgetstring 429306f9a3SSatish Balay #define petscoptionsgetintarray_ petscoptionsgetintarray 439306f9a3SSatish Balay #define petscgetprogramname_ petscgetprogramname 449306f9a3SSatish Balay #define petscoptionsinsertfile_ petscoptionsinsertfile 45a542b6e8SBarry Smith #define petscoptionsclear_ petscoptionsclear 46ab66e762SBarry Smith #define petscoptionsinsertstring_ petscoptionsinsertstring 473a15af8cSBlaise Bourdin #define petscoptionsview_ petscoptionsview 48ac9b46efSSatish Balay #define petscoptionsleft_ petscoptionsleft 49a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_ petscobjectviewfromoptions 509306f9a3SSatish Balay #endif 519306f9a3SSatish Balay 529306f9a3SSatish Balay /* ---------------------------------------------------------------------*/ 539306f9a3SSatish Balay 54*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsinsertstring_(PetscOptions *options,char* file,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 55ab66e762SBarry Smith { 56ab66e762SBarry Smith char *c1; 57ab66e762SBarry Smith 58ab66e762SBarry Smith FIXCHAR(file,len,c1); 59d49bb8f9SBarry Smith *ierr = PetscOptionsInsertString(*options,c1);if (*ierr) return; 60ab66e762SBarry Smith FREECHAR(file,c1); 61ab66e762SBarry Smith } 62ab66e762SBarry Smith 63*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsinsertfile_(MPI_Fint *comm,PetscOptions *options,char* file,PetscBool *require,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 649306f9a3SSatish Balay { 659306f9a3SSatish Balay char *c1; 669306f9a3SSatish Balay 679306f9a3SSatish Balay FIXCHAR(file,len,c1); 68d49bb8f9SBarry Smith *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm),*options,c1,*require);if (*ierr) return; 699306f9a3SSatish Balay FREECHAR(file,c1); 709306f9a3SSatish Balay } 719306f9a3SSatish Balay 72*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionssetvalue_(PetscOptions *options,char* name,char* value, 73*19caf8f3SSatish Balay PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 749306f9a3SSatish Balay { 759306f9a3SSatish Balay char *c1,*c2; 769306f9a3SSatish Balay 779306f9a3SSatish Balay FIXCHAR(name,len1,c1); 789306f9a3SSatish Balay FIXCHAR(value,len2,c2); 79d49bb8f9SBarry Smith *ierr = PetscOptionsSetValue(*options,c1,c2);if (*ierr) return; 809306f9a3SSatish Balay FREECHAR(name,c1); 819306f9a3SSatish Balay FREECHAR(value,c2); 829306f9a3SSatish Balay } 839306f9a3SSatish Balay 84*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsclear_(PetscOptions *options,PetscErrorCode *ierr) 85a542b6e8SBarry Smith { 86c5929fdfSBarry Smith *ierr = PetscOptionsClear(*options); 87a542b6e8SBarry Smith } 88a542b6e8SBarry Smith 89*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsclearvalue_(PetscOptions *options,char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 909306f9a3SSatish Balay { 919306f9a3SSatish Balay char *c1; 929306f9a3SSatish Balay 939306f9a3SSatish Balay FIXCHAR(name,len,c1); 94d49bb8f9SBarry Smith *ierr = PetscOptionsClearValue(*options,c1);if (*ierr) return; 959306f9a3SSatish Balay FREECHAR(name,c1); 969306f9a3SSatish Balay } 979306f9a3SSatish Balay 98*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionshasname_(PetscOptions *options,char* pre,char* name, 99*19caf8f3SSatish Balay PetscBool *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 1009306f9a3SSatish Balay { 1019306f9a3SSatish Balay char *c1,*c2; 1029306f9a3SSatish Balay 1039306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1049306f9a3SSatish Balay FIXCHAR(name,len2,c2); 105d49bb8f9SBarry Smith *ierr = PetscOptionsHasName(*options,c1,c2,flg);if (*ierr) return; 1069306f9a3SSatish Balay FREECHAR(pre,c1); 1079306f9a3SSatish Balay FREECHAR(name,c2); 1089306f9a3SSatish Balay } 1099306f9a3SSatish Balay 110455a3cf9SBarry Smith 111*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetint_(PetscOptions *opt,char* pre,char* name, 112*19caf8f3SSatish Balay PetscInt *ivalue,PetscBool *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 1139306f9a3SSatish Balay { 1149306f9a3SSatish Balay char *c1,*c2; 115ace3abfcSBarry Smith PetscBool flag; 1169306f9a3SSatish Balay 1179306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1189306f9a3SSatish Balay FIXCHAR(name,len2,c2); 119d49bb8f9SBarry Smith *ierr = PetscOptionsGetInt(*opt,c1,c2,ivalue,&flag);if (*ierr) return; 1205c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1219306f9a3SSatish Balay FREECHAR(pre,c1); 1229306f9a3SSatish Balay FREECHAR(name,c2); 1239306f9a3SSatish Balay } 1249306f9a3SSatish Balay 125*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetenumprivate_(PetscOptions *options,char* pre,char* name,const char *const*list, 126*19caf8f3SSatish Balay PetscEnum *ivalue,PetscBool *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 12747340559SBarry Smith { 12847340559SBarry Smith char *c1,*c2; 12947340559SBarry Smith PetscBool flag; 13047340559SBarry Smith 13147340559SBarry Smith FIXCHAR(pre,len1,c1); 13247340559SBarry Smith FIXCHAR(name,len2,c2); 133d49bb8f9SBarry Smith *ierr = PetscOptionsGetEnum(*options,c1,c2,list,ivalue,&flag);if (*ierr) return; 13447340559SBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 13547340559SBarry Smith FREECHAR(pre,c1); 13647340559SBarry Smith FREECHAR(name,c2); 13747340559SBarry Smith } 13847340559SBarry Smith 139*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetbool_(PetscOptions *options,char* pre,char* name, 140*19caf8f3SSatish Balay PetscBool *ivalue,PetscBool *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 1419306f9a3SSatish Balay { 1429306f9a3SSatish Balay char *c1,*c2; 143ace3abfcSBarry Smith PetscBool flag; 1449306f9a3SSatish Balay 1459306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1469306f9a3SSatish Balay FIXCHAR(name,len2,c2); 147d49bb8f9SBarry Smith *ierr = PetscOptionsGetBool(*options,c1,c2,ivalue,&flag);if (*ierr) return; 1485c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1499306f9a3SSatish Balay FREECHAR(pre,c1); 1509306f9a3SSatish Balay FREECHAR(name,c2); 1519306f9a3SSatish Balay } 1529306f9a3SSatish Balay 153*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetreal_(PetscOptions *options,char* pre,char* name, 154*19caf8f3SSatish Balay PetscReal *dvalue,PetscBool *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 1559306f9a3SSatish Balay { 1569306f9a3SSatish Balay char *c1,*c2; 157ace3abfcSBarry Smith PetscBool flag; 1589306f9a3SSatish Balay 1599306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1609306f9a3SSatish Balay FIXCHAR(name,len2,c2); 161d49bb8f9SBarry Smith *ierr = PetscOptionsGetReal(*options,c1,c2,dvalue,&flag);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*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetscalar_(PetscOptions *options,char* pre,char* name, 168*19caf8f3SSatish Balay PetscScalar *dvalue,PetscBool *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 1697a7a6802SBarry Smith { 1707a7a6802SBarry Smith char *c1,*c2; 1717a7a6802SBarry Smith PetscBool flag; 1727a7a6802SBarry Smith 1737a7a6802SBarry Smith FIXCHAR(pre,len1,c1); 1747a7a6802SBarry Smith FIXCHAR(name,len2,c2); 175d49bb8f9SBarry Smith *ierr = PetscOptionsGetScalar(*options,c1,c2,dvalue,&flag);if (*ierr) return; 1767a7a6802SBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 1777a7a6802SBarry Smith FREECHAR(pre,c1); 1787a7a6802SBarry Smith FREECHAR(name,c2); 1797a7a6802SBarry Smith } 1807a7a6802SBarry Smith 181*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetrealarray_(PetscOptions *options,char* pre,char* name, 182*19caf8f3SSatish Balay PetscReal *dvalue,PetscInt *nmax,PetscBool *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 1839306f9a3SSatish Balay { 1849306f9a3SSatish Balay char *c1,*c2; 185ace3abfcSBarry Smith PetscBool flag; 1869306f9a3SSatish Balay 1879306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1889306f9a3SSatish Balay FIXCHAR(name,len2,c2); 189d49bb8f9SBarry Smith *ierr = PetscOptionsGetRealArray(*options,c1,c2,dvalue,nmax,&flag);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*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetintarray_(PetscOptions *options,char* pre,char* name, 196*19caf8f3SSatish Balay PetscInt *dvalue,PetscInt *nmax,PetscBool *flg,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2) 1979306f9a3SSatish Balay { 1989306f9a3SSatish Balay char *c1,*c2; 199ace3abfcSBarry Smith PetscBool flag; 2009306f9a3SSatish Balay 2019306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 2029306f9a3SSatish Balay FIXCHAR(name,len2,c2); 203d49bb8f9SBarry Smith *ierr = PetscOptionsGetIntArray(*options,c1,c2,dvalue,nmax,&flag);if (*ierr) return; 2045c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 2059306f9a3SSatish Balay FREECHAR(pre,c1); 2069306f9a3SSatish Balay FREECHAR(name,c2); 2079306f9a3SSatish Balay } 2089306f9a3SSatish Balay 209*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsgetstring_(PetscOptions *options,char* pre,char* name, 210*19caf8f3SSatish Balay char* string,PetscBool *flg, 211*19caf8f3SSatish Balay PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len1,PETSC_FORTRAN_CHARLEN_T len2,PETSC_FORTRAN_CHARLEN_T len) 2129306f9a3SSatish Balay { 2139306f9a3SSatish Balay char *c1,*c2,*c3; 2144610e317SSatish Balay size_t len3; 215ace3abfcSBarry Smith PetscBool flag; 2169306f9a3SSatish Balay 2179306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 2189306f9a3SSatish Balay FIXCHAR(name,len2,c2); 2199306f9a3SSatish Balay c3 = string; 2209306f9a3SSatish Balay len3 = len - 1; 2219306f9a3SSatish Balay 222d49bb8f9SBarry Smith *ierr = PetscOptionsGetString(*options,c1,c2,c3,len3,&flag);if (*ierr) return; 2235c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 2249306f9a3SSatish Balay FREECHAR(pre,c1); 2259306f9a3SSatish Balay FREECHAR(name,c2); 2267c363081SBarry Smith FIXRETURNCHAR(flag,string,len); 2279306f9a3SSatish Balay } 2289306f9a3SSatish Balay 229*19caf8f3SSatish Balay PETSC_EXTERN void petscgetprogramname_(char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len_in) 2309306f9a3SSatish Balay { 2319306f9a3SSatish Balay char *tmp; 2324610e317SSatish Balay size_t len; 2339306f9a3SSatish Balay tmp = name; 2349306f9a3SSatish Balay len = len_in - 1; 2359306f9a3SSatish Balay *ierr = PetscGetProgramName(tmp,len); 2367c363081SBarry Smith FIXRETURNCHAR(PETSC_TRUE,name,len_in); 2379306f9a3SSatish Balay } 2389306f9a3SSatish Balay 239*19caf8f3SSatish Balay PETSC_EXTERN void petscoptionsview_(PetscOptions *options,PetscViewer *vin,PetscErrorCode *ierr) 2403a15af8cSBlaise Bourdin { 2413a15af8cSBlaise Bourdin PetscViewer v; 2423a15af8cSBlaise Bourdin 2433a15af8cSBlaise Bourdin PetscPatchDefaultViewers_Fortran(vin,v); 244c5929fdfSBarry Smith *ierr = PetscOptionsView(*options,v); 2453a15af8cSBlaise Bourdin } 2463a15af8cSBlaise Bourdin 247*19caf8f3SSatish Balay PETSC_EXTERN void petscobjectviewfromoptions_(PetscObject *obj,PetscObject *bobj,char* option,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T loption) 248a2865142SMatthew G. Knepley { 249685405a1SBarry Smith char *o; 250a2865142SMatthew G. Knepley 251a2865142SMatthew G. Knepley FIXCHAR(option, loption, o); 252d49bb8f9SBarry Smith *ierr = PetscObjectViewFromOptions(*obj, *bobj, o);if (*ierr) return; 253a2865142SMatthew G. Knepley FREECHAR(option, o); 254a2865142SMatthew G. Knepley } 255