38 rho_el, QS_nh, QP_nh, f_val, &
39 Y_lambda_nh, Y_mu_nh, frequency_range, mpi_id)
45 integer*4 :: nn, mpi_id, N_SLS, i, j, k, &
46 PIVOT_QP(N_SLS),PIVOT_QS(N_SLS)
48 real*8 :: f_val, fmin, fmax, esp1, esp2, deltax, &
51 real*8 :: qs_nh, qp_nh, &
52 y_lambda_nh(1,n_sls),&
54 frequency_range(n_sls),&
55 frequency_range_sampling(2*n_sls-1),&
56 ys(n_sls),yp(n_sls), &
57 a_qp(2*n_sls-1,n_sls),rhs_qp(2*n_sls-1),a_qs(2*n_sls-1,n_sls
58 rho, rho_el(nn,nn,nn), &
59 lambda, lambda_el(nn,nn,nn), &
60 mu, mu_el(nn,nn,nn), &
61 rho_all, mu_all, lambda_all
63 rho_all = 0.d0; lambda_all = 0.d0; mu_all = 0.d0
68 mu_all = mu_all + mu_el(i,j,k)
69 lambda_all = lambda_all + lambda_el(i,j,k)
70 rho_all = rho_all + rho_el(i,j,k)
76 lambda = lambda_all/(nn**3)
79 pi = 4.d0*datan(1.d0);
81 if (f_val .le. 10)
then
83 elseif(f_val .le. 100)
then
85 elseif(f_val .le. 1000)
then
87 elseif(f_val .le. 10000)
then
89 elseif(f_val .le. 100000)
then
102 esp1 = log10(fmin); esp2 = log10(fmax);
103 deltax = (esp2-esp1)/(n_sls-1);
106 if (n_sls .eq. 3)
then
108 frequency_range(1) = f_val*0.1
109 frequency_range(2) = f_val*1
110 frequency_range(3) = f_val*10
111 frequency_range_sampling(1) = frequency_range(1);
112 frequency_range_sampling(2) = 0.5*(frequency_range(1)+frequency_range
113 frequency_range_sampling(3) = frequency_range(2);
114 frequency_range_sampling(4) = 0.5*(frequency_range(2)+frequency_range
115 frequency_range_sampling(5) = frequency_range(3);
118 elseif (n_sls .eq. 4)
then
120 frequency_range(1) = 2.*pi*fmin;
121 frequency_range(2) = 2.*pi*10**(esp1+deltax)
122 frequency_range(3) = 2.*pi*10**(esp1+2*deltax)
123 frequency_range(4) = 2.*pi*fmax;
124 frequency_range_sampling(1) = frequency_range(1);
125 frequency_range_sampling(2) = 0.5*(frequency_range(1)+frequency_range
126 frequency_range_sampling(3) = frequency_range(2);
127 frequency_range_sampling(4) = 0.5*(frequency_range(2)+frequency_range
128 frequency_range_sampling(5) = frequency_range(3);
129 frequency_range_sampling(6) = 0.5*(frequency_range(3)+frequency_range
130 frequency_range_sampling(7) = frequency_range(4);
133 elseif (n_sls .eq. 5)
then
135 frequency_range(1) = f_val*0.1
136 frequency_range(2) = f_val*0.5
137 frequency_range(3) = f_val*1
138 frequency_range(4) = f_val*5
139 frequency_range(5) = f_val*10
140 frequency_range_sampling(1) = frequency_range(1);
141 frequency_range_sampling(2) = 0.5*(frequency_range(1)+frequency_range
142 frequency_range_sampling(3) = frequency_range(2);
143 frequency_range_sampling(4) = 0.5*(frequency_range(2)+frequency_range
144 frequency_range_sampling(5) = frequency_range(3);
145 frequency_range_sampling(6) = 0.5*(frequency_range(3)+frequency_range
146 frequency_range_sampling(7) = frequency_range(4);
147 frequency_range_sampling(6) = 0.5*(frequency_range(4)+frequency_range
148 frequency_range_sampling(7) = frequency_range(5);
157 vp2 = (lambda + 2.d0*mu)/rho; vs2 = mu/rho;
159 y_mu_nh(1,:) = 0.d0; y_lambda_nh(1,:) = 0.d0;
160 if (qp_nh .ne. 0.d0 .and. qs_nh .ne. 0.d0)
then
165 a_qp(i,j) = (frequency_range(j)*frequency_range_sampling
166 / (frequency_range(j)**2 + frequency_range_sampling
168 a_qs(i,j) = (frequency_range(j)*frequency_range_sampling
169 / (frequency_range(j)**2 + frequency_range_sampling
173 rhs_qp(i) = 1.d0/qp_nh;
174 rhs_qs(i) = 1.d0/qs_nh;
184 call qr_solve(2*n_sls-1,n_sls, a_qp, rhs_qp, yp)
185 call qr_solve(2*n_sls-1,n_sls, a_qs, rhs_qs, ys)
189 y_lambda_nh(1,:) = (vp2*yp - 2.d0*vs2*ys)/(vp2-2.d0*vs2);