- deprecate dimensionedType constructors using an Istream in favour of versions accepting a keyword and a dictionary. Dictionary entries are almost the exclusive means of read constructing a dimensionedType. By construct from the dictionary entry instead of doing a lookup() first, we can detect possible input errors such as too many tokens as a result of a input syntax error. Constructing a dimensionedType from a dictionary entry now has two forms. 1. dimensionedType(key, dims, dict); This is the constructor that will normally be used. It accepts entries with optional leading names and/or dimensions. If the entry contains dimensions, they are verified against the expected dimensions and an IOError is raised if they do not correspond. On conclusion, checks the token stream for any trailing rubbish. 2. dimensionedType(key, dict); This constructor is used less frequently. Similar to the previous description, except that it is initially dimensionless. If entry contains dimensions, they are used without further verification. The constructor also includes a token stream check. This constructor is useful when the dimensions are entirely defined from the dictionary input, but also when handling transition code where the input dimensions are not obvious from the source. This constructor can also be handy when obtaining values from a dictionary without needing to worry about the input dimensions. For example, Info<< "rho: " << dimensionedScalar("rho", dict).value() << nl; This will accept a large range of inputs without hassle. ENH: consistent handling of dimensionedType for inputs (#1083) BUG: incorrect Omega dimensions (fixes #2084)
94 lines
2.6 KiB
C
94 lines
2.6 KiB
C
/*---------------------------------------------------------------------------*\
|
|
========= |
|
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
\\ / O peration |
|
|
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
|
\\/ M anipulation |
|
|
-------------------------------------------------------------------------------
|
|
License
|
|
This file is part of OpenFOAM.
|
|
|
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
|
under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
\*---------------------------------------------------------------------------*/
|
|
|
|
Info<< "Reading field U\n" << endl;
|
|
volVectorField U
|
|
(
|
|
IOobject
|
|
(
|
|
"U",
|
|
runTime.timeName(),
|
|
mesh,
|
|
IOobject::MUST_READ,
|
|
IOobject::NO_WRITE
|
|
),
|
|
mesh
|
|
);
|
|
|
|
Info<< "Calculating wall distance field" << endl;
|
|
volScalarField y
|
|
(
|
|
IOobject
|
|
(
|
|
"y",
|
|
runTime.timeName(),
|
|
mesh,
|
|
IOobject::NO_READ,
|
|
IOobject::NO_WRITE
|
|
),
|
|
mesh,
|
|
dimensionedScalar(dimLength, Zero),
|
|
zeroGradientFvPatchScalarField::typeName
|
|
);
|
|
y.primitiveFieldRef() = wallDist::New(mesh).y().primitiveField();
|
|
y.correctBoundaryConditions();
|
|
|
|
|
|
// Set the mean boundary-layer thickness
|
|
dimensionedScalar ybl("ybl", dimLength, Zero);
|
|
|
|
if (args.found("ybl"))
|
|
{
|
|
// If the boundary-layer thickness is provided use it
|
|
ybl.value() = args.opt<scalar>("ybl");
|
|
}
|
|
else if (args.found("Cbl"))
|
|
{
|
|
// Calculate boundary layer thickness as Cbl*mean distance to wall
|
|
ybl.value() = gAverage(y)*args.opt<scalar>("Cbl");
|
|
}
|
|
|
|
Info<< "\nCreating boundary-layer for U of thickness "
|
|
<< ybl.value() << " m" << nl << endl;
|
|
|
|
Info<< "Creating mask field" << endl;
|
|
volScalarField mask
|
|
(
|
|
IOobject
|
|
(
|
|
"mask",
|
|
runTime.timeName(),
|
|
mesh,
|
|
IOobject::NO_READ,
|
|
IOobject::NO_WRITE
|
|
),
|
|
mesh,
|
|
dimensionedScalar(dimless, Zero),
|
|
zeroGradientFvPatchScalarField::typeName
|
|
);
|
|
|
|
|
|
// ************************************************************************* //
|