cloudy  trunk
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
prt_lines_hydro.cpp
Go to the documentation of this file.
1 /* This file is part of Cloudy and is copyright (C)1978-2008 by Gary J. Ferland and
2  * others. For conditions of distribution and use see copyright notice in license.txt */
3 /*lines_hydro put H-like iso sequence into line intensity stack */
4 #include "cddefines.h"
5 #include "atmdat.h"
6 #include "dense.h"
7 #include "hydrogenic.h"
8 #include "iso.h"
9 #include "rfield.h"
10 #include "geometry.h"
11 #include "lines.h"
12 #include "lines_service.h"
13 #include "phycon.h"
14 #include "radius.h"
15 #include "secondaries.h"
16 #include "taulines.h"
17 #include "trace.h"
18 
19 void lines_hydro(void)
20 {
21  long ipISO = ipH_LIKE;
22  long int i, nelem, ipHi, ipLo;
23  char chLabel[5]=" ";
24 
25  double hbetab,
26  em ,
27  pump ,
28  caseb;
29 
30  DEBUG_ENTRY( "lines_hydro()" );
31 
32  if( trace.lgTrace )
33  {
34  fprintf( ioQQQ, " lines_hydro called\n" );
35  }
36 
37  i = StuffComment( "H-like iso-sequence" );
38  linadd( 0., (realnum)i , "####", 'i',
39  " start H -like iso sequence ");
40 
41  linadd(MAX2(0.,iso.xLineTotCool[ipH_LIKE][ipHYDROGEN]),912,"Clin",'c',
42  " total collisional cooling due to all hydrogen lines ");
43 
44  linadd(MAX2(0.,-iso.xLineTotCool[ipH_LIKE][ipHYDROGEN]),912,"Hlin",'h' ,
45  " total collisional heating due to all hydrogen lines ");
46  /*fprintf(ioQQQ," debugg\t%.2e\t%.2e\t%.2e\n",
47  radius.drad,
48  iso.xLineTotCool[ipH_LIKE][ipHYDROGEN] ,
49  iso.cLya_cool[ipH_LIKE][ipHYDROGEN]);*/
50 
51  /* >>chng 95 jun 25 changed from info to cooling to pick this up in primal.in */
52  linadd(MAX2(0.,iso.cLya_cool[ipH_LIKE][ipHYDROGEN]),1216,"Cool",'i',
53  "collisionally excited La cooling ");
54 
55  linadd(MAX2(0.,-iso.cLya_cool[ipH_LIKE][ipHYDROGEN]),1216,"Heat",'i',
56  " collisionally de-excited La heating ");
57 
58  linadd(MAX2(0.,iso.cLyrest_cool[ipH_LIKE][ipHYDROGEN]),960,"Crst",'i',
59  " cooling due to n>2 Lyman lines ");
60 
61  linadd(MAX2(0.,-iso.cLyrest_cool[ipH_LIKE][ipHYDROGEN]),960,"Hrst",'i',
62  " heating due to n>2 Lyman lines ");
63 
64  linadd(MAX2(0.,iso.cBal_cool[ipH_LIKE][ipHYDROGEN]),4861,"Crst",'i',
65  " cooling due to n>3 Balmer lines ");
66 
67  linadd(MAX2(0.,-iso.cBal_cool[ipH_LIKE][ipHYDROGEN]),4861,"Hrst",'i',
68  " heating due to n>3 Balmer lines ");
69 
70  linadd(MAX2(0.,iso.cRest_cool[ipH_LIKE][ipHYDROGEN]),0,"Crst",'i',
71  " cooling due to higher Paschen lines ");
72 
73  linadd(MAX2(0.,-iso.cRest_cool[ipH_LIKE][ipHYDROGEN]),0,"Hrst",'i',
74  " heating due to higher Paschen lines ");
75 
76  /* remember largest fractional ionization of H due to secondaries */
78 
79  /* remember fraction of H ionizations due to ct */
81 
82  /* remember largest fraction of thermal collisional ionization of H ground state */
85 
86  linadd(secondaries.x12tot*dense.xIonDense[ipHYDROGEN][1]*StatesElem[ipH_LIKE][ipHYDROGEN][ipH1s].Pop*1.634e-11,1216,"LA X" ,'i',
87  "Lyaa contribution from suprathermal secondaries from ground ");
88 
89  /* factor of 0.4836 is ratio of A(4-2)/(A(4-3)+A(4-2))
90  * the IPLNPUMP is the actual pumping rate per atom */
91  /* H-beta produced by continuum pumping in optically thin ld limit */
92  pump = (double)(Transitions[ipH_LIKE][ipHYDROGEN][ipH4p][ipH1s].Emis->pump*StatesElem[ipH_LIKE][ipHYDROGEN][ipH1s].Pop*
93  dense.xIonDense[ipHYDROGEN][1]*4.09e-12*0.4836);
94  linadd(pump,4861,"Pump",'r',
95  "part of Hbeta formed by continuum pumping");
96 
97  linadd(MAX2(0.,iso.coll_ion[ipH_LIKE][ipHYDROGEN]),0,"CION",'c',
98  "collision ionization cooling of hydrogen ");
99 
100  linadd(MAX2(-iso.coll_ion[ipH_LIKE][ipHYDROGEN],0.),0,"3bHt",'h',
101  " this is the heating due to 3-body recombination ");
102 
103  fixit(); //why is there a zero here?
104  linadd(dense.xIonDense[ipHYDROGEN][1]*StatesElem[ipH_LIKE][ipHYDROGEN][ipH2p].Pop*0.*iso.pestrk[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s]*1.634e-11,1216,"Strk",'i',
105  " Stark broadening contribution to line ");
106 
107  linadd(dense.xIonDense[ipHYDROGEN][1]*StatesElem[ipH_LIKE][ipHYDROGEN][ipH3s].Pop*iso.pestrk[ipH_LIKE][ipHYDROGEN][ipH3s][ipH2p]*3.025e-12,
108  6563,"Strk",'i',
109  " Stark broadening contribution to line ");
110 
111  linadd(dense.xIonDense[ipHYDROGEN][1]*StatesElem[ipH_LIKE][ipHYDROGEN][ipH4s].Pop*iso.pestrk[ipH_LIKE][ipHYDROGEN][ipH4s][ipH2p]*4.084e-12,
112  4861,"Strk",'i',
113  "Stark broadening contribution to line ");
114 
115  linadd(dense.xIonDense[ipHYDROGEN][1]*StatesElem[ipH_LIKE][ipHYDROGEN][ipH4p].Pop*iso.pestrk[ipH_LIKE][ipHYDROGEN][ipH4p][ipH3s]*1.059e-12,
116  18751,"Strk",'i',
117  " Stark broadening contribution to line ");
118 
119  /* pestrk[5,4] is A[4,5]*pest[4,5]
120  * Stark broadening contribution to line */
121  /* 06 aug 28, from numLevels_max to _local. */
122  /* 06 dec 21, change from numLevels_max to _local was mistake for this entire file. Undo. */
123  if( iso.numLevels_max[ipH_LIKE][ipHYDROGEN] > 5 )
124  linadd(dense.xIonDense[ipHYDROGEN][1]*StatesElem[ipH_LIKE][ipHYDROGEN][ipH5p].Pop*iso.pestrk[ipH_LIKE][ipHYDROGEN][ipH5p][ipH4s]*4.900e-13,40512,"Strk",'i',
125  "Stark broadening part of line");
126 
127  /* this can fail if RT_line_all never updates the ots rates, a logic error,
128  * but only assert this during actual calculation (ipass>0), */
129  ASSERT( LineSave.ipass <1 ||
130  Transitions[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s].Emis->ots>= 0.);
131 
132  linadd(Transitions[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s].Emis->ots*Transitions[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s].EnergyErg, 1216,"Dest",'i',
133  " portion of line lost due to absorp by background opacity ");
134 
135  /* portion of line lost due to absorb by background opacity */
136  /* 06 aug 28, from numLevels_max to _local. */
137  /* 06 dec 21, change from numLevels_max to _local was mistake for this entire file. Undo. */
138  if( iso.numLevels_max[ipH_LIKE][ipHYDROGEN] > ipH3p )
139  linadd(Transitions[ipH_LIKE][ipHYDROGEN][ipH3p][ipH2s].Emis->ots*Transitions[ipH_LIKE][ipHYDROGEN][ipH3p][ipH2s].EnergyErg, 6563,"Dest",'i',
140  "Ha destroyed by background opacity");
141 
142  /* portion of line lost due to absorp by background opacity */
143  /* 06 aug 28, from numLevels_max to _local. */
144  /* 06 dec 21, change from numLevels_max to _local was mistake for this entire file. Undo. */
145  if( iso.numLevels_max[ipH_LIKE][ipHYDROGEN] > ipH5p )
146  linadd(Transitions[ipH_LIKE][ipHYDROGEN][ipH5p][ipH4s].Emis->ots*Transitions[ipH_LIKE][ipHYDROGEN][ipH5p][ipH4s].EnergyErg,40516, "Dest",'i',
147  "portion of line lost due to absorb by background opacity");
148 
149  /* portion of line lost due to absorb by background opacity */
150  /* 06 aug 28, from numLevels_max to _local. */
151  /* 06 dec 21, change from numLevels_max to _local was mistake for this entire file. Undo. */
152  if( iso.numLevels_max[ipH_LIKE][ipHYDROGEN] > ipH4p )
153  linadd(Transitions[ipH_LIKE][ipHYDROGEN][ipH4p][ipH2s].Emis->ots*Transitions[ipH_LIKE][ipHYDROGEN][ipH4p][ipH2s].EnergyErg, 4861,"Dest",'i',
154  "portion of line lost due to absorb by background opacity");
155 
156  /* portion of line lost due to absorb by background opacity */
157  /* 06 aug 28, from numLevels_max to _local. */
158  /* 06 dec 21, change from numLevels_max to _local was mistake for this entire file. Undo. */
159  if( iso.numLevels_max[ipH_LIKE][ipHYDROGEN] > ipH4p )
160  linadd(Transitions[ipH_LIKE][ipHYDROGEN][ipH4p][ipH3s].Emis->ots*Transitions[ipH_LIKE][ipHYDROGEN][ipH4p][ipH3s].EnergyErg ,18751, "Dest",'i',
161  "portion of line lost due to absorb by background opacity");
162 
163  linadd(StatesElem[ipH_LIKE][ipHYDROGEN][ipH2p].Pop*dense.xIonDense[ipHYDROGEN][1]*Transitions[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s].Emis->Aul*
164  hydro.dstfe2lya*Transitions[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s].EnergyErg , 1216 , "Fe 2" , 'i',
165  "Ly-alpha destroyed by overlap with FeII " );
166 
167  linadd(iso.RadRec_caseB[ipH_LIKE][ipHYDROGEN]*dense.xIonDense[ipHYDROGEN][1]*dense.eden * 1.64e-11,1216,"Ca B",'i',
168  " simple high-density case b intensity of Ly-alpha, no two photon ");
169 
170  /* H-beta computed from Q(H) and specified covering factor */
171  if( nzone == 1 )
172  {
173  /* evaluate the case b emissivity by interpolating on the hummer & storey tables */
174  caseb = rfield.qhtot*
176  /* the atmdat_HS_caseB returned -1 if the physical conditions were outside range of validity.
177  * In this case use simple approximation with no temperature or density dependence */
178  if( caseb < 0 )
179  {
180  caseb = rfield.qhtot*4.75e-13;
181  }
183  }
184  else
185  {
186  caseb = 0.;
187  }
188  /* >>chng 02 nov 05, better approximation for Lya for temperature of first zone */
189  /* H-beta computed from Q(H) and specified covering factor */
190  linadd( caseb/radius.dVeff*geometry.covgeo , 4861 , "Q(H)" , 'i' ,
191  "Case B H-beta computed from Q(H) and specified covering factor");
192 
193  if( nzone == 1 )
194  {
195  caseb = rfield.qhtot*Transitions[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s].EnergyErg;
197  }
198  else
199  {
200  caseb = 0.;
201  }
202  /* >>chng 02 nov 05, better approximation for Lya for temperature of first zone */
203  linadd( caseb/radius.dVeff*geometry.covgeo , 1216 , "Q(H)" , 'i',
204  "Ly-alpha from Q(H), high-dens lim, specified covering factor" );
205 
206  /* this is the main printout, where line intensities are entered into the stack */
207  for( nelem=ipISO; nelem < LIMELM; nelem++ )
208  {
209  if( dense.lgElmtOn[nelem] )
210  {
211  for( ipHi=1; ipHi < iso.numLevels_max[ipISO][nelem]; ipHi++ )
212  {
213  for( ipLo=0; ipLo < ipHi; ipLo++ )
214  {
215  if( Transitions[ipISO][nelem][ipHi][ipLo].Emis->Aul <= iso.SmallA )
216  continue;
217 
218  /* this is in real units not emissivity*/
219  Transitions[ipISO][nelem][ipHi][ipLo].Emis->phots =
220  Transitions[ipISO][nelem][ipHi][ipLo].Emis->Aul*
221  StatesElem[ipISO][nelem][ipHi].Pop*
222  Transitions[ipISO][nelem][ipHi][ipLo].Emis->Pesc*
223  dense.xIonDense[nelem][nelem+1-ipISO];
224 
225  /* now find line intensity */
226  Transitions[ipISO][nelem][ipHi][ipLo].Emis->xIntensity =
227  Transitions[ipISO][nelem][ipHi][ipLo].Emis->phots*
228  Transitions[ipISO][nelem][ipHi][ipLo].EnergyErg;
229  }
230  }
231  }
232  }
233 
234  /* create emissivity or intensity for hydrogenic species,
235  * first combine/bring balmer series together */
236  for( nelem=0; nelem < LIMELM; nelem++ )
237  {
238  if( dense.IonHigh[nelem] == nelem + 1 )
239  {
240  /* bring nL - n'L' emission together as n-n' emission. */
241  for( ipHi=3; ipHi < iso.numLevels_max[ipH_LIKE][nelem]; ipHi++ )
242  {
243  long index_of_nHi_P;
244 
245  /* is ipHi is collapsed level, index_of_nHi_P is ipHi */
246  if( N_(ipHi) > iso.n_HighestResolved_max[ipH_LIKE][nelem] )
247  index_of_nHi_P = ipHi;
248  else
249  index_of_nHi_P = iso.QuantumNumbers2Index[ipH_LIKE][nelem][ N_(ipHi) ][1][2];
250 
251  /* only need to consider resolved lower level here */
252  for( ipLo=0; ipLo < ipHi; ipLo++ )
253  {
254  long index_of_nLo_S = iso.QuantumNumbers2Index[ipH_LIKE][nelem][ N_(ipLo) ][0][2];
255 
256  /* jump out if ipLo is collapsed
257  * NB this must be up to n_HighestResolved_local and not n_HighestResolved_max */
258  if( N_(ipLo) > iso.n_HighestResolved_local[ipH_LIKE][nelem] || N_(ipLo) == N_(ipHi) )
259  break;
260 
261  if( Transitions[ipH_LIKE][nelem][ipHi][ipLo].Emis->Aul <= iso.SmallA )
262  continue;
263 
264  /* add everything into nP - n'S, skip if current indices are those levels. */
265  if( ipHi == index_of_nHi_P && ipLo == index_of_nLo_S )
266  continue;
267  else
268  {
269  /* add resolved line to nP - n'S */
270  Transitions[ipH_LIKE][nelem][index_of_nHi_P][index_of_nLo_S].Emis->xIntensity +=
271  Transitions[ipH_LIKE][nelem][ipHi][ipLo].Emis->xIntensity;
272  /* kill the resolved line */
273  Transitions[ipH_LIKE][nelem][ipHi][ipLo].Emis->xIntensity = 0.;
274  //ASSERT( Transitions[ipH_LIKE][nelem][index_of_nHi_P][index_of_nLo_S].Emis->xIntensity > 0. );
275  }
276  }
277  }
278  }
279  }
280 
281  /* H beta recombination, assuming old case B */
282  hbetab = (double)((pow(10.,-20.89 - 0.10612*POW2(phycon.alogte - 4.4)))/
283  phycon.te);
284  /* need to pass this assert if CaBo is to have valid array indices for ipCont */
285  /* 06 aug 28, from numLevels_max to _local. */
286  /* 06 dec 21, change from numLevels_max to _local was mistake for this entire file. Undo. */
287  ASSERT( iso.numLevels_max[ipH_LIKE][ipHYDROGEN] > 4 );
288  hbetab *= dense.xIonDense[ipHYDROGEN][1]*dense.eden;
289 
290  lindst(hbetab,4861,"CaBo",Transitions[ipH_LIKE][ipHYDROGEN][ipH4p][ipH2s].ipCont,'i',false,
291  " this is old case b, had been in code for very long time");
292 
293  if( dense.lgElmtOn[ipHELIUM] )
294  {
295  /* need to pass this assert if CaBo is to have valid array indices for ipCont */
296  /* 06 aug 28, from numLevels_max to _local. */
297  /* 06 dec 21, change from numLevels_max to _local was mistake for this entire file. Undo. */
299  /* 1640 1640 1640 */
300  em = 2.03e-20/(phycon.te70*phycon.te10*phycon.te03);
301  em *= dense.xIonDense[ipHELIUM][2]*dense.eden;
302 
303  lindst(em,1640,"CaBo",Transitions[ipH_LIKE][ipHELIUM][ipH3p][ipH2s].ipCont,'i',false,
304  " old prediction of He II 1640, case B at low densities");
305 
306  /* hydrogenic helium */
307  /* old prediction of He II 4686, case B */
308  em = 2.52e-20/(pow(phycon.te,1.05881));
309  em *= dense.xIonDense[ipHELIUM][2]*dense.eden;
310 
311  lindst(em,4686,"CaBo",Transitions[ipH_LIKE][ipHELIUM][ipH4p][ipH3s].ipCont,'i',false,
312  " ");
313  }
314 
315  /* predict case b intensities of hydrogen lines */
316 
317  if( LineSave.ipass <= 0 )
318  {
319  for(nelem=0; nelem<HS_NZ; ++nelem )
320  {
321  atmdat.lgHCaseBOK[0][nelem] = true;
322  atmdat.lgHCaseBOK[1][nelem] = true;
323  }
324  }
325  /* this is the main printout, where line intensities are entered into the stack */
326  for( nelem=0; nelem < LIMELM; nelem++ )
327  {
328  if( dense.lgElmtOn[nelem] )
329  {
330  /* HS_NZ is limit to charge of elements in HS predictions, now 8 == oxygen */
331  /* but don't do the minor elements - these were not read in and so should not be
332  * printed - remove equivalent if statement in createdata to read them in */
333  if( nelem < HS_NZ && (nelem<2 || nelem>4) )
334  {
335  int iCase;
336  for( iCase=0; iCase<2; ++iCase )
337  {
338  char chAB[2]={'A','B'};
339  char chLab[5]="Ca ";
340 
341  /* adding iCase means start from n=1 for case A, n=2 for Case B,
342  * note that principal quantum number is on physics scale, not C */
343  /* 06 aug 28, both of these from numLevels_max to _local. */
344  /* 06 dec 21, change from numLevels_max to _local was mistake for this entire file. Undo. */
345  for( ipLo=1+iCase; ipLo<MIN2(10,iso.n_HighestResolved_max[ipH_LIKE][nelem] + iso.nCollapsed_max[ipH_LIKE][nelem]); ++ipLo )
346  {
347  for( ipHi=ipLo+1; ipHi< MIN2(25,iso.n_HighestResolved_max[ipH_LIKE][nelem] + iso.nCollapsed_max[ipH_LIKE][nelem]+1); ++ipHi )
348  {
349  realnum wl;
350  double case_b_Intensity;
351  long int ipCHi , ipCLo;
352  /* Put case b predictions into line stack
353  * NB NB NB each Hummer & Storey case b line must be
354  * explicitly clobbered by hand in routine final if
355  * atmdat.lgHCaseBOK[iCase][nelem] flag is set false
356  * since this indicates that we exceeded bounds of table,
357  * DO NOT want to print lines in that case */
358 
359  /* first do case b emissivity of balmer lines */
360 
361  /* get HS predictions */
362  case_b_Intensity = atmdat_HS_caseB( ipHi,ipLo , nelem+1, phycon.te , dense.eden, chAB[iCase] );
363  if( case_b_Intensity<=0. )
364  {
365  atmdat.lgHCaseBOK[iCase][nelem] = false;
366  case_b_Intensity = 0.;
367  }
368 
369  case_b_Intensity *= dense.xIonDense[nelem][nelem+1-ipISO]*dense.eden;
370 
371  if( iCase==0 && ipLo==1 )
372  {
373  /* get physical scal prin quant numbers onto cloudy c scale */
374  ipCHi = ipHi;
375  ipCLo = 0;
376  }
377  else
378  {
379  /* get physical scal prin quant numbers onto cloudy c scale */
380  ipCHi = ipHi;
381  ipCLo = ipLo;
382  }
383 
384  /* make label either Ca A or Ca B */
385  chLab[3] = chAB[iCase];
386 
387  /* new treatment is different from old for indices greater than 2. */
388  if( ipCHi > 2 )
389  {
390  if( ipCLo > 2 )
391  {
392  /* if both indices above two, just treat as nP to n'S transition. */
393  ipCHi = iso.QuantumNumbers2Index[ipH_LIKE][nelem][ipCHi][1][2];
394  ipCLo = iso.QuantumNumbers2Index[ipH_LIKE][nelem][ipCLo][0][2];
395  }
396  else if( ipCLo == 2 )
397  {
398  /* treat as nS to 2P transition. */
399  ipCHi = iso.QuantumNumbers2Index[ipH_LIKE][nelem][ipCHi][0][2];
400  }
401  else if( ipCLo == 1 || ipCLo == 0 )
402  {
403  /* treat as nP to n'S transition. */
404  ipCHi = iso.QuantumNumbers2Index[ipH_LIKE][nelem][ipCHi][1][2];
405  }
406  }
407 
408  /* this is wavelength of interpolated case b from HS tables */
409  wl = Transitions[ipH_LIKE][nelem][ipCHi][ipCLo].WLAng;
410  atmdat.WaveLengthCaseB[nelem][ipHi][ipLo] = wl;
411 
412  lindst(case_b_Intensity,wl,chLab,Transitions[ipH_LIKE][nelem][ipCHi][ipCLo].ipCont,'i',false,
413  " case a or case b from Hummer & Storey tables" );
414  }
415  }
416  }
417  }
418 
419  /* NB NB - low and high must be in this order so that all balmer, paschen,
420  * etc series line up correctly in final printout */
421 
422  /* >>chng 01 sep 10, do two-photon here */
423  if( LineSave.ipass == 0 )
424  {
425  /* chIonLbl is function that generates a null terminated 4 char string, of form "C 2"
426  * the result, chLable, is only used when ipass == 0, can be undefined otherwise */
427  /* two photon emission */
428  chIonLbl(chLabel, &Transitions[ipH_LIKE][nelem][ipH2s][ipH1s]);
429  }
430  linadd( Transitions[ipH_LIKE][nelem][ipH2s][ipH1s].Emis->xIntensity , 0,chLabel,'r',
431  "two-photon emission");
432 
433  linadd(
434  StatesElem[ipH_LIKE][nelem][ipH2s].Pop*
435  dense.xIonDense[nelem][nelem+1-ipISO]*
436  iso.TwoNu_induc_dn[ipH_LIKE][nelem]*
437  Transitions[ipH_LIKE][nelem][ipH2s][ipH1s].EnergyErg,
438  22, chLabel ,'i',
439  "induced two-photon emission ");
440 
441  /* 06 aug 28, from numLevels_max to _local. */
442  /* 06 dec 21, change from numLevels_max to _local was mistake for this entire file. Undo. */
443  for( ipLo=ipH1s; ipLo < iso.numLevels_max[ipH_LIKE][nelem]-1; ipLo++ )
444  {
445  /* don't bother with decays to 2p since we set them to zero above */
446  if( ipLo==ipH2p )
447  continue;
448 
449  for( ipHi=ipLo+1; ipHi < iso.numPrintLevels[ipH_LIKE][nelem]; ipHi++ )
450  {
451  /* skip the 2s-2p and two photon transitions */
452  /* >>chng 02 feb 10, had been explicit levels, change to general ipCont */
453  if( Transitions[ipH_LIKE][nelem][ipHi][ipLo].ipCont < 1 )
454  continue;
455 
456 #if 0
457  char chCommentTemp[23];
458  strcpy( chCommentTemp, StatesElem[ipH_LIKE][nelem][ipLo].chConfig );
459  strcat( chCommentTemp, " - " );
460  strcat( chCommentTemp, StatesElem[ipH_LIKE][nelem][ipHi].chConfig );
461  const char* chComment = chCommentTemp;
462  PutLine(&Transitions[ipH_LIKE][nelem][ipHi][ipLo], chComment );
463 #else
464  PutLine(&Transitions[ipH_LIKE][nelem][ipHi][ipLo],
465  "predicted line, all processes included");
466 #endif
467 
468  }
469  }
470  }
471  }
472 
473  if( trace.lgTrace )
474  {
475  fprintf( ioQQQ, " lines_helium returns\n" );
476  }
477  return;
478 }

Generated for cloudy by doxygen 1.8.1.1