46 SUBROUTINE ecrit(TIMERS,PARTSAV ,MS ,V ,IN ,R ,
47 2 DMAS ,WEIGHT ,ENINTOT ,EKINTOT ,
48 3 A ,AR ,FXBIPM ,FXBRPM ,MONVOL ,
49 4 XMOM_SMS ,SENSORS ,QFRICINT ,IPARI ,WEIGHT_MD ,
50 5 WFEXTH ,IFLAG ,MS_2D ,MULTI_FVM,MAS_ND ,
51 6 KEND ,H3D_DATA ,DYNAIN_DATA,USREINT,OUTPUT)
63 USE output_mod ,
ONLY : output_
67#include "implicit_f.inc"
89#include "timeri_c.inc"
97 TYPE(timer_),
INTENT(INOUT) :: TIMERS
99 INTEGER WEIGHT(),FXBIPM(NBIPM,*),
100 . IPARI(NPARI,NINTER),(NUMNOD)
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
109 TYPE (SENSORS_) ,
INTENT(IN) :: SENSORS
110 TYPE (DYNAIN_DATABASE),
INTENT(INOUT) :: DYNAIN_DATA
111 TYPE(output_),
INTENT(INOUT) :: OUTPUT
115 INTEGER IPRI, INFO, I,M, JPRI, ILIGN,ITHIS, ADRRPM, ISENS,
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
122 DOUBLE PRECISION ETIME, RETIME, TT0,
123 . ENCIND, XMOMTD, YMOMTD, ZMOMTD,
124 . XMASSD, ENROTD, ENINTD, ENCIND2,
125 . ENROTD2, ENTOTB, EAMSD
129 CHARACTER ELTYP(0:105)*5
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',
' ',
' ',
' ',
' '/
158 IF(t1s==tt)ipri=mod(ncycle,iabs(ncpri))
162 IF(tt<output%TH%THIS)ithis=1
163 IF(tt<tabfis(1))iabfis=1
165 IF ((irad2r==1).AND.(r2r_siu==1).AND.(iddom/=0))
THEN
168 IF (r2r_th_main(i)>0) ithis=0
172 IF(imon > 0)
CALL elapstime(timers,etime)
173 IF(ipri/=0.AND.ithis/=0.AND.
174 . info<=0.AND.istat==0
175 . .AND.nth==0.AND.nanim==0 .AND.
176 . (iabfis/=0.OR.abfile(1)==0) )
RETURN
197 IF(n2d == 0 .AND. .NOT. multi_fvm%IS_USED)
THEN
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
211 mas2=ms(i)*(1-weight_md(i))*weight(i)
212 encind2=encind2 + ( vx*vx + vy*vy + vz*vz)*half*mas2
216 xmassd=xmassd+ms(i)*weight_md(i)
219 ELSEIF(idtmins==0.AND.idtmins_int==0)
THEN
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
231 mas2=ms(i)*(1-weight_md(i))*weight(i)
232 encind2=encind2 + ( vx*vx + vy*vy + vz*vz)*half*mas2
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
251 mas2=ms(i)*(1-weight_md(i))*weight(i)
252 encind2=encind2 + ( vx*vx + vy*vy + vz*vz)*half*mas2
258 ELSE IF (multi_fvm%IS_USED)
THEN
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)
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
278 mas2=ms_2d(i)*(1-weight_md
279 encind2=encind2 + ( vx*vx + vy*vy + vz*vz)*half*mas2
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)
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
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)
313 . + (vx*vx + vy*vy + vz*vz)*half*in(i)*weight_md(i)
314 wewe2 = (1-weight_md(i))*weight(i)
316 . + (vx*vx + vy*vy + vz*vz)*half*in(i)*wewe2
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)
325 . + (vx*vx + vy*vy + vz*vz)*half*in(i)*weight_md(i)
326 wewe2 = (1-weight_md(i))*weight(i)
328 . + (vx*vx + vy*vy + vz*vz)*half*in(i)*wewe2
334 enintd = epor + usreint + (dampw+edamp)*dt05
339 enintd=enintd+fxbrpm(adrrpm+10)-fxbrpm(adrrpm+14)
340 encind=encind+fxbrpm(adrrpm+11)
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)
355 IF(nty == 7 .OR. nty == 21)
THEN
358 enintd = enintd + qfricint(i)
366 encin2=encin2+encind2
368 enrot2=enrot2+enrotd2
386 output%TH%WFEXT=enint
387 ELSEIF (idy_damp>0)
THEN
389 enint = enint + dy_edamp
433 ELSEIF (istat==3)
THEN
443 entmp(1) = output%TH%WFEXT
449 entmp(7) = econt_cumu
453 output%TH%WFEXT = zero
462 output%TH%WFEXT = entmp(1)
468 econt_cumu = entmp(7)
475 IF(idtmins/=0.OR.idtmins_int/=0)
THEN
477 eams = (encin-eams)/eams
487 entot = encin + enint + enrot
488 entotb = entot + encin2 + enrot2
490 entot0=entot - output%TH%WFEXT - output%TH%WFEXT_MD
491 deltae=encin2 + enrot2
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))
505 emass = (xmass - mass0) /
max(mass0,em20)
511 IF (sensors%NSTAT > 0)
THEN
514 isens = sensors%STAT(i)
515 ts = sensors%SENSOR_TAB(isens)%TSTART
517 mstat(i) = mstat(i)+1
519 IF (mstat(i)==1) mstatt=1
525 IF (sensors%NOUTP > 0)
THEN
528 isens = sensors%OUTP(i)
529 ts = sensors%SENSOR_TAB(isens)%TSTART
531 moutp(i) = moutp(i)+1
533 IF(moutp(i)==1) moutpt=1
537 IF((nerr_posit==0.AND.abs(err)>demxk).OR.
538 . (nerr_posit==1.AND.err>demxk))
THEN
539 CALL ancmsg(msgid=205,anmode=aninfo)
551 ELSEIF((nerr_posit==0.AND.abs(err)>demxs).OR.
552 . (nerr_posit==1.AND.err>demxs))
THEN
553 CALL ancmsg(msgid=206,anmode=aninfo)
569 CALL ancmsg(msgid=207,anmode=aninfo)
581 ELSEIF(emass>dmtmxs)
THEN
582 CALL ancmsg(msgid=208,anmode=aninfo)
606 rtmp(5) = output%TH%THIS
610 rtmp(9) = h3d_data%TH3D
611 rtmp(10) = dynain_data%TDYNAIN
616 mstop = nint(rtmp(1))
617 mrest = nint(rtmp(2))
618 mdess = nint(rtmp(3))
620 output%TH%THIS = rtmp(5)
623 h3d_data%TH3D = rtmp(9)
624 dynain_data%TDYNAIN = rtmp(10)
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
642 IF(ncycle>=debug(10))
THEN
643 write (*,*)
" ALE ADVECTION SET OFF"
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
648 WRITE(istdo,
'(2(A,I8),A,1PE11.4)')
' LAG_NC=',lag_nc,
', NITER_GC=',niter_gc,
', LAG_ERSQ2=',lag_ersq2
650 IF(imon > 0 .AND. tt-tt0 > zero)
THEN
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'
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
674 IF(imon > 0 .AND. tt > zero)
THEN
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'
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))
subroutine sortie_main(timers, pm, d, v, ale_connect, w, elbuf, iparg, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, wa, itab, x, geo, ms, a, cont, partsav, icut, xcut, fint, fext, fopt, anin, lpby, npby, nstrf, rwbuf, nprw, ebcs_tab, tani, inoise, bufnois, rby, neflsw, nnflsw, crflsw, flsw, lout, nodes, fsav, skew, elbuf_tab, cluster, vr, in, weight, fcluster, mcluster, dd_iad, dmas, accelm, gauge, ipari, eani, ipart, mat_param, igrnod, subset, nom_opt, ar, igrsurf, bufsf, idata, rdata, kxx, ixx, bufmat, bufgeo, kxsp, ixsp, nod2sp, spbuf, dr, fsavd, ixri, rivet, iskwn, iframe, xframe, ixs10, ixs20, ixs16, ndma, monvol, volmon, ipm, igeo, nodglob, iad_elem, fr_elem, fr_rby2, iad_rby2, fr_wall, fr_sec, fxbipm, fxbrpm, ndin, fxbdep, fxbvit, fxbacc, iflow, rflow, ipartl, npartl, iaccp, naccp, fasolfr, fncont, ftcont, iparth, fr_mv, ipart_state, sh4tree, sh3tree, temp, thke, err_thk_sh4, err_thk_sh3, inod_pxfem, fthreac, nodreac, gresav, diag_sms, sh4trim, sh3trim, fncont2, xmom_sms, irbe2, irbe3, lrbe2, lrbe3, fr_rbe2, fr_rbe3m, iad_rbe2, dxancg, iel_pxfem, zi_ply, vgaz, fcontg, fncontg, ftcontg, fanreac, inod_crk, iel_crk, elcutc, iadc_crk, pdama2, res_sms, sensors, qfricint, igaup, ngaup, weight_md, ncont, indexcont, nodglobxfe, nodedge, xfem_tab, nv46, rthbuf, kxig3d, ixig3d, knot, wige, nercvois, nesdvois, lercvois, lesdvois, crkedge, stack, isphio, vsphio, icode, indx_crk, xedge4n, xedge3n, sph2sol, stifn, stifr, drape_sh4n, drape_sh3n, ms_2d, multi_fvm, segquadfr, h3d_data, iskew, pskids, iskwp, knotlocpc, knotlocel, pinch_data, tag_skins6, irunn_bis, tf, npc, dynain_data, fcont_max, mds_matid, fncontp2, ftcontp2, ibcl, iloadp, lloadp, loadp, tagncont, loadp_hyd_inter, forc, drapeg, user_windows, output, dt, fsavsurf, table, loads, sfani, iparit, x_c, sz_npcont2, npcont2, glob_therm, pblast, wfext)