40
41
42
43 USE python_funct_mod
44 USE sensor_mod
47
48
49
50#include "implicit_f.inc"
51#include "scr07_c.inc"
52#include "scr17_c.inc"
53#include "task_c.inc"
54
55
56
57 TYPE (SENSORS_) ,INTENT(INOUT) :: SENSORS
58 TYPE(PYTHON_), INTENT(IN) :: PYTHON
59
60
61
62 INTEGER I,ISEN,LEN,IAD,NFIX,NPARI,NPARR,NVAR,TYP,NSENSOR,IERR
63 INTEGER, DIMENSION(LTITR) :: ITITLE
64 my_real,
DIMENSION(:),
ALLOCATABLE :: head,rbuf
65 CHARACTER(LEN = NCHARTITLE) :: TITLE
66 INTEGER :: PYID
67
68 nsensor = sensors%NSENSOR
69 ALLOCATE(sensors%SENSOR_TAB(nsensor))
70
71 IF (nsensor > 0) THEN
72 nfix = 11
73 ALLOCATE (head(nfix) )
74
75 DO isen=1,nsensor
77
78 sensors%SENSOR_TAB(isen)%TYPE = nint(head(1))
79 sensors%SENSOR_TAB(isen)%SENS_ID = nint(head(2))
80 sensors%SENSOR_TAB(isen)%STATUS = nint(head(3))
81 sensors%SENSOR_TAB(isen)%TCRIT = head(4)
82 sensors%SENSOR_TAB(isen)%TMIN = head(5)
83 sensors%SENSOR_TAB(isen)%TDELAY = head(6)
84 sensors%SENSOR_TAB(isen)%TSTART = head(7)
85 sensors%SENSOR_TAB(isen)%VALUE = head(8)
86 sensors%SENSOR_TAB(isen)%NPARI = nint
87 sensors%SENSOR_TAB(isen)%NPARR = nint
88 sensors%SENSOR_TAB(isen)%NVAR
89
90 npari = sensors%SENSOR_TAB(isen)%NPARI
91 nparr = sensors%SENSOR_TAB
92 nvar = sensors%SENSOR_TAB(isen)%NVAR
93
94 ALLOCATE(sensors%SENSOR_TAB(isen)%IPARAM(npari))
95 ALLOCATE(sensors%SENSOR_TAB(isen)%RPARAM
96 ALLOCATE(sensors%SENSOR_TAB(isen)%VAR(
nvar))
97
98 len
99 ALLOCATE (rbuf(len) )
101
102 iad = 0
103 IF (npari > 0) THEN
104 DO i = 1,npari
105 sensors%SENSOR_TAB(isen)%IPARAM(i) = nint
106 END DO
107 iad = iad + npari
108 END IF
109 IF (nparr > 0) THEN
110 DO i = 1,nparr
111 sensors%SENSOR_TAB(isen)%RPARAM(i) = rbuf(iad+i)
112 END DO
113
114 END IF
116 DO
117 sensors%SENSOR_TAB(isen)%VAR(i) = rbuf(iad+i)
118 END DO
120 END IF
121
122 DEALLOCATE (rbuf)
123
124
127 sensors%SENSOR_TAB(isen)%TITLE = title
128
129 typ = sensors%SENSOR_TAB(isen)%TYPE
130 IF (typ == 29 .OR. typ == 30 .OR. typ == 31)THEN
131
132 ALLOCATE(sensors%SENSOR_TAB(isen)%INTEGER_USERPARAM(nsenpari))
133 ALLOCATE(sensors%SENSOR_TAB(isen)%FLOAT_USERPARAM(nsenparr))
134
135 ALLOCATE(sensors%SENSOR_TAB(isen)%INTEGER_USERBUF(isenbuf))
136 ALLOCATE(sensors%SENSOR_TAB(isen)%FLOAT_USERBUF(lsenbuf))
137
138 CALL read_i_c(sensors%SENSOR_TAB(isen)%INTEGER_USERPARAM,nsenpari)
139 CALL read_i_c(sensors%SENSOR_TAB(isen)%INTEGER_USERBUF,isenbuf)
140
142 CALL read_db (sensors%SENSOR_TAB(isen)%FLOAT_USERBUF,lsenbuf)
143
144 ENDIF
145 IF( typ == 40THEN
146 CALL read_i_c(sensors%SENSOR_TAB(isen)%PYTHON_FUNCTION_ID,1)
147 pyid = sensors%SENSOR_TAB
148 CALL copy_python_function(python%FUNCTS
149 ENDIF
150
151 END DO
152
153
154
155
156 CALL read_i_c(sensors%LOGICAL_SENSOR_COUNT,1)
157
158 ALLOCATE(sensors%LOGICAL_SENSORS_LIST(sensors%LOGICAL_SENSOR_COUNT))
159 CALL read_i_c(sensors%LOGICAL_SENSORS_LIST,sensors%LOGICAL_SENSOR_COUNT)
160
161
162
163
164 ALLOCATE (sensors%FSAV(12,6,sensors%SFSAV) ,stat=ierr)
165 ALLOCATE (sensors%TABSENSOR(sensors%STABSEN),stat=ierr)
166
167 CALL read_dpdb(sensors%FSAV,12*6*sensors%SFSAV)
168
169 CALL read_i_c(sensors%TABSENSOR,sensors%STABSEN)
170
171
172 IF (mcheck /= 0 ) THEN
173 CALL read_i_c(sensors%STOP ,sensors%NSTOP)
174 ENDIF
175 IF (mcheck /= 0 .and. ispmd == 0) THEN
176 CALL read_i_c(sensors%STAT ,sensors%NSTAT)
177 CALL read_i_c(sensors%OUTP ,sensors%NOUTP)
178 CALL read_i_c(sensors%ANIM ,sensors%NANIM)
179 END IF
180
181 DEALLOCATE (head)
182
183 END IF
184
185 RETURN
integer, parameter nchartitle
integer function nvar(text)
subroutine read_dpdb(a, n)
void read_i_c(int *w, int *len)