35
36
37
38#include "implicit_f.inc"
39
40
41
42#include "mvsiz_p.inc"
43#include "param_c.inc"
44#include "com04_c.inc"
45#include "scr05_c.inc"
46
47
48
49 INTEGER, INTENT(IN) :: NPT
50 INTEGER, INTENT(IN) :: ISMSTR
51 INTEGER NEL,NC(MVSIZ,10)
52 double precision
53 . volnod6(6,2*numnod)
54
56 . x(3,numnod),offg(nel)
57 DOUBLE PRECISION , DIMENSION(3,SXDP/3), INTENT(IN) :: XDP
58
59
60
61
62
63
64 INTEGER I, K,N1,N2,NN,N
65 INTEGER IP,K1,K2,K3,K4,K5,K6,K7,K8,K9,K10
66 INTEGER IPERM1(10),IPERM2(10),IPERM(10,4)
67 DATA iperm1/0,0,0,0,1,2,3,1,2,3/
68 DATA iperm2/0,0,0,0,2,3,1,4,4,4/
69 DATA iperm/
70 . 2, 4, 3, 1, 9,10, 6, 5, 8, 7,
71 . 4, 1, 3, 2, 8, 7,10, 9, 5, 6,
72 . 1, 4, 2, 3, 8, 9, 5, 7,10, 6,
73 . 1, 2, 3, 4, 5, 6, 7, 8, 9,10/
74
75 double precision
76 . xx(mvsiz,10), yy(mvsiz,10), zz(mvsiz,10),
77 . xa(mvsiz,10),ya(mvsiz,10),za(mvsiz,10),
78 . xb(mvsiz,10),yb(mvsiz,10),zb(mvsiz,10),
79 . a4,b4,a4m1,b4m1,aa,det6(6,mvsiz),voldp(mvsiz)
81 . volg(mvsiz),alph,beta,w
82
83
84
85 IF (ismstr==1.OR.ismstr==11) RETURN
86
87 IF(iresp == 1) THEN
88 DO n=1,10
89 DO i=1,nel
91 xx(i,n)=xdp(1,nn)
92 yy(i,n)=xdp(2,nn)
93 zz(i,n)=xdp(3,nn)
94 ENDDO
95 ENDDO
96 ELSE
97 DO n=1,10
98 DO i=1,nel
100 xx(i,n)=x(1,nn)
101 yy(i,n)=x(2,nn)
102 zz(i,n)=x(3,nn)
103 ENDDO
104 ENDDO
105 END IF
106
107 DO n=5,10
108 n1=iperm1(n)
109 n2=iperm2(n)
110 DO i=1,nel
111 IF(nc(i,n)==0)THEN
112 xx(i,n) = half*(xx(i,n1)+xx(i,n2))
113 yy(i,n) = half*(yy(i,n1)+yy(i,n2))
114 zz(i,n) = half*(zz(i,n1)+zz(i,n2))
115 ENDIF
116 ENDDO
117 ENDDO
118
119 alph = zep5854102
120 beta = zep1381966
121 w = fourth
122 a4 = four * alph
123 b4 = four * beta
124 a4m1 = a4- one
125 b4m1 = b4- one
126
127 DO n=1,4
128 DO i=1,nel
129 xa(i,n) = a4m1*xx(i,n)
130 ya(i,n) = a4m1*yy(i,n)
131 za(i,n) = a4m1*zz(i,n)
132
133 xb(i,n) = b4m1*xx(i,n)
134 yb(i,n) = b4m1*yy(i,n)
135 zb(i,n) = b4m1*zz(i,n)
136 ENDDO
137 ENDDO
138
139 DO n=5,10
140 DO i=1,nel
141 xa(i,n) = a4*xx(i,n)
142 ya(i,n) = a4*yy(i,n)
143 za(i,n) = a4*zz(i,n)
144
145 xb(i,n) = b4*xx(i,n)
146 yb(i,n) = b4*yy(i,n)
147 zb(i,n) = b4*zz(i,n)
148 ENDDO
149 ENDDO
150
151 volg(1:nel) =zero
152 DO ip=1,4
153 k1 = iperm(1,ip)
154 k2 = iperm(2,ip)
155 k3 = iperm(3,ip)
156 k4 = iperm(4,ip)
157 k5 = iperm(5,ip)
158 k6 = iperm(6,ip)
159 k7 = iperm(7,ip)
160 k8 = iperm(8,ip)
161 k9 = iperm(9,ip)
162 k10= iperm(10,ip)
164 . xb(1,k1),xb(1,k2),xb(1,k3),xa(1,k4),xb(1,k5),
165 . xb(1,k6),xb(1,k7),xb(1,k8),xb(1,k9),xb(1,k10),
166 . xa(1,k8),xa(1,k9),xa(1,k10),
167 . yb(1,k1),yb(1,k2),yb(1,k3),ya(1,k4),yb(1,k5),
168 . yb(1,k6),yb(1,k7),yb(1,k8),yb(1,k9),yb(1,k10),
169 . ya(1,k8),ya(1,k9),ya(1,k10),
170 . zb(1,k1),zb(1,k2),zb(1,k3),za(1,k4),zb(1,k5),
171 . zb(1,k6),zb(1,k7),zb(1,k8),zb(1,k9),zb(1,k10),
172 . za(1,k8),za(1,k9),za(1,k10),
173 . voldp,nel)
174
175 volg(1:nel) =volg(1:nel) + voldp(1:nel)
176 ENDDO
177 DO i=1,nel
178 IF (offg(i) == zero .OR. abs(offg(i))>one) THEN
179 volg(i)= zero
180 ENDIF
181 ENDDO
182
183
185
186 DO i=1,nel
187
188
189
190
191 DO k=1,6
192 volnod6(k,nc(i,1)) = volnod6(k,nc(i,1)) + det6(k,i)
193 volnod6(k,nc(i,2)) = volnod6(k,nc(i,2)) + det6(k,i)
194 volnod6(k,nc(i,3)) = volnod6(k,nc(i,3)) + det6(k,i)
195 volnod6(k,nc(i,4)) = volnod6(k,nc(i,4)) + det6(k,i)
196 ENDDO
197 ENDDO
198
199 RETURN
subroutine foat_to_6_float(jft, jlt, f, f6)
subroutine s10volj(w, x1b, x2b, x3b, x4a, x5b, x6b, x7b, x8b, x9b, x10b, x8a, x9a, x10a, y1b, y2b, y3b, y4a, y5b, y6b, y7b, y8b, y9b, y10b, y8a, y9a, y10a, z1b, z2b, z3b, z4a, z5b, z6b, z7b, z8b, z9b, z10b, z8a, z9a, z10a, voldp, nel)