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 197a7a6802SBarry 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 27*ac9b46efSSatish Balay #define petscoptionsleft_ PETSCOPTIONSLEFT 28a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_ PETSCOBJECTVIEWFROMOPTIONS 299306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 3047340559SBarry Smith #define petscoptionsgetenumprivate_ petscoptionsgetenumprivate 3108f86b60SJed Brown #define petscoptionsgetbool_ petscoptionsgetbool 329306f9a3SSatish Balay #define petscoptionssetvalue_ petscoptionssetvalue 339306f9a3SSatish Balay #define petscoptionsclearvalue_ petscoptionsclearvalue 349306f9a3SSatish Balay #define petscoptionshasname_ petscoptionshasname 359306f9a3SSatish Balay #define petscoptionsgetint_ petscoptionsgetint 369306f9a3SSatish Balay #define petscoptionsgetreal_ petscoptionsgetreal 377a7a6802SBarry Smith #define petscoptionsgetscalar_ petscoptionsgetscalar 389306f9a3SSatish Balay #define petscoptionsgetrealarray_ petscoptionsgetrealarray 399306f9a3SSatish Balay #define petscoptionsgetstring_ petscoptionsgetstring 409306f9a3SSatish Balay #define petscoptionsgetintarray_ petscoptionsgetintarray 419306f9a3SSatish Balay #define petscgetprogramname_ petscgetprogramname 429306f9a3SSatish Balay #define petscoptionsinsertfile_ petscoptionsinsertfile 43a542b6e8SBarry Smith #define petscoptionsclear_ petscoptionsclear 44ab66e762SBarry Smith #define petscoptionsinsertstring_ petscoptionsinsertstring 453a15af8cSBlaise Bourdin #define petscoptionsview_ petscoptionsview 46*ac9b46efSSatish Balay #define petscoptionsleft_ petscoptionsleft 47a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_ petscobjectviewfromoptions 489306f9a3SSatish Balay #endif 499306f9a3SSatish Balay 509306f9a3SSatish Balay /* ---------------------------------------------------------------------*/ 519306f9a3SSatish Balay 52390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsinsertstring_(PetscOptions *options,char* file PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 53ab66e762SBarry Smith { 54ab66e762SBarry Smith char *c1; 55ab66e762SBarry Smith 56ab66e762SBarry Smith FIXCHAR(file,len,c1); 57c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 58c5929fdfSBarry Smith *ierr = PetscOptionsInsertString(*options,c1); 59ab66e762SBarry Smith FREECHAR(file,c1); 60ab66e762SBarry Smith } 61ab66e762SBarry Smith 62390e1bf2SBarry 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)) 639306f9a3SSatish Balay { 649306f9a3SSatish Balay char *c1; 659306f9a3SSatish Balay 669306f9a3SSatish Balay FIXCHAR(file,len,c1); 67c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 68c5929fdfSBarry Smith *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm),*options,c1,*require); 699306f9a3SSatish Balay FREECHAR(file,c1); 709306f9a3SSatish Balay } 719306f9a3SSatish Balay 72390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionssetvalue_(PetscOptions *options,char* name PETSC_MIXED_LEN(len1),char* value PETSC_MIXED_LEN(len2), 739306f9a3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 749306f9a3SSatish Balay { 759306f9a3SSatish Balay char *c1,*c2; 769306f9a3SSatish Balay 779306f9a3SSatish Balay FIXCHAR(name,len1,c1); 789306f9a3SSatish Balay FIXCHAR(value,len2,c2); 79c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 80c5929fdfSBarry Smith *ierr = PetscOptionsSetValue(*options,c1,c2); 819306f9a3SSatish Balay FREECHAR(name,c1); 829306f9a3SSatish Balay FREECHAR(value,c2); 839306f9a3SSatish Balay } 849306f9a3SSatish Balay 85c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsclear_(PetscOptions *options,PetscErrorCode *ierr) 86a542b6e8SBarry Smith { 87c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 88c5929fdfSBarry Smith *ierr = PetscOptionsClear(*options); 89a542b6e8SBarry Smith } 90a542b6e8SBarry Smith 91390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsclearvalue_(PetscOptions *options,char* name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 929306f9a3SSatish Balay { 939306f9a3SSatish Balay char *c1; 949306f9a3SSatish Balay 959306f9a3SSatish Balay FIXCHAR(name,len,c1); 96c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 97c5929fdfSBarry Smith *ierr = PetscOptionsClearValue(*options,c1); 989306f9a3SSatish Balay FREECHAR(name,c1); 999306f9a3SSatish Balay } 1009306f9a3SSatish Balay 101390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionshasname_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2), 102ace3abfcSBarry Smith PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1039306f9a3SSatish Balay { 1049306f9a3SSatish Balay char *c1,*c2; 1059306f9a3SSatish Balay 1069306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1079306f9a3SSatish Balay FIXCHAR(name,len2,c2); 108c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 109c5929fdfSBarry Smith *ierr = PetscOptionsHasName(*options,c1,c2,flg); 1109306f9a3SSatish Balay FREECHAR(pre,c1); 1119306f9a3SSatish Balay FREECHAR(name,c2); 1129306f9a3SSatish Balay } 1139306f9a3SSatish Balay 114390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetint_(PetscOptions *opt,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2), 115ace3abfcSBarry Smith PetscInt *ivalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1169306f9a3SSatish Balay { 1179306f9a3SSatish Balay char *c1,*c2; 118ace3abfcSBarry Smith PetscBool flag; 1199306f9a3SSatish Balay 1209306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1219306f9a3SSatish Balay FIXCHAR(name,len2,c2); 122c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(opt); 123c5929fdfSBarry Smith *ierr = PetscOptionsGetInt(*opt,c1,c2,ivalue,&flag); 1245c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1259306f9a3SSatish Balay FREECHAR(pre,c1); 1269306f9a3SSatish Balay FREECHAR(name,c2); 1279306f9a3SSatish Balay } 1289306f9a3SSatish Balay 129390e1bf2SBarry 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, 13047340559SBarry Smith PetscEnum *ivalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 13147340559SBarry Smith { 13247340559SBarry Smith char *c1,*c2; 13347340559SBarry Smith PetscBool flag; 13447340559SBarry Smith 13547340559SBarry Smith FIXCHAR(pre,len1,c1); 13647340559SBarry Smith FIXCHAR(name,len2,c2); 137c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 138c5929fdfSBarry Smith *ierr = PetscOptionsGetEnum(*options,c1,c2,list,ivalue,&flag); 13947340559SBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 14047340559SBarry Smith FREECHAR(pre,c1); 14147340559SBarry Smith FREECHAR(name,c2); 14247340559SBarry Smith } 14347340559SBarry Smith 144390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetbool_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2), 145ace3abfcSBarry Smith PetscBool *ivalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1469306f9a3SSatish Balay { 1479306f9a3SSatish Balay char *c1,*c2; 148ace3abfcSBarry Smith PetscBool flag; 1499306f9a3SSatish Balay 1509306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1519306f9a3SSatish Balay FIXCHAR(name,len2,c2); 152c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 153c5929fdfSBarry Smith *ierr = PetscOptionsGetBool(*options,c1,c2,ivalue,&flag); 1545c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1559306f9a3SSatish Balay FREECHAR(pre,c1); 1569306f9a3SSatish Balay FREECHAR(name,c2); 1579306f9a3SSatish Balay } 1589306f9a3SSatish Balay 159390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetreal_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2), 160ace3abfcSBarry Smith PetscReal *dvalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1619306f9a3SSatish Balay { 1629306f9a3SSatish Balay char *c1,*c2; 163ace3abfcSBarry Smith PetscBool flag; 1649306f9a3SSatish Balay 1659306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1669306f9a3SSatish Balay FIXCHAR(name,len2,c2); 167c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 168c5929fdfSBarry Smith *ierr = PetscOptionsGetReal(*options,c1,c2,dvalue,&flag); 1695c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1709306f9a3SSatish Balay FREECHAR(pre,c1); 1719306f9a3SSatish Balay FREECHAR(name,c2); 1729306f9a3SSatish Balay } 1739306f9a3SSatish Balay 174390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetscalar_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2), 1757a7a6802SBarry Smith PetscScalar *dvalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1767a7a6802SBarry Smith { 1777a7a6802SBarry Smith char *c1,*c2; 1787a7a6802SBarry Smith PetscBool flag; 1797a7a6802SBarry Smith 1807a7a6802SBarry Smith FIXCHAR(pre,len1,c1); 1817a7a6802SBarry Smith FIXCHAR(name,len2,c2); 1827a7a6802SBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 183bf63e7e7SBarry Smith *ierr = PetscOptionsGetScalar(*options,c1,c2,dvalue,&flag); 1847a7a6802SBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 1857a7a6802SBarry Smith FREECHAR(pre,c1); 1867a7a6802SBarry Smith FREECHAR(name,c2); 1877a7a6802SBarry Smith } 1887a7a6802SBarry Smith 189390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetrealarray_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2), 190ace3abfcSBarry Smith PetscReal *dvalue,PetscInt *nmax,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(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); 197c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 198c5929fdfSBarry Smith *ierr = PetscOptionsGetRealArray(*options,c1,c2,dvalue,nmax,&flag); 1995c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 2009306f9a3SSatish Balay FREECHAR(pre,c1); 2019306f9a3SSatish Balay FREECHAR(name,c2); 2029306f9a3SSatish Balay } 2039306f9a3SSatish Balay 204390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetintarray_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2), 205ace3abfcSBarry Smith PetscInt *dvalue,PetscInt *nmax,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 2069306f9a3SSatish Balay { 2079306f9a3SSatish Balay char *c1,*c2; 208ace3abfcSBarry Smith PetscBool flag; 2099306f9a3SSatish Balay 2109306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 2119306f9a3SSatish Balay FIXCHAR(name,len2,c2); 212c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 213c5929fdfSBarry Smith *ierr = PetscOptionsGetIntArray(*options,c1,c2,dvalue,nmax,&flag); 2145c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 2159306f9a3SSatish Balay FREECHAR(pre,c1); 2169306f9a3SSatish Balay FREECHAR(name,c2); 2179306f9a3SSatish Balay } 2189306f9a3SSatish Balay 219390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetstring_(PetscOptions *options,char* pre PETSC_MIXED_LEN(len1),char* name PETSC_MIXED_LEN(len2), 220390e1bf2SBarry Smith char* string PETSC_MIXED_LEN(len),PetscBool *flg, 2219306f9a3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len)) 2229306f9a3SSatish Balay { 2239306f9a3SSatish Balay char *c1,*c2,*c3; 2244610e317SSatish Balay size_t len3; 225ace3abfcSBarry Smith PetscBool flag; 2269306f9a3SSatish Balay 2279306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 2289306f9a3SSatish Balay FIXCHAR(name,len2,c2); 2299306f9a3SSatish Balay c3 = string; 2309306f9a3SSatish Balay len3 = len - 1; 2319306f9a3SSatish Balay 232c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 233c5929fdfSBarry Smith *ierr = PetscOptionsGetString(*options,c1,c2,c3,len3,&flag); 2345c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 2359306f9a3SSatish Balay FREECHAR(pre,c1); 2369306f9a3SSatish Balay FREECHAR(name,c2); 2377c363081SBarry Smith FIXRETURNCHAR(flag,string,len); 2389306f9a3SSatish Balay } 2399306f9a3SSatish Balay 240390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscgetprogramname_(char* name PETSC_MIXED_LEN(len_in),PetscErrorCode *ierr PETSC_END_LEN(len_in)) 2419306f9a3SSatish Balay { 2429306f9a3SSatish Balay char *tmp; 2434610e317SSatish Balay size_t len; 2449306f9a3SSatish Balay tmp = name; 2459306f9a3SSatish Balay len = len_in - 1; 2469306f9a3SSatish Balay *ierr = PetscGetProgramName(tmp,len); 2477c363081SBarry Smith FIXRETURNCHAR(PETSC_TRUE,name,len_in); 2489306f9a3SSatish Balay } 2499306f9a3SSatish Balay 250c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsview_(PetscOptions *options,PetscViewer *vin,PetscErrorCode *ierr) 2513a15af8cSBlaise Bourdin { 2523a15af8cSBlaise Bourdin PetscViewer v; 2533a15af8cSBlaise Bourdin 2543a15af8cSBlaise Bourdin PetscPatchDefaultViewers_Fortran(vin,v); 255c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 256c5929fdfSBarry Smith *ierr = PetscOptionsView(*options,v); 2573a15af8cSBlaise Bourdin } 2583a15af8cSBlaise Bourdin 259*ac9b46efSSatish Balay PETSC_EXTERN void PETSC_STDCALL petscoptionsleft_(PetscOptions *options,PetscErrorCode *ierr) 260*ac9b46efSSatish Balay { 261*ac9b46efSSatish Balay CHKFORTRANNULLOBJECTDEREFERENCE(options); 262*ac9b46efSSatish Balay *ierr = PetscOptionsLeft(*options); 263*ac9b46efSSatish Balay } 264*ac9b46efSSatish Balay 265*ac9b46efSSatish Balay 266390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscobjectviewfromoptions_(PetscObject *obj,PetscObject *bobj,char* option PETSC_MIXED_LEN(loption),PetscErrorCode *ierr PETSC_END_LEN(loption)) 267a2865142SMatthew G. Knepley { 268685405a1SBarry Smith char *o; 269a2865142SMatthew G. Knepley 270a2865142SMatthew G. Knepley FIXCHAR(option, loption, o); 27146475a24SBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(bobj); 272685405a1SBarry Smith *ierr = PetscObjectViewFromOptions(*obj, *bobj, o); 273a2865142SMatthew G. Knepley FREECHAR(option, o); 274a2865142SMatthew G. Knepley } 275