Template Class MetricFlowXVesselWallConstraint

Class Documentation

template<typename SolidField, typename WallObservable>
class MetricFlowXVesselWallConstraint

MetricFlowX vessel-wall interaction.

With B the scalar-multiplier/vector-displacement pairing and P(A) the nonlinear Area-to-wall pairing, the current residual rows are

F_solid + B lambda = 0, B^T displacement - P(A) = 0, F_flow(A, U, …) + F_DeltaP(lambda) = 0.

The multiplier lambda is the pressure difference

lambda = p_external - p_internal,tube.

Consequently positive lambda produces an inward wall traction through +B lambda, while the MetricFlowX external-pressure convention receives p_external_pressure = -lambda. This is the action/reaction sign implied by the outward wall normal and the residual convention internal force - applied force.

Public Types

using MatrixType = ImmersXLA::MPI::SparseMatrix
using VectorType = ImmersXLA::MPI::Vector
using ExternalPressureProvider = typename WallObservable::ExternalPressureProvider

Public Functions

inline MetricFlowXVesselWallConstraint(const SolidField &solid, const WallObservable &wall)
template<typename Lift>
inline auto radial_displacement(const Lift &lift) const
inline auto multiplier_field() const
inline ExternalPressureProvider make_external_pressure_provider(const VectorType &multiplier) const
inline const dealii::IndexSet &multiplier_locally_owned_dofs() const
inline const dealii::IndexSet &multiplier_locally_relevant_dofs() const
inline void set_multiplier(const VectorType &new_multiplier)

Accept the scalar pressure-difference state at an accepted step.

inline const VectorType &multiplier() const
inline void output_results(const std::string &output_directory, const std::string &output_name = "pressure_jump", const unsigned int cycle = 0, const double time = std::numeric_limits<double>::quiet_NaN()) const

Write the accepted scalar multiplier on the MetricFlowX centerline.

inline dealii::PackagedOperation<VectorType> flow_pressure_residual(const EvaluationContext<VectorType> &context, const FieldId flow_state, const FieldId multiplier) const
inline dealii::LinearOperator<VectorType, VectorType> flow_pressure_jacobian(const EvaluationContext<VectorType> &context, const FieldId flow_state, const FieldId multiplier) const

Public Static Attributes

static constexpr unsigned int spacedim = SolidField::spacedimension()
static constexpr bool flow_pressure_feedback_is_implemented = true