31 SUBROUTINE outri(DTELEM,IXS ,IXQ ,IXC ,IXT ,
32 . IXP ,IXR ,IXTG ,KXX ,
33 . KXSP ,KXIG3D,IGEO ,NUMEL)
45#include "implicit_f.inc"
58 INTEGER IXS(NIXS,*), IXQ(NIXQ,*), IXC(NIXC,*), IXT(NIXT,*)
59 INTEGER IXP(NIXP,*), IXR(NIXR,*), IXTG(NIXTG,*)
60 INTEGER KXX(NIXX,*), KXSP(NISP,*) ,KXIG3D(NIXIG3D,*),
64 INTEGER,
INTENT(IN) :: NUMEL
68 INTEGER NUM2, I, NUMIMP, NUMELO, NUM1, IS_PROP45
71 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PERM
76 CALL my_alloc(perm,numel)
137 CALL myqsort(numels,dtelem(num2),perm(num2),ierror)
141 CALL myqsort(numelq,dtelem(num2),perm(num2),ierror)
145 CALL myqsort(numelc,dtelem(num2),perm(num2),ierror)
148 num2 = numels+numelc+1
149 CALL myqsort(numelt,dtelem(num2),perm(num2),ierror)
152 num2 = numels+numelc+numelt+1
153 CALL myqsort(numelp,dtelem(num2),perm(num2),ierror)
156 num2 = numels+numelc+numelt+numelp+1
157 CALL myqsort(numelr,dtelem(num2),perm(num2),ierror)
160 num2=numels+numelc+numelt+numelp+numelr+1
161 CALL myqsort(numeltg,dtelem(num2),perm(num2),ierror)
164 num2=numels+numelc+numelt+numelp+numelr+numeltg+1
165 CALL myqsort(numelx,dtelem(num2),perm(num2),ierror)
168 num2=numels+numelc+numelt+numelp+numelr+numeltg+numelx+1
169 CALL myqsort(numsph,dtelem(num2),perm(num2),ierror)
171 IF (numelig3d>1)
THEN
172 num2=numels+numelc+numelt+numelp+numelr+numeltg+numelx+
174 CALL myqsort(numelig3d,dtelem(num2),perm(num2),ierror)
177 dtelem(numel+1:2*numel) = perm(1:numel)
183 tempo = numels*twoem2
184 numimp=min0(numels,max1(vingtr4,tempo))
188 numelo=nint(dtelem(numel+i))
189 WRITE(iout,1002)dtelem(i),ixs(11,numelo)
194 tempo = numelq*twoem2
195 numimp=min0(numelq,max1(vingtr4,tempo))
199 numelo=nint(dtelem(numel+i))
200 WRITE(iout,1002)dtelem(i),ixq(7,numelo)
205 tempo = numelc*twoem2
206 numimp=min0(numelc,max1(vingtr4,tempo))
214 numelo=nint(dtelem(num2+i))
215 WRITE(iout,1002)dtelem(numels+i),ixc(7,numelo)
220 tempo = numelt*twoem2
221 numimp=min0(numelt,max1(vingtr4,tempo))
222 num1=numels+numelq+numelc
228 numelo=nint(dtelem(num2+i))
229 WRITE(iout,1002)dtelem(num1+i),
235 tempo = numelp*twoem2
236 numimp=min0(numelp,max1(vingtr4,tempo))
237 num1=numels+numelc+numelt
242 numelo=nint(dtelem(num2+i))
243 WRITE(iout,1002)dtelem(num1+i),ixp(6,numelo)
249 tempo = numelr*twoem2
250 numimp=min0(numelr,max1(vingtr4,tempo))
251 num1=numels+numelc+numelt+numelp
257 numelo=nint(dtelem(num2+i))
258 IF( igeo(11,ixr(1,numelo)) == 45)
THEN
261 WRITE(iout,1002)dtelem(num1+i),ixr(6,numelo)
268 IF(numeltg>0 .AND. n2d == 0)
THEN
269 tempo = numeltg*twoem2
270 numimp=min0(numeltg,max1(vingtr4,tempo))
271 num1=numels+numelc+numelt+numelp+numelr
277 numelo=nint(dtelem(num2+i))
278 WRITE(iout,1002)dtelem(num1+i),ixtg(6,numelo)
282 IF(numeltg>0 .AND. n2d /= 0)
THEN
283 tempo = numeltg*twoem2
284 numimp=min0(numeltg,max1(vingtr4,tempo))
285 num1=numels+numelc+numelt+numelp+numelr
291 numelo=nint(dtelem(num2+i))
292 WRITE(iout,1002)dtelem(num1+i),ixtg(6,numelo)
297 tempo = numelx*twoem2
298 numimp=min0(numelx,max1(vingtr4,tempo))
299 num1=numels+numelc+numelt+numelp+numelr+numeltg
304 numelo=nint(dtelem(num2+i))
305 WRITE(iout,1002)dtelem(num1+i),kxx(5,numelo)
310 tempo = numsph*twoem2
311 numimp=min0(numsph,max1(vingtr4,tempo))
312 num1=numels+numelc+numelt+numelp+numelr+numeltg+numelx
317 numelo=nint(dtelem(num2+i))
318 WRITE(iout,1002)dtelem(num1+i),kxsp(nisp,numelo)
323 tempo = numelig3d*twoem2
324 numimp=min0(numelig3d,max1(vingtr4,tempo))
325 num1=numels+numelc+numelt+numelp+numelr+numeltg+numelx+
331 numelo=nint(dtelem(num2+i))
332 WRITE(iout,1002)dtelem(num1+i),kxig3d(5,numelo)
337 1000
FORMAT(//,
' SOLID ELEMENTS TIME STEP')
338 1001
FORMAT(
' ------------------------',//,
339 .
' TIME STEP ELEMENT NUMBER')
340 1002
FORMAT(1x,1pg20.13,5x,i10)
341 2000
FORMAT(/,
' SHELL ELEMENTS TIME STEP')
342 3000
FORMAT(/,
' TRUSS ELEMENTS TIME STEP')
343 4000
FORMAT(/,
' BEAM ELEMENTS TIME STEP')
344 5000
FORMAT(/,
' SPRING ELEMENTS TIME STEP')
345 5001
FORMAT(/,
' Info : spring TYPE45 (KJOINT2) time step is evaluated at the beginning of the engine')
346 6000
FORMAT(/,
' TRIANGULAR SHELL ELEMENTS TIME STEP')
34750000
FORMAT(/,
' USER RNUR ELEMENTS TIME STEP')
348 7000
FORMAT(/,
' MULTI-PURPOSE ELEMENTS TIME STEP')
349 8000
FORMAT(/,
' SMOOTH PARTICLES TIME STEP')
350 9000
FORMAT(/,
' ISO GEOMETRIC ELEMENTS TIME STEP')
35110000
FORMAT(/,
' 2D TRIA ELEMENTS TIME STEP')
366 SUBROUTINE outrin(MS,IN,STIFN,STIFR,ITAB,DTNODA)
379#include "implicit_f.inc"
385 . ms(numnod),in(numnod),stifn(numnod),stifr(numnod),
dtnoda
389#include "com01_c.inc"
390#include "com04_c.inc"
391#include "units_c.inc"
396 INTEGER I,N,IMAX, OLD_NUMB, P80, NB_OF_COLUM, STORAGE, OLD_COMPT, COMPT
397 my_real,
DIMENSION(:),
ALLOCATABLE :: DT
399 . dtnoda_stat(20),nb_nod_stat(20),chunk, dt_max, dt_min, seuil
401 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PERM
403 CALL my_alloc(perm,numnod)
404 CALL my_alloc(dt,numnod)
408 IF((ms(i)/=zero).AND.(stifn(i)>em20))
THEN
419 dt(i)=
min(dt(i),in(i)/stifr(i))
425 IF(dt(i)/=ep30)dt(i)=sqrt(abs(two*dt(i)))
430 IF(
tagno(i+n_part)==3) dt(i) = ep30
438 CALL myqsort(numnod,dt,perm,ierror)
447 DO i=1,
min(numnod0,
max(100,numnod0/50))
449 WRITE(iout,1002)dt(i),itab(n)
459 IF (dt(numnod-i+1) < 1e7)
THEN
461 dt_max = dt(numnod-i+1)
465 p80 = nint(0.8*numnod)
466 dt_max =
min(dt_max,dt(p80))
471 chunk = (dt_max-dt_min)/18.0
475 seuil = dt_min + chunk
481 IF (dt(i) > dt_max)
EXIT
482 DO WHILE ((dt(i) > seuil).AND.(compt<19))
484 seuil = seuil + chunk
487 IF (storage == 1)
THEN
488 nb_nod_stat(old_compt) = (100.0*(i-old_numb))/(one*numnod)
494 nb_nod_stat(compt) = (100.0*(i-old_numb))/(one*numnod)
495 nb_of_colum = compt+1
500 dtnoda_stat(1) = dt_min*(one-em10)
501 dtnoda_stat(nb_of_colum) = dt_max*(one+em10)
503 dtnoda_stat(i) = (dt_min+chunk*(i-2)+half*chunk)
510 CALL plot_curve(dtnoda_stat, nb_nod_stat, nb_of_colum, input_size_x=60, input_size_y=24, input_curve_type = 1,
511 . input_txt_x=
"NODAL TIME STEP",input_txt_y=
"% OF NODES")
519 1000
FORMAT(//,
' NODAL TIME STEP (estimation)')
520 1001
FORMAT(
' ---------------',//,
521 .
' TIME STEP NODE NUMBER')
522 1002
FORMAT(1x,1pg20.13,5x,i10)
523 2003
FORMAT(//,
' NODAL TIME STEP DISTRIBUTION ')
524 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)