54 particle,nparticle,nparticletype,interfac,ninterfac,stress, strain, ilarge, ismall)
68 REAL*8 dfgrad(3,3),
matrix(nmatrix), &
69 particle(nparticle,nparticletype),interfac(ninterfac), &
72 REAL*8 :: ilarge, ismall
106 REAL*8 alpha(nparticletype),alphaprime(nparticletype), &
107 bulkp(nparticletype),shearp(nparticletype), &
108 strain(3,3),stressprime(3,3),strainprime(3,3), &
109 mstrainpt(5),mstresspt(5)
112 REAL*8 em,posm,bulkm,shearm,bulkcomposite,shearcomposite,strength, &
113 kinthard,kintsoft,stressmean,strainmean
118 strain(
i,
j)= dfgrad(1,
i)*dfgrad(1,
j) &
119 +dfgrad(2,
i)*dfgrad(2,
j) &
120 +dfgrad(3,
i)*dfgrad(3,
j)
122 strain(
i,
j)=(strain(
i,
j)-1)*0.5d0
124 strain(
i,
j)=strain(
i,
j)*0.5d0
130 strainmean=(strain(1,1)+strain(2,2)+strain(3,3))/3.d0
134 strainprime(
i,
j)=strain(
i,
j)-strainmean
136 strainprime(
i,
j)=strain(
i,
j)
144 bulkm= em/(3.d0*(1.d0-2.d0*posm))
145 shearm=em/(2.d0*(1.d0+posm))
151 bulkp(
i)=particle(1,
i)/(3*(1-2*particle(2,
i)))
152 shearp(
i)=particle(1,
i)/(2*(1+particle(2,
i)))
153 alpha(
i)=3.d0*(1-posm)/(2*em) &
154 /( 1.d0/(kinthard*particle(4,
i)) &
155 +1.d0/(3.d0*bulkp(
i)) &
157 alphaprime(
i)=-3.d0*(1.d0-posm)/(2.d0*em) &
158 /(-1.d0/(kintsoft*particle(4,
i)) &
159 +1.d0/(3.d0*bulkp(
i)) &
173 alphaprime1=alphaprime(1)
174 alphaprime2=alphaprime(2)
177 aprime=1.d0/(1.d0/(4.d0*shearm)+1.d0/(3.d0*bulkp(1)))/kintsoft
185 mstrainpt(2)=strength/(2.d0*em*alpha1) &
186 *(2.d0*(1.d0-2.d0*posm)-(1.d0+posm)*(-
c+c2*alpha2+c1*alpha1))
187 mstresspt(2)=strength*(1.d0-
c+c2*alpha2+c1*alpha1)/alpha1
189 mstrainpt(3)=strength*(1.d0/alpha1+1.d0/alphaprime1) &
190 *(2.d0*(1.d0-2.d0*posm)+(1.d0+posm)*(
c-c2*alpha2))/(2.d0*em)
191 mstresspt(3)=strength*(1.d0/alpha1+1.d0/alphaprime1)*(1.d0-
c+c2*alpha2)
193 mstrainpt(4)=strength*(2.d0*(1.d0-2.d0*posm)+
c*(1.d0+posm)-(1.d0+posm)*c2*alpha2) &
195 mstresspt(4)=strength*(1.d0-
c+c2*alpha2)/alpha2
197 mstrainpt(5)=strength/(2.d0*em) &
198 *(1/alpha2+1/alphaprime2)*(2*(1-2*posm)+
c*(1+posm))
199 mstresspt(5)=(1.d0-
c)*strength*(1.d0/alpha2+1.d0/alphaprime2)
202 IF (a1.LT.aprime)
THEN
204 mstrainpt(3)=strength/(2.d0*em) &
205 *(2.d0*(1.d0-2.d0*posm)/alpha2 &
206 -(1.d0+posm)*(
c+c1*alphaprime1*(1.d0/alpha1-1.d0/alpha2) &
208 mstresspt(3)=strength &
209 *((1.d0-
c)/alpha2+
c+c1*alphaprime1 &
210 *(1.d0/alpha1-1.d0/alpha2))
212 mstrainpt(4)=strength/(2.d0*em) &
213 *((2.d0*(1.d0-2.d0*posm)+
c*(1.d0+posm)) &
214 *(1.d0/alpha1+1.d0/alphaprime1) &
215 -(1.d0+posm)*c2*(1.d0-alphaprime2/alpha1 &
216 -alphaprime2/alphaprime1 &
217 +alphaprime2/alpha2))
218 mstresspt(4)=strength*((1.d0-
c)*(1.d0/alpha1+1.d0/alphaprime1) &
219 +c2*(1.d0-alphaprime2/alpha1 &
220 -alphaprime2/alphaprime1 &
221 +alphaprime2/alpha2))
226 IF (strainmean.GE.mstrainpt(
i).AND. &
227 strainmean.LT.mstrainpt(
i+1))
THEN
228 stressmean=mstresspt(
i)+(strainmean-mstrainpt(
i)) &
229 *(mstresspt(
i+1)-mstresspt(
i)) &
230 /(mstrainpt(
i+1)-mstrainpt(
i))
239 IF(a1.LT.aprime)
THEN
252 IF (strainmean.GE.mstrainpt(5))
THEN
253 stressmean=mstresspt(5)*strainmean/mstrainpt(5)
257 IF (strainmean.LT.0)
THEN
258 bulkcomposite=bulkm+
c*(bulkp(1)-bulkm)*3.d0*(1-posm) &
259 /(3.d0*(1.d0-posm)+(1.d0+posm) &
260 *(bulkp(1)/bulkm-1.d0)*(1.d0-
c))
261 stressmean=3.d0*bulkcomposite*strainmean
267 shearcomposite=shearm+
c*(shearp(1)-shearm)*15.d0*(1.d0-posm) &
268 /(15.d0*(1.d0-posm)+2.d0*(4.d0-5.d0*posm) &
269 *(shearp(1)/shearm-1.d0)*(1.d0-
c))
272 stressprime(
i,
j)=2.d0*shearcomposite*strainprime(
i,
j)
280 stress(
i,
j)=stressprime(
i,
j)+stressmean
282 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