Provided by: mocassin_2.02.73-2_amd64 bug

NAME

       mocassin - Monte Carlo Simulations of Ionised Nebulae

SYNOPSIS

       mocassin, mocassinWarm, mocassinOutput, mocassinPlot

DESCRIPTION

       mocassin  is  a  fully  3D  or  2D  photoionisation and dust radiative transfer code which
       employs a Monte Carlo approach to the transfer of radiation  through  media  of  arbitrary
       geometry  and  density  distribution.  It  was  originally  developed for the modelling of
       photoionised regions like HII regions and planetary nebulae and  has  since  expanded  and
       been  applied  to  a  variety  of astrophysical problems, including modelling clumpy dusty
       supernova envelopes, star forming galaxies, protoplanetary disks and inner shell fluorence
       emission  in  the  photospheres  of  stars  and  disk  atmospheres. The code can deal with
       arbitrary Cartesian grids of variable resolution, it has successfully been used  to  model
       complex  density  fields  from  SPH  calculations  and  can  deal  with ionising radiation
       extending from Lyman edge to the X-ray. The dust and gas  microphysics  is  fully  coupled
       both in the radiation transfer and in the thermal balance.

       mocassin is the main MOCASSIN driver that is used to start a new simulation.  mocassinWarm
       resumes an interrupted simulation.  mocassinOutput runs  the  output  routines  using  the
       current  grid  files in the output subdirectory.  mocassinPlot uses the current grid files
       in the output/ subdirectory to create 3d-emission maps.

How to run the benchmark cases

       Pure photoionisation benchmarks

              The benchmark problems

              Once you have downloaded, unpacked and compiled mocassin successfully you can first
              of  all  try  to  run  one  or more of the available benchmark problems. These were
              designed at a series of workshops on  photoionised  plasma  codes  held  at  Meudon
              (France)  and  Lexington (USA). The latest version of these benchmarks are included
              in Pequignot et al. (2001) in Spectroscopic Challenges of Photoionised Plasmas, ASP
              Conference    Series    Vol    247;    G.    Ferland    and    D.W.    Savina   eds
              (http://adsabs.harvard.edu/abs/2001ASPC..247.....F).   Should   these    conference
              proceedings  not  be  available  to  you,  the same benchmarks are also reported in
              Ercolano    et    al.,     2003,     MNRAS,     340,     1136     (http://cdsads.u-
              strasbg.fr/abs/2003MNRAS.340.1136E). Here you will also find some more general info
              about mocassin. (There is also a link  to  this  paper  on  the  publications  page
              (http://mocassin.nebulousresearch.org/publications.php)).

              Please  note  that  the  mocassin  results  included in the Pequignot et al. (2001)
              (http://cdsads.u-strasbg.fr/abs/2001ASPC..247..533P) were only from  a  very  early
              version  of  the  code. Best results are those listed in the Ercolano et al., 2003,
              MNRAS, 340, 1136 (http://cdsads.u-strasbg.fr/abs/2003MNRAS.340.1136E) paper.

              Input files for benchmarks

              Copy the input file of the benchmark you wish to run (you should have  found  these
              in  a  subdirectory  called  benchmarks,  also  included  in the tar ball) into the
              mocassin.X.XX/input subdirectory and rename it input.in or link the  input.in  file
              to the benchmark file.

              e.g.  for  the  Meudon  standard  HII  region  (Tstar=40kK)  (assume mocassin is in
              ~/mocassin.X.XX/ ) type

                cp                            ~/mocassin.X.XX/benchmarks/gas/HII40/meudonHII40.in
              ~/mocassin.X.XX/input/input.in

              or

                ln             -s             ~/mocassin.X.XX/benchmarks/gas/HII40/meudonHII40.in
              ~/mocassin.X.XX/input.in

              also copy the respective nebular abundance file into the same directory (no need to
              rename!).  In  the  case  of  the Meudon standard HII region benchmark this will be
              abunHII40.in (you can check the name of the abundance file, which is given  in  the
              input.in file with keyword nebComposition)

                cp                              ~/mocassin.X.XX/benchmarks/gas/HII40/abunHII40.in
              ~/mocassin.X.XX/input/abunHII40.in

              Run a mocassin pure photoionisation benchmark

              The command you need to use to actually run mocassin will depend on how your system
              is  set  up,  and  whether  you  are required to run your models through a queueing
              system, in which case you will probably need some sort of shell script to  do  that
              (ask your network administrator if unsure).

              If you want to run mocassin outside any queueing system then you can try one of the
              following commands and hope that one works, if not ask your  network  administrator
              about how to interactively run MPI programs on your system.

              For the SUN:

                mprun -np N ./mocassin   (where N=number of processors you wish to use)

              for the IBM

                ./mocassin -procs N (where N=number of processors you wish to use)

              For the SGI, Beowulf and single Linux PCs using the standard MPI as above:

                mpirun -np N ./mocassin (where N=number of processors you wish to use)

              Checking that everything is going OK

              If the 'output' keyword is included in the input file, at the end of each iteration
              mocassin will write out a number of output files in the output/ directory. Some  of
              them  are written out regardless of whether the 'output' keyword is included, these
              are grid files that are needed by the mocassinWarm driver  (should  you  decide  to
              stop  the  simulation and re-start it from the same iteration); see the 'writeGrid'
              keyword to see how to control the output grid files. Also mocassin  will  keep  you
              updated  on what he is doing by outputting stuff to the screen (if that annoys you,
              just pipe it to a file e.g.  ./mocassin -procs N > log; and then you can check  the
              log at any time you wish).

              After  each  iteration  it  will tell you the percentage of grid-cells converged so
              far, as well as the number of 'dark cells' (i.e. those cells not reached by any  of
              the  photon  packets)  and  also  will  provide  a  summary of eventual convergence
              problems generally this is the last bit of info written before the beginning of the
              new iteration, so, if you have decided to pipe the screen output into a file called
              log, then you can easily check the progress so far by typing  tail -f log, or  grep
              Summary log, or more simply, the convergence history is summarised in a file called
              'output/summary.out'.

              For the benchmark cases you can start having an idea of whether mocassin is working
              properly  by  waiting  until  it's  about  60-70%  converged  and then checking the
              'output/lineFlux.out' file. A description of this file is given  in  output  files.
              Also  check  the 'output/temperature.out' and the 'output/ionratio.out' files (also
              described in output files).

              Completing the benchmark runs

              The benchmark input files included are set up to run a simulation of 13*13*13  grid
              cells  (this is sufficient to reproduce the benchmark results; see Ercolano et al.,
              2003 (http://cdsads.u-strasbg.fr/abs/2003MNRAS.340.1136E))  and  a  given  starting
              number of energy packets (e.g. this can be set by the keyword nPhotons 100000); one
              iteration of 100000 packet should run in a few minutes on most systems.

              The benchmarks input files make use of the autoPackets option, which  automatically
              increases  the number of energy packets to be used as soon as a convergence plateau
              is reached.

              This could also be done manually, by excluding  the  autoPackets  option  from  the
              input  file  and  starting off with about 1000000 packets.  However 1000000 photons
              are not enough to reach full convergence in this case and you will have to stop the
              simulation  when the percentage convergence reaches 30-40%, then edit the grid3.out
              file changing 1000000 to 3000000, and restart the simulation using  the  previously
              compiled mocassinWarm driver, e.g.

                mprun -np N ./mocassinWarm

              This  will  basically  tell mocassin to increase the number of energy packets to be
              used in the simulation from 1000000 to 3000000. It will, of course, now take longer
              to  complete  each  iteration, but the convergence percentage should increase quite
              quickly. You can stop  the  simulation  when  you  reach  convergence  >  90%.  For
              simplicity, until you familiarise yourself with the program, it is advised that you
              keep the autoPackets option as set in the input files, in which case it will not be
              needed to manually stop and restart the simulation.

              Comparing with the benchmark tables

              The  description  of  the  output  files is given in output files. The output files
              contain all the info (and much more) you need to compare your simulation  with  the
              benchmark  tables.  Remember  that mocassin employs a statistical method, so do NOT
              expect to see exactly the same figures as those quote in  the  benchmark  paper  as
              some  of  the  differences  will  be  due  to the statistical error and also to the
              convergence level/limit employed. Furthermore some of  the  atomic  data  has  been
              updated since the publication of the paper.

       Pure Dust Benchmarks

              Version  2.0  was  designed  for  the  modelling  of  regions where dust grains and
              photoionised gas coexist in the same volume; however extreme care has been taken so
              that  the  code could also be run efficiently when only one or the other process is
              included. In this section we will see  briefly  how  to  run  dust-only  models  by
              attempting to reproduce pure dust 1D and 2D models as shown by Ercolano, Barlow and
              Storey       (2005,        MNRAS,        362,        1038)        (http://cdsads.u-
              strasbg.fr/abs/2005MNRAS.362.1038E).

              1D Benchmarks

              A  set  of  spherically  symmetric  benchmark models and solutions are described by
              Ivezic     et     al.     (1997,     MNRAS,     291,     121)     (http://cdsads.u-
              strasbg.fr/abs/1997MNRAS.291..121I).  The  input files used by mocassin for some of
              these benchmarks are included in the directory ~/mocassin.X.XX/benchmarks/dust/1D.

              Copy the input file of the benchmark you wish to run  into the  mocassin.X.XX/input
              subdirectory  and  rename  it  input.in  or link the input.in file to the benchmark
              file. Then run the code (see Section 3.1.3) and finally compare  the  output  files
              (SED.out  dustGrid.out,  see  output files) with the results published by Ercolano,
              Barlow    and    Storey    (2005,    MNRAS,    362,     1038)     (http://cdsads.u-
              strasbg.fr/abs/2005MNRAS.362.1038E)

              2D Benchmarks

              A  set  of  2D disk benchmark models and solutions are described by Pascucci et al.
              (2004,  A&A,  417,   793)   (http://cdsads.u-strasbg.fr/abs/2004A%26A...417..793P).
              Sample  input  files  used by mocassin for some of these benchmarks are included in
              the directory ~/mocassin.X.XX/benchmarks/dust/2D.

              As for the 1D benchmarks you will have to copy the input files of the benchmark you
              wish  to  run   into the mocassin.X.XX/input subdirectory and rename it input.in or
              link the input.in file to the benchmark file. Then run the code (see Section 2.1.3)
              and finally compare the output files (SED.out dustGrid.out, see Section 4) with the
              results  published  by  Ercolano,  Barlow  and  Storey  (2005,  MNRAS,  362,  1038)
              (http://cdsads.u-strasbg.fr/abs/2005MNRAS.362.1038E).

Running things other than benchmark cases

       Once  you have convinced yourself that mocassin is behaving as it should, you can run your
       own simulations. If you are not confident  that  this  is  the  case,  please  contact  me
       (http://mocassin.nebulousresearch.org/contact.php) before going any further.

       The first step is to define your model. This is done via a set of keywords included in the
       input.in file. YOU SHOULD NEVER HAVE TO CHANGE ANYTHING IN THE SOURCE CODE  (I  hope).  If
       you  find you have to, please let me know. The rest of this section will list and describe
       all the keywords that can be included in the input file. The number of keywords you decide
       to  use and the order you decide to list them in is entirely up to you. If you have missed
       out some required and fundamental keyword the simulation will stop and tell you  what  you
       have  missed  out.  However, you should be aware that, for most of these keywords, default
       values are defined, so make sure that the default value is actually what you  want  before
       you  decide  to leave a given keyword out. Default values to each keyword are given below,
       enclosed by square brackets. The fundamental keywords, which must be  specified  in  every
       input file are marked by an asterisk in the square brackets and have no default value.

       List of keywords

       autoPackets real1 real2 integer3

              The number of energy packets to be used in the next iteration will automatically be
              increased by a factor of real2 whenever a convergence plateau (defined by real1) is
              reached,  i.e.   if the convergence level increase is less than the value specified
              by the user in real1. For example autoPackets 0.10 5.  1e8  will  cause  the  total
              number  of  energy  packets to increase by a factor of 5.  whenever the convergence
              level increase from one iteration to the other is less than 10%. This  only  occurs
              when  the  convergence  level is less than 85% and is the maximum number of packets
              defined by  integer3 (1e8 in this example) has not been reached.

              Default value: .false.

       continuumCube real1 real2

              This keyword creates a 3D cube of the  escaped  continuum  radiation  in  direction
              given  by  the  inclination  keyword and over all directions.  If no inclination is
              specified in the input the continuum cube will  include  packets  escaping  in  all
              directions.  The  continuum  band  wavelength limits are defined by real1 and real2
              (given in μm). A negative value or the omission of this keyword will result  in  no
              continuum cube being written out.

              Default value: -1.

       contShape 'string' [optional: real]

              The  shape  of  the  ionising continuum. The default value is 'blackbody', in which
              case the ionising stellar continuum is approximated by the Planck function for  the
              stellar temperature defined by the keyword TStellar. If 'string' == 'powerlaw' then
              this must be followed by a real number  indicating  the  index  of  the  power  law
              distribution  such  that  Fnu  ∝  nu^(-index).  E.g.   contShape  powerlaw 1.  will
              generate an input spectrum following a nu^(-1) distribution. Note  that  the  final
              result  will be normalised to the luminosity entered.  The power law keyword is not
              compatible with the LPhot keyword, but only with the LStar keyword.  If  a  stellar
              atmosphere  data  file  is  to  be  used, the 'string' must specify the path of the
              external file containing the data. For  example  contShape  NLTE140lg65  tells  the
              program to look for the nLTe140lg65 data file in the current directory. The stellar
              atmosphere files must be in a format consisting of two columns: the  first  listing
              the  wavelength  points in units of [A] and the second containing the corresponding
              wavelength-dependent stellar Eddington fluxes in units of [erg/cm^2/s/A/sr]. A  set
              of  stellar atmosphere flux tables have been compiled by Dr T. Rauch in a mocassin-
              friendly format and are available from  http://astro.uni-tuebingen.de/~rauch/  (but
              please manually remove the header from the flux tables.

              Default value: blackbody

       convLimit real

              This  is the convergence limit for the variation of a given parameter, in each grid
              cell from one Monte Carlo iteration to the next (e.g.  0.05  means  changes  of  5%
              maximum). In the case of a pure-gas (or gas+dust) simulation the criterion is based
              on the rate of change of neutral hydrogen. In the case of dust-only  the  criterion
              is based on the rate of change of the dust temperatures.

              Other  convergence  criteria  can also be used, at the moment, this would require a
              simple editing of some source modules.  If  you  would  like  to  use  a  different
              convergence             criterion             please            email            me
              (http://mocassin.nebulousresearch.org/contact.php) and I can  do  the  editing  for
              you.

              Default value: 0.05

       debug

              Logical switch to enable the debugging mode. When this keyword is included mocassin
              will calculate a number of extra  quantities  (see  Section  5.),  which  will,  of
              course, slow the process down and also require more memory.

              Default value: .false.

       densityFile 'string'

              The  density  structure  of  the  nebula  can  be  defined cell by cell by using an
              external density file. mocassin knows that a density file is to be  used  when  the
              densityFile  'string'  is  included  in the input file, where 'string' contains the
              name and path of the file where the data is stored. This file must consist of four,
              five  or  six  columns,  with the first three columns containing the x-, y-, and z-
              coordinates of the grid cell in [cm] and the fourth columns containing the value of
              the  hydrogen  density by number in [cm^{-3}] at the particular grid cell. The x, y
              and z axis do not to be equally spaced - irregular grids are  perfectly  acceptable
              by  mocassin  and  also  the  extent  of  each  axis  can  vary (as long as this is
              consistent with the values given in the nx, ny and nz fields). The fifth column  is
              optional.  If the multiChemistry keyword is specified the fifth column must contain
              an integer number in the range [1, Ncomponents] which indicates what component this
              cell  belongs  to  (so  that  mocassin  can assign the chemical abundances for this
              component).

              It is possible to specify nx, ny and nz from within 'string2' - the  first  row  of
              the file should then be

                # nx ny nz

              and the keywords can be omitted from input.in

              Default value: none

       densityLaw real...

              This  keyword  is  usually followed by a set of parameters which are to be fed into
              the density law routine, included in the grid_mod module. Any density  law  can  be
              specified  by  editing  the  code  in  the  setGrid  subroutine.   If the nebula is
              homogeneous, this keyword  must  be  omitted  and  the  Hdensity  keyword  included
              instead.  Note  that  if  neither  of the two keywords is included, and an external
              density file is not specified with the densityFile  keyword,  the  nebular  density
              distribution  is  left  undefined  and  the simulation halted with an error message
              being produced.

              Default value: 0. 0. etc..

       diffuseSource real1 real2 'string1' integer1 integer2

              This keyword can be used in the case of a non-central source such as the heating by
              radioactive  decay of 56Co in supernova remnants.  real1 is the total luminosity of
              the diffuse source in [1e36 erg/s], and real2 is the  temperature  of  the  diffuse
              source.    string1  is  the  shape  of the source spectrum, with the same syntax as
              contShape.

               integer1 is the number of diffuse photons to use at the start of the  model  (same
              use as nPhotons).
               integer2  is the index of the grid in which the diffuse source emits, which allows
              control of the extent of the diffuse source.  For example,  a  medium  with  clumps
              embedded  could  be  represented  by  a mother grid (index 0) and subgrids (indices
              1..n).  To restrict emission to the inter-clump medium only,  integer2 would be set
              to 0.  If there are no subgrids, set  integer2 to 0.

              Currently,  for "legacy" reasons, a value of TStellar must still be specified (i.e.
              TStellar=0.) but nPhotons, LStar and contShape can be  removed  from  the  input.in
              file.

              diffuseSource should not be used at the same time as symmetricXYZ.

              Default value: *

       dustFile string1 string2

              names dust data files -

               string1 = grain species file
               string2 = grain size info file

              Default value: "none", "none"

       dustMass real1

              By  default, mocassin calculates the total dust mass from the user-specified number
              densities,  dust  species  and  grain  size  distributions.   If  this  keyword  is
              specified,  the  specified  number densities are scaled when read in, such that the
              total dust mass is equal to real1.  real1 has units of [Msun]

              Default value: .false.

       echo real1 real2

              If one needs to account for light travel time effects, for example  if  the  source
              luminosity  is  changing, then this keyword will cause the results in SED.out to be
              integrated only over grid cells lying between  ellipsoids  corresponding  to  light
              travel  times of real1 and real2. real1 and real2 are in light days, and real1 must
              be less than real2. The   ellipsoids open out along the z-axis, and so  one  should
              also  specify  'inclination 1 0.0 -1' in input.in when using this keyword. A review
              of the geometries of light echoes can be found in Sugerman,  2003,  AJ,  126,  1939
              (http://cdsads.u-strasbg.fr/abs/2003AJ....126.1939S),   and   a  case  of  mocassin
              modelling including light travel time considerations is described by Wesson et  al,
              2010, MNRAS, 403, 474 (http://cdsads.u-strasbg.fr/abs/2010MNRAS.403..474W).

              Default value: .false.

       edges real1 real2 real3

              Defines  the  grid  edges  (only  to be used with automatic grids). real1 real2 and
              real3 are respectively the x, y and z edges in cm

              Default value: -1., -1., -1. *must be given if automatic grids are used

       fillingFactor real1

              real1 can assume all values from 0. to 1. to defines the gas volume  (and/or  dust)
              filling factor

              Default value: 1.

       getEquivalentTau

              Logical switch to enable equivalent optical depth calculations (see Ercolano et al.
              2007    (http://cdsads.u-strasbg.fr/abs/2007MNRAS.375..753E))    -    useful    for
              diffuseSource  and  multiPhotoSources  cases.   The  last column in the output file
              equivalentTau.out gives the source SED in the same units as SED.out, which  may  be
              useful to the user as well.

              Default value: .false.

       getTau

              Logical  switch  to  enable  optical  depth  calculations  and output - may be time
              consuming for large grids

              Default value: .false.

       Hdensity real

              This keyword specifies a constant  hydrogen  density,  by  number,  throughout  the
              nebular  region  The  command  Hdensity  300 will e.g. set the hydrogen density, by
              number, to the constant value of 300 cm-3.

              Default value: 0.

       inclination integer real_1, real_2 ..... real_{n1}, real_{n2}

              This keyword controls the viewing angles at which the SED will be calculated as  it
              will  appear  in  the  SED.out  file.  The  number of viewing angles is given first
              (integer; in this version integer <= 2)  and  then  the  θ  and  φ  inclination  in
              radians.  To turn off the φ dependence, real_2 must be set to to -1. (θ=0. when the
              line of sight coincides with the z-axis)

              Default value: 0

       inputNe

              This indicates that the density distribution of the grid is in  terms  of  electron
              densities  instead  of  H  density.  This  will cause the code to calculate at each
              iteration the values of H density from the local Ne values by taking  into  account
              the local ionisation structure.

              Default value: .false.

       isotropicScattering

              This  keyword  activates  the  logical switch that turns off unisotropic scattering
              (implemented via the Heyney-Greenstein phase function -  with  &lt;cos  &theta;&gt;
              calculated from the dielectric constants via MIE theory).

              Default value: .false.

       LPhot real

              This  is  the  number  of  hydrogen-ionizing photons emitted by the source per unit
              time, which is generally referred to as Q(H0), in the  literature,  with  units  of
              [E36  sec-1].  If this is given then the stellar luminosity, LStar is automatically
              derived from it.

              Default value: * if LStar not given

       LStar real

              This is the stellar luminosity in units of [E36 erg sec-1].  If this is given as an
              input,  then  the  number  of  hydrogen- ionizing photons,  Q(H0), is automatically
              derived from it and from the input spectrum.

              Default value: * if LPhot not given

       maxIterateMC integer1 real1

                integer1 is the maximum number of Monte Carlo iterations to be performed  in  the
              simulation. real2 is the minimum convergence level to be achieved before the end of
              a simulation. The program will however  stop  after   integer1  iteration  even  if
              real1% of convergence has yet to be reached.

              Default value: 30 95.

       MdMg string1 real1/ string2

              Dust  to  Gas  ratio  by mass. If  string1 = 'constant' then it must be followed by
              real1, containing the value of MdMg to be applied homogeneously to all cells in the
              grid.  If   string1=file then it must be followed by  string2, the name of the file
              defining the MdMg at each location. Note that MdMg, MdMh  and  Ndust  are  mutually
              exclusive.

              This  file  must  consists of four columns, with the first three columns containing
              the x-, y-, and z- coordinates of the grid cell in  [cm]  and  the  fourth  columns
              containing  the  dust to gas mass ratio at the particular grid cell. The x, y and z
              axis do not to be equally spaces,  irregular  grids  are  perfectly  acceptable  by
              mocassin  and  also the extent of each axis can vary (as long as this is consistent
              with the values given in the nx, ny and nz fields).

              It is possible to specify nx, ny and nz from within 'string2' - the  first  row  of
              the file should then be

                # nx ny nz

              and the keywords can be omitted from input.in

              Default value: .false. 0./'none'

       MdMh string1 real1/ string2

              Dust  to  Hydrogen ratio by mass. If  string1 = 'constant' then it must be followed
              by real1, containing the value of MdMh to be applied homogeneously to all cells  in
              the  grid.  If   string1=file then it must be followed by  string2, the name of the
              file defining the MdMh at each  location.  Note  that  MdMg,  MdMh  and  Ndust  are
              mutually exclusive.

              This  file  must  consists of four columns, with the first three columns containing
              the x-, y-, and z- coordinates of the grid cell in  [cm]  and  the  fourth  columns
              containing  the  dust  to hydrogen mass ratio at the particular grid cell. The x, y
              and z axis do not to be equally spaces, irregular grids are perfectly acceptable by
              mocassin  and  also the extent of each axis can vary (as long as this is consistent
              with the values given in the nx, ny and nz fields).

              It is possible to specify nx, ny and nz from within 'string2' - the  first  row  of
              the file should then be

                # nx ny nz

              and the keywords can be omitted from input.in

              Default value: .false. 0./'none'

       multiChemistry integer1 string(1) string(2) ..... string( integer1)

              This keyword must be used when a chemically inhomogeneous model is being performed.
              The  integer1 value defined the  number  of  components  to  be  used.   string(1),
              string(2)  ...  string(  integer1)  are  the  names  of  the  files  describing the
              abundances in each component.  When the  multiChemistry  keyword  is  included  the
              density  distribution  MUST  be  specified  via  the densityFile keyword. The fifth
              column of the density file must contain the index for the abundance file describing
              the chemical composition at each location.

              Default value: .false.

       multiGrids integer1 string1

              This  defines  a  multiple  grid  environment. The  integer1 is the total number of
              grids to be used (mother  +  subgrids)  and   string1  is  the  name  of  the  file
              containing  the subgrid information.  Please see the Running multiple spatial grids
              section in this document.

              Default value: .false. 'none'

       multiPhotoSources string1

              This keyword is used to define multiple (or single) ionising sources, that  can  be
              placed  at any locations.  'string1' is the name of the file containing the central
              star parameters. This file must contain in the first line the number of sources  to
              be  included and then each source should be specified on successive lines providing
              (in this order) Teff [K], L* [E36erg/s], ContShape, x-, y-, z-position.  Note  that
              the  location  of the source must be given normalised to the length of the relative
              axis. As example is included in the example/ directory.

       nbins integer

              The total number of points to be used in the frequency mesh.

              Default value: 600

       Ndust string1 real1/ string2

              Number density [cm-3] of dust  grains.  If   string1='constant'  then  it  must  be
              followed by real1, containing the value of Ndust to be applied homogeneously to all
              cells in the grid. If  string1=file then it must be followed by  string2, the  name
              of  the file defining Ndust at each location. Note that MdMg and Ndust are mutually
              exclusive. This file must consists of four columns, with the  first  three  columns
              containing  the  x-, y-, and z- coordinates of the grid cell in [cm] and the fourth
              columns containing the number density of dust in  [cm-3]  at  the  particular  grid
              cell.  The  x,  y  and  z  axis  do  not  to be equally spaced; irregular grids are
              perfectly acceptable by mocassin and also the extent of each axis can vary (as long
              as this is consistent with the values given in the nx, ny and nz fields).

              It  is  possible  to specify nx, ny and nz from within 'string2' - the first row of
              the file should then be
                # nx ny nz

              and the keywords can be omitted from input.in

              Default value: .false. 0./'none'

       nebComposition 'string'

              This keyword specifies the path of  the  nebular  composition  data  file.  If  the
              default  'solar'  composition  (defined  in the file solar.dat) is to be used, this
              keyword can be omitted. However the solar.dat file includes all elements with Z<30:
              this  will result in a more memory expensive simulation. It is therefore advised to
              set to zero those elements which are not needed in the  simulation.  Otherwise  the
              nebular  composition can be specified in the user-defined 'string' file to be found
              in the current  directory.  All  composition  input  files  must  be  in  a  format
              consisting  of  one  column  containing  the  abundances  by number and relative to
              hydrogen for the first thirty elements in order of ascending  atomic  number.   The
              abundances  of elements which are not to be included in the simulations must be set
              to zero (this will automatically exclude them by flagging them out  throughout  the
              program).   If  the  multiChemistry keyword is specified the nebComposition keyword
              must be omitted.

              Default value: * if gas is present and no multiChemistry

       NeStart real

              Initial guess for the nebular electron density.

              Default value: 0.

       noPhotoelectric

              When this keyword is included in the input file all procedures associated with  the
              calculation  of  the grain charges and photoelectric yield are switched off as well
              as gas-grain collision processes.

              Default value: .false.

       nPhotons integer

              This is the number of energy packets to be used in the Monte Carlo  simulation  and
              it has to be specified for each model.

              Default value: *

       nStages integer

              This  is  the  number of ionisation stages to be used in the model.  Max allowed is
              currently 10. If you have the atomic data necessary and would like to use more than
              10          ionisation          stages          please          contact          me
              (http://mocassin.nebulousresearch.org/contact.php), or if you are confident you can
              edit the data/fileNames.dat and include the new data files to the pool.

              Default value: 7

       nuMax real

              High limit of the frequency mesh in units of [Ryd]

              Default value: 15.

       nuMin real

              Low limit of the frequency mesh in units of [Ryd]

              Default value: 0.

       nx integer

              Number  of axial points in the x-direction.  Can also be specified on the first row
              of densityFile, Ndust, MdMg and MdMh files, in the form of a row containing

                # nx ny nz

              The keywords nx, ny and nz can then be omitted.

              Default value: 30

       ny integer

              Number of axial points in the y-direction.  Can also be specified on the first  row
              of densityFile, Ndust, MdMg and MdMh files, in the form of a row containing

                # nx ny nz

              The keywords nx, ny and nz can then be omitted.

              Default value: 30

       nz integer

              Number  of axial points in the z-direction.  Can also be specified on the first row
              of densityFile, Ndust, MdMg and MdMh files, in the form of a row containing

                # nx ny nz

              The keywords nx, ny and nz can then be omitted.

              Default value: 30

       output

              when this keyword is included the output files will be written at the end  of  each
              iteration.  If  it  is omitted no output will be created, however if the grid files
              are being created the output files can easily be recovered using the mocassinOutput
              driver.

              Default value: .false.

       planeIonization real1 real2

              This  keyword  is  used  when  the ionisation source is from a plane and not from a
              point source. real1 must contain the value of the incident ionizing flux above υ  =
              real2  [Ryd]  (constant  at  each  point on the plane) in units of [phot/s/cm2]. If
              real2 = 0. then the real1 is assumed to be the bolometric flux.

              When this keyword is specified the density distribution must  be  defined  via  the
              densityFile  option.  The  ionizing  plane is the x-z plane. the energy packets are
              reflected when they hit the y-z and the y-x planes and  can  escape  from  the  x-z
              planes.    (This   can   be   easily   changed   to   suit.   please   contact   me
              (http://mocassin.nebulousresearch.org/contact.php) if your work requires it  to  be
              different)

              Default value: .false.

       quantumHeatGrain real1 real2

              This keyword activated the temperature spiking routines (quantum grain heating). It
              is only valid for simulations including dust. real1 is the limiting size  of  grain
              radii  [μm]  that will be allowed to spike (i.e. grains with a < real1 will spike).
              real2 is the minimum convergence level for the spiking to occur.  Please  read  the
              notes on Grain temperature spiking procedures.

              Default value: 1.e-3, 99.

       quantumHeatGrainParameters real1 integer1 logical1

              This  keyword  provides controls over some internal parameters in the quantum grain
              heating procedures. They should not be modified unless you really know what you are
              doing.  real1 is the max temperature to be considered in the grain temperature mesh
              of the spiking.  integer1   is  the  number  of  temperature  (and  enthalpy)  bins
              considered.  logical1  switches on and off the writing out of a file containing all
              the probability functions for all the grains in every cell. The resulting file  can
              be  really  gigantic  and  so this value should be set to .true. only for debugging
              purposes and used with care. Please read the notes  on  Grain  temperature  spiking
              procedures contained in this manual.

              Default value: 700., 300, .false.

       Rin real

              Inner radius of the ionised region, in units of [cm].

              Default value: *

       Rout real

              Outer radius of the ionised region in units of [cm].

              Default value: 0.

       recombinationLines

              If  this  keyword  is  introduced,  recombination line intensity of astrophysically
              abundant ions will be computed and appended to the lineFlux.out file

              Default value: .false.

       resLineTransfer real

              real tells at what level of grid convergence  the  resonance  line  photons  escape
              fractions  should be calculated. This should be included when both dust and gas are
              present.

              Default value: 101.

       slit real1 real2

              This  keyword  will  cause  the  results  in  lineFlux.out,   temperature.out   and
              ionratio.out  to  be integrated over only those cell that fall under the projection
              of a slit aligned along the z-axis of the grid. The slit x  and  y  dimensions  (in
              [cm])  are  defined by real1 and real2 respectively.  If real1 and real2 have value
              0. or if they are omitted, no slit is used and the results are integrated over  the
              whole active volume.

              Default value: 0., 0.

       symmetricXYZ

              When  the nebula to be modelled shows axial symmetry in the x- y- and z-directions,
              this keyword can be used to enable the symmetric grid procedures. This will  result
              in  the  ionizing source being put in a corner of the grid, instead of being put in
              the centre, meaning that only one eighth of the nebula will have to be computed.

              symmetricXYZ should not be used in models illuminated by a diffuse source.

              Default value: .false.

       talk

              This switch enables the verbose version of the program.

              Default value: .false.

       TeStart real

              Initial guess for the nebular temperature.

              Default value: 10000.

       traceHeating

              Logical variable to switch on the thermal balance channel  tracing.  When  this  is
              included in the input file a file called  thermalBalance.out will be written to the
              output/ directory. Be aware that depending on the size of your  grid  this  may  be
              quite a large file and time-consuming in the I/O phase.

              Default value: .false.

       TStellar real

              Temperature in [K] of the ionizing stellar source.

              Default value: *

       writeGrid real

              real  indicates  the minimum grid convergence percentage after which the grid files
              will be written out.

              Default value: 0.

Input and Output Files

       Input files

              The source files are contained in a subdirectory called  source/.   mocassin  looks
              for  the  input.in  file  from  a subdirectory called input/. The atomic data files
              should all be contained in a subdirectory named data/.  Most  of  the  atomic  data
              files  should  not  need  to be changed at all. Unless you decide to update some of
              them,  in  which  case  (under  the  GPL  agreement)  you  should  also  email   me
              (http://mocassin.nebulousresearch.org/contact.php)  with  the changes so that I can
              include them in the public version of the code. The dust optical data  library  and
              other dust related data files are contained in a subdirectory named dustData/.

              The  user's  input  files may be a combination of the following files, depending on
              the processes included in a given simulation.

              input.in

              This is the main input file where you can specify all the keywords to  define  your
              simulation.  Some  example input files are given for the Meudon/Lexington benchmark
              cases (see pure photoionisation benchmarks).

              gas abundances file

              This is the nebular abundances file which should have the  name  specified  by  the
              user  in the nebComposition field of the input.in file. Some sample files are given
              for the Meudon/Lexington benchmarks.

              gas density file

              This the nebular density structure file which should have the name specified by the
              user  in  the  densityFile  field  of the input.in file. The format of this file is
              given in Section 4 (see densityFile).

              stellar atmosphere file

              This is the stellar atmosphere file which should have the  name  specified  by  the
              user  in the contShape field of the input.in file. The format of this file is given
              in Section 4 (see contShape).

              dust number density file

              This should contain the dust number density distribution across the grid. It's name
              and path should be specified in the input.in file by the keyword Ndust.

              dust to hydrogen or dust to gas ratio

              This  contains  the  dust  to hydrogen or dust to gas ratio distribution across the
              grid. It's name and path should be specified in the input.in file  by  the  keyword
              MdMh or MdMg, respectively.

              dust species and grain size distribution files

              The  names  of these two files must be specified in the input.in file following the
              keyword dustFile. The dust species file should contain a first line specifying  how
              many  species are to be included, and then successive lines containing the names of
              the optical data (n,k or Qs) file and the relative abundance of the species.

              e.g.  for  a  pure  silicate  model  (using  the   Draine   and   Lee   1984   data
              (http://cdsads.u-strasbg.fr/abs/1984ApJ...285...89D)) :

                1
                'dustData/sil-dl.nk' 1.0

              The  grain  size  distribution file should contain a first line specifying how many
              grain sizes are to be included, the rest  of  the  file  should  consist  of  three
              columns  :  index,  radius  (in  um),  weight. Grain size distribution files can be
              created  using  the   makeGrainSizeDistribution.f90   program   included   in   the
              accessories/ subdirectory.

              e.g. for a single grain size

                1 size
                1 0.16 1.0

              Input  files  for multigrid simulations are described in [[running multiple spatial
              grids.

              plot.in

              The plot.in file is used by the mocassinPlot driver in order to create 3D grids  of
              line  emission. This file must be place (or linked to) the input/ subdirectory. The
              plot.out and the grid4.out files are written out to output/ and can then be used to
              create emission line maps by integration along any given line of sight.

              Monochromatic  grids are created using the mono keyword, and individual lines using
              the line keyword.

              For example:

                mono
                line 2        4861.   4861.
                line 93       4686.   4686.
                line 1529     5007.   5007.
                line 1540     4363.   4363.
                line 2407     6733.   6733.
                line 2408     6718.   6718.
                line 929      6583.   6583.

              The integer following the keyword line is the line index number  as  given  in  the
              lineFlux.out  file.  NOTE  that  the  line  indices will be different for different
              simulations as they depend on which elements are included  and  on  the  number  of
              ionisation  stages  accounted  for.  The  2nd  and  3rd indices contain the central
              wavelength of the line (these are redundant for monochromatic plots,  however  they
              must be included).

       Output files

              mocassin produces several output files at various times during the simulation. This
              will  be  contained  in  a  subdirectory  named  mocassin.X.XX/output/  The   files
              ionratio.out,  lineFlux.out, temperature.out, (tau.out), ionDen.out and SED.out are
              all produced by the output_mod module.

              The plot.out and grid4.out files are produced by the mocassinPlot file

              ionratio.out

              Ionratio.out contains the volume averaged ionic fractions. Different authors is the
              past  have  used  slightly  different definitions of this quantity in their models.
              Please    refer     to     Ercolano     et     al.     (2003)     (http://cdsads.u-
              strasbg.fr/abs/2003MNRAS.340.1136E) for further information on the description used
              by mocassin.

              The first two columns of the ionratio.out  file  give  the  atomic  number  of  the
              element  and  its  ionisation stage (1 for neutral, 2 for singly ionised etc.), and
              the third column gives the required quantity.  If a multiChemistry model  is  being
              run, then the results will be given for each individual component.

              lineFlux.out

              The  file  lineFlux.out  contains  the  volume  integrated  intensities  of all the
              emission lines calculated by mocassin. These are all given relative to Hβ, which is
              in absolute units.

              The  first  two  columns  give  the  element  and ion number, these are followed by
              mocassin codes for the  levels  of  the  transition;  these  are  followed  by  the
              wavelength  in  [A].  The wavelength column is followed by the analytical and Monte
              Carlo line intensities relative to Hβ, which is given in absolute units at the  top
              of  each  region.  Finally  the  last  column  gives  the ratio of the two previous
              columns. NOTE that the Monte Carlo line intensities  are  only  calculated  if  the
              debug  keyword  is  included in the input file. In normal mode only the intensities
              calculated using the formal solution (which are in general more accurate)  will  be
              available.

              If  a  multiChemistry  model  is being run, then the results will be given for each
              individual component.

              temperature.out

              The file temperature.out contains the mean electronic temperatures weighted by  the
              ionic     species     (see     Ercolano     et    al.,    2003    (http://cdsads.u-
              strasbg.fr/abs/2003MNRAS.340.1136E)  for  definition).  This  file  has  the   same
              structure as the ionratio.out file.

              If  a  multiChemistry  model  is being run, then the results will be given for each
              individual component.

              equivalentTau.out

              Please see Section 2.3 of Ercolano, Barlow and  Sugerman  (2007)  (http://cdsads.u-
              strasbg.fr/abs/2007MNRAS.375..753E)  for  a description of this quantity. The first
              column contains Energy [Ryd]  the second column contains wavelength [μm] the  third
              column contains equivalent tau [see paper] and the fourth column contains  Fλ0 [see
              paper]. Note that in the case of diffuse illumination this is the  only  meaningful
              quantity - see discussion in paper.

              tauNu.out

              The  file  tauNu.out  contains the frequency dependent optical depth tau(nu) [which
              includes ALL opacity sources] at the edge of the grid in the three  positive  axial
              directions starting from the origin of the axes.

              tau.out

              THIS  FILE  IS  NOT  PRODUCED  ANY  MORE  IN  VERSIONS >= 2.02.49 PLEASE CONTACT ME
              (http://mocassin.nebulousresearch.org/contact.php) IF YOU NEED IT. The file tau.out
              contains  the  run  of the optical depth from the centre of the nebula to the outer
              edge along the three axial directions. The optical depths  are  calculated  at  the
              neutral  hydrogen  ionisation  threshold,  nu  =  1.0 Ryd (13.6 eV), at the neutral
              Helium ionisation threshold, nu =  1.8  Ryd,  and  at  the  singly  ionised  Helium
              ionisation threshold, nu = 4.0 Ryd. The first column of the file gives the distance
              in [cm] from the centre of the nebula and the second column gives the optical depth
              from  the centre to that point. This file is not always calculated correctly if the
              internal  switches  are  not  set  up  properly.  Please  use  equivalentTau.   See
              description above.

              ionDen.out

              The file ionDen.out contains the ionic fractions at each grid cell. The first three
              columns give the x-, y- and z-axis indices  of  the  cell,  the  fourth  and  fifth
              columns give the atomic number and the ionisation stage of the element (as above, 1
              for atom, 2 for singly ionised etc.) and,  finally,  the  sixth  column  gives  the
              corresponding ionic fraction.

              SED.out

              This  file  contains  the  emerging  spectral energy distribution from the grid. As
              indicated in the files' header column 1 and column 2 contain  the  frequency  [Ryd]
              and  wavelength  [μm]  grid,  column 3 contains the direction averaged SED per unit
              direction (must multiply  by  π  to  obtain  the  total  overall  directions);  the
              following  columns contain the SED emerging in any given line of sight as requested
              by the user in the input.in file with the inclination keyword.

              The grid files and photoSource.out

              As we have already mentioned elsewhere, grid files are also written out after  each
              iteration  by  routines  contained  in the grid_mod module. These are needed by the
              warm start driver (mocassinWarm) to re-initialise an interrupted simulation.  These
              files  are formatted such that they can be written out and read back in quickly and
              therefore they may not be very clear to  the  human  eye.  However,   most  of  the
              information  they  contain  is  also given in a more intelligible form in the other
              output files listed above, dust temperatures  are  an  exception  as  discussed  in
              plotting  dust temperatures. Gas-only simulations will result in 4 grid files being
              written out: grid0.out, grid1.out, grid2.out and grid3.out.

              The first line of the grid0.out file gives the number of  grids  included  (mother+
              subgrids),  on  the  next line are the x-, y- and z-axes points in the mother grid,
              followed by the outer radius in [cm]. The next few lines list  the  x-axis  points,
              then  the  y-axis  points  and,  finally,  the  z-axis points. The rest of the file
              contains the convergence info for each grid cell. The active index of the  cell  in
              the  first column, whether it has converged (1=yes,0=no), and whether it is a black
              cell (i.e. if could not be reached by any photons, 1=black, 0=normal).  Cells  that
              have  a 0 index are inactive cells; cells with a negative index are cells that have
              been replaced by a subgrid, whose index is equal  to  the  absolute  value  of  the
              negative  mother-cell  index.  In  the case of multiGrid simulations, the file will
              loop around all subgrids included.

              The grid1.out file contains  the  electron  temperatures,  electron  densities  and
              hydrogen densities for each grid cell in each grid. As for the grid0.out file, this
              information is given for each grid cell, with the last index  varying  the  fastest
              (i.e. (1,1,1), (1,1,2), etc.).

              The  file  grid2.out  contains  the  ionic fractions at each grid cell for the ions
              included in the simulation. These are given in order of  increasing  atomic  number
              and  ionisation  stage, with each element occupying one line. The grid cell indices
              vary in the same fashion as in the grid1.out file.

              The file grid3.out contains a list of the  specified  simulation  parameters  in  a
              fixed  order  (the keywords are indicated on the right of each value). NOTE that it
              is not possible any more to change nuStepSize from the input.in file. If  you  wish
              to  change  this  parameter  (you  shouldn't  need  to),  this  is  defined  in the
              set_input_mod module.

              Dust-only simulations only produce grid0.out, grid3.out and dustGrid.out

              The file dustGrid.out contains the dust number density at each cell followed by the
              grain  temperatures  for each grain size of each grain species. For each cell Ndust
              is written on one line and this  is  followed  by  n_size+1  lines  of  n_species+1
              columns  containing  the  individual  grain temperatures for each size and species,
              where n_size=number of size bins and n_species=number of  grain  species  included.
              The average temperature for the grain mixture weighted by the size distribution and
              the species abundances is given at (0,0).

              Dust+gas simulations will produce all the files above.

              grid4.out is written out by mocassinPlot and it just contains the  volume  of  each
              gridcell in [e45 cm3], which is needed for visualisation purposes.

              The   ionising  source(s)  input  parameters  are  written  out  to  a  file  named
              photoSource.out.

              plot.out

              The mocassinPlot driver produces also an output file, containing  the  luminosities
              of  each  individual grid volume element in the required emission lines. This file,
              named plot.out, is written in a format which should be easily readable into a  data
              visualisation  software,  such  as  IDL  or  PDL.  A grid4.out is also written out,
              containing the volume of each gridcell in [e45 cm3].

Miscellaneous notes on mocassin

       Analytical and Monte Carlo line fluxes

              The total luminosity of the nebula in various emission lines longward of the  Lyman
              limit  can  be  obtained  by  using  two  methods.  The first method, which is only
              available to Monte Carlo codes, consists of summing up the number of energy packets
              in  the  given  line  over all the grid cells. From this, the power emitted in that
              line can be readily obtained (see e.g.  Ercolano  et  al.,  2003  (http://cdsads.u-
              strasbg.fr/abs/2003MNRAS.340.1136E)).  The  second  method  consists  of  using the
              values of the local electron temperatures and ionic abundances given by  the  final
              model  solution  to obtain the line emissivities for each grid cell. The luminosity
              of the nebula in any given line can then be calculated easily  by  integrating  the
              emissivity of the required line over the volume of the nebula.

              A  comparison  of  the  results  obtained  using  the  two methods described above,
              provides an indication of the level of statistical  accuracy  achieved  during  the
              simulation,  as  the two methods will give consistent results only if enough energy
              packets are used in order to yield good statistics  for  every  line.  However,  in
              general,  the  second  method  (formal  solution) yields the most accurate results,
              particularly for weak lines, which only emit a few photons.

              Calculation  of  the  line  emissivities   using   the   first   method,   although
              straightforward,  requires  extra  book-keeping  which  can be expensive for larger
              simulations. For this reason, this calculation will only be carried  out  when  the
              keyword  debug  is  included  in  the  input  file,  otherwise the more speedy (and
              accurate) formal solution will only be employed.

       Running multiple spatial grids

              WARNING: This section is out of date -- new help is in the process of being written
              as      we      speak      --      almost     ;-)     .     Please     email     me
              (http://mocassin.nebulousresearch.org/contact.php) if  you  want  to  use  multiple
              grids and need some help

              From  Version  2.00  onwards  you  can choose to run simulations including multiple
              spatial sampling. A typical example of when this would be need is for the modelling
              of knots embedded in a gaseous nebula. The density enhancement in the knot requires
              a finer spatial grid than one that may be sufficient to model the main  nebula.  In
              such  cases the subgrid describing the knot can be modelled simultaneously and self
              consistently by mocassin's multigrid routines. The radiation field will  be  safely
              transferred  from mother to sub grids with (hopefully) no error being introduced by
              the process. The overheads involved only reflect the eventual introduction of extra
              grid cells.

              A  typical  example of how such a model would be set up is briefly described below.
              All files mentioned should be included in the examples/multigrid subdirectory.

              The example below shows the input.in file for a plane parallel model consisting  of
              a cubic blob embedded into a cubic grid:

                autoPackets 0.20 2. 1000000000
                output
                contShape  blackbody
                nebComposition 'examples/abunHII40.in'
                maxIterateMC  30 95.
                nPhotons 10000000
                nx 10
                ny 10
                nz 10
                planeIonization 3.0
                Rin 0.
                Rout 2.1e19
                TStellar 45000.
                writeGrid 5.
                convLimit 0.03
                densityFile 'examples/cubenew.dat'
                multiGrids 2 'examples/subGrids.in'

              The  density  distribution  of  the  mother  grid  (containing  the main nebula) is
              provided provided by an external file using the densityFile keyword as described in
              Section 3.1; e.g.

                densityFile 'examples/cube.dat'

              mocassin  knows  that it will have to deal with more than one grid (in this case 2)
              thanks to the line

                multiGrids 2 'examples/subGrids.in'

              the integer after the multiGrids keyword is the total number of grids including the
              mother  grid; the file 'example/subGrids.in' contains all the information regarding
              the position of  the  subgrids  and  their  specification.  This  file  is  created
              automatically  by using the makeSubGrids.f90 program included in the 'accessories/'
              directory.

              The makeSubGrids.f90 program reads the makeSubGrids.in input  file,  that  has  the
              following form

                1
                cube.dat 10 10 10 1
                cubenew.dat
                1 9 9 9 knot_den.in
                7.e18 14.e18 7.e18 14.e18 7.e18 14.e18
                100. -1

              line  1:  number  of  subgrids to be included line 2: name of mother grid file; its
              x,y,z dimensions; multiChemistry? (1=no; >1=yes)  line  3:  name  of  the  modified
              mother  grid file (to be created by makeSubGrids.f90) line 4: knot index; its x,y,z
              extent;  name  of  knot  file  (to  be  created  by   makeSubGrids.f90)   line   5:
              xmin,xmax,ymin,ymax,zmin,zmax in cm, defining the region occupied by knot 1 line 6:
              H  number  density  in  [cm-3]  of  knot  1,   abundance  index  (negative  if   no
              multiChemistry) The maximum number of subgrids that may be included in a simulation
              is controlled by the parameter maxGrids in the source/constants_mod.f90 module;  in
              the  example  above  only  one  subgrid  is  included, additional subgrids could be
              included by simply repeating lines 4,5 and 6 for each subgrid.

              The knot_den.in file above has the following format

                0.0000000E+00  0.0000000E+00  0.0000000E+00   100.0000
                0.0000000E+00  0.0000000E+00  0.1250000       100.0000
                0.0000000E+00  0.0000000E+00  0.2500000       100.0000
                0.0000000E+00  0.0000000E+00  0.3750000       100.0000
                0.0000000E+00  0.0000000E+00  0.5000000       100.0000
                0.0000000E+00  0.0000000E+00  0.6250000       100.0000
                0.0000000E+00  0.0000000E+00  0.7500000       100.0000
                0.0000000E+00  0.0000000E+00  0.8750000       100.0000
                0.0000000E+00  0.0000000E+00   1.000000       100.0000
                0.0000000E+00  0.1250000      0.0000000E+00   100.0000
                0.0000000E+00  0.1250000      0.1250000       100.0000
                etc ........

              Columns 1, 2 and 3 contain the x, y, and z positions in the subgrid, normalised  to
              1.  The fourth column contains the h number density. (when running a multiChemistry
              model a fifth column would appear; containing the abundance file index).

              It is worth noticing that since the x y and z positions in  the  knot_den.in  files
              are  given  normalised  to  unity,  we can include knots with the same geometry and
              density at several grid locations without the need to create  a  density  file  for
              each  knot.  this  can be done by specifying the same filename for the knots in the
              makeSubgrids.in file.

              The makeSubgrids.f90 file will  also  process  the  cube.dat  file  (which  is  the
              original  mother  grid density file provided by the user) turning off all the cells
              that are to be replaced by subgrids. The new file will be called cubenew.dat in the
              above  example  and this is the file that must be specified in the input.in file of
              mocassin.

              The makeSubgrids.f90 file can only  create  subgrids  of  homogeneous  density  and
              chemical  indices.  It  should  be  very  easy  for the user to customise the grids
              obtained to included their 'favourite' density/chemistry distribution.

              The output from multigrid models will be summarised  in  the  usual  files  and  an
              overall, as well as grid by grid result will be provided.

              Christophe  Morisset  of  UNAM  is  currently  in  the  process  of creating an IDL
              visualisation tool that is able to deal with multiGrids and  reconstruction  for  a
              quick  and  efficient analysis of the results. It is intended to distribute the new
              tool as soon as it becomes available.

       Running models that include dust and gas.

              The gas and dust radiative transfer routines in mocassin are now fully  integrated.
              It is therefore now possible to run mocassin in its original gas-only mode, as well
              as dust-only and of course dust+gas.  The basics on how to run the code  for  dust-
              only  or  gas-only cases have already been given in pure photoionisation benchmarks
              and pure dust benchmarks; here we will concentrate on an example  where  both  dust
              and gas are present.

              Below is the input.in file used for the dust and gas model of NGC 3918 as described
              by  Ercolano,  Barlow  and  Storey  (2005,  MNRAS,  362,  1038)   (http://cdsads.u-
              strasbg.fr/abs/2005MNRAS.362.1038E).

                autoPackets 20. 2. 500000000
                densityFile 'ngc3918/ngc3918den.dat'
                symmetricXYZ
                multiChemistry 2 'ngc3918/ngc3918.dat' 'ngc3918/ngc3918.dat
                contShape 'ngc3918/nLTe140lg65'
                maxIterateMC  30 95.
                nPhotons 1000000
                nx 23
                ny 23
                nz 23
                nbins 700
                LStar 27.64
                nuMax 23.7
                nuMin 3.1e-4
                Rin 0.
                Rout 3.27142e17
                TStellar 140000.
                MdMh constant 0.0011
                dustFile 'ngc3918/primary_grainspecies.dat' 'ngc3918/primary_grainsizes.dat'
                writeGrid 50.
                convLimit 0.03
                resLinesTransfer 90.

              In  summary,  it should be clear from the example above that the only keywords that
              differentiate the file above from the input of a gas-only model are : MdMh (dust to
              hydrogen  mass  ratio)  dustFile  (files containing the grain size distribution and
              species  information)  resLinesTransfer  (which  tells  at  what  level   of   grid
              convergence  the  resonance  line  photons  escape fractions should be calculated).
              Note that the first two keywords that define how much,  what  type  and  what  size
              grains  are  to be used is also needed to run dust-only models (although MdMh could
              be substituted by Ndust or by MdMg). resLinesTransfer is only needed  if  there  is
              gas also in the simulation (which would then be emitting resonance lines capable of
              heating the grains).

       The accessories/ subdirectory

              A number of  useful  (or  not)  FORTRAN  and  IDL  programs  are  included  in  the
              accessories/  subdirectory.  Some words of warning: the programs are very basic and
              poorly commented, as they were developed for personal use. Anyone is welcome to use
              them  at  their  own  risk!!  The  IDL programs, in particular, are specific to the
              simulation they were developed for and some editing will be necessary to  customise
              them to the user's needs.

       Plotting dust temperatures

              Depending  on  the  complexity  of the dust model employed in a given model and the
              geometrical complexity of the grid, it may be quite challenging to explore the dust
              temperature distribution calculated by mocassin and written out to dustGrid.out.

              Sometimes  the  only  way  is  to  plot  out  the results or create 3D maps using a
              visualisation program such as IDL, PDL etc..

              The accessories/ subroutine contains an example (dustTemperatures2.pro) of how such
              a  grid  may  visualised  using IDL. This was written for a grid containing 2 grain
              species and 20 grain sizes. The simulation was a multiChemistry dust and  gas  one,
              so the results are also split by sector.

       Grain temperature spiking routines

              The  grain  temperature  spiking  routines  included  in  mocassin are based on the
              Guhathakurta    &    Draine    (1989    ApJ     345,     230)     (http://cdsads.u-
              strasbg.fr/abs/1989ApJ...345..230G)  method.  This  is  a  very powerful method and
              allows the time-efficient computation of the time-dependent grain temperatures  due
              to  quantum heating. For the limitations of the method also see Siebenmorgen et al.
              (1992 A&A  266,  501)  (http://cdsads.u-strasbg.fr/abs/1992A%26A...266..501S).  The
              temperature  spikes  only  affect  the output SED from dust grains, it is therefore
              advisable not to include these time consuming procedures until the model has almost
              converged  in  the  case of gas+grain simulations (keep a high value of real2 - see
              quantumHeatGrain). In the gas of  dust  only  models,  it  is  worth  to  have  the
              procedures  working  right  from  the start since the convergence criterion is then
              based on dust temperatures and therefore one must take  this  effect  into  account
              right  from  the start in order to avoid convergence fluctuations. It is in general
              not worth running the quantum heating routines on large grains that are unlikely to
              spike.  For a discussion of the general cases when quantum heating routines must be
              considered please see Siebenmorgen et al. (1992  A&A  266,  501)  (http://cdsads.u-
              strasbg.fr/abs/1992A%26A...266..501S).

              At  present  the  grain  temperature  spiking  routines  are  only  implemented for
              carbonaceous or silicate grains. mocassin will expect to be told what type of grain
              he is dealing with when calculating the spiking. This is done by adding a -capital-
              'S' or 'C' at the beginnig of the species label in the optical constants file. e.g.
              for  the  Draine & Laor (1993) (http://cdsads.u-strasbg.fr/abs/1993ApJ...402..441L)
              silicates data (dustData/sil-dlaor.nk):

                nk
                Ssil_dl  1400. 3.3  0.588 20.077
                0.10000E-02 0.99956E+00 0.97380E-04
                0.10120E-02 0.99955E+00 0.10160E-03
                0.10230E-02 0.99954E+00 0.10610E-03
                0.10350E-02 0.99953E+00 0.11060E-03
                0.10470E-02 0.99952E+00 0.11520E-03
                0.10590E-02 0.99951E+00 0.12000E-03
                .........

              Please email me  (http://mocassin.nebulousresearch.org/contact.php)  if  you  would
              like to include T-spiking effects for other species.

Limitations and future development

       mocassin's  principal  limitation  is  imposed  by the computer power available. The great
       volume of data which has to be handled in a three-dimensional simulation, implies the need
       for  a  system with multi-processing capabilities in order to accelerate the computational
       time. However, the fast development of Beowulf Linux clusters is making parallel computing
       more affordable, and this is also a reason why the MPI formalism was chosen (as opposed to
       openMP), as this allows information to be  passed  from  one  processor  to  another  and,
       therefore,  it  does  not necessarily require a system with shared memory facilities. Such
       systems, which include the Silicon Graphics Origin 2000 machine used for  this  work,  are
       generally much more expensive than Beowulf clusters.

       Pure-dust  models  are  less  computationally  expensive than gas or dust and gas ones and
       reasonably sizes grids can be feasibly run on single processor machines.

       mocassin was designed for the modelling of the photoionised region  of  planetary  nebulae
       and  H  II regions and it does not, at present, include the high energy physical processes
       which are needed, for example,  for the  modelling  of  AGNs.  However  the  inclusion  of
       processes  such  as inner shell photoionisation and Compton heating is straightforward and
       this is intended to be one of the developments of  the  near  future.   Moreover,  current
       efforts  are geared toward the inclusion of a self-consistent treatment for PDR processes,
       this requires the incorporation of a chemical network.

BUGS

       No known bugs.

AUTHOR

       Barbara Ercolano