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 818fb3ae4SVincent Le Chenadec #define dmsettype_ DMSETTYPE 918fb3ae4SVincent Le Chenadec #define dmgettype_ DMGETTYPE 10b412c318SBarry Smith #define dmsetmattype_ DMSETMATTYPE 11b412c318SBarry Smith #define dmsetvectype_ DMSETVECTYPE 12c0dedaeaSBarry Smith #define dmgetmattype_ DMGETMATTYPE 13c0dedaeaSBarry Smith #define dmgetvectype_ DMGETVECTYPE 14c58f1c22SToby Isaac #define dmlabelview_ DMLABELVIEW 15c58f1c22SToby Isaac #define dmcreatelabel_ DMCREATELABEL 16c58f1c22SToby Isaac #define dmhaslabel_ DMHASLABEL 17c58f1c22SToby Isaac #define dmgetlabelvalue_ DMGETLABELVALUE 18c58f1c22SToby Isaac #define dmsetlabelvalue_ DMSETLABELVALUE 19c58f1c22SToby Isaac #define dmgetlabelsize_ DMGETLABELSIZE 20c58f1c22SToby Isaac #define dmgetlabelidis_ DMGETLABELIDIS 21a7631e77SMatthew G. Knepley #define dmgetlabelname_ DMGETLABELNAME 22c58f1c22SToby Isaac #define dmgetlabel_ DMGETLABEL 23c58f1c22SToby Isaac #define dmgetstratumsize_ DMGETSTRATUMSIZE 24c58f1c22SToby Isaac #define dmgetstratumis_ DMGETSTRATUMIS 254de306b1SToby Isaac #define dmsetstratumis_ DMSETSTRATUMIS 26d7188716SSatish Balay #define dmremovelabel_ DMREMOVELABEL 27fe2efc57SMark #define dmviewfromoptions_ DMVIEWFROMOPTIONS 289a42bb27SBarry Smith #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 2924e7ded0SBarry Smith #define dmview_ dmview 305b400853SJed Brown #define dmsetoptionsprefix_ dmsetoptionsprefix 3118fb3ae4SVincent Le Chenadec #define dmsettype_ dmsettype 3218fb3ae4SVincent Le Chenadec #define dmgettype_ dmgettype 33b412c318SBarry Smith #define dmsetmattype_ dmsetmattype 34b412c318SBarry Smith #define dmsetvectype_ dmsetvectype 35c0dedaeaSBarry Smith #define dmgetmattype_ dmgetmattype 36c0dedaeaSBarry Smith #define dmgetvectype_ dmgetvectype 37c58f1c22SToby Isaac #define dmlabelview_ dmlabelview 38c58f1c22SToby Isaac #define dmcreatelabel_ dmcreatelabel 39c58f1c22SToby Isaac #define dmhaslabel_ dmhaslabel 40c58f1c22SToby Isaac #define dmgetlabelvalue_ dmgetlabelvalue 41c58f1c22SToby Isaac #define dmsetlabelvalue_ dmsetlabelvalue 42c58f1c22SToby Isaac #define dmgetlabelsize_ dmlabelsize 43c58f1c22SToby Isaac #define dmgetlabelidis_ dmlabelidis 44a7631e77SMatthew G. Knepley #define dmgetlabelname_ dmgetlabelname 45c58f1c22SToby Isaac #define dmgetlabel_ dmgetlabel 46c58f1c22SToby Isaac #define dmgetstratumsize_ dmgetstratumsize 47c58f1c22SToby Isaac #define dmgetstratumis_ dmgetstratumis 484de306b1SToby Isaac #define dmsetstratumis_ dmsetstratumis 49d7188716SSatish Balay #define dmremovelabel_ dmremovelabel 50fe2efc57SMark #define dmviewfromoptions_ dmviewfromoptions 519a42bb27SBarry Smith #endif 529a42bb27SBarry Smith 53*19caf8f3SSatish Balay PETSC_EXTERN void dmgetmattype_(DM *mm,char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 54c0dedaeaSBarry Smith { 55c0dedaeaSBarry Smith const char *tname; 56c0dedaeaSBarry Smith 57c0dedaeaSBarry Smith *ierr = DMGetMatType(*mm,&tname);if (*ierr) return; 58c0dedaeaSBarry Smith if (name != PETSC_NULL_CHARACTER_Fortran) { 59c0dedaeaSBarry Smith *ierr = PetscStrncpy(name,tname,len);if (*ierr) return; 60c0dedaeaSBarry Smith } 61c0dedaeaSBarry Smith FIXRETURNCHAR(PETSC_TRUE,name,len); 62c0dedaeaSBarry Smith } 63c0dedaeaSBarry Smith 64*19caf8f3SSatish Balay PETSC_EXTERN void dmgetvectype_(DM *mm,char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 65c0dedaeaSBarry Smith { 66c0dedaeaSBarry Smith const char *tname; 67c0dedaeaSBarry Smith 68c0dedaeaSBarry Smith *ierr = DMGetVecType(*mm,&tname);if (*ierr) return; 69c0dedaeaSBarry Smith if (name != PETSC_NULL_CHARACTER_Fortran) { 70c0dedaeaSBarry Smith *ierr = PetscStrncpy(name,tname,len);if (*ierr) return; 71c0dedaeaSBarry Smith } 72c0dedaeaSBarry Smith FIXRETURNCHAR(PETSC_TRUE,name,len); 73c0dedaeaSBarry Smith } 74c0dedaeaSBarry Smith 75*19caf8f3SSatish Balay PETSC_EXTERN void dmview_(DM *da,PetscViewer *vin,PetscErrorCode *ierr) 769a42bb27SBarry Smith { 779a42bb27SBarry Smith PetscViewer v; 789a42bb27SBarry Smith PetscPatchDefaultViewers_Fortran(vin,v); 799a42bb27SBarry Smith *ierr = DMView(*da,v); 809a42bb27SBarry Smith } 81950540a4SJed Brown 82*19caf8f3SSatish Balay PETSC_EXTERN void dmsetoptionsprefix_(DM *dm,char* prefix, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 835b400853SJed Brown { 845b400853SJed Brown char *t; 855b400853SJed Brown 865b400853SJed Brown FIXCHAR(prefix,len,t); 87d49bb8f9SBarry Smith *ierr = DMSetOptionsPrefix(*dm,t);if (*ierr) return; 885b400853SJed Brown FREECHAR(prefix,t); 895b400853SJed Brown } 90b412c318SBarry Smith 91*19caf8f3SSatish Balay PETSC_EXTERN void dmsettype_(DM *x,char* type_name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 9218fb3ae4SVincent Le Chenadec { 9318fb3ae4SVincent Le Chenadec char *t; 9418fb3ae4SVincent Le Chenadec 9518fb3ae4SVincent Le Chenadec FIXCHAR(type_name,len,t); 96d49bb8f9SBarry Smith *ierr = DMSetType(*x,t);if (*ierr) return; 9718fb3ae4SVincent Le Chenadec FREECHAR(type_name,t); 9818fb3ae4SVincent Le Chenadec } 9918fb3ae4SVincent Le Chenadec 100*19caf8f3SSatish Balay PETSC_EXTERN void dmgettype_(DM *mm,char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 10118fb3ae4SVincent Le Chenadec { 10218fb3ae4SVincent Le Chenadec const char *tname; 10318fb3ae4SVincent Le Chenadec 10418fb3ae4SVincent Le Chenadec *ierr = DMGetType(*mm,&tname);if (*ierr) return; 10518fb3ae4SVincent Le Chenadec if (name != PETSC_NULL_CHARACTER_Fortran) { 10618fb3ae4SVincent Le Chenadec *ierr = PetscStrncpy(name,tname,len);if (*ierr) return; 10718fb3ae4SVincent Le Chenadec } 10818fb3ae4SVincent Le Chenadec FIXRETURNCHAR(PETSC_TRUE,name,len); 10918fb3ae4SVincent Le Chenadec 11018fb3ae4SVincent Le Chenadec } 11118fb3ae4SVincent Le Chenadec 112*19caf8f3SSatish Balay PETSC_EXTERN void dmsetmattype_(DM *dm,char* prefix, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 113b412c318SBarry Smith { 114b412c318SBarry Smith char *t; 115b412c318SBarry Smith 116b412c318SBarry Smith FIXCHAR(prefix,len,t); 117d49bb8f9SBarry Smith *ierr = DMSetMatType(*dm,t);if (*ierr) return; 118b412c318SBarry Smith FREECHAR(prefix,t); 119b412c318SBarry Smith } 120b412c318SBarry Smith 121b412c318SBarry Smith 122*19caf8f3SSatish Balay PETSC_EXTERN void dmsetvectype_(DM *dm,char* prefix, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 123b412c318SBarry Smith { 124b412c318SBarry Smith char *t; 125b412c318SBarry Smith 126b412c318SBarry Smith FIXCHAR(prefix,len,t); 127d49bb8f9SBarry Smith *ierr = DMSetVecType(*dm,t);if (*ierr) return; 128b412c318SBarry Smith FREECHAR(prefix,t); 129b412c318SBarry Smith } 130c58f1c22SToby Isaac 131*19caf8f3SSatish Balay PETSC_EXTERN void dmcreatelabel_(DM *dm, char* name, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN) 132c58f1c22SToby Isaac { 133c58f1c22SToby Isaac char *lname; 134c58f1c22SToby Isaac 135c58f1c22SToby Isaac FIXCHAR(name, lenN, lname); 136d49bb8f9SBarry Smith *ierr = DMCreateLabel(*dm, lname);if (*ierr) return; 137c58f1c22SToby Isaac FREECHAR(name, lname); 138c58f1c22SToby Isaac } 139c58f1c22SToby Isaac 140*19caf8f3SSatish Balay PETSC_EXTERN void dmhaslabel_(DM *dm, char* name, PetscBool *hasLabel, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN) 141c58f1c22SToby Isaac { 142c58f1c22SToby Isaac char *lname; 143c58f1c22SToby Isaac 144c58f1c22SToby Isaac FIXCHAR(name, lenN, lname); 145d49bb8f9SBarry Smith *ierr = DMHasLabel(*dm, lname, hasLabel);if (*ierr) return; 146c58f1c22SToby Isaac FREECHAR(name, lname); 147c58f1c22SToby Isaac } 148c58f1c22SToby Isaac 149*19caf8f3SSatish Balay PETSC_EXTERN void dmgetlabelvalue_(DM *dm, char* name, PetscInt *point, PetscInt *value, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN) 150c58f1c22SToby Isaac { 151c58f1c22SToby Isaac char *lname; 152c58f1c22SToby Isaac 153c58f1c22SToby Isaac FIXCHAR(name, lenN, lname); 154d49bb8f9SBarry Smith *ierr = DMGetLabelValue(*dm, lname, *point, value);if (*ierr) return; 155c58f1c22SToby Isaac FREECHAR(name, lname); 156c58f1c22SToby Isaac } 157c58f1c22SToby Isaac 158*19caf8f3SSatish Balay PETSC_EXTERN void dmsetlabelvalue_(DM *dm, char* name, PetscInt *point, PetscInt *value, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN) 159c58f1c22SToby Isaac { 160c58f1c22SToby Isaac char *lname; 161c58f1c22SToby Isaac 162c58f1c22SToby Isaac FIXCHAR(name, lenN, lname); 163d49bb8f9SBarry Smith *ierr = DMSetLabelValue(*dm, lname, *point, *value);if (*ierr) return; 164c58f1c22SToby Isaac FREECHAR(name, lname); 165c58f1c22SToby Isaac } 166c58f1c22SToby Isaac 167*19caf8f3SSatish Balay PETSC_EXTERN void dmgetlabelsize_(DM *dm, char* name, PetscInt *size, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN) 168c58f1c22SToby Isaac { 169c58f1c22SToby Isaac char *lname; 170c58f1c22SToby Isaac 171c58f1c22SToby Isaac FIXCHAR(name, lenN, lname); 172d49bb8f9SBarry Smith *ierr = DMGetLabelSize(*dm, lname, size);if (*ierr) return; 173c58f1c22SToby Isaac FREECHAR(name, lname); 174c58f1c22SToby Isaac } 175c58f1c22SToby Isaac 176*19caf8f3SSatish Balay PETSC_EXTERN void dmgetlabelidis_(DM *dm, char* name, IS *ids, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN) 177c58f1c22SToby Isaac { 178c58f1c22SToby Isaac char *lname; 179c58f1c22SToby Isaac 180c58f1c22SToby Isaac FIXCHAR(name, lenN, lname); 181d49bb8f9SBarry Smith *ierr = DMGetLabelIdIS(*dm, lname, ids);if (*ierr) return; 182c58f1c22SToby Isaac FREECHAR(name, lname); 183c58f1c22SToby Isaac } 184c58f1c22SToby Isaac 185*19caf8f3SSatish Balay PETSC_EXTERN void dmgetlabelname_(DM *dm,PetscInt *n,char* name,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 186a7631e77SMatthew G. Knepley { 187a7631e77SMatthew G. Knepley const char *tmp; 1889566978fSMatthew G. Knepley *ierr = DMGetLabelName(*dm,*n,&tmp); 189a7631e77SMatthew G. Knepley *ierr = PetscStrncpy(name,tmp,len);if (*ierr) return; 190a7631e77SMatthew G. Knepley FIXRETURNCHAR(PETSC_TRUE,name,len); 191a7631e77SMatthew G. Knepley } 192a7631e77SMatthew G. Knepley 193*19caf8f3SSatish Balay PETSC_EXTERN void dmgetlabel_(DM *dm, char* name, DMLabel *label, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN) 194c58f1c22SToby Isaac { 195c58f1c22SToby Isaac char *lname; 196c58f1c22SToby Isaac 197c58f1c22SToby Isaac FIXCHAR(name, lenN, lname); 198d49bb8f9SBarry Smith *ierr = DMGetLabel(*dm, lname, label);if (*ierr) return; 199c58f1c22SToby Isaac FREECHAR(name, lname); 200c58f1c22SToby Isaac } 201c58f1c22SToby Isaac 202*19caf8f3SSatish Balay PETSC_EXTERN void dmgetstratumsize_(DM *dm, char* name, PetscInt *value, PetscInt *size, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN) 203c58f1c22SToby Isaac { 204c58f1c22SToby Isaac char *lname; 205c58f1c22SToby Isaac 206c58f1c22SToby Isaac FIXCHAR(name, lenN, lname); 207d49bb8f9SBarry Smith *ierr = DMGetStratumSize(*dm, lname, *value, size);if (*ierr) return; 208c58f1c22SToby Isaac FREECHAR(name, lname); 209c58f1c22SToby Isaac } 210c58f1c22SToby Isaac 211*19caf8f3SSatish Balay PETSC_EXTERN void dmgetstratumis_(DM *dm, char* name, PetscInt *value, IS *is, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN) 212c58f1c22SToby Isaac { 213c58f1c22SToby Isaac char *lname; 214c58f1c22SToby Isaac 215c58f1c22SToby Isaac FIXCHAR(name, lenN, lname); 216d49bb8f9SBarry Smith *ierr = DMGetStratumIS(*dm, lname, *value, is);if (*ierr) return; 21706c2e117SBarry Smith if (is && !*is) *is = (IS)0; 218c58f1c22SToby Isaac FREECHAR(name, lname); 219c58f1c22SToby Isaac } 220d7188716SSatish Balay 221*19caf8f3SSatish Balay PETSC_EXTERN void dmsetstratumis_(DM *dm, char* name, PetscInt *value, IS *is, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN) 2224de306b1SToby Isaac { 2234de306b1SToby Isaac char *lname; 2244de306b1SToby Isaac 2254de306b1SToby Isaac FIXCHAR(name, lenN, lname); 226d49bb8f9SBarry Smith *ierr = DMSetStratumIS(*dm, lname, *value, *is);if (*ierr) return; 2274de306b1SToby Isaac FREECHAR(name, lname); 2284de306b1SToby Isaac } 2294de306b1SToby Isaac 230*19caf8f3SSatish Balay PETSC_EXTERN void dmremovelabel_(DM *dm, char* name, DMLabel *label, int *ierr,PETSC_FORTRAN_CHARLEN_T lenN) 231d7188716SSatish Balay { 232d7188716SSatish Balay char *lname; 233d7188716SSatish Balay 234d7188716SSatish Balay FIXCHAR(name, lenN, lname); 235d49bb8f9SBarry Smith *ierr = DMRemoveLabel(*dm, lname, label);if (*ierr) return; 236d7188716SSatish Balay FREECHAR(name, lname); 237d7188716SSatish Balay } 238fe2efc57SMark 239*19caf8f3SSatish Balay PETSC_EXTERN void dmviewfromoptions_(DM *dm,PetscObject obj,char* type,PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len) 240fe2efc57SMark { 241fe2efc57SMark char *t; 242fe2efc57SMark 243fe2efc57SMark FIXCHAR(type,len,t); 244fe2efc57SMark *ierr = DMViewFromOptions(*dm,obj,t);if (*ierr) return; 245fe2efc57SMark FREECHAR(type,t); 246fe2efc57SMark } 247