18 #include "libmesh/static_condensation.h" 19 #include "libmesh/static_condensation_dof_map.h" 20 #include "libmesh/petsc_linear_solver.h" 62 DM
dm = LIBMESH_PETSC_NULLPTR;
69 auto ksp = petsc_solver.ksp();
71 LibmeshPetscCall(KSPGetDM(ksp, &
dm));
74 LibmeshPetscCall(PetscObjectTypeCompare((PetscObject)
dm, DMMOOSE, &ismoose));
79 LibmeshPetscCall(KSPSetDM(ksp,
dm));
81 LibmeshPetscCall(KSPSetDMActive(ksp, PETSC_FALSE));
82 LibmeshPetscCall(DMDestroy(&
dm));
89 return petsc_solver.ksp();
registerMooseObjectAliased("MooseApp", StaticCondensationFieldSplitPreconditioner, "SCFSP")
libMesh::StaticCondensationDofMap & scDofMap()
NonlinearSystemBase & _nl
The nonlinear system this FSP is associated with (convenience reference)
static InputParameters validParams()
Constructor.
static InputParameters validParams()
StaticCondensationFieldSplitPreconditioner(const InputParameters ¶meters)
virtual KSP getKSP() override
PetscErrorCode PetscOptionItems *PetscErrorCode DM dm
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...
Implements a field split preconditioner for a statically condensed system.
virtual std::string prefix() const override
std::string prefix() const
Implements a preconditioner designed to map onto PETSc's PCFieldSplit.
std::shared_ptr< Split > getSplit(const std::string &name)
Retrieves a split by name.
virtual const libMesh::System & system() const override
std::string _decomposition_split
The decomposition split.
void createMooseDM(DM *dm)
creates the MOOSE data management object
virtual const libMesh::DofMapBase & dofMap() const override
Static condensation preconditioner.
const System & reduced_system() const
LinearSolver< Number > & reduced_system_solver()
PetscErrorCode DMMooseRegisterAll()
libMesh::StaticCondensation & scSysMat()
virtual void setupDM() override
setup the data management data structure that manages the field split