31 . PY1,PY2,STIFN ,STIFR,IXTG,
32 . THK,SH3TREE ,ALDT ,UPARAM ,IPM ,IGEO,
33 . PM_STACK, ISUBSTACK,STRTG,IMAT,IPROP,
34 . AREA ,DT ,X31G,Y31G,Z31G,
35 . E1X ,E2X ,E3X ,E1Y ,E2Y ,E3Y ,
36 . E1Z ,E2Z ,E3Z ,X2 ,X3 ,Y3 ,
42 use element_mod ,
only : nixtg
46#include "implicit_f.inc"
55#include "remesh_c.inc"
56#include "vect01_c.inc"
60 INTEGER JFT, JLT,ISUBSTACK,IMAT,IPROP
61 INTEGER IXTG(NIXTG,*), SH3TREE(KSH3TREE,*),IPM(NPROPMI,*),
65 . PM(NPROPM,*), GEO(NPROPG,*), PX1(*),PY1(*),PY2(*),
66 . STIFN(*),STIFR(*),THK(*),ALDT(*),UPARAM(*),PM_STACK(20,*),STRTG(*)
67 my_real
area(mvsiz),dt(mvsiz),
68 . x31g(mvsiz), y31g(mvsiz), z31g(mvsiz),
69 . x2(mvsiz), x3(mvsiz), y3(mvsiz),
70 . e1x(mvsiz), e1y(mvsiz), e1z(mvsiz),
71 . e2x(mvsiz), e2y(mvsiz), e2z(mvsiz),
72 . e3x(mvsiz), e3y(mvsiz), e3z(mvsiz)
73 TYPE (GROUP_PARAM_) :: GROUP_PARAM
77 INTEGER I, N, IADB,IGTYP,
80 my_real viscmx, a11, g, sti,stir,shf,viscdef,
81 . al1, al2, al3, almax, ssp,young,nu,rho,gmax,
87 igtyp = igeo(11,iprop)
88 igmat = igeo(98,iprop)
92 y3(i)=e2x(i)*x31g(i)+e2y(i)*y31g(i)+e2z(i)*z31g(i)
93 x3(i)=e1x(i)*x31g(i)+e1y(i)*y31g(i)+e1z(i)*z31g(i)
98 ELSEIF(mtn==25.OR.mtn==27 .OR. mtn == 125 .OR. mtn == 127)
THEN
105 al2 = (x3(i)-x2(i)) * (x3(i)-x2(i)) + y3(i) * y3(i)
106 al3 = x3(i) * x3(i) + y3(i) * y3(i)
107 almax =
max(al1,al2,al3)
108 IF(igtyp == 11 .AND. igmat > 0)
THEN
109 ssp = geo(ipgmat +9 ,iprop)
110 ELSEIF(igtyp == 52 .OR.
111 . ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0 ))
THEN
112 ssp = pm_stack(9 ,isubstack)
116 ELSEIF (mtn == 42)
THEN
120 a11 = gmax*(one + nu)/(one - nu**2)
121 ssp =
max(ssp, sqrt(a11/rho))
122 ELSEIF (mtn == 69)
THEN
125 gmax = uparam(iadb+1)*uparam(iadb+6)
126 . + uparam(iadb+2)*uparam(iadb+7)
127 . + uparam(iadb+3)*uparam(iadb+8)
128 . + uparam(iadb+4)*uparam(iadb+9)
129 . + uparam(iadb+5)*uparam(iadb+10)
131 a11 = gmax*(one + nu)/(one - nu**2)
132 ssp=
max(ssp, sqrt(a11/rho))
133 ELSEIF (mtn == 65)
THEN
141 ssp=sqrt(young/(one-nu*nu)/rho)
144 viscmx = group_param%VISC_DM
145 IF (viscmx == zero) viscmx = viscdef
146 IF(mtn==1.OR.mtn==2.OR.mtn==3.OR.
147 . mtn==22.OR.mtn==23) viscmx=zero
148 viscmx=sqrt(one+viscmx*viscmx)-viscmx
149 aldt(i)= two*
area(i) / sqrt(almax)
150 aldtv(i)= aldt(i)*viscmx
151 dt(i) = aldtv(i) / ssp
158 IF(igtyp == 11 .AND. igmat > 0)
THEN
159 viscmx = group_param%VISC_DM
161 g =geo(ipgmat +4,imat)
162 a11 =geo(ipgmat + 5,iprop)
163 a11r =geo(ipgmat + 7,iprop)
165 fac=
area(i) / (aldtv(i))**2
166 sti = fac* thk(i) * a11
167 stir = fac*a11r* (one_over_12*thk(i)**3
168 . + half * shf *
area(i) * g/a11)
169 stifn(ixtg(2,i))=stifn(ixtg(2,i))+sti
170 stifn(ixtg(3,i))=stifn(ixtg(3,i))+sti
171 stifn(ixtg(4,i))=stifn(ixtg(4,i))+sti
172 stifr(ixtg(2,i))=stifr(ixtg(2,i))+stir
173 stifr(ixtg(3,i))=stifr(ixtg(3,i))+stir
174 stifr(ixtg(4,i))=stifr(ixtg(4,i))+stir
177 ELSEIF(igtyp == 52 .OR.
178 . ((igtyp == 17 .OR. igtyp == 51 ).AND. igmat > 0 ))
THEN
179 viscmx = group_param%VISC_DM
181 g = pm_stack(4 ,isubstack)
182 a11 = pm_stack(5 ,isubstack)
183 a11r = pm_stack(7 ,isubstack)
185 fac=
area(i) / (aldtv(i))**2
186 sti = fac* thk(i) * a11
187 stir = fac*a11r* (one_over_12*thk(i)**3
188 . + half * shf *
area(i) * g/a11)
189 stifn(ixtg(2,i))=stifn(ixtg(2,i))+sti
190 stifn(ixtg(3,i))=stifn(ixtg(3,i))+sti
191 stifn(ixtg(4,i))=stifn(ixtg(4,i))+sti
192 stifr(ixtg(2,i))=stifr(ixtg(2,i))+stir
193 stifr(ixtg(3,i))=stifr(ixtg(3,i))+stir
194 stifr(ixtg(4,i))=stifr(ixtg(4,i))+stir
198 viscmx = group_param%VISC_DM
203 sti =
area(i) * thk(i) * a11 / (aldtv(i))**2
204 stir = sti * (thk(i) * thk(i) * one_over_12
205 . + half * shf *
area(i) * g/a11)
206 stifn(ixtg(2,i))=stifn(ixtg(2,i))+sti
207 stifn(ixtg(3,i))=stifn(ixtg(3,i))+sti
208 stifn(ixtg(4,i))=stifn(ixtg(4,i))+sti
209 stifr(ixtg(2,i))=stifr(ixtg(2,i))+stir
210 stifr(ixtg(3,i))=stifr(ixtg(3,i))+stir
211 stifr(ixtg(4,i))=stifr(ixtg(4,i))+stir
216 IF(igtyp == 11 .AND. igmat > 0)
THEN
217 viscmx = group_param%VISC_DM
220 IF(sh3tree(3,n) >= 0)
THEN
221 g =geo(ipgmat +4,imat)
222 a11 =geo(ipgmat + 5,iprop)
223 a11r =geo(ipgmat + 7,iprop)
225 fac=
area(i) / (aldtv(i))**2
226 sti = fac* thk(i) * a11
227 stir = fac*a11r* (one_over_12*thk(i)**3
228 . + half * shf *
area(i) * g/a11)
229 stifn(ixtg(2,i))=stifn(ixtg(2,i))+sti
230 stifn(ixtg(3,i))=stifn(ixtg(3,i))+sti
231 stifn(ixtg(4,i))=stifn(ixtg(4,i))+sti
232 stifr(ixtg(2,i))=stifr(ixtg(2,i))+stir
233 stifr(ixtg(3,i))=stifr(ixtg(3,i))+stir
234 stifr(ixtg(4,i))=stifr(ixtg(4,i))+stir
238 ELSEIF(igtyp == 52 .OR.
239 . ((igtyp == 17 .OR. igtyp == 51 ).AND. igmat > 0 ) )
THEN
240 viscmx = group_param%VISC_DM
243 IF(sh3tree(3,n) >= 0)
THEN
245 g = pm_stack(4 ,isubstack)
246 a11 = pm_stack(5 ,isubstack)
247 a11r = pm_stack(7 ,isubstack)
249 fac=
area(i) / (aldtv(i))**2
250 sti = fac* thk(i) * a11
251 stir = fac*a11r* (one_over_12*thk(i)**3
252 . + half * shf *
area(i) * g/a11)
253 stifn(ixtg(2,i))=stifn(ixtg(2,i))+sti
254 stifn(ixtg(3,i))=stifn(ixtg(3,i))+sti
255 stifn(ixtg(4,i))=stifn(ixtg(4,i))+sti
256 stifr(ixtg(2,i))=stifr(ixtg(2,i))+stir
257 stifr(ixtg(3,i))=stifr(ixtg(3,i))+stir
258 stifr(ixtg(4,i))=stifr(ixtg(4,i))+stir
264 viscmx = group_param%VISC_DM
267 IF(sh3tree(3,n) >= 0)
THEN
271 sti =
area(i) * thk(i) * a11 / (aldtv(i))**2
272 stir = sti * (thk(i) * thk(i) * one_over_12
273 . + half * shf *
area(i) * g/a11)
274 stifn(ixtg(2,i))=stifn(ixtg(2,i))+sti
275 stifn(ixtg(3,i))=stifn(ixtg(3,i))+sti
276 stifn(ixtg(4,i))=stifn(ixtg(4,i))+sti
277 stifr(ixtg(2,i))=stifr(ixtg(2,i))+stir
278 stifr(ixtg(3,i))=stifr(ixtg(3,i))+stir
279 stifr(ixtg(4,i))=stifr(ixtg(4,i))+stir
298 py1(i) = half*(x3(i)-x2(i))
303 IF(geo(5,iprop)==zero)
GOTO 80
304 geo(5,iprop)=
min(geo(5,iprop),dt(i))
subroutine c3derii(jft, jlt, pm, geo, px1, py1, py2, stifn, stifr, ixtg, thk, sh3tree, aldt, uparam, ipm, igeo, pm_stack, isubstack, strtg, imat, iprop, area, dt, x31g, y31g, z31g, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, x2, x3, y3, group_param)