00001
00002
00003
00004 #include "cddefines.h"
00005 #include "phycon.h"
00006 #include "dense.h"
00007 #include "atoms.h"
00008
00009 double atom_pop2(double omega,
00010 double g1,
00011 double g2,
00012 double a21,
00013 double bltz,
00014 double abund)
00015 {
00016 double boltz,
00017 popexc_v,
00018 q12,
00019 q21,
00020 r;
00021
00022 DEBUG_ENTRY( "atom_pop2()" );
00023
00024
00025
00026
00027
00028 boltz = bltz*phycon.teinv;
00029 if( abund == 0. || boltz > 15. )
00030 {
00031 popexc_v = 0.;
00032
00033 DEBUG_EXIT( "atom_pop2()" );
00034 return( popexc_v );
00035 }
00036
00037
00038 ASSERT( omega > 0. );
00039
00040 q21 = dense.cdsqte*omega;
00041 q12 = q21/g1*exp(-boltz);
00042 q21 /= g2;
00043 r = (a21 + q21)/q12;
00044 popexc_v = abund*a21/(r + 1.);
00045
00046 DEBUG_EXIT( "atom_pop2()" );
00047 return( popexc_v );
00048 }
00049