53 num_ns,sour_ns,i_sism,&
54 dist_sour_ns,nl_sism,&
55 max_num_ns,loc_n_num, nn_loc, &
56 pos_sour_nx,pos_sour_ny,pos_sour_nz)
61 integer*4 :: i_sism,isn,i,nn_loc
62 integer*4 :: nnod,node_sism,num_ns,nl_sism,max_num_ns
64 integer*4,
dimension(nn_loc) :: loc_n_num(nn_loc)
66 integer*4,
dimension(max_num_ns,nl_sism) :: sour_ns
68 real*8 :: xipo,yipo,zipo,x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4,ux,uy
69 real*8 :: p1x,p1y,p1z,p2x,p2y,p2z
70 real*8 :: epsilon, twopi, anglesum, costheta,m1,m2
72 real*8,
dimension(nn_loc) :: xs,ys,zs
73 real*8,
dimension(4) :: x,y,z
75 real*8,
dimension(max_num_ns,nl_sism) :: dist_sour_ns
76 real*8,
dimension(max_num_ns,nl_sism) :: pos_sour_nx,pos_sour_ny,pos_sour_nz
82 twopi = 6.283185307179586476925287
108 p2x = x(i+1) - xs(isn)
109 p2y = y(i+1) - ys(isn)
110 p2z = z(i+1) - zs(isn)
112 m1 = dsqrt(p1x*p1x + p1y*p1y + p1z*p1z)
113 m2 = dsqrt(p2x*p2x + p2y*p2y + p2z*p2z)
115 if ((m1*m2).le.epsilon)
then
118 costheta = (p1x*p2x + p1y*p2y + p1z*p2z)/(m1*m2)
119 anglesum = anglesum + dacos(costheta)
123 if (anglesum.ge.tol)
then
125 node_sism = node_sism + 1
126 sour_ns(node_sism,i_sism) = loc_n_num(isn)
127 dist_sour_ns(node_sism,i_sism) = dsqrt((xipo - xs(isn))**2
128 pos_sour_nx(node_sism,i_sism) = xs(isn)
129 pos_sour_ny(node_sism,i_sism) = ys(isn)
130 pos_sour_nz(node_sism,i_sism) = zs(isn)
subroutine read_sism(xipo, yipo, zipo, x1, y1, z1, x2, y2, z2, x3, y3, z3, nnod, xs, ys, zs, num_ns, sour_ns, i_sism, dist_sour_ns, nl_sism, max_num_ns, loc_n_num, nn_loc, pos_sour_nx, pos_sour_ny, pos_sour_nz)
Generates seismic triangular faults.