64 . SENSORS ,LACCELM ,ITABM1 ,IPART ,LGAUGE ,
65 . SUBSET ,NSETS ,IGRSURF ,IGRNOD ,BUFSF ,
66 . SKEW ,ISKWN ,UNITAB ,LSUBMODEL ,HM_NSENS ,
81 USE read_sensor_python_mod,
ONLY : read_sensor_python
86#include "implicit_f.inc"
97 TYPE(python_),
intent(inout) :: PYTHON
98 INTEGER ,
INTENT(IN) :: NSETS
99 INTEGER ,
INTENT(OUT) :: HM_NSENS
100 INTEGER ,
DIMENSION(*) ,
INTENT(IN) :: ITABM1
101 INTEGER ,
DIMENSION(3,*) ,
INTENT(IN) :: LACCELM,LGAUGE
102 INTEGER ,
DIMENSION(LISKN,*) ,
INTENT(IN) :: ISKWN
103 INTEGER ,
DIMENSION(LIPART1,*) ,
INTENT(IN) :: IPART
104 my_real ,
DIMENSION(LSKEW,*) :: skew
106 TYPE (SENSORS_) ,
INTENT(INOUT) ,
TARGET :: SENSORS
107 TYPE (SURF_) ,
DIMENSION(NSURF+NSETS) :: IGRSURF
108 TYPE (GROUP_) ,
DIMENSION(NGRNOD) :: IGRNOD
109 TYPE (SUBSET_) ,
DIMENSION(NSUBS) :: SUBSET
110 TYPE (SUBMODEL_DATA) ,
DIMENSION(NSUBMOD) :: LSUBMODEL
111 TYPE (UNIT_TYPE_) ,
INTENT(IN) ::UNITAB
112 TYPE(sensor_user_struct_) ,
INTENT(INOUT) :: SENSOR_USER_STRUCT
120 INTEGER ISEN,IUNIT,IFLAGUNIT,NS,TYP,UNIT_ID,SENS_ID
122 CHARACTER(LEN=NCHARTITLE) :: TITR
123 CHARACTER KEY*40,MESS*40
124 INTEGER ,
DIMENSION(:) ,
ALLOCATABLE :: SID
125 TYPE(python_function),
DIMENSION(:),
ALLOCATABLE :: temp
126 DATA mess/
'SENSOR DEFINITION '/
133 call python_initialize(python_error)
134 if(.not.
allocated(python%functs))
then
135 allocate(python%functs(ns))
137 allocate(temp(python%nb_functs + ns))
138 temp(1:python%nb_functs) = python%functs
139 CALL move_alloc(from=temp,to=python%functs)
142 IF (hm_nsens > 0)
THEN
143 WRITE(istdo,
'(A)')
' .. SENSORS'
144 WRITE (iout,
'(///,A)')
' SENSORS'
145 WRITE (iout,
'(A/)')
' -------'
148 IF (
ALLOCATED(sensors%SENSOR_TAB))
DEALLOCATE(sensors%SENSOR_TAB)
149 ALLOCATE(sensors%SENSOR_TAB(hm_nsens))
150 CALL my_alloc (sid,hm_nsens)
151 sensors%NSENSOR = hm_nsens
162 . option_id = sens_id,
163 . option_titr = titr ,
164 . unit_id = unit_id ,
170 DO iunit=1,unitab%NUNITS
171 IF (unitab%UNIT_ID(iunit) == unit_id)
THEN
176 IF (unit_id > 0 .AND. iflagunit == 0)
THEN
177 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
178 . i2=unit_id,i1=sens_id,
179 . c1=
'SENSOR', c2=
'SENSOR', c3=
'TITR')
182 key = key(1:len_trim(key))
186 CASE (
'TIME' ,
'TYPE0')
189 CASE (
'ACCE' ,
'TYPE1')
191 . laccelm ,unitab ,lsubmodel)
193 CASE (
'DIST' ,
'TYPE2')
195 . itabm1 ,unitab ,lsubmodel)
197 CASE (
'SENS' ,
'TYPE3')
200 CASE (
'AND' ,
'TYPE4')
201 CALL read_sensor_and(sensors%SENSOR_TAB(isen) ,sens_id ,unitab ,lsubmodel)
204 CALL read_sensor_or(sensors%SENSOR_TAB(isen) ,sens_id ,unitab ,lsubmodel)
206 CASE (
'INTER' ,
'TYPE6')
210 CASE (
'RWALL' ,
'TYPE7')
214 CASE (
'NOT' ,
'TYPE8')
215 CALL read_sensor_not(sensors%SENSOR_TAB(isen) ,sens_id ,unitab ,lsubmodel)
217 CASE (
'VEL' ,
'TYPE9')
219 . itabm1 ,unitab ,lsubmodel)
221 CASE (
'GAUGE' ,'type10
')
222 CALL READ_SENSOR_GAUGE(SENSORS%SENSOR_TAB(ISEN) ,SENS_ID ,TITR ,
223 . LGAUGE ,UNITAB ,LSUBMODEL)
225 CASE ('rbody
' ,'type11
')
226 CALL READ_SENSOR_RBODY(SENSORS%SENSOR_TAB(ISEN) ,SENS_ID ,TITR ,
229 CASE ('sect
' ,'type12
')
230 CALL READ_SENSOR_SECT(SENSORS%SENSOR_TAB(ISEN) ,SENS_ID ,TITR ,
233 CASE ('work
' ,'type13
')
234 CALL READ_SENSOR_WORK(SENSORS%SENSOR_TAB(ISEN) ,SENS_ID ,
235 . ITABM1 ,UNITAB ,LSUBMODEL)
237 CASE ('energy
' ,'type14
')
238 CALL READ_SENSOR_ENERGY(SENSORS%SENSOR_TAB(ISEN) ,SENS_ID ,TITR ,
239 . IPART ,SUBSET ,UNITAB ,LSUBMODEL)
241 CASE ('dist_surf
' ,'type15
')
242 CALL READ_SENSOR_DIST_SURF(SENSORS%SENSOR_TAB(ISEN) ,SENS_ID ,
243 . ITABM1 ,UNITAB ,LSUBMODEL)
245 CASE ('hic
' ,'type16
')
246 CALL READ_SENSOR_HIC(SENSORS%SENSOR_TAB(ISEN) ,SENS_ID ,TITR ,
247 . LACCELM ,UNITAB ,LSUBMODEL)
250 CALL READ_SENSOR_TEMP(SENSORS%SENSOR_TAB(ISEN) ,SENS_ID ,TITR ,
251 . IGRNOD ,UNITAB ,LSUBMODEL)
254 CALL READ_SENSOR_NIC(
255 . SENSORS%SENSOR_TAB(ISEN) ,SENS_ID ,TITR ,ISKWN ,
256 . UNITAB ,LSUBMODEL )
258 CASE ('user1
' ,'user2
','user3
')
260 SENSORS%SENSOR_TAB(ISEN)%TSTART = INFINITY
262 CALL READ_SENSOR_USER(HM_NSENS ,ISEN ,TITR,
263 . UNITAB ,LSUBMODEL ,KEY ,UNIT_ID ,SENS_ID ,
264 . SENSORS%SENSOR_TAB(ISEN),SENSOR_USER_STRUCT)
265 SENSORS%SENSOR_TAB(ISEN)%SENS_ID = SENS_ID
267 CALL READ_SENSOR_PYTHON(PYTHON,
268 . SENSORS%SENSOR_TAB(ISEN) ,SENS_ID , LSUBMODEL )
271 CALL ANCMSG(MSGID=43, ANMODE=ANINFO, MSGTYPE=MSGERROR,
272 . C2=KEY(1:LEN_TRIM(KEY)),
277 SENSORS%SENSOR_TAB(ISEN)%TITLE = TITR
283 DO ISEN = 1,SENSORS%NSENSOR
284 IF (SENSORS%SENSOR_TAB(ISEN)%SENS_ID > 0) THEN
285 SID(ISEN) = SENSORS%SENSOR_TAB(ISEN)%SENS_ID
288 CALL UDOUBLE(SID,1,SENSORS%NSENSOR,MESS,0,BID)
subroutine hm_option_count(entity_type, hm_option_number)
subroutine hm_option_start(entity_type)
subroutine hm_read_sensors(python, sensors, laccelm, itabm1, ipart, lgauge, subset, nsets, igrsurf, igrnod, bufsf, skew, iskwn, unitab, lsubmodel, hm_nsens, sensor_user_struct)
integer, parameter nchartitle
subroutine read_sensor_acc(sensor_ptr, sens_id, titr, laccelm, unitab, lsubmodel)
subroutine read_sensor_and(sensor_ptr, sens_id, unitab, lsubmodel)
subroutine read_sensor_disp(sensor_ptr, sens_id, itabm1, unitab, lsubmodel)
subroutine read_sensor_not(sensor_ptr, sens_id, unitab, lsubmodel)
subroutine read_sensor_or(sensor_ptr, sens_id, unitab, lsubmodel)
subroutine read_sensor_rwall(sensor_ptr, sens_id, titr, unitab, lsubmodel)
subroutine read_sensor_sens(sensor_ptr, sens_id, unitab, lsubmodel)
subroutine read_sensor_time(sensor_ptr, sens_id, unitab, lsubmodel)
subroutine read_sensor_vel(sensor_ptr, sens_id, itabm1, unitab, lsubmodel)
subroutine sensor_tab_init(sensors)
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)