49 x_elev, y_elev, z_elev, &
50 node1_elem, node2_elem, node3_elem, &
51 cs_nnz_loc, cs_loc, nm, tm, sd, &
52 nn_s, xx_s, yy_s, zz_s, zz_elevation, &
57 integer*4 :: n_elev,nn_elem,cs_nnz_loc,nm,ne,nn_s
58 integer*4 :: im,ie,i,j,k,nn,ip,isn,ic
62 integer*4,
dimension(nn_s) :: loc_n_num
63 integer*4,
dimension(nn_elem) :: node1_elem,node2_elem,node3_elem
64 integer*4,
dimension(0:cs_nnz_loc) :: cs_loc
65 integer*4,
dimension(nm) :: tm
66 integer*4,
dimension(nm) :: sd
68 real*8 :: dx,dy,dz,tol
72 real*8 :: ux,uy,uz,vx,vy,vz
76 real*8 :: v0x,v0y,v1x,v1y,v2x,v2y
77 real*8 :: dot00,dot01,dot02,dot11,dot12
78 real*8 :: invdenom,u,v
82 real*8,
dimension(:),
allocatable :: ct,ww
83 real*8,
dimension(n_elev) :: x_elev,y_elev,z_elev
84 real*8,
dimension(nn_s) :: xx_s,yy_s,zz_s
85 real*8,
dimension(nn_s) :: zz_elevation
87 real*8,
dimension(:,:),
allocatable :: dd
90 d2min = (5 * max_as)**2
92 z_elev_min = z_elev(1)
94 if (z_elev(i).lt.z_elev_min)
then
95 z_elev_min = z_elev(i)
115 im = cs_loc(cs_loc(ie -1) +0);
118 if (im .eq. tagmat)
then
121 allocate(ct(nn),ww(nn),dd(nn,nn))
128 ip = nn*nn*(k -1) +nn*(j -1) +i
129 isn = cs_loc(cs_loc(ie -1) + ip)
134 if (zz_elevation(ic) .eq. -1.0e+30)
then
137 if (zz_s(ic).lt.z_elev_min)
exit
139 x1 = x_elev(node1_elem(h
140 y1 = y_elev(node1_elem(h
141 z1 = z_elev(node1_elem(h
143 if (((x1 - xx_s(ic))**2 + (y1 - yy_s
then
145 x2 = x_elev(node2_elem(h
146 y2 = y_elev(node2_elem(h
147 z2 = z_elev(node2_elem(h
149 x3 = x_elev(node3_elem(h
150 y3 = y_elev(node3_elem(h
151 z3 = z_elev(node3_elem(h
153 if (zz_s(ic).ge.min(z1,z2,z3))
then
179 dot00 = v0x * v0x + v0y
182 dot01 = v0x * v1x + v0y
185 dot02 = v0x * v2x + v0y
188 dot11 = v1x * v1x + v1y
191 dot12 = v1x * v2x + v1y
194 invdenom = 1 / (dot00 * dot11
195 u = (dot11 * dot02 - dot01
196 v = (dot00 * dot12 - dot01
200 if ( (u.ge.0.0d0).and.(v.ge.
then
217 if (abs(zz_elevation
then
223 if ( (u.ge.0.0d0).and.(v.ge.
exit