33
34 USE elbufdef_mod
35
36
37
38#include "implicit_f.inc"
39
40
41
42#include "mvsiz_p.inc"
43
44
45
46 INTEGER , INTENT(IN) :: NPT,NEL
47 DOUBLE PRECISION , DIMENSION(NEL,30),INTENT(IN) :: SAV
48 TYPE(ELBUF_STRUCT_), TARGET ::
49
50
51
52 INTEGER I,IP,N,,K2,K3,K4,K5,K6,K7,K8,K9,,
53 . M,IPERM(10,4)
54 double precision
55 . xx(mvsiz,10), yy(mvsiz,10), zz(mvsiz,10)
56 double precision
57 . xa(mvsiz,10),ya(mvsiz,10),za(mvsiz,10),
58 . xb(mvsiz,10),yb(mvsiz,10),zb(mvsiz,10),
59 . a4,b4,a4m1,b4m1,aa
61 . vol(mvsiz,5),nx(mvsiz,10,5),
62 . px(mvsiz,10,5),py(mvsiz,10,5),pz(mvsiz,10,5)
64 . alph,beta,w
65 TYPE(L_BUFEL_) ,POINTER :: LBUF
66 DATA iperm/
67 . 2, 4, 3, 1, 9,10, 6, 5, 8, 7,
68 . 4, 1, 3, 2, 8, 7,10, 9, 5, 6,
69 . 1, 4, 2, 3, 8, 9, 5, 7,10, 6,
70 . 1, 2, 3, 4, 5, 6, 7, 8, 9,10/
71
72 DO n=1,10
73 DO i=1,nel
74 xx(i,n) = sav(i,n)
75 yy(i,n) = sav(i,n+10)
76 zz(i,n) = sav(i,n+20)
77 ENDDO
78 END DO
79 IF(npt==4)THEN
80 alph = zep5854102
81 beta = zep1381966
82 w = fourth
83 ELSEIF(npt==5)THEN
84 alph = half
85 beta = one_over_6
86 w = nine_over_20
87 ENDIF
88 a4 = four * alph
89 b4 = four * beta
90 a4m1 = a4- one
91 b4m1 = b4- one
92
93 DO n=1,4
94 DO i=1,nel
95 xa(i,n) = a4m1*xx(i,n)
96 ya(i,n) = a4m1*yy(i,n)
97 za(i,n) = a4m1*zz(i,n)
98
99 xb(i,n) = b4m1*xx(i,n)
100 yb(i,n) = b4m1*yy(i,n)
101 zb(i,n) = b4m1*zz(i,n)
102 ENDDO
103 ENDDO
104
105 DO n=5,10
106 DO i=1,nel
107 xa(i,n) = a4*xx(i,n)
108 ya(i,n) = a4*yy(i,n)
109 za(i,n) = a4*zz(i,n)
110
111 xb(i,n) = b4*xx(i,n)
112 yb(i,n) = b4*yy(i,n)
113 zb(i,n) = b4*zz(i,n)
114 ENDDO
115 ENDDO
116
117 DO ip=1,4
118 k1 = iperm(1,ip)
119 k2 = iperm(2,ip)
120 k3 = iperm(3,ip)
121 k4 = iperm(4,ip)
122 k5 = iperm(5,ip)
123 k6 = iperm(6,ip)
124 k7 = iperm(7,ip)
125 k8 = iperm(8,ip)
126 k9 = iperm(9,ip)
127 k10= iperm(10,ip)
128 lbuf => elbuf_str%BUFLY(1)%LBUF(ip,1,1)
130 . xb(1,k1),xb(1,k2),xb(1,k3),xa(1,k4),xb(1,k5),
131 . xb(1,k6),xb(1,k7),xb(1,k8),xb(1,k9),xb(1,k10),
132 . xa(1,k8),xa(1,k9),xa(1,k10),
133 . yb(1,k1),yb(1,k2),yb(1,k3),ya(1,k4),yb(1,k5),
134 . yb(1,k6),yb(1,k7),yb(1,k8),yb(1,k9),yb(1,k10),
135 . ya(1,k8),ya(1,k9),ya(1,k10),
136 . zb(1,k1),zb(1,k2),zb(1,k3),za(1,k4),zb(1,k5),
137 . zb(1,k6),zb(1,k7),zb(1,k8),zb(1,k9),zb(1,k10),
138 . za(1,k8),za(1,k9),za(1,k10),
139 . px(1,k1,ip) ,px(1,k2,ip),px(1,k3,ip),px(1,k4,ip),px(1,k5,ip),
140 . px(1,k6,ip) ,px(1,k7,ip),px(1,k8,ip),px(1,k9,ip),px(1,k10,ip),
141 . py(1,k1,ip) ,py(1,k2,ip),py(1,k3,ip),py(1,k4,ip),py(1,k5,ip),
142 . py(1,k6,ip) ,py(1,k7,ip),py(1,k8,ip),py(1,k9,ip),py(1,k10,ip),
143 . pz(1,k1,ip) ,pz(1,k2,ip),pz(1,k3,ip),pz(1,k4,ip),pz(1,k5,ip
144 . pz(1,k6,ip) ,pz(1,k7,ip),pz(1,k8,ip),pz(1,k9,ip),pz(1,k10,ip),
145 . nx(1,k1,ip) ,nx(1,k2,ip),nx(1,k3,ip),nx(1,k4,ip),nx(1,k5,ip),
146 . nx(1,k6,ip) ,nx(1,k7,ip),nx(1,k8,ip),nx(1,k9,ip),nx(1,k10,ip),
147 . vol(1,ip) ,lbuf%VOL0DP)
148
149 ENDDO
150
151
152 IF(npt==5)THEN
153 alph = fourth
154 beta = fourth
155 a4 = one
156 b4 = one
157 a4m1 = zero
158 b4m1 = zero
159 w = - four_over_5
160 ip = 5
161
162 DO n=1,4
163 DO i=1,nel
164 xa(i,n) = zero
165 ya(i,n) = zero
166 za(i,n) = zero
167 ENDDO
168 ENDDO
169
170 lbuf => elbuf_str%BUFLY(1)%LBUF(npt,1,1)
172 . xa(1,k1),xa(1,k2),xa(1,k3),xa(1,k4),xx(1,k5),
173 . xx(1,k6),xx(1,k7),xx(1,k8),xx(1,k9),xx(1,k10),
174 . xx(1,k8),xx(1,k9),xx(1,k10),
175 . ya(1,k1),ya(1,k2),ya(1,k3),ya(1,k4),yy(1,k5),
176 . yy(1,k6),yy(1,k7),yy(1,k8),yy(1,k9),yy(1,k10),
177 . yy(1,k8),yy(1,k9),yy(1,k10),
178 . za(1,k1),za(1,k2),za(1,k3),za(1,k4),zz(1,k5),
179 . zz(1,k6),zz(1,k7),zz(1,k8),zz(1,k9),zz(1,k10),
180 . zz(1,k8),zz(1,k9),zz(1,k10),
181 . px(1,k1,ip) ,px(1,k2,ip),px(1,k3,ip),px(1,k4,ip),px(1,k5,ip),
182 . px(1,k6,ip) ,px(1,k7,ip),px(1,k8,ip),px(1,k9,ip),px(1,k10,ip),
183 . py(1,k1,ip) ,py(1,k2,ip),py(1,k3,ip),py(1,k4,ip),py(1,k5,ip),
184 . py(1,k6,ip) ,py(1,k7,ip),py(1,k8,ip),py(1,k9,ip),py(1,k10,ip),
185 . pz(1,k1,ip) ,pz(1,k2,ip),pz(1,k3,ip),pz(1,k4,ip),pz(1,k5,ip),
186 . pz(1,k6,ip) ,pz(1,k7,ip),pz(1,k8,ip),pz(1,k9,ip),pz(1,k10,ip),
187 . nx(1,k1,ip) ,nx(1,k2,ip),nx(1,k3,ip),nx(1,k4,ip),nx(1,k5,ip),
188 . nx(1,k6,ip) ,nx(1,k7,ip),nx(1,k8,ip),nx(1,k9,ip),nx(1,k10,ip),
189 . vol(1,ip) ,lbuf%VOL0DP)
190 ENDIF
191
192 DO ip=1,npt
193 lbuf => elbuf_str%BUFLY(1)%LBUF(ip,1,1)
194 CALL s10pijsav(px(1,1,ip),py(1,1,ip),pz(1,1,ip),lbuf%PIJ,nel)
195 lbuf%VOL(1:nel)=vol(1:nel,ip)
196 ENDDO
197
198 RETURN
199
subroutine s10jacob(alph, beta, 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, px1, px2, px3, px4, px5, px6, px7, px8, px9, px10, py1, py2, py3, py4, py5, py6, py7, py8, py9, py10, pz1, pz2, pz3, pz4, pz5, pz6, pz7, pz8, pz9, pz10, nx1, nx2, nx3, nx4, nx5, nx6, nx7, nx8, nx9, nx10, vol, voldp)
subroutine s10pijsav(px, py, pz, pij, nel)