|
MueLu
Version of the Day
|
Preconditioner (wrapped as a Tpetra::Operator) for Maxwell's equations in curl-curl form. More...
#include <MueLu_RefMaxwell_fwd.hpp>
Public Member Functions | |
| RefMaxwell () | |
| Constructor. More... | |
| RefMaxwell (Teuchos::RCP< Hierarchy > H11, Teuchos::RCP< Hierarchy > H22) | |
| Constructor with Hierarchies. More... | |
| RefMaxwell (const Teuchos::RCP< Matrix > &SM_Matrix, const Teuchos::RCP< Matrix > &D0_Matrix, const Teuchos::RCP< Matrix > &M0inv_Matrix, const Teuchos::RCP< Matrix > &M1_Matrix, const Teuchos::RCP< MultiVector > &Nullspace, const Teuchos::RCP< MultiVector > &Coords, Teuchos::ParameterList &List, bool ComputePrec=true) | |
| RefMaxwell (const Teuchos::RCP< Matrix > &D0_Matrix, const Teuchos::RCP< Matrix > &M0inv_Matrix, const Teuchos::RCP< Matrix > &M1_Matrix, const Teuchos::RCP< MultiVector > &Nullspace, const Teuchos::RCP< MultiVector > &Coords, Teuchos::ParameterList &List) | |
| RefMaxwell (const Teuchos::RCP< Matrix > &SM_Matrix, const Teuchos::RCP< Matrix > &D0_Matrix, const Teuchos::RCP< Matrix > &M1_Matrix, const Teuchos::RCP< MultiVector > &Nullspace, const Teuchos::RCP< MultiVector > &Coords, Teuchos::ParameterList &List, bool ComputePrec=true) | |
| RefMaxwell (const Teuchos::RCP< Matrix > &D0_Matrix, const Teuchos::RCP< Matrix > &M1_Matrix, const Teuchos::RCP< MultiVector > &Nullspace, const Teuchos::RCP< MultiVector > &Coords, Teuchos::ParameterList &List) | |
| virtual | ~RefMaxwell () |
| Destructor. More... | |
| Teuchos::RCP< const Map > | getDomainMap () const |
| Returns the Xpetra::Map object associated with the domain of this operator. More... | |
| Teuchos::RCP< const Map > | getRangeMap () const |
| Returns the Xpetra::Map object associated with the range of this operator. More... | |
| void | setParameters (Teuchos::ParameterList &list) |
| Set parameters. More... | |
| void | compute () |
| Setup the preconditioner. More... | |
| void | buildProlongator () |
| Setup the prolongator for the (1,1)-block. More... | |
| void | formCoarseMatrix () |
| Compute P11^{T}*A*P11 efficiently. More... | |
| void | resetMatrix (Teuchos::RCP< Matrix > SM_Matrix_new) |
| Reset system matrix. More... | |
| void | applyInverseAdditive (const MultiVector &RHS, MultiVector &X) const |
| apply additive algorithm for 2x2 solve More... | |
| void | applyInverse121 (const MultiVector &RHS, MultiVector &X) const |
| apply 1-2-1 algorithm for 2x2 solve More... | |
| void | applyInverse212 (const MultiVector &RHS, MultiVector &X) const |
| apply 2-1-2 algorithm for 2x2 solve More... | |
| void | apply (const MultiVector &X, MultiVector &Y, Teuchos::ETransp mode=Teuchos::NO_TRANS, Scalar alpha=Teuchos::ScalarTraits< Scalar >::one(), Scalar beta=Teuchos::ScalarTraits< Scalar >::zero()) const |
| bool | hasTransposeApply () const |
| Indicates whether this operator supports applying the adjoint operator. More... | |
| template<class NewNode > | |
| Teuchos::RCP< RefMaxwell< Scalar, LocalOrdinal, GlobalOrdinal, NewNode > > | clone (const RCP< NewNode > &new_node) const |
Private Member Functions | |
| void | findDirichletRows (Teuchos::RCP< Matrix > A, std::vector< LocalOrdinal > &dirichletRows) |
| void | findDirichletCols (Teuchos::RCP< Matrix > A, std::vector< LocalOrdinal > &dirichletRows, std::vector< LocalOrdinal > &dirichletCols) |
| void | Apply_BCsToMatrixRows (Teuchos::RCP< Matrix > &A, std::vector< LocalOrdinal > &dirichletRows) |
| void | Apply_BCsToMatrixCols (Teuchos::RCP< Matrix > &A, std::vector< LocalOrdinal > &dirichletCols) |
| void | Remove_Zeroed_Rows (Teuchos::RCP< Matrix > &A, double tol=1.0e-14) |
| void | initialize (const Teuchos::RCP< Matrix > &D0_Matrix, const Teuchos::RCP< Matrix > &M0inv_Matrix, const Teuchos::RCP< Matrix > &M1_Matrix, const Teuchos::RCP< MultiVector > &Nullspace, const Teuchos::RCP< MultiVector > &Coords, Teuchos::ParameterList &List) |
Private Attributes | |
| Teuchos::RCP< Hierarchy > | Hierarchy11_ |
| Two hierarchies: one for the (1,1)-block, another for the (2,2)-block. More... | |
| Teuchos::RCP< Hierarchy > | Hierarchy22_ |
| Teuchos::RCP< Hierarchy > | HierarchySmoother_ |
| Teuchos::RCP< Level > | TopLevel_ |
| Top Level. More... | |
| Teuchos::RCP< Matrix > | SM_Matrix_ |
| Various matrices. More... | |
| Teuchos::RCP< Matrix > | D0_Matrix_ |
| Teuchos::RCP< Matrix > | M0inv_Matrix_ |
| Teuchos::RCP< Matrix > | M1_Matrix_ |
| Teuchos::RCP< Matrix > | Ms_Matrix_ |
| Teuchos::RCP< Matrix > | TMT_Matrix_ |
| Teuchos::RCP< Matrix > | TMT_Agg_Matrix_ |
| Teuchos::RCP< Matrix > | P11_ |
| Teuchos::RCP< Matrix > | A11_ |
| Teuchos::RCP< Matrix > | A22_ |
| std::vector< LocalOrdinal > | BCrows_ |
| Vectors for BCs. More... | |
| std::vector< LocalOrdinal > | BCcols_ |
| Teuchos::RCP< MultiVector > | Nullspace_ |
| Nullspace. More... | |
| Teuchos::RCP< MultiVector > | Coords_ |
| Teuchos::ParameterList | parameterList_ |
| Parameter lists. More... | |
| Teuchos::ParameterList | precList11_ |
| Teuchos::ParameterList | precList22_ |
| Teuchos::ParameterList | smootherList_ |
| bool | disable_addon_ |
| Some options. More... | |
| std::string | mode_ |
Preconditioner (wrapped as a Tpetra::Operator) for Maxwell's equations in curl-curl form.
This uses a 2x2 block reformulation.
Reference: P. Bochev, J. Hu, C. Siefert, and R. Tuminaro. "An algebraic multigrid approach based on a compatible gauge reformulation of Maxwell's equations." SIAM Journal on Scientific Computing, 31(1), 557-583.
Definition at line 54 of file MueLu_RefMaxwell_fwd.hpp.
|
inline |
Constructor.
Definition at line 95 of file MueLu_RefMaxwell_decl.hpp.
|
inline |
Constructor with Hierarchies.
Definition at line 104 of file MueLu_RefMaxwell_decl.hpp.
|
inline |
Constructor with Jacobian (with add on)
| [in] | SM_Matrix | Jacobian |
| [in] | D0_Matrix | Discrete Gradient |
| [in] | M0inv_Matrix | Inverse of lumped nodal mass matrix (add on only) |
| [in] | M1_Matrix | Edge mass matrix for the |
| [in] | Nullspace | Null space (needed for periodic) |
| [in] | coords | Nodal coordinates |
| [in] | precList | Parameter list |
| [in] | ComputePrec | If true, compute the preconditioner immediately |
Definition at line 123 of file MueLu_RefMaxwell_decl.hpp.
|
inline |
Constructor without Jacobian (with add on)
| [in] | D0_Matrix | Discrete Gradient |
| [in] | M0inv_Matrix | Inverse of lumped nodal mass matrix (add on only) |
| [in] | M1_Matrix | Edge mass matrix for the |
| [in] | Nullspace | Null space (needed for periodic) |
| [in] | coords | Nodal coordinates |
| [in] | precList | Parameter list |
Definition at line 150 of file MueLu_RefMaxwell_decl.hpp.
|
inline |
Constructor with Jacobian (no add on)
| [in] | SM_Matrix | Jacobian |
| [in] | D0_Matrix | Discrete Gradient |
| [in] | M1_Matrix | Edge mass matrix for the |
| [in] | Nullspace | Null space (needed for periodic) |
| [in] | coords | Nodal coordinates |
| [in] | precList | Parameter list |
| [in] | ComputePrec | If true, compute the preconditioner immediately |
Definition at line 170 of file MueLu_RefMaxwell_decl.hpp.
|
inline |
Constructor without Jacobian (no add on)
| [in] | D0_Matrix | Discrete Gradient |
| [in] | M1_Matrix | Edge mass matrix for the |
| [in] | Nullspace | Null space (needed for periodic) |
| [in] | coords | Nodal coordinates |
| [in] | precList | Parameter list |
Definition at line 195 of file MueLu_RefMaxwell_decl.hpp.
|
inlinevirtual |
Destructor.
Definition at line 205 of file MueLu_RefMaxwell_decl.hpp.
| Teuchos::RCP< const Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > MueLu::RefMaxwell< Scalar, LocalOrdinal, GlobalOrdinal, Node >::getDomainMap | ( | ) | const |
Returns the Xpetra::Map object associated with the domain of this operator.
Definition at line 70 of file MueLu_RefMaxwell_def.hpp.
| Teuchos::RCP< const Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > MueLu::RefMaxwell< Scalar, LocalOrdinal, GlobalOrdinal, Node >::getRangeMap | ( | ) | const |
Returns the Xpetra::Map object associated with the range of this operator.
Definition at line 75 of file MueLu_RefMaxwell_def.hpp.
| void MueLu::RefMaxwell< Scalar, LocalOrdinal, GlobalOrdinal, Node >::setParameters | ( | Teuchos::ParameterList & | list | ) |
Set parameters.
Definition at line 80 of file MueLu_RefMaxwell_def.hpp.
| void MueLu::RefMaxwell< Scalar, LocalOrdinal, GlobalOrdinal, Node >::compute | ( | ) |
Setup the preconditioner.
Definition at line 109 of file MueLu_RefMaxwell_def.hpp.
| void MueLu::RefMaxwell< Scalar, LocalOrdinal, GlobalOrdinal, Node >::buildProlongator | ( | ) |
Setup the prolongator for the (1,1)-block.
Definition at line 197 of file MueLu_RefMaxwell_def.hpp.
| void MueLu::RefMaxwell< Scalar, LocalOrdinal, GlobalOrdinal, Node >::formCoarseMatrix | ( | ) |
Compute P11^{T}*A*P11 efficiently.
Definition at line 296 of file MueLu_RefMaxwell_def.hpp.
| void MueLu::RefMaxwell< Scalar, LocalOrdinal, GlobalOrdinal, Node >::resetMatrix | ( | Teuchos::RCP< Matrix > | SM_Matrix_new | ) |
Reset system matrix.
Definition at line 344 of file MueLu_RefMaxwell_def.hpp.
| void MueLu::RefMaxwell< Scalar, LocalOrdinal, GlobalOrdinal, Node >::applyInverseAdditive | ( | const MultiVector & | RHS, |
| MultiVector & | X | ||
| ) | const |
apply additive algorithm for 2x2 solve
Definition at line 349 of file MueLu_RefMaxwell_def.hpp.
| void MueLu::RefMaxwell< Scalar, LocalOrdinal, GlobalOrdinal, Node >::applyInverse121 | ( | const MultiVector & | RHS, |
| MultiVector & | X | ||
| ) | const |
apply 1-2-1 algorithm for 2x2 solve
Definition at line 372 of file MueLu_RefMaxwell_def.hpp.
| void MueLu::RefMaxwell< Scalar, LocalOrdinal, GlobalOrdinal, Node >::applyInverse212 | ( | const MultiVector & | RHS, |
| MultiVector & | X | ||
| ) | const |
apply 2-1-2 algorithm for 2x2 solve
Definition at line 403 of file MueLu_RefMaxwell_def.hpp.
| void MueLu::RefMaxwell< Scalar, LocalOrdinal, GlobalOrdinal, Node >::apply | ( | const MultiVector & | X, |
| MultiVector & | Y, | ||
| Teuchos::ETransp | mode = Teuchos::NO_TRANS, |
||
| Scalar | alpha = Teuchos::ScalarTraits<Scalar>::one(), |
||
| Scalar | beta = Teuchos::ScalarTraits<Scalar>::zero() |
||
| ) | const |
Returns in Y the result of a Xpetra::Operator applied to a Xpetra::MultiVector X.
| [in] | X | - MultiVector of dimension NumVectors to multiply with matrix. |
| [out] | Y | - MultiVector of dimension NumVectors containing result. |
Definition at line 439 of file MueLu_RefMaxwell_def.hpp.
| bool MueLu::RefMaxwell< Scalar, LocalOrdinal, GlobalOrdinal, Node >::hasTransposeApply | ( | ) | const |
Indicates whether this operator supports applying the adjoint operator.
Definition at line 479 of file MueLu_RefMaxwell_def.hpp.
|
inline |
Definition at line 250 of file MueLu_RefMaxwell_decl.hpp.
|
inlineprivate |
Definition at line 258 of file MueLu_RefMaxwell_decl.hpp.
|
inlineprivate |
Definition at line 282 of file MueLu_RefMaxwell_decl.hpp.
|
inlineprivate |
Definition at line 311 of file MueLu_RefMaxwell_decl.hpp.
|
inlineprivate |
Definition at line 326 of file MueLu_RefMaxwell_decl.hpp.
|
inlineprivate |
Definition at line 345 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Initialize with matrices except the Jacobian (don't compute the preconditioner)
| [in] | D0_Matrix | Discrete Gradient |
| [in] | M0inv_Matrix | Inverse of lumped nodal mass matrix (add on only) |
| [in] | M1_Matrix | Edge mass matrix |
| [in] | Nullspace | Null space (needed for periodic) |
| [in] | coords | Nodal coordinates |
| [in] | precList | Parameter list |
Definition at line 485 of file MueLu_RefMaxwell_def.hpp.
|
private |
Two hierarchies: one for the (1,1)-block, another for the (2,2)-block.
Definition at line 400 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Definition at line 400 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Definition at line 400 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Top Level.
Definition at line 402 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Various matrices.
Definition at line 404 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Definition at line 404 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Definition at line 404 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Definition at line 404 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Definition at line 404 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Definition at line 405 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Definition at line 405 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Definition at line 405 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Definition at line 405 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Definition at line 405 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Vectors for BCs.
Definition at line 407 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Definition at line 407 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Nullspace.
Definition at line 409 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Definition at line 409 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Parameter lists.
Definition at line 411 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Definition at line 411 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Definition at line 411 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Definition at line 411 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Some options.
Definition at line 413 of file MueLu_RefMaxwell_decl.hpp.
|
private |
Definition at line 414 of file MueLu_RefMaxwell_decl.hpp.