tuttelikz

scattering efficiency plot 2

Sep 4th, 2017
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.86 KB | None | 0 0
  1. clear all; close all; clc;
  2. %%
  3. lambda = 400*1e-9;
  4. rayleghCondition = 0.5*lambda;
  5. n_s = 1.57;
  6. n_b = 1.33;
  7. w_s = 1.05*1e3;
  8. w_b = 1.0*1e3;
  9. concentration = 0.002;
  10.  
  11. dSphere = 50:100:6500;
  12. diameter = zeros(1,length(dSphere));
  13. itera = 0;
  14.  
  15. for iter = 1:length(dSphere)
  16.     diameter(iter) = dSphere(iter)*1e-9;
  17.     radius(iter) = diameter(iter)/2;
  18.     %%
  19.     k = 2*pi*n_b/lambda;
  20.     x(iter) = k*radius(iter);
  21.     n_rel = n_s/n_b;
  22.     y = n_rel*x(iter);
  23.     % Calculate the summations
  24.     err = 1e-8;
  25.     Qs = 0;
  26.     gQs = 0;
  27.     %%
  28.    
  29.     for n = 1:100000
  30.         Snx = sqrt(pi*x(iter)/2)*besselj(n+0.5,x(iter));
  31.         Sny = sqrt(pi*y/2)*besselj(n+0.5,y);
  32.         Cnx = -sqrt(pi*x(iter)/2)*bessely(n+0.5,x(iter));
  33.         Zetax = Snx+i*Cnx;
  34.         % Calculate the first-order derivatives
  35.         Snx_prime = - (n/x(iter))*Snx+sqrt(pi*x(iter)/2)*besselj(n-0.5,x(iter));
  36.         Sny_prime = - (n/y)*Sny+sqrt(pi*y/2)*besselj(n-0.5,y);
  37.         Cnx_prime = - (n/x(iter))*Cnx-sqrt(pi*x(iter)/2)*bessely(n-0.5,x(iter));
  38.         Zetax_prime = Snx_prime + i*Cnx_prime;
  39.         an_num = Sny_prime*Snx-n_rel*Sny*Snx_prime;
  40.         an_den = Sny_prime*Zetax-n_rel*Sny*Zetax_prime;
  41.         an = an_num/an_den;
  42.         bn_num = n_rel*Sny_prime*Snx-Sny*Snx_prime;
  43.         bn_den = n_rel*Sny_prime*Zetax-Sny*Zetax_prime;
  44.         bn = bn_num/bn_den;
  45.         Qs1 = (2*n+1)*(abs(an)^2+abs(bn)^2);
  46.         Qs = Qs+Qs1;
  47.         if n > 1
  48.             gQs1 = (n-1)*(n+1)/n*real(an_1*conj(an)+bn_1*conj(bn))+(2*n-1)/((n-1)*n)*real(an_1*conj(bn_1));
  49.             gQs = gQs+gQs1;
  50.         end
  51.         an_1 = an;
  52.         bn_1 = bn;
  53.         if abs(Qs1)<(err*Qs) & abs(gQs1)<(err*gQs)
  54.             break;
  55.         end
  56.     end
  57.     %%
  58.     QsArr(iter) = (2/x(iter)^2)*Qs;
  59.    
  60.     if diameter(iter) < rayleghCondition
  61.         itera = itera + 1;
  62.         QsRay(itera) = 8*x(itera)^4/3*abs((n_rel^2 - 1)/(n_rel^2 + 2))^2;
  63.     end
  64.    
  65.     gQsArr(iter) = (4/x(iter)^2)*gQs;
  66.     g(iter) = gQsArr(iter)/QsArr(iter);
  67.     vol_s(iter) = 4*pi/3*radius(iter)^3;
  68.     N_s = concentration*w_b/(vol_s(iter)*w_s);
  69.     sigma_s(iter) = QsArr(iter)*pi*radius(iter)^2;
  70.     mu_s(iter) = N_s*sigma_s(iter);
  71.     mu_s_prime(iter) = mu_s(iter)*(1-g(iter));
  72.     fprintf('%d\n',iter);
  73. end
  74.  
  75. figure()
  76. loglog(x,QsArr);
  77. hold on
  78. loglog(x(1:itera),QsRay);
  79. title('Scattering efficiency versus x=ka')
  80. xlabel('x = ka');
  81. ylabel('Scattering efficiency');
  82. grid on
  83. hold off
  84.  
  85. figure()
  86. semilogx(x,g);
  87. title('Anisotropy g versus x=ka')
  88. xlabel('x = ka');
  89. ylabel('Anisotropy g');
  90. grid on
  91.  
  92. figure()
  93. semilogx(x,sigma_s);
  94. title('Scattering cross section versus x=ka')
  95. xlabel('x = ka');
  96. ylabel('Scattering cross section');
  97. grid on
  98.  
  99.  
  100. % hold on
  101. % loglog(x(1:itera),QsRay);
  102.  
  103.  
  104.  
  105.  
  106. % Output results
  107. % {'wavelength(nm)','Qs ( - )','g (-)','mus (/cm)','mus_prime(/cm)';lambda*1e9,Qs,g,mu_s*1e-2,mu_s_prime*1e-2}
Advertisement
Add Comment
Please, Sign In to add comment