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 27*fe2efc57SMark #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 50*fe2efc57SMark #define dmviewfromoptions_ dmviewfromoptions 519a42bb27SBarry Smith #endif 529a42bb27SBarry Smith 53390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmgetmattype_(DM *mm,char* name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(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 64390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmgetvectype_(DM *mm,char* name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(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 758cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL 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 82390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmsetoptionsprefix_(DM *dm,char* prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(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 91390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmsettype_(DM *x,char* type_name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(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 100390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmgettype_(DM *mm,char* name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(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 112390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmsetmattype_(DM *dm,char* prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(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 122390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmsetvectype_(DM *dm,char* prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(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 131390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmcreatelabel_(DM *dm, char* name PETSC_MIXED_LEN(lenN), int *ierr PETSC_END_LEN(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 140390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmhaslabel_(DM *dm, char* name PETSC_MIXED_LEN(lenN), PetscBool *hasLabel, int *ierr PETSC_END_LEN(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 149390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmgetlabelvalue_(DM *dm, char* name PETSC_MIXED_LEN(lenN), PetscInt *point, PetscInt *value, int *ierr PETSC_END_LEN(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 158390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmsetlabelvalue_(DM *dm, char* name PETSC_MIXED_LEN(lenN), PetscInt *point, PetscInt *value, int *ierr PETSC_END_LEN(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 167390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmgetlabelsize_(DM *dm, char* name PETSC_MIXED_LEN(lenN), PetscInt *size, int *ierr PETSC_END_LEN(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 176390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmgetlabelidis_(DM *dm, char* name PETSC_MIXED_LEN(lenN), IS *ids, int *ierr PETSC_END_LEN(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 1859566978fSMatthew G. Knepley PETSC_EXTERN void PETSC_STDCALL dmgetlabelname_(DM *dm,PetscInt *n,char* name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(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 193390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmgetlabel_(DM *dm, char* name PETSC_MIXED_LEN(lenN), DMLabel *label, int *ierr PETSC_END_LEN(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 202390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmgetstratumsize_(DM *dm, char* name PETSC_MIXED_LEN(lenN), PetscInt *value, PetscInt *size, int *ierr PETSC_END_LEN(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 211390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmgetstratumis_(DM *dm, char* name PETSC_MIXED_LEN(lenN), PetscInt *value, IS *is, int *ierr PETSC_END_LEN(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 221390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmsetstratumis_(DM *dm, char* name PETSC_MIXED_LEN(lenN), PetscInt *value, IS *is, int *ierr PETSC_END_LEN(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 230390e1bf2SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmremovelabel_(DM *dm, char* name PETSC_MIXED_LEN(lenN), DMLabel *label, int *ierr PETSC_END_LEN(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 } 238*fe2efc57SMark 239*fe2efc57SMark PETSC_EXTERN void PETSC_STDCALL dmviewfromoptions_(DM *dm,PetscObject obj,char* type PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len)) 240*fe2efc57SMark { 241*fe2efc57SMark char *t; 242*fe2efc57SMark 243*fe2efc57SMark FIXCHAR(type,len,t); 244*fe2efc57SMark *ierr = DMViewFromOptions(*dm,obj,t);if (*ierr) return; 245*fe2efc57SMark FREECHAR(type,t); 246*fe2efc57SMark } 247