62template <
int DisplacementDim>
 
   81        double const GM0_s_eff = 
GM0 * s_eff;
 
   82        GK = 
GK0 * std::exp(
mK * GM0_s_eff);
 
 
   97    double GK = std::numeric_limits<double>::quiet_NaN();
 
   98    double etaK = std::numeric_limits<double>::quiet_NaN();
 
   99    double etaM = std::numeric_limits<double>::quiet_NaN();
 
 
 
  103template <
int DisplacementDim>
 
  108        : 
public MechanicsBase<DisplacementDim>::MaterialStateVariables
 
 
  153        return std::unique_ptr<
 
 
  180          _mp(material_properties)
 
 
  191            material_state_variables)
 const override 
  194                   &material_state_variables) != 
nullptr);
 
  196            material_state_variables));
 
  198        auto const& eps_K = state.
eps_K_j;
 
  199        auto const& eps_K_prev = state.
eps_K_t;
 
  201        auto const& eps_M = state.
eps_M_j;
 
  203        auto local_lubby2_properties =
 
  208        auto const& P_dev = Invariants::deviatoric_projection;
 
  215        double sig_eff = Invariants::equivalentStress(sigd_j);
 
  216        local_lubby2_properties.update(sig_eff);
 
  218        auto const& eta_K = local_lubby2_properties.etaK;
 
  222        return (eps - eps_K - eps_M).dot(sigma) / 2 +
 
  223               eps_K.dot(sigma - eta_K * (eps_K - eps_K_prev) / dt) / 2;
 
 
  235                                 DisplacementDim>::MaterialStateVariables>,
 
  242            material_state_variables) 
const override;
 
 
std::optional< std::tuple< KelvinVector, std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables >, KelvinMatrix > > integrateStress(MaterialPropertyLib::VariableArray const &variable_array_prev, MaterialPropertyLib::VariableArray const &variable_array, double const t, ParameterLib::SpatialPosition const &x, double const dt, typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &material_state_variables) const override
 
NumLib::NewtonRaphsonSolverParameters const _nonlinear_solver_parameters
 
double computeFreeEnergyDensity(double const t, ParameterLib::SpatialPosition const &x, double const dt, KelvinVector const &eps, KelvinVector const &sigma, typename MechanicsBase< DisplacementDim >::MaterialStateVariables const &material_state_variables) const override
 
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > KelvinMatrix
 
Lubby2(NumLib::NewtonRaphsonSolverParameters nonlinear_solver_parameters, Lubby2MaterialProperties &material_properties)
 
Eigen::Matrix< double, JacobianResidualSize, 1 > ResidualVector
 
Lubby2MaterialProperties _mp
 
Eigen::Matrix< double, JacobianResidualSize, JacobianResidualSize, Eigen::RowMajor > JacobianMatrix
 
double getBulkModulus(double const t, ParameterLib::SpatialPosition const &x, KelvinMatrix const *const) const override
 
static int const JacobianResidualSize
 
static int const KelvinVectorSize
 
std::unique_ptr< typename MechanicsBase< DisplacementDim >::MaterialStateVariables > createMaterialStateVariables() const override
 
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > KelvinVector
 
void calculateJacobianBurgers(double const t, ParameterLib::SpatialPosition const &x, double const dt, JacobianMatrix &Jac, double s_eff, const KelvinVector &sig_i, const KelvinVector &eps_K_i, detail::LocalLubby2Properties< DisplacementDim > const &properties) const
Calculates the 18x18 Jacobian.
 
void calculateResidualBurgers(double const dt, const KelvinVector &strain_curr, const KelvinVector &strain_t, const KelvinVector &stress_curr, const KelvinVector &stress_t, const KelvinVector &strain_Kel_curr, const KelvinVector &strain_Kel_t, const KelvinVector &strain_Max_curr, const KelvinVector &strain_Max_t, ResidualVector &res, detail::LocalLubby2Properties< DisplacementDim > const &properties) const
Calculates the 18x1 residual vector.
 
constexpr int kelvin_vector_dimensions(int const displacement_dim)
Kelvin vector dimensions for given displacement dimension.
 
Eigen::Matrix< double, kelvin_vector_dimensions(DisplacementDim), 1, Eigen::ColMajor > KelvinVectorType
 
Eigen::Matrix< double, kelvin_vector_dimensions(DisplacementDim), kelvin_vector_dimensions(DisplacementDim), Eigen::RowMajor > KelvinMatrixType
 
Lubby2MaterialProperties(P const &GK0_, P const &GM0_, P const &KM0_, P const &etaK0_, P const &etaM0_, P const &mK_, P const &mvK_, P const &mvM_)
 
MathLib::KelvinVector::KelvinVectorType< DisplacementDim > KelvinVector
 
void setInitialConditions()
 
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
 
MathLib::KelvinVector::KelvinMatrixType< DisplacementDim > KelvinMatrix
 
void pushBackState() override
 
LocalLubby2Properties(double const t, ParameterLib::SpatialPosition const &x, Lubby2MaterialProperties const &mp)
 
void update(double const s_eff)