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