00001
00002
00003
00004 #include "cddefines.h"
00005 #include "coolheavy.h"
00006 #include "taulines.h"
00007 #include "phycon.h"
00008 #include "dense.h"
00009 #include "ligbar.h"
00010 #include "lines_service.h"
00011 #include "atoms.h"
00012 #include "cooling.h"
00013
00014 void CoolMagn(void)
00015 {
00016 realnum cs,
00017 csdum,
00018 csoi;
00019 double cs2s2p,
00020 cs2s3p;
00021
00022 DEBUG_ENTRY( "CoolMagn()" );
00023
00024
00025
00026
00027 cs = (realnum)(5.21e-4*phycon.te/phycon.te10);
00028 PutCS(cs,&TauLines[ipMgI2853]);
00029 atom_level2(&TauLines[ipMgI2853]);
00030
00031
00032 MakeCS(&TauLines[ipMgI2026]);
00033 atom_level2(&TauLines[ipMgI2026]);
00034
00035
00036
00037
00038
00039 csoi = (realnum)(2.68e-5*phycon.te*(1. + 1.67e-6*phycon.te - 2.95e-10*phycon.te*
00040 phycon.te));
00041 csoi = (realnum)MAX2(0.1,csoi);
00042 PutCS(csoi/9.,&TauLines[ipT4561]);
00043 atom_level2(&TauLines[ipT4561]);
00044
00045
00046
00047
00048
00049
00050 cs2s2p = 4.50*phycon.te10;
00051 PutCS(cs2s2p,&TauLines[ipT2796]);
00052 PutCS(cs2s2p*0.5,&TauLines[ipT2804]);
00053 PutCS(1.0,&TauDummy);
00054 atom_level3(&TauLines[ipT2804],&TauDummy,&TauLines[ipT2796]);
00055
00056
00057
00058
00059 if( atoms.PopLevels[0] > 0. )
00060 {
00061 atoms.popmg2 = (realnum)((atoms.PopLevels[2] + atoms.PopLevels[1])/
00062 atoms.PopLevels[0]);
00063 }
00064 else
00065 {
00066 atoms.popmg2 = 0.;
00067 }
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077 if(phycon.te < 4E5)
00078 {
00079 cs = (realnum)(0.155*phycon.te07*phycon.te01*
00080 phycon.te003*phycon.te0005*phycon.te0001);
00081 }
00082 else
00083 {
00084 cs = (realnum)(5.124/((phycon.te20/phycon.te02)*
00085 phycon.te007*phycon.te0005*phycon.te0001));
00086 }
00087 PutCS(cs,&TauLines[ipTMg4]);
00088
00089 atom_level2(&TauLines[ipTMg4]);
00090
00091
00092
00093
00094 cs = (realnum)MIN2(0.311,0.11*phycon.te10);
00095 PutCS(cs,&TauLines[ipTMg14]);
00096
00097 cs = (realnum)MIN2(1.06,0.339*phycon.te10);
00098 PutCS(cs,&TauLines[ipTMg6]);
00099
00100 cs = (realnum)MIN2(0.297,0.0745*phycon.te10*phycon.te02);
00101 PutCS(cs,&TauDummy);
00102 atom_level3(&TauLines[ipTMg6],&TauLines[ipTMg14],&TauDummy);
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113 PutCS(1.187,&TauLines[ipxMg52855]);
00114
00115 cs = (realnum)MIN2(0.278,0.0171*phycon.te20*phycon.te05/
00116 phycon.te005/phycon.te003);
00117 cs = (realnum)MAX2(0.182,cs);
00118
00119
00120 PutCS(cs,&TauLines[ipxMg52417]);
00121
00122
00123 PutCS(0.153,&TauLines[ipxMg51325]);
00124
00125 atom_level3(&TauLines[ipxMg52855],&TauLines[ipxMg52417],&TauLines[ipxMg51325]);
00126
00127
00128
00129
00130
00131 CoolHeavy.c1806 = atom_pop2(0.6,4.,10.,0.1,7.974e4,dense.xIonDense[ipMAGNESIUM][5])*
00132 1.11e-11;
00133 CoolAdd("Mg 6",1806,CoolHeavy.c1806);
00134
00135
00136
00137
00138 if( phycon.alogte < 4.4 )
00139 {
00140 cs = (realnum)(0.027*phycon.te30/phycon.te03*phycon.te003*phycon.te001);
00141 }
00142 else
00143 {
00144 cs = 0.44f;
00145 }
00146 PutCS(cs,&TauLines[ipfsMg790]);
00147 if( phycon.alogte < 4.6 )
00148 {
00149 cs = (realnum)(MIN2(1.456,0.0577*phycon.te30*phycon.te02/phycon.te001/
00150 phycon.te001));
00151 csdum = (realnum)(8.275e-3*phycon.sqrte/phycon.te10/phycon.te001);
00152 }
00153 else
00154 {
00155 cs = (realnum)(3.257/(phycon.te05*phycon.te02*phycon.te003*phycon.te003));
00156 csdum = (realnum)(1.456/(phycon.te10*phycon.te01*phycon.te005));
00157 }
00158 PutCS(cs,&TauLines[ipfsMg755]);
00159 PutCS(csdum,&TauDummy);
00160
00161 atom_level3(&TauLines[ipfsMg790],&TauLines[ipfsMg755],&TauDummy);
00162
00163
00164
00165
00166
00167
00168
00169 cs = (realnum)MIN2(0.22,0.3622/(phycon.te05*phycon.te02*phycon.te003));
00170 PutCS(cs,&TauLines[ipxMg71190]);
00171
00172
00173 cs = (realnum)MIN2(1.067,0.247*phycon.te10*phycon.te03*phycon.te005);
00174 PutCS(cs,&TauLines[ipxMg72569]);
00175
00176
00177 cs = (realnum)MIN2(0.542,3.863/(phycon.te20*phycon.te03*
00178 phycon.te01/phycon.te003));
00179 cs = (realnum)MAX2(0.3735,cs);
00180 PutCS(cs,&TauLines[ipxMg72261]);
00181
00182 atom_level3(&TauLines[ipxMg72569],&TauLines[ipxMg72261],&TauLines[ipxMg71190]);
00183
00184
00185
00186
00187
00188
00189 PutCS(1.0,&TauLines[ipxMg08303]);
00190 atom_level2(&TauLines[ipxMg08303]);
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00203 cs = (realnum)(0.98288 - 0.23766*phycon.alogte + 0.014334*POW2(phycon.alogte));
00204 cs = (realnum)MAX2(0.01,cs);
00205 PutCS(cs,&TauLines[ipT705]);
00206 atom_level2(&TauLines[ipT705]);
00207
00208
00209
00210 ligbar(12,&TauLines[ipTMg610],&TauLines[ipT58],&cs2s2p,&cs2s3p);
00211 PutCS(cs2s2p,&TauLines[ipTMg610]);
00212 PutCS(cs2s2p*0.5,&TauLines[ipTMg625]);
00213 PutCS(1.0,&TauDummy);
00214 atom_level3(&TauLines[ipTMg625],&TauDummy,&TauLines[ipTMg610]);
00215
00216
00217 PutCS(cs2s3p,&TauLines[ipT58]);
00218 atom_level2(&TauLines[ipT58]);
00219 return;
00220 }