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 7b45d2f2cSJed Brown #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 199306f9a3SSatish Balay #define petscoptionsgetrealarray_ PETSCOPTIONSGETREALARRAY 209306f9a3SSatish Balay #define petscoptionsgetstring_ PETSCOPTIONSGETSTRING 219306f9a3SSatish Balay #define petscgetprogramname PETSCGETPROGRAMNAME 229306f9a3SSatish Balay #define petscoptionsinsertfile_ PETSCOPTIONSINSERTFILE 23a542b6e8SBarry Smith #define petscoptionsclear_ PETSCOPTIONSCLEAR 24ab66e762SBarry Smith #define petscoptionsinsertstring_ PETSCOPTIONSINSERTSTRING 253a15af8cSBlaise Bourdin #define petscoptionsview_ PETSCOPTIONSVIEW 269306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 2747340559SBarry Smith #define petscoptionsgetenumprivate_ petscoptionsgetenumprivate 2808f86b60SJed Brown #define petscoptionsgetbool_ petscoptionsgetbool 299306f9a3SSatish Balay #define petscoptionssetvalue_ petscoptionssetvalue 309306f9a3SSatish Balay #define petscoptionsclearvalue_ petscoptionsclearvalue 319306f9a3SSatish Balay #define petscoptionshasname_ petscoptionshasname 329306f9a3SSatish Balay #define petscoptionsgetint_ petscoptionsgetint 339306f9a3SSatish Balay #define petscoptionsgetreal_ petscoptionsgetreal 349306f9a3SSatish Balay #define petscoptionsgetrealarray_ petscoptionsgetrealarray 359306f9a3SSatish Balay #define petscoptionsgetstring_ petscoptionsgetstring 369306f9a3SSatish Balay #define petscoptionsgetintarray_ petscoptionsgetintarray 379306f9a3SSatish Balay #define petscgetprogramname_ petscgetprogramname 389306f9a3SSatish Balay #define petscoptionsinsertfile_ petscoptionsinsertfile 39a542b6e8SBarry Smith #define petscoptionsclear_ petscoptionsclear 40ab66e762SBarry Smith #define petscoptionsinsertstring_ petscoptionsinsertstring 413a15af8cSBlaise Bourdin #define petscoptionsview_ petscoptionsview 429306f9a3SSatish Balay #endif 439306f9a3SSatish Balay 449306f9a3SSatish Balay /* ---------------------------------------------------------------------*/ 459306f9a3SSatish Balay 46*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsinsertstring_(CHAR file PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 47ab66e762SBarry Smith { 48ab66e762SBarry Smith char *c1; 49ab66e762SBarry Smith 50ab66e762SBarry Smith FIXCHAR(file,len,c1); 51ab66e762SBarry Smith *ierr = PetscOptionsInsertString(c1); 52ab66e762SBarry Smith FREECHAR(file,c1); 53ab66e762SBarry Smith } 54ab66e762SBarry Smith 55*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsinsertfile_(MPI_Fint *comm,CHAR file PETSC_MIXED_LEN(len),PetscBool *require,PetscErrorCode *ierr PETSC_END_LEN(len)) 569306f9a3SSatish Balay { 579306f9a3SSatish Balay char *c1; 589306f9a3SSatish Balay 599306f9a3SSatish Balay FIXCHAR(file,len,c1); 609b754dc9SBarry Smith *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm),c1,*require); 619306f9a3SSatish Balay FREECHAR(file,c1); 629306f9a3SSatish Balay } 639306f9a3SSatish Balay 64*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionssetvalue_(CHAR name PETSC_MIXED_LEN(len1),CHAR value PETSC_MIXED_LEN(len2), 659306f9a3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 669306f9a3SSatish Balay { 679306f9a3SSatish Balay char *c1,*c2; 689306f9a3SSatish Balay 699306f9a3SSatish Balay FIXCHAR(name,len1,c1); 709306f9a3SSatish Balay FIXCHAR(value,len2,c2); 719306f9a3SSatish Balay *ierr = PetscOptionsSetValue(c1,c2); 729306f9a3SSatish Balay FREECHAR(name,c1); 739306f9a3SSatish Balay FREECHAR(value,c2); 749306f9a3SSatish Balay } 759306f9a3SSatish Balay 76*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsclear_(PetscErrorCode *ierr) 77a542b6e8SBarry Smith { 78a542b6e8SBarry Smith *ierr = PetscOptionsClear(); 79a542b6e8SBarry Smith } 80a542b6e8SBarry Smith 81*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsclearvalue_(CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 829306f9a3SSatish Balay { 839306f9a3SSatish Balay char *c1; 849306f9a3SSatish Balay 859306f9a3SSatish Balay FIXCHAR(name,len,c1); 869306f9a3SSatish Balay *ierr = PetscOptionsClearValue(c1); 879306f9a3SSatish Balay FREECHAR(name,c1); 889306f9a3SSatish Balay } 899306f9a3SSatish Balay 90*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionshasname_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 91ace3abfcSBarry Smith PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 929306f9a3SSatish Balay { 939306f9a3SSatish Balay char *c1,*c2; 949306f9a3SSatish Balay 959306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 969306f9a3SSatish Balay FIXCHAR(name,len2,c2); 979306f9a3SSatish Balay *ierr = PetscOptionsHasName(c1,c2,flg); 989306f9a3SSatish Balay FREECHAR(pre,c1); 999306f9a3SSatish Balay FREECHAR(name,c2); 1009306f9a3SSatish Balay } 1019306f9a3SSatish Balay 102*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsgetint_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 103ace3abfcSBarry Smith PetscInt *ivalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1049306f9a3SSatish Balay { 1059306f9a3SSatish Balay char *c1,*c2; 106ace3abfcSBarry Smith PetscBool flag; 1079306f9a3SSatish Balay 1089306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1099306f9a3SSatish Balay FIXCHAR(name,len2,c2); 1107c363081SBarry Smith *ierr = PetscOptionsGetInt(c1,c2,ivalue,&flag); 1115c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1129306f9a3SSatish Balay FREECHAR(pre,c1); 1139306f9a3SSatish Balay FREECHAR(name,c2); 1149306f9a3SSatish Balay } 1159306f9a3SSatish Balay 116*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsgetenumprivate_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2),const char *const*list, 11747340559SBarry Smith PetscEnum *ivalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 11847340559SBarry Smith { 11947340559SBarry Smith char *c1,*c2; 12047340559SBarry Smith PetscBool flag; 12147340559SBarry Smith 12247340559SBarry Smith FIXCHAR(pre,len1,c1); 12347340559SBarry Smith FIXCHAR(name,len2,c2); 12447340559SBarry Smith *ierr = PetscOptionsGetEnum(c1,c2,list,ivalue,&flag); 12547340559SBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 12647340559SBarry Smith FREECHAR(pre,c1); 12747340559SBarry Smith FREECHAR(name,c2); 12847340559SBarry Smith } 12947340559SBarry Smith 130*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsgetbool_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 131ace3abfcSBarry Smith PetscBool *ivalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1329306f9a3SSatish Balay { 1339306f9a3SSatish Balay char *c1,*c2; 134ace3abfcSBarry Smith PetscBool flag; 1359306f9a3SSatish Balay 1369306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1379306f9a3SSatish Balay FIXCHAR(name,len2,c2); 138acfcf0e5SJed Brown *ierr = PetscOptionsGetBool(c1,c2,ivalue,&flag); 1395c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1409306f9a3SSatish Balay FREECHAR(pre,c1); 1419306f9a3SSatish Balay FREECHAR(name,c2); 1429306f9a3SSatish Balay } 1439306f9a3SSatish Balay 144*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsgetreal_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 145ace3abfcSBarry Smith PetscReal *dvalue,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); 1527c363081SBarry Smith *ierr = PetscOptionsGetReal(c1,c2,dvalue,&flag); 1535c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1549306f9a3SSatish Balay FREECHAR(pre,c1); 1559306f9a3SSatish Balay FREECHAR(name,c2); 1569306f9a3SSatish Balay } 1579306f9a3SSatish Balay 158*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsgetrealarray_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 159ace3abfcSBarry Smith PetscReal *dvalue,PetscInt *nmax,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1609306f9a3SSatish Balay { 1619306f9a3SSatish Balay char *c1,*c2; 162ace3abfcSBarry Smith PetscBool flag; 1639306f9a3SSatish Balay 1649306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1659306f9a3SSatish Balay FIXCHAR(name,len2,c2); 1667c363081SBarry Smith *ierr = PetscOptionsGetRealArray(c1,c2,dvalue,nmax,&flag); 1675c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1689306f9a3SSatish Balay FREECHAR(pre,c1); 1699306f9a3SSatish Balay FREECHAR(name,c2); 1709306f9a3SSatish Balay } 1719306f9a3SSatish Balay 172*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsgetintarray_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 173ace3abfcSBarry Smith PetscInt *dvalue,PetscInt *nmax,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1749306f9a3SSatish Balay { 1759306f9a3SSatish Balay char *c1,*c2; 176ace3abfcSBarry Smith PetscBool flag; 1779306f9a3SSatish Balay 1789306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1799306f9a3SSatish Balay FIXCHAR(name,len2,c2); 1807c363081SBarry Smith *ierr = PetscOptionsGetIntArray(c1,c2,dvalue,nmax,&flag); 1815c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1829306f9a3SSatish Balay FREECHAR(pre,c1); 1839306f9a3SSatish Balay FREECHAR(name,c2); 1849306f9a3SSatish Balay } 1859306f9a3SSatish Balay 186*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsgetstring_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 187ace3abfcSBarry Smith CHAR string PETSC_MIXED_LEN(len),PetscBool *flg, 1889306f9a3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len)) 1899306f9a3SSatish Balay { 1909306f9a3SSatish Balay char *c1,*c2,*c3; 1914610e317SSatish Balay size_t len3; 192ace3abfcSBarry Smith PetscBool flag; 1939306f9a3SSatish Balay 1949306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1959306f9a3SSatish Balay FIXCHAR(name,len2,c2); 1969306f9a3SSatish Balay c3 = string; 1979306f9a3SSatish Balay len3 = len - 1; 1989306f9a3SSatish Balay 1997c363081SBarry Smith *ierr = PetscOptionsGetString(c1,c2,c3,len3,&flag); 2005c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 2019306f9a3SSatish Balay FREECHAR(pre,c1); 2029306f9a3SSatish Balay FREECHAR(name,c2); 2037c363081SBarry Smith FIXRETURNCHAR(flag,string,len); 2049306f9a3SSatish Balay } 2059306f9a3SSatish Balay 206*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscgetprogramname_(CHAR name PETSC_MIXED_LEN(len_in),PetscErrorCode *ierr PETSC_END_LEN(len_in)) 2079306f9a3SSatish Balay { 2089306f9a3SSatish Balay char *tmp; 2094610e317SSatish Balay size_t len; 2109306f9a3SSatish Balay tmp = name; 2119306f9a3SSatish Balay len = len_in - 1; 2129306f9a3SSatish Balay *ierr = PetscGetProgramName(tmp,len); 2137c363081SBarry Smith FIXRETURNCHAR(PETSC_TRUE,name,len_in); 2149306f9a3SSatish Balay } 2159306f9a3SSatish Balay 216*8cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscoptionsview_(PetscViewer *vin,PetscErrorCode *ierr) 2173a15af8cSBlaise Bourdin { 2183a15af8cSBlaise Bourdin PetscViewer v; 2193a15af8cSBlaise Bourdin 2203a15af8cSBlaise Bourdin PetscPatchDefaultViewers_Fortran(vin,v); 2213a15af8cSBlaise Bourdin *ierr = PetscOptionsView(v); 2223a15af8cSBlaise Bourdin } 2233a15af8cSBlaise Bourdin 224