Home > SPlaC v1_0 > Mie > GEN > GenZnAll.m

GenZnAll

PURPOSE ^

computes the three Zn(rho) auxiliary functions for the radial

SYNOPSIS ^

function stZnAll=GenZnAll(nNmax, rho,sBessel)

DESCRIPTION ^

 computes the three Zn(rho) auxiliary functions for the radial
 dependence of VSHs for n=1 to nNmax
 can be used for both regular VSHs (based on j(rho)) or
 irregular VSHs (based on h1(rho)).

 Parameters:
 - nNmax: scalar integer
          number of n in series 
 - rho:   column vector [R x 1] (no zero components allowed, even for regular VSH, for speed optimization)
          arguments of the VSHs
 - sBessel: string defining the Bessel function to be used
           sBessel='j' for or sBessel='h1'
           

 Returns: stZnAll structure with 3 fields 
          containing matrices [R x nNmax] 
 - stZnAll.Z0 is Z_n^0(rho)
 - stZnAll.Z1 is Z_n^1(rho)
 - stZnAll.Z2 is Z_n^2(rho)

 This file is part of the SPlaC v1.0 package (copyright 2008)
 Check the README file for further information

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 if ~isempty(find(rho==0,1))
0002     disp 'Warning: rho=0 arguments not allowed in GenZnAll...'
0003 end
0004 
0005 n=1:nNmax;
0006 nm1=0:nNmax;
0007 nu=nm1+0.5;
0008 
0009 if strcmp(sBessel,'h1')
0010     [f ierr]=besselh(nu,rho);
0011     if (max(max(ierr)) > 0)
0012         disp 'Error in besselh in GenZnAll'
0013     end
0014 else
0015     if strcmp(sBessel,'j')
0016         [f ierr]=besselj(nu,rho);
0017         if (max(max(ierr)) > 0)
0018             disp 'Error in besselj in GenZnAll'
0019         end
0020     else
0021         disp 'Error in GetZnAll: wrong sBessel string...'
0022     end;
0023 end;
0024 
0025 % f is matrix [R x nNmax+1] of cylindrical Bessel
0026 % Z_{n+0.5}(rho), n=0..nNmax
0027 
0028 sq=sqrt((pi/2)./rho); % [R x 1]
0029 sqmat=repmat(sq,1,nNmax+1); % [R x nNmax+1]
0030 f=f.*sqmat;
0031 % f is now matrix of spherical Bessel
0032 % z_n(rho), n=0..nNmax or equivalently z_{n-1}(rho), n=1..nNmax+1
0033 
0034 
0035 rhomat=repmat(rho,1,nNmax); % [R x nNmax]
0036 nmat=repmat(n,length(rho),1); % [R x nNmax]
0037 
0038 stZnAll.Z0=f(:,2:(nNmax+1));
0039 stZnAll.Z1=stZnAll.Z0 ./ rhomat;
0040 
0041 % Computes: Z2_n=z_{n-1} - n Z1_n
0042 % check for loss of precision in sum
0043 stZnAll.Z2=GenCheckSum2Mat(f(:,n), -nmat.*stZnAll.Z1,'Z2','GenZnAll');
0044 
0045 
0046

This web page is part of the SPlaC package © 2008. Contact: Eric Le Ru
Generated on Wed 03-Dec-2008 11:10:14 by m2html © 2003 (adapted)