19 #ifndef ELASTICITY_HH_ 20 #define ELASTICITY_HH_ 37 template<
unsigned int dim,
unsigned int spacedim>
class FEValuesBase;
39 template<
unsigned int dim,
unsigned int spacedim>
class Mapping;
57 template<
unsigned int dim>
60 template<
unsigned int dim>
63 template<
unsigned int dim>
66 inline std::shared_ptr<DOFHandlerMultiDim>
dh();
67 inline std::shared_ptr<DOFHandlerMultiDim>
dh_scalar();
68 inline std::shared_ptr<DOFHandlerMultiDim>
dh_tensor();
88 std::shared_ptr<DiscreteSpace>
ds_;
91 std::shared_ptr<DOFHandlerMultiDim>
dh_;
118 static constexpr
const char *
name() {
return "Mechanics_LinearElasticity"; }
175 void zero_time_step()
override;
183 void update_solution()
override;
189 void solve_linear_system();
201 void initialize()
override;
203 void output_vector_gather();
206 { data_.potential_load = potential; }
208 void calculate_cumulative_balance();
211 {
return ls->get_solution(); }
225 void update_output_fields();
227 template<
unsigned int dim>
228 void compute_output_fields();
239 void assemble_stiffness_matrix();
244 template<
unsigned int dim>
245 void assemble_volume_integrals();
255 template<
unsigned int dim>
256 void assemble_sources();
261 template<
unsigned int dim>
262 void assemble_fluxes_boundary();
267 template<
unsigned int dim>
268 void assemble_matrix_element_side();
271 template<
unsigned int dim>
272 void assemble_rhs_element_side();
279 template<
unsigned int dim>
280 void assemble_boundary_conditions();
283 double dirichlet_penalty(
SideIter side);
347 double lame_mu(
double young,
double poisson);
BCField< 3, FieldValue< 3 >::Enum > bc_type
std::shared_ptr< DiscreteSpace > ds_
BCField< 3, FieldValue< 3 >::VectorFixed > bc_displacement
Class MappingP1 implements the affine transformation of the unit cell onto the actual cell...
Field< 3, FieldValue< 3 >::TensorFixed > output_stress
Field< 3, FieldValue< 3 >::Scalar > young_modulus
Quadrature * q_[4]
Quadratures used in assembling methods.
Abstract base class for equation clasess.
static constexpr const char * name()
Container for various descendants of FieldCommonBase.
double lame_lambda(double young, double poisson)
std::shared_ptr< FieldFE< 3, FieldValue< 3 >::Scalar > > output_von_mises_stress_ptr
FiniteElement< 3 > * fe3_
std::shared_ptr< DOFHandlerMultiDim > dh_scalar()
Field< 3, FieldValue< 3 >::Scalar > output_von_mises_stress
Field< 3, FieldValue< 3 >::Scalar > region_id
Field< 3, FieldValue< 3 >::Scalar > output_cross_section
const Vec & get_solution()
FEObjects(Mesh *mesh_, unsigned int fe_order)
Wrappers for linear systems based on MPIAIJ and MATIS format.
Class template representing a field with values dependent on: point, element, and region...
FiniteElement< dim > * fe()
LinSys * ls
Linear algebra system for the transport equation.
std::shared_ptr< FieldFE< 3, FieldValue< 3 >::TensorFixed > > output_stress_ptr
Field< 3, FieldValue< 3 >::Scalar > cross_section
Pointer to DarcyFlow field cross_section.
Basic time management functionality for unsteady (and steady) solvers (class Equation).
MappingP1< 2, 3 > * map2_
Input::Record input_rec
Record with input specification.
Field< 3, FieldValue< 3 >::Scalar > potential_load
Potential of an additional (external) load.
Vec rhs
Vector of right hand side.
Base class for quadrature rules on simplices in arbitrary dimensions.
bool allocation_done
Indicates whether matrices have been preallocated.
MappingP1< 3, 3 > * map3_
MappingP1< 1, 3 > * map1_
Auxiliary mappings of reference elements.
BCField< 3, FieldValue< 3 >::VectorFixed > bc_traction
Abstract class for the mapping between reference and actual cell.
FiniteElement< 0 > * fe0_
Finite elements for the solution of the mechanics equation.
std::shared_ptr< DOFHandlerMultiDim > dh()
Provides the numbering of the finite element degrees of freedom on the computational mesh...
Field< 3, FieldValue< 3 >::Scalar > output_divergence
FiniteElement< 1 > * fe1_
The class for outputting data during time.
Mat stiffness_matrix
The stiffness matrix.
Field< 3, FieldValue< 3 >::VectorFixed > load
Field< 3, FieldValue< 3 >::Scalar > fracture_sigma
Transition parameter for diffusive transfer on fractures.
Elasticity FactoryBaseType
double lame_mu(double young, double poisson)
Field< 3, FieldValue< 3 >::Scalar > poisson_ratio
std::shared_ptr< DOFHandlerMultiDim > dh_tensor_
EquationOutput output_fields
static const int registrar
Registrar of class to factory.
EqData data_
Field data for model parameters.
static string default_output_field()
std::shared_ptr< FieldFE< 3, FieldValue< 3 >::VectorFixed > > output_field_ptr
void set_potential_load(const Field< 3, FieldValue< 3 >::Scalar > &potential)
std::shared_ptr< DOFHandlerMultiDim > dh_
Object for distribution of dofs.
Abstract class for the description of a general finite element on a reference simplex in dim dimensio...
Base class for FEValues and FESideValues.
std::shared_ptr< FieldFE< 3, FieldValue< 3 >::Scalar > > output_div_ptr
MappingP1< dim, 3 > * mapping()
bool evaluate_time_constraint(double &)
std::shared_ptr< FieldFE< 3, FieldValue< 3 >::Scalar > > output_cross_section_ptr
FiniteElement< 2 > * fe2_
Field< 3, FieldValue< 3 >::VectorFixed > output_field
std::shared_ptr< DOFHandlerMultiDim > dh_scalar_
std::shared_ptr< DOFHandlerMultiDim > dh_tensor()
Field< 3, FieldValue< 3 >::Scalar > subdomain
std::shared_ptr< OutputTime > output_stream_
Mechanics::FEObjects * feo
Finite element objects.