Template Class LiftedObservable

Class Documentation

template<typename SourceObservable, int reduced_dim, int surface_dim, int spacedim, int n_components = 1>
class LiftedObservable

An Observable sampled on a tensor-product lift.

This is deliberately a small value-space adapter. It retains the source FE field and its stencils, while the coupling backend owns point search and redistribution when the quantity is paired with a target field.

Public Types

using source_field_type = typename SourceObservable::source_field_type
using value_type = std::conditional_t<vector_lift, std::vector<dealii::Tensor<1, spacedim>>, ImmersXLA::MPI::Vector>
using point_value_type = std::conditional_t<vector_lift, dealii::Tensor<1, spacedim>, double>
using state_type = ImmersXLA::MPI::Vector
using Point = detail::CouplingPoint<spacedim, double>
using Lift = TensorProductLift<reduced_dim, surface_dim, spacedim, n_components>
using Support = TensorProductLiftSupport<reduced_dim, surface_dim, spacedim, n_components>
using Operator = dealii::LinearOperator<value_type, state_type>

Public Functions

inline LiftedObservable(SourceObservable source, const Lift &lift)
inline LiftedObservable(SourceObservable source, const Lift &lift, SourceThicknessEvaluator<spacedim> thickness_evaluator)
inline const source_field_type &source() const
inline FieldId source_field() const
inline const source_field_type &source_for(const FieldId field) const
inline const std::vector<FieldId> &dependencies() const
inline bool is_frozen() const
template<typename VectorType>
inline const VectorType &frozen_values() const
inline double scale() const
inline LiftedObservable with_id(const FieldId id) const
inline const std::vector<Point> &lifted_points() const
inline const std::vector<Point> &locally_owned_quadrature_points(const dealii::Quadrature<surface_dim>&) const
inline const dealii::IndexSet &locally_owned_points() const
inline const dealii::IndexSet &locally_relevant_points() const
inline dealii::types::global_dof_index point_index(const std::size_t local_point) const
inline MPI_Comm mpi_communicator() const
template<typename Context>
inline value_type evaluate(const Context &context) const
template<typename Context>
inline point_value_type evaluate_point(const Context &context, const std::size_t point) const
template<typename Context>
inline point_value_type linearize_point(const Context &context, const FieldId field, const std::size_t point, const unsigned int basis) const
template<typename Context>
inline Operator linearize(const Context &context, const FieldId field) const
template<typename Context>
inline Operator linearize(const Context &context) const

Public Static Functions

static inline constexpr unsigned int dimension()
static inline constexpr unsigned int spacedimension()
static inline constexpr bool is_linear()

Public Static Attributes

static constexpr unsigned int support_dimension = surface_dim
static constexpr unsigned int ambient_dimension = spacedim
static constexpr unsigned int representative_dimension = reduced_dim
static constexpr bool vector_lift = n_components == spacedim && n_components > 1