OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
read_sensor_hic.F File Reference
#include "implicit_f.inc"
#include "com04_c.inc"
#include "units_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine read_sensor_hic (sensor_ptr, sens_id, titr, laccelm, unitab, lsubmodel)

Function/Subroutine Documentation

◆ read_sensor_hic()

subroutine read_sensor_hic ( type (sensor_str_), intent(inout) sensor_ptr,
integer, intent(in) sens_id,
character (len=nchartitle) titr,
integer, dimension(3,*), intent(in) laccelm,
type (unit_type_), intent(in) unitab,
type (submodel_data), dimension(nsubmod) lsubmodel )

Definition at line 38 of file read_sensor_hic.F.

40C-----------------------------------------------
41C M o d u l e s
42C-----------------------------------------------
43 USE unitab_mod
44 USE message_mod
45 USE submodel_mod
46 USE sensor_mod
49 USE format_mod , ONLY : lfield
50C-----------------------------------------------
51C I m p l i c i t T y p e s
52C-----------------------------------------------
53#include "implicit_f.inc"
54C-----------------------------------------------
55C C o m m o n B l o c k s
56C-----------------------------------------------
57#include "com04_c.inc"
58#include "units_c.inc"
59C-----------------------------------------------
60C D u m m y A r g u m e n t s
61C-----------------------------------------------
62 INTEGER ,INTENT(IN) :: SENS_ID
63 INTEGER ,DIMENSION(3,*) ,INTENT(IN) :: LACCELM
64 CHARACTER (len=nchartitle) TITR
65 TYPE (SENSOR_STR_) ,INTENT(INOUT) :: SENSOR_PTR
66 TYPE (SUBMODEL_DATA) ,DIMENSION(NSUBMOD) :: LSUBMODEL
67 TYPE (UNIT_TYPE_) ,INTENT(IN) ::UNITAB
68C-----------------------------------------------
69C L o c a l V a r i a b l e s
70C-----------------------------------------------
71 INTEGER :: K,SENS_TYPE,INP_FLAG,ACC_ID,IACC,IDIR,
72 . NPOINT,NPARIS,NPARRS,NVAR
73 my_real :: tdel,period,hic_crit,def_gravity,gravity,tmin,
74 . fac_grav,time_unit
75 CHARACTER(LEN=NCHARKEY) :: DIR
76 LOGICAL :: IS_AVAILABLE
77 DATA def_gravity/9.80665/
78C--------------------------------
79C SENSOR BASED ON HEAD INJURY INDEX CRITERION
80C=======================================================================
81 is_available = .false.
82c
83 sens_type = 16
84 inp_flag = 1 ! input is accelerometer ID (instead of node ID)
85 npoint = 200 ! default value
86c--------------------------------------------------
87card1
88 CALL hm_get_floatv('Tdelay' ,tdel ,is_available,lsubmodel,unitab)
89card2
90 CALL hm_get_intv ('IACC1' ,acc_id ,is_available,lsubmodel)
91 CALL hm_get_string('DIR ' ,dir ,ncharfield,is_available)
92card3
93 CALL hm_get_floatv('HIC_Period' ,period ,is_available,lsubmodel,unitab)
94 CALL hm_get_floatv('HIC_Value' ,hic_crit ,is_available,lsubmodel,unitab)
95 CALL hm_get_floatv('HIC_Gravity' ,gravity ,is_available,lsubmodel,unitab)
96 CALL hm_get_floatv('Tmin' ,tmin ,is_available,lsubmodel,unitab)
97c--------------------------------------------------
98c Check input data
99c--------------------------------------------------
100 iacc = 0
101 IF (acc_id > 0) THEN
102 DO k =1,naccelm
103 IF (acc_id == laccelm(2,k))THEN
104 iacc = k
105 EXIT
106 ENDIF
107 ENDDO
108 END IF
109 IF (iacc == 0) THEN
110 CALL ancmsg(msgid=45, msgtype=msgerror, anmode=aninfo_blind_2,
111 . i1=sens_id,
112 . c1=titr,
113 . i2=iacc)
114 END IF
115c--------------------
116 idir = 0
117 DO k = 1,lfield
118 IF (dir(k:k) == 'R' .or .dir(k:k) == 'r') THEN
119 idir = 1
120 dir(1:1) = 'R'
121 ELSE IF (dir(k:k) == 'X' .or .dir(k:k) == 'x') THEN
122 idir = 2
123 dir(1:1) = 'X'
124 ELSE IF (dir(k:k) == 'Y' .or .dir(k:k) == 'y') THEN
125 idir = 3
126 dir(1:1) = 'Y'
127 ELSE IF (dir(k:k) == 'Z' .or .dir(k:k) == 'z') THEN
128 idir = 4
129 dir(1:1) = 'Z'
130 END IF
131 IF (idir > 0) THEN
132 dir(1:1) = dir(k:k)
133 EXIT
134 END IF
135 ENDDO
136 IF (idir == 0) THEN
137 dir(1:1) = 'R'
138 idir = 1
139 END IF
140c--------------------
141 IF (gravity == zero) THEN
142 fac_grav = unitab%FAC_T_WORK**2 / unitab%FAC_L_WORK
143 gravity = def_gravity * fac_grav
144 END IF
145 IF (hic_crit == zero) hic_crit = infinity
146 IF (period == zero) THEN
147 period = 0.036 ! m/s
148 period = period / unitab%FAC_T_WORK
149 END IF
150c
151 time_unit = unitab%FAC_T_WORK
152c-------------------------------
153 sensor_ptr%TYPE = sens_type
154 sensor_ptr%SENS_ID = sens_id
155 sensor_ptr%STATUS = 0 ! status = deactivated
156 sensor_ptr%TSTART = infinity
157 sensor_ptr%TCRIT = infinity
158 sensor_ptr%TMIN = tmin
159 sensor_ptr%TDELAY = tdel ! time delay before activation
160 sensor_ptr%VALUE = zero
161c
162 nparis = 4
163 nparrs = 4
164 nvar = 4 + npoint
165c
166 sensor_ptr%NPARI = nparis
167 sensor_ptr%NPARR = nparrs
168 sensor_ptr%NVAR = nvar
169c
170 ALLOCATE (sensor_ptr%IPARAM(nparis))
171 ALLOCATE (sensor_ptr%RPARAM(nparrs))
172 ALLOCATE (sensor_ptr%VAR(nvar))
173 sensor_ptr%VAR(:) = zero
174c
175 sensor_ptr%IPARAM(1) = inp_flag
176 sensor_ptr%IPARAM(2) = iacc
177 sensor_ptr%IPARAM(3) = npoint
178 sensor_ptr%IPARAM(4) = idir
179c
180 sensor_ptr%RPARAM(1) = period
181 sensor_ptr%RPARAM(2) = hic_crit
182 sensor_ptr%RPARAM(3) = gravity
183 sensor_ptr%RPARAM(4) = time_unit
184c-----------------------------------------------------------------------
185 WRITE (iout, 1000) sens_id,tdel
186 WRITE (iout, 2000) acc_id,dir(1:1),tdel,period,hic_crit,tmin,gravity
187c-----------------------------------------------------------------------
188 1000 FORMAT(
189 . 5x,' SENSOR TYPE 16: HIC '/,
190 . 5x,' ------------------- '/,
191 . 5x,'SENSOR ID. . . . . . . . . . . . . . . . .=',i10/
192 . 5x,'TIME DELAY BEFORE ACTIVATION . . . . . . .=',e12.4)
193 2000 FORMAT(
194 . 5x,'ACCELEROMETER ID . . . . . . . . . . . . =',i10/
195 . 5x,'DIRECTION. . . . . . . . . . . . . . . . =',a10/
196 . 5x,'TIME DELAY BEFORE ACTIVATION . . . . . . =',e12.4/
197 . 5x,'HIC PERIOD . . . . . . . . . . . . . . . =',e12.4/,
198 . 5x,'HIC CRITERION. . . . . . . . . . . . . . =',e12.4/,
199 . 5x,'HIC DURATION TO ACTIVATE . . . . . . . . =',e12.4/,
200 . 5x,'GRAVITY VALUE. . . . . . . . . . . . . . =',e12.4//)
201c-----------
202 RETURN
#define my_real
Definition cppsort.cpp:32
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 ncharkey
integer, parameter ncharfield
integer function nvar(text)
Definition nvar.F:32
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)
Definition message.F:889