16524c165SJacob Faibussowitsch #ifndef PETSCDSTYPES_H 226bd1501SBarry Smith #define PETSCDSTYPES_H 32764a2aaSMatthew G. Knepley 46528b96dSMatthew G. Knepley #include <petscdmlabel.h> 56528b96dSMatthew G. Knepley 6ac09b921SBarry Smith /* SUBMANSEC = DT */ 7ac09b921SBarry Smith 82764a2aaSMatthew G. Knepley /*S 987497f52SBarry Smith PetscDS - PETSc object that manages a discrete system, which is a set of discretizations + continuum equations from a `PetscWeakForm` 102764a2aaSMatthew G. Knepley 112764a2aaSMatthew G. Knepley Level: intermediate 122764a2aaSMatthew G. Knepley 13db781477SPatrick Sanan .seealso: `PetscDSCreate()`, `PetscDSSetType()`, `PetscDSType`, `PetscWeakForm`, `PetscFECreate()`, `PetscFVCreate()` 142764a2aaSMatthew G. Knepley S*/ 152764a2aaSMatthew G. Knepley typedef struct _p_PetscDS *PetscDS; 162764a2aaSMatthew G. Knepley 176528b96dSMatthew G. Knepley /*S 186528b96dSMatthew G. Knepley PetscWeakForm - PETSc object that manages a sets of pointwise functions defining a system of equations 196528b96dSMatthew G. Knepley 206528b96dSMatthew G. Knepley Level: intermediate 216528b96dSMatthew G. Knepley 22db781477SPatrick Sanan .seealso: `PetscWeakFormCreate()`, `PetscDS`, `PetscFECreate()`, `PetscFVCreate()` 236528b96dSMatthew G. Knepley S*/ 246528b96dSMatthew G. Knepley typedef struct _p_PetscWeakForm *PetscWeakForm; 256528b96dSMatthew G. Knepley 2606ad1575SMatthew G. Knepley /*S 2706ad1575SMatthew G. Knepley PetscFormKey - This key indicates how to use a set of pointwise functions defining part of a system of equations 2806ad1575SMatthew G. Knepley 29a5b23f4aSJose E. Roman The subdomain on which to integrate is specified by (label, value), the test function field by (field), and the 3006ad1575SMatthew G. Knepley piece of the equation by (part). For example, LHS = 0 and RHS = 1 in IMEX methods. More pieces can be present for 3106ad1575SMatthew G. Knepley operator splitting methods. 3206ad1575SMatthew G. Knepley 3306ad1575SMatthew G. Knepley Level: intermediate 3406ad1575SMatthew G. Knepley 35db781477SPatrick Sanan .seealso: `DMPlexSNESComputeResidualFEM()`, `DMPlexSNESComputeJacobianFEM()`, `DMPlexSNESComputeBoundaryFEM()` 3606ad1575SMatthew G. Knepley S*/ 379371c9d4SSatish Balay typedef struct _PetscFormKey { 3806ad1575SMatthew G. Knepley DMLabel label; /* The (label, value) select a subdomain */ 396528b96dSMatthew G. Knepley PetscInt value; 4006ad1575SMatthew G. Knepley PetscInt field; /* Selects the field for the test function */ 4106ad1575SMatthew 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. */ 4206ad1575SMatthew G. Knepley } PetscFormKey; 4306ad1575SMatthew G. Knepley 4406ad1575SMatthew G. Knepley /*E 4506ad1575SMatthew G. Knepley PetscWeakFormKind - The kind of weak form. The specific forms are given in the documentation for the integraton functions. 4606ad1575SMatthew G. Knepley 47*16a05f60SBarry Smith Values: 48*16a05f60SBarry Smith + OBJECTIVE - Objective form 49*16a05f60SBarry Smith . F0, F1 - Residual forms 50*16a05f60SBarry Smith . G0, G1, G2, G3 - Jacobian forms 51*16a05f60SBarry Smith . GP0, GP1, GP2, GP3 - Jacobian preconditioner matrix forms 52*16a05f60SBarry Smith . GT0, GT1, GT2, GT3 - Dynamic Jacobian matrix forms 53*16a05f60SBarry Smith . BDF0, BDF1 - Boundary Residual forms 54*16a05f60SBarry Smith . BDG0, BDG1, BDG2, BDG3 - Jacobian forms 55*16a05f60SBarry Smith . BDGP0, BDGP1, BDGP2, BDGP3 - Jacobian preconditioner matrix forms 56*16a05f60SBarry Smith - R - Riemann solver 5706ad1575SMatthew G. Knepley 5806ad1575SMatthew G. Knepley Level: beginner 5906ad1575SMatthew G. Knepley 60*16a05f60SBarry Smith .seealso: `PetscWeakForm`, `PetscFEIntegrateResidual()`, `PetscFEIntegrateJacobian()`, `PetscFEIntegrateBdResidual()`, `PetscFEIntegrateBdJacobian()`, 61*16a05f60SBarry Smith `PetscFVIntegrateRHSFunction()`, `PetscWeakFormSetIndexResidual()`, `PetscWeakFormClearIndex()` 6206ad1575SMatthew G. Knepley E*/ 639371c9d4SSatish Balay typedef enum { 649371c9d4SSatish Balay PETSC_WF_OBJECTIVE, 659371c9d4SSatish Balay PETSC_WF_F0, 669371c9d4SSatish Balay PETSC_WF_F1, 679371c9d4SSatish Balay PETSC_WF_G0, 689371c9d4SSatish Balay PETSC_WF_G1, 699371c9d4SSatish Balay PETSC_WF_G2, 709371c9d4SSatish Balay PETSC_WF_G3, 719371c9d4SSatish Balay PETSC_WF_GP0, 729371c9d4SSatish Balay PETSC_WF_GP1, 739371c9d4SSatish Balay PETSC_WF_GP2, 749371c9d4SSatish Balay PETSC_WF_GP3, 759371c9d4SSatish Balay PETSC_WF_GT0, 769371c9d4SSatish Balay PETSC_WF_GT1, 779371c9d4SSatish Balay PETSC_WF_GT2, 789371c9d4SSatish Balay PETSC_WF_GT3, 799371c9d4SSatish Balay PETSC_WF_BDF0, 809371c9d4SSatish Balay PETSC_WF_BDF1, 819371c9d4SSatish Balay PETSC_WF_BDG0, 829371c9d4SSatish Balay PETSC_WF_BDG1, 839371c9d4SSatish Balay PETSC_WF_BDG2, 849371c9d4SSatish Balay PETSC_WF_BDG3, 859371c9d4SSatish Balay PETSC_WF_BDGP0, 869371c9d4SSatish Balay PETSC_WF_BDGP1, 879371c9d4SSatish Balay PETSC_WF_BDGP2, 889371c9d4SSatish Balay PETSC_WF_BDGP3, 899371c9d4SSatish Balay PETSC_WF_R, 909371c9d4SSatish Balay PETSC_NUM_WF 919371c9d4SSatish Balay } PetscWeakFormKind; 9206ad1575SMatthew G. Knepley PETSC_EXTERN const char *const PetscWeakFormKinds[]; 936528b96dSMatthew G. Knepley 942764a2aaSMatthew G. Knepley #endif 95