1 #pragma once 2 3 #include <petscdmlabel.h> 4 5 /* SUBMANSEC = DT */ 6 7 /*S 8 PetscDS - PETSc object that manages a discrete system, which is a set of discretizations + continuum equations from a `PetscWeakForm` 9 10 Level: intermediate 11 12 .seealso: `PetscDSCreate()`, `PetscDSSetType()`, `PetscDSType`, `PetscWeakForm`, `PetscFECreate()`, `PetscFVCreate()` 13 S*/ 14 typedef struct _p_PetscDS *PetscDS; 15 16 /*S 17 PetscWeakForm - PETSc object that manages a sets of pointwise functions defining a system of equations 18 19 Level: intermediate 20 21 .seealso: `PetscWeakFormCreate()`, `PetscDS`, `PetscFECreate()`, `PetscFVCreate()` 22 S*/ 23 typedef struct _p_PetscWeakForm *PetscWeakForm; 24 25 /*S 26 PetscFormKey - This key indicates how to use a set of pointwise functions defining part of a system of equations 27 28 The subdomain on which to integrate is specified by (label, value), the test function field by (field), and the 29 piece of the equation by (part). For example, LHS = 0 and RHS = 1 in IMEX methods. More pieces can be present for 30 operator splitting methods. 31 32 Level: intermediate 33 34 Note: 35 This is a struct, not a `PetscObject` 36 37 .seealso: `DMPlexSNESComputeResidualFEM()`, `DMPlexSNESComputeJacobianFEM()`, `DMPlexSNESComputeBoundaryFEM()` 38 S*/ 39 typedef struct _PetscFormKey { 40 DMLabel label; /* The (label, value) select a subdomain */ 41 PetscInt value; 42 PetscInt field; /* Selects the field for the test function */ 43 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. */ 44 } PetscFormKey; 45 46 /*E 47 PetscWeakFormKind - The kind of weak form. The specific forms are given in the documentation for the integraton functions. 48 49 Values: 50 + OBJECTIVE - Objective form 51 . F0, F1 - Residual forms 52 . G0, G1, G2, G3 - Jacobian forms 53 . GP0, GP1, GP2, GP3 - Jacobian preconditioner matrix forms 54 . GT0, GT1, GT2, GT3 - Dynamic Jacobian matrix forms 55 . BDF0, BDF1 - Boundary Residual forms 56 . BDG0, BDG1, BDG2, BDG3 - Jacobian forms 57 . BDGP0, BDGP1, BDGP2, BDGP3 - Jacobian preconditioner matrix forms 58 . R - Riemann solver 59 - CEED - libCEED QFunction 60 61 Level: beginner 62 63 .seealso: `PetscWeakForm`, `PetscFEIntegrateResidual()`, `PetscFEIntegrateJacobian()`, `PetscFEIntegrateBdResidual()`, `PetscFEIntegrateBdJacobian()`, 64 `PetscFVIntegrateRHSFunction()`, `PetscWeakFormSetIndexResidual()`, `PetscWeakFormClearIndex()` 65 E*/ 66 typedef enum { 67 PETSC_WF_OBJECTIVE, 68 PETSC_WF_F0, 69 PETSC_WF_F1, 70 PETSC_WF_G0, 71 PETSC_WF_G1, 72 PETSC_WF_G2, 73 PETSC_WF_G3, 74 PETSC_WF_GP0, 75 PETSC_WF_GP1, 76 PETSC_WF_GP2, 77 PETSC_WF_GP3, 78 PETSC_WF_GT0, 79 PETSC_WF_GT1, 80 PETSC_WF_GT2, 81 PETSC_WF_GT3, 82 PETSC_WF_BDF0, 83 PETSC_WF_BDF1, 84 PETSC_WF_BDG0, 85 PETSC_WF_BDG1, 86 PETSC_WF_BDG2, 87 PETSC_WF_BDG3, 88 PETSC_WF_BDGP0, 89 PETSC_WF_BDGP1, 90 PETSC_WF_BDGP2, 91 PETSC_WF_BDGP3, 92 PETSC_WF_R, 93 PETSC_WF_CEED, 94 PETSC_NUM_WF 95 } PetscWeakFormKind; 96 PETSC_EXTERN const char *const PetscWeakFormKinds[]; 97