From 84af7878e522c0f59d69a746f904064d250eb567 Mon Sep 17 00:00:00 2001 From: jain651 <1Amitjn@iitk> Date: Thu, 2 Dec 2021 23:08:57 -0700 Subject: [PATCH] improving coverage for concrete ASR related objects (ref #272) --- .../ConcreteExpansionEigenstrainBase.h | 2 +- src/materials/ConcreteASREigenstrain.C | 6 +- .../ConcreteExpansionEigenstrainBase.C | 25 +++-- .../ConcreteExpansionMicrocrackingDamage.C | 11 ++- .../asr_confined_kelvin.cmp | 36 +++++++ .../gold/asr_confined_strip_kelvin_out.e | Bin 0 -> 147200 bytes test/tests/concrete_ASR_swelling/tests | 29 +++++- .../concrete_anisotropic_eigenstrain.i | 8 -- .../gold/concrete_expansion_load_10_out.csv | 13 --- .../gold/concrete_expansion_load_50_out.csv | 13 +++ .../concrete_anisotropic_eigenstrain/tests | 93 ++++++++++++++---- .../concrete_expansion_microcracking.i | 1 - ...cking_excluding_confinement_effect_out.csv | 13 +++ ...crocracking_no_isotropic_expansion_out.csv | 13 +++ .../concrete_expansion_microcracking/tests | 60 ++++++++--- 15 files changed, 241 insertions(+), 82 deletions(-) create mode 100644 test/tests/concrete_ASR_swelling/asr_confined_kelvin.cmp create mode 100644 test/tests/concrete_ASR_swelling/gold/asr_confined_strip_kelvin_out.e delete mode 100644 test/tests/concrete_anisotropic_eigenstrain/gold/concrete_expansion_load_10_out.csv create mode 100644 test/tests/concrete_anisotropic_eigenstrain/gold/concrete_expansion_load_50_out.csv create mode 100644 test/tests/concrete_expansion_microcracking/gold/concrete_expansion_microcracking_excluding_confinement_effect_out.csv create mode 100644 test/tests/concrete_expansion_microcracking/gold/concrete_expansion_microcracking_no_isotropic_expansion_out.csv diff --git a/include/materials/ConcreteExpansionEigenstrainBase.h b/include/materials/ConcreteExpansionEigenstrainBase.h index 848ec46d..e069a205 100644 --- a/include/materials/ConcreteExpansionEigenstrainBase.h +++ b/include/materials/ConcreteExpansionEigenstrainBase.h @@ -112,7 +112,7 @@ class ConcreteExpansionEigenstrainBase : public ComputeEigenstrainBase * @param sig Stress * @return index */ - int findNeighborIndex(Real sig); + unsigned int findNeighborIndex(Real sig); /** * Determine the term of the A or B vector in Equation 17 of Saouma and Perotti diff --git a/src/materials/ConcreteASREigenstrain.C b/src/materials/ConcreteASREigenstrain.C index 914cbec5..01cca11b 100644 --- a/src/materials/ConcreteASREigenstrain.C +++ b/src/materials/ConcreteASREigenstrain.C @@ -266,8 +266,7 @@ ConcreteASREigenstrain::computeResidual(unsigned qp, Real scalar) else // hydrostatic compression: retarding ASR rection { f = 1.0 + _alpha * I_sigma / (3.0 * -_f_compress); - if (f < 1.0) - mooseError("Wrong retardation for ASR latency time calculation!"); + mooseAssert("f >= 1.0", "Wrong retardation for ASR latency time calculation!"); } } else @@ -301,8 +300,7 @@ ConcreteASREigenstrain::computeDerivative(unsigned qp, Real scalar) else // hydrostatic compression: retarding ASR rection { f = 1.0 + _alpha * I_sigma / (3.0 * -_f_compress); - if (f < 1.0) - mooseError("Wrong retardation for ASR latency time calculation!"); + mooseAssert("f >= 1.0", "Wrong retardation for ASR latency time calculation!"); } } else diff --git a/src/materials/ConcreteExpansionEigenstrainBase.C b/src/materials/ConcreteExpansionEigenstrainBase.C index b0ba7cc2..18de8564 100644 --- a/src/materials/ConcreteExpansionEigenstrainBase.C +++ b/src/materials/ConcreteExpansionEigenstrainBase.C @@ -51,12 +51,14 @@ ConcreteExpansionEigenstrainBase::ConcreteExpansionEigenstrainBase( if (_expansion_type == ExpansionType::Anisotropic) { if (!parameters.isParamSetByUser("compressive_strength")) - paramError("compressive_strength", "parameter is required for expansion_type = Anisotropic"); + paramError("compressive_strength", + "compressive_strength is required for expansion_type = Anisotropic"); if (!parameters.isParamSetByUser("expansion_stress_limit")) paramError("expansion_stress_limit", - "parameter is required for expansion_type = Anisotropic"); + "expansion_stress_limit is required for expansion_type = Anisotropic"); if (!parameters.isParamSetByUser("tensile_strength")) - paramError("tensile_strength", "parameter is required for expansion_type = Anisotropic"); + paramError("tensile_strength", + "tensile_strength is required for expansion_type = Anisotropic"); } // Initialize triaxial weight table @@ -165,17 +167,15 @@ ConcreteExpansionEigenstrainBase::weight(Real sig_l, Real sig_m, Real sig_k) return computeW(N1, N2, N3, N4, N5, N6, a, b, sig_l, sig_m, sig_k); } -int +unsigned int ConcreteExpansionEigenstrainBase::findNeighborIndex(Real sig) { if (sig <= -_sigma_u) return 2; else if (sig > -_sigma_u && sig <= 0) return 1; - else if (sig > 0) - return 0; else - mooseError("Invalid value for sig."); + return 0; } Real @@ -184,16 +184,13 @@ ConcreteExpansionEigenstrainBase::computeAB(const Real ab1, const Real ab3, const unsigned int pbound) { - Real ab; + mooseAssert("pbound <= 2", "pbound outside allowed range"); if (pbound == 0) - ab = ab1; + return ab1; else if (pbound == 1) - ab = ab2; - else if (pbound == 2) - ab = ab3; + return ab2; else - mooseError("Invalid value for pbound. Got ", pbound, ", expected 0, 1, or 2."); - return ab; + return ab3; } Real diff --git a/src/materials/ConcreteExpansionMicrocrackingDamage.C b/src/materials/ConcreteExpansionMicrocrackingDamage.C index 66f0fcf3..b9a1500f 100644 --- a/src/materials/ConcreteExpansionMicrocrackingDamage.C +++ b/src/materials/ConcreteExpansionMicrocrackingDamage.C @@ -165,8 +165,11 @@ ConcreteExpansionMicrocrackingDamage::computeLinearExpansion(const RankTwoTensor return std::max(0.0, strain(0, 0) * _eigenstrain_factor); // otherwise we use the principal expansion directions - strain.symmetricEigenvalues(_eigenvalues); - return std::max(std::max(0.0, _eigenvalues[0] * _eigenstrain_factor), - std::max(std::max(0.0, _eigenvalues[1] * _eigenstrain_factor), - std::max(0.0, _eigenvalues[2] * _eigenstrain_factor))); + else + { + strain.symmetricEigenvalues(_eigenvalues); + return std::max(std::max(0.0, _eigenvalues[0] * _eigenstrain_factor), + std::max(std::max(0.0, _eigenvalues[1] * _eigenstrain_factor), + std::max(0.0, _eigenvalues[2] * _eigenstrain_factor))); + } } diff --git a/test/tests/concrete_ASR_swelling/asr_confined_kelvin.cmp b/test/tests/concrete_ASR_swelling/asr_confined_kelvin.cmp new file mode 100644 index 00000000..9ee6a292 --- /dev/null +++ b/test/tests/concrete_ASR_swelling/asr_confined_kelvin.cmp @@ -0,0 +1,36 @@ +COORDINATES absolute 1.e-6 # min separation not calculated + +TIME STEPS relative 1.e-6 floor 0.0 # min: 0 @ t1 max: 500 @ t6 + + +# No GLOBAL VARIABLES + +NODAL VARIABLES relative 1.e-5 floor 1.e-10 + contact_pressure relative 1.e-4 # min: 0 @ t1,n1 max: 865610.43 @ t6,n4 + disp_x # min: 0 @ t1,n1 max: 6.5003353e-06 @ t6,n48 + disp_y # min: 0 @ t1,n1 max: 1.5779584e-06 @ t6,n1 + nodal_area_leftright # min: 0 @ t1,n2 max: 0.00061261057 @ t1,n1 + penetration # min: 0 @ t1,n1 max: 1.2681453e-11 @ t6,n4 + +ELEMENT VARIABLES relative 1.e-5 floor 1.e-10 + stress_xx # min: 0 @ t1,b1,e1 max: 858917.53 @ t6,b1,e1 + stress_yy floor 10.0 # min: 0 @ t1,b1,e1 max: 19997480 @ t2,b1,e1 + stress_zz # min: 0 @ t1,b1,e1 max: 18601279 @ t6,b2,e23 + stress_xy relative 1.e-2 floor 1.0 # min: 0 @ t1,b1,e1 max: 3462.2872 @ t6,b2,e23 + stress_yz # min: 0 @ t1,b1,e1 max: 0 @ t1,b1,e1 + stress_zx # min: 0 @ t1,b1,e1 max: 0 @ t1,b1,e1 + ASR_ex # min: 0 @ t1,b1,e1 max: 7.947504e-06 @ t6,b1,e2 + ASR_vstrain # min: 0 @ t1,b1,e1 max: 1.6310732e-08 @ t6,b1,e2 + ASR_strain_xx # min: 0 @ t1,b1,e1 max: 6.9259599e-09 @ t6,b1,e2 + ASR_strain_yy # min: 0 @ t1,b1,e1 max: 2.4583968e-09 @ t6,b1,e1 + ASR_strain_zz # min: 0 @ t1,b1,e1 max: 6.9263808e-09 @ t6,b1,e2 + ASR_strain_xy # min: 0 @ t1,b1,e1 max: 7.1325043e-13 @ t6,b1,e1 + ASR_strain_yz # min: 0 @ t1,b1,e1 max: 0 @ t1,b1,e1 + ASR_strain_zx # min: 0 @ t1,b1,e1 max: 0 @ t1,b1,e1 + total_strain_zz # min: 0 @ t1,b1,e1 max: 9.9985036e-05 @ t6,b1,e3 + total_strain_xx # min: 0 @ t1,b1,e1 max: 9.9995609e-05 @ t6,b1,e1 + total_strain_yy # min: 0 @ t1,b1,e1 max: 0.00052599114 @ t6,b1,e1 + +# No NODESET VARIABLES + +# No SIDESET VARIABLES diff --git a/test/tests/concrete_ASR_swelling/gold/asr_confined_strip_kelvin_out.e b/test/tests/concrete_ASR_swelling/gold/asr_confined_strip_kelvin_out.e new file mode 100644 index 0000000000000000000000000000000000000000..c0488fccde160cfedeb108420ddcf158bf2cf915 GIT binary patch literal 147200 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