00001
00002
00003
00004
00005
00006 #include "cddefines.h"
00007 #define WLAL 1215.6845
00008 #include "doppvel.h"
00009 #include "dense.h"
00010 #include "rfield.h"
00011 #include "iso.h"
00012 #include "phycon.h"
00013 #include "hydrogenic.h"
00014 #include "atomfeii.h"
00015
00016
00017 static double fe2par(double te);
00018
00019 void atoms_fe2ovr(void)
00020 {
00021
00022
00023 static bool lgMustLoadData=true;
00024
00025 long int i;
00026
00027 static long int nZoneEval;
00028
00029 double Fe2Partn,
00030 displa,
00031 hopc,
00032 rate,
00033 weight;
00034
00035 static double BigFeWidth,
00036 BigHWidth,
00037 oldrat;
00038
00039 DEBUG_ENTRY( "atoms_fe2ovr()" );
00040
00041 if( lgMustLoadData )
00042 {
00043 lgMustLoadData = false;
00044 Fe2_ovr_DataInit();
00045 }
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056 if( FeII.lgFeIILargeOn )
00057 {
00058
00059 DEBUG_EXIT( "atoms_fe2ovr()" );
00060 return;
00061 }
00062
00063 if( nzone <= 1 )
00064 {
00065 BigHWidth = hydro.HLineWidth;
00066 BigFeWidth = DoppVel.doppler[ipIRON];
00067 nZoneEval = nzone;
00068 }
00069
00070
00071 if( (dense.xIonDense[ipIRON][1] <= 0. || !FeII.lgLyaPumpOn) ||
00072 hydro.HLineWidth <= 0. )
00073 {
00074 Fe2Partn = 0.;
00075 oldrat = 0.;
00076 hydro.dstfe2lya = 0.;
00077
00078 for( i=0; i < NFEII; i++ )
00079 {
00080 fe2ovr_la.Fe2PopLte[i] = 0.;
00081 }
00082
00083 DEBUG_EXIT( "atoms_fe2ovr()" );
00084 return;
00085 }
00086
00087
00088
00089 if( nZoneEval == nzone && nzone > 1 )
00090 {
00091 DEBUG_EXIT( "atoms_fe2ovr()" );
00092 return;
00093 }
00094
00095 BigHWidth = MAX2(BigHWidth,(double)hydro.HLineWidth);
00096 BigFeWidth = MAX2(BigFeWidth,(double)DoppVel.doppler[ipIRON]);
00097 nZoneEval = nzone;
00098
00099
00100 ASSERT( fe2ovr_la.fe2lam[0] > 0. );
00101
00102 rate = 0.;
00103 Fe2Partn = fe2par(phycon.te);
00104 for( i=0; i < NFEII; i++ )
00105 {
00106
00107 displa = fabs(fe2ovr_la.fe2lam[i]-WLAL)/WLAL*3e10/BigHWidth;
00108 if( displa < 1.333 )
00109 {
00110
00111
00112 if( displa <= 0.66666 )
00113 {
00114 weight = 1.;
00115 }
00116 else
00117 {
00118 weight = MAX2(0.,1.-(displa-0.666666)/0.66666);
00119 }
00120
00121 fe2ovr_la.Fe2PopLte[i] =
00122 (float)(fe2ovr_la.fe2gs[i]/Fe2Partn*rfield.ContBoltz[fe2ovr_la.ipfe2[i]-1]*
00123 dense.xIonDense[ipIRON][1]);
00124
00125 fe2ovr_la.feopc[i] = (float)(fe2ovr_la.Fe2PopLte[i]*fe2ovr_la.fe2osc[i]*
00126 0.0150*(fe2ovr_la.fe2lam[i]*1e-8)/BigFeWidth);
00127
00128
00129 if( iso.Pop2Ion[ipH_LIKE][ipHYDROGEN][ipH1s]*dense.xIonDense[ipHYDROGEN][1] > 0. )
00130 {
00131 hopc = 7.60e-8*iso.Pop2Ion[ipH_LIKE][ipHYDROGEN][ipH1s]*dense.xIonDense[ipHYDROGEN][1]/DoppVel.doppler[ipHYDROGEN];
00132 }
00133 else
00134 {
00135 hopc = 7.60e-8*dense.xIonDense[ipHYDROGEN][0]/DoppVel.doppler[0];
00136 }
00137 rate += (fe2ovr_la.feopc[i]/SDIV((fe2ovr_la.feopc[i] + hopc)))*(BigFeWidth/
00138 DoppVel.doppler[ipHYDROGEN])*(1. - 1./(1. + 1.6*fe2ovr_la.Fe2TauLte[i]))*
00139 weight;
00140 }
00141 }
00142
00143
00144
00147 hydro.dstfe2lya = (float)((rate + oldrat)/2.);
00148 oldrat = hydro.dstfe2lya;
00149
00150 DEBUG_EXIT( "atoms_fe2ovr()" );
00151 return;
00152 }
00153
00154 static void locate(double[],long,double,long*);
00155 #define NFE2PR 61
00156
00157
00158 static double fe2par(double te)
00159 {
00160 long int i;
00161 double du,
00162 fe2par_v,
00163 slope;
00164 static double fe2pt[NFE2PR]={1.000e00,5.000e00,2.000e01,5.000e01,
00165 1.000e02,2.000e02,3.000e02,5.000e02,7.000e02,1.000e03,1.200e03,
00166 1.500e03,2.000e03,2.500e03,3.000e03,3.500e03,4.000e03,4.500e03,
00167 5.000e03,5.500e03,6.000e03,6.500e03,7.000e03,7.500e03,8.000e03,
00168 8.500e03,9.000e03,9.500e03,1.000e04,1.100e04,1.200e04,1.300e04,
00169 1.400e04,1.500e04,1.600e04,1.700e04,1.800e04,1.900e04,2.000e04,
00170 2.200e04,2.400e04,2.600e04,2.800e04,3.000e04,3.500e04,4.000e04,
00171 4.500e04,5.000e04,5.500e04,6.000e04,6.500e04,7.000e04,7.500e04,
00172 8.000e04,8.500e04,9.000e04,9.500e04,1.000e05,1.050e05,1.100e05,
00173 1.150e05};
00174 static double fe2pf[NFE2PR]={1.000e01,1.000e01,1.000e01,1.000e01,
00175 1.003e01,1.056e01,1.159e01,1.403e01,1.639e01,1.960e01,2.157e01,
00176 2.426e01,2.816e01,3.146e01,3.431e01,3.684e01,3.915e01,4.132e01,
00177 4.341e01,4.547e01,4.755e01,4.967e01,5.185e01,5.411e01,5.646e01,
00178 5.891e01,6.146e01,6.412e01,6.688e01,7.273e01,7.903e01,8.576e01,
00179 9.295e01,1.006e02,1.087e02,1.174e02,1.265e02,1.362e02,1.465e02,
00180 1.689e02,1.938e02,2.214e02,2.517e02,2.846e02,3.781e02,4.855e02,
00181 6.038e02,7.301e02,8.616e02,9.959e02,1.131e03,1.266e03,1.399e03,
00182 1.530e03,1.658e03,1.782e03,1.903e03,2.020e03,2.134e03,2.243e03,
00183 2.349e03};
00184
00185 DEBUG_ENTRY( "fe2par()" );
00186
00187
00188
00189
00190
00191
00192
00193 if( te < 1. )
00194 {
00195 fe2par_v = 10.;
00196 }
00197 else if( te > fe2pt[NFE2PR-1] )
00198 {
00199 fe2par_v = fe2pf[NFE2PR-1];
00200 }
00201 else
00202 {
00203 locate(fe2pt,NFE2PR,te,&i);
00204 slope = (fe2pf[i] - fe2pf[i-1])/(fe2pt[i] - fe2pt[i-1]);
00205 du = slope*(te - fe2pt[i-1]);
00206 fe2par_v = fe2pf[i-1] + du;
00207 }
00208
00209 DEBUG_EXIT( "fe2par()" );
00210 return( fe2par_v );
00211 }
00212
00213
00214 static void locate(double xx[],
00215 long int n,
00216 double x,
00217 long int *j)
00218 {
00219 long int jl,
00220 jm,
00221 ju;
00222
00223 DEBUG_ENTRY( "locate()" );
00224
00225
00226
00227
00228 jl = 0;
00229 ju = n + 1;
00230
00231 while( ju - jl > 1 )
00232 {
00233 jm = (ju + jl)/2;
00234 if( (xx[n-1] > xx[0]) == (x > xx[jm-1]) )
00235 {
00236 jl = jm;
00237 }
00238 else
00239 {
00240 ju = jm;
00241 }
00242
00243 }
00244 *j = jl;
00245
00246 DEBUG_EXIT( "locate()" );
00247 return;
00248 }
00249
00250
00251
00252
00253
00254
00255
00256 void Fe2_ovr_DataInit(void)
00257 {
00258 long int i,
00259 _r;
00260 static int MustInit = true;
00261 if( MustInit ){
00262 { static double _itmp0[] = {1204.735,1204.742,1204.755,1204.762,
00263 1204.867,1204.946,1205.021,1205.028,1205.117,1205.572,1205.576,
00264 1205.606,1205.909,1205.975,1205.997,1206.188,1206.259,1206.332,
00265 1206.350,1206.428,1206.457,1206.475,1206.487,1206.527,1206.549,
00266 1206.638,1206.646,1206.695,1206.727,1206.740,1206.983,1207.020,
00267 1207.031,1207.056,1207.122,1207.174,1207.286,1207.353,1207.354,
00268 1207.360,1207.384,1207.480,1207.482,1207.516,1207.655,1207.893,
00269 1207.928,1208.013,1208.162,1208.230,1208.430,1208.430,1208.432,
00270 1208.459,1208.561,1208.630,1208.847,1208.995,1209.160,1209.207,
00271 1209.292,1209.319,1209.378,1209.431,1209.484,1209.492,1209.503,
00272 1209.504,1209.676,1209.763,1209.783,1209.829,1209.929,1209.956,
00273 1210.068,1210.073,1210.103,1210.443,1210.490,1210.561,1210.572,
00274 1210.694,1210.695,1210.744,1210.809,1210.840,1210.881,1210.948,
00275 1211.010,1211.011,1211.037,1211.226,1211.230,1211.255,1211.272};
00276 for( i=1, _r = 0; i <= 95; i++ )
00277 {
00278 fe2ovr_la.fe2lam[i-1] = (float)_itmp0[_r++];
00279 }
00280 }
00281 { static double _itmp1[] = {1211.311,1211.330,1211.342,1211.366,
00282 1211.391,1211.432,1211.436,1211.503,1211.566,1211.578,1211.606,
00283 1211.609,1211.618,1211.644,1211.690,1211.704,1211.809,1211.818,
00284 1211.825,1211.838,1211.860,1211.883,1211.892,1211.959,1211.973,
00285 1211.986,1212.014,1212.019,1212.070,1212.084,1212.122,1212.253,
00286 1212.264,1212.356,1212.662,1212.753,1212.950,1212.966,1212.985,
00287 1213.012,1213.075,1213.090,1213.091,1213.132,1213.221,1213.412,
00288 1213.529,1213.580,1213.644,1213.719,1213.734,1213.738,1213.759,
00289 1213.767,1213.833,1213.917,1214.032,1214.061,1214.067,1214.150,
00290 1214.172,1214.251,1214.283,1214.285,1214.286,1214.398,1214.432,
00291 1214.518,1214.559,1214.735,1214.821,1214.865,1214.905,1215.051,
00292 1215.058,1215.081,1215.180,1215.183,1215.359,1215.387,1215.421,
00293 1215.490,1215.647,1215.690,1215.691,1215.707,1215.801,1215.852,
00294 1215.873,1215.983,1216.013,1216.026,1216.038,1216.141,1216.239};
00295 for( i=96, _r = 0; i <= 190; i++ )
00296 {
00297 fe2ovr_la.fe2lam[i-1] = (float)_itmp1[_r++];
00298 }
00299 }
00300 { static double _itmp2[] = {1216.272,1216.275,1216.275,1216.483,
00301 1216.522,1216.523,1216.638,1216.769,1216.783,1216.847,1216.902,
00302 1216.908,1216.922,1216.978,1216.996,1217.011,1217.041,1217.050,
00303 1217.107,1217.118,1217.143,1217.152,1217.205,1217.291,1217.301,
00304 1217.347,1217.349,1217.486,1217.487,1217.497,1217.566,1217.583,
00305 1217.593,1217.620,1217.633,1217.707,1217.729,1217.848,1217.854,
00306 1217.878,1217.880,1217.887,1218.042,1218.053,1218.088,1218.097,
00307 1218.099,1218.108,1218.186,1218.211,1218.213,1218.275,1218.301,
00308 1218.304,1218.374,1218.395,1218.408,1218.464,1218.666,1218.668,
00309 1218.672,1218.738,1218.808,1218.833,1218.835,1218.922,1218.928,
00310 1219.125,1219.132,1219.186,1219.413,1219.424,1219.512,1219.517,
00311 1219.533,1219.621,1219.649,1219.664,1219.708,1219.713,1219.731,
00312 1219.735,1219.802,1219.978,1219.992,1220.035,1220.064,1220.132,
00313 1220.173,1220.208,1220.239,1220.264,1220.270,1220.277,1220.386};
00314 for( i=191, _r = 0; i <= 285; i++ )
00315 {
00316 fe2ovr_la.fe2lam[i-1] = (float)_itmp2[_r++];
00317 }
00318 }
00319 { static double _itmp3[] = {1220.471,1220.479,1220.522,1220.560,
00320 1220.669,1220.769,1220.807,1220.872,1220.924,1221.060,1221.067,
00321 1221.123,1221.201,1221.204,1221.459,1221.465,1221.478,1221.526,
00322 1221.536,1221.555,1221.596,1221.648,1221.763,1221.805,1221.918,
00323 1221.998,1222.025,1222.231,1222.232,1222.384,1222.433,1222.453,
00324 1222.472,1222.547,1222.658,1222.663,1222.723,1222.746,1222.825,
00325 1222.912,1222.920,1222.927,1222.971,1223.107,1223.282,1223.291,
00326 1223.320,1223.327,1223.428,1223.561,1223.590,1223.623,1223.747,
00327 1223.827,1224.075,1224.101,1224.132,1224.225,1224.278,1224.380,
00328 1224.383,1224.388,1224.391,1224.455,1224.486,1224.673,1224.696,
00329 1224.829,1224.863,1224.878,1225.059,1225.111,1225.157,1225.212,
00330 1225.273,1225.282,1225.400,1225.402,1225.412,1225.459,1225.487,
00331 1225.496,1225.577,1225.615,1225.631,1225.651,1225.661,1225.730};
00332 for( i=286, _r = 0; i <= NFEII; i++ )
00333 {
00334 fe2ovr_la.fe2lam[i-1] = (float)_itmp3[_r++];
00335 }
00336 }
00337 { static double _itmp4[] = {2.366e-08,1.037e-04,2.506e-03,4.529e-06,
00338 5.662e-06,2.529e-04,2.157e-11,1.083e-07,1.465e-02,1.188e-05,
00339 2.792e-03,2.697e-04,7.210e-05,1.101e-09,1.660e-02,5.715e-09,
00340 9.416e-08,1.330e-08,5.081e-06,3.183e-06,2.349e-03,2.306e-05,
00341 3.846e-07,4.601e-06,4.455e-04,3.733e-08,3.898e-06,2.371e-09,
00342 5.080e-06,8.392e-05,2.142e-03,1.428e-04,8.930e-06,1.778e-05,
00343 3.427e-06,4.976e-08,5.186e-05,6.697e-04,1.079e-03,2.269e-04,
00344 5.713e-06,4.404e-06,4.580e-05,2.243e-05,7.192e-06,1.674e-02,
00345 6.484e-08,1.373e-06,1.592e-03,2.897e-03,1.717e-04,2.495e-06,
00346 1.439e-03,6.150e-04,2.697e-04,8.471e-05,2.804e-03,8.318e-03,
00347 9.245e-06,2.629e-05,1.285e-10,1.538e-05,3.926e-06,2.018e-03,
00348 3.639e-06,3.621e-06,9.591e-05,1.183e-03,1.412e-05,3.295e-04,
00349 5.034e-05,5.621e-05,2.588e-03,9.681e-05,9.264e-07,7.012e-05,
00350 1.492e-09,1.028e-06,2.132e-08,1.180e-05,2.239e-06,1.857e-06,
00351 3.732e-04,4.225e-06,1.479e-03,8.014e-06,7.673e-06,2.600e-09,
00352 1.161e-04,1.270e-03,1.614e-03,3.793e-06,5.080e-05,2.666e-04,
00353 5.928e-03};
00354 for( i=1, _r = 0; i <= 95; i++ )
00355 {
00356 fe2ovr_la.fe2osc[i-1] = (float)_itmp4[_r++];
00357 }
00358 }
00359 { static double _itmp5[] = {2.910e-04,9.141e-05,8.587e-07,1.242e-05,
00360 1.297e-05,2.466e-07,1.968e-06,1.216e-09,3.146e-04,1.262e-03,
00361 2.322e-07,1.663e-08,1.279e-04,1.667e-06,7.887e-04,8.259e-05,
00362 8.182e-06,4.864e-09,5.164e-08,2.930e-04,6.484e-06,4.808e-05,
00363 4.365e-06,9.791e-10,1.374e-04,4.017e-03,1.094e-05,2.172e-03,
00364 8.951e-06,4.539e-07,6.947e-08,1.227e-11,1.932e-08,9.747e-04,
00365 2.991e-08,4.416e-05,1.651e-08,4.275e-03,1.030e-08,4.374e-08,
00366 1.510e-05,8.570e-05,7.852e-03,2.612e-02,9.837e-06,4.018e-03,
00367 2.133e-06,4.548e-06,3.040e-04,7.328e-05,1.442e-08,1.216e-01,
00368 1.116e-01,9.683e-07,1.573e-06,1.581e-05,1.297e-05,1.585e-09,
00369 4.709e-03,1.603e-02,2.449e-06,1.438e-05,8.372e-07,3.443e-03,
00370 1.782e-08,7.310e-04,3.228e-03,1.706e-07,2.697e-07,2.143e-04,
00371 6.278e-06,2.647e-05,1.857e-06,2.698e-07,1.648e-03,6.053e-07,
00372 5.458e-06,2.647e-03,4.294e-05,7.798e-07,1.183e-06,1.309e-06,
00373 1.503e-06,1.106e-05,2.113e-03,2.197e-04,4.611e-07,1.541e-03,
00374 3.792e-03,1.482e-04,1.794e-04,1.294e-04,5.727e-04,8.259e-08,
00375 1.191e-03};
00376 for( i=96, _r = 0; i <= 190; i++ )
00377 {
00378 fe2ovr_la.fe2osc[i-1] = (float)_itmp5[_r++];
00379 }
00380 }
00381 { static double _itmp6[] = {1.112e-03,1.339e-03,2.042e-06,6.107e-05,
00382 5.270e-05,2.466e-03,9.814e-05,4.036e-05,7.548e-05,3.404e-03,
00383 5.000e-05,1.023e-09,4.285e-06,5.571e-06,1.737e-07,3.097e-07,
00384 6.901e-06,2.138e-06,4.149e-07,1.807e-05,1.644e-05,1.493e-03,
00385 2.089e-03,6.380e-08,3.681e-03,6.010e-07,2.761e-06,1.671e-04,
00386 6.095e-09,2.766e-06,9.078e-05,7.816e-07,1.879e-06,3.523e-03,
00387 1.361e-10,1.309e-04,2.377e-06,4.017e-03,1.049e-04,9.418e-06,
00388 3.133e-06,1.035e-07,3.707e-06,7.128e-07,1.333e-04,1.659e-04,
00389 1.746e-06,2.890e-08,2.494e-03,3.289e-09,3.953e-03,6.081e-06,
00390 4.932e-05,4.943e-09,1.239e-08,9.547e-04,2.079e-06,1.230e-02,
00391 5.345e-05,2.426e-06,1.386e-04,9.549e-06,9.590e-04,8.034e-05,
00392 6.252e-09,4.120e-05,2.366e-06,3.971e-06,1.503e-10,7.815e-08,
00393 2.818e-04,5.873e-06,2.471e-07,5.584e-08,5.943e-06,5.358e-05,
00394 2.332e-08,3.774e-06,1.014e-05,5.283e-06,3.890e-07,2.223e-07,
00395 4.665e-02,5.740e-08,2.773e-06,2.393e-08,2.824e-07,1.084e-06,
00396 4.753e-05,2.296e-04,5.927e-06,2.157e-05,5.874e-07,4.786e-06,
00397 2.978e-03};
00398 for( i=191, _r = 0; i <= 285; i++ )
00399 {
00400 fe2ovr_la.fe2osc[i-1] = (float)_itmp6[_r++];
00401 }
00402 }
00403 { static double _itmp7[] = {3.630e-08,1.007e-07,9.033e-05,3.061e-04,
00404 6.037e-06,7.798e-05,3.281e-05,1.625e-03,1.534e-04,7.292e-08,
00405 2.122e-07,6.484e-04,5.559e-05,3.013e-05,1.725e-04,4.345e-04,
00406 1.096e-04,7.396e-06,1.074e-09,1.409e-04,3.589e-04,4.236e-05,
00407 8.510e-06,1.986e-03,2.410e-06,2.786e-08,8.707e-06,3.303e-05,
00408 2.280e-06,7.533e-04,5.534e-06,1.932e-05,4.083e-06,2.207e-05,
00409 4.091e-05,6.774e-08,8.165e-05,5.874e-06,9.247e-07,4.374e-11,
00410 2.443e-03,9.290e-07,2.248e-07,1.023e-07,2.850e-03,3.420e-04,
00411 7.551e-08,7.278e-07,6.426e-07,1.156e-05,3.083e-05,1.247e-04,
00412 1.161e-05,2.317e-05,4.149e-06,2.773e-06,4.907e-02,1.514e-04,
00413 1.725e-03,4.294e-04,1.233e-06,6.727e-04,6.107e-06,7.534e-06,
00414 1.074e-07,1.578e-03,8.993e-07,1.531e-05,8.051e-06,3.341e-10,
00415 1.202e-07,8.994e-06,7.226e-05,7.028e-04,1.678e-08,5.224e-07,
00416 3.775e-05,2.654e-06,9.244e-05,8.570e-05,1.345e-04,1.207e-02,
00417 8.432e-06,7.210e-09,1.840e-04,6.995e-06,3.871e-07,3.655e-05};
00418 for( i=286, _r = 0; i <= NFEII; i++ )
00419 {
00420 fe2ovr_la.fe2osc[i-1] = (float)_itmp7[_r++];
00421 }
00422 }
00423 { static double _itmp8[] = {0.0079,0.2350,0.2351,0.0806,0.0806,
00424 0.2350,0.1853,0.1853,0.2385,0.2517,0.2374,0.0725,0.2367,
00425 0.0035,0.2401,0.1896,0.1870,0.1896,0.0791,0.1870,0.2367,
00426 0.2517,0.1896,0.1228,0.1898,0.1896,0.1870,0.1896,0.1870,
00427 0.1898,0.2374,0.2517,0.1870,0.1898,0.2350,0.1898,0.1898,
00428 0.2367,0.2351,0.0725,0.1870,0.1870,0.0765,0.1898,0.1228,
00429 0.2317,0.2517,0.1853,0.2063,0.2351,0.2374,0.1444,0.2350,
00430 0.2489,0.1228,0.1942,0.2374,0.2351,0.2489,0.2385,0.1988,
00431 0.1444,0.1721,0.0725,0.1942,0.1853,0.0765,0.2351,0.1870,
00432 0.2489,0.1942,0.0765,0.2367,0.2367,0.1853,0.2385,0.0061,
00433 0.1896,0.1853,0.1246,0.2769,0.2489,0.2078,0.1870,0.2367,
00434 0.1898,0.2350,0.1896,0.1898,0.2374,0.2374,0.1942,0.1898,
00435 0.2385,0.2367};
00436 for( i=1, _r = 0; i <= 95; i++ )
00437 {
00438 fe2ovr_la.fe2enr[i-1] = (float)_itmp8[_r++];
00439 }
00440 }
00441 { static double _itmp9[] = {0.1898,0.2401,0.1853,0.2769,0.1942,
00442 0.1896,0.1444,0.1853,0.2317,0.2367,0.2489,0.1896,0.1898,
00443 0.0725,0.1492,0.0791,0.1228,0.1896,0.1896,0.0791,0.1870,
00444 0.2401,0.1721,0.1853,0.1898,0.0765,0.1870,0.0765,0.1898,
00445 0.2769,0.1853,0.1853,0.2769,0.2374,0.2374,0.2401,0.1953,
00446 0.0725,0.1967,0.1936,0.1870,0.1444,0.2351,0.0725,0.1870,
00447 0.2351,0.2350,0.2385,0.2517,0.2063,0.1942,0.0791,0.0765,
00448 0.1967,0.1228,0.1896,0.1870,0.1942,0.0791,0.0806,0.1942,
00449 0.2517,0.1898,0.0806,0.1942,0.0725,0.2350,0.1942,0.1978,
00450 0.1246,0.2374,0.2385,0.1978,0.1967,0.2063,0.2350,0.1967,
00451 0.2317,0.1898,0.2401,0.1978,0.1953,0.1953,0.1978,0.2367,
00452 0.2489,0.1953,0.0765,0.2317,0.0765,0.2367,0.2489,0.1988,
00453 0.1492,0.0791};
00454 for( i=96, _r = 0; i <= 190; i++ )
00455 {
00456 fe2ovr_la.fe2enr[i-1] = (float)_itmp9[_r++];
00457 }
00458 }
00459 { static double _itmp10[] = {0.0791,0.2078,0.2401,0.1898,0.0765,
00460 0.0806,0.1898,0.1246,0.2374,0.2063,0.1988,0.2803,0.1896,
00461 0.1978,0.1936,0.1936,0.1492,0.2401,0.1978,0.2351,0.2350,
00462 0.0791,0.1988,0.1853,0.2367,0.1978,0.1896,0.2374,0.1896,
00463 0.1492,0.2401,0.1967,0.1942,0.2078,0.2803,0.1898,0.1967,
00464 0.0725,0.1898,0.1942,0.1942,0.1967,0.1967,0.1942,0.0765,
00465 0.2042,0.1967,0.1246,0.2090,0.1896,0.0725,0.1942,0.2351,
00466 0.1896,0.1896,0.2374,0.1936,0.2454,0.1988,0.1942,0.1898,
00467 0.0806,0.2385,0.1988,0.1896,0.1673,0.2350,0.1942,0.1896,
00468 0.1492,0.1444,0.0765,0.1853,0.1978,0.0171,0.0806,0.1953,
00469 0.1953,0.1870,0.1978,0.1492,0.2367,0.1936,0.1978,0.0791,
00470 0.1978,0.2350,0.0791,0.2769,0.1267,0.2517,0.0791,0.1978,
00471 0.2350,0.2350};
00472 for( i=191, _r = 0; i <= 285; i++ )
00473 {
00474 fe2ovr_la.fe2enr[i-1] = (float)_itmp10[_r++];
00475 }
00476 }
00477 { static double _itmp11[] = {0.2350,0.0725,0.1870,0.2517,0.1953,
00478 0.2351,0.0791,0.0765,0.2367,0.1953,0.1953,0.2374,0.2401,
00479 0.1988,0.1936,0.2351,0.2350,0.2401,0.1988,0.1267,0.2454,
00480 0.1988,0.1988,0.2454,0.1967,0.1988,0.2374,0.1942,0.2350,
00481 0.0791,0.1967,0.1942,0.0806,0.2385,0.2317,0.1936,0.2350,
00482 0.0806,0.2769,0.0725,0.2374,0.1967,0.1936,0.1967,0.2367,
00483 0.0806,0.1967,0.1967,0.2350,0.1936,0.1942,0.2351,0.1942,
00484 0.2350,0.1978,0.2367,0.1953,0.2769,0.2374,0.2367,0.1978,
00485 0.2374,0.1898,0.2769,0.2350,0.2351,0.1978,0.1942,0.1936,
00486 0.1978,0.1978,0.1988,0.1978,0.1898,0.1978,0.2401,0.1988,
00487 0.1988,0.1228,0.1967,0.2374,0.1936,0.1988,0.2489,0.2367,
00488 0.1953,0.1936,0.2350};
00489 for( i=286, _r = 0; i <= NFEII; i++ )
00490 {
00491 fe2ovr_la.fe2enr[i-1] = (float)_itmp11[_r++];
00492 }
00493 }
00494 { static double _itmp12[] = {4,4,10,2,2,4,12,12,12,6,6,8,8,
00495 8,10,10,6,10,4,6,8,6,10,6,6,10,6,10,6,6,6,6,6,6,4,6,6,8,
00496 10,8,6,6,6,6,6,12,6,12,10,10,6,10,4,8,6,4,6,10,8,12,4,10,
00497 2,8,4,12,6,10,6,8,4,6,8,8,12,12,6,10,12,4,10,8,8,6,8,6,4,
00498 10,6,6,6,4,6,12,8};
00499 for( i=1, _r = 0; i <= 95; i++ )
00500 {
00501 fe2ovr_la.fe2gs[i-1] = (float)_itmp12[_r++];
00502 }
00503 }
00504 { static double _itmp13[] = {6,10,12,10,4,10,10,12,12,8,8,10,
00505 6,8,8,4,6,10,10,4,6,10,2,12,6,6,6,6,6,10,12,12,10,6,6,10,
00506 12,8,10,14,6,10,10,8,6,10,4,12,6,10,4,4,6,10,6,10,6,4,4,
00507 2,4,6,6,2,4,8,4,4,8,4,6,12,8,10,10,4,10,12,6,10,8,12,12,
00508 8,8,8,12,6,12,6,8,8,4,8,4};
00509 for( i=96, _r = 0; i <= 190; i++ )
00510 {
00511 fe2ovr_la.fe2gs[i-1] = (float)_itmp13[_r++];
00512 }
00513 }
00514 { static double _itmp14[] = {4,8,10,6,6,2,6,4,6,10,4,8,10,8,
00515 14,14,8,10,8,10,4,4,4,12,8,8,10,6,10,8,10,10,4,8,8,6,10,
00516 8,6,4,4,10,10,4,6,2,10,4,6,10,8,4,10,10,10,6,14,2,4,4,6,
00517 2,12,4,10,4,4,4,10,8,10,6,12,8,10,2,12,12,6,8,8,8,14,8,4,
00518 8,4,4,10,2,6,4,8,4,4};
00519 for( i=191, _r = 0; i <= 285; i++ )
00520 {
00521 fe2ovr_la.fe2gs[i-1] = (float)_itmp14[_r++];
00522 }
00523 }
00524 { static double _itmp15[] = {4,8,6,6,12,10,4,6,8,12,12,6,10,
00525 4,14,10,4,10,4,2,2,4,4,2,10,4,6,4,4,4,10,4,2,12,12,14,4,
00526 2,10,8,6,10,14,10,8,2,10,10,4,14,4,10,4,4,8,8,12,10,6,8,
00527 8,6,6,10,4,10,8,4,14,8,8,4,8,6,8,10,4,4,6,10,6,14,4,8,8,
00528 12,14,4};
00529 for( i=286, _r = 0; i <= NFEII; i++ )
00530 {
00531 fe2ovr_la.fe2gs[i-1] = (float)_itmp15[_r++];
00532 }
00533 }
00534 MustInit = false;
00535 }
00536
00537 DEBUG_ENTRY( "blkdata0()" );
00538
00539 DEBUG_EXIT( "blkdata0()" );
00540 }
00541
00542
00543 void pfeii(FILE* io)
00544 {
00545 long int i;
00546 double hopc,
00547 rate;
00548
00549 DEBUG_ENTRY( "pfeii()" );
00550
00551
00552
00553 if( (dense.xIonDense[ipIRON][1] <= 0. || !FeII.lgLyaPumpOn) ||
00554 hydro.dstfe2lya <= 0. )
00555 {
00556 fprintf( io, " No Fe II in this zone\n" );
00557
00558 DEBUG_EXIT( "pfeii()" );
00559 return;
00560 }
00561
00562 for( i=0; i < NFEII; i++ )
00563 {
00564
00565 if( dense.xIonDense[ipHYDROGEN][1] > 0. )
00566 {
00567 hopc = 7.60e-8*iso.Pop2Ion[ipH_LIKE][ipHYDROGEN][ipH1s]*dense.xIonDense[ipHYDROGEN][1]/DoppVel.doppler[0];
00568 }
00569 else
00570 {
00571 hopc = 7.60e-8*dense.xIonDense[ipHYDROGEN][0]/DoppVel.doppler[0];
00572 }
00573
00574 rate = (fe2ovr_la.feopc[i]/(fe2ovr_la.feopc[i] + hopc))*(DoppVel.doppler[25]/
00575 DoppVel.doppler[0])*(1. - 1./(1. + 1.6*fe2ovr_la.Fe2TauLte[i]));
00576
00577
00578 fprintf( io, "%15.5e%10.2e\n", fe2ovr_la.fe2lam[i], rate/
00579 hydro.dstfe2lya );
00580 }
00581
00582 DEBUG_EXIT( "pfeii()" );
00583 return;
00584 }
00585