63 . SENSORS ,LACCELM ,ITABM1 ,IPART ,LGAUGE ,
64 . SUBSET ,NSETS ,IGRNOD ,
65 . ISKWN ,UNITAB ,LSUBMODEL ,HM_NSENS ,
80 USE read_sensor_python_mod,
ONLY : read_sensor_python
85#include "implicit_f.inc"
96 TYPE(python_),
intent(inout) :: PYTHON
97 INTEGER ,
INTENT(IN) :: NSETS
98 INTEGER ,
INTENT(OUT) :: HM_NSENS
99 INTEGER ,
DIMENSION(*) ,
INTENT(IN) :: ITABM1
100 INTEGER ,
DIMENSION(3,*) ,
INTENT(IN) :: LACCELM,LGAUGE
101 INTEGER ,
DIMENSION(LISKN,*) ,
INTENT(IN) :: ISKWN
102 INTEGER ,
DIMENSION(LIPART1,*) ,
INTENT(IN) :: IPART
103 TYPE (SENSORS_) ,
INTENT(INOUT) ,
TARGET :: SENSORS
104 TYPE (GROUP_) ,
DIMENSION(NGRNOD) :: IGRNOD
105 TYPE (SUBSET_) ,
DIMENSION(NSUBS) :: SUBSET
106 TYPE (SUBMODEL_DATA) ,
DIMENSION(NSUBMOD) :: LSUBMODEL
107 TYPE (UNIT_TYPE_) ,
INTENT(IN) ::UNITAB
108 TYPE(sensor_user_struct_) ,
INTENT(INOUT) :: SENSOR_USER_STRUCT
112 INTEGER ISEN,IUNIT,IFLAGUNIT,NS,UNIT_ID,SENS_ID
114 CHARACTER(LEN=NCHARTITLE) :: TITR
115 CHARACTER KEY*40,MESS*40
116 INTEGER ,
DIMENSION(:) ,
ALLOCATABLE :: SID
117 TYPE(python_function),
DIMENSION(:),
ALLOCATABLE :: temp
118 DATA mess/
'SENSOR DEFINITION '/
125 call python_initialize(python_error)
126 if(.not.
allocated(python%functs))
then
127 allocate(python%functs(ns))
129 allocate(temp(python%nb_functs + ns))
130 temp(1:python%nb_functs) = python%functs
131 CALL move_alloc(from=temp,to=python%functs)
134 IF (hm_nsens > 0)
THEN
135 WRITE(istdo,
'(A)')
' .. SENSORS'
136 WRITE (iout,
'(///,A)')
' SENSORS'
137 WRITE (iout,
'(A/)')
' -------'
140 IF (
ALLOCATED(sensors%SENSOR_TAB))
DEALLOCATE(sensors%SENSOR_TAB)
141 ALLOCATE(sensors%SENSOR_TAB(hm_nsens))
142 CALL my_alloc (sid,hm_nsens)
143 sensors%NSENSOR = hm_nsens
154 . option_id = sens_id,
155 . option_titr = titr ,
156 . unit_id = unit_id ,
162 DO iunit=1,unitab%NUNITS
163 IF (unitab%UNIT_ID(iunit) == unit_id)
THEN
168 IF (unit_id > 0 .AND. iflagunit == 0)
THEN
169 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
170 . i2=unit_id,i1=sens_id,
171 . c1=
'SENSOR', c2=
'SENSOR', c3=
'TITR')
174 key = key(1:len_trim(key))
178 CASE (
'TIME' ,
'TYPE0')
181 CASE (
'ACCE' ,
'TYPE1')
183 . laccelm ,unitab ,lsubmodel)
185 CASE (
'DIST' ,
'TYPE2')
187 . itabm1 ,unitab ,lsubmodel)
189 CASE (
'SENS' ,
'TYPE3')
192 CASE (
'AND' ,
'TYPE4')
193 CALL read_sensor_and(sensors%SENSOR_TAB(isen) ,sens_id ,unitab ,lsubmodel)
196 CALL read_sensor_or(sensors%SENSOR_TAB(isen) ,sens_id ,unitab ,lsubmodel)
198 CASE (
'INTER' ,
'TYPE6')
202 CASE (
'RWALL' ,
'TYPE7')
206 CASE (
'NOT' ,
'TYPE8')
207 CALL read_sensor_not(sensors%SENSOR_TAB(isen) ,sens_id ,unitab ,lsubmodel)
209 CASE (
'VEL' ,
'TYPE9')
211 . itabm1 ,unitab ,lsubmodel)
213 CASE (
'GAUGE' ,
'TYPE10')
215 . lgauge ,unitab ,lsubmodel)
217 CASE (
'RBODY' ,
'TYPE11')
221 CASE (
'SECT' ,
'TYPE12')
225 CASE (
'WORK' ,
'TYPE13')
227 . itabm1 ,unitab ,lsubmodel)
229 CASE (
'ENERGY' ,
'TYPE14')
231 . ipart ,subset ,unitab ,lsubmodel)
233 CASE (
'DIST_SURF' ,
'TYPE15')
235 . itabm1 ,unitab ,lsubmodel)
237 CASE (
'HIC' ,
'TYPE16')
239 . laccelm ,unitab ,lsubmodel)
243 . igrnod ,unitab ,lsubmodel)
247 . sensors%SENSOR_TAB(isen) ,sens_id ,titr ,iskwn ,
248 . unitab ,lsubmodel )
250 CASE (
'USER1' ,
'USER2',
'USER3')
252 sensors%SENSOR_TAB(isen)%TSTART = infinity
255 . unitab ,lsubmodel ,key ,unit_id ,sens_id ,
256 . sensors%SENSOR_TAB(isen),sensor_user_struct)
257 sensors%SENSOR_TAB(isen)%SENS_ID = sens_id
259 CALL read_sensor_python(python,
260 . sensors%SENSOR_TAB(isen) ,sens_id , lsubmodel )
263 CALL ancmsg(msgid=43, anmode=aninfo, msgtype=msgerror,
264 . c2=key(1:len_trim(key)),
269 sensors%SENSOR_TAB(isen)%TITLE = titr
275 DO isen = 1,sensors%NSENSOR
276 IF (sensors%SENSOR_TAB(isen)%SENS_ID > 0)
THEN
277 sid(isen) = sensors%SENSOR_TAB(isen)%SENS_ID
280 CALL udouble(sid,1,sensors%NSENSOR,mess,0,bid)
subroutine read_sensor_rbody(sensor_ptr, sens_id, titr, unitab, lsubmodel)
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)