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

Go to the source code of this file.

Functions/Subroutines

subroutine read_sensor_sect (sensor_ptr, sens_id, titr, unitab, lsubmodel)

Function/Subroutine Documentation

◆ read_sensor_sect()

subroutine read_sensor_sect ( type (sensor_str_) sensor_ptr,
integer, intent(in) sens_id,
character(len=nchartitle) titr,
type (unit_type_), intent(in) unitab,
type (submodel_data), dimension(nsubmod) lsubmodel )

Definition at line 37 of file read_sensor_sect.F.

39C-----------------------------------------------
40C M o d u l e s
41C-----------------------------------------------
42 USE unitab_mod
43 USE message_mod
44 USE submodel_mod
45 USE sensor_mod
48C-----------------------------------------------
49C I m p l i c i t T y p e s
50C-----------------------------------------------
51#include "implicit_f.inc"
52C-----------------------------------------------
53C C o m m o n B l o c k s
54C-----------------------------------------------
55#include "units_c.inc"
56C-----------------------------------------------
57C D u m m y A r g u m e n t s
58C-----------------------------------------------
59 INTEGER ,INTENT(IN) :: SENS_ID
60 CHARACTER(LEN=NCHARTITLE)::TITR
61 TYPE (SENSOR_STR_) :: SENSOR_PTR
62 TYPE (SUBMODEL_DATA) ,DIMENSION(NSUBMOD) :: LSUBMODEL
63 TYPE (UNIT_TYPE_) ,INTENT(IN) :: UNITAB
64C-----------------------------------------------
65C L o c a l V a r i a b l e s
66C-----------------------------------------------
67 INTEGER :: SECT_ID,IDIR,NPARIS,NPARRS,NVAR,SENS_TYPE
68 my_real :: tdel,tmin,fmin,fmax
69 CHARACTER(LEN=NCHARKEY) :: DIR
70 LOGICAL :: IS_AVAILABLE
71C--------------------------------
72C SENSOR BASED ON SECTION FORCE
73C=======================================================================
74 is_available = .false.
75 sens_type = 12
76c--------------------------------------------------
77card1
78 CALL hm_get_floatv('Tdelay' ,tdel ,is_available,lsubmodel,unitab)
79card2
80 CALL hm_get_intv ('CrosssectionId' ,sect_id ,is_available,lsubmodel)
81 CALL hm_get_string('DIR ' ,dir ,ncharfield,is_available)
82 CALL hm_get_floatv('Fmin' ,fmin ,is_available,lsubmodel,unitab)
83 CALL hm_get_floatv('Fmax' ,fmax ,is_available,lsubmodel,unitab)
84 CALL hm_get_floatv('Tmin' ,tmin ,is_available,lsubmodel,unitab)
85c--------------------------------------------------
86c Check input data
87c--------------------------------------------------
88 idir = 0
89 IF (dir(1:2) == 'FN' .OR. dir(1:2) == 'fn') idir = 1
90 IF (dir(1:2) == 'FT' .OR. dir(1:2) == 'ft') idir = 2
91 IF (dir(1:2) == 'TF' .OR. dir(1:2) == 'tf') idir = 3
92 IF (dir(1:2) == 'TM' .OR. dir(1:2) == 'tm') idir = 4
93 IF (dir(1:2) == 'FX' .OR. dir(1:2) == 'fx') idir = 5
94 IF (dir(1:2) == 'FY' .OR. dir(1:2) == 'fy') idir = 6
95 IF (dir(1:2) == 'FZ' .OR. dir(1:2) == 'fz') idir = 7
96 IF (dir(1:2) == 'MX' .OR. dir(1:2) == 'mx') idir = 8
97 IF (dir(1:2) == 'MY' .OR. dir(1:2) == 'my') idir = 9
98 IF (dir(1:2) == 'MZ' .OR. dir(1:2) == 'mz') idir = 10
99 IF (idir == 0 .AND. len_trim(dir) /= 0 ) THEN
100 CALL ancmsg(msgid=1594, msgtype=msgerror, anmode=aninfo_blind,
101 . i1=sens_id, c1=titr, c2=dir)
102 END IF
103c--------------------------------------------------
104c
105 sensor_ptr%TYPE = sens_type
106 sensor_ptr%SENS_ID = sens_id
107 sensor_ptr%STATUS = 0 ! status = deactivated
108 sensor_ptr%TSTART = infinity
109 sensor_ptr%TCRIT = infinity
110 sensor_ptr%TMIN = tmin
111 sensor_ptr%TDELAY = tdel ! time delay before activation
112 sensor_ptr%VALUE = zero
113
114 nparis = 2
115 nparrs = 2
116 nvar = 0
117c
118 sensor_ptr%NPARI = nparis
119 sensor_ptr%NPARR = nparrs
120 sensor_ptr%NVAR = nvar
121c
122 ALLOCATE (sensor_ptr%IPARAM(nparis))
123 ALLOCATE (sensor_ptr%RPARAM(nparrs))
124 ALLOCATE (sensor_ptr%VAR(nvar))
125 sensor_ptr%VAR(:) = zero
126
127 sensor_ptr%IPARAM(1) = sect_id
128 sensor_ptr%IPARAM(2) = idir
129
130 sensor_ptr%RPARAM(1) = fmin
131 sensor_ptr%RPARAM(2) = fmax
132c------------------------------------------------------------
133 WRITE (iout, 1000) sens_id,tdel
134 WRITE (iout, 2000) sect_id,fmin,fmax,tmin,dir
135c------------------------------------------------------------
136 1000 FORMAT(
137 & 5x,' SENSOR TYPE 12: SECTION FORCE '/,
138 & 5x,' ----------------------------- '/,
139 & 5x,'SENSOR ID. . . . . . . . . . . . . . . . .=',i10/
140 & 5x,'TIME DELAY BEFORE ACTIVATION . . . . . . .=',e12.4)
141 2000 FORMAT(
142 . 5x,' SECTION ID. . . . . . . . . . . . . . .=',i10/
143 . 5x,' FORCE MIN . . . . . . . . . . . . . . .=',e12.4/
144 . 5x,' FORCE MAX . . . . . . . . . . . . . . .=',e12.4/
145 . 5x,' MIN DURATION LIMIT. . . . . . . . . . .=',e12.4/
146 . 5x,' FORCE DIRECTION . . . . . . . . . . . .=',a/)
147c-----------
148 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 nchartitle
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