Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MP/Source/HUANG_Const_Model.f90
Go to the documentation of this file.
1 !*********************************************************************
2 !* Illinois Open Source License *
3 !* *
4 !* University of Illinois/NCSA *
5 !* Open Source License *
6 !* *
7 !* Copyright@2008, University of Illinois. All rights reserved. *
8 !* *
9 !* Developed by: *
10 !* *
11 !* Center for Simulation of Advanced Rockets *
12 !* *
13 !* University of Illinois *
14 !* *
15 !* www.csar.uiuc.edu *
16 !* *
17 !* Permission is hereby granted, free of charge, to any person *
18 !* obtaining a copy of this software and associated documentation *
19 !* files (the "Software"), to deal with the Software without *
20 !* restriction, including without limitation the rights to use, *
21 !* copy, modify, merge, publish, distribute, sublicense, and/or *
22 !* sell copies of the Software, and to permit persons to whom the *
23 !* Software is furnished to do so, subject to the following *
24 !* conditions: *
25 !* *
26 !* *
27 !* @ Redistributions of source code must retain the above copyright *
28 !* notice, this list of conditions and the following disclaimers. *
29 !* *
30 !* @ Redistributions in binary form must reproduce the above *
31 !* copyright notice, this list of conditions and the following *
32 !* disclaimers in the documentation and/or other materials *
33 !* provided with the distribution. *
34 !* *
35 !* @ Neither the names of the Center for Simulation of Advanced *
36 !* Rockets, the University of Illinois, nor the names of its *
37 !* contributors may be used to endorse or promote products derived *
38 !* from this Software without specific prior written permission. *
39 !* *
40 !* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, *
41 !* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES *
42 !* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND *
43 !* NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR *
44 !* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
45 !* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
46 !* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE *
47 !* USE OR OTHER DEALINGS WITH THE SOFTWARE. *
48 !*********************************************************************
49 !* Please acknowledge The University of Illinois Center for *
50 !* Simulation of Advanced Rockets in works and publications *
51 !* resulting from this software or its derivatives. *
52 !*********************************************************************
53 SUBROUTINE huang_const_model(dfgrad,matrix,nmatrix, &
54  particle,nparticle,nparticletype,interfac,ninterfac,stress, strain, ilarge, ismall)
55 
56 
57 !----- this program is for the constitutive modeling of solid propellants
58 ! accounting for the effect of particle/matrix interface debonding. the
59 ! program can handle one or two types of particles that have the same
60 ! elastic moduli but different radii.
61 
62 !----- input: all variables above except the last few, i.e.,
63 ! dfgrad,matrix,nmatrix,particle,nparticle,
64 ! interfac,ninterfac
65 !----- output: the last few variables, stress, strain, ilarge, ismall
66 
67 !----- arrays for input/output
68  REAL*8 dfgrad(3,3),matrix(nmatrix), &
69  particle(nparticle,nparticletype),interfac(ninterfac), &
70  stress(3,3)
71 
72  REAL*8 :: ilarge, ismall
73 
74 ! dfgrad: deformation gradient
75 ! nmatrix: number of matrix properties
76 ! matrix: properties of the matrix
77 ! matrix(1): young's modulus of the matrix
78 ! matrix(2): poisson's ratio of the matrix
79 ! matrix(3): volume fraction of the matrix
80 ! nparticletype: number of the particle types
81 ! nparticletype is no more than 2 in this program!
82 ! nparticle: number particle properties for each type
83 ! particle: properties of particles
84 ! particle(1,i): young's modulus of type-i particles
85 ! particle(2,i): poisson's ratio of type-i particles
86 ! particle(3,i): volume fraction of type-i particles
87 ! particle(4,i): radius of type-i particles
88 ! ninterfac: number of interface properties
89 ! interfac: properties of the interface
90 ! interfac(1): strength of the interface
91 ! interfac(2): linear modulus of the interface
92 ! interfac(3): softening modulus of the interface
93 ! stress: stress tensor
94 ! strain: strain tensor
95 ! ilarge, ismall: damage information for large and small particles
96 ! ilarge=1: large particles not failed
97 ! ilarge=2: large particles is failing
98 ! ilarge=3: large particles completely failed
99 ! ismall=1: small particles not failed
100 ! ismall=2: small particles is failing
101 ! ismall=3: small particles completely failed
102 
103 
104 
105 !----- arrays for the internal use in the subroutine
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)
110 
111 !----- variables for internal use in the subroutine
112  REAL*8 em,posm,bulkm,shearm,bulkcomposite,shearcomposite,strength, &
113  kinthard,kintsoft,stressmean,strainmean
114 
115 !----- the green strain
116  DO i=1,3
117  DO j=1,3
118  strain(i,j)= dfgrad(1,i)*dfgrad(1,j) &
119  +dfgrad(2,i)*dfgrad(2,j) &
120  +dfgrad(3,i)*dfgrad(3,j)
121  IF (i.EQ.j) THEN
122  strain(i,j)=(strain(i,j)-1)*0.5d0
123  ELSE
124  strain(i,j)=strain(i,j)*0.5d0
125  END IF
126  ENDDO
127  ENDDO
128 
129 !----- the mean and deviatoric strains
130  strainmean=(strain(1,1)+strain(2,2)+strain(3,3))/3.d0
131  DO i=1,3
132  DO j=1,3
133  IF (i.EQ.j) THEN
134  strainprime(i,j)=strain(i,j)-strainmean
135  ELSE
136  strainprime(i,j)=strain(i,j)
137  END IF
138  ENDDO
139  ENDDO
140 
141 !----- parameters for particles: alpha and alphaprime
142  em = matrix(1)
143  posm = matrix(2)
144  bulkm= em/(3.d0*(1.d0-2.d0*posm))
145  shearm=em/(2.d0*(1.d0+posm))
146  strength=interfac(1)
147  kinthard=interfac(2)
148  kintsoft=interfac(3)
149 
150  DO i=1,nparticletype
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)) &
156  +1.d0/(4.d0*shearm))
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)) &
160  +1.d0/(4.d0*shearm))
161 
162  ENDDO
163 
164 
165  c1=particle(3,1)
166  c2=particle(3,2)
167  a1=particle(4,1)
168  a2=particle(4,2)
169  c=c1+c2
170 
171  alpha1=alpha(1)
172  alpha2=alpha(2)
173  alphaprime1=alphaprime(1)
174  alphaprime2=alphaprime(2)
175 
176 !----- critical particle radius
177  aprime=1.d0/(1.d0/(4.d0*shearm)+1.d0/(3.d0*bulkp(1)))/kintsoft
178 
179 !----- the mean stress and strain of the composite at the transition point
180 ! between different stages.
181 ! path2:(i,i)->(ii,i)->(iii,i)->(iii,ii)->(iii,iii)
182  mstrainpt(1)=0.d0
183  mstresspt(1)=0.d0
184 ! (i,i)->(ii,i)
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
188 ! (ii,i)->(iii,i)
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)
192 ! (iii,i)->(iii,ii)
193  mstrainpt(4)=strength*(2.d0*(1.d0-2.d0*posm)+c*(1.d0+posm)-(1.d0+posm)*c2*alpha2) &
194  /(2.d0*em*alpha2)
195  mstresspt(4)=strength*(1.d0-c+c2*alpha2)/alpha2
196 ! (iii,ii)->(iii,iii)
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)
200 
201 ! path1:(i,i)->(ii,i)->(ii,ii)->(iii,ii)->(iii,iii)
202  IF (a1.LT.aprime) THEN
203 ! (ii,i)->(ii,ii)
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) &
207  -c/alpha2))
208  mstresspt(3)=strength &
209  *((1.d0-c)/alpha2+c+c1*alphaprime1 &
210  *(1.d0/alpha1-1.d0/alpha2))
211 ! (ii,ii)->(iii,ii)
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))
222  END IF
223 
224 !---- mean stress in the composite
225  DO i=1,4
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))
231 
232  IF(i.EQ.1) THEN
233  ilarge=1
234  ismall=1
235  ELSE IF(i.EQ.2) THEN
236  ilarge=2
237  ismall=1
238  ELSE IF(i.EQ.3) THEN
239  IF(a1.LT.aprime) THEN
240  ilarge=2
241  ismall=2
242  ELSE
243  ilarge=3
244  ismall=1
245  ENDIF
246  ELSE IF(i.EQ.4) THEN
247  ilarge=3
248  ismall=2
249  ENDIF
250  END IF
251  ENDDO
252  IF (strainmean.GE.mstrainpt(5)) THEN
253  stressmean=mstresspt(5)*strainmean/mstrainpt(5)
254  ilarge=3
255  ismall=3
256  END IF
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
262  ilarge=1
263  ismall=1
264  END IF
265 
266 !----- deviatoric stress
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))
270  DO i=1,3
271  DO j=1,3
272  stressprime(i,j)=2.d0*shearcomposite*strainprime(i,j)
273  ENDDO
274  ENDDO
275 
276 !----- update the stress
277  DO i=1,3
278  DO j=1,3
279  IF (i.EQ.j) THEN
280  stress(i,j)=stressprime(i,j)+stressmean
281  ELSE
282  stress(i,j)=stressprime(i,j)
283  END IF
284  ENDDO
285  ENDDO
286 
287 END SUBROUTINE huang_const_model
288 
subroutine huang_const_model(dfgrad, matrix, nmatrix, particle, nparticle, nparticletype, interfac, ninterfac, stress, strain, ilarge, ismall)
RT c() const
Definition: Line_2.h:150
blockLoc i
Definition: read.cpp:79
CImg< T > & matrix()
Realign pixel values of the instance image as a square matrix.
Definition: CImg.h:13343
j indices j
Definition: Indexing.h:6
unsigned char alpha() const
Definition: Color.h:75