cloudy  trunk
helike_energy.cpp
Go to the documentation of this file.
1 /* This file is part of Cloudy and is copyright (C)1978-2013 by Gary J. Ferland and
2  * others. For conditions of distribution and use see copyright notice in license.txt */
3 #include "cddefines.h"
4 #include "physconst.h"
5 #include "iso.h"
6 #include "helike.h"
7 #include "taulines.h"
8 
9 /*
10  Energy order within 2 3P
11 
12  The order of the levels within the 2 3P level of atomic helium is opposite
13  from the order within astrophysically abundant ions. The indices below
14  consistently point to the correct level, and the energies are correct,
15  so the J levels within 2 3P are not in increasing energy order for helium itself.
16  This is ok since the atomic data is correct, and the difference in energies is so small.
17 */
18 
19 /* Ionization potentials (in wavenumber) for each ion in the iso-seq up to Z=30.
20  * These are exactly what you get if you take EionRYD below and multiply by RYD_INF. */
21 static double EionWN[LIMELM] =
22  /* the first, or H-like, element is not defined for he-like species */
23  {-DBL_MAX,
24  198310.6679 ,610003.839889137,1241136.72201499,2091948.45665631,3162116.52584231,
25  4452446.95015668,5962133.81875305,7692790.05069734,9645221.44709864,11814589.7994457,
26  14209766.0528639,16822685.5022862,19661412.9625169,22717883.6187518,26000162.0663204,
27  29508248.5246975,33234078.1790787,37185715.7345311,41363161.0813172,45766414.4389118,
28  50395475.4781030,55258409.0136949,60339085.8550283,65653635.1927626,71202056.8074231,
29  76976286.4328920,82984388.3352872,89194104.5722390,95726403.3055320};
30 
31 /* Ionization potentials (in Rydbergs) for each ion in the iso-seq up to Z=30.
32  * These are exactly what you get if you take Verner's numbers in atmdat_ph1(0,1,nelem,0)
33  * and multiply by (0.9998787/EVRYD), exactly as is done elsewhere in Cloudy. */
34 static double EionRYD[LIMELM] =
35  /* the first, or H-like, element is not defined for he-like species */
36  {-DBL_MAX,
37  1.807387521,5.558764,11.310070,19.063237,28.815326,40.573682,54.330961,70.101861,
38  87.893725,107.662464,129.488916,153.299590,179.167978,207.020588,236.930910,
39  268.898946,302.851204,338.861175,376.928858,417.054255,459.237363,503.551674,
40  549.850208,598.279945,648.840883,701.459535,756.209388,812.796486,872.323172};
41 
42 /* experimental energies, in wavenumbers, for atomic helium */
43 #define NHE1LEVELS 111
44 /* These energies from Drake 1996, except these divided by c */
45 static double He1Energies[NHE1LEVELS] =
46 {0.0 , 159855.9734, 166277.4390, 169087.8298, 169086.8417, 169086.7652, 171134.8957,
47 183236.7908, 184864.8281, 185564.6657, 186101.5615, 186104.9656, 186209.3638, 190298.6619,
48 190940.6075, 191217.0826, 191444.4868, 191446.4547, 191451.8805, 191451.8964, 191492.7108,
49 193346.9900, 193663.5106, 193800.7280, 193917.1538, 193918.2888, 193921.1207, 193921.1298,
50 193921.6166, 193921.6209, 193942.4612, 194936.1184, 195114.8672, 195192.7542, 195260.0724,
51 195260.7694, 195262.4251, 195262.4307, 195262.7236, 195262.7261, 195262.7930, 195262.7947,
52 195274.9074, 195868.2357, 195978.8938, 196027.3216, 196069.6730, 196070.1273, 196071.1763,
53 196071.1800, 196071.3686, 196071.3702, 196071.4141, 196071.4151, 196071.4283, 196071.4290,
54 196079.0865, 196461.3605, 196534.5628, 196566.7159, 196595.0620, 196595.3730, 196596.0785,
55 196596.0810, 196596.2092, 196596.2103, 196596.2404, 196596.2411, 196596.2503, 196596.2508,
56 196596.2541, 196596.2544, 196601.3992, 196861.9861, 196912.9014, 196935.3339, 196955.2261,
57 196955.4477, 196955.9445, 196955.9463, 196956.0373, 196956.0380, 196956.0595, 196956.0600,
58 196956.0666, 196956.0670, 196956.0693, 196956.0696, 196956.0705, 196956.0707, 196959.6917,
59 197145.2320, 197182.0643, 197198.3343, 197212.8252, 197212.9885, 197213.3513, 197213.3527,
60 197213.4194, 197213.4200, 197213.4358, 197213.4362, 197213.4411, 197213.4414, 197213.4431,
61 197213.4433, 197213.4440, 197213.4442, 197213.4445, 197213.4446, 197216.0885};
62 /* Last energy is 10^1P. */
63 
64 /* >>chng 05 sep 06, RP - update energies of excited states */
65 #define NIONLEVELS 31
66 /* These energies are from CHIANTI 5, up to 5^1P
67  * -1 is flag to use quantum defect routines instead
68  * >>refer He-like Energies Landi et al., 2005; ApJSS, in press
69  * >>refer He-like Energies Dere, K. P. et al. 1997,
70  * >>refercon Astronomy and Astrophysics Suppl. Ser., Vol. 125, pp. 149-173 */
71 static double IonEnergies[LIMELM-2][NIONLEVELS] =
72 {
73 /* ipLITHIUM=2; */
74 {0.00, 476034.98, 491374.60, 494266.57, 494261.17, 494263.44, 501808.59,
75  554754.45, 558777.88, 559501.16, 561243.67, 561273.62, 561752.82,
76  579981.33, 581596.77, 581886.34, 582613.64, 582630.95, 582642.97,
77  582644.04, 582830.11, 591184.26, 591989.55, 592134.36, 592504.32,
78  592514.43, 592520.11, 592521.11, -1.00 , -1.00 , 592634.91},
79 /* ipBERYLLIUM=3;*/
80 {0.00, 956502.00, 981178.00, 983366.00, 983355.00, 983370.00, 997454.00,
81  1121184.00, 1127705.00, 1128300.00, 1131383.00, 1131462.00, 1132390.00,
82  1175295.00, 1178005.00, 1178174.00, 1179451.00, 1179495.00, 1179515.00,
83  1179514.00, 1179830.00, 1199650.00, -1.00 , 1201060.00, 1201702.00,
84  1201800.00, 1201730.00, 1201742.00, -1.00 , -1.00 , 1201894.00},
85 /* ipBORON=4;*/
86 {0.00, 1601545.00, 1635720.00, 1636938.00, 1636922.00, 1636975.00, 1657980.00,
87  1882740.00, 1891790.00, 1892221.00, 1896710.00, 1896836.00, 1898063.00,
88  1976420.00, -1.00 , 1980291.11, 1982132.67, 1982220.00, 1982262.67,
89  1982240.00, 1982762.00, -1.00 , -1.00 , 2020730.00, 2021700.00,
90  -1.00 , 2021665.71, 2021760.00, 2021770.00, 2021770.00, 2022044.00},
91 /* ipCARBON=5;*/
92 {0.00, 2411262.00, 2455024.00, 2455162.74, 2455150.23, 2455286.01, 2483371.00,
93  2839562.00, 2851180.00, 2851418.00, 2857309.67, 2857529.00, 2859375.00,
94  2983541.00, -1.00 , 2988359.00, 2990776.00, 2990923.00, 2990923.40,
95  2990923.40, 2991710.00, 3048927.00, -1.00 , 3051332.00, 3052589.00,
96  3052656.00, 3052653.30, 3052653.30, 3052659.40, 3052659.40, 3053044.00},
97 /* ipNITROGEN=6;*/
98 {0.00, 3385890.00, 3439274.00, 3438312.46, 3438321.13, 3438612.15, 3473790.00,
99  3991860.00, -1.00 , 4006160.00, 4013460.00, 4013770.00, 4016390.00,
100  4196800.00, 4202520.00, 4202620.00, 4205820.00, 4205830.00, 4205810.00,
101  4205820.00, 4206810.00, 4290150.00, 4293020.00, 4293080.00, 4294570.00,
102  4294670.00, 4294700.00, 4294700.00, -1.00 , -1.00 , 4296090.00},
103 /* ipOXYGEN=7;*/
104 {0.00, 4524640.00, 4588380.00, 4585620.76, 4585679.58, 4586231.19, 4629201.00,
105  5338820.00, 5356420.00, 5355670.00, 5364422.67, 5365470.00, 5368550.00,
106  5616340.00, 5623100.00, 5622600.00, 5626225.33, 5626670.00, 5626210.00,
107  5626840.00, 5628100.00, 5742610.00, -1.00 , 5745440.00, 5747509.33,
108  5748230.00, 5747200.00, 5747820.00, -1.00 , -1.00 , 5748450.00},
109 /* ipFLUORINE=8;*/
110 {0.00, 5830040.00, 5903100.00, 5900600.00, 5900750.00, 5901700.00, 5949900.00,
111  6885090.00, 6903270.00, 6902560.00, 6914073.33, 6915900.00, 6916590.00,
112  7244270.00, -1.00 , 7250390.00, 7255960.00, 7254240.00, 7256750.00,
113  7257260.00, 7256370.00, -1.00 , -1.00 , 7410270.00, 7413940.00,
114  7412290.00, 7414760.00, 7415300.00, 7414780.00, -1.00 , 7414000.00},
115 /* ipNEON=9;*/
116 {0.00, 7299940.00, 7382680.00, 7378205.53, 7378506.43, 7380050.00, 7436560.00,
117  8623000.00, 8644880.00, 8644744.44, 8657128.67, 8662400.00, 8660530.00,
118  9075200.00, 9084060.00, 9084141.11, 9090355.33, -1.00 , 9089800.00,
119  9094400.00, 9090630.00, 9282200.00, 9286650.00, 9286713.33, 9288500.00,
120  -1.00 , 9289800.00, 9294400.00, -1.00 , -1.00 , 9290000.00},
121 /* ipSODIUM=10;*/
122 {0.00, 8935337.00, 9027981.00, 9022354.10, 9022876.10, 9025284.70, 9088700.00,
123  10558946.00, 10583431.00, 10583323.56, 10596783.40, 10597475.00, 10601080.00,
124  11115065.00, 11124986.00, 11125102.78, 11130639.00, 11131017.00, 11131051.00,
125  11131056.00, 11132393.00, 11369887.00, 11374868.00, 11374959.89, 11377767.00,
126  11377984.00, 11377987.00, 11377991.00, -1.00 , -1.00 , 11378646.00},
127 /* ipMAGNESIUM=11;*/
128 {0.00, 10736136.00, 10838778.00, 10831985.83, 10832819.18, 10836391.13, 10906612.00,
129  12691170.00, 12718304.00, 12718286.89, 12733392.33, 12734298.00, 12738006.00,
130  13361991.00, 13372977.00, 13373168.22, 13379472.60, 13379830.00, 13379893.00,
131  13379898.00, 13381265.00, 13669618.00, 13675137.00, 13675269.22, 13678467.13,
132  13678680.00, -1.00 , -1.00 , -1.00 , -1.00 , 13679363.00},
133 /* ipALUMINIUM=12;*/
134 {0.00, 12703061.00, 12815760.00, 12807847.00, 12809088.00, 12814213.00, 12891081.00,
135  15020463.00, 15050257.00, 15050434.00, 15067287.07, 15068371.00, 15072141.00,
136  15816791.00, 15828851.00, 15829158.67, 15836125.13, 15836581.00, -1.00 ,
137  -1.00 , 15838068.00, 16182216.00, 16188281.00, 16188471.33, 16192010.13,
138  16192244.00, -1.00 , -1.00 , -1.00 , -1.00 , 16192975.00},
139 /* ipSILICON=13;*/
140 {0.00, 14835945.00, 14958753.00, 14949756.42, 14951532.63, 14958690.57, 15042040.00,
141  17546734.00, 17579166.00, 17579686.44, 17598406.93, 17599605.00, 17603422.00,
142  18479389.00, 18492532.00, 18493007.56, 18500821.00, 18501245.00, -1.00 ,
143  -1.00 , 18502736.00, 18907613.00, 18914246.00, 18914502.78, 18918476.30,
144  18918694.00, -1.00 , -1.00 , -1.00 , -1.00 , 18919421.00},
145 /* ipPHOSPHORUS=14;*/
146 {0.00, 17135768.00, 17268828.00, 17258746.00, 17261164.00, 17270908.00, 17360546.00,
147  20271100.00, 20306284.00, 20307209.11, 20327865.87, 20329412.00, 20332952.00,
148  21350958.00, 21365192.00, 21365892.89, 21374428.00, 21375044.00, 21375302.00,
149  21375302.00, 21376454.00, 21846994.00, 21854144.00, 21854552.89, 21858894.80,
150  21859210.00, 21859340.00, 21859340.00, -1.00 , -1.00 , 21859464.00},
151 /* ipSULPHUR=15;*/
152 {0.00, 19602076.00, 19745473.00, 19734297.61, 19737518.84, 19750576.04, 19846285.00,
153  23193163.00, 23231087.00, 23232596.56, 23255347.53, 23257195.00, 23260416.00,
154  24431101.00, 24446439.00, 24447429.78, 24456981.30, 24457576.00, -1.00 ,
155  -1.00 , 24458842.00, 24999972.00, 25007605.00, 25008238.11, 25013102.40,
156  25013407.00, -1.00 , -1.00 , -1.00 , -1.00 , 25014007.00},
157 /* ipCHLORINE=16;*/
158 {0.00, 22236180.00, 22390000.00, 22377820.00, 22381940.00, 22399100.00, 22500680.00,
159  26314360.00, 26355050.00, 26357324.44, 26382328.67, 26384530.00, 26387270.00,
160  27720900.00, 27738000.00, 27738966.67, 27749520.00, 27750400.00, 27757331.14,
161  27757178.00, 27751600.00, 28367700.00, 28376500.00, 28376977.78, 28382286.67,
162  28382800.00, -1.00 , -1.00 , -1.00 , -1.00 , 28383400.00},
163 /* ipARGON=17;*/
164 {0.00, 25038230.00, 25202480.00, 25189388.10, 25194588.99, 25216810.57, 25323950.00,
165  29634850.00, 29678210.00, 29681541.11, 29713920.00, 29715070.00, 29713740.00,
166  31221700.00, 31239280.00, 31241087.78, -1.00 , -1.00 , -1.00 ,
167  -1.00 , 31254280.00, 31951370.00, 31960150.00, 31961182.22, -1.00 ,
168  -1.00 , -1.00 , -1.00 , -1.00 , -1.00 , 31967860.00},
169 /* ipPOTASSIUM=18;*/
170 {0.00, 28004980.00, 28180480.00, 28165880.00, 28172670.00, 28200800.00, 28312910.00,
171  33151930.00, 33198090.00, 33202622.22, -1.00 , -1.00 , 33237140.00,
172  -1.00 , 34948420.00, -1.00 , -1.00 , -1.00 , -1.00 ,
173  -1.00 , 34964920.00, 35747360.00, 35756712.00, 35758032.00, -1.00 ,
174  -1.00 , -1.00 , -1.00 , -1.00 , -1.00 , 35765192.00},
175 /* ipCALCIUM=19;*/
176 {0.00, 31142150.00, 31328450.00, 31312818.51, 31320486.08, 31356326.72, 31473810.00,
177  36870940.00, 36919930.00, 36925900.00, -1.00 , -1.00 , 36962850.00,
178  38850670.00, 38870530.00, 38873536.67, -1.00 , -1.00 , -1.00 ,
179  -1.00 , 38888680.00, 39761380.00, 39771310.00, 39772968.89, -1.00 ,
180  -1.00 , -1.00 , -1.00 , -1.00 , -1.00 , 39780630.00},
181 /* ipSCANDIUM=20;*/
182 {0.00, 34448120.00, 34645360.00, 34628770.00, 34638550.00, 34682810.00, 34805000.00,
183  40790620.00, 40842480.00, 40850158.89, -1.00 , -1.00 , 40889690.00,
184  42983370.00, 43004390.00, 43008165.56, -1.00 , -1.00 , -1.00 ,
185  -1.00 , 43024380.00, 43992240.00, 44002740.00, 44004803.33, -1.00 ,
186  -1.00 , -1.00 , -1.00 , -1.00 , -1.00 , 44013010.00},
187 /* ipTITANIUM=21;*/
188 {0.00, 37923880.00, 38131640.00, 38114760.00, 38125260.00, 38180620.00, 38308340.00,
189  44911910.00, 44966970.00, 44976472.22, 45016028.67, 45021140.00, 45018670.00,
190  47328500.00, 47351600.00, 47355644.44, 47372326.67, 47374500.00, -1.00 ,
191  -1.00 , 47373500.00, 48440800.00, 48452600.00, 48454581.11, -1.00 ,
192  -1.00 , -1.00 , -1.00 , -1.00 , -1.00 , 48463700.00},
193 /* ipVANADIUM=22;*/
194 {0.00, 41568880.00, 41787830.00, 41770130.00, 41782100.00, 41849950.00, 41982380.00,
195  49234710.00, 49292760.00, 49304574.44, 49347922.67, 49353910.00, 49349740.00,
196  51886600.00, 51910900.00, 51915955.56, 51934113.33, 51936800.00, -1.00 ,
197  -1.00 , 51935100.00, 53107300.00, 53119700.00, 53122217.78, -1.00 ,
198  -1.00 , -1.00 , -1.00 , -1.00 , -1.00 , 53132000.00},
199 /* ipCHROMIUM=23;*/
200 {0.00, 45384110.00, 45614410.00, 45595910.00, 45609360.00, 45691820.00, 45828830.00,
201  53760100.00, 53821190.00, 53835660.00, 53883181.33, 53890160.00, 53884060.00,
202  56658500.00, 56684100.00, 56690288.89, 56710306.67, 56713200.00, -1.00 ,
203  -1.00 , 56710700.00, 57992700.00, 58005800.00, 58008904.44, -1.00 ,
204  -1.00 , -1.00 , -1.00 , -1.00 , -1.00 , 58019400.00},
205 /* ipMANGANESE=24;*/
206 {0.00, 49370240.00, 49612040.00, 49592800.00, 49607700.00, 49707130.00, 49848620.00,
207  58488800.00, 58553000.00, 58570522.22, 58622620.00, 58630700.00, 58622500.00,
208  61644700.00, 61671800.00, 61679233.33, 61701013.33, 61704700.00, -1.00 ,
209  -1.00 , 61701200.00, 63097900.00, 63111600.00, 63115327.78, -1.00 ,
210  -1.00 , -1.00 , -1.00 , -1.00 , -1.00 , 63126600.00},
211 /* ipIRON=25;*/
212 {0.00, 53527760.00, 53781230.00, 53761280.00, 53777570.00, 53896550.00, 54042490.00,
213  63421700.00, 63489000.00, 63509966.67, 63567120.00, 63576500.00, 63565800.00,
214  66846900.00, 66875000.00, 66884011.11, 66908120.00, 66912100.00, -1.00 ,
215  -1.00 , 66907600.00, 68423800.00, 68438100.00, 68442730.00, -1.00 ,
216  -1.00 , -1.00 , -1.00 , -1.00 , -1.00 , 68454800.00},
217 /* ipCOBALT=26;*/
218 {0.00, 57857380.00, 58122700.00, 58102090.00, 58119680.00, 58261180.00, 58411430.00,
219  68560000.00, 68630600.00, 68655444.44, 68718160.00, 68728900.00, 68715500.00,
220  72266000.00, 72295500.00, 72306144.44, 72332586.67, 72337100.00, -1.00 ,
221  -1.00 , 72331500.00, 73972000.00, 73987000.00, 73992318.89, -1.00 ,
222  -1.00 , -1.00 , -1.00 , -1.00 , -1.00 , 74005400.00},
223 /* ipNICKEL=27;*/
224 {0.00, 62358960.00, 62637200.00, 62615022.80, 62633778.00, 62800884.44, 62952670.00,
225  73903340.00, 73976370.00, 74005924.44, -1.00 , -1.00 , 74070580.00,
226  77900890.00, 77930480.00, 77943808.89, -1.00 , -1.00 , -1.00 ,
227  -1.00 , 77970500.00, 79740940.00, 79755710.00, 79762730.00, -1.00 ,
228  -1.00 , -1.00 , -1.00 , -1.00 , -1.00 , 79776290.00},
229 /* ipCOPPER=28;*/
230 {0.00, 67035380.00, 67324970.00, 67303150.00, 67322950.00, 67519170.00, 67678080.00,
231  79453200.00, 79530300.00, 79564500.00, 79640046.67, 79654200.00, 79634300.00,
232  83754400.00, 83786500.00, 83801155.56, 83832993.33, 83838900.00, -1.00 ,
233  -1.00 , 83830600.00, 85734300.00, 85750700.00, 85759175.00, -1.00 ,
234  -1.00 , -1.00 , -1.00 , -1.00 , -1.00 , 85773200.00},
235 /* ipZINC=29;*/
236 {0.00, 71886300.00, 72188400.00, 72166200.00, 72186600.00, 72415600.00, 72579000.00,
237  85212700.00, 85293200.00, 85332955.56, 85415826.67, 85431900.00, 85408300.00,
238  89828600.00, 89862000.00, 89879022.22, 89913666.67, 89920800.00, -1.00 ,
239  -1.00 , 89910900.00, 91953400.00, 91970500.00, 91979222.22, 91995073.33,
240  92000500.00, -1.00 , -1.00 , -1.00 , -1.00 , 91994500.00}};
241 
242 /* helike_quantum_defect - calculate quantum defect for a given level and nuclear charge. */
243 double helike_quantum_defect( long int nelem, long int ipLo )
244 {
245  /* The quantum defect, and parameters a,b, and c */
246  double qd,a,b,c;
247 
248  /* These are values of quantum defects of Helium levels at n=10.
249  * First dimension is spin, second is angular momentum.
250  * The defects are assumed to be constant for all n>10 and
251  * equal to these values. */
252  double HeDefectAsymptotes[2][10] = {
253  {1.40005E-01,-1.20673E-02,2.08056E-03,4.21484E-04,1.14868E-04,
254  4.08648E-05,1.73548E-05,8.33891E-06,4.39680E-06,2.42075E-06},
255  {2.97063E-01,6.81567E-02,2.82381E-03,4.27703E-04,1.17319E-04,
256  4.25254E-05,1.85549E-05,9.24641E-06,5.30882E-06,3.02877E-06}
257  };
258 
259  /* Parameters for fits to quantum defects for */
260  /* P triplet and S orbitals. The dimensions are */
261  /* first: l */
262  /* second: n */
263  /* third: parameters a,b,and c. */
264  double param[3][4][3]=
265  {
266  {{0.6451941,0.3119437,-1.2722842}, /* ^3S */
267  {0.7664874,0.3455675,-1.3976462},
268  {0.8247101,0.3603131,-1.4520500},
269  {0.8878402,0.3714450,-1.4995732}},
270 
271  {{1.4203514,0.5311096,-2.6728087}, /* ^1S */
272  {1.5733513,0.5997339,-2.9253834},
273  {1.4531025,0.5924751,-2.8662756},
274  {1.6038999,0.6342552,-3.0298071}},
275 
276  {{-2.2323488,0.0890840,-0.5166053}, /* ^3P */
277  {-2.0463691,0.1222081,-0.6672983},
278  {-1.9904104,0.1328918,-0.7150879},
279  {-1.9500974,0.1452111,-0.7649031}}
280  };
281 
282  /* Because they cannot be fit to a funtion of the same form as the other orbitals,
283  * the P singlets are fit to a different function, with these parameters and dimensions */
284  /* first: n */
285  /* second: parameters a and b. */
286  double P1[4][2]=
287  {
288  {-56.65245,-3.661923},
289  {-52.03411,-4.941075},
290  {-50.43744,-5.525750},
291  {-49.45137,-5.908615}
292  };
293 
294  long int n = iso_sp[ipHE_LIKE][nelem].st[ipLo].n();
295  long int lqn = iso_sp[ipHE_LIKE][nelem].st[ipLo].l();
296  long int S = iso_sp[ipHE_LIKE][nelem].st[ipLo].S();
297  long int s;
298 
299  if( S==1 )
300  s = 0;
301  else if( S==3 )
302  s = 1;
303  else if( S < 0 )
304  {
305  ASSERT( n > iso_sp[ipHE_LIKE][nelem].n_HighestResolved_max );
306  s = S;
307  }
308  else
309  TotalInsanity();
310 
311  DEBUG_ENTRY( "helike_quantum_defect()" );
312 
313  ASSERT(n >= 1L);
314  ASSERT(lqn >= 0 || n > iso_sp[ipHE_LIKE][nelem].n_HighestResolved_max);
315  ASSERT(n > lqn);
316  /* Only Helium and up, and only those turned on. */
317  ASSERT((nelem >= ipHELIUM) && (nelem < LIMELM));
318 
319  if( n > iso_sp[ipHE_LIKE][nelem].n_HighestResolved_max )
320  {
321  /* collapsed levels are assumed to have zero quantum defect. */
322  qd = 0.;
323  }
324  else if( nelem == ipHELIUM )
325  {
326  if( ipLo<NHE1LEVELS && n<=iso_sp[ipHE_LIKE][nelem].n_HighestResolved_max )
327  {
328  /* defects are calculated from theoretical energies. */
329  qd = n-sqrt(0.999862926*RYD_INF/(EionWN[ipHELIUM] - He1Energies[ipLo]));
330  }
331  else if( lqn<=9 )
332  {
333  ASSERT( s >= 0 && lqn >= 0 );
334  /* defects are set equal to the values at n=10. */
335  qd = HeDefectAsymptotes[s][lqn];
336  }
337  else if( s == 0 )
338  {
339  /* a simple fit for singlet high-l defects. */
340  qd = 0.0497*pow((double)lqn, -4.4303);
341  }
342  else
343  {
344  /* a simple fit for triplet high-l defects. */
345  qd = 0.0656*pow((double)lqn, -4.5606);
346  }
347  }
348  else if( ipLo == ipHe1s1S )
349  {
350  /* Quantum defects for ground state are found from the rydberg
351  * equation, and the ionization potential of the ion.
352  * the lint needs to see assert and not ASSERT */
353  ASSERT(nelem>ipHYDROGEN && nelem<LIMELM );
354  qd = 1.0 - nelem * sqrt(1/EionRYD[nelem]);
355  }
356  else
357  {
358  /* For levels with n > 5, the quantum defect */
359  /* is approximately the same as if n equaled 5. */
360  if( n > 5L )
361  {
362  n = 5L;
363  }
364  /* For P singlets */
365  if( lqn==1L && s==0L )
366  {
367  qd = 1./(P1[n-2][0] + P1[n-2][1] * (nelem+1) * log((double)nelem+1.) );
368  }
369  /* Defects for orbitals with l>2 are approximately equal to zero. */
370  else if( lqn < 2L )
371  {
372  a = param[2*(lqn+1)-s-1][n-2][0];
373  b = param[2*(lqn+1)-s-1][n-2][1];
374  c = param[2*(lqn+1)-s-1][n-2][2];
375  qd = exp((a+c*(nelem+1))/(1.0+b*(nelem+1)));
376  }
377  /* This fit is a simplification of table 11.9 from
378  * >>refer Helike defects Drake, G.W.F., editor. Atomic, Molecular & Optical Physics Handbook.
379  * >>refercon Chapter 11, "High Precision Calculations for Helium", G.W.F. Drake.
380  * >>refercon AIP Press: Woodbury, New York, 1996
381  * This will give quasi-real energies for all transitions, allowing a reasonable
382  * determination of which decays are zeroed due to being below the plasma frequency.
383  * The 1/nelem dependence is arbitray. */
384  else
385  {
386  ASSERT( lqn >= 2L );
387  qd = ( ( 0.0612/(double)nelem ) / pow((double)lqn, 4.44) );
388  }
389  }
390  return qd;
391 }
392 
393 /*helike_energy calculates energy of a given level. */
394 double helike_energy(long int nelem, long int ipLev )
395 {
396  double Ef, Eff_n;
397  long ipISO=ipHE_LIKE;
398 
399  DEBUG_ENTRY( "helike_energy()" );
400 
401  if( N_(ipLev) > iso_sp[ipISO][nelem].n_HighestResolved_max )
402  {
403  /* \todo 2 make this number a constant in physconst.h */
404  /* The first term is the ratio of the helium finite mass rydberg
405  * to the infinite mass rydberg. */
406  Ef = 0.999862926* RYD_INF * POW2((double)nelem/(double)N_(ipLev));
407  }
408  else if( nelem==ipHELIUM && ipLev<NHE1LEVELS )
409  {
410  /* for atomic helium use experimental energies */
411  Ef = EionWN[ipHELIUM] - He1Energies[ipLev];
412  }
413  else if( nelem > ipHELIUM && nelem <= ipZINC &&
414  ipLev < NIONLEVELS && IonEnergies[nelem-2][ipLev] >= 0. )
415  {
416  Ef = EionWN[nelem] - IonEnergies[nelem-2][ipLev];
417  }
418  else
419  {
420  Eff_n = N_(ipLev) - helike_quantum_defect( nelem, ipLev );
421  /* quantum defect can only be negative for singlet P */
422  ASSERT( ( L_(ipLev)==1 && S_(ipLev)==1 ) || ( N_(ipLev) - Eff_n >= 0. ) );
423 
424  /* energies (in wavenumbers) that correspond to quantum defect */
425  Ef = 0.999862926 * RYD_INF * POW2((double)nelem/Eff_n);
426  Ef = 0.999862926 * RYD_INF * (nelem/Eff_n) * (nelem/Eff_n);
427  }
428 
429  ASSERT(Ef > 0.);
430 
431  return Ef;
432 }
433 
helike.h
ipHE_LIKE
const int ipHE_LIKE
Definition: iso.h:63
EionWN
static double EionWN[LIMELM]
Definition: helike_energy.cpp:21
L_
#define L_(A_)
Definition: iso.h:21
ASSERT
#define ASSERT(exp)
Definition: cddefines.h:578
iso.h
ipHYDROGEN
const int ipHYDROGEN
Definition: cddefines.h:305
POW2
#define POW2
Definition: cddefines.h:929
helike_quantum_defect
double helike_quantum_defect(long int nelem, long int ipLo)
Definition: helike_energy.cpp:243
ipZINC
const int ipZINC
Definition: cddefines.h:334
EionRYD
static double EionRYD[LIMELM]
Definition: helike_energy.cpp:34
cddefines.h
ipHe1s1S
const int ipHe1s1S
Definition: iso.h:41
TotalInsanity
NORETURN void TotalInsanity(void)
Definition: service.cpp:886
He1Energies
static double He1Energies[NHE1LEVELS]
Definition: helike_energy.cpp:45
NIONLEVELS
#define NIONLEVELS
Definition: helike_energy.cpp:65
LIMELM
const int LIMELM
Definition: cddefines.h:258
RYD_INF
const UNUSED double RYD_INF
Definition: physconst.h:115
t_iso_sp::st
qList st
Definition: iso.h:453
S
#define S(I_, J_)
Definition: optimize_subplx.cpp:1835
helike_energy
double helike_energy(long int nelem, long int ipLev)
Definition: helike_energy.cpp:394
physconst.h
ipHELIUM
const int ipHELIUM
Definition: cddefines.h:306
taulines.h
iso_sp
t_iso_sp iso_sp[NISO][LIMELM]
Definition: iso.cpp:8
IonEnergies
static double IonEnergies[LIMELM-2][NIONLEVELS]
Definition: helike_energy.cpp:71
S_
#define S_(A_)
Definition: iso.h:22
DEBUG_ENTRY
#define DEBUG_ENTRY(funcname)
Definition: cddefines.h:684
NHE1LEVELS
#define NHE1LEVELS
Definition: helike_energy.cpp:43
N_
#define N_(A_)
Definition: iso.h:20