B4.h
Go to the documentation of this file.
1 /* ---------------------------------------------------------------------
2  * _
3  * _ __ ___ __ _ _ __ _ __ ___ ___ | |_
4  * | '_ ` _ \ / _` | '__| '_ ` _ \ / _ \| __|
5  * | | | | | | (_| | | | | | | | | (_) | |_
6  * |_| |_| |_|\__,_|_| |_| |_| |_|\___/ \__|
7  *
8  * Unit of Strength of Materials and Structural Analysis
9  * University of Innsbruck
10  * 2020 - today
11  *
12  * festigkeitslehre@uibk.ac.at
13  *
14  * Alexander Dummer alexander.dummer@uibk.ac.at
15  *
16  * This file is part of the MAteRialMOdellingToolbox (marmot).
17  *
18  * This library is free software; you can redistribute it and/or
19  * modify it under the terms of the GNU Lesser General Public
20  * License as published by the Free Software Foundation; either
21  * version 2.1 of the License, or (at your option) any later version.
22  *
23  * The full text of the license can be found in the file LICENSE.md at
24  * the top level directory of marmot.
25  * ---------------------------------------------------------------------
26  */
27 
28 #pragma once
33 #include <iostream>
34 #include <string>
35 #include <vector>
36 
37 namespace Marmot::Materials {
38 
46  class B4 : public MarmotMaterialHypoElastic {
47 
49  const double& nu;
53  const double& q1;
58  const double& q2;
63  const double& q3;
68  const double& q4;
73  const double& n;
78  const double& m;
83  const size_t nKelvinBasic;
88  const double& minTauBasic;
98  const double& autogenousShrinkageHalfTime;
103  const double& alpha;
108  const double& rt;
113  const double& ultimateDryingShrinkageStrain;
118  const double& dryingShrinkageHalfTime;
123  const double& dryingStart;
128  const double& hEnv;
133  const double& q5;
138  const size_t nKelvinDrying;
143  const double& minTauDrying;
148  const double& castTime;
153  const double& timeToDays;
159 
160  public:
161  inline const static auto layout = makeLayout( {
162  { .name = "kelvinStateVars", .length = 0 },
163  } );
164 
166 
167  B4StateVarManager( double* theStateVarVector, int nKelvinUnits )
168  : MarmotStateVarVectorManager( theStateVarVector, layout ),
169  kelvinStateVars( &find( "kelvinStateVars" ), 6, nKelvinUnits ){};
170  };
171  std::unique_ptr< B4StateVarManager > stateVarManager;
172 
173  public:
174  using MarmotMaterialHypoElastic::MarmotMaterialHypoElastic;
175 
176  B4( const double* materialProperties, int nMaterialProperties, int materialLabel );
177 
178  void computeStress( double* stress,
179  double* dStressDDStrain,
180 
181  const double* dStrain,
182  const double* timeOld,
183  const double dT,
184  double& pNewDT );
185 
187 
188  void assignStateVars( double* stateVars_, int nStateVars );
189 
190  StateView getStateView( const std::string& stateName );
191 
192  private:
195 
198 
199  static constexpr int dryingCreepComplianceApproximationOrder = 5;
200  static constexpr int basicCreepComplianceApproximationOrder = 2;
201 
203  template < typename T_ >
204  T_ phi( T_ xi, double b, double xiZero )
205  {
206  T_ val = sqrt( exp( tanh( sqrt( xi - xiZero ) ) * b ) - exp( tanh( sqrt( -xiZero ) ) * b ) );
207  return val;
208  }
209  };
210 } // namespace Marmot::Materials
Marmot::Materials::B4::solidificationParameters
SolidificationTheory::Parameters solidificationParameters
Definition: B4.h:193
MarmotMaterialHypoElastic.h
Marmot::Materials::B4::q5
const double & q5
drying creep compliance parameter
Definition: B4.h:134
Marmot::Materials::B4::assignStateVars
void assignStateVars(double *stateVars_, int nStateVars)
Definition: B4.cpp:168
MarmotKelvinChain.h
Marmot::Materials::B4::dryingCreepComplianceApproximationOrder
static constexpr int dryingCreepComplianceApproximationOrder
Definition: B4.h:199
Marmot::Materials::B4::getStateView
StateView getStateView(const std::string &stateName)
Definition: B4.cpp:178
Marmot::Math::exp
double exp(double x)
Definition: MarmotMath.cpp:13
Marmot::Materials::B4::hEnv
const double & hEnv
relative ambient humidity
Definition: B4.h:129
Marmot::Materials::B4::minTauDrying
const double & minTauDrying
minimal retardation time used in the drying creep Kelvin chain
Definition: B4.h:144
Marmot::Materials::B4::B4
B4(const double *materialProperties, int nMaterialProperties, int materialLabel)
Definition: B4.cpp:18
Marmot::Materials::KelvinChain::mapStateVarMatrix
Eigen::Map< StateVarMatrix > mapStateVarMatrix
Definition: MarmotKelvinChain.h:42
Marmot::Materials::B4::stateVarManager
std::unique_ptr< B4StateVarManager > stateVarManager
Definition: B4.h:171
Marmot::Materials::B4::q2
const double & q2
viscoelastic compliance parameter
Definition: B4.h:59
Marmot::Materials::B4
Implementation of a linear elastic material according to the B4 model by Bazant et al....
Definition: B4.h:46
MarmotSolidification.h
Marmot::Materials::B4::m
const double & m
solidified volume exponent
Definition: B4.h:79
Marmot::Materials::B4::q1
const double & q1
asymptotic elastic compliance parameter
Definition: B4.h:54
Marmot::Materials::B4::B4StateVarManager::layout
static const auto layout
Definition: B4.h:161
Marmot::Materials
Definition: MarmotKelvinChain.h:34
Marmot::Materials::B4::nu
const double & nu
Poisson's ratio.
Definition: B4.h:49
Marmot::Materials::B4::nKelvinBasic
const size_t nKelvinBasic
number of Kelvin units to approximate the viscoelastic compliance
Definition: B4.h:84
MarmotStateVarVectorManager
A convenience auxiliary class for managing multiple statevars with arbitrary length in a single conse...
Definition: MarmotStateVarVectorManager.h:37
MarmotStateVarVectorManager.h
Marmot::Materials::B4::alpha
const double & alpha
autogenous shrinkage material parameter
Definition: B4.h:104
Marmot::Materials::SolidificationTheory::Parameters
material parameters for Solidification Theory
Definition: MarmotSolidification.h:35
Marmot::Materials::B4::q3
const double & q3
viscoelastic compliance parameter
Definition: B4.h:64
Marmot::Materials::B4::ultimateDryingShrinkageStrain
const double & ultimateDryingShrinkageStrain
ultimate drying shrinkage strain
Definition: B4.h:114
StateView
Definition: MarmotUtils.h:29
Marmot::Materials::B4::q4
const double & q4
flow compliance parameter
Definition: B4.h:69
Marmot::Materials::B4::solidificationKelvinProperties
SolidificationTheory::KelvinChainProperties solidificationKelvinProperties
Definition: B4.h:194
Marmot::Materials::KelvinChain::Properties
Eigen::VectorXd Properties
Definition: MarmotKelvinChain.h:38
Marmot::Materials::B4::computeStress
void computeStress(double *stress, double *dStressDDStrain, const double *dStrain, const double *timeOld, const double dT, double &pNewDT)
Definition: B4.cpp:67
Marmot::Materials::B4::basicCreepComplianceApproximationOrder
static constexpr int basicCreepComplianceApproximationOrder
Definition: B4.h:200
Marmot::Materials::B4::getNumberOfRequiredStateVars
int getNumberOfRequiredStateVars()
Definition: B4.cpp:183
Marmot::Materials::B4::basicCreepRetardationTimes
KelvinChain::Properties basicCreepRetardationTimes
Definition: B4.h:197
MarmotStateVarVectorManager::makeLayout
static StateVarVectorLayout makeLayout(const std::vector< StateVarEntryDefinition > &theEntries)
generate the statevar vector layout from a list of entries, defined by name and length
Definition: MarmotStateVarVectorManager.h:74
Marmot::Materials::B4::dryingStart
const double & dryingStart
drying start time
Definition: B4.h:124
Marmot::Materials::B4::timeToDays
const double & timeToDays
ratio of simulation time to days
Definition: B4.h:154
Marmot::Materials::B4::ultimateAutogenousShrinkageStrain
const double & ultimateAutogenousShrinkageStrain
ultimate autogenous shrinkage strain
Definition: B4.h:94
Marmot::Materials::B4::B4StateVarManager::B4StateVarManager
B4StateVarManager(double *theStateVarVector, int nKelvinUnits)
Definition: B4.h:167
Marmot::Materials::SolidificationTheory::KelvinChainProperties
properties of the Kelvin chain for approximating the viscoelastic compliance of the Solidification Th...
Definition: MarmotSolidification.h:48
Marmot::Materials::B4::B4StateVarManager
Definition: B4.h:158
Marmot::Materials::B4::dryingShrinkageHalfTime
const double & dryingShrinkageHalfTime
drying shrinkage half time
Definition: B4.h:119
Marmot::Materials::B4::nKelvinDrying
const size_t nKelvinDrying
number of Kelvin units to approximate the drying creep compliance
Definition: B4.h:139
Marmot::Materials::B4::phi
T_ phi(T_ xi, double b, double xiZero)
drying creep compliance function
Definition: B4.h:204
Marmot::Materials::B4::B4StateVarManager::kelvinStateVars
KelvinChain::mapStateVarMatrix kelvinStateVars
Definition: B4.h:165
Marmot::Materials::B4::castTime
const double & castTime
time to start hydration
Definition: B4.h:149
Marmot::Materials::B4::autogenousShrinkageHalfTime
const double & autogenousShrinkageHalfTime
autogenous shrinkage half time
Definition: B4.h:99
Marmot::Materials::B4::n
const double & n
log-power law exponent
Definition: B4.h:74
Marmot::Materials::B4::basicCreepElasticModuli
KelvinChain::Properties basicCreepElasticModuli
Definition: B4.h:196
MarmotMaterial::nStateVars
int nStateVars
Definition: MarmotMaterial.h:39
MarmotMaterial::nMaterialProperties
const int nMaterialProperties
Definition: MarmotMaterial.h:36
MarmotMaterial::materialProperties
const double * materialProperties
Definition: MarmotMaterial.h:35
Marmot::Materials::B4::minTauBasic
const double & minTauBasic
minimal retardation time used in the viscoelastic Kelvin chain
Definition: B4.h:89
MarmotStateVarVectorManager::find
double & find(const std::string &name) const
get the reference to the first array element of an entry in the statevar vector
Definition: MarmotStateVarVectorManager.h:48
MarmotMaterialHypoElastic
Definition: MarmotMaterialHypoElastic.h:54
Marmot::Materials::B4::rt
const double & rt
autogenous shrinkage material parameter
Definition: B4.h:109