OpenFOAM® v2012: New and updated solvers and physics

23/12/2020

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.

acousticFoam

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.

window
{
    type                vibrationShell;
    active              true;
    p                   pa; // --> acoustic pressure field name

    solid
    {
        rho                 2500;

        kappa               200;
        Cp                  600;
        Hf                  0;
        emissivity          0;

        E                   7e10;
        nu                  0.22;
    }

    // Input name of the finite area region
    region                vibrationShell;

    // vibrating plate model
    vibrationShellModel   KirchhoffShell;

    f0             0.04; // --> model coefficients
    f1             0;
    f2             0;

    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:

nNonOrthCorr 0;
nSubCycles 5;

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:

pressure
{
    type            externalFileSource;
    fieldName       ws_vibrationShell;  // --> field being solved for
    tableName       p;                  // --> name of the files.
    active          true;
    timeStart       0.001;
    duration        0.03;
    region          vibrationShell;
    selectionMode   all;
}

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
$FOAM_SRC/regionFaModels/KirchhoffShell
Tutorial
$FOAM_TUTORIALS/compressible/acousticFoam/obliqueAirJet

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:

simulationType  RAS;

density         variable;

RAS
{
    RASModel        kEpsilon;

    turbulence      on;

    printCoeffs     on;
}

By default density is set to uniform to recover the behaviour of earlier releases, ensuring backwards compatibility.

Source code
$FOAM_SRC/fvOptions/sources/derived/buoyancyTurbSource
Tutorial
$FOAM_TUTORIALS/multiphase/interFoam/RAS/damBreak
Attribution
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:

  • BirdCarreau
  • Casson
  • CrossPowerLaw
  • HerscheBulkley
  • powerLaw

The model is specified in the turbulenceProperties dictionary as follows:

simulationType  laminar;

laminar
{
    model           generalizedNewtonian;
    viscosityModel  powerLaw;
    nuMin           1e-06;
    nuMax           1;
    k               0.02;
    n               0.4;
}

Source code
$FOAM_SRC/TurbulenceModels/turbulenceModels/laminar/generalizedNewtonian
Tutorial
$FOAM_TUTORIALS/compressible/rhoSimpleFoam/squareBendLiqNoNewtonian
$FOAM_TUTORIALS/multiphase/icoReactingMultiPhaseInterFoam/inertMultiphaseMultiComponent
Attribution
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:

thermoType
{
    type            heRhoThermo;
    mixture         pureMixture;
    transport       tabulated;
    thermo          hTabulated;
    equationOfState icoTabulated;
    specie          specie;
    energy          sensibleEnthalpy;
}

mixture
{
    specie
    {
        nMoles          1;
        molWeight       200.9;
    }
    equationOfState
    {
        rho
        (
            (200 13525)
            (350 13529)
            (400 13520)
        );
    }
    thermodynamics
    {
        Hf              0;
        Sf              0;
        Cp
        (
            (200     139)
            (350     140)
            (400     145)
        );
    }

    transport
    {
        mu
        (
            (200 0.0015)
            (350 0.002)
            (400 0.0025)
        );

        kappa
        (
            (200 2.56e-2)
            (350 3.33e-2)
            (400 4.72e-2)
        );
    }
}

Source code
$FOAM_SRC/TBA
Tutorial
$FOAM_TUTORIALS/multiphase/icoReactingMultiPhaseInterFoam/inertMultiphaseMultiComponent/
Attribution
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

[Picture]

Source code
$FOAM_SRC/randomProcesses/noise/noiseModels/noiseModel

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:

buoyancyTurbSource1
{
    type            buoyancyTurbSource;

    beta            3.3e-03;
    rho             rho;
    alphat          alphat;
    T               T;
}
The follwing pair of images show the effect of the buoyancyTurbSource on temperature and velocity fields obtained from the tutorial:

$FOAM_TUTORIALS/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom

[Picture]

Source code
$FOAM_SRC/fvOptions/sources/derived/buoyancyTurbSource
Tutorial
$FOAM_TUTORIALS/heatTransfer/buoyantBoussinesqSimpleFoam/hotRoom
References
  • 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
Attribution
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.

constantProperties

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.

Evaporation-Condensation Model

The new liquidEvapFuchsKnudsen model is based on a diffusion type of evaporation-condensation on particles composed of a liquid-solid solution.

phaseChangeModel            liquidEvapFuchsKnudsen;

liquidEvapFuchsKnudsenCoeffs
{
    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)
    enthalpyTransfer    enthalpyDifference;
}

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
$FOAM_SRC/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvapFuchsKnudsen
Tutorial
$FOAM_TUTORIALS/lagrangian/reactingParcelFoam/rectangularChannel
References
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.

multiInteractionCoeffs
{
    oneInteractionOnly no;

    model2
    {
        patchInteractionModel    recycleInteraction;
        recycleInteractionCoeffs
        {
            // list of (outlet->inlet) mappings
            recyclePatches ((outlet inlet2));

            // fraction of particles to re-introduced
            recycleFraction 0.8;
        }
    }
    model1
    {
        patchInteractionModel    standardWallInteraction;
        standardWallInteractionCoeffs
        {
            type            rebound;
        }

        // Optionally write the interaction histories to file
        writeToFile     yes;
    }
}

At run-time additional statistics are provided to show the progress:

Patch interaction model recycleInteraction:
        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.

Source code
$FOAM_SRC/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/RecycleInteraction
Tutorial
$FOAM_TUTORIALS/lagrangian/reactingParcelFoam/recycleParticles