54#include "implicit_f.inc"
64 INTEGER ,
INTENT(IN) :: NSENSOR
65 my_real ,
DIMENSION(3,NUMNOD) :: x
66 TYPE (SURF_) ,
DIMENSION(NSURF),
TARGET :: IGRSURF
67 TYPE (SENSOR_STR_),
DIMENSION(NSENSOR),
INTENT(INOUT) :: SENSOR_TAB
68 TYPE (SENSOR_COMM),
INTENT(IN) :: COMM_SENS16
72 INTEGER I,ISURF,INOD,NP1,NP2,NP3,NP4,NSEG,IJK
74 my_real xnod,ynod,znod,xp1,yp1,zp1,xp2,yp2,zp2,xp3,yp3,zp3,
75 . xp4,yp4,zp4,
norm,infinity
76 TYPE (SURF_) ,
POINTER :: SURFACE
77 parameter(infinity = 1.0e20)
79 my_real,
DIMENSION(COMM_SENS16%NUM_SENS) :: local_value,global_value
84 DO ijk=1,comm_sens16%NUM_SENS
85 isens = comm_sens16%ID_SENS(ijk)
86 local_value(ijk) = zero
87 global_value(ijk) = zero
88 IF (sensor_tab(isens)%STATUS == 1) cycle
98 tmin = sensor_tab(isens)%TMIN
99 tdelay = sensor_tab(isens)%TDELAY
100 inod = sensor_tab(isens)%IPARAM(1)
101 isurf = sensor_tab(isens)%IPARAM(2)
103 dmin = sensor_tab(isens)%RPARAM(1)
104 dmax = sensor_tab(isens)%RPARAM(2)
115 surface => igrsurf(isurf)
118 SELECT CASE (surface%TYPE)
127 np1 = surface%NODES(i,1)
128 np2 = surface%NODES(i,2)
129 np3 = surface%NODES(i,3)
130 np4 = surface%NODES(i,4)
144 . dist,dmin,dmax,xnod,ynod,znod,
145 . xp1,yp1,zp1,xp2,yp2,zp2,xp3,yp3,zp3,xp4,yp4,zp4)
146 sensor_tab(isens)%VALUE =
min(sensor_tab(isens)%VALUE, dist)
152 np1 = surface%NODES(i,1)
153 np2 = surface%NODES(i,2)
154 np3 = surface%NODES(i,3)
166 . dist,dmin,dmax,xnod,ynod,znod,
167 . xp1,yp1,zp1,xp2,yp2,zp2,xp3,yp3,zp3)
168 sensor_tab(isens)%VALUE =
min(sensor_tab(isens)%VALUE, dist)
174 local_value(ijk) = sensor_tab(isens)%VALUE
179 CALL spmd_allreduce(local_value,global_value,comm_sens16%NUM_SENS,spmd_min)
181 global_value(1:comm_sens16%NUM_SENS) = local_value(1:comm_sens16%NUM_SENS)
183 DO ijk=1,comm_sens16%NUM_SENS
184 isens = comm_sens16%ID_SENS(ijk)
185 sensor_tab(isens)%VALUE = global_value(ijk)
subroutine dist_node_seg3n(dist, dmin, dmax, nod_x, nod_y, nod_z, ax, ay, az, bx, by, bz, cx, cy, cz)
subroutine dist_node_seg4n(dist, dmin, dmax, nod_x, nod_y, nod_z, ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz)