54 particle,nparticle,nparticletype,interfac,ninterfac,stress, strain, ilarge, ismall)
110 REAL*8 dfgrad(3,3),
matrix(nmatrix), &
111 particle(nparticle,nparticletype),interfac(ninterfac), &
114 REAL*8 :: ilarge, ismall
117 REAL*8 alpha(nparticletype),alphaprime(nparticletype), &
118 bulkp(nparticletype),shearp(nparticletype), &
119 strain(3,3),stressprime(3,3),strainprime(3,3), &
120 mstrainpt(5),mstresspt(5)
123 REAL*8 em,posm,bulkm,shearm,bulkcomposite,shearcomposite,strength, &
124 kinthard,kintsoft,stressmean,strainmean
129 strain(
i,
j)= dfgrad(1,
i)*dfgrad(1,
j) &
130 +dfgrad(2,
i)*dfgrad(2,
j) &
131 +dfgrad(3,
i)*dfgrad(3,
j)
133 strain(
i,
j)=(strain(
i,
j)-1)*0.5d0
135 strain(
i,
j)=strain(
i,
j)*0.5d0
141 strainmean=(strain(1,1)+strain(2,2)+strain(3,3))/3.d0
145 strainprime(
i,
j)=strain(
i,
j)-strainmean
147 strainprime(
i,
j)=strain(
i,
j)
155 bulkm= em/(3.d0*(1.d0-2.d0*posm))
156 shearm=em/(2.d0*(1.d0+posm))
162 bulkp(
i)=particle(1,
i)/(3*(1-2*particle(2,
i)))
163 shearp(
i)=particle(1,
i)/(2*(1+particle(2,
i)))
164 alpha(
i)=3.d0*(1-posm)/(2*em) &
165 /( 1.d0/(kinthard*particle(4,
i)) &
166 +1.d0/(3.d0*bulkp(
i)) &
168 alphaprime(
i)=-3.d0*(1.d0-posm)/(2.d0*em) &
169 /(-1.d0/(kintsoft*particle(4,
i)) &
170 +1.d0/(3.d0*bulkp(
i)) &
184 alphaprime1=alphaprime(1)
185 alphaprime2=alphaprime(2)
188 aprime=1.d0/(1.d0/(4.d0*shearm)+1.d0/(3.d0*bulkp(1)))/kintsoft
196 mstrainpt(2)=strength/(2.d0*em*alpha1) &
197 *(2.d0*(1.d0-2.d0*posm)-(1.d0+posm)*(-
c+c2*alpha2+c1*alpha1))
198 mstresspt(2)=strength*(1.d0-
c+c2*alpha2+c1*alpha1)/alpha1
200 mstrainpt(3)=strength*(1.d0/alpha1+1.d0/alphaprime1) &
201 *(2.d0*(1.d0-2.d0*posm)+(1.d0+posm)*(
c-c2*alpha2))/(2.d0*em)
202 mstresspt(3)=strength*(1.d0/alpha1+1.d0/alphaprime1)*(1.d0-
c+c2*alpha2)
204 mstrainpt(4)=strength*(2.d0*(1.d0-2.d0*posm)+
c*(1.d0+posm)-(1.d0+posm)*c2*alpha2) &
206 mstresspt(4)=strength*(1.d0-
c+c2*alpha2)/alpha2
208 mstrainpt(5)=strength/(2.d0*em) &
209 *(1/alpha2+1/alphaprime2)*(2*(1-2*posm)+
c*(1+posm))
210 mstresspt(5)=(1.d0-
c)*strength*(1.d0/alpha2+1.d0/alphaprime2)
213 IF (a1.LT.aprime)
THEN
215 mstrainpt(3)=strength/(2.d0*em) &
216 *(2.d0*(1.d0-2.d0*posm)/alpha2 &
217 -(1.d0+posm)*(
c+c1*alphaprime1*(1.d0/alpha1-1.d0/alpha2) &
219 mstresspt(3)=strength &
220 *((1.d0-
c)/alpha2+
c+c1*alphaprime1 &
221 *(1.d0/alpha1-1.d0/alpha2))
223 mstrainpt(4)=strength/(2.d0*em) &
224 *((2.d0*(1.d0-2.d0*posm)+
c*(1.d0+posm)) &
225 *(1.d0/alpha1+1.d0/alphaprime1) &
226 -(1.d0+posm)*c2*(1.d0-alphaprime2/alpha1 &
227 -alphaprime2/alphaprime1 &
228 +alphaprime2/alpha2))
229 mstresspt(4)=strength*((1.d0-
c)*(1.d0/alpha1+1.d0/alphaprime1) &
230 +c2*(1.d0-alphaprime2/alpha1 &
231 -alphaprime2/alphaprime1 &
232 +alphaprime2/alpha2))
237 IF (strainmean.GE.mstrainpt(
i).AND. &
238 strainmean.LT.mstrainpt(
i+1))
THEN
239 stressmean=mstresspt(
i)+(strainmean-mstrainpt(
i)) &
240 *(mstresspt(
i+1)-mstresspt(
i)) &
241 /(mstrainpt(
i+1)-mstrainpt(
i))
250 IF(a1.LT.aprime)
THEN
263 IF (strainmean.GE.mstrainpt(5))
THEN
264 stressmean=mstresspt(5)*strainmean/mstrainpt(5)
268 IF (strainmean.LT.0)
THEN
269 bulkcomposite=bulkm+
c*(bulkp(1)-bulkm)*3.d0*(1-posm) &
270 /(3.d0*(1.d0-posm)+(1.d0+posm) &
271 *(bulkp(1)/bulkm-1.d0)*(1.d0-
c))
272 stressmean=3.d0*bulkcomposite*strainmean
278 shearcomposite=shearm+
c*(shearp(1)-shearm)*15.d0*(1.d0-posm) &
279 /(15.d0*(1.d0-posm)+2.d0*(4.d0-5.d0*posm) &
280 *(shearp(1)/shearm-1.d0)*(1.d0-
c))
283 stressprime(
i,
j)=2.d0*shearcomposite*strainprime(
i,
j)
291 stress(
i,
j)=stressprime(
i,
j)+stressmean
293 stress(
i,
j)=stressprime(
i,
j)
subroutine huang_const_model(dfgrad, matrix, nmatrix, particle, nparticle, nparticletype, interfac, ninterfac, stress, strain, ilarge, ismall)
CImg< T > & matrix()
Realign pixel values of the instance image as a square matrix.
unsigned char alpha() const