/* Mutual dependencies for the Pencil Code.
   Run this through
     dot -Tps dependencies.dot -o deps.ps
   to obtain a PostScript graph. dot is part of AT&T's `graphviz'
   package.
 */
digraph G {

  /* The two executables */
  node [shape=box];
  { rank=same; Start; Run }

  /* */
  node [shape=ellipse];
  { rank=same; Register; Timestep }

  Equ;

  { rank=same; Sub; Slices }

  /* The physics modules */
  node [shape=diamond];
  { rank=same; Forcing; Entropy; Magnetic }

  /* */
  node [shape=ellipse];
  { rank=same; Deriv; IO }

  /* These do not depend on anybody else */
  node [shape=circle];
  { rank=same; General; Mpicomm; Cdata }



  node [shape=ellipse];
  Cparam;

/*    Start [shape=box]; */
/*    Run [shape=box]; */

    /* The physics modules */
/*     Forcing [shape=diamond]; */
/*     Entropy [shape=diamond]; */
/*     Magnetic [shape=diamond]; */


  Start -> Cdata;
  Start -> General;
  Start -> Sub
  Start -> Mpicomm;
  Start -> Register;
  Start -> Entropy;
  Start -> Magnetic;

  Run -> Cdata;
  Run -> Sub;
  Run -> Equ;
  Run -> Forcing;
  Run -> General;
  Run -> Mpicomm;
  Run -> Register;
  Run -> Slices;
  Run -> Timestep;

  Cdata -> Cparam;

  Slices -> Cdata;

  Deriv -> Cdata;

  IO -> Mpicomm;
  IO -> Cdata;

  Sub -> Cdata;
  Sub -> Deriv;
  Sub -> General;
  Sub -> IO;
  Sub -> Mpicomm;

  Register -> Cdata;
  Register -> Sub;
  Register -> Mpicomm;
  Register -> Entropy;
  Register -> Magnetic;
/*    Register -> Forcing; */

  Equ -> Cdata;
  Equ -> Slices;
  Equ -> Sub;
  Equ -> Deriv;
  Equ -> Entropy;
  Equ -> Magnetic;
/*    Equ -> Forcing; */
  Equ -> Mpicomm;

  Timestep -> Cdata;
  Timestep -> Equ;
  Timestep -> Forcing;
  Timestep -> Mpicomm;
}
