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) 11*455a3cf9SBarry 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) 31*455a3cf9SBarry 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 54390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsinsertstring_(PetscOptions *options,char* file PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 55ab66e762SBarry Smith { 56ab66e762SBarry Smith char *c1; 57ab66e762SBarry Smith 58ab66e762SBarry Smith FIXCHAR(file,len,c1); 59c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 60c5929fdfSBarry Smith *ierr = PetscOptionsInsertString(*options,c1); 61ab66e762SBarry Smith FREECHAR(file,c1); 62ab66e762SBarry Smith } 63ab66e762SBarry Smith 64390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsinsertfile_(MPI_Fint *comm,PetscOptions *options,char* file PETSC_MIXED_LEN(len),PetscBool *require,PetscErrorCode *ierr PETSC_END_LEN(len)) 659306f9a3SSatish Balay { 669306f9a3SSatish Balay char *c1; 679306f9a3SSatish Balay 689306f9a3SSatish Balay FIXCHAR(file,len,c1); 69c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 70c5929fdfSBarry Smith *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm),*options,c1,*require); 719306f9a3SSatish Balay FREECHAR(file,c1); 729306f9a3SSatish Balay } 739306f9a3SSatish Balay 74390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionssetvalue_(PetscOptions *options,char* name PETSC_MIXED_LEN(len1),char* value PETSC_MIXED_LEN(len2), 759306f9a3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 769306f9a3SSatish Balay { 779306f9a3SSatish Balay char *c1,*c2; 789306f9a3SSatish Balay 799306f9a3SSatish Balay FIXCHAR(name,len1,c1); 809306f9a3SSatish Balay FIXCHAR(value,len2,c2); 81c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 82c5929fdfSBarry Smith *ierr = PetscOptionsSetValue(*options,c1,c2); 839306f9a3SSatish Balay FREECHAR(name,c1); 849306f9a3SSatish Balay FREECHAR(value,c2); 859306f9a3SSatish Balay } 869306f9a3SSatish Balay 87c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsclear_(PetscOptions *options,PetscErrorCode *ierr) 88a542b6e8SBarry Smith { 89c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 90c5929fdfSBarry Smith *ierr = PetscOptionsClear(*options); 91a542b6e8SBarry Smith } 92a542b6e8SBarry Smith 93390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsclearvalue_(PetscOptions *options,char* name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 949306f9a3SSatish Balay { 959306f9a3SSatish Balay char *c1; 969306f9a3SSatish Balay 979306f9a3SSatish Balay FIXCHAR(name,len,c1); 98c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 99c5929fdfSBarry Smith *ierr = PetscOptionsClearValue(*options,c1); 1009306f9a3SSatish Balay FREECHAR(name,c1); 1019306f9a3SSatish Balay } 1029306f9a3SSatish Balay 103390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionshasname_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2), 104ace3abfcSBarry Smith PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1059306f9a3SSatish Balay { 1069306f9a3SSatish Balay char *c1,*c2; 1079306f9a3SSatish Balay 1089306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1099306f9a3SSatish Balay FIXCHAR(name,len2,c2); 110c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 111c5929fdfSBarry Smith *ierr = PetscOptionsHasName(*options,c1,c2,flg); 1129306f9a3SSatish Balay FREECHAR(pre,c1); 1139306f9a3SSatish Balay FREECHAR(name,c2); 1149306f9a3SSatish Balay } 1159306f9a3SSatish Balay 116*455a3cf9SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsallused_(PetscOptions *opt,PetscInt *n,PetscErrorCode *ierr) 117*455a3cf9SBarry Smith { 118*455a3cf9SBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(opt); 119*455a3cf9SBarry Smith *ierr = PetscOptionsAllUsed(*opt,n); 120*455a3cf9SBarry Smith } 121*455a3cf9SBarry Smith 122390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetint_(PetscOptions *opt,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2), 123ace3abfcSBarry Smith PetscInt *ivalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1249306f9a3SSatish Balay { 1259306f9a3SSatish Balay char *c1,*c2; 126ace3abfcSBarry Smith PetscBool flag; 1279306f9a3SSatish Balay 1289306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1299306f9a3SSatish Balay FIXCHAR(name,len2,c2); 130c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(opt); 131c5929fdfSBarry Smith *ierr = PetscOptionsGetInt(*opt,c1,c2,ivalue,&flag); 1325c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1339306f9a3SSatish Balay FREECHAR(pre,c1); 1349306f9a3SSatish Balay FREECHAR(name,c2); 1359306f9a3SSatish Balay } 1369306f9a3SSatish Balay 137390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetenumprivate_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2),const char *const*list, 13847340559SBarry Smith PetscEnum *ivalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 13947340559SBarry Smith { 14047340559SBarry Smith char *c1,*c2; 14147340559SBarry Smith PetscBool flag; 14247340559SBarry Smith 14347340559SBarry Smith FIXCHAR(pre,len1,c1); 14447340559SBarry Smith FIXCHAR(name,len2,c2); 145c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 146c5929fdfSBarry Smith *ierr = PetscOptionsGetEnum(*options,c1,c2,list,ivalue,&flag); 14747340559SBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 14847340559SBarry Smith FREECHAR(pre,c1); 14947340559SBarry Smith FREECHAR(name,c2); 15047340559SBarry Smith } 15147340559SBarry Smith 152390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetbool_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2), 153ace3abfcSBarry Smith PetscBool *ivalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(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); 160c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 161c5929fdfSBarry Smith *ierr = PetscOptionsGetBool(*options,c1,c2,ivalue,&flag); 1625c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1639306f9a3SSatish Balay FREECHAR(pre,c1); 1649306f9a3SSatish Balay FREECHAR(name,c2); 1659306f9a3SSatish Balay } 1669306f9a3SSatish Balay 167390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetreal_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2), 168ace3abfcSBarry Smith PetscReal *dvalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1699306f9a3SSatish Balay { 1709306f9a3SSatish Balay char *c1,*c2; 171ace3abfcSBarry Smith PetscBool flag; 1729306f9a3SSatish Balay 1739306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1749306f9a3SSatish Balay FIXCHAR(name,len2,c2); 175c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 176c5929fdfSBarry Smith *ierr = PetscOptionsGetReal(*options,c1,c2,dvalue,&flag); 1775c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1789306f9a3SSatish Balay FREECHAR(pre,c1); 1799306f9a3SSatish Balay FREECHAR(name,c2); 1809306f9a3SSatish Balay } 1819306f9a3SSatish Balay 182390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetscalar_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2), 1837a7a6802SBarry Smith PetscScalar *dvalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1847a7a6802SBarry Smith { 1857a7a6802SBarry Smith char *c1,*c2; 1867a7a6802SBarry Smith PetscBool flag; 1877a7a6802SBarry Smith 1887a7a6802SBarry Smith FIXCHAR(pre,len1,c1); 1897a7a6802SBarry Smith FIXCHAR(name,len2,c2); 1907a7a6802SBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 191bf63e7e7SBarry Smith *ierr = PetscOptionsGetScalar(*options,c1,c2,dvalue,&flag); 1927a7a6802SBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 1937a7a6802SBarry Smith FREECHAR(pre,c1); 1947a7a6802SBarry Smith FREECHAR(name,c2); 1957a7a6802SBarry Smith } 1967a7a6802SBarry Smith 197390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetrealarray_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2), 198ace3abfcSBarry Smith PetscReal *dvalue,PetscInt *nmax,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1999306f9a3SSatish Balay { 2009306f9a3SSatish Balay char *c1,*c2; 201ace3abfcSBarry Smith PetscBool flag; 2029306f9a3SSatish Balay 2039306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 2049306f9a3SSatish Balay FIXCHAR(name,len2,c2); 205c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 206c5929fdfSBarry Smith *ierr = PetscOptionsGetRealArray(*options,c1,c2,dvalue,nmax,&flag); 2075c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 2089306f9a3SSatish Balay FREECHAR(pre,c1); 2099306f9a3SSatish Balay FREECHAR(name,c2); 2109306f9a3SSatish Balay } 2119306f9a3SSatish Balay 212390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetintarray_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2), 213ace3abfcSBarry Smith PetscInt *dvalue,PetscInt *nmax,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 2149306f9a3SSatish Balay { 2159306f9a3SSatish Balay char *c1,*c2; 216ace3abfcSBarry Smith PetscBool flag; 2179306f9a3SSatish Balay 2189306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 2199306f9a3SSatish Balay FIXCHAR(name,len2,c2); 220c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 221c5929fdfSBarry Smith *ierr = PetscOptionsGetIntArray(*options,c1,c2,dvalue,nmax,&flag); 2225c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 2239306f9a3SSatish Balay FREECHAR(pre,c1); 2249306f9a3SSatish Balay FREECHAR(name,c2); 2259306f9a3SSatish Balay } 2269306f9a3SSatish Balay 227390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetstring_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2), 228390e1bf2SBarry Smith char* string PETSC_MIXED_LEN(len),PetscBool *flg, 2299306f9a3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len)) 2309306f9a3SSatish Balay { 2319306f9a3SSatish Balay char *c1,*c2,*c3; 2324610e317SSatish Balay size_t len3; 233ace3abfcSBarry Smith PetscBool flag; 2349306f9a3SSatish Balay 2359306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 2369306f9a3SSatish Balay FIXCHAR(name,len2,c2); 2379306f9a3SSatish Balay c3 = string; 2389306f9a3SSatish Balay len3 = len - 1; 2399306f9a3SSatish Balay 240c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 241c5929fdfSBarry Smith *ierr = PetscOptionsGetString(*options,c1,c2,c3,len3,&flag); 2425c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 2439306f9a3SSatish Balay FREECHAR(pre,c1); 2449306f9a3SSatish Balay FREECHAR(name,c2); 2457c363081SBarry Smith FIXRETURNCHAR(flag,string,len); 2469306f9a3SSatish Balay } 2479306f9a3SSatish Balay 248390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscgetprogramname_(char* name PETSC_MIXED_LEN(len_in),PetscErrorCode *ierr PETSC_END_LEN(len_in)) 2499306f9a3SSatish Balay { 2509306f9a3SSatish Balay char *tmp; 2514610e317SSatish Balay size_t len; 2529306f9a3SSatish Balay tmp = name; 2539306f9a3SSatish Balay len = len_in - 1; 2549306f9a3SSatish Balay *ierr = PetscGetProgramName(tmp,len); 2557c363081SBarry Smith FIXRETURNCHAR(PETSC_TRUE,name,len_in); 2569306f9a3SSatish Balay } 2579306f9a3SSatish Balay 258c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsview_(PetscOptions *options,PetscViewer *vin,PetscErrorCode *ierr) 2593a15af8cSBlaise Bourdin { 2603a15af8cSBlaise Bourdin PetscViewer v; 2613a15af8cSBlaise Bourdin 2623a15af8cSBlaise Bourdin PetscPatchDefaultViewers_Fortran(vin,v); 263c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 264c5929fdfSBarry Smith *ierr = PetscOptionsView(*options,v); 2653a15af8cSBlaise Bourdin } 2663a15af8cSBlaise Bourdin 267ac9b46efSSatish Balay PETSC_EXTERN void PETSC_STDCALL petscoptionsleft_(PetscOptions *options,PetscErrorCode *ierr) 268ac9b46efSSatish Balay { 269ac9b46efSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(options); 270ac9b46efSSatish Balay *ierr = PetscOptionsLeft(*options); 271ac9b46efSSatish Balay } 272ac9b46efSSatish Balay 273ac9b46efSSatish Balay 274390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscobjectviewfromoptions_(PetscObject *obj,PetscObject *bobj,char* option PETSC_MIXED_LEN(loption),PetscErrorCode *ierr PETSC_END_LEN(loption)) 275a2865142SMatthew G. Knepley { 276685405a1SBarry Smith char *o; 277a2865142SMatthew G. Knepley 278a2865142SMatthew G. Knepley FIXCHAR(option, loption, o); 27946475a24SBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(bobj); 280685405a1SBarry Smith *ierr = PetscObjectViewFromOptions(*obj, *bobj, o); 281a2865142SMatthew G. Knepley FREECHAR(option, o); 282a2865142SMatthew G. Knepley } 283