00001
00002
00003
00004 #include "cddefines.h"
00005 #include "physconst.h"
00006 #include "taulines.h"
00007 #include "hydrogenic.h"
00008 #include "elementnames.h"
00009 #include "phycon.h"
00010 #include "dense.h"
00011 #include "thermal.h"
00012 #include "cooling.h"
00013 #include "iso.h"
00014
00015
00016 #if defined(__HP_aCC)
00017 # pragma OPT_LEVEL 1
00018 #endif
00019
00020
00021 const bool lgPrintIonizCooling = false;
00022
00023 void iso_cool(
00024
00025 long int ipISO ,
00026
00027 long int nelem)
00028 {
00029 long int ipHi,
00030 ipbig,
00031 ipLo,
00032 n;
00033 double RecCoolExtra,
00034 biggest = 0.,
00035 dCdT_all,
00036 edenIonAbund,
00037 CollisIonizatCoolingTotal,
00038 dCollisIonizatCoolingTotalDT,
00039 HeatExcited,
00040 heat_max,
00041 CollisIonizatCooling,
00042 CollisIonizatCoolingDT,
00043 hlone,
00044 thin,
00045 ThinCoolingCaseB,
00046 ThinCoolingSum;
00047
00048 valarray<double> CollisIonizatCoolingArr,
00049 CollisIonizatCoolingDTArr,
00050 SavePhotoHeat,
00051 SaveInducCool,
00052 SaveRadRecCool;
00053
00054 long int nlo_heat_max , nhi_heat_max;
00055
00056
00057 char chLabel[NCOLNT_LAB_LEN+1];
00058
00059 DEBUG_ENTRY( "iso_cool()" );
00060
00061
00062 ASSERT( nelem >= ipISO );
00063 ASSERT( ipISO < NISO );
00064 ASSERT( nelem < LIMELM );
00065
00066
00067 ASSERT( iso.numLevels_local[ipISO][nelem] <= iso.numLevels_max[ipISO][nelem] );
00068
00069 if( dense.xIonDense[nelem][nelem-ipISO]<=0. ||
00070 !dense.lgElmtOn[nelem] )
00071 {
00072
00073 iso.coll_ion[ipISO][nelem] = 0.;
00074 iso.cLya_cool[ipISO][nelem] = 0.;
00075 iso.cLyrest_cool[ipISO][nelem] = 0.;
00076 iso.cBal_cool[ipISO][nelem] = 0.;
00077 iso.cRest_cool[ipISO][nelem] = 0.;
00078 iso.xLineTotCool[ipISO][nelem] = 0.;
00079 iso.RadRecCool[ipISO][nelem] = 0.;
00080 iso.FreeBnd_net_Cool_Rate[ipISO][nelem] = 0.;
00081 iso.dLTot[ipISO][nelem] = 0.;
00082 iso.RecomInducCool_Rate[ipISO][nelem] = 0.;
00083 return;
00084 }
00085
00086
00087
00088 if( lgPrintIonizCooling )
00089 {
00090 CollisIonizatCoolingArr.resize( iso.numLevels_local[ipISO][nelem] );
00091 CollisIonizatCoolingDTArr.resize( iso.numLevels_local[ipISO][nelem] );
00092 }
00093 SavePhotoHeat.resize( iso.numLevels_local[ipISO][nelem] );
00094 SaveInducCool.resize( iso.numLevels_local[ipISO][nelem] );
00095 SaveRadRecCool.resize( iso.numLevels_local[ipISO][nelem] );
00096
00097
00098
00099
00100
00101
00102
00103
00104 CollisIonizatCoolingTotal = 0.;
00105 dCollisIonizatCoolingTotalDT = 0.;
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115 for( n=0; n < iso.numLevels_local[ipISO][nelem]-1; ++n )
00116 {
00117
00118 CollisIonizatCooling =
00119 EN1RYD*iso.xIsoLevNIonRyd[ipISO][nelem][n]*iso.ColIoniz[ipISO][nelem][n]*dense.EdenHCorr*
00120 (StatesElemNEW[nelem][nelem-ipISO][n].Pop -iso.PopLTE[ipISO][nelem][n]*dense.eden*
00121 dense.xIonDense[nelem][nelem+1-ipISO]);
00122 CollisIonizatCoolingTotal += CollisIonizatCooling;
00123
00124
00125 CollisIonizatCoolingDT = CollisIonizatCooling*
00126 (iso.xIsoLevNIonRyd[ipISO][nelem][n]*TE1RYD/POW2(phycon.te)- thermal.halfte);
00127
00128
00129 dCollisIonizatCoolingTotalDT += CollisIonizatCoolingDT;
00130
00131 if( lgPrintIonizCooling )
00132 {
00133 CollisIonizatCoolingArr[n] = CollisIonizatCooling;
00134 CollisIonizatCoolingDTArr[n] = CollisIonizatCoolingDT;
00135 }
00136 }
00137
00138
00139
00140 iso.coll_ion[ipISO][nelem] = CollisIonizatCoolingTotal;
00141
00142
00143 thermal.dCooldT += dCollisIonizatCoolingTotalDT;
00144
00145
00146 sprintf(chLabel , "IScion%2s%2s" , elementnames.chElementSym[ipISO] ,
00147 elementnames.chElementSym[nelem] );
00148
00149 CoolAdd(chLabel,(realnum)nelem,MAX2(0.,iso.coll_ion[ipISO][nelem]));
00150
00151
00152
00153
00154
00155 thermal.heating[0][3] += MAX2(0.,-iso.coll_ion[ipISO][nelem]);
00156
00157
00158 if( lgPrintIonizCooling && nelem==1 && ipISO==1 )
00159 {
00160 fprintf(ioQQQ,"DEBUG coll ioniz cool contributors:");
00161 for( n=0; n < iso.numLevels_local[ipISO][nelem]; n++ )
00162 {
00163 if( CollisIonizatCoolingArr[n] / SDIV( CollisIonizatCoolingTotal ) > 0.1 )
00164 fprintf(ioQQQ," %2li %.1e",
00165 n,
00166 CollisIonizatCoolingArr[n]/ SDIV( CollisIonizatCoolingTotal ) );
00167 }
00168 fprintf(ioQQQ,"\n");
00169 fprintf(ioQQQ,"DEBUG coll ioniz derivcontributors:");
00170 for( n=0; n < iso.numLevels_local[ipISO][nelem]; n++ )
00171 {
00172 if( CollisIonizatCoolingDTArr[n] / SDIV( dCollisIonizatCoolingTotalDT ) > 0.1 )
00173 fprintf(ioQQQ," %2li %.1e",
00174 n,
00175 CollisIonizatCoolingDTArr[n]/ SDIV( dCollisIonizatCoolingTotalDT ) );
00176 }
00177 fprintf(ioQQQ,"\n");
00178 }
00179
00180
00181
00182
00183
00184
00185
00186
00187 edenIonAbund = dense.eden*dense.xIonDense[nelem][nelem+1-ipISO];
00188
00189
00190 iso.RadRecCool[ipISO][nelem] = 0.;
00191 ThinCoolingSum = 0.;
00192
00193 if( ipISO == ipH_LIKE )
00194 {
00195
00196 thin = HydroRecCool(
00197
00198 1 ,
00199
00200 nelem);
00201 }
00202 else
00203 {
00204
00205 thin = iso.RadRecomb[ipISO][nelem][0][ipRecRad]*
00206
00207
00208 HCoolRatio(
00209 phycon.te * POW2( (double)StatesElemNEW[nelem][nelem-ipISO][0].n / (double)(nelem+1-ipISO) ))*
00210
00211 phycon.te * BOLTZMANN;
00212 }
00213
00214 SaveRadRecCool[0] = iso.RadRecomb[ipISO][nelem][0][ipRecNetEsc] * thin;
00215
00216 iso.RadRecCool[ipISO][nelem] += SaveRadRecCool[0] * edenIonAbund;
00217
00218
00219 for( n=1; n < iso.numLevels_local[ipISO][nelem]; n++ )
00220 {
00221
00222 thin = iso.RadRecomb[ipISO][nelem][n][ipRecRad]*
00223
00224
00225 HCoolRatio(
00226 phycon.te * POW2( (double)StatesElemNEW[nelem][nelem-ipISO][n].n / (double)(nelem+1-ipISO) ))*
00227
00228 phycon.te * BOLTZMANN;
00229
00230
00231 SaveRadRecCool[n] = iso.RadRecomb[ipISO][nelem][n][ipRecNetEsc] * thin;
00232
00233 iso.RadRecCool[ipISO][nelem] += SaveRadRecCool[n] * edenIonAbund;
00234
00235
00236 ThinCoolingSum += thin;
00237 }
00238 {
00239
00240 enum {DEBUG_LOC=false};
00241 if( DEBUG_LOC )
00242 {
00243 if( nelem==ipISO )
00244 {
00245
00246 for( n=0; n < (iso.numLevels_local[ipISO][nelem] - 1); n++ )
00247 {
00248 fprintf(ioQQQ,"\t%.2f",SaveRadRecCool[n]/ThinCoolingSum);
00249 }
00250 fprintf(ioQQQ,"\n");
00251 }
00252 }
00253 }
00254
00255
00256
00257
00258
00259 if( ipISO == ipH_LIKE )
00260 {
00261
00262 if( nelem == 0 )
00263 {
00264
00265 ThinCoolingCaseB = (-25.859117 +
00266 0.16229407*phycon.telogn[0] +
00267 0.34912863*phycon.telogn[1] -
00268 0.10615964*phycon.telogn[2])/(1. +
00269 0.050866793*phycon.telogn[0] -
00270 0.014118924*phycon.telogn[1] +
00271 0.0044980897*phycon.telogn[2] +
00272 6.0969594e-5*phycon.telogn[3]);
00273 }
00274 else
00275 {
00276
00277 ThinCoolingCaseB = (-25.859117 +
00278 0.16229407*(phycon.telogn[0]-phycon.sqlogz[nelem-ipISO]) +
00279 0.34912863*POW2(phycon.telogn[0]-phycon.sqlogz[nelem-ipISO]) -
00280 0.10615964*powi( (phycon.telogn[0]-phycon.sqlogz[nelem-ipISO]),3) )/(1. +
00281 0.050866793*(phycon.telogn[0]-phycon.sqlogz[nelem-ipISO]) -
00282 0.014118924*POW2(phycon.telogn[0]-phycon.sqlogz[nelem-ipISO]) +
00283 0.0044980897*powi( (phycon.telogn[0]-phycon.sqlogz[nelem-ipISO]),3) +
00284 6.0969594e-5*powi( (phycon.telogn[0]-phycon.sqlogz[nelem-ipISO]),4) );
00285 }
00286
00287
00288 ThinCoolingCaseB = POW3(1.+nelem-ipISO)*pow(10.,ThinCoolingCaseB)/(phycon.te/POW2(1.+nelem-ipISO) );
00289
00290
00291 RecCoolExtra = ThinCoolingCaseB - ThinCoolingSum;
00292 }
00293 else
00294 {
00295 ThinCoolingCaseB = 0.;
00296 RecCoolExtra = 0.;
00297 }
00298
00299
00300
00301 RecCoolExtra = MAX2(0., RecCoolExtra );
00302
00303
00304 iso.RadRecCool[ipISO][nelem] += RecCoolExtra* edenIonAbund *iso.RadRecomb[ipISO][nelem][iso.numLevels_local[ipISO][nelem]-1][ipRecNetEsc];
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314 HeatExcited = 0.;
00315 ipbig = -1000;
00316 for( n=1; n < (iso.numLevels_local[ipISO][nelem] - 1); ++n )
00317 {
00318 ASSERT( iso.PhotoHeat[ipISO][nelem][n] >= 0. );
00319 ASSERT( StatesElemNEW[nelem][nelem-ipISO][n].Pop >= 0. );
00320
00321 SavePhotoHeat[n] = StatesElemNEW[nelem][nelem-ipISO][n].Pop*
00322 iso.PhotoHeat[ipISO][nelem][n];
00323 HeatExcited += SavePhotoHeat[n];
00324 if( SavePhotoHeat[n] > biggest )
00325 {
00326 biggest = SavePhotoHeat[n];
00327 ipbig = (int)n;
00328 }
00329 }
00330 {
00331
00332 enum {DEBUG_LOC=false};
00333 if( DEBUG_LOC && ipISO==0 && nelem==0 && nzone > 700)
00334 {
00335
00336 SavePhotoHeat[ipH1s] = StatesElemNEW[nelem][nelem-ipISO][ipH1s].Pop*
00337 iso.PhotoHeat[ipISO][nelem][ipH1s];
00338 fprintf(ioQQQ,"ipISO = %li nelem=%li ipbig=%li biggest=%g HeatExcited=%.2e ctot=%.2e\n",
00339 ipISO , nelem,
00340 ipbig ,
00341 biggest,
00342 HeatExcited ,
00343 thermal.ctot);
00344
00345 for(n=ipH1s; n< (iso.numLevels_local[ipISO][nelem] - 1); ++n )
00346 {
00347 fprintf(ioQQQ,"DEBUG phot heat%2li\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\n",
00348 n,
00349 SavePhotoHeat[n]/HeatExcited,
00350 dense.xIonDense[nelem][nelem+1-ipISO],
00351 StatesElemNEW[nelem][nelem-ipISO][n].Pop,
00352 iso.PhotoHeat[ipISO][nelem][n],
00353 iso.gamnc[ipISO][nelem][n]);
00354 }
00355 }
00356 }
00357
00358
00359
00360
00361 iso.FreeBnd_net_Cool_Rate[ipISO][nelem] = iso.RadRecCool[ipISO][nelem] - HeatExcited;
00362
00363
00364
00365
00366
00367
00368
00369 thermal.heating[0][1] += MAX2(0.,-iso.FreeBnd_net_Cool_Rate[ipISO][nelem]);
00370
00371
00372
00373 sprintf(chLabel , "ISrcol%2s%2s" , elementnames.chElementSym[ipISO] ,
00374 elementnames.chElementSym[nelem]);
00375 CoolAdd(chLabel, (realnum)nelem, MAX2(0.,iso.FreeBnd_net_Cool_Rate[ipISO][nelem]));
00376
00377
00378 thermal.dCooldT += 0.2*iso.FreeBnd_net_Cool_Rate[ipISO][nelem]*phycon.teinv;
00379
00380
00381
00382
00383
00384
00385
00386 iso.RecomInducCool_Rate[ipISO][nelem] = 0.;
00387
00388 for( n=0; n < (iso.numLevels_local[ipISO][nelem] - 1); ++n )
00389 {
00390
00391 SaveInducCool[n] = iso.RecomInducCool_Coef[ipISO][nelem][n]*iso.PopLTE[ipISO][nelem][n]*edenIonAbund;
00392 iso.RecomInducCool_Rate[ipISO][nelem] += SaveInducCool[n];
00393 thermal.dCooldT += SaveInducCool[n]*
00394 (iso.xIsoLevNIonRyd[ipISO][nelem][n]/phycon.te_ryd - 1.5)*phycon.teinv;
00395 }
00396
00397 {
00398
00399 enum {DEBUG_LOC=false};
00400 if( DEBUG_LOC && ipISO==0 && nelem==5 )
00401 {
00402 fprintf(ioQQQ," ipISO=%li nelem=%li ctot = %.2e\n",
00403 ipISO,
00404 nelem,
00405 thermal.ctot);
00406 fprintf(ioQQQ,"sum\t%.2e\t%.2e\t%.2e\n",
00407 HeatExcited,
00408 iso.RadRecCool[ipISO][nelem],
00409 iso.RecomInducCool_Rate[ipISO][nelem]);
00410 fprintf(ioQQQ,"sum\tp ht\tr cl\ti cl\n");
00411
00412
00413 for(n=0; n< (iso.numLevels_local[ipISO][nelem] - 1); ++n )
00414 {
00415 fprintf(ioQQQ,"%li\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e\t%.2e \n",
00416 n,
00417 SavePhotoHeat[n],
00418 SaveRadRecCool[n],
00419 SaveInducCool[n] ,
00420 iso.RecomInducCool_Coef[ipISO][nelem][n],
00421 iso.PopLTE[ipISO][nelem][n],
00422 iso.RecomInducRate[ipISO][nelem][n]);
00423 }
00424 fprintf(ioQQQ," \n");
00425 }
00426 }
00427
00428 sprintf(chLabel , "ISicol%2s%2s" , elementnames.chElementSym[ipISO] ,
00429 elementnames.chElementSym[nelem]);
00430
00431 CoolAdd(chLabel,(realnum)nelem,iso.RecomInducCool_Rate[ipISO][nelem]);
00432
00433
00434 iso.xLineTotCool[ipISO][nelem] = 0.;
00435 dCdT_all = 0.;
00436 heat_max = 0.;
00437 nlo_heat_max = -1;
00438 nhi_heat_max = -1;
00439
00440
00441
00442 for( ipLo=0; ipLo < iso.numLevels_local[ipISO][nelem]-2; ipLo++ )
00443 {
00444 for( ipHi=ipLo + 1; ipHi < iso.numLevels_local[ipISO][nelem]-1; ipHi++ )
00445 {
00446
00447 hlone =
00448 Transitions[ipISO][nelem][ipHi][ipLo].Coll.ColUL*
00449 (StatesElemNEW[nelem][nelem-ipISO][ipLo].Pop*
00450 iso.Boltzmann[ipISO][nelem][ipHi][ipLo]*
00451 StatesElemNEW[nelem][nelem-ipISO][ipHi].g/StatesElemNEW[nelem][nelem-ipISO][ipLo].g -
00452 StatesElemNEW[nelem][nelem-ipISO][ipHi].Pop)*dense.EdenHCorr*
00453 Transitions[ipISO][nelem][ipHi][ipLo].EnergyErg;
00454
00455 if( hlone > 0. )
00456 Transitions[ipISO][nelem][ipHi][ipLo].Coll.cool = hlone;
00457 else
00458 Transitions[ipISO][nelem][ipHi][ipLo].Coll.heat = -1.*hlone;
00459
00460 iso.xLineTotCool[ipISO][nelem] += hlone;
00461
00462
00463 if( hlone > 0. )
00464 {
00465
00466
00467
00468 dCdT_all += hlone*
00469 (Transitions[ipISO][nelem][ipHi][ipH1s].EnergyK*thermal.tsq1 - thermal.halfte);
00470 }
00471 else
00472 {
00473
00474
00475
00476 if( hlone < heat_max )
00477 {
00478 heat_max = hlone;
00479 nlo_heat_max = ipLo;
00480 nhi_heat_max = ipHi;
00481 }
00482 dCdT_all -= hlone*thermal.halfte;
00483 }
00484 }
00485 }
00486 {
00487
00488 enum {DEBUG_LOC=false};
00489 if( DEBUG_LOC )
00490 {
00491 if( nelem==ipISO )
00492 fprintf(ioQQQ,"%li %li %.2e\n", nlo_heat_max, nhi_heat_max, heat_max );
00493 }
00494 }
00495
00496
00497
00498 iso.cLya_cool[ipISO][nelem] = 0.;
00499
00500 iso.cLyrest_cool[ipISO][nelem] = 0.;
00501
00502 for( ipHi=1; ipHi < iso.numLevels_local[ipISO][nelem]; ipHi++ )
00503 {
00504 hlone = Transitions[ipISO][nelem][ipHi][ipH1s].Coll.ColUL*
00505 (StatesElemNEW[nelem][nelem-ipISO][0].Pop*iso.Boltzmann[ipISO][nelem][ipHi][0]*
00506 StatesElemNEW[nelem][nelem-ipISO][ipHi].g/StatesElemNEW[nelem][nelem-ipISO][0].g -
00507 StatesElemNEW[nelem][nelem-ipISO][ipHi].Pop)* dense.EdenHCorr*
00508 Transitions[ipISO][nelem][ipHi][0].EnergyErg;
00509
00510 if( ipHi == iso.nLyaLevel[ipISO] )
00511 {
00512 iso.cLya_cool[ipISO][nelem] = hlone;
00513
00514 }
00515 else
00516 {
00517
00518 iso.cLyrest_cool[ipISO][nelem] += hlone;
00519 }
00520 }
00521
00522
00523
00524 iso.cBal_cool[ipISO][nelem] = 0.;
00525 for( ipHi=3; ipHi < iso.numLevels_local[ipISO][nelem]; ipHi++ )
00526 {
00527
00528 ipLo = ipH2s;
00529 hlone =
00530 Transitions[ipISO][nelem][ipHi][ipLo].Coll.ColUL*(
00531 StatesElemNEW[nelem][nelem-ipISO][ipLo].Pop*
00532 iso.Boltzmann[ipISO][nelem][ipHi][ipLo]*
00533 StatesElemNEW[nelem][nelem-ipISO][ipHi].g/StatesElemNEW[nelem][nelem-ipISO][ipLo].g -
00534 StatesElemNEW[nelem][nelem-ipISO][ipHi].Pop)*dense.EdenHCorr*
00535 Transitions[ipISO][nelem][ipHi][ipLo].EnergyErg;
00536
00537 ipLo = ipH2p;
00538 hlone +=
00539 Transitions[ipISO][nelem][ipHi][ipLo].Coll.ColUL*(
00540 StatesElemNEW[nelem][nelem-ipISO][ipLo].Pop*
00541 iso.Boltzmann[ipISO][nelem][ipHi][ipLo]*
00542 StatesElemNEW[nelem][nelem-ipISO][ipHi].g/StatesElemNEW[nelem][nelem-ipISO][ipLo].g -
00543 StatesElemNEW[nelem][nelem-ipISO][ipHi].Pop)*dense.EdenHCorr*
00544 Transitions[ipISO][nelem][ipHi][ipLo].EnergyErg;
00545
00546
00547 iso.cBal_cool[ipISO][nelem] += hlone;
00548 }
00549
00550
00551
00552 iso.cRest_cool[ipISO][nelem] = 0.;
00553 for( ipLo=3; ipLo < iso.numLevels_local[ipISO][nelem]-1; ipLo++ )
00554 {
00555 for( ipHi=ipLo + 1; ipHi < iso.numLevels_local[ipISO][nelem]; ipHi++ )
00556 {
00557 hlone =
00558 Transitions[ipISO][nelem][ipHi][ipLo].Coll.ColUL*(
00559 StatesElemNEW[nelem][nelem-ipISO][ipLo].Pop*
00560 iso.Boltzmann[ipISO][nelem][ipHi][ipLo]*
00561 StatesElemNEW[nelem][nelem-ipISO][ipHi].g/StatesElemNEW[nelem][nelem-ipISO][ipLo].g -
00562 StatesElemNEW[nelem][nelem-ipISO][ipHi].Pop)*dense.EdenHCorr*
00563 Transitions[ipISO][nelem][ipHi][ipLo].EnergyErg;
00564
00565 iso.cRest_cool[ipISO][nelem] += hlone;
00566 }
00567 }
00568
00569
00570
00571
00572
00573 sprintf(chLabel , "ISclin%2s%2s" , elementnames.chElementSym[ipISO] ,
00574 elementnames.chElementSym[nelem]);
00575 if( iso.xLineTotCool[ipISO][nelem] > 0. )
00576 {
00577
00578 CoolAdd(chLabel,(realnum)nelem,iso.xLineTotCool[ipISO][nelem]);
00579 thermal.dCooldT += dCdT_all;
00580 iso.dLTot[ipISO][nelem] = 0.;
00581 }
00582 else
00583 {
00584
00585 thermal.heating[0][23] -= iso.xLineTotCool[ipISO][nelem];
00586 CoolAdd(chLabel,(realnum)nelem,0.);
00587 iso.dLTot[ipISO][nelem] = -dCdT_all;
00588 }
00589
00590 {
00591
00592 enum {DEBUG_LOC=false};
00593 if( DEBUG_LOC )
00594 {
00595 if( nelem == 0 )
00596 {
00597 fprintf(ioQQQ,"%.2e la %.2f restly %.2f barest %.2f hrest %.2f\n",
00598 iso.xLineTotCool[ipISO][nelem] ,
00599 iso.cLya_cool[ipISO][nelem]/iso.xLineTotCool[ipISO][nelem] ,
00600 iso.cLyrest_cool[ipISO][nelem]/iso.xLineTotCool[ipISO][nelem] ,
00601 iso.cBal_cool[ipISO][nelem]/iso.xLineTotCool[ipISO][nelem] ,
00602 iso.cRest_cool[ipISO][nelem]/iso.xLineTotCool[ipISO][nelem] );
00603 }
00604 }
00605 }
00606 {
00607
00608
00609 enum {DEBUG_LOC=false};
00610 enum {LTEPOP=true};
00611
00612 if( DEBUG_LOC && (nelem==1 || nelem==0) )
00613 {
00614
00615 if( LTEPOP )
00616 {
00617
00618 for(n=ipH1s; n<iso.numLevels_local[ipISO][nelem]-1; ++n )
00619 {
00620 fprintf(ioQQQ,"%li\t%li\t%g\t%g\t%g\t%g\tT=\t%g\t%g\t%g\t%g\n", nelem,n,
00621 iso.gamnc[ipISO][nelem][n] *iso.PopLTE[ipISO][nelem][n],
00622
00623
00624
00625 iso.RadRecomb[ipISO][nelem][n][ipRecRad]+
00626 iso.RecomInducRate[ipISO][nelem][n]*iso.PopLTE[ipISO][nelem][n] ,
00627
00628 iso.RecomInducRate[ipISO][nelem][n]*iso.PopLTE[ipISO][nelem][n] ,
00629
00630 iso.RadRecomb[ipISO][nelem][n][ipRecRad] ,
00631
00632 iso.PhotoHeat[ipISO][nelem][n]*iso.PopLTE[ipISO][nelem][n],
00633 iso.RecomInducCool_Coef[ipISO][nelem][n]*iso.PopLTE[ipISO][nelem][n]+SaveRadRecCool[n] ,
00634
00635 iso.RecomInducCool_Coef[ipISO][nelem][n]*iso.PopLTE[ipISO][nelem][n] ,
00636
00637 SaveRadRecCool[n] );
00638 }
00639 }
00640 else
00641 {
00642
00643 for(n=ipH1s; n<iso.numLevels_local[ipISO][nelem]-1; ++n )
00644 {
00645 fprintf(ioQQQ,"%li\t%li\t%g\t%g\t%g\t%g\tT=\t%g\t%g\t%g\t%g\n", nelem,n,
00646 iso.gamnc[ipISO][nelem][n]*StatesElemNEW[nelem][nelem-ipISO][n].Pop,
00647
00648 iso.RadRecomb[ipISO][nelem][n][ipRecRad]*edenIonAbund+
00649 iso.RecomInducRate[ipISO][nelem][n]*iso.PopLTE[ipISO][nelem][n] *edenIonAbund ,
00650 iso.RadRecomb[ipISO][nelem][n][ipRecRad]*edenIonAbund ,
00651 iso.RecomInducRate[ipISO][nelem][n]*iso.PopLTE[ipISO][nelem][n] *edenIonAbund ,
00652
00653 SavePhotoHeat[n],
00654 SaveInducCool[n]+SaveRadRecCool[n]*edenIonAbund ,
00655
00656 SaveInducCool[n] ,
00657
00658 SaveRadRecCool[n]*edenIonAbund );
00659 }
00660 }
00661 }
00662 }
00663 return;
00664 }
00665 #if defined(__HP_aCC)
00666 #pragma OPTIMIZE OFF
00667 #pragma OPTIMIZE ON
00668 #endif