00001
00002
00003
00004 #include "cddefines.h"
00005 #include "taulines.h"
00006 #include "phycon.h"
00007 #include "dense.h"
00008 #include "ligbar.h"
00009 #include "lines_service.h"
00010 #include "colden.h"
00011 #include "embesq.h"
00012 #include "atoms.h"
00013 #include "sil.h"
00014 #include "cooling.h"
00015
00016 void CoolSili(void)
00017 {
00018 double cs,
00019 cs2s2p,
00020 cs2s3p,
00021 cs01,
00022 cs02,
00023 cs12,
00024 tused,
00025 temp;
00026 realnum
00027 p2,
00028 rate;
00029 long int i;
00030
00031 DEBUG_ENTRY( "CoolSili()" );
00032
00033
00034
00035
00036
00037 tused = MAX2( 30. , phycon.te );
00038 tused = MIN2( 3000. , phycon.te );
00039 tused /= 100.;
00040
00041
00042 rate = (realnum)(7.2e-9 * dense.eden +
00043
00044
00045 3.5e-10*pow(tused, -0.03 )*dense.xIonDense[ipHYDROGEN][0] );
00046 LineConvRate2CS( TauLines[ipSi1_130m] , rate );
00047
00048
00049 rate = (realnum)(2.2e-8 * dense.eden +
00050
00051
00052 5.0e-10*pow(tused, 0.17 )*dense.xIonDense[ipHYDROGEN][0] );
00053 LineConvRate2CS( TauLines[ipSi1_68m] , rate );
00054
00055 rate = (realnum)(7.2e-9 * dense.eden +
00056
00057
00058 1.7e-10*pow(tused, 0.17 )*dense.xIonDense[ipHYDROGEN][0] );
00059 (*(*TauDummy).Hi()).g() = (*TauLines[ipSi1_68m].Hi()).g();
00060 LineConvRate2CS( *TauDummy , rate );
00061
00062 (*(*TauDummy).Hi()).g() = 0;
00063
00064
00065 atom_level3(TauLines[ipSi1_130m],TauLines[ipSi1_68m],*TauDummy);
00066
00067
00068 MakeCS(TauLines[ipSii2518]);
00069 atom_level2(TauLines[ipSii2518]);
00070
00071
00072 MakeCS(TauLines[ipSii2215]);
00073 atom_level2(TauLines[ipSii2215]);
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084 temp = MIN2(2e3, phycon.te);
00085 cs = 1e-10*(3.9436853+ 0.11176758*pow(temp, 0.55762129));
00086
00087 if( phycon.te>2e3 )
00088 {
00089 cs *= pow(phycon.te/2e3, 0.55762129);
00090 }
00091
00092 cs *= 4.*dense.xIonDense[ipHYDROGEN][0]/dense.cdsqte;
00093
00094
00095
00096
00097 cs += 5.77;
00098
00099 PutCS(cs,TauLines[ipTSi35]);
00100
00101 static vector< pair<TransitionList::iterator,double> > Si2Pump;
00102 Si2Pump.reserve(32);
00103
00104
00105 if( Si2Pump.empty() )
00106 {
00107
00108 pair<TransitionList::iterator,double> ppa( TauLines.begin()+ipT1808, 1./6. );
00109 Si2Pump.push_back( ppa );
00110 pair<TransitionList::iterator,double> ppb( TauLines.begin()+ipT1527, 2./3. );
00111 Si2Pump.push_back( ppb );
00112 pair<TransitionList::iterator,double> ppc( TauLines.begin()+ipT1305, 2./3. );
00113 Si2Pump.push_back( ppc );
00114 pair<TransitionList::iterator,double> ppd( TauLines.begin()+ipT1260, 1./6. );
00115 Si2Pump.push_back( ppd );
00116
00117 for( i=0; i < nWindLine; ++i )
00118 {
00119
00120 if( (*TauLine2[i].Hi()).nelem() == 14 && (*TauLine2[i].Hi()).IonStg() == 2 )
00121 {
00122 # if 0
00123 DumpLine( TauLine2.begin()+i );
00124 # endif
00125 double branch_ratio;
00126
00127
00128 if( fp_equal( (*TauLine2[i].Hi()).g(), realnum(2.) ) )
00129 branch_ratio = 2./3.;
00130 else if( fp_equal( (*TauLine2[i].Hi()).g(), realnum(6.) ) )
00131 branch_ratio = 1./2.;
00132 else if( fp_equal( (*TauLine2[i].Hi()).g(), realnum(10.) ) )
00133 branch_ratio = 1./6.;
00134 else
00135 TotalInsanity();
00136 pair<TransitionList::iterator,double> pp2( TauLine2.begin()+i, branch_ratio );
00137 Si2Pump.push_back( pp2 );
00138 }
00139 }
00140 }
00141
00142
00143 double pump_rate = 0.;
00144 vector< pair<TransitionList::iterator,double> >::const_iterator si2p;
00145 for( si2p=Si2Pump.begin(); si2p != Si2Pump.end(); ++si2p )
00146 {
00147 const TransitionList::iterator t = si2p->first;
00148 double branch_ratio = si2p->second;
00149 pump_rate += (*t).Emis().pump()*branch_ratio;
00150 # if 0
00151 dprintf( ioQQQ, "Si II %.3e %.3e\n",
00152 (*t).WLAng , (*t).Emis().pump()*branch_ratio );
00153 # endif
00154 }
00155
00156
00157
00158
00159
00160
00161
00162 AtomSeqBoron(TauLines[ipTSi35],
00163 TauLines[ipSi2_2334],
00164 TauLines[ipSi2_2329],
00165 TauLines[ipSi2_2350],
00166 TauLines[ipSi2_2344],
00167 TauLines[ipSi2_2336],
00168 0.534 , 4.51 , 1.67 , 6.94 ,
00169 pump_rate ,"Si 2");
00170
00171
00172
00173
00174 for( i=0; i < 5; i++ )
00175 {
00176
00177 colden.Si2Pops[i] = (realnum)atoms.PopLevels[i];
00178 }
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189 PutCS(13.01,TauLines[ipT1808]);
00190 atom_level2(TauLines[ipT1808]);
00191
00192
00193 PutCS(3.61,TauLines[ipT1527]);
00194 atom_level2(TauLines[ipT1527]);
00195
00196
00197 PutCS(2.89,TauLines[ipT1305]);
00198 atom_level2(TauLines[ipT1305]);
00199
00200
00201 PutCS(12.25,TauLines[ipT1260]);
00202 atom_level2(TauLines[ipT1260]);
00203
00204
00205
00206 cs = MIN2(7.0,1.442*phycon.te10*phycon.te03*phycon.te03/
00207 phycon.te01);
00208 PutCS(cs,TauLines[ipT1207]);
00209 atom_level2(TauLines[ipT1207]);
00210
00211
00212
00213
00214
00215
00216
00217 cs = 106./(phycon.te10*phycon.te10*phycon.te10*phycon.te02);
00218
00219 PutCS(cs,TauLines[ipT1895]);
00220 AtomSeqBeryllium(1.8,3.6,10.4,TauLines[ipT1895],.013);
00221 embesq.em1895 = (realnum)(atoms.PopLevels[3]*0.013*1.05e-11);
00222
00223
00224
00225
00226
00227
00228 cs = 6.37*phycon.te10;
00229 PutCS(cs*0.667,TauLines[ipT1394]);
00230 PutCS(cs*0.333,TauLines[ipT1403]);
00231 PutCS(1.0,*TauDummy);
00232 atom_level3(TauLines[ipT1403],*TauDummy,TauLines[ipT1394]);
00233
00234
00235
00236
00237
00238
00239
00240
00241 if(phycon.te< 1.43E5)
00242 {
00243 cs = (realnum)(0.0207*(phycon.te30/phycon.te04)*phycon.te0001);
00244 }
00245 else
00246 {
00247 cs = (realnum)(3.9042/((phycon.te20/phycon.te02)*phycon.te001*phycon.te0003));
00248 }
00249 PutCS(cs,TauLines[ipSi619]);
00250 atom_level2(TauLines[ipSi619]);
00251
00252
00253
00254 sil.c2148 =
00255 atom_pop2(0.4,9.,5.,15.,6.7e4,dense.xIonDense[13][6])*9.26e-12;
00256 CoolAdd("Si 7",2148,sil.c2148);
00257
00258
00259
00260
00261
00262
00263
00266 cs = MIN2(0.217,0.0904*phycon.te05*phycon.te03/phycon.te003/
00267 phycon.te001);
00268 PutCS(cs,TauLines[ipTSi65]);
00269
00270 cs = MIN2(0.70,8.79e-2*phycon.te10*phycon.te10/phycon.te02);
00271 PutCS(cs,TauLines[ipTSi25]);
00272
00273 cs = MIN2(0.20,9.751e-3*phycon.te20*phycon.te03*phycon.te03/
00274 phycon.te003);
00275 PutCS(cs,*TauDummy);
00276
00277 atom_level3(TauLines[ipTSi25],TauLines[ipTSi65],*TauDummy);
00278
00279
00280
00281 sil.c1446 =
00282 atom_pop2(0.4,4.,10.,1.,9.97e4,dense.xIonDense[13][7])*
00283 1.39e-11;
00284 CoolAdd("Si 8",1446,sil.c1446);
00285
00286
00287
00288
00289
00290 sil.c949 =
00291 atom_pop3(9.,5.,1.,0.5913,0.0757,0.225,26.3,214.,5.16,
00292 7.62e4,7.902e4,&p2,dense.xIonDense[13][8],0.,0.,0.)*214.*2.096e-11;
00293 sil.c1815 = sil.c949*1.912*0.0516;
00294 sil.c1985 = p2*26.3*1.0e-11;
00295 CoolAdd("Si 9",949,sil.c949);
00296 CoolAdd("Si 9",1815,sil.c1815);
00297 CoolAdd("Si 9",1985,sil.c1985);
00298
00299
00300
00301
00302
00303
00304 cs01 = MIN2(0.98,28.51/(phycon.te10*phycon.te10*phycon.te10*
00305 phycon.te10/phycon.te03*phycon.te003*phycon.te001*phycon.te001));
00306
00307 cs12 = MIN2(2.7,81.21/(phycon.te10*phycon.te10*phycon.te10*
00308 phycon.te10/phycon.te01/phycon.te01/phycon.te001/phycon.te001));
00309
00310 cs02 = MIN2(0.70,19.67/(phycon.te10*phycon.te10*phycon.te10*
00311 phycon.te10/phycon.te03*phycon.te001));
00312
00313 PutCS(cs01,TauLines[ipTSi4]);
00314 PutCS(cs12,TauLines[ipTSi3]);
00315 PutCS(cs02,*TauDummy);
00316
00317 atom_level3(TauLines[ipTSi4],TauLines[ipTSi3],*TauDummy);
00318
00319
00320
00321 sil.c691 = atom_pop2(40.6/phycon.sqrte*phycon.te10,9.,5.,
00322 1e4,2.081e5,dense.xIonDense[13][8])*2.88e-11;
00323 CoolAdd("Si 9",691,sil.c691);
00324
00325
00326
00327
00328
00329
00330
00331
00332 PutCS(0.1,TauLines[ipSi10_606]);
00333 atom_level2(TauLines[ipSi10_606]);
00334
00335
00336
00337
00338
00339 if( phycon.te <= 40500. )
00340 {
00341 cs = 0.190*phycon.te20/phycon.te001;
00342 }
00343 else
00344 {
00345 cs = 24.93/(phycon.te20*phycon.te03*phycon.te01*phycon.te003*
00346 phycon.te003);
00347 }
00348 PutCS(cs,TauLines[ipSi10143]);
00349 atom_level2(TauLines[ipSi10143]);
00350
00351
00352
00353
00354
00355
00356 sil.c583 =
00357 atom_pop2(0.10,1.,9.,1e5,2.47e5,dense.xIonDense[13][11-1])*
00358 3.4e-11;
00359 CoolAdd("Si11",583,sil.c583);
00360
00361
00362
00363 ligbar(14,TauLines[ipTSi499],TauLines[ipTSi41],&cs2s2p,&cs2s3p);
00364 PutCS(cs2s2p,TauLines[ipTSi499]);
00365 PutCS(cs2s2p*0.5,TauLines[ipTSi521]);
00366 PutCS(1.0,*TauDummy);
00367 atom_level3(TauLines[ipTSi521],*TauDummy,TauLines[ipTSi499]);
00368
00369 PutCS(cs2s3p,TauLines[ipTSi41]);
00370 atom_level2(TauLines[ipTSi41]);
00371 return;
00372 }