191
192
193
195 USE elbufdef_mod
196
197
198
199#include "implicit_f.inc"
200
201
202
203#include "vect01_c.inc"
204#include "scr16_c.inc"
205#include "com01_c.inc"
206#include "param_c.inc"
207#include "units_c.inc"
208#include "task_c.inc"
209#include "sphcom.inc"
210
211
212
213 CHARACTER*10 KEY
214 CHARACTER*40 TEXT
215 INTEGER KXSP(NISP,*),IPARG(NPARG,*), DD_IAD(NSPMD+1,*),
216 . IPM(NPROPMI,*),SIZ_WR
217 INTEGER SIZLOC,SIZP0
219 . spbuf(nspbuf,*)
220 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
221
222
223
224 INTEGER I,J,K,II(6),JJ, JJ_OLD,NPTR, NPTS, NPTT,NPTG,
225 . NG, NEL, IADD, N,NGF, NGL, NN, LEN,MLW,COMPTEUR,L
226 INTEGER, DIMENSION(NSPGROUP) :: JJ_LOC
227 INTEGER, DIMENSION(NSPGROUP+1,NSPMD) :: ADRESS
229 . wa(sizloc),wap0(siz_wr),wap0_loc(sizp0)
231 . func(6)
232 TYPE(G_BUFEL_) ,POINTER :: GBUF
233
234 IF (ispmd == 0) THEN
235 WRITE(iugeo,'(2A)')'/SPHCEL /TENSOR /',key
236 WRITE(iugeo,'(A)')text
237 IF (outyy_fmt == 2) THEN
238 WRITE(iugeo,'(A)')
239 . '#FORMAT:(3E12.5),
240 . EINT(I),RHO(I),H(I),I=1,NUMSPH '
241 WRITE(iugeo,'(2A)')'#FORMAT: (1P6E12.5/E12.5) ',
242 . '(TX(I),TY(I),TZ(I),TXY(I),TYZ(I),TZX(I),',
243 . '#EPSP(I),I=1,NUMSPH)'
244 ELSE
245 WRITE(iugeo,'(A)')
246 . '#FORMAT:(3E20.13),
247 . EINT(I),RHO(I),H(I),I=1,NUMSPH '
248 WRITE(iugeo,'(2A)')'#FORMAT: (1P6E20.13/E20.13) ',
249 . '(TX(I),TY(I),TZ(I),TXY(I),TYZ(I),TZX(I),',
250 . '#EPSP(I),I=1,NUMSPH)'
251 END IF
252 END IF
253
254 jj_old = 1
255 ngf = 1
256 ngl = 0
257 jj = 0
258 compteur = 0
259 DO nn=1,nspgroup
260 ngl = ngl + dd_iad(ispmd+1,nn)
261 DO ng = ngf, ngl
262 ity =iparg(5,ng)
263 IF (ity == 51) THEN
265 2 mtn ,nel ,nft ,iad ,ity ,
266 3 npt ,jale ,ismstr ,jeul ,jtur ,
267 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
268 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
269 6 irep ,iint ,igtyp ,israt ,isrot ,
270 7 icsen ,isorth ,isorthg ,ifailure,jsms )
271 gbuf => elbuf_tab(ng)%GBUF
272 lft=1
273 llt=nel
274
275 DO i=1,6
276 ii(i) = nel*(i-1)
277 ENDDO
278
279 DO i=lft,llt
280 wa(jj+1) = gbuf%EINT(i)
281 wa(jj+2) = gbuf%RHO(i)
282 wa(jj+3) = spbuf(1,nft+i)
283 wa(jj+4) = gbuf%SIG(ii(1)+i)
284 wa(jj+5) = gbuf%SIG(ii(2)+i)
285 wa(jj+6) = gbuf%SIG(ii(3)+i)
286 wa(jj+7) = gbuf%SIG(ii(4)+i)
287 wa(jj+8) = gbuf%SIG(ii(5)+i)
288 wa(jj+9) = gbuf%SIG(ii(6)+i)
289 IF (gbuf%G_PLA > 0) THEN
290 wa(jj+10) = gbuf%PLA(i)
291 wa(jj+11) = one
292 ELSE
293 wa(jj+10) = zero
294 wa(jj+11) = - one
295 ENDIF
296 jj=jj+11
297 ENDDO
298 ENDIF
299 ENDDO
300 ngf = ngl + 1
301 jj_loc(nn) = jj - compteur
302 compteur = jj
303 ENDDO
304
305
306 IF( nspmd>1 ) THEN
308 ELSE
309 wap0_loc(1:jj) = wa(1:jj)
310 adress(1,1) = 1
311 DO nn = 2,nspgroup+1
312 adress(nn,1) = jj_loc(nn-1) + adress(nn-1,1)
313 ENDDO
314 ENDIF
315
316 IF(ispmd==0) THEN
317 DO nn=1,nspgroup
318 compteur = 0
319 DO k = 1,nspmd
320 IF((adress(nn+1,k)-1-adress(nn,k))>=0) THEN
321 DO l = adress(nn,k),adress(nn+1,k)-1
322 compteur = compteur + 1
323 wap0(compteur) = wap0_loc(l)
324 ENDDO
325 ENDIF
326 ENDDO
327
328 jj_old = compteur
329 IF(jj_old>0) THEN
330 IF (outyy_fmt == 2) THEN
331 j = 1
332 DO WHILE (j<jj_old)
333 WRITE(iugeo,'(1P3E12.5)')(wap0(j-1+k),k=1,3)
334 j=j+3
335 WRITE(iugeo,'(1P6E12.5)')(wap0(j-1+k),k=1,6)
336 IF (wap0(j+7) > zero) WRITE(iugeo,'(1P1E12.5)') (wap0(j+6))
337 j=j+8
338 ENDDO
339 ELSE
340 j = 1
341 DO WHILE (j<=jj_old)
342 WRITE(iugeo,'(1P3E20.13)')(wap0(j-1+k),k=1,3)
343 j=j+3
344 WRITE(iugeo,'(1P6E20.13)')(wap0(j-1+k),k=1,6)
345 IF (wap0(j+7) > zero) WRITE(iugeo,'(1P1E20.13)') (wap0(j+6))
346 j=j+8
347 ENDDO
348 END IF
349 END IF
350 ENDDO
351 END IF
352
353 RETURN