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