|
NEML2 2.1.0
|
Linear solver using the Schur complement factorization. More...
Linear solver using the Schur complement factorization.
Solves a block-partitioned system where the system matrix A has at least two variable groups. Let p denote the primary group index and s the Schur group index. The block system is
[ A_pp A_ps ] [ x_p ] [ b_p ] [ A_sp A_ss ] [ x_s ] = [ b_s ]
The Schur complement factorization proceeds as
Y = A_pp^{-1} A_ps (primary_solver) z = A_pp^{-1} b_p (primary_solver) S = A_ss - A_sp Y (dense arithmetic) d = b_s - A_sp z (dense arithmetic) x_s = S^{-1} d (schur_solver) x_p = z - Y x_s (dense arithmetic)
The same factorization is used for the matrix RHS overload (AX = B).
#include <SchurComplement.h>

Public Member Functions | |
| SchurComplement (const OptionSet &options) | |
| AssembledVector | solve (const AssembledMatrix &, const AssembledVector &) const override |
| Solve Ax = b for x. | |
| AssembledMatrix | solve (const AssembledMatrix &, const AssembledMatrix &) const override |
| Solve AX = B for X. | |
| Public Member Functions inherited from LinearSolver | |
| LinearSolver (const OptionSet &options) | |
| Public Member Functions inherited from Solver | |
| Solver (const OptionSet &options) | |
| Construct a new Solver object. | |
| virtual void | to (const TensorOptions &) |
| Change the device and dtype of the solver's internal data. | |
| Public Member Functions inherited from NEML2Object | |
| NEML2Object ()=delete | |
| NEML2Object (NEML2Object &&)=delete | |
| NEML2Object (const NEML2Object &)=delete | |
| NEML2Object & | operator= (NEML2Object &&)=delete |
| NEML2Object & | operator= (const NEML2Object &)=delete |
| virtual | ~NEML2Object ()=default |
| NEML2Object (const OptionSet &options) | |
| Construct a new NEML2Object object. | |
| const OptionSet & | input_options () const |
| virtual void | setup () |
| Setup this object. | |
| const std::string & | name () const |
| A readonly reference to the object's name. | |
| std::string | type () const |
| The object's type. | |
| const std::string & | path () const |
| A readonly reference to the object's path. | |
| const std::string & | doc () const |
| A readonly reference to the object's docstring. | |
| Factory * | factory () const |
| Get the factory that created this object. | |
| const Settings & | settings () const |
| Settings. | |
| template<typename T = NEML2Object> | |
| const T * | host () const |
| Get a readonly pointer to the host. | |
| template<typename T = NEML2Object> | |
| T * | host () |
| Get a writable pointer to the host. | |
| template<typename T> | |
| const T & | resolve_tensor (const std::string &name) |
| Resolve a TensorName to a Tensor. | |
| template<class T> | |
| std::shared_ptr< T > | get_object (const std::string §ion, const std::string &name) |
| template<class T = EquationSystem> | |
| std::shared_ptr< T > | get_es (const std::string &name) |
| Get an equation system from the factory. | |
| template<class T = Solver> | |
| std::shared_ptr< T > | get_solver (const std::string &name) |
| Get a solver from the factory. | |
| template<class T = Data> | |
| std::shared_ptr< T > | get_data (const std::string &name) |
| Get a data from the factory. | |
| template<class T = Model> | |
| std::shared_ptr< T > | get_model (const std::string &name) |
| Get a model from the factory. | |
| template<class T = Driver> | |
| std::shared_ptr< T > | get_driver (const std::string &name) |
| Get a driver from the factory. | |
| template<class T = WorkScheduler> | |
| std::shared_ptr< T > | get_scheduler (const std::string &name) |
| Get a scheduler from the factory. | |
Static Public Member Functions | |
| static OptionSet | expected_options () |
| Static Public Member Functions inherited from LinearSolver | |
| static OptionSet | expected_options () |
| Static Public Member Functions inherited from Solver | |
| static OptionSet | expected_options () |
| Static Public Member Functions inherited from NEML2Object | |
| static OptionSet | expected_options () |
Additional Inherited Members | |
| Public Attributes inherited from Solver | |
| const bool | verbose |
| Whether to print additional (debugging) information during the solve. | |
| Protected Member Functions inherited from LinearSolver | |
| bool | check_errors () const |
| Whether to check for errors after solving. | |
| Protected Member Functions inherited from NEML2Object | |
| VariableName | history_name (const VariableName &var, std::size_t nstep) const |
| Helper method to wrap a variable name into its history form. | |
| VariableName | rate_name (const VariableName &var) const |
| Helper method to wrap a variable name into its rate form. | |
| VariableName | residual_name (const VariableName &var) const |
| Helper method to wrap a variable name into its residual form. | |
| SchurComplement | ( | const OptionSet & | options | ) |
|
static |
|
overridevirtual |
Solve AX = B for X.
Implements LinearSolver.
|
overridevirtual |
Solve Ax = b for x.
Implements LinearSolver.