/home66/gary/public_html/cloudy/c08_branch/source/molcol.cpp

Go to the documentation of this file.
00001 /* This file is part of Cloudy and is copyright (C)1978-2008 by Gary J. Ferland and
00002  * others.  For conditions of distribution and use see copyright notice in license.txt */
00003 /*molcol generate and print molecular column densities */
00004 #include "cddefines.h"
00005 #include "radius.h"
00006 #include "colden.h"
00007 #include "h2.h"
00008 #include "mole.h"
00009 #include "mole_co_atom.h"
00010 #include "atomfeii.h"
00011 #include "molcol.h"
00012 
00013 void molcol(
00014         const char *chLabel,
00015         /* file for printout */
00016         FILE *ioMEAN )
00017 {
00018         long int i;
00019 
00020         DEBUG_ENTRY( "molcol()" );
00021 
00022         if( strcmp(chLabel,"PRIN") == 0 )
00023         {
00024                 /* total hydrogen column density, all forms */
00025                 fprintf( ioMEAN, "\n                                                     Log10 Column density (cm^-2)\n");
00026                 fprintf( ioMEAN, "   Htot  :");
00027                 fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,colden.colden[ipCOL_HTOT])));
00028                 fprintf( ioMEAN, "   HII   :");
00029                 fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,colden.colden[ipCOL_Hp])));
00030                 fprintf( ioMEAN, "   HI    :");
00031                 fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,colden.colden[ipCOL_H0])));
00032                 fprintf( ioMEAN, "   H-    :");
00033                 fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,colden.colden[ipCOL_HMIN])));
00034                 fprintf( ioMEAN, "   H2g   :");
00035                 fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,colden.colden[ipCOL_H2g])));
00036                 fprintf( ioMEAN, "   H2*   :");
00037                 fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,colden.colden[ipCOL_H2s])));
00038                 fprintf( ioMEAN, "   H2+   :");
00039                 fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,colden.colden[ipCOL_H2p])));
00040                 fprintf( ioMEAN, "   HeH+  :");
00041                 fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,colden.colden[ipCOL_HeHp] )));
00042                 fprintf( ioMEAN, "\n");
00043                 fprintf( ioMEAN, "   H3+   :");
00044                 fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,colden.colden[ipCOL_H3p] )));
00045                 fprintf( ioMEAN, "\n");
00046         }
00047 
00048         /* call large H2 and CO column density routines which will do their jobs */
00049         FeII_Colden( chLabel);
00050         H2_Colden( chLabel);
00051         CO_Colden( chLabel);
00052 
00053         if( strcmp(chLabel,"ZERO") == 0 )
00054         {
00055                 /*  zero out the column densities */
00056                 for( i=0; i < mole.num_comole_calc; i++ )
00057                 {
00058                         COmole[i]->hevcol = 0.;
00059                 }
00060         }
00061 
00062         else if( strcmp(chLabel,"ADD ") == 0 )
00063         {
00064                 /*  add together column densities */
00065                 for( i=0; i < mole.num_comole_calc; i++ )
00066                 {
00067                         COmole[i]->hevcol += COmole[i]->hevmol*(realnum)radius.drad_x_fillfac;
00068                 }
00069         }
00070 
00071         else if( strcmp(chLabel,"PRIN") == 0 )
00072         {
00073                 /*  print the molecular column densities
00074                  * want to print all the molecules, not including the atoms/ions
00075                  * that are part of the co solver.  use first to print them all */
00076                 /*for( i=0; i < mole.num_comole_calc; i++ )*/
00077                 int j=0;
00078                 for( i=0; i < mole.num_comole_calc; i++ )
00079                 {
00080                         if(COmole[i]->n_nuclei <= 1)
00081                                 continue;                       
00082                         /* print 7 column densities per line */
00083                         if( j!=0 && j%8==0 )
00084                                 fprintf( ioMEAN, "\n" );
00085                         fprintf( ioMEAN, "   %-6.6s:", COmole[i]->label );
00086                         fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,COmole[i]->hevcol )));
00087                         j++;
00088                 }
00089                 fprintf( ioMEAN, "\n" );
00090         }
00091 
00092         else
00093         {
00094                 fprintf( ioMEAN, " molcol does not understand the label %4.4s\n", 
00095                   chLabel );
00096                 cdEXIT(EXIT_FAILURE);
00097         }
00098         return;
00099 
00100 }

Generated on Mon Feb 16 12:01:18 2009 for cloudy by  doxygen 1.4.7