cloudy  trunk
atmdat_lines_setup.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 /*lines_setup convert level 1 and level 2 line parameters and pointers into internal form
4  * used by code, line data were read in by atmdat_readin */
5 #include "cddefines.h"
6 #include "physconst.h"
7 #include "lines_service.h"
8 #include "prt.h"
9 #include "taulines.h"
10 #include "opacity.h"
11 #include "lines.h"
12 
13 /* following used for generating array indices to level1 lines,
14  * start process, use it, then end */
15 STATIC void initFindLevLine( void );
16 STATIC long ipFindLevLine( realnum , long , long );
17 STATIC void endFindLevLine( void );
18 
19 void lines_setup(void)
20 {
21  long int i;
22 
23  static bool lgFirst = true;
24  bool lgSane;
25 
26  DEBUG_ENTRY( "lines_setup()" );
27 
28  /* this routine takes the line parameters in the wind block data and sorts
29  * them into what is needed for the actual line optical depth arrays */
30 
33  /* this is the dummy line */
34  TauLines[0].WLAng() = 0.;
35  (*TauLines[0].Lo()).g() = 0.;
36  (*TauLines[0].Hi()).g() = 0.;
37  TauLines[0].Emis().gf() = 0.;
38  TauLines[0].EnergyWN() = 0.;
39  (*TauLines[0].Hi()).IonStg() = 0;
40  (*TauLines[0].Hi()).nelem() = 0;
41  /* this is an impossible value of iRedisFun() */
42  TauLines[0].Emis().iRedisFun() = 0;
43  TauLines[0].Emis().Aul() = 0.;
44 
45  /* the first valid line is [0] since zero is the dummy */
46  if( TauLines[1].EnergyWN() <= 0. )
47  {
48  fprintf( ioQQQ, " PROBLEM Insane value for TauLines array.\n" );
49  fprintf( ioQQQ, " Was block data LineData linked in??\n" );
50  fprintf( ioQQQ, " Check that it compiled OK (it probably did not).\n" );
51  TotalInsanity();
52  }
53 
54  /* check that all lines have valid data */
55  lgSane = true;
56  for( i=1; i <= nLevel1; i++ )
57  {
58 
59  if( (*TauLines[i].Lo()).g() <= 0. )
60  {
61  fprintf( ioQQQ, " routine lines_setup, insane lower stat wght\n" );
62  fprintf( ioQQQ, " line index is %5ld\n", i );
63  lgSane = false;
64  }
65 
66  if( (*TauLines[i].Hi()).g() <= 0. )
67  {
68  fprintf( ioQQQ, " routine lines_setup, insane upper stat wght\n" );
69  fprintf( ioQQQ, " line index is %5ld\n", i );
70  lgSane = false;
71  }
72 
73  if( TauLines[i].EnergyWN() <= 0. )
74  {
75  fprintf( ioQQQ, " routine lines_setup, insane energy WN\n" );
76  fprintf( ioQQQ, " line index is %5ld\n", i );
77  lgSane = false;
78  }
79 
80  if( (*TauLines[i].Hi()).IonStg() <= 0 )
81  {
82  fprintf( ioQQQ, " routine lines_setup, insane ioniz stage\n" );
83  fprintf( ioQQQ, " line index is %5ld\n", i );
84  lgSane = false;
85  }
86 
87  if( (*TauLines[i].Hi()).nelem() <= 0 || (*TauLines[i].Hi()).nelem() > (int)LIMELM )
88  {
89  fprintf( ioQQQ, " routine lines_setup, insane Nelem\n" );
90  fprintf( ioQQQ, " line index is %5ld\n", i );
91  lgSane = false;
92  }
93 
94  if( (*TauLines[i].Hi()).IonStg() > (*TauLines[i].Hi()).nelem() )
95  {
96  fprintf( ioQQQ, " routine lines_setup, insane IonStg>Nelem\n" );
97  fprintf( ioQQQ, " line index is %5ld\n", i );
98  lgSane = false;
99  }
100 
101  if( TauLines[i].Emis().iRedisFun() == 0 )
102  {
103  fprintf( ioQQQ, " routine lines_setup, insane line redis fcn\n" );
104  fprintf( ioQQQ, " line index is %5ld\n", i );
105  lgSane = false;
106  }
107 
108  /* use energies for wavelengths in air if wl not forced with wl number on line */
109  /* >>chng 03 oct 07, only make correction for index ref if
110  * if wl was not already set - this is an option to allow
111  * the printed wl to be specified in the level1.dat file */
112  if( TauLines[i].WLAng() <= 0. )
113  {
114  /* make following an air wavelength */
115  TauLines[i].WLAng() =
116  (realnum)(1.0e8/
117  TauLines[i].EnergyWN()/
118  RefIndex( TauLines[i].EnergyWN()));
119  }
120  {
121  /*@-redef@*/
122  enum{DEBUG_LOC=false};
123  /*@+redef@*/
124  if( DEBUG_LOC )
125  {
126  char chString[10];
127  chIonLbl(chString,TauLines[i]);
128  fprintf( ioQQQ,"%s ", chString );
129  prt_wl( ioQQQ , TauLines[i].WLAng() );
130  fprintf(ioQQQ,"\n");
131  }
132  }
133  }
134 
135  if( !lgSane )
136  {
137  fprintf( ioQQQ, " Insane value for line arrays encountered.\n" );
138  fprintf( ioQQQ, " Was block data lines linked in??\n" );
139  fprintf( ioQQQ, " Were errors intreoducted into the line array?\n" );
140  ShowMe();
142  }
143 
144  /* set up array to store hits for each line */
145  initFindLevLine( );
146 
147  /* in following calls to ipFindLevLine the numbers are the integer wavelength
148  * used in the printout, the ion stage, and the atomic number */
149 
150  /* carbon line optical depth data */
151  ipT1656 = ipFindLevLine( 1656 , 1 , 6 );
152 
153  ipT9830 = ipFindLevLine( 9830 , 1 , 6 );
154 
155  ipT8727 = ipFindLevLine( 8727 , 1 , 6 );
156 
157  ipC2_2325 = ipFindLevLine( 2325 , 2 , 6 );
158  ipC2_2324 = ipFindLevLine( 2324 , 2 , 6 );
159  ipC2_2329 = ipFindLevLine( 2329 , 2 , 6 );
160  ipC2_2328 = ipFindLevLine( 2328 , 2 , 6 );
161  ipC2_2327 = ipFindLevLine( 2327 , 2 , 6 );
162 
163  ipT1335 = ipFindLevLine( 1335 , 2 , 6 );
164 
165  ipT1909 = ipFindLevLine( 1910 , 3 , 6 );
166 
167  ipT977 = ipFindLevLine( 977 , 3 , 6 );
168 
169  ipT1550 = ipFindLevLine( 1551 , 4 , 6 );
170 
171  ipT1548 = ipFindLevLine( 1548 , 4 , 6 );
172 
173  ipT386 = ipFindLevLine( 386 , 3 , 6 );
174 
175  ipT310 = ipFindLevLine( 310 , 3 , 6 );
176 
177  /*CIII* 1175, lower level = upper level of 1909*/
178  ipc31175 = ipFindLevLine( 1176 , 3 , 6 );
179 
180  ipT291 = ipFindLevLine( 291 , 3 , 6 );
181 
182  ipT280 = ipFindLevLine( 280 , 3 , 6 );
183 
184  ipT274 = ipFindLevLine( 274 , 3 , 6 );
185 
186  ipT270 = ipFindLevLine( 270 , 3 , 6 );
187 
188  ipT312 = ipFindLevLine( 312 , 4 , 6 );
189 
190  /*carbon fine structure lines added by Jim Kingdon*/
191  ipT610 = ipFindLevLine( 6092000 , 1 , 6 );
192 
193  ipT370 = ipFindLevLine( 3697000 , 1 , 6 );
194 
195  ipT157 = ipFindLevLine( 1576000 , 2 , 6 );
196 
197  /*nitrogen line optical depth data*/
198  ipNI_pumpIndirect = ipFindLevLine( 953.9f , 1 , 7 );
199  ipNI_pumpDirect[0] = ipFindLevLine( 954.1f , 1 , 7 );
200  ipNI_pumpDirect[1] = ipFindLevLine( 951.0f , 1 , 7 );
201  ipNI_pumpDirect[2] = ipFindLevLine( 955.8f , 1 , 7 );
202  ipNI_pumpDirect[3] = ipFindLevLine( 959.4f , 1 , 7 );
203  ipNI_pumpDirect[4] = ipFindLevLine( 955.5f , 1 , 7 );
204  ipNI_pumpDirect[5] = ipFindLevLine( 951.2f , 1 , 7 );
205  ipNI_pumpDirect[6] = ipFindLevLine( 960.2f , 1 , 7 );
206  ipNI_pumpDirect[7] = ipFindLevLine(1159.8f , 1 , 7 );
207  ipNI_pumpDirect[8] = ipFindLevLine(1160.9f , 1 , 7 );
208 
209  ipT1200 = ipFindLevLine( 1200 , 1 , 7 );
210 
211  ipT1085 = ipFindLevLine( 1085 , 2 , 7 );
212 
213  ipN3_1749 = ipFindLevLine( 1749 , 3 , 7 );
214  ipN3_1747 = ipFindLevLine( 1747 , 3 , 7 );
215  ipN3_1754 = ipFindLevLine( 1754 , 3 , 7 );
216  ipN3_1752 = ipFindLevLine( 1752 , 3 , 7 );
217  ipN3_1751 = ipFindLevLine( 1751 , 3 , 7 );
218 
219  ipT990 = ipFindLevLine( 991 , 3 , 7 );
220 
221  ipT1486 = ipFindLevLine( 1486 , 4 , 7 );
222 
223  ipT765 = ipFindLevLine( 765 , 4 , 7 );
224 
225  ipT1243 = ipFindLevLine( 1243 , 5 , 7 );
226 
227  ipT1239 = ipFindLevLine( 1239 , 5 , 7 );
228 
229  ipT374g = ipFindLevLine( 373 , 3 , 7 );
230 
231  /*this is the stronger of the two lines*/
232  ipT374x = ipFindLevLine( 374 , 3 , 7 );
233 
234  ipT2140 = ipFindLevLine( 2141 , 2 , 7 );
235 
236  ipT671 = ipFindLevLine( 671 , 2 , 7 );
237 
238  ipT315 = ipFindLevLine( 315 , 3 , 7 );
239 
240  ipT324 = ipFindLevLine( 324 , 3 , 7 );
241 
242  ipT333 = ipFindLevLine( 333 , 3 , 7 );
243 
244  ipT209 = ipFindLevLine( 209 , 5 , 7 );
245 
246  /*fine structure lines */
247  /*[N II] 121.7*/
248  ipT122 = ipFindLevLine( 1217000 , 2 , 7 );
249 
250  /*[N II] 205.4*/
251  ipT205 = ipFindLevLine( 2054000 , 2 , 7 );
252 
253  /*big disagreement in A for this line, other val is 2x larger*/
254  /*see review in DEO Seaton 70th birthday*/
255  ipT57 = ipFindLevLine( 572100 , 3 , 7 );
256 
257  /*oxygen line optical depth data*/
258  ipT6300 = ipFindLevLine( 6300 , 1 , 8 );
259 
260  ipT6363 = ipFindLevLine( 6363 , 1 , 8 );
261 
262  /*A from NISt 96*/
263  ipT5577 = ipFindLevLine( 5577 , 1 , 8 );
264 
265  ipT834 = ipFindLevLine( 833.8f , 2 , 8 );
266 
267  ipT1661 = ipFindLevLine( 1661 , 3 , 8 );
268 
269  ipT1666 = ipFindLevLine( 1666 , 3 , 8 );
270 
271  ipT835 = ipFindLevLine( 835 , 3 , 8 );
272 
273  ipO4_1400 = ipFindLevLine( 1400 , 4 , 8 );
274  ipO4_1397 = ipFindLevLine( 1397 , 4 , 8 );
275  ipO4_1407 = ipFindLevLine( 1407 , 4 , 8 );
276  ipO4_1405 = ipFindLevLine( 1405 , 4 , 8 );
277  ipO4_1401 = ipFindLevLine( 1401 , 4 , 8 );
278 
279  ipT789 = ipFindLevLine( 789 , 4 , 8 );
280 
281  ipT630 = ipFindLevLine( 630 , 5 , 8 );
282 
283  /*start OI 6 level atom*/
284  ipT1304 = ipFindLevLine( 1304 , 1 , 8 );
285 
286  ipT1039 = ipFindLevLine( 1039 , 1 , 8 );
287 
288  ipT8446 = ipFindLevLine( 8446 , 1 , 8 );
289 
290  ipT4368 = ipFindLevLine( 4368 , 1 , 8 );
291 
292  ipTOI13 = ipFindLevLine( 13200 , 1 , 8 );
293 
294  ipTOI11 = ipFindLevLine( 11300 , 1 , 8 );
295 
296  ipTOI29 = ipFindLevLine( 29000 , 1 , 8 );
297 
298  ipTOI46 = ipFindLevLine( 46000 , 1 , 8 );
299 
300  ipTO1025 = ipFindLevLine( 1025 , 1 , 8 );
301 
302  /*end of OI 6 level atom*/
303 
304  ipT304 = ipFindLevLine( 304 , 3 , 8 );
305 
306  ipT1214 = ipFindLevLine( 1218 , 5 , 8 );
307 
308  ipT150 = ipFindLevLine( 150 , 6 , 8 );
309 
310  /*fine structure lines*/
311  /*[O I] 146 microns*/
312  ipT146 = ipFindLevLine( 1455300 , 1 , 8 );
313 
314  /*[O I] 63 microns*/
315  ipT63 = ipFindLevLine( 631700 , 1 , 8 );
316 
317  /*[O III] 88.3564 m*/
318  ipTO88 = ipFindLevLine( 883300 , 3 , 8 );
319 
320  /*[O III] 51.8145*/
321  ipT52 = ipFindLevLine( 518000 , 3 , 8 );
322 
323  /*[O IV] 25.89mic, A from*/
324  ipT26 = ipFindLevLine( 258800 , 4 , 8 );
325 
326  ipT1032 = ipFindLevLine( 1031.9f , 6 , 8 );
327 
328  ipT1037 = ipFindLevLine( 1037.6f , 6 , 8 );
329 
330  /*neon*/
331  ipT770 = ipFindLevLine( 770.4f , 8 , 10 );
332 
333  ipT780 = ipFindLevLine( 780.3f , 8 , 10 );
334 
335  /*[Ne VI] 7.652 micron*/
336  ipxNe0676 = ipFindLevLine( 76520 , 6 , 10 );
337 
338  ipT895 = ipFindLevLine( 895 , 7 , 10 );
339 
340  ipT88 = ipFindLevLine( 88 , 8 , 10 );
341 
342  /*fine structure lines */
343  /*[Ne II] 12.8*/
344  ipTNe13 = ipFindLevLine( 128100 , 2 , 10 );
345 
346  /*[Ne III] 36.013 m*/
347  ipTNe36 = ipFindLevLine( 360140 , 3 , 10 );
348 
349  /*[Ne III] 15.56 m*/
350  ipTNe16 = ipFindLevLine( 155500 , 3 , 10 );
351 
352  /*[Ne V] 14.32 m*/
353  ipTNe14 = ipFindLevLine( 143200 , 5 , 10 );
354 
355  /*[Ne V] 24.318 m*/
356  ipTNe24 = ipFindLevLine( 243100 , 5 , 10 );
357 
358  /*sodium line optical depth data*/
359  ipT5895 = ipFindLevLine( 5891.9f , 1 , 11 );
360 
361  /*[Na III] 7.3177mic*/
362  ipfsNa373 = ipFindLevLine( 73200 , 3 , 11 );
363 
364  /*[Na IV] 9.039 mic*/
365  ipfsNa490 = ipFindLevLine( 90390 , 4 , 11 );
366 
367  /*[Na IV] 21.29 mic*/
368  ipfsNa421 = ipFindLevLine( 212900 , 4 , 11 );
369 
370  /*[Na VI] 14.40 mic*/
371  ipxNa6143 = ipFindLevLine( 144000 , 6 , 11 );
372 
373  /*[Na VI] 8.611 mic*/
374  ipxNa6862 = ipFindLevLine( 86110 , 6 , 11 );
375 
376  /*[Na VII] 4.68 micron*/
377  ipxNa0746 = ipFindLevLine( 46800 , 7 , 11 );
378 
379  /*magnesium line optical depth data*/
380  ipMgI2853 = ipFindLevLine( 2853 , 1 , 12 );
381 
382  ipMgI2026 = ipFindLevLine( 2026 , 1 , 12 );
383 
384  ipT2796 = ipFindLevLine( 2795.5f , 2 , 12 );
385 
386  ipT2804 = ipFindLevLine( 2802.7f , 2 , 12 );
387 
388  ipT705 = ipFindLevLine( 705 , 9 , 12 );
389 
390  ipT4561 = ipFindLevLine( 4561 , 1 , 12 );
391 
392  /*[Mg V] 1325, 3-1 in three level atom*/
393  ipxMg51325 = ipFindLevLine( 1325 , 5 , 12 );
394 
395  /*[Mg V] 2417, 3-2 in three level atom*/
396  ipxMg52417 = ipFindLevLine( 2417 , 5 , 12 );
397 
398  /*[Mg V] 2855, 2-1 in three level atom, really 2928, 2782*/
399  ipxMg52855 = ipFindLevLine( 2855 , 5 , 12 );
400 
401  /*[Mg VII] 1325, 3-1 in three level atom*/
402  ipxMg71190 = ipFindLevLine( 1190 , 7 , 12 );
403 
404  /*[Mg VII] 2261, 3-2 in three level atom*/
405  ipxMg72261 = ipFindLevLine( 2261 , 7 , 12 );
406 
407  /*[Mg VII] 2569, 2-1 in three level atom, really 2509, 2629*/
408  ipxMg72569 = ipFindLevLine( 2569 , 7 , 12 );
409 
410  /*[Mg VIII] 3.03 micron*/
411  ipxMg08303 = ipFindLevLine( 30300 , 8 , 12 );
412 
413  /*the Mg X 615 li seq doublet*/
414  ipTMg610 = ipFindLevLine( 609.8f , 10 , 12 );
415 
416  ipTMg625 = ipFindLevLine( 624.9f , 10 , 12 );
417 
418  ipT58 = ipFindLevLine( 57.9f , 10 , 12 );
419 
420  /*Mg IV 4.487m*/
421  ipTMg4 = ipFindLevLine( 44850 , 4 , 12 );
422 
423  /*[Mg V] 13.52*/
424  ipTMg14 = ipFindLevLine( 135200 , 5 , 12 );
425 
426  /*[Mg V] 5.610*/
427  ipTMg6 = ipFindLevLine( 56100 , 5 , 12 );
428 
429  /*[Mg VII] 9.033 mic*/
430  ipfsMg790 = ipFindLevLine( 90330 , 7 , 12 );
431 
432  /*[Mg VII] 5.503 mic7 , 12 );*/
433  ipfsMg755 = ipFindLevLine( 55030 , 7 , 12 );
434 
435  /* aluminum line optical depth data */
436  ipAlI3957 = ipFindLevLine( 3957 , 1 , 13 );
437 
438  ipAlI3090 = ipFindLevLine( 3090 , 1 , 13 );
439 
440  ipT1855 = ipFindLevLine( 1855 , 3 , 13 );
441 
442  ipT1863 = ipFindLevLine( 1863 , 3 , 13 );
443 
444  ipT2670 = ipFindLevLine( 2670 , 2 , 13 );
445 
446  /*[Al V] 2.905 mic*/
447  ipAl529 = ipFindLevLine( 29052 , 5 , 13 );
448 
449  /*[Al VI] 3.66 mic*/
450  ipAl6366 = ipFindLevLine( 36600 , 6 , 13 );
451 
452  /*[Al VI] 9.116 mic*/
453  ipAl6912 = ipFindLevLine( 91160 , 6 , 13 );
454 
455  /*[Al VIII] 5.848 mic*/
456  ipAl8575 = ipFindLevLine( 58480 , 8 , 13 );
457 
458  /*[Al VIII] 3.69 mic*/
459  ipAl8370 = ipFindLevLine( 36900 , 8 , 13 );
460 
461  /*[Al IX] 2.04 micron*/
462  ipAl09204 = ipFindLevLine( 20400 , 9 , 13 );
463 
464  ipT639 = ipFindLevLine( 639 , 10 , 13 );
465 
466  /*Al XI 550, 568 Li seq doublet */
467  ipTAl550 = ipFindLevLine( 550 , 11 , 13 );
468 
469  ipTAl568 = ipFindLevLine( 568 , 11 , 13 );
470 
471  ipTAl48 = ipFindLevLine( 48 , 11 , 13 );
472 
473  /*silicon line optical depth data*/
474  ipSi1_130m = ipFindLevLine( 1295823.0f , 1 , 14 );
475  ipSi1_68m = ipFindLevLine( 683995.25f , 1 , 14 );
476 
477  ipSii2518 = ipFindLevLine( 2518 , 1 , 14 );
478 
479  ipSii2215 = ipFindLevLine( 2215 , 1 , 14 );
480 
481  ipSi2_2334 = ipFindLevLine( 2334 , 2 , 14 );
482  ipSi2_2329 = ipFindLevLine( 2329 , 2 , 14 );
483  ipSi2_2350 = ipFindLevLine( 2350 , 2 , 14 );
484  ipSi2_2344 = ipFindLevLine( 2344 , 2 , 14 );
485  ipSi2_2336 = ipFindLevLine( 2336 , 2 , 14 );
486 
487  ipT1808 = ipFindLevLine( 1813.99f , 2 , 14 );
488 
489  ipT1527 = ipFindLevLine( 1531 , 2 , 14 );
490 
491  ipT1305 = ipFindLevLine( 1307.7f , 2 , 14 );
492 
493  ipT1260 = ipFindLevLine( 1263.3f , 2 , 14 );
494 
495  ipT1207 = ipFindLevLine( 1207 , 3 , 14 );
496 
497  ipT1895 = ipFindLevLine( 1892 , 3 , 14 );
498 
499  ipT1394 = ipFindLevLine( 1394 , 4 , 14 );
500 
501  ipT1403 = ipFindLevLine( 1403 , 4 , 14 );
502 
503  /*[Si VI] 1.9641mic*/
504  ipSi619 = ipFindLevLine( 19631 , 6 , 14 );
505 
506  /*[Si X] 1.43 micron*/
507  ipSi10143 = ipFindLevLine( 14300 , 10 , 14 );
508 
509  /* Si X] ll 621.1, 611.7, 598.6 */
510  ipSi10_606 = ipFindLevLine( 606 , 10 , 14 );
511 
512  ipTSi499 = ipFindLevLine( 499 , 12 , 14 );
513 
514  ipTSi521 = ipFindLevLine( 521 , 12 , 14 );
515 
516  ipTSi41 = ipFindLevLine( 41 , 12 , 14 );
517 
518  /*[Si II] 34.8 mic*/
519  ipTSi35 = ipFindLevLine( 348140 , 2 , 14 );
520 
521  /*[Si VII] 2.481*/
522  ipTSi25 = ipFindLevLine( 24810 , 7 , 14 );
523 
524  /*[Si VII] 6.4922*/
525  ipTSi65 = ipFindLevLine( 64920 , 7 ,14 );
526 
527  /*[Si IX] 2.585 mic*/
528  ipTSi3 = ipFindLevLine( 25840 , 9 , 14 );
529 
530  /*[Si IX] 3.929 mic*/
531  ipTSi4 = ipFindLevLine( 39290 , 9 , 14 );
532 
533  /*phosphorus line data*/
534  /*P II 60.64 mic*/
535  ipP0260 = ipFindLevLine( 606400 , 2 , 15 );
536 
537  /*P II 32.87 mic*/
538  ipP0233 = ipFindLevLine( 328700 , 2 , 15 );
539 
540  /*P III 17.885 mic*/
541  ipP0318 = ipFindLevLine( 178850 , 3 , 15 );
542 
543  /*P VII 1.3745 mic*/
544  ipP713 = ipFindLevLine( 13745 , 7 , 15 );
545 
546  /*sulphur line optical depth data*/
547  ipS1_25m = ipFindLevLine( 251947.453f , 1 , 16 );
548  ipS1_56m = ipFindLevLine( 562909.625f , 1 , 16 );
549 
550  ipT1256 = ipFindLevLine( 1256 , 2 , 16 );
551 
552  ipT1194 = ipFindLevLine( 1197.55f , 3 , 16 );
553 
554  ipTS1720 = ipFindLevLine( 1720 , 3 , 16 );
555 
556  ipS4_1405 = ipFindLevLine( 1405 , 4 , 16 );
557  ipS4_1398 = ipFindLevLine( 1398 , 4 , 16 );
558  ipS4_1424 = ipFindLevLine( 1424 , 4 , 16 );
559  ipS4_1417 = ipFindLevLine( 1417 , 4 , 16 );
560  ipS4_1407 = ipFindLevLine( 1406 , 4 , 16 );
561 
562  ipT1198 = ipFindLevLine( 1198 , 5 , 16 );
563 
564  ipT786 = ipFindLevLine( 786.47f , 5 , 16 );
565 
566  /*fine structure lines added in by Jim Kingdon*/
567  ipTS19 = ipFindLevLine( 186700 , 3 , 16 );
568 
569  /*[S III] 33.48*/
570  ipTS34 = ipFindLevLine( 334700 , 3 , 16 );
571 
572  ipTS11 = ipFindLevLine( 105100 , 4 , 16 );
573 
574  /*chlorine line optical depth data*/
575 
576  /* Cl 1 mic */
577  ipCl1_11m = ipFindLevLine( 113296.3984f , 1 , 17 );
578 
579  /*Cl II 14.3678 mic*/
580  ipfsCl214 = ipFindLevLine( 144000 , 2 , 17 );
581 
582  /*Cl II 33.281 mic*/
583  ipfsCl233 = ipFindLevLine( 333000 , 2 , 17 );
584 
585  /*[Cl 4] 20.354 mic*/
586  ipCl04203 = ipFindLevLine( 204000 , 4 , 17 );
587 
588  /*[Cl 4] 11.741 mic*/
589  ipCl04117 = ipFindLevLine( 117000 ,4 , 17 );
590 
591  /*Cl IX 7334A*/
592  ipCl973 = ipFindLevLine( 7334 , 9 , 17 );
593 
594  /*argon fine structure lines*/
595  /*[Ar II]*/
596  ipTAr7 = ipFindLevLine( 69800 , 2 , 18 );
597 
598  /*[Ar III] 9.0 mic*/
599  ipTAr9 = ipFindLevLine( 90000 , 3 , 18 );
600 
601  /*[Ar III] 21.83 mic*/
602  ipTAr22 = ipFindLevLine( 218300 , 3 , 18 );
603 
604  /*[Ar V] 13.1 mic*/
605  ipTAr13 = ipFindLevLine( 131000 , 5 , 18 );
606 
607  /*[Ar V] 8.0 mic*/
608  ipTAr8 = ipFindLevLine( 80000 , 5 , 18 );
609 
610  /*[Ar VI] 4.53 micron*/
611  ipAr06453 = ipFindLevLine( 45300 , 6 , 18 );
612 
613  /*potasium - really should split into two*/
614  ipKI7745 = ipFindLevLine( 7676.2f , 1 , 19 );
615 
616  /*[K III] 4.62 micron*/
617  ipxK03462 = ipFindLevLine( 46200 , 3 , 19 );
618 
619  /*[K IV] 5.982 micron*/
620  ipxK04598 = ipFindLevLine( 59800 , 4 , 19 );
621 
622  /*[K IV] 15.39 micron4 , 19 );*/
623  ipxK04154 = ipFindLevLine( 153900 , 4 , 19 );
624 
625  /*[K VII] 3.19 micron7 , 19 );*/
626  ipxK07319 = ipFindLevLine( 31905 , 7 , 19 );
627 
628  /*calcium line optical depth data*/
629  ipCaI4228 = ipFindLevLine( 4228 , 1 , 20 );
630 
631  ipT3934 = ipFindLevLine( 3934 , 2 , 20 );
632 
633  ipT3969 = ipFindLevLine( 3969 , 2 , 20 );
634 
635  ipT8498 = ipFindLevLine( 8498 , 2 , 20 );
636 
637  ipT8542 = ipFindLevLine( 8542 , 2 , 20 );
638 
639  ipT8662 = ipFindLevLine( 8662 , 2 , 20 );
640 
641  ipT7291 = ipFindLevLine( 7291 , 2 , 20 );
642 
643  ipT7324 = ipFindLevLine( 7324 , 2 , 20 );
644 
645  /*[Ca IV] 3.21 min*/
646  ipTCa3 = ipFindLevLine( 32100 , 4 , 20 );
647 
648  /*scandium data*/
649  /*[Sc V] 2.31 micron*/
650  ipSc05231 = ipFindLevLine( 23100 , 5 , 21 );
651 
652  /*[Sc 13] 2637.97 A */
653  ipSc13264 = ipFindLevLine( 2638 , 13 , 21 );
654  /*iron Fe line optical depth data*/
655 
656  /* [Fe I] ground term */
657  ipFe1_24m = ipFindLevLine( 240359.546f , 1 , 26 );
658  ipFe1_35m = ipFindLevLine( 347043.25f , 1 , 26 );
659  ipFe1_54m = ipFindLevLine( 542946.5625f , 1 , 26 );
660  ipFe1_111m = ipFindLevLine( 1111549.25f , 1 , 26 );
661 
662  ipFeI3884 = ipFindLevLine( 3884 , 1 , 26 );
663 
664  ipFeI3729 = ipFindLevLine( 3729 , 1 , 26 );
665 
666  ipFeI3457 = ipFindLevLine( 3457 , 1 , 26 );
667 
668  ipFeI3021 = ipFindLevLine( 3021 , 1 , 26 );
669 
670  ipFeI2966 = ipFindLevLine( 2966 , 1 , 26 );
671 
672  /*>>chng 03 oct 07, chng wl from 2360 to 2400, the value
673  * before cnhg of feii lines to stuc */
674  ipTuv3 = ipFindLevLine( 2400 , 2 , 26 );
675 
676  ipTr48 = ipFindLevLine( 6200 , 2 , 26 );
677 
678  ipTFe16 = ipFindLevLine( 1080 , 2 , 26 );
679 
680  ipTFe26 = ipFindLevLine( 1500 , 2 , 26 );
681 
682  ipTFe34 = ipFindLevLine( 11500 , 2 , 26 );
683 
684  ipTFe35 = ipFindLevLine( 2500 , 2 , 26 );
685 
686  ipTFe46 = ipFindLevLine( 2300 , 2 , 26 );
687 
688  ipTFe56 = ipFindLevLine( 8900 , 2 , 26 );
689 
690  ipT1122 = ipFindLevLine( 1125.8f , 3 , 26 );
691 
692  ipT191 = ipFindLevLine( 1786 , 2 , 26 );
693 
694  /* Cobalt data */
695  /* [Co XI] 5168.A */
696  ipCo11527 = ipFindLevLine( 5168 , 11 , 27 );
697 
698  /* Nickel data */
699  ipNi1_7m = ipFindLevLine( 75046.164f , 1 , 28 );
700  ipNi1_11m = ipFindLevLine( 113044.031f , 1 , 28 );
701 
702  /* flush the line list, freeing the extra storage and checking that all
703  * lines have been claimed */
704  endFindLevLine( );
705 
709  /* only do this one time, and only if number of atom_level2 lines is positive */
710  if( lgFirst && nWindLine>0)
711  {
712 
713  lgFirst = false;
714  /* these are the massive set of op lines, with g-bar approx cs
715  * confirm that input data are valid */
716 
717  for( i=0; i < nWindLine; i++ )
718  {
719  /* this information was read in in createdata */
720  ASSERT( (*TauLine2[i].Hi()).nelem() > 0 );
721  ASSERT( (*TauLine2[i].Hi()).nelem() <= (int)LIMELM );
722 
723  ASSERT( (*TauLine2[i].Hi()).IonStg() > 0 );
724  ASSERT( (*TauLine2[i].Hi()).IonStg() <= (int)LIMELM );
725 
726  ASSERT( (*TauLine2[i].Lo()).g() >0. );
727 
728  ASSERT( (*TauLine2[i].Hi()).g() > 0. );
729 
730  /* check that energy is positive*/
731  ASSERT( TauLine2[i].EnergyWN() > 0 );
732 
733  /* TauLine2[i].Emis().gf() this is gf if positive, A if negative */
734  /* test whether a or gf entered, convert A to gf */
735  if( TauLine2[i].Emis().gf() < 0. )
736  {
737  /* convert A (=-gf) into real gf */
738  TauLine2[i].Emis().gf() *= (realnum)((-(*TauLine2[i].Hi()).g())/TRANS_PROB_CONST/POW2(TauLine2[i].EnergyWN()));
739  }
740 
741  /*now put into standard format */
742  TauLine2[i].WLAng() = 1.e8f/TauLine2[i].EnergyWN();
743  (*TauLine2[i].Lo()).Pop() = 0.;
744  (*TauLine2[i].Hi()).Pop() = 0.;
745  TauLine2[i].Emis().iRedisFun() = ipPRD;
746 
747  /* these are line optical depth arrays
748  * inward optical depth */
749  TauLine2[i].Emis().TauIn() = opac.taumin;
750  TauLine2[i].Emis().TauCon() = opac.taumin;
751  TauLine2[i].Emis().ColOvTot() = 0.;
752  /* outward optical depth */
753  TauLine2[i].Emis().TauTot() = 1e20f;
754  /* escape probability */
755  TauLine2[i].Emis().Pesc() = 1.;
756  /* inward part of line */
757  TauLine2[i].Emis().FracInwd() = 1.;
758  /* destruction probability */
759  TauLine2[i].Emis().Pdest() = 0.;
760  TauLine2[i].Emis().Pelec_esc() = 0.;
761  /* line pumping rate */
762  TauLine2[i].Emis().pump() = 0.;
763  /* population of lower level */
764  (*TauLine2[i].Lo()).Pop() = 0.;
765  /* population of upper level */
766  (*TauLine2[i].Hi()).Pop() = 0.;
767  /* population of lower level with correction for stim emission */
768  TauLine2[i].Emis().PopOpc() = 0.;
769  /* following two heat exchange excitation, deexcitation */
770  TauLine2[i].Coll().cool() = 0.;
771  TauLine2[i].Coll().heat() = 0.;
772  /* intensity of line */
773  TauLine2[i].Emis().xIntensity() = 0.;
774  /* number of photons emitted in line */
775  TauLine2[i].Emis().phots() = 0.;
776  /* ots rate */
777  TauLine2[i].Emis().ots() = 0.;
778  }
779  }
780 
781  for( i=0; i < nUTA; i++ )
782  {
783  /* this information was read in in createdata */
784  ASSERT( (*UTALines[i].Hi()).nelem() > 0 );
785  ASSERT( (*UTALines[i].Hi()).nelem() <= (int)LIMELM );
786 
787  ASSERT( (*UTALines[i].Hi()).IonStg() > 0 );
788  ASSERT( (*UTALines[i].Hi()).IonStg() <= (int)LIMELM );
789 
790  ASSERT( (*UTALines[i].Lo()).g() > 0. );
791 
792  ASSERT( (*UTALines[i].Hi()).g() > 0. );
793 
794  /* check that energy is positive*/
795  ASSERT( UTALines[i].EnergyWN() > 0 );
796 
797  (*UTALines[i].Lo()).Pop() = 0.;
798  (*UTALines[i].Hi()).Pop() = 0.;
799  UTALines[i].Emis().iRedisFun() = ipPRD;
800 
801  /* these are line optical depth arrays
802  * inward optical depth */
803  UTALines[i].Emis().TauIn() = opac.taumin;
804  UTALines[i].Emis().TauCon() = opac.taumin;
805  UTALines[i].Emis().ColOvTot() = 0.;
806  /* outward optical depth */
807  UTALines[i].Emis().TauTot() = 1e20f;
808  /* escape probability */
809  UTALines[i].Emis().Pesc() = 1.;
810  /* inward part of line */
811  UTALines[i].Emis().FracInwd() = 1.;
812  /* destruction probability */
813  UTALines[i].Emis().Pdest() = 0.;
814  UTALines[i].Emis().Pelec_esc() = 0.;
815  /* line pumping rate */
816  UTALines[i].Emis().pump() = 0.;
817  /* population of lower level */
818  (*UTALines[i].Lo()).Pop() = 0.;
819  /* population of upper level */
820  (*UTALines[i].Hi()).Pop() = 0.;
821  /* population of lower level with correction for stim emission */
822  UTALines[i].Emis().PopOpc() = 0.;
823  /* following two heat exchange excitation, deexcitation */
824  UTALines[i].Coll().cool() = 0.;
825  /* heat is the net heat per pump and was set when data read in
826  * this is different from other lines with this structure
827  UTALines[i].Coll().heat() = 0.;*/
828  /* intensity of line */
829  UTALines[i].Emis().xIntensity() = 0.;
830  /* number of photons emitted in line */
831  UTALines[i].Emis().phots() = 0.;
832  UTALines[i].Emis().ots() = 0.;
833  }
834 
835  for( i=0; i < nHFLines; i++ )
836  {
837  /* this information was read in in createdata */
838  ASSERT( (*HFLines[i].Hi()).nelem() > 0 );
839  ASSERT( (*HFLines[i].Hi()).nelem() <= (int)LIMELM );
840 
841  ASSERT( (*HFLines[i].Hi()).IonStg() > 0 );
842  ASSERT( (*HFLines[i].Hi()).IonStg() <= (int)LIMELM );
843 
844  ASSERT( (*HFLines[i].Lo()).g() > 0. );
845 
846  ASSERT( (*HFLines[i].Hi()).g() > 0. );
847 
848  /* check that energy is positive*/
849  ASSERT( HFLines[i].EnergyWN() > 0 );
850  ASSERT( HFLines[i].Emis().Aul()>0 );
851  ASSERT( HFLines[i].Emis().damp()>0 );
852 
853  /* HFLines[i].Emis->gf() this is gf if positive, A if negative */
854  /* test whether a or gf entered, convert A to gf */
855  if( HFLines[i].Emis().gf() < 0. )
856  {
857  /* convert A (=-gf) into real gf */
858  HFLines[i].Emis().gf() *= (realnum)(-(*HFLines[i].Hi()).g()/TRANS_PROB_CONST/POW2(HFLines[i].EnergyWN()));
859  }
860 
861  /*now put into standard format */
862  HFLines[i].WLAng() = 1.e8f/HFLines[i].EnergyWN();
863  (*HFLines[i].Lo()).Pop() = 0.;
864  (*HFLines[i].Hi()).Pop() = 0.;
865  /* change from partial to complete redistribution */
866  HFLines[i].Emis().iRedisFun() = ipCRD;
867 
868  /* these are line optical depth arrays
869  * inward optical depth */
870  HFLines[i].Emis().TauIn() = opac.taumin;
871  HFLines[i].Emis().TauCon() = opac.taumin;
872  HFLines[i].Emis().ColOvTot()=0;
873  /* outward optical depth */
874  HFLines[i].Emis().TauTot() = 1e20f;
875  /* escape probability */
876  HFLines[i].Emis().Pesc() = 1.;
877  /* inward part of line */
878  HFLines[i].Emis().FracInwd() = 1.;
879  /* destruction probability */
880  HFLines[i].Emis().Pdest() = 0.;
881  HFLines[i].Emis().Pelec_esc() = 0.;
882  /* line pumping rate */
883  HFLines[i].Emis().pump() = 0.;
884  /* population of lower level */
885  (*HFLines[i].Lo()).Pop() = 0.;
886  /* population of upper level */
887  (*HFLines[i].Hi()).Pop() = 0.;
888  /* population of lower level with correction for stim emission */
889  HFLines[i].Emis().PopOpc() = 0.;
890  /* following two heat exchange excitation, deexcitation */
891  HFLines[i].Coll().cool() = 0.;
892  HFLines[i].Coll().heat() = 0.;
893  /* intensity of line */
894  HFLines[i].Emis().xIntensity() = 0.;
895  /* number of photons emitted in line */
896  HFLines[i].Emis().phots() = 0.;
897  HFLines[i].Emis().ots() = 0.;
898  }
899  return;
900 }
901 
902 /* following used to save whether lines have been claimed by a pointer */
903 static int *lev2set;
904 
905 /*generate pointer to level 1 line using wavelengtgh, ion, element */
907  /* realnum ID wavelength, in angstroms */
908  realnum wl ,
909  /* state of ionization, 1 for neutral atom */
910  long ion ,
911  /* element number, 1 for H, 26 for Fe */
912  long nelem)
913 {
914  long i;/* use for counter in for loop */
915 
916  DEBUG_ENTRY( "ipFindLevLine()" );
917 
918  ASSERT( wl > 0. );
919  ASSERT( ion > 0 );
920  ASSERT( ion <= LIMELM );
921  ASSERT( nelem > 0 );
922  ASSERT( nelem <= LIMELM );
923 
924  /* look for the line */
925  for( i=1; i<= nLevel1; ++i )
926  {
927  if( (*TauLines[i].Hi()).nelem() == (int)nelem &&
928  (*TauLines[i].Hi()).IonStg() == (int)ion &&
929  // wl hit within relative accuracy of 0.05A in 1000A
930  fabs(TauLines[i].WLAng() - wl)/max(1000.,wl) < 0.05/1000. )
931  {
932  /* remember that we have hit this line */
933  lev2set[i] = true;
934  /* and return pointer to the label*/
935  return i;
936  }
937  }
938  fprintf(ioQQQ,
939  " ipFindLevLine could not find a line with following properties:\n"
940  " wavelength=%f\n"
941  " ion stage =%li\n"
942  " atomic num=%li\n",
943  wl , ion, nelem );
944  return -1;
945 }
946 
948 {
949  long i;
950 
951  DEBUG_ENTRY( "initFindLevLine()" );
952 
953  /* generate the array of ints to store true and false */
954  lev2set = (int*)MALLOC( (size_t)(nLevel1+1)*sizeof(int) );
955 
956  /* set them all false, saying that they have not been claimed by
957  * one of the line pointers */
958  for( i=1; i<=nLevel1; ++i )
959  lev2set[i] = false;
960  return;
961 }
962 
963 STATIC void endFindLevLine( void )
964 {
965  long i;
966  bool lgAbort_loc=false;
967 
968  DEBUG_ENTRY( "endFindLevLine()" );
969 
970  /* set them all false, saying that they have not been claimed by
971  * one of the line pointers */
972  for( i=1; i<=nLevel1; ++i )
973  {
974  if( !lev2set[i] )
975  {
976  fprintf(ioQQQ,"PROBLEM endFindLevLine warning; line %li not claimed\n",i);
977  fprintf(ioQQQ,
978  " line had the following properties:\n"
979  " wavelength=%f\n"
980  " ion stage =%i\n"
981  " atomic num=%i\n",
982  TauLines[i].WLAng() ,
983  (*TauLines[i].Hi()).IonStg() ,
984  (*TauLines[i].Hi()).nelem() );
985  lgAbort_loc = true;
986  }
987  }
988 
989  /* generate the array of ints to store true and false */
990  free(lev2set);
991 
992  if( lgAbort_loc )
993  {
994  fprintf(ioQQQ," problems found entering the data. I live in lines_setup.c\n");
996  }
997  return;
998 }
ipT4368
long ipT4368
Definition: atmdat_readin.cpp:50
ipTOI46
long ipTOI46
Definition: atmdat_readin.cpp:51
ipT3934
long ipT3934
Definition: atmdat_readin.cpp:81
ipT834
long ipT834
Definition: atmdat_readin.cpp:48
ipT990
long ipT990
Definition: atmdat_readin.cpp:43
ipS4_1405
long ipS4_1405
Definition: atmdat_readin.cpp:90
ipT8542
long ipT8542
Definition: atmdat_readin.cpp:82
ipfsNa490
long ipfsNa490
Definition: atmdat_readin.cpp:57
ipTS19
long ipTS19
Definition: atmdat_readin.cpp:77
ipT770
long ipT770
Definition: atmdat_readin.cpp:54
ipP713
long ipP713
Definition: atmdat_readin.cpp:75
ipT63
long ipT63
Definition: atmdat_readin.cpp:53
ipTFe16
long ipTFe16
Definition: atmdat_readin.cpp:87
ipT1037
long ipT1037
Definition: atmdat_readin.cpp:54
ipAl529
long ipAl529
Definition: atmdat_readin.cpp:66
lines.h
ipNi1_11m
long ipNi1_11m
Definition: atmdat_readin.cpp:97
ipTNe24
long ipTNe24
Definition: atmdat_readin.cpp:56
ipAl09204
long ipAl09204
Definition: atmdat_readin.cpp:67
ipT1808
long ipT1808
Definition: atmdat_readin.cpp:69
ipSi2_2350
long ipSi2_2350
Definition: atmdat_readin.cpp:94
ipTFe34
long ipTFe34
Definition: atmdat_readin.cpp:87
ipTr48
long ipTr48
Definition: atmdat_readin.cpp:87
initFindLevLine
STATIC void initFindLevLine(void)
Definition: atmdat_lines_setup.cpp:947
ipS4_1407
long ipS4_1407
Definition: atmdat_readin.cpp:90
ipTuv3
long ipTuv3
Definition: atmdat_readin.cpp:86
ipTS11
long ipTS11
Definition: atmdat_readin.cpp:77
ipTCa3
long ipTCa3
Definition: atmdat_readin.cpp:83
ipxMg52417
long ipxMg52417
Definition: atmdat_readin.cpp:60
ipSc13264
long ipSc13264
Definition: atmdat_readin.cpp:84
ipTSi25
long ipTSi25
Definition: atmdat_readin.cpp:73
ioQQQ
FILE * ioQQQ
Definition: cddefines.cpp:7
ipO4_1400
long ipO4_1400
Definition: atmdat_readin.cpp:91
nLevel1
long int nLevel1
Definition: taulines.cpp:28
ipT1304
long ipT1304
Definition: atmdat_readin.cpp:49
ipAlI3090
long ipAlI3090
Definition: atmdat_readin.cpp:64
ipCl973
long ipCl973
Definition: atmdat_readin.cpp:78
ipTFe46
long ipTFe46
Definition: atmdat_readin.cpp:88
ipSii2215
long ipSii2215
Definition: atmdat_readin.cpp:69
ipT671
long ipT671
Definition: atmdat_readin.cpp:45
realnum
float realnum
Definition: cddefines.h:103
lines_setup
void lines_setup(void)
Definition: atmdat_lines_setup.cpp:19
nWindLine
long nWindLine
Definition: cdinit.cpp:19
ipC2_2325
long ipC2_2325
Definition: atmdat_readin.cpp:93
ipO4_1397
long ipO4_1397
Definition: atmdat_readin.cpp:91
STATIC
#define STATIC
Definition: cddefines.h:97
nUTA
long int nUTA
Definition: taulines.cpp:26
ipT1661
long ipT1661
Definition: atmdat_readin.cpp:48
ipSii2518
long ipSii2518
Definition: atmdat_readin.cpp:68
ipTSi41
long ipTSi41
Definition: atmdat_readin.cpp:72
ipTSi499
long ipTSi499
Definition: atmdat_readin.cpp:72
ipNI_pumpIndirect
long ipNI_pumpIndirect
Definition: atmdat_readin.cpp:99
ipT374g
long ipT374g
Definition: atmdat_readin.cpp:44
ipT270
long ipT270
Definition: atmdat_readin.cpp:41
ipT2804
long ipT2804
Definition: atmdat_readin.cpp:59
ipfsMg755
long ipfsMg755
Definition: atmdat_readin.cpp:64
ipTO88
long ipTO88
Definition: atmdat_readin.cpp:53
ipS4_1398
long ipS4_1398
Definition: atmdat_readin.cpp:90
ipT1122
long ipT1122
Definition: atmdat_readin.cpp:88
ipFeI3884
long ipFeI3884
Definition: atmdat_readin.cpp:85
ipSi2_2336
long ipSi2_2336
Definition: atmdat_readin.cpp:94
ipT52
long ipT52
Definition: atmdat_readin.cpp:53
ipAl6912
long ipAl6912
Definition: atmdat_readin.cpp:66
ipS1_56m
long ipS1_56m
Definition: atmdat_readin.cpp:95
ipT780
long ipT780
Definition: atmdat_readin.cpp:54
ipT310
long ipT310
Definition: atmdat_readin.cpp:40
ipTAr7
long ipTAr7
Definition: atmdat_readin.cpp:79
ipfsNa373
long ipfsNa373
Definition: atmdat_readin.cpp:57
ipT370
long ipT370
Definition: atmdat_readin.cpp:42
lines_service.h
ipT1198
long ipT1198
Definition: atmdat_readin.cpp:76
ipTMg6
long ipTMg6
Definition: atmdat_readin.cpp:63
ipNi1_7m
long ipNi1_7m
Definition: atmdat_readin.cpp:97
ipFeI3729
long ipFeI3729
Definition: atmdat_readin.cpp:85
ipTMg14
long ipTMg14
Definition: atmdat_readin.cpp:63
ASSERT
#define ASSERT(exp)
Definition: cddefines.h:578
ipTAr22
long ipTAr22
Definition: atmdat_readin.cpp:79
ipAlI3957
long ipAlI3957
Definition: atmdat_readin.cpp:64
ipT58
long ipT58
Definition: atmdat_readin.cpp:63
ipC2_2327
long ipC2_2327
Definition: atmdat_readin.cpp:93
ipTAl48
long ipTAl48
Definition: atmdat_readin.cpp:68
ipP0260
long ipP0260
Definition: atmdat_readin.cpp:74
ipxMg72569
long ipxMg72569
Definition: atmdat_readin.cpp:62
opac
t_opac opac
Definition: opacity.cpp:5
POW2
#define POW2
Definition: cddefines.h:929
ipTOI29
long ipTOI29
Definition: atmdat_readin.cpp:51
endFindLevLine
STATIC void endFindLevLine(void)
Definition: atmdat_lines_setup.cpp:963
ipS1_25m
long ipS1_25m
Definition: atmdat_readin.cpp:95
ipCl1_11m
long ipCl1_11m
Definition: atmdat_readin.cpp:95
ipT1335
long ipT1335
Definition: atmdat_readin.cpp:38
ipT1486
long ipT1486
Definition: atmdat_readin.cpp:43
ipfsNa421
long ipfsNa421
Definition: atmdat_readin.cpp:57
ipT1656
long ipT1656
Definition: atmdat_readin.cpp:37
ipT1895
long ipT1895
Definition: atmdat_readin.cpp:70
ipT209
long ipT209
Definition: atmdat_readin.cpp:46
ipT1305
long ipT1305
Definition: atmdat_readin.cpp:71
ipTNe36
long ipTNe36
Definition: atmdat_readin.cpp:56
ipT3969
long ipT3969
Definition: atmdat_readin.cpp:82
ipT1207
long ipT1207
Definition: atmdat_readin.cpp:70
ipT7291
long ipT7291
Definition: atmdat_readin.cpp:83
ipT1039
long ipT1039
Definition: atmdat_readin.cpp:50
ipT895
long ipT895
Definition: atmdat_readin.cpp:55
ipT315
long ipT315
Definition: atmdat_readin.cpp:45
ipSi10143
long ipSi10143
Definition: atmdat_readin.cpp:72
ipT4561
long ipT4561
Definition: atmdat_readin.cpp:60
EXIT_FAILURE
#define EXIT_FAILURE
Definition: cddefines.h:140
ipxK03462
long ipxK03462
Definition: atmdat_readin.cpp:80
ipMgI2853
long ipMgI2853
Definition: atmdat_readin.cpp:58
ipfsMg790
long ipfsMg790
Definition: atmdat_readin.cpp:64
ipT1243
long ipT1243
Definition: atmdat_readin.cpp:43
ipT1260
long ipT1260
Definition: atmdat_readin.cpp:71
ipT9830
long ipT9830
Definition: atmdat_readin.cpp:37
ipT5577
long ipT5577
Definition: atmdat_readin.cpp:47
ipP0233
long ipP0233
Definition: atmdat_readin.cpp:74
ipTAl568
long ipTAl568
Definition: atmdat_readin.cpp:68
ipT1194
long ipT1194
Definition: atmdat_readin.cpp:75
ipxNa6143
long ipxNa6143
Definition: atmdat_readin.cpp:58
ipT2670
long ipT2670
Definition: atmdat_readin.cpp:65
ipT280
long ipT280
Definition: atmdat_readin.cpp:40
ipSc05231
long ipSc05231
Definition: atmdat_readin.cpp:84
ipxMg08303
long ipxMg08303
Definition: atmdat_readin.cpp:62
cddefines.h
ipT324
long ipT324
Definition: atmdat_readin.cpp:45
ipSi2_2334
long ipSi2_2334
Definition: atmdat_readin.cpp:94
chIonLbl
void chIonLbl(char *chIonLbl_v, const TransitionProxy &t)
Definition: transition.cpp:195
lev2set
static int * lev2set
Definition: atmdat_lines_setup.cpp:903
ipSi10_606
long ipSi10_606
Definition: atmdat_readin.cpp:49
TotalInsanity
NORETURN void TotalInsanity(void)
Definition: service.cpp:886
ipT2140
long ipT2140
Definition: atmdat_readin.cpp:45
TauLine2
TransitionList TauLine2("TauLine2", &AnonStates)
ipTO1025
long ipTO1025
Definition: atmdat_readin.cpp:51
ipT333
long ipT333
Definition: atmdat_readin.cpp:46
ipCl04117
long ipCl04117
Definition: atmdat_readin.cpp:78
ipN3_1752
long ipN3_1752
Definition: atmdat_readin.cpp:92
ipT146
long ipT146
Definition: atmdat_readin.cpp:52
ipT705
long ipT705
Definition: atmdat_readin.cpp:60
ipTAr13
long ipTAr13
Definition: atmdat_readin.cpp:79
ipTOI11
long ipTOI11
Definition: atmdat_readin.cpp:51
MALLOC
#define MALLOC(exp)
Definition: cddefines.h:501
ipTFe56
long ipTFe56
Definition: atmdat_readin.cpp:88
ipCaI4228
long ipCaI4228
Definition: atmdat_readin.cpp:81
ipTSi65
long ipTSi65
Definition: atmdat_readin.cpp:73
ipT8727
long ipT8727
Definition: atmdat_readin.cpp:38
lgFirst
static bool lgFirst
Definition: prt_linesum.cpp:16
ipC2_2328
long ipC2_2328
Definition: atmdat_readin.cpp:93
ipMgI2026
long ipMgI2026
Definition: atmdat_readin.cpp:59
ipFeI3457
long ipFeI3457
Definition: atmdat_readin.cpp:85
RefIndex
double RefIndex(double EnergyWN)
Definition: lines_service.cpp:141
ipxMg52855
long ipxMg52855
Definition: atmdat_readin.cpp:61
ipFindLevLine
STATIC long ipFindLevLine(realnum, long, long)
Definition: atmdat_lines_setup.cpp:906
ipT7324
long ipT7324
Definition: atmdat_readin.cpp:83
ipT8498
long ipT8498
Definition: atmdat_readin.cpp:82
ipTOI13
long ipTOI13
Definition: atmdat_readin.cpp:50
ipT2796
long ipT2796
Definition: atmdat_readin.cpp:59
ipT374x
long ipT374x
Definition: atmdat_readin.cpp:44
ipTMg625
long ipTMg625
Definition: atmdat_readin.cpp:62
ipfsCl233
long ipfsCl233
Definition: atmdat_readin.cpp:77
LIMELM
const int LIMELM
Definition: cddefines.h:258
ipT1403
long ipT1403
Definition: atmdat_readin.cpp:70
ipc31175
long ipc31175
Definition: atmdat_readin.cpp:40
ipN3_1754
long ipN3_1754
Definition: atmdat_readin.cpp:92
ipC2_2324
long ipC2_2324
Definition: atmdat_readin.cpp:93
ipTAl550
long ipTAl550
Definition: atmdat_readin.cpp:68
ipS4_1417
long ipS4_1417
Definition: atmdat_readin.cpp:90
cdEXIT
#define cdEXIT(FAIL)
Definition: cddefines.h:434
UTALines
TransitionList UTALines("UTALines", &AnonStates)
ipFe1_24m
long ipFe1_24m
Definition: atmdat_readin.cpp:96
ipTSi35
long ipTSi35
Definition: atmdat_readin.cpp:73
ipKI7745
long ipKI7745
Definition: atmdat_readin.cpp:80
ipTAr8
long ipTAr8
Definition: atmdat_readin.cpp:80
ipT122
long ipT122
Definition: atmdat_readin.cpp:46
TauLines
TransitionList TauLines("TauLines", &AnonStates)
ipTFe26
long ipTFe26
Definition: atmdat_readin.cpp:87
prt.h
ipTSi521
long ipTSi521
Definition: atmdat_readin.cpp:72
ipSi1_130m
long ipSi1_130m
Definition: atmdat_readin.cpp:97
ipxK04598
long ipxK04598
Definition: atmdat_readin.cpp:80
ipT157
long ipT157
Definition: atmdat_readin.cpp:42
ipPRD
const int ipPRD
Definition: cddefines.h:290
ipAl6366
long ipAl6366
Definition: atmdat_readin.cpp:66
ipT835
long ipT835
Definition: atmdat_readin.cpp:48
ipTFe35
long ipTFe35
Definition: atmdat_readin.cpp:88
ipAr06453
long ipAr06453
Definition: atmdat_readin.cpp:80
ipFe1_54m
long ipFe1_54m
Definition: atmdat_readin.cpp:96
ipT1909
long ipT1909
Definition: atmdat_readin.cpp:38
ipT6363
long ipT6363
Definition: atmdat_readin.cpp:47
ipxMg72261
long ipxMg72261
Definition: atmdat_readin.cpp:61
ipT8446
long ipT8446
Definition: atmdat_readin.cpp:50
physconst.h
ipTSi3
long ipTSi3
Definition: atmdat_readin.cpp:74
ipO4_1401
long ipO4_1401
Definition: atmdat_readin.cpp:91
ipFe1_111m
long ipFe1_111m
Definition: atmdat_readin.cpp:96
ipT88
long ipT88
Definition: atmdat_readin.cpp:55
ipT765
long ipT765
Definition: atmdat_readin.cpp:43
ipT1085
long ipT1085
Definition: atmdat_readin.cpp:42
ipT977
long ipT977
Definition: atmdat_readin.cpp:39
ipxMg71190
long ipxMg71190
Definition: atmdat_readin.cpp:61
prt_wl
void prt_wl(FILE *ioOUT, realnum wl)
Definition: prt.cpp:13
ipT312
long ipT312
Definition: atmdat_readin.cpp:41
ipxK04154
long ipxK04154
Definition: atmdat_readin.cpp:81
ipFeI3021
long ipFeI3021
Definition: atmdat_readin.cpp:86
ipAl8370
long ipAl8370
Definition: atmdat_readin.cpp:67
ipT191
long ipT191
Definition: atmdat_readin.cpp:89
TRANS_PROB_CONST
const UNUSED double TRANS_PROB_CONST
Definition: physconst.h:237
taulines.h
ipT386
long ipT386
Definition: atmdat_readin.cpp:39
ipT1527
long ipT1527
Definition: atmdat_readin.cpp:71
ipT205
long ipT205
Definition: atmdat_readin.cpp:46
ipAl8575
long ipAl8575
Definition: atmdat_readin.cpp:66
ipCo11527
long ipCo11527
Definition: atmdat_readin.cpp:89
ipO4_1405
long ipO4_1405
Definition: atmdat_readin.cpp:91
nHFLines
long int nHFLines
Definition: taulines.cpp:31
ipT1863
long ipT1863
Definition: atmdat_readin.cpp:65
ipxNa6862
long ipxNa6862
Definition: atmdat_readin.cpp:58
ipTAr9
long ipTAr9
Definition: atmdat_readin.cpp:79
ipT150
long ipT150
Definition: atmdat_readin.cpp:52
ShowMe
void ShowMe(void)
Definition: service.cpp:181
ipS4_1424
long ipS4_1424
Definition: atmdat_readin.cpp:90
ipTMg610
long ipTMg610
Definition: atmdat_readin.cpp:62
ipT786
long ipT786
Definition: atmdat_readin.cpp:76
ipTSi4
long ipTSi4
Definition: atmdat_readin.cpp:74
ipSi1_68m
long ipSi1_68m
Definition: atmdat_readin.cpp:97
ipN3_1747
long ipN3_1747
Definition: atmdat_readin.cpp:92
ipTMg4
long ipTMg4
Definition: atmdat_readin.cpp:63
ipT1032
long ipT1032
Definition: atmdat_readin.cpp:54
ipT1256
long ipT1256
Definition: atmdat_readin.cpp:75
ipP0318
long ipP0318
Definition: atmdat_readin.cpp:75
ipT789
long ipT789
Definition: atmdat_readin.cpp:49
ipC2_2329
long ipC2_2329
Definition: atmdat_readin.cpp:93
ipT1666
long ipT1666
Definition: atmdat_readin.cpp:48
ipSi619
long ipSi619
Definition: atmdat_readin.cpp:71
opacity.h
ipT57
long ipT57
Definition: atmdat_readin.cpp:47
ipCl04203
long ipCl04203
Definition: atmdat_readin.cpp:78
ipT639
long ipT639
Definition: atmdat_readin.cpp:67
ipT274
long ipT274
Definition: atmdat_readin.cpp:41
ipxNe0676
long ipxNe0676
Definition: atmdat_readin.cpp:55
ipxNa0746
long ipxNa0746
Definition: atmdat_readin.cpp:58
ipTNe13
long ipTNe13
Definition: atmdat_readin.cpp:55
ipT1214
long ipT1214
Definition: atmdat_readin.cpp:52
ipTNe16
long ipTNe16
Definition: atmdat_readin.cpp:56
ipT1548
long ipT1548
Definition: atmdat_readin.cpp:39
ipCRD
const int ipCRD
Definition: cddefines.h:292
ipxK07319
long ipxK07319
Definition: atmdat_readin.cpp:81
ipFeI2966
long ipFeI2966
Definition: atmdat_readin.cpp:86
ipT1200
long ipT1200
Definition: atmdat_readin.cpp:44
t_opac::taumin
realnum taumin
Definition: opacity.h:154
ipNI_pumpDirect
long ipNI_pumpDirect[NI_NDP]
Definition: atmdat_readin.cpp:98
ipT291
long ipT291
Definition: atmdat_readin.cpp:40
ipSi2_2344
long ipSi2_2344
Definition: atmdat_readin.cpp:94
ipT1855
long ipT1855
Definition: atmdat_readin.cpp:65
ipTNe14
long ipTNe14
Definition: atmdat_readin.cpp:56
ipFe1_35m
long ipFe1_35m
Definition: atmdat_readin.cpp:96
ipN3_1749
long ipN3_1749
Definition: atmdat_readin.cpp:92
ipT1239
long ipT1239
Definition: atmdat_readin.cpp:44
ipN3_1751
long ipN3_1751
Definition: atmdat_readin.cpp:92
ipT304
long ipT304
Definition: atmdat_readin.cpp:52
ipT5895
long ipT5895
Definition: atmdat_readin.cpp:57
max
long max(int a, long b)
Definition: cddefines.h:775
ipT630
long ipT630
Definition: atmdat_readin.cpp:49
DEBUG_ENTRY
#define DEBUG_ENTRY(funcname)
Definition: cddefines.h:684
ipxMg51325
long ipxMg51325
Definition: atmdat_readin.cpp:60
ipTS1720
long ipTS1720
Definition: atmdat_readin.cpp:76
ipT1394
long ipT1394
Definition: atmdat_readin.cpp:70
ipTS34
long ipTS34
Definition: atmdat_readin.cpp:77
HFLines
TransitionList HFLines("HFLines", &AnonStates)
ipT6300
long ipT6300
Definition: atmdat_readin.cpp:47
ipT26
long ipT26
Definition: atmdat_readin.cpp:53
ipT610
long ipT610
Definition: atmdat_readin.cpp:41
ipSi2_2329
long ipSi2_2329
Definition: atmdat_readin.cpp:94
ipT1550
long ipT1550
Definition: atmdat_readin.cpp:39
ipT8662
long ipT8662
Definition: atmdat_readin.cpp:83
ipfsCl214
long ipfsCl214
Definition: atmdat_readin.cpp:77
ipO4_1407
long ipO4_1407
Definition: atmdat_readin.cpp:91
TransitionList::Emis
EmissionList & Emis()
Definition: transition.h:329
g
static double * g
Definition: species2.cpp:28