gloss-examples-1.7.3.1: raster/Fluid/Config.hs
module Config
( Config (..)
, configScale)
where
import Model
import Data.Array.Repa
data Config
= Config
{ -- | Size of window in pixels
configWindowSize :: (Int, Int)
-- | Simulation rate (frames per second)
, configRate :: Int
-- | Maximum number of steps in simulation
, configMaxSteps :: Int
-- | Whether to run in batch-mode, non-interactively.
, configBatchMode :: Bool
-- | Number of cells in model.
, configModelSize :: (Int, Int)
-- | Time delta per step.
, configDelta :: !Delta
-- | Diffusion rate.
, configDiffusion :: !Float
-- | Fluid viscosity.
, configViscosity :: !Float
-- | Magnitude of density to add with user interface.
, configDensity :: !Float
-- | Magnitude of velocity to add with user interface.
, configVelocity :: !(Float, Float)
-- | Initial density array
, configInitialDensity :: !(Array U DIM2 Float)
-- | BMP file to use as the initial velocity
, configInitialVelocity :: !(Array U DIM2 (Float, Float))
}
configScale :: Config -> (Float, Float)
configScale config
= let (windowWidth, windowHeight) = configWindowSize config
(modelWidth, modelHeight) = configModelSize config
in ( fromIntegral windowWidth / fromIntegral modelWidth
, fromIntegral windowHeight / fromIntegral modelHeight)