00001
00002
00003
00004 #include "cddefines.h"
00005 #include "taulines.h"
00006 #include "physconst.h"
00007 #include "coolheavy.h"
00008 #include "thermal.h"
00009 #include "dense.h"
00010 #include "hmi.h"
00011 #include "phycon.h"
00012 #include "h2.h"
00013 #include "co.h"
00014 #include "mole.h"
00015 #include "lines_service.h"
00016 #include "radius.h"
00017 #include "lines.h"
00018
00019 void lines_molecules(void)
00020 {
00021 long int i;
00022
00023 DEBUG_ENTRY( "lines_molecules()" );
00024
00025
00026 i = StuffComment( "molecules" );
00027 linadd( 0., (realnum)i , "####", 'i',
00028 " molecules");
00029
00030
00031
00032
00033 linadd(CoolHeavy.h2line,20000.,"H2 l",'c',
00034 "cooling due H2 rotation lines from simple model" );
00035
00036 hmi.h2line_cool_frac = (realnum)MAX2( CoolHeavy.h2line/thermal.ctot , hmi.h2line_cool_frac );
00037
00038
00039 linadd(CoolHeavy.HD,0,"HDro",'c',
00040 "HD rotation cooling");
00041
00042
00043 hmi.h2dtot += (realnum)(hmi.HeatH2Dish_used*radius.dVeffAper);
00044 hmi.h2dfrc = (realnum)(MAX2(hmi.HeatH2Dish_used/thermal.htot,hmi.h2dfrc));
00045
00046
00047 hmi.h2pmax = MAX2(hmi.h2pmax,(realnum)(thermal.heating[0][16]/thermal.htot));
00048
00049 linadd(hmi.HeatH2Dish_used,0,"H2dH",'h',
00050 "heating by H2 dissociation by photons and cosmic rays");
00051
00052
00053 hmi.HeatH2DexcMax = MAX2((realnum)(hmi.HeatH2Dexc_used/thermal.htot),hmi.HeatH2DexcMax);
00054
00055
00056 hmi.CoolH2DexcMax = MAX2((realnum)(-hmi.HeatH2Dexc_used/thermal.htot),hmi.CoolH2DexcMax);
00057
00058 linadd( MAX2(0.,hmi.HeatH2Dexc_used),0,"H2vH",'h',
00059 "heating by coll deexcit of vib-excited H2");
00060
00061 linadd( MAX2(0.,-hmi.HeatH2Dexc_used) ,0,"H2vC",'c',
00062 " cooling by coll deexcit of vib-excited H2");
00063
00064
00065 if( h2.lgEnabled )
00066 {
00067
00068 linadd( 0. ,0,"H2 v",'i',
00069 " when large molecule is turned on do not print this simple estimate line emission by vib-excited H2 ");
00070 }
00071 else
00072 {
00073 linadd( findspecieslocal("H2*")->den*2e-7*4.17e-12,0,"H2 v",'i',
00074 " H2 vib-excited lines from Tielens & Hollenbach 1985");
00075 }
00076
00077
00078
00079 for( diatom_iter diatom = diatoms.begin(); diatom != diatoms.end(); ++diatom )
00080 (*diatom)->H2_LinesAdd();
00081
00082 linadd(hmi.hmicol,0,"H-FB",'c',
00083 " neg H ion free-bound emission, H + e -> H- + hnu ");
00084
00085 linadd(CoolHeavy.brems_cool_hminus,0,"H-FF",'i',
00086 " neg H ion free-free emission ");
00087
00088
00089 linadd(mole.findrate("H-,H+=>H,H")*3.032e-12,6563,"H-CT",'i',
00090 " H-alpha produced by H- mutual neutralization ");
00091
00092
00093 hmi.hmitot += hmi.hmihet*radius.dVeffAper;
00094
00095 linadd(MAX2(0.,hmi.hmihet),0,"H- H",'h',
00096 " H- heating ");
00097
00098 linadd(MAX2(0.,-hmi.hmihet),0,"H-Hc",'c',
00099 " induced H- cooling ");
00100
00101 linadd(CoolHeavy.H2PlsCool,0,"H2+ ",'c',
00102 " H+ + H => H2+ + photon continuum cooling ");
00103
00104 linadd(hmi.h2plus_heat,0,"H2+p",'h',
00105 " H2+ photo dissoc heating ");
00106
00107 linadd(MAX2(3.27e-12+phycon.te*BOLTZMANN,0.)*dense.xIonDense[ipHYDROGEN][1]*dense.xIonDense[ipHELIUM][0]*1e-20+
00108 (1.76e-11+phycon.te*BOLTZMANN)*dense.xIonDense[ipHYDROGEN][0]*dense.xIonDense[ipHELIUM][1]*1e-16,0,"HEH+",'i' ,
00109 " HeH+ formation cooling ");
00110
00111
00112 co.codtot += co.CODissHeat*(realnum)radius.dVeffAper;
00113 co.codfrc = (realnum)MAX2(co.CODissHeat/thermal.htot,co.codfrc);
00114
00115 linadd(co.CODissHeat,0,"COdh",'h',
00116 " carbon monoxide co photodissociation ");
00117
00118 return;
00119 }