Template Struct NonlinearWeakAssembly

Nested Relationships

Nested Types

Struct Documentation

template<typename ObservableType, typename TargetExpression>
struct NonlinearWeakAssembly

Pointwise assembly for a state-dependent Observable.

Public Types

using SourceField = typename ObservableType::source_field_type

Public Static Functions

template<typename Support>
static inline constexpr bool uses_support_quadratures()
template<typename VectorType, typename FieldType>
static inline void reinit_result(VectorType &vector, const FieldType &field)
template<typename Support, typename TargetField>
static inline auto make_support_quadratures(const Support &support, const SourceField &source, const TargetField &target_field)
template<typename Support, typename CellIterator>
static inline bool support_includes(const Support &support, const CellIterator &cell)
template<typename Support, typename SourceField, typename TargetField>
static inline void assert_support_matches(const Support &support, const SourceField &source, const TargetField &target)
template<typename ObservableType_>
static inline void assert_dependencies_match_source_mesh(const ObservableType_ &observable)
template<typename VectorType, typename ObservableType_, typename Cache>
static inline std::decay_t<ObservableType_>::value_type primitive_value(const ObservableType_ &observable, const Cache &input_cache, const unsigned int q)
template<typename ObservableType_, typename Cache>
static inline std::decay_t<ObservableType_>::value_type primitive_derivative(const ObservableType_ &observable, const FieldId field, const Cache &input_cache, const unsigned int q, const unsigned int basis)
template<typename VectorType, typename SourceValues, typename Cache>
static inline std::decay_t<ObservableType>::value_type value_at(const ObservableType &observable, const SourceValues &source_values, const Cache &input_cache, const unsigned int q, const double time)
template<typename VectorType, typename SourceValues, typename Cache>
static inline std::decay_t<ObservableType>::value_type derivative_at(const ObservableType &observable, const FieldId field, const SourceValues &source_values, const Cache &input_cache, const unsigned int q, const unsigned int basis, const double time)
template<typename VectorType, typename FieldType>
static inline void distribute_cell_residual(const FieldType &field, const std::vector<dealii::types::global_dof_index> &native_indices, const dealii::Vector<double> &cell_values, VectorType &result)
template<typename VectorType, typename Context>
static inline std::map<FieldId, VectorType> read_input_states(const ObservableType &observable, const Context &context)
template<typename VectorType, typename MatrixType, typename Context, typename Support = InferredIntegrationSupport>
static inline std::shared_ptr<VectorType> residual(const ObservableType &observable, const TargetExpression &target, const Context &context, const Support &support = {})
template<typename VectorType, typename MatrixType, typename Context, typename Support = InferredIntegrationSupport>
static inline MatrixStorage<MatrixType> jacobian(const ObservableType &observable, const TargetExpression &target, const FieldId field, const Context &context, const Support &support = {})
template<typename VectorType, typename MatrixType, typename Context, typename Support = InferredIntegrationSupport>
static inline MaterializedOperator<VectorType, MatrixType> linearize_matrix(const ObservableType &observable, const TargetExpression &target, const FieldId field, const Context &context, const Support &support = {})
template<typename VectorType, typename MatrixType, typename Context, typename Support = InferredIntegrationSupport>
static inline dealii::LinearOperator<VectorType, VectorType> linearize(const ObservableType &observable, const TargetExpression &target, const FieldId field, const Context &context, const Support &support = {})

Public Static Attributes

static constexpr int dim = TargetExpression::source_field_type::dimension()
static constexpr int spacedim = TargetExpression::source_field_type::spacedimension()
template<typename Context, typename Cell, typename SourceValues>
class CellInputCache

Cache input FEValues and local coefficients on one cell.

Reuse the FEValues across cells when an input shares the integration mapping; otherwise transfer quadrature points from physical space.

Public Types

using VectorType = std::decay_t<decltype(std::declval<const Context&>().state(FieldId()))>
using InputStates = std::map<FieldId, VectorType>

Public Functions

inline CellInputCache(const Context &context, const InputStates &input_states, const Cell &source_cell, const SourceValues &source_values, const dealii::Mapping<dim, spacedim> &integration_mapping, const dealii::UpdateFlags update_flags, const bool reuse_across_cells = false)
inline void reinit(const Cell &source_cell, const SourceValues &source_values)
template<typename ObservableType_>
inline const Entry &get(const ObservableType_ &observable) const
struct Entry

Public Members

std::unique_ptr<dealii::FEValues<dim, spacedim>> values
std::vector<unsigned int> positions
std::vector<dealii::types::global_dof_index> execution_indices
std::vector<double> execution_values
const dealii::DoFHandler<dim, spacedim> *dof_handler = nullptr
dealii::CellId cell_id
bool cell_initialized = false
bool reusable = false
template<typename VectorType, typename FieldType, typename = void>
struct has_distributed_reinit : public std::false_type
template<typename MatrixType>
struct MatrixStorage

Public Members

std::shared_ptr<MatrixType> matrix
std::shared_ptr<dealii::SparsityPattern> sparsity
template<typename Support>
struct PhysicalSupportQuadrature

Public Types

using CellIterator = typename SourceField::space_type::DoFHandlerType::active_cell_iterator

Public Members

CellIterator cell
std::vector<dealii::Point<dim>> reference_points
std::vector<double> physical_weights