1af0996ceSBarry Smith #include <petsc/private/fortranimpl.h> 2c6db04a5SJed Brown #include <petscdm.h> 3665c2dedSJed Brown #include <petscviewer.h> 49a42bb27SBarry Smith 59a42bb27SBarry Smith #if defined(PETSC_HAVE_FORTRAN_CAPS) 624e7ded0SBarry Smith #define dmview_ DMVIEW 75b400853SJed Brown #define dmsetoptionsprefix_ DMSETOPTIONSPREFIX 8b412c318SBarry Smith #define dmsetmattype_ DMSETMATTYPE 9b412c318SBarry Smith #define dmsetvectype_ DMSETVECTYPE 10c0dedaeaSBarry Smith #define dmgetmattype_ DMGETMATTYPE 11c0dedaeaSBarry Smith #define dmgetvectype_ DMGETVECTYPE 12*c58f1c22SToby Isaac #define dmlabelview_ DMLABELVIEW 13*c58f1c22SToby Isaac #define dmcreatelabel_ DMCREATELABEL 14*c58f1c22SToby Isaac #define dmhaslabel_ DMHASLABEL 15*c58f1c22SToby Isaac #define dmgetlabelvalue_ DMGETLABELVALUE 16*c58f1c22SToby Isaac #define dmsetlabelvalue_ DMSETLABELVALUE 17*c58f1c22SToby Isaac #define dmgetlabelsize_ DMGETLABELSIZE 18*c58f1c22SToby Isaac #define dmgetlabelidis_ DMGETLABELIDIS 19*c58f1c22SToby Isaac #define dmgetlabel_ DMGETLABEL 20*c58f1c22SToby Isaac #define dmgetstratumsize_ DMGETSTRATUMSIZE 21*c58f1c22SToby Isaac #define dmgetstratumis_ DMGETSTRATUMIS 229a42bb27SBarry Smith #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 2324e7ded0SBarry Smith #define dmview_ dmview 245b400853SJed Brown #define dmsetoptionsprefix_ dmsetoptionsprefix 25b412c318SBarry Smith #define dmsetmattype_ dmsetmattype 26b412c318SBarry Smith #define dmsetvectype_ dmsetvectype 27c0dedaeaSBarry Smith #define dmgetmattype_ dmgetmattype 28c0dedaeaSBarry Smith #define dmgetvectype_ dmgetvectype 29*c58f1c22SToby Isaac #define dmlabelview_ dmlabelview 30*c58f1c22SToby Isaac #define dmcreatelabel_ dmcreatelabel 31*c58f1c22SToby Isaac #define dmhaslabel_ dmhaslabel 32*c58f1c22SToby Isaac #define dmgetlabelvalue_ dmgetlabelvalue 33*c58f1c22SToby Isaac #define dmsetlabelvalue_ dmsetlabelvalue 34*c58f1c22SToby Isaac #define dmgetlabelsize_ dmlabelsize 35*c58f1c22SToby Isaac #define dmgetlabelidis_ dmlabelidis 36*c58f1c22SToby Isaac #define dmgetlabel_ dmgetlabel 37*c58f1c22SToby Isaac #define dmgetstratumsize_ dmgetstratumsize 38*c58f1c22SToby Isaac #define dmgetstratumis_ dmgetstratumis 399a42bb27SBarry Smith #endif 409a42bb27SBarry Smith 41c0dedaeaSBarry Smith PETSC_EXTERN void PETSC_STDCALL dmgetmattype_(DM *mm,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 42c0dedaeaSBarry Smith { 43c0dedaeaSBarry Smith const char *tname; 44c0dedaeaSBarry Smith 45c0dedaeaSBarry Smith *ierr = DMGetMatType(*mm,&tname);if (*ierr) return; 46c0dedaeaSBarry Smith if (name != PETSC_NULL_CHARACTER_Fortran) { 47c0dedaeaSBarry Smith *ierr = PetscStrncpy(name,tname,len);if (*ierr) return; 48c0dedaeaSBarry Smith } 49c0dedaeaSBarry Smith FIXRETURNCHAR(PETSC_TRUE,name,len); 50c0dedaeaSBarry Smith } 51c0dedaeaSBarry Smith 52c0dedaeaSBarry Smith PETSC_EXTERN void PETSC_STDCALL dmgetvectype_(DM *mm,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 53c0dedaeaSBarry Smith { 54c0dedaeaSBarry Smith const char *tname; 55c0dedaeaSBarry Smith 56c0dedaeaSBarry Smith *ierr = DMGetVecType(*mm,&tname);if (*ierr) return; 57c0dedaeaSBarry Smith if (name != PETSC_NULL_CHARACTER_Fortran) { 58c0dedaeaSBarry Smith *ierr = PetscStrncpy(name,tname,len);if (*ierr) return; 59c0dedaeaSBarry Smith } 60c0dedaeaSBarry Smith FIXRETURNCHAR(PETSC_TRUE,name,len); 61c0dedaeaSBarry Smith } 62c0dedaeaSBarry Smith 638cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL dmview_(DM *da,PetscViewer *vin,PetscErrorCode *ierr) 649a42bb27SBarry Smith { 659a42bb27SBarry Smith PetscViewer v; 669a42bb27SBarry Smith PetscPatchDefaultViewers_Fortran(vin,v); 679a42bb27SBarry Smith *ierr = DMView(*da,v); 689a42bb27SBarry Smith } 69950540a4SJed Brown 708cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL dmsetoptionsprefix_(DM *dm,CHAR prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len)) 715b400853SJed Brown { 725b400853SJed Brown char *t; 735b400853SJed Brown 745b400853SJed Brown FIXCHAR(prefix,len,t); 755b400853SJed Brown *ierr = DMSetOptionsPrefix(*dm,t); 765b400853SJed Brown FREECHAR(prefix,t); 775b400853SJed Brown } 78b412c318SBarry Smith 79b412c318SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmsetmattype_(DM *dm,CHAR prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len)) 80b412c318SBarry Smith { 81b412c318SBarry Smith char *t; 82b412c318SBarry Smith 83b412c318SBarry Smith FIXCHAR(prefix,len,t); 84b412c318SBarry Smith *ierr = DMSetMatType(*dm,t); 85b412c318SBarry Smith FREECHAR(prefix,t); 86b412c318SBarry Smith } 87b412c318SBarry Smith 88b412c318SBarry Smith 89b412c318SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmsetvectype_(DM *dm,CHAR prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len)) 90b412c318SBarry Smith { 91b412c318SBarry Smith char *t; 92b412c318SBarry Smith 93b412c318SBarry Smith FIXCHAR(prefix,len,t); 94b412c318SBarry Smith *ierr = DMSetVecType(*dm,t); 95b412c318SBarry Smith FREECHAR(prefix,t); 96b412c318SBarry Smith } 97*c58f1c22SToby Isaac 98*c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmcreatelabel_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), int *ierr PETSC_END_LEN(lenN)) 99*c58f1c22SToby Isaac { 100*c58f1c22SToby Isaac char *lname; 101*c58f1c22SToby Isaac 102*c58f1c22SToby Isaac FIXCHAR(name, lenN, lname); 103*c58f1c22SToby Isaac *ierr = DMCreateLabel(*dm, lname); 104*c58f1c22SToby Isaac FREECHAR(name, lname); 105*c58f1c22SToby Isaac } 106*c58f1c22SToby Isaac 107*c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmhaslabel_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), PetscBool *hasLabel, int *ierr PETSC_END_LEN(lenN)) 108*c58f1c22SToby Isaac { 109*c58f1c22SToby Isaac char *lname; 110*c58f1c22SToby Isaac 111*c58f1c22SToby Isaac FIXCHAR(name, lenN, lname); 112*c58f1c22SToby Isaac *ierr = DMHasLabel(*dm, lname, hasLabel); 113*c58f1c22SToby Isaac FREECHAR(name, lname); 114*c58f1c22SToby Isaac } 115*c58f1c22SToby Isaac 116*c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmgetlabelvalue_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), PetscInt *point, PetscInt *value, int *ierr PETSC_END_LEN(lenN)) 117*c58f1c22SToby Isaac { 118*c58f1c22SToby Isaac char *lname; 119*c58f1c22SToby Isaac 120*c58f1c22SToby Isaac FIXCHAR(name, lenN, lname); 121*c58f1c22SToby Isaac *ierr = DMGetLabelValue(*dm, lname, *point, value); 122*c58f1c22SToby Isaac FREECHAR(name, lname); 123*c58f1c22SToby Isaac } 124*c58f1c22SToby Isaac 125*c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmsetlabelvalue_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), PetscInt *point, PetscInt *value, int *ierr PETSC_END_LEN(lenN)) 126*c58f1c22SToby Isaac { 127*c58f1c22SToby Isaac char *lname; 128*c58f1c22SToby Isaac 129*c58f1c22SToby Isaac FIXCHAR(name, lenN, lname); 130*c58f1c22SToby Isaac *ierr = DMSetLabelValue(*dm, lname, *point, *value); 131*c58f1c22SToby Isaac FREECHAR(name, lname); 132*c58f1c22SToby Isaac } 133*c58f1c22SToby Isaac 134*c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmgetlabelsize_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), PetscInt *size, int *ierr PETSC_END_LEN(lenN)) 135*c58f1c22SToby Isaac { 136*c58f1c22SToby Isaac char *lname; 137*c58f1c22SToby Isaac 138*c58f1c22SToby Isaac FIXCHAR(name, lenN, lname); 139*c58f1c22SToby Isaac *ierr = DMGetLabelSize(*dm, lname, size); 140*c58f1c22SToby Isaac FREECHAR(name, lname); 141*c58f1c22SToby Isaac } 142*c58f1c22SToby Isaac 143*c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmgetlabelidis_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), IS *ids, int *ierr PETSC_END_LEN(lenN)) 144*c58f1c22SToby Isaac { 145*c58f1c22SToby Isaac char *lname; 146*c58f1c22SToby Isaac 147*c58f1c22SToby Isaac FIXCHAR(name, lenN, lname); 148*c58f1c22SToby Isaac *ierr = DMGetLabelIdIS(*dm, lname, ids); 149*c58f1c22SToby Isaac FREECHAR(name, lname); 150*c58f1c22SToby Isaac } 151*c58f1c22SToby Isaac 152*c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmgetlabel_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), DMLabel *label, int *ierr PETSC_END_LEN(lenN)) 153*c58f1c22SToby Isaac { 154*c58f1c22SToby Isaac char *lname; 155*c58f1c22SToby Isaac 156*c58f1c22SToby Isaac FIXCHAR(name, lenN, lname); 157*c58f1c22SToby Isaac *ierr = DMGetLabel(*dm, lname, label); 158*c58f1c22SToby Isaac FREECHAR(name, lname); 159*c58f1c22SToby Isaac } 160*c58f1c22SToby Isaac 161*c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmgetstratumsize_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), PetscInt *value, PetscInt *size, int *ierr PETSC_END_LEN(lenN)) 162*c58f1c22SToby Isaac { 163*c58f1c22SToby Isaac char *lname; 164*c58f1c22SToby Isaac 165*c58f1c22SToby Isaac FIXCHAR(name, lenN, lname); 166*c58f1c22SToby Isaac *ierr = DMGetStratumSize(*dm, lname, *value, size); 167*c58f1c22SToby Isaac FREECHAR(name, lname); 168*c58f1c22SToby Isaac } 169*c58f1c22SToby Isaac 170*c58f1c22SToby Isaac PETSC_EXTERN void PETSC_STDCALL dmgetstratumis_(DM *dm, CHAR name PETSC_MIXED_LEN(lenN), PetscInt *value, IS *is, int *ierr PETSC_END_LEN(lenN)) 171*c58f1c22SToby Isaac { 172*c58f1c22SToby Isaac char *lname; 173*c58f1c22SToby Isaac 174*c58f1c22SToby Isaac FIXCHAR(name, lenN, lname); 175*c58f1c22SToby Isaac *ierr = DMGetStratumIS(*dm, lname, *value, is); 176*c58f1c22SToby Isaac FREECHAR(name, lname); 177*c58f1c22SToby Isaac } 178