cddefines.h has the typedef for structure/class EmLine:
lines actually exist in taulines.h

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

bogus lines
in multilevel atoms some lines don't exist.  There are indicated by ipCont = -1

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

space for TauLines lines is allocated in CreateData
TauLine2 in CreateData
iso in iso_create
CORotate in CreateData

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

FeII lines, all in pop371
Fe2LevN

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

H-like and He-like lines 
EmisLines[ipISO][nelem][ipHi][ipLo]
space for lines is created in iso_create, 
declared in taulines.h

extra lyman lines
iso.ExtraLymanLines[ipISO][nelem][ipHi]


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

Behar UTA lines  -  there are nUTA of them
UTALines[i]

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

level 1 level1 
all included in taulines.h
#include "taulines.h"

/* level 1 lines extend from 1 through nLevel1+1 of this array
 * the dummy line is in the 0th position */
for( i=1; i <= nLevel1; i++ )
	TauLines[i][0] = xxx;

definition of TauLines is in taulines.h
space created and data read in in CreateData
initial setup of line array in tauout

==============================================================================
level 2 level2 

level2 lines are evaluated in DimaCool, 
	which contains logic for when to reevaluate rates

for( i=0; i<nWindLine; ++i)
	TauLine2[i][ipCompPurpose] = xxxx;

all included in taulines.h
EXTERN EmLine *TauLine2;

number of levels in taulines.h:
#define	NWINDDIM	6744

upper limit to loops is following, set to -1 when level 2 turned off
extern long	nWindLine;

data read in in getdata
initial setup of line array in tauout
collision strenghts generated in ColStrGBar, called in CoolDima
level populations determined in CoolDima, called by coolr
added to line stack in lines.c

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

carbon monoxide co 

	for( i=0; i < nCORotate; i++ )
	{
		CORotate[i].EnergyRyd = 

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

ots continuum rates, all hydro rates, evaluated in routines HydroOTS(); HeMetalOTS();,
called by ionize

all lines add ots by calling AddOTSLin, called by routines that generate cooling,
	mostly level2 and level3

all continua add ots by calling AddOTSCon

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

radiative transfer escape and destruction probabilities are set in MakeRT

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

excitation temperature of any transferred line obtained by calling TexcLine
Texc = TexcLine(TauLine2 )

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

line optical depths incremented in LineTauInc, called by tauinc

line transfer parameters such as escape and pumping rates are established in 
MakeWindRT and MakeStatRT which are called by MakeRT, which can be called from various places

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

dumping info about a line,
void DumpLine(EmLine * t)
#include "dumpline.h"

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

adding to line stack
PutLine (em struct ) => linadd
lindst 

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

ionization and element labels are stored in zerologic.c

elementnames.h has names
#include "elementnames.h"
elementnames.chElementSym has 2ch name as used in label
elementnames.chElementNameShort[nelem] is 4-char name in caps
elementnames.chElementName has full name upper and lower case

generate a line label
chLineLbl takes struc produces "totl 4861A"
chIonLbl the ion label, like "C  4"

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

damping constant for the line, save it */
t->damp = t->dampXvel/velocity;

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

line redistribution functions, 
stored in t->iRedisFun
-1 complete redis Dopper core only, 
 0 insanity
 1 incomplete redistirbution with damping wings, 
 2 complete redistribution with damping wings,

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

printed lines

PutLine( EmLine );  putting lines into printout

prt_wl( ioQQQ , wavelength ) will print wavelength in proper format 
