32
33
34
35 USE sensor_mod , ONLY : sensors_, sensor_str_,
36 . isenbuf, lsenbuf, nsenparr, nsenpari
39 USE python_funct_mod
40
41
42
43#include "implicit_f.inc"
44#include "scr17_c.inc"
45
46
47
48 INTEGER ,INTENT(IN) :: NUMNOD
49 INTEGER ,DIMENSION(NUMNOD) ,INTENT(IN) :: NODLOCAL
50 TYPE (SENSORS_) ,TARGET ,INTENT(IN) :: SENSORS
51
52
53
54 INTEGER I,ISEN,LEN,IAD,NFIX,NPARI,NPARR,NVAR,N1,N2,TYP
55 INTEGER, DIMENSION(LTITR) :: ITITLE
56 INTEGER, DIMENSION(:), ALLOCATABLE :: LTEMP
57 my_real,
DIMENSION(:),
ALLOCATABLE :: rbuf
58 CHARACTER(LEN = nchartitle) :: TITLE
59 TYPE (SENSOR_STR_) ,POINTER :: SENSOR
60
61 IF (sensors%NSENSOR > 0) THEN
62 nfix = 11
63
64 DO isen=1,sensors%NSENSOR
65 sensor => sensors%SENSOR_TAB(isen)
66 typ = sensor%TYPE
67 npari = sensor%NPARI
68 nparr = sensor%NPARR
70 title = sensor%TITLE
71 ALLOCATE (ltemp(npari))
72 ltemp(1:npari) = sensor%IPARAM(1:npari)
73
74 IF (typ == 2) THEN
75 n1 = nodlocal(sensor%IPARAM(1))
76 n2 = nodlocal(sensor%IPARAM(2))
77 ltemp(1) = n1
78 ltemp(2) = n2
79 ELSE IF (typ == 9) THEN
80 n1 = nodlocal(sensor%IPARAM(1))
81 ltemp(1) = n1
82 ELSE IF (typ == 13) THEN
83 n2 = sensor%IPARAM(2)
84 n1 = nodlocal(sensor%IPARAM(1))
85 IF (n2 > 0) THEN
86 n2 = nodlocal(sensor%IPARAM(2))
87 END IF
88 ltemp(1) = n1
89 ltemp(2) = n2
90 ELSE IF (typ == 15) THEN
91 ltemp(1) = nodlocal(sensor%IPARAM(1))
92 IF (sensor%IPARAM(2) == 0) THEN
93 ltemp(3) = nodlocal(sensor%IPARAM(3))
94 ltemp(4) = nodlocal(sensor%IPARAM(4))
95 ltemp(5) = nodlocal(sensor%IPARAM(5))
96 END IF
97 END IF
98
99 len = nfix + npari + nparr +
nvar
100 ALLOCATE (rbuf(len) )
101
102 iad = 0
103 rbuf(iad+1) = sensor%TYPE
104 rbuf(iad+2) = sensor%SENS_ID
105 rbuf(iad+3) = sensor%STATUS
106 rbuf(iad+4) = sensor%TCRIT
107 rbuf(iad+5) = sensor%TMIN
108 rbuf(iad+6) = sensor%TDELAY
109 rbuf(iad+7) = sensor%TSTART
110 rbuf(iad+8) = sensor%VALUE
111 rbuf(iad+9) = sensor%NPARI
112 rbuf(iad+10)= sensor%NPARR
113 rbuf(iad+11)= sensor%NVAR
114 iad = iad + nfix
115
116 IF (npari > 0) THEN
117 DO i = 1,npari
118 rbuf(iad+i) = ltemp(i)
119 END DO
120 iad = iad + npari
121 END IF
122 IF (nparr > 0) THEN
123 DO i = 1,nparr
124 rbuf(iad+i) = sensor%RPARAM(i)
125 END DO
126 iad = iad + nparr
127 END IF
130 rbuf(iad+i) = sensor%VAR(i)
131 END DO
133 END IF
134
136 DEALLOCATE(rbuf)
137 DEALLOCATE(ltemp)
138
139
140 CALL fretitl(title,ititle,ltitr)
142
143 IF (typ==29.OR.typ==30.OR.typ==31)THEN
144 CALL write_i_c(sensor%INTEGER_USERPARAM,nsenpari)
145 CALL write_i_c(sensor%INTEGER_USERBUF,isenbuf)
146
147 CALL write_db(sensor%FLOAT_USERPARAM,nsenparr)
148 CALL write_db(sensor%FLOAT_USERBUF,lsenbuf)
149 ENDIF
150 IF(typ == 40) THEN
152 ENDIF
153
154 END DO
155
156
157
158
160 CALL write_i_c(sensors%LOGICAL_SENSORS_LIST,sensors%LOGICAL_SENSOR_COUNT)
161
162
163
164
165
166 CALL write_dpdb(sensors%FSAV,12*6*sensors%SFSAV)
167 CALL write_i_c(sensors%TABSENSOR,sensors%STABSEN)
168 END IF
169
170 RETURN
integer, parameter nchartitle
subroutine write_integer(a)
integer function nvar(text)
subroutine write_db(a, n)
subroutine write_dpdb(a, n)
void write_i_c(int *w, int *len)