Template Class ElasticStaticProblem

Class Documentation

template<int dim, int spacedim = dim>
class ElasticStaticProblem

Parameter-driven assembled linear elasticity Problem for a static solve.

The Problem owns the mesh, displacement DoFs, constraints, stiffness matrix, forcing, accepted solution, and native linear solver control. It does not own any coupling state.

Public Types

using VectorType = ImmersXLA::MPI::Vector
using MatrixType = ImmersXLA::MPI::SparseMatrix
using DistributedTriangulation = parallel::distributed::Triangulation<dim, spacedim>
using FullyDistributedTriangulation = parallel::fullydistributed::Triangulation<dim, spacedim>
using TriangulationVariant = std::variant<DistributedTriangulation, FullyDistributedTriangulation>

Public Functions

inline explicit ElasticStaticProblem(const ElasticStaticParameters<dim, spacedim> &parameters, const MPI_Comm communicator = MPI_COMM_WORLD)
inline void setup()

Create the mesh, DoFs, constraints, stiffness matrix, and vectors.

inline void refine_global()

Globally refine a distributed mesh and rebuild the static system.

The candidate solution is reset because each static refinement cycle solves the refined problem anew.

inline const dealii::parallel::TriangulationBase<dim, spacedim> &triangulation() const
inline const dealii::IndexSet &locally_owned_dofs() const
inline const dealii::IndexSet &locally_relevant_dofs() const
inline const dealii::DoFHandler<dim, spacedim> &dof_handler() const
inline const dealii::AffineConstraints<double> &constraints() const
inline const MatrixType &stiffness_operator() const
inline const VectorType &forcing() const
inline const VectorType &solution() const
inline void set_forcing(const dealii::Function<spacedim> &function)

Reassemble the body force from a programmatic Function.

Parameter-driven applications should configure the parsed rhs instead. This convenience is useful for focused tests and callers that already own a deal.II Function.

inline void solve()

Solve the assembled static elasticity system natively.

inline void run()

Run the ordinary standalone static elasticity lifecycle.

inline void set_solution(const VectorType &new_solution)
inline void compute_error(dealii::ParsedConvergenceTable &table) const
inline void output_results(const unsigned int cycle) const

Write the accepted displacement and subdomain id for one observation cycle to configured output.