cloudy trunk
Loading...
Searching...
No Matches
radius_increment.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/*radius_increment do work associated with geometry increments of this zone, called before RT_tau_inc */
4#include "cddefines.h"
5#include "physconst.h"
6#include "iso.h"
7#include "hydrogenic.h"
8#include "rfield.h"
9#include "colden.h"
10#include "geometry.h"
11#include "opacity.h"
12#include "thermal.h"
13#include "doppvel.h"
14#include "dense.h"
15#include "mole.h"
16#include "h2.h"
17#include "timesc.h"
18#include "hmi.h"
19#include "lines_service.h"
20#include "taulines.h"
21#include "trace.h"
22#include "wind.h"
23#include "phycon.h"
24#include "pressure.h"
25#include "grainvar.h"
26#include "molcol.h"
27#include "conv.h"
28#include "hyperfine.h"
29#include "mean.h"
30#include "struc.h"
31#include "radius.h"
32#include "gravity.h"
33
35{
36
37 long int nelem,
38 i,
39 ion,
40 nzone_minus_1 ,
41 mol;
42 double
43 avWeight,
44 t;
45
46 double ajmass,
47 Error,
48 rjeans;
49
50 DEBUG_ENTRY( "radius_increment()" );
51
52 /* when this sub is called radius is the outer edge of zone */
53
54 /* save information about structure of model
55 * first zone is 1 but array starts at 0 - nzone_minus_1 is current zone
56 * max nzone because abort during search phase gets here with nzone = -1 */
57 nzone_minus_1 = MAX2( 0, nzone-1 );
58 ASSERT(nzone_minus_1>=0 && nzone_minus_1 < struc.nzlim );
59
60 struc.heatstr[nzone_minus_1] = thermal.htot;
61 struc.coolstr[nzone_minus_1] = thermal.ctot;
62 struc.testr[nzone_minus_1] = (realnum)phycon.te;
63
64 /* number of particles per unit vol */
65 struc.DenParticles[nzone_minus_1] = dense.pden;
66 /* rjrw: add hden for dilution */
67 struc.hden[nzone_minus_1] = (realnum)dense.gas_phase[ipHYDROGEN];
68 /* total grams per unit vol */
69 struc.DenMass[nzone_minus_1] = dense.xMassDensity;
70 struc.volstr[nzone_minus_1] = (realnum)radius.dVeffAper;
71 struc.drad[nzone_minus_1] = (realnum)radius.drad;
72 struc.drad_x_fillfac[nzone_minus_1] = (realnum)radius.drad_x_fillfac;
73 struc.histr[nzone_minus_1] = dense.xIonDense[ipHYDROGEN][0];
74 struc.hiistr[nzone_minus_1] = dense.xIonDense[ipHYDROGEN][1];
75 struc.ednstr[nzone_minus_1] = (realnum)dense.eden;
76 struc.o3str[nzone_minus_1] = dense.xIonDense[ipOXYGEN][2];
77 struc.pressure[nzone_minus_1] = (realnum)pressure.PresTotlCurr;
78 struc.windv[nzone_minus_1] = (realnum)wind.windv;
79 struc.AccelTotalOutward[nzone_minus_1] = wind.AccelTotalOutward;
80 struc.AccelGravity[nzone_minus_1] = wind.AccelGravity;
81 struc.pres_radiation_lines_curr[nzone_minus_1] = (realnum)pressure.pres_radiation_lines_curr;
82 struc.GasPressure[nzone_minus_1] = (realnum)pressure.PresGasCurr;
83 struc.depth[nzone_minus_1] = (realnum)radius.depth;
84 /* save absorption optical depth from illuminated face to current position */
85 struc.xLyman_depth[nzone_minus_1] = opac.TauAbsFace[iso_sp[ipH_LIKE][ipHYDROGEN].fb[ipH1s].ipIsoLevNIonCon];
86 for( nelem=ipHYDROGEN; nelem<LIMELM; ++nelem)
87 {
88 struc.gas_phase[nelem][nzone_minus_1] = dense.gas_phase[nelem];
89 for( ion=0; ion<nelem+2; ++ion )
90 {
91 struc.xIonDense[nelem][ion][nzone_minus_1] = dense.xIonDense[nelem][ion];
92 }
93 }
94 for( long ipISO=ipH_LIKE; ipISO<NISO; ++ipISO )
95 {
96 for( nelem=ipISO; nelem<LIMELM; ++nelem)
97 {
98 if( dense.lgElmtOn[nelem] )
99 {
100 for( long level=0; level < iso_sp[ipISO][nelem].numLevels_max; ++level )
101 {
102 struc.StatesElem[nelem][nelem-ipISO][level][nzone_minus_1] = (realnum)iso_sp[ipISO][nelem].st[level].Pop();
103 }
104 }
105 }
106 }
107
108 /* the hydrogen molecules */
109 for(mol=0;mol<mole_global.num_calc;mol++)
110 {
111 struc.molecules[mol][nzone_minus_1] = (realnum) mole.species[mol].den;
112 }
113 struc.H2_abund[nzone_minus_1] = hmi.H2_total;
114
115 // during abort many quantities used in this routine are in ill-defined
116 // state - safer to do nothing here
117 if( lgAbort )
118 {
119 return;
120 }
121
122 if( trace.lgTrace )
123 {
124 fprintf( ioQQQ,
125 " radius_increment called; radius=%10.3e rinner=%10.3e DRAD=%10.3e drNext=%10.3e ROUTER=%10.3e DEPTH=%10.3e\n",
126 radius.Radius, radius.rinner, radius.drad, radius.drNext,
127 radius.StopThickness[iteration-1], radius.depth );
128 }
129
130 /* remember mean and largest errors on electron density */
131 Error = fabs(dense.eden - dense.EdenTrue)/SDIV(dense.EdenTrue);
132 if( Error > conv.BigEdenError )
133 {
134 conv.BigEdenError = (realnum)Error;
135 dense.nzEdenBad = nzone;
136 }
137 conv.AverEdenError += (realnum)Error;
138
139 dense.EdenMax = MAX2( dense.eden , dense.EdenMax);
140 dense.EdenMin = MIN2( dense.eden , dense.EdenMin);
141
142 /* remember mean and largest errors between heating and cooling */
143 Error = fabs(thermal.ctot - thermal.htot) / thermal.ctot;
144 conv.BigHeatCoolError = MAX2((realnum)Error , conv.BigHeatCoolError );
145 conv.AverHeatCoolError += (realnum)Error;
146
147 /* remember mean and largest pressure errors */
148 Error = fabs(pressure.PresTotlError);
149 conv.BigPressError = MAX2((realnum)Error , conv.BigPressError );
150 conv.AverPressError += (realnum)Error;
151
152 /* integrate total mass over model (relative to 4pi rinner^2) */
153 dense.xMassTotal += (realnum)(dense.xMassDensity * radius.dVeffVol);
154
155 /* check cooling time for this zone, remember longest */
156 timesc.time_therm_long = MAX2(timesc.time_therm_long,1.5*dense.pden*BOLTZMANN*phycon.te/
157 thermal.ctot);
158
159 /* H 21 cm equilibrium timescale, H21cm returns H (not e) collisional
160 * deexcitation rate (not cs) */
161 t = H21cm_H_atom( phycon.te )* dense.xIonDense[ipHYDROGEN][0] +
162 /* >>chng 02 feb 14, add electron term as per discussion in */
163 /* >>refer H1 21cm Liszt, H., 2001, A&A, 371, 698 */
164 H21cm_electron( phycon.te )*dense.eden;
165
166 /* only update time scale if t is significant */
167 if( t > SMALLFLOAT )
168 timesc.TimeH21cm = MAX2( 1./t, timesc.TimeH21cm );
169
170 /* remember longest CO timescale */
171 if( (double)dense.xIonDense[ipCARBON][0]*(double)dense.xIonDense[ipOXYGEN][0] > SMALLFLOAT )
172 {
173 int ipCO = findspecies("CO")->index;
174 /* this is rate CO is destroyed, equal to formation rate in equilibrium */
175 if (ipCO != -1)
176 timesc.BigCOMoleForm = MAX2( timesc.BigCOMoleForm, 1./SDIV(mole.species[ipCO].snk ));
177 }
178
179 /* remember longest H2 destruction timescale timescale */
180 timesc.time_H2_Dest_longest = MAX2(timesc.time_H2_Dest_longest, timesc.time_H2_Dest_here );
181
182 /* remember longest H2 formation timescale timescale */
183 timesc.time_H2_Form_longest = MAX2( timesc.time_H2_Form_longest , timesc.time_H2_Form_here );
184
185 /* increment counter if this zone possibly thermally unstable
186 * this flag was set in conv_temp_eden_ioniz.cpp,
187 * derivative of heating and cooling negative */
188 if( thermal.lgUnstable )
189 thermal.nUnstable += 1;
190
191 /* remember Stromgren radius - where hydrogen ionization falls below half */
192 if( !rfield.lgUSphON && dense.xIonDense[ipHYDROGEN][0]/dense.gas_phase[ipHYDROGEN] > 0.49 )
193 {
194 rfield.rstrom = (realnum)radius.Radius;
195 rfield.lgUSphON = true;
196 }
197
198 /* remember the largest value */
199 wind.AccelMax = (realnum)MAX2(wind.AccelMax,wind.AccelTotalOutward);
200
201 /* keep track of average acceleration */
202 wind.AccelAver += wind.AccelTotalOutward*(realnum)radius.drad_x_fillfac;
203 wind.acldr += (realnum)radius.drad_x_fillfac;
204
205 /* following is integral of radiative force */
206 pressure.pinzon = (realnum)(wind.AccelTotalOutward*dense.xMassDensity*
207 radius.drad_x_fillfac*geometry.DirectionalCosin);
208 /*fprintf(ioQQQ," debuggg pinzon %.2f %.2e %.2e %.2e\n",
209 fnzone,pressure.pinzon,dense.xMassDensity,wind.AccelTotalOutward);*/
210 pressure.PresInteg += pressure.pinzon;
211
212 // the integrated acceleration due to electron scattering, neglecting
213 // absorption
214 static realnum AccelElecScatZone1;
215 if( nzone == 1 )
216 AccelElecScatZone1 = wind.AccelElectron;
217 pressure.pinzon_PresIntegElecThin = (realnum)(AccelElecScatZone1*dense.xMassDensity/radius.r1r0sq*
218 radius.drad_x_fillfac*geometry.DirectionalCosin);
219 pressure.PresIntegElecThin += pressure.pinzon_PresIntegElecThin;
220
221 /* integrate gravitational pressure term */
223 pressure.IntegRhoGravity += pressure.RhoGravity;
224
225 /* sound is sound travel time, sqrt term is sound speed */
226 timesc.sound_speed_isothermal = sqrt(pressure.PresGasCurr/dense.xMassDensity);
227 /* adiabatic sound speed assuming mono-atomic gas - gamma is 5/3*/
228 timesc.sound_speed_adiabatic = sqrt(5.*pressure.PresGasCurr/(3.*dense.xMassDensity) );
229 timesc.sound += radius.drad_x_fillfac / timesc.sound_speed_isothermal;
230
231 /* save largest relative change in heating or cooling between this
232 * iteration and previous iteration at this zone
233 * may be used to set time step in time dependent sims
234 * nzonePreviousIteration is number of zones in previous iteration,
235 * 1 if only 1 done, while nzone_minus_1 is 1 on first zone */
236 if( iteration > 1 && nzone_minus_1 < struc.nzonePreviousIteration )
237 {
238 /* set largest relative changes in heating/cooling between current
239 * and previous zones */
241 fabs( (phycon.te-struc.testr[nzone_minus_1])/phycon.te);
242
243 struc.TempChangeMax = MAX2( struc.TempChangeMax , TempChange );
244 }
245 else
246 {
247 /* zero out on first iteration */
248 struc.TempChangeMax = 0.;
249 }
250 /*fprintf(ioQQQ,"DEBUG radius_increment iteration %li Heat %.2e Cool %.2e change max \n",
251 iteration , struc.HeatChangeMax , struc.CoolChangeMax);*/
252
253 colden.dlnenp += dense.eden*(double)(dense.xIonDense[ipHYDROGEN][1])*radius.drad_x_fillfac;
254 colden.dlnenHep += dense.eden*(double)(dense.xIonDense[ipHELIUM][1])*radius.drad_x_fillfac;
255 colden.dlnenHepp += dense.eden*(double)(dense.xIonDense[ipHELIUM][2])*radius.drad_x_fillfac;
256 colden.dlnenCp += dense.eden*(double)(dense.xIonDense[ipCARBON][1])*radius.drad_x_fillfac;
257
258 // column densities of all states
259 for( unsigned i = 0; i < mole.species.size(); ++i )
260 {
261 if( mole.species[i].levels != NULL )
262 {
263 for( qList::iterator st = mole.species[i].levels->begin(); st != mole.species[i].levels->end(); ++st )
264 {
265 (*st).ColDen() += radius.drad_x_fillfac * (*st).Pop();
266 }
267 }
268 }
269
270 /* integral of n(H0) / Tspin - related to 21 cm optical depth*/
271 if( hyperfine.Tspin21cm > SMALLFLOAT )
272 colden.H0_ov_Tspin += (double)(dense.xIonDense[ipHYDROGEN][0]) / hyperfine.Tspin21cm*radius.drad_x_fillfac;
273
274 /* >>chng 05 Mar 07, add integral of n(OH) / Tspin */
275 colden.OH_ov_Tspin += (double)(findspecieslocal("OH")->den) / phycon.te*radius.drad_x_fillfac;
276
277 /* this is Lya excitation temperature */
278 hydro.TexcLya = (realnum)TexcLine( iso_sp[ipH_LIKE][ipHYDROGEN].trans(ipH2p,ipH1s) );
279
280 /* count number of times Lya excitation temp hotter than gas */
281 if( hydro.TexcLya > phycon.te )
282 {
283 hydro.nLyaHot += 1;
284 if( hydro.TexcLya > hydro.TLyaMax )
285 {
286 hydro.TLyaMax = hydro.TexcLya;
287 hydro.TeLyaMax = (realnum)phycon.te;
288 hydro.nZTLaMax = nzone;
289 }
290 }
291
292 /* column densities in various species */
293 colden.colden[ipCOL_HTOT] += (realnum)(dense.gas_phase[ipHYDROGEN]*radius.drad_x_fillfac);
295 colden.colden[ipCOL_HMIN] += (realnum)(findspecieslocal("H-")->den*radius.drad_x_fillfac);
296 /* >>chng 02 sep 20, from htwo to H2_total */
297 /* >>chng 05 mar 14, rather than H2_total, give H2g and H2s */
298 colden.colden[ipCOL_H2g] += (realnum)(findspecieslocal("H2")->den*(realnum)radius.drad_x_fillfac);
299 colden.colden[ipCOL_H2s] += (realnum)(findspecieslocal("H2*")->den*(realnum)radius.drad_x_fillfac);
300 /* this is a special form of column density - should be proportional to total shielding */
301 colden.coldenH2_ov_vel += hmi.H2_total*(realnum)radius.drad_x_fillfac / GetDopplerWidth(2.f*dense.AtomicWeight[ipHYDROGEN]);
302 colden.colden[ipCOL_HeHp] += (realnum)(findspecieslocal("HeH+")->den*(realnum)radius.drad_x_fillfac);
303 colden.colden[ipCOL_H2p] += (realnum)(findspecieslocal("H2+")->den*(realnum)radius.drad_x_fillfac);
304 colden.colden[ipCOL_H3p] += (realnum)(findspecieslocal("H3+")->den*(realnum)radius.drad_x_fillfac);
305 colden.colden[ipCOL_Hp] += dense.xIonDense[ipHYDROGEN][1]*(realnum)radius.drad_x_fillfac;
306 colden.colden[ipCOL_H0] += dense.xIonDense[ipHYDROGEN][0]*(realnum)radius.drad_x_fillfac;
307
308 colden.colden[ipCOL_elec] += (realnum)(dense.eden*radius.drad_x_fillfac);
309 /* He I t2S column density*/
310 colden.He123S += iso_sp[ipHE_LIKE][ipHELIUM].st[ipHe2s3S].Pop()*(realnum)radius.drad_x_fillfac;
311
312 /* the ortho and para column densities */
313 h2.ortho_colden += h2.ortho_density*radius.drad_x_fillfac;
314 h2.para_colden += h2.para_density*radius.drad_x_fillfac;
315 if( hmi.H2_total > SMALLFLOAT )
316 ASSERT( fabs( h2.ortho_density + h2.para_density - hmi.H2_total ) / hmi.H2_total < 1e-4 );
317 /*fprintf(ioQQQ,"DEBUG ortho para\t%.3e\t%.3e\ttot\t%.3e\t or pa colden\t%.3e\t%.3e\n",
318 h2.ortho_density, h2.para_density,hmi.H2_total,
319 h2.ortho_colden , h2.para_colden);*/
320
321 /*>>chng 27mar, GS, Column density of F=0 and F=1 levels of H0*/
322 colden.H0_21cm_upper += ((*HFLines[0].Hi()).Pop()*radius.drad_x_fillfac);
323 colden.H0_21cm_lower += ((*HFLines[0].Lo()).Pop()*radius.drad_x_fillfac);
324 /*fprintf(ioQQQ,"DEBUG pophi-poplo\t%.3e\t%.3e\radius\t%.3e\t col_hi\t%.3e\t%.3e\n",
325 HFLines[0].PopHi, HFLines[0].PopLo, radius.drad_x_fillfac,
326 HFLines[0].PopHi*radius.drad_x_fillfac,colden.H0_21cm_upper );*/
327
328 /* the CII and SiII atoms are resolved */
329 for( i=0; i < 5; i++ )
330 {
331 /* pops and column density for C II atom */
332 colden.C2Colden[i] += colden.C2Pops[i]*(realnum)radius.drad_x_fillfac;
333 /* pops and column density for SiII atom */
334 colden.Si2Colden[i] += colden.Si2Pops[i]*(realnum)radius.drad_x_fillfac;
335 }
336 for( i=0; i < 3; i++ )
337 {
338 /* pops and column density for CI atom */
339 colden.C1Colden[i] += colden.C1Pops[i]*(realnum)radius.drad_x_fillfac;
340 /* pops and column density for OI atom */
341 colden.O1Colden[i] += colden.O1Pops[i]*(realnum)radius.drad_x_fillfac;
342 }
343 for( i=0; i < 4; i++ )
344 {
345 /* pops and column density for CIII atom */
346 colden.C3Colden[i] += colden.C3Pops[i]*(realnum)radius.drad_x_fillfac;
347 }
348
349 /* now add total molecular column densities */
350 molcol("ADD ",ioQQQ);
351
352 /* increment forming the mean ionization and temperature */
353 mean.MeanInc();
354
355 /*-----------------------------------------------------------------------*/
356
357 /* calculate average atomic weight per hydrogen of the plasma */
358 avWeight = 0.;
359 for( nelem=0; nelem < LIMELM; nelem++ )
360 {
361 avWeight += dense.gas_phase[nelem]*dense.AtomicWeight[nelem];
362 }
363 avWeight /= dense.gas_phase[ipHYDROGEN];
364
365 /* compute some average grain properties */
366 rfield.opac_mag_B_point = 0.;
367 rfield.opac_mag_V_point = 0.;
368 rfield.opac_mag_B_extended = 0.;
369 rfield.opac_mag_V_extended = 0.;
370 for( size_t nd=0; nd < gv.bin.size(); nd++ )
371 {
372 /* this is total extinction in magnitudes at V and B, for a point source
373 * total absorption and scattering,
374 * does not discount forward scattering to be similar to stellar extinction
375 * measurements made within ism */
376 rfield.opac_mag_B_point += (gv.bin[nd]->dstab1[rfield.ipB_filter-1] +
377 gv.bin[nd]->pure_sc1[rfield.ipB_filter-1])*double(gv.bin[nd]->dstAbund)*
378 double(dense.gas_phase[ipHYDROGEN]) * OPTDEP2EXTIN;
379
380 rfield.opac_mag_V_point += (gv.bin[nd]->dstab1[rfield.ipV_filter-1] +
381 gv.bin[nd]->pure_sc1[rfield.ipV_filter-1])*double(gv.bin[nd]->dstAbund)*
382 double(dense.gas_phase[ipHYDROGEN]) * OPTDEP2EXTIN;
383
384 /* this is total extinction in magnitudes at V and B, for an extended source
385 * total absorption and scattering,
386 * DOES discount forward scattering to apply for extended source like Orion */
387 rfield.opac_mag_B_extended += (gv.bin[nd]->dstab1[rfield.ipB_filter-1] +
388 gv.bin[nd]->pure_sc1[rfield.ipB_filter-1]*gv.bin[nd]->asym[rfield.ipB_filter-1])*
389 double(gv.bin[nd]->dstAbund)*double(dense.gas_phase[ipHYDROGEN]) * OPTDEP2EXTIN;
390
391 rfield.opac_mag_V_extended += (gv.bin[nd]->dstab1[rfield.ipV_filter-1] +
392 gv.bin[nd]->pure_sc1[rfield.ipV_filter-1]*gv.bin[nd]->asym[rfield.ipV_filter-1])*
393 double(gv.bin[nd]->dstAbund)*double(dense.gas_phase[ipHYDROGEN]) * OPTDEP2EXTIN;
394
395 gv.bin[nd]->avdust += gv.bin[nd]->tedust*(realnum)radius.drad_x_fillfac;
396 gv.bin[nd]->avdft += gv.bin[nd]->DustDftVel*(realnum)radius.drad_x_fillfac;
397 gv.bin[nd]->avdpot += (realnum)(gv.bin[nd]->dstpot*EVRYD*radius.drad_x_fillfac);
398 gv.bin[nd]->avDGRatio += (realnum)(gv.bin[nd]->dustp[1]*gv.bin[nd]->dustp[2]*
399 gv.bin[nd]->dustp[3]*gv.bin[nd]->dustp[4]*gv.bin[nd]->dstAbund/avWeight*
400 radius.drad_x_fillfac);
401 }
402
403 // doing the update outside the loop not only safes a few cycles, but also
404 // minimizes the chance of the update getting lost in the numerical precision
405 // that could lead to the sim never hitting A_V to go, and getting indefinitely
406 // stuck at an epsilon distance before the requested A_V instead...
407 rfield.extin_mag_B_point += rfield.opac_mag_B_point*radius.drad_x_fillfac;
408 rfield.extin_mag_V_point += rfield.opac_mag_V_point*radius.drad_x_fillfac;
409 rfield.extin_mag_B_extended += rfield.opac_mag_B_extended*radius.drad_x_fillfac;
410 rfield.extin_mag_V_extended += rfield.opac_mag_V_extended*radius.drad_x_fillfac;
411
412 /* there are some quantities needed to calculation the Jeans mass and radius */
413 colden.TotMassColl += dense.xMassDensity*(realnum)radius.drad_x_fillfac;
414 colden.tmas += (realnum)phycon.te*dense.xMassDensity*(realnum)radius.drad_x_fillfac;
415 colden.wmas += dense.wmole*dense.xMassDensity*(realnum)radius.drad_x_fillfac;
416
417 /* now find minimum Jeans length and mass; length in cm */
418 double meanDensity = double(dense.xMassDensity)*geometry.FillFac;
419 rjeans = 7.79637 + (phycon.alogte - log10(dense.wmole) -
420 log10(meanDensity))/2.;
421
422 /* minimum Jeans mass in gm */
423 ajmass = 3.*(rjeans - 0.30103) + log10(4.*PI/3.*meanDensity);
424
425 /* now remember smallest */
426 colden.rjnmin = MIN2(colden.rjnmin,(realnum)rjeans);
427 colden.ajmmin = MIN2(colden.ajmmin,(realnum)ajmass);
428
429 if( trace.lgTrace )
430 {
431 fprintf( ioQQQ, " radius_increment returns\n" );
432 }
433 return;
434}
double H21cm_electron(double temp)
double H21cm_H_atom(double temp)
long int nzone
Definition cddefines.cpp:14
FILE * ioQQQ
Definition cddefines.cpp:7
bool lgAbort
Definition cddefines.cpp:10
long int iteration
Definition cddefines.cpp:16
#define ASSERT(exp)
Definition cddefines.h:578
const int ipCARBON
Definition cddefines.h:310
#define MIN2
Definition cddefines.h:761
const int ipOXYGEN
Definition cddefines.h:312
const int LIMELM
Definition cddefines.h:258
const int NISO
Definition cddefines.h:261
const int ipHELIUM
Definition cddefines.h:306
float realnum
Definition cddefines.h:103
#define MAX2
Definition cddefines.h:782
sys_float SDIV(sys_float x)
Definition cddefines.h:952
const int ipHYDROGEN
Definition cddefines.h:305
#define DEBUG_ENTRY(funcname)
Definition cddefines.h:684
int index
Definition mole.h:169
ProxyIterator< qStateProxy, qStateConstProxy > iterator
t_colden colden
Definition colden.cpp:5
#define ipCOL_elec
Definition colden.h:30
#define ipCOL_HTOT
Definition colden.h:12
#define ipCOL_HeHp
Definition colden.h:24
#define ipCOL_H2s
Definition colden.h:18
#define ipCOL_H2g
Definition colden.h:16
#define ipCOL_Hp
Definition colden.h:26
#define ipCOL_HMIN
Definition colden.h:14
#define ipCOL_H0
Definition colden.h:22
#define ipCOL_H2p
Definition colden.h:20
#define ipCOL_H3p
Definition colden.h:28
t_conv conv
Definition conv.cpp:5
const realnum SMALLFLOAT
Definition cpu.h:191
t_dense dense
Definition dense.cpp:24
realnum GetDopplerWidth(realnum massAMU)
t_geometry geometry
Definition geometry.cpp:5
GrainVar gv
Definition grainvar.cpp:5
void GravitationalPressure(void)
Definition gravity.cpp:12
diatomics h2("h2", 4100., &hmi.H2_total, Yan_H2_CS)
t_hmi hmi
Definition hmi.cpp:5
t_hydro hydro
Definition hydrogenic.cpp:5
t_hyperfine hyperfine
Definition hyperfine.cpp:5
t_iso_sp iso_sp[NISO][LIMELM]
Definition iso.cpp:8
const int ipH1s
Definition iso.h:27
const int ipHe2s3S
Definition iso.h:44
const int ipHE_LIKE
Definition iso.h:63
const int ipH2p
Definition iso.h:29
const int ipH_LIKE
Definition iso.h:62
t_mean mean
Definition mean.cpp:17
void molcol(const char *chLabel, FILE *ioMEAN)
Definition molcol.cpp:12
t_mole_global mole_global
Definition mole.cpp:6
t_mole_local mole
Definition mole.cpp:7
molezone * findspecieslocal(const char buf[])
molecule * findspecies(const char buf[])
t_opac opac
Definition opacity.cpp:5
t_phycon phycon
Definition phycon.cpp:6
UNUSED const double PI
Definition physconst.h:29
UNUSED const double BOLTZMANN
Definition physconst.h:97
UNUSED const double EVRYD
Definition physconst.h:189
UNUSED const double OPTDEP2EXTIN
Definition physconst.h:60
t_pressure pressure
Definition pressure.cpp:5
t_radius radius
Definition radius.cpp:5
void radius_increment(void)
t_rfield rfield
Definition rfield.cpp:8
t_struc struc
Definition struc.cpp:6
TransitionList HFLines("HFLines", &AnonStates)
void TempChange(double TempNew, bool lgForceUpdate)
t_thermal thermal
Definition thermal.cpp:5
t_timesc timesc
Definition timesc.cpp:5
t_trace trace
Definition trace.cpp:5
double TexcLine(const TransitionProxy &t)
Wind wind
Definition wind.cpp:5