OpenFOAM® v2012: New and updated solvers and physics
New vibro-acoustics solver
This releases introduces a new finite area model to solve a thin vibrating shell.
Bending waves are the main contributor to acoustic sound radiation from vibrating shell-type structures. For thin shells of homogenous material the first order motions of vibration are described by the Kirchhoff-Love plate theory. With reasonable assumptions, this theory reduces to a two dimensional bi-harmonic wave equation. For vibro-acoustic applications this needs to be extended by some damping mechanism to ensure the expected frequency dependency behaviour.
To calculate the sound radiation from the bending wave motion, a straightforward approach is the formulation of a boundary condition for the acoustic wave equation.
The new acousticFoam solver targets the linearized acoustic pressure equation under the assumptions of an homogeneous and quiescent medium.
BC to handle vibrating plate and coupling to acousticFoam
The new vibrationShell boundary condition couples the 2-D vibrating plate and 3-D acoustic equation. It automatically creates a run-time selectable vibrationShellModel which is advanced at every time step as the boundary condition is updated.
This gradient-type condition applies a fixed gradient to the acoustic pressure equation, and also holds the material properties of the flat plate, i.e. rho, E and nu.
p pa; // --> acoustic pressure field name
// Input name of the finite area region
// vibrating plate model
f0 0.04; // --> model coefficients
value uniform 0;
Vibrating plate model
The only vibrationShellModel available with this release is the KirchhoffShell model where only normal displacements are permitted.
The name of the finite area region is given by the keyword region in the vibrationShell boundary condition. Thus, all the variable solved by the finite area will have a appended _<region> to their name, e.g. the plate thickness, h, will be written pa_<region1>.
The flat plate solution is controlled via /system/faSolution file:
faOption source mapping from file
Pressure sources are added to the equilibrium plate equation using faOptions, a run-time selectable framework for manipulating equations using the same familiar approach provided by fvOptions.
The new externalFileSource faOption reads files written in the boundaryData format, permitting straightforward space and time data interpolation to the finite area model.
An example usage in system/faOption follows:
fieldName ws_vibrationShell; // --> field being solved for
tableName p; // --> name of the files.
This looks for a folder in constant/boundaryData/window/<times>/p and an associated points file.
clampedPlate boundary condition for vibrating plates
The new clampedPlate boundary condition imposes a zero displacement and gradient to the nodes of the plate.
acousticWaveTransmissive boundary condition for acoustic pressure
The new acousticWaveTransmissive condition was introduced, where the acoustic speed is input by the user (and not calculated). As the acoustic equation is solved the Courant number is known and there is no need to introduce an extra convective velocity as the medium is assumed to be still.
- Source code
Incompressible non-uniform density turbulent model for VOF
Many incompressible volume of fluid (VOF) cases solved using the interFoam application suffer from spurious velocities at the phase interface, which lead to wave damping due to turbulent viscosity over-production. These effects are created, in part, by the large density gradient between phases. Taking into account the variation of density between the phases into the turbulence transport helps to reduce this effect.
A new option has been added to the interFoam and interIsoFoam. solvers. The non-uniform density approach is controlled by the density keyword in the turbulenceProperties dictionary as follows:
By default density is set to uniform to recover the behaviour of earlier releases, ensuring backwards compatibility.
- Source code
- This new feature was prompted by Wenyuan Fan who contributed to the present formulation of an incompressible non-uniform density turbulent transport for VOF.
Generalized Newtonian viscosity models
The feature from openfoam.org allows the use of generalized Newtonian models for both compressible and incompressible flows. It forms part of the laminar turbulence framework, controlled using the entries within the laminar sub-dictionary.
The laminar viscosity is taken from the thermodynamics package for compressible solvers (if available) or from the transportProperties for incompressible solvers.
Note that the option to include viscosity models through the transportDict in incompressible solvers is still available, but will be deprecated in future versions.
The following models are available:
The model is specified in the turbulenceProperties dictionary as follows:
- Source code
- This feature was ported from openfoam.org
New tabulated thermodynamics
This feature from openfoam.org allows the use of a tabulated equation of state (EoS), viscosity transport and thermodynamics.
The tabulated EoS is called icoTabulated and comprises an incompressible formulation, the new thermo functionality is called hTabulated and the transport viscosity model is named tabulated.
As an example, the models are specified in thermophysicalProperties file as follows:
- Source code
- This feature was ported from openfoam.org
New noise utility weightings
Noise-related models have been refactored, and A, B, C, and D weightings made available.
The weighting can be selected using the new SPLweighting keyword, where options include:
- none: no weighting (default)
- dBA: dB(A) weighting
- dBB: dB(B) weighting
- dBC: dB(C) weighting
- dBD: dB(D) weighting
New buoyancy fvOption
The buoyancyTurbSource finite-volume option applies sources on turbulent kinetic energy, k, and either turbulent kinetic energy dissipation rate, epsilon, or specific dissipation rate, omega, to incorporate effects of buoyancy on turbulence in incompressible and compressible flows. It is generally applicable where density gradients exist such as compressible heat transfer and wave modelling using the volume-of-fluid method. The minimum working example of this finite-volume option can be seen below:
- Source code
- Barakos, G., Mitsoulis, E., & Assimacopoulos, D. O. (1994). Natural convection flow in a square cavity revisited: laminar and turbulent models with wall functions. Int. J. for Numerical Methods in Fluids, 18(7), 695-719. DOI:10.1002/fld.1650180705
- Devolder, B., Troch, P., & Rauwoens, P. (2018). Performance of a buoyancy-modified k- and k- SST turbulence model for simulating wave breaking under regular waves using OpenFOAM. Coastal Engineering, 138, 49-65. DOI:10.1016/j.coastaleng.2018.04.011
- OpenCFD would like to thank Dr. Brecht Devolder (DEME Group) for the useful discussions, his helpful suggestions, and providing various verification/test cases.
New multi-component evaporation and condensation droplet modelling
Universal aerosol condensation and evaporation models are typically formed by grouping droplet (or particle) components and applying simplifications, including:
- Soluble and evaporable components
- The evaporable components directly lead to droplet-size change due to the mass transfer across the liquid-gas interface.
- Soluble but non-evaporable components
- These normally do not experience mass change during the aerosol growth/evaporation process. However, they occupy parts of the surface at the liquid-gas interface. Accordingly, they reduce the mass fractions of the evaporable components on the droplet side, and affect the droplet diameter at the equilibrium state.
- Insoluble and non-evaporable components
- These have a limited effect on particle growth/evaporation, except for their contributions to the aerosol size and thermal capacity.
The new model takes into account
- the Fuchs-Knudsen number correction;
- modified Raoult’s law to obtain the concentration of the evaporable component on the surface;
- activity coefficient; and
- correction Kelvin.
New method for particle mass/volume update
Particle mass/volume updates are now controlled using the new volumeUpdateMethod keyword, offering the following options:
- constantRho: updates the density of the particle keeping the volume constant
- constantVolume: updates the volume of the particle keeping the density constant
- updateRhoAndVol: updates both volume and density
Note on backwards compatibility: the old keyword constantVolume true/false has priority over volumeUpdateMethod.
The entry rho0 is now optional for multi-component parcels. If defined it is used; if not, the density is calculated from the original mixture. T0 is still used as initial parcel temperature, and Cp0 still required but is over-written by the mixture properties.
The new liquidEvapFuchsKnudsen model is based on a diffusion type of evaporation-condensation on particles composed of a liquid-solid solution.
gamma 6.8e-8; // Mean gas free path
alpham 1; // The mass thermal accommodation
solution (H2O NaCl); // Solution (liquid solid)
activityCoefficient Hoff; // Activity coefficient Model
ic 1.85; // Activity coefficient (Hoff)
The entry solution controls which components of the liquid and solid phases form the solution which exchange mass with the fluid, taking the format (’liquid’ ’solid’).
- Source code
- Xiaole Chen, Yu Feng, Wenqi Zhon, Clement Kleinstreuer. Numerical investigation of the interaction, transport and deposition of multicomponent droplets in a a simple mouth-throat model. Journal of Aerosol Science, 105(2017), 108-127. DOI:10.1016/j.jaerosci.2016.12.001
Lagrangian: new particle recycling
The new recycleInteraction particle interaction model enables particles to re-enter the domain having hit an outflow patch. Particles are reintroduced at random locations on the specified inlet patch with the same local velocity as the carrier flow. The recycleFraction is used to scale the number of particles represented by each computational parcel to represent withholding of a fraction of the particle volume.
The model is designed to be used with the multiInteraction patch interaction model, so that ’other’ models control how particles interact with non-recycling patches, e.g.
// list of (outlet->inlet) mappings
recyclePatches ((outlet inlet2));
// fraction of particles to re-introduced
// Optionally write the interaction histories to file
At run-time additional statistics are provided to show the progress:
Parcel fate: system (number, mass)
- escape = 0, 0
Parcel fate: patch outlet (number, mass)
- removed = 130, 1.8600759e-05
Parcel fate: patch inlet2 (number, mass)
- injected = 127, 1.4365714e-05
The following video shows a case where particles are continually fed from the inlet on the left, and after exiting the domain on the right, are re-cycled via the upper patch.