1b5a418daSToby Isaac #include <petsc/private/fortranimpl.h> 2b5a418daSToby Isaac #include <petscis.h> 3b5a418daSToby Isaac #include <petscviewer.h> 4b5a418daSToby Isaac 5b5a418daSToby Isaac #if defined(PETSC_HAVE_FORTRAN_CAPS) 6b5a418daSToby Isaac #define petscsectiongetpointsyms_ PETSCSECTIONGETPOINTSYMS 7b5a418daSToby Isaac #define petscsectionrestorepointsyms_ PETSCSECTIONRESTOREPOINTSYMS 8b5a418daSToby Isaac #define petscsectiongetfieldpointsyms_ PETSCSECTIONGETFIELDPOINTSYMS 9b5a418daSToby Isaac #define petscsectionrestorefieldpointsyms_ PETSCSECTIONRESTOREFIELDPOINTSYMS 10a1535ed2SVaclav Hapla #define petscsectionview_ PETSCSECTIONVIEW 11a1535ed2SVaclav Hapla #define petscsectiongetfieldname_ PETSCSECTIONGETFIELDNAME 12a1535ed2SVaclav Hapla #define petscsectionsetfieldname_ PETSCSECTIONSETFIELDNAME 13*0d256f5dSMatthew G. Knepley #define petscsfdistributesection_ PETSCSFDISTRIBUTESECTION 14b5a418daSToby Isaac #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 15b5a418daSToby Isaac #define petscsectiongetpointsyms_ petscsectiongetpointsyms 16b5a418daSToby Isaac #define petscsectionrestorepointsyms_ petscsectionrestorepointsyms 17b5a418daSToby Isaac #define petscsectiongetfieldpointsyms_ petscsectiongetfieldpointsyms 18b5a418daSToby Isaac #define petscsectionrestorefieldpointsyms_ petscsectionrestorefieldpointsyms 19a1535ed2SVaclav Hapla #define petscsectionview_ petscsectionview 20a1535ed2SVaclav Hapla #define petscsectiongetfieldname_ petscsectiongetfieldname 21a1535ed2SVaclav Hapla #define petscsectionsetfieldname_ petscsectionsetfieldname 22*0d256f5dSMatthew G. Knepley #define petscsfdistributesection_ petscsfdistributesection 23b5a418daSToby Isaac #endif 24b5a418daSToby Isaac 25b5a418daSToby Isaac PETSC_EXTERN void PETSC_STDCALL petscsectiongetpointsyms_(PetscSection section,PetscInt *numPoints, PetscInt *points, PetscInt ***perms, PetscScalar ***rots, int *__ierr ){ 26b5a418daSToby Isaac *__ierr = PetscSectionGetPointSyms(section,*numPoints,points,(const PetscInt ***)perms,(const PetscScalar ***)rots); 27b5a418daSToby Isaac } 28b5a418daSToby Isaac PETSC_EXTERN void PETSC_STDCALL petscsectionrestorepointsyms_(PetscSection section,PetscInt *numPoints, PetscInt *points, PetscInt ***perms, PetscScalar ***rots, int *__ierr ){ 29b5a418daSToby Isaac *__ierr = PetscSectionRestorePointSyms(section,*numPoints,points,(const PetscInt ***)perms,(const PetscScalar ***)rots); 30b5a418daSToby Isaac } 31b5a418daSToby Isaac PETSC_EXTERN void PETSC_STDCALL petscsectiongetfieldpointsyms_(PetscSection section,PetscInt *field,PetscInt *numPoints, PetscInt *points, PetscInt ***perms, PetscScalar ***rots, int *__ierr ){ 32b5a418daSToby Isaac *__ierr = PetscSectionGetFieldPointSyms(section,*field,*numPoints,points,(const PetscInt ***)perms,(const PetscScalar ***)rots); 33b5a418daSToby Isaac } 34b5a418daSToby Isaac PETSC_EXTERN void PETSC_STDCALL petscsectionrestorefieldpointsyms_(PetscSection section,PetscInt *field,PetscInt *numPoints, PetscInt *points, PetscInt ***perms, PetscScalar ***rots, int *__ierr ){ 35b5a418daSToby Isaac *__ierr = PetscSectionRestoreFieldPointSyms(section,*field,*numPoints,points,(const PetscInt ***)perms,(const PetscScalar ***)rots); 36b5a418daSToby Isaac } 37a1535ed2SVaclav Hapla 38a1535ed2SVaclav Hapla PETSC_EXTERN void PETSC_STDCALL petscsectionview_(PetscSection *s, PetscViewer *vin, PetscErrorCode *ierr) 39a1535ed2SVaclav Hapla { 40a1535ed2SVaclav Hapla PetscViewer v; 41a1535ed2SVaclav Hapla 42a1535ed2SVaclav Hapla PetscPatchDefaultViewers_Fortran(vin, v); 43a1535ed2SVaclav Hapla *ierr = PetscSectionView(*s, v); 44a1535ed2SVaclav Hapla } 45a1535ed2SVaclav Hapla 46a1535ed2SVaclav Hapla PETSC_EXTERN void PETSC_STDCALL petscsectiongetfieldname_(PetscSection *s, PetscInt *field, char* name PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len)) 47a1535ed2SVaclav Hapla { 48a1535ed2SVaclav Hapla const char *fname; 49a1535ed2SVaclav Hapla 50a1535ed2SVaclav Hapla *ierr = PetscSectionGetFieldName(*s, *field, &fname);if (*ierr) return; 51a1535ed2SVaclav Hapla *ierr = PetscStrncpy(name, fname, len); 52a1535ed2SVaclav Hapla FIXRETURNCHAR(PETSC_TRUE,name,len); 53a1535ed2SVaclav Hapla } 54a1535ed2SVaclav Hapla 55a1535ed2SVaclav Hapla PETSC_EXTERN void PETSC_STDCALL petscsectionsetfieldname_(PetscSection *s, PetscInt *field, char* name PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len)) 56a1535ed2SVaclav Hapla { 57a1535ed2SVaclav Hapla char *f; 58a1535ed2SVaclav Hapla 59a1535ed2SVaclav Hapla FIXCHAR(name, len, f); 60a1535ed2SVaclav Hapla *ierr = PetscSectionSetFieldName(*s, *field, f);if (*ierr) return; 61a1535ed2SVaclav Hapla FREECHAR(name, f); 62a1535ed2SVaclav Hapla } 63*0d256f5dSMatthew G. Knepley 64*0d256f5dSMatthew G. Knepley PETSC_EXTERN void PETSC_STDCALL petscsfdistributesection_(PetscSF sf,PetscSection rootSection,PetscInt **remoteOffsets,PetscSection leafSection, int *__ierr ){ 65*0d256f5dSMatthew G. Knepley if (remoteOffsets != PETSC_NULL_INTEGER) SETERRQ(PETSC_COMM_SELF, PETSC_ERR_SUP, "The remoteOffsets argument must be PETSC_NULL_INTEGER in Fortran"); 66*0d256f5dSMatthew G. Knepley *__ierr = PetscSectionRestoreFieldPointSyms(sf,rootSection,NULL,leafSection); 67*0d256f5dSMatthew G. Knepley } 68