23static const double aNI[
N1_SIZE] = {2.755e-5,4.123e-5,7.536e-6,1.486e-5,4.516e-5,
24 -2.935e-6,4.000e-6,3.751e-6,-2.176e-6,1.024e-5};
25static const double bNI[
N1_SIZE] = {-8.150e-8,-1.220e-7,-2.226e-8,-4.390e-8,-1.130e-7,
26 8.000e-9,-1.1447e-8,-1.061e-8,5.610e-9,-3.227e-8};
27static const double cNI[
N1_SIZE] = {2.140e-4,3.272e-4,-4.944e-6,3.473e-6,-8.772e-4,
28 1.654e-3,1.675e-3,1.123e-3,3.867e-3,3.376e-4};
30static double NI[6][6][3];
43 int ipLoTayal=-1, ipHiTayal=-1;
50 if(ipLo < 1 || ipHi > 5)
53 int ipTayalOrder[6]={0,1,3,2,4,5};
54 ipLoTayal = ipTayalOrder[ipLo];
55 ipHiTayal = ipTayalOrder[ipHi];
57 if( ipLo==2 && ipHi==3 )
63 static bool lgMustInit =
true;
68 for(
long i=0; i<6; i++)
70 for(
long j=0; j<6; j++)
81 for(
int i=1; i<6; i++)
83 for(
int j=i+1; j<6; j++)
85 NI[i][j][0] =
aNI[index];
86 NI[i][j][1] =
bNI[index];
87 NI[i][j][2] =
cNI[index];
95 for(
long i=1; i<6; i++)
97 for(
long j=i+1; j<6; j++)
99 printf(
"NI %i%i a:%e ", i, j,
NI[i][j][0]);
100 printf(
"%i%i b:%e\n", i, j,
NI[i][j][1]);
106 double temp_max = 50e3;
109 temp =
MAX2(temp, temp_min);
110 temp =
MIN2(temp, temp_max);
159 static const double gN1[5]={4.,6.,4.,2.,4.};
160 static const double exN1[4]={19224.464,8.713,9605.74,0.386};
228 static const double csN1_a[
NI_NDP] = {
229 -12.3982, -9.4523, -12.5580, -10.8813, -13.6532, -9.9035, -11.4470, -5.4776, -6.3304
231 static const double csN1_b[
NI_NDP] = {
232 0.7458, 0.3865, 0.7330, 0.6853, 0.7712, 0.3919, 0.6734, 0.1789, 0.1966
235 for( i=0; i <
NI_NDP; ++i )
255 double beta = 0.7955;
258 RPI *= (1.-beta)/(1.-beta*(1.-Premove));
262 RPD0 *= (1.-beta)/(1.-beta*(1.-Premove));
266 double pump14 = 0.0113*RPI + 0.0239*RPD0 + 0.0090*RPD1 + 0.1617*RPD2 + 0.0167*RPD3 + 0.4404*RPD4;
267 double pump15 = 0.0112*RPI + 0.0265*RPD0 + 0.6253*RPD1 + 0.5108*RPD2 + 0.0824*RPD3 + 0.2588*RPD4;
268 double pump13 = 0.3441*RPI + 0.8621*RPD0 + 0.0233*RPD1 + 0.0895*RPD2 + 0.1068*RPD3 + 0.1644*RPD4;
269 double pump12 = 0.0417*RPI + 0.0468*RPD0 + 0.3408*RPD1 + 0.2328*RPD2 + 0.7937*RPD3 + 0.1338*RPD4;
271 pump14 += 0.4881*RPD5 + 0.0876*RPD6 + 0.0450*RPD7 + 0.1777*RPD8;
272 pump15 += 0.1569*RPD5 + 0.0484*RPD6 + 0.2240*RPD7 + 0.0854*RPD8;
273 pump13 += 0.2908*RPD5 + 0.8397*RPD6 + 0.0694*RPD7 + 0.7369*RPD8;
274 pump12 += 0.0623*RPD5 + 0.0238*RPD6 + 0.6615*RPD7 + 0.0000*RPD8;
283 double eff_recrate_2D = 1.108e-13 * pow(
phycon.
te*1e-4, -0.6085) /
284 (1. - 0.0041 * pow(
phycon.
te*1e-4, -0.3975) );
285 double eff_recrate_2P = 0.659e-13 * pow(
phycon.
te*1e-4, -0.6158);
293 double rec14 = eff_recrate_2P * fac_n1 * 2./6.;
294 double rec15 = eff_recrate_2P * fac_n1 * 4./6.;
295 double rec13 = eff_recrate_2D * fac_n1 * 4./10.;
296 double rec12 = eff_recrate_2D * fac_n1 * 6./10.;
307 double Cooling , CoolingDeriv;
308 atom_pop5(gN1,exN1,cs12,cs13,cs14,cs15,cs23,cs24,cs25,cs34,cs35,
309 cs45,a12Tot,a13Tot,a14,a15,a23,a24,a25,a34,a35,a45,pop,
311 pump12 , pump13 , pump14 , pump15 );
362 p3 =
atom_pop3( 9.,5.,1., cs21, cs31, cs32, a21, a31, a32 ,
416 static vector< pair<TransitionList::iterator,double> > N3Pump;
424 N3Pump.push_back( ppa );
426 N3Pump.push_back( ppb );
428 N3Pump.push_back( ppc );
430 N3Pump.push_back( ppd );
432 N3Pump.push_back( ppe );
446 branch_ratio = 2./3.;
448 branch_ratio = 1./2.;
450 branch_ratio = 1./6.;
453 pair<TransitionList::iterator,double> pp2(
TauLine2.
begin()+i, branch_ratio );
454 N3Pump.push_back( pp2 );
460 double pump_rate = 0.;
461 vector< pair<TransitionList::iterator,double> >::const_iterator n3p;
462 for( n3p=N3Pump.begin(); n3p != N3Pump.end(); ++n3p )
465 double branch_ratio = n3p->second;
466 pump_rate += (*t).Emis().pump()*branch_ratio;
469 (*t).WLAng , (*t).Emis().pump()*branch_ratio );
482 0.201 , 1.088 , 0.668 , 2.044 , pump_rate,
"N 3");
void ligbar(long int ized, const TransitionProxy &t2s2p, const TransitionProxy &t2s3p, double *cs2s2p, double *cs2s3p)
long ipNI_pumpDirect[NI_NDP]
void atom_level2(const TransitionProxy &t)
void atom_level3(const TransitionProxy &t10, const TransitionProxy &t21, const TransitionProxy &t20)
double atom_pop3(double g1, double g2, double g3, double o12, double o13, double o23, double a21, double a31, double a32, double Tex12, double Tex23, realnum *pop2, double abund, double gam2, double r12, double r13)
void atom_pop5(const double g[], const double EnerWN[], double cs12, double cs13, double cs14, double cs15, double cs23, double cs24, double cs25, double cs34, double cs35, double cs45, double a21, double a31, double a41, double a51, double a32, double a42, double a52, double a43, double a53, double a54, double p[], realnum abund, double *Cooling, double *CoolingDeriv, double pump01, double pump02, double pump03, double pump04)
void AtomSeqBeryllium(double cs12, double cs13, double cs23, const TransitionProxy &t, double a30)
void AtomSeqBoron(const TransitionProxy &t10, const TransitionProxy &t20, const TransitionProxy &t30, const TransitionProxy &t21, const TransitionProxy &t31, const TransitionProxy &t41, double cs40, double cs32, double cs42, double cs43, double pump_rate, const char *chLabel)
int dprintf(FILE *fp, const char *format,...)
bool fp_equal(sys_float x, sys_float y, int n=3)
NORETURN void TotalInsanity(void)
sys_float SDIV(sys_float x)
#define DEBUG_ENTRY(funcname)
void CoolAdd(const char *chLabel, realnum lambda, double cool)
static const double cNI[N1_SIZE]
static const double aNI[N1_SIZE]
STATIC double xNI_coll_stren(int ipLo, int ipHi)
static const double bNI[N1_SIZE]
static double NI[6][6][3]
void set_NaN(sys_float &x)
double PopLevels[LIMLEVELN+1]
double xIonDense[LIMELM][LIMELM+1]
double pump5199
pump of [NI] 5199 by FUV intercombination lines, only an estimate
double rec5199
recombination pumping of [NI] 5199, only an estimate
TransitionList TauLine2("TauLine2", &AnonStates)
TransitionProxy::iterator TauDummy
TransitionList TauLines("TauLines", &AnonStates)
void DumpLine(const TransitionProxy &t)
void PutCS(double cs, const TransitionProxy &t)