39 SUBROUTINE s4lagsfem(IPARG,IXS,X,V,ELBUF_TAB,SFEM_NODVAR,S_SFEM_NODVAR,
40 . IAD_ELEM,FR_ELEM,IXS10,XDP,SXDP,
41 . NUMNOD, SFR_ELEM, NSPMD, NUMELS, NUMELS8, NUMELS10, NPARG, NGROUP, IRESP)
50#include "implicit_f.inc"
58#include "vect01_c.inc"
62 INTEGER,
INTENT(IN) :: S_SFEM_NODVAR, SFR_ELEM, SXDP
63 INTEGER,
INTENT(IN) :: NUMELS, NUMELS8, NUMELS10
64 INTEGER,
INTENT(IN) :: NPARG, NGROUP
65 INTEGER,
INTENT(IN) :: NUMNOD
66 INTEGER,
INTENT(IN) :: IRESP
67 INTEGER,
INTENT(IN) :: NSPMD
68 INTEGER IXS(NIXS,NUMELS),IPARG(NPARG,NGROUP),IAD_ELEM(2,NSPMD+1),FR_ELEM(SFR_ELEM),IXS10(6,NUMELS10)
69 my_real,
INTENT(IN) :: x(3*numnod),v(3*numnod)
70 my_real,
intent(inout) :: sfem_nodvar(s_sfem_nodvar)
71 DOUBLE PRECISION ,
DIMENSION(SXDP),
INTENT(IN) :: XDP
72 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
76 INTEGER NG, I, J, I1, I2, I3, I4, K, LENR,NEL,NNOD,ICPRE,IBID,IP
77 INTEGER (MVSIZ),NC2(MVSIZ),NC3(MVSIZ),NC4(MVSIZ),NC(MVSIZ,10)
80 DOUBLE PRECISION VOL06(6,MVSIZ), VARNOD6(6,2*NUMNOD)
82 TYPE(g_bufel_) ,
POINTER :: GBUF
83 TYPE(L_BUFEL_) ,
POINTER :: LBUF
87 sfem_nodvar(1:2*numnod) = zero
89 vol06(1:6,1:mvsiz) = zero
97 IF(iparg(8, ng) == 1) cycle
100 IF(nnod/=4 .AND. nnod /= 10) cycle
102 2 mtn ,llt ,nft ,iad ,ity ,
103 3 npt ,jale ,ismstr ,jeul ,jtur ,
104 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
105 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
106 6 irep ,iint ,igtyp ,israt ,isrot ,
107 7 icsen ,isorth ,isorthg ,ifailure,jsms )
111 IF(nnod == 4 .AND. isrot /= 3) cycle
112 IF(icpre == 0 .AND. (nnod == 10 .OR. (nnod == 4 .AND. isrot == 1))) cycle
124 gbuf => elbuf_tab(ng)%GBUF
125 IF(nnod==4 .AND. isrot == 3)
THEN
127 1 varnod6, x, nc1, nc2,
128 2 nc3, nc4, gbuf%OFF, xdp,
131 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
133 IF(gbuf%OFF(i) == zero)
THEN
136 vol0(i)=lbuf%VOL0DP(i)
141 IF(gbuf%OFF(i) == zero)
THEN
150 1 varnod6, v, nc1, nc2,
151 2 nc3, nc4, vol0, gbuf%AMU,
152 3 gbuf%OFF, gbuf%SMSTR, nel, ismstr)
162 varnod6(k,i1) = varnod6(k,i1) + vol06(k,i)
163 varnod6(k,i2) = varnod6(k,i2) + vol06(k,i)
164 varnod6(k,i3) = varnod6(k,i3) + vol06(k,i)
165 varnod6(k,i4) = varnod6(k,i4) + vol06(k,i)
170 nc(lft:llt,1) =nc1(lft:llt)
171 nc(lft:llt,2) =nc2(lft:llt)
172 nc(lft:llt,3) =nc3(lft:llt)
173 nc(lft:llt,4) =nc4(lft:llt)
177 nc(i,5:10) =ixs10(1:6,j)
185 1 elbuf_tab(ng),varnod6, x, nc,
186 2 gbuf%OFF, gbuf%SMSTR, xdp, nel,
190 lbuf => elbuf_tab(ng)%BUFLY(ibid)%LBUF(ip,ibid,ibid)
192 IF(gbuf%OFF(i) == zero)
THEN
201 i1 = nc(i,ip) +numnod
202 varnod6(1:6,i1) = varnod6(1:6,i1) + vol06(1:6,i)
207 1 varnod6, x, nc, gbuf%OFF,
208 2 volg , xdp, nel, npt,
211 IF(gbuf%OFF(i) == zero)
THEN
226 varnod6(k,i1) = varnod6(k,i1) + vol06(k,i)
227 varnod6(k,i2) = varnod6(k,i2) + vol06(k,i)
228 varnod6(k,i3) = varnod6(k,i3) + vol06(k,i)
229 varnod6(k,i4) = varnod6(k,i4) + vol06(k,i)
239 lenr = 2*(iad_elem(1,nspmd+1)-iad_elem(1,1))
240 CALL spmd_exch_vol(varnod6(1,1),varnod6(1,numnod+1),iad_elem,fr_elem,lenr )
249 sfem_nodvar(i) = sfem_nodvar(i) + varnod6(k,i)
251 sfem_nodvar(j) = sfem_nodvar(j) + varnod6(k,j)
255 IF(sfem_nodvar(j) /= 0)
THEN
256 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)