90 Eigen::Matrix<double,iSize,mSize>
sinkStrengths(
const Eigen::Matrix<double,iSize,1>& sinkValue,
const size_t& gID)
const
94 Eigen::Matrix<double,iSize,1> correctedSinkValue(sinkValue);
95 for(
int dof=0;dof<
iSize/2;dof++)
97 const double cmin =
cdp.n_min(dof)*
cdp.omega*correctedSinkValue(dof);
98 if(correctedSinkValue(
iSize/2+dof)<cmin)
100 correctedSinkValue(
iSize/2+dof)=cmin;
104 const std::vector<Eigen::Matrix<double,3,3>> Dlocal(
cdp.getDlocal());
105 Eigen::Array<double,1,mSize> aveD(Eigen::Array<double,1,mSize>::Zero());
106 Eigen::Array<double,1,mSize>
p(Eigen::Array<double,1,mSize>::Zero());
109 aveD(
k)=pow(Dlocal[
k].determinant(),1.0/3.0);
110 p(
k) =pow(Dlocal[
k](2,2)/Dlocal[
k](0,0),1.0/6.0);
118 assert(correctedSinkValue.minCoeff()>=0.0 &&
"Sink Value is smaller than or equals 0.");
127 const Eigen::Matrix<double,
iSize/2,1> disDensity((Eigen::Matrix<double,iSize/2,1>()<<
cdp.dislocationSinks(0),
128 cdp.dislocationSinks(1),
129 cdp.dislocationSinks(2),
130 cdp.dislocationSinks(3)).finished());
131 const Eigen::Matrix<double,
iSize/2,1> defectDensity(
cdp.clusterDensity(correctedSinkValue.template block<iSize/2,1>(
iSize/2,0).array(),correctedSinkValue.template block<iSize/2,1>(0,0).array()).transpose().matrix());
132 const Eigen::Array<double,
iSize/2,
mSize> rholD((defectDensity*aveD.matrix()).array());
133 const Eigen::Array<double,
iSize/2,
mSize> rhodD((disDensity*aveD.matrix()).array());
136 const Eigen::Array<double,
iSize/2,
mSize> Zloop = ZDAD*ZDRIFT;
137 const Eigen::Array<double,
iSize/2,
mSize> Zpyr(Eigen::Array<double,iSize/2,mSize>::Ones());
138 Eigen::Array<double,
iSize/2,
mSize> Ztotal(Eigen::Array<double,iSize/2,mSize>::Zero());
142 Ztotal.col(
k) =
cdp.sigmoidalVectorInterpolation(correctedSinkValue.template block<iSize/2,1>(
iSize/2,0).array(),correctedSinkValue.template block<iSize/2,1>(0,0).array(),Zpyr.col(
k),Zloop.col(
k));
145 const Eigen::Matrix<double,
iSize/2,
mSize> loopStrength(Ztotal*rholD);
146 const Eigen::Matrix<double,
iSize/2,
mSize> disStrengh(Zloop*rhodD);
148 Eigen::Matrix<double,iSize,mSize> sStrengh;
149 sStrengh << loopStrength,
157 Eigen::Matrix<double,mSize,mSize>
buildR1(
const Eigen::Matrix<double,iSize,1>& sinkValue,
const size_t& gID)
const
159 Eigen::Matrix<double,iSize,mSize> sStrengh(
sinkStrengths(sinkValue,gID));
161 Eigen::Matrix<double,mSize,mSize> R1sink(Eigen::Matrix<double,mSize,mSize>::Zero());
164 R1sink(
k,
k) -= sStrengh.col(
k).sum();
180 const Eigen::Matrix<double,iSize,1> sinkvalue((*
sinke)(ele,bary));
181 const Eigen::Matrix<double,
iSize/2,1> loopsDensity((Eigen::Matrix<double,iSize/2,1>()<<2.0*M_PI*sinkvalue(0)*sinkvalue(4),
182 2.0*M_PI*sinkvalue(1)*sinkvalue(5),
183 2.0*M_PI*sinkvalue(2)*sinkvalue(6),
184 2.0*M_PI*sinkvalue(3)*sinkvalue(7)).finished());
199 const size_t gID(*(ele.simplex.regionIDs().begin()));
201 Eigen::Matrix<double,rows,cols>
temp(
buildR1(sinkvalue,gID));