38
39
40
42
43
44
45#include "implicit_f.inc"
46
47
48
49#include "mvsiz_p.inc"
50
51
52
53#include "param_c.inc"
54
55
56
57 INTEGER NEL,NGL(*)
59 . vol(*), geo(npropg,*),vzl(*), deltax(*), det(*)
61 . x1(*), x2(*), x3(*), x4(*), x5(*), x6(*),
62 . y1(*), y2(*), y3(*), y4(*), y5(*), y6(*),
63 . z1(*), z2(*), z3(*), z4(*), z5(*), z6(*)
64
65
66
67 INTEGER I, NFAC
69 . x21(mvsiz) , x31(mvsiz) , x41(mvsiz) , x54(mvsiz),x64(mvsiz),
70 . y21(mvsiz) , y31(mvsiz) , y41(mvsiz) , y54(mvsiz),y64(mvsiz),
71 . z21(mvsiz) , z31(mvsiz) , z41(mvsiz) , z54(mvsiz),z64(mvsiz),
72 . jac1(mvsiz), jac2(mvsiz) ,jac3(mvsiz
73 . jac4(mvsiz), jac5(mvsiz) ,jac6(mvsiz),
74 . jac7(mvsiz), jac8(mvsiz) ,jac9(mvsiz),
75 . jac_59_68(mvsiz), jac_67_49(mvsiz), jac_48_57(mvsiz)
76
78 . xioff(mvsiz), aream(mvsiz),
79 . atest(mvsiz),
area(6,mvsiz)
80
81
82
83 DO i=1,nel
84 x21(i)=x2(i)-x1(i)
85 x31(i)=x3(i)-x1(i)
86 x41(i)=x4(i)-x1(i)
87 x54(i)=x5(i)-x4(i)
88 x64(i)=x6(i)-x4(i)
89
90 y21(i)=y2(i)-y1(i)
91 y31(i)=y3(i)-y1(i)
92 y41(i)=y4(i)-y1(i)
93 y54(i)=y5(i)-y4(i)
94 y64(i)=y6(i)-y4(i)
95
96 z21(i)=z2(i)-z1(i)
97 z31(i)=z3(i)-z1(i)
98 z41(i)=z4(i)-z1(i)
99 z54(i)=z5(i)-z4(i)
100 z64(i)=z6(i)-z4(i)
101 ENDDO
102
103 DO i=1,nel
104
105 jac1(i)=x21(i)+x54(i)
106 jac2(i)=y21(i)+y54(i)
107 jac3(i)=z21(i)+z54(i)
108 ENDDO
109
110 DO i=1,nel
111
112 jac4(i)=x31(i)+x64(i)
113 jac5(i)=y31(i)+y64(i)
114 jac6(i)=z31(i)+z64(i)
115
116 jac7(i)=third*(x41(i)+x5(i)-x2(i)+x6(i)-x3(i))
117 jac8(i)=third*(y41(i)+y5(i)-y2(i)+y6(i)-y3(i))
118 jac9(i)=third*(z41(i)+z5(i)-z2(i)+z6(i)-z3(i))
119 ENDDO
120
121 DO i=1,nel
122 jac_59_68(i)=jac5(i)*jac9(i)-jac6(i)*jac8(i)
123 jac_67_49(i)=jac6(i)*jac7(i)-jac4(i)*jac9(i)
124 jac_48_57(i)=jac4(i)*jac8(i)-jac5(i)*jac7(i)
125 ENDDO
126
127 DO i=1,nel
128 det(i)=one_over_8*(jac1(i)*jac_59_68(i)+jac2(i)*jac_67_49(i)+jac3(i)*jac_48_57(i))
129 vol(i)=det(i)
130 ENDDO
131
132 DO i=1,nel
133 IF(det(i)>zero) cycle
135 . msgtype=msgerror,
136 . anmode=aninfo,
137 . i1=ngl(i))
138 ENDDO
139
140 DO i=1,nel
141 vzl(i) = fourth*(jac9(i)*(x54(i)*y64(i)-x21(i)*y31(i)-x64(i)*y54(i)+x31(i)*y21(i))
142 . -jac8(i)*(x54(i)*z64(i)+x31(i)*z21(i)-x21(i)*z31(i)-x64(i)*z54(i))
143 . +jac7(i)*(y54(i)*z64(i)+y31(i)*z21(i)-y21(i)*z31(i)-y64(i)*z54(i)))
144
145 ENDDO
146 DO i=1,nel
147 xioff(i)=one
148 aream(i)=zero
149 ENDDO
150
151 CALL slen(x1,x2,x5,x4,y1,y2,y4,y5,z1,z2,z5,z4,1,
area, aream)
152 CALL slen(x2,x5,x6,x3,y2,y5,y6,y3,z2,z5,z6,z3,2,
area, aream)
153 CALL slen(x1,x4,x6,x3,y1,y4,y6,y3,z1,z4,z6,z3,3,
area, aream)
154 CALL slen(x1,x2,x3,x3,y1,y2,y3,y3,z1,z2,z3,z3,4,
area, aream)
155 CALL slen(x4,x5,x6,x6,y4,y5,y6,y6,z4,z5,z6,z6,5,
area, aream)
156
157 DO i=1,nel
158 atest(i)=em4*aream(i)
159 nfac=0
160 IF(
area(1,i)<atest(i)) nfac=nfac+1
161 IF(
area(2,i)<atest(i)) nfac=nfac+1
162 IF(
area(3,i)<atest(i)) nfac=nfac+1
163 IF(
area(4,i)<atest(i)) nfac=nfac+1
164 IF(
area(5,i)<atest(i)) nfac=nfac+1
165 IF(nfac>=2) xioff(i)=ep03
166 ENDDO
167 DO i=1,nel
168 deltax(i)=four*det(i)*xioff(i)/sqrt(aream(i))
169 ENDDO
170
171 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine slen(x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, j, area, aream)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)