Actual source code: petscdstypes.h

      1: #pragma once

      3: #include <petscdmlabel.h>

      5: /* SUBMANSEC = DT */

      7: /*S
      8:   PetscDS - PETSc object that manages a discrete system, which is a set of discretizations + continuum equations from a `PetscWeakForm`

     10:   Level: intermediate

     12: .seealso: `PetscDSCreate()`, `PetscDSSetType()`, `PetscDSType`, `PetscWeakForm`, `PetscFECreate()`, `PetscFVCreate()`
     13: S*/
     14: typedef struct _p_PetscDS *PetscDS;

     16: /*S
     17:   PetscWeakForm - PETSc object that manages a sets of pointwise functions defining a system of equations

     19:   Level: intermediate

     21: .seealso: `PetscWeakFormCreate()`, `PetscDS`, `PetscFECreate()`, `PetscFVCreate()`
     22: S*/
     23: typedef struct _p_PetscWeakForm *PetscWeakForm;

     25: /*S
     26:   PetscFormKey - This key indicates how to use a set of pointwise functions defining part of a system of equations

     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.

     32:   Level: intermediate

     34:   Note:
     35:   This is a struct, not a `PetscObject`

     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;

     46: /*E
     47:   PetscWeakFormKind - The kind of weak form. The specific forms are given in the documentation for the integraton functions.

     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

     61:   Level: beginner

     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[];