39
40
41
45 USE sensor_mod
48
49
50
51#include "implicit_f.inc"
52
53
54
55#include "com04_c.inc"
56#include "units_c.inc"
57
58
59
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
66
67
68
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
75
76
77
78 is_available = .false.
79 sens_type = 1
80
81 CALL hm_get_floatv(
'Tdelay' ,tdel ,is_available,lsubmodel,unitab)
82 CALL hm_get_intv (
'NACCEL1',nacc ,is_available,lsubmodel)
83
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)
88
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)
93
94 CALL hm_get_intv (
'IACC3' ,acc_id(3) ,is_available,lsubmodel)
96 CALL hm_get_floatv(
'Tomin3' ,acc(3) ,is_available,lsubmodel,unitab)
97 CALL hm_get_floatv(
'Tmin3' ,tmin(3) ,is_available,lsubmodel,unitab)
98
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)
103
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)
108
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)
113
114
115
116 IF (nacc > 6) THEN
117 CALL ancmsg(msgid=44,msgtype=msgerror,anmode=aninfo
118 . i1=sens_id, c1=titr, i2=nacc)
120 ENDIF
121
122 iacc(:) = 0
123 DO i = 1,nacc
124 DO j = 1,naccelm
125 IF (acc_id(i) == laccelm(2,j)) THEN
126 iacc(i) = j
127 EXIT
128 ENDIF
129 END DO
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))
133 END IF
134 END DO
135
136 DO i = 1,nacc
137 idir(i) = 0
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
143 END DO
144
145
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
154
155 nparis = nacc * 2 + 1
156 nparrs = nacc * 3
158
159 sensor_ptr%NPARI = nparis
160 sensor_ptr%NPARR = nparrs
161 sensor_ptr%NVAR =
nvar
162
163 ALLOCATE (sensor_ptr%IPARAM(nparis))
164 ALLOCATE (sensor_ptr%RPARAM(nparrs))
165 ALLOCATE (sensor_ptr%VAR(
nvar))
166 sensor_ptr%VAR(:) = zero
167
168 sensor_ptr%IPARAM(1) = nacc
169 j = 1
170 DO i = 1,nacc
171 sensor_ptr%IPARAM(j+1) = iacc(i)
172 sensor_ptr%IPARAM(j+2) = idir(i)
173 j = j+2
174 END DO
175 j = 0
176 DO i = 1,nacc
177 sensor_ptr%RPARAM(j+1) = acc(i)
178 sensor_ptr%RPARAM(j+2) = tmin(i)
179 sensor_ptr%RPARAM(j+3) = infinity
180 j = j+3
181 END DO
182
183 WRITE(iout, 1000) sens_id,tdel
184 WRITE(iout, 2000) nacc
185 DO i = 1,nacc
186 WRITE(iout, 3000) acc_id(i),idir(i),acc(i),tmin(i)
187 END DO
188
189 1000 FORMAT(
190 . 5x,' SENSOR TYPE 1: ACCELEROMETER '/,
191 . 5x,' ----------------------------- '/,
192 . 5x,'SENSOR ID. . . . . . . . . . . . . . . . .=',i10/
193 . 5x,'TIME DELAY BEFORE ACTIVATION . . . . . . .=',e12.4)
194 2000 FORMAT(
195 . 5x,'NUMBER OF ACCELEROMETERS . . . . . . . . .=',i10)
196 3000 FORMAT(
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/)
201
202 RETURN
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_get_string(name, sval, size, is_available)
integer, parameter nchartitle
integer, parameter ncharkey
integer, parameter ncharfield
integer function nvar(text)
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)