cloudy  trunk
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
molcol.cpp
Go to the documentation of this file.
1 /* This file is part of Cloudy and is copyright (C)1978-2008 by Gary J. Ferland and
2  * others. For conditions of distribution and use see copyright notice in license.txt */
3 /*molcol generate and print molecular column densities */
4 #include "cddefines.h"
5 #include "radius.h"
6 #include "colden.h"
7 #include "h2.h"
8 #include "mole.h"
9 #include "mole_co_atom.h"
10 #include "atomfeii.h"
11 #include "molcol.h"
12 
13 void molcol(
14  const char *chLabel,
15  /* file for printout */
16  FILE *ioMEAN )
17 {
18  long int i;
19 
20  DEBUG_ENTRY( "molcol()" );
21 
22  if( strcmp(chLabel,"PRIN") == 0 )
23  {
24  /* total hydrogen column density, all forms */
25  fprintf( ioMEAN, "\n Log10 Column density (cm^-2)\n");
26  fprintf( ioMEAN, " Htot :");
27  fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,colden.colden[ipCOL_HTOT])));
28  fprintf( ioMEAN, " HII :");
29  fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,colden.colden[ipCOL_Hp])));
30  fprintf( ioMEAN, " HI :");
31  fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,colden.colden[ipCOL_H0])));
32  fprintf( ioMEAN, " H- :");
33  fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,colden.colden[ipCOL_HMIN])));
34  fprintf( ioMEAN, " H2g :");
35  fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,colden.colden[ipCOL_H2g])));
36  fprintf( ioMEAN, " H2* :");
37  fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,colden.colden[ipCOL_H2s])));
38  fprintf( ioMEAN, " H2+ :");
39  fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,colden.colden[ipCOL_H2p])));
40  fprintf( ioMEAN, " HeH+ :");
41  fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,colden.colden[ipCOL_HeHp] )));
42  fprintf( ioMEAN, "\n");
43  fprintf( ioMEAN, " H3+ :");
44  fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,colden.colden[ipCOL_H3p] )));
45  fprintf( ioMEAN, "\n");
46  }
47 
48  /* call large H2 and CO column density routines which will do their jobs */
49  FeII_Colden( chLabel);
50  H2_Colden( chLabel);
51  CO_Colden( chLabel);
52 
53  if( strcmp(chLabel,"ZERO") == 0 )
54  {
55  /* zero out the column densities */
56  for( i=0; i < mole.num_comole_calc; i++ )
57  {
58  COmole[i]->hevcol = 0.;
59  }
60  }
61 
62  else if( strcmp(chLabel,"ADD ") == 0 )
63  {
64  /* add together column densities */
65  for( i=0; i < mole.num_comole_calc; i++ )
66  {
68  }
69  }
70 
71  else if( strcmp(chLabel,"PRIN") == 0 )
72  {
73  /* print the molecular column densities
74  * want to print all the molecules, not including the atoms/ions
75  * that are part of the co solver. use first to print them all */
76  /*for( i=0; i < mole.num_comole_calc; i++ )*/
77  int j=0;
78  for( i=0; i < mole.num_comole_calc; i++ )
79  {
80  if(COmole[i]->n_nuclei <= 1)
81  continue;
82  /* print 7 column densities per line */
83  if( j!=0 && j%8==0 )
84  fprintf( ioMEAN, "\n" );
85  fprintf( ioMEAN, " %-6.6s:", COmole[i]->label );
86  fprintf( ioMEAN, "%7.3f",log10(MAX2(SMALLFLOAT,COmole[i]->hevcol )));
87  j++;
88  }
89  fprintf( ioMEAN, "\n" );
90  }
91 
92  else
93  {
94  fprintf( ioMEAN, " molcol does not understand the label %4.4s\n",
95  chLabel );
96  cdEXIT(EXIT_FAILURE);
97  }
98  return;
99 
100 }

Generated for cloudy by doxygen 1.8.3.1