34 . STIF, IFC1, IFCTL, PENMIN,
35 . PENREF, FKTMAX, LL , FQMAX ,
36 . VX1, VX2, VX3, VXI ,
37 . VY1, VY2, VY3, VYI ,
38 . VZ1, VZ2, VZ3, VZI ,
43#include "implicit_f.inc"
51 INTEGER,
INTENT (IN) :: NEL
52 INTEGER,
INTENT (OUT) :: IFCTL
53 INTEGER,
DIMENSION(MVSIZ),
INTENT (IN) :: IFC1
54 my_real,
DIMENSION(MVSIZ),
INTENT (IN) :: X1, X2, X3,
58 . VX1, VX2, VX3, VXI ,
59 . VY1, VY2, VY3, VYI ,
61 my_real,
INTENT (IN) :: fqmax,dt1
62 my_real,
DIMENSION(MVSIZ),
INTENT (INOUT) :: fktmax
63 my_real,
DIMENSION(MVSIZ),
INTENT (IN) :: stif,ll,penmin, penref
64 my_real,
DIMENSION(MVSIZ,3),
INTENT (INOUT) :: forc_n, for_t1, for_t2, for_t3
65 my_real,
DIMENSION(NEL),
INTENT (INOUT) :: e_distor
75 my_real nx(mvsiz),ny(mvsiz),nz(mvsiz),fn(mvsiz),
76 . xsc(mvsiz),ysc(mvsiz),zsc(mvsiz),pene(mvsiz),
77 . xa(mvsiz),ya(mvsiz),za(mvsiz),
area(mvsiz),
78 . xb(mvsiz),yb(mvsiz),zb(mvsiz),
79 . xc(mvsiz),yc(mvsiz),zc(mvsiz),
80 . la(mvsiz),lb(mvsiz),lc(mvsiz),stifkt(mvsiz),
81 . rx, ry, rz, sx, sy, sz,vxc,vyc,vzc,
82 . x42,y42, z42, x31, y31, z31,fx,fy,fz,
83 . sax,say,saz,sbx,sby,sbz,scx,scy,scz,
84 . trx,try,trz,tsx,tsy,tsz,ttx,tty,ttz,
85 . tr2,ts2,tt2,aaa,bbb,vr,vs,vt,nnx,nny,nnz,
86 . xab,xbc,xca,yab,ybc,yca,zab,zbc,zca,
87 . xia, xib, xic, yia, yib, yic,
88 . zia, zib, zic, h0,
norm,s2,fac,s2min,lj,
89 . f_q,f_c,kts,zerom,tx,ty,tz,pendr,dx,dy,dz,dn
103 IF (ifc1(i)==0) cycle
113 area(i) = nx(i)*nx(i)+ny(i)*ny(i)+nz(i)*nz(i)
118 bbb = (x3(i)-xi(i))*nx(i) +
119 . (y3(i)-yi(i))*ny(i) +
120 . (z3(i)-zi(i))*nz(i) -penmin(i)
121 pene(i) =
max(zero,-bbb)
122 IF (
area(i)<penmin(i)*ll(i)) pene(i)=
min(pene(i),em01*penmin(i))
130 IF(pene(i) == zero) cycle
143 IF(pene(i) == zero) cycle
163 sx = - yab*zca + zab*yca
164 sy = - zab*xca + xab*zca
165 sz = - xab*yca + yab*xca
166 s2 = sx*sx+sy*sy+sz*sz
167 sax = yib*zic - zib*yic
168 say = zib*xic - xib*zic
169 saz = xib*yic - yib*xic
170 la(i) = (sx*sax+sy*say+sz*saz)/s2
171 sbx = yic*zia - zic*yia
172 sby = zic*xia - xic*zia
173 sbz = xic*yia - yic*xia
174 lb(i) = (sx*sbx+sy*sby+sz*sbz)/s2
175 lc(i) = one - la(i) - lb(i)
176 lj =
min(la(i),lb(i),lc(i))
177 IF (lj<zerom) pene(i)=
min(pene(i),penmin(i))
183 ELSEIF(lc(i)<zero)
THEN
193 ELSEIF(lb(i)<zero)
THEN
204 ELSEIF(lc(i)<zero)
THEN
213 IF(pene(i) == zero) cycle
214 pendr = (pene(i)/penref(i))**2
216 fktmax(i) =
max(fktmax(i),(one+three*fac))
217 fn(i) = (fac+one)*stif(i)*pene(i)
220 IF(pene(i) == zero) cycle
221 dx = vxi(i) - lb(i)*vx1(i) - lc(i)*vx2(i)- la(i)*vx3(i)
222 dy = vyi(i) - lb(i)*vy1(i) - lc(i)*vy2(i)- la(i)*vy3(i)
223 dz = vzi(i) - lb(i)*vz1(i) - lc(i)*vz2(i)- la(i)*vz3(i)
224 dn = (nx(i)*dx + ny(i)*dy + nz(i)*dz)*dt1
225 e_distor(i) = e_distor(i) - fn(i)*dn
228 IF (pene(i) ==zero) cycle
232 forc_n(i,1) = forc_n(i,1) - fx
233 forc_n(i,2) = forc_n(i,2) - fy
234 forc_n(i,3) = forc_n(i,3) - fz
235 for_t1(i,1) = for_t1(i,1) + fx*lb(i)
236 for_t1(i,2) = for_t1(i,2) + fy*lb(i)
237 for_t1(i,3) = for_t1(i,3) + fz*lb(i)
238 for_t2(i,1) = for_t2(i,1) + fx*lc(i)
239 for_t2(i,2) = for_t2(i,2
240 for_t2(i,3) = for_t2(i,3) + fz*lc(i)
241 for_t3(i,1) = for_t3(i,1) + fx*la(i)
242 for_t3(i,2) = for_t3(i,2) + fy*la(i)
243 for_t3(i,3) = for_t3(i,3) + fz*la(i)
subroutine sfor_n2s3(xi, yi, zi, forc_n, x1, y1, z1, for_t1, x2, y2, z2, for_t2, x3, y3, z3, for_t3, stif, ifc1, ifctl, penmin, penref, fktmax, ll, fqmax, vx1, vx2, vx3, vxi, vy1, vy2, vy3, vyi, vz1, vz2, vz3, vzi, nel, e_distor, dt1)