54 interfacesfnumelems, interfacesfnumnodes, &
55 interfacesfelemconn, &
56 mapnodesf,lwrbnd,uppbnd, coor, disp, mapsfelvolel,&
57 elconnvol,ieltype,numelvol,tractpress )
82 INTEGER :: lwrbnd,uppbnd
84 INTEGER :: ieltype,numelvol
85 INTEGER,
DIMENSION(1:iElType,1:NumElVol) :: elconnvol
87 INTEGER :: interfacesfnumelems,interfacesfnumnodes
88 INTEGER,
DIMENSION(1:UppBnd,1:InterfaceSFNumElems) :: interfacesfelemconn
89 INTEGER,
DIMENSION(1:InterfaceSFNumNodes) :: mapnodesf
90 REAL*8,
DIMENSION(1:3*NumNp) :: disp
92 REAL*8,
DIMENSION(1:3*numnp) :: r_ex
97 INTEGER,
DIMENSION(1:3) :: triconn
98 REAL*8,
DIMENSION(1:3) :: uniftract
101 REAL*8,
DIMENSION(1:3,1:numnp) :: coor
103 REAL*8 :: x0p,y0p,z0p
104 REAL*8 :: x1p,y1p,z1p
105 REAL*8 :: x2p,y2p,z2p
106 REAL*8 :: x3p,y3p,z3p
110 REAL*8 :: x1x0, y1y0, z1z0
111 REAL*8 :: x2x0, y2y0, z2z0
113 REAL*8 :: magnorm, area,
at
114 REAL*8 :: gauss = 0.333333333333333d0
115 REAL*8 :: weight = 1.0d0
116 REAL*8 :: xnorm,ynorm,znorm
117 REAL*8 :: u1,v1,w1,u2,v2,w2,u3,v3,w3,u4,v4,w4
118 REAL*8 :: x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4
119 REAL*8 :: j11,j12,j13,j21,j22,j23
120 REAL*8 :: invdenjplus
121 REAL*8 :: jplus11, jplus12, jplus21, jplus22, jplus31, jplus32
122 REAL*8 :: gradu11, gradu12, gradu13, gradu21, gradu22, gradu23
123 REAL*8 :: gradu31, gradu32, gradu33
124 REAL*8 :: f11t,f12t,f13t,f21t,f22t,f23t,f31t,f32t,f33t
125 REAL*8 :: j1, undefnorm(1:3)
128 INTEGER :: n1,n2,n3,n4
130 INTEGER :: k1n1,k1n2,k1n3,k1n4,k2n1,k2n2,k2n3,k2n4
131 INTEGER :: k3n1,k3n2,k3n3,k3n4
132 REAL*8,
DIMENSION(1:InterfaceSFNumElems) :: tractpress
134 REAL*8 :: x14, x24, x34, y14, y24, y34, z14, z24, z34
136 REAL*8 :: x12, x13, y12, y13, z12, z13
138 REAL*8 :: c11, c21, c31
139 REAL*8 :: vx6, vx6inv
141 REAL*8 :: b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12
143 REAL*8 :: dudx,dvdy,dwdz,dudy,dvdx,dvdz,dwdy,dudz,dwdx
144 INTEGER,
DIMENSION(1:NumElVol) :: mapsfelvolel
146 REAL*8 :: defnorm(1:3)
147 REAL*8 :: denfinvt,magnormdef,area0
148 REAL*8 :: f11,f12,f13,f21,f22,f23,f31,f32,f33
149 REAL*8 :: finvt11, finvt12, finvt13, finvt21, finvt22, finvt23, finvt31, finvt32, finvt33
152 DO i = 1, interfacesfnumelems
156 idvol = mapsfelvolel(
i)
158 n1 = elconnvol(1,idvol)
159 n2 = elconnvol(2,idvol)
160 n3 = elconnvol(3,idvol)
161 n4 = elconnvol(4,idvol)
221 c11 = y24*z34 - z24*y34
222 c21 = -( x24*z34 - z24*x34 )
223 c31 = x24*y34 - y24*x34
225 vx6 = -( x14*c11 + y14*c21 + z14*c31 )
232 b1 = (y34*z24 - y24*z34) * vx6inv
233 b2 = (z34*x24 - z24*x34) * vx6inv
234 b3 = (x34*y24 - x24*y34) * vx6inv
235 b4 = (y13*z14 - y14*z13) * vx6inv
236 b5 = (z13*x14 - z14*x13) * vx6inv
237 b6 = (x13*y14 - x14*y13) * vx6inv
238 b7 = (y14*z12 - y12*z14) * vx6inv
239 b8 = (z14*x12 - z12*x14) * vx6inv
240 b9 = (x14*y12 - x12*y14) * vx6inv
241 b10 = (y12*z13 - y13*z12) * vx6inv
242 b11 = (z12*x13 - z13*x12) * vx6inv
243 b12 = (x12*y13 - x13*y12) * vx6inv
247 dudx = b1*u1 + b4*u2 + b7*u3 + b10*u4
248 dvdy = b2*v1 + b5*v2 + b8*v3 + b11*v4
249 dwdz = b3*w1 + b6*w2 + b9*w3 + b12*w4
250 dudy = b2*u1 + b5*u2 + b8*u3 + b11*u4
251 dvdx = b1*v1 + b4*v2 + b7*v3 + b10*v4
252 dvdz = b3*v1 + b6*v2 + b9*v3 + b12*v4
253 dwdy = b2*w1 + b5*w2 + b8*w3 + b11*w4
254 dudz = b3*u1 + b6*u2 + b9*u3 + b12*u4
255 dwdx = b1*w1 + b4*w2 + b7*w3 + b10*w4
273 denfinvt = f11*(f22*f33-f32*f23) - f12*(f21*f33+f31*f23) + f13*(f21*f32-f31*f22)
275 finvt11 = (f22*f33-f32*f23)/denfinvt
276 finvt12 = -(f21*f33-f31*f23)/denfinvt
277 finvt13 = (f21*f32-f31*f22)/denfinvt
278 finvt21 = -(f12*f33-f32*f13)/denfinvt
279 finvt22 = (f11*f33-f31*f13)/denfinvt
280 finvt23 = -(f11*f32-f31*f12)/denfinvt
281 finvt31 = (f12*f23-f22*f13)/denfinvt
282 finvt32 = -(f11*f23-f21*f13)/denfinvt
283 finvt33 = (f11*f22-f21*f12)/denfinvt
289 triconn(1:3) = interfacesfelemconn(1:3,
i)
297 x1 = coor(1,mapnodesf(triconn(1)))
298 y1 = coor(2,mapnodesf(triconn(1)))
299 z1 = coor(3,mapnodesf(triconn(1)))
301 x2 = coor(1,mapnodesf(triconn(2)))
302 y2 = coor(2,mapnodesf(triconn(2)))
303 z2 = coor(3,mapnodesf(triconn(2)))
305 x3 = coor(1,mapnodesf(triconn(3)))
306 y3 = coor(2,mapnodesf(triconn(3)))
307 z3 = coor(3,mapnodesf(triconn(3)))
309 u1 = disp(3*mapnodesf(triconn(1))-2)
310 v1 = disp(3*mapnodesf(triconn(1))-1)
311 w1 = disp(3*mapnodesf(triconn(1)) )
313 u2 = disp(3*mapnodesf(triconn(2))-2)
314 v2 = disp(3*mapnodesf(triconn(2))-1)
315 w2 = disp(3*mapnodesf(triconn(2)) )
317 u3 = disp(3*mapnodesf(triconn(3))-2)
318 v3 = disp(3*mapnodesf(triconn(3))-1)
319 w3 = disp(3*mapnodesf(triconn(3)) )
345 x3p = y1y0 * z2z0 - z1z0 * y2y0
346 y3p = z1z0 * x2x0 - x1x0 * z2z0
347 z3p = x1x0 * y2y0 - y1y0 * x2x0
351 magnorm =
sqrt( x3p*x3p + y3p*y3p + z3p*z3p )
361 defnorm(1) = jac3d * (finvt11*xnorm+finvt12*ynorm+finvt13*znorm)
362 defnorm(2) = jac3d * (finvt21*xnorm+finvt22*ynorm+finvt23*znorm)
363 defnorm(3) = jac3d * (finvt31*xnorm+finvt32*ynorm+finvt33*znorm)
365 magnormdef =
sqrt( defnorm(1)**2 + defnorm(2)**2 + defnorm(3)**2 )
367 defnorm(1) = defnorm(1)/magnormdef
368 defnorm(2) = defnorm(2)/magnormdef
369 defnorm(3) = defnorm(3)/magnormdef
395 x3p = y1y0 * z2z0 - z1z0 * y2y0
396 y3p = z1z0 * x2x0 - x1x0 * z2z0
397 z3p = x1x0 * y2y0 - y1y0 * x2x0
401 magnormdef =
sqrt( x3p*x3p + y3p*y3p + z3p*z3p )
403 area = 0.5*magnormdef
407 uniftract(1) = -tractpress(
i)*defnorm(1)*area/3.d0
408 uniftract(2) = -tractpress(
i)*defnorm(2)*area/3.d0
409 uniftract(3) = -tractpress(
i)*defnorm(3)*area/3.d0
413 triconn(1:3) = interfacesfelemconn(lwrbnd:uppbnd,
i)
416 nz = mapnodesf(triconn(
j))*3
419 r_ex(nx) = r_ex(nx) + uniftract(1)
420 r_ex(ny) = r_ex(ny) + uniftract(2)
421 r_ex(nz) = r_ex(nz) + uniftract(3)
subroutine fluidpressload(NumNP, R_ex, InterfaceSFNumElems, InterfaceSFNumNodes, InterfaceSFElemConn, MapNodeSF, LwrBnd, UppBnd, coor, Disp, MapSFElVolEl, ElConnVol, iElType, NumElVol, TractPress)