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) 1147340559SBarry Smith #define petscoptionsgetenumprivate_ PETSCOPTIONSGETENUMPRIVATE 1208f86b60SJed Brown #define petscoptionsgetbool_ PETSCOPTIONSGETBOOL 139306f9a3SSatish Balay #define petscoptionsgetintarray_ PETSCOPTIONSGETINTARRAY 149306f9a3SSatish Balay #define petscoptionssetvalue_ PETSCOPTIONSSETVALUE 159306f9a3SSatish Balay #define petscoptionsclearvalue_ PETSCOPTIONSCLEARVALUE 169306f9a3SSatish Balay #define petscoptionshasname_ PETSCOPTIONSHASNAME 179306f9a3SSatish Balay #define petscoptionsgetint_ PETSCOPTIONSGETINT 189306f9a3SSatish Balay #define petscoptionsgetreal_ PETSCOPTIONSGETREAL 19*7a7a6802SBarry Smith #define petscoptionsgetscalar_ PETSCOPTIONSGETSCALAR 209306f9a3SSatish Balay #define petscoptionsgetrealarray_ PETSCOPTIONSGETREALARRAY 219306f9a3SSatish Balay #define petscoptionsgetstring_ PETSCOPTIONSGETSTRING 229306f9a3SSatish Balay #define petscgetprogramname PETSCGETPROGRAMNAME 239306f9a3SSatish Balay #define petscoptionsinsertfile_ PETSCOPTIONSINSERTFILE 24a542b6e8SBarry Smith #define petscoptionsclear_ PETSCOPTIONSCLEAR 25ab66e762SBarry Smith #define petscoptionsinsertstring_ PETSCOPTIONSINSERTSTRING 263a15af8cSBlaise Bourdin #define petscoptionsview_ PETSCOPTIONSVIEW 27a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_ PETSCOBJECTVIEWFROMOPTIONS 289306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 2947340559SBarry Smith #define petscoptionsgetenumprivate_ petscoptionsgetenumprivate 3008f86b60SJed Brown #define petscoptionsgetbool_ petscoptionsgetbool 319306f9a3SSatish Balay #define petscoptionssetvalue_ petscoptionssetvalue 329306f9a3SSatish Balay #define petscoptionsclearvalue_ petscoptionsclearvalue 339306f9a3SSatish Balay #define petscoptionshasname_ petscoptionshasname 349306f9a3SSatish Balay #define petscoptionsgetint_ petscoptionsgetint 359306f9a3SSatish Balay #define petscoptionsgetreal_ petscoptionsgetreal 36*7a7a6802SBarry Smith #define petscoptionsgetscalar_ petscoptionsgetscalar 379306f9a3SSatish Balay #define petscoptionsgetrealarray_ petscoptionsgetrealarray 389306f9a3SSatish Balay #define petscoptionsgetstring_ petscoptionsgetstring 399306f9a3SSatish Balay #define petscoptionsgetintarray_ petscoptionsgetintarray 409306f9a3SSatish Balay #define petscgetprogramname_ petscgetprogramname 419306f9a3SSatish Balay #define petscoptionsinsertfile_ petscoptionsinsertfile 42a542b6e8SBarry Smith #define petscoptionsclear_ petscoptionsclear 43ab66e762SBarry Smith #define petscoptionsinsertstring_ petscoptionsinsertstring 443a15af8cSBlaise Bourdin #define petscoptionsview_ petscoptionsview 45a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_ petscobjectviewfromoptions 469306f9a3SSatish Balay #endif 479306f9a3SSatish Balay 489306f9a3SSatish Balay /* ---------------------------------------------------------------------*/ 499306f9a3SSatish Balay 50c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsinsertstring_(PetscOptions *options,CHAR file PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 51ab66e762SBarry Smith { 52ab66e762SBarry Smith char *c1; 53ab66e762SBarry Smith 54ab66e762SBarry Smith FIXCHAR(file,len,c1); 55c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 56c5929fdfSBarry Smith *ierr = PetscOptionsInsertString(*options,c1); 57ab66e762SBarry Smith FREECHAR(file,c1); 58ab66e762SBarry Smith } 59ab66e762SBarry Smith 60c5929fdfSBarry 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)) 619306f9a3SSatish Balay { 629306f9a3SSatish Balay char *c1; 639306f9a3SSatish Balay 649306f9a3SSatish Balay FIXCHAR(file,len,c1); 65c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 66c5929fdfSBarry Smith *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm),*options,c1,*require); 679306f9a3SSatish Balay FREECHAR(file,c1); 689306f9a3SSatish Balay } 699306f9a3SSatish Balay 70c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionssetvalue_(PetscOptions *options,CHAR name PETSC_MIXED_LEN(len1),CHAR value PETSC_MIXED_LEN(len2), 719306f9a3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 729306f9a3SSatish Balay { 739306f9a3SSatish Balay char *c1,*c2; 749306f9a3SSatish Balay 759306f9a3SSatish Balay FIXCHAR(name,len1,c1); 769306f9a3SSatish Balay FIXCHAR(value,len2,c2); 77c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 78c5929fdfSBarry Smith *ierr = PetscOptionsSetValue(*options,c1,c2); 799306f9a3SSatish Balay FREECHAR(name,c1); 809306f9a3SSatish Balay FREECHAR(value,c2); 819306f9a3SSatish Balay } 829306f9a3SSatish Balay 83c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsclear_(PetscOptions *options,PetscErrorCode *ierr) 84a542b6e8SBarry Smith { 85c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 86c5929fdfSBarry Smith *ierr = PetscOptionsClear(*options); 87a542b6e8SBarry Smith } 88a542b6e8SBarry Smith 89c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsclearvalue_(PetscOptions *options,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 909306f9a3SSatish Balay { 919306f9a3SSatish Balay char *c1; 929306f9a3SSatish Balay 939306f9a3SSatish Balay FIXCHAR(name,len,c1); 94c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 95c5929fdfSBarry Smith *ierr = PetscOptionsClearValue(*options,c1); 969306f9a3SSatish Balay FREECHAR(name,c1); 979306f9a3SSatish Balay } 989306f9a3SSatish Balay 99c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionshasname_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 100ace3abfcSBarry Smith PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1019306f9a3SSatish Balay { 1029306f9a3SSatish Balay char *c1,*c2; 1039306f9a3SSatish Balay 1049306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1059306f9a3SSatish Balay FIXCHAR(name,len2,c2); 106c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 107c5929fdfSBarry Smith *ierr = PetscOptionsHasName(*options,c1,c2,flg); 1089306f9a3SSatish Balay FREECHAR(pre,c1); 1099306f9a3SSatish Balay FREECHAR(name,c2); 1109306f9a3SSatish Balay } 1119306f9a3SSatish Balay 112c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetint_(PetscOptions *opt,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 113ace3abfcSBarry Smith PetscInt *ivalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1149306f9a3SSatish Balay { 1159306f9a3SSatish Balay char *c1,*c2; 116ace3abfcSBarry Smith PetscBool flag; 1179306f9a3SSatish Balay 1189306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1199306f9a3SSatish Balay FIXCHAR(name,len2,c2); 120c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(opt); 121c5929fdfSBarry Smith *ierr = PetscOptionsGetInt(*opt,c1,c2,ivalue,&flag); 1225c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1239306f9a3SSatish Balay FREECHAR(pre,c1); 1249306f9a3SSatish Balay FREECHAR(name,c2); 1259306f9a3SSatish Balay } 1269306f9a3SSatish Balay 127c5929fdfSBarry 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, 12847340559SBarry Smith PetscEnum *ivalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 12947340559SBarry Smith { 13047340559SBarry Smith char *c1,*c2; 13147340559SBarry Smith PetscBool flag; 13247340559SBarry Smith 13347340559SBarry Smith FIXCHAR(pre,len1,c1); 13447340559SBarry Smith FIXCHAR(name,len2,c2); 135c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 136c5929fdfSBarry Smith *ierr = PetscOptionsGetEnum(*options,c1,c2,list,ivalue,&flag); 13747340559SBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 13847340559SBarry Smith FREECHAR(pre,c1); 13947340559SBarry Smith FREECHAR(name,c2); 14047340559SBarry Smith } 14147340559SBarry Smith 142c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetbool_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 143ace3abfcSBarry Smith PetscBool *ivalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1449306f9a3SSatish Balay { 1459306f9a3SSatish Balay char *c1,*c2; 146ace3abfcSBarry Smith PetscBool flag; 1479306f9a3SSatish Balay 1489306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1499306f9a3SSatish Balay FIXCHAR(name,len2,c2); 150c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 151c5929fdfSBarry Smith *ierr = PetscOptionsGetBool(*options,c1,c2,ivalue,&flag); 1525c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1539306f9a3SSatish Balay FREECHAR(pre,c1); 1549306f9a3SSatish Balay FREECHAR(name,c2); 1559306f9a3SSatish Balay } 1569306f9a3SSatish Balay 157c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetreal_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 158ace3abfcSBarry Smith PetscReal *dvalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1599306f9a3SSatish Balay { 1609306f9a3SSatish Balay char *c1,*c2; 161ace3abfcSBarry Smith PetscBool flag; 1629306f9a3SSatish Balay 1639306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1649306f9a3SSatish Balay FIXCHAR(name,len2,c2); 165c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 166c5929fdfSBarry Smith *ierr = PetscOptionsGetReal(*options,c1,c2,dvalue,&flag); 1675c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1689306f9a3SSatish Balay FREECHAR(pre,c1); 1699306f9a3SSatish Balay FREECHAR(name,c2); 1709306f9a3SSatish Balay } 1719306f9a3SSatish Balay 172*7a7a6802SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetscalar_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 173*7a7a6802SBarry Smith PetscScalar *dvalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 174*7a7a6802SBarry Smith { 175*7a7a6802SBarry Smith char *c1,*c2; 176*7a7a6802SBarry Smith PetscBool flag; 177*7a7a6802SBarry Smith 178*7a7a6802SBarry Smith FIXCHAR(pre,len1,c1); 179*7a7a6802SBarry Smith FIXCHAR(name,len2,c2); 180*7a7a6802SBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 181*7a7a6802SBarry Smith *ierr = PetscOptionsGetReal(*options,c1,c2,dvalue,&flag); 182*7a7a6802SBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 183*7a7a6802SBarry Smith FREECHAR(pre,c1); 184*7a7a6802SBarry Smith FREECHAR(name,c2); 185*7a7a6802SBarry Smith } 186*7a7a6802SBarry Smith 187c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetrealarray_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 188ace3abfcSBarry Smith PetscReal *dvalue,PetscInt *nmax,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1899306f9a3SSatish Balay { 1909306f9a3SSatish Balay char *c1,*c2; 191ace3abfcSBarry Smith PetscBool flag; 1929306f9a3SSatish Balay 1939306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1949306f9a3SSatish Balay FIXCHAR(name,len2,c2); 195c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 196c5929fdfSBarry Smith *ierr = PetscOptionsGetRealArray(*options,c1,c2,dvalue,nmax,&flag); 1975c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1989306f9a3SSatish Balay FREECHAR(pre,c1); 1999306f9a3SSatish Balay FREECHAR(name,c2); 2009306f9a3SSatish Balay } 2019306f9a3SSatish Balay 202c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetintarray_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 203ace3abfcSBarry Smith PetscInt *dvalue,PetscInt *nmax,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 2049306f9a3SSatish Balay { 2059306f9a3SSatish Balay char *c1,*c2; 206ace3abfcSBarry Smith PetscBool flag; 2079306f9a3SSatish Balay 2089306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 2099306f9a3SSatish Balay FIXCHAR(name,len2,c2); 210c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 211c5929fdfSBarry Smith *ierr = PetscOptionsGetIntArray(*options,c1,c2,dvalue,nmax,&flag); 2125c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 2139306f9a3SSatish Balay FREECHAR(pre,c1); 2149306f9a3SSatish Balay FREECHAR(name,c2); 2159306f9a3SSatish Balay } 2169306f9a3SSatish Balay 217c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetstring_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 218ace3abfcSBarry Smith CHAR string PETSC_MIXED_LEN(len),PetscBool *flg, 2199306f9a3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(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 230c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 231c5929fdfSBarry Smith *ierr = PetscOptionsGetString(*options,c1,c2,c3,len3,&flag); 2325c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 2339306f9a3SSatish Balay FREECHAR(pre,c1); 2349306f9a3SSatish Balay FREECHAR(name,c2); 2357c363081SBarry Smith FIXRETURNCHAR(flag,string,len); 2369306f9a3SSatish Balay } 2379306f9a3SSatish Balay 2388cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscgetprogramname_(CHAR name PETSC_MIXED_LEN(len_in),PetscErrorCode *ierr PETSC_END_LEN(len_in)) 2399306f9a3SSatish Balay { 2409306f9a3SSatish Balay char *tmp; 2414610e317SSatish Balay size_t len; 2429306f9a3SSatish Balay tmp = name; 2439306f9a3SSatish Balay len = len_in - 1; 2449306f9a3SSatish Balay *ierr = PetscGetProgramName(tmp,len); 2457c363081SBarry Smith FIXRETURNCHAR(PETSC_TRUE,name,len_in); 2469306f9a3SSatish Balay } 2479306f9a3SSatish Balay 248c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsview_(PetscOptions *options,PetscViewer *vin,PetscErrorCode *ierr) 2493a15af8cSBlaise Bourdin { 2503a15af8cSBlaise Bourdin PetscViewer v; 2513a15af8cSBlaise Bourdin 2523a15af8cSBlaise Bourdin PetscPatchDefaultViewers_Fortran(vin,v); 253c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 254c5929fdfSBarry Smith *ierr = PetscOptionsView(*options,v); 2553a15af8cSBlaise Bourdin } 2563a15af8cSBlaise Bourdin 257685405a1SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscobjectviewfromoptions_(PetscObject *obj,PetscObject *bobj,CHAR option PETSC_MIXED_LEN(loption),PetscErrorCode *ierr PETSC_END_LEN(loption)) 258a2865142SMatthew G. Knepley { 259685405a1SBarry Smith char *o; 260a2865142SMatthew G. Knepley 261a2865142SMatthew G. Knepley FIXCHAR(option, loption, o); 26246475a24SBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(bobj); 263685405a1SBarry Smith *ierr = PetscObjectViewFromOptions(*obj, *bobj, o); 264a2865142SMatthew G. Knepley FREECHAR(option, o); 265a2865142SMatthew G. Knepley } 266