38 Y_lambda, Y_mu, frequency_range, mpi_id)
45 integer*4 :: nmat,mpi_id, im, N_SLS, i, j, k, &
46 pivot_qp(n_sls),pivot_qs(n_sls)
48 real*8 :: f_val, fmin, fmax, esp1, esp2, deltax, &
49 rho, lambda, mu, vp2, vs2, pi
51 real*8 :: prop_mat(nmat,4), qs(nmat), qp(nmat), &
52 y_lambda(nmat,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
59 pi = 4.d0*datan(1.d0);
61 if (f_val .le. 10)
then
63 elseif(f_val .le. 100)
then
65 elseif(f_val .le. 1000)
then
67 elseif(f_val .le. 10000)
then
69 elseif(f_val .le. 100000)
then
79 if(mpi_id .eq. 0)
then
80 write(*,*)
'Frequency range where Quality Factor is assumed to be constant is:'
81 write(*,*)
'FMIN =' ,f_val*0.1,
' FMAX =', f_val*10;
85 esp1 = log10(fmin); esp2 = log10(fmax);
86 deltax = (esp2-esp1)/(n_sls-1);
90 if (n_sls .eq. 3)
then
92 frequency_range(1) = f_val*0.1
93 frequency_range(2) = f_val*1
94 frequency_range(3) = f_val*10
95 frequency_range_sampling(1) = frequency_range(1);
96 frequency_range_sampling(2) = 0.5*(frequency_range(1)+frequency_range
97 frequency_range_sampling(3) = frequency_range(2);
98 frequency_range_sampling(4) = 0.5*(frequency_range(2)+frequency_range
99 frequency_range_sampling(5) = frequency_range(3);
102 elseif (n_sls .eq. 4)
then
104 frequency_range(1) = 2.*pi*fmin;
105 frequency_range(2) = 2.*pi*10**(esp1+deltax)
106 frequency_range(3) = 2.*pi*10**(esp1+2*deltax)
107 frequency_range(4) = 2.*pi*fmax;
108 frequency_range_sampling(1) = frequency_range(1);
109 frequency_range_sampling(2) = 0.5*(frequency_range(1)+frequency_range
110 frequency_range_sampling(3) = frequency_range(2);
111 frequency_range_sampling(4) = 0.5*(frequency_range(2)+frequency_range
112 frequency_range_sampling(5) = frequency_range(3);
113 frequency_range_sampling(6) = 0.5*(frequency_range(3)+frequency_range
114 frequency_range_sampling(7) = frequency_range(4);
117 elseif (n_sls .eq. 5)
then
119 frequency_range(1) = f_val*0.1
120 frequency_range(2) = f_val*0.5
121 frequency_range(3) = f_val*1
122 frequency_range(4) = f_val*5
123 frequency_range(5) = f_val*10
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);
131 frequency_range_sampling(8) = 0.5*(frequency_range(4)+frequency_range
132 frequency_range_sampling(9) = frequency_range(5);
137 if(mpi_id .eq. 0)
then
138 write(*,*)
'Sampled frequencies:'
139 write(*,*)
'FREQ =' ,frequency_range_sampling
146 rho = prop_mat(im,1); lambda=prop_mat(im,2); mu=prop_mat(im,3);
147 vp2 = (lambda + 2.d0*mu)/rho; vs2 = mu/rho;
149 y_mu(im,:) = 0.d0; y_lambda(im,:) = 0.d0;
150 if (qp(im) .ne. 0.d0 .and. qs(im) .ne. 0.d0)
then
156 a_qp(i,j) = (frequency_range(j)*frequency_range_sampling
157 / (frequency_range(j)**2 + frequency_range_sampling
159 a_qs(i,j) = (frequency_range(j)*frequency_range_sampling
160 / (frequency_range(j)**2 + frequency_range_sampling
164 rhs_qp(i) = 1.d0/qp(im);
165 rhs_qs(i) = 1.d0/qs(im);
178 call qr_solve(2*n_sls-1,n_sls, a_qp, rhs_qp, yp)
179 call qr_solve(2*n_sls-1,n_sls, a_qs, rhs_qs, ys)
182 y_lambda(im,:) = (vp2*yp - 2.d0*vs2*ys)/(vp2-2.d0*vs2);
197 if(mpi_id .eq. 0)
then
198 write(*,*)
'ANELASTIC COEFFICIENTS FOR MATERIAL ', im,
' ARE '
199 write(*,*)
'Y_MU = ', y_mu(im,:)
200 write(*,*)
'Y_LAMBDA = ', y_lambda(im,:)
201 write(*,*)
'Y_P = ', yp
202 write(*,*)
'----------------------------------------------------'