diff --git a/Tests/MaterialLib/TestFractureModels.cpp b/Tests/MaterialLib/TestFractureModels.cpp index 38690268c5c52b1d8d2cb94df04cab3403db19ed..5ea79594ffba48dddac9612a419e6f79523eb184 100644 --- a/Tests/MaterialLib/TestFractureModels.cpp +++ b/Tests/MaterialLib/TestFractureModels.cpp @@ -24,6 +24,9 @@ using namespace MaterialLib::Fracture; static const double eps_sigma = 1e6*1e-5; static const double eps_C = 1e10*1e-5; +static NumLib::NewtonRaphsonSolverParameters const nonlinear_solver_parameters{ + 1000, 1e-16}; + TEST(MaterialLib_Fracture, LinearElasticIsotropic) { ParameterLib::ConstantParameter<double> const kn("", 1e11); @@ -37,6 +40,7 @@ TEST(MaterialLib_Fracture, LinearElasticIsotropic) tension_cutoff, mp}; std::unique_ptr<FractureModelBase<2>::MaterialStateVariables> state( fractureModel.createMaterialStateVariables()); + state->pushBackState(); Eigen::Vector2d const w_prev = Eigen::Vector2d::Zero(); Eigen::Vector2d const sigma0 = Eigen::Vector2d::Zero(); @@ -84,10 +88,12 @@ TEST(MaterialLib_Fracture, MohrCoulomb2D_elastic) double const aperture0 = 1; double const penalty_aperture_cutoff = aperture0; bool const tension_cutoff = true; - MohrCoulomb::MohrCoulomb<2> fractureModel{penalty_aperture_cutoff, + MohrCoulomb::MohrCoulomb<2> fractureModel{nonlinear_solver_parameters, + penalty_aperture_cutoff, tension_cutoff, mp}; std::unique_ptr<FractureModelBase<2>::MaterialStateVariables> state( fractureModel.createMaterialStateVariables()); + state->pushBackState(); Eigen::Vector2d const w_prev = Eigen::Vector2d::Zero(); Eigen::Vector2d const sigma0 = Eigen::Vector2d::Zero(); @@ -134,10 +140,12 @@ TEST(MaterialLib_Fracture, MohrCoulomb2D_negative_t) double const aperture0 = 1e-5; double const penalty_aperture_cutoff = aperture0; bool const tension_cutoff = true; - MohrCoulomb::MohrCoulomb<2> fractureModel{penalty_aperture_cutoff, + MohrCoulomb::MohrCoulomb<2> fractureModel{nonlinear_solver_parameters, + penalty_aperture_cutoff, tension_cutoff, mp}; std::unique_ptr<FractureModelBase<2>::MaterialStateVariables> state( fractureModel.createMaterialStateVariables()); + state->pushBackState(); Eigen::Vector2d const w_prev = Eigen::Vector2d::Zero(); Eigen::Vector2d const sigma0(-3.46e6, -2e6); @@ -175,10 +183,12 @@ TEST(MaterialLib_Fracture, MohrCoulomb2D_positive_t) double const aperture0 = 1e-5; double const penalty_aperture_cutoff = aperture0; bool const tension_cutoff = true; - MohrCoulomb::MohrCoulomb<2> fractureModel{penalty_aperture_cutoff, + MohrCoulomb::MohrCoulomb<2> fractureModel{nonlinear_solver_parameters, + penalty_aperture_cutoff, tension_cutoff, mp}; std::unique_ptr<FractureModelBase<2>::MaterialStateVariables> state( fractureModel.createMaterialStateVariables()); + state->pushBackState(); Eigen::Vector2d const w_prev = Eigen::Vector2d::Zero(); Eigen::Vector2d const sigma0(0, -2e6); @@ -215,10 +225,12 @@ TEST(MaterialLib_Fracture, MohrCoulomb3D_negative_t1) double const aperture0 = 1e-5; double const penalty_aperture_cutoff = aperture0; bool const tension_cutoff = true; - MohrCoulomb::MohrCoulomb<3> fractureModel{penalty_aperture_cutoff, + MohrCoulomb::MohrCoulomb<3> fractureModel{nonlinear_solver_parameters, + penalty_aperture_cutoff, tension_cutoff, mp}; std::unique_ptr<FractureModelBase<3>::MaterialStateVariables> state( fractureModel.createMaterialStateVariables()); + state->pushBackState(); Eigen::Vector3d const w_prev = Eigen::Vector3d::Zero(); Eigen::Vector3d const sigma0(-3.46e6, 0, -2e6); @@ -261,10 +273,12 @@ TEST(MaterialLib_Fracture, MohrCoulomb3D_positive_t1) double const aperture0 = 1e-5; double const penalty_aperture_cutoff = aperture0; bool const tension_cutoff = true; - MohrCoulomb::MohrCoulomb<3> fractureModel{penalty_aperture_cutoff, + MohrCoulomb::MohrCoulomb<3> fractureModel{nonlinear_solver_parameters, + penalty_aperture_cutoff, tension_cutoff, mp}; std::unique_ptr<FractureModelBase<3>::MaterialStateVariables> state( fractureModel.createMaterialStateVariables()); + state->pushBackState(); Eigen::Vector3d const w_prev = Eigen::Vector3d::Zero(); Eigen::Vector3d const sigma0(0, 0, -2e6); @@ -308,10 +322,12 @@ TEST(MaterialLib_Fracture, MohrCoulomb3D_positive_t2) double const aperture0 = 1e-5; double const penalty_aperture_cutoff = aperture0; bool const tension_cutoff = true; - MohrCoulomb::MohrCoulomb<3> fractureModel{penalty_aperture_cutoff, + MohrCoulomb::MohrCoulomb<3> fractureModel{nonlinear_solver_parameters, + penalty_aperture_cutoff, tension_cutoff, mp}; std::unique_ptr<FractureModelBase<3>::MaterialStateVariables> state( fractureModel.createMaterialStateVariables()); + state->pushBackState(); Eigen::Vector3d const w_prev = Eigen::Vector3d::Zero(); Eigen::Vector3d const sigma0(0, 0, -2e6); @@ -355,10 +371,11 @@ TEST(MaterialLib_Fracture, MohrCoulomb3D_negative_t1t2) double const aperture0 = 1e-5; double const penalty_aperture_cutoff = aperture0; bool const tension_cutoff = true; - MohrCoulomb::MohrCoulomb<3> fractureModel{penalty_aperture_cutoff, - tension_cutoff, mp}; + MohrCoulomb::MohrCoulomb<3> fractureModel{ + {1000, 1e-9}, penalty_aperture_cutoff, tension_cutoff, mp}; std::unique_ptr<FractureModelBase<3>::MaterialStateVariables> state( fractureModel.createMaterialStateVariables()); + state->pushBackState(); Eigen::Vector3d const w_prev = Eigen::Vector3d::Zero(); Eigen::Vector3d const sigma0(-3.46e6 / std::sqrt(2), -3.46e6 / std::sqrt(2), @@ -403,10 +420,12 @@ TEST(MaterialLib_Fracture, MohrCoulomb3D_negative_t1_positive_t2) double const aperture0 = 1e-5; double const penalty_aperture_cutoff = aperture0; bool const tension_cutoff = true; - MohrCoulomb::MohrCoulomb<3> fractureModel{penalty_aperture_cutoff, - tension_cutoff, mp}; + + MohrCoulomb::MohrCoulomb<3> fractureModel{ + {1000, 1e-9}, penalty_aperture_cutoff, tension_cutoff, mp}; std::unique_ptr<FractureModelBase<3>::MaterialStateVariables> state( fractureModel.createMaterialStateVariables()); + state->pushBackState(); Eigen::Vector3d const w_prev = Eigen::Vector3d::Zero(); Eigen::Vector3d const sigma0(-3.46e6 / std::sqrt(2), 3.46e6 / std::sqrt(2),