00001
00002
00003
00010 double atmdat_2phot_shapefunction( double EbyE2nu, long ipISO, long nelem );
00011
00017 void atmdat_2phot_rate(
00018 long ipZ ,
00019 long ipISO );
00020
00024 void atmdat_readin(void);
00025
00036 void atmdat_outer_shell(
00037 long int iz,
00038 long int in,
00039 long int *imax,
00040 long int *ig0,
00041 long int *ig1);
00042
00048 void ChargTranEval( double *O_HIonRate );
00049
00054 double ChargTranSumHeat(void);
00055
00056
00057
00063 void ChargTranPun( FILE* ipPnunit , char* chPunch );
00064
00070 double atmdat_dielrec_fe(long int ion, double t);
00071
00075 void atmdat_H_phot_cs(void);
00076
00079 void atmdat_3body(void);
00080
00092 double atmdat_HS_caseB(
00093 long int iHi, long int iLo, long int iZ, double TempIn,
00094 double DenIn,
00095 char chCase
00096 );
00097
00099 void atmdat_DielSupres(void);
00100
00101
00102
00103 #define NHSDIM 15
00104 #define NLINEHS 300
00105 #define HS_NZ 8
00107 EXTERN struct t_atmdat {
00108
00128 double HCharExcIonOf[LIMELM][LIMELM+1],
00129 HCharExcRecTo[LIMELM][LIMELM+1],
00130 HCharHeatMax,
00131 HCharCoolMax,
00132 HCharHeatOn;
00133
00134
00135 double HCharExcRecTo_N0_2D;
00136
00138 double HCharExcIonTotal,
00139 HCharExcRecTotal;
00140
00142 double HeCharExcIonTotal,
00143 HeCharExcRecTotal;
00144
00146 double HIonFrac;
00147
00149 double HIonFracMax;
00150
00157 double HeCharExcIonOf[LIMELM][LIMELM],
00158 HeCharExcRecTo[LIMELM][LIMELM];
00159
00162 double HCTAlex;
00163
00166 bool lgCTOn;
00167
00170 double Density[2][HS_NZ][NHSDIM],
00171 ElecTemp[2][HS_NZ][NHSDIM],
00173 Emiss[2][HS_NZ][NHSDIM][NHSDIM][NLINEHS];
00174
00176 long int nDensity[2][HS_NZ] , ntemp[2][HS_NZ] , ncut[2][HS_NZ];
00177
00181 bool lgHCaseBOK[2][HS_NZ];
00182
00184 long int nsbig;
00185
00188 bool lgCollIonOn;
00189
00190 } atmdat;
00191
00192 typedef enum { PHFIT_UNDEF, PHFIT95, PHFIT96 } phfit_version;
00193
00194 class t_ADfA : public Singleton<t_ADfA>
00195 {
00196 friend class Singleton<t_ADfA>;
00197 protected:
00198 t_ADfA();
00199 private:
00200 phfit_version version;
00201
00202 long int L[7];
00203 long int NINN[30];
00204 long int NTOT[30];
00205 float PH1[7][30][30][6];
00206 float PH2[30][30][7];
00207
00208 float PHH[NHYDRO_MAX_LEVEL][5];
00209
00210 float P[8][110];
00211 float ST[9][405];
00212
00213 float rrec[30][30][2];
00214 float rnew[30][30][4];
00215 float fe[13][3];
00216
00217 float HRF[NHYDRO_MAX_LEVEL][9];
00218
00221 float STH[NHYDRO_MAX_LEVEL];
00222
00223 double CF[30][30][5];
00224 public:
00228 void set_version(phfit_version val) { version = val; }
00229
00231 phfit_version get_version() const { return version; }
00232
00239 float ph1(int i, int j, int k, int l) const { return PH1[i][j][k][l]; }
00240
00245 float sth(int i) const { return STH[i]; }
00246
00255 double phfit(long int nz, long int ne, long int is, double e);
00256
00263 double hpfit(long int iz, long int n, double e);
00264
00271 double hpfit_rel(long int iz, long int n, double e);
00272
00278 void rec_lines(double t, float r[][471]);
00279
00286 double rad_rec(long int iz, long int in, double t);
00287
00294 double H_rad_rec(long int iz, long int n, double t);
00295
00302 double coll_ion(long int iz, long int in, double t);
00303 };