37
38
39
41 USE elbufdef_mod
42
43
44
45#include "implicit_f.inc"
46
47
48
49#include "vect01_c.inc"
50#include "com01_c.inc"
51#include "param_c.inc"
52#include "units_c.inc"
53#include "task_c.inc"
54#include "sphcom.inc"
55#include "scr16_c.inc"
56
57
58
59 CHARACTER*10 KEY
60 CHARACTER*40 TEXT
61 INTEGER NBX,SIZLOC,SIZP0
62 INTEGER IPARG(NPARG,*),DD_IAD(NSPMD+1,*),
63 . KXSP(NISP,*), IPM(NPROPMI,*),SIZ_WR
65 . eani(*), spbuf(nspbuf,*)
66 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
67
68
69
70 INTEGER I,J,II(6),JJ,N,NN,NG,NEL,MLW,JJ_OLD,NGF,NGL, LEN,WRTLEN,
71 . NUVAR,IUS,RESP0,RES,COMPTEUR,L,K
72 INTEGER, DIMENSION(NSPGROUP) :: JJ_LOC
73 INTEGER, DIMENSION(NSPGROUP+1,NSPMD) :: ADRESS
75 . wa(sizloc),wap0(siz_wr),wap0_loc(sizp0)
77 . func(6),s1 ,s2 ,s3,p,vonm2
78 TYPE(G_BUFEL_) ,POINTER :: GBUF
79 TYPE() ,POINTER ::
80
81 IF (ispmd == 0) THEN
82 WRITE(iugeo,'(2A)')'/SPHCEL /SCALAR /',key
83 WRITE(iugeo,'(A)')text
84 IF (outyy_fmt == 2) THEN
85 WRITE(iugeo,'(A)')'#FORMAT: (1P6E12.5) (VAR(I),I=1,NUMSPH)'
86 ELSE
87 WRITE(iugeo,'(A)')'#FORMAT: (1P6E20.13) (VAR(I),I=1,NUMSPH)'
88 END IF
89 ENDIF
90
91 jj_old = 1
92 ngf = 1
93 ngl = 0
94 resp0=0
95 jj = 0
96 compteur = 0
97 DO nn=1,nspgroup
98 ngl = ngl + dd_iad(ispmd+1,nn)
99 DO ng = ngf, ngl
100 ity = iparg(5,ng)
101 IF (ity == 51) THEN
103 2 mlw ,nel ,nft ,iad ,ity ,
104 3 npt ,jale ,ismstr ,jeul ,jtur ,
105 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
106 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
107 6 irep ,iint ,igtyp ,israt ,isrot ,
108 7 icsen ,isorth ,isorthg ,ifailure,jsms )
109 lft=1
110 llt=nel
111 gbuf => elbuf_tab(ng)%GBUF
112 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
113 nuvar = elbuf_tab(ng)%BUFLY(1)%NVAR_MAT
114
115 DO i=1,6
116 ii(i) = nel*(i-1)
117 ENDDO
118
119
120 DO i=lft,llt
121 jj = jj + 1
122 n = i + nft
123 wa(jj) = zero
124
125 IF (nbx == -2) THEN
126 p = - (gbuf%SIG(ii(1)+i)
127 . + gbuf%SIG(ii(2)+i)
128 . + gbuf%SIG(ii(3)+i)) / three
129 s1 = gbuf%SIG(ii(1)+i) + p
130 s2 = gbuf%SIG(ii(2)+i) + p
131 s3 = gbuf%SIG(ii(3)+i) + p
132 vonm2 = three*(gbuf%SIG(ii(4)+i)**2 +
133 . gbuf%SIG(ii(5)+i)**2 +
134 . gbuf%SIG(ii(6)+i)**2 +
135 . half*(s1*s1+s2*s2+s3*s3))
136 wa(jj)= sqrt(vonm2)
137 ELSEIF (nbx == 1) THEN
138 wa(jj) = gbuf%OFF(i)
139 ELSEIF (nbx == 2) THEN
140 wa(jj) = - (gbuf%SIG(ii(1)+i)
141 . + gbuf%SIG(ii(2)+i)
142 . + gbuf%SIG(ii(3)+i)) / three
143 ELSEIF (nbx == 3) THEN
144 wa(jj) = gbuf%EINT(i)
145 ELSEIF (nbx == 4) THEN
146 wa(jj) = gbuf%RHO(i)
147 ELSEIF (nbx == 5 .and. gbuf%G_TEMP > 0) THEN
148 wa(jj) = gbuf%TEMP(i)
149 ELSEIF (nbx == 10 .and. gbuf%G_PLA > 0) THEN
150 wa(jj) = gbuf%PLA(i)
151 ELSEIF (nbx == 20 .and. nuvar >= 1) THEN
152 wa(jj) = mbuf%VAR(i)
153 ELSEIF (nbx == 21 .and. nuvar >= 2) THEN
154 ius = 1
155 wa(jj) = mbuf%VAR(ius*nel+i)
156 ELSEIF (nbx == 22 .and. nuvar >= 3) THEN
157 ius = 2
158 wa(jj) = mbuf%VAR(ius*nel+i)
159 ELSEIF (nbx == 23 .and. nuvar >= 4) THEN
160 ius = 3
161 wa(jj) = mbuf%VAR(ius*nel+i)
162 ELSEIF (nbx == 24 .and. nuvar >= 5) THEN
163 ius = 4
164 wa(jj) = mbuf%VAR(ius*nel+i)
165 ELSEIF (nbx == 25) THEN
166 wa(jj) = spbuf(1,nft + i)
167 ELSEIF (nbx == 26) THEN
168
169 IF (gbuf%G_SEQ > 0) THEN
170 wa(jj) = gbuf%SEQ(i)
171 ELSE
172 p = - (gbuf%SIG(ii(1)+i)
173 . + gbuf%SIG(ii(2)+i)
174 . + gbuf%SIG(ii(3)+i)) / three
175 s1 = gbuf%SIG(ii(1)+i) + p
176 s2 = gbuf%SIG(ii(2)+i) + p
177 s3 = gbuf%SIG(ii(3)+i) + p
178 vonm2 = three*(gbuf%SIG(ii(4)+i)**2 +
179 . gbuf%SIG(ii(5)+i)**2 +
180 . gbuf%SIG(ii(6)+i)**2 +
181 . half*(s1*s1+s2*s2+s3*s3))
182 wa(jj)= sqrt(vonm2)
183 ENDIF
184 ENDIF
185 ENDDO
186 ENDIF
187 ENDDO
188
189 ngf = ngl + 1
190 jj_loc(nn) = jj - compteur
191 compteur = jj
192 ENDDO
193! ++++++++++
194 IF( nspmd>1 ) THEN
196 ELSE
197 wap0_loc(1:jj) = wa(1:jj)
198 adress(1,1) = 1
199 DO nn = 2,nspgroup+1
200 adress(nn,1) = jj_loc(nn-1) + adress(nn-1,1)
201 ENDDO
202 ENDIF
203
204 IF(ispmd==0) THEN
205 resp0 = 0
206 DO nn=1,nspgroup
207 compteur = 0
208 DO k = 1,nspmd
209 IF((adress(nn+1,k)-1-adress(nn,k))>=0) THEN
210 DO l = adress(nn,k),adress(nn+1,k)-1
211 compteur = compteur + 1
212 wap0(compteur+resp0) = wap0_loc(l)
213 ENDDO
214 ENDIF
215 ENDDO
216
217 jj_old = compteur+resp0
218
219 IF(jj_old>0) THEN
220 res = mod(jj_old,6)
221 wrtlen = jj_old-res
222 IF (wrtlen > 0) THEN
223 IF (outyy_fmt == 2) THEN
224 WRITE(iugeo,'(1P6E12.5)')(wap0(j),j=1,wrtlen)
225 ELSE
226 WRITE(iugeo,'(1P6E20.13)')(wap0(j),j=1,wrtlen)
227 END IF
228 END IF
229 DO i=1,res
230 wap0(i)=wap0(wrtlen+i)
231 ENDDO
232 resp0=res
233 END IF
234 ENDDO
235
236 IF (resp0 > 0) THEN
237 IF (outyy_fmt == 2) THEN
238 WRITE(iugeo,'(1P6E12.5)')(wap0(j),j=1,resp0)
239 ELSE
240 WRITE(iugeo,'(1P6E20.13)')(wap0(j),j=1,resp0)
241 ENDIF
242 ENDIF
243 ENDIF
244
245 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 spmd_rgather9_1comm(v, sizv, len, vp0, sizv0, adress)