Draft. This manual is new and still growing. If something here does not match what you see in the software, the software is right — tell us and we will fix the page.
Molecular
Where it is
Setup tree: Molecular
Controls
Method
Solver
- Control: choice (
ComboRow) - Bound to:
CaseState.solver - Options:
dsmcFoam,mdEquilibrationFoam,mdFoam - Writes:
controlDict/application
Gas
Mixture
- Control: choice (
ComboRow) - Default:
Air (N2/O2) - Bound to:
CaseState.dsmcGas - Options:
Air (N2/O2),Argon(fromCaseState.dsmcGases) - Writes:
dsmcProperties/typeIdList - Shown when:
!CaseState.usesMolecularDynamics
The in-app guidance depends on the case:
- One monatomic species. No internal degrees of freedom, so collisions exchange translation only and the collision model is the plain variable hard sphere.
- Nitrogen and oxygen, 77.7 / 22.3 by number. Both diatomic, so collisions also exchange rotational energy - which is what the Larsen-Borgnakke model adds.
Number density
- Control: value (
ValueField) - Unit: 1/m³
- Default:
1.0e20 - Bound to:
CaseState.dsmcNumberDensity - Writes:
dsmcInitialiseDict/numberDensities - Shown when:
!CaseState.usesMolecularDynamics
Molecules per cubic metre. Sea level is 2.5e25; this is the one number that decides whether the gas is rarefied.
Temperature
- Control: value (
ValueField) - Unit: K
- Default:
300 - Bound to:
CaseState.dsmcTemperature - Writes:
dsmcInitialiseDict/temperature - Shown when:
!CaseState.usesMolecularDynamics
The temperature the initial velocity distribution is drawn from.
Stream speed
- Control: value (
ValueField) - Unit: m/s
- Default:
1950 - Bound to:
CaseState.dsmcStreamVelocity - Writes:
dsmcInitialiseDict/velocity - Shown when:
!CaseState.usesMolecularDynamics
Bulk velocity along +X, on top of the thermal motion. Zero for a gas at rest; a few hundred metres per second is already hypersonic at this density.
Particle weight
- Control: value (
ValueField) - Default:
1.0e12 - Bound to:
CaseState.dsmcEquivalentParticles - Writes:
dsmcProperties/nEquivalentParticles - Shown when:
!CaseState.usesMolecularDynamics
Real molecules per simulated particle. The cost dial: halve it and the run takes twice as long and is √2 less noisy.
Boundary
The box is
- Control: choice (
ComboRow) - Default:
Periodic box - Bound to:
CaseState.dsmcBoundary - Options:
Periodic box,Free stream,Enclosed(fromCaseState.dsmcBoundaryKinds) - Writes:
blockMeshDict/boundary + dsmcProperties/InflowBoundaryModel - Shown when:
!CaseState.usesMolecularDynamics
Wall temperature
- Control: value (
ValueField) - Unit: K
- Default:
300 - Bound to:
CaseState.dsmcWallTemperature - Writes:
0/boundaryT - Shown when:
CaseState.dsmcIsEnclosed
What the walls re-emit at. Set it above the gas temperature and the run is a heat-transfer measurement.
Substance
Molecule
- Control: choice (
ComboRow) - Default:
Argon - Bound to:
CaseState.mdSubstance - Options:
Argon,Water(fromCaseState.mdSubstances) - Writes:
moleculeProperties + potentialDict - Shown when:
CaseState.usesMolecularDynamics
The in-app guidance depends on the case:
- Four interaction sites - two hydrogens, an oxygen and a massless charge site - with a Lennard-Jones term between the oxygens and a damped Coulomb term between the charges.
- One spherical site, no charge, Maitland-Smith potential. The cheapest molecular dynamics there is and the one every method is checked against.
Mass density
- Control: value (
ValueField) - Unit: kg/m³
- Default:
1220 - Bound to:
CaseState.mdDensity - Writes:
mdInitialiseDict/liquid/massDensity - Shown when:
CaseState.usesMolecularDynamics
What the lattice is filled to. This sets the molecule count, and with it the whole cost of the run.
Temperature
- Control: value (
ValueField) - Unit: K
- Default:
300 - Bound to:
CaseState.mdTemperature - Writes:
mdInitialiseDict/liquid/temperature - Shown when:
CaseState.usesMolecularDynamics
The velocity distribution the lattice starts from.
Target
- Control: value (
ValueField) - Unit: K
- Default:
300 - Bound to:
CaseState.mdTargetTemperature - Writes:
mdEquilibrationDict/targetTemperature - Shown when:
CaseState.solver === "mdEquilibrationFoam"
What the velocities are rescaled towards each step. The lattice converts potential energy into kinetic energy as it relaxes, so without this it settles well away from where it started.
Bulk speed
- Control: value (
ValueField) - Unit: m/s
- Default:
0 - Bound to:
CaseState.mdBulkVelocity - Writes:
mdInitialiseDict/liquid/bulkVelocity - Shown when:
CaseState.usesMolecularDynamics
A drift along +X added to every molecule. Zero for a fluid at rest, which is what a transport-property measurement wants.
Domain
Box side
- Control: value (
ValueField) - Bound to:
CaseState.usesMolecularDynamics - Writes:
blockMeshDict/vertices
The in-app guidance depends on the case:
- A cube. It has to be at least two nanometres across, because the pair potential reaches one and a periodic box narrower than twice that lets a molecule see two copies of the same neighbour.
- A cube, centred on the origin. There is no body in it - see the note at the bottom of this pane.
Divisions
- Control: value (
ValueField) - Bound to:
CaseState.usesMolecularDynamics - Writes:
blockMeshDict/blocks
The in-app guidance depends on the case:
- Cells per side. These sort molecules into neighbour lists and nothing is solved on them, so the count is a cost trade rather than an accuracy one.
- Cells per side. Every quantity DSMC reports is an average over the particles in a cell, and collision partners are picked from within one - so the cell wants to be smaller than a mean free path and still hold tens of particles.
Problems reported against this step
The application checks these before a run and reports them in the Problems tab against this step.
| Severity | Message |
|---|---|
| error | The box is … nm across and the pair potential reaches … nm. A periodic box has to be at least twice the cut-off or a molecule interacts with two copies of the same neighbour. Make it at least … nm. |
| error | The mass density has to be greater than zero; it is what mdInitialise fills the lattice from, and at zero it builds no molecules at all. |
| warn | About … molecules. Every one interacts with every neighbour inside a nanometre, every femtosecond - halve the box and the cost falls eightfold. |
| warn | The cell is … m and the mean free path … m. DSMC picks collision partners from within a cell, so a cell larger than a mean free path collides molecules that never met. Use at least … divisions. |
| warn | About … particles per cell. Everything DSMC reports is an average over them, so below ten the fields are grainy - lower the equivalent-particle count or use fewer, larger cells. |
| error | The number density has to be greater than zero, or dsmcInitialise puts no particles in the domain and the run has nothing to move. |
| error | One simulated particle has to stand for at least one real molecule. |
| warn | Knudsen number …. Below about 0.01 the gas is a continuum and an ordinary CFD solver is both faster and more accurate - DSMC is for the rarefied end. |
… marks a value the application computes at run time, so the source carries no fixed text for it.