126bd1501SBarry Smith #if !defined(PETSCDSTYPES_H) 226bd1501SBarry Smith #define PETSCDSTYPES_H 32764a2aaSMatthew G. Knepley 46528b96dSMatthew G. Knepley #include <petscdmlabel.h> 56528b96dSMatthew G. Knepley 62764a2aaSMatthew G. Knepley /*S 76528b96dSMatthew G. Knepley PetscDS - PETSc object that manages a discrete system, which is a set of discretizations + continuum equations from a PetscWeakForm 82764a2aaSMatthew G. Knepley 92764a2aaSMatthew G. Knepley Level: intermediate 102764a2aaSMatthew G. Knepley 116528b96dSMatthew G. Knepley .seealso: PetscDSCreate(), PetscDSSetType(), PetscDSType, PetscWeakForm, PetscFECreate(), PetscFVCreate() 122764a2aaSMatthew G. Knepley S*/ 132764a2aaSMatthew G. Knepley typedef struct _p_PetscDS *PetscDS; 142764a2aaSMatthew G. Knepley 156528b96dSMatthew G. Knepley /*S 166528b96dSMatthew G. Knepley PetscWeakForm - PETSc object that manages a sets of pointwise functions defining a system of equations 176528b96dSMatthew G. Knepley 186528b96dSMatthew G. Knepley Level: intermediate 196528b96dSMatthew G. Knepley 206528b96dSMatthew G. Knepley .seealso: PetscWeakFormCreate(), PetscDS, PetscFECreate(), PetscFVCreate() 216528b96dSMatthew G. Knepley S*/ 226528b96dSMatthew G. Knepley typedef struct _p_PetscWeakForm *PetscWeakForm; 236528b96dSMatthew G. Knepley 2406ad1575SMatthew G. Knepley /*S 2506ad1575SMatthew G. Knepley PetscFormKey - This key indicates how to use a set of pointwise functions defining part of a system of equations 2606ad1575SMatthew G. Knepley 27*a5b23f4aSJose E. Roman The subdomain on which to integrate is specified by (label, value), the test function field by (field), and the 2806ad1575SMatthew G. Knepley piece of the equation by (part). For example, LHS = 0 and RHS = 1 in IMEX methods. More pieces can be present for 2906ad1575SMatthew G. Knepley operator splitting methods. 3006ad1575SMatthew G. Knepley 3106ad1575SMatthew G. Knepley Level: intermediate 3206ad1575SMatthew G. Knepley 3306ad1575SMatthew G. Knepley .seealso: DMPlexSNESComputeResidualFEM(), DMPlexSNESComputeJacobianFEM(), DMPlexSNESComputeBoundaryFEM() 3406ad1575SMatthew G. Knepley S*/ 3506ad1575SMatthew G. Knepley typedef struct _PetscFormKey 366528b96dSMatthew G. Knepley { 3706ad1575SMatthew G. Knepley DMLabel label; /* The (label, value) select a subdomain */ 386528b96dSMatthew G. Knepley PetscInt value; 3906ad1575SMatthew G. Knepley PetscInt field; /* Selects the field for the test function */ 4006ad1575SMatthew G. Knepley PetscInt part; /* Selects the equation part. For example, LHS = 0 and RHS = 1 in IMEX methods. More pieces can be present for operator splitting methods. */ 4106ad1575SMatthew G. Knepley } PetscFormKey; 4206ad1575SMatthew G. Knepley 4306ad1575SMatthew G. Knepley /*E 4406ad1575SMatthew G. Knepley PetscWeakFormKind - The kind of weak form. The specific forms are given in the documentation for the integraton functions. 4506ad1575SMatthew G. Knepley 4606ad1575SMatthew G. Knepley Supported kinds include: 4706ad1575SMatthew G. Knepley $ OBJECTIVE - Objective form 4806ad1575SMatthew G. Knepley $ F0, F1 - Residual forms 4906ad1575SMatthew G. Knepley $ G0, G1, G2, G3 - Jacobian forms 5006ad1575SMatthew G. Knepley $ GP0, GP1, GP2, GP3 - Jacobian preconditioner matrix forms 5106ad1575SMatthew G. Knepley $ GT0, GT1, GT2, GT3 - Dynamic Jacobian matrix forms 5206ad1575SMatthew G. Knepley $ BDF0, BDF1 - Boundary Residual forms 5306ad1575SMatthew G. Knepley $ BDG0, BDG1, BDG2, BDG3 - Jacobian forms 5406ad1575SMatthew G. Knepley $ BDGP0, BDGP1, BDGP2, BDGP3 - Jacobian preconditioner matrix forms 5506ad1575SMatthew G. Knepley $ R - Riemann solver 5606ad1575SMatthew G. Knepley 5706ad1575SMatthew G. Knepley Level: beginner 5806ad1575SMatthew G. Knepley 5906ad1575SMatthew G. Knepley .seealso: PetscFEIntegrateResidual(), PetscFEIntegrateJacobian(), PetscFEIntegrateBdResidual(), PetscFEIntegrateBdJacobian(), PetscFVIntegrateRHSFunction(), PetscWeakFormSetIndexResidual(), PetscWeakFormClearIndex() 6006ad1575SMatthew G. Knepley E*/ 6106ad1575SMatthew G. Knepley typedef enum {PETSC_WF_OBJECTIVE, PETSC_WF_F0, PETSC_WF_F1, PETSC_WF_G0, PETSC_WF_G1, PETSC_WF_G2, PETSC_WF_G3, PETSC_WF_GP0, PETSC_WF_GP1, PETSC_WF_GP2, PETSC_WF_GP3, PETSC_WF_GT0, PETSC_WF_GT1, PETSC_WF_GT2, PETSC_WF_GT3, PETSC_WF_BDF0, PETSC_WF_BDF1, PETSC_WF_BDG0, PETSC_WF_BDG1, PETSC_WF_BDG2, PETSC_WF_BDG3, PETSC_WF_BDGP0, PETSC_WF_BDGP1, PETSC_WF_BDGP2, PETSC_WF_BDGP3, PETSC_WF_R, PETSC_NUM_WF} PetscWeakFormKind; 6206ad1575SMatthew G. Knepley PETSC_EXTERN const char *const PetscWeakFormKinds[]; 636528b96dSMatthew G. Knepley 642764a2aaSMatthew G. Knepley #endif 65