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 7*b45d2f2cSJed Brown #include <petsc-private/fortranimpl.h> 89306f9a3SSatish Balay 99306f9a3SSatish Balay #ifdef PETSC_HAVE_FORTRAN_CAPS 1008f86b60SJed Brown #define petscoptionsgetbool_ PETSCOPTIONSGETBOOL 119306f9a3SSatish Balay #define petscoptionsgetintarray_ PETSCOPTIONSGETINTARRAY 129306f9a3SSatish Balay #define petscoptionssetvalue_ PETSCOPTIONSSETVALUE 139306f9a3SSatish Balay #define petscoptionsclearvalue_ PETSCOPTIONSCLEARVALUE 149306f9a3SSatish Balay #define petscoptionshasname_ PETSCOPTIONSHASNAME 159306f9a3SSatish Balay #define petscoptionsgetint_ PETSCOPTIONSGETINT 169306f9a3SSatish Balay #define petscoptionsgetreal_ PETSCOPTIONSGETREAL 179306f9a3SSatish Balay #define petscoptionsgetrealarray_ PETSCOPTIONSGETREALARRAY 189306f9a3SSatish Balay #define petscoptionsgetstring_ PETSCOPTIONSGETSTRING 199306f9a3SSatish Balay #define petscgetprogramname PETSCGETPROGRAMNAME 209306f9a3SSatish Balay #define petscoptionsinsertfile_ PETSCOPTIONSINSERTFILE 21a542b6e8SBarry Smith #define petscoptionsclear_ PETSCOPTIONSCLEAR 22ab66e762SBarry Smith #define petscoptionsinsertstring_ PETSCOPTIONSINSERTSTRING 239306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 2408f86b60SJed Brown #define petscoptionsgetbool_ petscoptionsgetbool 259306f9a3SSatish Balay #define petscoptionssetvalue_ petscoptionssetvalue 269306f9a3SSatish Balay #define petscoptionsclearvalue_ petscoptionsclearvalue 279306f9a3SSatish Balay #define petscoptionshasname_ petscoptionshasname 289306f9a3SSatish Balay #define petscoptionsgetint_ petscoptionsgetint 299306f9a3SSatish Balay #define petscoptionsgetreal_ petscoptionsgetreal 309306f9a3SSatish Balay #define petscoptionsgetrealarray_ petscoptionsgetrealarray 319306f9a3SSatish Balay #define petscoptionsgetstring_ petscoptionsgetstring 329306f9a3SSatish Balay #define petscoptionsgetintarray_ petscoptionsgetintarray 339306f9a3SSatish Balay #define petscgetprogramname_ petscgetprogramname 349306f9a3SSatish Balay #define petscoptionsinsertfile_ petscoptionsinsertfile 35a542b6e8SBarry Smith #define petscoptionsclear_ petscoptionsclear 36ab66e762SBarry Smith #define petscoptionsinsertstring_ petscoptionsinsertstring 379306f9a3SSatish Balay #endif 389306f9a3SSatish Balay 399306f9a3SSatish Balay EXTERN_C_BEGIN 409306f9a3SSatish Balay 419306f9a3SSatish Balay /* ---------------------------------------------------------------------*/ 429306f9a3SSatish Balay 43ab66e762SBarry Smith void PETSC_STDCALL petscoptionsinsertstring_(CHAR file PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 44ab66e762SBarry Smith { 45ab66e762SBarry Smith char *c1; 46ab66e762SBarry Smith 47ab66e762SBarry Smith FIXCHAR(file,len,c1); 48ab66e762SBarry Smith *ierr = PetscOptionsInsertString(c1); 49ab66e762SBarry Smith FREECHAR(file,c1); 50ab66e762SBarry Smith } 51ab66e762SBarry Smith 52ace3abfcSBarry Smith void PETSC_STDCALL petscoptionsinsertfile_(MPI_Fint *comm,CHAR file PETSC_MIXED_LEN(len),PetscBool *require,PetscErrorCode *ierr PETSC_END_LEN(len)) 539306f9a3SSatish Balay { 549306f9a3SSatish Balay char *c1; 559306f9a3SSatish Balay 569306f9a3SSatish Balay FIXCHAR(file,len,c1); 579b754dc9SBarry Smith *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm),c1,*require); 589306f9a3SSatish Balay FREECHAR(file,c1); 599306f9a3SSatish Balay } 609306f9a3SSatish Balay 619306f9a3SSatish Balay void PETSC_STDCALL petscoptionssetvalue_(CHAR name PETSC_MIXED_LEN(len1),CHAR value PETSC_MIXED_LEN(len2), 629306f9a3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 639306f9a3SSatish Balay { 649306f9a3SSatish Balay char *c1,*c2; 659306f9a3SSatish Balay 669306f9a3SSatish Balay FIXCHAR(name,len1,c1); 679306f9a3SSatish Balay FIXCHAR(value,len2,c2); 689306f9a3SSatish Balay *ierr = PetscOptionsSetValue(c1,c2); 699306f9a3SSatish Balay FREECHAR(name,c1); 709306f9a3SSatish Balay FREECHAR(value,c2); 719306f9a3SSatish Balay } 729306f9a3SSatish Balay 73a542b6e8SBarry Smith void PETSC_STDCALL petscoptionsclear_(PetscErrorCode *ierr) 74a542b6e8SBarry Smith { 75a542b6e8SBarry Smith *ierr = PetscOptionsClear(); 76a542b6e8SBarry Smith } 77a542b6e8SBarry Smith 789306f9a3SSatish Balay void PETSC_STDCALL petscoptionsclearvalue_(CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 799306f9a3SSatish Balay { 809306f9a3SSatish Balay char *c1; 819306f9a3SSatish Balay 829306f9a3SSatish Balay FIXCHAR(name,len,c1); 839306f9a3SSatish Balay *ierr = PetscOptionsClearValue(c1); 849306f9a3SSatish Balay FREECHAR(name,c1); 859306f9a3SSatish Balay } 869306f9a3SSatish Balay 879306f9a3SSatish Balay void PETSC_STDCALL petscoptionshasname_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 88ace3abfcSBarry Smith PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 899306f9a3SSatish Balay { 909306f9a3SSatish Balay char *c1,*c2; 919306f9a3SSatish Balay 929306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 939306f9a3SSatish Balay FIXCHAR(name,len2,c2); 949306f9a3SSatish Balay *ierr = PetscOptionsHasName(c1,c2,flg); 959306f9a3SSatish Balay FREECHAR(pre,c1); 969306f9a3SSatish Balay FREECHAR(name,c2); 979306f9a3SSatish Balay } 989306f9a3SSatish Balay 999306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetint_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 100ace3abfcSBarry Smith PetscInt *ivalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1019306f9a3SSatish Balay { 1029306f9a3SSatish Balay char *c1,*c2; 103ace3abfcSBarry Smith PetscBool flag; 1049306f9a3SSatish Balay 1059306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1069306f9a3SSatish Balay FIXCHAR(name,len2,c2); 1077c363081SBarry Smith *ierr = PetscOptionsGetInt(c1,c2,ivalue,&flag); 1085c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1099306f9a3SSatish Balay FREECHAR(pre,c1); 1109306f9a3SSatish Balay FREECHAR(name,c2); 1119306f9a3SSatish Balay } 1129306f9a3SSatish Balay 11308f86b60SJed Brown void PETSC_STDCALL petscoptionsgetbool_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 114ace3abfcSBarry Smith PetscBool *ivalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1159306f9a3SSatish Balay { 1169306f9a3SSatish Balay char *c1,*c2; 117ace3abfcSBarry Smith PetscBool flag; 1189306f9a3SSatish Balay 1199306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1209306f9a3SSatish Balay FIXCHAR(name,len2,c2); 121acfcf0e5SJed Brown *ierr = PetscOptionsGetBool(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 1279306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetreal_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 128ace3abfcSBarry Smith PetscReal *dvalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1299306f9a3SSatish Balay { 1309306f9a3SSatish Balay char *c1,*c2; 131ace3abfcSBarry Smith PetscBool flag; 1329306f9a3SSatish Balay 1339306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1349306f9a3SSatish Balay FIXCHAR(name,len2,c2); 1357c363081SBarry Smith *ierr = PetscOptionsGetReal(c1,c2,dvalue,&flag); 1365c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1379306f9a3SSatish Balay FREECHAR(pre,c1); 1389306f9a3SSatish Balay FREECHAR(name,c2); 1399306f9a3SSatish Balay } 1409306f9a3SSatish Balay 1419306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetrealarray_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 142ace3abfcSBarry Smith PetscReal *dvalue,PetscInt *nmax,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1439306f9a3SSatish Balay { 1449306f9a3SSatish Balay char *c1,*c2; 145ace3abfcSBarry Smith PetscBool flag; 1469306f9a3SSatish Balay 1479306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1489306f9a3SSatish Balay FIXCHAR(name,len2,c2); 1497c363081SBarry Smith *ierr = PetscOptionsGetRealArray(c1,c2,dvalue,nmax,&flag); 1505c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1519306f9a3SSatish Balay FREECHAR(pre,c1); 1529306f9a3SSatish Balay FREECHAR(name,c2); 1539306f9a3SSatish Balay } 1549306f9a3SSatish Balay 1559306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetintarray_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 156ace3abfcSBarry Smith PetscInt *dvalue,PetscInt *nmax,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1579306f9a3SSatish Balay { 1589306f9a3SSatish Balay char *c1,*c2; 159ace3abfcSBarry Smith PetscBool flag; 1609306f9a3SSatish Balay 1619306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1629306f9a3SSatish Balay FIXCHAR(name,len2,c2); 1637c363081SBarry Smith *ierr = PetscOptionsGetIntArray(c1,c2,dvalue,nmax,&flag); 1645c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1659306f9a3SSatish Balay FREECHAR(pre,c1); 1669306f9a3SSatish Balay FREECHAR(name,c2); 1679306f9a3SSatish Balay } 1689306f9a3SSatish Balay 1699306f9a3SSatish Balay void PETSC_STDCALL petscoptionsgetstring_(CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 170ace3abfcSBarry Smith CHAR string PETSC_MIXED_LEN(len),PetscBool *flg, 1719306f9a3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len)) 1729306f9a3SSatish Balay { 1739306f9a3SSatish Balay char *c1,*c2,*c3; 1744610e317SSatish Balay size_t len3; 175ace3abfcSBarry Smith PetscBool flag; 1769306f9a3SSatish Balay 1779306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1789306f9a3SSatish Balay FIXCHAR(name,len2,c2); 1799306f9a3SSatish Balay c3 = string; 1809306f9a3SSatish Balay len3 = len - 1; 1819306f9a3SSatish Balay 1827c363081SBarry Smith *ierr = PetscOptionsGetString(c1,c2,c3,len3,&flag); 1835c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1849306f9a3SSatish Balay FREECHAR(pre,c1); 1859306f9a3SSatish Balay FREECHAR(name,c2); 1867c363081SBarry Smith FIXRETURNCHAR(flag,string,len); 1879306f9a3SSatish Balay } 1889306f9a3SSatish Balay 1899306f9a3SSatish Balay void PETSC_STDCALL petscgetprogramname_(CHAR name PETSC_MIXED_LEN(len_in),PetscErrorCode *ierr PETSC_END_LEN(len_in)) 1909306f9a3SSatish Balay { 1919306f9a3SSatish Balay char *tmp; 1924610e317SSatish Balay size_t len; 1939306f9a3SSatish Balay tmp = name; 1949306f9a3SSatish Balay len = len_in - 1; 1959306f9a3SSatish Balay *ierr = PetscGetProgramName(tmp,len); 1967c363081SBarry Smith FIXRETURNCHAR(PETSC_TRUE,name,len_in); 1979306f9a3SSatish Balay } 1989306f9a3SSatish Balay 1999306f9a3SSatish Balay EXTERN_C_END 2009306f9a3SSatish Balay 201