
==============================================================================

populations, level of ionization, set in hydrolevel,
form sum of all level populations, this adds up to inverse of HIonFraccom.HIonFrac[ipZ]

==============================================================================

hydrogen lines 
space for lines is created in HydroCreate, 
declared in taulines.h

pointers set up in ContCreatePointers

HydroLines[ipZ][[ipHi][ipLo].xxx
optical depths incremented in tauinc by calling tauchn (just like all other lines)
loops should be as follows:

for( ipLo=IP1S; ipLo < iso.nLevels[ipSEQUENCE][ipELEMENT]; ipLo++ )
{
	for( ipHi=ipLo + 1; ipHi <= nhlevel; ipHi++ )
	{
		/* population of lower level rel to ion */
		HydroLines[ipZ][ipHi][ipLo].xxx = 0.;
	}
}

not that loop over all levels is from IP1S to <= nhlevel

main driver is hydrogenic.c

to check whether hydrogenic stages are populated
		if( IonRange.IonHigh[ipZ] == ipZ + 2 )

line printed into stack in linset1

two-photon has wavelength of 0

==============================================================================

two photon emission 
added to continuum in rtdiffuse
rates stored in hydro.AsHy2nu[ipISO][ipZ][i]
routines are stored in twophoton.c
print statement, to print full continuum emission, in ContCreatePointers

==============================================================================

where hlife is defined.  this is used to make
density dependent As in HydroPesc
line opacity also defined in HydroPesc

==============================================================================

hydrogen continua 
hydrogenic recombination continua are added to ThroOut.ThrowOut[i] in MakeDiffuse
but not into active beams there

ots lines and continua
HydroOTS does ots lines and continua

==============================================================================

temperature limits for main matrix inversion routine:
thlo.HydTempLimit* (ipZ+1) , set to 1000 in scalar
changed with hydrogen lowest command

==============================================================================

hydrogen level populations
phlevl.hn[ipZ][n]
h.hi h.hii

HydroLines[ipZ][ipHi][ipLo][IPLNPOPL-1]*xIonFracs[ipZ+2][ipZ]
phlevl.hn[ipZ][n]*xIonFracs[ipZ+2][ipZ]

==============================================================================

case b
interpolation is done by 
double HSRate( 
/* general utility to read in line emissivities from the Storey & Hummer tables
 of case B emissivities.  */
	long int iHi,	/* the principal quantum numbers, . */
	long int iLo,	/* upper and lower levels in any order*/
	long int iZ,	/* charge of ion, only 1 and 2 for now*/
	double TempIn,	/* temperature, must lie within the range of the table,
						   which depends on 
						   the ion charge, and is 500 - 30,000K for hydrogen */
	double DenIn	/* the density and must lie within the range of the table*/
	);

GetData reads in the two files e1b.d and e2b.d, for H and He

==============================================================================

heating
HPHeat.HPhotHeat[ipZ][n] has heating per atom in level n, evaluated in hydrophoto

added to total heating in hydrocool
ground state heating added as term HeatingCom.heating[ipZ][ipZ]
excited state heating added for all nelem as HeatingCom.heating[1][0] in hydrocool

====================================================================
photoionization cross sections
created in createopac and 2s and 2p are independent

===========================================================================
pointer array index indices
are set in ContCreatePointers

===========================================================================

these level indices are defined in cddefines.h
extern const int ipH1s;
extern const int ipH
===========================================================================
2s;
extern const int ipH2p;
