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 atmdat_readin TauLine2 in atmdat_readin iso in iso_create CORotate in atmdat_readin ============================================================================== 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] DEGENERATE LINES some lines are totally overlapping - best example is the set of transitions in H-like species that end up in 2s and 2p. For these transitions the population that enters into the opacity is the sum of the two. The struc element PopOpc includes the sum of the two lower levels for the absorption opacity. This is done in the routine that determines level populations, hydrolevel for H. With this, nothing else need be done. The optical depths will be the sum of the overlapping lines. ============================================================================== 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 atmdat_readin initial setup of line array in tauout ============================================================================== level 2 atom_level2 atom_level2 lines are evaluated in DimaCool, which contains logic for when to reevaluate rates for( i=0; i 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, types are defined in cddefines.h ipPRD; /* = 1 *//* partial redistribution with wings */ ipCRD; /* = -1 *//* complete redistribution, core only, no wings, Hummer's K2 function */ ipCRDW; /* = 2 *//* complete redistribution with wings */ ipLY_A; /* = -1 *//* redistribution function for Lya, calls Hummer routine for H-like series only */ ipDEST_K2; /*= 1*//* core function for K2 destruction */ ipDEST_INCOM; /*= 2*//* core function for complete redist destruction */ ipDEST_SIMPL; /*= 3*//* core function for simple destruction */ individual lines are set to this in zero adjusted with atom he-likeredistribution, atom h-like redistribution commands =========================================================================== printed lines PutLine( EmLine ); putting lines into printout prt_wl( ioQQQ , wavelength ) will print wavelength in proper format