|
Opm::TpsaPreconditioner< Scalar, DispOp, RotOp, SPresOp, Comm > Class Template Reference Block lower-triangular preconditioner for the field-split TPSA system. More...
Inheritance diagram for Opm::TpsaPreconditioner< Scalar, DispOp, RotOp, SPresOp, Comm >:
![]()
Detailed Descriptiontemplate<class Scalar, class DispOp, class RotOp, class SPresOp, class Comm = Dune::Amg::SequentialInformation> class Opm::TpsaPreconditioner< Scalar, DispOp, RotOp, SPresOp, Comm > Block lower-triangular preconditioner for the field-split TPSA system. Solves the three scalar displacement blocks, carries their contribution over to the rotation and solid pressure defects, and solves those in turn. Each diagonal block gets its own Dune::FlexibleSolver, configured through the
Constructor & Destructor Documentation◆ TpsaPreconditioner() [1/2]
template<class Scalar , class DispOp , class RotOp , class SPresOp , class Comm >
requires (!isParallel)
Sequential constructor.
◆ TpsaPreconditioner() [2/2]
template<class Scalar , class DispOp , class RotOp , class SPresOp , class Comm >
requires (isParallel)
Parallel constructor.
Member Function Documentation◆ apply()
template<class Scalar , class DispOp , class RotOp , class SPresOp , class Comm >
Apply the preconditioner, i.e. approximately solve S v = d. Sweeps over the fields in the order u_x, u_y, u_z, rotation, solid pressure. The displacement updates are substituted into the rotation and solid pressure defects before those blocks are solved.
◆ category()
template<class Scalar , class DispOp , class RotOp , class SPresOp , class Comm >
Solver category, overlapping in parallel and sequential otherwise. ◆ hasPerfectUpdate()
template<class Scalar , class DispOp , class RotOp , class SPresOp , class Comm >
The block solvers are rebuilt from the current matrix on update(). Implements Dune::PreconditionerWithUpdate< Linear::TpsaMultiVector< Scalar >, Linear::TpsaMultiVector< Scalar > >. ◆ post()
template<class Scalar , class DispOp , class RotOp , class SPresOp , class Comm >
Nothing to clean up after the last apply(). ◆ pre()
template<class Scalar , class DispOp , class RotOp , class SPresOp , class Comm >
Nothing to prepare, the sub-solvers set themselves up. ◆ update()
template<class Scalar , class DispOp , class RotOp , class SPresOp , class Comm >
Recompute the preconditioners of all five diagonal block solvers. Implements Dune::PreconditionerWithUpdate< Linear::TpsaMultiVector< Scalar >, Linear::TpsaMultiVector< Scalar > >. Member Data Documentation◆ _0
template<class Scalar , class DispOp , class RotOp , class SPresOp , class Comm = Dune::Amg::SequentialInformation>
Field indices into the multi-vector: u_x, u_y, u_z, rotation, solid pressure. ◆ _1
template<class Scalar , class DispOp , class RotOp , class SPresOp , class Comm = Dune::Amg::SequentialInformation>
◆ _2
template<class Scalar , class DispOp , class RotOp , class SPresOp , class Comm = Dune::Amg::SequentialInformation>
◆ _3
template<class Scalar , class DispOp , class RotOp , class SPresOp , class Comm = Dune::Amg::SequentialInformation>
◆ _4
template<class Scalar , class DispOp , class RotOp , class SPresOp , class Comm = Dune::Amg::SequentialInformation>
◆ isParallel
template<class Scalar , class DispOp , class RotOp , class SPresOp , class Comm = Dune::Amg::SequentialInformation>
Whether this instance runs the parallel code path. ◆ pressureIdx
template<class Scalar , class DispOp , class RotOp , class SPresOp , class Comm = Dune::Amg::SequentialInformation>
The sub-solvers have no pressure equation to single out. The documentation for this class was generated from the following files: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||