1 #include <petscsection.h>
2 #include <petsc/private/ftnimpl.h>
3
4 #if defined(PETSC_HAVE_FORTRAN_CAPS)
5 #define petscsectiongetconstraintindices_ PETSCSECTIONGETCONSTRAINTINDICES
6 #define petscsectionrestoreconstraintindices_ PETSCSECTIONRESTORECONSTRAINTINDICES
7 #define petscsectiongetfieldconstraintindices_ PETSCSECTIONGETFIELDCONSTRAINTINDICES
8 #define petscsectionrestorefieldconstraintindices_ PETSCSECTIONRESTOREFIELDCONSTRAINTINDICES
9 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
10 #define petscsectiongetconstraintindices_ petscsectiongetconstraintindices
11 #define petscsectionrestoreconstraintindices_ petscsectionrestoreconstraintindices
12 #define petscsectiongetfieldconstraintindices_ petscsectiongetfieldconstraintindices
13 #define petscsectionrestorefieldconstraintindices_ petscsectionrestorefieldconstraintindices
14 #endif
15
petscsectiongetconstraintindices_(PetscSection * s,PetscInt * point,F90Array1d * indices,int * ierr PETSC_F90_2PTR_PROTO (ptrd))16 PETSC_EXTERN void petscsectiongetconstraintindices_(PetscSection *s, PetscInt *point, F90Array1d *indices, int *ierr PETSC_F90_2PTR_PROTO(ptrd))
17 {
18 const PetscInt *idx;
19 PetscInt n;
20
21 *ierr = PetscSectionGetConstraintIndices(*s, *point, &idx);
22 if (*ierr) return;
23 *ierr = PetscSectionGetConstraintDof(*s, *point, &n);
24 if (*ierr) return;
25 *ierr = F90Array1dCreate((void *)idx, MPIU_INT, 1, n, indices PETSC_F90_2PTR_PARAM(ptrd));
26 }
27
petscsectionrestoreconstraintindices_(PetscSection * s,PetscInt * point,F90Array1d * indices,int * ierr PETSC_F90_2PTR_PROTO (ptrd))28 PETSC_EXTERN void petscsectionrestoreconstraintindices_(PetscSection *s, PetscInt *point, F90Array1d *indices, int *ierr PETSC_F90_2PTR_PROTO(ptrd))
29 {
30 *ierr = F90Array1dDestroy(indices, MPIU_INT PETSC_F90_2PTR_PARAM(ptrd));
31 }
32
petscsectiongetfieldconstraintindices_(PetscSection * s,PetscInt * point,PetscInt * field,F90Array1d * indices,int * ierr PETSC_F90_2PTR_PROTO (ptrd))33 PETSC_EXTERN void petscsectiongetfieldconstraintindices_(PetscSection *s, PetscInt *point, PetscInt *field, F90Array1d *indices, int *ierr PETSC_F90_2PTR_PROTO(ptrd))
34 {
35 const PetscInt *idx;
36 PetscInt n;
37
38 *ierr = PetscSectionGetFieldConstraintIndices(*s, *point, *field, &idx);
39 if (*ierr) return;
40 *ierr = PetscSectionGetFieldConstraintDof(*s, *point, *field, &n);
41 if (*ierr) return;
42 *ierr = F90Array1dCreate((void *)idx, MPIU_INT, 1, n, indices PETSC_F90_2PTR_PARAM(ptrd));
43 }
44
petscsectionrestorefieldconstraintindices_(PetscSection * s,PetscInt * point,PetscInt * field,F90Array1d * indices,int * ierr PETSC_F90_2PTR_PROTO (ptrd))45 PETSC_EXTERN void petscsectionrestorefieldconstraintindices_(PetscSection *s, PetscInt *point, PetscInt *field, F90Array1d *indices, int *ierr PETSC_F90_2PTR_PROTO(ptrd))
46 {
47 *ierr = F90Array1dDestroy(indices, MPIU_INT PETSC_F90_2PTR_PARAM(ptrd));
48 if (*ierr) return;
49 }
50