48 1 JFT ,JLT ,PM ,FOR ,MOM ,THK ,
49 2 EINT ,OFF ,GSTR ,DIR ,SHF ,
50 3 MAT ,AREA ,EXX ,EYY ,EXY ,NEL ,
51 4 EXZ ,EYZ ,KXX ,KYY ,KXY ,DM ,
52 5 PID ,TF ,NPF ,MTN ,DT1C ,A1 ,
53 6 BUFMAT ,SSP ,RHO ,VISCMX,IOFC ,A2 ,
54 7 INDX ,NGL ,ZCFAC ,GS ,SIGY ,G ,
55 8 THK0 ,epsd_glob,IPLA ,IGEO ,IPM ,TABLE ,
56 9 IR ,IS ,F_DEF ,ISMSTR,NU ,VOL0 ,
57 A KFTS ,ZSHIFT ,idamp_freq_range,mat_elem,damp_buf,
63 use damping_range_shell_mod
64 use damping_range_shell_mom_mod
68#include "implicit_f.inc"
85 INTEGER JFT, JLT, MTN, IOFC, IPLA,NEL,IR,IS,ISMSTR,KFTS
86 INTEGER MAT(*), PID(*), NPF(*),NGL(*), INDX(*),IPM(NPROPMI,*)
87 integer,
intent(in) :: idamp_freq_range
89 my_real FOR(NEL,5), MOM(NEL,3), THK(*), EINT(JLT,2),PM(NPROPM,*),
90 . OFF(*), GSTR(NEL,8), DIR(*),VISCMX(*),
91 . AREA(*),TF(*),DT1C(*),
92 . EXX(*), EYY(*), EXY(*), EXZ(*), EYZ(*),
93 . KXX(*), KYY(*), KXY(*),BUFMAT(*),SSP(*),RHO(*),
94 . ZCFAC(MVSIZ,2),GS(*),SIGY(*),THK0(*),SHF(*),F_DEF(MVSIZ,8),
95 . A1(MVSIZ),A2(MVSIZ),G(MVSIZ),NU(MVSIZ),VOL0(*)
96 my_real,
INTENT(IN) :: zshift
97 my_real,
intent(in),
dimension(mvsiz) :: epsd_glob
98 my_real,
DIMENSION(NEL,5),
INTENT(INOUT) :: for_g
100 TYPE(elbuf_struct_),
TARGET :: ELBUF_STR
101 type (mat_elem_) ,
intent(in) ,
target :: mat_elem
102 type (buf_damp_range_) ,
intent(in) :: damp_buf
106 INTEGER IGTYP, I, NUVAR ,VP,NINDX,IGEO(NPROPGI,*),NVARTMP,
107 . mx,ioff_duct(mvsiz),israte,nuvarv,nvar_damp,imat,
111 . depsxx(mvsiz),depsyy(mvsiz),depsxy(mvsiz),depsyz(mvsiz),
112 . depszx(mvsiz),epsxx(mvsiz) ,epsyy(mvsiz) ,epsxy(mvsiz),
113 . epsyz(mvsiz) ,epszx(mvsiz) ,epspxx(mvsiz),epspyy(mvsiz),
114 . epspxy(mvsiz),epspyz(mvsiz),epspzx(mvsiz),sigoxx(mvsiz),
115 . sigoyy(mvsiz),sigoxy(mvsiz),sigoyz(mvsiz),sigozx(mvsiz),
116 . signxx(mvsiz),signyy(mvsiz),signxy(mvsiz),signyz(mvsiz),
117 . signzx(mvsiz),sigvxx(mvsiz),sigvyy(mvsiz),sigvxy(mvsiz),
118 . sigvyz(mvsiz),sigvzx(mvsiz),tens(5,mvsiz),
119 . young, visc, vol2, dtinv,asrate,sh_offset
121 . depbxx(mvsiz),depbyy(mvsiz),depbxy(mvsiz),
122 . momoxx(mvsiz),momoyy(mvsiz),momoxy(mvsiz),
123 . momnxx(mvsiz),momnyy(mvsiz),momnxy(mvsiz),
124 . etse(mvsiz) ,epspl(mvsiz),epsp_loc(mvsiz)
125 my_real,
DIMENSION(:) ,
POINTER :: uvar
126 my_real,
DIMENSION(:) ,
POINTER :: uvarv
127 my_real,
DIMENSION(NEL) :: off_old
129 INTEGER,
DIMENSION(:),
POINTER :: VARTMP
130 TYPE(L_BUFEL_) ,
POINTER :: LBUF
131 type(matparam_struct_) ,
pointer :: matparam
136 lbuf => elbuf_str%BUFLY(1)%LBUF(ir,is,1)
138 imat = elbuf_str%BUFLY(1)%IMAT
140 igtyp = igeo(11,pid(1))
141 IF(mtn==43.OR.mtn==56.OR.mtn==60.OR.mtn
THEN
142 nuvar = elbuf_str%BUFLY(1)%NVAR_MAT
143 uvar =>elbuf_str%BUFLY(1)%MAT(ir,is,1)%VAR
146 nvartmp= elbuf_str%BUFLY(1)%NVARTMP
147 vartmp=>elbuf_str%BUFLY(1)%MAT(ir,is,1)%VARTMP
149 ioff_duct(1:mvsiz) = 0
150 viscmx(1:mvsiz) = zero
153 degmb(i) = for(i,1)*exx(i)+for(i,2)*eyy(i)+for(i,3)*exy(i)
154 + + for(i,4)*eyz(i)+for(i,5)*exz(i)
155 degfx(i) = mom(i,1)*kxx(i)+mom(i,2)*kyy(i)+mom(i,3)*kxy
162 off_old(1:nel) = off(1:nel)
163 for(jft:jlt,1:5) = for_g(jft:jlt,1:5)
165 dtinv = dt1 /
max(dt1**2,em20)
173 asrate =
min(one, pm(9,imat)*dt1)
177 if (elbuf_str%bufly(1)%l_epsd > 0)
then
178 epspl(1:nel) = asrate*epsd_glob(1:nel) + (one-asrate)*lbuf%epsd(1:nel)
233 tens(3,i) = half*exy(i)
234 tens(4,i) = half*eyz(i)
235 tens(5,i) = half*exz(i)
237 CALL roto(jft,jlt,tens,dir,nel)
239 depsxx(i) = tens(1,i)
240 depsyy(i) = tens(2,i)
241 depsxy(i) = two*tens(3,i)
242 depsyz(i) = two*tens(4,i)
243 depszx(i) = two*tens(5,i)
246 tens(1,i) = gstr(i,1)
247 tens(2,i) = gstr(i,2)
248 tens(3,i) = half*gstr(i,3)
249 tens(4,i) = half*gstr(i,4)
250 tens(5,i) = half*gstr(i,5)
252 CALL roto(jft,jlt,tens,dir,nel)
256 epsxy(i) = two*tens(3,i)
257 epsyz(i) = two*tens(4,i)
258 epszx(i) = two*tens(5,i)
267 CALL roto(jft,jlt,tens,dir,nel)
269 sigoxx(i) = tens(1,i)
270 sigoyy(i) = tens(2,i)
271 sigoxy(i) = tens(3,i)
272 sigoyz(i) = tens(4,i)
273 sigozx(i) = tens(5,i)
282 CALL roto(jft,jlt,tens,dir,nel)
284 depbxx(i) = tens(1,i)
285 depbyy(i) = tens(2,i)
286 depbxy(i) = tens(3,i)
295 CALL roto(jft,jlt,tens,dir,nel)
297 momoxx(i) = tens(1,i)
298 momoyy(i) = tens(2,i)
299 momoxy(i) = tens(3,i)
304 epspxx(i) = depsxx(i)*dtinv
305 epspyy(i) = depsyy(i)*dtinv
306 epspxy(i) = depsxy(i)*dtinv
307 epspyz(i) = depsyz(i)*dtinv
308 epspzx(i) = depszx(i)*dtinv
317 2 nel ,f_def ,ismstr ,depsxx ,depsyy ,
318 3 depsxy ,depsyz ,depszx ,depbxx ,depbyy ,
319 4 depbxy ,sigoxx ,sigoyy ,sigoxy ,sigoyz ,
320 5 sigozx ,momoxx ,momoyy ,momoxy ,signxx ,
321 6 signyy ,signxy ,signyz ,signzx ,momnxx ,
323 ELSEIF (mtn == 2)
THEN
326 1 jft ,jlt ,pm ,for ,mom ,
327 2 thkn ,eint ,off ,dt1c ,israte ,
328 3 g ,a1 ,a2 ,vol0 ,nu ,
329 4 thk0 ,gs ,epspl ,iofc ,kfts ,
330 5 ngl ,indx ,ipla ,ir ,is ,
331 6 degmb ,degfx ,depsxx ,depsyy ,mx ,
332 7 depsxy ,depsyz ,depszx ,depbxx ,depbyy ,
333 8 depbxy ,sigoxx ,sigoyy ,sigoxy ,sigoyz ,
334 9 sigozx ,momoxx ,momoyy ,momoxy
335 a signyy ,signxy ,signyz ,signzx ,momnxx ,
336 b momnyy ,momnxy ,etse ,exz ,eyz ,
337 c nel ,ioff_duct,vp , nuvar ,uvar )
338 ELSEIF (mtn == 22)
THEN
340 1 jft ,jlt ,pm ,for ,mom ,
341 2 thkn ,off ,dt1c ,nu ,thk0 ,
342 3 gs ,epspl ,iofc ,indx ,nel ,
343 4 ngl ,exz ,eyz ,mx ,ioff_duct,
344 5 degmb ,degfx ,depsxx ,depsyy ,depsxy ,
346 7 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
347 8 momoxx ,momoyy ,momoxy ,signxx ,signyy ,
348 9 signxy ,signyz ,signzx ,momnxx ,momnyy ,
350 ELSEIF (mtn == 36)
THEN
353 2 tf ,tt ,bufmat ,rho ,
355 4 epspxx ,epspyy ,epspxy ,epspyz ,epspzx ,
356 5 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
357 5 depbxx ,depbyy ,depbxy ,
358 6 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
359 7 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
360 7 momoxx ,momoyy ,momoxy ,
361 8 signxx ,signyy ,signxy ,signyz ,signzx ,
362 8 momnxx ,momnyy ,momnxy ,
363 9 sigvxx ,sigvyy ,sigvxy ,sigvyz ,sigvzx ,
364 a ssp ,viscmx ,thkn ,lbuf%PLA ,
365 b off ,ngl ,ipm ,mat ,etse ,
366 c gs ,sigy ,epspl ,israte ,ipla,
367 d shf ,nvartmp,vartmp)
368 ELSEIF (mtn == 43)
THEN
371 2 tf ,tt ,bufmat ,rho ,
373 4 epspxx ,epspyy ,epspxy ,epspyz ,epspzx ,
374 5 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
375 5 depbxx ,depbyy ,depbxy ,
376 6 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
377 7 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
378 7 momoxx ,momoyy ,momoxy ,
379 8 signxx ,signyy ,signxy
380 8 momnxx ,momnyy ,momnxy ,
381 9 sigvxx ,sigvyy ,sigvxy ,sigvyz ,sigvzx ,
382 a ssp ,viscmx ,thkn ,lbuf%PLA,uvar ,
383 b off ,ngl ,ipm ,mat ,etse ,
384 c gs ,sigy ,shf ,lbuf%SEQ,epspl )
385 ELSEIF (mtn == 56)
THEN
388 2 tf ,tt ,bufmat ,rho ,
390 4 epspxx ,epspyy ,epspxy ,epspyz ,epspzx ,
391 5 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
392 5 depbxx ,depbyy ,depbxy ,
393 6 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
394 7 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
395 7 momoxx ,momoyy ,momoxy ,
396 8 signxx ,signyy ,signxy ,signyz ,signzx ,
397 8 momnxx ,momnyy ,momnxy ,
398 9 sigvxx ,sigvyy ,sigvxy ,sigvyz ,sigvzx ,
399 a ssp ,viscmx ,thkn ,lbuf%PLA,uvar ,
400 b off ,ngl ,ipm ,mat ,etse ,
401 c gs ,sigy ,epspl ,israte ,ipla)
402 ELSEIF (mtn == 60)
THEN
405 2 tf ,tt ,bufmat ,rho ,
407 4 epspxx ,epspyy ,epspxy ,epspyz ,epspzx ,
408 5 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
409 5 depbxx ,depbyy ,depbxy ,
410 6 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
411 7 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
412 7 momoxx ,momoyy ,momoxy ,
413 8 signxx ,signyy ,signxy ,signyz ,signzx ,
414 8 momnxx ,momnyy ,momnxy ,
415 9 sigvxx ,sigvyy ,sigvxy ,sigvyz ,sigvzx ,
416 a ssp ,viscmx ,thkn ,lbuf%PLA,uvar ,
417 b off ,ngl ,ipm ,mat ,etse ,
418 c gs ,sigy ,epspl ,israte ,ipla ,
420 ELSEIF (mtn == 86)
THEN
423 2 tf ,tt ,bufmat ,rho ,
425 4 epspxx ,epspyy ,epspxy ,epspyz ,epspzx ,
426 5 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
427 5 depbxx ,depbyy ,depbxy ,
428 6 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
429 7 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
430 7 momoxx ,momoyy ,momoxy ,
431 8 signxx ,signyy ,signxy ,signyz ,signzx ,
432 8 momnxx ,momnyy ,momnxy ,
433 9 sigvxx ,sigvyy ,sigvxy ,sigvyz ,sigvzx ,
434 a ssp ,viscmx ,thkn ,lbuf%PLA,uvar ,
435 b off ,ngl ,ipm ,mat ,etse ,
436 c gs ,sigy ,epspl ,israte ,ipla)
441 if (idamp_freq_range > 0)
then
442 nuvarv = elbuf_str%BUFLY(1)%NVAR_VISC
443 uvarv => elbuf_str%BUFLY(1)%VISC(ir,is,1)%VAR
446 call damping_range_shell(damp_buf,nel ,nuvarv ,nvar_damp,dt1 ,
447 . rho ,ssp ,mat_elem%mat_param(imat)%young,mat_elem%mat_param(imat)%shear,
448 . epspxx ,epspyy ,epspxy ,epspyz ,epspzx ,
449 . sigvxx ,sigvyy ,sigvxy ,sigvyz ,sigvzx ,
450 . uvarv ,off ,etse ,flag_incr)
452 call damping_range_shell_mom(damp_buf,nel ,nuvarv ,dt1 ,dtinv ,
453 . mat_elem%mat_param(imat)%young,mat_elem%mat_param(imat)%shear,depbxx ,depbyy ,depbxy ,
454 . momnxx ,momnyy ,momnxy ,thk0 ,uvarv ,
468 CALL uroto(jft,jlt,tens,dir,nel)
483 CALL uroto(jft,jlt,tens,dir,nel)
498 CALL uroto(jft,jlt,tens,dir,nel)
509 for_g(i,1) = signxx(i)+sigvxx(i)
510 for_g(i,2) = signyy(i)+sigvyy(i)
511 for_g(i,3) = signxy(i)+sigvxy(i)
512 for_g(i,4) = signyz(i)+sigvyz(i)
513 for_g(i,5) = signzx(i)+sigvzx(i)
518 for(jft:jlt,1:5) = for_g(jft:jlt,1:5)
523 thk(i) =
max(thkn(i),em30)
530 zcfac(i,2) = zcfac(i,1)
535 IF (zshift /= zero)
THEN
537 sh_offset = zshift*thk(i)
538 mom(i,1:3) = mom(i,1:3) + for(i,1:3) *sh_offset*sh_offset
546 viscmx(i) =
max(viscmx(i),dm)
547 visc = onep414*dm*rho(i)*ssp(i)*sqrt(area(i))*dtinv
548 for(i,1) = for(i,1) + visc*(exx(i)+half*eyy(i))
549 for(i,2) = for(i,2) + visc*(eyy(i)+half*exx(i))
550 for(i,3) = for(i,3) + visc* exy(i)*third
555 for(i,1)=for(i,1)*off(i)
556 for(i,2)=for(i,2)*off(i)
557 for(i,3)=for(i,3)*off(i)
558 for(i,4)=for(i,4)*off(i)
559 for(i,5)=for(i,5)*off(i)
560 mom(i,1)=mom(i,1)*off(i)
561 mom(i,2)=mom(i,2)*off(i)
562 mom(i,3)=mom(i,3)*off(i)
566 degmb(i) = degmb(i)+ for(i,1)*exx(i)+for(i,2)*eyy(i)
567 . + for(i,3)*exy(i)+for(i,4)*eyz(i)+for(i,5)*exz(i)
568 degfx(i) = degfx(i)+mom(i,1)*kxx(i)+mom(i,2)*kyy(i)
570 vol2 = half*thk0(i)*area(i)*off(i)
571 eint(i,1) = eint(i,1) + degmb(i)*vol2
572 eint(i,2) = eint(i,2) + degfx(i)*thk0(i)*vol2
580 IF (off(i) == four_over_5 . and. ioff_duct(i) == 0)
THEN
590 IF ((off_old(i) > zero) .AND. (off(i) == zero))
THEN
596 IF (imconv == 1)
THEN
599 WRITE(iout, 1000) ngl(indx(i))
600 WRITE(istdo,1100) ngl(indx(i)),tt
601#include
"lockoff.inc"
607 1000
FORMAT(1x,
'-- RUPTURE OF SHELL ELEMENT NUMBER ',i10)
608 1100
FORMAT(1x,
'-- RUPTURE OF SHELL ELEMENT :',i10,
' AT TIME :',g11.4)