50 sour_ns,dist_sour_ns,&
51 pos_sour_nx, pos_sour_ny, pos_sour_nz, &
52 check_ns,check_dist_ns,&
55 fun_sism,nf,tag_func,val_sism,&
56 nn_loc, local_n_num,srcmodflag,szsism)
64 integer*4 :: cs_nnz,nm,ne,nl_sism,nf, nn_loc
65 integer*4 :: max_num_ns
66 integer*4 :: im,ie,isism,nn
70 integer*4 :: length_cns,srcmodflag,szsism,val_st
72 integer*4,
dimension(0:cs_nnz) :: cs
73 integer*4,
dimension(nm) :: tm,sd
74 integer*4,
dimension(nl_sism) :: num_ns
75 integer*4,
dimension(nl_sism) :: fun_sism
76 integer*4,
dimension(nn_loc) :: local_n_num
77 integer*4,
dimension(nf) :: tag_func
79 integer*4,
dimension(max_num_ns,nl_sism) :: sour_ns
80 integer*4,
dimension(length_cns,4) :: check_ns
82 real*8 :: vel_prop, dist_b, xb, yb, zb, trup_b, dist_p, trup_p
83 real*8 :: dumvr, delay_tr
85 real*8,
dimension(:),
allocatable :: ct,ww
87 real*8,
dimension(:,:),
allocatable :: dd
88 real*8,
dimension(max_num_ns,nl_sism) :: dist_sour_ns
89 real*8,
dimension(max_num_ns,nl_sism) :: pos_sour_nx, pos_sour_ny,
90 real*8,
dimension(length_cns,1) :: check_dist_ns
91 real*8,
dimension(length_cns,3) :: check_pos_ns
92 real*8,
dimension(nl_sism,szsism) :: val_sism
101 if (srcmodflag.eq.0)
then
103 elseif (srcmodflag.eq.1)
then
107 allocate(ct(nn),ww(nn),dd(nn,nn))
111 if ((sd(im) +1).ne.nn)
then
114 allocate(ct(nn),ww(nn),dd(nn,nn))
119 if (cs(cs(ie -1) +0).eq.tm(im))
then
123 is = nn*nn*(k -1) +nn*(j -1) +i
124 in = cs(cs(ie -1) +is)
127 do ip = 1,num_ns(isism)
129 if (local_n_num(in) .eq. sour_ns(ip,isism
then
131 check_ns(h,1) = sour_ns(ip,isism)
132 check_ns(h,2) = fun_sism(isism)
133 check_ns(h,3) = isism
136 check_pos_ns(h,1) = pos_sour_nx(ip,
137 check_pos_ns(h,2) = pos_sour_ny(ip,
138 check_pos_ns(h,3) = pos_sour_nz(ip,
148 check_dist_ns(h,1) = val_sism(isism
156 if (srcmodflag.eq.0)
then
157 xb = (val_sism(isism,4) + val_sism
158 yb = (val_sism(isism,5) + val_sism
159 zb = (val_sism(isism,6) + val_sism
161 trup_b = val_sism(isism,19)
162 dist_b = dsqrt((val_sism(isism,
163 dist_p = dsqrt((val_sism(isism,
167 trup_p = trup_b*dist_p/dist_b;
171 if (dabs(dist_b) .le. 100)
then
172 check_dist_ns(h,1) = val_sism
174 check_dist_ns(h,1) = (val_sism
177 elseif (srcmodflag.eq.1)
then
178 xb = val_sism(isism,4)
179 yb = val_sism(isism,5)
180 zb = val_sism(isism,6)
181 dist_b = dsqrt((val_sism(isism
182 dist_p = dsqrt((val_sism(isism
186 if (dabs(dist_b) .le. 100)
then
187 check_dist_ns(h,1) = val_sism
193 check_dist_ns(h,1) = val_sism
subroutine check_sism(cs_nnz, cs, nm, tm, sd, nl_sism, num_ns, max_num_ns, sour_ns, dist_sour_ns, pos_sour_nx, pos_sour_ny, pos_sour_nz, check_ns, check_dist_ns, length_cns, check_pos_ns, fun_sism, nf, tag_func, val_sism, nn_loc, local_n_num, srcmodflag, szsism)
Fills array check_ns for seismic force.