On Mon, Mar 30, 2015 at 4:39 PM, Justin Pogacnik <[email protected]> wrote:
> Hello, > > I'm beginning to write a finite element solid mechanics code in F90 and > am having some problems getting started with finite element basics within > Petsc. I'm using an unstructured grid and the DMPlex class and able to > access most of the mesh information required for FE numerical integration. > I've used PetscFECreateDefault and have found the quadrature point > locations/data. I'm trying to determine how to find the values of standard > trilinear basis functions and their derivatives at the element quadrature > points and then to perform the integration on the element. Can anyone > advise what the proper routines are that I should call? It's possible that > I'm way off target. I've seen "PetscFEGetBasisSpace", but I'm unsure what > to do with the resulting output space. I've also seen the PetscFEIntegrate > routines, but unsure how their intended to be used and don't see any > fortran wrappers. > > I hope this question is clear. Please let me know if you require more > information. I appreciate any help and guidance that anyone can offer. > Here is the plain vanilla integration routine: https://bitbucket.org/petsc/petsc/src/1c9d18e7633f5b782021dca6d8727de2838ee261/src/dm/dt/interface/dtfe.c?at=master#cl-3380 which is an implementation of PetscFEIntegrate(). The idea is that this integrates a bunch of elements, and then there is an outer loop over the whole mesh, which is currently DMPlexIntegrateResidual(). Unfortunately, this function also does a bunch of other stuff, and right now I do not see how to simplify it. Does this make sense? Thanks, Matt > Many thanks, > > Justin > -- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
