43 . UNITAB ,LSUBMODEL ,KEY ,UNIT_ID ,SENS_ID,
44 . SENSOR_PTR,SENSOR_USER_STRUCT)
53 USE format_mod ,
ONLY : fmt_f
54 USE reader_old_mod ,
ONLY : key0, kcur, kline, line
55 USE user_interface_mod,
only : ksens_cur
59#include "implicit_f.inc"
70 INTEGER ,
INTENT(IN) :: HM_NSENSOR,UNIT_ID ,SENS_ID,ISEN
71 CHARACTER(LEN=ncharkey) :: KEY
72 CHARACTER(LEN=nchartitle) :: TITLE
73 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
74 TYPE (SUBMODEL_DATA) ,
DIMENSION(NSUBMOD) :: LSUBMODEL
75 TYPE (SENSOR_STR_)
INTENT(OUT) :: SENSOR_PTR
76 TYPE(sensor_user_struct_),
INTENT(INOUT) ::
86 LOGICAL :: IS_AVAILABLE
87 LOGICAL :: ALREADY_DONE
89 CHARACTER(LEN=ncharline)
90 CHARACTER (LEN=4) :: CSENS
91 CHARACTER(LEN=4096) :: SCR_FILE_NAME
92 INTEGER SCR_FILE_NAME_LEN
94 CHARACTER(LEN=NCHARLINE) :: IUSER_KEY
102 IF(key(1:5) ==
'USER1')
THEN
104 ELSEIF(key(1:5) ==
'USER2')
THEN
106 ELSEIF(key(1:5) ==
'USER3')
THEN
112 . c2=key(1:len_trim(key)),
117 is_available = .false.
118 already_done = .false.
120 iuser_key = key(1:len_trim(key))
121 IF (userl_avail == 0)
THEN
123 option=
'/SENSOR/'//iuser_key
124 size=len_trim(option)
126 . msgtype=msgerror,c1=option(1:size),anmode=aninfo)
132 CALL hm_get_intv (
'Number_of_datalines' ,nlines ,is_available, lsubmodel)
137 IF ((typ>28.AND.typ<38).AND. .NOT.(already_done) )
CALL sensor_user_alloc(already_done,sensor_user_struct)
140 IF (typ>=29.AND.typ<=31)
THEN
150 ALLOCATE(sensor_ptr%IPARAM(sensor_ptr%NPARI))
151 ALLOCATE(sensor_ptr%RPARAM(sensor_ptr%NPARR))
152 ALLOCATE(sensor_ptr%VAR(sensor_ptr%NVAR))
154 ALLOCATE(sensor_ptr%INTEGER_USERBUF(isenbuf))
155 ALLOCATE(sensor_ptr%FLOAT_USERBUF(lsenbuf))
157 ALLOCATE(sensor_ptr%INTEGER_USERPARAM(nsenpari))
158 ALLOCATE(sensor_ptr%FLOAT_USERPARAM(nsenparr))
161 sensor_ptr%INTEGER_USERBUF(1:isenbuf)=0
162 sensor_ptr%FLOAT_USERBUF(1:lsenbuf)=zero
164 sensor_ptr%INTEGER_USERPARAM(1:nsenpari)=0
165 sensor_ptr%FLOAT_USERPARAM(1:nsenparr)=zero
168 IF (userl_avail==1 .AND. (typ==29.OR.typ==30.OR.typ==31))
THEN
170 WRITE(csens,
'(I4.4)')typ
171 scr_file_name=
'SI'//rootnam(1:rootlen)//
'_'//csens//
'.scr'
172 scr_file_name_len=len_trim(scr_file_name)
173 OPEN(unit=30,file=trim(scr_file_name),form=
'FORMATTED',recl=
ncharline)
177 READ(rline,err=999,fmt=fmt_f)tdel
180 sensor_ptr%TDELAY = tdel
185 WRITE(30,fmt=
'(A)')trim(rline)
191 WRITE (iout,
'(A,I10)')
' SENSOR ID = ', sens_id
194 sensor_ptr%TYPE = typ
198 WRITE (iout,
'(A,/,A,I10)')
' TYPE 29 SENSOR : USER1'
199 WRITE (iout,
'(A,1PG20.13)')
' TIME DELAY BEFORE ACTIVATION . . . . .',tdel
201 sensor_ptr%TSTART = infinity
203 IF (userl_avail==1)
THEN
204 CALL st_userlib_lecsen(typ,rootnam,rootlen)
208 ELSEIF(typ == 30)
THEN
210 WRITE (iout,
'(A,/,A,I10)')
' TYPE 30 SENSOR : USER2'
211 WRITE (iout,
'(A,1PG20.13)')
' TIME DELAY BEFORE ACTIVATION . . . . .',tdel
213 sensor_ptr%TSTART = infinity
215 IF (userl_avail==1)
THEN
216 CALL st_userlib_lecsen(typ,rootnam,rootlen)
220 ELSEIF(typ == 31)
THEN
222 WRITE (iout,
'(A,/,A,I10)')
' TYPE 31 SENSOR : USER3'
223 WRITE (iout,
'(A,1PG20.13)')
' TIME DELAY BEFORE ACTIVATION . . . . .',tdel
225 sensor_ptr%TSTART = infinity
227 IF (userl_avail==1)
THEN
228 CALL st_userlib_lecsen(typ,rootnam,rootlen)
242 sensor_ptr%TYPE = typ
243 sensor_ptr%SENS_ID = sens_id
244 sensor_ptr%STATUS = 0
245 sensor_ptr%TDELAY = tdel
246 sensor_ptr%TSTART = infinity
247 sensor_ptr%TCRIT = infinity
248 sensor_ptr%TMIN = zero
255 999
CALL ancmsg(msgid=55,anmode=aninfo,msgtype=msgerror,c1=key0(kcur),c2=kline,c3=line)
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)