Fluid structure interaction suite
linear_visco_elasticity.h
Go to the documentation of this file.
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 2022 by Luca Heltai
4 //
5 // This file is part of the FSI-suite platform, based on the deal.II library.
6 //
7 // The FSI-suite platform is free software; you can use it, redistribute it,
8 // and/or modify it under the terms of the GNU Lesser General Public License as
9 // published by the Free Software Foundation; either version 3.0 of the License,
10 // or (at your option) any later version. The full text of the license can be
11 // found in the file LICENSE at the top level of the FSI-suite platform
12 // distribution.
13 //
14 // ---------------------------------------------------------------------
15 #ifndef pdes_linear_visco_elasticity_h
16 #define pdes_linear_visco_elasticity_h
17 
18 #include "parsed_tools/constants.h"
20 #include "pdes/linear_problem.h"
21 
22 namespace PDEs
23 {
24  using namespace dealii;
25 
43  template <int dim, int spacedim = dim, class LacType = LAC::LAdealii>
44  class LinearViscoElasticity : public LinearProblem<dim, spacedim, LacType>
45  {
46  public:
52 
56  virtual ~LinearViscoElasticity() = default;
57 
58  using ScratchData =
60 
62 
63  using VectorType =
65 
69  void
70  postprocess();
71 
72  protected:
76  virtual void
77  assemble_system() override;
78 
82  virtual void
83  solve() override;
84 
89 
94 
99 
104 
108  std::set<types::material_id> material_ids_0;
109 
113  std::set<types::material_id> material_ids_1;
114 
119 
123  double dt;
124 
128  double current_time;
129 
133  unsigned int current_cycle;
134 
135  typename LacType::BlockVector current_displacement;
136  typename LacType::BlockVector current_displacement_locally_relevant;
137  };
138 
139  namespace MPI
140  {
141  template <int dim, int spacedim = dim>
144  }
145 
146  namespace Serial
147  {
148  template <int dim, int spacedim = dim>
151  }
152 } // namespace PDEs
153 #endif
Construct a LinearProblem.
typename BlockVectorType::BlockType VectorType
Vector type.
typename LinearProblem< dim, spacedim, LacType >::VectorType VectorType
ParsedTools::Constants constants_1
Constants of the second material.
typename LinearProblem< dim, spacedim, LacType >::CopyData CopyData
LacType::BlockVector current_displacement_locally_relevant
ParsedTools::Constants constants_0
Constants of the first material.
LacType::BlockVector current_displacement
typename LinearProblem< dim, spacedim, LacType >::ScratchData ScratchData
virtual ~LinearViscoElasticity()=default
Destroy the LinearElasticity object.
const FEValuesExtractors::Vector velocity
Velocity field extractor.
std::set< types::material_id > material_ids_0
Material ids of the first material.
std::set< types::material_id > material_ids_1
Material ids of the second material.
const FEValuesExtractors::Vector displacement
Displacement field extractor.
unsigned int current_cycle
Current cycle.
ParsedTools::MappingEulerian< dim, spacedim > eulerian_mapping
Mapping from reference configuration to deformed configuration.
A wrapper for physical constants to be shared among functions and classes.
Definition: constants.h:44
A wrapper class for MappingFEField or MappingQEulerian.
PDEs::LinearViscoElasticity< dim, spacedim, LAC::LAdealii > LinearViscoElasticity
We collect in this namespace all PDEs that are relevant to Fluid Structure Interaction Problems.