source: source/class/pf/base/Bohr.js @ 329:9554319e8883

Last change on this file since 329:9554319e8883 was 300:cb3bc1d4c126, checked in by Evgeny Stambulchik <Evgeny.Stambulchik@…>, 13 years ago

Got rid of LymanA - there now a general EinsteinA.

File size: 3.7 KB
Line 
1qx.Class.define("pf.base.Bohr",
2{
3    statics :
4    {
5        // Fine-structure constant
6        alpha  : 7.297352570e-3,
7       
8        // alpha^2
9        alpha2 : 5.325135e-05,
10       
11        // alpha^3
12        alpha3 : 3.885939e-07,
13       
14        // Speed of light (1/alpha)
15        c      : 137.036,
16       
17        // Bohr magneton (alpha/2), must be in sync with B0!
18        mu_B   : 3.64867635e-3,
19       
20        // Proton mass
21        m_p    : 1836.2,
22       
23        // Electron mass (g)
24        m0 : 9.1094e-28,
25        // Hartree (eV)
26        E0 : 27.2113845,
27        // Bohr radius (cm)
28        a0 : 5.291772108e-9,
29        // Atomic unit time (s)
30        t0 : 2.418884327e-17,
31        // Atomic unit velocity (cm/s)
32        v0 : 2.1876912633e8,
33        // Electric field unit (V/cm)
34        F0 : 5.14220632e9,
35        // Magnetic field unit (T), must be in sync with mu_B!
36        B0 : 1.7152553e3,
37        // Volume unit (a0^3)
38        V0 : 1.481847e-25,
39        // Particle density unit (1/V0)
40        n0 : 6.748334e+24,
41        // Frequency unit (Hz)
42        f0 : 4.1341373e16,
43        // Pressure unit (dyne/cm^2)
44        P0 : 2.9421912e14,
45       
46        bindingEnergy : function(Z_core, m_core, n)
47        {
48            return -Z_core*Z_core/(n*n)/2/(1 + 1/m_core);
49        },
50
51        transitionEnergy : function(Z_core, m_core, n_u, n_l)
52        {
53            return this.bindingEnergy(Z_core, m_core, n_u) -
54                   this.bindingEnergy(Z_core, m_core, n_l);
55        },
56       
57        fineStructureCorrection : function(Z_core, n, j)
58        {
59            return -Math.pow(Z_core, 4)*(this.alpha*this.alpha)/
60                (n*n*n)*(1.0/(j + 0.5) - 3.0/(4*n))/2;
61        },
62       
63        fineStructureSplitting : function(Z_core, n)
64        {
65            return this.fineStructureCorrection(Z_core, n, n - 0.5) -
66                   this.fineStructureCorrection(Z_core, n, 0.5);
67        },
68       
69        transitionFineStructure : function(Z_core, n_u, n_l)
70        {
71            return this.fineStructureSplitting(Z_core, n_u) +
72                   this.fineStructureSplitting(Z_core, n_l);
73        },
74
75        /* Quasi-classical absorption oscillator strength */
76        KramersF: function(n_u, n_l)
77        {
78            return 32/(3*Math.PI*Math.sqrt(3))*
79                n_u*n_u*n_u*n_l/Math.pow(n_u*n_u - n_l*n_l, 3);
80        },
81
82        fGauntFactor : function(n_u, n_l)
83        {
84            var g = 1;
85           
86            if (n_u == 2 && n_l == 1) {
87                g = 0.717;
88            } else
89            if (n_u == 3 && n_l == 1) {
90                g = 0.765;
91            } else {
92                var r2 = (n_l/n_u)*(n_l/n_u);
93                var t = Math.pow((1 - r2)*n_l, 2/3);
94                g = 1 - 0.1728*(1 + r2)/t;
95                     // - 0.0496*(1 + 484/15*r2 + r2*r2)/(t*t);
96            }
97           
98            return g;
99        },
100
101        oscillatorStrength : function(n_u, n_l)
102        {
103            if (n_l >= n_u || n_l < 1) {
104                return 0;
105            } else
106            if (n_l == 1) {
107                return 256/3*Math.pow((n_u - 1)/(n_u + 1), 2*n_u)/
108                       Math.pow(1 - 1/(n_u*n_u), 4)/Math.pow(n_u, 3);
109            } else {
110                var g = this.fGauntFactor(n_u, n_l);
111
112                return g*this.KramersF(n_u, n_l);
113            }
114        },
115       
116        EinsteinA : function(Z_core, m_core, n_u, n_l)
117        {
118            var f  = this.oscillatorStrength(n_u, n_l);
119            var dE = this.transitionEnergy(Z_core, m_core, n_u, n_l);
120           
121            return 2*this.alpha3*dE*dE*f*(n_l/n_u)*(n_l/n_u);
122        },
123       
124        classicalIonizationField : function(Z_core, n)
125        {
126            return Math.pow(Z_core, 3)/(16*Math.pow(n, 4));
127        }
128    }
129});
Note: See TracBrowser for help on using the repository browser.