#include "petscfe.h" PetscErrorCode PetscFEIntegrateResidual(PetscDS ds, PetscHashFormKey key, PetscInt Ne, PetscFEGeom *cgeom, const PetscScalar coefficients[], const PetscScalar coefficients_t[], PetscDS probAux, const PetscScalar coefficientsAux[], PetscReal t, PetscScalar elemVec[])Not collective
ds | - The PetscDS specifying the discretizations and continuum functions | |
key | - The (label+value, field) being integrated | |
Ne | - The number of elements in the chunk | |
cgeom | - The cell geometry for each cell in the chunk | |
coefficients | - The array of FEM basis coefficients for the elements | |
coefficients_t | - The array of FEM basis time derivative coefficients for the elements | |
probAux | - The PetscDS specifying the auxiliary discretizations | |
coefficientsAux | - The array of FEM auxiliary basis coefficients for the elements | |
t | - The time |
elemVec | - the element residual vectors from each element |
Loop over batch of elements (e):
Loop over quadrature points (q):
Make u_q and gradU_q (loops over fields,Nb,Ncomp) and x_q
Call f_0 and f_1
Loop over element vector entries (f,fc --> i):
elemVec[i] += \psi^{fc}_f(q) f0_{fc}(u, \nabla u) + \nabla\psi^{fc}_f(q) \cdot f1_{fc,df}(u, \nabla u)