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