35 . ELBUF_TAB, IXS, IXQ, IXTG, VOLNEW, XGRID)
43#include "implicit_f.inc"
51#include "vect01_c.inc"
55 INTEGER,
INTENT(IN) :: NG, NEL, IPARG(NPARG, NGROUP) , SYM
56 TYPE(elbuf_struct_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
57 INTEGER,
INTENT(IN),
TARGET :: IXS(NIXS, NUMELS), IXQ(NIXQ, NUMELQ), IXTG(NIXTG, NUMELTG)
58 my_real,
INTENT(INOUT) :: volnew
59 my_real,
INTENT(IN) :: xgrid(3, numnod)
63 TYPE(g_bufel_),
POINTER :: GBUF
64 INTEGER :: II, NGL(MVSIZ), ISOLNOD
65 DOUBLE PRECISION :: (MVSIZ), Y1(MVSIZ), (MVSIZ)
66 DOUBLE PRECISION :: X2(MVSIZ), Y2(MVSIZ), Z2(MVSIZ)
67 DOUBLE PRECISION :: X3(MVSIZ), Y3(MVSIZ)
68DOUBLE PRECISION :: X4(MVSIZ), Y4(MVSIZ), Z4(MVSIZ)
69 DOUBLE PRECISION :: X5(MVSIZ), Y5(MVSIZ), Z5(MVSIZ)
70 DOUBLE PRECISION :: X6(MVSIZ), Y6(MVSIZ), Z6(MVSIZ)
71 DOUBLE PRECISION :: X7(MVSIZ), Y7(MVSIZ), Z7(MVSIZ)
72 DOUBLE PRECISION :: X8(MVSIZ), (MVSIZ), Z8(MVSIZ)
73 my_real :: y124(mvsiz), y234(mvsiz)
74 my_real :: jac1(mvsiz), jac2(mvsiz), jac3(mvsiz)
75 my_real :: jac4(mvsiz), jac5(mvsiz), jac6(mvsiz)
79 my_real :: x43, x41, x42, y43, y41, y42, z43, z41, z42
81 INTEGER,
DIMENSION(:,:),
POINTER :: IX
82 DOUBLE PRECISION :: VOLDP(MVSIZ)
84 gbuf => elbuf_tab(ng)%GBUF
86 isolnod = iparg(28, ng)
97 volnew(ii) = gbuf%VOL(ii)
105 ix => ixs(1:nixs, 1 + nft:nel + nft)
106 IF (isolnod /= 4)
THEN
109 x1(ii) = xgrid(1, ix(2, ii))
110 y1(ii) = xgrid(2, ix(2, ii))
111 z1(ii) = xgrid(3, ix(2, ii))
113 x2(ii) = xgrid(1, ix(3, ii))
114 y2(ii) = xgrid(2, ix(3, ii))
115 z2(ii) = xgrid(3, ix(3, ii
117 x3(ii) = xgrid(1, ix(4, ii))
118 y3(ii) = xgrid(2, ix(4, ii))
119 z3(ii) = xgrid(3, ix(4, ii
121 x4(ii) = xgrid(1, ix(5, ii))
122 y4(ii) = xgrid(2, ix(5, ii))
123 z4(ii) = xgrid(3, ix(5, ii))
125 x5(ii) = xgrid(1, ix(6, ii))
126 y5(ii) = xgrid(2, ix(6, ii))
127 z5(ii) = xgrid(3, ix(6, ii))
129 x6(ii) = xgrid(1, ix(7, ii))
130 y6(ii) = xgrid(2, ix(7, ii))
131 z6(ii) = xgrid(3, ix(7, ii))
133 x7(ii) = xgrid(1, ix(8, ii))
134 y7(ii) = xgrid(2, ix(8, ii))
135 z7(ii) = xgrid(3, ix(8, ii))
137 x8(ii) = xgrid(1, ix(9, ii))
138 y8(ii) = xgrid(2, ix(9, ii))
139 z8(ii) = xgrid(3, ix(9, ii))
140 ngl(ii) = ix(nixs, ii)
143 1 gbuf%OFF, volnew, ngl, x1,
150 8 dummy, dummy, dummy, dummy,
151 9 dummy, dummy, dummy, dummy,
152 a dummy, dummy, dummy, dummy,
153 b dummy, dummy, dummy, dummy,
154 c dummy, dummy, dummy, dummy,
155 d dummy, dummy, dummy, jac1,
156 e jac2, jac3, jac4, jac5,
157 f jac6, gbuf%SMSTR,gbuf%OFF, nel,
158 g voldp, jhbe, ismstr, jlag)
162 x1(ii) = xgrid(1, ix(2, ii))
163 y1(ii) = xgrid(2, ix(2, ii))
164 z1(ii) = xgrid(3, ix(2, ii))
166 x2(ii) = xgrid(1, ix(4, ii))
167 y2(ii) = xgrid(2, ix(4, ii))
168 z2(ii) = xgrid(3, ix(4, ii))
170 x3(ii) = xgrid(1, ix(7, ii))
171 y3(ii) = xgrid(2, ix(7, ii))
172 z3(ii) = xgrid(3, ix(7, ii))
174 x4(ii) = xgrid(1, ix(6, ii))
175 y4(ii) = xgrid(2, ix(6, ii))
176 z4(ii) = xgrid(3, ix(6, ii))
177 ngl(ii) = ix(nixs, ii)
180 x43 = x4(ii) - x3(ii)
181 y43 = y4(ii) - y3(ii)
182 z43 = z4(ii) - z3(ii)
183 x41 = x4(ii) - x1(ii)
184 y41 = y4(ii) - y1(ii)
185 z41 = z4(ii) - z1(ii)
187 y42 = y4(ii) - y2(ii)
188 z42 = z4(ii) - z2(ii)
190 b1 = y43*z42 - y42*z43
191 b2 = y41*z43 - y43*z41
192 b3 = y42*z41 - y41*z42
195 c1 = z43*x42 - z42*x43
196 c2 = z41*x43 - z43*x41
197 c3 = z42*x41 - z41*x42
202 d3 = x42*y41 - x41*y42
214 ix => ixq(1:nixq, 1 + nft:nel + nft)
217 y1(ii) = xgrid(2, ix(2, ii))
220 y2(ii) = xgrid(2, ix(3, ii))
221 z2(ii) = xgrid(3, ix(3, ii))
223 y3(ii) = xgrid(2, ix(4, ii))
224 z3(ii) = xgrid(3, ix(4, ii))
226 y4(ii) = xgrid(2, ix(5, ii))
227 z4(ii) = xgrid(3, ix(5, ii))
229 y234(ii)=y2(ii)+y3(ii)+y4(ii)
230 y124(ii)=y1(ii)+y2(ii)+y4(ii)
232 ngl(ii) = ix(nixq, ii)
235 1 gbuf%OFF, gbuf%AREA,volnew, ngl,
238 4 y234, y124, nel, jmult,
240 ELSEIF (ity == 7)
THEN
245 y1(ii) = xgrid(2, ix(1 + 1, ii))
246 z1(ii) = xgrid(3, ix(1 + 1, ii))
247 y2(ii) = xgrid(2, ix(1 + 2, ii))
248 z2(ii) = xgrid(3, ix(1 + 2, ii))
249 y3(ii) = xgrid(2, ix(1 + 3, ii))
250 z3(ii) = xgrid(3, ix(1 + 3, ii))
251 gbuf%AREA(ii) = abs(half * ((y2(ii) - y1(ii)) * (z3(ii) - z1(ii)) -
252 . (z2(ii) - z1(ii)) * (y3(ii) - y1(ii))))
253 volnew(ii) = gbuf%AREA(ii
254 ngl(ii) = ix(nixtg, ii)
256 ELSE IF (sym == 1)
THEN
259 y1(ii) = xgrid(2, ix(1 + 1, ii))
260 z1(ii) = xgrid(3, ix(1 + 1, ii))
261 y2(ii) = xgrid(2, ix(1 + 2, ii))
262 z2(ii) = xgrid(3, ix(1 + 2, ii))
263 y3(ii) = xgrid(2, ix(1 +
264 z3(ii) = xgrid(3, ix(1 + 3, ii))
265 gbuf%AREA(ii) = abs(half * ((y2(ii) - y1(ii)) * (z3(ii) - z1(ii)) -
266 . (z2(ii) - z1(ii)) * (y3(ii) - y1(ii))))
267 volnew(ii) = (y1(ii) + y2(ii) + y3(ii)) * (
268 . y1(ii) * (z2(ii) - z3(ii)) +
269 . y2(ii) * (z3(ii) - z1(ii)) +
270 . y3(ii) * (z1(ii) - z2(ii))) * one_over_6
271 ngl(ii) = ix(nixtg, ii)
subroutine sderi3(vol, veul, geo, igeo, xd1, xd2, xd3, xd4, xd5, xd6, xd7, xd8, yd1, yd2, yd3, yd4, yd5, yd6, yd7, yd8, zd1, zd2, zd3, zd4, zd5, zd6, zd7, zd8, jac1, jac2, jac3, jac4, jac5, jac6, ngl, ngeo, px1, px2, px3, px4, py1, py2, py3, py4, pz1, pz2, pz3, pz4, det, voldp, nel, jeul, nxref, imulti_fvm)