40 SUBROUTINE s4lagsfem(IPARG,IXS,X,V,ELBUF_TAB,SFEM_NODVAR,S_SFEM_NODVAR,
41 . IAD_ELEM,FR_ELEM,IXS10,XDP,SXDP,
42 . NUMNOD, SFR_ELEM, NSPMD, NUMELS, NUMELS8, NUMELS10, NPARG, NGROUP, IRESP)
48 use element_mod ,
only : nixs
52#include "implicit_f.inc"
60#include "vect01_c.inc"
64 INTEGER,
INTENT(IN) :: S_SFEM_NODVAR, SFR_ELEM, SXDP
65 INTEGER,
INTENT(IN) :: NUMELS, NUMELS8, NUMELS10
66 INTEGER,
INTENT(IN) :: NPARG, NGROUP
67 INTEGER,
INTENT(IN) :: NUMNOD
68 INTEGER,
INTENT(IN) :: IRESP
69 INTEGER,
INTENT(IN) :: NSPMD
70 INTEGER IXS(NIXS,NUMELS),IPARG(NPARG,NGROUP),IAD_ELEM(2,NSPMD+1),FR_ELEM(SFR_ELEM),IXS10(6,NUMELS10)
71 my_real,
INTENT(IN) :: x(3*numnod),v(3*numnod)
72 my_real,
intent(inout) :: sfem_nodvar(s_sfem_nodvar)
73 DOUBLE PRECISION ,
DIMENSION(SXDP),
INTENT(IN) :: XDP
74 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
78 INTEGER NG, I, J, I1, I2, I3, I4, K, LENR,NEL,NNOD,ICPRE,IBID,IP
79 INTEGER NC1(MVSIZ),NC2(MVSIZ),NC3(MVSIZ),NC4(MVSIZ),NC(MVSIZ,10)
82 DOUBLE PRECISION VOL06(6,MVSIZ), VARNOD6(6,2*NUMNOD)
84 TYPE(g_bufel_) ,
POINTER :: GBUF
85 TYPE(L_BUFEL_) ,
POINTER :: LBUF
89 sfem_nodvar(1:2*numnod) = zero
90 varnod6(1:6,1:2*numnod) = zero
91 vol06(1:6,1:mvsiz) = zero
99 IF(iparg(8, ng) == 1) cycle
102 IF(nnod/=4 .AND. nnod /= 10) cycle
104 2 mtn ,llt ,nft ,iad ,ity ,
105 3 npt ,jale ,ismstr ,jeul ,jtur ,
106 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
107 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
108 6 irep ,iint ,igtyp ,israt ,isrot ,
109 7 icsen ,isorth ,isorthg ,ifailure,jsms )
113 IF(nnod == 4 .AND. isrot /= 3) cycle
114 IF(icpre == 0 .AND. (nnod == 10 .OR. (nnod == 4 .AND. isrot == 1))) cycle
126 gbuf => elbuf_tab(ng)%GBUF
127 IF(nnod==4 .AND. isrot == 3)
THEN
129 1 varnod6, x, nc1, nc2,
130 2 nc3, nc4, gbuf%OFF, xdp,
133 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
135 IF(gbuf%OFF(i) == zero)
THEN
138 vol0(i)=lbuf%VOL0DP(i)
143 IF(gbuf%OFF(i) == zero)
THEN
152 1 varnod6, v, nc1, nc2,
153 2 nc3, nc4, vol0, gbuf%AMU,
154 3 gbuf%OFF, gbuf%SMSTR, nel, ismstr)
164 varnod6(k,i1) = varnod6(k,i1) + vol06(k,i)
165 varnod6(k,i2) = varnod6(k,i2) + vol06(k,i)
166 varnod6(k,i3) = varnod6(k,i3) + vol06(k,i)
167 varnod6(k,i4) = varnod6(k,i4) + vol06(k,i)
172 nc(lft:llt,1) =nc1(lft:llt)
173 nc(lft:llt,2) =nc2(lft:llt)
175 nc(lft:llt,4) =nc4(lft:llt)
179 nc(i,5:10) =ixs10(1:6,j)
187 1 elbuf_tab(ng),varnod6, x, nc,
188 2 gbuf%OFF, gbuf%SMSTR, xdp, nel,
192 lbuf => elbuf_tab(ng)%BUFLY(ibid)%LBUF(ip,ibid,ibid)
194 IF(gbuf%OFF(i) == zero)
THEN
203 i1 = nc(i,ip) +numnod
204 varnod6(1:6,i1) = varnod6(1:6,i1) + vol06(1:6,i)
209 1 varnod6, x, nc, gbuf%OFF,
210 2 volg , xdp, nel, npt,
213 IF(gbuf%OFF(i) == zero)
THEN
228 varnod6(k,i1) = varnod6(k,i1) + vol06(k,i)
229 varnod6(k,i2) = varnod6(k,i2) + vol06(k,i)
230 varnod6(k,i3) = varnod6(k,i3) + vol06(k,i)
231 varnod6(k,i4) = varnod6(k,i4) + vol06(k,i)
241 lenr = 2*(iad_elem(1,nspmd+1)-iad_elem(1,1))
242 CALL spmd_exch_vol(varnod6(1,1),varnod6(1,numnod+1),iad_elem,fr_elem,lenr )
251 sfem_nodvar(i) = sfem_nodvar(i) + varnod6(k,i)
253 sfem_nodvar(j) = sfem_nodvar(j) + varnod6(k,j)
257 IF(sfem_nodvar(j) /= 0)
THEN
258 sfem_nodvar(i)=sfem_nodvar(i)/sfem_nodvar(j)
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)