44 1 IPARG ,ELBUF_STR ,PHI ,IXS ,IXQ ,
45 2 X ,ALE_CONNECT ,ITASK ,NERCVOIS ,NESDVOIS,
46 3 LERCVOIS ,LESDVOIS ,LENCOM ,LGAUGE ,
47 4 GAUGE ,V ,IGAUP ,NGAUP ,IXTG)
54 use element_mod ,
only : nixs,nixq,nixtg
58#include "implicit_f.inc"
66#include "vect01_c.inc"
69#include "tabsiz_c.inc"
73 INTEGER IPARG(NPARG,NGROUP), ITASK, LENCOM,IXTG(NIXTG,NUMELTG),
74 . NERCVOIS(*),NESDVOIS(*),LERCVOIS(*),LESDVOIS(*),
75 . IXS(NIXS,NUMELS),IXQ(NIXQ,NUMELQ),LGAUGE(3,NBGAUGE),IGAUP(NBGAUGE),NGAUP(NSPMD)
76 my_real PHI(SPHI),GAUGE(LLGAUGE,NBGAUGE),X(3,NUMNOD),V(3,NUMNOD)
77 TYPE(elbuf_struct_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_STR
78 TYPE(t_ale_connectivity),
INTENT(IN) :: ALE_CONNECT
82 INTEGER NG, JMUL, IADR, I, II,J,JJ(6),N,IG,IS,IGAUGE,IG0,ITAG(NBGAUGE),NEL,NUMEL,NCONNECT
83 my_real P,RHO,E,PA,U2,ALPHA(NBGAUGE)
84 TYPE(G_BUFEL_) ,
POINTER :: GBUF
136 IF(lgauge(1,ig) <= 0 .AND. lgauge(1,ig) >= -(numels+numelq+numeltg))
142 IF(igauge == 0)
RETURN
148 DO ng=itask+1,ngroup,nthread
149 IF( iparg(5,ng) /= 1 .AND. iparg(5,ng) /= 2 .AND.
150 . (iparg(5,ng) /= 7 .AND. n2d == 0) ) cycle
152 2 mtn ,llt ,nft ,iadr ,ity ,
153 3 npt ,jale ,ismstr ,jeul ,jtur ,
154 4 jthe ,jlag ,jmul ,jhbe ,jivf
155 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
156 6 irep ,iint ,igtyp ,israt ,isrot ,
157 7 icsen ,isorth ,isorthg ,ifailure,jsms )
158 IF (iparg(8,ng) == 1) cycle
160 IF (iparg(5,ng) == 1)
THEN
164 CALL agaug30(lgauge,gauge,ixs ,x ,nixs,numel,nconnect)
165 ELSEIF (iparg(5,ng) == 2)
THEN
169 CALL agaug30(lgauge,gauge,ixq ,x ,nixq,numel,nconnect)
170 ELSEIF (iparg(5,ng) == 7)
THEN
174 CALL agaug30(lgauge,gauge,ixtg ,x ,nixtg,numel,nconnect)
181 DO i=1,
max(numels,numelq,numeltg)
187 IF(is > 0 .AND. is <= numels+numelq+numeltg)
THEN
203 CALL spmd_e1vois(phi,nercvois,nesdvois,lercvois,lesdvois,lencom)
209 DO ng=itask+1,ngroup,nthread
210 IF( iparg(5,ng) /= 1 .AND. iparg(5,ng) /= 2 .AND.
211 . (iparg(5,ng) /= 7 .AND. n2d == 0) ) cycle
213 2 mtn ,llt ,nft ,iadr ,ity ,
214 3 npt ,jale ,ismstr ,jeul ,jtur ,
215 4 jthe ,jlag ,jmul ,jhbe ,jivf ,
216 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
217 6 irep ,iint ,igtyp ,israt ,isrot ,
218 7 icsen ,isorth ,isorthg ,ifailure,jsms )
219 IF(iparg(8,ng) == 1) cycle
222 IF (iparg(5,ng) == 1)
THEN
224 CALL agaug3(lgauge,gauge,phi,ixs ,x ,ale_connect )
225 ELSEIF (iparg(5,ng) == 2)
THEN
227 CALL agaug3q(lgauge,gauge,phi,ixq ,x ,ale_connect )
228 ELSEIF (iparg(5,ng) == 7)
THEN
230 CALL agaug3t(lgauge,gauge,phi,ixtg ,x ,ale_connect )
236 DO i=1,
max(numels,numelq,numeltg)
248 IF(is > 0 .AND. is <= (numels+numelq+numeltg))
THEN
265 CALL spmd_e1vois(phi,nercvois,nesdvois,lercvois,lesdvois,lencom)
271 DO ng=itask+1,ngroup,nthread
273 IF( iparg(5,ng) /= 1 .AND. iparg(5,ng) /= 2 .AND.
274 . (iparg(5,ng) /= 7 .AND. n2d == 0) ) cycle
276 2 mtn ,llt ,nft ,iadr ,ity ,
277 3 npt ,jale ,ismstr ,jeul ,jtur ,
278 4 jthe ,jlag ,jmul ,jhbe ,jivf ,
279 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
280 6 irep ,iint ,igtyp ,israt ,isrot ,
281 7 icsen ,isorth ,isorthg ,ifailure,jsms )
282 IF (iparg(8,ng) == 1) cycle
283 gbuf => elbuf_str(ng)%GBUF
296 p = (gbuf%SIG(jj(1)+i) + gbuf%SIG(jj(2)+i) + gbuf%SIG(jj(3)+i))/three
301 IF (iparg(5,ng) == 1)
THEN
305 u2 = u2+ v(1,n)*v(1,n)
306 u2 = u2+ v(2,n)*v(2,n)
307 u2 = u2+ v(3,n)*v(3,n)
309 ELSEIF (iparg(5,ng) == 2)
THEN
314 u2 = u2+ v(2,n)*v(2,n)
315 u2 = u2+ v(3,n)*v(3,n)
317 ELSEIF (iparg(5,ng) == 7)
THEN
322 u2 = u2+ v(2,n)*v(2,n)
323 u2 = u2+ v(3,n)*v(3,n)
326 pa = p - rho*u2/sixteen
332#include "lockoff.inc"
343 gauge(32,ig)= gauge(32,ig0)
344 gauge(33,ig)= gauge(33,ig0)
345#include "lockoff.inc"
355 alpha(ig) = gauge(5,ig)
361 IF(gauge(5,ig) /= alpha(ig))lgauge(1,ig) = 0
467 SUBROUTINE agaug3(LGAUGE,GAUGE,PHI,IXS ,X ,ALE_CONNECT )
469 use element_mod ,
only : nixs
473#include "implicit_f.inc"
474#include "comlock.inc"
478#include "com04_c.inc"
479#include "vect01_c.inc"
480#include "param_c.inc"
481#include "tabsiz_c.inc"
485 INTEGER IXS(NIXS,NUMELS),LGAUGE(3,NBGAUGE)
486 my_real PHI(SPHI),X(3,NUMNOD),GAUGE(LLGAUGE,NBGAUGE)
487 TYPE(t_ale_connectivity),
INTENT(IN) :: ALE_CONNECT
491 INTEGER I,II,J,N,N1,N2,N3,N4,IG,IAD2
493 my_real ALPHA,XX0,YY0,ZZ0,XX1,YY1,ZZ1,XX2,YY2,ZZ2,A1,A2,A3,
494 . VOL,AREAP32,XG,YG,ZG
495 DATA iface/ 1, 2, 3, 4,
509 iad2 = ale_connect%ee_connect%iad_connect(ii)
511 n= ale_connect%ee_connect%connected(iad2 + j - 1)
520 n1 = ixs(iface(1,j)+1,ii)
521 n2 = ixs(iface(2,j)+1,ii)
522 n3 = ixs(iface(3,j)+1,ii)
523 n4 = ixs(iface(4,j)+1,ii)
525 xx0 = (x(1,n1)+x(1,n2)+x(1,n3)+x(1,n4))*fourth
526 yy0 = (x(2,n1)+x(2,n2)+x(2,n3)+x(2,n4))*fourth
527 zz0 = (x(3,n1)+x(3,n2)+x(3,n3)+x(3,n4))*fourth
528 xx1 = x(1,n3)-x(1,n1)
529 yy1 = x(2,n3)-x(2,n1)
530 zz1 = x(3,n3)-x(3,n1)
531 xx2 = x(1,n4)-x(1,n2)
532 yy2 = x(2,n4)-x(2,n2)
533 zz2 = x(3,n4)-x(3,n2)
535 a1 = yy1*zz2 - yy2*zz1
536 a2 = xx2*zz1 - xx1*zz2
537 a3 = xx1*yy2 - xx2*yy1
538 vol = a1*(xg-xx0) + a2*(yg-yy0) + a3*(zg-zz0)
539 areap32 = (a1*a1+a2*a2+a3*a3)**three_over_4
540 alpha = vol/
max(areap32,em20)
542 IF(alpha >= zero .AND. alpha >= gauge(5,ig))
THEN
548#include "lockoff.inc"
565 SUBROUTINE agauge0(LGAUGE ,GAUGE,X ,IXC,IGAUP,NGAUP)
566 use element_mod ,
only : nixc
616#include "implicit_f.inc"
620#include "com01_c.inc"
621#include "com04_c.inc"
622#include "param_c.inc"
626 INTEGER IXC(NIXC,NUMELC),LGAUGE(3,NBGAUGE),IGAUP(*),NGAUP(*)
627 my_real X(3,NUMNOD),GAUGE(LLGAUGE,NBGAUGE)
631 INTEGER IG,IS,IGAUGE,N,N1,N2,N3,N4
632 my_real XX0,YY0,ZZ0,XX1,YY1,ZZ1,XX2,YY2,ZZ2,A1,A2,A3,
639 IF(lgauge(1,ig) <= 0) igauge=1
641 IF(igauge == 0)
RETURN
661 xx0 = (x(1,n1)+x(1,n2)+x(1,n3)+x(1,n4))*fourth
662 yy0 = (x(2,n1)+x(2,n2)+x(2,n3)+x(2,n4))*fourth
663 zz0 = (x(3,n1)+x(3,n2)+x(3,n3)+x(3,n4))*fourth
664 xx1 = x(1,n3)-x(1,n1)
665 yy1 = x(2,n3)-x(2,n1)
666 zz1 = x(3,n3)-x(3,n1)
667 xx2 = x(1,n4)-x(1,n2)
668 yy2 = x(2,n4)-x(2,n2)
669 zz2 = x(3,n4)-x(3,n2)
673 a1 = yy1*zz2 - yy2*zz1
674 a2 = xx2*zz1 - xx1*zz2
675 a3 = xx1*yy2 - xx2*yy1
676 aa = dist/sqrt(
max(em20,a1*a1+a2*a2+a3*a3))
677 gauge(2,ig) = xx0 + aa*a1
678 gauge(3,ig) = yy0 + aa*a2
679 gauge(4,ig) = zz0 + aa*a3
682 gauge(2,ig) = gauge(34,ig)
683 gauge(3,ig) = gauge(35,ig)
684 gauge(4,ig) = gauge(36,ig)
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)