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 7ce0a2cd1SBarry Smith #include "private/fortranimpl.h" 89306f9a3SSatish Balay #include "petscsys.h" 99306f9a3SSatish Balay 109306f9a3SSatish Balay #ifdef PETSC_HAVE_FORTRAN_CAPS 119306f9a3SSatish Balay #define petscoptionsgettruth_ PETSCOPTIONSGETTRUTH 129306f9a3SSatish Balay #define petscoptionsgetintarray_ PETSCOPTIONSGETINTARRAY 139306f9a3SSatish Balay #define petscoptionssetvalue_ PETSCOPTIONSSETVALUE 149306f9a3SSatish Balay #define petscoptionsclearvalue_ PETSCOPTIONSCLEARVALUE 159306f9a3SSatish Balay #define petscoptionshasname_ PETSCOPTIONSHASNAME 169306f9a3SSatish Balay #define petscoptionsgetint_ PETSCOPTIONSGETINT 179306f9a3SSatish Balay #define petscoptionsgetreal_ PETSCOPTIONSGETREAL 189306f9a3SSatish Balay #define petscoptionsgetrealarray_ PETSCOPTIONSGETREALARRAY 199306f9a3SSatish Balay #define petscoptionsgetstring_ PETSCOPTIONSGETSTRING 209306f9a3SSatish Balay #define petscgetprogramname PETSCGETPROGRAMNAME 219306f9a3SSatish Balay #define petscoptionsinsertfile_ PETSCOPTIONSINSERTFILE 22a542b6e8SBarry Smith #define petscoptionsclear_ PETSCOPTIONSCLEAR 23*ab66e762SBarry Smith #define petscoptionsinsertstring_ PETSCOPTIONSINSERTSTRING 249306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 259306f9a3SSatish Balay #define petscoptionsgettruth_ petscoptionsgettruth 269306f9a3SSatish Balay #define petscoptionssetvalue_ petscoptionssetvalue 279306f9a3SSatish Balay #define petscoptionsclearvalue_ petscoptionsclearvalue 289306f9a3SSatish Balay #define petscoptionshasname_ petscoptionshasname 299306f9a3SSatish Balay #define petscoptionsgetint_ petscoptionsgetint 309306f9a3SSatish Balay #define petscoptionsgetreal_ petscoptionsgetreal 319306f9a3SSatish Balay #define petscoptionsgetrealarray_ petscoptionsgetrealarray 329306f9a3SSatish Balay #define petscoptionsgetstring_ petscoptionsgetstring 339306f9a3SSatish Balay #define petscoptionsgetintarray_ petscoptionsgetintarray 349306f9a3SSatish Balay #define petscgetprogramname_ petscgetprogramname 359306f9a3SSatish Balay #define petscoptionsinsertfile_ petscoptionsinsertfile 36a542b6e8SBarry Smith #define petscoptionsclear_ petscoptionsclear 37*ab66e762SBarry Smith #define petscoptionsinsertstring_ petscoptionsinsertstring 389306f9a3SSatish Balay #endif 399306f9a3SSatish Balay 409306f9a3SSatish Balay EXTERN_C_BEGIN 419306f9a3SSatish Balay 429306f9a3SSatish Balay /* ---------------------------------------------------------------------*/ 439306f9a3SSatish Balay 44*ab66e762SBarry Smith void PETSC_STDCALL petscoptionsinsertstring_(CHAR file PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 45*ab66e762SBarry Smith { 46*ab66e762SBarry Smith char *c1; 47*ab66e762SBarry Smith 48*ab66e762SBarry Smith FIXCHAR(file,len,c1); 49*ab66e762SBarry Smith *ierr = PetscOptionsInsertString(c1); 50*ab66e762SBarry Smith FREECHAR(file,c1); 51*ab66e762SBarry Smith } 52*ab66e762SBarry Smith 539b754dc9SBarry Smith void PETSC_STDCALL petscoptionsinsertfile_(MPI_Fint *comm,CHAR file PETSC_MIXED_LEN(len),PetscTruth *require,PetscErrorCode *ierr PETSC_END_LEN(len)) 549306f9a3SSatish Balay { 559306f9a3SSatish Balay char *c1; 569306f9a3SSatish Balay 579306f9a3SSatish Balay FIXCHAR(file,len,c1); 589b754dc9SBarry Smith *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm),c1,*require); 599306f9a3SSatish Balay FREECHAR(file,c1); 609306f9a3SSatish Balay } 619306f9a3SSatish Balay 629306f9a3SSatish Balay void PETSC_STDCALL petscoptionssetvalue_(CHAR name PETSC_MIXED_LEN(len1),CHAR value PETSC_MIXED_LEN(len2), 639306f9a3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 649306f9a3SSatish Balay { 659306f9a3SSatish Balay char *c1,*c2; 669306f9a3SSatish Balay 679306f9a3SSatish Balay FIXCHAR(name,len1,c1); 689306f9a3SSatish Balay FIXCHAR(value,len2,c2); 699306f9a3SSatish Balay *ierr = PetscOptionsSetValue(c1,c2); 709306f9a3SSatish Balay FREECHAR(name,c1); 719306f9a3SSatish Balay FREECHAR(value,c2); 729306f9a3SSatish Balay } 739306f9a3SSatish Balay 74a542b6e8SBarry Smith void PETSC_STDCALL petscoptionsclear_(PetscErrorCode *ierr) 75a542b6e8SBarry Smith { 76a542b6e8SBarry Smith *ierr = PetscOptionsClear(); 77a542b6e8SBarry Smith } 78a542b6e8SBarry Smith 799306f9a3SSatish Balay void PETSC_STDCALL petscoptionsclearvalue_(CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 809306f9a3SSatish Balay { 819306f9a3SSatish Balay char *c1; 829306f9a3SSatish Balay 839306f9a3SSatish Balay FIXCHAR(name,len,c1); 849306f9a3SSatish Balay *ierr = PetscOptionsClearValue(c1); 859306f9a3SSatish Balay FREECHAR(name,c1); 869306f9a3SSatish Balay } 879306f9a3SSatish Balay 889306f9a3SSatish Balay void PETSC_STDCALL petscoptionshasname_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 899306f9a3SSatish Balay PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 909306f9a3SSatish Balay { 919306f9a3SSatish Balay char *c1,*c2; 929306f9a3SSatish Balay 939306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 949306f9a3SSatish Balay FIXCHAR(name,len2,c2); 959306f9a3SSatish Balay *ierr = PetscOptionsHasName(c1,c2,flg); 969306f9a3SSatish Balay FREECHAR(pre,c1); 979306f9a3SSatish Balay FREECHAR(name,c2); 989306f9a3SSatish Balay } 999306f9a3SSatish Balay 1009306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetint_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 1019306f9a3SSatish Balay PetscInt *ivalue,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1029306f9a3SSatish Balay { 1039306f9a3SSatish Balay char *c1,*c2; 1047c363081SBarry Smith PetscTruth flag; 1059306f9a3SSatish Balay 1069306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1079306f9a3SSatish Balay FIXCHAR(name,len2,c2); 1087c363081SBarry Smith *ierr = PetscOptionsGetInt(c1,c2,ivalue,&flag); 1097c363081SBarry Smith if (!FORTRANNULLTRUTH(flg)) *flg = flag; 1109306f9a3SSatish Balay FREECHAR(pre,c1); 1119306f9a3SSatish Balay FREECHAR(name,c2); 1129306f9a3SSatish Balay } 1139306f9a3SSatish Balay 1149306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgettruth_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 1159306f9a3SSatish Balay PetscTruth *ivalue,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1169306f9a3SSatish Balay { 1179306f9a3SSatish Balay char *c1,*c2; 1187c363081SBarry Smith PetscTruth flag; 1199306f9a3SSatish Balay 1209306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1219306f9a3SSatish Balay FIXCHAR(name,len2,c2); 1227c363081SBarry Smith *ierr = PetscOptionsGetTruth(c1,c2,ivalue,&flag); 1237c363081SBarry Smith if (!FORTRANNULLTRUTH(flg)) *flg = flag; 1249306f9a3SSatish Balay FREECHAR(pre,c1); 1259306f9a3SSatish Balay FREECHAR(name,c2); 1269306f9a3SSatish Balay } 1279306f9a3SSatish Balay 1289306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetreal_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 1299306f9a3SSatish Balay PetscReal *dvalue,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1309306f9a3SSatish Balay { 1319306f9a3SSatish Balay char *c1,*c2; 1327c363081SBarry Smith PetscTruth flag; 1339306f9a3SSatish Balay 1349306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1359306f9a3SSatish Balay FIXCHAR(name,len2,c2); 1367c363081SBarry Smith *ierr = PetscOptionsGetReal(c1,c2,dvalue,&flag); 1377c363081SBarry Smith if (!FORTRANNULLTRUTH(flg)) *flg = flag; 1389306f9a3SSatish Balay FREECHAR(pre,c1); 1399306f9a3SSatish Balay FREECHAR(name,c2); 1409306f9a3SSatish Balay } 1419306f9a3SSatish Balay 1429306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetrealarray_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 1439306f9a3SSatish Balay PetscReal *dvalue,PetscInt *nmax,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1449306f9a3SSatish Balay { 1459306f9a3SSatish Balay char *c1,*c2; 1467c363081SBarry Smith PetscTruth flag; 1479306f9a3SSatish Balay 1489306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1499306f9a3SSatish Balay FIXCHAR(name,len2,c2); 1507c363081SBarry Smith *ierr = PetscOptionsGetRealArray(c1,c2,dvalue,nmax,&flag); 1517c363081SBarry Smith if (!FORTRANNULLTRUTH(flg)) *flg = flag; 1529306f9a3SSatish Balay FREECHAR(pre,c1); 1539306f9a3SSatish Balay FREECHAR(name,c2); 1549306f9a3SSatish Balay } 1559306f9a3SSatish Balay 1569306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetintarray_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 1579306f9a3SSatish Balay PetscInt *dvalue,PetscInt *nmax,PetscTruth *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1589306f9a3SSatish Balay { 1599306f9a3SSatish Balay char *c1,*c2; 1607c363081SBarry Smith PetscTruth flag; 1619306f9a3SSatish Balay 1629306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1639306f9a3SSatish Balay FIXCHAR(name,len2,c2); 1647c363081SBarry Smith *ierr = PetscOptionsGetIntArray(c1,c2,dvalue,nmax,&flag); 1657c363081SBarry Smith if (!FORTRANNULLTRUTH(flg)) *flg = flag; 1669306f9a3SSatish Balay FREECHAR(pre,c1); 1679306f9a3SSatish Balay FREECHAR(name,c2); 1689306f9a3SSatish Balay } 1699306f9a3SSatish Balay 1709306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetstring_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 1719306f9a3SSatish Balay CHAR string PETSC_MIXED_LEN(len),PetscTruth *flg, 1729306f9a3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len)) 1739306f9a3SSatish Balay { 1749306f9a3SSatish Balay char *c1,*c2,*c3; 1754610e317SSatish Balay size_t len3; 1767c363081SBarry Smith PetscTruth flag; 1779306f9a3SSatish Balay 1789306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1799306f9a3SSatish Balay FIXCHAR(name,len2,c2); 1809306f9a3SSatish Balay c3 = string; 1819306f9a3SSatish Balay len3 = len - 1; 1829306f9a3SSatish Balay 1837c363081SBarry Smith *ierr = PetscOptionsGetString(c1,c2,c3,len3,&flag); 1847c363081SBarry Smith if (!FORTRANNULLTRUTH(flg)) *flg = flag; 1859306f9a3SSatish Balay FREECHAR(pre,c1); 1869306f9a3SSatish Balay FREECHAR(name,c2); 1877c363081SBarry Smith FIXRETURNCHAR(flag,string,len); 1889306f9a3SSatish Balay } 1899306f9a3SSatish Balay 1909306f9a3SSatish Balay void PETSC_STDCALL petscgetprogramname_(CHAR name PETSC_MIXED_LEN(len_in),PetscErrorCode *ierr PETSC_END_LEN(len_in)) 1919306f9a3SSatish Balay { 1929306f9a3SSatish Balay char *tmp; 1934610e317SSatish Balay size_t len; 1949306f9a3SSatish Balay tmp = name; 1959306f9a3SSatish Balay len = len_in - 1; 1969306f9a3SSatish Balay *ierr = PetscGetProgramName(tmp,len); 1977c363081SBarry Smith FIXRETURNCHAR(PETSC_TRUE,name,len_in); 1989306f9a3SSatish Balay } 1999306f9a3SSatish Balay 2009306f9a3SSatish Balay EXTERN_C_END 2019306f9a3SSatish Balay 202