38 2 IPARG , WA_L , ELBUF_TAB ,ALE_CONNECTIVITY ,VOL,
63#include "implicit_f.inc"
74 INTEGER,
INTENT(IN) :: ITYP
75 INTEGER,
INTENT(IN) :: IX(NIX,*),IPARG(NPARG,NGROUP),NIX,NG
76 my_real :: WA_L(*),X(3,NUMNOD),EVAR(MVSIZ),VOL(MVSIZ)
77 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
87 my_real :: grad(3) , xi(8), yi(8), zi(8) , sch
89 my_real :: n(3,6,mvsiz), rho(6), valvois(6),
area(mvsiz), nx, a1, a2
102 IF(n2d == 0 .AND. ityp == 1)
THEN
147 n(1,1,i)=(yi(3)-yi(1))*(zi(2)-zi(4)) - (zi(3)-zi(1))*(yi(2)-yi(4))
148 n(2,1,i)=(zi(3)-zi(1))*(xi(2)-xi(4)) - (xi(3)-xi(1))*(zi(2)-zi(4))
149 n(3,1,i)=(xi(3)-xi(1))*(yi(2)-yi(4)) - (yi(3)-yi(1))*(xi(2)-xi(4))
151 n(1,2,i)=(yi(7)-yi(4))*(zi(3)-zi(8)) - (zi(7)-zi(4))*(yi(3)-yi(8))
152 n(2,2,i)=(zi(7)-zi(4))*(xi(3)-xi(8)) - (xi(7)-xi(4))*(zi(3)-zi(8))
153 n(3,2,i)=(xi(7)-xi(4))*(yi(3)-yi(8)) - (yi(7)-yi(4))*(xi(3)-xi(8))
155 n(1,3,i)=(yi(6)-yi(8))*(zi(7)-zi(5)) - (zi(6)-zi(8))*(yi(7)-yi(5))
156 n(2,3,i)=(zi(6)-zi(8))*(xi(7)-xi(5)) - (xi(6)-xi(8))*(zi(7)-zi(5))
157 n(3,3,i)=(xi(6)-xi(8))*(yi(7)-yi(5)) - (yi(6)-yi(8))*(xi(7)-xi(5))
159 n(1,4,i)=(yi(2)-yi(5))*(zi(6)-zi(1)) - (zi(2)-zi(5))*(yi(6)-yi(1))
160 n(2,4,i)=(zi(2)-zi(5))*(xi(6)-xi(1)) - (xi(2)-xi(5))*(zi(6)-zi(1))
161 n(3,4,i)=(xi(2)-xi(5))*(yi(6)-yi(1)) - (yi(2)-yi(5))*(xi(6)-xi(1))
163 n(1,5,i)=(yi(7)-yi(2))*(zi(6)-zi(3)) - (zi(7)-zi(2))*(yi(6)-yi(3))
164 n(2,5,i)=(zi(7)-zi(2))*(xi(6)-xi(3)) - (xi(7)-xi(2))*(zi(6)-zi(3))
165 n(3,5,i)=(xi(7)-xi(2))*(yi(6)-yi(3)) - (yi(7)-yi(2))*(xi(6)-xi(3))
167 n(1,6,i)=(yi(8)-yi(1))*(zi(4)-zi(5)) - (zi(8)-zi(1))*(yi(4)-yi(5))
168 n(2,6,i)=(zi(8)-zi(1))*(xi(4)-xi(5)) - (xi(8)-xi(1))*(zi(4)-zi(5))
169 n(3,6,i)=(xi(8)-xi(1))*(yi(4)-yi(5)) - (yi(8)-yi(1))*(xi(4)-xi(5))
171 n(1:3,1,i) = half * n(1:3,1,i)
172 n(1:3,2,i) = half * n(1:3,2,i)
173 n(1:3,3,i) = half * n(1:3,3,i)
174 n(1:3,4,i) = half * n(1:3,4,i)
175 n(1:3,5,i) = half * n(1:3,5,i)
176 n(1:3,6,i) = half * n(1:3,6,i)
178 ELSEIF(n2d > 0 .AND. ityp == 2)
THEN
206 n(2,1,i) = (zi(2)-zi(1))
207 n(3,1,i) =-(yi(2)-yi(1))
210 n(2,2,i) = (zi(3)-zi(2))
211 n(3,2,i) =-(yi(3)-yi(2))
214 n(2,3,i) = (zi(4)-zi(3))
215 n(3,3,i) =-(yi(4)-yi(3))
218 n(2,4,i) = (zi(1)-zi(4))
219 n(3,4,i) =-(yi(1)-yi(4))
224 a1 =yi(2)*(zi(3)-zi(4))+yi(3)*(zi(4)-zi(2))+yi(4)*(zi(2)-zi(3))
225 a2 =yi(2)*(zi(4)-zi(1))+yi(4)*(zi(1)-zi(2))+yi(1)*(zi(2)-zi(4))
226 area(i)=(a1+a2)* half
227 ELSE IF (elbuf_tab(ng)%GBUF%G_AREA >= i)
THEN
228 area(i)=elbuf_tab(ng)%GBUF%AREA(i)
233 ELSEIF(n2d > 0 .AND. ityp == 7)
THEN
255 n(2,1,i) = (zi(2)-zi(1))
256 n(3,1,i) =-(yi(2)-yi(1))
259 n(2,2,i) = (zi(3)-zi(2))
260 n(3,2,i) =-(yi(3)-yi(2))
263 n(2,3,i) = (zi(1)-zi(3))
264 n(3,3,i) =-(yi(1)-yi(3))
269 nx = half * ((yi(2) - yi(1)) * (zi(3) - zi(1)) - (zi(2) - zi(1)) * (yi(3) - yi(1)))
272 area(i)=elbuf_tab(ng)%GBUF%AREA(i)
276 n(1:3,1:6,1:nel) = zero
283 IF(n2d == 0 .AND. ityp==1)
THEN
286 iad2 = ale_connectivity%ee_connect%iad_connect(ie)
287 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-ale_connectivity%ee_connect%iad_connect(ie)
289 iv(j) = ale_connectivity%ee_connect%connected(iad2 + j - 1)
291 valvois(j) = wa_l(iv(j))
293 valvois(j) = wa_l(ie)
296 rho(1) = half*( wa_l(ie) + valvois
297 rho(2) = half*( wa_l(ie) + valvois(2) )
298 rho(3) = half*( wa_l(ie) + valvois(3) )
299 rho(4) = half*( wa_l(ie) + valvois(4) )
300 rho(5) = half*( wa_l(ie) + valvois(5) )
301 rho(6) = half*( wa_l(ie) + valvois(6) )
306 grad(1:3) = grad(1:3) + rho(1)*n(1:3,1,i)
307 grad(1:3) = grad(1:3) + rho(2)*n(1:3,2,i)
308 grad(1:3) = grad(1:3) + rho(3)*n(1:3,3,i)
309 grad(1:3) = grad(1:3) + rho(4)*n(1:3,4,i)
310 grad(1:3) = grad(1:3) + rho(5)*n(1:3,5,i)
311 grad(1:3) = grad(1:3) + rho(6)*n(1:3,6,i)
312 grad(1:3) = grad(1:3) / vol(i)
316 sch = sqrt(sum(grad(1:3)*grad(1:3)))
320 ELSEIF(n2d > 0 .AND. ityp == 2)
THEN
323 iad2 = ale_connectivity%ee_connect%iad_connect(ie)
324 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-iad2
326 iv(j)=ale_connectivity%ee_connect%connected(iad2 + j - 1)
328 valvois(j) = wa_l(iv(j))
330 valvois(j) = wa_l(ie)
333 rho(1) = half*( wa_l(ie) + valvois(1) )
334 rho(2) = half*( wa_l(ie) + valvois(2) )
335 rho(3) = half*( wa_l(ie) + valvois(3) )
336 rho(4) = half*( wa_l(ie) + valvois(4) )
341 grad(2:3) = grad(2:3) + rho(1)*n(2:3,1,i)
342 grad(2:3) = grad(2:3) + rho(2)*n(2:3,2,i)
343 grad(2:3) = grad(2:3) + rho(3)*n(2:3,3,i)
344 grad(2:3) = grad(2:3) + rho(4)*n(2:3,4,i)
345 grad(2:3) = grad(2:3) /
area(i)
349 sch = sqrt(sum(grad(2:3)*grad(2:3)))
353 ELSEIF(n2d > 0 .AND. ityp == 7)
THEN
356 iad2 = ale_connectivity%ee_connect%iad_connect(ie)
357 lgth = ale_connectivity%ee_connect%iad_connect(ie+1)-ale_connectivity%ee_connect%iad_connect(ie)
359 iv(j)=ale_connectivity%ee_connect%connected(iad2 + j - 1)
361 valvois(j) = wa_l(iv(j))
363 valvois(j) = wa_l(ie)
366 rho(1) = half*( wa_l(ie) + valvois(1) )
367 rho(2) = half*( wa_l(ie) + valvois(2) )
368 rho(3) = half*( wa_l(ie) + valvois(3) )
373 grad(2:3) = grad(2:3) + rho(1)*n(2:3,1,i)
374 grad(2:3) = grad(2:3) + rho(2)*n(2:3,2,i)
375 grad(2:3) = grad(2:3) + rho(3)*n(2:3,3,i)
376 grad(2:3) = grad(2:3) /
area(i)
380 sch = sqrt(sum(grad(2:3)*grad(2:3)))
subroutine h3d_solid_scalar_1(called_from_python, elbuf_tab, solid_scalar, iparg, ixs, pm, bufmat, ehour, ipm, x, v, w, ale_connect, id_elem, ity_elem, iparts, layer_input, ir_input, is_input, it_input, iuvar_input, h3d_part, is_written_solid, info1, keyword, fani_cell, multi_fvm, ng, idmds, imdsvar, id, mat_param, mode)