36
37
38
39 USE elbufdef_mod
40
41
42
43#include "implicit_f.inc"
44#include "mvsiz_p.inc"
45#include "param_c.inc"
46
47
48
49 INTEGER LFT,LLT, NPTR,NLAY,NPTT,ICR,ICS,ICT,ICP,NEL,
50 . MTN,NPE,NIPMAX,MXT(*)
52 . vx(mvsiz,*),vy(mvsiz,*),vz(mvsiz,*),
53 . px(mvsiz,npe,*),py(mvsiz,npe,*),pz(mvsiz,npe,*),
54 . dt1 ,w_gauss(9,9),defp(*),pm(npropm,*),sig(nel,6)
55 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
56
57
58
59 INTEGER I,IL,IS,IT,IR,IP,WI,N, MX
60
62 . dvm(mvsiz), dv(mvsiz,nipmax),fac(mvsiz),dt3,dvp,f,e0(mvsiz)
63 TYPE(G_BUFEL_) ,POINTER :: GBUF
64 TYPE(L_BUFEL_) ,POINTER :: LBUF
65
66 gbuf => elbuf_str%GBUF
67 is = 1
68 DO i=lft,llt
69 dvm(i)=zero
70 ENDDO
71
72 DO it=1,nptt
73 DO ir=1,nptr
74 DO il=1,nlay
75 lbuf => elbuf_str%BUFLY(il)%LBUF(ir,is,it)
76 ip = ir + ( (il-1) + (it-1)*nlay )*nptr
77 wi = w_gauss(ir,nptr)*w_gauss(il,nlay)*w_gauss(it,nptt)
78 DO i=lft,llt
79 dv(i,ip)=zero
80 ENDDO
81 DO n=1,npe
82 DO i=lft,llt
83 dv(i,ip)=dv(i,ip)+px(i,n,ip)*vx(i,n)+py(i,n,ip)*vy(i,n)
84 . +pz(i,n,ip)*vz(i,n)
85 dvm(i)=dvm(i)+dv(i,ip)*wi
86 ENDDO
87 ENDDO
88 ENDDO
89 ENDDO
90 ENDDO
91
92 dt3=third*dt1
93 IF (icp == 1) THEN
94 DO i=lft,llt
95 fac(i)=one
96 ENDDO
97 ELSEIF (icp == 2) THEN
98 mx = mxt(lft)
99 DO i=lft,llt
100 e0(i) = pm(20,mx)
101 ENDDO
102 CALL s8csigp3(sig,e0 ,defp,fac,gbuf%G_PLA,nel)
103 ENDIF
104
105 DO it=1,nptt
106 DO ir=1,nptr
107 DO il=1,nlay
108 lbuf => elbuf_str%BUFLY(il)%LBUF(ir,is,it)
109 ip = ir + ( (il-1) + (it-1)*nlay )*nptr
110 DO i=lft,llt
111 f = lbuf%OFF(i)*fac(i)
112 dvp = dt3*f*(dvm(i)-dv(i,ip))
113 IF (dvp > one) THEN
114 dvp =zero
115 lbuf%OFF(i)=zero
116 ENDIF
117 lbuf%VOL(i) = lbuf%VOL(i) *(one- dvp)
118 lbuf%EINT(i) = lbuf%EINT(i)*(one- dvp)
119 ENDDO
120 ENDDO
121 ENDDO
122 ENDDO
123
124 RETURN
subroutine s8csigp3(sig, e0, defp, fac, g_pla, nel)