49 xx_elev, yy_elev, zz_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, &
53 zz_elevation, zz_alluvial, &
58 integer*4 :: im,ie,i,j,k,nn,ip,isn,ic
59 integer*4 :: nn_elev, nn_elem, cs_nnz_loc, nm, ne, nn_s
63 integer*4,
dimension(nn_s) :: loc_n_num
64integer*4,
dimension(nn_elem) :: node1_elem,node2_elem,node3_elem
65 integer*4,
dimension(nm) :: tm
66 integer*4,
dimension(nm) :: sd
67 integer*4,
dimension(0:cs_nnz_loc) :: cs_loc
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
81 real*8 :: dx,dy,dz,tol
83 real*8,
dimension(:),
allocatable :: ct,ww
84 real*8,
dimension(nn_elev) :: xx_elev,yy_elev,zz_elev
85 real*8,
dimension(nn_s) :: xx_s,yy_s,zz_s
86 real*8,
dimension(nn_s) :: zz_elevation
87 real*8,
dimension(nn_s) :: zz_alluvial
89 real*8,
dimension(:,:),
allocatable :: dd
91 d2min = (5 * max_es)**2
93 zz_elev_min = zz_elev(1)
95 if (zz_elev(i).lt.zz_elev_min)
then
96 zz_elev_min = zz_elev(i)
102 allocate(ct(nn),ww(nn),dd(nn,nn))
108 if ((sd(im) +1).ne.nn)
then
111 allocate(ct(nn),ww(nn),dd(nn,nn))
116 if (cs_loc(cs_loc(ie -1) +0).eq.tagmat)
then
122 ip = nn*nn*(k -1) +nn*(j -1) +i
123 isn = cs_loc(cs_loc(ie -1) + ip)
129 if (zz_elevation(ic).eq.-1.0e+30)
then
132 x1 = xx_elev(node1_elem(h))
133 y1 = yy_elev(node1_elem(h))
134 z1 = zz_elev(node1_elem(h))
136 if (((x1 - xx_s(ic))**2 + (y1 - yy_s
then
138 x2 = xx_elev(node2_elem(h
139 y2 = yy_elev(node2_elem(h
140 z2 = zz_elev(node2_elem(h
142 x3 = xx_elev(node3_elem(h
143 y3 = yy_elev(node3_elem(h
144 z3 = zz_elev(node3_elem(h
180 dot00 = v0x * v0x + v0y
183 dot01 = v0x * v1x + v0y
186 dot02 = v0x * v2x + v0y
189 dot11 = v1x * v1x + v1y
192 dot12 = v1x * v2x + v1y
195 invdenom = 1 / (dot00 * dot11
196 u = (dot11 * dot02 - dot01
197 v = (dot00 * dot12 - dot01
202 if ( (u.ge.0.0d0).and.(v.ge.
then
220 if (abs(zz_elevation
then
225 if ( (u.ge.0.0d0).and.(v.ge.
exit