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 INTEGER :: CPT
55 my_real sumk,sumk_old,summ,summ_old,per_adm,target_dt,seuil,chunk
56
57
58
59
60
61
62 sumk = zero
63 summ = zero
64 sumk_old = zero
65 summ_old = zero
66 compt = 1
67 seuil = per_adm_tab(1)
68
69 DO i=1,nnod
70 n=nint(tmp(i))
71 ENDDO
72
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)
92
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
100
101
102 RETURN