00001
00002
00003
00004
00005
00006 #include "cddefines.h"
00007 #include "carb.h"
00008 #include "nitro.h"
00009 #include "oxy.h"
00010 #include "coolheavy.h"
00011 #include "atmdat.h"
00012 #include "doppvel.h"
00013 #include "ionbal.h"
00014 #include "dense.h"
00015 #include "phycon.h"
00016 #include "physconst.h"
00017 #include "atoms.h"
00018 #include "mole.h"
00019 #include "embesq.h"
00020 #include "taulines.h"
00021 #include "trace.h"
00022 #include "lines_service.h"
00023 #include "lines.h"
00024 static double GetLineRec(
00025
00026 long int ip,
00027
00028 long int lWl);
00029
00030 void lines_lv1_li_ne(void)
00031 {
00032 long int ipnt;
00033 double
00034 chem ,
00035 corr,
00036 ct4363,
00037 ctRate,
00038 efac,
00039 effec,
00040 efficn2,
00041 fac,
00042 HBeta ,
00043 p386,
00044 pump,
00045 r4363,
00046 r6584,
00047 raten3,
00048 rb,
00049 rec,
00050 rn3mor,
00051 rn3tot,
00052 rnii,
00053 rp300,
00054 rp386,
00055 r12 ,
00056 r13 ,
00057 sum,
00058 rate_OH_dissoc;
00059 double rec7323 , rec7332, rec3730 , rec3726 , rec2471,
00060 reco23tot , reco22tot;
00061
00062 DEBUG_ENTRY( "lines_lv1_li_ne()" );
00063
00064 if( trace.lgTrace )
00065 {
00066 fprintf( ioQQQ, " lines_lv1_li_ne called\n" );
00067 }
00068
00069
00070 ipnt = StuffComment( "level 1 lines" );
00071 linadd( 0., (float)ipnt , "####", 'i' );
00072
00073
00074 linadd(CoolHeavy.colmet,0,"Mion",'c' );
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086 rec = GetLineRec(3,1657)*(1.-TauLines[ipT1656].ColOvTot);
00087 rec = GetLineRec(3,1657)*emit_frac(&TauLines[ipT1656]);
00088 PutExtra(rec);
00089
00090
00091 PutLine(&TauLines[ipT1656]);
00092
00093
00094 linadd(rec,1656,"REC ",'i' );
00095
00096
00097 linadd(carb.c9850,9850,"C Ic",'c' );
00098
00099
00100
00101
00102
00103
00104
00105 rec = (GetLineRec(1,9088) + GetLineRec(2,9658))*carb.r9850;
00106
00107 linadd(rec,9850,"C Ir",'i' );
00108
00109 PntForLine(9850.,"C 1",&ipnt);
00110 lindst(rec+carb.c9850,9850,"TOTL",ipnt,'i',true );
00111
00112
00113 PntForLine(8727.,"C 1",&ipnt);
00114 lindst(carb.c8727,8727,"C 1",ipnt,'c',true );
00115
00116
00117 linadd(carb.c8727*1.22e-6,4621,"C 1",'c' );
00118
00119
00120 PutLine(&TauLines[ipT610]);
00121
00122
00123 PutLine(&TauLines[ipT370]);
00124
00125
00126 PutLine(&TauLines[ipT157]);
00127
00128
00129 linadd(
00130 TauLines[ipC2_2325].xIntensity+
00131 TauLines[ipC2_2324].xIntensity+
00132 TauLines[ipC2_2329].xIntensity+
00133 TauLines[ipC2_2328].xIntensity+
00134 TauLines[ipC2_2327].xIntensity+carb.p2326*8.6e-12,
00135 2326,"TOTL",'i' );
00136 PutLine(&TauLines[ipC2_2325]);
00137 PutLine(&TauLines[ipC2_2324]);
00138 PutLine(&TauLines[ipC2_2329]);
00139 PutLine(&TauLines[ipC2_2328]);
00140 PutLine(&TauLines[ipC2_2327]);
00141
00142
00143 linadd(carb.p2326*8.6e-12,2326,"Phot",'i' );
00144
00145
00146
00147
00148 rec = GetLineRec(11,1335)*emit_frac(&TauLines[ipT1335]);
00149
00150
00151 PutExtra(MAX2(0.,rec));
00152 PutLine(&TauLines[ipT1335]);
00153
00154
00155 linadd(rec,1335,"REC ",'i' );
00156
00157
00158
00159
00160
00161 if( nWindLine > 0 )
00162 {
00163 pump = TauLine2[186].pump*TauLine2[186].PopOpc;
00164 }
00165 else
00166 {
00167 pump = 0.;
00168 }
00169
00170
00171
00172
00173 PntForLine(3920.,"C 2",&ipnt);
00174 lindst(pump*0.387 * 5.08e-12/(1.+dense.eden/1e12) ,3920,"pump",ipnt,'i',true );
00175
00176
00177 rec = GetLineRec(8, 6580 );
00178
00179 pump *= 0.305 * 0.387 * 3.02e-12;
00180
00181 linadd(rec/(1.+dense.eden/1e12),6580,"C 2r",'i' );
00182
00183 linadd(pump/(1.+dense.eden/1e12),6580,"C 2p",'i' );
00184
00185
00186 PntForLine(6580.,"C 2",&ipnt);
00187 lindst((rec+pump)/(1.+dense.eden/1e12),6580,"TOTL",ipnt,'i',true );
00188
00189
00190
00191
00192
00193 rec = GetLineRec(179,977)*emit_frac(&TauLines[ipT977]);
00194
00195
00196 rp386 = TauLines[ipT386].pump*TauLines[ipT386].PopOpc;
00197
00198
00199 rp300 = TauLines[ipT310].pump*TauLines[ipT310].PopOpc +
00200 TauLines[ipT291].pump*TauLines[ipT291].PopOpc +
00201 TauLines[ipT280].pump*TauLines[ipT280].PopOpc +
00202 TauLines[ipT274].pump*TauLines[ipT274].PopOpc +
00203 TauLines[ipT270].pump*TauLines[ipT270].PopOpc;
00204
00205
00206
00207
00208 p386 = (rp386 + rp300)*2.03e-11*emit_frac(&TauLines[ipT977]);
00209
00210
00211 PutExtra(p386+MAX2(0.,rec));
00212
00213
00214 PutLine(&TauLines[ipT977]);
00215
00216
00217 linadd(rec,977,"C3 R",'i' );
00218
00219
00220 linadd(p386,977,"P386",'r' );
00221
00222
00223 fac = embesq.em1908 + TauLines[ipT1909].xIntensity;
00224
00225
00226 lindst(fac,1909,"TOTL",TauLines[ipT1909].ipCont,'i',false );
00227
00228 PutLine(&TauLines[ipT1909]);
00229
00230
00231 PntForLine(1907.,"C 3",&ipnt);
00232 lindst(embesq.em1908,1907,"C 3",ipnt,'i',true );
00233
00234
00235 lindst(embesq.em13C1910,1910,"13C3",ipnt,'i',true );
00236
00237
00238
00239 corr = emit_frac(&TauLines[ipT1909]);
00240 fac = dense.eden*dense.xIonDense[ipCARBON][3]/(phycon.te/phycon.te10)*
00241 ionbal.DielSupprs[1][2];
00242
00243
00244 linadd(3.1e-19*fac*corr,1909,"C3 R",'i' );
00245
00246
00247 linadd(carb.p1909*corr*1.05e-11,1909,"Phot",'i' );
00248
00249
00250
00251
00252 rec = GetLineRec(178,1176)*emit_frac(&TauLines[ipc31175]);
00253 PutExtra(MAX2(0.,rec));
00254
00255
00256 PutLine(&TauLines[ipc31175]);
00257
00258
00259 linadd(MAX2(0.,rec),1175,"Rec ",'i' );
00260
00261
00262
00263
00264
00265 rec = GetLineRec(25,1549)*emit_frac(&TauLines[ipT1550]);
00266
00267
00268 linadd(
00269 TauLines[ipT1550].xIntensity+
00270 TauLines[ipT1548].xIntensity+
00271 rec,1549,"TOTL",'i' );
00272
00273 sum =
00274 TauLines[ipT1550].xIntensity*TauLines[ipT1550].FracInwd +
00275 TauLines[ipT1548].xIntensity*TauLines[ipT1548].FracInwd;
00276
00277
00278 linadd(sum+rec*TauLines[ipT1550].FracInwd,1549,"Inwd",'i' );
00279
00280 PutExtra(rec*.3333);
00281 PutLine(&TauLines[ipT1550]);
00282
00283 PutExtra(rec*.6666);
00284 PutLine(&TauLines[ipT1548]);
00285
00286
00287 linadd((TauLines[ipT1550].ots+
00288 TauLines[ipT1548].ots)*TauLines[ipT1548].EnergyErg,
00289 1549,"DEST",'i' );
00290
00291
00292 linadd(rec,1549,"C4 r",'i' );
00293
00294
00295 PutLine(&TauLines[ipT312]);
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306 {
00307
00308
00309
00310 double recrate_new = 1.108e-13 * pow( (phycon.te*1e-4) , -0.6085) /
00311 (1. - 0.0041 * pow( (phycon.te*1e-4) , -0.3975 ) ) *
00312
00313 dense.eden * dense.xIonDense[ipNITROGEN][1] *
00314
00315 3.83e-12;
00316 # if 0
00317 # endif
00318
00319
00320 rec = recrate_new * nitro.quench_5200;
00321 }
00322
00323
00324
00325
00326 linadd(rec,5199,"TOTr",'i' );
00327
00328
00329
00330
00331 chem = co.nitro_dissoc_rate * 3.83e-12 * nitro.quench_5200;
00332
00333 linadd(chem,5200,"chem",'i' );
00334
00335
00336
00337
00338 pump = nitro.pump_rate_N1 * nitro.quench_5200 * 3.83e-12 *
00339 dense.xIonDense[ipNITROGEN][0];
00340 linadd(pump,5199,"pump",'i' );
00341
00342
00343
00344 ctRate = atmdat.HCharExcRecTo_N0_2D*dense.xIonDense[ipHYDROGEN][0]*dense.xIonDense[ipNITROGEN][1] *
00345 3.83e-12 * nitro.quench_5200;
00346
00347 linadd(ctRate,5200,"H CT",'i' );
00348
00349
00350 linadd(nitro.xN5200,5200,"N 1c",'c' );
00351
00352
00353 linadd(nitro.xN5198,5198,"N 1c",'c' );
00354
00355
00356
00357 linadd(nitro.xN5200 + (ctRate+chem+rec)*0.6 , 5200 ,"N 1",'i' );
00358
00359
00360
00361 linadd(nitro.xN5198 + (ctRate+chem+rec)*0.4 , 5198 ,"N 1",'i' );
00362
00363
00364 PntForLine(5200.,"N1 o",&ipnt);
00365 lindst(nitro.xN5200+nitro.xN5198 + (ctRate+chem+rec) , 5199 , "TOTL",ipnt , 'i',true );
00366
00367
00368 linadd(nitro.xN3466,3466,"N 1",'c' );
00369
00370
00371 linadd(nitro.xN3467,3468,"N 1",'c' );
00372
00373
00374 linadd(nitro.xN3467+nitro.xN3466,3467,"TOTL",'i' );
00375
00376 linadd(nitro.xN10408, 10408, "N 1",'c' );
00377
00378
00379 linadd(nitro.xN10397+nitro.xN10398+nitro.xN10407, 10404,"N 1", 'c');
00380
00381
00382 linadd(nitro.xN10398+nitro.xN10397+nitro.xN10408+nitro.xN10407, 10403,"TOTL", 'i');
00383
00384
00385
00387
00388 linadd(nitro.c5200+rec,5200,"N1 o",'i');
00389
00390
00391 linadd(nitro.c5200,5200,"Colo",'c' );
00392
00393
00394 linadd(rec,5200,"REC ",'i' );
00395
00396
00397 PntForLine(3466.,"N 1",&ipnt);
00398 lindst(nitro.c3466,3466,"N1 o",ipnt,'c',true );
00399
00400
00401 PntForLine(10400.,"N 1",&ipnt);
00402 lindst(nitro.c10400,10400,"N1 o",ipnt,'c',true );
00403
00404
00405 PutLine(&TauLines[ipT1200]);
00406
00407
00408 PutLine(&TauLines[ipT671]);
00409 PutLine(&TauLines[ipT315]);
00410 PutLine(&TauLines[ipT333]);
00411 PutLine(&TauLines[ipT324]);
00412 PutLine(&TauLines[ipT374g]);
00413 PutLine(&TauLines[ipT374x]);
00414
00415
00416 PntForLine(6584.,"N 2",&ipnt);
00417 lindst(nitro.c6584/(1.+1./2.951),6584,"N 2",ipnt,'c',true );
00418
00419
00420 PntForLine(6548.,"N 2",&ipnt);
00421 lindst(nitro.c6584/(1.+2.951),6548,"N 2",ipnt,'c',true );
00422
00423
00424 efficn2 = 4e-3/(4e-3 + 5.18e-6*dense.eden/phycon.sqrte);
00425 r6584 = 8e-22/(phycon.te70/phycon.te03/phycon.te03)*efficn2;
00426 linadd(r6584*dense.xIonDense[ipNITROGEN][2]*dense.eden,6584,"REC ", 'i' );
00427
00428
00429
00430 ctRate = 1.8e-11*dense.xIonDense[ipHELIUM][0]*dense.xIonDense[ipNITROGEN][2]*1.146/(1.146 +
00431 0.87*dense.cdsqte)*3.46e-12;
00432
00433
00434
00435
00436
00437 if( dense.xIonDense[ipHYDROGEN][1] > SMALLFLOAT )
00438 {
00439
00440
00441
00442
00443 HBeta = (pow(10.,-20.89 - 0.10612*POW2(phycon.alogte - 4.4)))/phycon.te;
00444
00445
00446
00447
00448 HBeta *= dense.eden * dense.xIonDense[ipHYDROGEN][1];
00449
00450
00451
00452
00453
00454 rec = nitro.xN2_A3_tot * HBeta *
00455 3.19 * phycon.te30 / 15.84893 * dense.xIonDense[ipNITROGEN][2]/dense.xIonDense[ipHYDROGEN][1];
00456 }
00457 else
00458 {
00459 HBeta = 0.;
00460 rec = 0.;
00461 }
00462
00463
00464 PntForLine(5755.,"N 2",&ipnt);
00465 lindst(nitro.c5755+ctRate+rec ,5755,"N 2",ipnt,'i',true );
00466
00467
00468 linadd(nitro.c5755,5755,"Coll",'c' );
00469
00470
00471 linadd(ctRate,5755,"C T ",'i' );
00472
00473
00474 linadd( rec ,5755,"N 2r",'i' );
00475
00476
00477 PutLine(&TauLines[ipT122]);
00478
00479
00480 PutLine(&TauLines[ipT205]);
00481
00482
00483 PutLine(&TauLines[ipT2140]);
00484
00485
00486
00487
00488 rec = GetLineRec(201,1085)*emit_frac(&TauLines[ipT1085]);
00489 PutExtra(MAX2(0.,rec));
00490
00491
00492 PutLine(&TauLines[ipT1085]);
00493
00494
00495 linadd(MAX2(0.,rec),1085,"Rec ",'i' );
00496
00497
00498 rnii = TauLines[ipT671].pump*TauLines[ipT671].PopOpc;
00499
00500
00501 linadd(rnii*0.377*0.75*3.02e-12*efficn2,6584,"N2cn",'i' );
00502
00503
00504 efficn2 = 1./(1. + COLL_CONST*dense.eden/phycon.sqrte);
00505 linadd(rnii*0.0117*3.46e-12*efficn2,5755,"N2cn",'i' );
00506
00507
00508
00509
00510
00511
00512
00513 if( nWindLine > 0 )
00514 {
00515 pump = TauLine2[265].pump*TauLine2[265].PopOpc;
00516 }
00517 else
00518 {
00519 pump = 0.;
00520 }
00521
00522
00523 PntForLine(3311.,"N 2",&ipnt);
00524 lindst(pump*0.236 * 6.01e-12/(1.+dense.eden/1e12) ,3311,"pump",ipnt,'i',true );
00525
00526
00527 PntForLine(3840.,"N 2",&ipnt);
00528 lindst(pump*0.186 * 5.18e-12/(1.+dense.eden/1e12) ,3840,"pump",ipnt,'i',true );
00529
00530
00531 PntForLine(3609.,"N 2",&ipnt);
00532 lindst(pump*0.025 * 5.52e-12/(1.+dense.eden/1e12) ,3609,"pump",ipnt,'i',true );
00533
00534
00535 PntForLine(4640.,"N 2",&ipnt);
00536 lindst(pump*0.186*0.595 * 4.31e-12/(1.+dense.eden/1e12) ,4640,"pump",ipnt,'i',true );
00537
00538
00539 PntForLine(5010.,"N 2",&ipnt);
00540 lindst(pump*0.025*0.442 * 3.97e-12/(1.+dense.eden/1e12) ,5010,"pump",ipnt,'i',true );
00541
00542
00543 rec = GetLineRec(44, 5679 );
00544
00545 pump *= 0.236 * 0.626 * 3.50e-12;
00546
00547 linadd(rec/(1.+dense.eden/1e12),5679,"N 2r",'i' );
00548
00549 linadd(pump/(1.+dense.eden/1e12),5679,"N 2p",'i' );
00550
00551
00552 PntForLine(5679.,"N 2",&ipnt);
00553 lindst((rec+pump)/(1.+dense.eden/1e12),5679,"TOTL",ipnt,'i',true );
00554
00555
00556 PutLine(&TauLines[ipT57]);
00557
00558
00559 linadd(
00560 TauLines[ipN3_1749].xIntensity+
00561 TauLines[ipN3_1747].xIntensity+
00562 TauLines[ipN3_1754].xIntensity+
00563 TauLines[ipN3_1752].xIntensity+
00564 TauLines[ipN3_1751].xIntensity,
00565 1750,"TOTL",'i' );
00566 PutLine(&TauLines[ipN3_1749]);
00567 PutLine(&TauLines[ipN3_1747]);
00568 PutLine(&TauLines[ipN3_1754]);
00569 PutLine(&TauLines[ipN3_1752]);
00570 PutLine(&TauLines[ipN3_1751]);
00571
00572
00573
00574 raten3 = TauLines[ipT374x].PopOpc*TauLines[ipT374x].pump;
00575
00576
00577 if( DoppVel.TurbVel < 200. )
00578 {
00579 rb = TauLines[ipT374x].PopOpc*TauLines[ipT374x].pump +
00580 TauLines[ipT374g].PopOpc*TauLines[ipT374g].pump;
00581 }
00582 else
00583 {
00584
00585 rb = TauLines[ipT374g].PopOpc*TauLines[ipT374g].pump;
00586 }
00587
00588 rn3mor =
00589 TauLines[ipT315].PopOpc*TauLines[ipT315].pump*0.448 +
00590 TauLines[ipT324].PopOpc*TauLines[ipT324].pump*0.78 +
00591 TauLines[ipT333].PopOpc*TauLines[ipT333].pump*0.434;
00592
00593
00594 rn3tot = (rb + raten3)*0.439 + rn3mor;
00595
00596
00597 sum = raten3*4.29e-12;
00598 PntForLine(4640.,"N3cn",&ipnt);
00599 lindst(sum,4640,"N3cn",ipnt,'i',true );
00600
00601
00602 sum = rb*4.29e-12*0.834;
00603 PntForLine(4634.,"N3cn",&ipnt);
00604 lindst(sum,4634,"N3cn",ipnt,'i',true );
00605
00606
00607 sum = rb*4.29e-12*(1. - 0.834);
00608 PntForLine(4642.,"N3cn",&ipnt);
00609 lindst(sum,4642,"N3cn",ipnt,'i',true );
00610
00611
00612
00613
00614
00615 fac = 1.-emit_frac(&TauLines[ipT990]);
00616
00617
00618
00619
00620 rec = GetLineRec(216,991)*emit_frac(&TauLines[ipT990] );
00621 PutExtra(MAX2(0.,rec)+rn3tot*2.01e-11*fac);
00622
00623
00624 PutLine(&TauLines[ipT990]);
00625
00626
00627 linadd(rec+rn3tot*2.01e-11*fac,990,"extr",'i' );
00628
00629
00630 linadd(rec,990,"rec ",'i' );
00631
00632
00633 linadd(rn3tot*2.01e-11,990,"N 3p",'r' );
00634
00635
00636 linadd(embesq.em1486+TauLines[ipT1486].xIntensity,1486,"TOTL",'i' );
00637
00638 PutLine(&TauLines[ipT1486]);
00639
00640
00641 linadd(embesq.em1486,1485,"N 4",'i' );
00642
00643
00644
00645
00646 rec = GetLineRec(287,765)*emit_frac(&TauLines[ipT765] );
00647
00648
00649 PutExtra(rec);
00650
00651
00652 PutLine(&TauLines[ipT765]);
00653
00654
00655 linadd(MAX2(0.,rec),765,"rec ",'i' );
00656
00657
00658
00659 linadd(TauLines[ipT1243].xIntensity+TauLines[ipT1239].xIntensity,1240,"TOTL",'i' );
00660 sum = TauLines[ipT1243].xIntensity*TauLines[ipT1243].FracInwd + TauLines[ipT1239].xIntensity*
00661 TauLines[ipT1239].FracInwd;
00662
00663
00664 linadd(sum,1240,"Inwd",'i' );
00665 PutLine(&TauLines[ipT1243]);
00666 PutLine(&TauLines[ipT1239]);
00667
00668
00669 PutLine(&TauLines[ipT209]);
00670
00671
00672
00673 PntForLine(6300.,"O 1",&ipnt);
00674 lindst(CoolHeavy.c6300,6300,"O 1",ipnt,'c',true );
00675
00676
00677
00678
00679
00680
00681
00682
00683
00684
00685
00686 rate_OH_dissoc = CO_findrate("PHOTON,OH=>O,H");
00687 r12 = rate_OH_dissoc * 0.55 * 3.16e-12 * CoolHeavy.c6300_frac_emit;
00688
00689 lindst( r12*TauLines[ipT6300].Aul/(TauLines[ipT6300].Aul+TauLines[ipT6363].Aul) ,
00690 6300., "OH p",ipnt , 'i' , false);
00691
00692 lindst( r12*TauLines[ipT6363].Aul/(TauLines[ipT6300].Aul+TauLines[ipT6363].Aul) ,
00693 6363., "OH p",ipnt , 'i' , false);
00694
00695
00696 PntForLine(6363.,"O 1",&ipnt);
00697 lindst(CoolHeavy.c6363,6363,"O 1",ipnt,'c',true );
00698
00699
00700 PntForLine(5577.,"O 1",&ipnt);
00701 lindst(CoolHeavy.c5577,5577,"O 1",ipnt,'c',true );
00702
00703
00704 r13 = rate_OH_dissoc * 0.05 * 3.57e-12 * 0.94*CoolHeavy.c5577_frac_emit;
00705 lindst( r13 , 5577., "OH p",ipnt , 'i', false );
00706
00707
00708 PutLine(&TauLines[ipT63]);
00709
00710
00711 PutLine(&TauLines[ipT146]);
00712
00713
00714 linadd(MAX2(0.,CoolHeavy.coolOi),0,"TOIc",'c' );
00715
00716
00717 linadd(MAX2(0.,-CoolHeavy.coolOi),0,"TOIh",'h' );
00718
00719
00720
00721
00722
00723 sum = atoms.popoi[2]*TauLines[ipT8446].Pesc*TauLines[ipT8446].Aul*2.36e-12;
00724 PntForLine(8446.,"O 1",&ipnt);
00725
00728 lindst(sum,8446,"6lev",ipnt,'i',false );
00729
00730
00731 PntForLine(1304.,"O 1",&ipnt);
00732 sum = atoms.popoi[1]*TauLines[ipT1304].Pesc*TauLines[ipT1304].Aul*1.53e-11;
00733 lindst(sum,1304,"6lev",ipnt,'i',false );
00734
00735
00736 PntForLine(1039.,"O 1",&ipnt);
00737 sum = atoms.popoi[3]*TauLines[ipT1039].Pesc*TauLines[ipT1039].Aul*1.92e-11;
00738 lindst(sum,1039,"6lev",ipnt,'i',false );
00739
00740
00741 PntForLine(4368.,"O 1",&ipnt);
00742 sum = atoms.popoi[5]*TauLines[ipT4368].Pesc*TauLines[ipT4368].Aul*4.55e-12;
00743 lindst(sum,4368,"6lev",ipnt,'i',false );
00744
00745
00746
00747
00748 PntForLine(13100.,"O 1",&ipnt);
00749 sum = atoms.popoi[3]*TauLines[ipTOI13].Pesc*TauLines[ipTOI13].Aul*1.52e-12;
00750 lindst(sum,13100,"6lev",ipnt,'i',false );
00751
00752
00753 PntForLine(11300.,"O 1",&ipnt);
00754 sum = atoms.popoi[4]*TauLines[ipTOI11].Pesc*TauLines[ipTOI11].Aul*1.76e-12;
00755 lindst(sum,11300,"6lev",ipnt,'i',false );
00756
00757
00758 PntForLine(29000.,"O 1",&ipnt);
00759 sum = atoms.popoi[5]*TauLines[ipTOI29].Pesc*TauLines[ipTOI29].Aul*6.86e-13;
00760 lindst(sum,29000,"6lev",ipnt,'i',false );
00761
00762
00763 PntForLine(46000.,"O 1",&ipnt);
00764 sum = atoms.popoi[5]*TauLines[ipTOI46].Pesc*TauLines[ipTOI46].Aul*4.32e-13;
00765 lindst(sum,46000,"6lev",ipnt,'i',false );
00766
00767
00768
00769
00770
00771
00772
00773
00774
00775
00776
00777
00778
00779 if( dense.xIonDense[ipHYDROGEN][1] > SMALLFLOAT )
00780 {
00781
00782
00783 reco23tot = CoolHeavy.O2_A3_tot * HBeta *
00784 9.36 * phycon.te40*phycon.te04 / 57.544 * dense.xIonDense[ipOXYGEN][2]/dense.xIonDense[ipHYDROGEN][1];
00785 }
00786 else
00787 {
00788 reco23tot = 0.;
00789 }
00790
00791 sum = CoolHeavy.O2471*2471./7325. + CoolHeavy.O7323 + CoolHeavy.O7332;
00792 if( sum > SMALLFLOAT )
00793 {
00794
00795 reco23tot /= sum;
00796 }
00797 else
00798 {
00799 reco23tot = 0.;
00800 }
00801
00802 rec7323 = reco23tot * CoolHeavy.O7323;
00803 rec7332 = reco23tot * CoolHeavy.O7332;
00804 rec2471 = reco23tot * CoolHeavy.O2471*2471./7325. * 8.05e-12/2.72e-12;
00805
00806
00807
00808 reco22tot = 1.660e-10 / ( phycon.sqrte * phycon.te03 * phycon.te005 ) *
00809 dense.eden * dense.xIonDense[ipOXYGEN][2] * CoolHeavy.O2_A2_tot;
00810
00811 sum = CoolHeavy.O3726 + CoolHeavy.O3730;
00812 if( sum > SMALLFLOAT )
00813 {
00814 reco22tot /= sum;
00815 }
00816 else
00817 {
00818 reco22tot = 0.;
00819 }
00820
00821 rec3726 = reco22tot * CoolHeavy.O3726 * 5.34e-12;
00822 rec3730 = reco22tot * CoolHeavy.O3730 * 5.34e-12;
00823
00824
00825 oxy.s3727 = (float)((oxy.s3727 + oxy.s7325*0.5)*5.34e-12*
00826 9.7e-5/(9.7e-5 + dense.eden*1.15e-6/phycon.sqrte));
00827
00828
00829 PntForLine(3727.,"O 2",&ipnt);
00830 fac = CoolHeavy.c3727+oxy.s3727+rec3726+rec3730;
00831 lindst(fac ,3727,"TOTL",ipnt,'c',true );
00832
00833
00834 PntForLine(7325.,"O 2",&ipnt);
00835 fac = CoolHeavy.c7325+rec7323+rec7332;
00836 lindst( fac ,7325,"TOTL",ipnt,'c',true );
00837
00838
00839 linadd(oxy.s3727,3727,"IONZ",'i' );
00840 oxy.s7325 = (float)(oxy.s7325*2.72e-12*0.34/(0.34 + dense.eden*
00841 6.04e-6/phycon.sqrte));
00842
00843
00844 linadd(oxy.s7325,7325,"IONZ",'i' );
00845
00846
00847 linadd(CoolHeavy.c7325,7325,"Coll",'i' );
00848
00849
00850 linadd(CoolHeavy.c3727,3727,"Coll",'i' );
00851
00852
00853 linadd(CoolHeavy.O3730,3729,"O II",'i' );
00854
00855
00856 linadd(CoolHeavy.O3726,3726,"O II",'i' );
00857
00858
00859 linadd(CoolHeavy.O2471,2471,"O II",'c' );
00860
00861
00862 linadd(CoolHeavy.O7323,7323,"O II",'i' );
00863
00864
00865 linadd(CoolHeavy.O7332,7332,"O II",'i' );
00866
00867
00868
00869
00870
00871 linadd( rec3730 ,3729,"O 2r",'i' );
00872
00873
00874 linadd( rec3726 ,3726,"O 2r",'i' );
00875
00876
00877 linadd(rec2471,2471,"O 2r",'i' );
00878
00879
00880 linadd(rec7323,7323,"O 2r",'i' );
00881
00882
00883 linadd(rec7332,7332,"O 2r",'i' );
00884
00885
00886 PutLine(&TauLines[ipT834]);
00887
00888
00889
00890
00891
00892 if( nWindLine > 0 )
00893 {
00894 pump = TauLine2[387].pump*TauLine2[387].PopOpc;
00895 }
00896 else
00897 {
00898 pump = 0.;
00899 }
00900
00901
00902 PntForLine(3120.,"O 2",&ipnt);
00903 lindst(pump*0.336 * 6.37e-12/(1.+dense.eden/1e12) ,3120,"pump",ipnt,'i',true );
00904
00905
00906 PntForLine(3300.,"O 2",&ipnt);
00907 lindst(pump*0.147 * 6.03e-12/(1.+dense.eden/1e12) ,3300,"pump",ipnt,'i',true );
00908
00909
00910 PntForLine(3762.,"O 2",&ipnt);
00911 lindst(pump*0.087 * 5.29e-12/(1.+dense.eden/1e12) ,3762,"pump",ipnt,'i',true );
00912
00913
00914 rec = GetLineRec(82, 4651 );
00915 PntForLine(4651.,"O 2",&ipnt);
00916 lindst(rec,4651,"O 2r",ipnt,'i',true );
00917
00918
00919 linadd(rec,4651,"O 2r",'i' );
00920
00921 linadd(pump* 0.336 * 0.933 * 4.27e-12/(1.+dense.eden/1e12),4651,"O 2p",'i' );
00922
00923
00924 rec = GetLineRec(83, 4341 );
00925
00926
00927 linadd(rec/(1.+dense.eden/1e12),4341,"O 2r",'i' );
00928
00929 linadd(pump* 0.147 * 0.661 * 4.58e-12/(1.+dense.eden/1e12),4341,"O 2p",'i' );
00930
00931
00932 PntForLine(4341.,"O 2",&ipnt);
00933 lindst(rec+pump* 0.147 * 0.661 * 4.58e-12/(1.+dense.eden/1e12),4341,"TOTL",ipnt,'i',true );
00934
00935
00936 rec = GetLineRec(84, 3736 );
00937
00938
00939 linadd(rec/(1.+dense.eden/1e12),3736,"O 2r",'i' );
00940
00941 linadd(pump* 0.087 * 0.763 * 5.33e-12/(1.+dense.eden/1e12),3736,"O 2p",'i' );
00942
00943
00944 PntForLine(3736.,"O 2",&ipnt);
00945 lindst((rec+pump* 0.087 * 0.763 * 5.33e-12)/(1.+dense.eden/1e12),3736,"TOTL",ipnt,'i',true );
00946
00947
00948
00949 efac = (emit_frac(&TauLines[ipT1666]) + emit_frac(&TauLines[ipT1661]))*0.5;
00950
00951
00952 linadd(TauLines[ipT1666].xIntensity+TauLines[ipT1661].xIntensity,1665,"TOTL",'i' );
00953 PutLine(&TauLines[ipT1661]);
00954
00955 PutLine(&TauLines[ipT1666]);
00956
00957
00958 linadd(oxy.p1666*1.20e-11*efac,1665,"Phot",'i' );
00959
00960
00961 linadd(oxy.AugerO3*1.20e-11*efac*0.27,1665,"Augr",'i' );
00962
00963
00964
00965
00966
00967
00968 PntForLine(5007.,"O 3",&ipnt);
00969 lindst(CoolHeavy.c5007/(1.+1./3.01),5007,"O 3",ipnt,'c',true );
00970
00971
00972 PntForLine(4959.,"O 3",&ipnt);
00973 lindst(CoolHeavy.c5007/(1.+3.01),4959,"O 3",ipnt,'c',true );
00974
00975
00976
00977
00978
00979 PntForLine(4931.,"O 3",&ipnt);
00980 lindst(CoolHeavy.c5007/(1.+3.01)*4.09e-4 ,4931,"O 3",ipnt,'c',true );
00981
00982
00983 linadd(oxy.d5007t/1.25,5007,"LOST",'i' );
00984
00985
00986 effec = 1.6/(1.6 + 0.9*dense.cdsqte);
00987
00988
00989 r4363 = 6.3e-21/(phycon.te70*phycon.te10)*dense.eden*dense.xIonDense[ipOXYGEN][3]*
00990 effec;
00991
00992
00993
00994
00995
00996 ct4363 = phycon.sqrte*1.3e-12*4.561e-12*dense.xIonDense[ipHYDROGEN][0]*dense.xIonDense[ipOXYGEN][3]*
00997 effec;
00998
00999
01000 fac = CoolHeavy.c4363 + r4363 + ct4363;
01001 PntForLine(4363.,"O 3",&ipnt);
01002 lindst(fac,4363,"TOTL",ipnt,'i',true );
01003
01004
01005 linadd(CoolHeavy.c4363,4363,"Coll",'c' );
01006
01007
01008 linadd(r4363,4363,"Rec ",'i' );
01009
01010
01011 PntForLine(2321.,"O 3",&ipnt);
01012 lindst(CoolHeavy.c4363*0.236,2321,"O 3",ipnt,'c',true );
01013
01014
01015
01016 linadd(ct4363,4363,"C EX",'i' );
01017
01018
01019 linadd(dense.xIonDense[ipHYDROGEN][0]*dense.xIonDense[ipOXYGEN][3]*0.225*3.56e-12*1.34e-11*phycon.sqrte,
01020 5592,"C EX",'i' );
01021
01022
01023 PutLine(&TauLines[ipTO88]);
01024
01025
01026 PutLine(&TauLines[ipT52]);
01027
01028
01029
01030 rec = GetLineRec(331,835)*emit_frac(&TauLines[ipT835]);
01031 PutExtra(MAX2(0.,rec));
01032
01033
01034 PutLine(&TauLines[ipT835]);
01035
01036
01037 linadd(MAX2(0.,rec),835,"rec ",'i' );
01038
01039
01040 PutLine(&TauLines[ipT26]);
01041
01042
01043 linadd(
01044 TauLines[ipO4_1400].xIntensity+
01045 TauLines[ipO4_1397].xIntensity+
01046 TauLines[ipO4_1407].xIntensity+
01047 TauLines[ipO4_1405].xIntensity+
01048 TauLines[ipO4_1401].xIntensity,
01049 1402,"TOTL",'i' );
01050 PutLine(&TauLines[ipO4_1400]);
01051 PutLine(&TauLines[ipO4_1397]);
01052 PutLine(&TauLines[ipO4_1407]);
01053 PutLine(&TauLines[ipO4_1405]);
01054 PutLine(&TauLines[ipO4_1401]);
01055
01056
01057 linadd(oxy.p1401*1.42e-11,1401,"InSh",'i' );
01058
01059
01060 rec = GetLineRec(378,789)*(1.-TauLines[ipT789].ColOvTot);
01061 rec = GetLineRec(378,789)*emit_frac(&TauLines[ipT789]);
01062 PutExtra(MAX2(0.,rec));
01063
01064
01065 PutLine(&TauLines[ipT789]);
01066
01067
01068 linadd(MAX2(0.,rec),789,"rec ",'i' );
01069
01070
01071 rec = GetLineRec(466,630);
01072 PutExtra(MAX2(0.,rec));
01073
01074
01075 PutLine(&TauLines[ipT630]);
01076
01077
01078 linadd(MAX2(0.,rec),630,"rec ",'i' );
01079
01080
01081 linadd(embesq.em1218+TauLines[ipT1214].xIntensity,1218,"TOTL",'i' );
01082 PutLine(&TauLines[ipT1214]);
01083
01084
01085 linadd(embesq.em1218,1211,"O 5",'i' );
01086
01087
01088 linadd(1.4e-21/phycon.te70*dense.eden*dense.xIonDense[ipOXYGEN][5]*
01089
01090 emit_frac(&TauLines[ipT1214]),5112,"O 5",'i' );
01091
01092
01093 linadd(TauLines[ipT1032].xIntensity+TauLines[ipT1037].xIntensity,1035,"TOTL",'i' );
01094 sum = TauLines[ipT1032].xIntensity*TauLines[ipT1032].FracInwd +
01095 TauLines[ipT1037].xIntensity* TauLines[ipT1037].FracInwd;
01096
01097
01098 linadd(sum,1035,"Inwd",'i' );
01099 PutLine(&TauLines[ipT1032]);
01100 PutLine(&TauLines[ipT1037]);
01101
01102
01103 PutLine(&TauLines[ipT150]);
01104
01105
01106
01107 PutLine(&TauLines[ipF0229]);
01108
01109
01110 PutLine(&TauLines[ipF0267]);
01111
01112
01113 PutLine(&TauLines[ipF444]);
01114
01115
01116 PutLine(&TauLines[ipF425]);
01117
01118
01119
01120 PutLine(&TauLines[ipTNe13]);
01121
01122
01123 PutLine(&TauLines[ipTNe16]);
01124
01125
01126 PutLine(&TauLines[ipTNe36]);
01127
01128
01129 PntForLine(3869.,"Ne 3",&ipnt);
01130 lindst(CoolHeavy.c3869/(1.+1./3.318),3869,"Ne 3",ipnt,'c',true );
01131
01132
01133 PntForLine(3968.,"Ne 3",&ipnt);
01134 lindst(CoolHeavy.c3869/(1.+3.318),3968,"Ne 3",ipnt,'c',true );
01135
01136
01137 PntForLine(3343.,"Ne 3",&ipnt);
01138 lindst(CoolHeavy.c3343,3343,"Ne 3",ipnt,'c',true );
01139
01140
01141 PntForLine(1815.,"Ne 3",&ipnt);
01142 lindst(CoolHeavy.c3343*1.38,1815,"Ne 3",ipnt,'c',true );
01143
01144
01145 PntForLine(2424.,"Ne 4",&ipnt);
01146 lindst(CoolHeavy.c2424,2424,"Ne 4",ipnt,'c',true );
01147
01148
01149
01150 PntForLine(4720.,"Ne 4",&ipnt);
01151 lindst(CoolHeavy.c4720,4720,"Ne 4",ipnt,'c',true );
01152
01153
01154 PntForLine(1602.,"Ne 4",&ipnt);
01155 lindst(CoolHeavy.c4720*4.34,1602,"Ne 4",ipnt,'c',true );
01156
01157
01158 PntForLine(3426.,"Ne 5",&ipnt);
01159 lindst(CoolHeavy.c3426/(1.+1./2.738),3426,"Ne 5",ipnt,'c',true );
01160
01161
01162 PntForLine(3346.,"Ne 5",&ipnt);
01163 lindst(CoolHeavy.c3426/(1.+2.738),3346,"Ne 5",ipnt,'c',true );
01164
01165
01166 PntForLine(2976.,"Ne 5",&ipnt);
01167 lindst(CoolHeavy.c2975,2976,"Ne 5",ipnt,'c',true );
01168
01169
01170 PntForLine(1575.,"Ne 5",&ipnt);
01171 lindst(CoolHeavy.c1565,1575,"Ne 5",ipnt,'c',true );
01172
01173
01174 PutLine(&TauLines[ipTNe24]);
01175
01176
01177 PutLine(&TauLines[ipTNe14]);
01178
01179
01180 PntForLine(1141.,"Ne 5",&ipnt);
01181 lindst(CoolHeavy.c1134,1141,"Ne 5",ipnt,'c',true );
01182
01183
01184 PutLine(&TauLines[ipxNe0676]);
01185
01186
01187 linadd(embesq.em895+TauLines[ipT895].xIntensity,895,"TOTL",'i' );
01188
01189
01190 PutLine(&TauLines[ipT895]);
01191
01192
01193 linadd(embesq.em895,890,"Ne 7",'i' );
01194
01195
01196 linadd(TauLines[ipT770].xIntensity+TauLines[ipT780].xIntensity,774,"TOTL",'i' );
01197
01198
01199 sum = TauLines[ipT770].xIntensity*TauLines[ipT770].FracInwd +
01200 TauLines[ipT780].xIntensity*TauLines[ipT780].FracInwd;
01201 linadd(sum,774,"Inwd",'i' );
01202
01203
01204 PutLine(&TauLines[ipT770]);
01205 PutLine(&TauLines[ipT780]);
01206
01207
01208 PutLine(&TauLines[ipT88]);
01209
01210 if( trace.lgTrace )
01211 {
01212 fprintf( ioQQQ, " lines_lv1_li_ne returns\n" );
01213 }
01214
01215 DEBUG_EXIT( "lines_lv1_li_ne()" );
01216 return;
01217 }
01218
01219
01220
01221 static double GetLineRec(
01222
01223 long int ip,
01224
01225 long int lWl)
01226 {
01227 double GetLineRec_v;
01228
01229 DEBUG_ENTRY( "GetLineRec()" );
01230
01231
01232 if( (long)(LineSave.RecCoefCNO[2][ip]+0.5) != lWl )
01233 {
01234 fprintf( ioQQQ, " GetLineRec called with incorrect wavelength.\n" );
01235 fprintf( ioQQQ, " index, call and get wl are %5ld%5ld%5ld\n",
01236 ip, lWl, (long)(LineSave.RecCoefCNO[2][ip]+0.5) );
01237 puts( "[Stop in GetLineRec]" );
01238 cdEXIT(EXIT_FAILURE);
01239 }
01240
01241
01242
01243 # if 0
01244 GetLineRec_v = LineSave.RecCoefCNO[3][ip]*dense.eden*
01245 dense.xIonDense[(long)(LineSave.RecCoefCNO[0][ip]-LineSave.RecCoefCNO[1][ip]+2)][(long)(LineSave.RecCoefCNO[0][ip])-1]*
01246 1.99e-8/LineSave.RecCoefCNO[2][ip];
01247 # endif
01248 GetLineRec_v = LineSave.RecCoefCNO[3][ip]*dense.eden*
01249 dense.xIonDense[(long)(LineSave.RecCoefCNO[0][ip])-1][(long)(LineSave.RecCoefCNO[0][ip]-LineSave.RecCoefCNO[1][ip]+2)-1]*
01250 1.99e-8/LineSave.RecCoefCNO[2][ip];
01251
01252
01253
01254 LineSave.RecCoefCNO[3][ip] = 0.;
01255
01256 DEBUG_EXIT( "GetLineRec()" );
01257 return( GetLineRec_v );
01258 }
01259