https://mooseframework.inl.gov
Loading...
Searching...
No Matches
FieldSplitPreconditioner.h
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
3//*
4//* All rights reserved, see COPYRIGHT for full restrictions
5//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6//*
7//* Licensed under LGPL 2.1, please see LICENSE for details
8//* https://www.gnu.org/licenses/lgpl-2.1.html
9
10#pragma once
11
12#include "MoosePreconditioner.h"
13
14// Forward declarations
16class InputParameters;
17namespace libMesh
18{
19class DofMapBase;
20}
21
22#include <vector>
23#include <string>
24
29{
30public:
32
36 virtual void setupDM() = 0;
37
41 virtual KSP getKSP() = 0;
42};
43
47template <typename Base>
49{
50public:
55
57
58protected:
62 virtual const libMesh::DofMapBase & dofMap() const = 0;
63
67 virtual const libMesh::System & system() const = 0;
68
72 virtual std::string prefix() const = 0;
73
77 void createMooseDM(DM * dm);
78
81
86};
87
89{
90public:
92
94
95 virtual void setupDM() override;
96 virtual KSP getKSP() override;
97
98protected:
99 virtual const libMesh::DofMapBase & dofMap() const override;
100 virtual const libMesh::System & system() const override;
101 virtual std::string prefix() const override;
102};
PetscErrorCode PetscOptionItems *PetscErrorCode DM dm
Base interface for field split preconditioner.
virtual void setupDM()=0
setup the data management data structure that manages the field split
Implements a preconditioner designed to map onto PETSc's PCFieldSplit.
static InputParameters validParams()
Constructor.
std::string _decomposition_split
The decomposition split.
NonlinearSystemBase & _nl
The nonlinear system this FSP is associated with (convenience reference)
void createMooseDM(DM *dm)
creates the MOOSE data management object
virtual std::string prefix() const =0
virtual const libMesh::DofMapBase & dofMap() const =0
virtual const libMesh::System & system() const =0
virtual void setupDM() override
setup the data management data structure that manages the field split
virtual const libMesh::System & system() const override
virtual std::string prefix() const override
static InputParameters validParams()
virtual const libMesh::DofMapBase & dofMap() const override
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
const InputParameters & parameters() const
Get the parameters of the object.
Definition MooseBase.h:131
Nonlinear system to be solved.
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...