/home66/gary/public_html/cloudy/c08_branch/source/cool_nitr.cpp

Go to the documentation of this file.
00001 /* This file is part of Cloudy and is copyright (C)1978-2008 by Gary J. Ferland and
00002  * others.  For conditions of distribution and use see copyright notice in license.txt */
00003 /*CoolNitr evaluate total cooling due to nitrogen */
00004 #include "cddefines.h"
00005 #include "taulines.h"
00006 #include "dense.h"
00007 #include "phycon.h"
00008 #include "ligbar.h"
00009 #include "thermal.h"
00010 #include "lines_service.h"
00011 #include "embesq.h"
00012 #include "atoms.h"
00013 #include "cooling.h"
00014 #include "nitro.h"
00015 /* xNI_coll_stren: Author: Terry Yun 2006 */
00016 /* This program interpolate the collision strength of NI 
00017  * We are only interested in first 5 levels, therefor there are 10 transitions.
00018  * Used the Excel to find the polynomial fit, eqn: CS = a*t+b*t^1.5+c*t^0.5
00019  * The range of temp is 0 - 50,000 K */
00020 /* #define PRINT */
00021 static const int N1_SIZE = 10;
00022 
00023 static double aNI[N1_SIZE] = {2.755e-5,4.123e-5,7.536e-6,1.486e-5,4.516e-5,-2.935e-6,4.000e-6,3.751e-6,-2.176e-6,1.024e-5};
00024 static double bNI[N1_SIZE] = {-8.150e-8,-1.220e-7,-2.226e-8,-4.390e-8,-1.130e-7,8.000e-9,-1.1447e-8,-1.061e-8,5.610e-9,-3.227e-8};
00025 static double cNI[N1_SIZE] = {2.140e-4,3.272e-4,-4.944e-6,3.473e-6,-8.772e-4,1.654e-3,1.675e-3,1.123e-3,3.867e-3,3.376e-4};
00026 
00027 static double NI[6][6][3]; /* coefficients a b c into array */
00028 
00029 /*xNI_coll_stren interpolate the collision strength of NI  */
00030 STATIC double xNI_coll_stren(int init, int final)
00031 {
00032         /* incorporating the N0 collision strengths give in
00033          *>>refer       N1      cs      Tayal, S.S., 2006, ApJS, 163, 207 */
00034 
00035         int i, j;
00036         double CS; /* collision strength */
00037         int index = 0;
00038         double temp_max = 50e3;
00039         double temp_min = 0;
00040         double temp = 0;
00041 
00042         /* assigning array initially to zero */ 
00043         for(i=0; i<6; i++)
00044         {
00045                 for(j=0; j<6; j++)
00046                 {
00047                         NI[i][j][0] = 0; /* coeff a */
00048                         NI[i][j][1] = 0; /* coeff b */
00049                         NI[i][j][2] = 0; /* coeff c */
00050                 }
00051         }
00052 
00053         /* reading coeffs into 3D array */   
00054         /* The index is in physics scale */
00055         for(i=1; i<6; i++)
00056         {
00057                 for(j=i+1; j<6; j++)
00058                 {
00059                         NI[i][j][0] = aNI[index];
00060                         NI[i][j][1] = bNI[index];
00061                         NI[i][j][2] = cNI[index];
00062                         index++;
00063                 }
00064         }
00065 
00066 #       ifdef PRINT
00067         /* physical index goes from 1 to 5 */
00068         for(i=1; i<6; i++)
00069         {
00070                 for(j=i+1; j<6; j++)
00071                 {
00072                         printf("NI %i%i a:%e ", i, j, NI[i][j][0]);
00073                         printf("%i%i b:%e\n", i, j, NI[i][j][1]);
00074                         /* printf("%i%i c:%lf\n", i, j, NI[i][j][2]); */
00075                 }
00076         }
00077 #       endif
00078 
00079 
00080         /* Invalid entries returns '-1':the initial indices are smaller than the final indices */
00081         if(init >= final)
00082         {
00083                 CS = -1;
00084         }
00085 
00086         /* Invalid returns '-1': the indices are greater than 5 or smaller than 0 */
00087         else if(init < 1 || init > 5 || final < 1 || final > 5)
00088         {
00089                 CS = -1;
00090         }
00091 
00092         else
00093         {
00094                 temp = MAX2(temp, temp_min); /* return lager temp */
00095                 temp = MIN2(temp, temp_max); /* return smaller temp */
00096                 /* eqn: CS = a*t+b*t^1.5+c*t^0.5 */
00097                 CS = NI[init][final][0]*phycon.te + NI[init][final][1]*phycon.te32 + NI[init][final][2]*phycon.sqrte;
00098         }
00099 
00100         return CS;
00101 }
00102 
00103 
00104 void CoolNitr(void)
00105 {
00106         realnum p2;
00107         double a21, 
00108           a31, 
00109           a32, 
00110           cs, 
00111           cs2s2p, 
00112           cs2s3p, 
00113           cs21, 
00114           cs31, 
00115           cs32, 
00116           p3,
00117           pump_rate;
00118         long int i;
00119 
00120         double a12, 
00121           a13, 
00122           a14, 
00123           a15, 
00124           a23, 
00125           a24, 
00126           a25, 
00127           a34, 
00128           a35, 
00129           a45, 
00130           cs12, 
00131           cs13, 
00132           cs14, 
00133           cs15, 
00134           cs23, 
00135           cs24, 
00136           cs25, 
00137           cs34, 
00138           cs35, 
00139           cs45;
00140 
00141         double pop[5];
00142         static double gAr4[5]={4.,6.,4.,2.,4.};
00143         static double exAr4[4]={19224.464,8.713,9605.74,0.386};
00144 
00145         static long int *ipN1Pump=NULL,
00146                 nN1Pump=0 , lgFirst_N1=true;
00147 
00148         static bool lgFirst_N3=true;
00149         static long int *ipN3Pump=NULL,
00150                 nN3Pump=0;
00151 
00152 /* #define PRINT */
00153 
00154 #       ifdef PRINT
00155         FILE *ofp;
00156         double pop1, pop2,pop3,pop4,pop5;
00157         ofp = fopen("c:\\projects\\cloudy\\trunk\\mydata\\pop.out", "w");
00158         if(ofp == NULL)
00159         {
00160                 printf("Can't open the file\n");
00161                 cdEXIT( EXIT_FAILURE );
00162         }
00163 #       endif
00164 
00165         DEBUG_ENTRY( "CoolNitr()" );
00166 
00167         /* >>chng 00 dec 11, add made-up collision strengths 
00168          * These have made-up collision strengths  */
00169 #       if 0
00170         PutCS(1.,&TauLines[ipT671]);
00171         atom_level2(&TauLines[ipT671]);
00172 
00173         PutCS(1.,&TauLines[ipT315]);
00174         atom_level2(&TauLines[ipT315]);
00175 
00176         PutCS(1.,&TauLines[ipT333]);
00177         atom_level2(&TauLines[ipT333]);
00178 
00179         PutCS(1.,&TauLines[ipT324]);
00180         atom_level2(&TauLines[ipT324]);
00181 
00182         PutCS(1.,&TauLines[ipT374g]);
00183         atom_level2(&TauLines[ipT374g]);
00184 
00185         PutCS(1.,&TauLines[ipT374x]);
00186         atom_level2(&TauLines[ipT374x]);
00187 #       endif
00188 
00189         /* find pump rate for [N I] 5199, do one time initialization if first 
00190          * call and level 2 lines are on - NB lgFirst is used in two places
00191          * in this routine - here we use it, and the last place where it is 
00192          * used it will be set false */
00193         if( lgFirst_N1 && nWindLine && dense.lgElmtOn[ipNITROGEN] )
00194         {
00195                 lgFirst_N1 = false;
00196                 nN1Pump = 0;
00197                 for( i=0; i<nWindLine; ++i )
00198                 {
00199                         /* don't test on nelem==ipNITROGEN since lines on physics, not C, scale */
00200                         if( TauLine2[i].Hi->nelem ==7 && TauLine2[i].Hi->IonStg==1  )
00201                         {
00202                                 ++nN1Pump;
00203                         }
00204                 }
00205                 if( nN1Pump<0 )
00206                         TotalInsanity();
00207                 else if( nN1Pump > 0 )
00208                         /* create the space - can't malloc 0 bytes */
00209                         ipN1Pump = (long *)MALLOC((unsigned)(nN1Pump)*sizeof(long) );
00210                 nN1Pump = 0;
00211                 for( i=0; i<nWindLine; ++i )
00212                 {
00213                         /* don't test on nelem==ipNITROGEN since lines on physics, not C, scale */
00214                         if( TauLine2[i].Hi->nelem ==7 && TauLine2[i].Hi->IonStg==1  )
00215                         {
00216 #                               if      0
00217                                 DumpLine( &TauLine2[i] );
00218 #                               endif
00219                                 ipN1Pump[nN1Pump] = i;
00220                                 ++nN1Pump;
00221                         }
00222                 }
00223         }
00224         else
00225                 /* level 2 lines are not enabled */
00226                 nN1Pump = 0;
00227 
00228         /* now sum pump rates - will be used in prt statement together
00229          * with quench rate derive here to estimate continuum pumping of
00230          [N I] 5199 */
00231         nitro.pump_rate_N1 = 0.;
00232         for( i=0; i<nN1Pump; ++i )
00233         {
00234                 nitro.pump_rate_N1 += TauLine2[ipN1Pump[i]].Emis->pump;
00235 #               if      0
00236                 fprintf(ioQQQ,"DEBUG N %li %.3e %.3e\n",
00237                         i,
00238                         TauLine2[ipN1Pump[i]].WLAng , TauLine2[ipN1Pump[i]].pump );
00239 #               endif
00240         }
00241 
00242         /* >>chng 01 sep 02, go back to old values */
00243         /* nitrogen I 5200, cs and A from 
00244          * collision strengths from 
00245          * >>referold   n1      cs      Dopita, M.A., Mason, D.J., Robb, W.D. 1976, ApJ, 207, 102*/
00246         cs21 = 1.32e-4*phycon.te/(phycon.te10*phycon.te01);
00247         cs31 = 3.60e-5*phycon.te/phycon.te10*phycon.te02;
00248         cs32 = 5.23e-4*phycon.te70*phycon.te10/phycon.te02;
00249 
00250         /* N.B. following cs also appears in nitrogen ionization balance */
00251         /* >>chng revise collision strengths to
00252          * >>refer      n1      cs      Tayal, S.S., 2000, ADNDT, 76, 191 
00253         cs21 = 5.25e-13*phycon.tesqrd*phycon.te70*phycon.te03;
00254         cs31 = 3.79e-5*phycon.te70*phycon.te03;
00255         cs32 = 3.14e-13*phycon.tesqrd*phycon.te*phycon.te20*phycon.te07/phycon.te003;*/
00256 
00257         /* following does not have photoionization from excited state
00258          * since already counted in photo balance equation */
00261         /* trans prob from 
00262          * >>refer      n1      as      Butler, K., & Zeippen, C.J. 1984, A&A, 141, 274
00263          */
00264         a21 = 1.28e-5;
00265         a31 = 5.31e-3;
00266         a32 = 6.81e-2;
00267         /* >>chng 01 sep 02, include atoms.d5200r term here too */
00268 
00271         /* trans prob from 
00272          * >>refer      n1      as      Butler, K., & Zeippen, C.J. 1984, A&A, 141, 274
00273          */
00274         cs12 = xNI_coll_stren(1, 2);
00275         a12 = 7.170e-6;
00276 
00277         cs13 = xNI_coll_stren(1, 3);
00278         a13 = 3.994e-5;
00279 
00280         cs14 = xNI_coll_stren(1, 4);
00281         a14 = 5.397e-3;
00282 
00283         cs15 = xNI_coll_stren(1,5);
00284         a15 = 1.329e-2;
00285 
00286         /* this is fraction of 2D excitations that emit a photon in the 5200 multiplet
00287          * this is used for collisional quenching in prt lines routine */
00288         nitro.quench_5200 = (a12+a13) / ((a12+a13) + (cs12 + cs13) * dense.cdsqte );
00289 
00290         /* collision strengths and transition probabilities for the lowest 5
00291          * levels of N^0 */
00292         cs23 = xNI_coll_stren(2, 3);
00293         a23 = 2.478e-8;
00294 
00295         cs24 = xNI_coll_stren(2, 4);
00296         a24 = 3.135e-2;
00297 
00298         cs25 = xNI_coll_stren(2, 5);
00299         a25 = 5.693e-2;
00300 
00301         cs34 = xNI_coll_stren(3, 4);
00302         a34 = 4.92e-2;
00303 
00304         cs35 = xNI_coll_stren(3, 5);
00305         a35 = 2.709e-2;
00306 
00307         cs45 = xNI_coll_stren(4, 5);
00308         a45 = 1e-15;
00309 
00310         atom_pop5(gAr4,exAr4,cs12,cs13,cs14,cs15,cs23,cs24,cs25,cs34,cs35,
00311                   cs45,a12,a13,a14,a15,a23,a24,a25,a34,a35,a45,pop,dense.xIonDense[ipNITROGEN][0]);
00312 
00313 #       ifdef PRINT
00314         pop1 = pop[0]/dense.xIonDense[ipNITROGEN][0];
00315         pop2 = pop[1]/dense.xIonDense[ipNITROGEN][0];
00316         pop3 = pop[2]/dense.xIonDense[ipNITROGEN][0];
00317         pop4 = pop[3]/dense.xIonDense[ipNITROGEN][0];
00318         pop5 = pop[4]/dense.xIonDense[ipNITROGEN][0];
00319         fprintf(ofp, "%lf %lf %lf %lf %lf\n", pop1, pop2, pop3, pop4, pop5);
00320 
00321 #       endif
00322 
00323         nitro.xN5200 = pop[1]*a12*3.818e-12;
00324         nitro.xN5198 = pop[2]*a13*3.821e-12;
00325         nitro.xN3467 = pop[3]*a14*5.729e-12;
00326         nitro.xN3466 = pop[4]*a15*5.729e-12;
00327         nitro.xN10398 = pop[3]*a24*1.910e-12;
00328         nitro.xN10397 = pop[4]*a25*1.910e-12;
00329         nitro.xN10408 = pop[3]*a34*1.908e-12;
00330         nitro.xN10407 = pop[4]*a35*1.908e-12;
00331 
00332         p3 = atom_pop3(4.,10.,6.,cs21,cs31,cs32,a21,a31,a32,2.769e4,1.38e4,
00333           &p2,dense.xIonDense[ipNITROGEN][0],atoms.d5200r,0.,0.);
00334         /* save population */
00335         atoms.p2nit = p2/SDIV(dense.xIonDense[ipNITROGEN][0]);
00336 
00337         nitro.c5200 = p2*a21*3.83e-12;
00338         CoolAdd("N  1",5200,nitro.c5200);
00339         thermal.dCooldT += nitro.c5200*(2.769e4*thermal.tsq1 + thermal.halfte);
00340 
00341         nitro.c10400 = p3*a32*1.91e-12;
00342         CoolAdd("N  1",10400,nitro.c10400);
00343 
00344         nitro.c3466 = p3*a31*5.74e-12;
00345         CoolAdd("N  1",3466,nitro.c3466);
00346         thermal.dCooldT += (nitro.c10400 + nitro.c3466)*(4.15e4*
00347           thermal.tsq1 + thermal.halfte);
00348 
00349         /* N I 1200, cs from trans probability */
00350         PutCS(4.1,&TauLines[ipT1200]);
00351         atom_level2(&TauLines[ipT1200]);
00352 
00353         /* N II 1084, cs from trans prob */
00354         PutCS(5.5,&TauLines[ipT1085]);
00355         atom_level2(&TauLines[ipT1085]);
00356 
00357         /* [N II] coll data from 
00358          * >>referold   n2      cs      Stafford, R.P., Bell, K.L, Hibbert, A. & Wijesundera, W.P.,
00359          * >>rereroldcon 1994, MNRAS 268, 816,
00360          * at 10,000K (v weak T dep)
00361          * >>chng 00 dec 11, to Lennon & Burke
00362          * >>refer      n2      cs      Lennon, D.J., & Burke, V.M., 1994, A&AS, 103, 273-277
00363          * transit prob from 
00364          * >>refer      n2      as      Nussbaumer, H., & Rusca, C. 1979, A&A, 72, 129
00365          * 
00366          * >>chng 00 dec 11, to Lennon & Burke cs */
00367         a21 = 3.65e-3;
00368         a31 = 0.0316;
00369         a32 = 1.17;
00370         /* >>chng 02 may 02, put in option to switch between Lennon Burke and Stafford et al. ,
00371          * default state of this var is true */
00375 #       define USE_LENNON_BURKE 1
00376 #       if( USE_LENNON_BURKE )
00377                 cs21 = 2.64;
00378                 cs31 = 0.293;
00379                 cs32 = 0.834;
00380 #       else
00381                 /* Bob Rubin could not find the Stafford et al. numbers - it flag ever
00382                  * set false will not compile */
00383                 cs21 = 3.02;
00384                 cs31 = 0.372;
00385                 cs32 = 0.505;
00386 #       endif
00387 
00388         /* POP3(   G1,G2,G3,   O12,  O13,  O23,  A21, A31, A32,*/
00389         p3 = atom_pop3(  9.,5.,1.,  cs21, cs31, cs32, a21, a31, a32 ,
00390         /*   E12,E23,P2,ABUND,GAM2) */
00391                 21955.,24982.,&p2,dense.xIonDense[ipNITROGEN][1],0.,0.,0.);
00392 
00393         nitro.c5755 = p3*a32*3.46e-12;
00394 
00395         nitro.c6584 = p2*a21*3.03e-12;
00396         thermal.dCooldT += nitro.c6584*(2.2e4*thermal.tsq1 - thermal.halfte);
00397         CoolAdd("N  2",5755,nitro.c5755);
00398         CoolAdd("N  2",6584,nitro.c6584);
00399 
00400         /* nitro.xN2_A3_tot is fraction of excitations that produce a photon 
00401          * and represents the correction for collisiona deexcitation */
00402         nitro.xN2_A3_tot = (a31+a32) /(a31+a32 + (cs31+cs32)/1.*dense.cdsqte );
00403         ASSERT( nitro.xN2_A3_tot <= 1. );
00404 
00405         /* N II fine structure lines, */
00406         /* >>chng 00 dec 11, to Lennon & Burke CS */
00407 #       if( USE_LENNON_BURKE )
00408         cs21 = 0.408;
00409         cs32 = 1.12;
00410         cs31 = 0.272;
00411 #       else
00412         /* Bob Rubin could not find the Stafford et al. numbers - it flag ever
00413          * set false will not compile */
00414         cs21 = 0.429;
00415         cs32 = 1.13;
00416         cs31 = 0.265;
00417 #       endif
00418 
00419         PutCS(cs21,&TauLines[ipT205]);
00420         PutCS(cs32,&TauLines[ipT122]);
00421         PutCS(cs31,&TauDummy);
00422         atom_level3(&TauLines[ipT205],&TauLines[ipT122],&TauDummy);
00423 
00424         /* N II 2140, data 
00425          * >>refer      n2      cs      Stafford, R.P., Bell, K.L, Hibbert, A. & Wijesundera, W.P. 1994,
00426          * >>rerercon MNRAS, 268, 816
00427          * >>refer      n2      cs      Lennon, D.J., & Burke, V.M., 1994, A&AS, 103, 273-277
00428          * A from 
00429          * >>refer      n2      as      Brage, T., Hibbert, A., Leckrone, D.S. 1997, ApJ, 478, 423 */
00430 #       if( USE_LENNON_BURKE )
00431                 cs21 = 1.19;
00432 #       else
00433                 /* Bob Rubin could not find the Stafford et al. numbers - it flag ever
00434                  * set false will not compile */
00435                 cs21 = 1.15;
00436 #       endif
00437 
00438         PutCS(cs21,&TauLines[ipT2140]);
00439         atom_level2(&TauLines[ipT2140]);
00440 
00441         /* N III 989.8, cs from 
00442          * >>refer      N3      cs      Blum, R.D., & Pradhan, A.K. 1992, ApJS 80, 425 */
00443         PutCS(7.12,&TauLines[ipT990]);
00444         atom_level2(&TauLines[ipT990]);
00445 
00446         /* 57 micron N III, A=
00447          * >>refer      n3      as      Froese Fischer, C. 1983, J.Phys. B, 16, 157
00448          * collision strength from 
00449          * >>refer      n3      cs      Blum, R.D., & Pradhan, A.K. 1992, ApJS 80, 425 */
00450         cs = MIN2(1.90,0.2291*phycon.te10*phycon.te10);
00451         PutCS(cs,&TauLines[ipT57]);
00452 
00453 
00454         /* one time initialization if first call, and level 2 lines are on */
00455         if( lgFirst_N3 && nWindLine && dense.lgElmtOn[ipNITROGEN] )
00456         {
00457                 lgFirst_N3 = false;
00458                 nN3Pump = 0;
00459                 for( i=0; i<nWindLine; ++i )
00460                 {
00461                         /* don't test on nelem==ipIRON since lines on physics, not C, scale */
00462                         if( TauLine2[i].Hi->nelem ==7 && TauLine2[i].Hi->IonStg==3  )
00463                         {
00464                                 ++nN3Pump;
00465                         }
00466                 }
00467                 if( nN3Pump<0 )
00468                         TotalInsanity();
00469                 else if( nN3Pump > 0 )
00470                         /* create the space - can't malloc 0 bytes */
00471                         ipN3Pump = (long *)MALLOC((unsigned)(nN3Pump)*sizeof(long) );
00472                 nN3Pump = 0;
00473                 for( i=0; i<nWindLine; ++i )
00474                 {
00475                         /* don't test on nelem==ipIRON since lines on physics, not C, scale */
00476                         if( TauLine2[i].Hi->nelem ==7 && TauLine2[i].Hi->IonStg==3  )
00477                         {
00478 #                               if      0
00479                                 DumpLine( &TauLine2[i] );
00480 #                               endif
00481                                 ipN3Pump[nN3Pump] = i;
00482                                 ++nN3Pump;
00483                         }
00484                 }
00485         }
00486         else
00487                 /* level 2 lines are not enabled */
00488                 nN3Pump = 0;
00489 
00490         /* now sum pump rates */
00491         pump_rate = 0.;
00492         for( i=0; i<nN3Pump; ++i )
00493         {
00494                 pump_rate += TauLine2[ipN3Pump[i]].Emis->pump;
00495 #               if      0
00496                 fprintf(ioQQQ,"DEBUG C %li %.3e %.3e\n",
00497                         i,
00498                         TauLine2[ipN3Pump[i]].WLAng , TauLine2[ipN3Pump[i]].pump );
00499 #               endif
00500         }
00501 
00502         /* N III] N 3, N  3, 1765 multiplet */
00503         /*atom_level2(&TauLines[ipT57]);*/
00504         /*AtomSeqBoron compute cooling from 5-level boron sequence model atom */
00505         AtomSeqBoron(&TauLines[ipT57], 
00506           &TauLines[ipN3_1749], 
00507           &TauLines[ipN3_1747], 
00508           &TauLines[ipN3_1754], 
00509           &TauLines[ipN3_1752], 
00510           &TauLines[ipN3_1751], 
00511           0.201 , 1.088 , 0.668 , 2.044 , pump_rate,"N  3");
00512         /*fprintf(ioQQQ," n4 %.3e\n",  (
00513                 TauLines[ipN3_1749].xIntensity + 
00514                 TauLines[ipN3_1747].xIntensity + 
00515                 TauLines[ipN3_1754].xIntensity+ 
00516                 TauLines[ipN3_1752].xIntensity+ 
00517                 TauLines[ipN3_1751].xIntensity) / dense.xIonDense[ipNITROGEN][2] );*/
00518 
00519         /* N IV 1486, N 4, N  4,collisions within 3P just guess
00520          * cs to ground from 
00521          * >>refer      n4      cs      Ramsbottom, C.A., Berrington, K.A., Hibbert, A., Bell, K.L. 1994,
00522          * >>refercon Physica Scripta, 50, 246 */
00523         if( phycon.te > 1.584e4 )
00524         {
00525                 cs = 21.346/(phycon.te10*phycon.te10*phycon.te10*phycon.te02);
00526         }
00527         else
00528         {
00529                 cs = 75.221/(phycon.sqrte/phycon.te03/phycon.te02);
00530         }
00531         /* >>chng 01 sep 09, AtomSeqBeryllium will reset this to 1/3 so critical density correct */
00532         cs = MAX2(0.01,cs);
00533         PutCS(cs,&TauLines[ipT1486]);
00534         AtomSeqBeryllium(.9,.9,3.0,&TauLines[ipT1486],.0115);
00535         embesq.em1486 = (realnum)(atoms.PopLevels[3]*0.0115*1.34e-11);
00536         /*fprintf(ioQQQ," n4 %.3e\n", (TauLines[ipT1486].xIntensity + embesq.em1486 ) / dense.xIonDense[ipNITROGEN][3] );*/
00537 
00538         /* N IV 765, cs from 
00539          * >>refer      n4      cs      Ramsbottom, C.A., Berrington, K.A., Hibbert, A., Bell, K.L. 1994,
00540          * >>refercon Physica Scripta, 50, 246 */
00541         /* >>refer      n4      as      Flemming, J., Brage, T., Bell, K.L., Vaeck, N., Hibbert, A., 
00542          * >>refercon   Godefroid, M., & Froese Fischer, C., 1995, ApJ, 455, 758*/
00543         cs = MIN2(4.0,1.864*phycon.te03*phycon.te03);
00544         PutCS(cs,&TauLines[ipT765]);
00545         atom_level2(&TauLines[ipT765]);
00546 
00547         /* N V 1240
00548          * >>refer      n5      cs      Cochrane, D.M., & McWhirter, R.W.P. 1983, PhyS, 28, 25 */
00549         ligbar(7,&TauLines[ipT1239],&TauLines[ipT209],&cs2s2p,&cs2s3p);
00550         PutCS(cs2s2p,&TauLines[ipT1239]);
00551         PutCS(cs2s2p*0.5,&TauLines[ipT1243]);
00552         PutCS(1.0,&TauDummy);
00553         atom_level3(&TauLines[ipT1243],&TauDummy,&TauLines[ipT1239]);
00554         /*fprintf(ioQQQ," n5 %.3e\n", (TauLines[ipT1243].xIntensity + TauLines[ipT1239].xIntensity ) / dense.xIonDense[ipNITROGEN][4] );*/
00555 
00556         /* N V 209 */
00557         PutCS(cs2s3p,&TauLines[ipT209]);
00558         atom_level2(&TauLines[ipT209]);
00559         return;
00560 }

Generated on Mon Feb 16 12:01:14 2009 for cloudy by  doxygen 1.4.7