diff --git a/MaterialLib/SolidModels/MFront/Lubby2.mfront b/MaterialLib/SolidModels/MFront/Lubby2.mfront index 6544e0a2ed9b37f94feda5bdccbbcf91533f66e5..e3f7a5d1e74d1fcb22787aeb0467f09c912ec190 100644 --- a/MaterialLib/SolidModels/MFront/Lubby2.mfront +++ b/MaterialLib/SolidModels/MFront/Lubby2.mfront @@ -18,7 +18,6 @@ rheological model @Parameter local_zero_tolerance = 1.e-14; @ModellingHypotheses{".+"}; -@RequireStiffnessTensor<UnAltered>; // Intercept of yield function @MaterialProperty real GK0; @@ -40,14 +39,21 @@ epsK.setEntryName("KelvinStrain"); @StateVariable Stensor epsM; epsM.setEntryName("MaxwellStrain"); +//! Second Lamé coefficient +@LocalVariable stress mu; + +@InitLocalVariables +{ + mu = computeMu(young, nu); +} + @Integrator { // Implicit system constexpr auto id4 = Stensor4::Id(); constexpr auto Pdev = Stensor4::K(); - const auto sigma_eff = - std::max(sigmaeq(sig), local_zero_tolerance * D(0, 0)); + const auto sigma_eff = std::max(sigmaeq(sig), local_zero_tolerance * mu); const auto s = deviator(sig); const auto k = deviator(epsK + depsK); @@ -66,8 +72,11 @@ epsM.setEntryName("MaxwellStrain"); // calculate Maxwell strain residual fepsM = depsM - dt / (2.0 * etaM) * s; + // Pdev * D + const auto Pdev_D = 2 * mu * Pdev; + // Jacobian - const auto dsigma_eff_ddeel = 3. / (2. * sigma_eff) * s | (Pdev * D); + const auto dsigma_eff_ddeel = 3. / (2. * sigma_eff) * s | (Pdev_D); const auto detaK_ddeel = etaK * mvK * dsigma_eff_ddeel; const auto detaM_ddeel = etaM * mvM * dsigma_eff_ddeel; const auto dGK_ddeel = GK * mK * dsigma_eff_ddeel; @@ -77,12 +86,12 @@ epsM.setEntryName("MaxwellStrain"); dfeel_ddepsM = id4; dfepsK_ddeel = (dt / (2.0 * etaK * etaK) * s_m_2G_eK ^ detaK_ddeel) - - (dt / (2.0 * etaK) * Pdev * D) + (dt / etaK * k ^ dGK_ddeel); + (dt / (2.0 * etaK) * Pdev_D) + (dt / etaK * k ^ dGK_ddeel); dfepsK_ddepsK = (1. + dt * GK / etaK) * id4; // dfepsK_ddepsM is all zero --> nothing to do dfepsM_ddeel = (dt / (2.0 * etaM * etaM) * s ^ detaM_ddeel) - - (dt / (2.0 * etaM) * Pdev * D); + (dt / (2.0 * etaM) * Pdev_D); // dfepsM_ddepsK is all zero --> nothing to do dfepsM_ddepsM = id4; } diff --git a/MaterialLib/SolidModels/MFront/Lubby2mod.mfront b/MaterialLib/SolidModels/MFront/Lubby2mod.mfront index 7e14479a0b3e435c33123bd3cd90a60f5394cd04..6a89e44f30e5947e9989f5c0b7d4d6dbbac239ce 100644 --- a/MaterialLib/SolidModels/MFront/Lubby2mod.mfront +++ b/MaterialLib/SolidModels/MFront/Lubby2mod.mfront @@ -2,7 +2,8 @@ @DSL Implicit; @Behaviour Lubby2mod; @Author Thomas Nagel, Thomas Helfer; -@Description {Lubby2 model for stationary +@Description +{Lubby2 model for stationary and transient creep based on Burgers rheological model. Reduced implementation. @@ -16,7 +17,6 @@ Reduced implementation. @ModellingHypotheses{".+"}; @Brick StandardElasticity; -@RequireStiffnessTensor<UnAltered>; // Intercept of yield function @MaterialProperty real GK0; @@ -40,41 +40,53 @@ epsK.setEntryName("KelvinStrain"); //! increment of the Maxwell strain @LocalVariable Stensor depsM; -@Integrator { - - const auto seq = sigmaeq(sig); - const auto iseq = 1. / std::max(seq, 1.e-14 * D(0, 0)); - const auto s = deviator(sig); - constexpr auto Pdev = Stensor4::K(); - - const auto etaK = etaK0 * std::exp(mvK * seq); - const auto etaM = etaM0 * std::exp(mvM * seq); - const auto GK = GK0 * std::exp(mK * seq); - - // calculate Kelvin strain residual - const auto etaK_impl = etaK + dt * GK * theta; - depsK = dt / (2. * etaK_impl) * (s - 2 * GK * epsK); - - // calculate Maxwell strain residual - depsM = dt / (2 * etaM) * s; - - // residuals - feel += depsM + depsK; - - // Jacobian - const auto dseq_ddeel = 3. * iseq / 2. * s | (Pdev * D); - const auto detaK_ddeel = etaK * mvK * dseq_ddeel; - const auto detaM_ddeel = etaM * mvM * dseq_ddeel; - const auto dGK_ddeel = GK * mK * dseq_ddeel; - // - dfeel_ddeel += - -(dt / (2 * etaK_impl * etaK_impl) * (s - 2 * GK * epsK) ^ detaK_ddeel) + - (dt / (2 * etaK_impl) * Pdev * D) - dt / etaK_impl * (epsK ^ dGK_ddeel) - - dt / (2 * etaK_impl * etaK_impl) * dt * theta * - ((s - 2 * GK * epsK) ^ dGK_ddeel) - - (dt / (2 * etaM * etaM) * s ^ detaM_ddeel) + (dt / (2 * etaM) * Pdev * D); +//! Second Lamé coefficient +@LocalVariable stress mu; + +@InitLocalVariables +{ + mu = computeMu(young, nu); +} + +@Integrator +{ + const auto seq = sigmaeq(sig); + const auto iseq = 1. / std::max(seq, 1.e-14 * mu); + const auto s = deviator(sig); + constexpr auto Pdev = Stensor4::K(); + + const auto etaK = etaK0 * std::exp(mvK * seq); + const auto etaM = etaM0 * std::exp(mvM * seq); + const auto GK = GK0 * std::exp(mK * seq); + + // calculate Kelvin strain residual + const auto etaK_impl = etaK + dt * GK * theta; + depsK = dt / (2. * etaK_impl) * (s - 2 * GK * epsK); + + // calculate Maxwell strain residual + depsM = dt / (2 * etaM) * s; + + // residuals + feel += depsM + depsK; + + // Jacobian + // Pdev_D + const auto Pdev_D = 2 * mu * Pdev; + const auto dseq_ddeel = 3. * iseq / 2. * s | (Pdev_D); + const auto detaK_ddeel = etaK * mvK * dseq_ddeel; + const auto detaM_ddeel = etaM * mvM * dseq_ddeel; + const auto dGK_ddeel = GK * mK * dseq_ddeel; + // + dfeel_ddeel += + -(dt / (2 * etaK_impl * etaK_impl) * (s - 2 * GK * epsK) ^ + detaK_ddeel) + + (dt / (2 * etaK_impl) * Pdev_D) - dt / etaK_impl * (epsK ^ dGK_ddeel) - + dt / (2 * etaK_impl * etaK_impl) * dt * theta * + ((s - 2 * GK * epsK) ^ dGK_ddeel) - + (dt / (2 * etaM * etaM) * s ^ detaM_ddeel) + (dt / (2 * etaM) * Pdev_D); } -@UpdateAuxiliaryStateVariables { - epsK += depsK; -} // end of @UpdateAuxiliaryStateVariables +@UpdateAuxiliaryStateVariables +{ + epsK += depsK; +} // end of @UpdateAuxiliaryStateVariables diff --git a/Tests/Data/Mechanics/Burgers/cube_1e0_mfront_mod_pcs_0_ts_101_t_1.000000.vtu b/Tests/Data/Mechanics/Burgers/cube_1e0_mfront_mod_pcs_0_ts_101_t_1.000000.vtu index e996fa3b05134d9e23ef97943799fc916e2e2be6..5d9a6c71b23f8a20bbec2a7e9fa3d5d6a653531a 100644 --- a/Tests/Data/Mechanics/Burgers/cube_1e0_mfront_mod_pcs_0_ts_101_t_1.000000.vtu +++ b/Tests/Data/Mechanics/Burgers/cube_1e0_mfront_mod_pcs_0_ts_101_t_1.000000.vtu @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9dad753d851bbe651cd165f809eb49627553be68e13e5926e2ca012aadadabd3 -size 4958 +oid sha256:16419e1d28c6c77c05ddb57aabdd588d0d044464646cd3a5bededc32704e6d6b +size 4926 diff --git a/Tests/Data/Mechanics/Burgers/cube_1e0_mfront_mod_pcs_0_ts_1_t_0.000100.vtu b/Tests/Data/Mechanics/Burgers/cube_1e0_mfront_mod_pcs_0_ts_1_t_0.000100.vtu index aa613d73b422e28e1b7653fe474e4584820f5e62..4b84bc1e60866aeead1ab1d8831f17fd47e55fc0 100644 --- a/Tests/Data/Mechanics/Burgers/cube_1e0_mfront_mod_pcs_0_ts_1_t_0.000100.vtu +++ b/Tests/Data/Mechanics/Burgers/cube_1e0_mfront_mod_pcs_0_ts_1_t_0.000100.vtu @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9b99e8ab5bcfebe29647ec52a0b198a4c0f02ef6e1d2d79ec99d82e4d7e15809 -size 4954 +oid sha256:fedb53fe407a034738a2dd0551cc7a09b04a30466b1923d22630bc25f538017c +size 4922 diff --git a/Tests/Data/Mechanics/Burgers/cube_1e0_mfront_pcs_0_ts_101_t_1.000000.vtu b/Tests/Data/Mechanics/Burgers/cube_1e0_mfront_pcs_0_ts_101_t_1.000000.vtu index bd2a2c62cd70fa22acaeccdf6e8faa0fe7058eee..afbf9005aa5db7d8e137918802fcbdc77ba08103 100644 --- a/Tests/Data/Mechanics/Burgers/cube_1e0_mfront_pcs_0_ts_101_t_1.000000.vtu +++ b/Tests/Data/Mechanics/Burgers/cube_1e0_mfront_pcs_0_ts_101_t_1.000000.vtu @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a0b94bfc571ee4a6a4eb8c2f311d4869523cf0216ba680466b6ffca899eb9f32 -size 4024 +oid sha256:5e866258789aa2f922b2e664bad826d050ed3208c730089ecc5284b708ae220c +size 5054 diff --git a/Tests/Data/Mechanics/Burgers/cube_1e0_mfront_pcs_0_ts_1_t_0.000100.vtu b/Tests/Data/Mechanics/Burgers/cube_1e0_mfront_pcs_0_ts_1_t_0.000100.vtu index b05609454ae6d6020c0d54be7ccd114dcc00bbc9..4b84bc1e60866aeead1ab1d8831f17fd47e55fc0 100644 --- a/Tests/Data/Mechanics/Burgers/cube_1e0_mfront_pcs_0_ts_1_t_0.000100.vtu +++ b/Tests/Data/Mechanics/Burgers/cube_1e0_mfront_pcs_0_ts_1_t_0.000100.vtu @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:328b76cdfdfa3abbc6cd78957b49a325a533d61963ea45184996fa91fa79b7e2 -size 3896 +oid sha256:fedb53fe407a034738a2dd0551cc7a09b04a30466b1923d22630bc25f538017c +size 4922