ENH: New atmospheric boundary layer (ABL) model suite (Part 1)

Please refer to the header file documentation for complete set of details.

  ENH: add new fvOptions for ABL modelling

    - atmAmbientTurbSource
    - atmBuoyancyTurbSource
    - atmCoriolisUSource
    - atmLengthScaleTurbSource
    - atmPlantCanopyTurbSource
    - atmPlantCanopyUSource
    - atmPlantCanopyTSource
    - atmNutSource

  ENH: add new boundary conditions for ABL modelling
       with PatchFunction1 and TimeFunction1 support

    - atmAlphatkWallFunction
    - atmEpsilonWallFunction
    - atmNutkWallFunction
    - atmNutUWallFunction
    - atmNutWallFunction
    - atmOmegaWallFunction
    - atmTurbulentHeatFluxTemperature

  STYLE: change names of nutkAtmRoughWallFunction -> atmNutkWallFunction by
         ensuring the bitwise backward compatibility

  ENH: add new variable-scaling force computation method to actuationDiskSource

  ENH: review actuationDiskSource and radialActuationDiskSource

  ENH: add new function object, ObukhovLength

  ENH: add new ABL tutorials/verifications

    - verificationAndValidation/atmosphericModels/atmFlatTerrain
      - verification with the Leipzig field experiment
      - illustration of precursor/successor field mapping
    - verificationAndValidation/atmosphericModels/atmForestStability
      - verification with the Sweden field experiment
    - update incompressible/simpleFoam/turbineSiting
This commit is contained in:
Kutalmis Bercin
2020-05-05 14:20:45 +01:00
committed by Andrew Heather
parent 70cd6c6176
commit 41e264f27d
386 changed files with 53513 additions and 349 deletions

View File

@ -0,0 +1,101 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
scale 1;
vertices
(
(0 0 0)
(200 0 0)
(200 200 0)
(0 200 0)
(0 0 6000)
(200 0 6000)
(200 200 6000)
(0 200 6000)
);
blocks
(
hex (0 1 2 3 4 5 6 7) (3 3 160) simpleGrading (1 1 80)
);
edges
(
);
boundary
(
top
{
type patch;
faces
(
(4 5 6 7)
);
}
bottom
{
type wall;
faces
(
(0 1 2 3)
);
}
inlet
{
type cyclic;
neighbourPatch outlet;
faces
(
(0 4 7 3)
);
}
outlet
{
type cyclic;
neighbourPatch inlet;
faces
(
(1 2 6 5)
);
}
left
{
type cyclic;
neighbourPatch right;
faces
(
(0 4 5 1)
);
}
right
{
type cyclic;
neighbourPatch left;
faces
(
(3 7 6 2)
);
}
);
mergePatchPairs
(
);
// ************************************************************************* //

View File

@ -0,0 +1,104 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application buoyantBoussinesqSimpleFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 100000;
deltaT 1;
writeControl timeStep;
writeInterval 50000;
purgeWrite 0;
writeFormat ascii;
writePrecision 16;
writeCompression off;
timeFormat general;
timePrecision 6;
runTimeModifiable false;
functions
{
ObukhovLength1
{
// Mandatory entries
type ObukhovLength;
libs (fieldFunctionObjects);
// Optional entries
U U;
result1 ObukhovLength;
result2 Ustar;
rhoRef 1.0;
kappa 0.4;
beta 3e-3;
// Optional (inherited) entries
writeControl writeTime;
}
fieldAverage1
{
type fieldAverage;
libs (fieldFunctionObjects);
writeControl writeTime;
fields
(
U
{
mean on;
prime2Mean off;
base time;
}
ObukhovLength
{
mean on;
prime2Mean off;
base time;
}
Ustar
{
mean on;
prime2Mean off;
base time;
}
);
}
#includeFunc "turbulenceFields"
#includeFunc "samples"
}
// ************************************************************************* //

View File

@ -0,0 +1,27 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 2;
method hierarchical;
coeffs
{
n (1 1 2);
}
// ************************************************************************* //

View File

@ -0,0 +1,68 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default steadyState;
}
gradSchemes
{
default Gauss linear;
grad(U) cellMDLimited Gauss linear 1;
}
divSchemes
{
default none;
div(phi,T) bounded Gauss upwind;
div(phi,U) bounded Gauss upwind;
div(phi,k) bounded Gauss upwind;
div(phi,epsilon) bounded Gauss upwind;
div(phi,omega) bounded Gauss upwind;
div((nuEff*dev(T(grad(U))))) Gauss linear;
div((nuEff*dev2(T(grad(U))))) Gauss linear;
}
laplacianSchemes
{
default Gauss linear corrected;
}
interpolationSchemes
{
default linear;
}
snGradSchemes
{
default corrected;
}
fluxRequired
{
default no;
p_rgh;
p_rghPotential;
}
wallDist
{
method meshWave;
}
// ************************************************************************* //

View File

@ -0,0 +1,76 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
p_rgh
{
solver PCG;
preconditioner DIC;
tolerance 1e-15;
relTol 0.1;
maxIter 10;
}
"(U|k|epsilon|omega)"
{
solver PBiCG;
preconditioner DILU;
tolerance 1e-12;
relTol 0.1;
}
T
{
solver PBiCG;
preconditioner DILU;
tolerance 1e-15;
relTol 0.1;
maxIter 10;
}
}
SIMPLE
{
nNonOrthogonalCorrectors 0;
pRefCell 0;
pRefValue 0;
}
relaxationFactors
{
fields
{
p_rgh 0.15;
}
equations
{
U 0.1;
k 0.3;
omega 0.3;
epsilon 0.3;
T 0.015;
}
}
cache
{
grad(U);
grad(T);
}
// ************************************************************************* //

View File

@ -0,0 +1,34 @@
/*--------------------------------*- C++ -*----------------------------------*/
type sets;
libs (sampling);
interpolationScheme cellPoint;
setFormat raw;
writeControl writeTime;
fields
(
T
p_rgh
U
k
ObukhovLength
Ustar
turbulenceProperties:R
);
sets
(
lineZ1
{
type midPoint;
axis z;
start (0 0 0);
end (0 0 6001);
nPoints 200;
}
);
// *********************************************************************** //

View File

@ -0,0 +1,58 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object setFieldsDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
defaultFieldValues
(
volScalarFieldValue qPlant 0
volScalarFieldValue plantCd 0
volScalarFieldValue leafAreaDensity 0
);
regions
(
boxToCell
{
box (0 0 8.60799) (200 200 18.2192);
fieldValues
(
volScalarFieldValue qPlant Q_PLANT
);
}
boxToCell
{
box (0 0 0) (200 200 18.2192);
fieldValues
(
volScalarFieldValue plantCd 0.2
volScalarFieldValue leafAreaDensity 0.14
);
}
patchToFace
{
patch bottom;
fieldValues
(
volScalarFieldValue plantCd 0.2
volScalarFieldValue leafAreaDensity 0.14
);
}
);
// ************************************************************************* //

View File

@ -0,0 +1,9 @@
/*--------------------------------*- C++ -*----------------------------------*/
type turbulenceFields;
libs (fieldFunctionObjects);
field R;
writeControl writeTime;
// *********************************************************************** //