31
32
33
35 USE sensor_mod
36
37
38
39#include "implicit_f.inc"
40
41
42
43
44
45
46
47 INTEGER, INTENT(IN) :: NSECT,NINTER,NINTSUB,NRWALL,NRBODY
48 TYPE () ,INTENT(INOUT) :: SENSORS
49
50
51
52 INTEGER I,NOSYS,ISECT,IINT,IRWAL,IRBOD,COMPTEUR,SENS_TYPE,SECT_ID,INT_ID,SUB_ID,RWAL_ID,RBOD_ID
53 INTEGER, DIMENSION(0:NSECT+NINTER+NINTSUB+NRWALL+NRBODY) :: TABLOCAL
54
55
56
57
58
59 tablocal(:) = 0
60
61 DO i=1,sensors%NSENSOR
62 sens_type = sensors%SENSOR_TAB(i)%TYPE
63 IF (sens_type == 12 ) THEN
64 isect = sensors%SENSOR_TAB(i)%IPARAM(1)
65 tablocal(isect) = i
66 ELSEIF (sens_type == 6) THEN
67 int_id = sensors%SENSOR_TAB(i)%IPARAM(1)
68 iint = int_id + nsect
69 tablocal(iint) = i
70 ELSEIF (sens_type == 7) THEN
71 rwal_id = sensors%SENSOR_TAB(i)%IPARAM(1)
72 irwal = rwal_id + nsect + ninter+ nintsub
73 tablocal(irwal) = i
74 ELSEIF (sens_type == 11) THEN
75 rbod_id = sensors%SENSOR_TAB(i)%IPARAM(1)
76 irbod = rbod_id + nsect + ninter+ nintsub + nrwall
77 tablocal(irbod) = i
78 ELSEIF (sens_type == 13) THEN
79 sect_id = sensors%SENSOR_TAB(i)%IPARAM(3)
80 int_id = sensors%SENSOR_TAB(i)%IPARAM(4)
81 sub_id = sensors%SENSOR_TAB(i)%IPARAM(5)
82 rwal_id = sensors%SENSOR_TAB(i)%IPARAM(6)
83 rbod_id = sensors%SENSOR_TAB(i)%IPARAM(7)
84
85 isect = sect_id
86 IF (isect > 0) tablocal(isect) = i
87
88 iint = int_id + nsect
89 IF (int_id > 0) tablocal(iint)=i
90 iint = sub_id + nsect
91 IF (sub_id > 0) tablocal(iint)=i
92
93 irwal = rwal_id + nsect + ninter+ nintsub
94 IF (rwal_id > 0) tablocal(irwal)=i
95
96 irbod = rbod_id + nsect + ninter+ nintsub + nrwall
97 IF (rbod_id > 0) tablocal(irbod)=i
98 ENDIF
99 ENDDO
100
101 nosys=1
102 DO WHILE (tablocal(nosys) == 0)
103 nosys=nosys+1
104 ENDDO
105
106 DO i=1,nosys
107 sensors%TABSENSOR(i) = tablocal(nosys)
108 ENDDO
109
110 compteur=1
111 DO i = nosys, nsect+ninter+nintsub+nrwall+nrbody
112 IF (tablocal(i)==0) THEN
113 sensors%TABSENSOR(i+1) = sensors%TABSENSOR(i)
114 ELSE
115 sensors%TABSENSOR(i+1) = sensors%TABSENSOR(i) + compteur
116 compteur=compteur+1
117 ENDIF
118 ENDDO
119
120 RETURN