B4 model
Theory
The present model is based on the B4 model proposed by Bazant et al. (2015) generalized to 3D. The constitutive law is given in total form as
relating the nominal stress tensor \(\sig\) to the elastic strain tensor \(\epsE\) in terms of the fourth order stiffness tensor \(\Cel\). Where \(\eps\) is the total strain, \(\epsVE\) is the viscoelastic strain, \(\epsF\) is the viscous flow strain (with the sum of \(\epsVE\) and \(\epsF\) representing the basic creep strain), \(\epsDC\) is the strain due to drying creep and \(\epsSHR\) is the total shrinkage strain. A potential temperature dependence is not taken into account.
The implementation of the evolution of the visoelastic strain is using a solidifying Kelvin chain according to Bazant and Jirasek (2018). The drying creep strain is computed using an aging Kelvin chain.
The evolution of the instantaneous elastic strain and the basic creep strain are represented by the Solidification Theory generalized to three-dimensional stress states. The evolution of the instantaneous elastic strain \(\epsE\) is expressed as
in which \(q_1\) denotes the age-independent asymptotic compliance and \(\DelNu\) the unit compliance tensor. The evolution of the viscoelastic strain \(\epsVE\) is defined as
in terms of the solidified volume function \(v(t)\) and the compliance rate of the hydrated constituent \(\PhiRate(t-t')\). The solidified volume function
represents the time-dependent aging of the material. Where \(\lambda_0\) and \(m\) are material parameters with default values \(\lambda_0 = 1 \; \mathrm{d}\) and \(m = 0.5\). The anti-derivative of the compliance rate \(\PhiRate(t-t')\) is defined as
in which \(n\) is the exponent of the log-power law, with the default value \(n = 0.1\). The evolution of the viscous strain \(\epsF\) is governed by
In the above equations, \(q_2\), \(q_3\) and \(q_4\) denote the compliance parameters. The evolution of the drying strain \(\epsDC\) is described as
where \(t_0\) denotes the start of drying and \(p_{\mathrm{5H}}\) is a cement type dependent parameter, which is set to \(p_{\mathrm{5H}} = 8\) for slow and regular hardening cement. The anti-derivative of the drying creep compliance rate \(\PhiRate_d\) is definded as
in which \(q_5\) is the drying creep parameter, \(\xi = (t-t')/\tau_{\mathrm{shr,d}}\) and \(\xi_0 = (t_0-t')/\tau_{\mathrm{shr,d}}\) are dimensionless times, and \(b= p_{\mathrm{5H}}(1-h_{\mathrm{env}})\), in which \(h_{\mathrm{env}}\) is the ambient relative humidity.
The total shrinkage strain \(\epsSHR\) is assumed as the sum of the autogenous shrinkage strain \(\eps^\mathrm{shr,au}\) and the drying shrinkage strain \(\eps^\mathrm{shr,d}\). The evolution of the autogenous shrinkage strain \(\eps^\mathrm{shr,au}\) is described as
in which \(\boldsymbol{\mathrm{I}}\) is the second order identity tensor, \(\eps^\mathrm{shr,au}_\infty\), \(\tau_\mathrm{shr,au}\) and \(\alpha\) are the ultimate autogenous shrinkage strain, the autogenous shrinkage halftime, and a parameter depending on the concrete composition and on the cement type, respectively. The evoluztion of the drying shrinkage strain \(\eps^\mathrm{shr,d}\) is defined as
in which \(\eps^\mathrm{shr,d}_\infty\) denotes the ultimate drying shrinkage strain at zero humidity and \(\tau_{shr,d}\) the drying shrinkage halftime. The paramter \(k_{\mathrm{h}}\) is given as
where currently only the first variant is implemented.
Implementation
-
class B4 : public MarmotMaterialHypoElastic
Inheritance diagram for Marmot::Materials::B4:
![digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"1" [label="Marmot::Materials::B4" tooltip="Marmot::Materials::B4" fillcolor="#BFBFBF"]
"4" [label="MarmotMaterial" tooltip="MarmotMaterial"]
"2" [label="MarmotMaterialHypoElastic" tooltip="MarmotMaterialHypoElastic"]
"3" [label="MarmotMaterialMechanical" tooltip="MarmotMaterialMechanical"]
"1" -> "2" [dir=forward tooltip="public-inheritance"]
"2" -> "3" [dir=forward tooltip="public-inheritance"]
"3" -> "4" [dir=forward tooltip="public-inheritance"]
}](../../_images/graphviz-fa76803209a85bceb22e9c5e813d49a103cf3d28.png)
Collaboration diagram for Marmot::Materials::B4:
![digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"1" [label="Marmot::Materials::B4" tooltip="Marmot::Materials::B4" fillcolor="#BFBFBF"]
"6" [label="Marmot::Materials::SolidificationTheory::KelvinChainProperties" tooltip="Marmot::Materials::SolidificationTheory::KelvinChainProperties"]
"5" [label="Marmot::Materials::SolidificationTheory::Parameters" tooltip="Marmot::Materials::SolidificationTheory::Parameters"]
"4" [label="MarmotMaterial" tooltip="MarmotMaterial"]
"2" [label="MarmotMaterialHypoElastic" tooltip="MarmotMaterialHypoElastic"]
"3" [label="MarmotMaterialMechanical" tooltip="MarmotMaterialMechanical"]
"1" -> "2" [dir=forward tooltip="public-inheritance"]
"1" -> "5" [dir=forward tooltip="usage"]
"1" -> "6" [dir=forward tooltip="usage"]
"2" -> "3" [dir=forward tooltip="public-inheritance"]
"3" -> "4" [dir=forward tooltip="public-inheritance"]
}](../../_images/graphviz-aff2a91aa8abba17681b030a08a53d780a9d1a6f.png)
Implementation of a linear elastic material according to the B4 model by Bazant et al. (2015) generalized for 3D stress states.
For further information see b4.
Public Functions
-
B4(const double *materialProperties, int nMaterialProperties, int materialLabel)
-
virtual void computeStress(double *stress, double *dStressDDStrain, const double *dStrain, const double *timeOld, const double dT, double &pNewDT)
For a given linearized strain increment \(\Delta\boldsymbol{\varepsilon}\) at the old and the current time, compute the Cauchy stress and the algorithmic tangent \(\frac{\partial\boldsymbol{\sigma}^{(n+1)}}{\partial\boldsymbol{\varepsilon}^{(n+1)}}\).
- Parameters:
stress – [inout] Cauchy stress
dStressDDstrain – [inout] Algorithmic tangent representing the derivative of the Cauchy stress tensor with respect to the linearized strain
dStrain – [in] linearized strain increment
timeOld – [in] Old (pseudo-)time
dt – [in] (Pseudo-)time increment from the old (pseudo-)time to the current (pseudo-)time
pNewDT – [inout] Suggestion for a new time increment
-
virtual int getNumberOfRequiredStateVars()
- Returns:
Number of state variables required by the material.
-
virtual void assignStateVars(double *stateVars_, int nStateVars)
Assign state variable array to material.
- Parameters:
stateVars – [inout] Pointer to state variable array.
nStateVars – [in] Number of state variables.
Private Functions
Private Members
-
const double &nu
Poisson’s ratio.
nu represents Poisson’s ratio for isotropic linear elasticity. It is a reference variable to materialProperties[0].
-
const double &q1
asymptotic elastic compliance parameter
q1 represents the first compliance parameter for Solidification Theory. It is a reference variable to materialProperties[1].
-
const double &q2
viscoelastic compliance parameter
q2 represents the second compliance parameter for Solidification Theory. It is a reference variable to materialProperties[2].
-
const double &q3
viscoelastic compliance parameter
q3 represents the third compliance parameter for Solidification Theory. It is a reference variable to materialProperties[3].
-
const double &q4
flow compliance parameter
q4 represents the fourth compliance parameter for Solidification Theory. It is a reference variable to materialProperties[4].
-
const double &n
log-power law exponent
n represents the exponent of the log-power law used in the compliance function of the hardened constituent. It is a reference variable to materialProperties[5].
-
const double &m
solidified volume exponent
m represents the exponent in the function describing the solidification of the material. It is a reference variable to materialProperties[6].
-
const size_t nKelvinBasic
number of Kelvin units to approximate the viscoelastic compliance
nKelvinBasic the number of Kelvin units used to approximate the viscoelastic compliance. It is a reference variable to materialProperties[7].
-
const double &minTauBasic
minimal retardation time used in the viscoelastic Kelvin chain
minTauBasic represents the minimal retardation time in days used in the Kelvin chain to approximate the viscoelastic compliance. It is a reference variable to materialProperties[8].
-
const double &ultimateAutogenousShrinkageStrain
ultimate autogenous shrinkage strain
ultimateAutogenousShrinkageStrain represents the ultimate autogenous shrinkage strain. It is a reference variable to materialProperties[9].
-
const double &autogenousShrinkageHalfTime
autogenous shrinkage half time
autogenousShrinkageHalfTime represents the autogenous shrinkage half time. It is a reference variable to materialProperties[10].
-
const double &alpha
autogenous shrinkage material parameter
alpha represents a cement type and concrete composition dependent material parameter for autogenous shrinkage. It is a reference variable to materialProperties[11].
-
const double &rt
autogenous shrinkage material parameter
rt represents a cement type dependent material parameter for autogenous shrinkage, whose value is rt = -4.50 for all cements. It is a reference variable to materialProperties[12].
-
const double &ultimateDryingShrinkageStrain
ultimate drying shrinkage strain
ultimateDryingShrinkageStrain represents the ultimate drying shrinkage strain at zero relative ambient humidity. It is a reference variable to materialProperties[13].
-
const double &dryingShrinkageHalfTime
drying shrinkage half time
dryingShrinkageHalfTime represents the drying shrinkage half time. It is a reference variable to materialProperties[14].
-
const double &dryingStart
drying start time
dryingStart represents start of drying in days. It is a reference variable to materialProperties[15].
-
const double &hEnv
relative ambient humidity
hEnv represents relative ambient humidity. It is a reference variable to materialProperties[16].
-
const double &q5
drying creep compliance parameter
q5 represents drying creep compliance parameter. It is a reference variable to materialProperties[17].
-
const size_t nKelvinDrying
number of Kelvin units to approximate the drying creep compliance
q5 represents the number of Kelvin units to approximate the drying creep compliance function. It is a reference variable to materialProperties[18].
-
const double &minTauDrying
minimal retardation time used in the drying creep Kelvin chain
minTauDrying represents the minimal retardation time used in the Kelvin chain to approximate the drying creep compliance function. It is a reference variable to materialProperties[19].
-
const double &castTime
time to start hydration
castTime represents the time at which hydration starts with respect to simulation time. It is a reference variable to materialProperties[20].
-
const double &timeToDays
ratio of simulation time to days
timeToDays represents the ratio of simulation time to days. It is a reference variable to materialProperties[21].
-
std::unique_ptr<B4StateVarManager> stateVarManager
-
SolidificationTheory::Parameters solidificationParameters
material parameters for Solidification Theory
-
SolidificationTheory::KelvinChainProperties solidificationKelvinProperties
properties of the Kelvin chain for approximating the viscoelastic compliance of the Solidification Theory
-
KelvinChain::Properties basicCreepElasticModuli
Young’s modulus of the Kelvin units representing basic creep.
-
KelvinChain::Properties basicCreepRetardationTimes
retardation times of the Kelvin units representing basic creep
Private Static Attributes
-
static int dryingCreepComplianceApproximationOrder = 5
approximation order of the Post-Widder formula for drying creep
-
static int basicCreepComplianceApproximationOrder = 2
approximation order of the Post-Widder formula for basic creep
-
class B4StateVarManager : public MarmotStateVarVectorManager
Inheritance diagram for Marmot::Materials::B4::B4StateVarManager:
![digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"1" [label="Marmot::Materials::B4::B4StateVarManager" tooltip="Marmot::Materials::B4::B4StateVarManager" fillcolor="#BFBFBF"]
"2" [label="MarmotStateVarVectorManager" tooltip="MarmotStateVarVectorManager"]
"1" -> "2" [dir=forward tooltip="public-inheritance"]
}](../../_images/graphviz-f20d0dec55cf4e1e1ecb279e9218bb28a71bc6a9.png)
Collaboration diagram for Marmot::Materials::B4::B4StateVarManager:
![digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"1" [label="Marmot::Materials::B4::B4StateVarManager" tooltip="Marmot::Materials::B4::B4StateVarManager" fillcolor="#BFBFBF"]
"2" [label="MarmotStateVarVectorManager" tooltip="MarmotStateVarVectorManager"]
"3" [label="MarmotStateVarVectorManager::StateVarVectorLayout" tooltip="MarmotStateVarVectorManager::StateVarVectorLayout"]
"1" -> "2" [dir=forward tooltip="public-inheritance"]
"2" -> "3" [dir=forward tooltip="usage"]
}](../../_images/graphviz-b866462d1be9ed74fa978aed98528236af306041.png)
Public Functions
-
inline B4StateVarManager(double *theStateVarVector, int nKelvinUnits)
Public Members
-
KelvinChain::mapStateVarMatrix kelvinStateVars
Public Static Attributes
-
static const auto layout =
makeLayout( {{ .name = "kelvinStateVars", .length = 0 },} )
-
inline B4StateVarManager(double *theStateVarVector, int nKelvinUnits)
-
B4(const double *materialProperties, int nMaterialProperties, int materialLabel)