OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
find_dt_target.F File Reference
#include "implicit_f.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "com06_c.inc"
#include "units_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine find_dt_target (ms, stifn, target_dt_tab, per_adm_tab, dt, tmp, dtsca, totmas, nval, nnod)

Function/Subroutine Documentation

◆ find_dt_target()

subroutine find_dt_target ( ms,
stifn,
target_dt_tab,
per_adm_tab,
dt,
tmp,
dtsca,
totmas,
integer nval,
integer nnod )

Definition at line 29 of file find_dt_target.F.

30C-----------------------------------------------
31C I m p l i c i t T y p e s
32C-----------------------------------------------
33#include "implicit_f.inc"
34C-----------------------------------------------
35C A n a l y s e M o d u l e
36C-----------------------------------------------
37C-----------------------------------------------
38C D u m m y A r g u m e n t s
39C-----------------------------------------------
40 INTEGER NVAL,NNOD
42 . ms(*),stifn(*),totmas,target_dt_tab(*),per_adm_tab(*),dtsca,dt(*),tmp(*)
43C-----------------------------------------------
44C C o m m o n B l o c k s
45C-----------------------------------------------
46#include "com01_c.inc"
47#include "com04_c.inc"
48#include "com06_c.inc"
49#include "units_c.inc"
50C-----------------------------------------------
51C L o c a l V a r i a b l e s
52C-----------------------------------------------
53 INTEGER I,N,COMPT,K
54 INTEGER :: CPT
55 my_real sumk,sumk_old,summ,summ_old,per_adm,target_dt,seuil,chunk
56C=======================================================================
57C
58C--------------------------------------------------------------------------------------
59C EXTRACTED FROM ADD_MASS_STAT in starter - used in both starter and engine
60C--------------------------------------------------------------------------------------
61C
62 sumk = zero
63 summ = zero
64 sumk_old = zero
65 summ_old = zero
66 compt = 1
67 seuil = per_adm_tab(1)
68C
69 DO i=1,nnod
70 n=nint(tmp(i))
71 ENDDO
72C
73 DO i=1,nnod
74 IF (i > 1) THEN
75 IF (dt(i) > dt(i-1)) THEN
76 sumk_old = sumk
77 summ_old = summ
78 ENDIF
79 ENDIF
80 n=nint(tmp(i))
81 per_adm = (dt(i)*sumk_old - summ_old)/(max(em20,totmas))
82 IF (i>1) THEN
83 DO WHILE ((per_adm > seuil).AND.(compt<=nval))
84 target_dt_tab(compt) = dtsca*sqrt(two*(totmas*seuil+summ_old)/max(em20,sumk_old))
85 compt = compt+1
86 IF(compt<=nval) seuil = per_adm_tab(compt)
87 ENDDO
88 IF (compt > nval) EXIT
89 ENDIF
90 sumk = sumk + stifn(n)
91 summ = summ + ms(n)
92C-- If threshold are not crossed target dt values must be computed for the last node
93 IF (i==nnod) THEN
94 DO k=compt,nval
95 target_dt_tab(k) = dtsca*sqrt(two*(totmas*seuil+summ)/max(em20,sumk))
96 IF(k+1 <= nval) seuil = per_adm_tab(k+1)
97 ENDDO
98 ENDIF
99 ENDDO
100C
101
102 RETURN
#define my_real
Definition cppsort.cpp:32
#define max(a, b)
Definition macros.h:21