mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge branch 'master' of /home/noisy3/OpenFOAM/OpenFOAM-dev
This commit is contained in:
3
applications/utilities/mesh/advanced/PDRMesh/Make/files
Normal file
3
applications/utilities/mesh/advanced/PDRMesh/Make/files
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
PDRMesh.C
|
||||||
|
|
||||||
|
EXE = $(FOAM_APPBIN)/PDRMesh
|
||||||
11
applications/utilities/mesh/advanced/PDRMesh/Make/options
Normal file
11
applications/utilities/mesh/advanced/PDRMesh/Make/options
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
EXE_INC = \
|
||||||
|
-I$(LIB_SRC)/meshTools/lnInclude \
|
||||||
|
-I$(LIB_SRC)/dynamicMesh/lnInclude \
|
||||||
|
-I$(LIB_SRC)/finiteVolume/lnInclude
|
||||||
|
|
||||||
|
EXE_LIBS = \
|
||||||
|
-lmeshTools \
|
||||||
|
-ldynamicMesh \
|
||||||
|
-lfiniteVolume \
|
||||||
|
-lcompressibleRASModels
|
||||||
|
|
||||||
1181
applications/utilities/mesh/advanced/PDRMesh/PDRMesh.C
Normal file
1181
applications/utilities/mesh/advanced/PDRMesh/PDRMesh.C
Normal file
File diff suppressed because it is too large
Load Diff
40
applications/utilities/mesh/advanced/PDRMesh/PDRMeshDict
Normal file
40
applications/utilities/mesh/advanced/PDRMesh/PDRMeshDict
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: dev |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
object PDRMeshDict;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
//- Per faceSet the patch the faces should go into blocked baffles
|
||||||
|
blockedFaces ((blockedFacesSet blockedFaces));
|
||||||
|
|
||||||
|
//- Per faceSet the patch the faces should go into coupled baffles
|
||||||
|
coupledFaces
|
||||||
|
{
|
||||||
|
coupledFacesSet
|
||||||
|
{
|
||||||
|
wallPatchName baffleWall;
|
||||||
|
cyclicMasterPatchName baffleCyclic_half0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Name of cellSet that holds the cells to fully remove
|
||||||
|
blockedCells blockedCellsSet;
|
||||||
|
|
||||||
|
//- All exposed faces that are not specified in blockedFaces go into
|
||||||
|
// this patch
|
||||||
|
defaultPatch outer;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -112,6 +112,7 @@ $(constraintFvPatchFields)/wedge/wedgeFvPatchScalarField.C
|
|||||||
|
|
||||||
derivedFvPatchFields = $(fvPatchFields)/derived
|
derivedFvPatchFields = $(fvPatchFields)/derived
|
||||||
$(derivedFvPatchFields)/activeBaffleVelocity/activeBaffleVelocityFvPatchVectorField.C
|
$(derivedFvPatchFields)/activeBaffleVelocity/activeBaffleVelocityFvPatchVectorField.C
|
||||||
|
$(derivedFvPatchFields)/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.C
|
||||||
$(derivedFvPatchFields)/advective/advectiveFvPatchFields.C
|
$(derivedFvPatchFields)/advective/advectiveFvPatchFields.C
|
||||||
|
|
||||||
$(derivedFvPatchFields)/codedFixedValue/codedFixedValueFvPatchScalarField.C
|
$(derivedFvPatchFields)/codedFixedValue/codedFixedValueFvPatchScalarField.C
|
||||||
|
|||||||
@ -0,0 +1,385 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2010-2011 OpenCFD Ltd.
|
||||||
|
\\/ 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/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "activePressureForceBaffleVelocityFvPatchVectorField.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
#include "volFields.H"
|
||||||
|
#include "surfaceFields.H"
|
||||||
|
#include "cyclicFvPatch.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::activePressureForceBaffleVelocityFvPatchVectorField::
|
||||||
|
activePressureForceBaffleVelocityFvPatchVectorField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<vector, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
fixedValueFvPatchVectorField(p, iF),
|
||||||
|
pName_("p"),
|
||||||
|
cyclicPatchName_(),
|
||||||
|
cyclicPatchLabel_(-1),
|
||||||
|
orientation_(1),
|
||||||
|
initWallSf_(0),
|
||||||
|
initCyclicSf_(0),
|
||||||
|
nbrCyclicSf_(0),
|
||||||
|
openFraction_(0),
|
||||||
|
openingTime_(0),
|
||||||
|
maxOpenFractionDelta_(0),
|
||||||
|
curTimeIndex_(-1),
|
||||||
|
minThresholdValue_(0),
|
||||||
|
fBased_(1),
|
||||||
|
baffleActivated_(0)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::activePressureForceBaffleVelocityFvPatchVectorField::
|
||||||
|
activePressureForceBaffleVelocityFvPatchVectorField
|
||||||
|
(
|
||||||
|
const activePressureForceBaffleVelocityFvPatchVectorField& ptf,
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<vector, volMesh>& iF,
|
||||||
|
const fvPatchFieldMapper& mapper
|
||||||
|
)
|
||||||
|
:
|
||||||
|
fixedValueFvPatchVectorField(ptf, p, iF, mapper),
|
||||||
|
pName_(ptf.pName_),
|
||||||
|
cyclicPatchName_(ptf.cyclicPatchName_),
|
||||||
|
cyclicPatchLabel_(ptf.cyclicPatchLabel_),
|
||||||
|
orientation_(ptf.orientation_),
|
||||||
|
initWallSf_(ptf.initWallSf_),
|
||||||
|
initCyclicSf_(ptf.initCyclicSf_),
|
||||||
|
nbrCyclicSf_(ptf.nbrCyclicSf_),
|
||||||
|
openFraction_(ptf.openFraction_),
|
||||||
|
openingTime_(ptf.openingTime_),
|
||||||
|
maxOpenFractionDelta_(ptf.maxOpenFractionDelta_),
|
||||||
|
curTimeIndex_(-1),
|
||||||
|
minThresholdValue_(ptf.minThresholdValue_),
|
||||||
|
fBased_(ptf.fBased_),
|
||||||
|
baffleActivated_(ptf.baffleActivated_)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::activePressureForceBaffleVelocityFvPatchVectorField::
|
||||||
|
activePressureForceBaffleVelocityFvPatchVectorField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<vector, volMesh>& iF,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
fixedValueFvPatchVectorField(p, iF),
|
||||||
|
pName_("p"),
|
||||||
|
cyclicPatchName_(dict.lookup("cyclicPatch")),
|
||||||
|
cyclicPatchLabel_(p.patch().boundaryMesh().findPatchID(cyclicPatchName_)),
|
||||||
|
orientation_(readLabel(dict.lookup("orientation"))),
|
||||||
|
initWallSf_(0),
|
||||||
|
initCyclicSf_(0),
|
||||||
|
nbrCyclicSf_(0),
|
||||||
|
openFraction_(readScalar(dict.lookup("openFraction"))),
|
||||||
|
openingTime_(readScalar(dict.lookup("openingTime"))),
|
||||||
|
maxOpenFractionDelta_(readScalar(dict.lookup("maxOpenFractionDelta"))),
|
||||||
|
curTimeIndex_(-1),
|
||||||
|
minThresholdValue_(readScalar(dict.lookup("minThresholdValue"))),
|
||||||
|
fBased_(readBool(dict.lookup("forceBased"))),
|
||||||
|
baffleActivated_(0)
|
||||||
|
{
|
||||||
|
fvPatchVectorField::operator=(vector::zero);
|
||||||
|
|
||||||
|
if (p.size() > 0)
|
||||||
|
{
|
||||||
|
initWallSf_ = p.Sf();
|
||||||
|
initCyclicSf_ = p.boundaryMesh()[cyclicPatchLabel_].Sf();
|
||||||
|
nbrCyclicSf_ = refCast<const cyclicFvPatch>
|
||||||
|
(
|
||||||
|
p.boundaryMesh()[cyclicPatchLabel_]
|
||||||
|
).neighbFvPatch().Sf();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dict.found("p"))
|
||||||
|
{
|
||||||
|
dict.lookup("p") >> pName_;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::activePressureForceBaffleVelocityFvPatchVectorField::
|
||||||
|
activePressureForceBaffleVelocityFvPatchVectorField
|
||||||
|
(
|
||||||
|
const activePressureForceBaffleVelocityFvPatchVectorField& ptf
|
||||||
|
)
|
||||||
|
:
|
||||||
|
fixedValueFvPatchVectorField(ptf),
|
||||||
|
pName_(ptf.pName_),
|
||||||
|
cyclicPatchName_(ptf.cyclicPatchName_),
|
||||||
|
cyclicPatchLabel_(ptf.cyclicPatchLabel_),
|
||||||
|
orientation_(ptf.orientation_),
|
||||||
|
initWallSf_(ptf.initWallSf_),
|
||||||
|
initCyclicSf_(ptf.initCyclicSf_),
|
||||||
|
nbrCyclicSf_(ptf.nbrCyclicSf_),
|
||||||
|
openFraction_(ptf.openFraction_),
|
||||||
|
openingTime_(ptf.openingTime_),
|
||||||
|
maxOpenFractionDelta_(ptf.maxOpenFractionDelta_),
|
||||||
|
curTimeIndex_(-1),
|
||||||
|
minThresholdValue_(ptf.minThresholdValue_),
|
||||||
|
fBased_(ptf.fBased_),
|
||||||
|
baffleActivated_(ptf.baffleActivated_)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::activePressureForceBaffleVelocityFvPatchVectorField::
|
||||||
|
activePressureForceBaffleVelocityFvPatchVectorField
|
||||||
|
(
|
||||||
|
const activePressureForceBaffleVelocityFvPatchVectorField& ptf,
|
||||||
|
const DimensionedField<vector, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
fixedValueFvPatchVectorField(ptf, iF),
|
||||||
|
pName_(ptf.pName_),
|
||||||
|
cyclicPatchName_(ptf.cyclicPatchName_),
|
||||||
|
cyclicPatchLabel_(ptf.cyclicPatchLabel_),
|
||||||
|
orientation_(ptf.orientation_),
|
||||||
|
initWallSf_(ptf.initWallSf_),
|
||||||
|
initCyclicSf_(ptf.initCyclicSf_),
|
||||||
|
nbrCyclicSf_(ptf.nbrCyclicSf_),
|
||||||
|
openFraction_(ptf.openFraction_),
|
||||||
|
openingTime_(ptf.openingTime_),
|
||||||
|
maxOpenFractionDelta_(ptf.maxOpenFractionDelta_),
|
||||||
|
curTimeIndex_(-1),
|
||||||
|
minThresholdValue_(ptf.minThresholdValue_),
|
||||||
|
fBased_(ptf.fBased_),
|
||||||
|
baffleActivated_(ptf.baffleActivated_)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
void Foam::activePressureForceBaffleVelocityFvPatchVectorField::autoMap
|
||||||
|
(
|
||||||
|
const fvPatchFieldMapper& m
|
||||||
|
)
|
||||||
|
{
|
||||||
|
fixedValueFvPatchVectorField::autoMap(m);
|
||||||
|
|
||||||
|
//- Note: cannot map field from cyclic patch anyway so just recalculate
|
||||||
|
// Areas should be consistent when doing autoMap except in case of
|
||||||
|
// topo changes.
|
||||||
|
//- Note: we don't want to use Sf here since triggers rebuilding of
|
||||||
|
// fvMesh::S() which will give problems when mapped (since already
|
||||||
|
// on new mesh)
|
||||||
|
forAll (patch().boundaryMesh().mesh().faceAreas(), i)
|
||||||
|
{
|
||||||
|
if (mag(patch().boundaryMesh().mesh().faceAreas()[i]) == 0)
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
nbrCyclicSf_ = refCast<const cyclicFvPatch>
|
||||||
|
(
|
||||||
|
patch().boundaryMesh()
|
||||||
|
[
|
||||||
|
cyclicPatchLabel_
|
||||||
|
]
|
||||||
|
).neighbFvPatch().patch().patchSlice(areas);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Foam::activePressureForceBaffleVelocityFvPatchVectorField::rmap
|
||||||
|
(
|
||||||
|
const fvPatchVectorField& ptf,
|
||||||
|
const labelList& addr
|
||||||
|
)
|
||||||
|
{
|
||||||
|
fixedValueFvPatchVectorField::rmap(ptf, addr);
|
||||||
|
|
||||||
|
// See autoMap.
|
||||||
|
const vectorField& areas = patch().boundaryMesh().mesh().faceAreas();
|
||||||
|
initWallSf_ = patch().patchSlice(areas);
|
||||||
|
initCyclicSf_ = patch().boundaryMesh()
|
||||||
|
[
|
||||||
|
cyclicPatchLabel_
|
||||||
|
].patchSlice(areas);
|
||||||
|
nbrCyclicSf_ = refCast<const cyclicFvPatch>
|
||||||
|
(
|
||||||
|
patch().boundaryMesh()
|
||||||
|
[
|
||||||
|
cyclicPatchLabel_
|
||||||
|
]
|
||||||
|
).neighbFvPatch().patch().patchSlice(areas);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::activePressureForceBaffleVelocityFvPatchVectorField::updateCoeffs()
|
||||||
|
{
|
||||||
|
if (updated())
|
||||||
|
{
|
||||||
|
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 fvPatch& cyclicPatch = patch().boundaryMesh()[cyclicPatchLabel_];
|
||||||
|
const labelList& cyclicFaceCells = cyclicPatch.patch().faceCells();
|
||||||
|
const fvPatch& nbrPatch = refCast<const cyclicFvPatch>
|
||||||
|
(
|
||||||
|
cyclicPatch
|
||||||
|
).neighbFvPatch();
|
||||||
|
|
||||||
|
const labelList& nbrFaceCells = nbrPatch.patch().faceCells();
|
||||||
|
|
||||||
|
scalar valueDiff = 0;
|
||||||
|
|
||||||
|
if (fBased_)
|
||||||
|
{
|
||||||
|
// Add this side
|
||||||
|
forAll(cyclicFaceCells, facei)
|
||||||
|
{
|
||||||
|
valueDiff +=p[cyclicFaceCells[facei]]*mag(initCyclicSf_[facei]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove other side
|
||||||
|
forAll(nbrFaceCells, facei)
|
||||||
|
{
|
||||||
|
valueDiff -=p[nbrFaceCells[facei]]*mag(initCyclicSf_[facei]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else //pressure based
|
||||||
|
{
|
||||||
|
forAll(cyclicFaceCells, facei)
|
||||||
|
{
|
||||||
|
valueDiff += p[cyclicFaceCells[facei]];
|
||||||
|
}
|
||||||
|
|
||||||
|
forAll(nbrFaceCells, facei)
|
||||||
|
{
|
||||||
|
valueDiff -= p[nbrFaceCells[facei]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((mag(valueDiff) > mag(minThresholdValue_) || baffleActivated_))
|
||||||
|
{
|
||||||
|
openFraction_ =
|
||||||
|
max(
|
||||||
|
min(
|
||||||
|
openFraction_
|
||||||
|
+ max
|
||||||
|
(
|
||||||
|
this->db().time().deltaT().value()/openingTime_,
|
||||||
|
maxOpenFractionDelta_
|
||||||
|
)*(orientation_),
|
||||||
|
1 - 1e-6
|
||||||
|
),
|
||||||
|
1e-6
|
||||||
|
);
|
||||||
|
|
||||||
|
baffleActivated_ = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
openFraction_ = max(min(1 - 1e-6, openFraction_), 1e-6);
|
||||||
|
}
|
||||||
|
|
||||||
|
Info<< "Open fraction = " << openFraction_ << endl;
|
||||||
|
Info<< "Pressure difference = " << valueDiff << endl;
|
||||||
|
|
||||||
|
vectorField::subField Sfw = patch().patch().faceAreas();
|
||||||
|
vectorField newSfw = (1 - openFraction_)*initWallSf_;
|
||||||
|
forAll(Sfw, facei)
|
||||||
|
{
|
||||||
|
Sfw[facei] = newSfw[facei];
|
||||||
|
}
|
||||||
|
const_cast<scalarField&>(patch().magSf()) = mag(patch().Sf());
|
||||||
|
|
||||||
|
// Update owner side of cyclic
|
||||||
|
const_cast<vectorField&>(cyclicPatch.Sf()) =
|
||||||
|
openFraction_*initCyclicSf_;
|
||||||
|
|
||||||
|
const_cast<scalarField&>(cyclicPatch.magSf()) =
|
||||||
|
mag(cyclicPatch.Sf());
|
||||||
|
|
||||||
|
// Update neighbour side of cyclic
|
||||||
|
const_cast<vectorField&>(nbrPatch.Sf()) =
|
||||||
|
openFraction_*nbrCyclicSf_;
|
||||||
|
|
||||||
|
const_cast<scalarField&>(nbrPatch.magSf()) =
|
||||||
|
mag(nbrPatch.Sf());
|
||||||
|
|
||||||
|
curTimeIndex_ = this->db().time().timeIndex();
|
||||||
|
}
|
||||||
|
|
||||||
|
fixedValueFvPatchVectorField::updateCoeffs();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::activePressureForceBaffleVelocityFvPatchVectorField::
|
||||||
|
write(Ostream& os) const
|
||||||
|
{
|
||||||
|
fvPatchVectorField::write(os);
|
||||||
|
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")
|
||||||
|
<< maxOpenFractionDelta_ << token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("openFraction")
|
||||||
|
<< openFraction_ << token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("p")
|
||||||
|
<< pName_ << token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("minThresholdValue")
|
||||||
|
<< minThresholdValue_ << token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("forceBased")
|
||||||
|
<< fBased_ << token::END_STATEMENT << nl;
|
||||||
|
writeEntry("value", os);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
makePatchTypeField
|
||||||
|
(
|
||||||
|
fvPatchVectorField,
|
||||||
|
activePressureForceBaffleVelocityFvPatchVectorField
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,210 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2010-2011 OpenCFD Ltd.
|
||||||
|
\\/ 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/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::activePressureForceBaffleVelocityFvPatchVectorField
|
||||||
|
|
||||||
|
Description
|
||||||
|
Bounday which emulates the operation of a release pressure panel.
|
||||||
|
|
||||||
|
The boundary condition modifies mesh areas based on difference
|
||||||
|
of pressure or force face beween both sides of the panel. Once opened the
|
||||||
|
panel continues to open at a fixed rate.
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
activePressureForceBaffleVelocityFvPatchVectorField.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef activePressureForceBaffleVelocityFvPatchVectorField_H
|
||||||
|
#define activePressureForceBaffleVelocityFvPatchVectorField_H
|
||||||
|
|
||||||
|
#include "fvPatchFields.H"
|
||||||
|
#include "fixedValueFvPatchFields.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class activePressureForceBaffleVelocityFvPatch Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class activePressureForceBaffleVelocityFvPatchVectorField
|
||||||
|
:
|
||||||
|
public fixedValueFvPatchVectorField
|
||||||
|
{
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- Name of the pressure field used to calculate the force
|
||||||
|
// on the active baffle
|
||||||
|
word pName_;
|
||||||
|
|
||||||
|
//- Name of the cyclic patch used when the active baffle is open
|
||||||
|
word cyclicPatchName_;
|
||||||
|
|
||||||
|
//- Index of the cyclic patch used when the active baffle is open
|
||||||
|
label cyclicPatchLabel_;
|
||||||
|
|
||||||
|
//- Orientation (1 or -1) of the active baffle patch.
|
||||||
|
// Used to change the direction of opening without the need for
|
||||||
|
// reordering the patch faces
|
||||||
|
label orientation_;
|
||||||
|
|
||||||
|
//- Initial wall patch areas
|
||||||
|
vectorField initWallSf_;
|
||||||
|
|
||||||
|
//- Initial cyclic patch areas
|
||||||
|
vectorField initCyclicSf_;
|
||||||
|
|
||||||
|
//- Initial neighbour-side cyclic patch areas
|
||||||
|
vectorField nbrCyclicSf_;
|
||||||
|
|
||||||
|
//- Current fraction of the active baffle which is open
|
||||||
|
scalar openFraction_;
|
||||||
|
|
||||||
|
//- Time taken for the active baffle to open
|
||||||
|
scalar openingTime_;
|
||||||
|
|
||||||
|
//- Maximum fractional change to the active baffle openness
|
||||||
|
// per time-step
|
||||||
|
scalar maxOpenFractionDelta_;
|
||||||
|
|
||||||
|
label curTimeIndex_;
|
||||||
|
|
||||||
|
//- Minimum value for the active baffle to start opening
|
||||||
|
scalar minThresholdValue_;
|
||||||
|
|
||||||
|
//- Force based active baffle
|
||||||
|
bool fBased_;
|
||||||
|
|
||||||
|
//- Baffle is activated
|
||||||
|
bool baffleActivated_;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("activePressureForceBaffleVelocity");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from patch and internal field
|
||||||
|
activePressureForceBaffleVelocityFvPatchVectorField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<vector, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct from patch, internal field and dictionary
|
||||||
|
activePressureForceBaffleVelocityFvPatchVectorField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<vector, volMesh>&,
|
||||||
|
const dictionary&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct by mapping
|
||||||
|
activePressureForceBaffleVelocityFvPatchVectorField
|
||||||
|
(
|
||||||
|
const activePressureForceBaffleVelocityFvPatchVectorField&,
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<vector, volMesh>&,
|
||||||
|
const fvPatchFieldMapper&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct as copy
|
||||||
|
activePressureForceBaffleVelocityFvPatchVectorField
|
||||||
|
(
|
||||||
|
const activePressureForceBaffleVelocityFvPatchVectorField&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct and return a clone
|
||||||
|
virtual tmp<fvPatchVectorField> clone() const
|
||||||
|
{
|
||||||
|
return tmp<fvPatchVectorField>
|
||||||
|
(
|
||||||
|
new activePressureForceBaffleVelocityFvPatchVectorField(*this)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Construct as copy setting internal field reference
|
||||||
|
activePressureForceBaffleVelocityFvPatchVectorField
|
||||||
|
(
|
||||||
|
const activePressureForceBaffleVelocityFvPatchVectorField&,
|
||||||
|
const DimensionedField<vector, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct and return a clone setting internal field reference
|
||||||
|
virtual tmp<fvPatchVectorField> clone
|
||||||
|
(
|
||||||
|
const DimensionedField<vector, volMesh>& iF
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return tmp<fvPatchVectorField>
|
||||||
|
(
|
||||||
|
new activePressureForceBaffleVelocityFvPatchVectorField
|
||||||
|
(
|
||||||
|
*this,
|
||||||
|
iF
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Member functions
|
||||||
|
|
||||||
|
// Mapping functions
|
||||||
|
|
||||||
|
//- Map (and resize as needed) from self given a mapping object
|
||||||
|
virtual void autoMap
|
||||||
|
(
|
||||||
|
const fvPatchFieldMapper&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Reverse map the given fvPatchField onto this fvPatchField
|
||||||
|
virtual void rmap
|
||||||
|
(
|
||||||
|
const fvPatchVectorField&,
|
||||||
|
const labelList&
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
//- Update the coefficients associated with the patch field
|
||||||
|
virtual void updateCoeffs();
|
||||||
|
|
||||||
|
//- Write
|
||||||
|
virtual void write(Ostream&) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -2,7 +2,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) 2004-2010 OpenCFD Ltd.
|
\\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -110,7 +110,20 @@ laplacian
|
|||||||
const word& name
|
const word& name
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return gamma*fvc::laplacian(vf, name);
|
GeometricField<GType, fvsPatchField, surfaceMesh> Gamma
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
gamma.name(),
|
||||||
|
vf.instance(),
|
||||||
|
vf.mesh(),
|
||||||
|
IOobject::NO_READ
|
||||||
|
),
|
||||||
|
vf.mesh(),
|
||||||
|
gamma
|
||||||
|
);
|
||||||
|
|
||||||
|
return fvc::laplacian(Gamma, vf, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -140,10 +153,20 @@ laplacian
|
|||||||
const GeometricField<Type, fvPatchField, volMesh>& vf
|
const GeometricField<Type, fvPatchField, volMesh>& vf
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return gamma*fvc::laplacian
|
GeometricField<GType, fvsPatchField, surfaceMesh> Gamma
|
||||||
(
|
(
|
||||||
vf, "laplacian(" + gamma.name() + ',' + vf.name() + ')'
|
IOobject
|
||||||
|
(
|
||||||
|
gamma.name(),
|
||||||
|
vf.instance(),
|
||||||
|
vf.mesh(),
|
||||||
|
IOobject::NO_READ
|
||||||
|
),
|
||||||
|
vf.mesh(),
|
||||||
|
gamma
|
||||||
);
|
);
|
||||||
|
|
||||||
|
return fvc::laplacian(Gamma, vf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,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) 2004-2010 OpenCFD Ltd.
|
\\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -54,7 +54,7 @@ Foam::viscosityModels::HerschelBulkley::calcNu() const
|
|||||||
dimensionedScalar rtone("rtone", dimless/dimTime, 1.0);
|
dimensionedScalar rtone("rtone", dimless/dimTime, 1.0);
|
||||||
tmp<volScalarField> sr(strainRate());
|
tmp<volScalarField> sr(strainRate());
|
||||||
return (min(nu0_,(tau0_ + k_* rtone *( pow(tone * sr(), n_)
|
return (min(nu0_,(tau0_ + k_* rtone *( pow(tone * sr(), n_)
|
||||||
+ pow(tone*tau0_/nu0_,n_))) / (max(sr(), dimensionedScalar
|
- pow(tone*tau0_/nu0_,n_))) / (max(sr(), dimensionedScalar
|
||||||
("VSMALL", dimless/dimTime, VSMALL)))));
|
("VSMALL", dimless/dimTime, VSMALL)))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
CPP = cpp -traditional-cpp $(GFLAGS)
|
CPP = cpp -traditional-cpp $(GFLAGS)
|
||||||
LD = ld -A64
|
LD = ld -A64
|
||||||
|
|
||||||
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
|
PROJECT_LIBS = -l$(WM_PROJECT) -ldl
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
CPP = /lib/cpp
|
CPP = /lib/cpp
|
||||||
LD = ld -64
|
LD = ld -64
|
||||||
|
|
||||||
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -lnsl -lsocket -L$(FOAM_LIBBIN)/dummy -lPstream
|
PROJECT_LIBS = -l$(WM_PROJECT) -lnsl -lsocket -L$(FOAM_LIBBIN)/dummy -lPstream
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
CPP = cpp -traditional-cpp $(GFLAGS)
|
CPP = cpp -traditional-cpp $(GFLAGS)
|
||||||
|
|
||||||
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
|
PROJECT_LIBS = -l$(WM_PROJECT) -ldl
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
CPP = cpp -traditional-cpp $(GFLAGS)
|
CPP = cpp -traditional-cpp $(GFLAGS)
|
||||||
|
|
||||||
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
|
PROJECT_LIBS = -l$(WM_PROJECT) -ldl
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
CPP = cpp -traditional-cpp $(GFLAGS)
|
CPP = cpp -traditional-cpp $(GFLAGS)
|
||||||
|
|
||||||
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
|
PROJECT_LIBS = -l$(WM_PROJECT) -ldl
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
CPP = cpp -traditional-cpp $(GFLAGS)
|
CPP = cpp -traditional-cpp $(GFLAGS)
|
||||||
|
|
||||||
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
|
PROJECT_LIBS = -l$(WM_PROJECT) -ldl
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
CPP = cpp -traditional-cpp $(GFLAGS)
|
CPP = cpp -traditional-cpp $(GFLAGS)
|
||||||
|
|
||||||
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
|
PROJECT_LIBS = -l$(WM_PROJECT) -ldl
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
CPP = cpp -traditional-cpp
|
CPP = cpp -traditional-cpp
|
||||||
|
|
||||||
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
|
PROJECT_LIBS = -l$(WM_PROJECT) -ldl
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
CPP = /lib/cpp -traditional-cpp $(GFLAGS)
|
CPP = /lib/cpp -traditional-cpp $(GFLAGS)
|
||||||
|
|
||||||
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
|
PROJECT_LIBS = -l$(WM_PROJECT) -ldl
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
CPP = cpp -traditional-cpp $(GFLAGS)
|
CPP = cpp -traditional-cpp $(GFLAGS)
|
||||||
LD = ld -melf_i386
|
LD = ld -melf_i386
|
||||||
|
|
||||||
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
|
PROJECT_LIBS = -l$(WM_PROJECT) -ldl
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
CPP = cpp -traditional-cpp $(GFLAGS)
|
CPP = cpp -traditional-cpp $(GFLAGS)
|
||||||
LD = ld -melf_i386
|
LD = ld -melf_i386
|
||||||
|
|
||||||
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
|
PROJECT_LIBS = -l$(WM_PROJECT) -ldl
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
CPP = cpp -traditional-cpp $(GFLAGS)
|
CPP = cpp -traditional-cpp $(GFLAGS)
|
||||||
LD = ld -melf_i386
|
LD = ld -melf_i386
|
||||||
|
|
||||||
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
|
PROJECT_LIBS = -l$(WM_PROJECT) -ldl
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
CPP = cpp -traditional-cpp $(GFLAGS)
|
CPP = cpp -traditional-cpp $(GFLAGS)
|
||||||
LD = ld -melf_i386
|
LD = ld -melf_i386
|
||||||
|
|
||||||
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
|
PROJECT_LIBS = -l$(WM_PROJECT) -ldl
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
CPP = cpp -traditional-cpp
|
CPP = cpp -traditional-cpp
|
||||||
LD = ld -melf_i386
|
LD = ld -melf_i386
|
||||||
|
|
||||||
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
|
PROJECT_LIBS = -l$(WM_PROJECT) -ldl
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
CPP = cpp -traditional-cpp $(GFLAGS)
|
CPP = cpp -traditional-cpp $(GFLAGS)
|
||||||
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
|
PROJECT_LIBS = -l$(WM_PROJECT) -ldl
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
CPP = /lib/cpp -traditional-cpp $(GFLAGS) -DICC_IA64_PREFETCH
|
CPP = /lib/cpp -traditional-cpp $(GFLAGS) -DICC_IA64_PREFETCH
|
||||||
|
|
||||||
GLIBS = -liberty
|
GLIBS =
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
CPP = /lib/cpp -traditional-cpp $(GFLAGS)
|
CPP = /lib/cpp -traditional-cpp $(GFLAGS)
|
||||||
LD = ld -melf_i386
|
LD = ld -melf_i386
|
||||||
|
|
||||||
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
|
PROJECT_LIBS = -l$(WM_PROJECT) -ldl
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
CPP = cpp -traditional-cpp $(GFLAGS)
|
CPP = cpp -traditional-cpp $(GFLAGS)
|
||||||
LD = ld -m elf64ppc
|
LD = ld -m elf64ppc
|
||||||
|
|
||||||
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
|
PROJECT_LIBS = -l$(WM_PROJECT) -ldl
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
CPP = /usr/lib/cpp -undef
|
CPP = /usr/lib/cpp -undef
|
||||||
|
|
||||||
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -lnsl -lsocket -L$(FOAM_LIBBIN)/dummy -lPstream
|
PROJECT_LIBS = -l$(WM_PROJECT) -lnsl -lsocket -L$(FOAM_LIBBIN)/dummy -lPstream
|
||||||
|
|
||||||
include $(GENERAL_RULES)/standard
|
include $(GENERAL_RULES)/standard
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user