From 35b2dce6d270a2ea79471ee0f1d07d40955bd089 Mon Sep 17 00:00:00 2001 From: Thomas Helfer Date: Fri, 1 Apr 2022 22:40:30 +0200 Subject: [PATCH] Work on Issue #2 --- generic-behaviours/CMakeLists.txt | 1 + generic-behaviours/elasticity/CMakeLists.txt | 15 ++++ .../WoodOrthotropicElasticity_2022.mfront | 73 +++++++++++++++++++ ...WoodOrthotropicElasticity_2022_test1.mtest | 46 ++++++++++++ materials/Wood/behaviours/CMakeLists.txt | 5 -- 5 files changed, 135 insertions(+), 5 deletions(-) create mode 100644 generic-behaviours/elasticity/CMakeLists.txt create mode 100644 generic-behaviours/elasticity/WoodOrthotropicElasticity_2022.mfront create mode 100644 generic-behaviours/elasticity/WoodOrthotropicElasticity_2022_test1.mtest diff --git a/generic-behaviours/CMakeLists.txt b/generic-behaviours/CMakeLists.txt index b8beeb1..66eb5d5 100644 --- a/generic-behaviours/CMakeLists.txt +++ b/generic-behaviours/CMakeLists.txt @@ -1,3 +1,4 @@ +add_subdirectory(elasticity) add_subdirectory(heattransfer) add_subdirectory(damage) add_subdirectory(hyperelasticity) diff --git a/generic-behaviours/elasticity/CMakeLists.txt b/generic-behaviours/elasticity/CMakeLists.txt new file mode 100644 index 0000000..b14c87e --- /dev/null +++ b/generic-behaviours/elasticity/CMakeLists.txt @@ -0,0 +1,15 @@ +mfront_behaviours_library(Elasticity + WoodOrthotropicElasticity_2022 + SEARCH_PATH generic-behaviours/viscoelasticity) + +foreach(tn test1) + genericmtest(Elasticity + WoodOrthotropicElasticity_2022_test1 + BEHAVIOUR WoodOrthotropicElasticity_2022) + astermtest(Elasticity + WoodOrthotropicElasticity_2022_test1 + BEHAVIOUR asterwoodorthotropicelasticity_2022) + castemmtest(Elasticity + WoodOrthotropicElasticity_2022_test1 + BEHAVIOUR umatwoodorthotropicelasticity_2022) +endforeach() \ No newline at end of file diff --git a/generic-behaviours/elasticity/WoodOrthotropicElasticity_2022.mfront b/generic-behaviours/elasticity/WoodOrthotropicElasticity_2022.mfront new file mode 100644 index 0000000..886f742 --- /dev/null +++ b/generic-behaviours/elasticity/WoodOrthotropicElasticity_2022.mfront @@ -0,0 +1,73 @@ +@DSL DefaultDSL; +@Behaviour OrthotropicElasticity_2022; +@Material Wood; +@Author Riparbelli Lorenzo and Helfer Thomas; +@Date 01/03/22; +@Description{ + "This generic behaviour is suitable to describe the " + "elastic behaviour of a wood plate with growth rings " + "that have conical shape in the vertical direction of " + "the tree and which is also subjected to a swelling " + "proportional to the moisture content." + "" + "Most solvers allows to define the orthotropic axes " + "in a cylindrical frame but the definition of those " + "axes to describe a plane making angle with respect to " + "the pith of the tree is much more difficult, so this " + "implementation handles the rotation from the cylindrical " + "frame to the material frame." +} + +@ModellingHypotheses {Tridimensional}; +@OrthotropicBehaviour; +@RequireStiffnessOperator; + +@MaterialProperty real phi; +phi.setEntryName("MaterialAngleWithRespectToThePith"); + +@MaterialProperty real ar; +ar.setEntryName("RadialSwellingCoefficient"); +@MaterialProperty real al; +al.setEntryName("LongitudinalSwellingCoefficient"); +@MaterialProperty real at; +at.setEntryName("TangentialSwellingCoefficient"); + +@ExternalStateVariable real w; +w.setEntryName("MoistureContent"); + +//! stiffness tensor in the global frame +@LocalVariable StiffnessTensor hh; +//! rotation matrix +@LocalVariable tmatrix<3, 3, real> r; + +@InitLocalVariables { + constexpr auto zero = real{0}; + const auto c = cos(-phi); + const auto s = sin(-phi); + r = tmatrix<3, 3, real>{{c, zero, -s, // + zero, real{1}, zero, // + s, zero, c}}; + hh = change_basis(D, r); +} + +@PredictionOperator { + static_cast(smt); + Dt = hh; +} + +@Integrator{ + constexpr auto zero = real{0}; + // swelling in the material frame at the end of the time step + const auto el = (w + dw) * Stensor{ar, al, at, zero, zero, zero}; + // swelling in the global frame + const auto eg = change_basis(el, r); + // mechanical strain at the end of the time step + const auto em = eto + deto - eg; + // final stress + sig = hh * em; +} + +@TangentOperator { + static_cast(smt); + Dt = hh; +} \ No newline at end of file diff --git a/generic-behaviours/elasticity/WoodOrthotropicElasticity_2022_test1.mtest b/generic-behaviours/elasticity/WoodOrthotropicElasticity_2022_test1.mtest new file mode 100644 index 0000000..bf6d7fe --- /dev/null +++ b/generic-behaviours/elasticity/WoodOrthotropicElasticity_2022_test1.mtest @@ -0,0 +1,46 @@ +@Author Thomas Helfer; +@Date 01/04/2022; + +@ModellingHypothesis 'Tridimensional'; +@Behaviour<@interface@> @library@ @behaviour@; + +// material properties +@MaterialProperty 'YoungModulus1' 635.; +@MaterialProperty 'YoungModulus2' 10285; +@MaterialProperty 'YoungModulus3' 369; +@MaterialProperty 'PoissonRatio12' 0.029; +@MaterialProperty 'PoissonRatio23' 0.42; +@MaterialProperty 'PoissonRatio13' 0.165; +@MaterialProperty 'ShearModulus12' 786.; +@MaterialProperty 'ShearModulus23' 838.; +@MaterialProperty 'ShearModulus13' 114.; +@MaterialProperty 'RadialSwellingCoefficient' 0.00064; +@MaterialProperty 'LongitudinalSwellingCoefficient' 0.00013; +@MaterialProperty 'TangentialSwellingCoefficient' 0.00115; +@MaterialProperty 'MaterialAngleWithRespectToThePith' 0; + +// external state variable +@ExternalStateVariable 'Temperature' 293.15 ; +@ExternalStateVariable 'MoistureContent' {0 : 0, 1 : 1}; + +@ImposedStress 'SXX' {0 : 0, 1 : 1}; + +@Times{0, 1}; + +@Real 'EXX_ref' '2.21480e-03'; +@Real 'EYY_ref' '8.43307e-05'; +@Real 'EZZ_ref' '8.90157e-04'; +@Test{ + 'EXX' : 'EXX_ref * t', + 'EYY' : 'EYY_ref * t', + 'EZZ' : 'EZZ_ref * t', + 'EXY' : '0', + 'EXZ' : '0', + 'EYZ' : '0' +} 1e-8; + +@Test 'SXX' '1 * t' 1.e-8; +@Test { + 'SYY' : '0', 'SZZ' : '0', 'SXY' : '0', 'SXZ' : '0', 'SYZ' : '0' +} +1e-8; \ No newline at end of file diff --git a/materials/Wood/behaviours/CMakeLists.txt b/materials/Wood/behaviours/CMakeLists.txt index fce991d..7616dd8 100644 --- a/materials/Wood/behaviours/CMakeLists.txt +++ b/materials/Wood/behaviours/CMakeLists.txt @@ -1,8 +1,3 @@ mfront_behaviours_library(Wood PoplarOrthotropicGeneralizedMaxwell_2021 SEARCH_PATH generic-behaviours/viscoelasticity) - -#genericmtest(Wood -# PoplarOrthotropicGeneralizedMaxwell_2021-RadialTest -# BEHAVIOUR PoplarOrthotropicGeneralizedMaxwell_2021 -# REFERENCE_FILE ${CMAKE_SOURCE_DIR}/generic_behaviours/viscoelasticity/references/OrthotropicGeneralizedMaxwellRadialTest.ref)