Molecular
Where it is
Section titled “Where it is”Setup tree: Molecular
Controls
Section titled “Controls”Method
Section titled “Method”Solver
Section titled “Solver”- Control: choice (
ComboRow) - Bound to:
CaseState.solver - Options:
dsmcFoam,mdEquilibrationFoam,mdFoam - Writes:
controlDict/application
Mixture
Section titled “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
Section titled “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
Section titled “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
Section titled “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
Section titled “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
Section titled “Boundary”The box is
Section titled “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
Section titled “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
Section titled “Substance”Molecule
Section titled “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
Section titled “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
Section titled “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
Section titled “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
Section titled “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
Section titled “Domain”Box side
Section titled “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
Section titled “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
Section titled “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.