38 . LACCELM ,UNITAB ,LSUBMODEL )
51#include "implicit_f.inc"
60 INTEGER ,
INTENT(IN) :: SENS_ID
61 INTEGER ,
DIMENSION(3,*) ,
INTENT(IN) :: LACCELM
62 CHARACTER(LEN=NCHARTITLE)::TITR
63 TYPE (SENSOR_STR_) :: SENSOR_PTR
64 TYPE (SUBMODEL_DATA) ,
DIMENSION(NSUBMOD) :: LSUBMODEL
65 TYPE (UNIT_TYPE_) ,
INTENT(IN) ::UNITAB
69 INTEGER :: I,J,LEN,NACC,NPARIS,NPARRS,NVAR,SENS_TYPE
71 INTEGER ,
DIMENSION(6) :: ACC_ID,IACC,IDIR
72 my_real ,
DIMENSION(6) :: acc,tmin
73 CHARACTER(LEN=NCHARKEY) :: DIR(6),DIRACC
74 LOGICAL :: IS_AVAILABLE
78 is_available = .false.
81 CALL hm_get_floatv(
'Tdelay' ,tdel ,is_available,lsubmodel,unitab)
82 CALL hm_get_intv (
'NACCEL1',nacc ,is_available,lsubmodel)
84 CALL hm_get_intv (
'IACC1' ,acc_id(1) ,is_available,lsubmodel)
86 CALL hm_get_floatv(
'Tomin1' ,acc(1) ,is_available,lsubmodel,unitab)
87 CALL hm_get_floatv(
'Tmin1' ,tmin(1) ,is_available,lsubmodel,unitab)
89 CALL hm_get_intv (
'IACC2' ,acc_id(2) ,is_available,lsubmodel)
91 CALL hm_get_floatv(
'Tomin2' ,acc(2) ,is_available,lsubmodel,unitab)
92 CALL hm_get_floatv(
'Tmin2' ,tmin(2) ,is_available,lsubmodel,unitab)
94 CALL hm_get_intv (
'IACC3' ,acc_id(3) ,is_available,lsubmodel)
96 CALL hm_get_floatv(
'Tomin3' ,acc(3) ,is_available,lsubmodel,unitab)
99 CALL hm_get_intv (
'IACC4' ,acc_id(4) ,is_available,lsubmodel)
101 CALL hm_get_floatv(
'Tomin4' ,acc(4) ,is_available,lsubmodel,unitab)
102 CALL hm_get_floatv(
'Tmin4' ,tmin(4) ,is_available,lsubmodel,unitab)
104 CALL hm_get_intv (
'IACC5' ,acc_id(5) ,is_available,lsubmodel)
106 CALL hm_get_floatv(
'Tomin5' ,acc(5) ,is_available,lsubmodel,unitab)
107 CALL hm_get_floatv(
'Tmin5' ,tmin(5) ,is_available,lsubmodel,unitab)
109 CALL hm_get_intv (
'IACC6' ,acc_id(6) ,is_available,lsubmodel)
111 CALL hm_get_floatv(
'Tomin6' ,acc(6) ,is_available,lsubmodel,unitab)
112 CALL hm_get_floatv(
'Tmin6' ,tmin(6) ,is_available,lsubmodel,unitab)
117 CALL ancmsg(msgid=44,msgtype=msgerror,anmode=aninfo,
118 . i1=sens_id, c1=titr, i2=nacc)
125 IF (acc_id(i) == laccelm(2,j))
THEN
130 IF (iacc(i) == 0)
THEN
131 CALL ancmsg(msgid=45, msgtype=msgerror, anmode=aninfo_blind_2,
132 . i1=sens_id, c1=titr, i2=acc_id(i))
138 len = len_trim(dir(i))
139 diracc = dir(i)(1:len)
140 IF (diracc(1:1) ==
'X' .OR. diracc(1:1) ==
'x') idir(i) = idir(i)+1
141 IF (diracc(1:1) ==
'Y' .OR. diracc(1:1) ==
'y') idir(i) = idir(i)+2
142 IF (diracc(1:1) ==
'Z' .OR. diracc(1:1) ==
'z') idir(i) = idir(i)+4
146 sensor_ptr%TYPE = sens_type
147 sensor_ptr%SENS_ID = sens_id
148 sensor_ptr%STATUS = 0
149 sensor_ptr%TSTART = infinity
150 sensor_ptr%TCRIT = infinity
151 sensor_ptr%TMIN = zero
152 sensor_ptr%TDELAY = tdel
153 sensor_ptr%VALUE = zero
155 nparis = nacc * 2 + 1
159 sensor_ptr%NPARI = nparis
160 sensor_ptr%NPARR = nparrs
161 sensor_ptr%NVAR = nvar
163 ALLOCATE (sensor_ptr%IPARAM(nparis))
164 ALLOCATE (sensor_ptr%RPARAM(nparrs))
165 ALLOCATE (sensor_ptr%VAR(nvar))
166 sensor_ptr%VAR(:) = zero
168 sensor_ptr%IPARAM(1) = nacc
171 sensor_ptr%IPARAM(j+1) = iacc(i)
172 sensor_ptr%IPARAM(j+2) = idir(i)
177 sensor_ptr%RPARAM(j+1) = acc(i)
178 sensor_ptr%RPARAM(j+2) = tmin(i)
179 sensor_ptr%RPARAM(j+3) = infinity
183 WRITE(iout, 1000) sens_id,tdel
184 WRITE(iout, 2000) nacc
186 WRITE(iout, 3000) acc_id(i),idir(i),acc(i),tmin(i)
190 . 5x,
' SENSOR TYPE 1: ACCELEROMETER '/,
191 . 5x,
' ----------------------------- '/,
192 . 5x,
'SENSOR ID. . . . . . . . . . . . . . . . .=',i10/
193 . 5x,
'TIME DELAY BEFORE ACTIVATION . . . . . . .=',e12.4)
195 . 5x,
'NUMBER OF ACCELEROMETERS . . . . . . . . .=',i10)
197 . 5x,
' ACCELEROMETER ID. . . . . . . . . . . .=',i10/
198 . 5x,
' DIRECTION . . . . . . . . . . . . . . .=',i10/
199 . 5x,
' MINIMUM ACCELERATION FOR ACTIVATION . .=',e12.4/
200 . 5x,
' MINIMUM ACC. DURATION FOR ACTIVATION .=',e12.4/)
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)