# # = ALF: a collection of routines for computing associated Legendre polynomials (ALFs) # ALF is an extension library for GSL to compute associated Legendre polynomials developed by Patrick Alken. # Ruby/GSL includes interfaces to it if ALF is found during installlation. # # The class and method descriptions below are based on references from the document of ALF (alf-1.0/doc/alf.texi) by P.Alken. # # == Module structure # * GSL::ALF (module) # * GSL::ALF::Workspace (Class) # # == Creating ALF workspace # --- # * GSL::ALF::Workspace.alloc(lmax) # * GSL::ALF.alloc(lmax) # # Creates a workspace for computing associated Legendre polynomials (ALFs). The maximum ALF degree is specified by lmax. The size of this workspace is O(lmax). # # == Methods # --- # * GSL::ALF::Workspace#params(csphase, cnorm, norm) # # Sets various parameters for the subsequent computation of ALFs. If # <tt>csphase</tt> is set to a non-zero value, the Condon-Shortley phase of # (-1)^m will be applied to the associated Legendre functions. The # Condon-Shortley phase is included by default. If <tt>cnorm</tt> is set to # zero, the real normalization of the associated Legendre functions will be # used. The default is to use complex normalization. The norm parameter # defines the type of normalization which will be used. The possible values # are as follows. # * ALF::NORM_SCHMIDT: Schmidt semi-normalized associated Legendre polynomials S_l^m(x). (default) # * ALF::NORM_SPHARM: Associated Legendre polynomials Y_l^m(x) suitable for the calculation of spherical harmonics. # * ALF::NORM_ORTHO: Fully orthonormalized associated Legendre polynomials N_l^m(x). # * ALF::NORM_NONE:: Unnormalized associated Legendre polynomials P_l^m(x). # --- # * GSL::ALF::Workspace#Plm_array(x) # * GSL::ALF::Workspace#Plm_array(lmax, x) # * GSL::ALF::Workspace#Plm_array(x, result) # * GSL::ALF::Workspace#Plm_array(lmax, x, result) # * GSL::ALF::Workspace#Plm_array(x, result, deriv) # * GSL::ALF::Workspace#Plm_array(lmax, x, result, deriv) # # Compute all associated Legendre polynomials P_l^m(x) and optionally their # first derivatives dP_l^m(x)/dx for 0 <= l <= lmax, 0 <= m <= l. The value # of <tt>lmax</tt> cannot exceed the previously specified lmax parameter to # <tt>ALF.alloc</tt>, but may be less. If <tt>lmax</tt> is not given, the # parameter to <tt>ALF.alloc()</tt> is used. The results are stored in # <tt>result</tt>, an instance of <tt>GSL::Vector</tt>. Note that this vector # must have enough length to store all the values for the polynomial # P_l^m(x), and the length required can be known using # <tt>ALF::array_size(lmax)</tt>. If a vector is not given, a new vector is # created and returned. # # The indices of <tt>result</tt> (and <tt>deriv</tt> corresponding to the # associated Legendre function of degree <tt>l</tt> and order <tt>m</tt> can # be obtained by calling <tt>ALF::array_index(l, m)</tt>. # --- # * GSL::ALF::Workspace#Plm_deriv_array(x) # * GSL::ALF::Workspace#Plm_deriv_array(lmax, x) # * GSL::ALF::Workspace#Plm_deriv_array(x, result, deriv) # * GSL::ALF::Workspace#Plm_deriv_array(lmax, x, result, deriv) # # Compute all associated Legendre polynomials P_l^m(x) and their first # derivatives dP_l^m(x)/dx for 0 <= l <= lmax, 0 <= m <= l. # # --- # * GSL::ALF::array_size(lmax) # # Returns the size of arrays needed for the array versions of P_l^m(x). # --- # * GSL::ALF::array_index(l, m) # # Returns the array index of results of <tt>Plm_array()</tt> and # <tt>Plm_deriv_array()</tt> corresponding to P_l^m(x) and dP_l^m(x)/dx # respectively. The index is given by l(l + 1)/2 + m. # #