mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge branch 'master' of develop.openfoam.com:Development/OpenFOAM-plus
This commit is contained in:
@ -3,7 +3,7 @@
|
|||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation | OpenCFD Ltd 2016
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -42,7 +42,6 @@ activePressureForceBaffleVelocityFvPatchVectorField
|
|||||||
pName_("p"),
|
pName_("p"),
|
||||||
cyclicPatchName_(),
|
cyclicPatchName_(),
|
||||||
cyclicPatchLabel_(-1),
|
cyclicPatchLabel_(-1),
|
||||||
orientation_(1),
|
|
||||||
initWallSf_(0),
|
initWallSf_(0),
|
||||||
initCyclicSf_(0),
|
initCyclicSf_(0),
|
||||||
nbrCyclicSf_(0),
|
nbrCyclicSf_(0),
|
||||||
@ -52,7 +51,8 @@ activePressureForceBaffleVelocityFvPatchVectorField
|
|||||||
curTimeIndex_(-1),
|
curTimeIndex_(-1),
|
||||||
minThresholdValue_(0),
|
minThresholdValue_(0),
|
||||||
fBased_(1),
|
fBased_(1),
|
||||||
baffleActivated_(0)
|
baffleActivated_(0),
|
||||||
|
opening_(1)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -69,7 +69,6 @@ activePressureForceBaffleVelocityFvPatchVectorField
|
|||||||
pName_(ptf.pName_),
|
pName_(ptf.pName_),
|
||||||
cyclicPatchName_(ptf.cyclicPatchName_),
|
cyclicPatchName_(ptf.cyclicPatchName_),
|
||||||
cyclicPatchLabel_(ptf.cyclicPatchLabel_),
|
cyclicPatchLabel_(ptf.cyclicPatchLabel_),
|
||||||
orientation_(ptf.orientation_),
|
|
||||||
initWallSf_(ptf.initWallSf_),
|
initWallSf_(ptf.initWallSf_),
|
||||||
initCyclicSf_(ptf.initCyclicSf_),
|
initCyclicSf_(ptf.initCyclicSf_),
|
||||||
nbrCyclicSf_(ptf.nbrCyclicSf_),
|
nbrCyclicSf_(ptf.nbrCyclicSf_),
|
||||||
@ -79,7 +78,8 @@ activePressureForceBaffleVelocityFvPatchVectorField
|
|||||||
curTimeIndex_(-1),
|
curTimeIndex_(-1),
|
||||||
minThresholdValue_(ptf.minThresholdValue_),
|
minThresholdValue_(ptf.minThresholdValue_),
|
||||||
fBased_(ptf.fBased_),
|
fBased_(ptf.fBased_),
|
||||||
baffleActivated_(ptf.baffleActivated_)
|
baffleActivated_(ptf.baffleActivated_),
|
||||||
|
opening_(ptf.opening_)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -95,7 +95,6 @@ activePressureForceBaffleVelocityFvPatchVectorField
|
|||||||
pName_(dict.lookupOrDefault<word>("p", "p")),
|
pName_(dict.lookupOrDefault<word>("p", "p")),
|
||||||
cyclicPatchName_(dict.lookup("cyclicPatch")),
|
cyclicPatchName_(dict.lookup("cyclicPatch")),
|
||||||
cyclicPatchLabel_(p.patch().boundaryMesh().findPatchID(cyclicPatchName_)),
|
cyclicPatchLabel_(p.patch().boundaryMesh().findPatchID(cyclicPatchName_)),
|
||||||
orientation_(readLabel(dict.lookup("orientation"))),
|
|
||||||
initWallSf_(0),
|
initWallSf_(0),
|
||||||
initCyclicSf_(0),
|
initCyclicSf_(0),
|
||||||
nbrCyclicSf_(0),
|
nbrCyclicSf_(0),
|
||||||
@ -105,7 +104,8 @@ activePressureForceBaffleVelocityFvPatchVectorField
|
|||||||
curTimeIndex_(-1),
|
curTimeIndex_(-1),
|
||||||
minThresholdValue_(readScalar(dict.lookup("minThresholdValue"))),
|
minThresholdValue_(readScalar(dict.lookup("minThresholdValue"))),
|
||||||
fBased_(readBool(dict.lookup("forceBased"))),
|
fBased_(readBool(dict.lookup("forceBased"))),
|
||||||
baffleActivated_(0)
|
baffleActivated_(0),
|
||||||
|
opening_(readBool(dict.lookup("opening")))
|
||||||
{
|
{
|
||||||
fvPatchVectorField::operator=(vector::zero);
|
fvPatchVectorField::operator=(vector::zero);
|
||||||
|
|
||||||
@ -136,7 +136,6 @@ activePressureForceBaffleVelocityFvPatchVectorField
|
|||||||
pName_(ptf.pName_),
|
pName_(ptf.pName_),
|
||||||
cyclicPatchName_(ptf.cyclicPatchName_),
|
cyclicPatchName_(ptf.cyclicPatchName_),
|
||||||
cyclicPatchLabel_(ptf.cyclicPatchLabel_),
|
cyclicPatchLabel_(ptf.cyclicPatchLabel_),
|
||||||
orientation_(ptf.orientation_),
|
|
||||||
initWallSf_(ptf.initWallSf_),
|
initWallSf_(ptf.initWallSf_),
|
||||||
initCyclicSf_(ptf.initCyclicSf_),
|
initCyclicSf_(ptf.initCyclicSf_),
|
||||||
nbrCyclicSf_(ptf.nbrCyclicSf_),
|
nbrCyclicSf_(ptf.nbrCyclicSf_),
|
||||||
@ -146,7 +145,8 @@ activePressureForceBaffleVelocityFvPatchVectorField
|
|||||||
curTimeIndex_(-1),
|
curTimeIndex_(-1),
|
||||||
minThresholdValue_(ptf.minThresholdValue_),
|
minThresholdValue_(ptf.minThresholdValue_),
|
||||||
fBased_(ptf.fBased_),
|
fBased_(ptf.fBased_),
|
||||||
baffleActivated_(ptf.baffleActivated_)
|
baffleActivated_(ptf.baffleActivated_),
|
||||||
|
opening_(ptf.opening_)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -161,7 +161,6 @@ activePressureForceBaffleVelocityFvPatchVectorField
|
|||||||
pName_(ptf.pName_),
|
pName_(ptf.pName_),
|
||||||
cyclicPatchName_(ptf.cyclicPatchName_),
|
cyclicPatchName_(ptf.cyclicPatchName_),
|
||||||
cyclicPatchLabel_(ptf.cyclicPatchLabel_),
|
cyclicPatchLabel_(ptf.cyclicPatchLabel_),
|
||||||
orientation_(ptf.orientation_),
|
|
||||||
initWallSf_(ptf.initWallSf_),
|
initWallSf_(ptf.initWallSf_),
|
||||||
initCyclicSf_(ptf.initCyclicSf_),
|
initCyclicSf_(ptf.initCyclicSf_),
|
||||||
nbrCyclicSf_(ptf.nbrCyclicSf_),
|
nbrCyclicSf_(ptf.nbrCyclicSf_),
|
||||||
@ -171,7 +170,8 @@ activePressureForceBaffleVelocityFvPatchVectorField
|
|||||||
curTimeIndex_(-1),
|
curTimeIndex_(-1),
|
||||||
minThresholdValue_(ptf.minThresholdValue_),
|
minThresholdValue_(ptf.minThresholdValue_),
|
||||||
fBased_(ptf.fBased_),
|
fBased_(ptf.fBased_),
|
||||||
baffleActivated_(ptf.baffleActivated_)
|
baffleActivated_(ptf.baffleActivated_),
|
||||||
|
opening_(ptf.opening_)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -249,6 +249,7 @@ void Foam::activePressureForceBaffleVelocityFvPatchVectorField::updateCoeffs()
|
|||||||
// Execute the change to the openFraction only once per time-step
|
// Execute the change to the openFraction only once per time-step
|
||||||
if (curTimeIndex_ != this->db().time().timeIndex())
|
if (curTimeIndex_ != this->db().time().timeIndex())
|
||||||
{
|
{
|
||||||
|
|
||||||
const volScalarField& p = db().lookupObject<volScalarField>
|
const volScalarField& p = db().lookupObject<volScalarField>
|
||||||
(
|
(
|
||||||
pName_
|
pName_
|
||||||
@ -296,21 +297,23 @@ void Foam::activePressureForceBaffleVelocityFvPatchVectorField::updateCoeffs()
|
|||||||
Info<< "Pressure difference = " << valueDiff << endl;
|
Info<< "Pressure difference = " << valueDiff << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((mag(valueDiff) > mag(minThresholdValue_)) || baffleActivated_)
|
if (mag(valueDiff) > mag(minThresholdValue_) || baffleActivated_)
|
||||||
{
|
{
|
||||||
openFraction_ =
|
openFraction_ =
|
||||||
max(
|
max
|
||||||
min(
|
(
|
||||||
|
min
|
||||||
|
(
|
||||||
openFraction_
|
openFraction_
|
||||||
+ min
|
+ min
|
||||||
(
|
(
|
||||||
this->db().time().deltaT().value()/openingTime_,
|
this->db().time().deltaT().value()/openingTime_,
|
||||||
maxOpenFractionDelta_
|
maxOpenFractionDelta_
|
||||||
)*(orientation_),
|
|
||||||
1 - 1e-6
|
|
||||||
),
|
),
|
||||||
|
1 - 1e-6
|
||||||
|
),
|
||||||
1e-6
|
1e-6
|
||||||
);
|
);
|
||||||
|
|
||||||
baffleActivated_ = true;
|
baffleActivated_ = true;
|
||||||
}
|
}
|
||||||
@ -321,8 +324,20 @@ void Foam::activePressureForceBaffleVelocityFvPatchVectorField::updateCoeffs()
|
|||||||
|
|
||||||
Info<< "Open fraction = " << openFraction_ << endl;
|
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::subField Sfw = patch().patch().faceAreas();
|
||||||
vectorField newSfw((1 - openFraction_)*initWallSf_);
|
vectorField newSfw((1 - areaFraction)*initWallSf_);
|
||||||
forAll(Sfw, facei)
|
forAll(Sfw, facei)
|
||||||
{
|
{
|
||||||
Sfw[facei] = newSfw[facei];
|
Sfw[facei] = newSfw[facei];
|
||||||
@ -331,14 +346,14 @@ void Foam::activePressureForceBaffleVelocityFvPatchVectorField::updateCoeffs()
|
|||||||
|
|
||||||
// Update owner side of cyclic
|
// Update owner side of cyclic
|
||||||
const_cast<vectorField&>(cyclicPatch.Sf()) =
|
const_cast<vectorField&>(cyclicPatch.Sf()) =
|
||||||
openFraction_*initCyclicSf_;
|
areaFraction*initCyclicSf_;
|
||||||
|
|
||||||
const_cast<scalarField&>(cyclicPatch.magSf()) =
|
const_cast<scalarField&>(cyclicPatch.magSf()) =
|
||||||
mag(cyclicPatch.Sf());
|
mag(cyclicPatch.Sf());
|
||||||
|
|
||||||
// Update neighbour side of cyclic
|
// Update neighbour side of cyclic
|
||||||
const_cast<vectorField&>(nbrPatch.Sf()) =
|
const_cast<vectorField&>(nbrPatch.Sf()) =
|
||||||
openFraction_*nbrCyclicSf_;
|
areaFraction*nbrCyclicSf_;
|
||||||
|
|
||||||
const_cast<scalarField&>(nbrPatch.magSf()) =
|
const_cast<scalarField&>(nbrPatch.magSf()) =
|
||||||
mag(nbrPatch.Sf());
|
mag(nbrPatch.Sf());
|
||||||
@ -357,8 +372,6 @@ write(Ostream& os) const
|
|||||||
writeEntryIfDifferent<word>(os, "p", "p", pName_);
|
writeEntryIfDifferent<word>(os, "p", "p", pName_);
|
||||||
os.writeKeyword("cyclicPatch")
|
os.writeKeyword("cyclicPatch")
|
||||||
<< cyclicPatchName_ << token::END_STATEMENT << nl;
|
<< cyclicPatchName_ << token::END_STATEMENT << nl;
|
||||||
os.writeKeyword("orientation")
|
|
||||||
<< orientation_ << token::END_STATEMENT << nl;
|
|
||||||
os.writeKeyword("openingTime")
|
os.writeKeyword("openingTime")
|
||||||
<< openingTime_ << token::END_STATEMENT << nl;
|
<< openingTime_ << token::END_STATEMENT << nl;
|
||||||
os.writeKeyword("maxOpenFractionDelta")
|
os.writeKeyword("maxOpenFractionDelta")
|
||||||
@ -369,6 +382,8 @@ write(Ostream& os) const
|
|||||||
<< minThresholdValue_ << token::END_STATEMENT << nl;
|
<< minThresholdValue_ << token::END_STATEMENT << nl;
|
||||||
os.writeKeyword("forceBased")
|
os.writeKeyword("forceBased")
|
||||||
<< fBased_ << token::END_STATEMENT << nl;
|
<< fBased_ << token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("opening")
|
||||||
|
<< opening_ << token::END_STATEMENT << nl;
|
||||||
writeEntry("value", os);
|
writeEntry("value", os);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation | OpenCFD Ltd 2016
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -38,6 +38,11 @@ Description
|
|||||||
used in an extra wall beyond an existing cyclic patch pair. See PDRMesh
|
used in an extra wall beyond an existing cyclic patch pair. See PDRMesh
|
||||||
for more details.
|
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
|
Once the threshold is crossed, this condition activated and continues to
|
||||||
open or close at a fixed rate using
|
open or close at a fixed rate using
|
||||||
|
|
||||||
@ -70,6 +75,7 @@ Description
|
|||||||
minThresholdValue | minimum absolute pressure or
|
minThresholdValue | minimum absolute pressure or
|
||||||
force difference for activation | yes |
|
force difference for activation | yes |
|
||||||
forceBased | force (true) or pressure-based (false) activation | yes |
|
forceBased | force (true) or pressure-based (false) activation | yes |
|
||||||
|
opening | Baffle is opening or closing (1 opening, 0 closing) | yes
|
||||||
\endtable
|
\endtable
|
||||||
|
|
||||||
Example of the boundary condition specification:
|
Example of the boundary condition specification:
|
||||||
@ -85,6 +91,7 @@ Description
|
|||||||
maxOpenFractionDelta 0.1;
|
maxOpenFractionDelta 0.1;
|
||||||
minThresholdValue 0.01;
|
minThresholdValue 0.01;
|
||||||
forceBased false;
|
forceBased false;
|
||||||
|
opening 1;
|
||||||
}
|
}
|
||||||
\endverbatim
|
\endverbatim
|
||||||
|
|
||||||
@ -124,10 +131,6 @@ class activePressureForceBaffleVelocityFvPatchVectorField
|
|||||||
//- Index of the cyclic patch used when the active baffle is open
|
//- Index of the cyclic patch used when the active baffle is open
|
||||||
label cyclicPatchLabel_;
|
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
|
//- Initial wall patch areas
|
||||||
vectorField initWallSf_;
|
vectorField initWallSf_;
|
||||||
|
|
||||||
@ -158,6 +161,9 @@ class activePressureForceBaffleVelocityFvPatchVectorField
|
|||||||
//- Baffle is activated
|
//- Baffle is activated
|
||||||
bool baffleActivated_;
|
bool baffleActivated_;
|
||||||
|
|
||||||
|
//- Baffle is opening or closing (1 opening, 0 closing)
|
||||||
|
bool opening_;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|||||||
@ -42,7 +42,7 @@ boundaryField
|
|||||||
type activePressureForceBaffleVelocity;
|
type activePressureForceBaffleVelocity;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
cyclicPatch baffleCyclic_half0;
|
cyclicPatch baffleCyclic_half0;
|
||||||
orientation 1;
|
opening 1;
|
||||||
openingTime 0.01;
|
openingTime 0.01;
|
||||||
maxOpenFractionDelta 0.1;
|
maxOpenFractionDelta 0.1;
|
||||||
openFraction 0;
|
openFraction 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user