GIT: Resolve conflict

This commit is contained in:
Andrew Heather
2016-06-10 16:05:48 +01:00
14 changed files with 116 additions and 74 deletions

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -25,6 +25,7 @@ License
#include "helpSolver.H"
#include "addToRunTimeSelectionTable.H"
#include "fvMesh.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@ -63,6 +64,11 @@ void Foam::helpTypes::helpSolver::init()
helpType::init();
argList::validArgs.append("solver");
argList::addBoolOption
(
"read",
"read solver type from the system/controlDict"
);
}
@ -78,6 +84,11 @@ void Foam::helpTypes::helpSolver::execute
{
displayDoc(solver, ".*solvers/.*Foam/", true, "C");
}
else if (args.optionFound("read"))
{
mesh.time().controlDict().lookup("application") >> solver;
displayDoc(solver, ".*solvers/.*Foam/", true, "C");
}
else
{
displayDocOptions(".*solvers/.*Foam/", true, "C");

View File

@ -59,7 +59,7 @@ Description
QrNbr Qr; // or none. Name of Qr field on neighbour region
Qr Qr; // or none. Name of Qr field on local region
thicknessLayers (0.1 0.2 0.3 0.4);
kappaLayers (1 2 3 4)
kappaLayers (1 2 3 4);
value uniform 300;
}
\endverbatim

View File

@ -27,9 +27,13 @@ Class
Description
Hybrid convection scheme of Travin et al. for hybrid RAS/LES calculations.
The scheme blends between a low-dissipative convection scheme within the
LES region (e.g. linear) and a numerically more robust convection scheme in
the RAS region (e.g. upwind-biased schemes).
The scheme provides a blend between two convection schemes, based on local
properties including the wall distance, velocity gradient and eddy
viscosity. The scheme was originally developed for DES calculations to
blend a low-dissipative scheme, e.g. linear, in the vorticity-dominated,
finely-resolved regions and a numerically more robust, e.g. upwind-biased,
convection scheme in irrotational or coarsely-resolved regions.
The routine calculates the blending factor denoted as "sigma" in the
literature reference, where 0 <= sigma <= sigmaMax, which is then employed

View File

@ -187,7 +187,7 @@ tmp<volScalarField> SpalartAllmarasDES<BasicTurbulenceModel>::psi
(
scalar(100),
(1 - Cb1_/(Cw1_*sqr(kappa_)*fwStar_)*(ft2 + (1 - ft2)*fv2))
/max(SMALL, (fv1*max(1e-10, 1 - ft2)))
/max(SMALL, (fv1*max(scalar(1e-10), 1 - ft2)))
)
);
}

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
\\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -48,6 +48,11 @@ Description
Theor. Comput. Fluid Dyn., 20, 181-195.
\endverbatim
Note
The default value of the DES constant implemented was calibrated for
OpenFOAM using decaying isotropic turbulence and agrees with the value
suggested in the reference publication.
SourceFiles
SpalartAllmarasDES.C

View File

@ -37,8 +37,11 @@ Description
39th AIAA Aerospace Sciences Meeting and Exhibit, Reno, NV
\endverbatim
Note: DES constants CDES_kom and CDES_keps have been re-calibrated to
OpenFOAM numerics via decaying isotropic turbulence test case
Note
The default values of the DES constants implemented are code-specific
values calibrated for OpenFOAM using decaying isotropic turbulence, and
hence deviate slightly from the values suggested in the reference
publication.
SourceFiles
kOmegaSSTDES.C

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -42,7 +42,6 @@ activePressureForceBaffleVelocityFvPatchVectorField
pName_("p"),
cyclicPatchName_(),
cyclicPatchLabel_(-1),
orientation_(1),
initWallSf_(0),
initCyclicSf_(0),
nbrCyclicSf_(0),
@ -52,7 +51,8 @@ activePressureForceBaffleVelocityFvPatchVectorField
curTimeIndex_(-1),
minThresholdValue_(0),
fBased_(1),
baffleActivated_(0)
baffleActivated_(0),
opening_(1)
{}
@ -69,7 +69,6 @@ activePressureForceBaffleVelocityFvPatchVectorField
pName_(ptf.pName_),
cyclicPatchName_(ptf.cyclicPatchName_),
cyclicPatchLabel_(ptf.cyclicPatchLabel_),
orientation_(ptf.orientation_),
initWallSf_(ptf.initWallSf_),
initCyclicSf_(ptf.initCyclicSf_),
nbrCyclicSf_(ptf.nbrCyclicSf_),
@ -79,7 +78,8 @@ activePressureForceBaffleVelocityFvPatchVectorField
curTimeIndex_(-1),
minThresholdValue_(ptf.minThresholdValue_),
fBased_(ptf.fBased_),
baffleActivated_(ptf.baffleActivated_)
baffleActivated_(ptf.baffleActivated_),
opening_(ptf.opening_)
{}
@ -95,7 +95,6 @@ activePressureForceBaffleVelocityFvPatchVectorField
pName_(dict.lookupOrDefault<word>("p", "p")),
cyclicPatchName_(dict.lookup("cyclicPatch")),
cyclicPatchLabel_(p.patch().boundaryMesh().findPatchID(cyclicPatchName_)),
orientation_(readLabel(dict.lookup("orientation"))),
initWallSf_(0),
initCyclicSf_(0),
nbrCyclicSf_(0),
@ -105,7 +104,8 @@ activePressureForceBaffleVelocityFvPatchVectorField
curTimeIndex_(-1),
minThresholdValue_(readScalar(dict.lookup("minThresholdValue"))),
fBased_(readBool(dict.lookup("forceBased"))),
baffleActivated_(0)
baffleActivated_(0),
opening_(readBool(dict.lookup("opening")))
{
fvPatchVectorField::operator=(Zero);
@ -136,7 +136,6 @@ activePressureForceBaffleVelocityFvPatchVectorField
pName_(ptf.pName_),
cyclicPatchName_(ptf.cyclicPatchName_),
cyclicPatchLabel_(ptf.cyclicPatchLabel_),
orientation_(ptf.orientation_),
initWallSf_(ptf.initWallSf_),
initCyclicSf_(ptf.initCyclicSf_),
nbrCyclicSf_(ptf.nbrCyclicSf_),
@ -146,7 +145,8 @@ activePressureForceBaffleVelocityFvPatchVectorField
curTimeIndex_(-1),
minThresholdValue_(ptf.minThresholdValue_),
fBased_(ptf.fBased_),
baffleActivated_(ptf.baffleActivated_)
baffleActivated_(ptf.baffleActivated_),
opening_(ptf.opening_)
{}
@ -161,7 +161,6 @@ activePressureForceBaffleVelocityFvPatchVectorField
pName_(ptf.pName_),
cyclicPatchName_(ptf.cyclicPatchName_),
cyclicPatchLabel_(ptf.cyclicPatchLabel_),
orientation_(ptf.orientation_),
initWallSf_(ptf.initWallSf_),
initCyclicSf_(ptf.initCyclicSf_),
nbrCyclicSf_(ptf.nbrCyclicSf_),
@ -171,7 +170,8 @@ activePressureForceBaffleVelocityFvPatchVectorField
curTimeIndex_(-1),
minThresholdValue_(ptf.minThresholdValue_),
fBased_(ptf.fBased_),
baffleActivated_(ptf.baffleActivated_)
baffleActivated_(ptf.baffleActivated_),
opening_(ptf.opening_)
{}
@ -197,14 +197,13 @@ void Foam::activePressureForceBaffleVelocityFvPatchVectorField::autoMap
Info << "faceArea[active] "<< i << endl;
}
}
if (patch().size() > 0)
{
const vectorField& areas = patch().boundaryMesh().mesh().faceAreas();
initWallSf_ = patch().patchSlice(areas);
initCyclicSf_ = patch().boundaryMesh()
[
cyclicPatchLabel_
].patchSlice(areas);
initCyclicSf_ =
patch().boundaryMesh()[cyclicPatchLabel_].patchSlice(areas);
nbrCyclicSf_ = refCast<const cyclicFvPatch>
(
patch().boundaryMesh()
@ -215,6 +214,7 @@ void Foam::activePressureForceBaffleVelocityFvPatchVectorField::autoMap
}
}
void Foam::activePressureForceBaffleVelocityFvPatchVectorField::rmap
(
const fvPatchVectorField& ptf,
@ -226,10 +226,8 @@ void Foam::activePressureForceBaffleVelocityFvPatchVectorField::rmap
// See autoMap.
const vectorField& areas = patch().boundaryMesh().mesh().faceAreas();
initWallSf_ = patch().patchSlice(areas);
initCyclicSf_ = patch().boundaryMesh()
[
cyclicPatchLabel_
].patchSlice(areas);
initCyclicSf_ =
patch().boundaryMesh()[cyclicPatchLabel_].patchSlice(areas);
nbrCyclicSf_ = refCast<const cyclicFvPatch>
(
patch().boundaryMesh()
@ -246,20 +244,17 @@ void Foam::activePressureForceBaffleVelocityFvPatchVectorField::updateCoeffs()
{
return;
}
// Execute the change to the openFraction only once per time-step
if (curTimeIndex_ != this->db().time().timeIndex())
{
const volScalarField& p = db().lookupObject<volScalarField>
(
pName_
);
const volScalarField& p =
db().lookupObject<volScalarField>(pName_);
const fvPatch& cyclicPatch = patch().boundaryMesh()[cyclicPatchLabel_];
const labelList& cyclicFaceCells = cyclicPatch.patch().faceCells();
const fvPatch& nbrPatch = refCast<const cyclicFvPatch>
(
cyclicPatch
).neighbFvPatch();
const fvPatch& nbrPatch =
refCast<const cyclicFvPatch>(cyclicPatch).neighbFvPatch();
const labelList& nbrFaceCells = nbrPatch.patch().faceCells();
@ -296,17 +291,19 @@ void Foam::activePressureForceBaffleVelocityFvPatchVectorField::updateCoeffs()
Info<< "Pressure difference = " << valueDiff << endl;
}
if ((mag(valueDiff) > mag(minThresholdValue_)) || baffleActivated_)
if (mag(valueDiff) > mag(minThresholdValue_) || baffleActivated_)
{
openFraction_ =
max(
min(
max
(
min
(
openFraction_
+ min
(
this->db().time().deltaT().value()/openingTime_,
maxOpenFractionDelta_
)*(orientation_),
),
1 - 1e-6
),
1e-6
@ -321,8 +318,20 @@ void Foam::activePressureForceBaffleVelocityFvPatchVectorField::updateCoeffs()
Info<< "Open fraction = " << openFraction_ << endl;
scalar areaFraction = 0.0;
if (opening_)
{
areaFraction = openFraction_;
}
else
{
areaFraction = 1 - openFraction_;
}
// Update this wall patch
vectorField::subField Sfw = patch().patch().faceAreas();
vectorField newSfw((1 - openFraction_)*initWallSf_);
vectorField newSfw((1 - areaFraction)*initWallSf_);
forAll(Sfw, facei)
{
Sfw[facei] = newSfw[facei];
@ -330,18 +339,14 @@ void Foam::activePressureForceBaffleVelocityFvPatchVectorField::updateCoeffs()
const_cast<scalarField&>(patch().magSf()) = mag(patch().Sf());
// Update owner side of cyclic
const_cast<vectorField&>(cyclicPatch.Sf()) =
openFraction_*initCyclicSf_;
const_cast<vectorField&>(cyclicPatch.Sf()) = areaFraction*initCyclicSf_;
const_cast<scalarField&>(cyclicPatch.magSf()) =
mag(cyclicPatch.Sf());
const_cast<scalarField&>(cyclicPatch.magSf()) = mag(cyclicPatch.Sf());
// Update neighbour side of cyclic
const_cast<vectorField&>(nbrPatch.Sf()) =
openFraction_*nbrCyclicSf_;
const_cast<vectorField&>(nbrPatch.Sf()) = areaFraction*nbrCyclicSf_;
const_cast<scalarField&>(nbrPatch.magSf()) =
mag(nbrPatch.Sf());
const_cast<scalarField&>(nbrPatch.magSf()) = mag(nbrPatch.Sf());
curTimeIndex_ = this->db().time().timeIndex();
}
@ -357,8 +362,6 @@ write(Ostream& os) const
writeEntryIfDifferent<word>(os, "p", "p", pName_);
os.writeKeyword("cyclicPatch")
<< cyclicPatchName_ << token::END_STATEMENT << nl;
os.writeKeyword("orientation")
<< orientation_ << token::END_STATEMENT << nl;
os.writeKeyword("openingTime")
<< openingTime_ << token::END_STATEMENT << nl;
os.writeKeyword("maxOpenFractionDelta")
@ -369,6 +372,8 @@ write(Ostream& os) const
<< minThresholdValue_ << token::END_STATEMENT << nl;
os.writeKeyword("forceBased")
<< fBased_ << token::END_STATEMENT << nl;
os.writeKeyword("opening")
<< opening_ << token::END_STATEMENT << nl;
writeEntry("value", os);
}
@ -384,4 +389,5 @@ namespace Foam
);
}
// ************************************************************************* //

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation | OpenCFD Ltd 2016
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -38,6 +38,11 @@ Description
used in an extra wall beyond an existing cyclic patch pair. See PDRMesh
for more details.
The baffle is activated when the pressure difference between master and
slave paches is positive and larger then minThresholdValue. The
orientation flag is used to to calculate the pressure difference bwetween
master-slave or slave-master.
Once the threshold is crossed, this condition activated and continues to
open or close at a fixed rate using
@ -70,6 +75,7 @@ Description
minThresholdValue | minimum absolute pressure or
force difference for activation | yes |
forceBased | force (true) or pressure-based (false) activation | yes |
opening | Baffle is opening or closing (1 opening, 0 closing) | yes
\endtable
Example of the boundary condition specification:
@ -85,6 +91,7 @@ Description
maxOpenFractionDelta 0.1;
minThresholdValue 0.01;
forceBased false;
opening 1;
}
\endverbatim
@ -124,10 +131,6 @@ class activePressureForceBaffleVelocityFvPatchVectorField
//- Index of the cyclic patch used when the active baffle is open
label cyclicPatchLabel_;
//- Orientation (1 or -1) of the active baffle mode
// Used to change the direction of opening or closing the baffle
label orientation_;
//- Initial wall patch areas
vectorField initWallSf_;
@ -158,6 +161,9 @@ class activePressureForceBaffleVelocityFvPatchVectorField
//- Baffle is activated
bool baffleActivated_;
//- Baffle is opening or closing (1 opening, 0 closing)
bool opening_;
public:

View File

@ -69,10 +69,10 @@ Description
maxDiameter 0.5e-4;
minDiameter 0;
setFormat gnuplot;
coordinateSystem
origin (0 0 0);
coordinateRoation
{
type cartesian;
origin (0 0 0);
e3 (0 1 1);
e1 (1 0 0);
}
@ -91,7 +91,8 @@ Description
maxDiameter | maximum region equivalent diameter | yes |
minDiameter | minimum region equivalent diameter | no | 0
setFormat | writing format | yes |
coordinateSystem | transformation for vector fields | no |
origin | origin of local co-ordinate system | yes |
coordinateRoation | orientation of local co-ordinate system | no |
log | Log to standard output | no | yes
\endtable

View File

@ -219,7 +219,7 @@ Foam::forceCoeffs::forceCoeffs
CdBinFilePtr_(),
ClBinFilePtr_()
{
if (readFields)
if (active_ && readFields)
{
read(dict);
if (log_) Info << endl;
@ -310,6 +310,12 @@ void Foam::forceCoeffs::execute()
forces::calcForcesMoment();
// Need to re-check active_ flag - may have been reset in calcForcesMoment
if (!active_)
{
return;
}
createFiles();
scalar pDyn = 0.5*rhoRef_*magUInf_*magUInf_;

View File

@ -279,8 +279,8 @@ void Foam::forces::initialiseBins()
// Allocate storage for forces and moments
forAll(force_, i)
{
force_[i].setSize(nBin_);
moment_[i].setSize(nBin_);
force_[i].setSize(nBin_, vector::zero);
moment_[i].setSize(nBin_, vector::zero);
}
}
}
@ -841,8 +841,8 @@ Foam::forces::forces
forAll(force_, i)
{
force_[i].setSize(nBin_);
moment_[i].setSize(nBin_);
force_[i].setSize(nBin_, vector::zero);
moment_[i].setSize(nBin_, vector::zero);
}
}
@ -944,8 +944,8 @@ void Foam::forces::read(const dictionary& dict)
// Allocate storage for forces and moments
forAll(force_, i)
{
force_[i].setSize(1);
moment_[i].setSize(1);
force_[i].setSize(1, vector::zero);
moment_[i].setSize(1, vector::zero);
}
}

View File

@ -40,7 +40,7 @@ boundaryField
type activePressureForceBaffleVelocity;
value uniform (0 0 0);
cyclicPatch baffleCyclic_half0;
orientation 1;
opening 1;
openingTime 0.01;
maxOpenFractionDelta 0.1;
openFraction 0;

View File

@ -11,11 +11,11 @@ cp $FOAM_TUTORIALS/resources/geometry/motorBike.obj.gz constant/triSurface/
mkdir 0
runApplication blockMesh
cp system/decomposeParDict.hierarchical system/decomposeParDict
runApplication decomposePar
# cp system/decomposeParDict.hierarchical system/decomposeParDict
runApplication decomposePar -decomposeParDict system/decomposeParDict.hierarchical
cp system/decomposeParDict.ptscotch system/decomposeParDict
runParallel snappyHexMesh -overwrite -parallel
# cp system/decomposeParDict.ptscotch system/decomposeParDict
runParallel snappyHexMesh -decomposeParDict system/decomposeParDict.ptscotch -overwrite -parallel
find . -type f -iname "*level*" -exec rm {} \;