Program Listing for File coupled_elasticity.h

Return to documentation for file (include/immersx/physics/coupled_elasticity.h)

/* ---------------------------------------------------------------------
 */
#ifdef ENABLE_COUPLED_PROBLEMS

#  ifndef dealii_distributed_lagrange_multiplier_coupled_elasticity_h
#    define dealii_distributed_lagrange_multiplier_coupled_elasticity_h

#    include <immersx/physics/elasticity.h>



namespace ImmersX
{
  template <int dim, int spacedim = dim>
  class CoupledElasticityProblem : public ElasticityProblem<dim, spacedim>
  {
  public:
    CoupledElasticityProblem(
      const ElasticityProblemParameters<dim, spacedim> &par);

    void
    run();
    void
    run_timestep0();
    void
    run_timestep();
    void
    compute_coupling_pressure();

    void
    update_inclusions_data(std::vector<double> new_data);
    void
    update_inclusions_data(std::vector<double> new_data,
                           std::vector<int>    cells_per_vessel);

    std::vector<std::vector<double>>
      split_pressure_over_inclusions(std::vector<int>, Vector<double>) const;

    unsigned int
    n_vessels() const
    {
      return this->inclusions.get_n_vessels();
    };

    TrilinosWrappers::MPI::Vector coupling_pressure;
    TrilinosWrappers::MPI::Vector coupling_pressure_at_inclusions;

  private:
    void
    reassemble_coupling_rhs();

    void
    refine_and_transfer_around_inclusions();

    void
    output_coupling_pressure(bool openfilefirsttime) const;
  };

#  endif

} // namespace ImmersX

#endif