40#include "implicit_f.inc"
53 INTEGER :: DIMFB,STABS
54 INTEGER :: TABS(STABS)
55 DOUBLE PRECISION ,
DIMENSION(12,6,DIMFB) :: FBSAV6
56 my_real ,
DIMENSION(NTHVKI,*) :: fsav
57 TYPE (SENSOR_STR_) ,
TARGET :: SENSOR
61 INTEGER SECT_ID,IDIR,ICRIT,ISECT,IAD,IFLAG
63 my_real :: fmin,fmax,fx,fy,fz,ff,tstart,tmin,tdelay
65 IF (sensor%STATUS == 1)
RETURN
71 tstart = sensor%TSTART
73 tdelay = sensor%TDELAY
75 sect_id = sensor%IPARAM(1)
76 idir = sensor%IPARAM(2)
77 fmin = sensor%RPARAM(1)
78 fmax = sensor%RPARAM(2)
82 iad = ninter + nrwall + nrbody + sect_id
83 isect = tabs(sect_id+1) - tabs(sect_id)
91 fx = fbsav6(1,1,isect)+fbsav6(1,2,isect)
92 . + fbsav6(1,3,isect)+fbsav6(1,4,isect)
93 . + fbsav6(1,5,isect)+fbsav6(1,6,isect)
94 fy = fbsav6(2,1,isect)+fbsav6(2,2,isect)
95 . + fbsav6(2,3,isect)+fbsav6(2,4,isect)
96 . + fbsav6(2,5,isect)+fbsav6(2,6,isect)
97 fz = fbsav6(3,1,isect)+fbsav6(3,2,isect)
98 . + fbsav6(3,3,isect)+fbsav6(3,4,isect)
99 . + fbsav6(3,5,isect)+fbsav6(3,6,isect)
101 ELSEIF (idir == 2)
THEN
107 fx = fbsav6(4,1,isect)+fbsav6(4,2,isect)
108 . + fbsav6(4,3,isect)+fbsav6(4,4,isect)
109 . + fbsav6(4,5,isect)+fbsav6(4,6,isect)
110 fy = fbsav6(5,1,isect)+fbsav6(5,2,isect)
111 . + fbsav6(5,3,isect)+fbsav6(5,4,isect)
112 . + fbsav6(5,5,isect)+fbsav6(5,6,isect)
113 fz = fbsav6(6,1,isect)+fbsav6(6,2,isect)
114 . + fbsav6(6,3,isect)+fbsav6(6,4,isect)
115 . + fbsav6(6,5,isect)+fbsav6(6,6,isect)
117 ELSEIF (idir == 3)
THEN
123 fx = fbsav6(10,1,isect)+fbsav6(10,2,isect)
124 . + fbsav6(10,3,isect)+fbsav6(10,4,isect)
125 . + fbsav6(10,5,isect)+fbsav6(10,6,isect)
126 fy = fbsav6(11,1,isect)+fbsav6(11,2,isect)
127 . + fbsav6(11,3,isect)+fbsav6(11,4,isect)
128 . + fbsav6(11,5,isect)+fbsav6(11,6,isect)
129 fz = fbsav6(12,1,isect)+fbsav6(12,2,isect)
130 . + fbsav6(12,3,isect)+fbsav6(12,4,isect)
131 . + fbsav6(12,5,isect)+fbsav6(12,6,isect)
133 ELSEIF (idir == 4)
THEN
139 fx = fbsav6(7,1,isect)+fbsav6(7,2,isect)
140 . + fbsav6(7,3,isect)+fbsav6(7,4,isect)
141 . + fbsav6(7,5,isect)+fbsav6(7,6,isect)
142 fy = fbsav6(8,1,isect)+fbsav6(8,2,isect)
143 . + fbsav6(8,3,isect)+fbsav6(8,4,isect)
144 . + fbsav6(8,5,isect)+fbsav6(8,6,isect)
145 fz = fbsav6(9,1,isect)+fbsav6(9,2,isect)
146 . + fbsav6(9,3,isect)+fbsav6(9,4,isect)
147 . + fbsav6(9,5,isect)+fbsav6(9,6,isect)
149 ELSEIF (idir == 5)
THEN
151 ff = fsav(1,iad) + fsav(4,iad)
153 ff = fbsav6(1,1,isect)+fbsav6(1,2,isect)
154 . + fbsav6(1,3,isect)+fbsav6(1,4,isect)
155 . + fbsav6(1,5,isect)+fbsav6(1,6,isect)
156 . + fbsav6(4,1,isect)+fbsav6(4,2,isect)
157 . + fbsav6(4,3,isect)+fbsav6(4,4,isect)
158 . + fbsav6(4,5,isect)+fbsav6(4,6,isect)
160 ELSEIF (idir == 6)
THEN ! fy
162 ff = fsav(2,iad) + fsav(5,iad)
164 ff = fbsav6(2,1,isect)+fbsav6(2,2,isect)
165 . + fbsav6(2,3,isect)+fbsav6(2,4,isect)
166 . + fbsav6(2,5,isect)+fbsav6(2,6,isect)
167 . + fbsav6(5,1,isect)+fbsav6(5,2,isect)
168 . + fbsav6(5,3,isect)+fbsav6(5,4,isect)
169 . + fbsav6(5,5,isect)+fbsav6(5,6,isect)
171 ELSEIF (idir == 7)
THEN
173 ff = fsav(3,iad) + fsav(6,iad)
175 ff = fbsav6(3,1,isect)+fbsav6(3,2,isect)
176 . + fbsav6(3,3,isect)+fbsav6(3,4,isect)
177 . + fbsav6(3,5,isect)+fbsav6(3,6,isect)
178 . + fbsav6(6,1,isect)+fbsav6(6,2,isect)
179 . + fbsav6(6,3,isect)+fbsav6(6,4,isect)
180 . + fbsav6(6,5,isect)+fbsav6(6,6,isect)
182 ELSEIF (idir == 8)
THEN
186 ff = fbsav6(7,1,isect)+fbsav6(7,2,isect)
187 . + fbsav6(7,3,isect)+fbsav6(7,4,isect)
188 . + fbsav6(7,5,isect)+fbsav6(7,6,isect)
190 ELSEIF (idir == 9)
THEN
194 ff = fbsav6(8,1,isect)+fbsav6(8,2,isect)
195 . + fbsav6(8,3,isect)+fbsav6(8,4,isect)
196 . + fbsav6(8,5,isect)+fbsav6(8,6,isect)
198 ELSEIF (idir == 10)
THEN
202 ff = fbsav6(9,1,isect)+fbsav6(9,2,isect)
203 . + fbsav6(9,3,isect)+fbsav6(9,4,isect)
204 . + fbsav6(9,5,isect)+fbsav6(9,6,isect)
208 IF (idir < 5) ff = sqrt(fx*fx + fy*fy + fz*fz)
213 ELSE IF (ff > fmax)
THEN
219 IF (sensor%TCRIT + tmin > tt)
THEN
221 sensor%TCRIT = infinity
222 ELSE IF (sensor%TCRIT == infinity)
THEN
226 IF (sensor%TCRIT < infinity) tstart = sensor%TCRIT + tmin + tdelay
227 IF (tstart <= tt)
THEN
229 sensor%TSTART = tstart
232 IF (sensor%STATUS == 1 .and. ispmd == 0)
THEN
234 WRITE (istdo,1100) sensor%SENS_ID,sensor%TSTART
235 WRITE (iout ,1100) sensor%SENS_ID,sensor%TSTART
237 WRITE (iout ,1300) fmin,ff
238 ELSE IF (iflag == 2)
THEN
239 WRITE (iout ,1400) fmax,ff
241#include "lockoff.inc"
2441100
FORMAT(
' SENSOR (SECTION) NUMBER ',i10,
' ,ACTIVATED AT TIME ',1pe12.5)
2451300
FORMAT(
' TARGET MIN FORCE = ',1pe12.5,/
246 .
' CURRENT FORCE AFTER TMIN and TDELAY = ',1pe12.5)
2471400
FORMAT(
' TARGET MAX FORCE = ',1pe12.5,/
248 .
' CURRENT FORCE AFTER TMIN and TDELAY = ',1pe12.5)