Safe Haskell | None |
---|
Domain operations: defining domains; free flow boundary conditions & clipping for DSMC steps.
PRNG required to sample molecular velocities implies monadic interface
for most of operations. We use functions specifically typed for ST
.
- data Domain = Domain !Double !Double !Double !Double !Double !Double
- getDimensions :: Domain -> (Double, Double, Double)
- getCenter :: Domain -> Point
- makeDomain :: Point -> Double -> Double -> Double -> Domain
- initializeParticles :: Domain -> Flow -> Body -> Seed -> (Ensemble, Seed)
- openBoundaryInjection :: DomainSeeds -> Domain -> Double -> Flow -> Ensemble -> (Ensemble, DomainSeeds)
- type DomainSeeds = (Seed, Seed, Seed, Seed, Seed, Seed)
- clipToDomain :: Domain -> Ensemble -> Ensemble
- freeVolume :: Domain -> Body -> Int -> GenST s -> ST s Double
- freeVolumes :: Body -> Int -> GenST s -> Vector Domain -> ST s (Vector Double)
Documentation
Domain in which particles are spawned or system evolution is simulated.
getDimensions :: Domain -> (Double, Double, Double)Source
Calculate width, length and height of a domain, which are dimensions measured by x, y and z axes, respectively.
Create a rectangular domain with center in the given point and dimensions.
Flow boundary
initializeParticles :: Domain -> Flow -> Body -> Seed -> (Ensemble, Seed)Source
Fill the domain with particles for given flow parameters. Particles inside the body are removed.
:: DomainSeeds | |
-> Domain | Simulation domain. |
-> Double | Interface domain extrusion length. |
-> Flow | |
-> Ensemble | |
-> (Ensemble, DomainSeeds) |
Sample new particles in 6 interface domains along each side of rectangular simulation domain and add them to existing ensemble.
This function implements open boundary condition for three-dimensional simulation domain.
Interface domains are built on faces of simulation domain using extrusion along the outward normal of the face.
In 2D projection:
+-----------------+ | Interface1 | +--+-----------------+--+ |I3| Simulation |I4| | | domain | | +--+-----------------+--+ | I2 | +-----------------+
Particles in every interface domain are spawned in parallel using Strategies.
type DomainSeeds = (Seed, Seed, Seed, Seed, Seed, Seed)Source
PRNG seeds used by particle generators.
clipToDomain :: Domain -> Ensemble -> EnsembleSource
Filter out particles which are outside of the domain.