Skip to content

Commit 5bc7b97

Browse files
authored
Merge pull request #25 from ajacquey/devel-salt
Implement simplified RTL2020 model for rock salt
2 parents f4e8dec + 0038f80 commit 5bc7b97

13 files changed

+641
-93
lines changed

.vscode/c_cpp_properties.json

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"${workspaceFolder}/moose/modules/fluid_properties/build/header_symlinks",
1111
"${workspaceFolder}/moose/framework/contrib/boost/include",
1212
"${workspaceFolder}/moose/framework/contrib/hit/include",
13+
"${HOME}/miniforge/envs/moose/x86_64-conda-linux-gnu/include/c++/12.3.0",
1314
"${HOME}/miniforge/envs/moose/include",
1415
"${HOME}/miniforge/envs/moose/libmesh/include",
1516
"${HOME}/miniforge/envs/moose/petsc/include",

include/materials/BVBurgerModelUpdate.h

+24-15
Original file line numberDiff line numberDiff line change
@@ -13,30 +13,39 @@
1313

1414
#pragma once
1515

16-
#include "BVCreepUpdateBase.h"
16+
#include "BVTwoCreepUpdateBase.h"
1717

18-
class BVBurgerModelUpdate : public BVCreepUpdateBase
18+
class BVBurgerModelUpdate : public BVTwoCreepUpdateBase
1919
{
2020
public:
2121
static InputParameters validParams();
2222
BVBurgerModelUpdate(const InputParameters & parameters);
2323

2424
protected:
2525
virtual void initQpStatefulProperties() override;
26-
virtual ADReal creepRate(const ADReal & eqv_stress) override;
27-
virtual ADReal creepRateMaxwell(const ADReal & eqv_stress);
28-
virtual ADReal creepRateKelvin(const ADReal & eqv_stress);
29-
virtual ADReal creepRateDerivative(const ADReal & eqv_stress) override;
30-
virtual ADReal creepRateMaxwellDerivative(const ADReal & eqv_stress);
31-
virtual ADReal creepRateKelvinDerivative(const ADReal & eqv_stress);
32-
virtual ADReal viscosityMaxwell(const ADReal & eqv_stress);
33-
virtual ADReal viscosityKelvin(const ADReal & eqv_stress);
34-
virtual ADReal viscosityMaxwellDerivative(const ADReal & eqv_stress);
35-
virtual ADReal viscosityKelvinDerivative(const ADReal & eqv_stress);
36-
virtual ADReal shearModulusKelvin(const ADReal & eqv_stress);
37-
virtual ADReal shearModulusKelvinDerivative(const ADReal & eqv_stress);
26+
virtual ADReal creepRate(const std::vector<ADReal> & eqv_strain_incr,
27+
const unsigned int i) override;
28+
virtual ADReal creepRateMaxwell(const std::vector<ADReal> & eqv_strain_incr);
29+
virtual ADReal creepRateKelvin(const std::vector<ADReal> & eqv_strain_incr);
30+
virtual ADReal creepRateDerivative(const std::vector<ADReal> & eqv_strain_incr,
31+
const unsigned int i,
32+
const unsigned int j) override;
33+
virtual ADReal creepRateMaxwellDerivative(const std::vector<ADReal> & eqv_strain_incr,
34+
const unsigned int /*j*/);
35+
virtual ADReal creepRateKelvinDerivative(const std::vector<ADReal> & eqv_strain_incr,
36+
const unsigned int j);
37+
virtual ADReal viscosityMaxwell(const std::vector<ADReal> & eqv_strain_incr);
38+
virtual ADReal viscosityKelvin(const std::vector<ADReal> & eqv_strain_incr);
39+
virtual ADReal viscosityMaxwellDerivative(const std::vector<ADReal> & eqv_strain_incr,
40+
const unsigned int j);
41+
virtual ADReal viscosityKelvinDerivative(const std::vector<ADReal> & eqv_strain_incr,
42+
const unsigned int j);
43+
virtual ADReal shearModulusKelvin(const std::vector<ADReal> & eqv_strain_incr);
44+
virtual ADReal shearModulusKelvinDerivative(const std::vector<ADReal> & eqv_strain_incr,
45+
const unsigned int j);
46+
virtual ADReal kelvinCreepStrain(const std::vector<ADReal> & eqv_strain_incr);
3847
virtual void preReturnMap() override;
39-
virtual void postReturnMap(const ADReal & eqv_stress) override;
48+
virtual void postReturnMap(const std::vector<ADReal> & eqv_strain_incr) override;
4049

4150
// Maxwell viscosity
4251
const Real _etaM0;

include/materials/BVCreepUpdateBase.h

+6-6
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ class BVCreepUpdateBase : public BVInelasticUpdateBase
2424

2525
protected:
2626
virtual ADReal returnMap();
27-
virtual ADReal residual(const ADReal & eqv_strain_incr);
28-
virtual ADReal jacobian(const ADReal & eqv_strain_incr);
29-
virtual ADRankTwoTensor reformPlasticStrainTensor(const ADReal & eqv_strain_incr);
30-
virtual ADReal creepRate(const ADReal & eqv_strain_incr) = 0;
31-
virtual ADReal creepRateDerivative(const ADReal & eqv_strain_incr) = 0;
27+
virtual ADReal residual(const ADReal & creep_strain_incr);
28+
virtual ADReal jacobian(const ADReal & creep_strain_incr);
29+
virtual ADRankTwoTensor reformPlasticStrainTensor(const ADReal & creep_strain_incr);
30+
virtual ADReal creepRate(const ADReal & creep_strain_incr) = 0;
31+
virtual ADReal creepRateDerivative(const ADReal & creep_strain_incr) = 0;
3232
virtual void preReturnMap();
33-
virtual void postReturnMap(const ADReal & eqv_strain_incr);
33+
virtual void postReturnMap(const ADReal & creep_strain_incr);
3434

3535
// Name used as a prefix for all material properties related to this creep model
3636
const std::string _base_name;

include/materials/BVKelvinViscoelasticUpdate.h

+1-5
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,8 @@ class BVKelvinViscoelasticUpdate : public BVCreepUpdateBase
2727
virtual ADReal creepRateDerivative(const ADReal & eqv_strain_incr) override;
2828
virtual ADReal kelvinCreepStrain(const ADReal & eqv_strain_incr);
2929
virtual ADReal kelvinCreepStrainDerivative(const ADReal & /*eqv_strain_incr*/);
30-
// virtual ADReal viscosity(const ADReal & eqv_stress);
31-
// virtual ADReal viscosityDerivative(const ADReal & eqv_stress);
32-
// virtual ADReal shearModulus(const ADReal & eqv_stress);
33-
// virtual ADReal shearModulusDerivative(const ADReal & eqv_stress);
3430
virtual void preReturnMap() override;
35-
virtual void postReturnMap(const ADReal & eqv_stress) override;
31+
virtual void postReturnMap(const ADReal & eqv_strain_incr) override;
3632

3733
// Reference viscosity
3834
const Real _eta0;

include/materials/BVLubby2ModelUpdate.h

+9-6
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,15 @@ class BVLubby2ModelUpdate : public BVBurgerModelUpdate
2222
BVLubby2ModelUpdate(const InputParameters & parameters);
2323

2424
protected:
25-
virtual ADReal viscosityMaxwell(const ADReal & eqv_stress) override;
26-
virtual ADReal viscosityKelvin(const ADReal & eqv_stress) override;
27-
virtual ADReal viscosityMaxwellDerivative(const ADReal & eqv_stress) override;
28-
virtual ADReal viscosityKelvinDerivative(const ADReal & eqv_stress) override;
29-
virtual ADReal shearModulusKelvin(const ADReal & eqv_stress) override;
30-
virtual ADReal shearModulusKelvinDerivative(const ADReal & eqv_stress) override;
25+
virtual ADReal viscosityMaxwell(const std::vector<ADReal> & eqv_strain_incr) override;
26+
virtual ADReal viscosityKelvin(const std::vector<ADReal> & eqv_strain_incr) override;
27+
virtual ADReal viscosityMaxwellDerivative(const std::vector<ADReal> & eqv_strain_incr,
28+
const unsigned int j) override;
29+
virtual ADReal viscosityKelvinDerivative(const std::vector<ADReal> & eqv_strain_incr,
30+
const unsigned int j) override;
31+
virtual ADReal shearModulusKelvin(const std::vector<ADReal> & eqv_strain_incr) override;
32+
virtual ADReal shearModulusKelvinDerivative(const std::vector<ADReal> & eqv_strain_incr,
33+
const unsigned int j) override;
3134

3235
// Reference stress
3336
Real _s0;
+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/******************************************************************************/
2+
/* This file is part of */
3+
/* BEAVER, a MOOSE-based application */
4+
/* Multiphase Flow Poromechanics for Induced Seismicity Problems */
5+
/* */
6+
/* Copyright (C) 2022 by Antoine B. Jacquey */
7+
/* Tufts University / Polytechnique Montreal */
8+
/* */
9+
/* Licensed under GNU Lesser General Public License v2.1 */
10+
/* please see LICENSE for details */
11+
/* or http://www.gnu.org/licenses/lgpl.html */
12+
/******************************************************************************/
13+
14+
#pragma once
15+
16+
#include "BVTwoCreepUpdateBase.h"
17+
18+
class BVRTL2020ModelUpdate : public BVTwoCreepUpdateBase
19+
{
20+
public:
21+
static InputParameters validParams();
22+
BVRTL2020ModelUpdate(const InputParameters & parameters);
23+
24+
protected:
25+
virtual void initQpStatefulProperties() override;
26+
virtual ADReal creepRate(const std::vector<ADReal> & eqv_strain_incr,
27+
const unsigned int i) override;
28+
virtual ADReal creepRateLemaitre(const std::vector<ADReal> & eqv_strain_incr);
29+
virtual ADReal creepRateMunsonDawson(const std::vector<ADReal> & eqv_strain_incr);
30+
virtual ADReal creepRateDerivative(const std::vector<ADReal> & eqv_strain_incr,
31+
const unsigned int i,
32+
const unsigned int j) override;
33+
virtual ADReal creepRateLemaitreDerivative(const std::vector<ADReal> & eqv_strain_incr,
34+
const unsigned int /*j*/);
35+
virtual ADReal creepRateMunsonDawsonDerivative(const std::vector<ADReal> & eqv_strain_incr,
36+
const unsigned int j);
37+
virtual ADReal lemaitreCreepStrain(const std::vector<ADReal> & eqv_strain_incr);
38+
virtual ADReal munsondawsonCreepStrain(const std::vector<ADReal> & eqv_strain_incr);
39+
virtual void preReturnMap() override;
40+
virtual void postReturnMap(const std::vector<ADReal> & eqv_strain_incr) override;
41+
42+
// Lemaitre creep strain rate parameters
43+
const Real _alpha;
44+
const Real _A2;
45+
const Real _n2;
46+
47+
// Munson-Dawson creep strain rate parameters
48+
const Real _A1;
49+
const Real _n1;
50+
const Real _A;
51+
const Real _B;
52+
const Real _m;
53+
const Real _n;
54+
55+
// Internal variable for Lemaitre and Munson-Dawson creep strain
56+
ADMaterialProperty<Real> & _eqv_creep_strain_L;
57+
const MaterialProperty<Real> & _eqv_creep_strain_L_old;
58+
ADMaterialProperty<Real> & _eqv_creep_strain_R;
59+
const MaterialProperty<Real> & _eqv_creep_strain_R_old;
60+
};
+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/******************************************************************************/
2+
/* This file is part of */
3+
/* BEAVER, a MOOSE-based application */
4+
/* Multiphase Flow Poromechanics for Induced Seismicity Problems */
5+
/* */
6+
/* Copyright (C) 2022 by Antoine B. Jacquey */
7+
/* Tufts University / Polytechnique Montreal */
8+
/* */
9+
/* Licensed under GNU Lesser General Public License v2.1 */
10+
/* please see LICENSE for details */
11+
/* or http://www.gnu.org/licenses/lgpl.html */
12+
/******************************************************************************/
13+
14+
#pragma once
15+
16+
#include "BVInelasticUpdateBase.h"
17+
18+
class BVTwoCreepUpdateBase : public BVInelasticUpdateBase
19+
{
20+
public:
21+
static InputParameters validParams();
22+
BVTwoCreepUpdateBase(const InputParameters & parameters);
23+
virtual void inelasticUpdate(ADRankTwoTensor & stress, const RankFourTensor & Cijkl) override;
24+
25+
protected:
26+
virtual std::vector<ADReal> returnMap();
27+
virtual void nrStep(const std::vector<ADReal> & res,
28+
const std::vector<std::vector<ADReal>> & jac,
29+
std::vector<ADReal> & creep_strain_incr);
30+
virtual ADReal norm(const std::vector<ADReal> & vec);
31+
virtual std::vector<ADReal> residual(const std::vector<ADReal> & creep_strain_incr);
32+
virtual std::vector<std::vector<ADReal>> jacobian(const std::vector<ADReal> & creep_strain_incr);
33+
virtual ADRankTwoTensor reformPlasticStrainTensor(const std::vector<ADReal> & creep_strain_incr);
34+
virtual ADReal creepRate(const std::vector<ADReal> & creep_strain_incr, const unsigned int i) = 0;
35+
virtual ADReal creepRateDerivative(const std::vector<ADReal> & creep_strain_incr,
36+
const unsigned int i,
37+
const unsigned int j) = 0;
38+
virtual void preReturnMap();
39+
virtual void postReturnMap(const std::vector<ADReal> & creep_strain_incr);
40+
41+
// Name used as a prefix for all material properties related to this creep model
42+
const std::string _base_name;
43+
44+
// Number of creep models
45+
const unsigned int _num_cm;
46+
47+
// Creep strain increment
48+
ADMaterialProperty<RankTwoTensor> & _creep_strain_incr;
49+
50+
// Trial stress tensor and scalar effective stress
51+
ADRankTwoTensor _stress_tr;
52+
ADReal _eqv_stress_tr;
53+
ADReal _avg_stress_tr;
54+
55+
// Shear and bulk modulus
56+
Real _G;
57+
Real _K;
58+
};

0 commit comments

Comments
 (0)