mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge branch 'master' of /home/dm4/OpenFOAM/repositories/OpenFOAM-dev
This commit is contained in:
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -60,6 +60,20 @@ bool Foam::fileName::isAbsolute() const
|
||||
}
|
||||
|
||||
|
||||
Foam::fileName& Foam::fileName::toAbsolute()
|
||||
{
|
||||
fileName& f = *this;
|
||||
|
||||
if (!f.isAbsolute())
|
||||
{
|
||||
f = cwd()/f;
|
||||
f.clean();
|
||||
}
|
||||
|
||||
return f;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// * remove repeated slashes
|
||||
// /abc////def --> /abc/def
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -141,11 +141,14 @@ public:
|
||||
|
||||
// Interrogation
|
||||
|
||||
//- Return the file type: FILE, DIRECTORY or UNDEFINED
|
||||
Type type() const;
|
||||
//- Return the file type: FILE, DIRECTORY or UNDEFINED
|
||||
Type type() const;
|
||||
|
||||
//- Return true if file name is absolute
|
||||
bool isAbsolute() const;
|
||||
//- Return true if file name is absolute
|
||||
bool isAbsolute() const;
|
||||
|
||||
//- Convert from relative to absolute
|
||||
fileName& toAbsolute();
|
||||
|
||||
|
||||
// Decomposition
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -571,7 +571,6 @@ void epsilonWallFunctionFvPatchScalarField::write(Ostream& os) const
|
||||
{
|
||||
fixedValueFvPatchField<scalar>::write(os);
|
||||
writeLocalEntries(os);
|
||||
writeEntry("value", os);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -587,7 +587,6 @@ void omegaWallFunctionFvPatchScalarField::write(Ostream& os) const
|
||||
{
|
||||
fixedValueFvPatchField<scalar>::write(os);
|
||||
writeLocalEntries(os);
|
||||
writeEntry("value", os);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -25,10 +25,10 @@ License
|
||||
|
||||
#include "pressureInletOutletVelocityFvPatchVectorField.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
#include "fvPatchFieldMapper.H"
|
||||
#include "volFields.H"
|
||||
#include "surfaceFields.H"
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::pressureInletOutletVelocityFvPatchVectorField::
|
||||
@ -38,14 +38,12 @@ pressureInletOutletVelocityFvPatchVectorField
|
||||
const DimensionedField<vector, volMesh>& iF
|
||||
)
|
||||
:
|
||||
mixedFvPatchVectorField(p, iF),
|
||||
phiName_("phi"),
|
||||
rhoName_("rho"),
|
||||
applyTangentialVelocity_(false)
|
||||
directionMixedFvPatchVectorField(p, iF),
|
||||
phiName_("phi")
|
||||
{
|
||||
refValue() = *this;
|
||||
refValue() = vector::zero;
|
||||
refGrad() = vector::zero;
|
||||
valueFraction() = 0.0;
|
||||
valueFraction() = symmTensor::zero;
|
||||
}
|
||||
|
||||
|
||||
@ -58,12 +56,10 @@ pressureInletOutletVelocityFvPatchVectorField
|
||||
const fvPatchFieldMapper& mapper
|
||||
)
|
||||
:
|
||||
mixedFvPatchVectorField(ptf, p, iF, mapper),
|
||||
phiName_(ptf.phiName_),
|
||||
rhoName_(ptf.rhoName_),
|
||||
applyTangentialVelocity_(ptf.applyTangentialVelocity_)
|
||||
directionMixedFvPatchVectorField(ptf, p, iF, mapper),
|
||||
phiName_(ptf.phiName_)
|
||||
{
|
||||
if (applyTangentialVelocity_)
|
||||
if (ptf.tangentialVelocity_.size())
|
||||
{
|
||||
tangentialVelocity_ = mapper(ptf.tangentialVelocity_);
|
||||
}
|
||||
@ -78,26 +74,25 @@ pressureInletOutletVelocityFvPatchVectorField
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
mixedFvPatchVectorField(p, iF),
|
||||
phiName_(dict.lookupOrDefault<word>("phi", "phi")),
|
||||
rhoName_(dict.lookupOrDefault<word>("rho", "rho")),
|
||||
applyTangentialVelocity_(false)
|
||||
directionMixedFvPatchVectorField(p, iF),
|
||||
phiName_(dict.lookupOrDefault<word>("phi", "phi"))
|
||||
{
|
||||
fvPatchVectorField::operator=(vectorField("value", dict, p.size()));
|
||||
|
||||
if (dict.found("tangentialVelocity"))
|
||||
{
|
||||
applyTangentialVelocity_ = true;
|
||||
|
||||
setTangentialVelocity
|
||||
(
|
||||
vectorField("tangentialVelocity", dict, p.size())
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
refValue() = vector::zero;
|
||||
}
|
||||
|
||||
refValue() = *this;
|
||||
refGrad() = vector::zero;
|
||||
valueFraction() = 0.0;
|
||||
valueFraction() = symmTensor::zero;
|
||||
}
|
||||
|
||||
|
||||
@ -107,11 +102,9 @@ pressureInletOutletVelocityFvPatchVectorField
|
||||
const pressureInletOutletVelocityFvPatchVectorField& pivpvf
|
||||
)
|
||||
:
|
||||
mixedFvPatchVectorField(pivpvf),
|
||||
directionMixedFvPatchVectorField(pivpvf),
|
||||
phiName_(pivpvf.phiName_),
|
||||
rhoName_(pivpvf.rhoName_),
|
||||
tangentialVelocity_(pivpvf.tangentialVelocity_),
|
||||
applyTangentialVelocity_(pivpvf.applyTangentialVelocity_)
|
||||
tangentialVelocity_(pivpvf.tangentialVelocity_)
|
||||
{}
|
||||
|
||||
|
||||
@ -122,11 +115,9 @@ pressureInletOutletVelocityFvPatchVectorField
|
||||
const DimensionedField<vector, volMesh>& iF
|
||||
)
|
||||
:
|
||||
mixedFvPatchVectorField(pivpvf, iF),
|
||||
directionMixedFvPatchVectorField(pivpvf, iF),
|
||||
phiName_(pivpvf.phiName_),
|
||||
rhoName_(pivpvf.rhoName_),
|
||||
tangentialVelocity_(pivpvf.tangentialVelocity_),
|
||||
applyTangentialVelocity_(pivpvf.applyTangentialVelocity_)
|
||||
tangentialVelocity_(pivpvf.tangentialVelocity_)
|
||||
{}
|
||||
|
||||
|
||||
@ -135,10 +126,9 @@ pressureInletOutletVelocityFvPatchVectorField
|
||||
void Foam::pressureInletOutletVelocityFvPatchVectorField::
|
||||
setTangentialVelocity(const vectorField& tangentialVelocity)
|
||||
{
|
||||
applyTangentialVelocity_ = true;
|
||||
tangentialVelocity_ = tangentialVelocity;
|
||||
vectorField n(patch().nf());
|
||||
tangentialVelocity_ -= n*(n & tangentialVelocity_);
|
||||
const vectorField n(patch().nf());
|
||||
refValue() = tangentialVelocity_ - n*(n & tangentialVelocity_);
|
||||
}
|
||||
|
||||
|
||||
@ -147,8 +137,8 @@ void Foam::pressureInletOutletVelocityFvPatchVectorField::autoMap
|
||||
const fvPatchFieldMapper& m
|
||||
)
|
||||
{
|
||||
mixedFvPatchVectorField::autoMap(m);
|
||||
if (applyTangentialVelocity_)
|
||||
directionMixedFvPatchVectorField::autoMap(m);
|
||||
if (tangentialVelocity_.size())
|
||||
{
|
||||
tangentialVelocity_.autoMap(m);
|
||||
}
|
||||
@ -161,9 +151,9 @@ void Foam::pressureInletOutletVelocityFvPatchVectorField::rmap
|
||||
const labelList& addr
|
||||
)
|
||||
{
|
||||
mixedFvPatchVectorField::rmap(ptf, addr);
|
||||
directionMixedFvPatchVectorField::rmap(ptf, addr);
|
||||
|
||||
if (applyTangentialVelocity_)
|
||||
if (tangentialVelocity_.size())
|
||||
{
|
||||
const pressureInletOutletVelocityFvPatchVectorField& tiptf =
|
||||
refCast<const pressureInletOutletVelocityFvPatchVectorField>(ptf);
|
||||
@ -180,67 +170,25 @@ void Foam::pressureInletOutletVelocityFvPatchVectorField::updateCoeffs()
|
||||
return;
|
||||
}
|
||||
|
||||
const surfaceScalarField& phi =
|
||||
db().lookupObject<surfaceScalarField>(phiName_);
|
||||
|
||||
const fvsPatchField<scalar>& phip =
|
||||
patch().patchField<surfaceScalarField, scalar>(phi);
|
||||
patch().lookupPatchField<surfaceScalarField, scalar>(phiName_);
|
||||
|
||||
vectorField n(patch().nf());
|
||||
const Field<scalar>& magSf = patch().magSf();
|
||||
valueFraction() = neg(phip)*(I - sqr(patch().nf()));
|
||||
|
||||
if (phi.dimensions() == dimVelocity*dimArea)
|
||||
{
|
||||
refValue() = n*phip/magSf;
|
||||
}
|
||||
else if (phi.dimensions() == dimDensity*dimVelocity*dimArea)
|
||||
{
|
||||
const fvPatchField<scalar>& rhop =
|
||||
patch().lookupPatchField<volScalarField, scalar>(rhoName_);
|
||||
|
||||
refValue() = n*phip/(rhop*magSf);
|
||||
}
|
||||
else
|
||||
{
|
||||
FatalErrorIn
|
||||
(
|
||||
"pressureInletOutletVelocityFvPatchVectorField::"
|
||||
"updateCoeffs()"
|
||||
) << "dimensions of phi are not correct" << nl
|
||||
<< " on patch " << this->patch().name()
|
||||
<< " of field " << this->dimensionedInternalField().name()
|
||||
<< " in file " << this->dimensionedInternalField().objectPath()
|
||||
<< exit(FatalError);
|
||||
}
|
||||
|
||||
if (applyTangentialVelocity_)
|
||||
{
|
||||
// Adjust the tangential velocity to conserve kinetic energy
|
||||
// of the entrained fluid
|
||||
// scalarField magSqrUt(magSqr(tangentialVelocity_));
|
||||
// scalarField scale
|
||||
// (
|
||||
// sqrt(max(magSqrUt - magSqr(refValue()), scalar(0))/magSqrUt)
|
||||
// );
|
||||
// refValue() += scale*tangentialVelocity_;
|
||||
refValue() += tangentialVelocity_;
|
||||
}
|
||||
|
||||
valueFraction() = 1.0 - pos(phip);
|
||||
|
||||
mixedFvPatchVectorField::updateCoeffs();
|
||||
directionMixedFvPatchVectorField::updateCoeffs();
|
||||
directionMixedFvPatchVectorField::evaluate();
|
||||
}
|
||||
|
||||
|
||||
void Foam::pressureInletOutletVelocityFvPatchVectorField::write
|
||||
(
|
||||
Ostream& os
|
||||
) const
|
||||
)
|
||||
const
|
||||
{
|
||||
fvPatchVectorField::write(os);
|
||||
writeEntryIfDifferent<word>(os, "phi", "phi", phiName_);
|
||||
writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_);
|
||||
if (applyTangentialVelocity_)
|
||||
if (tangentialVelocity_.size())
|
||||
{
|
||||
tangentialVelocity_.writeEntry("tangentialVelocity", os);
|
||||
}
|
||||
@ -255,7 +203,9 @@ void Foam::pressureInletOutletVelocityFvPatchVectorField::operator=
|
||||
const fvPatchField<vector>& pvf
|
||||
)
|
||||
{
|
||||
fvPatchField<vector>::operator=(pvf);
|
||||
tmp<vectorField> normalValue = transform(valueFraction(), refValue());
|
||||
tmp<vectorField> transformGradValue = transform(I - valueFraction(), pvf);
|
||||
fvPatchField<vector>::operator=(normalValue + transformGradValue);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -25,21 +25,21 @@ Class
|
||||
Foam::pressureInletOutletVelocityFvPatchVectorField
|
||||
|
||||
Group
|
||||
grpInletBoundaryConditions grpOutletBoundaryConditions
|
||||
grpInletletBoundaryConditions grpOutletBoundaryConditions
|
||||
|
||||
Description
|
||||
This velocity inlet/outlet boundary condition is applied to pressure
|
||||
boundaries where the pressure is specified. A zero-gradient condition is
|
||||
applied for outflow (as defined by the flux); for inflow, the velocity is
|
||||
obtained from the patch-face normal component of the internal-cell value and
|
||||
the tangential patch velocity can be optionally specified.
|
||||
obtained from the patch-face normal component of the internal-cell value.
|
||||
|
||||
The tangential patch velocity can be optionally specified.
|
||||
|
||||
\heading Patch usage
|
||||
|
||||
\table
|
||||
Property | Description | Required | Default value
|
||||
phi | flux field name | no | phi
|
||||
rho | density field name | no | rho
|
||||
tangentialVelocity | tangential velocity field | no |
|
||||
\endtable
|
||||
|
||||
@ -49,7 +49,6 @@ Description
|
||||
{
|
||||
type pressureInletOutletVelocity;
|
||||
phi phi;
|
||||
rho rho;
|
||||
tangentialVelocity uniform (0 0 0);
|
||||
value uniform 0;
|
||||
}
|
||||
@ -70,7 +69,7 @@ SourceFiles
|
||||
#define pressureInletOutletVelocityFvPatchVectorField_H
|
||||
|
||||
#include "fvPatchFields.H"
|
||||
#include "mixedFvPatchFields.H"
|
||||
#include "directionMixedFvPatchFields.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -78,29 +77,21 @@ namespace Foam
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class pressureInletOutletVelocityFvPatchVectorField Declaration
|
||||
Class pressureInletOutletVelocityFvPatchVectorField Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class pressureInletOutletVelocityFvPatchVectorField
|
||||
:
|
||||
public mixedFvPatchVectorField
|
||||
public directionMixedFvPatchVectorField
|
||||
{
|
||||
// Private data
|
||||
|
||||
//- Flux field name
|
||||
word phiName_;
|
||||
|
||||
//- Density field name
|
||||
word rhoName_;
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
//- Optional tangential velocity component
|
||||
vectorField tangentialVelocity_;
|
||||
|
||||
bool applyTangentialVelocity_;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
@ -117,17 +108,6 @@ public:
|
||||
const DimensionedField<vector, volMesh>&
|
||||
);
|
||||
|
||||
//- Construct by mapping given
|
||||
// pressureInletOutletVelocityFvPatchVectorField
|
||||
// onto a new patch
|
||||
pressureInletOutletVelocityFvPatchVectorField
|
||||
(
|
||||
const pressureInletOutletVelocityFvPatchVectorField&,
|
||||
const fvPatch&,
|
||||
const DimensionedField<vector, volMesh>&,
|
||||
const fvPatchFieldMapper&
|
||||
);
|
||||
|
||||
//- Construct from patch, internal field and dictionary
|
||||
pressureInletOutletVelocityFvPatchVectorField
|
||||
(
|
||||
@ -136,6 +116,16 @@ public:
|
||||
const dictionary&
|
||||
);
|
||||
|
||||
//- Construct by mapping given
|
||||
// pressureInletOutletVelocityFvPatchVectorField onto a new patch
|
||||
pressureInletOutletVelocityFvPatchVectorField
|
||||
(
|
||||
const pressureInletOutletVelocityFvPatchVectorField&,
|
||||
const fvPatch&,
|
||||
const DimensionedField<vector, volMesh>&,
|
||||
const fvPatchFieldMapper&
|
||||
);
|
||||
|
||||
//- Construct as copy
|
||||
pressureInletOutletVelocityFvPatchVectorField
|
||||
(
|
||||
@ -147,10 +137,7 @@ public:
|
||||
{
|
||||
return tmp<fvPatchVectorField>
|
||||
(
|
||||
new pressureInletOutletVelocityFvPatchVectorField
|
||||
(
|
||||
*this
|
||||
)
|
||||
new pressureInletOutletVelocityFvPatchVectorField(*this)
|
||||
);
|
||||
}
|
||||
|
||||
@ -169,11 +156,7 @@ public:
|
||||
{
|
||||
return tmp<fvPatchVectorField>
|
||||
(
|
||||
new pressureInletOutletVelocityFvPatchVectorField
|
||||
(
|
||||
*this,
|
||||
iF
|
||||
)
|
||||
new pressureInletOutletVelocityFvPatchVectorField(*this, iF)
|
||||
);
|
||||
}
|
||||
|
||||
@ -194,18 +177,6 @@ public:
|
||||
return phiName_;
|
||||
}
|
||||
|
||||
//- Return the name of rho
|
||||
const word& rhoName() const
|
||||
{
|
||||
return rhoName_;
|
||||
}
|
||||
|
||||
//- Return reference to the name of rho to allow adjustment
|
||||
word& rhoName()
|
||||
{
|
||||
return rhoName_;
|
||||
}
|
||||
|
||||
//- Return the tangential velocity
|
||||
const vectorField& tangentialVelocity() const
|
||||
{
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -33,17 +33,17 @@ License
|
||||
void Foam::rotatingPressureInletOutletVelocityFvPatchVectorField::
|
||||
calcTangentialVelocity()
|
||||
{
|
||||
applyTangentialVelocity_ = true;
|
||||
|
||||
const scalar t = this->db().time().timeOutputValue();
|
||||
vector om = omega_->value(t);
|
||||
|
||||
vector axisHat = om/mag(om);
|
||||
tangentialVelocity_ =
|
||||
(-om) ^ (patch().Cf() - axisHat*(axisHat & patch().Cf()));
|
||||
const vectorField tangentialVelocity
|
||||
(
|
||||
(-om) ^ (patch().Cf() - axisHat*(axisHat & patch().Cf()))
|
||||
);
|
||||
|
||||
const vectorField n(patch().nf());
|
||||
tangentialVelocity_ -= n*(n & tangentialVelocity_);
|
||||
refValue() = tangentialVelocity - n*(n & tangentialVelocity);
|
||||
}
|
||||
|
||||
|
||||
@ -72,7 +72,9 @@ rotatingPressureInletOutletVelocityFvPatchVectorField
|
||||
:
|
||||
pressureInletOutletVelocityFvPatchVectorField(ptf, p, iF, mapper),
|
||||
omega_(ptf.omega_().clone().ptr())
|
||||
{}
|
||||
{
|
||||
calcTangentialVelocity();
|
||||
}
|
||||
|
||||
|
||||
Foam::rotatingPressureInletOutletVelocityFvPatchVectorField::
|
||||
@ -85,7 +87,9 @@ rotatingPressureInletOutletVelocityFvPatchVectorField
|
||||
:
|
||||
pressureInletOutletVelocityFvPatchVectorField(p, iF, dict),
|
||||
omega_(DataEntry<vector>::New("omega", dict))
|
||||
{}
|
||||
{
|
||||
calcTangentialVelocity();
|
||||
}
|
||||
|
||||
|
||||
Foam::rotatingPressureInletOutletVelocityFvPatchVectorField::
|
||||
@ -96,7 +100,9 @@ rotatingPressureInletOutletVelocityFvPatchVectorField
|
||||
:
|
||||
pressureInletOutletVelocityFvPatchVectorField(rppvf),
|
||||
omega_(rppvf.omega_().clone().ptr())
|
||||
{}
|
||||
{
|
||||
calcTangentialVelocity();
|
||||
}
|
||||
|
||||
|
||||
Foam::rotatingPressureInletOutletVelocityFvPatchVectorField::
|
||||
@ -108,24 +114,13 @@ rotatingPressureInletOutletVelocityFvPatchVectorField
|
||||
:
|
||||
pressureInletOutletVelocityFvPatchVectorField(rppvf, iF),
|
||||
omega_(rppvf.omega_().clone().ptr())
|
||||
{}
|
||||
{
|
||||
calcTangentialVelocity();
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
void Foam::rotatingPressureInletOutletVelocityFvPatchVectorField::updateCoeffs()
|
||||
{
|
||||
if (updated())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
calcTangentialVelocity();
|
||||
|
||||
pressureInletOutletVelocityFvPatchVectorField::updateCoeffs();
|
||||
}
|
||||
|
||||
|
||||
void Foam::rotatingPressureInletOutletVelocityFvPatchVectorField::write
|
||||
(
|
||||
Ostream& os
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -177,9 +177,6 @@ public:
|
||||
|
||||
// Member functions
|
||||
|
||||
//- Update the coefficients associated with the patch field
|
||||
virtual void updateCoeffs();
|
||||
|
||||
//- Write
|
||||
virtual void write(Ostream&) const;
|
||||
};
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -593,7 +593,7 @@ void Foam::InjectionModel<CloudType>::inject(TrackData& td)
|
||||
|
||||
if (pPtr->move(td, dt))
|
||||
{
|
||||
td.cloud().addParticle(pPtr);
|
||||
cloud.addParticle(pPtr);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -699,7 +699,7 @@ void Foam::InjectionModel<CloudType>::injectSteadyState
|
||||
);
|
||||
|
||||
// Add the new parcel
|
||||
td.cloud().addParticle(pPtr);
|
||||
cloud.addParticle(pPtr);
|
||||
|
||||
massAdded += pPtr->nParticle()*pPtr->mass();
|
||||
parcelsAdded++;
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -146,6 +146,13 @@ public:
|
||||
const label i
|
||||
) = 0;
|
||||
|
||||
//- Return reaction rate of the specieI in reactionI
|
||||
virtual tmp<DimensionedField<scalar, volMesh> > calculateRR
|
||||
(
|
||||
const label reactionI,
|
||||
const label specieI
|
||||
) const = 0;
|
||||
|
||||
|
||||
// Chemistry solution
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -626,6 +626,88 @@ Foam::label Foam::chemistryModel<CompType, ThermoType>::nEqns() const
|
||||
}
|
||||
|
||||
|
||||
template<class CompType, class ThermoType>
|
||||
Foam::tmp<Foam::DimensionedField<Foam::scalar, Foam::volMesh> >
|
||||
Foam::chemistryModel<CompType, ThermoType>::calculateRR
|
||||
(
|
||||
const label reactionI,
|
||||
const label specieI
|
||||
) const
|
||||
{
|
||||
scalar pf, cf, pr, cr;
|
||||
label lRef, rRef;
|
||||
|
||||
const volScalarField rho
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"rho",
|
||||
this->time().timeName(),
|
||||
this->mesh(),
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE,
|
||||
false
|
||||
),
|
||||
this->thermo().rho()
|
||||
);
|
||||
|
||||
tmp<DimensionedField<scalar, volMesh> > tRR
|
||||
(
|
||||
new DimensionedField<scalar, volMesh>
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"RR",
|
||||
this->mesh().time().timeName(),
|
||||
this->mesh(),
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
this->mesh(),
|
||||
dimensionedScalar("zero", dimMass/dimVolume/dimTime, 0.0)
|
||||
)
|
||||
);
|
||||
|
||||
DimensionedField<scalar, volMesh>& RR = tRR();
|
||||
|
||||
const scalarField& T = this->thermo().T();
|
||||
const scalarField& p = this->thermo().p();
|
||||
|
||||
forAll(rho, celli)
|
||||
{
|
||||
const scalar rhoi = rho[celli];
|
||||
const scalar Ti = T[celli];
|
||||
const scalar pi = p[celli];
|
||||
|
||||
scalarField c(nSpecie_, 0.0);
|
||||
for (label i=0; i<nSpecie_; i++)
|
||||
{
|
||||
const scalar Yi = Y_[i][celli];
|
||||
c[i] = rhoi*Yi/specieThermo_[i].W();
|
||||
}
|
||||
|
||||
const scalar w = omegaI
|
||||
(
|
||||
reactionI,
|
||||
c,
|
||||
Ti,
|
||||
pi,
|
||||
pf,
|
||||
cf,
|
||||
lRef,
|
||||
pr,
|
||||
cr,
|
||||
rRef
|
||||
);
|
||||
|
||||
RR[celli] = w*specieThermo_[specieI].W();
|
||||
|
||||
}
|
||||
|
||||
return tRR;
|
||||
}
|
||||
|
||||
|
||||
template<class CompType, class ThermoType>
|
||||
void Foam::chemistryModel<CompType, ThermoType>::calculate()
|
||||
{
|
||||
|
||||
@ -198,6 +198,13 @@ public:
|
||||
const label i
|
||||
);
|
||||
|
||||
//- Return reaction rate of the specieI in reactionI
|
||||
virtual tmp<DimensionedField<scalar, volMesh> > calculateRR
|
||||
(
|
||||
const label reactionI,
|
||||
const label specieI
|
||||
) const;
|
||||
|
||||
//- Solve the reaction system for the given time step
|
||||
// and return the characteristic time
|
||||
virtual scalar solve(const scalar deltaT);
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -36,6 +36,7 @@ SourceFiles
|
||||
#ifndef basicMultiComponentMixture_H
|
||||
#define basicMultiComponentMixture_H
|
||||
|
||||
#include "typeInfo.H"
|
||||
#include "volFields.H"
|
||||
#include "PtrList.H"
|
||||
#include "speciesTable.H"
|
||||
@ -65,6 +66,9 @@ protected:
|
||||
|
||||
public:
|
||||
|
||||
//- Run time type information
|
||||
TypeName("basicMultiComponentMixture");
|
||||
|
||||
//- The base class of the mixture
|
||||
typedef basicMultiComponentMixture basicMixtureType;
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -84,4 +84,26 @@ Foam::basicSolidChemistryModel::RR(const label i)
|
||||
}
|
||||
|
||||
|
||||
Foam::tmp<Foam::DimensionedField<Foam::scalar, Foam::volMesh> >
|
||||
Foam::basicSolidChemistryModel::calculateRR
|
||||
(
|
||||
const label reactionI,
|
||||
const label specieI
|
||||
) const
|
||||
{
|
||||
notImplemented
|
||||
(
|
||||
"Foam::DimensionedField<Foam::scalar, Foam::volMesh>&"
|
||||
"basicSolidChemistryModel::calculateRR(const label)"
|
||||
);
|
||||
|
||||
return dynamic_cast<tmp<DimensionedField<scalar, volMesh> >&>
|
||||
(
|
||||
const_cast<DimensionedField<scalar, volMesh>& >
|
||||
(
|
||||
DimensionedField<scalar, volMesh>::null()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2013-2013 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -133,6 +133,13 @@ public:
|
||||
const label i
|
||||
) const = 0;
|
||||
|
||||
//- Returns the reaction rate of the specieI in reactionI
|
||||
virtual tmp<DimensionedField<scalar, volMesh> > calculateRR
|
||||
(
|
||||
const label reactionI,
|
||||
const label specieI
|
||||
) const;
|
||||
|
||||
//- Return sensible enthalpy for gas i [J/Kg]
|
||||
virtual tmp<volScalarField> gasHs
|
||||
(
|
||||
|
||||
@ -44,6 +44,7 @@ boundaryField
|
||||
atmosphere
|
||||
{
|
||||
type pressureInletOutletVelocity;
|
||||
tangentialVelocity $internalField;
|
||||
value uniform (0 0 0);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user