43 1 IPARG ,ELBUF_STR ,PHI ,IXS ,IXQ ,
44 2 X ,ALE_CONNECT ,ITASK ,NERCVOIS ,NESDVOIS,
45 3 LERCVOIS ,LESDVOIS ,LENCOM ,LGAUGE ,
46 4 GAUGE ,V ,IGAUP ,NGAUP ,IXTG)
56#include "implicit_f.inc"
64#include "vect01_c.inc"
67#include "tabsiz_c.inc"
71 INTEGER IPARG(NPARG,NGROUP), ITASK, LENCOM,IXTG(NIXTG,NUMELTG),
72 . NERCVOIS(*),NESDVOIS(*),LERCVOIS(*),LESDVOIS(*),
73 . IXS(NIXS,NUMELS),IXQ(NIXQ,NUMELQ),LGAUGE(3,NBGAUGE),IGAUP(NBGAUGE),NGAUP(NSPMD)
74 my_real PHI(SPHI),GAUGE(LLGAUGE,NBGAUGE),X(3,NUMNOD),V(3,NUMNOD)
75 TYPE(elbuf_struct_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_STR
76 TYPE(t_ale_connectivity),
INTENT(IN) ::
80 INTEGER NG, JMUL, IADR, I, II,J,JJ(6),N,IG,IS,IGAUGE,IG0,(NBGAUGE),NEL,NUMEL,NCONNECT
81 my_real P,RHO,E,PA,U2,ALPHA(NBGAUGE)
82 TYPE(G_BUFEL_) ,
POINTER :: GBUF
134 IF(lgauge(1,ig) <= 0 .AND. lgauge(1,ig) >= -(numels+numelq+numeltg))
140 IF(igauge == 0)
RETURN
146 DO ng=itask+1,ngroup,nthread
147 IF( iparg(5,ng) /= 1 .AND. iparg(5,ng) /= 2 .AND.
148 . (iparg(5,ng) /= 7 .AND. n2d == 0) ) cycle
150 2 mtn ,llt ,nft ,iadr ,ity ,
151 3 npt ,jale ,ismstr ,jeul ,jtur ,
152 4 jthe ,jlag ,jmul ,jhbe ,jivf ,
153 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
154 6 irep ,iint ,igtyp ,israt ,isrot ,
155 7 icsen ,isorth ,isorthg ,ifailure,jsms )
156 IF (iparg(8,ng) == 1) cycle
158 IF (iparg(5,ng) == 1)
THEN
162 CALL agaug30(lgauge,gauge,ixs ,x ,nixs,numel,nconnect)
163 ELSEIF (iparg(5,ng) == 2)
THEN
167 CALL agaug30(lgauge,gauge,ixq ,x ,nixq,numel,nconnect)
168 ELSEIF (iparg(5,ng) == 7)
THEN
172 CALL agaug30(lgauge,gauge,ixtg ,x ,nixtg,numel,nconnect)
179 DO i=1,
max(numels,numelq,numeltg)
185 IF(is > 0 .AND. is <= numels+numelq+numeltg)
THEN
201 CALL spmd_e1vois(phi,nercvois,nesdvois,lercvois,lesdvois,lencom)
207 DO ng=itask+1,ngroup,nthread
208 IF( iparg(5,ng) /= 1 .AND. iparg(5,ng) /= 2 .AND.
209 . (iparg(5,ng) /= 7 .AND. n2d == 0) ) cycle
211 2 mtn ,llt ,nft ,iadr ,ity ,
212 3 npt ,jale ,ismstr ,jeul ,jtur ,
213 4 jthe ,jlag ,jmul ,jhbe ,jivf ,
214 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
215 6 irep ,iint ,igtyp ,israt ,isrot ,
216 7 icsen ,isorth ,isorthg ,ifailure,jsms )
217 IF(iparg(8,ng) == 1) cycle
220 IF (iparg(5,ng) == 1)
THEN
222 CALL agaug3(lgauge,gauge,phi,ixs ,x ,ale_connect )
223 ELSEIF (iparg(5,ng) == 2)
THEN
225 CALL agaug3q(lgauge,gauge,phi,ixq ,x ,ale_connect )
226 ELSEIF (iparg(5,ng) == 7)
THEN
228 CALL agaug3t(lgauge,gauge,phi,ixtg ,x ,ale_connect )
234 DO i=1,
max(numels,numelq,numeltg)
246 IF(is > 0 .AND. is <= (numels+numelq+numeltg))
THEN
263 CALL spmd_e1vois(phi,nercvois,nesdvois,lercvois,lesdvois,lencom)
269 DO ng=itask+1,ngroup,nthread
271 IF( iparg(5,ng) /= 1 .AND. iparg(5,ng) /= 2 .AND.
272 . (iparg(5,ng) /= 7 .AND. n2d == 0) ) cycle
274 2 mtn ,llt ,nft ,iadr ,ity ,
275 3 npt ,jale ,ismstr ,jeul ,jtur ,
276 4 jthe ,jlag ,jmul ,jhbe ,jivf ,
277 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
278 6 irep ,iint ,igtyp ,israt ,isrot ,
279 7 icsen ,isorth ,isorthg ,ifailure,jsms )
280 IF (iparg(8,ng) == 1) cycle
281 gbuf => elbuf_str(ng)%GBUF
294 p = (gbuf%SIG(jj(1)+i) + gbuf%SIG(jj(2)+i) + gbuf%SIG(jj(3)+i))/three
299 IF (iparg(5,ng) == 1)
THEN
303 u2 = u2+ v(1,n)*v(1,n)
304 u2 = u2+ v(2,n)*v(2,n)
305 u2 = u2+ v(3,n)*v(3,n)
307 ELSEIF (iparg(5,ng) == 2)
THEN
311 u2 = u2+ v(1,n)*v(1,n)
312 u2 = u2+ v(2,n)*v(2,n)
313 u2 = u2+ v(3,n)*v(3,n)
315 ELSEIF (iparg(5,ng) == 7)
THEN
319 u2 = u2+ v(1,n)*v(1,n)
320 u2 = u2+ v(2,n)*v(2,n)
321 u2 = u2+ v(3,n)*v(3,n)
324 pa = p - rho*u2/sixteen
330#include "lockoff.inc"
339 gauge(30,ig)= gauge(30,ig0)
340 gauge(31,ig)= gauge(31,ig0)
341 gauge(32,ig)= gauge(32,ig0)
342 gauge(33,ig)= gauge(33,ig0)
343#include "lockoff.inc"
353 alpha(ig) = gauge(5,ig)
359 IF(gauge(5,ig) /= alpha(ig))lgauge(1,ig) = 0
464 SUBROUTINE agaug3(LGAUGE,GAUGE,PHI,IXS ,X ,ALE_CONNECT )
469#include "implicit_f.inc"
470#include "comlock.inc"
474#include "com04_c.inc"
475#include "vect01_c.inc"
476#include "param_c.inc"
477#include "tabsiz_c.inc"
481 INTEGER IXS(NIXS,NUMELS),LGAUGE(3,NBGAUGE)
482 my_real PHI(SPHI),X(3,NUMNOD),GAUGE(LLGAUGE,NBGAUGE)
483 TYPE(t_ale_connectivity),
INTENT(IN) :: ALE_CONNECT
487 INTEGER I,II,J,N,N1,N2,N3,N4,IG,IAD2
489 my_real ALPHA,XX0,YY0,ZZ0,XX1,YY1,ZZ1,XX2,YY2,ZZ2,A1,A2,A3,
490 . VOL,AREAP32,XG,YG,ZG
491 DATA iface/ 1, 2, 3, 4,
505 iad2 = ale_connect%ee_connect%iad_connect(ii)
507 n= ale_connect%ee_connect%connected(iad2 + j - 1)
516 n1 = ixs(iface(1,j)+1,ii)
517 n2 = ixs(iface(2,j)+1,ii)
518 n3 = ixs(iface(3,j)+1,ii)
519 n4 = ixs(iface(4,j)+1,ii)
521 xx0 = (x(1,n1)+x(1,n2)+x(1,n3)+x(1,n4))*fourth
522 yy0 = (x(2,n1)+x(2,n2)+x(2,n3)+x(2,n4))*fourth
523 zz0 = (x(3,n1)+x(3,n2)+x(3,n3)+x(3,n4))*fourth
524 xx1 = x(1,n3)-x(1,n1)
525 yy1 = x(2,n3)-x(2,n1)
526 zz1 = x(3,n3)-x(3,n1)
527 xx2 = x(1,n4)-x(1,n2)
528 yy2 = x(2,n4)-x(2,n2)
529 zz2 = x(3,n4)-x(3,n2)
531 a1 = yy1*zz2 - yy2*zz1
532 a2 = xx2*zz1 - xx1*zz2
533 a3 = xx1*yy2 - xx2*yy1
534 vol = a1*(xg-xx0) + a2*(yg-yy0) + a3*(zg-zz0)
535 areap32 = (a1*a1+a2*a2+a3*a3)**three_over_4
536 alpha = vol/
max(areap32,em20)
538 IF(alpha >= zero .AND. alpha >= gauge(5,ig))
THEN
544#include "lockoff.inc"
559 SUBROUTINE agauge0(LGAUGE ,GAUGE,X ,IXC,IGAUP,NGAUP)
609#include "implicit_f.inc"
613#include "com01_c.inc"
614#include "com04_c.inc"
615#include "param_c.inc"
619 INTEGER IXC(NIXC,NUMELC),LGAUGE(3,NBGAUGE),IGAUP(*),NGAUP(*)
620 my_real X(3,NUMNOD),GAUGE(LLGAUGE,NBGAUGE)
624 INTEGER IG,IS,IGAUGE,N,N1,N2,N3,
625 my_real XX0,YY0,ZZ0,XX1,YY1,ZZ1,XX2,YY2,ZZ2,A1,A2,A3,
632 IF(lgauge(1,ig) <= 0) igauge=1
634 IF(igauge == 0)
RETURN
654 xx0 = (x(1,n1)+x(1,n2)+x(1,n3)+x(1,n4))*fourth
655 yy0 = (x(2,n1)+x(2,n2)+x(2,n3)+x(2,n4))*fourth
656 zz0 = (x(3,n1)+x(3,n2)+x(3,n3)+x(3,n4))*fourth
657 xx1 = x(1,n3)-x(1,n1)
658 yy1 = x(2,n3)-x(2,n1)
659 zz1 = x(3,n3)-x(3,n1)
660 xx2 = x(1,n4)-x(1,n2)
661 yy2 = x(2,n4)-x(2,n2)
662 zz2 = x(3,n4)-x(3,n2)
666 a1 = yy1*zz2 - yy2*zz1
667 a2 = xx2*zz1 - xx1*zz2
668 a3 = xx1*yy2 - xx2*yy1
669 aa = dist/sqrt(
max(em20,a1*a1+a2*a2+a3*a3))
670 gauge(2,ig) = xx0 + aa*a1
671 gauge(3,ig) = yy0 + aa*a2
672 gauge(4,ig) = zz0 + aa*a3
675 gauge(2,ig) = gauge(34,ig)
676 gauge(3,ig) = gauge(35,ig)
677 gauge(4,ig) = gauge(36,ig)
subroutine alemain(timers, pm, geo, x, a, v, ms, wa, elbuf_tab, bufmat, partsav, tf, val2, veul, fv, stifn, fsky, eani, phi, fill, dfill, alph, skew, w, d, dsave, asave, dt2t, dt2save, xcell, iparg, npc, ixs, ixq, ixtg, iads, ifill, icodt, iskew, ims, iadq, neltst, ityptst, iparts, ipartq, itask, nodft, nodlt, nbrcvois, temp, fsavsurf, nbsdvois, lnrcvois, lnsdvois, nercvois, nesdvois, lercvois, lesdvois, isizxv, iad_elem, fr_elem, fskym, msnf, ipari, segvar, itab, iskwn, diffusion, iresp, volmon, fsav, igrsurf, neltsa, ityptsa, weight, npsegcom, lsegcom, ipm, igeo, itabm1, lenqmv, nv46, aglob, gresav, grth, igrth, lgauge, gauge, mssa, dmels, igaup, ngaup, table, ms0, xdp, igrnod, sfem_nodvar, fskyi, isky, s_sfem_nodvar, intbuf_tab, ixt, igrv, agrav, sensors, lgrav, condnsky, condn, ms_2d, multi_fvm, igrtruss, igrbric, nloc_dmg, id_global_vois, face_vois, ebcs_tab, ale_connectivity, mat_elem, h3d_data, dt, output, need_comm_inter18, idtmins, idtmin, maxfunc, imon_mat, userl_avail, impl_s, idyna, python, matparam, glob_therm)