14#ifndef model_ClusterDynamicsParameters_H_
15#define model_ClusterDynamicsParameters_H_
26#ifndef MODELIB_CD_MSIZE
27#define MODELIB_CD_MSIZE 4
29#ifndef MODELIB_CD_ISIZE
30#define MODELIB_CD_ISIZE 8
42 static constexpr int mSize=MODELIB_CD_MSIZE;
43 static constexpr int iSize=MODELIB_CD_ISIZE;
59 const Eigen::Array<double,1,mSize>
msEf;
60 const Eigen::Matrix<double,
mSize,dim*(dim+1)/2>
msEm;
61 const Eigen::Matrix<double,
mSize,dim*(dim+1)/2>
msD0;
62 const std::map<size_t,std::vector<Eigen::Matrix<double,dim,dim>>>
D;
63 const std::map<size_t,std::vector<Eigen::Matrix<double,dim,dim>>>
invD;
64 const std::map<size_t,Eigen::Array<double,mSize,1>>
detD;
65 const Eigen::Array<double,1,mSize>
Eb;
70 const Eigen::Matrix<double,mSize,1>
G;
77 const Eigen::Matrix<double,mSize,mSize>
R1;
78 const Eigen::Matrix<double,mSize,mSize>
R1cd;
80 const std::vector<Eigen::Matrix<double,mSize,mSize>>
R2;
126 std::map<std::pair<int,int>,
double>
getMap(
const Eigen::Array<
double,
mSize*(
mSize+1)/2,3> matrix_in)
const;
127 Eigen::Matrix<double,mSize,mSize>
getR1()
const;
128 std::vector<Eigen::Matrix<double,mSize,mSize>>
getR2()
const;
131 std::vector<Eigen::Matrix<double,dim,dim>>
getDlocal()
const;
132 std::map<size_t,std::vector<Eigen::Matrix<double,dim,dim>>>
getInvD()
const;
133 std::map<size_t,Eigen::Array<double,mSize,1>>
getDetD()
const;
134 Eigen::Array<double,1,iSize>
getInitLoopSinks(
const Eigen::Array<double,1,iSize> initloopSinks_SI,
const double b_SI)
const;
138 Eigen::Array<double,1,
iSize/2>
sigmoid(
const Eigen::Array<double,1,iSize/2>& n)
const;
139 Eigen::Array<double,1,
iSize/2>
rpyr(
const Eigen::Array<double,1,iSize/2>& n)
const;
140 Eigen::Array<double,1,
iSize/2>
rloop(
const Eigen::Array<double,1,iSize/2>& n)
const;
141 Eigen::Array<double,1,
iSize/2>
sigmoidalVectorInterpolation(
const Eigen::Array<double,1,iSize/2>& CI,
const Eigen::Array<double,1,iSize/2>&
N,
const Eigen::Array<double,1,iSize/2>& lowValue,
const Eigen::Array<double,1,iSize/2>& highValue)
const;
142 Eigen::Array<double,1,
iSize/2>
clusterRadius(
const Eigen::Array<double,1,iSize/2>& CI,
const Eigen::Array<double,1,iSize/2>&
N)
const;
143 Eigen::Array<double,1,
iSize/2>
clusterDensity(
const Eigen::Array<double,1,iSize/2>& CI,
const Eigen::Array<double,1,iSize/2>&
N)
const;
144 Eigen::Array<double,dim,dim>
sigmoidalMatrixInterpolation(
const Eigen::Array<double,1,iSize/2>& CI,
const Eigen::Array<double,1,iSize/2>&
N,
const Eigen::Array<double,dim,dim>& lowValue,
const Eigen::Array<double,dim,dim>& highValue,
const int&
index)
const;
145 Eigen::Array<double,1,
iSize/2>
sigmoidalPlotVectorInterpolation(
const Eigen::Array<double,1,iSize/2>& CI,
const Eigen::Array<double,1,iSize/2>&
N,
const Eigen::Array<double,1,iSize/2>& lowValue,
const Eigen::Array<double,1,iSize/2>& highValue)
const;
146 Eigen::Array<double,1,
iSize/2>
clusterPlotRadius(
const Eigen::Array<double,1,iSize/2>& CI,
const Eigen::Array<double,1,iSize/2>&
N)
const;
std::map< size_t, std::shared_ptr< Grain< dim > > > GrainContainerType
final point of the source segment t
const Eigen::Array< double, 1, mSize > otherSinks
Eigen::Array< double, 1, mSize > dislocationMobileConcentration(const VectorDim &b, const VectorDim &t, const VectorDim &fPK, const MatrixDim &stress) const
const Eigen::Array< double, 1, iSize/2 > nmax
static constexpr int mSize
const Eigen::Array< double, 1, iSize/2 > n_min
ClusterDynamicsParameters(const DefectiveCrystalBase< dim > &ddBase)
Eigen::Array< double, 1, iSize/2 > clusterRadius(const Eigen::Array< double, 1, iSize/2 > &CI, const Eigen::Array< double, 1, iSize/2 > &N) const
const Eigen::Array< double, 2, mSize > discreteDislocationBias
Eigen::Array< double, 1, iSize/2 > getImmobileSpeciesBurgersMagnitude(const GrainContainerType &grains) const
const double discretizationFactor
Eigen::Array< double, 1, mSize > equilibriumMobileConcentration(const double &stressTrace) const
const Eigen::Array< double, 1, iSize/2 > nmin
const std::vector< Eigen::Matrix< double, mSize, mSize > > R2
const Eigen::Array< double, 1, mSize > msRelRelaxVol
const std::map< std::pair< int, int >, double > reactionMap
const Eigen::Matrix< double, mSize, dim *(dim+1)/2 > msD0
Eigen::Matrix< double, dim, 1 > VectorDim
const Eigen::Matrix< double, mSize, 1 > G
const Eigen::Array< double, 1, iSize/2 > immobileSpeciesRelRelaxVol
Eigen::Array< double, 1, iSize/2 > sigmoid(const Eigen::Array< double, 1, iSize/2 > &n) const
std::map< size_t, std::vector< Eigen::Matrix< double, dim, dim > > > getInvD() const
std::map< std::pair< int, int >, double > getMap(const Eigen::Array< double, mSize *(mSize+1)/2, 3 > matrix_in) const
const Eigen::Matrix< double, mSize, mSize > R1
const std::map< size_t, std::vector< Eigen::Matrix< double, dim, dim > > > D
Eigen::Matrix< double, dim, dim > MatrixDim
const Eigen::Array< double, 1, mSize > Eb
const Eigen::Matrix< double, dim, iSize/2 > immobileSpeciesBurgers
Eigen::Array< double, 1, iSize > getInitLoopSinks(const Eigen::Array< double, 1, iSize > initloopSinks_SI, const double b_SI) const
Eigen::Array< double, 1, iSize/2 > rpyr(const Eigen::Array< double, 1, iSize/2 > &n) const
Polycrystal< dim >::GrainContainerType GrainContainerType
Eigen::Array< double, 1, iSize/2 > sigmoidalPlotVectorInterpolation(const Eigen::Array< double, 1, iSize/2 > &CI, const Eigen::Array< double, 1, iSize/2 > &N, const Eigen::Array< double, 1, iSize/2 > &lowValue, const Eigen::Array< double, 1, iSize/2 > &highValue) const
const Eigen::Array< double, 1, iSize/2 > dislocationSinks
Eigen::Matrix< double, mSize, mSize > getR1() const
const Eigen::Array< double, 1, mSize > msEf
const Eigen::Matrix< double, mSize, dim *(dim+1)/2 > msEm
static constexpr int iSize
const bool computeReactions
Eigen::Array< double, 1, mSize > boundaryMobileConcentration(const double &stressTrace, const double &normalTraction) const
std::map< size_t, Eigen::Array< double, mSize, 1 > > getDetD() const
const Eigen::Matrix< double, mSize, mSize > R1cd
const std::map< size_t, std::vector< Eigen::Matrix< double, dim, dim > > > invD
Eigen::Array< double, 1, iSize/2 > clusterDensity(const Eigen::Array< double, 1, iSize/2 > &CI, const Eigen::Array< double, 1, iSize/2 > &N) const
const double msSurvivingEfficiency
const double minimumLoopSize
Eigen::Array< double, dim, dim > sigmoidalMatrixInterpolation(const Eigen::Array< double, 1, iSize/2 > &CI, const Eigen::Array< double, 1, iSize/2 > &N, const Eigen::Array< double, dim, dim > &lowValue, const Eigen::Array< double, dim, dim > &highValue, const int &index) const
const double discretizationTime
const std::map< size_t, Eigen::Array< double, mSize, 1 > > detD
std::vector< Eigen::Matrix< double, dim, dim > > getDlocal() const
const Eigen::Array< double, 1, iSize/2 > immobileSpeciesVector
Eigen::Array< double, 1, iSize/2 > rloop(const Eigen::Array< double, 1, iSize/2 > &n) const
const Eigen::Array< double, 1, mSize > msVector
const Eigen::Array< double, 1, iSize/2 > immobileBias
std::vector< Eigen::Matrix< double, mSize, mSize > > getR2() const
Eigen::Array< double, 1, iSize/2 > clusterPlotRadius(const Eigen::Array< double, 1, iSize/2 > &CI, const Eigen::Array< double, 1, iSize/2 > &N) const
const Eigen::Matrix< double, 1, mSize > msCascadeFractions
std::map< size_t, std::vector< Eigen::Matrix< double, dim, dim > > > getD(const GrainContainerType &grains) const
Eigen::Array< double, 1, iSize/2 > sigmoidalVectorInterpolation(const Eigen::Array< double, 1, iSize/2 > &CI, const Eigen::Array< double, 1, iSize/2 > &N, const Eigen::Array< double, 1, iSize/2 > &lowValue, const Eigen::Array< double, 1, iSize/2 > &highValue) const
const Eigen::Array< double, 1, iSize > initLoopSinks
const Eigen::Array< double, 1, iSize/2 > immobileSpeciesBurgersMagnitude