37 4 ELBUF_TAB,IPARG,PM ,NTAG ,TEMP ,
38 5 TSTIF ,E ,IAD_ELEM,FR_ELEM )
44 use element_mod ,
only : nixs
48#include "implicit_f.inc"
59 INTEGER IPARG(NPARG,*), NELW(*) ,IXS(NIXS,*),
60 . NTAG(*), IAD_ELEM(2,*), FR_ELEM(*)
64 TYPE(elbuf_struct_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
68 INTEGER I, II, N1, N2, N3, N4, IE, NG, MAT, IFA, LENR,
71 . x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4,
72 . nx, ny, nz, dx, dy, dz, dd, grad, phi, tempe, vol,
74 INTEGER :: LLT ,NFT ,MTN ,IAD ,ITY ,NPT ,JALE ,ISMSTR ,JEUL ,JTUR ,JTHE ,JLAG ,JMULT ,JHBE
75 INTEGER :: JIVF, NVAUX, JPOR, JCVT, JCLOSE, JPLASOL, IREP, IINT, IGTYP
76 INTEGER :: ISORTH, ISORTHG, ISRAT, ISROT, ICSEN, IFAILURE, JSMS
78 TYPE(g_bufel_) ,
POINTER :: GBUF
80 DATA iface/ 2, 3, 4, 5,
93 ifa = nelw(ie) - 10*ii
94 n1 = ixs(iface(1,ifa),ii)
95 n2 = ixs(iface(2,ifa),ii)
96 n3 = ixs(iface(3,ifa),ii)
97 n4 = ixs(iface(4,ifa),ii)
98 IF(ntag(n1)>0) ntag(n1) = ntag(n1) + 1
99 IF(ntag(n2)>0) ntag(n2) = ntag(n2) + 1
100 IF(ntag(n3)>0) ntag(n3) = ntag(n3) + 1
101 IF(ntag(n4)>0) ntag(n4) = ntag(n4) + 1
107 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
115 ifa = nelw(ie) - 10*ii
116 n1 = ixs(iface(1,ifa),ii)
117 n2 = ixs(iface(2,ifa),ii)
118 n3 = ixs(iface(3,ifa),ii)
119 n4 = ixs(iface(4,ifa),ii)
120 IF(ntag(n1)+ntag(n2)+ntag(n3)+ntag(n4)>0)
THEN
124 DO 200 ng=ii/nvsiz,ngroup
126 2 mtn ,llt ,nft ,iad ,ity ,
127 3 npt ,jale ,ismstr ,jeul ,jtur ,
128 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
129 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
130 6 irep ,iint ,igtyp ,israt ,isrot ,
131 7 icsen ,isorth ,isorthg ,ifailure,jsms )
133 IF(ii>nft+llt)
GO TO 200
134 IF(iparg(8,ng)==1)
GO TO 600
135 IF(jthe/=1)
GO TO 600
141 gbuf => elbuf_tab(ng)%GBUF
150 IF(ntag(n1)>1) ee = ee + e(n1) / (ntag(n1)-1)
151 IF(ntag(n2)>1) ee = ee + e(n2) / (ntag(n2)-1)
152 IF(ntag(n3)>1) ee = ee + e(n3) / (ntag(n3)-1)
153 IF(ntag(n4)>1) ee = ee + e(n4) / (ntag(n4)-1)
176 nx=(y3-y1)*(z2-z4) - (z3-z1)*(y2-y4)
177 ny=(z3-z1)*(x2-x4) - (x3-x1)*(z2-z4)
178 nz=(x3-x1)*(y2-y4) - (y3-y1)*(x2-x4)
182 dx = two*(x1 + x2 + x3 + x4)
183 . -x(1,ixs(2,ii))-x(1,ixs(3,ii))
184 . -x(1,ixs(4,ii))-x(1,ixs(5,ii))
185 . -x(1,ixs(6,ii))-x(1,ixs(7,ii))
186 . -x(1,ixs(8,ii))-x(1,ixs(9,ii))
188 dy = two*(y1 + y2 + y3 + y4)
189 . -x(2,ixs(2,ii))-x(2,ixs(3,ii))
190 . -x(2,ixs(4,ii))-x(2,ixs(5,ii))
191 . -x(2,ixs(6,ii))-x(2,ixs(7,ii))
192 . -x(2,ixs(8,ii))-x(2,ixs(9,ii))
194 dz = two*(z1 + z2 + z3 + z4)
195 . -x(3,ixs(2,ii))-x(3,ixs(3,ii))
196 . -x(3,ixs(4,ii))-x(3,ixs(5,ii))
197 . -x(3,ixs(6,ii))-x(3,ixs(7,ii))
198 . -x(3,ixs(8,ii))-x(3,ixs(9,ii))
204 grad = four*(dx*nx+dy*ny+dz*nz) /
max(em15,dd)
210 IF(tempe<=pm(80,mat))
THEN
211 coef=pm(75,mat)+pm(76,mat)*tempe
213 coef=pm(77,mat)+pm(78,mat)*tempe
217 phi = tstife*tstif*(temp-tempe)
218 2 /
max(em20,(tstife+tstif))
220 + (
min(ntag(n1),1) +
min(ntag(n2),1)
221 + +
min(ntag(n3),1) +
min(ntag(n4),1) )
226 phi = (phi + ee) /
max(vol,em20)
227 gbuf%EINT(i) = gbuf%EINT(i) + phi
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)