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 :: RBOD_ID,IDIR,NPARIS,NPARRS,NVAR,
69 CHARACTER(LEN=NCHARKEY) :: DIR
70 LOGICAL :: IS_AVAILABLE
71
72
73
74 is_available = .false.
75 sens_type = 11
76
77
78 CALL hm_get_floatv(
'Tdelay' ,tdel ,is_available,lsubmodel,unitab)
79
80 CALL hm_get_intv (
'rbodyID' ,rbod_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) == 'TF' .OR. dir(1:2) == 'tf') idir = 1
90 IF (dir(1:2) == 'TM' .OR. dir(1:2) == 'tm') idir = 2
91 IF (idir == 0 .AND. len_trim(dir) /= 0 ) THEN
92 CALL ancmsg(msgid=1594, msgtype=msgerror, anmode=aninfo_blind,
93 . i1=sens_id, c1=titr, c2=dir)
94 END IF
95
96
97 sensor_ptr%TYPE = sens_type
98 sensor_ptr%SENS_ID = sens_id
99 sensor_ptr%STATUS = 0
100 sensor_ptr%TSTART = infinity
101 sensor_ptr%TCRIT = infinity
102 sensor_ptr%TMIN = tmin
103 sensor_ptr%TDELAY = tdel
104 sensor_ptr%VALUE = zero
105
106 nparis = 2
107 nparrs = 2
109
110 sensor_ptr%NPARI = nparis
111 sensor_ptr%NPARR = nparrs
112 sensor_ptr%NVAR =
nvar
113
114 ALLOCATE (sensor_ptr%IPARAM(nparis))
115 ALLOCATE (sensor_ptr%RPARAM(nparrs))
116 ALLOCATE (sensor_ptr%VAR(
nvar))
117 sensor_ptr%VAR(:) = zero
118
119 sensor_ptr%IPARAM(1) = rbod_id
120 sensor_ptr%IPARAM(2) = idir
121
122 sensor_ptr%RPARAM(1) = fmin
123 sensor_ptr%RPARAM(2) = fmax
124
125 WRITE (iout, 1000) sens_id,tdel
126 WRITE (iout,2000) rbod_id,fmin,fmax,tmin,dir(1:2)
127
128 1000 FORMAT(
129 & 5x,' SENSOR TYPE 11: RIGID BODY FORCE '/,
130 & 5x,' -------------------------------- '/,
131 & 5x,'SENSOR ID. . . . . . . . . . . . . . . . .=',i8/
132 & 5x,'TIME DELAY BEFORE ACTIVATION . . . . . . .=',e12.4)
133 2000 FORMAT(
134 . 5x,' RIGID BODY ID . . . . . . . . . . . . .=',i8/
135 . 5x,' FORCE MIN . . . . . . . . . . . . . . .=',e12.4/
136 . 5x,' FORCE MAX . . . . . . . . . . . . . . .=',e12.4/
137 . 5x,' MIN DURATION LIMIT. . . . . . . . . . .=',e12.4/
138 . 5x,' FORCE DIRECTION . . . . . . . . . . . .=',2x,a/)
139
140 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)