31 SUBROUTINE outri(DTELEM,IXS ,IXQ ,IXC ,IXT ,
32 . IXP ,IXR ,IXTG ,KXX ,
33 . KXSP ,KXIG3D,IGEO ,NUMEL)
42 use element_mod ,
only : nixs,nixq,nixc,nixt,nixp,nixr,nixtg
46#include "implicit_f.inc"
59 INTEGER IXS(NIXS,*), IXQ(NIXQ,*), IXC(NIXC,*), IXT(NIXT,*)
60 INTEGER IXP(NIXP,*), IXR(NIXR,*), IXTG(NIXTG,*)
61 INTEGER KXX(NIXX,*), KXSP(NISP,*) ,KXIG3D(NIXIG3D,*),
65 INTEGER,
INTENT(IN) :: NUMEL
69 INTEGER NUM2, I, NUMIMP, NUMELO, NUM1, IS_PROP45
72 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PERM
77 CALL my_alloc(perm,numel)
138 CALL myqsort(numels,dtelem(num2),perm(num2),ierror)
142 CALL myqsort(numelq,dtelem(num2),perm(num2),ierror)
146 CALL myqsort(numelc,dtelem(num2),perm(num2),ierror)
149 num2 = numels+numelc+1
150 CALL myqsort(numelt,dtelem(num2),perm(num2),ierror)
153 num2 = numels+numelc+numelt+1
154 CALL myqsort(numelp,dtelem(num2),perm(num2),ierror)
157 num2 = numels+numelc+numelt+numelp+1
158 CALL myqsort(numelr,dtelem(num2),perm(num2),ierror)
161 num2=numels+numelc+numelt+numelp+numelr+1
162 CALL myqsort(numeltg,dtelem(num2),perm(num2),ierror)
165 num2=numels+numelc+numelt+numelp+numelr+numeltg+1
166 CALL myqsort(numelx,dtelem(num2),perm(num2),ierror)
169 num2=numels+numelc+numelt+numelp+numelr+numeltg+numelx+1
170 CALL myqsort(numsph,dtelem(num2),perm(num2),ierror)
172 IF (numelig3d>1)
THEN
173 num2=numels+numelc+numelt+numelp+numelr+numeltg+numelx+
175 CALL myqsort(numelig3d,dtelem(num2),perm(num2),ierror)
178 dtelem(numel+1:2*numel) = perm(1:numel)
184 tempo = numels*twoem2
185 numimp=min0(numels,max1(vingtr4,tempo))
189 numelo=nint(dtelem(numel+i))
190 WRITE(iout,1002)dtelem(i),ixs(11,numelo)
195 tempo = numelq*twoem2
196 numimp=min0(numelq,max1(vingtr4,tempo))
200 numelo=nint(dtelem(numel+i))
201 WRITE(iout,1002)dtelem(i),ixq(7,numelo)
206 tempo = numelc*twoem2
207 numimp=min0(numelc,max1(vingtr4,tempo))
215 numelo=nint(dtelem(num2+i))
216 WRITE(iout,1002)dtelem(numels+i),ixc(7,numelo)
221 tempo = numelt*twoem2
222 numimp=min0(numelt,max1(vingtr4,tempo))
223 num1=numels+numelq+numelc
229 numelo=nint(dtelem(num2+i))
230 WRITE(iout,1002)dtelem(num1+i),
236 tempo = numelp*twoem2
237 numimp=min0(numelp,max1(vingtr4,tempo))
238 num1=numels+numelc+numelt
243 numelo=nint(dtelem(num2+i))
244 WRITE(iout,1002)dtelem(num1+i),ixp(6,numelo)
250 tempo = numelr*twoem2
251 numimp=min0(numelr,max1(vingtr4,tempo))
252 num1=numels+numelc+numelt+numelp
258 numelo=nint(dtelem(num2+i))
259 IF( igeo(11,ixr(1,numelo)) == 45)
THEN
262 WRITE(iout,1002)dtelem(num1+i),ixr(6,numelo)
269 IF(numeltg>0 .AND. n2d == 0)
THEN
270 tempo = numeltg*twoem2
271 numimp=min0(numeltg,max1(vingtr4,tempo))
272 num1=numels+numelc+numelt+numelp+numelr
278 numelo=nint(dtelem(num2+i))
279 WRITE(iout,1002)dtelem(num1+i),ixtg(6,numelo)
283 IF(numeltg>0 .AND. n2d /= 0)
THEN
284 tempo = numeltg*twoem2
285 numimp=min0(numeltg,max1(vingtr4,tempo))
286 num1=numels+numelc+numelt+numelp+numelr
292 numelo=nint(dtelem(num2+i))
293 WRITE(iout,1002)dtelem(num1+i),ixtg(6,numelo)
298 tempo = numelx*twoem2
299 numimp=min0(numelx,max1(vingtr4,tempo))
300 num1=numels+numelc+numelt+numelp+numelr+numeltg
305 numelo=nint(dtelem(num2+i))
306 WRITE(iout,1002)dtelem(num1+i),kxx(5,numelo)
311 tempo = numsph*twoem2
312 numimp=min0(numsph,max1(vingtr4,tempo))
313 num1=numels+numelc+numelt+numelp+numelr+numeltg+numelx
318 numelo=nint(dtelem(num2+i))
319 WRITE(iout,1002)dtelem(num1+i),kxsp(nisp,numelo)
324 tempo = numelig3d*twoem2
325 numimp=min0(numelig3d,max1(vingtr4,tempo))
326 num1=numels+numelc+numelt+numelp+numelr+numeltg+numelx+
332 numelo=nint(dtelem(num2+i))
333 WRITE(iout,1002)dtelem(num1+i),kxig3d(5,numelo)
338 1000
FORMAT(//,
' SOLID ELEMENTS TIME STEP')
339 1001
FORMAT(
' ------------------------',//,
340 .
' TIME STEP ELEMENT NUMBER')
341 1002
FORMAT(1x,1pg20.13,5x,i10)
342 2000
FORMAT(/,
' SHELL ELEMENTS TIME STEP')
343 3000
FORMAT(/,
' TRUSS ELEMENTS TIME STEP')
344 4000
FORMAT(/,
' BEAM ELEMENTS TIME STEP')
345 5000
FORMAT(/,
' SPRING ELEMENTS TIME STEP')
346 5001
FORMAT(/,
' Info : spring TYPE45 (KJOINT2) time step is evaluated at the beginning of the engine')
347 6000
FORMAT(/,
' TRIANGULAR SHELL ELEMENTS TIME STEP')
34850000
FORMAT(/,
' USER RNUR ELEMENTS TIME STEP')
349 7000
FORMAT(/,
' MULTI-PURPOSE ELEMENTS TIME STEP')
350 8000
FORMAT(/,
' SMOOTH PARTICLES TIME STEP')
351 9000
FORMAT(/,
' ISO GEOMETRIC ELEMENTS TIME STEP')
35210000
FORMAT(/,
' 2D TRIA ELEMENTS TIME STEP')
367 SUBROUTINE outrin(MS,IN,STIFN,STIFR,ITAB,DTNODA)
380#include "implicit_f.inc"
386 . ms(numnod),in(numnod),stifn(numnod),stifr(numnod),
dtnoda
390#include "com01_c.inc"
391#include "com04_c.inc"
392#include "units_c.inc"
397 INTEGER I,N,IMAX, OLD_NUMB, P80, NB_OF_COLUM, STORAGE, OLD_COMPT, COMPT
398 ,
DIMENSION(:),
ALLOCATABLE :: DT
400 . dtnoda_stat(20),nb_nod_stat(20),chunk, dt_max, dt_min, seuil
402 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PERM
404 CALL my_alloc(perm,numnod)
405 CALL my_alloc(dt,numnod)
409 IF((ms(i)/=zero).AND.(stifn(i)>em20))
THEN
420 dt(i)=
min(dt(i),in(i)/stifr(i))
426 IF(dt(i)/=ep30)dt(i)=sqrt(abs(two*dt(i)))
431 IF(
tagno(i+n_part)==3) dt(i) = ep30
439 CALL myqsort(numnod,dt,perm,ierror)
448 DO i=1,
min(numnod0,
max(100,numnod0/50))
450 WRITE(iout,1002)dt(i),itab(n)
460 IF (dt(numnod-i+1) < 1e7)
THEN
462 dt_max = dt(numnod-i+1)
466 p80 = nint(0.8*numnod)
467 dt_max =
min(dt_max,dt(p80))
472 chunk = (dt_max-dt_min)/18.0
476 seuil = dt_min + chunk
482 IF (dt(i) > dt_max)
EXIT
483 DO WHILE ((dt(i) > seuil).AND.(compt<19))
485 seuil = seuil + chunk
488 IF (storage == 1)
THEN
489 nb_nod_stat(old_compt) = (100.0*(i-old_numb))/(one*numnod)
495 nb_nod_stat(compt) = (100.0*(i-old_numb))/(one*numnod)
496 nb_of_colum = compt+1
501 dtnoda_stat(1) = dt_min*(one-em10)
502 dtnoda_stat(nb_of_colum) = dt_max*(one+em10)
504 dtnoda_stat(i) = (dt_min+chunk*(i-2)+half*chunk)
511 CALL plot_curve(dtnoda_stat, nb_nod_stat, nb_of_colum, input_size_x=60, input_size_y=24, input_curve_type = 1,
512 . input_txt_x=
"NODAL TIME STEP",input_txt_y=
"% OF NODES")
520 1000
FORMAT(//,
' NODAL TIME STEP (estimation)')
521 1001
FORMAT(
' ---------------',//,
522 .
' TIME STEP NODE NUMBER')
523 1002
FORMAT(1x,1pg20.13,5x,i10)
524 2003
FORMAT(//,
' NODAL TIME STEP DISTRIBUTION ')
525 2004
FORMAT(
' ----------------------------',//)
subroutine dtnoda(nodft, nodlt, neltst, ityptst, itab, ms, in, stifn, stifr, dt2t, dmast, dinert, adt, adm, imsch, weight, a, ar, igrnod, nodadt_therm, adi, rbym, arby, arrby, weight_md, mcp, mcp_off, condn, nale, h3d_data)