Actual source code: zplexgeometryf90.c
1: #include <petsc/private/fortranimpl.h>
2: #include <petscdmplex.h>
3: #include <petsc/private/f90impl.h>
5: #if defined(PETSC_HAVE_FORTRAN_CAPS)
6: #define dmplexcomputecellgeometryaffinefem_ DMPLEXCOMPUTECELLGEOMETRYAFFINEFEM
7: #define dmplexcomputecellgeometryfvm_ DMPLEXCOMPUTECELLGEOMETRYFVM
8: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) && !defined(FORTRANDOUBLEUNDERSCORE)
9: #define dmplexcomputecellgeometryaffinefem_ dmplexcomputecellgeometryaffinefem
10: #define dmplexcomputecellgeometryfvm_ dmplexcomputecellgeometryfvm
11: #endif
13: PETSC_EXTERN void dmplexcomputecellgeometryaffinefem_(DM *dm, PetscInt *cell, F90Array1d *ptrV, F90Array1d *ptrJ, F90Array1d *ptrIJ, PetscReal *detJ, int *ierr PETSC_F90_2PTR_PROTO(ptrVd) PETSC_F90_2PTR_PROTO(ptrJd) PETSC_F90_2PTR_PROTO(ptrIJd))
14: {
15: PetscReal *v0;
16: PetscReal *J;
17: PetscReal *invJ;
19: *ierr = F90Array1dAccess(ptrV, MPIU_REAL, (void **)&v0 PETSC_F90_2PTR_PARAM(ptrVd));
20: if (*ierr) return;
21: *ierr = F90Array1dAccess(ptrJ, MPIU_REAL, (void **)&J PETSC_F90_2PTR_PARAM(ptrJd));
22: if (*ierr) return;
23: *ierr = F90Array1dAccess(ptrIJ, MPIU_REAL, (void **)&invJ PETSC_F90_2PTR_PARAM(ptrIJd));
24: if (*ierr) return;
25: *ierr = DMPlexComputeCellGeometryAffineFEM(*dm, *cell, v0, J, invJ, detJ);
26: }
28: PETSC_EXTERN void dmplexcomputecellgeometryfem_(DM *dm, PetscInt *cell, PetscQuadrature *quad, F90Array1d *ptrV, F90Array1d *ptrJ, F90Array1d *ptrIJ, PetscReal *detJ, int *ierr PETSC_F90_2PTR_PROTO(ptrVd) PETSC_F90_2PTR_PROTO(ptrJd) PETSC_F90_2PTR_PROTO(ptrIJd))
29: {
30: PetscReal *v0;
31: PetscReal *J;
32: PetscReal *invJ;
34: *ierr = F90Array1dAccess(ptrV, MPIU_REAL, (void **)&v0 PETSC_F90_2PTR_PARAM(ptrVd));
35: if (*ierr) return;
36: *ierr = F90Array1dAccess(ptrJ, MPIU_REAL, (void **)&J PETSC_F90_2PTR_PARAM(ptrJd));
37: if (*ierr) return;
38: *ierr = F90Array1dAccess(ptrIJ, MPIU_REAL, (void **)&invJ PETSC_F90_2PTR_PARAM(ptrIJd));
39: if (*ierr) return;
40: *ierr = DMPlexComputeCellGeometryFEM(*dm, *cell, *quad, v0, J, invJ, detJ);
41: }
43: PETSC_EXTERN void dmplexcomputecellgeometryfvm_(DM *dm, PetscInt *cell, PetscReal *vol, F90Array1d *ptrCentroid, F90Array1d *ptrNormal, int *ierr PETSC_F90_2PTR_PROTO(ptrCentroidd) PETSC_F90_2PTR_PROTO(ptrNormald))
44: {
45: PetscReal *centroid;
46: PetscReal *normal;
48: *ierr = F90Array1dAccess(ptrCentroid, MPIU_REAL, (void **)¢roid PETSC_F90_2PTR_PARAM(ptrCentroidd));
49: if (*ierr) return;
50: *ierr = F90Array1dAccess(ptrNormal, MPIU_REAL, (void **)&normal PETSC_F90_2PTR_PARAM(ptrNormald));
51: if (*ierr) return;
52: *ierr = DMPlexComputeCellGeometryFVM(*dm, *cell, vol, centroid, normal);
53: }