00001
00002
00003
00004
00005 #include "cddefines.h"
00006 #include "physconst.h"
00007 #include "iso.h"
00008 #include "grainvar.h"
00009 #include "pressure.h"
00010 #include "wind.h"
00011 #include "conv.h"
00012 #include "trace.h"
00013 #include "magnetic.h"
00014 #include "dense.h"
00015 #include "called.h"
00016 #include "dynamics.h"
00017 #include "h2.h"
00018 #include "mole.h"
00019 #include "secondaries.h"
00020 #include "opacity.h"
00021 #include "colden.h"
00022 #include "geometry.h"
00023 #include "hmi.h"
00024 #include "rfield.h"
00025 #include "thermal.h"
00026 #include "radius.h"
00027 #include "phycon.h"
00028 #include "abund.h"
00029 #include "hydrogenic.h"
00030 #include "ionbal.h"
00031 #include "elementnames.h"
00032 #include "atomfeii.h"
00033 #include "prt.h"
00034 #include "taulines.h"
00035
00036 void PrtZone(void)
00037 {
00038 char chField7[8];
00039 char chLet,
00040 chQHMark;
00041 long int i,
00042 ishift,
00043 nelem ,
00044 mol;
00045 double hatmic;
00046
00047 DEBUG_ENTRY( "PrtZone()" );
00048
00049 if( thermal.lgUnstable )
00050 {
00051 chLet = 'u';
00052 }
00053 else
00054 {
00055 chLet = ' ';
00056 }
00057
00058
00059
00060
00061
00062
00063
00064 if( called.lgTalk || trace.nTrConvg )
00065 {
00066
00067 if( nzone <= 999 )
00068 {
00069 sprintf( chField7, "####%3ld", nzone );
00070 }
00071 else
00072 {
00073 sprintf( chField7, "###%4ld", nzone );
00074 }
00075
00076 fprintf(ioQQQ, " %7.7s %cTe:",chField7, chLet);
00077 PrintE93(ioQQQ,phycon.te);
00078 fprintf(ioQQQ," Hden:");
00079 PrintE93(ioQQQ,dense.gas_phase[ipHYDROGEN]);
00080 fprintf(ioQQQ," Ne:");
00081 PrintE93(ioQQQ,dense.eden);
00082 fprintf(ioQQQ," R:");
00083 PrintE93(ioQQQ,radius.Radius_mid_zone );
00084 fprintf(ioQQQ," R-R0:");
00085 PrintE93(ioQQQ,radius.depth_mid_zone);
00086 fprintf(ioQQQ," dR:");
00087 PrintE93(ioQQQ,radius.drad);
00088 fprintf(ioQQQ," NTR:%3ld Htot:",conv.nPres2Ioniz);
00089 PrintE93(ioQQQ,thermal.htot);
00090 fprintf(ioQQQ," T912:");
00091 fprintf(ioQQQ,PrintEfmt("%9.2e",opac.TauAbsGeo[0][iso_sp[ipH_LIKE][ipHYDROGEN].fb[ipH1s].ipIsoLevNIonCon-1] ));
00092 fprintf(ioQQQ,"###\n");
00093
00094 if( trace.nTrConvg )
00095 {
00096 fprintf( ioQQQ, " H:%.2e %.2e 2H2/H: %.2e He: %.2e %.2e %.2e\n",
00097 dense.xIonDense[ipHYDROGEN][0]/dense.gas_phase[ipHYDROGEN],
00098 dense.xIonDense[ipHYDROGEN][1]/dense.gas_phase[ipHYDROGEN],
00099 2.*hmi.H2_total/dense.gas_phase[ipHYDROGEN],
00100 dense.xIonDense[ipHELIUM][0]/SDIV(dense.gas_phase[ipHELIUM]),
00101 dense.xIonDense[ipHELIUM][1]/SDIV(dense.gas_phase[ipHELIUM]),
00102 dense.xIonDense[ipHELIUM][2]/SDIV(dense.gas_phase[ipHELIUM])
00103 );
00104 }
00105 }
00106
00107
00108 if( !called.lgTalk && !trace.nTrConvg )
00109 {
00110 return;
00111 }
00112
00113
00114
00115 if( !dense.lgDenFlucOn || abund.lgAbTaON )
00116 {
00117 fprintf( ioQQQ, " Abun:" );
00118 for( i=0; i < LIMELM; i++ )
00119 {
00120 fprintf( ioQQQ,PrintEfmt("%8.1e", dense.gas_phase[i] ));
00121 }
00122 fprintf( ioQQQ, "\n" );
00123 }
00124
00125
00126
00127 if( !wind.lgStatic() )
00128 {
00129 double fac;
00130
00131 if( wind.AccelTotalOutward == 0. )
00132 fac = 1.;
00133 else
00134 fac = wind.AccelTotalOutward;
00135 fprintf( ioQQQ,
00136 " Dynamics wind V:%.3e km/s a(grav):%.2e a(tot):%.2e Fr(cont):%6.3f "
00137 "Fr(line):%6.3f \n",
00138 wind.windv/1e5 ,
00139 -wind.AccelGravity,
00140 wind.AccelTotalOutward,
00141 wind.AccelCont/ fac,
00142 wind.AccelLine/fac );
00143
00144
00145 if( dynamics.lgAdvection )
00146 DynaPrtZone();
00147 }
00148
00149
00150 if( pressure.pbeta > .05 )
00151 PrtLinePres(ioQQQ);
00152
00153
00154
00155 hatmic = 0.;
00156 count_ptr<chem_atom> elHydrogen = unresolved_atom_list[ipHYDROGEN];
00157 for(mol = 0; mol < mole_global.num_calc; mol++) {
00158 if (mole_global.list[mol]->parentLabel.empty() && mole_global.list[mol]->nAtom.find(elHydrogen) !=
00159 mole_global.list[mol]->nAtom.end())
00160 hatmic += mole.species[mol].den*mole_global.list[mol]->nAtom[elHydrogen];
00161 }
00162 ASSERT(hatmic > 0.);
00163 hatmic = (dense.xIonDense[ipHYDROGEN][0] + dense.xIonDense[ipHYDROGEN][1])/hatmic;
00164
00165 fprintf( ioQQQ, " Hydrogen ");
00166 fprintf(ioQQQ,PrintEfmt("%9.2e",dense.xIonDense[ipHYDROGEN][0]/dense.gas_phase[ipHYDROGEN]));
00167 fprintf(ioQQQ,PrintEfmt("%9.2e",dense.xIonDense[ipHYDROGEN][1]/dense.gas_phase[ipHYDROGEN]));
00168 fprintf( ioQQQ, " H+o/Hden");
00169 fprintf(ioQQQ,PrintEfmt("%9.2e",hatmic ));
00170 fprintf(ioQQQ,PrintEfmt("%9.2e",findspecieslocal("H-")->den/dense.gas_phase[ipHYDROGEN] ));
00171 fprintf( ioQQQ, " H- H2");
00172
00173 fprintf(ioQQQ,PrintEfmt("%9.2e",hmi.H2_total/dense.gas_phase[ipHYDROGEN]));
00174 fprintf(ioQQQ,PrintEfmt("%9.2e",findspecieslocal("H2+")->den/dense.gas_phase[ipHYDROGEN]));
00175 fprintf( ioQQQ, " H2+ HeH+");
00176 fprintf(ioQQQ,PrintEfmt("%9.2e",findspecieslocal("HeH+")->den/dense.gas_phase[ipHYDROGEN]));
00177 fprintf( ioQQQ, " Ho+ ColD");
00178 fprintf(ioQQQ,PrintEfmt("%9.2e",colden.colden[ipCOL_H0]));
00179 fprintf(ioQQQ,PrintEfmt("%9.2e",colden.colden[ipCOL_Hp]));
00180 fprintf( ioQQQ, "\n");
00181
00182
00183 if( iso_sp[ipH_LIKE][ipHYDROGEN].lgPrtDepartCoef )
00184 {
00185 fprintf( ioQQQ, " Hydrogen " );
00186 fprintf(ioQQQ,PrintEfmt("%9.2e", iso_sp[ipH_LIKE][ipHYDROGEN].fb[ipH1s].DepartCoef));
00187 fprintf(ioQQQ,PrintEfmt("%9.2e", 1.));
00188 fprintf( ioQQQ, " H+o/Hden");
00189 fprintf(ioQQQ,PrintEfmt("%9.2e", (dense.xIonDense[ipHYDROGEN][0] + dense.xIonDense[ipHYDROGEN][1])/dense.gas_phase[ipHYDROGEN]));
00190 fprintf(ioQQQ,PrintEfmt("%9.2e", hmi.hmidep));
00191 fprintf( ioQQQ, " H- H2");
00192 fprintf(ioQQQ,PrintEfmt("%9.2e", hmi.h2dep));
00193 fprintf( ioQQQ, " H2+");
00194 fprintf(ioQQQ,PrintEfmt("%9.2e", hmi.h2pdep));
00195 fprintf( ioQQQ, " H3+");
00196 fprintf(ioQQQ,PrintEfmt("%9.2e",hmi.h3pdep));
00197 fprintf( ioQQQ, "\n" );
00198 }
00199
00200 fixit();
00201
00202 for( diatom_iter diatom = diatoms.begin(); diatom != diatoms.end(); ++diatom )
00203 {
00204 if( 0 )
00205 (*diatom)->H2_PrtDepartCoef();
00206 }
00207
00208 if( prt.lgPrintHeating )
00209 {
00210 fprintf( ioQQQ, " ");
00211 fprintf(ioQQQ,PrintEfmt("%9.2e", thermal.heating[0][0]/thermal.htot));
00212 fprintf( ioQQQ," ");
00213 fprintf(ioQQQ,PrintEfmt("%9.2e", thermal.heating[0][15]/thermal.htot));
00214 fprintf( ioQQQ," ");
00215 fprintf(ioQQQ,PrintEfmt("%9.2e", thermal.heating[0][16]/thermal.htot));
00216 fprintf( ioQQQ,"\n");
00217 }
00218
00219
00220
00221 double TconTot = pow((rfield.EnergyIncidCont+rfield.EnergyDiffCont)/SPEEDLIGHT/7.56464e-15,0.25);
00222 double Tincid = pow(rfield.EnergyIncidCont/SPEEDLIGHT/7.56464e-15,0.25);
00223 double Tdiff = pow(rfield.EnergyDiffCont/SPEEDLIGHT/7.56464e-15,0.25);
00224
00225
00226 double Pcon_nT = (Tincid + Tdiff) / SPEEDLIGHT;
00227 Pcon_nT /= BOLTZMANN;
00228
00229 if( prt.lgPrintHeating )
00230 {
00231 fprintf( ioQQQ, " ");
00232 fprintf(ioQQQ,PrintEfmt("%9.2e", thermal.heating[0][1]/thermal.htot ));
00233 fprintf( ioQQQ, " ");
00234 fprintf(ioQQQ,PrintEfmt("%9.2e", 0. ));
00235 fprintf( ioQQQ, " BoundCom");
00236 fprintf(ioQQQ,PrintEfmt("%9.2e", ionbal.CompRecoilHeatLocal/ thermal.htot));
00237 fprintf( ioQQQ, " Extra:");
00238 fprintf(ioQQQ,PrintEfmt("%9.2e",thermal.heating[0][20]/thermal.htot));
00239 fprintf( ioQQQ, " Pairs:");
00240 fprintf(ioQQQ,PrintEfmt("%9.2e", thermal.heating[0][21]/ thermal.htot ));
00241 fprintf( ioQQQ," H-lines\n");
00242 }
00243
00244
00245 if( dense.lgElmtOn[ipHELIUM] )
00246 {
00247 fprintf( ioQQQ, " Helium " );
00248 for( i=0; i < 3; i++ )
00249 {
00250 fprintf(ioQQQ,PrintEfmt("%9.2e", dense.xIonDense[ipHELIUM][i]/dense.gas_phase[ipHELIUM]) );
00251 }
00252
00253 fprintf( ioQQQ, " HeI 2s3S");
00254 fprintf(ioQQQ,PrintEfmt("%9.2e",
00255 iso_sp[ipHE_LIKE][ipHELIUM].st[ipHe2s3S].Pop()/dense.gas_phase[ipHELIUM] ));
00256 fprintf( ioQQQ, " Comp H,C");
00257 fprintf(ioQQQ,PrintEfmt("%9.2e", rfield.cmheat ));
00258 fprintf(ioQQQ,PrintEfmt("%9.2e", rfield.cmcool*phycon.te));
00259 fprintf( ioQQQ , " Fill Fac");
00260 fprintf(ioQQQ,PrintEfmt("%9.2e", geometry.FillFac));
00261 fprintf( ioQQQ , " Gam1/tot");
00262 fprintf(ioQQQ,PrintEfmt("%9.2e", hydro.H_ion_frac_photo));
00263 fprintf( ioQQQ, "\n");
00264
00265
00266 if( iso_sp[ipH_LIKE][ipHELIUM].lgPrtDepartCoef )
00267 {
00268 fprintf( ioQQQ, " Helium " );
00269 fprintf(ioQQQ,PrintEfmt("%9.2e", iso_sp[ipHE_LIKE][ipHELIUM].fb[0].DepartCoef));
00270 fprintf(ioQQQ,PrintEfmt("%9.2e", iso_sp[ipH_LIKE][ipHELIUM].fb[ipH1s].DepartCoef));
00271 fprintf(ioQQQ,PrintEfmt("%9.2e", 1.));
00272
00273 fprintf( ioQQQ, " Comp H,C");
00274 fprintf(ioQQQ,PrintEfmt("%9.2e", rfield.cmheat ));
00275 fprintf(ioQQQ,PrintEfmt("%9.2e", rfield.cmcool*phycon.te ));
00276 fprintf( ioQQQ , " Fill Fac");
00277 fprintf(ioQQQ,PrintEfmt("%9.2e", geometry.FillFac ));
00278 fprintf( ioQQQ , " Gam1/tot");
00279 fprintf(ioQQQ,PrintEfmt("%9.2e", hydro.H_ion_frac_photo));
00280 fprintf( ioQQQ, "\n");
00281 }
00282
00283
00284
00285
00286 if( prt.lgPrintHeating )
00287 {
00288
00289
00290
00291
00292
00293 fprintf( ioQQQ, " ");
00294 fprintf(ioQQQ,PrintEfmt("%9.2e",thermal.heating[1][0]/thermal.htot));
00295 fprintf(ioQQQ,PrintEfmt("%9.2e",thermal.heating[1][1]/thermal.htot));
00296 fprintf( ioQQQ, " Lines:");
00297 fprintf(ioQQQ,PrintEfmt("%9.2e",thermal.heating[0][22]/thermal.htot));
00298 fprintf(ioQQQ,PrintEfmt("%9.2e",thermal.heating[1][2]/thermal.htot));
00299 fprintf( ioQQQ, " Compton:");
00300 fprintf(ioQQQ,PrintEfmt("%9.2e",thermal.heating[0][19]/thermal.htot));
00301 fprintf( ioQQQ, " FFHeatig");
00302 fprintf(ioQQQ,PrintEfmt("%9.2e",thermal.heating[0][11]/thermal.htot));
00303 fprintf( ioQQQ, "\n");
00304 }
00305
00306 if( dense.lgElmtOn[ipHELIUM] )
00307 {
00308
00309 double fac = 1./dense.gas_phase[ipHELIUM];
00310 fprintf( ioQQQ, " He singlet n " );
00311 fprintf(ioQQQ,PrintEfmt("%9.2e", iso_sp[ipHE_LIKE][ipHELIUM].st[ipHe1s1S].Pop()*fac ));
00312
00313 fprintf(ioQQQ,PrintEfmt("%9.2e", iso_sp[ipHE_LIKE][ipHELIUM].st[ipHe2s1S].Pop()*fac ));
00314 fprintf(ioQQQ,PrintEfmt("%9.2e", iso_sp[ipHE_LIKE][ipHELIUM].st[ipHe2p1P].Pop()*fac ));
00315
00316 fprintf(ioQQQ,PrintEfmt("%9.2e", iso_sp[ipHE_LIKE][ipHELIUM].st[ipHe3s1S].Pop()*fac ));
00317 fprintf(ioQQQ,PrintEfmt("%9.2e", iso_sp[ipHE_LIKE][ipHELIUM].st[ipHe3p1P].Pop()*fac ));
00318 fprintf(ioQQQ,PrintEfmt("%9.2e", iso_sp[ipHE_LIKE][ipHELIUM].st[ipHe3d1D].Pop()*fac ));
00319
00320 fprintf( ioQQQ, " He tripl" );
00321
00322 fprintf(ioQQQ,PrintEfmt("%9.2e", iso_sp[ipHE_LIKE][ipHELIUM].st[ipHe2s3S].Pop()*fac ));
00323 fprintf(ioQQQ,PrintEfmt("%9.2e",
00324 iso_sp[ipHE_LIKE][ipHELIUM].st[ipHe2p3P0].Pop()*fac+
00325 iso_sp[ipHE_LIKE][ipHELIUM].st[ipHe2p3P1].Pop()*fac+
00326 iso_sp[ipHE_LIKE][ipHELIUM].st[ipHe2p3P2].Pop()*fac ));
00327
00328 fprintf(ioQQQ,PrintEfmt("%9.2e", iso_sp[ipHE_LIKE][ipHELIUM].st[ipHe3s3S].Pop()*fac ));
00329 fprintf(ioQQQ,PrintEfmt("%9.2e", iso_sp[ipHE_LIKE][ipHELIUM].st[ipHe3p3P].Pop()*fac ));
00330 fprintf(ioQQQ,PrintEfmt("%9.2e", iso_sp[ipHE_LIKE][ipHELIUM].st[ipHe3d3D].Pop()*fac ));
00331 fprintf( ioQQQ, "\n" );
00332 }
00333 }
00334
00335
00336
00337 for( long ipISO = ipH_LIKE; ipISO < NISO; ipISO++ )
00338 {
00339 for( nelem=ipISO; nelem<LIMELM; ++nelem )
00340 {
00341 if( dense.lgElmtOn[nelem] )
00342 {
00343 if( iso_sp[ipISO][nelem].lgPrtLevelPops )
00344 {
00345 iso_prt_pops(ipISO, nelem, false);
00346 }
00347 if( iso_sp[ipISO][nelem].lgPrtDepartCoef )
00348 {
00349
00350
00351 iso_prt_pops(ipISO, nelem, true);
00352 }
00353 }
00354 }
00355 }
00356
00357
00358
00359 fprintf( ioQQQ, " Pressure NgasTgas");
00360 fprintf(ioQQQ,PrintEfmt("%9.2e", pressure.PresGasCurr/BOLTZMANN));
00361 fprintf( ioQQQ, " P(total)");
00362 fprintf(ioQQQ,PrintEfmt("%9.2e", pressure.PresTotlCurr));
00363 fprintf( ioQQQ, " P( gas )");
00364 fprintf(ioQQQ,PrintEfmt("%9.2e", pressure.PresGasCurr));
00365 fprintf( ioQQQ, " P(Radtn)");
00366 fprintf(ioQQQ,PrintEfmt("%9.2e", pressure.pres_radiation_lines_curr));
00367 fprintf( ioQQQ, " Rad accl");
00368 fprintf(ioQQQ,PrintEfmt("%9.2e", wind.AccelTotalOutward));
00369 fprintf( ioQQQ, " ForceMul");
00370 fprintf(ioQQQ,PrintEfmt("%9.2e", wind.fmul));
00371 fprintf( ioQQQ, "\n" );
00372
00373 fprintf( ioQQQ , " Texc(La) ");
00374 fprintf(ioQQQ,PrintEfmt("%9.2e", hydro.TexcLya ));
00375
00376 fprintf( ioQQQ , " T(I con)");
00377 fprintf(ioQQQ,PrintEfmt("%9.2e", Tincid ));
00378 fprintf( ioQQQ , " T(D con)");
00379 fprintf(ioQQQ,PrintEfmt("%9.2e", Tdiff ));
00380 fprintf( ioQQQ , " T(U tot)");
00381 fprintf(ioQQQ,PrintEfmt("%9.2e", TconTot ));
00382
00383 fprintf( ioQQQ , " nT (c+d)");
00384 fprintf(ioQQQ,PrintEfmt("%9.2e", Pcon_nT ));
00385
00386 fprintf( ioQQQ , " Prad/Gas");
00387 fprintf(ioQQQ,PrintEfmt("%9.2e", pressure.pbeta ));
00388
00389 fprintf( ioQQQ , " Pmag/Gas");
00390 fprintf(ioQQQ,PrintEfmt("%9.2e", magnetic.pressure / pressure.PresGasCurr) );
00391 fprintf( ioQQQ, "\n" );
00392
00393 if( gv.lgGrainPhysicsOn )
00394 {
00395 for( size_t nd=0; nd < gv.bin.size(); nd++ )
00396 {
00397
00398
00399
00400 chQHMark = (char)(( gv.bin[nd]->lgQHeat && gv.bin[nd]->lgUseQHeat ) ? '*' : ' ');
00401 fprintf( ioQQQ, "%-12.12s%c DustTemp",gv.bin[nd]->chDstLab, chQHMark);
00402 fprintf(ioQQQ,PrintEfmt("%9.2e", gv.bin[nd]->tedust));
00403 fprintf( ioQQQ, " Pot Volt");
00404 fprintf(ioQQQ,PrintEfmt("%9.2e", gv.bin[nd]->dstpot*EVRYD));
00405 fprintf( ioQQQ, " Chrg (e)");
00406 fprintf(ioQQQ,PrintEfmt("%9.2e", gv.bin[nd]->AveDustZ));
00407 fprintf( ioQQQ, " drf cm/s");
00408 fprintf(ioQQQ,PrintEfmt("%9.2e", gv.bin[nd]->DustDftVel));
00409 fprintf( ioQQQ, " Heating:");
00410 fprintf(ioQQQ,PrintEfmt("%9.2e", gv.bin[nd]->GasHeatPhotoEl));
00411 fprintf( ioQQQ, " Frac tot");
00412 fprintf(ioQQQ,PrintEfmt("%9.2e", gv.bin[nd]->GasHeatPhotoEl/thermal.htot));
00413 fprintf( ioQQQ, "\n" );
00414 }
00415 }
00416
00417
00418
00419 if( findspecieslocal("CO")->den > 0. )
00420 {
00421 fprintf( ioQQQ, " Molecules CH/Ctot:");
00422 fprintf(ioQQQ,PrintEfmt("%9.2e", findspecieslocal("CH")->den/dense.gas_phase[ipCARBON]));
00423 fprintf( ioQQQ, " CH+/Ctot");
00424 fprintf(ioQQQ,PrintEfmt("%9.2e", findspecieslocal("CH+")->den/dense.gas_phase[ipCARBON]));
00425 fprintf( ioQQQ, " CO/Ctot:");
00426 fprintf(ioQQQ,PrintEfmt("%9.2e", findspecieslocal("CO")->den/dense.gas_phase[ipCARBON]));
00427 fprintf( ioQQQ, " CO+/Ctot");
00428 fprintf(ioQQQ,PrintEfmt("%9.2e", findspecieslocal("CO+")->den/dense.gas_phase[ipCARBON]));
00429 fprintf( ioQQQ, " H2O/Otot");
00430 fprintf(ioQQQ,PrintEfmt("%9.2e", findspecieslocal("H2O")->den/dense.gas_phase[ipOXYGEN]));
00431 fprintf( ioQQQ, " OH/Ototl");
00432 fprintf(ioQQQ,PrintEfmt("%9.2e", findspecieslocal("OH")->den/dense.gas_phase[ipOXYGEN]));
00433 fprintf( ioQQQ, "\n");
00434 }
00435
00436
00437 for( diatom_iter diatom = diatoms.begin(); diatom != diatoms.end(); ++diatom )
00438 (*diatom)->H2_Prt_Zone();
00439
00440
00441 if( dense.lgElmtOn[ipLITHIUM] || dense.lgElmtOn[ipBERYLLIUM] ||
00442 (secondaries.csupra[ipHYDROGEN][0]>0.) )
00443 {
00444 fprintf( ioQQQ, " Lithium " );
00445 for( i=0; i < 4; i++ )
00446 {
00447 fprintf(ioQQQ,PrintEfmt("%9.2e", dense.xIonDense[ipLITHIUM][i]/MAX2(1e-35,dense.gas_phase[ipLITHIUM]) ));
00448 }
00449 fprintf( ioQQQ, " Berylliu" );
00450 for( i=0; i < 5; i++ )
00451 {
00452 fprintf(ioQQQ,PrintEfmt("%9.2e", dense.xIonDense[ipBERYLLIUM][i]/MAX2(1e-35,dense.gas_phase[ipBERYLLIUM])) );
00453 }
00454
00455
00456 fprintf( ioQQQ, " sec ion:" );
00457 fprintf(ioQQQ,PrintEfmt("%9.2e", secondaries.csupra[ipHYDROGEN][0]) );
00458 fprintf( ioQQQ, "\n" );
00459
00460
00461 if( prt.lgPrintHeating )
00462 {
00463 fprintf( ioQQQ, " " );
00464 for( i=0; i < 3; i++ )
00465 {
00466 fprintf(ioQQQ,PrintEfmt("%9.2e", thermal.heating[ipLITHIUM][i]/ thermal.htot) );
00467 }
00468 fprintf( ioQQQ, " " );
00469
00470 for( i=0; i < 4; i++ )
00471 {
00472 fprintf(ioQQQ,PrintEfmt("%9.2e", thermal.heating[ipBERYLLIUM][i]/thermal.htot ));
00473 }
00474 fprintf( ioQQQ, "\n" );
00475 }
00476 }
00477
00478
00479 if( dense.lgElmtOn[ipBORON] )
00480 {
00481 fprintf( ioQQQ, " Boron " );
00482 for( i=0; i < 6; i++ )
00483 {
00484 fprintf(ioQQQ,PrintEfmt("%9.2e", dense.xIonDense[ipBORON][i]/MAX2(1e-35,dense.gas_phase[ipBORON]) ));
00485 }
00486 fprintf( ioQQQ, "\n" );
00487
00488
00489 if( prt.lgPrintHeating )
00490 {
00491 fprintf( ioQQQ, " " );
00492 for( i=0; i < 5; i++ )
00493 {
00494 fprintf(ioQQQ,PrintEfmt("%9.2e", thermal.heating[ipBORON][i]/thermal.htot ));
00495 }
00496 fprintf( ioQQQ, "\n" );
00497 }
00498 }
00499
00500
00501 fprintf( ioQQQ, " Carbon " );
00502 for( i=0; i < 7; i++ )
00503 {
00504 fprintf(ioQQQ,PrintEfmt("%9.2e", dense.xIonDense[ipCARBON][i]/SDIV(dense.gas_phase[ipCARBON])) );
00505 }
00506
00507 fprintf( ioQQQ, " H2O+/O " );
00508 fprintf(ioQQQ,PrintEfmt("%9.2e", findspecieslocal("H2O+")->den/MAX2(1e-35,dense.gas_phase[ipOXYGEN]) ));
00509 fprintf( ioQQQ, " OH+/Otot" );
00510 fprintf(ioQQQ,PrintEfmt("%9.2e", findspecieslocal("OH+")->den/ MAX2(1e-35,dense.gas_phase[ipOXYGEN]) ));
00511
00512 fprintf( ioQQQ, " Hex(tot)" );
00513 fprintf(ioQQQ,PrintEfmt("%9.2e", thermal.heating[0][20] ));
00514 fprintf( ioQQQ, "\n" );
00515
00516
00517 if( prt.lgPrintHeating )
00518 {
00519 fprintf( ioQQQ, " " );
00520 for( i=0; i < ipCARBON+1; i++ )
00521 {
00522 fprintf(ioQQQ,PrintEfmt("%9.2e", thermal.heating[ipCARBON][i]/ thermal.htot) );
00523 }
00524 fprintf( ioQQQ, "\n" );
00525 }
00526
00527
00528 fprintf( ioQQQ, " Nitrogen " );
00529 for( i=1; i <= 8; i++ )
00530 {
00531 fprintf(ioQQQ,PrintEfmt("%9.2e",dense.xIonDense[ipNITROGEN][i-1]/ SDIV(dense.gas_phase[ipNITROGEN]) ));
00532 }
00533 fprintf( ioQQQ, " O2/Ototl" );
00534 fprintf(ioQQQ,PrintEfmt("%9.2e", findspecieslocal("O2")->den/MAX2(1e-35,dense.gas_phase[ipOXYGEN])));
00535 fprintf( ioQQQ, " O2+/Otot" );
00536 fprintf(ioQQQ,PrintEfmt("%9.2e", findspecieslocal("O2+")->den/ MAX2(1e-35,dense.gas_phase[ipOXYGEN]) ));
00537 fprintf( ioQQQ, "\n" );
00538
00539
00540 if( prt.lgPrintHeating )
00541 {
00542 fprintf( ioQQQ, " " );
00543 for( i=0; i < ipNITROGEN+1; i++ )
00544 {
00545 fprintf(ioQQQ,PrintEfmt("%9.2e", thermal.heating[ipNITROGEN][i]/ thermal.htot ));
00546 }
00547 fprintf( ioQQQ, "\n" );
00548 }
00549
00550 # if 0
00551
00552 fprintf( ioQQQ, " Oxygen " );
00553 for( i=1; i <= 9; i++ )
00554 {
00555 fprintf(ioQQQ,PrintEfmt("%9.2e",dense.xIonDense[ipOXYGEN][i-1]/ SDIV(dense.gas_phase[ipOXYGEN]) ));
00556 }
00557 fprintf( ioQQQ, "\n" );
00558
00559
00560 if( prt.lgPrintHeating )
00561 {
00562 fprintf( ioQQQ, " " );
00563 for( i=0; i < ipOXYGEN+1; i++ )
00564 {
00565 fprintf(ioQQQ,PrintEfmt("%9.2e", thermal.heating[ipOXYGEN][i]/ thermal.htot ));
00566 }
00567 fprintf( ioQQQ, "\n" );
00568 }
00569 # endif
00570
00571
00572
00573 for( nelem=ipOXYGEN; nelem < ipALUMINIUM; ++nelem )
00574 {
00575 if( dense.lgElmtOn[nelem] )
00576 {
00577
00578 fprintf( ioQQQ, " %10.10s ", elementnames.chElementName[nelem]);
00579
00580 for( i=0; i < nelem+2; i++ )
00581 {
00582 fprintf(ioQQQ,PrintEfmt("%9.2e", dense.xIonDense[nelem][i]/dense.gas_phase[nelem] ));
00583 }
00584 fprintf( ioQQQ, "\n" );
00585
00586
00587 if( prt.lgPrintHeating )
00588 {
00589 fprintf( ioQQQ, " " );
00590 for( i=0; i < nelem+1; i++ )
00591 {
00592 fprintf(ioQQQ,PrintEfmt("%9.2e", thermal.heating[nelem][i]/thermal.htot ));
00593 }
00594 fprintf( ioQQQ, "\n" );
00595 }
00596 }
00597 }
00598
00599
00600 for( nelem=ipALUMINIUM; nelem < LIMELM; ++nelem )
00601 {
00602 if( dense.lgElmtOn[nelem] )
00603 {
00604
00605
00606 enum {LINE=13};
00607
00608 ishift = MAX2(0,dense.IonHigh[nelem]-LINE+1);
00609
00610
00611 fprintf( ioQQQ, " %10.10s%2ld ", elementnames.chElementName[nelem],ishift );
00612
00613 for( i=0; i < LINE; i++ )
00614 {
00615 fprintf(ioQQQ,PrintEfmt("%9.2e", dense.xIonDense[nelem][i+ishift]/dense.gas_phase[nelem]) );
00616 }
00617 fprintf( ioQQQ, "\n" );
00618
00619
00620 if( prt.lgPrintHeating )
00621 {
00622 fprintf( ioQQQ, " " );
00623 for( i=0; i < LINE; i++ )
00624 {
00625 fprintf(ioQQQ,
00626 PrintEfmt("%9.2e", thermal.heating[nelem][i+ishift]/thermal.htot ));
00627 }
00628 fprintf( ioQQQ, "\n" );
00629 }
00630 }
00631 }
00632
00633
00634 FeIIPrint();
00635 return;
00636 }
00637
00638