47
48
49
53 USE sensor_mod
55 USE format_mod , ONLY : fmw_i_a
56
57
58
59#include "implicit_f.inc"
60
61
62
63#include "scr17_c.inc"
64#include "com04_c.inc"
65#include "units_c.inc"
66#include "param_c.inc"
67#include "r2r_c.inc"
68#include "tabsiz_c.inc"
69
70
71
72 INTEGER ,INTENT(IN) :: ITYP,NVARE,NVARG,LITHBUFMX,NVALL
73 INTEGER ,INTENT(OUT) :: NSNE
74 INTEGER ,INTENT(INOUT) :: IFI,IAD,IGS,NVARABF
75 INTEGER ,DIMENSION(NITHGR) ,INTENT(INOUT) :: ITHGRP
76 INTEGER ,DIMENSION(18,NVARG) ,INTENT(IN) :: IVARG
77 INTEGER ,DIMENSION(SITHVAR) ,INTENT(OUT) :: ITHVAR
78 INTEGER ,DIMENSION(LITHBUFMX) ,INTENT(OUT) :: ITHBUF
79 CHARACTER*10 ,INTENT(IN) :: VARE(NVARE),KEY,VARG(NVARG)
80 TYPE (SUBMODEL_DATA) ,DIMENSION(NSUBMOD) ,INTENT(IN) :: LSUBMODEL
81 TYPE (SENSORS_) ,INTENT(IN) :: SENSORS
82
83
84
85 INTEGER J,I,ID,NNE,K,IAD0,IFITMP,NVAR,N,IAD1,IAD2,IDS,IDSMAX,IDS_OBJ1
86 CHARACTER(LEN=NCHARTITLE) :: TITR
87 LOGICAL, DIMENSION(:), ALLOCATABLE :: FOUND
88 LOGICAL IS_AVAILABLE
89
90
91
92 INTEGER HM_THVARC,R2R_EXIST
93
94 is_available = .false.
95 nsne = 0
97 CALL fretitl2(titr,ithgrp(nithgr-ltitr+1),ltitr)
98 ithgrp(2) = ityp
99 ithgrp(3) = 0
100 ifitmp = ifi+1000
101
102
104
106 IF (ityp /= 120)
107 .
CALL ancmsg(msgid=1109, msgtype=msgerror, anmode=aninfo_blind_1,
109 . c1=titr )
110 igs = igs - 1
111 ithgrp(1:nithgr) = 0
112
113 ELSE
114
115 nvar =
hm_thvarc(vare,nvare,ithbuf(iad),varg,nvarg,ivarg,nvall,
id,titr ,lsubmodel)
116
117 CALL hm_get_intv(
'idsmax',idsmax,is_available,lsubmodel)
119
120 IF (idsmax > 0 .AND. ids_obj1 == 0) THEN
121
123 ithgrp(7) = iad
126 nne = idsmax
127 ithgrp(4 )= nne
128 ithgrp(5) = iad
129 iad2 = iad + 3*nne
130 ithgrp
131 CALL zeroin(iad,iad + 43*nne-1,ithbuf)
132 ALLOCATE (found(sensors%NSENSOR))
133 found(1:sensors%NSENSOR) = .false.
134 nne = 0
135
136 idsmax = sensors%NSENSOR
137 DO k = 1,idsmax
138 ids = sensors%SENSOR_TAB(k)%SENS_ID
139
140 IF (ids > 0) THEN
141 IF (nsubdom > 0) THEN
143 ENDIF
144
145 n = 0
146 DO j=1,sensors%NSENSOR
147 IF (ids == sensors%SENSOR_TAB(j)%SENS_ID) THEN
148 n = j
149 EXIT
150 ENDIF
151 ENDDO
152 IF (n == 0) THEN
153 CALL fretitl2(titr,ithgrp(nithgr-ltitr+1),ltitr)
154 CALL ancmsg(msgid=257, msgtype=msgwarning, anmode=aninfo_blind_1,
155 . i1=ithgrp(1),
156 . c1=titr,
157 . c2=key,
158 . i2=ids)
159 ELSE
160 IF (.NOT. found(n)) THEN
161 nne = nne + 1
162 nsne = nsne+1
163 ithbuf(iad) = n
164 iad = iad+1
165 found(n) = .true.
166 ELSE
167 CALL fretitl2(titr,ithgrp(nithgr-ltitr+1),ltitr)
168 CALL ancmsg(msgid=256, msgtype=msgwarning, anmode=aninfo_blind_1,
169 . i1=ithgrp(1),
170 . c1=titr,
171 . c2=key,
172 . i2=ids)
173 ENDIF
174 ENDIF
175 ENDIF
176 ENDDO
177
178 ithgrp(4) = nne
179 iad2 = ithgrp(5)+3*nne
180 ithgrp(8) = iad2
181 ifi = ifi+3*nne+40*nne
182 iad = ithgrp(5)
183
184 DEALLOCATE(found)
185
186 CALL hord(ithbuf(iad),nne)
187
188 DO i=1,nne
189 n = ithbuf(iad)
190 ithbuf(iad+2*nne) = sensors%SENSOR_TAB
191 titr = sensors%SENSOR_TAB(n)%TITLE
192
193 CALL fretitl(titr,ithbuf(iad2),40)
194
195 iad = iad + 1
196 iad2= iad2+ 40
197 ENDDO
198
199 iad = iad2
200
201
202
203
205 iad0=ithgrp(7)
206 ithgrp(9)=nvarabf
207 DO j=iad0,iad0+
nvar-1
208 DO k=1,10
209 ithvar((ithgrp(9)+(j-iad0)-1)*10+k)=ichar(vare(ithbuf(j))(k:k))
210 ENDDO
211 ENDDO
212 nvarabf = nvarabf +
nvar
213
214
215
216 n = ithgrp(4)
217 iad1 = ithgrp(5)
219 iad0=ithgrp(7)
220 iad2=ithgrp(8)
221 WRITE(iout,'(//)')
223 WRITE(iout,
'(A,I10,3A,I3,A,I5,2A)'' TH GROUP:',ithgrp(1),
',',trim(titr),
',',
nvar,
' VAR',n, key,
':'
224 WRITE(iout,'(A)')' -------------------'
225 WRITE(iout,'(10A10)')(vare(ithbuf(j
226 WRITE(iout,'(3A)')' ',key,' NAME '
227 DO k=iad1,iad1+n-1
229 iad2=iad2+40
230 WRITE(iout,fmt=fmw_i_a) sensors%SENSOR_TAB(ithbuf
231 ENDDO
232
233
234 ELSE
235
236
238 ithgrp(7) = iad
241 nne = idsmax
242 ithgrp(4 )= nne
243 ithgrp(5) = iad
244 iad2 = iad + 3*nne
245 ithgrp(8) = iad2
246 CALL zeroin(iad,iad + 43*nne-1,ithbuf)
247 ALLOCATE (found(sensors%NSENSOR))
248
249 nne = 0
250
251 DO k = 1,idsmax
253
254
255 IF (ids > 0) THEN
256 IF (nsubdom > 0) THEN
258 ENDIF
259
260 n = 0
261 DO j=1,sensors%NSENSOR
262 IF (ids == sensors%SENSOR_TAB(j)%SENS_ID) THEN
263 n = j
264 EXIT
265 ENDIF
266 ENDDO
267 IF (n == 0) THEN
268 CALL fretitl2(titr,ithgrp(nithgr-ltitr+1),ltitr)
269 CALL ancmsg(msgid=257, msgtype=msgwarning, anmode=aninfo_blind_1,
270 . i1=ithgrp(1),
271 . c1=titr,
272 . c2=key,
273 . i2=ids)
274 ELSE
275 IF (.NOT. found(n)) THEN
276 nne = nne + 1
277 nsne = nsne+1
278 ithbuf(iad) = n
279 iad = iad+1
280 found(n) = .true.
281 ELSE
282 CALL fretitl2(titr,ithgrp(nithgr-ltitr+1),ltitr)
283 CALL ancmsg(msgid=256, msgtype=msgwarning, anmode=aninfo_blind_1,
284 . i1=ithgrp(1),
285 . c1=titr,
286 . c2=key,
287 . i2=ids)
288 ENDIF
289 ENDIF
290 ENDIF
291 ENDDO
292
293 ithgrp(4) = nne
294 iad2 = ithgrp(5)+3*nne
295 ithgrp(8) = iad2
296 ifi = ifi+3*nne+40*nne
297 iad = ithgrp(5)
298
299 DEALLOCATE(found)
300
301 CALL hord(ithbuf(iad),nne)
302
303 DO i=1,nne
304 n = ithbuf(iad)
305 ithbuf(iad+2*nne) = sensors%SENSOR_TAB(n)%SENS_ID
306 titr = sensors%SENSOR_TAB(n)%TITLE
307
308 CALL fretitl(titr,ithbuf(iad2),40)
309
310 iad = iad + 1
311 iad2= iad2+ 40
312 ENDDO
313
314 iad = iad2
315
316
317
318
320 iad0=ithgrp(7)
321 ithgrp(9)=nvarabf
322 DO j=iad0,iad0+
nvar-1
323 DO k=1,10
324 ithvar((ithgrp(9)+(j-iad0)-1)*10+k)=ichar(vare(ithbuf(j))(k:k))
325 ENDDO
326 ENDDO
327 nvarabf = nvarabf +
nvar
328
329
330
331 n = ithgrp(4)
332 iad1 = ithgrp(5)
334 iad0=ithgrp(7)
335 iad2=ithgrp(8)
336 WRITE(iout,'(//)')
337 CALL fretitl2(titr,ithgrp(nithgr-ltitr+1),ltitr)
338 WRITE(iout,
'(A,I10,3A,I3,A,I5,2A)')
' TH GROUP:',ithgrp(1),
',',trim(titr),
',',
nvar,
' VAR',n, key,
':'
339 WRITE(iout,'(A)')' -------------------'
340 WRITE(iout,
'(10A10)')(vare(ithbuf(j)),j=iad0,iad0+
nvar-1)
341 WRITE(iout,'(3A)')' ',key,' NAME '
342 DO k=iad1,iad1+n-1
344 iad2=iad2+40
345 WRITE(iout,fmt=fmw_i_a) sensors%SENSOR_TAB(ithbuf(k))%SENS_ID,titr(1:40)
346 ENDDO
347
348 END IF
349 ENDIF
350
351 RETURN
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
integer function hm_thvarc(vare, nv, ivar, varg, nvg, ivarg, nv0, id, titr, lsubmodel)
subroutine hord(nel, nsel)
integer, parameter nchartitle
integer function nvar(text)
integer function r2r_exist(typ, id)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
subroutine zeroin(n1, n2, ma)