#include "petscdt.h" 
#include "petscdmmoab.h"   
PetscErrorCode Compute_Lagrange_Basis_3D_Internal(const PetscInt nverts, const PetscReal *coords, const PetscInt npts, const PetscReal *quad, PetscReal *phypts,
                                                  PetscReal *jxw, PetscReal *phi, PetscReal *dphidx, PetscReal *dphidy, PetscReal *dphidz,
                                                  PetscReal *jacobian, PetscReal *ijacobian, PetscReal *volume)
The routine is given the coordinates of the vertices of a hexahedra or tetrahedra.
The routine evaluates the basis functions associated with each quadrature point provided, and their derivatives with respect to X, Y and Z.
Example Physical Element (HEX8)
      8------7
     /|     /|        t  s
    5------6 |        | /
    | |    | |        |/
    | 4----|-3        0-------r
    |/     |/
    1------2
| PetscInt nverts | - the number of element vertices | |
| PetscReal coords[3*nverts] | - the physical coordinates of the vertices (in canonical numbering) | |
| PetscInt npts | - the number of evaluation points (quadrature points) | |
| PetscReal quad[3*npts] | - the evaluation points (quadrature points) in the reference space | 
| PetscReal phypts[3*npts] | - the evaluation points (quadrature points) transformed to the physical space | |
| PetscReal jxw[npts] | - the jacobian determinant * quadrature weight necessary for assembling discrete contributions | |
| PetscReal phi[npts] | - the bases evaluated at the specified quadrature points | |
| PetscReal dphidx[npts] | - the derivative of the bases wrt X-direction evaluated at the specified quadrature points | |
| PetscReal dphidy[npts] | - the derivative of the bases wrt Y-direction evaluated at the specified quadrature points | |
| PetscReal dphidz[npts] | - the derivative of the bases wrt Z-direction evaluated at the specified quadrature points |