|
NEML2 2.1.0
|
Definition of a nonlinear system of equations, r(u) = 0. More...
Definition of a nonlinear system of equations, r(u) = 0.
Instead of directly defining a nonlinear system, we define the linearized system via its residual and Jacobian, evaluated at a given state u with given variables g, the linearized system is usually expressed as dr(u; g)/du * du = -r(u; g). Rewriting this in the more familiar form Au = b, we have A := dr(u; g)/du and b := -r(u; g).
Practically, this means that whenever u or g changes, we need to invalidate the system matrix A and RHS b, and recompute them when requested.
#include <NonlinearSystem.h>

Public Member Functions | |
| void | u_changed () override |
| Trigger when unknown variables changed. | |
| LinearSystem ()=default | |
| LinearSystem (const LinearSystem &)=default | |
| LinearSystem (LinearSystem &&) noexcept=default | |
| Public Member Functions inherited from LinearSystem | |
| LinearSystem ()=default | |
| LinearSystem (const LinearSystem &)=default | |
| LinearSystem (LinearSystem &&) noexcept=default | |
| LinearSystem & | operator= (const LinearSystem &)=default |
| LinearSystem & | operator= (LinearSystem &&) noexcept=default |
| virtual | ~LinearSystem ()=default |
| virtual void | init () |
| std::size_t | m () const |
| Number of rows in the matrix. | |
| std::size_t | n () const |
| Number of columns in the matrix. | |
| std::size_t | p () const |
| Number of columns in the auxiliary matrix. | |
| virtual void | set_u (const SparseTensorList &)=0 |
| Set the unknown u. | |
| virtual void | set_g (const SparseTensorList &)=0 |
| Set the given variables g from the current step. | |
| virtual SparseTensorList | u () const =0 |
| Get the unknown u. | |
| virtual SparseTensorList | g () const =0 |
| Get the given variables g from the current step. | |
| virtual void | g_changed () |
| Trigger when given variables changed. | |
| SparseTensorList | A () |
| Assemble and return the operator, A. | |
| SparseTensorList | b () |
| Assemble and return the right-hand side, b. | |
| std::tuple< SparseTensorList, SparseTensorList > | A_and_b () |
| Assemble and return the right-hand side and operator. | |
| std::tuple< SparseTensorList, SparseTensorList > | A_and_B () |
| Assemble the auxiliary matrix B = dr/dg along with A. | |
| std::tuple< SparseTensorList, SparseTensorList, SparseTensorList > | A_and_B_and_b () |
| Assemble the auxiliary matrix B = dr/dg along with A and b. | |
| const std::vector< LabeledAxisAccessor > & | umap () const |
| Get the ID-to-unknown mapping for assembly. | |
| const std::vector< TensorShape > & | intmd_ulayout () const |
| Get the ID-to-unknown-intermediate-shape mapping for assembly. | |
| const std::vector< TensorShape > & | ulayout () const |
| Get the ID-to-unknown-base-shape mapping for assembly. | |
| const std::vector< LabeledAxisAccessor > & | gmap () const |
| Get the ID-to-prescribed-variable mapping for assembly. | |
| const std::vector< TensorShape > & | intmd_glayout () const |
| Get the ID-to-prescribed-variable-intermediate-shape mapping for assembly. | |
| const std::vector< TensorShape > & | glayout () const |
| Get the ID-to-prescribed-variable-base-shape mapping for assembly. | |
| const std::vector< LabeledAxisAccessor > & | bmap () const |
| Get the ID-to-RHS mapping for assembly. | |
| const std::vector< TensorShape > & | intmd_blayout () const |
| Get the ID-to-RHS-intermediate-shape mapping for assembly. | |
| const std::vector< TensorShape > & | blayout () const |
| Get the ID-to-RHS-base-shape mapping for assembly. | |
Additional Inherited Members | |
| Protected Member Functions inherited from LinearSystem | |
| virtual std::vector< LabeledAxisAccessor > | setup_umap ()=0 |
| Setup the unknown map. | |
| virtual std::vector< TensorShape > | setup_intmd_ulayout ()=0 |
| Setup the unknown intermediate layout. | |
| virtual std::vector< TensorShape > | setup_ulayout ()=0 |
| Setup the unknown layout. | |
| virtual std::vector< LabeledAxisAccessor > | setup_gmap ()=0 |
| Setup the given variable map. | |
| virtual std::vector< TensorShape > | setup_intmd_glayout ()=0 |
| Setup the given variable intermediate layout. | |
| virtual std::vector< TensorShape > | setup_glayout ()=0 |
| Setup the given variable base layout. | |
| virtual std::vector< LabeledAxisAccessor > | setup_bmap ()=0 |
| Setup the RHS map. | |
| virtual std::vector< TensorShape > | setup_intmd_blayout ()=0 |
| Setup the RHS intermediate layout. | |
| virtual std::vector< TensorShape > | setup_blayout ()=0 |
| Setup the RHS layout. | |
| virtual void | assemble (SparseTensorList *A, SparseTensorList *B, SparseTensorList *b)=0 |
| Compute the operator and right-hand side. | |
| virtual void | pre_assemble (bool A, bool B, bool b) |
| Callback before assembly to perform. | |
| virtual void | post_assemble (bool A, bool B, bool b) |
| Callback after assembly to perform. | |
| Protected Attributes inherited from LinearSystem | |
| bool | _A_up_to_date = false |
| Flag indicating if the system matrix is up to date. Setters invalidate this. | |
| bool | _B_up_to_date = false |
| Flag indicating if the auxiliary matrix is up to date. Setters invalidate this. | |
| bool | _b_up_to_date = false |
| Flag indicating if the system RHS is up to date. Setters invalidate this. | |
| std::vector< LabeledAxisAccessor > | _umap |
| The ID-to-unknown mapping. | |
| std::optional< std::vector< TensorShape > > | _intmd_ulayout |
| ID-to-unknown intermediate shape mapping. | |
| std::vector< TensorShape > | _ulayout |
| ID-to-unknown base shape mapping. | |
| std::vector< LabeledAxisAccessor > | _gmap |
| The ID-to-given-variable mapping. | |
| std::optional< std::vector< TensorShape > > | _intmd_glayout |
| ID-to-given intermediate shape mapping. | |
| std::vector< TensorShape > | _glayout |
| ID-to-given base shape mapping. | |
| std::vector< LabeledAxisAccessor > | _bmap |
| The ID-to-RHS mapping. | |
| std::optional< std::vector< TensorShape > > | _intmd_blayout |
| ID-to-RHS intermediate shape mapping. | |
| std::vector< TensorShape > | _blayout |
| ID-to-RHS shape mapping. | |
|
default |
|
default |
|
defaultnoexcept |
|
overridevirtual |
Trigger when unknown variables changed.
Reimplemented from LinearSystem.