| FEAT 3
    Finite Element Analysis Toolbox | 
Grid-Transfer assembly class template. More...
#include <grid_transfer.hpp>
| Classes | |
| class | LocalMassMatrixSingularException | 
| Exception for singular mass matrix errors.  More... | |
| Static Public Member Functions | |
| template<typename Matrix_ , typename Vector_ , typename TargetSpace_ , typename SourceSpace_ , typename Target2SourceAdjactor_ > | |
| static int | assemble_intermesh_transfer (Matrix_ &matrix, Vector_ &vector, const TargetSpace_ &space_target, const SourceSpace_ &space_source, const Target2SourceAdjactor_ &trg2src, const String &cubature_name) | 
| Assembles a generic inter-mesh transfer matrix and its corresponding weight vector.  More... | |
| template<typename Matrix_ , typename TargetSpace_ , typename SourceSpace_ , typename Target2SourceAdjactor_ > | |
| static int | assemble_intermesh_transfer_direct (Matrix_ &matrix, const TargetSpace_ &space_target, const SourceSpace_ &space_source, const Target2SourceAdjactor_ &trg2src, const String &cubature_name) | 
| Assembles a generic inter-mesh transfer matrix and its corresponding weight vector.  More... | |
| template<typename Matrix_ , typename Vector_ , typename FineSpace_ , typename CoarseSpace_ > | |
| static void | assemble_prolongation (Matrix_ &matrix, Vector_ &vector, const FineSpace_ &fine_space, const CoarseSpace_ &coarse_space, const Cubature::DynamicFactory &cubature_factory) | 
| Assembles a prolongation matrix and its corresponding weight vector.  More... | |
| template<typename Matrix_ , typename Vector_ , typename FineSpace_ , typename CoarseSpace_ > | |
| static void | assemble_prolongation (Matrix_ &matrix, Vector_ &vector, const FineSpace_ &fine_space, const CoarseSpace_ &coarse_space, const String &cubature_name) | 
| Assembles a prolongation matrix and its corresponding weight vector.  More... | |
| template<typename Matrix_ , typename FineSpace_ , typename CoarseSpace_ > | |
| static void | assemble_prolongation_direct (Matrix_ &matrix, const FineSpace_ &fine_space, const CoarseSpace_ &coarse_space, const Cubature::DynamicFactory &cubature_factory) | 
| Assembles a prolongation matrix.  More... | |
| template<typename Matrix_ , typename FineSpace_ , typename CoarseSpace_ > | |
| static void | assemble_prolongation_direct (Matrix_ &matrix, const FineSpace_ &fine_space, const CoarseSpace_ &coarse_space, const String &cubature_name) | 
| Assembles a prolongation matrix.  More... | |
| template<typename Matrix_ , typename Vector_ , typename FineSpace_ , typename CoarseSpace_ > | |
| static void | assemble_truncation (Matrix_ &matrix, Vector_ &vector, const FineSpace_ &fine_space, const CoarseSpace_ &coarse_space, const Cubature::DynamicFactory &cubature_factory) | 
| Assembles a truncation matrix and its corresponding weight vector.  More... | |
| template<typename Matrix_ , typename Vector_ , typename FineSpace_ , typename CoarseSpace_ > | |
| static void | assemble_truncation (Matrix_ &matrix, Vector_ &vector, const FineSpace_ &fine_space, const CoarseSpace_ &coarse_space, const String &cubature_name) | 
| Assembles a truncation matrix and its corresponding weight vector.  More... | |
| template<typename Matrix_ , typename FineSpace_ , typename CoarseSpace_ > | |
| static void | assemble_truncation_direct (Matrix_ &matrix, const FineSpace_ &fine_space, const CoarseSpace_ &coarse_space, const Cubature::DynamicFactory &cubature_factory) | 
| Assembles a truncation matrix.  More... | |
| template<typename Matrix_ , typename FineSpace_ , typename CoarseSpace_ > | |
| static void | assemble_truncation_direct (Matrix_ &matrix, const FineSpace_ &fine_space, const CoarseSpace_ &coarse_space, const String &cubature_name) | 
| Assembles a truncation matrix.  More... | |
| template<typename Vector_ , typename FineSpace_ , typename CoarseSpace_ > | |
| static void | prolongate_vector (Vector_ &vector_f, Vector_ &vector_w, const Vector_ &vector_c, const FineSpace_ &fine_space, const CoarseSpace_ &coarse_space, const String &cubature_name) | 
| Prolongates a primal vector and assembles a compatible weight vector.  More... | |
| template<typename Vector_ , typename FineSpace_ , typename CoarseSpace_ > | |
| static void | prolongate_vector_direct (Vector_ &vector_f, const Vector_ &vector_c, const FineSpace_ &fine_space, const CoarseSpace_ &coarse_space, const String &cubature_name) | 
| Prolongates a primal vector directly.  More... | |
| template<typename Vector_ , typename TargetSpace_ , typename SourceSpace_ , typename Target2SourceAdjactor_ > | |
| static int | transfer_intermesh_vector (Vector_ &vector_target, Vector_ &vector_weight, const Vector_ &vector_source, const TargetSpace_ &space_target, const SourceSpace_ &space_source, const Target2SourceAdjactor_ &trg2src, const String &cubature_name) | 
| Performs a generic inter-mesh transfer of a primal vector and assembles a compatible weight vector.  More... | |
| template<typename Vector_ , typename TargetSpace_ , typename SourceSpace_ , typename Target2SourceAdjactor_ > | |
| static int | transfer_intermesh_vector_direct (Vector_ &vector_target, const Vector_ &vector_source, const TargetSpace_ &space_target, const SourceSpace_ &space_source, const Target2SourceAdjactor_ &trg2src, const String &cubature_name) | 
| Performs a generic inter-mesh transfer of a primal vector directly.  More... | |
Grid-Transfer assembly class template.
This class template implements the assembly of grid transfer operators.
Definition at line 34 of file grid_transfer.hpp.
| 
 | inlinestatic | 
Assembles a generic inter-mesh transfer matrix and its corresponding weight vector.
To obtain the final inter-mesh transfer matrix, one needs to invert the weight vector component-wise and scale the matrix rows by the inverted weights afterwards. This can be accomplished by the component_invert and scale_rows operations of the vector and matrix containers, resp.
| [in,out] | matrix | A transient reference to the transfer matrix that is to be assembled. | 
| [in,out] | vector | A transient reference to the weight vector for the transfer matrix. | 
| [in] | space_target | A transient reference to the target-mesh (test) space to be used. | 
| [in] | space_source | A transient reference to the source-mesh (trial) space to be used. | 
| [in] | target_to_source | A transient reference to a target-to-source mesh adjactor. If the source and/or target meshes are permuted, then the adjactor is assumed to be also permuted consistently. | 
| [in] | cubature_name | The name of the cubature rule to be used for integration of the mass matrices. This should be an open cubature rule, i.e. all point shall be in the interior of the reference cell to avoid unmapping errors. | 
Definition at line 875 of file grid_transfer.hpp.
References FEAT::Tiny::Vector< T_, n_, s_ >::format(), FEAT::img_point, FEAT::Math::invert_matrix(), FEAT::Math::isnormal(), FEAT::jac_det, XASSERT, and XASSERTM.
Referenced by assemble_intermesh_transfer_direct().
| 
 | inlinestatic | 
Assembles a generic inter-mesh transfer matrix and its corresponding weight vector.
| [in,out] | matrix | A transient reference to the transfer matrix that is to be assembled. | 
| [in] | space_target | A transient reference to the target-mesh (test) space to be used. | 
| [in] | space_source | A transient reference to the source-mesh (trial) space to be used. | 
| [in] | target_to_source | A transient reference to a target-to-source mesh adjactor. If the source and/or target meshes are permuted, then the adjactor is assumed to be also permuted consistently. | 
| [in] | cubature_name | The name of the cubature rule to be used for integration of the mass matrices. | 
Definition at line 1245 of file grid_transfer.hpp.
References assemble_intermesh_transfer().
| 
 | inlinestatic | 
Assembles a prolongation matrix and its corresponding weight vector.
To obtain the final prolongation matrix, one needs to invert the weight vector component-wise and scale the matrix rows by the inverted weights afterwards. This can be accomplished by the component_invert and scale_rows operations of the vector and matrix containers, resp.
| [in,out] | matrix | A transient reference to the prolongation matrix that is to be assembled. | 
| [in,out] | vector | A transient reference to the weight vector for the prolongation matrix. | 
| [in] | fine_space | A transient reference to the fine-mesh test-space to be used. | 
| [in] | coarse_space | A transient reference to the coarse-mesh trial-space to be used. | 
| [in] | cubature_factory | The cubature factory to be used for integration. | 
Definition at line 120 of file grid_transfer.hpp.
References FEAT::Adjacency::Permutation::empty(), FEAT::Tiny::Vector< T_, n_, s_ >::format(), FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::format(), FEAT::Math::invert_matrix(), FEAT::Math::isnormal(), FEAT::jac_det, FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::norm_frobenius(), FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::set_mat_mat_mult(), FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::sn, FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::v, and XASSERTM.
| 
 | inlinestatic | 
Assembles a prolongation matrix and its corresponding weight vector.
To obtain the final prolongation matrix, one needs to invert the weight vector component-wise and scale the matrix rows by the inverted weights afterwards. This can be accomplished by the component_invert and scale_rows operations of the vector and matrix containers, resp.
| [in,out] | matrix | A transient reference to the prolongation matrix that is to be assembled. | 
| [in,out] | vector | A transient reference to the weight vector for the prolongation matrix. | 
| [in] | fine_space | A transient reference to the fine-mesh test-space to be used. | 
| [in] | coarse_space | A transient reference to the coarse-mesh trial-space to be used. | 
| [in] | cubature_name | The name of the cubature rule to be used for integration of the mass matrices. | 
Definition at line 81 of file grid_transfer.hpp.
References assemble_prolongation().
Referenced by assemble_prolongation(), assemble_prolongation_direct(), and FEAT::Control::Meshopt::MeshoptSystemLevel< DT_, IT_, Functional_ >::assemble_system_transfer().
| 
 | inlinestatic | 
Assembles a prolongation matrix.
| [in,out] | matrix | A transient reference to the prolongation matrix that is to be assembled. | 
| [in] | fine_space | A transient reference to the fine-mesh test-space to be used. | 
| [in] | coarse_space | A transient reference to the coarse-mesh trial-space to be used. | 
| [in] | cubature_factory | The cubature factory to be used for integration. | 
Definition at line 421 of file grid_transfer.hpp.
References assemble_prolongation().
| 
 | inlinestatic | 
Assembles a prolongation matrix.
| [in,out] | matrix | A transient reference to the prolongation matrix that is to be assembled. | 
| [in] | fine_space | A transient reference to the fine-mesh test-space to be used. | 
| [in] | coarse_space | A transient reference to the coarse-mesh trial-space to be used. | 
| [in] | cubature_name | The name of the cubature rule to be used for integration. | 
Definition at line 386 of file grid_transfer.hpp.
References assemble_prolongation_direct().
Referenced by assemble_prolongation_direct().
| 
 | inlinestatic | 
Assembles a truncation matrix and its corresponding weight vector.
To obtain the final truncation matrix, one needs to invert the weight vector component-wise and scale the matrix rows by the inverted weights afterwards. This can be accomplished by the component_invert and scale_rows operations of the vector and matrix containers, resp.
| [in,out] | matrix | A transient reference to the truncation matrix that is to be assembled. | 
| [in,out] | vector | A transient reference to the weight vector for the reduction matrix. | 
| [in] | fine_space | A transient reference to the fine-mesh test-space to be used. | 
| [in] | coarse_space | A transient reference to the coarse-mesh trial-space to be used. | 
| [in] | cubature_factory | The cubature factory to be used for integration. | 
Definition at line 507 of file grid_transfer.hpp.
References FEAT::Adjacency::Permutation::empty(), FEAT::Tiny::Vector< T_, n_, s_ >::format(), FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::format(), FEAT::Math::invert_matrix(), FEAT::Math::isnormal(), FEAT::jac_det, FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::norm_frobenius(), FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::set_mat_mat_mult(), FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::sn, FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::v, and XASSERTM.
| 
 | inlinestatic | 
Assembles a truncation matrix and its corresponding weight vector.
To obtain the final truncation matrix, one needs to invert the weight vector component-wise and scale the matrix rows by the inverted weights afterwards. This can be accomplished by the component_invert and scale_rows operations of the vector and matrix containers, resp.
| [in,out] | matrix | A transient reference to the truncation matrix that is to be assembled. | 
| [in,out] | vector | A transient reference to the weight vector for the reduction matrix. | 
| [in] | fine_space | A transient reference to the fine-mesh test-space to be used. | 
| [in] | coarse_space | A transient reference to the coarse-mesh trial-space to be used. | 
| [in] | cubature_name | The name of the cubature rule to be used for integration. | 
Definition at line 468 of file grid_transfer.hpp.
References assemble_truncation().
Referenced by assemble_truncation(), and assemble_truncation_direct().
| 
 | inlinestatic | 
Assembles a truncation matrix.
| [in,out] | matrix | A transient reference to the truncation matrix that is to be assembled. | 
| [in] | fine_space | A transient reference to the fine-mesh test-space to be used. | 
| [in] | coarse_space | A transient reference to the coarse-mesh trial-space to be used. | 
| [in] | cubature_factory | The cubature factory to be used for integration. | 
Definition at line 809 of file grid_transfer.hpp.
References assemble_truncation().
| 
 | inlinestatic | 
Assembles a truncation matrix.
| [in,out] | matrix | A transient reference to the truncation matrix that is to be assembled. | 
| [in] | fine_space | A transient reference to the fine-mesh test-space to be used. | 
| [in] | coarse_space | A transient reference to the coarse-mesh trial-space to be used. | 
| [in] | cubature_name | The name of the cubature rule to be used for integration. | 
Definition at line 774 of file grid_transfer.hpp.
References assemble_truncation_direct().
Referenced by assemble_truncation_direct().
| 
 | inlinestatic | 
Prolongates a primal vector and assembles a compatible weight vector.
To obtain the final prolongated vector, one needs to invert the weight vector component-wise and scale the prolongated vector component-wise by the inverted weights afterwards. This can be accomplished by the component_invert and component_product operations of the vector container, resp.
| [in,out] | vector_f | A transient reference to the fine-mesh vector that is to be assembled Is assumed to be allocated and formatted to 0. | 
| [in,out] | vector_w | A transient reference to the fine-mesh weight vector that is to be assembled. Is assumed to be allocated and formatted to 0. | 
| [in] | vector_c | A transient reference to the coarse-mesh vector that is to be prolongated. | 
| [in] | fine_space | A transient reference to the fine-mesh test-space to be used. | 
| [in] | coarse_space | A transient reference to the coarse-mesh trial-space to be used. | 
| [in] | cubature_name | The name of the cubature rule to be used for integration. | 
Definition at line 1303 of file grid_transfer.hpp.
References FEAT::Adjacency::Permutation::empty(), FEAT::Tiny::Vector< T_, n_, s_ >::format(), FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::format(), FEAT::Math::invert_matrix(), FEAT::Math::isnormal(), FEAT::jac_det, FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::norm_frobenius(), FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::set_mat_mat_mult(), FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::sn, FEAT::Tiny::Matrix< T_, m_, n_, sm_, sn_ >::v, and XASSERTM.
Referenced by prolongate_vector_direct().
| 
 | inlinestatic | 
Prolongates a primal vector directly.
| [in,out] | vector_f | A transient reference to the fine-mesh vector that is to be assembled Is assumed to be allocated and formatted to 0. | 
| [in] | vector_c | A transient reference to the coarse-mesh vector that is to be prolongated. | 
| [in] | fine_space | A transient reference to the fine-mesh test-space to be used. | 
| [in] | coarse_space | A transient reference to the coarse-mesh trial-space to be used. | 
| [in] | cubature_name | The name of the cubature rule to be used for integration. | 
Definition at line 1577 of file grid_transfer.hpp.
References FEAT::LAFEM::Layout, and prolongate_vector().
| 
 | inlinestatic | 
Performs a generic inter-mesh transfer of a primal vector and assembles a compatible weight vector.
To obtain the final transferred vector, one needs to invert the weight vector component-wise and scale the prolongated vector component-wise by the inverted weights afterwards. This can be accomplished by the component_invert and component_product operations of the vector container, resp.
| [in,out] | vector_target | A transient reference to the target vector that is to be assembled. Is assumed to be allocated and formatted to 0. | 
| [in,out] | vector_weight | A transient reference to the weight vector for the transfer matrix. Is assumed to be allocated and formatted to 0. | 
| [in] | vector_source | A transient reference to the source vector that is to be transferred. | 
| [in] | space_target | A transient reference to the target-mesh (test) space to be used. | 
| [in] | space_source | A transient reference to the source-mesh (trial) space to be used. | 
| [in] | target_to_source | A transient reference to a target-to-source mesh adjactor. If the source and/or target meshes are permuted, then the adjactor is assumed to be also permuted consistently. | 
| [in] | cubature_name | The name of the cubature rule to be used for integration of the mass matrices. This should be an open cubature rule, i.e. all point shall be in the interior of the reference cell to avoid unmapping errors. | 
Definition at line 1645 of file grid_transfer.hpp.
References FEAT::img_point, FEAT::Math::invert_matrix(), FEAT::Math::isnormal(), FEAT::jac_det, XASSERT, and XASSERTM.
| 
 | inlinestatic | 
Performs a generic inter-mesh transfer of a primal vector directly.
| [in,out] | vector_target | A transient reference to the target vector that is to be assembled. Is assumed to be allocated and formatted to 0. | 
| [in] | vector_source | A transient reference to the source vector that is to be transferred. | 
| [in] | space_target | A transient reference to the target-mesh (test) space to be used. | 
| [in] | space_source | A transient reference to the source-mesh (trial) space to be used. | 
| [in] | target_to_source | A transient reference to a target-to-source mesh adjactor. If the source and/or target meshes are permuted, then the adjactor is assumed to be also permuted consistently. | 
| [in] | cubature_name | The name of the cubature rule to be used for integration of the mass matrices. | 
Definition at line 2018 of file grid_transfer.hpp.
References FEAT::LAFEM::Layout, and transfer_intermesh_vector_direct().
Referenced by transfer_intermesh_vector_direct().