OGS
LargeDeformation/ConstitutiveRelations/SolidMechanics.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include "Base.h"
9#include "MaterialState.h"
12
14{
16{
17template <int DisplacementDim>
19{
21 KV::KMnan<DisplacementDim>();
22 KelvinVector<DisplacementDim> J_uT_BT_K_N = KV::KVnan<DisplacementDim>();
23 KelvinVector<DisplacementDim> J_up_BT_K_N = KV::KVnan<DisplacementDim>();
24};
25
26namespace MSM = MaterialLib::Solids::MFront;
27
28template <int DisplacementDim>
30 MSM::MFrontGeneric<DisplacementDim,
31 boost::mp11::mp_list<MSM::DeformationGradient>,
32 boost::mp11::mp_list<MSM::SecondPiolaKirchhoffStress>,
33 boost::mp11::mp_list<MSM::Temperature>>;
34
35template <int DisplacementDim>
37{
40 : solid_material_(solid_material),
42 solid_material.template createTangentOperatorBlocksView<
43 typename MSM::ForcesGradsCombinations<
44 boost::mp11::mp_list<MSM::GreenLagrangeStrain>,
45 boost::mp11::mp_list<MSM::SecondPiolaKirchhoffStress>,
46 boost::mp11::mp_list<MSM::Temperature>>::type>()}
47 {
48 }
49
50 void eval(
51 SpaceTimeData const& x_t,
52 Temperature const& temperature,
54 deformation_gradient_data,
56 deformation_gradient_data_prev,
58 PrevState<StressData<DisplacementDim>> const& stress_data_prev,
59 StressData<DisplacementDim>& stress_data,
60 SolidMechanicsDataStateless<DisplacementDim>& current_stateless) const;
61
63 {
64 return solid_material_.getInternalVariables();
65 }
66
69 {
70 return SolidMechanicsModel{solid_material};
71 }
72
73private:
75
76 MSM::OGSMFrontTangentOperatorBlocksView<
77 DisplacementDim,
78 MSM::ForcesGradsCombinations<
79 boost::mp11::mp_list<MSM::GreenLagrangeStrain>,
80 boost::mp11::mp_list<MSM::SecondPiolaKirchhoffStress>,
81 boost::mp11::mp_list<MSM::Temperature>>::type>
83};
84
85extern template struct SolidMechanicsModel<2>;
86extern template struct SolidMechanicsModel<3>;
87} // namespace ConstitutiveRelations
88} // namespace ProcessLib::LargeDeformation
KV::KelvinMatrixType< DisplacementDim > KelvinMatrix
BaseLib::StrongType< double, struct TemperatureTag > Temperature
KV::KelvinVectorType< DisplacementDim > KelvinVector
MSM::MFrontGeneric< DisplacementDim, boost::mp11::mp_list< MSM::DeformationGradient >, boost::mp11::mp_list< MSM::SecondPiolaKirchhoffStress >, boost::mp11::mp_list< MSM::Temperature > > SolidConstitutiveRelation
MSM::OGSMFrontTangentOperatorBlocksView< DisplacementDim, MSM::ForcesGradsCombinations< boost::mp11::mp_list< MSM::GreenLagrangeStrain >, boost::mp11::mp_list< MSM::SecondPiolaKirchhoffStress >, boost::mp11::mp_list< MSM::Temperature > >::type > tangent_operator_blocks_view_
static SolidMechanicsModel create(SolidConstitutiveRelation< DisplacementDim > const &solid_material)
void eval(SpaceTimeData const &x_t, Temperature const &temperature, DeformationGradientData< DisplacementDim > const &deformation_gradient_data, PrevState< DeformationGradientData< DisplacementDim > > const &deformation_gradient_data_prev, MaterialStateData< DisplacementDim > &mat_state, PrevState< StressData< DisplacementDim > > const &stress_data_prev, StressData< DisplacementDim > &stress_data, SolidMechanicsDataStateless< DisplacementDim > &current_stateless) const