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 EXTERN 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 bool lgSimulate;
00208
00210 char chFeIIAtom[7];
00211
00213 bool lgShortFe2;
00214
00217 bool lgLyaPumpOn;
00218
00221 realnum fe2ener[2];
00222
00224 realnum fe2thresh;
00225
00227 realnum feconwlLo , feconwlHi;
00229 long int nfe2con;
00230
00232 int ipRedisFcnResonance;
00233 int ipRedisFcnSubordinate;
00234
00238 double Fe2_large_cool,
00239 ddT_Fe2_large_cool,
00240 Fe2_large_heat;
00241
00244 double
00245 ddT_Fe2_UVsimp_cool ,
00246 Fe2_UVsimp_cool,
00247 for7;
00248
00249 } FeII;
00250
00251
00252
00253
00255 const int NFEII = 373;
00257 const int NFE2PR = 61;
00258
00259 class t_fe2ovr_la : public Singleton<t_fe2ovr_la>
00260 {
00261 friend class Singleton<t_fe2ovr_la>;
00262 protected:
00263 t_fe2ovr_la();
00264 private:
00265 realnum fe2lam[NFEII];
00266 realnum fe2osc[NFEII];
00267 realnum fe2enr[NFEII];
00268 realnum fe2gs[NFEII];
00269
00270 long int ipfe2[NFEII];
00271
00273 realnum feopc[NFEII];
00274 realnum Fe2TauLte[NFEII];
00275 realnum Fe2PopLte[NFEII];
00276
00277 double fe2pt[NFE2PR];
00278 double fe2pf[NFE2PR];
00279
00281 double fe2par(double te);
00282 public:
00283 void zero_opacity();
00284
00285 void init_pointers();
00286
00288 void tau_inc();
00289
00291 void atoms_fe2ovr(void);
00292 };
00293
00294 #endif