OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
read_sensor_nic.F File Reference
#include "implicit_f.inc"
#include "param_c.inc"
#include "tabsiz_c.inc"
#include "com04_c.inc"
#include "sphcom.inc"
#include "units_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine read_sensor_nic (sensor_ptr, sens_id, titr, iskn, unitab, lsubmodel)

Function/Subroutine Documentation

◆ read_sensor_nic()

subroutine read_sensor_nic ( type (sensor_str_), intent(out) sensor_ptr,
integer, intent(in) sens_id,
character(len=nchartitle) titr,
integer, dimension(liskn,siskwn), intent(in) iskn,
type (unit_type_), intent(in) unitab,
type (submodel_data), dimension(nsubmod) lsubmodel )

Definition at line 36 of file read_sensor_nic.F.

39C-----------------------------------------------
40C M o d u l e s
41C-----------------------------------------------
42 USE unitab_mod
43 USE message_mod
44 USE groupdef_mod
45 USE submodel_mod
46 USE sensor_mod
49C-----------------------------------------------
50C I m p l i c i t T y p e s
51C-----------------------------------------------
52#include "implicit_f.inc"
53C-----------------------------------------------
54C C o m m o n B l o c k s
55C-----------------------------------------------
56#include "param_c.inc"
57#include "tabsiz_c.inc"
58#include "com04_c.inc"
59#include "sphcom.inc"
60#include "units_c.inc"
61C-----------------------------------------------
62C D u m m y A r g u m e n t s
63C-----------------------------------------------
64 INTEGER ,INTENT(IN) :: SENS_ID
65 INTEGER ,DIMENSION(LISKN,SISKWN) ,INTENT(IN) :: ISKN
66 CHARACTER(LEN=NCHARTITLE) :: TITR
67 TYPE (SENSOR_STR_) ,INTENT(OUT) :: SENSOR_PTR
68 TYPE (SUBMODEL_DATA) ,DIMENSION(NSUBMOD) :: LSUBMODEL
69 TYPE (SUBSET_) ,DIMENSION(NSUBS) :: SUBSET
70 TYPE (UNIT_TYPE_) ,INTENT(IN) :: UNITAB
71C-----------------------------------------------
72C L o c a l V a r i a b l e s
73C-----------------------------------------------
74 INTEGER :: I,SENS_TYPE,SPRING_ID,SKEW_ID,ISK,NPOINT,IDIR1,IDIR2,
75 . NPARIS,NPARRS,NVAR
76 my_real :: tdel,tmin,nijmax,ftens,fcomp,mflex,mext,alpha,cfc,
77 . fac_forc,fac_mom
78 CHARACTER(LEN=NCHARFIELD) :: F_DIR, M_DIR
79 LOGICAL :: IS_AVAILABLE
80c--------------------------------
81c SENSOR BASED ON NECK INJURY CRITERION FOR SAFETY
82c=======================================================================
83 is_available = .false.
84 sens_type = 19
85 idir1 = 0
86 idir2 = 0
87c--------------------------------------------------
88card1
89 CALL hm_get_floatv('Tdelay' ,tdel ,is_available,lsubmodel,unitab)
90card2
91 CALL hm_get_floatv('NIJ_max' ,nijmax ,is_available,lsubmodel,unitab)
92 CALL hm_get_floatv('Fint_tens' ,ftens ,is_available,lsubmodel,unitab)
93 CALL hm_get_floatv('Fint_comp' ,fcomp ,is_available,lsubmodel,unitab)
94 CALL hm_get_floatv('Mint_flex' ,mflex ,is_available,lsubmodel,unitab)
95 CALL hm_get_floatv('Mint_ext' ,mext ,is_available,lsubmodel,unitab)
96card3
97 CALL hm_get_intv ('Spring_Id' ,spring_id ,is_available,lsubmodel)
98 CALL hm_get_intv ('Skew_Id' ,skew_id ,is_available,lsubmodel)
99 CALL hm_get_string('Ax_Dir' ,f_dir ,ncharfield,is_available)
100 CALL hm_get_string('Bend_Dir' ,m_dir ,ncharfield,is_available)
101card4
102 CALL hm_get_floatv('Tmin' ,tmin ,is_available,lsubmodel,unitab)
103 CALL hm_get_floatv('Alpha' ,alpha ,is_available,lsubmodel,unitab)
104 CALL hm_get_floatv('CFC' ,cfc ,is_available,lsubmodel,unitab)
105c
106c--------------------------------------------------
107c Check input and default values
108c--------------------------------------------------
109 IF (f_dir(1:1) == 'X' .or. f_dir(1:1) == 'x') idir1 = 1
110 IF (f_dir(1:1) == 'Y' .or. f_dir(1:1) == 'y') idir1 = 2
111 IF (f_dir(1:1) == 'Z' .or. f_dir(1:1) == 'z') idir1 = 3
112 IF (m_dir(1:1) == 'X' .or. m_dir(1:1) == 'x') idir2 = 1
113 IF (m_dir(1:1) == 'Y' .or. m_dir(1:1) == 'y') idir2 = 2
114 IF (m_dir(1:1) == 'Z' .or. m_dir(1:1) == 'z') idir2 = 3
115 IF (idir1 == 0) THEN
116 idir1 = 3
117 f_dir = 'Z'
118 END IF
119 IF (idir2 == 0) THEN
120 idir1 = 2
121 m_dir = 'Y'
122 END IF
123c
124 isk = 0
125 IF (skew_id > 0) THEN
126 DO i = 0,numskw+min(1,nspcond)*numsph+nsubmod
127 IF (skew_id == iskn(4,i+1)) THEN
128 isk = i+1
129 EXIT
130 ENDIF
131 ENDDO
132 END IF
133 fac_forc = unitab%FAC_M_WORK * unitab%FAC_L_WORK / unitab%FAC_T_WORK**2
134 fac_mom = fac_forc * unitab%FAC_L_WORK
135 IF (ftens == 0) ftens = 6806.0 / fac_forc
136 IF (fcomp == 0) fcomp = 6160.0 / fac_forc
137 IF (mflex == 0) mflex = 310.0 / fac_mom
138 IF (mext == 0) mext = 135.0 / fac_mom
139 IF (alpha == 0) alpha = 2.0775
140 IF (cfc == zero) cfc = 600.0 * unitab%FAC_T_WORK
141c--------------------------------------------------
142c sensor data structure
143c--------------------------------------------------
144 npoint = 5
145 nparis = 6 ! int value parameters
146 nparrs = 7 ! real value parameters
147 nvar = npoint*4 + 5 ! internal variables
148c
149 ALLOCATE (sensor_ptr%IPARAM(nparis))
150 ALLOCATE (sensor_ptr%RPARAM(nparrs))
151 ALLOCATE (sensor_ptr%VAR(nvar))
152 sensor_ptr%VAR(:) = zero
153
154 sensor_ptr%NVAR = nvar
155 sensor_ptr%NPARI = nparis
156 sensor_ptr%NPARR = nparrs
157 sensor_ptr%TYPE = sens_type
158 sensor_ptr%SENS_ID = sens_id
159 sensor_ptr%STATUS = 0 ! status = initially deactivated
160 sensor_ptr%TSTART = infinity ! start time
161 sensor_ptr%TCRIT = infinity ! global activation time
162 sensor_ptr%TDELAY = tdel ! time delay before activation
163 sensor_ptr%TMIN = tmin ! min time duration to validate criterion
164 sensor_ptr%VALUE = zero
165c
166 sensor_ptr%IPARAM(1) = spring_id
167 sensor_ptr%IPARAM(2) = 0 ! spring number - initialized in inisens()
168 sensor_ptr%IPARAM(3) = isk
169 sensor_ptr%IPARAM(4) = 0 ! spring skew - initialized in inisens()
170 sensor_ptr%IPARAM(5) = idir1
171 sensor_ptr%IPARAM(6) = idir2
172c
173 sensor_ptr%RPARAM(1) = nijmax
174 sensor_ptr%RPARAM(2) = ftens
175 sensor_ptr%RPARAM(3) = fcomp
176 sensor_ptr%RPARAM(4) = mflex
177 sensor_ptr%RPARAM(5) = mext
178 sensor_ptr%RPARAM(6) = alpha
179 sensor_ptr%RPARAM(7) = cfc
180c------------------------------------------------------------
181 WRITE (iout ,1000) sens_id,tdel,tmin
182 WRITE (iout ,2000) nijmax,ftens,fcomp,mflex,mext,spring_id,skew_id,
183 . f_dir,m_dir,cfc,alpha
184c------------------------------------------------------------
185 1000 FORMAT(
186 . 5x,' SENSOR : NECK INJURY CRITERION '/,
187 . 5x,' ------------------------------ '/,
188 . 5x,'SENSOR ID. . . . . . . . . . . . . . . . . =',i10/
189 . 5x,'TIME DELAY BEFORE ACTIVATION . . . . . . . =',e12.4/
190 . 5x,'MINIMUM TIME DURATION. . . . . . . . . . . =',e12.4)
191 2000 FORMAT(
192 . 5x,' NIJ LIMIT VALUE. . . . . . . . . . . . . =',e12.4/
193 . 5x,' CRITICAL AXIAL FORCE IN TENSION. . . . . =',e12.4/
194 . 5x,' CRITICAL AXIAL FORCE IN COMPRESSION. . . =',e12.4/
195 . 5x,' CRITICAL BENDING MOMENT IN FLEXION . . . =',e12.4/
196 . 5x,' CRITICAL BENDING MOMENT IN EXTENSION . . =',e12.4/
197 . 5x,' SPRING ELEMENT ID. . . . . . . . . . . . =',i10/
198 . 5x,' LOCAL SKEW SYSTEM ID . . . . . . . . . . =',i10/
199 . 5x,' DIRECTION OF AXIAL FORCE MONITORING. . . =',9x,a1/
200 . 5x,' DIRECTION OF BENDING MOMENT MONITORING . =',9x,a1/
201 . 5x,' CFC - CHANNEL FREQUENCY CLASS. . . . . . =',e12.4/
202 . 5x,' FILTER CONSTANT. . . . . . . . . . . . . =',e12.4/)
203c-----------
204 RETURN
#define my_real
Definition cppsort.cpp:32
#define alpha
Definition eval.h:35
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)
#define min(a, b)
Definition macros.h:20
integer, parameter nchartitle
integer, parameter ncharfield
integer nsubmod
integer function nvar(text)
Definition nvar.F:32