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 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 26a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_ PETSCOBJECTVIEWFROMOPTIONS 279306f9a3SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 2847340559SBarry Smith #define petscoptionsgetenumprivate_ petscoptionsgetenumprivate 2908f86b60SJed Brown #define petscoptionsgetbool_ petscoptionsgetbool 309306f9a3SSatish Balay #define petscoptionssetvalue_ petscoptionssetvalue 319306f9a3SSatish Balay #define petscoptionsclearvalue_ petscoptionsclearvalue 329306f9a3SSatish Balay #define petscoptionshasname_ petscoptionshasname 339306f9a3SSatish Balay #define petscoptionsgetint_ petscoptionsgetint 349306f9a3SSatish Balay #define petscoptionsgetreal_ petscoptionsgetreal 359306f9a3SSatish Balay #define petscoptionsgetrealarray_ petscoptionsgetrealarray 369306f9a3SSatish Balay #define petscoptionsgetstring_ petscoptionsgetstring 379306f9a3SSatish Balay #define petscoptionsgetintarray_ petscoptionsgetintarray 389306f9a3SSatish Balay #define petscgetprogramname_ petscgetprogramname 399306f9a3SSatish Balay #define petscoptionsinsertfile_ petscoptionsinsertfile 40a542b6e8SBarry Smith #define petscoptionsclear_ petscoptionsclear 41ab66e762SBarry Smith #define petscoptionsinsertstring_ petscoptionsinsertstring 423a15af8cSBlaise Bourdin #define petscoptionsview_ petscoptionsview 43a2865142SMatthew G. Knepley #define petscobjectviewfromoptions_ petscobjectviewfromoptions 449306f9a3SSatish Balay #endif 459306f9a3SSatish Balay 469306f9a3SSatish Balay /* ---------------------------------------------------------------------*/ 479306f9a3SSatish Balay 48*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsinsertstring_(PetscOptions *options,CHAR file PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 49ab66e762SBarry Smith { 50ab66e762SBarry Smith char *c1; 51ab66e762SBarry Smith 52ab66e762SBarry Smith FIXCHAR(file,len,c1); 53*c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 54*c5929fdfSBarry Smith *ierr = PetscOptionsInsertString(*options,c1); 55ab66e762SBarry Smith FREECHAR(file,c1); 56ab66e762SBarry Smith } 57ab66e762SBarry Smith 58*c5929fdfSBarry 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)) 599306f9a3SSatish Balay { 609306f9a3SSatish Balay char *c1; 619306f9a3SSatish Balay 629306f9a3SSatish Balay FIXCHAR(file,len,c1); 63*c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 64*c5929fdfSBarry Smith *ierr = PetscOptionsInsertFile(MPI_Comm_f2c(*comm),*options,c1,*require); 659306f9a3SSatish Balay FREECHAR(file,c1); 669306f9a3SSatish Balay } 679306f9a3SSatish Balay 68*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionssetvalue_(PetscOptions *options,CHAR name PETSC_MIXED_LEN(len1),CHAR value PETSC_MIXED_LEN(len2), 699306f9a3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 709306f9a3SSatish Balay { 719306f9a3SSatish Balay char *c1,*c2; 729306f9a3SSatish Balay 739306f9a3SSatish Balay FIXCHAR(name,len1,c1); 749306f9a3SSatish Balay FIXCHAR(value,len2,c2); 75*c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 76*c5929fdfSBarry Smith *ierr = PetscOptionsSetValue(*options,c1,c2); 779306f9a3SSatish Balay FREECHAR(name,c1); 789306f9a3SSatish Balay FREECHAR(value,c2); 799306f9a3SSatish Balay } 809306f9a3SSatish Balay 81*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsclear_(PetscOptions *options,PetscErrorCode *ierr) 82a542b6e8SBarry Smith { 83*c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 84*c5929fdfSBarry Smith *ierr = PetscOptionsClear(*options); 85a542b6e8SBarry Smith } 86a542b6e8SBarry Smith 87*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsclearvalue_(PetscOptions *options,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 889306f9a3SSatish Balay { 899306f9a3SSatish Balay char *c1; 909306f9a3SSatish Balay 919306f9a3SSatish Balay FIXCHAR(name,len,c1); 92*c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 93*c5929fdfSBarry Smith *ierr = PetscOptionsClearValue(*options,c1); 949306f9a3SSatish Balay FREECHAR(name,c1); 959306f9a3SSatish Balay } 969306f9a3SSatish Balay 97*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionshasname_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 98ace3abfcSBarry Smith PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 999306f9a3SSatish Balay { 1009306f9a3SSatish Balay char *c1,*c2; 1019306f9a3SSatish Balay 1029306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1039306f9a3SSatish Balay FIXCHAR(name,len2,c2); 104*c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 105*c5929fdfSBarry Smith *ierr = PetscOptionsHasName(*options,c1,c2,flg); 1069306f9a3SSatish Balay FREECHAR(pre,c1); 1079306f9a3SSatish Balay FREECHAR(name,c2); 1089306f9a3SSatish Balay } 1099306f9a3SSatish Balay 110*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetint_(PetscOptions *opt,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 111ace3abfcSBarry Smith PetscInt *ivalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1129306f9a3SSatish Balay { 1139306f9a3SSatish Balay char *c1,*c2; 114ace3abfcSBarry Smith PetscBool flag; 1159306f9a3SSatish Balay 1169306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1179306f9a3SSatish Balay FIXCHAR(name,len2,c2); 118*c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(opt); 119*c5929fdfSBarry Smith *ierr = PetscOptionsGetInt(*opt,c1,c2,ivalue,&flag); 1205c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1219306f9a3SSatish Balay FREECHAR(pre,c1); 1229306f9a3SSatish Balay FREECHAR(name,c2); 1239306f9a3SSatish Balay } 1249306f9a3SSatish Balay 125*c5929fdfSBarry 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, 12647340559SBarry Smith PetscEnum *ivalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 12747340559SBarry Smith { 12847340559SBarry Smith char *c1,*c2; 12947340559SBarry Smith PetscBool flag; 13047340559SBarry Smith 13147340559SBarry Smith FIXCHAR(pre,len1,c1); 13247340559SBarry Smith FIXCHAR(name,len2,c2); 133*c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 134*c5929fdfSBarry Smith *ierr = PetscOptionsGetEnum(*options,c1,c2,list,ivalue,&flag); 13547340559SBarry Smith if (!FORTRANNULLBOOL(flg)) *flg = flag; 13647340559SBarry Smith FREECHAR(pre,c1); 13747340559SBarry Smith FREECHAR(name,c2); 13847340559SBarry Smith } 13947340559SBarry Smith 140*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetbool_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 141ace3abfcSBarry Smith PetscBool *ivalue,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1429306f9a3SSatish Balay { 1439306f9a3SSatish Balay char *c1,*c2; 144ace3abfcSBarry Smith PetscBool flag; 1459306f9a3SSatish Balay 1469306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1479306f9a3SSatish Balay FIXCHAR(name,len2,c2); 148*c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 149*c5929fdfSBarry Smith *ierr = PetscOptionsGetBool(*options,c1,c2,ivalue,&flag); 1505c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1519306f9a3SSatish Balay FREECHAR(pre,c1); 1529306f9a3SSatish Balay FREECHAR(name,c2); 1539306f9a3SSatish Balay } 1549306f9a3SSatish Balay 155*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetreal_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 156ace3abfcSBarry Smith PetscReal *dvalue,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); 163*c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 164*c5929fdfSBarry Smith *ierr = PetscOptionsGetReal(*options,c1,c2,dvalue,&flag); 1655c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1669306f9a3SSatish Balay FREECHAR(pre,c1); 1679306f9a3SSatish Balay FREECHAR(name,c2); 1689306f9a3SSatish Balay } 1699306f9a3SSatish Balay 170*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetrealarray_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 171ace3abfcSBarry Smith PetscReal *dvalue,PetscInt *nmax,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1729306f9a3SSatish Balay { 1739306f9a3SSatish Balay char *c1,*c2; 174ace3abfcSBarry Smith PetscBool flag; 1759306f9a3SSatish Balay 1769306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1779306f9a3SSatish Balay FIXCHAR(name,len2,c2); 178*c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 179*c5929fdfSBarry Smith *ierr = PetscOptionsGetRealArray(*options,c1,c2,dvalue,nmax,&flag); 1805c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1819306f9a3SSatish Balay FREECHAR(pre,c1); 1829306f9a3SSatish Balay FREECHAR(name,c2); 1839306f9a3SSatish Balay } 1849306f9a3SSatish Balay 185*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetintarray_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 186ace3abfcSBarry Smith PetscInt *dvalue,PetscInt *nmax,PetscBool *flg,PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 1879306f9a3SSatish Balay { 1889306f9a3SSatish Balay char *c1,*c2; 189ace3abfcSBarry Smith PetscBool flag; 1909306f9a3SSatish Balay 1919306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 1929306f9a3SSatish Balay FIXCHAR(name,len2,c2); 193*c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 194*c5929fdfSBarry Smith *ierr = PetscOptionsGetIntArray(*options,c1,c2,dvalue,nmax,&flag); 1955c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 1969306f9a3SSatish Balay FREECHAR(pre,c1); 1979306f9a3SSatish Balay FREECHAR(name,c2); 1989306f9a3SSatish Balay } 1999306f9a3SSatish Balay 200*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsgetstring_(PetscOptions *options,CHAR pre PETSC_MIXED_LEN(len1),CHAR name PETSC_MIXED_LEN(len2), 201ace3abfcSBarry Smith CHAR string PETSC_MIXED_LEN(len),PetscBool *flg, 2029306f9a3SSatish Balay PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len)) 2039306f9a3SSatish Balay { 2049306f9a3SSatish Balay char *c1,*c2,*c3; 2054610e317SSatish Balay size_t len3; 206ace3abfcSBarry Smith PetscBool flag; 2079306f9a3SSatish Balay 2089306f9a3SSatish Balay FIXCHAR(pre,len1,c1); 2099306f9a3SSatish Balay FIXCHAR(name,len2,c2); 2109306f9a3SSatish Balay c3 = string; 2119306f9a3SSatish Balay len3 = len - 1; 2129306f9a3SSatish Balay 213*c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 214*c5929fdfSBarry Smith *ierr = PetscOptionsGetString(*options,c1,c2,c3,len3,&flag); 2155c550465SJed Brown if (!FORTRANNULLBOOL(flg)) *flg = flag; 2169306f9a3SSatish Balay FREECHAR(pre,c1); 2179306f9a3SSatish Balay FREECHAR(name,c2); 2187c363081SBarry Smith FIXRETURNCHAR(flag,string,len); 2199306f9a3SSatish Balay } 2209306f9a3SSatish Balay 2218cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL petscgetprogramname_(CHAR name PETSC_MIXED_LEN(len_in),PetscErrorCode *ierr PETSC_END_LEN(len_in)) 2229306f9a3SSatish Balay { 2239306f9a3SSatish Balay char *tmp; 2244610e317SSatish Balay size_t len; 2259306f9a3SSatish Balay tmp = name; 2269306f9a3SSatish Balay len = len_in - 1; 2279306f9a3SSatish Balay *ierr = PetscGetProgramName(tmp,len); 2287c363081SBarry Smith FIXRETURNCHAR(PETSC_TRUE,name,len_in); 2299306f9a3SSatish Balay } 2309306f9a3SSatish Balay 231*c5929fdfSBarry Smith PETSC_EXTERN void PETSC_STDCALL petscoptionsview_(PetscOptions *options,PetscViewer *vin,PetscErrorCode *ierr) 2323a15af8cSBlaise Bourdin { 2333a15af8cSBlaise Bourdin PetscViewer v; 2343a15af8cSBlaise Bourdin 2353a15af8cSBlaise Bourdin PetscPatchDefaultViewers_Fortran(vin,v); 236*c5929fdfSBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(options); 237*c5929fdfSBarry Smith *ierr = PetscOptionsView(*options,v); 2383a15af8cSBlaise Bourdin } 2393a15af8cSBlaise Bourdin 240685405a1SBarry Smith PETSC_EXTERN void PETSC_STDCALL petscobjectviewfromoptions_(PetscObject *obj,PetscObject *bobj,CHAR option PETSC_MIXED_LEN(loption),PetscErrorCode *ierr PETSC_END_LEN(loption)) 241a2865142SMatthew G. Knepley { 242685405a1SBarry Smith char *o; 243a2865142SMatthew G. Knepley 244a2865142SMatthew G. Knepley FIXCHAR(option, loption, o); 24546475a24SBarry Smith CHKFORTRANNULLOBJECTDEREFERENCE(bobj); 246685405a1SBarry Smith *ierr = PetscObjectViewFromOptions(*obj, *bobj, o); 247a2865142SMatthew G. Knepley FREECHAR(option, o); 248a2865142SMatthew G. Knepley } 249