From 31ef929477d69625d95eea001adcfc8b8ce069e7 Mon Sep 17 00:00:00 2001 From: Antoine Jacquey Date: Sun, 10 Mar 2019 17:09:30 +0100 Subject: [PATCH] Fixed poromechanics. --- include/materials/LynxHydroBase.h | 4 ++-- src/kernels/LynxSolidMomentum.C | 2 +- src/materials/LynxDeformationBase.C | 5 ++++- src/materials/LynxHydroBase.C | 6 +++--- src/materials/LynxHydroConstant.C | 2 +- test/tests/hydro_mech/mandel.i | 10 +++++----- test/tests/hydro_mech/tests | 14 +++++++------- 7 files changed, 23 insertions(+), 20 deletions(-) diff --git a/include/materials/LynxHydroBase.h b/include/materials/LynxHydroBase.h index e9e5f14..ffed084 100644 --- a/include/materials/LynxHydroBase.h +++ b/include/materials/LynxHydroBase.h @@ -49,8 +49,8 @@ protected: const MaterialProperty & _K; const MaterialProperty & _tangent_modulus; const MaterialProperty & _strain_increment; - const MaterialProperty & _inelastic_strain; - const MaterialProperty & _inelastic_strain_old; + const MaterialProperty & _viscous_strain_incr; + const MaterialProperty & _plastic_strain_incr; MaterialProperty & _biot; MaterialProperty & _C_d; MaterialProperty & _C_biot; diff --git a/src/kernels/LynxSolidMomentum.C b/src/kernels/LynxSolidMomentum.C index 4c7a3f9..20c6310 100644 --- a/src/kernels/LynxSolidMomentum.C +++ b/src/kernels/LynxSolidMomentum.C @@ -120,7 +120,7 @@ Real LynxSolidMomentum::computeQpResidual() { RealVectorValue stress_row = _stress[_qp].row(_component); - stress_row(_component) += _biot[_qp] * _pf[_qp]; + stress_row(_component) -= _biot[_qp] * _pf[_qp]; RealVectorValue grav_term = -_rho_b[_qp] * _gravity[_qp]; Real residual = stress_row * _grad_test[_i][_qp] + grav_term(_component) * _test[_i][_qp]; diff --git a/src/materials/LynxDeformationBase.C b/src/materials/LynxDeformationBase.C index 619d4de..5472948 100644 --- a/src/materials/LynxDeformationBase.C +++ b/src/materials/LynxDeformationBase.C @@ -271,6 +271,9 @@ LynxDeformationBase::computeStrainIncrement() mooseError("Unknown strain model. Specify 'small' or 'finite'!"); } + // Thermal strain correction + _strain_increment[_qp] -= _thermal_strain_incr[_qp]; + if (_vol_locking_correction) vol_strain_incr += _strain_increment[_qp].trace() * _JxW[_qp] * _coord[_qp]; } @@ -351,7 +354,7 @@ LynxDeformationBase::initializeQpDeformation() { // Initialze elastic strain _elastic_strain[_qp] = - spinRotation(_elastic_strain_old[_qp]) + _strain_increment[_qp] - _thermal_strain_incr[_qp]; + spinRotation(_elastic_strain_old[_qp]) + _strain_increment[_qp]; // Initialize inelastic increment _viscous_strain_incr[_qp].zero(); diff --git a/src/materials/LynxHydroBase.C b/src/materials/LynxHydroBase.C index a733424..662b617 100644 --- a/src/materials/LynxHydroBase.C +++ b/src/materials/LynxHydroBase.C @@ -36,8 +36,8 @@ LynxHydroBase::LynxHydroBase(const InputParameters & parameters) _K(getDefaultMaterialProperty("bulk_modulus")), _tangent_modulus(getDefaultMaterialProperty("tangent_modulus")), _strain_increment(getDefaultMaterialProperty("strain_increment")), - _inelastic_strain(getDefaultMaterialProperty("inelastic_strain")), - _inelastic_strain_old(getMaterialPropertyOld("inelastic_strain")), + _viscous_strain_incr(getDefaultMaterialProperty("viscous_strain_increment")), + _plastic_strain_incr(getDefaultMaterialProperty("plastic_strain_increment")), _biot(declareProperty("biot_coefficient")), _C_d(declareProperty("bulk_compressibility")), _C_biot(declareProperty("biot_compressibility")), @@ -97,7 +97,7 @@ LynxHydroBase::computeQpPoroMech() { Real K_cto = _tangent_modulus[_qp].sum3x3() / 9.0; RankTwoTensor e_tot = _strain_increment[_qp] / _dt; - RankTwoTensor e_in = (_inelastic_strain[_qp] - _inelastic_strain_old[_qp]) / _dt; + RankTwoTensor e_in = (_viscous_strain_incr[_qp] + _plastic_strain_incr[_qp]) / _dt; _poro_mech[_qp] = _biot[_qp] * e_tot.trace() + (1.0 - _biot[_qp]) * e_in.trace(); _poro_mech_jac[_qp] = _biot[_qp] + (1.0 - _biot[_qp]) * (1.0 - K_cto / _K[_qp]); diff --git a/src/materials/LynxHydroConstant.C b/src/materials/LynxHydroConstant.C index 61dabd6..cb0d4ca 100644 --- a/src/materials/LynxHydroConstant.C +++ b/src/materials/LynxHydroConstant.C @@ -27,7 +27,7 @@ InputParameters validParams() { InputParameters params = validParams(); - params.addClassDescription("Constant thermal properties."); + params.addClassDescription("Constant hydraulic properties."); params.addRequiredParam>("permeability", "The permeability of the matrix."); params.addRequiredParam>("fluid_viscosity", "The viscosity of the fluid."); params.addParam>("fluid_modulus", "The bulk modulus of the fluid phase."); diff --git a/test/tests/hydro_mech/mandel.i b/test/tests/hydro_mech/mandel.i index e749b78..c5904a6 100644 --- a/test/tests/hydro_mech/mandel.i +++ b/test/tests/hydro_mech/mandel.i @@ -42,21 +42,21 @@ variable = disp_x component = 0 displacements = 'disp_x disp_y disp_z' - fluid_pressure = pf + fluid_pressure = 'pf' [../] [./mech_y] type = LynxSolidMomentum variable = disp_y component = 1 displacements = 'disp_x disp_y disp_z' - fluid_pressure = pf + fluid_pressure = 'pf' [../] [./mech_z] type = LynxSolidMomentum variable = disp_z component = 2 displacements = 'disp_x disp_y disp_z' - fluid_pressure = pf + fluid_pressure = 'pf' [../] [] @@ -147,7 +147,7 @@ [../] [./hydro_mat] type = LynxHydroConstant - porosity = porosity + porosity = 'porosity' fluid_modulus = 8 solid_modulus = 2.5 permeability = 1.5e-03 @@ -276,4 +276,4 @@ interval = 3 type = CSV [../] -[] \ No newline at end of file +[] diff --git a/test/tests/hydro_mech/tests b/test/tests/hydro_mech/tests index c2b88b1..8eda21f 100644 --- a/test/tests/hydro_mech/tests +++ b/test/tests/hydro_mech/tests @@ -1,7 +1,7 @@ -#[Tests] -# [./mandel] -# type = 'Exodiff' -# input = 'mandel.i' -# exodiff = 'mandel_out.e' -# [../] -#[] \ No newline at end of file +[Tests] + [./mandel] + type = 'Exodiff' + input = 'mandel.i' + exodiff = 'mandel_out.e' + [../] +[] -- GitLab