Template Struct WeakAssembly

Nested Relationships

Nested Types

Struct Documentation

template<typename ObservableType, typename TargetExpression>
struct WeakAssembly

Public Types

using SourceField = typename ObservableType::source_field_type
using TargetField = typename TargetExpression::source_field_type
template<typename VectorType, typename MatrixType>
using AffineData = WeakAffineAssembly<VectorType, MatrixType>

Public Static Functions

template<typename VectorType, typename MatrixType, typename Support>
static inline std::shared_ptr<VectorType> affine_rhs(const ObservableType &observable, const TargetExpression &target, const Support &support, bool boundary, std::set<dealii::types::boundary_id> boundary_ids)

Reintegrate only cells whose trial coefficients have affine offsets.

The matrix and the homogeneous constraint graph are not rebuilt.

template<typename VectorType, typename MatrixType>
static inline MatrixStorage<MatrixType> assemble(const ObservableType &observable, const TargetExpression &target, std::shared_ptr<VectorType> *affine_rhs = nullptr, std::shared_ptr<AffineData<VectorType, MatrixType>> *affine_data = nullptr)
template<typename VectorType, typename MatrixType, int support_dim>
static inline MatrixStorage<MatrixType> assemble_on_support(const ObservableType &observable, const TargetExpression &target, const IntegrationSupport<support_dim, spacedim> &support, std::shared_ptr<VectorType> *affine_rhs = nullptr, std::shared_ptr<AffineData<VectorType, MatrixType>> *affine_data = nullptr)
template<typename VectorType, typename MatrixType, typename Support, std::enable_if_t<is_physical_quadrature_support<Support>::value, int> = 0>
static inline MatrixStorage<MatrixType> assemble_on_support(const ObservableType &observable, const TargetExpression &target, const Support &support, std::shared_ptr<VectorType> *affine_rhs = nullptr, std::shared_ptr<AffineData<VectorType, MatrixType>> *affine_data = nullptr)
template<typename VectorType, typename MatrixType, typename Support>
static inline MatrixStorage<MatrixType> assemble_background_trace(const ObservableType &observable, const TargetExpression &target, const Support &support, std::shared_ptr<VectorType> *affine_rhs = nullptr, std::shared_ptr<AffineData<VectorType, MatrixType>> *affine_data = nullptr)

Assemble a background-to-background pairing at physical points generated by an independent integration mesh.

The support owns the integration geometry. Its quadrature points are located in the background mesh through deal.II’s GridTools cache, and FEValues evaluates both background bases at the resulting reference points. This initial path requires the trial and test spaces to share one background triangulation.

template<typename VectorType, typename MatrixType>
static inline MatrixStorage<MatrixType> assemble_on_boundary_support(const ObservableType &observable, const TargetExpression &target, const BoundaryIntegrationSupport<dim, spacedim> &support, std::shared_ptr<VectorType> *affine_rhs = nullptr, std::shared_ptr<AffineData<VectorType, MatrixType>> *affine_data = nullptr)
static inline bool geometry_is_nonmatching(const ObservableType &observable, const TargetExpression &target)
template<typename VectorType, typename MatrixType>
static inline std::shared_ptr<PreparedMatrix<VectorType, MatrixType>> prepare(const ObservableType &observable, const TargetExpression &target)
template<typename VectorType, typename MatrixType>
static inline SemiDiscreteModel<VectorType, MatrixType>::MatrixOperator dynamic_matrix_operator(const std::shared_ptr<PreparedMatrix<VectorType, MatrixType>> &prepared)
template<typename VectorType, typename MatrixType>
static inline MatrixStorage<MatrixType> assemble_boundary(const ObservableType &observable, const TargetExpression &target, const std::set<dealii::types::boundary_id> &boundary_ids, std::shared_ptr<VectorType> *affine_rhs = nullptr, std::shared_ptr<AffineData<VectorType, MatrixType>> *affine_data = nullptr)

Assemble a linear pairing on selected boundary faces.

Public Static Attributes

static constexpr int dim = TargetExpression::source_field_type::dimension()
static constexpr int spacedim = TargetExpression::source_field_type::spacedimension()
template<typename MatrixType>
struct MatrixStorage

Public Members

std::shared_ptr<MatrixType> matrix
std::shared_ptr<dealii::SparsityPattern> sparsity
template<typename VectorType, typename MatrixType>
struct PreparedMatrix

Public Types

using MatrixOperator = typename SemiDiscreteModel<VectorType, MatrixType>::MatrixOperator

Public Functions

inline void invalidate()
inline void ensure()

Public Members

MatrixStorage<MatrixType> storage
MatrixOperator operator_with_matrix
std::function<MatrixStorage<MatrixType>()> rebuild
std::function<bool()> structure_is_current
boost::signals2::scoped_connection source_connection
boost::signals2::scoped_connection target_connection
boost::signals2::scoped_connection source_mesh_connection
boost::signals2::scoped_connection target_mesh_connection
boost::signals2::scoped_connection source_partition_connection
boost::signals2::scoped_connection target_partition_connection
bool valid = true
struct ScratchData : public dealii::MeshWorker::ScratchData<dim, spacedim>

Public Functions

template<typename TrialField>
inline void prepare(const TrialField &source, const std::vector<dealii::types::global_dof_index> &source_indices, const TargetField &target, const std::vector<dealii::types::global_dof_index> &target_indices)

Public Members

std::vector<unsigned int> source_positions
std::vector<unsigned int> target_positions
std::vector<dealii::types::global_dof_index> source_execution_indices
std::vector<dealii::types::global_dof_index> target_execution_indices
dealii::FullMatrix<double> local_matrix
std::vector<typename ObservableType::value_type> trial_values
std::vector<typename TargetExpression::value_type> test_values