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_PTR
62 TYPE (SUBMODEL_DATA) ,DIMENSION(NSUBMOD) :: LSUBMODEL
63 TYPE (UNIT_TYPE_) ,INTENT(IN) :: UNITAB
64
65
66
67 INTEGER :: INT_ID,IDIR,NPARIS,NPARRS,NVAR,SENS_TYPE
68 my_real :: tdel,tmin,fmin,fmax,freq
69 CHARACTER(LEN=NCHARKEY) :: DIR
70 LOGICAL :: IS_AVAILABLE
71
72
73
74 is_available = .false.
75 sens_type = 6
76
77
78 CALL hm_get_floatv(
'Tdelay' ,tdel ,is_available,lsubmodel,unitab)
79
80 CALL hm_get_intv (
'InterfaceId' ,int_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 CALL hm_get_floatv(
'INTER_FCUT' ,freq ,is_available,lsubmodel,unitab)
86
87
88
89 idir = 0
90 IF (dir(1:2) == 'NF' .OR. dir(1:2) == 'nf') idir = 1
91 IF (dir(1:2) == 'FN' .OR. dir(1:2) == 'fn') idir = 1
92 IF (dir(1:2) == 'TF' .OR. dir(1:2) == 'tf') idir = 2
93 IF (dir(1:2) == 'FT' .OR. dir(1:2) == 'ft') idir = 2
94 IF (idir == 0 .AND. len_trim(dir) /= 0 ) THEN
95 CALL ancmsg(msgid=1594, msgtype=msgerror, anmode=aninfo_blind,
96 . i1=sens_id, c1=titr, c2=dir)
97 END IF
98
99
100 sensor_ptr%TYPE = sens_type
101 sensor_ptr%SENS_ID = sens_id
102 sensor_ptr%STATUS = 0
103 sensor_ptr%TSTART = infinity
104 sensor_ptr%TCRIT = infinity
105 sensor_ptr%TMIN = tmin
106 sensor_ptr%TDELAY = tdel
107 sensor_ptr%VALUE = infinity
108
109 nparis = 3
110 nparrs = 3
112
113 sensor_ptr%NPARI = nparis
114 sensor_ptr%NPARR = nparrs
115 sensor_ptr%NVAR =
nvar
116
117 ALLOCATE (sensor_ptr%IPARAM(nparis))
118 ALLOCATE (sensor_ptr%RPARAM(nparrs))
119 ALLOCATE (sensor_ptr%VAR(
nvar))
120 sensor_ptr%VAR(:) = zero
121
122 sensor_ptr%IPARAM(1) = int_id
123 sensor_ptr%IPARAM(2) = 0
124 sensor_ptr%IPARAM(3) = idir
125
126 sensor_ptr%RPARAM(1) = fmin
127 sensor_ptr%RPARAM(2) = fmax
128 sensor_ptr%RPARAM(3) = freq
129
130 WRITE (iout, 1000) sens_id,tdel
131 WRITE (iout, 2000) int_id,fmin,fmax,tmin,freq,dir(1:len_trim(dir))
132
133 1000 FORMAT(
134 & 5x,' SENSOR TYPE 6: CONTACT FORCE '/,
135 & 5x,' ----------------------------- '/,
136 & 5x,'SENSOR ID. . . . . . . . . . . . . . . . .=',i10/
137 & 5x,'TIME DELAY BEFORE ACTIVATION . . . . . . .=',e12.4)
138 2000 FORMAT(
139 . 5x,' INTERFACE ID. . . . . . . . . . . . . .=',i10/
140 . 5x,' FORCE MIN . . . . . . . . . . . . . . .=',e12.4/
141 . 5x,' FORCE MAX . . . . . . . . . . . . . . .=',e12.4/
142 . 5x,' MIN DURATION LIMIT. . . . . . . . . . .=',e12.4/
143 . 5x,' FILTERING FREQUENCY . . . . . . . . . .=',e12.4/
144 . 5x,' FORCE DIRECTION . . . . . . . . . . . .=',2x,a/)
145
146 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)