38
39
40
42 USE elbufdef_mod
43
44
45
46#include "implicit_f.inc"
47
48
49
50#include "mvsiz_p.inc"
51#include "param_c.inc"
52
53
54
55#include "com01_c.inc"
56#include "com04_c.inc"
57#include "vect01_c.inc"
58
59
60
61 INTEGER,INTENT(IN) :: S_SFEM_NODVAR
62 INTEGER IXS(NIXS,*),IPARG(NPARG,*),IAD_ELEM(2,*),FR_ELEM(*)
63 my_real x(*),sfem_nodvar(s_sfem_nodvar),pm(npropm,*)
64 TYPE (ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
65
66
67
68 INTEGER NG, I, J, I1, I2, I3, I4, K, LENR,NEL
69 INTEGER NC1(MVSIZ),NC2(),NC3(MVSIZ),NC4(MVSIZ)
70 INTEGER (MVSIZ)
72
73 DOUBLE PRECISION VARNOD6(6,2*NUMNOD), MASS6(6,MVSIZ)
74
75 TYPE(G_BUFEL_) ,POINTER :: GBUF
76
77 sfem_nodvar(1:2*numnod) = zero
78 varnod6(1:6,1:2*numnod) = zero
79 mass(1:mvsiz) = zero
80 mass6(1:6,1:mvsiz) = zero
81
82
83
84
85
86 DO ng = 1,ngroup
87 IF(iparg(8, ng)==1) cycle
88 IF(iparg(28,ng)/=4) cycle
90 2 mtn ,llt ,nft ,iad ,ity ,
91 3 npt ,jale ,ismstr ,jeul ,jtur ,
92 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
93 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
94 6 irep ,iint ,igtyp ,israt ,isrot ,
95 7 icsen ,isorth ,isorthg ,ifailure,jsms )
96
97 IF(jeul == 1) cycle
98 IF(jlag == 1) cycle
99 IF(isrot <= 2) cycle
100 lft=1
101 nel = llt
102
103 DO i=lft,llt
104 j=i+nft
105 mat(i)=ixs(1,j)
106 nc1(i)=ixs(2,j)
107 nc2(i)=ixs(4,j)
108 nc3(i)=ixs(7,j)
109 nc4(i)=ixs(6,j)
110 ENDDO
111
112 gbuf => elbuf_tab(ng)%GBUF
113 IF(isrot == 3) THEN
115 1 varnod6, x, nc1, nc2,
116 2 nc3, nc4, gbuf%OFF, gbuf%SMSTR,
117 3 nel, ismstr)
118 DO i=lft,llt
119 mass(i)=gbuf%RHO(i)/pm(1,mat(i))
120 ENDDO
121
123 DO i=lft,llt
124 i1=nc1(i)+numnod
125 i2=nc2(i)+numnod
126 i3=nc3(i)+numnod
127 i4=nc4(i)+numnod
128
129 DO k=1,6
130 varnod6(k,i1) = varnod6(k,i1) + mass6(k,i)
131 varnod6(k,i2) = varnod6(k,i2) + mass6(k,i)
132 varnod6(k,i3) = varnod6(k,i3) + mass6(k,i)
133 varnod6(k,i4) = varnod6(k,i4) + mass6(k,i)
134 ENDDO
135 ENDDO
136 ENDIF
137
138 ENDDO
139
140
141 IF(nspmd > 1)THEN
142 lenr = 2*(iad_elem(1,nspmd+1)-iad_elem(1,1))
143 CALL spmd_exch_vol(varnod6(1,1),varnod6(1,numnod+1),iad_elem,
144 . fr_elem, lenr )
145 ENDIF
146
147
148 DO i=1,numnod
149
150 j=i+numnod
151 DO k=1,6
152
153 sfem_nodvar(i) = sfem_nodvar(i) + varnod6(k,i)
154
155 sfem_nodvar(i+numnod) = sfem_nodvar(i+numnod) + varnod6(k,i+numnod)
156 ENDDO
157
158
159 IF(sfem_nodvar(j) /= 0)THEN
160 sfem_nodvar(i)=sfem_nodvar(i)/sfem_nodvar(j)
161 ENDIF
162 ENDDO
163
164 RETURN
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)
subroutine foat_to_6_float(jft, jlt, f, f6)
subroutine s4volnod3(volnod6, x, nc1, nc2, nc3, nc4, offg, xdp, nel, ismstr)
subroutine spmd_exch_vol(volnod6, varnod6, iad_elem, fr_elem, lenr)