Turbulox
Documentation for Turbulox.
Turbulox.Turbulox
Turbulox.Coll
Turbulox.Grid
Turbulox.Stag
Turbulox.apply!
Turbulox.applyfilter!
Turbulox.applyfilter!
Turbulox.applyfilter!
Turbulox.clark_model
Turbulox.collocated_tensorfield
Turbulox.convectiondiffusion!
Turbulox.convterm
Turbulox.default_right_hand_side!
Turbulox.dim
Turbulox.divergence!
Turbulox.dx
Turbulox.e
Turbulox.eddyviscosity_closure!
Turbulox.eddyviscosity_model
Turbulox.expand_tensorbasis!
Turbulox.fill_invariants!
Turbulox.fill_tensorbasis!
Turbulox.gaussian
Turbulox.get_axis
Turbulox.get_scale_numbers
Turbulox.getval
Turbulox.mergestencil
Turbulox.nicoud_viscosity!
Turbulox.order
Turbulox.poissonsolver
Turbulox.pol_tensor_collocated
Turbulox.pol_tensor_stag
Turbulox.pressuregradient!
Turbulox.project!
Turbulox.propose_timestep
Turbulox.s3pqr_viscosity!
Turbulox.scalarfield
Turbulox.smagorinsky_viscosity!
Turbulox.staggered_tensorfield
Turbulox.tensorbasis
Turbulox.tensordivergence!
Turbulox.tensordivergence_collocated!
Turbulox.tensorproduct_coll!
Turbulox.tensorproduct_stag!
Turbulox.timestep!
Turbulox.vectorfield
Turbulox.verstappen_viscosity!
Turbulox.vreman_viscosity!
Turbulox.Turbulox
— ModuleSimulate turbulence in a box.
Turbulox.Coll
— TypeCollocated grid position.
Turbulox.Grid
— TypeStaggered grid of order o
and dimension d
.
Turbulox.Stag
— TypeStaggered grid position.
Turbulox.apply!
— MethodApply kernel!
on grid, args...
over the entire domain. The args
are typically input and output fields. The kernel should be of the form
using KernelAbstractions
@kernel function kernel!(grid, args...)
# content
end
Turbulox.applyfilter!
— MethodFilter scalar field.
Turbulox.applyfilter!
— MethodFilter staggered tensor field.
Turbulox.applyfilter!
— MethodFilter staggered vector field.
Turbulox.clark_model
— MethodClark's gradient model [1].
Turbulox.collocated_tensorfield
— MethodAllocate empty tensor field (collocated).
Turbulox.convectiondiffusion!
— FunctionCompute convection-diffusion force from velocity u
. Add the force field to f
.
Turbulox.convterm
— FunctionApproximate the convective force $\partial_j (u_i u_j)$.
Turbulox.default_right_hand_side!
— MethodDefault right-hand side function (without projection).
Turbulox.dim
— MethodGet physical dimension.
Turbulox.divergence!
— FunctionCompute divergence of vector field u
. Put the result in div
.
Turbulox.dx
— MethodGet grid spacing.
Turbulox.e
— MethodGet unit index in dimension i
.
Turbulox.eddyviscosity_closure!
— MethodDivergence of -2 * visc * S
. Interpolate visc
to staggered points first. Subtract result from existing force field f
.
Turbulox.eddyviscosity_model
— MethodEddy viscosity closure model.
Turbulox.expand_tensorbasis!
— MethodExpand tensor basis B
and fill τ[x] = c[i, x] * B[i, x]
(sum over i
).
Turbulox.fill_invariants!
— MethodFill V
with invariants.
Turbulox.fill_tensorbasis!
— MethodFill B
with basis tensors.
Turbulox.gaussian
— MethodGaussian filter kernel.
Turbulox.get_axis
— MethodGet grid points along axis.
Turbulox.get_scale_numbers
— MethodGet the following dimensional scale numbers [2]:
- Velocity $u_\text{avg} = \langle u_i u_i \rangle^{1/2}$
- Dissipation rate $\epsilon = 2 \nu \langle S_{ij} S_{ij} \rangle$
- Kolmolgorov length scale $\eta = (\frac{\nu^3}{\epsilon})^{1/4}$
- Taylor length scale $\lambda = (\frac{5 \nu}{\epsilon})^{1/2} u_\text{avg}$
- Taylor-scale Reynolds number $Re_\lambda = \frac{\lambda u_\text{avg}}{\sqrt{3} \nu}$
- Integral length scale $L = \frac{3 \pi}{2 u_\text{avg}^2} \int_0^\infty \frac{E(k)}{k} \, \mathrm{d} k$
- Large-eddy turnover time $\tau = \frac{L}{u_\text{avg}}$
Turbulox.getval
— MethodGet value from Val
.
Turbulox.mergestencil
— MethodMerge stencil periodically if the stencil is longer than the grid size n
.
Turbulox.nicoud_viscosity!
— MethodTurbulox.order
— MethodGet order of grid.
Turbulox.poissonsolver
— MethodCreate spectral Poisson solver from grid.
Turbulox.pol_tensor_collocated
— MethodInterpolate staggered tensor to volume centers.
Turbulox.pol_tensor_stag
— MethodInterpolate collocated tensor to staggered tensor.
Turbulox.pressuregradient!
— FunctionSubtract pressure gradient.
Turbulox.project!
— MethodProject velocity field onto divergence-free space.
Turbulox.propose_timestep
— MethodGet proposed maximum time step for convection and diffusion terms.
Turbulox.s3pqr_viscosity!
— MethodTurbulox.scalarfield
— MethodAllocate empty scalar field.
Turbulox.smagorinsky_viscosity!
— MethodCompute Smagorinsky's original eddy viscosity [5]. Proposed value for C
is 0.17.
Turbulox.staggered_tensorfield
— MethodAllocate empty tensor field (staggered).
Turbulox.tensorbasis
— FunctionCompute Pope's tensor basis [2].
Turbulox.tensordivergence!
— MethodDivergence of staggered tensor field $σ$. Subtract result from existing force field $f$. The operation is $f_i \leftarrow f_i - ∂_j σ_{i j}$.
Turbulox.tensordivergence_collocated!
— MethodDivergence of collocated tensor field $\sigma$. First interpolate to staggered points. Subtract result from existing force field $f$. The operation is $f_i \leftarrow f_i - ∂_j σ_{i j}$.
Turbulox.tensorproduct_coll!
— MethodCompute $u v^T$ in the collocated points.
Turbulox.tensorproduct_stag!
— MethodCompute $u v^T$ in the staggered points.
Turbulox.timestep!
— MethodPerform time step using Wray's third-order scheme.
Turbulox.vectorfield
— MethodAllocate empty vector field.
Turbulox.verstappen_viscosity!
— MethodTurbulox.vreman_viscosity!
— Method