40#include "implicit_f.inc"
53 INTEGER :: DIMFB,STABS
54 INTEGER ,
DIMENSION(STABS) :: TABS
55 my_real,
DIMENSION(3,NUMNOD) :: x
57 TYPE (SENSOR_STR_) ,
INTENT(INOUT)TARGET :: SENSOR
58 DOUBLE PRECISION ,
DIMENSION(12,6,DIMFB) ,
INTENT(IN) :: FBSAV6
62 INTEGER :: N1,N2,ICRIT,SECT_ID,INT_ID,SUB_ID,RWAL_ID,RBOD_ID,
63 . in,isect,inter,irwal,irbod
64 my_real :: dx,dy,dz,dd,fx,fy,fz,work,wmax,tmin,tdelay,
66 parameter(infinity = 1.0e20)
68 IF (sensor%STATUS == 1)
RETURN
71 tdelay = sensor%TDELAY
75 sect_id = sensor%IPARAM(3)
76 int_id = sensor%IPARAM(4)
77 sub_id = sensor%IPARAM(5)
78 rwal_id = sensor%IPARAM(6)
79 rbod_id = sensor%IPARAM(7)
81 wmax = sensor%RPARAM(1)
110 dx = (xsens(1) - xsens(7)) - (xsens(4) - xsens(10))
111 dy = (xsens(2) - xsens(8)) - (xsens(5) - xsens(11))
112 dz = (xsens(3) - xsens(9)) - (xsens(6) - xsens(12))
126 isect = tabs(in+1) - tabs(in)
127 fx = fx + fbsav6(10,1,isect) + fbsav6(10,2,isect)
128 . + fbsav6(10,3,isect) + fbsav6(10,4,isect)
129 . + fbsav6(10,5,isect) + fbsav6(10,6,isect)
130 fy = fy + fbsav6(11,1,isect) + fbsav6(11,2,isect)
131 . + fbsav6(11,3,isect) + fbsav6(11,4,isect)
132 . + fbsav6(11,5,isect) + fbsav6(11,6,isect)
133 fz = fz + fbsav6(12,1,isect) + fbsav6(12,2,isect)
134 . + fbsav6(12,3,isect) + fbsav6(12,4,isect)
135 . + fbsav6(12,5,isect) + fbsav6(12,6,isect)
136 sensor%VAR(1) = sensor%VAR(1) + abs(fx*dx) + abs(fy*dy) + abs(fz*dz)
143 IF (in > ninter) inter = sub_id
145 inter = tabs(nsect+in+1) - tabs(nsect+in)
146 fx = fx + fbsav6(1,1,inter) + fbsav6(1,2,inter)
147 . + fbsav6(1,3,inter) + fbsav6(1,4,inter)
148 . + fbsav6(1,5,inter) + fbsav6(1,6,inter)
149 fy = fy + fbsav6(2,1,inter) + fbsav6(2,2,inter)
150 . + fbsav6(2,3,inter) + fbsav6(2,4,inter)
151 . + fbsav6(2,5,inter) + fbsav6(2,6,inter)
152 fz = fz + fbsav6(3,1,inter) + fbsav6(3,2,inter)
153 . + fbsav6(3,3,inter) + fbsav6(3,4,inter)
154 . + fbsav6(3,5,inter) + fbsav6(3,6,inter)
155 sensor%VAR(2) = sensor%VAR(2) + abs(fx*dx) + abs(fy*dy) + abs(fz*dz)
162 irwal = tabs(in+nsect+ninter+nintsub+1)
163 . - tabs(in+nsect+ninter+nintsub)
164 fx = fx + fbsav6(1,1,irwal) + fbsav6(1,2,irwal)
165 . + fbsav6(1,3,irwal) + fbsav6(1,4,irwal)
166 . + fbsav6(1,5,irwal) + fbsav6(1,6,irwal)
167 fy = fy + fbsav6(2,1,irwal) + fbsav6(2,2,irwal)
168 . + fbsav6(2,3,irwal) + fbsav6(2,4,irwal)
169 . + fbsav6(2,5,irwal) + fbsav6(2,6,irwal)
170 fz = fz + fbsav6(3,1,irwal) + fbsav6(3,2,irwal)
171 . + fbsav6(3,3,irwal) + fbsav6(3,4,irwal)
172 . + fbsav6(3,5,irwal) + fbsav6(3,6,irwal)
173 sensor%VAR(3) = sensor%VAR(3) + abs(fx*dx) + abs(fy*dy) + abs(fz*dz)
180 irbod = tabs(in+nsect+ninter+nintsub+nrwall+1)
181 . - tabs(in+nsect+ninter+nintsub+nrwall)
182 fx = fx + fbsav6(1,1,irbod) + fbsav6(1,2,irbod)
183 . + fbsav6(1,3,irbod) + fbsav6(1,4,irbod)
184 . + fbsav6(1,5,irbod) + fbsav6(1,6,irbod)
185 fy = fy + fbsav6(2,1,irbod) + fbsav6(2,2,irbod)
186 . + fbsav6(2,3,irbod) + fbsav6(2,4,irbod)
187 . + fbsav6(2,5,irbod) + fbsav6(2,6,irbod)
188 fz = fz + fbsav6(3,1,irbod) + fbsav6(3,2,irbod)
189 . + fbsav6(3,3,irbod) + fbsav6(3,4,irbod)
190 . + fbsav6(3,5,irbod) + fbsav6(3,6,irbod)
191 sensor%VAR(4) = sensor%VAR(4) + abs(fx*dx) + abs(fy*dy) + abs(fz*dz)
194 work = sensor%VAR(1) + sensor%VAR(2) + sensor%VAR(3) + sensor%VAR(4)
195 IF (work > wmax) icrit = 1
199 IF (sensor%TCRIT + tmin > tt)
THEN
201 sensor%TCRIT = infinity
202 ELSE IF (sensor%TCRIT == infinity)
THEN
203 sensor%TCRIT =
min(sensor%TCRIT, tt)
206 IF (sensor%TSTART == infinity .and. sensor%TCRIT < infinity)
THEN
207 sensor%TSTART = sensor%TCRIT + tmin + tdelay
209 IF (sensor%TSTART <= tt)
THEN
213 IF (sensor%STATUS == 1 .and. ispmd == 0)
THEN
215 WRITE (istdo,1100) sensor%SENS_ID,sensor%TSTART
216 WRITE (iout ,1100) sensor%SENS_ID,sensor%TSTART
217 WRITE (iout ,1200) wmax,work
218#include "lockoff.inc"
2211100
FORMAT(
' SENSOR WORK NUMBER ',i10,
' ,ACTIVATED AT TIME ',1pe12.5)
2221200
FORMAT(
' TARGET WORK = ',1pe12.5,/
223 .
' CURRENT WORK AFTER TMIN AND TDELAY = ',1pe12.5)