37
38
39
40 USE sensor_mod
42
43
44
45#include "implicit_f.inc"
46#include "scr07_c.inc"
47#include "scr17_c.inc"
48#include "task_c.inc"
49
50
51
52 TYPE (SENSORS_) ,INTENT(IN) ,TARGET :: SENSORS
53
54
55
56 INTEGER I,ISEN,LEN,IAD,NFIX,NPARI,NPARR,NVAR,TYP
57 INTEGER, DIMENSION(LTITR) :: ITITLE
58 my_real,
DIMENSION(:),
ALLOCATABLE :: rbuf
59 CHARACTER(LEN = NCHARTITLE) :: TITLE
60 TYPE (SENSOR_STR_) ,POINTER :: SENSOR
61
62 nfix = 11
63
64 IF (sensors%NSENSOR > 0) THEN
65 DO isen = 1,sensors%NSENSOR
66 sensor => sensors%SENSOR_TAB(isen)
67 typ = sensor%TYPE
68 npari = sensor%NPARI
69 nparr = sensor%NPARR
71 title = sensor%TITLE
72
73 len = nfix + npari + nparr +
nvar
74 ALLOCATE (rbuf(len) )
75
76 iad = 0
77 rbuf(iad+1) = sensor%TYPE
78 rbuf(iad+2) = sensor%SENS_ID
79 rbuf(iad+3) = sensor%STATUS
80 rbuf(iad+4) = sensor%TCRIT
81 rbuf(iad+5) = sensor%TMIN
82 rbuf(iad+6) = sensor%TDELAY
83 rbuf(iad+7) = sensor%TSTART
84 rbuf(iad+8) = sensor%VALUE
85 rbuf(iad+9) = sensor%NPARI
86 rbuf(iad+10)= sensor%NPARR
87 rbuf(iad+11)= sensor%NVAR
88 iad = iad + nfix
89
90 IF (npari > 0) THEN
91 DO i = 1,npari
92 rbuf(iad+i) = sensor%IPARAM(i)
93 END DO
94 iad = iad + npari
95 END IF
96 IF (nparr > 0) THEN
97 DO i = 1,nparr
98 rbuf(iad+i) = sensor%RPARAM(i)
99 END DO
100 iad = iad + nparr
101 END IF
104 rbuf(iad+i) = sensor%VAR(i)
105 END DO
107 END IF
108
110 DEALLOCATE (rbuf)
111
112
113 CALL fretitl(title,ititle,ltitr)
115
116 IF (typ==29.OR.typ==30.OR.typ==31)THEN
117 CALL write_i_c(sensor%INTEGER_USERPARAM,nsenpari)
118 CALL write_i_c(sensor%INTEGER_USERBUF,isenbuf)
119
120 CALL write_db (sensor%FLOAT_USERPARAM,nsenparr)
121 CALL write_db (sensor%FLOAT_USERBUF,lsenbuf)
122
123 ENDIF
124 IF(typ == 40 ) THEN
125 CALL write_i_c(sensor%PYTHON_FUNCTION_ID,1)
126 ENDIF
127 END DO
128
129
130
131
132
133 CALL write_i_c(sensors%LOGICAL_SENSOR_COUNT,1)
134 CALL write_i_c(sensors%LOGICAL_SENSORS_LIST,sensors%LOGICAL_SENSOR_COUNT)
135
136
137
138
139
140 CALL write_dpdb(sensors%FSAV,12*6*sensors%SFSAV)
141 CALL write_i_c(sensors%TABSENSOR,sensors%STABSEN)
142
143
144
145 IF (wmcheck == 1) THEN
146 CALL write_i_c(sensors%STOP ,sensors%NSTOP)
147 ENDIF
148
149 IF (ispmd == 0 .and. wmcheck == 1) THEN
150 CALL write_i_c(sensors%STAT ,sensors%NSTAT)
151 CALL write_i_c(sensors%OUTP ,sensors%NOUTP)
152 CALL write_i_c(sensors%ANIM ,sensors%NANIM)
153 END IF
154
155 END IF
156
157 RETURN
integer, parameter nchartitle
integer function nvar(text)
subroutine write_db(a, n)
subroutine write_dpdb(a, n)
void write_i_c(int *w, int *len)