54 numelneigh, elconn,
alpha, ahat,nummatvol, &
83 INTEGER :: numnp, numel
84 REAL*8,
dimension(1:NumMatVol) :: xmu, xlambda
85 REAL*8,
DIMENSION(1:numnp) :: ahat
86 REAL*8,
DIMENSION(1:3*numnp) :: disp, rnet
87 REAL*8,
DIMENSION(1:3,1:numnp) :: coor
88 INTEGER,
DIMENSION(1:numnp) ::numelneigh
89 INTEGER,
DIMENSION(1:numnp,1:40) :: elconn
90 INTEGER,
DIMENSION(1:4,1:numel) :: nodes
91 REAL*8,
DIMENSION(1:4,1:numel) ::
alpha
92 REAL*8,
DIMENSION(1:numnp) :: s11n, s22n, s33n, s12n, s13n,s23n
96 REAL*8 :: u1,u2,u3,u4,v1,v2,v3,v4,w1,w2,w3,w4
98 REAL*8 :: x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3,z4
102 REAL*8 :: x14, x24, x34, y14, y24, y34, z14, z24, z34
103 REAL*8 :: x12, x13, y12, y13
106 REAL*8 :: vx6, vx6inv, vol
108 REAL*8 :: b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12
110 REAL*8 :: dudx,dvdy,dwdz,dudy,dvdx,dvdz,dwdy,dudz,dwdx
112 REAL*8 :: volnd,vainv
114 INTEGER :: n1,n2,n3,n4
116 INTEGER ::
j,nstart,nend
117 INTEGER :: k1n1,k1n2,k1n3,k1n4,k2n1,k2n2,k2n3,k2n4
118 INTEGER :: k3n1,k3n2,k3n3,k3n4
120 REAL*8 :: f11, f12, f13, f21, f22, f23, f31, f32, f33
121 REAL*8 :: j1,j2,j2inv
122 REAL*8 :: c11, c12, c13, c21, c22, c23, c31, c32, c33
124 REAL*8 :: volnd0inv,volel0
125 REAL*8,
DIMENSION(1:1) :: s11, s22, s33, s12, s23, s13
126 INTEGER :: k3i,k2i,k1i
135 volnd0inv = 1.d0/ahat(
i)
150 DO j = 1, numelneigh(
i)
226 c11 = y24*z34 - z24*y34
227 c21 = -( x24*z34 - z24*x34 )
228 c31 = x24*y34 - y24*x34
230 vx6 = -( x14*c11 + y14*c21 + z14*c31 )
244 b1 = (y34*z24 - y24*z34) * vx6inv
245 b2 = (z34*x24 - z24*x34) * vx6inv
246 b3 = (x34*y24 - x24*y34) * vx6inv
247 b4 = (y13*z14 - y14*z13) * vx6inv
248 b5 = (z13*x14 - z14*x13) * vx6inv
249 b6 = (x13*y14 - x14*y13) * vx6inv
250 b7 = (y14*z12 - y12*z14) * vx6inv
251 b8 = (z14*x12 - z12*x14) * vx6inv
252 b9 = (x14*y12 - x12*y14) * vx6inv
253 b10 = (y12*z13 - y13*z12) * vx6inv
254 b11 = (z12*x13 - z13*x12) * vx6inv
255 b12 = (x12*y13 - x13*y12) * vx6inv
259 dudx = b1*u1 + b4*u2 + b7*u3 + b10*u4
260 dvdy = b2*v1 + b5*v2 + b8*v3 + b11*v4
261 dwdz = b3*w1 + b6*w2 + b9*w3 + b12*w4
262 dudy = b2*u1 + b5*u2 + b8*u3 + b11*u4
263 dvdx = b1*v1 + b4*v2 + b7*v3 + b10*v4
264 dvdz = b3*v1 + b6*v2 + b9*v3 + b12*v4
265 dwdy = b2*w1 + b5*w2 + b8*w3 + b11*w4
266 dudz = b3*u1 + b6*u2 + b9*u3 + b12*u4
267 dwdx = b1*w1 + b4*w2 + b7*w3 + b10*w4
271 f11 = f11 +
alpha(ix,ielnum)*volel0*(1.d0 + dudx)
272 f12 = f12 +
alpha(ix,ielnum)*volel0*dudy
273 f13 = f13 +
alpha(ix,ielnum)*volel0*dudz
274 f21 = f21 +
alpha(ix,ielnum)*volel0*dvdx
275 f22 = f22 +
alpha(ix,ielnum)*volel0*(1.d0 + dvdy)
276 f23 = f23 +
alpha(ix,ielnum)*volel0*dvdz
277 f31 = f31 +
alpha(ix,ielnum)*volel0*dwdx
278 f32 = f32 +
alpha(ix,ielnum)*volel0*dwdy
279 f33 = f33 +
alpha(ix,ielnum)*volel0*(1.d0 + dwdz)
298 j1 = f11*(f22*f33-f23*f32)+f12*(f31*f23-f21*f33)+f13*(-f31*f22+f21*f32)
300 WRITE(*,*)
'area has become zero for element',
i
312 c11 = (f11*f11+f21*f21+f31*f31)*j2inv
313 c12 = (f11*f12+f21*f22+f31*f32)*j2inv
314 c13 = (f11*f13+f21*f23+f31*f33)*j2inv
316 c22 = (f12*f12+f22*f22+f32*f32)*j2inv
317 c23 = (f12*f13+f22*f23+f32*f33)*j2inv
320 c33 = (f13*f13+f23*f23+f33*f33)*j2inv
326 s11n(
i) = xmu(1)*(1.d0-(c22*c33-c23*c32)) + xlambda(1)*log(j1)*(c22*c33-c23*c32)
327 s22n(
i) = xmu(1)*(1.d0-(c11*c33-c31*c13)) + xlambda(1)*log(j1)*(c11*c33-c31*c13)
328 s33n(
i) = xmu(1)*(1.d0-(c11*c22-c12*c21)) + xlambda(1)*log(j1)*(c11*c22-c12*c21)
329 s12n(
i) = (-c12*c33+c13*c32)*(xmu(1) - xlambda(1)*log(j1))
330 s23n(
i) = (-c11*c23+c13*c21)*(xmu(1) - xlambda(1)*log(j1))
331 s13n(
i) = (c12*c23-c13*c22)*(xmu(1) - xlambda(1)*log(j1))
345 DO j = 1, numelneigh(
i)
410 c11 = y24*z34 - z24*y34
411 c21 = -( x24*z34 - z24*x34 )
412 c31 = x24*y34 - y24*x34
414 vx6 = -( x14*c11 + y14*c21 + z14*c31 )
424 b1 = (y34*z24 - y24*z34) * vx6inv
425 b2 = (z34*x24 - z24*x34) * vx6inv
426 b3 = (x34*y24 - x24*y34) * vx6inv
427 b4 = (y13*z14 - y14*z13) * vx6inv
428 b5 = (z13*x14 - z14*x13) * vx6inv
429 b6 = (x13*y14 - x14*y13) * vx6inv
430 b7 = (y14*z12 - y12*z14) * vx6inv
431 b8 = (z14*x12 - z12*x14) * vx6inv
432 b9 = (x14*y12 - x12*y14) * vx6inv
433 b10 = (y12*z13 - y13*z12) * vx6inv
434 b11 = (z12*x13 - z13*x12) * vx6inv
435 b12 = (x12*y13 - x13*y12) * vx6inv
439 dudx = b1*u1 + b4*u2 + b7*u3 + b10*u4
440 dvdy = b2*v1 + b5*v2 + b8*v3 + b11*v4
441 dwdz = b3*w1 + b6*w2 + b9*w3 + b12*w4
442 dudy = b2*u1 + b5*u2 + b8*u3 + b11*u4
443 dvdx = b1*v1 + b4*v2 + b7*v3 + b10*v4
444 dvdz = b3*v1 + b6*v2 + b9*v3 + b12*v4
445 dwdy = b2*w1 + b5*w2 + b8*w3 + b11*w4
446 dudz = b3*u1 + b6*u2 + b9*u3 + b12*u4
447 dwdx = b1*w1 + b4*w2 + b7*w3 + b10*w4
476 s11(1) = s11(1) +
alpha(
k,ielnum)*s11n(nodes(
k,ielnum))
477 s22(1) = s22(1) +
alpha(
k,ielnum)*s22n(nodes(
k,ielnum))
478 s33(1) = s33(1) +
alpha(
k,ielnum)*s33n(nodes(
k,ielnum))
479 s12(1) = s12(1) +
alpha(
k,ielnum)*s12n(nodes(
k,ielnum))
480 s23(1) = s23(1) +
alpha(
k,ielnum)*s23n(nodes(
k,ielnum))
481 s13(1) = s13(1) +
alpha(
k,ielnum)*s13n(nodes(
k,ielnum))
557 rnet(k1n1) = rnet(k1n1) - volel0* &
558 ( s11(1)*b1*f11 + s22(1)*b2*f12 + s33(1)*b3*f13 &
559 + s12(1)*( b2*f11 + b1*f12 ) &
560 + s23(1)*( b3*f12 + b2*f13 ) &
561 + s13(1)*( b3*f11 + b1*f13 ) )
562 rnet(k2n1) = rnet(k2n1) - volel0* &
563 ( s11(1)*b1*f21 + s22(1)*b2*f22 + s33(1)*b3*f23 &
564 + s12(1)*( b1*f22 + b2*f21 ) &
565 + s23(1)*( b3*f22 + b2*f23 ) &
566 + s13(1)*( b3*f21 + b1*f23 ) )
567 rnet(k3n1) = rnet(k3n1) - volel0* &
568 ( s11(1)*b1*f31 + s22(1)*b2*f32 + s33(1)*b3*f33 &
569 + s12(1)*( b2*f31 + b1*f32 ) &
570 + s23(1)*( b3*f32 + b2*f33 ) &
571 + s13(1)*( b3*f31 + b1*f33 ) )
573 rnet(k1n2) = rnet(k1n2) - volel0* &
574 ( s11(1)*b4*f11 + s22(1)*b5*f12 + s33(1)*b6*f13 &
575 + s12(1)*( b5*f11 + b4*f12 ) &
576 + s23(1)*( b6*f12 + b5*f13 ) &
577 + s13(1)*( b6*f11 + b4*f13 ) )
578 rnet(k2n2) = rnet(k2n2) - volel0* &
579 ( s11(1)*b4*f21 + s22(1)*b5*f22 + s33(1)*b6*f23 &
580 + s12(1)*( b4*f22 + b5*f21 ) &
581 + s23(1)*( b6*f22 + b5*f23 ) &
582 + s13(1)*( b6*f21 + b4*f23 ) )
583 rnet(k3n2) = rnet(k3n2) - volel0* &
584 ( s11(1)*b4*f31 + s22(1)*b5*f32 + s33(1)*b6*f33 &
585 + s12(1)*( b5*f31 + b4*f32 ) &
586 + s23(1)*( b6*f32 + b5*f33 ) &
587 + s13(1)*( b6*f31 + b4*f33 ) )
589 rnet(k1n3) = rnet(k1n3) - volel0* &
590 ( s11(1)*b7*f11 + s22(1)*b8*f12 + s33(1)*b9*f13 &
591 + s12(1)*( b8*f11 + b7*f12 ) &
592 + s23(1)*( b9*f12 + b8*f13 ) &
593 + s13(1)*( b9*f11 + b7*f13 ) )
594 rnet(k2n3) = rnet(k2n3) - volel0* &
595 ( s11(1)*b7*f21 + s22(1)*b8*f22 + s33(1)*b9*f23 &
596 + s12(1)*( b7*f22 + b8*f21 ) &
597 + s23(1)*( b9*f22 + b8*f23 ) &
598 + s13(1)*( b9*f21 + b7*f23 ) )
599 rnet(k3n3) = rnet(k3n3) - volel0* &
600 ( s11(1)*b7*f31 + s22(1)*b8*f32 + s33(1)*b9*f33 &
601 + s12(1)*( b8*f31 + b7*f32 ) &
602 + s23(1)*( b9*f32 + b8*f33 ) &
603 + s13(1)*( b9*f31 + b7*f33 ) )
605 rnet(k1n4) = rnet(k1n4) - volel0* &
606 ( s11(1)*b10*f11 + s22(1)*b11*f12+s33(1)*b12*f13 &
607 + s12(1)*( b11*f11 + b10*f12 ) &
608 + s23(1)*( b12*f12 + b11*f13 ) &
609 + s13(1)*( b12*f11 + b10*f13 ) )
610 rnet(k2n4) = rnet(k2n4) - volel0* &
611 ( s11(1)*b10*f21 + s22(1)*b11*f22 + s33(1)*b12*f23 &
612 + s12(1)*( b10*f22 + b11*f21 ) &
613 + s23(1)*( b12*f22 + b11*f23 ) &
614 + s13(1)*( b12*f21 + b10*f23 ) )
615 rnet(k3n4) = rnet(k3n4) - volel0* &
616 ( s11(1)*b10*f31 + s22(1)*b11*f32 + s33(1)*b12*f33 &
617 + s12(1)*( b11*f31 + b10*f32 ) &
618 + s23(1)*( b12*f32 + b11*f33 ) &
619 + s13(1)*( b12*f31 + b10*f33 ) )
unsigned char alpha() const
subroutine v3d4n_neohookeancompress(numnp, numel, coor, disp, nodes, Rnet, NumElNeigh, ElConn, alpha, Ahat, NumMatVol, xmu, xlambda)