Skip to content
Snippets Groups Projects
Commit e4bd3f1f authored by Dmitri Naumov's avatar Dmitri Naumov
Browse files

[MatL] Ehlers; Move definitions into cpp.

When the SolidEhlers ctor is not used it was not generated in the library.
parent ebc21638
No related branches found
No related tags found
No related merge requests found
......@@ -468,6 +468,40 @@ splitSolutionVector(ResidualVector const& solution)
solution[size * 2 + 2]);
}
template <int DisplacementDim>
SolidEhlers<DisplacementDim>::SolidEhlers(
NumLib::NewtonRaphsonSolverParameters nonlinear_solver_parameters,
MaterialPropertiesParameters material_properties,
std::unique_ptr<DamagePropertiesParameters>&& damage_properties,
TangentType tangent_type)
: _nonlinear_solver_parameters(std::move(nonlinear_solver_parameters)),
_mp(std::move(material_properties)),
_damage_properties(std::move(damage_properties)),
_tangent_type(tangent_type)
{
}
template <int DisplacementDim>
double SolidEhlers<DisplacementDim>::computeFreeEnergyDensity(
double const /*t*/,
ProcessLib::SpatialPosition const& /*x*/,
double const /*dt*/,
KelvinVector const& eps,
KelvinVector const& sigma,
typename MechanicsBase<DisplacementDim>::MaterialStateVariables const&
material_state_variables) const
{
assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
&material_state_variables) != nullptr);
auto const& eps_p = static_cast<StateVariables<DisplacementDim> const&>(
material_state_variables)
.eps_p;
using Invariants = MathLib::KelvinVector::Invariants<KelvinVectorSize>;
auto const& identity2 = Invariants::identity2;
return (eps - eps_p.D - eps_p.V / 3 * identity2).dot(sigma) / 2;
}
template <int DisplacementDim>
boost::optional<std::tuple<typename SolidEhlers<DisplacementDim>::KelvinVector,
std::unique_ptr<typename MechanicsBase<
......
......@@ -297,17 +297,11 @@ public:
MathLib::KelvinVector::KelvinMatrixType<DisplacementDim>;
public:
explicit SolidEhlers(
SolidEhlers(
NumLib::NewtonRaphsonSolverParameters nonlinear_solver_parameters,
MaterialPropertiesParameters material_properties,
std::unique_ptr<DamagePropertiesParameters>&& damage_properties,
TangentType tangent_type)
: _nonlinear_solver_parameters(std::move(nonlinear_solver_parameters)),
_mp(std::move(material_properties)),
_damage_properties(std::move(damage_properties)),
_tangent_type(tangent_type)
{
}
TangentType tangent_type);
double computeFreeEnergyDensity(
double const /*t*/,
......@@ -316,18 +310,7 @@ public:
KelvinVector const& eps,
KelvinVector const& sigma,
typename MechanicsBase<DisplacementDim>::MaterialStateVariables const&
material_state_variables) const override
{
assert(dynamic_cast<StateVariables<DisplacementDim> const*>(
&material_state_variables) != nullptr);
auto const& eps_p = static_cast<StateVariables<DisplacementDim> const&>(
material_state_variables)
.eps_p;
using Invariants = MathLib::KelvinVector::Invariants<KelvinVectorSize>;
auto const& identity2 = Invariants::identity2;
return (eps - eps_p.D - eps_p.V / 3 * identity2).dot(sigma) / 2;
}
material_state_variables) const override;
boost::optional<std::tuple<KelvinVector,
std::unique_ptr<typename MechanicsBase<
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment