Actual source code: petscgll.h
petsc-3.10.5 2019-03-28
Report Typos and Errors

      1: #ifndef __PETSCGLL_H
      3:  #include <petscsys.h>

      5: /*S
      6:     PetscGLL  - the locations, from [-1,1] and weights of the Gauss-Lobatto-Legendre nodes of a given size

      8:   Level: beginner

     10:   These values are usful in implementing spectral methods based on the Gauss-Lobatto-Legendre nodes

     12:   The array nodes[] contains the vertices of each node
     13:   The array weights[] are the integration weights

     15:   The mass matrix for the element corresponds to the diagonal matrix whose entries are the weights[]

     17:   Developer Notes:
     18:     This may eventually get merged into a more abstract or general object for managing
     19:     integration schemes or discretization schemes.

     21:   References: XXXX

     23: .seealso: PetscGLLCreate(), PetscGLLDestroy(), PetscGLLView()
     24: S*/
     25: typedef struct {
     26:   PetscInt  n;
     27:   PetscReal *nodes;
     28:   PetscReal *weights;
     29: } PetscGLL;

     31: /*E
     32:   PetscGLLCreateType - algorithm used to compute the GLL nodes and weights

     34:   Level: beginner

     36: $  PETSCGLL_VIA_LINEARALGEBRA - compute the nodes via linear algebra
     37: $  PETSCGLL_VIA_NEWTON - compute the nodes by solving a nonlinear equation with Newton's method

     39: .seealso: PetscGLL, PetscGLLCreate()
     40: E*/
     41: typedef enum {PETSCGLL_VIA_LINEARALGEBRA,PETSCGLL_VIA_NEWTON} PetscGLLCreateType;

     43: #endif
     44: PETSC_EXTERN PetscErrorCode PetscGLLCreate(PetscInt,PetscGLLCreateType,PetscGLL*);
     45: PETSC_EXTERN PetscErrorCode PetscGLLDestroy(PetscGLL*);
     46: PETSC_EXTERN PetscErrorCode PetscGLLView(PetscGLL*,PetscViewer);
     47: PETSC_EXTERN PetscErrorCode PetscGLLIntegrate(PetscGLL*,const PetscReal*,PetscReal*);
     48: PETSC_EXTERN PetscErrorCode PetscGLLElementLaplacianCreate(PetscGLL*,PetscReal***);
     49: PETSC_EXTERN PetscErrorCode PetscGLLElementLaplacianDestroy(PetscGLL*,PetscReal***);
     50: PETSC_EXTERN PetscErrorCode PetscGLLElementGradientCreate(PetscGLL*,PetscReal***,PetscReal***);
     51: PETSC_EXTERN PetscErrorCode PetscGLLElementGradientDestroy(PetscGLL*,PetscReal***,PetscReal***);
     52: PETSC_EXTERN PetscErrorCode PetscGLLElementAdvectionCreate(PetscGLL*,PetscReal***);
     53: PETSC_EXTERN PetscErrorCode PetscGLLElementAdvectionDestroy(PetscGLL*,PetscReal***);

     55: PETSC_EXTERN PetscErrorCode PetscGLLElementMassCreate(PetscGLL*,PetscReal***);
     56: PETSC_EXTERN PetscErrorCode PetscGLLElementMassDestroy(PetscGLL*,PetscReal***);