00001
00002
00003
00004 #ifndef ATOMFEII_H_
00005 #define ATOMFEII_H_
00006
00016 void AssertFeIIDep( double *pred , double *BigError , double *StdDev );
00017
00019 void FeIICreate(void);
00021 void FeIIPrint(void);
00022
00023 void FeIILevelPops(void);
00024
00031 double FeIISumBand(realnum wl1,
00032 realnum wl2,
00033 double *SumBandInward );
00034
00036 void FeII_RT_TauInc(void);
00037
00039 void FeII_RT_tau_reset(void);
00040
00042 void FeIIPoint(void);
00043
00044
00049 void FeIIAccel(double *fe2drive);
00050
00054 void FeII_RT_Make( void );
00055
00057 void FeIIAddLines( void );
00058
00062 void FeIIPunchLevels( FILE * ioPUN );
00063
00068 void FeIIPunchColden(
00069 FILE *ioPUN );
00070
00075 void FeII_Colden( const char *chLabel );
00076
00077
00081 void FeIISaveLines( FILE * ioPUN );
00082
00086 void FeIIPunchOpticalDepth( FILE * ioPUN );
00087
00089 void FeII_LineZero(void);
00090
00092 void FeIIIntenZero(void);
00093
00095 double FeIIRadPress(void);
00096
00100 double FeII_InterEnergy(void);
00101
00107 void FeIIPunDepart(FILE* ioPUN ,
00108 bool lgDoAll );
00109
00110 void PunFeII( FILE * io );
00111
00117 void FeIIPun1Depart(FILE * ioPUN , long int nPUN );
00123 void FeIIPunData(
00124 FILE* ioPUN ,
00125 bool lgDoAll );
00126
00135 void FeIIPunPop(FILE* ioPUN ,
00136 bool lgPunchRange ,
00137 long int ipRangeLo ,
00138 long int ipRangeHi ,
00139 bool lgPunchDensity );
00140
00141
00148 void FeIIPunchLineStuff( FILE * io , realnum xLimit , long index);
00149
00150 #if 0
00151
00157 void FeIIPun1Pop(
00158 FILE * ioPUN ,
00159 long int nPUN );
00160 #endif
00161
00163 void FeIIZero(void);
00164
00166 void FeIIReset(void);
00167
00169 void FeII_OTS(void);
00170
00172 void FeII_RT_Out(void);
00173
00175 class Parser;
00176
00177 void ParseAtomFeII( Parser &p );
00178
00180 #define NFE2LEVN 371
00181
00185 extern bool lgFeIIMalloc;
00186
00187 struct t_FeII {
00188
00191 long int nFeIILevel_local;
00193 long int nFeIILevel_malloc;
00194
00198 bool lgFeIILargeOn;
00199
00201 bool lgSlow;
00202
00204 bool lgPrint;
00205
00207 double FeIINRGs[NFE2LEVN];
00208
00210 double FeIISTWT[NFE2LEVN];
00211
00213 double FeIIAul[NFE2LEVN][NFE2LEVN];
00214
00216 double FeIIColl[NFE2LEVN][NFE2LEVN][8];
00217
00219 bool lgSimulate;
00220
00222 char chFeIIAtom[7];
00223
00225 bool lgShortFe2;
00226
00229 bool lgLyaPumpOn;
00230
00233 realnum fe2ener[2];
00234
00236 realnum fe2thresh;
00237
00239 realnum feconwlLo , feconwlHi;
00241 long int nfe2con;
00242
00244 int ipRedisFcnResonance;
00245 int ipRedisFcnSubordinate;
00246
00250 double Fe2_large_cool,
00251 ddT_Fe2_large_cool,
00252 Fe2_large_heat;
00253
00256 double
00257 ddT_Fe2_UVsimp_cool ,
00258 Fe2_UVsimp_cool,
00259 for7;
00260
00261 };
00262 extern t_FeII FeII;
00263
00264
00265
00266
00268 const int NFEII = 373;
00270 const int NFE2PR = 61;
00271
00272 class t_fe2ovr_la : public Singleton<t_fe2ovr_la>
00273 {
00274 friend class Singleton<t_fe2ovr_la>;
00275 protected:
00276 t_fe2ovr_la();
00277 private:
00278 realnum fe2lam[NFEII];
00279 realnum fe2osc[NFEII];
00280 realnum fe2enr[NFEII];
00281 realnum fe2gs[NFEII];
00282
00283 long int ipfe2[NFEII];
00284
00286 realnum feopc[NFEII];
00287 realnum Fe2TauLte[NFEII];
00288 realnum Fe2PopLte[NFEII];
00289
00290 double fe2pt[NFE2PR];
00291 double fe2pf[NFE2PR];
00292
00294 double fe2par(double te);
00295 public:
00296 void zero_opacity();
00297
00298 void init_pointers();
00299
00301 void tau_inc();
00302
00304 void atoms_fe2ovr(void);
00305 };
00306
00307 #endif