53 SUBROUTINE v3d4n_nl(numnp, numel, coor, disp, nodes, Rnet,&
54 numelneigh, elconn,
alpha, ahat,nummatvol, &
96 INTEGER :: numnp, numel
97 REAL*8,
DIMENSION(1:NumMatVol) :: xmu, xlambda
98 REAL*8,
DIMENSION(1:numnp) :: ahat
99 REAL*8,
DIMENSION(1:3*numnp) :: disp, rnet
100 REAL*8,
DIMENSION(1:3,1:numnp) :: coor
101 INTEGER,
DIMENSION(1:numnp) ::numelneigh
102 INTEGER,
DIMENSION(1:numnp,1:40) :: elconn
103 INTEGER,
DIMENSION(1:4,1:numel) :: nodes
104 REAL*8,
DIMENSION(1:4,1:numel) ::
alpha
105 REAL*8,
DIMENSION(1:numnp) :: s11n, s22n, s33n, s12n, s13n,s23n
113 REAL*8 :: x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3,z4
114 REAL*8 :: x1d,x2d,x3d,x4d,y1d,y2d,y3d,y4d,z1d,z2d,z3d,z4d
115 INTEGER :: k1n1,k1n2,k1n3,k1n4,k2n1,k2n2,k2n3,k2n4
116 INTEGER :: k3n1,k3n2,k3n3,k3n4
121 REAL*8 :: u1,u2,u3,u4,v1,v2,v3,v4,w1,w2,w3,w4
123 REAL*8 :: dudx,dvdy,dwdz,dudy,dvdx,dvdz,dwdy,dudz,dwdx
126 REAL*8 :: x14, x24, x34, y14, y24, y34, z14, z24, z34
127 REAL*8 :: x12, x13, y12, y13
131 REAL*8 :: c11, c12, c13, c21, c22, c23, c31, c32, c33
132 REAL*8 :: sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8, sh9, sh10, sh11, sh12
133 REAL*8 :: sh13, sh14, sh15
137 REAL*8 :: b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12
139 REAL*8 :: e11,e22,e33,e12,e23,e13
140 REAL*8 :: b13, b14, b15
141 REAL*8 :: sums11n,sums22n,sums33n,sums12n,sums23n,sums13n
142 REAL*8 :: sume11n,sume22n,sume33n,sume12n,sume23n,sume13n
144 REAL*8 :: e11n, e22n, e33n, e12n, e23n, e13n
145 INTEGER :: k3i,k2i,k1i
147 INTEGER :: n1, n2, n3, n4
148 REAL*8 :: volel, volel0,vx6inv,vol
149 REAL*8 :: s11e, s22e, s33e, s12e, s23e, s13e
152 REAL*8 :: coeff1, coeff2
154 REAL*8 :: f11, f12, f13, f21, f22, f23, f31, f32, f33
155 REAL*8 :: vx6def, vx6invdef, voldef, vtotal
177 DO j = 1, numelneigh(
i)
254 c11 = y24*z34 - z24*y34
255 c21 = -( x24*z34 - z24*x34 )
256 c31 = x24*y34 - y24*x34
258 vx6 = -( x14*c11 + y14*c21 + z14*c31 )
267 b1 = (y34*z24 - y24*z34) * vx6inv
268 b2 = (z34*x24 - z24*x34) * vx6inv
269 b3 = (x34*y24 - x24*y34) * vx6inv
270 b4 = (y13*z14 - y14*z13) * vx6inv
271 b5 = (z13*x14 - z14*x13) * vx6inv
272 b6 = (x13*y14 - x14*y13) * vx6inv
273 b7 = (y14*z12 - y12*z14) * vx6inv
274 b8 = (z14*x12 - z12*x14) * vx6inv
275 b9 = (x14*y12 - x12*y14) * vx6inv
276 b10 = (y12*z13 - y13*z12) * vx6inv
277 b11 = (z12*x13 - z13*x12) * vx6inv
278 b12 = (x12*y13 - x13*y12) * vx6inv
282 f11 = f11 +
alpha(ix,ielnum)*volel0*(1.d0 + ( b1*u1 + b4*u2 + b7*u3 + b10*u4 ))
283 f22 = f22 +
alpha(ix,ielnum)*volel0*(1.d0 + ( b2*v1 + b5*v2 + b8*v3 + b11*v4 ))
284 f33 = f33 +
alpha(ix,ielnum)*volel0*(1.d0 + ( b3*w1 + b6*w2 + b9*w3 + b12*w4 ))
285 f12 = f12 +
alpha(ix,ielnum)*volel0*(b2*u1 + b5*u2 + b8*u3 + b11*u4)
286 f21 = f21 +
alpha(ix,ielnum)*volel0*(b1*v1 + b4*v2 + b7*v3 + b10*v4)
287 f23 = f23 +
alpha(ix,ielnum)*volel0*(b3*v1 + b6*v2 + b9*v3 + b12*v4)
288 f32 = f32 +
alpha(ix,ielnum)*volel0*(b2*w1 + b5*w2 + b8*w3 + b11*w4)
289 f13 = f13 +
alpha(ix,ielnum)*volel0*(b3*u1 + b6*u2 + b9*u3 + b12*u4)
290 f31 = f31 +
alpha(ix,ielnum)*volel0*(b1*w1 + b4*w2 + b7*w3 + b10*w4)
304 jacob = f11*(f22*f33-f23*f32)+f12*(f31*f23-f21*f33)+f13*(-f31*f22+f21*f32)
308 IF( jacob.LE.0.d0)
THEN
316 coeff1 = xmu(1)/jacob
317 coeff2 = xlambda(1)/jacob*log(jacob)
319 s11n(
i) = coeff1*(f11**2+f12**2+f13**2-1.d0) + coeff2
320 s12n(
i) = coeff1*(f21*f11+f12*f22+f13*f23)
321 s13n(
i) = coeff1*(f31*f11+f12*f32+f13*f33)
322 s22n(
i) = coeff1*(f21**2+f22**2+f23**2-1.d0) + coeff2
323 s23n(
i) = coeff1*(f21*f31+f32*f22+f23*f33)
324 s33n(
i) = coeff1*(f31**2+f32**2+f33**2-1.d0) + coeff2
406 c11 = y24*z34 - z24*y34
407 c21 = -( x24*z34 - z24*x34 )
408 c31 = x24*y34 - y24*x34
410 vx6def = -( x14*c11 + y14*c21 + z14*c31 )
412 vx6invdef = 1.d0 / vx6def
417 IF(vx6def.LE.0.d0)
THEN
432 s11e = s11e +
alpha(
k,ielnum)*s11n(nodes(
k,ielnum))
433 s22e = s22e +
alpha(
k,ielnum)*s22n(nodes(
k,ielnum))
434 s33e = s33e +
alpha(
k,ielnum)*s33n(nodes(
k,ielnum))
435 s12e = s12e +
alpha(
k,ielnum)*s12n(nodes(
k,ielnum))
436 s23e = s23e +
alpha(
k,ielnum)*s23n(nodes(
k,ielnum))
437 s13e = s13e +
alpha(
k,ielnum)*s13n(nodes(
k,ielnum))
440 sh1 = (y34*z24 - y24*z34) * vx6invdef
441 sh2 = (z34*x24 - z24*x34) * vx6invdef
442 sh3 = (x34*y24 - x24*y34) * vx6invdef
443 sh4 = (y13*z14 - y14*z13) * vx6invdef
444 sh5 = (z13*x14 - z14*x13) * vx6invdef
445 sh6 = (x13*y14 - x14*y13) * vx6invdef
446 sh7 = (y14*z12 - y12*z14) * vx6invdef
447 sh8 = (z14*x12 - z12*x14) * vx6invdef
448 sh9 = (x14*y12 - x12*y14) * vx6invdef
449 sh10 = (y12*z13 - y13*z12) * vx6invdef
450 sh11 = (z12*x13 - z13*x12) * vx6invdef
451 sh12 = (x12*y13 - x13*y12) * vx6invdef
456 rnet(k1n1) = rnet(k1n1) - voldef* &
457 ( s11e*sh1 + s12e*sh2 + s13e*sh3 )
458 rnet(k2n1) = rnet(k2n1) - voldef* &
459 ( s12e*sh1 + s22e*sh2 + s23e*sh3 )
460 rnet(k3n1) = rnet(k3n1) - voldef* &
461 ( s13e*sh1 + s23e*sh2 + s33e*sh3 )
463 rnet(k1n2) = rnet(k1n2) - voldef* &
464 ( s11e*sh4 + s12e*sh5 + s13e*sh6 )
465 rnet(k2n2) = rnet(k2n2) - voldef* &
466 ( s12e*sh4 + s22e*sh5 + s23e*sh6 )
467 rnet(k3n2) = rnet(k3n2) - voldef* &
468 ( s13e*sh4 + s23e*sh5 + s33e*sh6 )
470 rnet(k1n3) = rnet(k1n3) - voldef* &
471 ( s11e*sh7 + s12e*sh8 + s13e*sh9 )
472 rnet(k2n3) = rnet(k2n3) - voldef* &
473 ( s12e*sh7 + s22e*sh8 + s23e*sh9 )
474 rnet(k3n3) = rnet(k3n3) - voldef* &
475 ( s13e*sh7 + s23e*sh8 + s33e*sh9 )
477 rnet(k1n4) = rnet(k1n4) - voldef* &
478 ( s11e*sh10 + s12e*sh11 + s13e*sh12 )
479 rnet(k2n4) = rnet(k2n4) - voldef* &
480 ( s12e*sh10 + s22e*sh11 + s23e*sh12 )
481 rnet(k3n4) = rnet(k3n4) - voldef* &
482 ( s13e*sh10 + s23e*sh11 + s33e*sh12 )
487 100
FORMAT(
' Negative Jacobian for element: ',i10)
unsigned char alpha() const
subroutine v3d4n_nl(numnp, numel, coor, disp, nodes, Rnet, NumElNeigh, ElConn, alpha, Ahat, NumMatVol, xmu, xlambda)