00001
00002
00003
00004 #ifndef ATOMS_H_
00005 #define ATOMS_H_
00006
00015 void AtomSeqBeryllium(double cs12,
00016 double cs13,
00017 double cs23,
00018 const TransitionProxy & t,
00019 double a30);
00020
00037 void AtomSeqBoron(
00038 const TransitionProxy & t21,
00039 const TransitionProxy & t31,
00040 const TransitionProxy & t41,
00041 const TransitionProxy & t32,
00042 const TransitionProxy & t42,
00043 const TransitionProxy & t52,
00044 double cs51,
00045 double cs43,
00046 double cs53,
00047 double cd54,
00048 double pump_rate ,
00049 const char *chLabel
00050 );
00051
00055 void atom_level2(const TransitionProxy & t );
00056
00063 void atom_level3(const TransitionProxy & t10,
00064 const TransitionProxy & t21,
00065 const TransitionProxy & t20);
00066
00076 double atom_pop2(double omega,
00077 double g1,
00078 double g2,
00079 double a21,
00080 double bltz,
00081 double abund);
00082
00102 double atom_pop3(
00103 double g1, double g2, double g3,
00104 double o12, double o13, double o23,
00105 double a21, double a31, double a32,
00106 double Tex12, double Tex23,
00107 realnum *pop2,
00108 double abund,
00109 double gam2,
00110 double r12,
00111 double r13 );
00112
00146 void atom_pop5(const double g[],
00147 const double ex[],
00148 double cs12,
00149 double cs13,
00150 double cs14,
00151 double cs15,
00152 double cs23,
00153 double cs24,
00154 double cs25,
00155 double cs34,
00156 double cs35,
00157 double cs45,
00158 double a21,
00159 double a31,
00160 double a41,
00161 double a51,
00162 double a32,
00163 double a42,
00164 double a52,
00165 double a43,
00166 double a53,
00167 double a54,
00168 double p[],
00169 realnum abund,
00170 double *Cooling,
00171 double *CoolingDeriv,
00172 double pump12,
00173 double pump13,
00174 double pump14,
00175 double pump15
00176 );
00177
00204 void atom_levelN(
00205 long int nlev,
00206 realnum abund,
00207 const double g[],
00208 const double ex[],
00209 char chExUnits,
00210 double pops[],
00211 double depart[],
00212 double ***AulEscp,
00213 double ***col_str,
00214 double ***AulDest,
00215 double ***AulPump,
00216 double ***CollRate,
00217 const double create[],
00218 const double destroy[],
00219 bool lgCollRateDone,
00220 double *cooltl,
00221 double *coolder,
00222 const char *chLabel,
00223 int *nNegPop,
00224 bool *lgZeroPop,
00225 bool lgDeBug,
00226 bool lgLTE=false,
00227 multi_arr<double,2> *Cool=NULL,
00228 multi_arr<double,2> *dCooldT=NULL);
00229
00233 void atom_oi_calc(double *coloi);
00234
00236 const int N_OI_LEVELS = 6;
00237 const long LIMLEVELN = 20L;
00238
00239 struct t_atoms {
00240
00242 realnum p2nit, d5200r;
00243
00245 double c12, c13;
00246
00249 long int ipoiex[5];
00250
00252 long int nNegOI;
00253
00255 double popoi[N_OI_LEVELS];
00256
00257 realnum pmpo51, pmpo15;
00258
00260 realnum xMg2Max,
00262 popmg2;
00263
00270 double PopLevels[LIMLEVELN+1],
00271 DepLTELevels[LIMLEVELN+1];
00272
00273 };
00274 extern t_atoms atoms;
00275
00276 #endif