30
31
32
33#include "implicit_f.inc"
34
35
36
37
38
39
40 INTEGER NVAL,NNOD
42 . ms(*),stifn(*),totmas,target_dt_tab(*),per_adm_tab(*),dtsca,dt(*),tmp(*)
43
44
45
46#include "com01_c.inc"
47#include "com04_c.inc"
48#include "com06_c.inc"
49#include "units_c.inc"
50
51
52
53 INTEGER I,N,COMPT,K
54 my_real sumk,sumk_old,summ,summ_old,per_adm,threshold
55
56
57
58
59
60
61 sumk = zero
62 summ = zero
63 sumk_old = zero
64 summ_old = zero
65 compt = 1
66 threshold = per_adm_tab(1)
67
68 DO i=1,nnod
69 n=nint(tmp(i))
70 ENDDO
71
72 DO i=1,nnod
73 IF (i > 1) THEN
74 IF (dt(i) > dt(i-1)) THEN
75 sumk_old = sumk
76 summ_old = summ
77 ENDIF
78 ENDIF
79 n=nint(tmp(i))
80 per_adm = (dt(i)*sumk_old - summ_old)/(
max(em20,totmas))
81 IF (i>1) THEN
82 DO WHILE ((per_adm > threshold).AND.(compt<=nval))
83 target_dt_tab(compt) = dtsca*sqrt(two*(totmas*threshold+summ_old)/
max(em20,sumk_old))
84 compt = compt+1
85 IF(compt<=nval) threshold = per_adm_tab(compt)
86 ENDDO
87 IF (compt > nval) EXIT
88 ENDIF
89 sumk = sumk + stifn(n)
90 summ = summ + ms(n)
91
92 IF (i==nnod) THEN
93 DO k=compt,nval
94 target_dt_tab(k) = dtsca*sqrt(two*(totmas*threshold+summ)/
max(em20,sumk))
95 IF(k+1 <= nval) threshold = per_adm_tab(k+1)
96 ENDDO
97 ENDIF
98 ENDDO
99
100
101 RETURN