35
36
37
38
39
40
41
42
43
44
45
46 USE intbufdef_mod
48 USE sensor_mod
49
50
51
52#include "implicit_f.inc"
53
54
55
56#include "com04_c.inc"
57#include "com08_c.inc"
58#include "param_c.inc"
59
60
61
62 INTEGER, INTENT(in) :: ITASK
63 INTEGER, INTENT(inout) :: NEED_TO_SORT
64 INTEGER, INTENT(in) :: NBINTC
65 INTEGER, INTENT(in) :: NSENSOR
66 INTEGER, DIMENSION(NBINTC), INTENT(in) :: INTLIST
67 INTEGER, INTENT(inout) :: NB_INTER_SORTED
68 INTEGER, DIMENSION(NBINTC), INTENT(inout) :: LIST_INTER_SORTED
69 INTEGER, DIMENSION(NPARI,NINTER), INTENT(in) :: IPARI
70 TYPE(INTBUF_STRUCT_),DIMENSION(NINTER) :: INTBUF_TAB
71 TYPE(inter_struct_type), DIMENSION(NINTER), INTENT(inout) :: INTER_STRUCT
72 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) :: SENSOR_TAB
73
74
75
76 INTEGER :: NTY,INACTI,ISENS
78 LOGICAL TYPE18
79 LOGICAL :: IS_SORTING_NEEDED
80 INTEGER :: KK,N
81
82 nb_inter_sorted = 0
83
84
85 DO kk=1,nbintc
86
87 n = intlist(kk)
88 nty = ipari(7,n)
89 inacti = ipari(22,n)
90 type18=.false.
91 IF(nty==7 .AND. inacti==7)type18=.true.
92
93 isens = 0
94 IF(nty == 7.OR.nty == 11.OR.nty == 24.OR.nty == 25) isens = ipari(64,n)
95 IF (isens > 0) THEN
96 ts = sensor_tab(isens)%TSTART
97 ELSE
98 ts = tt
99 ENDIF
100 is_sorting_needed=.false.
101
102
103 IF( (nty == 7.AND.tt>=ts).AND.(.NOT.type18) )THEN
104
105 dist = intbuf_tab(n)%VARIABLES(distance_index)
106 IF (dist<=zero) is_sorting_needed = .true.
107 startt=intbuf_tab(n)%VARIABLES(t_start_index)
108 stopt =intbuf_tab(n)%VARIABLES(t_stop_index)
109
110 IF(is_sorting_needed) THEN
111 IF(startt>tt) is_sorting_needed = .false.
112 ENDIF
113
114 IF(is_sorting_needed) THEN
115 IF(tt>stopt) is_sorting_needed = .false.
116 ENDIF
117
118 IF (is_sorting_needed) THEN
119 IF(itask==0) need_to_sort = 1
120 nb_inter_sorted = nb_inter_sorted + 1
121 list_inter_sorted(nb_inter_sorted) = n
122 IF(itask==0) inter_struct(n)%CURV_MAX_MAX = zero
123 ENDIF
124 ENDIF
125
126 ENDDO
127
128 RETURN