Merge branch 'master' of github.com:OpenFOAM/OpenFOAM-2.3.x
This commit is contained in:
commit
aaa77df090
16 changed files with 184 additions and 95 deletions
|
|
@ -62,7 +62,7 @@ Foam::heatTransferModels::RanzMarshall::~RanzMarshall()
|
|||
Foam::tmp<Foam::volScalarField>
|
||||
Foam::heatTransferModels::RanzMarshall::K() const
|
||||
{
|
||||
volScalarField Nu(scalar(2) + 0.6*pair_.Re()*cbrt(pair_.Pr()));
|
||||
volScalarField Nu(scalar(2) + 0.6*sqrt(pair_.Re())*cbrt(pair_.Pr()));
|
||||
|
||||
return
|
||||
6.0
|
||||
|
|
|
|||
|
|
@ -199,7 +199,10 @@ void Foam::JohnsonJacksonParticleSlipFvPatchVectorField::updateCoeffs()
|
|||
|
||||
const scalarField nu
|
||||
(
|
||||
phased.nu()->boundaryField()[patch().index()]
|
||||
patch().lookupPatchField<volScalarField, scalar>
|
||||
(
|
||||
IOobject::groupName("nut", phased.name())
|
||||
)
|
||||
);
|
||||
|
||||
word ThetaName(IOobject::groupName("Theta", phased.name()));
|
||||
|
|
|
|||
|
|
@ -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) 2013 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
|
|
@ -154,11 +154,11 @@ Foam::cyclicACMIFvPatchField<Type>::patchNeighbourField() const
|
|||
const Field<Type>& iField = this->internalField();
|
||||
const labelUList& nbrFaceCellsCoupled =
|
||||
cyclicACMIPatch_.cyclicACMIPatch().neighbPatch().faceCells();
|
||||
const labelUList& nbrFaceCellsNonOverlap =
|
||||
const labelUList& faceCellsNonOverlap =
|
||||
cyclicACMIPatch_.cyclicACMIPatch().nonOverlapPatch().faceCells();
|
||||
|
||||
Field<Type> pnfCoupled(iField, nbrFaceCellsCoupled);
|
||||
Field<Type> pnfNonOverlap(iField, nbrFaceCellsNonOverlap);
|
||||
Field<Type> pfNonOverlap(iField, faceCellsNonOverlap);
|
||||
|
||||
tmp<Field<Type> > tpnf
|
||||
(
|
||||
|
|
@ -167,7 +167,7 @@ Foam::cyclicACMIFvPatchField<Type>::patchNeighbourField() const
|
|||
cyclicACMIPatch_.interpolate
|
||||
(
|
||||
pnfCoupled,
|
||||
pnfNonOverlap
|
||||
pfNonOverlap
|
||||
)
|
||||
)
|
||||
);
|
||||
|
|
@ -287,10 +287,14 @@ Foam::tmp<Foam::Field<Type> > Foam::cyclicACMIFvPatchField<Type>::snGrad
|
|||
template<class Type>
|
||||
void Foam::cyclicACMIFvPatchField<Type>::updateCoeffs()
|
||||
{
|
||||
const scalarField& mask = cyclicACMIPatch_.cyclicACMIPatch().mask();
|
||||
// update non-overlap patch - some will implement updateCoeffs, and
|
||||
// others will implement evaluate
|
||||
|
||||
// scale neighbour field by (1 - mask)
|
||||
|
||||
const scalarField& mask = cyclicACMIPatch_.cyclicACMIPatch().mask();
|
||||
const fvPatchField<Type>& npf = nonOverlapPatchField();
|
||||
const_cast<fvPatchField<Type>&>(npf).updateCoeffs(mask);
|
||||
const_cast<fvPatchField<Type>&>(npf).updateCoeffs(1.0 - mask);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -300,9 +304,21 @@ void Foam::cyclicACMIFvPatchField<Type>::initEvaluate
|
|||
const Pstream::commsTypes comms
|
||||
)
|
||||
{
|
||||
// update non-overlap patch
|
||||
const fvPatchField<Type>& npf = nonOverlapPatchField();
|
||||
const_cast<fvPatchField<Type>&>(npf).evaluate(comms);
|
||||
// update non-overlap patch (if not already updated by updateCoeffs)
|
||||
|
||||
// scale neighbour field by (1 - mask)
|
||||
|
||||
fvPatchField<Type>& npf =
|
||||
const_cast<fvPatchField<Type>&>(nonOverlapPatchField());
|
||||
|
||||
if (!npf.updated())
|
||||
{
|
||||
const scalarField& mask = cyclicACMIPatch_.cyclicACMIPatch().mask();
|
||||
|
||||
npf.evaluate(comms);
|
||||
|
||||
npf *= 1.0 - mask;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -313,13 +329,16 @@ void Foam::cyclicACMIFvPatchField<Type>::evaluate
|
|||
)
|
||||
{
|
||||
// blend contributions from the coupled and non-overlap patches
|
||||
|
||||
// neighbour patch field is updated via updateCoeffs or initEvaluate
|
||||
// and is already scaled by (1 - mask)
|
||||
const fvPatchField<Type>& npf = nonOverlapPatchField();
|
||||
|
||||
coupledFvPatchField<Type>::evaluate(comms);
|
||||
const Field<Type>& cpf = *this;
|
||||
|
||||
const scalarField& mask = cyclicACMIPatch_.cyclicACMIPatch().mask();
|
||||
Field<Type>::operator=(mask*cpf + (1.0 - mask)*npf);
|
||||
Field<Type>::operator=(mask*cpf + npf);
|
||||
|
||||
fvPatchField<Type>::evaluate();
|
||||
}
|
||||
|
|
@ -333,7 +352,7 @@ Foam::cyclicACMIFvPatchField<Type>::valueInternalCoeffs
|
|||
) const
|
||||
{
|
||||
// note: do not blend based on mask field
|
||||
// - when applied this is scaled by the areas which area already scaled
|
||||
// - when applied this is scaled by the areas which are already scaled
|
||||
return coupledFvPatchField<Type>::valueInternalCoeffs(w);
|
||||
}
|
||||
|
||||
|
|
@ -346,7 +365,7 @@ Foam::cyclicACMIFvPatchField<Type>::valueBoundaryCoeffs
|
|||
) const
|
||||
{
|
||||
// note: do not blend based on mask field
|
||||
// - when applied this is scaled by the areas which area already scaled
|
||||
// - when applied this is scaled by the areas which are already scaled
|
||||
return coupledFvPatchField<Type>::valueBoundaryCoeffs(w);
|
||||
}
|
||||
|
||||
|
|
@ -359,7 +378,7 @@ Foam::cyclicACMIFvPatchField<Type>::gradientInternalCoeffs
|
|||
) const
|
||||
{
|
||||
// note: do not blend based on mask field
|
||||
// - when applied this is scaled by the areas which area already scaled
|
||||
// - when applied this is scaled by the areas which are already scaled
|
||||
return coupledFvPatchField<Type>::gradientInternalCoeffs(deltaCoeffs);
|
||||
}
|
||||
|
||||
|
|
@ -369,7 +388,7 @@ Foam::tmp<Foam::Field<Type> >
|
|||
Foam::cyclicACMIFvPatchField<Type>::gradientInternalCoeffs() const
|
||||
{
|
||||
// note: do not blend based on mask field
|
||||
// - when applied this is scaled by the areas which area already scaled
|
||||
// - when applied this is scaled by the areas which are already scaled
|
||||
return coupledFvPatchField<Type>::gradientInternalCoeffs();
|
||||
}
|
||||
|
||||
|
|
@ -382,7 +401,7 @@ Foam::cyclicACMIFvPatchField<Type>::gradientBoundaryCoeffs
|
|||
) const
|
||||
{
|
||||
// note: do not blend based on mask field
|
||||
// - when applied this is scaled by the areas which area already scaled
|
||||
// - when applied this is scaled by the areas which are already scaled
|
||||
return coupledFvPatchField<Type>::gradientBoundaryCoeffs(deltaCoeffs);
|
||||
}
|
||||
|
||||
|
|
@ -392,7 +411,7 @@ Foam::tmp<Foam::Field<Type> >
|
|||
Foam::cyclicACMIFvPatchField<Type>::gradientBoundaryCoeffs() const
|
||||
{
|
||||
// note: do not blend based on mask field
|
||||
// - when applied this is scaled by the areas which area already scaled
|
||||
// - when applied this is scaled by the areas which are already scaled
|
||||
return coupledFvPatchField<Type>::gradientBoundaryCoeffs();
|
||||
}
|
||||
|
||||
|
|
@ -403,11 +422,13 @@ void Foam::cyclicACMIFvPatchField<Type>::manipulateMatrix
|
|||
fvMatrix<Type>& matrix
|
||||
)
|
||||
{
|
||||
// blend contributions from the coupled and non-overlap patches
|
||||
const scalarField& mask = cyclicACMIPatch_.cyclicACMIPatch().mask();
|
||||
|
||||
// nothing to be done by the AMI, but re-direct to non-overlap patch
|
||||
// with non-overlap patch weights
|
||||
const fvPatchField<Type>& npf = nonOverlapPatchField();
|
||||
|
||||
const scalarField& mask = cyclicACMIPatch_.cyclicACMIPatch().mask();
|
||||
const_cast<fvPatchField<Type>&>(npf).manipulateMatrix(matrix, mask);
|
||||
const_cast<fvPatchField<Type>&>(npf).manipulateMatrix(matrix, 1.0 - mask);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -166,9 +166,30 @@ public:
|
|||
// Evaluation functions
|
||||
|
||||
//- Return true if coupled. Note that the underlying patch
|
||||
// is not coupled() - the points don't align.
|
||||
// is not coupled() - the points don't align
|
||||
virtual bool coupled() const;
|
||||
|
||||
//- Return true if this patch field fixes a value
|
||||
// Needed to check if a level has to be specified while solving
|
||||
// Poissons equations
|
||||
virtual bool fixesValue() const
|
||||
{
|
||||
const scalarField& mask =
|
||||
cyclicACMIPatch_.cyclicACMIPatch().mask();
|
||||
|
||||
if (gMax(mask) > 1e-5)
|
||||
{
|
||||
// regions connected
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
// fully separated
|
||||
return nonOverlapPatchField().fixesValue();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//- Return neighbour coupled internal cell data
|
||||
virtual tmp<Field<Type> > patchNeighbourField() const;
|
||||
|
||||
|
|
|
|||
|
|
@ -38,6 +38,10 @@ namespace Foam
|
|||
namespace compressible
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
scalar epsilonWallFunctionFvPatchScalarField::tolerance_ = 1e-5;
|
||||
|
||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||
|
||||
void epsilonWallFunctionFvPatchScalarField::checkType()
|
||||
|
|
@ -469,17 +473,17 @@ void epsilonWallFunctionFvPatchScalarField::updateCoeffs
|
|||
|
||||
scalarField& epsilonf = *this;
|
||||
|
||||
// only set the values if the weights are < 1 - tolerance
|
||||
// only set the values if the weights are > tolerance
|
||||
forAll(weights, faceI)
|
||||
{
|
||||
scalar w = weights[faceI];
|
||||
|
||||
if (w < 1.0 - 1e-6)
|
||||
if (w > tolerance_)
|
||||
{
|
||||
label cellI = patch().faceCells()[faceI];
|
||||
|
||||
G[cellI] = w*G[cellI] + (1.0 - w)*G0[cellI];
|
||||
epsilon[cellI] = w*epsilon[cellI] + (1.0 - w)*epsilon0[cellI];
|
||||
G[cellI] = (1.0 - w)*G[cellI] + w*G0[cellI];
|
||||
epsilon[cellI] = (1.0 - w)*epsilon[cellI] + w*epsilon0[cellI];
|
||||
epsilonf[faceI] = epsilon[cellI];
|
||||
}
|
||||
}
|
||||
|
|
@ -521,16 +525,16 @@ void epsilonWallFunctionFvPatchScalarField::manipulateMatrix
|
|||
DynamicList<scalar> constraintEpsilon(weights.size());
|
||||
const labelUList& faceCells = patch().faceCells();
|
||||
|
||||
const DimensionedField<scalar, volMesh>& epsilon
|
||||
= dimensionedInternalField();
|
||||
const DimensionedField<scalar, volMesh>& epsilon =
|
||||
dimensionedInternalField();
|
||||
|
||||
label nConstrainedCells = 0;
|
||||
|
||||
|
||||
forAll(weights, faceI)
|
||||
{
|
||||
// only set the values if the weights are < 1 - tolerance
|
||||
if (weights[faceI] < (1.0 - 1e-6))
|
||||
// only set the values if the weights are > tolerance
|
||||
if (weights[faceI] > tolerance_)
|
||||
{
|
||||
nConstrainedCells++;
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -94,6 +94,9 @@ protected:
|
|||
|
||||
// Protected data
|
||||
|
||||
//- Tolerance used in weighted calculations
|
||||
static scalar tolerance_;
|
||||
|
||||
//- Cmu coefficient
|
||||
scalar Cmu_;
|
||||
|
||||
|
|
|
|||
|
|
@ -39,6 +39,10 @@ namespace Foam
|
|||
namespace compressible
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
scalar omegaWallFunctionFvPatchScalarField::tolerance_ = 1e-5;
|
||||
|
||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||
|
||||
void omegaWallFunctionFvPatchScalarField::checkType()
|
||||
|
|
@ -81,14 +85,14 @@ void omegaWallFunctionFvPatchScalarField::setMaster()
|
|||
{
|
||||
if (isA<omegaWallFunctionFvPatchScalarField>(bf[patchI]))
|
||||
{
|
||||
omegaWallFunctionFvPatchScalarField& epf = omegaPatch(patchI);
|
||||
omegaWallFunctionFvPatchScalarField& opf = omegaPatch(patchI);
|
||||
|
||||
if (master == -1)
|
||||
{
|
||||
master = patchI;
|
||||
}
|
||||
|
||||
epf.master() = master;
|
||||
opf.master() = master;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -162,10 +166,10 @@ omegaWallFunctionFvPatchScalarField::omegaPatch(const label patchI)
|
|||
|
||||
const volScalarField::GeometricBoundaryField& bf = omega.boundaryField();
|
||||
|
||||
const omegaWallFunctionFvPatchScalarField& epf =
|
||||
const omegaWallFunctionFvPatchScalarField& opf =
|
||||
refCast<const omegaWallFunctionFvPatchScalarField>(bf[patchI]);
|
||||
|
||||
return const_cast<omegaWallFunctionFvPatchScalarField&>(epf);
|
||||
return const_cast<omegaWallFunctionFvPatchScalarField&>(opf);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -181,11 +185,11 @@ void omegaWallFunctionFvPatchScalarField::calculateTurbulenceFields
|
|||
{
|
||||
if (!cornerWeights_[patchI].empty())
|
||||
{
|
||||
omegaWallFunctionFvPatchScalarField& epf = omegaPatch(patchI);
|
||||
omegaWallFunctionFvPatchScalarField& opf = omegaPatch(patchI);
|
||||
|
||||
const List<scalar>& w = cornerWeights_[patchI];
|
||||
|
||||
epf.calculate(turbulence, w, epf.patch(), G0, omega0);
|
||||
opf.calculate(turbulence, w, opf.patch(), G0, omega0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -194,9 +198,9 @@ void omegaWallFunctionFvPatchScalarField::calculateTurbulenceFields
|
|||
{
|
||||
if (!cornerWeights_[patchI].empty())
|
||||
{
|
||||
omegaWallFunctionFvPatchScalarField& epf = omegaPatch(patchI);
|
||||
omegaWallFunctionFvPatchScalarField& opf = omegaPatch(patchI);
|
||||
|
||||
epf == scalarField(omega0, epf.patch().faceCells());
|
||||
opf == scalarField(omega0, opf.patch().faceCells());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -486,17 +490,17 @@ void omegaWallFunctionFvPatchScalarField::updateCoeffs
|
|||
|
||||
scalarField& omegaf = *this;
|
||||
|
||||
// only set the values if the weights are < 1 - tolerance
|
||||
// only set the values if the weights are > tolerance_
|
||||
forAll(weights, faceI)
|
||||
{
|
||||
scalar w = weights[faceI];
|
||||
|
||||
if (w < 1.0 - 1e-6)
|
||||
if (w > tolerance_)
|
||||
{
|
||||
label cellI = patch().faceCells()[faceI];
|
||||
|
||||
G[cellI] = w*G[cellI] + (1.0 - w)*G0[cellI];
|
||||
omega[cellI] = w*omega[cellI] + (1.0 - w)*omega0[cellI];
|
||||
G[cellI] = (1.0 - w)*G[cellI] + w*G0[cellI];
|
||||
omega[cellI] = (1.0 - w)*omega[cellI] + w*omega0[cellI];
|
||||
omegaf[faceI] = omega[cellI];
|
||||
}
|
||||
}
|
||||
|
|
@ -538,16 +542,16 @@ void omegaWallFunctionFvPatchScalarField::manipulateMatrix
|
|||
DynamicList<scalar> constraintomega(weights.size());
|
||||
const labelUList& faceCells = patch().faceCells();
|
||||
|
||||
const DimensionedField<scalar, volMesh>& omega
|
||||
= dimensionedInternalField();
|
||||
const DimensionedField<scalar, volMesh>& omega =
|
||||
dimensionedInternalField();
|
||||
|
||||
label nConstrainedCells = 0;
|
||||
|
||||
|
||||
forAll(weights, faceI)
|
||||
{
|
||||
// only set the values if the weights are < 1 - tolerance
|
||||
if (weights[faceI] < (1.0 - 1e-6))
|
||||
// only set the values if the weights are > tolerance
|
||||
if (weights[faceI] > tolerance_)
|
||||
{
|
||||
nConstrainedCells++;
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -99,6 +99,9 @@ protected:
|
|||
|
||||
// Protected data
|
||||
|
||||
//- Tolerance used in weighted calculations
|
||||
static scalar tolerance_;
|
||||
|
||||
//- Cmu coefficient
|
||||
scalar Cmu_;
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -269,7 +269,7 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::updateCoeffs()
|
|||
}
|
||||
}
|
||||
}
|
||||
q = (Ta_ - Tp)*(1.0/h_ + totalSolidRes);
|
||||
q = (Ta_ - Tp)/(1.0/h_ + totalSolidRes);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
@ -287,7 +287,7 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::updateCoeffs()
|
|||
{
|
||||
if (q[i] > 0) //in
|
||||
{
|
||||
this->refGrad()[i] = q[i]/KWall[i];
|
||||
this->refGrad()[i] = q[i]/KWall[i];
|
||||
this->refValue()[i] = 0.0;
|
||||
this->valueFraction()[i] = 0.0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,6 +38,10 @@ namespace Foam
|
|||
namespace incompressible
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
scalar epsilonWallFunctionFvPatchScalarField::tolerance_ = 1e-5;
|
||||
|
||||
// * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * //
|
||||
|
||||
void epsilonWallFunctionFvPatchScalarField::checkType()
|
||||
|
|
@ -469,17 +473,17 @@ void epsilonWallFunctionFvPatchScalarField::updateCoeffs
|
|||
|
||||
scalarField& epsilonf = *this;
|
||||
|
||||
// only set the values if the weights are < 1 - tolerance
|
||||
// only set the values if the weights are > tolerance
|
||||
forAll(weights, faceI)
|
||||
{
|
||||
scalar w = weights[faceI];
|
||||
|
||||
if (w < 1.0 - 1e-6)
|
||||
if (w > tolerance_)
|
||||
{
|
||||
label cellI = patch().faceCells()[faceI];
|
||||
|
||||
G[cellI] = w*G[cellI] + (1.0 - w)*G0[cellI];
|
||||
epsilon[cellI] = w*epsilon[cellI] + (1.0 - w)*epsilon0[cellI];
|
||||
G[cellI] = (1.0 - w)*G[cellI] + w*G0[cellI];
|
||||
epsilon[cellI] = (1.0 - w)*epsilon[cellI] + w*epsilon0[cellI];
|
||||
epsilonf[faceI] = epsilon[cellI];
|
||||
}
|
||||
}
|
||||
|
|
@ -521,16 +525,16 @@ void epsilonWallFunctionFvPatchScalarField::manipulateMatrix
|
|||
DynamicList<scalar> constraintEpsilon(weights.size());
|
||||
const labelUList& faceCells = patch().faceCells();
|
||||
|
||||
const DimensionedField<scalar, volMesh>& epsilon
|
||||
= dimensionedInternalField();
|
||||
const DimensionedField<scalar, volMesh>& epsilon =
|
||||
dimensionedInternalField();
|
||||
|
||||
label nConstrainedCells = 0;
|
||||
|
||||
|
||||
forAll(weights, faceI)
|
||||
{
|
||||
// only set the values if the weights are < 1 - tolerance
|
||||
if (weights[faceI] < (1.0 - 1e-6))
|
||||
// only set the values if the weights are > tolerance
|
||||
if (weights[faceI] > tolerance_)
|
||||
{
|
||||
nConstrainedCells++;
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -94,6 +94,9 @@ protected:
|
|||
|
||||
// Protected data
|
||||
|
||||
//- Tolerance used in weighted calculations
|
||||
static scalar tolerance_;
|
||||
|
||||
//- Cmu coefficient
|
||||
scalar Cmu_;
|
||||
|
||||
|
|
|
|||
|
|
@ -39,6 +39,10 @@ namespace Foam
|
|||
namespace incompressible
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
scalar omegaWallFunctionFvPatchScalarField::tolerance_ = 1e-5;
|
||||
|
||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||
|
||||
void omegaWallFunctionFvPatchScalarField::checkType()
|
||||
|
|
@ -81,14 +85,14 @@ void omegaWallFunctionFvPatchScalarField::setMaster()
|
|||
{
|
||||
if (isA<omegaWallFunctionFvPatchScalarField>(bf[patchI]))
|
||||
{
|
||||
omegaWallFunctionFvPatchScalarField& epf = omegaPatch(patchI);
|
||||
omegaWallFunctionFvPatchScalarField& opf = omegaPatch(patchI);
|
||||
|
||||
if (master == -1)
|
||||
{
|
||||
master = patchI;
|
||||
}
|
||||
|
||||
epf.master() = master;
|
||||
opf.master() = master;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -162,10 +166,10 @@ omegaWallFunctionFvPatchScalarField::omegaPatch(const label patchI)
|
|||
|
||||
const volScalarField::GeometricBoundaryField& bf = omega.boundaryField();
|
||||
|
||||
const omegaWallFunctionFvPatchScalarField& epf =
|
||||
const omegaWallFunctionFvPatchScalarField& opf =
|
||||
refCast<const omegaWallFunctionFvPatchScalarField>(bf[patchI]);
|
||||
|
||||
return const_cast<omegaWallFunctionFvPatchScalarField&>(epf);
|
||||
return const_cast<omegaWallFunctionFvPatchScalarField&>(opf);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -181,11 +185,11 @@ void omegaWallFunctionFvPatchScalarField::calculateTurbulenceFields
|
|||
{
|
||||
if (!cornerWeights_[patchI].empty())
|
||||
{
|
||||
omegaWallFunctionFvPatchScalarField& epf = omegaPatch(patchI);
|
||||
omegaWallFunctionFvPatchScalarField& opf = omegaPatch(patchI);
|
||||
|
||||
const List<scalar>& w = cornerWeights_[patchI];
|
||||
|
||||
epf.calculate(turbulence, w, epf.patch(), G0, omega0);
|
||||
opf.calculate(turbulence, w, opf.patch(), G0, omega0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -194,9 +198,9 @@ void omegaWallFunctionFvPatchScalarField::calculateTurbulenceFields
|
|||
{
|
||||
if (!cornerWeights_[patchI].empty())
|
||||
{
|
||||
omegaWallFunctionFvPatchScalarField& epf = omegaPatch(patchI);
|
||||
omegaWallFunctionFvPatchScalarField& opf = omegaPatch(patchI);
|
||||
|
||||
epf == scalarField(omega0, epf.patch().faceCells());
|
||||
opf == scalarField(omega0, opf.patch().faceCells());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -484,17 +488,17 @@ void omegaWallFunctionFvPatchScalarField::updateCoeffs
|
|||
|
||||
scalarField& omegaf = *this;
|
||||
|
||||
// only set the values if the weights are < 1 - tolerance
|
||||
// only set the values if the weights are > tolerance
|
||||
forAll(weights, faceI)
|
||||
{
|
||||
scalar w = weights[faceI];
|
||||
|
||||
if (w < 1.0 - 1e-6)
|
||||
if (w > tolerance_)
|
||||
{
|
||||
label cellI = patch().faceCells()[faceI];
|
||||
|
||||
G[cellI] = w*G[cellI] + (1.0 - w)*G0[cellI];
|
||||
omega[cellI] = w*omega[cellI] + (1.0 - w)*omega0[cellI];
|
||||
G[cellI] = (1.0 - w)*G[cellI] + w*G0[cellI];
|
||||
omega[cellI] = (1.0 - w)*omega[cellI] + w*omega0[cellI];
|
||||
omegaf[faceI] = omega[cellI];
|
||||
}
|
||||
}
|
||||
|
|
@ -536,16 +540,16 @@ void omegaWallFunctionFvPatchScalarField::manipulateMatrix
|
|||
DynamicList<scalar> constraintomega(weights.size());
|
||||
const labelUList& faceCells = patch().faceCells();
|
||||
|
||||
const DimensionedField<scalar, volMesh>& omega
|
||||
= dimensionedInternalField();
|
||||
const DimensionedField<scalar, volMesh>& omega =
|
||||
dimensionedInternalField();
|
||||
|
||||
label nConstrainedCells = 0;
|
||||
|
||||
|
||||
forAll(weights, faceI)
|
||||
{
|
||||
// only set the values if the weights are < 1 - tolerance
|
||||
if (weights[faceI] < (1.0 - 1e-6))
|
||||
// only set the values if the weights are > tolerance
|
||||
if (weights[faceI] > tolerance_)
|
||||
{
|
||||
nConstrainedCells++;
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -99,6 +99,9 @@ protected:
|
|||
|
||||
// Protected data
|
||||
|
||||
//- Tolerance used in weighted calculations
|
||||
static scalar tolerance_;
|
||||
|
||||
//- Cmu coefficient
|
||||
scalar Cmu_;
|
||||
|
||||
|
|
|
|||
|
|
@ -69,26 +69,25 @@ subModels
|
|||
model1
|
||||
{
|
||||
type patchInjection;
|
||||
parcelBasisType fixed;
|
||||
massTotal 40;
|
||||
SOI 1;
|
||||
parcelBasisType mass;
|
||||
patchName inlet;
|
||||
duration 4;
|
||||
parcelsPerSecond 100644;
|
||||
U0 (-10 0 0);
|
||||
nParticle 500000;
|
||||
parcelsPerSecond 244462;
|
||||
flowRateProfile constant 1;
|
||||
sizeDistribution
|
||||
{
|
||||
type normal;
|
||||
normalDistribution
|
||||
{
|
||||
expectation 50e-6;
|
||||
variance 20e-6;
|
||||
minValue 10e-6;
|
||||
maxValue 90e-6;
|
||||
expectation 100e-6;
|
||||
variance 25e-6;
|
||||
minValue 20e-6;
|
||||
maxValue 180e-6;
|
||||
}
|
||||
}
|
||||
flowRateProfile constant 1;
|
||||
massTotal 0;
|
||||
SOI 1;
|
||||
duration 4;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue