51
52
53
54 USE timer_mod
57 USE multi_fvm_mod
59 USE sensor_mod
61 USE output_mod , ONLY : output_
62
63
64
65#include "implicit_f.inc"
66
67
68
69#include "com01_c.inc"
70#include "com04_c.inc"
71#include "com06_c.inc"
72#include "com08_c.inc"
73#include "scr02_c.inc"
74#include "scr06_c.inc"
75#include "scr07_c.inc"
76#include "scr11_c.inc"
77#include "scr16_c.inc"
78#include "param_c.inc"
79#include "units_c.inc"
80#include "stati_c.inc"
81#include "statr_c.inc"
82#include "warn_c.inc"
83#include "task_c.inc"
84#include "lagmult.inc"
85#include "impl1_c.inc"
86#include "fxbcom.inc"
87#include "timeri_c.inc"
88#include "sms_c.inc"
89#include "rad2r_c.inc"
90#include "inter22.inc"
91#include "itet2_c.inc"
92
93
94
95 TYPE(TIMER_), INTENT(INOUT) :: TIMERS
96 INTEGER IFLAG
97 INTEGER WEIGHT(NUMNOD),FXBIPM(NBIPM,*),
98 . IPARI(NPARI,NINTER),WEIGHT_MD(NUMNOD)
99 INTEGER MONVOL(*)
100 my_real,
INTENT(INOUT) :: wfexth
101 my_real dmas, partsav(npsav,*), ms(numnod), v(3,numnod), a(3,numnod),
102 . in(numnod), r(3,numnod), ar(3,numnod),fxbrpm(*),
103 . xmom_sms(3,*),qfricint(*),ms_2d(*),kend,mas_nd
105 TYPE(MULTI_FVM_STRUCT), INTENT(IN) :: MULTI_FVM
106 TYPE(H3D_DATABASE), INTENT(INOUT) :: H3D_DATA
107 TYPE (SENSORS_) ,INTENT(IN) :: SENSORS
108 TYPE (DYNAIN_DATABASE), INTENT(INOUT) :: DYNAIN_DATA
109 TYPE(OUTPUT_), INTENT(INOUT) :: OUTPUT
110
111
112
113 INTEGER IPRI, INFO, I,M, JPRI, ILIGN,ITHIS, ADRRPM, ISENS,NTY,INTHE,IABFIS
114 my_real :: entot, entot1, err, err1, x99, emass,mas,enintot,ekintot,
115 . vx,vy,vz,dt05,entmp(12) ,rtmp(10),
116 . mvx, mvy, mvz, ts, mas2, wewe2, entot1b,dmasnd
118
119 DOUBLE PRECISION :: ETIME, RETIME, TT0,
120 . ENCIND, XMOMTD, YMOMTD, ZMOMTD,
121 . XMASSD, ENROTD, ENINTD, ENCIND2,
122 . ENROTD2, ENTOTB, EAMSD
123
124 DATA x99/99.9/
125 DATA tt0/-1./
126 CHARACTER ELTYP(0:105)*5
127
128 DATA eltyp/'fixed',
129 1 'solid','quad ','shell','truss','beam ',
130 2 'sprin','sh_3n','tria ','airba','inter',
131 3 'node ','blast',' ',' ',' ',
132 4 ' ',' ',' ',' ',' ',
133 5 ' ',' ',' ',' ',' ',
134 6 ' ',' ',' ',' ',' ',
135 7 ' ',' ',' ',' ',' ',
136 8 ' ',' ',' ',' ',' ',
137 9 ' ',' ',' ',' ',' ',
138 A ' ',' ',' ',' ',' ',
139 B 'spcel','fvbag',' ',' ',' ',
140 C ' ',' ',' ',' ',' ',
141 D ' ',' ',' ',' ',' ',
142 E ' ',' ',' ',' ',' ',
143 F ' ',' ',' ',' ',' ',
144 G ' ',' ',' ',' ',' ',
145 H ' ',' ',' ',' ',' ',
146 I ' ',' ',' ',' ',' ',
147 J ' ',' ',' ',' ',' ',
148 K ' ',' ',' ',' ','xelem',
149 K 'ige3d',' ',' ',' ',' '/
150 DATA ILIGN/55/
151
152 DM_INOUT=0
153 IPRI=1
154 IFLAG =0
155 IF(TT0==-ONE)TT0=TT
156 IF(T1S==TT)IPRI=MOD(NCYCLE,IABS(NCPRI))
157 INFO=MDESS-MANIM
158 ITHIS=0
159 IABFIS=0
160 IF(TT<OUTPUT%TH%THIS)ITHIS=1
161 IF(TT<TABFIS(1))IABFIS=1
162
163.AND..AND. IF ((IRAD2R==1)(R2R_SIU==1)(IDDOM/=0)) THEN
164 ITHIS=1
165 DO I=1,10
166 IF (R2R_TH_MAIN(I)>0) ITHIS=0
167 ENDDO
168 ENDIF
169
170 IF(IMON > 0) CALL ELAPSTIME(TIMERS,ETIME)
171.AND..AND. IF(IPRI/=0ITHIS/=0
172.AND. . INFO<=0ISTAT==0
173.AND..AND..AND. . NTH==0NANIM==0
174.OR. . (IABFIS/=0ABFILE(1)==0) ) RETURN
175
176
177 EAMS=ENCIN
178
179
180 ENCIND = ZERO
181 ENROTD = ZERO
182 ENINTD = ZERO
183 XMASSD = ZERO
184 XMOMTD = ZERO
185 YMOMTD = ZERO
186 ZMOMTD = ZERO
187 ENCIND2 = ZERO
188 ENROTD2 = ZERO
189 WFEXTH = ZERO
190 EAMSD = ZERO
191
192 DT05=HALF*DT1
193
194 IFLAG =1
195.AND..NOT. IF(N2D == 0 MULTI_FVM%IS_USED) THEN
196 IF (IMPL_S==1) THEN
197 IF (IDYNA>0) THEN
198 DT05=(ONE-DY_G)*DT1
199 DO I = 1, NUMNOD
200 MAS=MS(I)*WEIGHT_MD(I)
201 VX = DY_V(1,I) - DT05*DY_A(1,I)
202 VY = DY_V(2,I) - DT05*DY_A(2,I)
203 VZ = DY_V(3,I) - DT05*DY_A(3,I)
204 ENCIND=ENCIND + ( VX*VX + VY*VY + VZ*VZ)*HALF*MAS
205 XMOMTD=XMOMTD+VX*MAS
206 YMOMTD=YMOMTD+VY*MAS
207 ZMOMTD=ZMOMTD+VZ*MAS
208 XMASSD=XMASSD+MAS
209 MAS2=MS(I)*(1-WEIGHT_MD(I))*WEIGHT(I)
210 ENCIND2=ENCIND2 + ( VX*VX + VY*VY + VZ*VZ)*HALF*MAS2
211 ENDDO
212 ELSE
213 DO I = 1, NUMNOD
214 XMASSD=XMASSD+MS(I)*WEIGHT_MD(I)
215 ENDDO
216 ENDIF
217.AND. ELSEIF(IDTMINS==0IDTMINS_INT==0)THEN
218
219 DO I = 1, NUMNOD
220 MAS=MS(I)*WEIGHT_MD(I)
221 VX = V(1,I) + DT05*A(1,I)
222 VY = V(2,I) + DT05*A(2,I)
223 VZ = V(3,I) + DT05*A(3,I)
224 ENCIND=ENCIND + ( VX*VX + VY*VY + VZ*VZ)*HALF*MAS
225 XMOMTD=XMOMTD+VX*MAS
226 YMOMTD=YMOMTD+VY*MAS
227 ZMOMTD=ZMOMTD+VZ*MAS
228 XMASSD=XMASSD+MAS
229 MAS2=MS(I)*(1-WEIGHT_MD(I))*WEIGHT(I)
230 ENCIND2=ENCIND2 + ( VX*VX + VY*VY + VZ*VZ)*HALF*MAS2
231 ENDDO
232
233 ELSE
234
235 DO I = 1, NUMNOD
236 MAS=MS(I)*WEIGHT_MD(I)
237 VX = V(1,I) + DT05*A(1,I)
238 VY = V(2,I) + DT05*A(2,I)
239 VZ = V(3,I) + DT05*A(3,I)
240 MVX=XMOM_SMS(1,I)*WEIGHT_MD(I)
241 MVY=XMOM_SMS(2,I)*WEIGHT_MD(I)
242 MVZ=XMOM_SMS(3,I)*WEIGHT_MD(I)
243 ENCIND=ENCIND + ( VX*MVX + VY*MVY + VZ*MVZ)*HALF
244 EAMSD=EAMSD + ( VX*VX + VY*VY + VZ*VZ)*HALF*MAS
245 XMOMTD=XMOMTD+MVX
246 YMOMTD=YMOMTD+MVY
247 ZMOMTD=ZMOMTD+MVZ
248 XMASSD=XMASSD+MAS
249 MAS2=MS(I)*(1-WEIGHT_MD(I))*WEIGHT(I)
250 ENCIND2=ENCIND2 + ( VX*VX + VY*VY + VZ*VZ)*HALF*MAS2
251 ENDDO
252 ENDIF
253
254
255
256 ELSE IF (MULTI_FVM%IS_USED) THEN
257 DO M=1,NPART
258 ENCIND = ENCIND + PARTSAV(2,M)
259 XMASSD = XMASSD + PARTSAV(6,M)
260 XMOMTD = XMOMTD + PARTSAV(3,M)
261 YMOMTD = YMOMTD + PARTSAV(4,M)
262 ZMOMTD = ZMOMTD + PARTSAV(5,M)
263 ENDDO
264
265 ELSE
266 DO I = 1, NUMNOD
267 MAS=MS_2D(I)*WEIGHT_MD(I)
268 VX = V(1,I) + DT05*A(1,I)
269 VY = V(2,I) + DT05*A(2,I)
270 VZ = V(3,I) + DT05*A(3,I)
271 ENCIND=ENCIND + ( VX*VX + VY*VY + VZ*VZ)*HALF*MAS
272 XMOMTD=XMOMTD+VX*MAS
273 YMOMTD=YMOMTD+VY*MAS
274 ZMOMTD=ZMOMTD+VZ*MAS
275 XMASSD=XMASSD+MAS
276 MAS2=MS_2D(I)*(1-WEIGHT_MD(I))*WEIGHT(I)
277 ENCIND2=ENCIND2 + ( VX*VX + VY*VY + VZ*VZ)*HALF*MAS2
278 ENDDO
279 ENDIF
280
281 IF (INT22>0) THEN
282 !FVM cells take part in the balance
283 DO M=1,NPART
284 ENCIND = ENCIND + PARTSAV(2,M)
285 XMASSD = XMASSD + PARTSAV(6,M)
286 XMOMTD = XMOMTD + PARTSAV(3,M)
287 YMOMTD = YMOMTD + PARTSAV(4,M)
288 ZMOMTD = ZMOMTD + PARTSAV(5,M)
289 IF(PARTSAV(6,M)>ZERO) ENCIND2 = ENCIND2 + HALF/PARTSAV(6,M)*(PARTSAV(3,M)**2+PARTSAV(4,M)**2+PARTSAV(5,M)**2)
290 ENDDO
291 ENDIF
292
293 IF (NS10E>0) THEN
294
295 ENCIND = ENCIND + KEND
296 XMASSD = XMASSD -MAS_ND
297 DMASND = MAX(ZERO,(MAS_ND-MS_ND))
298 IF (DMASND>MS_ND*EM10) DMAS = DMAS -DMASND
299
300 MS_ND = MAS_ND
301 ENDIF
302
303 IF(IRODDL/=0)THEN
304 IF (IMPL_S==1) THEN
305 IF (IDYNA>0) THEN
306 DO I = 1, NUMNOD
307 VX = DY_VR(1,I) - DT05*DY_AR(1,I)
308 VY = DY_VR(2,I) - DT05*DY_AR(2,I)
309 VZ = DY_VR(3,I) - DT05*DY_AR(3,I)
310 ENROTD=ENROTD
311 . + (VX*VX + VY*VY + VZ*VZ)*HALF*IN(I)*WEIGHT_MD(I)
312 WEWE2 = (1-WEIGHT_MD(I))*WEIGHT(I)
313 ENROTD2=ENROTD2
314 . + (VX*VX + VY*VY + VZ*VZ)*HALF*IN(I)*WEWE2
315 ENDDO
316 ENDIF
317 ELSE
318 DO I = 1, NUMNOD
319 VX = R(1,I) + DT05*AR(1,I)
320 VY = R(2,I) + DT05*AR(2,I)
321 VZ = R(3,I) + DT05*AR(3,I)
322 ENROTD=ENROTD
323 . + (VX*VX + VY*VY + VZ*VZ)*HALF*IN(I)*WEIGHT_MD(I)
324 WEWE2 = (1-WEIGHT_MD(I))*WEIGHT(I)
325 ENROTD2=ENROTD2
326 . + (VX*VX + VY*VY + VZ*VZ)*HALF*IN(I)*WEWE2
327 ENDDO
328 ENDIF
329
330 ENDIF
331
332 ENINTD = EPOR + USREINT + (DAMPW+EDAMP)*DT05
333 DAMPW = EDAMP
334 IF (NFXBODY>0) THEN
335 DO I=1,NFXBODY
336 ADRRPM=FXBIPM(14,I)
337 ENINTD=ENINTD+FXBRPM(ADRRPM+10)-FXBRPM(ADRRPM+14)
338 ENCIND=ENCIND+FXBRPM(ADRRPM+11)
339 ENDDO
340 ENDIF
341 DO M=1,NPART
342 ENROTD= ENROTD + PARTSAV(7,M)
343 ENINTD = ENINTD + PARTSAV(1,M) + PARTSAV(24,M) + PARTSAV(26,M)
344 OUTPUT%TH%WFEXT = OUTPUT%TH%WFEXT + PARTSAV(27,M)
345 WFEXTH = WFEXTH + PARTSAV(27,M)
346 WPLAST = WPLAST + PARTSAV(29,M)
347 ENDDO
348
349
350
351 DO I=1,NINTER
352 NTY = IPARI(7,I)
353.OR. IF(NTY == 7 NTY == 21) THEN
354 INTHE =IPARI(47,I)
355 IF (INTHE > 0) THEN
356 ENINTD = ENINTD + QFRICINT(I)
357 ENDIF
358 ENDIF
359 ENDDO
360
361
362
363 ENCIN=ENCIN+ENCIND
364 ENCIN2=ENCIN2+ENCIND2
365 ENROT=ENROT+ENROTD
366 ENROT2=ENROT2+ENROTD2
367 EAMS =EAMS+EAMSD
368
369
370
371
372 ENINT=ENINTD
373 XMOMT=XMOMT+XMOMTD
374 YMOMT=YMOMT+YMOMTD
375 ZMOMT=ZMOMT+ZMOMTD
376 XMASS=XMASS+XMASSD
377
378 IF (IMPL_S==1) THEN
379 IF (IDYNA==0) THEN
380 ENCIN =ZERO
381 ENROT =ZERO
382 ENCIN2 =ZERO
383 ENROT2 =ZERO
384 OUTPUT%TH%WFEXT=ENINT
385 ELSEIF (IDY_DAMP>0) THEN
386
387 ENINT = ENINT + DY_EDAMP
388 ENDIF
389 ENDIF
390
391 IF (NSPMD > 1) THEN
392
393
394 ENTMP(1) = ENCIN
395 ENTMP(2) = ENROT
396 ENTMP(3) = ENINT
397 ENTMP(4) = XMOMT
398 ENTMP(5) = YMOMT
399 ENTMP(6) = ZMOMT
400 ENTMP(7) = XMASS
401 ENTMP(8) = ECONT
402 ENTMP(9) = REINT
403 ENTMP(10) = ENCIN2
404 ENTMP(11) = ENROT2
405 ENTMP(12) = EAMS
406 CALL SPMD_GLOB_DSUM9(ENTMP,12)
407 IF (ISPMD==0) THEN
408 ENCIN = ENTMP(1)
409 ENROT = ENTMP(2)
410 ENINT = ENTMP(3)
411 XMOMT = ENTMP(4)
412 YMOMT = ENTMP(5)
413 ZMOMT = ENTMP(6)
414 XMASS = ENTMP(7)
415 ECONT = ENTMP(8)
416 REINT = ENTMP(9)
417 ENCIN2 = ENTMP(10)
418 ENROT2 = ENTMP(11)
419 EAMS = ENTMP(12)
420 ENDIF
421
422 IF (ISTAT==2) THEN
423
424 CALL SPMD_RBCAST(ENTMP,ENTMP,1,2,0,2)
425 IF (ISPMD/=0) THEN
426 ENCIN = ENTMP(1)
427 ENROT = ENTMP(2)
428 ENCIN2 = ENTMP(10)
429 ENROT2 = ENTMP(11)
430 ENDIF
431 ELSEIF (ISTAT==3) THEN
432
433 CALL SPMD_RBCAST(ENTMP,ENTMP,1,3,0,3)
434 IF (ISPMD/=0) THEN
435 ENCIN = ENTMP(1)
436 ENROT = ENTMP(2)
437 ENINT = ENTMP(3)
438 ENDIF
439 ENDIF
440
441 ENTMP(1) = OUTPUT%TH%WFEXT
442 ENTMP(2) = EHOUR
443 ENTMP(3) = ECONTV
444 ENTMP(4) = DMAS
445 ENTMP(5) = WFEXTH
446 ENTMP(6) = ECONTD
447 ENTMP(7) = ECONT_CUMU
448 ENTMP(8) = WPLAST
449 ENTMP(9) = OUTPUT%DATA%INOUT%DM_IN
450 ENTMP(10) = OUTPUT%DATA%INOUT%DM_OUT
451 ENTMP(11) = OUTPUT%DATA%INOUT%DE_IN
452 ENTMP(12) = OUTPUT%DATA%INOUT%DE_OUT
453 CALL SPMD_GLOB_DSUM9(ENTMP,12)
454 IF(ISPMD /= 0) THEN
455 OUTPUT%TH%WFEXT = ZERO
456 EHOUR = ZERO
457 ECONTV = ZERO
458 DMAS = ZERO
459 WFEXTH = ZERO
460 ECONTD = ZERO
461 ECONT_CUMU = ZERO
462 WPLAST = ZERO
463 OUTPUT%DATA%INOUT%DM_IN = ZERO
464 OUTPUT%DATA%INOUT%DM_OUT = ZERO
465 OUTPUT%DATA%INOUT%DE_IN = ZERO
466 OUTPUT%DATA%INOUT%DE_OUT = ZERO
467 ELSE
468 OUTPUT%TH%WFEXT = ENTMP(1)
469 EHOUR = ENTMP(2)
470 ECONTV= ENTMP(3)
471 DMAS = ENTMP(4)
472 WFEXTH= ENTMP(5)
473 ECONTD = ENTMP(6)
474 ECONT_CUMU = ENTMP(7)
475 WPLAST = ENTMP(8)
476 OUTPUT%DATA%INOUT%DM_IN = ENTMP(9)
477 OUTPUT%DATA%INOUT%DM_OUT = ENTMP(10)
478 OUTPUT%DATA%INOUT%DE_IN = ENTMP(11)
479 OUTPUT%DATA%INOUT%DE_OUT = ENTMP(12)
480 ENDIF
481 ENDIF
482
483
484 IF(ISPMD==0) THEN
485.OR. IF(IDTMINS/=0IDTMINS_INT/=0)THEN
486 IF(EAMS > EM20)THEN
487 EAMS = (ENCIN-EAMS)/EAMS
488 ELSE
489 EAMS = ZERO
490 END IF
491 END IF
492 END IF
493
494
495 IF (ISPMD == 0) THEN
496
497 DM_INOUT = OUTPUT%DATA%INOUT%DM_IN+OUTPUT%DATA%INOUT%DM_OUT
498 DE_INOUT = OUTPUT%DATA%INOUT%DE_IN+OUTPUT%DATA%INOUT%DE_OUT
499
500 ENTOT = ENCIN + ENINT + ENROT
501 ENTOTB = ENTOT + ENCIN2 + ENROT2
502 IF(NCYCLE==0) THEN
503 ENTOT0=ENTOT - OUTPUT%TH%WFEXT - OUTPUT%TH%WFEXT_MD - DE_INOUT
504 DELTAE=ENCIN2 + ENROT2
505 MASS0 = XMASS - DMAS - DM_INOUT
506 ENDIF
507 ENTOT1=ENTOT0 + OUTPUT%TH%WFEXT + DE_INOUT
508 ENTOT1B=ENTOT0 + OUTPUT%TH%WFEXT + DELTAE + OUTPUT%TH%WFEXT_MD + DE_INOUT
509 IF(ABS(ENTOT1B)>EM20)THEN
510 ERR = ENTOTB/ENTOT1B - ONE
511 ERR1 = MAX(-X99, MIN(X99,ERR*HUNDRED))
512 ELSE
513 ERR = ZERO
514 ERR1 =ZERO
515 ENDIF
516 EMASS = (XMASS - (MASS0+DM_INOUT)) / MAX(MASS0+DM_INOUT,EM20)
517 !EMASS = (XMASS - MASS0) / MAX(MASS0,EM20)
518 ENINTOT = ENINT
519 EKINTOT = ENCIN
520
521
522
523 IF (SENSORS%NSTAT > 0) THEN
524 MSTATT = 0
525 DO I=1,SENSORS%NSTAT
526 ISENS = SENSORS%STAT(I)
527 TS = SENSORS%SENSOR_TAB(ISENS)%TSTART
528 IF (TT >= TS) THEN
529 MSTAT(I) = MSTAT(I)+1
530 ENDIF
531 IF (MSTAT(I)==1) MSTATT=1
532 ENDDO
533 ENDIF
534
535
536
537 IF (SENSORS%NOUTP > 0) THEN
538 MOUTPT = 0
539 DO I=1,SENSORS%NOUTP
540 ISENS = SENSORS%OUTP(I)
541 TS = SENSORS%SENSOR_TAB(ISENS)%TSTART
542 IF (TT >= TS) THEN
543 MOUTP(I) = MOUTP(I)+1
544 ENDIF
545 IF(MOUTP(I)==1) MOUTPT=1
546 ENDDO
547 ENDIF
548
549.AND..OR. IF((NERR_POSIT==0ABS(ERR)>DEMXK)
550.AND. . (NERR_POSIT==1ERR>DEMXK))THEN
551 CALL ANCMSG(MSGID=205,ANMODE=ANINFO)
552 IERR=IERR+1
553 MSTOP=1
554 IF(NTH/=0)THEN
555 OUTPUT%TH%THIS= TT
556 IPRI= 0
557 ENDIF
558 IF(NANIM/=0)THEN
559 MDESS = 1
560 OUTPUT%TANIM = TT
561 IPRI = 0
562 ENDIF
563.AND..OR. ELSEIF((NERR_POSIT==0ABS(ERR)>DEMXS)
564.AND. . (NERR_POSIT==1ERR>DEMXS))THEN
565 CALL ANCMSG(MSGID=206,ANMODE=ANINFO)
566 IWARN=IWARN+1
567 MSTOP=1
568 MREST=1
569 IF(NTH/=0)THEN
570 OUTPUT%TH%THIS= TT
571 IPRI= 0
572 ENDIF
573 IF(NANIM/=0)THEN
574 MDESS = 1
575 OUTPUT%TANIM = TT
576 IPRI = 0
577 ENDIF
578 ENDIF
579
580 IF(EMASS>DMTMXK)THEN
581 CALL ANCMSG(MSGID=207,ANMODE=ANINFO)
582 IERR=IERR+1
583 MSTOP=1
584 IF(NTH/=0)THEN
585 OUTPUT%TH%THIS= TT
586 IPRI = 0
587 ENDIF
588 IF(NANIM/=0)THEN
589 MDESS = 1
590 OUTPUT%TANIM = TT
591 IPRI = 0
592 ENDIF
593 ELSEIF(EMASS>DMTMXS)THEN
594 CALL ANCMSG(MSGID=208,ANMODE=ANINFO)
595 IWARN=IWARN+1
596 MSTOP=1
597 MREST=1
598 IF(NTH/=0)THEN
599 OUTPUT%TH%THIS= TT
600 IPRI = 0
601 ENDIF
602 IF(NANIM/=0)THEN
603 MDESS = 1
604 OUTPUT%TANIM = TT
605 IPRI = 0
606 ENDIF
607 ENDIF
608 ENDIF ! ISPMD == 0
609
610
611
612 IF (NSPMD > 1) THEN
613 IF (ISPMD==0) THEN
614 RTMP(1) = MSTOP
615 RTMP(2) = MREST
616 RTMP(3) = MDESS
617 RTMP(4) = OUTPUT%TANIM
618 RTMP(5) = OUTPUT%TH%THIS
619 RTMP(6) = TSTAT
620 RTMP(7) = TOUTP
621 RTMP(8) = INFO
622 RTMP(9) = H3D_DATA%TH3D
623 RTMP(10) = DYNAIN_DATA%TDYNAIN
624 ENDIF
625
626 CALL SPMD_RBCAST(RTMP,RTMP,10,1,0,2)
627
628 MSTOP = NINT(RTMP(1))
629 MREST = NINT(RTMP(2))
630 MDESS = NINT(RTMP(3))
631 OUTPUT%TANIM = RTMP(4)
632 OUTPUT%TH%THIS = RTMP(5)
633 TSTAT = RTMP(6)
634 TOUTP = RTMP(7)
635 H3D_DATA%TH3D = RTMP(9)
636 DYNAIN_DATA%TDYNAIN = RTMP(10)
637
638 IF(INFO > 0) CALL SPMD_EXCH_FVSTATS(MONVOL)
639
640 IF(ISPMD/=0) RETURN
641 ! Only processor 0 will continue
642
643 ENDIF
644
645
646 IF(IPRI==0)THEN
647 IF (NLPRI /= 0) ILIGN = NLPRI
648 JPRI=MOD(NCYCLE,ILIGN*IABS(NCPRI))
649 IF(JPRI==0) WRITE(IOUT,1000)
650 WRITE(IOUT,1100) NCYCLE,TT,DT2,ELTYP(ITYPTS),NELTS,ERR1,ENINT,ENCIN,ENROT,OUTPUT%TH%WFEXT,EMASS,XMASS,XMASS-MASS0-DM_INOUT
651 CALL MY_FLUSH(IOUT)
652 IF(NCPRI<0) THEN
653 IF(DEBUG(10)/=0)THEN
654 IF(NCYCLE>=DEBUG(10))THEN
655 write (*,*) " ALE ADVECTION SET OFF"
656 ENDIF
657 ENDIF
658 WRITE(ISTDO,'(a,i8,2(a,1pe11.4),a,0pf5.1,a,1pe11.4)')' nc=',NCYCLE,' t=',TT,' dt=',DT2,' err=',ERR1,'% DM/m=',EMASS
659 IF(LAG_NC>0) THEN
660 WRITE(ISTDO,'(2(a,i8),a,1pe11.4)') ' lag_nc=',LAG_NC,', niter_gc=',NITER_GC,', lag_ersq2=',LAG_ERSQ2
661 ENDIF
662.AND. IF(IMON > 0 TT-TT0 > ZERO) THEN
663
664 RETIME = (ETIME*(TSTOP-TT0)) / (TT-TT0) - ETIME
665 WRITE(ISTDO,'(a,f14.2,a,a,f14.2,a)')' elapsed time=',ETIME,' s ',' remaining time=',RETIME,' s'
666 END IF
667 CALL MY_FLUSH(ISTDO)
668 ENDIF
669 ENDIF
670
671 IF(INFO>0)THEN
672 WRITE (IUSC3,'(//,a)',ERR=990) ' current state:'
673 WRITE (IUSC3,'(a,/)',ERR=990) ' --------------'
674 WRITE (IUSC3,'(a,i10)',ERR=990) ' cycle =',NCYCLE
675 WRITE (IUSC3,'(a,g14.7)',ERR=990) ' time =',TT
676 WRITE (IUSC3,'(a,g14.7,a,i8)',ERR=990)' time step =',DT2,ELTYP(ITYPTS),NELTS
677 WRITE (IUSC3,'(a,f5.1,a)',ERR=990) ' energy error',ERR1,''
678 WRITE (IUSC3,'(a,g14.7)',ERR=990) ' internal energy =',ENINT
679 WRITE (IUSC3,'(a,g14.7)',ERR=990) ' kinetic energy =',ENCIN
680 WRITE (IUSC3,'(a,g14.7)',ERR=990) ' rot. kin. energy =',ENROT
681 WRITE (IUSC3,'(a,g14.7)',ERR=990) ' EXTERNAL work =',OUTPUT%TH%WFEXT
682 WRITE (IUSC3,'(a,g14.7)',ERR=990) ' mass.err(m-m0)/m0=',EMASS
683
684 CALL FVSTATS1(IUSC3,MONVOL,1)
685
686.AND. IF(IMON > 0 TT > ZERO) THEN
687
688 RETIME = (ETIME*TSTOP) / TT - ETIME
689 WRITE(IUSC3,'(a)',ERR=990) ' '
690 WRITE(IUSC3,'(a,f14.2,a)',ERR=990)' current elapsed time =',ETIME,' s '
691 WRITE(IUSC3,'(a,f14.2,a)',ERR=990)' remaining time estimate =',RETIME,' s'
692 END IF
693
694 CLOSE(IUSC3)
695 990 CONTINUE
696 ENDIF
697
698
699
700 1000 FORMAT(' cycle time time-step element ',
701 + 'error i-energy k-energy t k-energy r ',
702 + 'ext-work mas.err total mass mass added')
703 1100 FORMAT(I8,2(1X,G11.4),1X,A5,1X,I10,1X,F5.1,1H%,7(1X,G11.4))
704
705 RETURN