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 IF (sensor%STATUS == 1)
RETURN
69 tdelay = sensor%TDELAY
73 sect_id = sensor%IPARAM(3)
74 int_id = sensor%IPARAM(4)
75 sub_id = sensor%IPARAM(5)
76 rwal_id = sensor%IPARAM(6)
77 rbod_id = sensor%IPARAM(7)
79 wmax = sensor%RPARAM(1)
108 dx = (xsens(1) - xsens(7)) - (xsens(4) - xsens(10))
109 dy = (xsens(2) - xsens(8)) - (xsens(5) - xsens(11))
110 dz = (xsens(3) - xsens(9)) - (xsens(6) - xsens(12))
124 isect = tabs(in+1) - tabs(in)
125 fx = fx + fbsav6(10,1,isect) + fbsav6(10,2,isect)
126 . + fbsav6(10,3,isect) + fbsav6(10,4,isect)
127 . + fbsav6(10,5,isect) + fbsav6(10,6,isect)
128 fy = fy + fbsav6(11,1,isect) + fbsav6(11,2,isect)
129 . + fbsav6(11,3,isect) + fbsav6(11,4,isect)
130 . + fbsav6(11,5,isect) + fbsav6(11,6,isect)
131 fz = fz + fbsav6(12,1,isect) + fbsav6(12,2,isect)
132 . + fbsav6(12,3,isect) + fbsav6(12,4,isect)
133 . + fbsav6(12,5,isect) + fbsav6(12,6,isect)
134 sensor%VAR(1) = sensor%VAR(1) + abs(fx*dx) + abs(fy*dy) + abs(fz*dz)
141 IF (in > ninter) inter = sub_id
143 inter = tabs(nsect+in+1) - tabs(nsect+in)
144 fx = fx + fbsav6(1,1,inter) + fbsav6(1,2,inter)
145 . + fbsav6(1,3,inter) + fbsav6(1,4,inter)
146 . + fbsav6(1,5,inter) + fbsav6(1,6,inter)
147 fy = fy + fbsav6(2,1,inter) + fbsav6(2,2,inter)
148 . + fbsav6(2,3,inter) + fbsav6(2,4,inter)
149 . + fbsav6(2,5,inter) + fbsav6(2,6,inter)
150 fz = fz + fbsav6(3,1,inter) + fbsav6(3,2,inter)
151 . + fbsav6(3,3,inter) + fbsav6(3,4,inter)
152 . + fbsav6(3,5,inter) + fbsav6(3,6,inter)
153 sensor%VAR(2) = sensor%VAR(2) + abs(fx*dx) + abs(fy*dy) + abs(fz*dz)
160 irwal = tabs(in+nsect+ninter+nintsub+1)
161 . - tabs(in+nsect+ninter+nintsub)
162 fx = fx + fbsav6(1,1,irwal) + fbsav6(1,2,irwal)
163 . + fbsav6(1,3,irwal) + fbsav6(1,4,irwal)
164 . + fbsav6(1,5,irwal) + fbsav6(1,6,irwal)
165 fy = fy + fbsav6(2,1,irwal) + fbsav6(2,2,irwal)
166 . + fbsav6(2,3,irwal) + fbsav6(2,4,irwal)
167 . + fbsav6(2,5,irwal) + fbsav6(2,6,irwal)
168 fz = fz + fbsav6(3,1,irwal) + fbsav6(3,2,irwal)
169 . + fbsav6(3,3,irwal) + fbsav6(3,4,irwal)
170 . + fbsav6(3,5,irwal) + fbsav6(3,6,irwal)
171 sensor%VAR(3) = sensor%VAR(3) + abs(fx*dx) + abs(fy*dy) + abs(fz*dz)
178 irbod = tabs(in+nsect+ninter+nintsub+nrwall+1)
179 . - tabs(in+nsect+ninter+nintsub+nrwall)
180 fx = fx + fbsav6(1,1,irbod) + fbsav6(1,2,irbod)
181 . + fbsav6(1,3,irbod) + fbsav6(1,4,irbod)
182 . + fbsav6(1,5,irbod) + fbsav6(1,6,irbod)
183 fy = fy + fbsav6(2,1,irbod) + fbsav6(2,2,irbod)
184 . + fbsav6(2,3,irbod) + fbsav6(2,4,irbod)
185 . + fbsav6(2,5,irbod) + fbsav6(2,6,irbod)
186 fz = fz + fbsav6(3,1,irbod) + fbsav6(3,2,irbod)
187 . + fbsav6(3,3,irbod) + fbsav6(3,4,irbod)
188 . + fbsav6(3,5,irbod) + fbsav6(3,6,irbod)
189 sensor%VAR(4) = sensor%VAR(4) + abs(fx*dx) + abs(fy*dy) + abs(fz*dz)
192 work = sensor%VAR(1) + sensor%VAR(2) + sensor%VAR(3) + sensor%VAR(4)
193 IF (work > wmax) icrit = 1
197 IF (sensor%TCRIT + tmin > tt)
THEN
199 sensor%TCRIT = infinity
200 ELSE IF (sensor%TCRIT == infinity)
THEN
201 sensor%TCRIT =
min(sensor%TCRIT, tt)
204 IF (sensor%TSTART == infinity .and. sensor%TCRIT < infinity)
THEN
205 sensor%TSTART = sensor%TCRIT + tmin + tdelay
207 IF (sensor%TSTART <= tt)
THEN
211 IF (sensor%STATUS == 1 .and. ispmd == 0)
THEN
213 WRITE (istdo,1100) sensor%SENS_ID,sensor%TSTART
214 WRITE (iout ,1100) sensor%SENS_ID,sensor%TSTART
215 WRITE (iout ,1200) wmax,work
216#include "lockoff.inc"
2191100
FORMAT(
' SENSOR WORK NUMBER ',i10,
' ,ACTIVATED AT TIME ',1pe12.5)
2201200
FORMAT(
' TARGET WORK = ',1pe12.5,/
221 .
' CURRENT WORK AFTER TMIN AND TDELAY = ',1pe12.5)