PCBDDCSetDiscreteGradient#

Sets the discrete gradient to be used by the PCBDDC preconditioner

Synopsis#

#include "petscpc.h" 
PetscErrorCode PCBDDCSetDiscreteGradient(PC pc, Mat G, PetscInt order, PetscInt field, PetscBool global, PetscBool conforming)

Collective

Input Parameters#

  • pc - the preconditioning context

  • G - the discrete gradient matrix (in MATAIJ format)

  • order - the order of the Nedelec space (1 for the lowest order, 0 for variable order)

  • field - the field index of the Nedelec degrees of freedom, or PETSC_DECIDE to infer the field

  • global - PETSC_TRUE if the rows of G use the global numbering of all degrees of freedom, PETSC_FALSE for the Nedelec field only

  • conforming - PETSC_TRUE if the mesh is conforming

Notes#

The discrete gradient matrix G is used to analyze the subdomain edges and should not contain explicitly stored zero entries.

If PCBDDCSetPrimalVerticesIS() or PCBDDCSetPrimalVerticesLocalIS() specifies a Nedelec degree of freedom as primal, all degrees of freedom on the same mesh edge are made primal before the analysis. These degrees of freedom retain their original coordinates in the generated change of basis.

If global is PETSC_FALSE, the numbering of the Nedelec field must preserve the relative order of its degrees of freedom in the global numbering of all fields. That is, gid[i] < gid[j] if and only if geid[i] < geid[j], where gid is the global numbering of all degrees of freedom and geid is the global numbering of the Nedelec field.

The field index is not used if no field splitting has been specified. If field is PETSC_DECIDE, global must be PETSC_TRUE; the Nedelec field is inferred from the rows of G with more than one nonzero.

See Also#

KSP: Linear System Solvers, PCBDDC, PCBDDCSetDofsSplitting(), PCBDDCSetDofsSplittingLocal(), MATAIJ, PCBDDCSetDivergenceMat(), PCBDDCSetPrimalVerticesIS(), PCBDDCSetPrimalVerticesLocalIS()

Level#

advanced

Location#

src/ksp/pc/impls/bddc/bddc.c

Examples#

src/ksp/pc/impls/bddc/tests/ex2.c

Implementations#

PCBDDCSetDiscreteGradient_BDDC() in src/ksp/pc/impls/bddc/bddc.c


Index of all PC routines
Table of Contents for all manual pages
Index of all manual pages