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 () ,
TARGET :: SENSOR
61 INTEGER I,SECT_ID,IDIR,ICRIT,ISECT,IAD,IFLAG
63 my_real :: fmin,fmax,fx,fy,fz,ff,tstart,tmin,tdelay,infinity
64 parameter(infinity = 1.0e20)
66 IF (sensor%STATUS == 1)
RETURN
72 tstart = sensor%TSTART
74 tdelay = sensor%TDELAY
76 sect_id = sensor%IPARAM(1)
77 idir = sensor%IPARAM(2)
78 fmin = sensor%RPARAM(1)
79 fmax = sensor%RPARAM(2)
83 iad = ninter + nrwall + nrbody + sect_id
84 isect = tabs(sect_id+1) - tabs(sect_id)
92 fx = fbsav6(1,1,isect)+fbsav6(1,2,isect)
93 . + fbsav6(1,3,isect)+fbsav6(1,4,isect)
94 . + fbsav6(1,5,isect)+fbsav6(1,6,isect)
95 fy = fbsav6(2,1,isect)+fbsav6(2,2,isect)
96 . + fbsav6(2,3,isect)+fbsav6(2,4,isect)
97 . + fbsav6(2,5,isect)+fbsav6(2,6,isect)
98 fz = fbsav6(3,1,isect)+fbsav6(3,2,isect)
99 . + fbsav6(3,3,isect)+fbsav6(3,4,isect)
100 . + fbsav6(3,5,isect)+fbsav6(3,6,isect)
102 ELSEIF (idir == 2)
THEN
108 fx = fbsav6(4,1,isect)+fbsav6(4,2,isect)
109 . + fbsav6(4,3,isect)+fbsav6(4,4,isect)
110 . + fbsav6(4,5,isect)+fbsav6(4,6,isect)
111 fy = fbsav6(5,1,isect)+fbsav6(5,2,isect)
112 . + fbsav6(5,3,isect)+fbsav6(5,4,isect)
113 . + fbsav6(5,5,isect)+fbsav6(5,6,isect)
114 fz = fbsav6(6,1,isect)+fbsav6(6,2,isect)
115 . + fbsav6(6,3,isect)+fbsav6(6,4,isect)
118 ELSEIF (idir == 3)
THEN
124 fx = fbsav6(10,1,isect)+fbsav6(10,2,isect)
125 . + fbsav6(10,3,isect)+fbsav6(10,4,isect)
126 . + fbsav6(10,5,isect)+fbsav6(10,6,isect)
127 fy = fbsav6(11,1,isect)+fbsav6(11,2,isect)
128 . + fbsav6(11,3,isect)+fbsav6(11,4,isect)
129 . + fbsav6(11,5,isect)+fbsav6(11,6,isect)
130 fz = fbsav6(12,1,isect)+fbsav6(12,2,isect)
131 . + fbsav6(12,3,isect)+fbsav6(12,4,isect)
132 . + fbsav6(12,5,isect)+fbsav6(12,6,isect)
134 ELSEIF (idir == 4)
THEN
140 fx = fbsav6(7,1,isect)+fbsav6(7,2,isect)
141 . + fbsav6(7,3,isect)+fbsav6(7,4,isect)
142 . + fbsav6(7,5,isect)+fbsav6(7,6,isect)
143 fy = fbsav6(8,1,isect)+fbsav6(8,2,isect)
144 . + fbsav6(8,3,isect)+fbsav6(8,4,isect)
145 . + fbsav6(8,5,isect)+fbsav6(8,6,isect)
146 fz = fbsav6(9,1,isect)+fbsav6(9,2,isect)
147 . + fbsav6(9,3,isect)+fbsav6(9,4,isect)
148 . + fbsav6(9,5,isect)+fbsav6(9,6,isect)
150 ELSEIF (idir == 5)
THEN ! fx
152 ff = fsav(1,iad) + fsav(4,iad)
154 ff = fbsav6(1,1,isect)+fbsav6(1,2,isect)
155 . + fbsav6(1,3,isect)+fbsav6(1,4,isect)
156 . + fbsav6(1,5,isect)+fbsav6(1,6,isect)
157 . + fbsav6(4,1,isect)+fbsav6(4,2,isect)
158 . + fbsav6(4,3,isect)+fbsav6(4,4,isect)
159 . + fbsav6(4,5,isect)+fbsav6(4,6,isect)
161 ELSEIF (idir == 6)
THEN
163 ff = fsav(2,iad) + fsav(5,iad)
165 ff = fbsav6(2,1,isect)+fbsav6(2,2,isect)
166 . + fbsav6(2,3,isect)+fbsav6(2,4,isect)
167 . + fbsav6(2,5,isect)+fbsav6(2,6,isect)
168 . + fbsav6(5,1,isect)+fbsav6(5,2,isect)
169 . + fbsav6(5,3,isect)+fbsav6(5,4,isect)
170 . + fbsav6(5,5,isect)+fbsav6(5,6,isect)
172 ELSEIF (idir == 7)
THEN
174 ff = fsav(3,iad) + fsav(6,iad)
176 ff = fbsav6(3,1,isect)+fbsav6(3,2,isect)
177 . + fbsav6(3,3,isect)+fbsav6(3,4,isect)
178 . + fbsav6(3,5,isect)+fbsav6(3,6,isect)
179 . + fbsav6(6,1,isect)+fbsav6(6,2,isect)
180 . + fbsav6(6,3,isect)+fbsav6(6,4,isect)
181 . + fbsav6(6,5,isect)+fbsav6(6,6,isect)
183 ELSEIF (idir == 8)
THEN
187 ff = fbsav6(7,1,isect)+fbsav6(7,2,isect)
188 . + fbsav6(7,3,isect)+fbsav6(7,4,isect)
189 . + fbsav6(7,5,isect)+fbsav6(7,6,isect)
191 ELSEIF (idir == 9)
THEN
195 ff = fbsav6(8,1,isect)+fbsav6(8,2,isect)
196 . + fbsav6(8,3,isect)+fbsav6(8,4,isect)
197 . + fbsav6(8,5,isect)+fbsav6(8,6,isect)
199 ELSEIF (idir == 10)
THEN
203 ff = fbsav6(9,1,isect)+fbsav6(9,2,isect)
204 . + fbsav6(9,3,isect)+fbsav6(9,4,isect)
205 . + fbsav6(9,5,isect)+fbsav6(9,6,isect)
209 IF (idir < 5) ff = sqrt(fx*fx + fy*fy + fz*fz)
214 ELSE IF (ff > fmax)
THEN
220 IF (sensor%TCRIT + tmin > tt)
THEN
222 sensor%TCRIT = infinity
223 ELSE IF (sensor%TCRIT == infinity)
THEN
227 IF (sensor%TCRIT < infinity) tstart = sensor%TCRIT + tmin + tdelay
228 IF (tstart <= tt)
THEN
230 sensor%TSTART = tstart
233 IF (sensor%STATUS == 1 .and. ispmd == 0)
THEN
235 WRITE (istdo,1100) sensor%SENS_ID,sensor%TSTART
236 WRITE (iout ,1100) sensor%SENS_ID,sensor%TSTART
238 WRITE (iout ,1300) fmin,ff
239 ELSE IF (iflag == 2)
THEN
240 WRITE (iout ,1400) fmax,ff
242#include "lockoff.inc"
2451100
FORMAT(
' SENSOR (SECTION) NUMBER ',i10,
' ,ACTIVATED AT TIME ',1pe12.5)
2461300
FORMAT(
' TARGET MIN FORCE = ',1pe12.5,/
247 .
' CURRENT FORCE AFTER TMIN and TDELAY = ',1pe12.5)
2481400
FORMAT(
' TARGET MAX FORCE = ',1pe12.5,/
249 .
' CURRENT FORCE AFTER TMIN and TDELAY = ',1pe12.5)