00001
00002
00003
00004 #include "cddefines.h"
00005 #include "taulines.h"
00006 #include "h2.h"
00007 #include "iso.h"
00008 #include "lines_service.h"
00009 #include "dense.h"
00010 #include "prt.h"
00011 #include "mole.h"
00012 #include "trace.h"
00013
00014
00015 void prtmet(void)
00016 {
00017 long int i,
00018 nelem ,
00019 ipHi ,
00020 ipLo ,
00021 ipISO;
00022
00023 DEBUG_ENTRY( "prtmet()" );
00024
00025
00026
00027 if( prt.lgPrtTau || (trace.lgTrace && trace.lgOptcBug) )
00028 {
00029 fprintf( ioQQQ, "\n\n Mean Line Optical Depths\n");
00030
00031
00032 prme(true, TauLines[0]);
00033
00034
00035 for( ipISO=ipH_LIKE; ipISO<NISO; ++ipISO )
00036 {
00037 for( nelem=ipISO; nelem < LIMELM; nelem++ )
00038 {
00039 if( dense.lgElmtOn[nelem] )
00040 {
00041
00042 for( ipLo=0; ipLo < iso_sp[ipISO][nelem].numLevels_local-1; ipLo++ )
00043 {
00044 for( ipHi=ipLo+1; ipHi < iso_sp[ipISO][nelem].numLevels_local; ipHi++ )
00045 {
00046 prme(false,iso_sp[ipISO][nelem].trans(ipHi,ipLo));
00047 }
00048 }
00049 }
00050 }
00051 }
00052
00053
00054 for( i=1; i <= nLevel1; i++ )
00055 {
00056 prme(false,TauLines[i]);
00057 }
00058
00059 for( i=0; i < nWindLine; i++ )
00060 {
00061 if( (*TauLine2[i].Hi()).IonStg() < (*TauLine2[i].Hi()).nelem()+1-NISO )
00062 {
00063 prme(false,TauLine2[i]);
00064 }
00065 }
00066
00067 for( i=0; i < nUTA; i++ )
00068 {
00069 prme(false,UTALines[i]);
00070 }
00071
00072
00073 for( diatom_iter diatom = diatoms.begin(); diatom != diatoms.end(); ++diatom )
00074 (*diatom)->H2_Prt_line_tau();
00075
00076 for( i=0; i < nHFLines; i++ )
00077 {
00078 prme(false,HFLines[i]);
00079 }
00080
00081
00082 for (int ipSpecies=0; ipSpecies < nSpecies; ++ipSpecies)
00083 {
00084 for( EmissionList::iterator em=dBaseTrans[ipSpecies].Emis().begin();
00085 em != dBaseTrans[ipSpecies].Emis().end(); ++em)
00086 {
00087 prme(false,(*em).Tran());
00088 }
00089 }
00090
00091 fprintf( ioQQQ, "\n");
00092 }
00093 return;
00094 }
00095
00096
00097 void prme(
00098 const bool lgReset,
00099 const TransitionProxy &t)
00100 {
00101 static long int n ;
00102
00103 DEBUG_ENTRY( "prme()" );
00104
00105 if( lgReset )
00106 n = 0;
00107
00108 if( t.ipCont() <= 0 )
00109 {
00110
00111 return;
00112 }
00113
00114
00115
00116
00117 if( t.Emis().TauIn()*SQRTPI > prt.PrtTauFnt || t.Emis().TauIn()*SQRTPI < -1e-5 )
00118 {
00119 fprintf( ioQQQ, " %10.10s",chLineLbl(t));
00120
00121 fprintf( ioQQQ, PrintEfmt("%9.2e", t.Emis().TauIn()*SQRTPI ));
00122
00123
00124 ++n;
00125 if(n == 6)
00126 {
00127 n = 0;
00128 fprintf( ioQQQ, " \n");
00129 }
00130 }
00131
00132 return;
00133 }