39
40
41
45 USE sensor_mod
48
49
50
51#include "implicit_f.inc"
52
53
54
55#include "units_c.inc"
56
57
58
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
64
65
66
67 INTEGER :: SECT_ID,IDIR,NPARIS,NPARRS,NVAR,SENS_TYPE
69 CHARACTER(LEN=NCHARKEY) :: DIR
70 LOGICAL :: IS_AVAILABLE
71
72
73
74 is_available = .false.
75 sens_type = 12
76
77
78 CALL hm_get_floatv(
'Tdelay' ,tdel ,is_available,lsubmodel,unitab)
79
80 CALL hm_get_intv (
'CrosssectionId' ,sect_id ,is_available,lsubmodel)
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)
85
86
87
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
103
104
105 sensor_ptr%TYPE = sens_type
106 sensor_ptr%SENS_ID = sens_id
107 sensor_ptr%STATUS = 0
108 sensor_ptr%TSTART = infinity
109 sensor_ptr%TCRIT = infinity
110 sensor_ptr%TMIN = tmin
111 sensor_ptr%TDELAY = tdel
112 sensor_ptr%VALUE = zero
113
114 nparis = 2
115 nparrs = 2
117
118 sensor_ptr%NPARI = nparis
119 sensor_ptr%NPARR = nparrs
120 sensor_ptr%NVAR =
nvar
121
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
132
133 WRITE (iout, 1000) sens_id,tdel
134 WRITE (iout, 2000) sect_id,fmin,fmax,tmin,dir
135
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/)
147
148 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)