Added script front-end for primer-design code
[htsworkflow.git] / htswanalysis / MACS / lib / gsl / gsl-1.11 / doc / specfunc-coulomb.texi
1 @cindex Coulomb wave functions
2 @cindex hydrogen atom
3
4 The prototypes of the Coulomb functions are declared in the header file
5 @file{gsl_sf_coulomb.h}.  Both bound state and scattering solutions are
6 available.
7
8 @menu
9 * Normalized Hydrogenic Bound States::  
10 * Coulomb Wave Functions::      
11 * Coulomb Wave Function Normalization Constant::  
12 @end menu
13
14 @node Normalized Hydrogenic Bound States
15 @subsection Normalized Hydrogenic Bound States
16
17 @deftypefun double gsl_sf_hydrogenicR_1 (double @var{Z}, double @var{r})
18 @deftypefunx int gsl_sf_hydrogenicR_1_e (double @var{Z}, double @var{r}, gsl_sf_result * @var{result})
19 These routines compute the lowest-order normalized hydrogenic bound
20 state radial wavefunction @c{$R_1 := 2Z \sqrt{Z} \exp(-Z r)$}
21 @math{R_1 := 2Z \sqrt@{Z@} \exp(-Z r)}.
22 @end deftypefun
23
24 @deftypefun double gsl_sf_hydrogenicR (int @var{n}, int @var{l}, double @var{Z}, double @var{r})
25 @deftypefunx int gsl_sf_hydrogenicR_e (int @var{n}, int @var{l}, double @var{Z}, double @var{r}, gsl_sf_result * @var{result})
26 These routines compute the @var{n}-th normalized hydrogenic bound state
27 radial wavefunction,
28 @comment
29 @tex
30 \beforedisplay
31 $$
32 R_n := {2 Z^{3/2} \over n^2}  \left({2Z r \over n}\right)^l  \sqrt{(n-l-1)! \over (n+l)!} \exp(-Z r/n) L^{2l+1}_{n-l-1}(2Z r / n).
33 $$
34 \afterdisplay
35 @end tex
36 @ifinfo
37
38 @example
39 R_n := 2 (Z^@{3/2@}/n^2) \sqrt@{(n-l-1)!/(n+l)!@} \exp(-Z r/n) (2Zr/n)^l
40           L^@{2l+1@}_@{n-l-1@}(2Zr/n).  
41 @end example
42
43 @end ifinfo
44 @noindent
45 where @math{L^a_b(x)} is the generalized Laguerre polynomial (@pxref{Laguerre Functions}).
46 The normalization is chosen such that the wavefunction @math{\psi} is
47 given by 
48 @c{$\psi(n,l,r) = R_n Y_{lm}$}
49 @math{\psi(n,l,r) = R_n Y_@{lm@}}.   
50 @end deftypefun
51
52 @node Coulomb Wave Functions
53 @subsection Coulomb Wave Functions
54
55 The Coulomb wave functions @math{F_L(\eta,x)}, @math{G_L(\eta,x)} are
56 described in Abramowitz & Stegun, Chapter 14.  Because there can be a
57 large dynamic range of values for these functions, overflows are handled
58 gracefully.  If an overflow occurs, @code{GSL_EOVRFLW} is signalled and
59 exponent(s) are returned through the modifiable parameters @var{exp_F},
60 @var{exp_G}. The full solution can be reconstructed from the following
61 relations,
62 @tex
63 \beforedisplay
64 $$
65 \eqalign{
66   F_L(\eta,x)  &=  fc[k_L] * \exp(exp_F)\cr
67   G_L(\eta,x)  &=  gc[k_L] * \exp(exp_G)\cr
68 \cr
69   F_L'(\eta,x) &= fcp[k_L] * \exp(exp_F)\cr
70   G_L'(\eta,x) &= gcp[k_L] * \exp(exp_G)
71 }
72 $$
73 \afterdisplay
74 @end tex
75 @ifinfo
76
77 @example
78 F_L(eta,x)  =  fc[k_L] * exp(exp_F)
79 G_L(eta,x)  =  gc[k_L] * exp(exp_G)
80
81 F_L'(eta,x) = fcp[k_L] * exp(exp_F)
82 G_L'(eta,x) = gcp[k_L] * exp(exp_G)
83 @end example
84
85 @end ifinfo
86 @noindent
87
88 @deftypefun int gsl_sf_coulomb_wave_FG_e (double @var{eta}, double @var{x}, double @var{L_F}, int @var{k}, gsl_sf_result * @var{F}, gsl_sf_result * @var{Fp}, gsl_sf_result * @var{G}, gsl_sf_result * @var{Gp}, double * @var{exp_F}, double * @var{exp_G})
89 This function computes the Coulomb wave functions @math{F_L(\eta,x)},
90 @c{$G_{L-k}(\eta,x)$} 
91 @math{G_@{L-k@}(\eta,x)} and their derivatives 
92 @math{F'_L(\eta,x)}, 
93 @c{$G'_{L-k}(\eta,x)$}
94 @math{G'_@{L-k@}(\eta,x)}
95 with respect to @math{x}.  The parameters are restricted to @math{L,
96 L-k > -1/2}, @math{x > 0} and integer @math{k}.  Note that @math{L}
97 itself is not restricted to being an integer. The results are stored in
98 the parameters @var{F}, @var{G} for the function values and @var{Fp},
99 @var{Gp} for the derivative values.  If an overflow occurs,
100 @code{GSL_EOVRFLW} is returned and scaling exponents are stored in
101 the modifiable parameters @var{exp_F}, @var{exp_G}.
102 @end deftypefun
103
104 @deftypefun int gsl_sf_coulomb_wave_F_array (double @var{L_min}, int @var{kmax}, double @var{eta}, double @var{x}, double @var{fc_array}[], double * @var{F_exponent})
105 This function computes the Coulomb wave function @math{F_L(\eta,x)} for
106 @math{L = Lmin \dots Lmin + kmax}, storing the results in @var{fc_array}.
107 In the case of overflow the exponent is stored in @var{F_exponent}.
108 @end deftypefun
109
110 @deftypefun int gsl_sf_coulomb_wave_FG_array (double @var{L_min}, int @var{kmax}, double @var{eta}, double @var{x}, double @var{fc_array}[], double @var{gc_array}[], double * @var{F_exponent}, double * @var{G_exponent})
111 This function computes the functions @math{F_L(\eta,x)},
112 @math{G_L(\eta,x)} for @math{L = Lmin \dots Lmin + kmax} storing the
113 results in @var{fc_array} and @var{gc_array}.  In the case of overflow the
114 exponents are stored in @var{F_exponent} and @var{G_exponent}.
115 @end deftypefun
116
117 @deftypefun int gsl_sf_coulomb_wave_FGp_array (double @var{L_min}, int @var{kmax}, double @var{eta}, double @var{x}, double @var{fc_array}[], double @var{fcp_array}[], double @var{gc_array}[], double @var{gcp_array}[], double * @var{F_exponent}, double * @var{G_exponent})
118 This function computes the functions @math{F_L(\eta,x)},
119 @math{G_L(\eta,x)} and their derivatives @math{F'_L(\eta,x)},
120 @math{G'_L(\eta,x)} for @math{L = Lmin \dots Lmin + kmax} storing the
121 results in @var{fc_array}, @var{gc_array}, @var{fcp_array} and @var{gcp_array}.
122 In the case of overflow the exponents are stored in @var{F_exponent} 
123 and @var{G_exponent}.
124 @end deftypefun
125
126 @deftypefun int gsl_sf_coulomb_wave_sphF_array (double @var{L_min}, int @var{kmax}, double @var{eta}, double @var{x}, double @var{fc_array}[], double @var{F_exponent}[])
127 This function computes the Coulomb wave function divided by the argument
128 @math{F_L(\eta, x)/x} for @math{L = Lmin \dots Lmin + kmax}, storing the
129 results in @var{fc_array}.  In the case of overflow the exponent is
130 stored in @var{F_exponent}. This function reduces to spherical Bessel
131 functions in the limit @math{\eta \to 0}.
132 @end deftypefun
133
134 @node Coulomb Wave Function Normalization Constant
135 @subsection Coulomb Wave Function Normalization Constant
136
137 The Coulomb wave function normalization constant is defined in
138 Abramowitz 14.1.7.
139
140 @deftypefun int gsl_sf_coulomb_CL_e (double @var{L}, double @var{eta}, gsl_sf_result * @var{result})
141 This function computes the Coulomb wave function normalization constant
142 @math{C_L(\eta)} for @math{L > -1}.
143 @end deftypefun
144
145 @deftypefun int gsl_sf_coulomb_CL_array (double @var{Lmin}, int @var{kmax}, double @var{eta}, double @var{cl}[])
146 This function computes the Coulomb wave function normalization constant
147 @math{C_L(\eta)} for @math{L = Lmin \dots Lmin + kmax}, @math{Lmin > -1}.
148 @end deftypefun
149
150
151