content: 
  module Solve.Velocity
          (velocitySteps)
  where
  import Stage.Diffusion
  import Stage.Advection
  import Stage.Sources
  import Stage.Project
  import Model
  import Config
  
  -- The pass that sets boundary conditions is buggy and
  -- currently disabled.
  -- import Stage.Boundary
  velocitySteps
          :: Config
          -> Int
          -> VelocityField
          -> Maybe (SourceDensity (Float, Float))
          -> IO VelocityField
  
  velocitySteps config _step vf vs
   = {-# SCC "Solve.velocitySteps" #-}
     do
          vf1     <- addSources   (configDelta config) (configVelocity config)
                                  vs vf
  
          let diffSolver = DiffStable (configIters config)
          vf2     <- diffusion    diffSolver (configDelta config) (configVisc config)
                                  vf1
  --      vf3     <- setBoundary vf2
  
          vf4     <- project      (configIters config) vf2
  --      vf5     <- setBoundary vf4
  
          vf6     <- advection    (configDelta config) vf4 vf4
  --      vf7     <- setBoundary vf6
  
          vf8     <- project      (configIters config) vf6
  --      vf'     <- setBoundary vf8
  
          return  vf8
  