PCBDDCSetDivergenceMat#

Sets the discrete divergence operator used by PCBDDC to compute net-flux constraints

Synopsis#

#include "petscpc.h" 
PetscErrorCode PCBDDCSetDivergenceMat(PC pc, Mat divudotp, PetscBool trans, IS vl2l)

Collective

Input Parameters#

  • pc - the preconditioning context

  • divudotp - the matrix (must be of type MATIS)

  • trans - PETSC_FALSE if pressures are in the test space and velocities are in the trial space, PETSC_TRUE for the transpose

  • vl2l - optional index set mapping local velocity indices in divudotp to local indices in the preconditioning matrix, or NULL

Notes#

The operator represents \(\int_\Omega (\nabla \cdot \mathbf{u}) p\,dx\) and is used to compute quadrature weights representing the net flux across subdomain boundaries. See [ZT17] for their use in mixed formulations of Darcy flow.

Local indices refer to the local matrices inside the MATIS objects. If vl2l is NULL, the local velocity numbering in divudotp must match that of the preconditioning matrix.

References#

[ZT17]

Stefano Zampini and Xuemin Tu. Multilevel BDDC deluxe algorithms with adaptive coarse spaces for flow in porous media. SIAM Journal of Scientific Computing, 39(4):A1389–A1415, 2017.

See Also#

KSP: Linear System Solvers, PCBDDC, PCBDDCSetDiscreteGradient()

Level#

advanced

Location#

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

Examples#

src/ksp/ksp/tutorials/ex43.c

Implementations#

PCBDDCSetDivergenceMat_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