ENH: twoPhaseEulerFoam: Removed requirement that a model (most likely "none") had to be specified for all pairs

This commit is contained in:
william
2014-01-23 16:37:16 +00:00
parent acf490cb44
commit 87115af2d0
23 changed files with 238 additions and 541 deletions

View File

@ -35,6 +35,8 @@ namespace Foam
defineRunTimeSelectionTable(dragModel, dictionary); defineRunTimeSelectionTable(dragModel, dictionary);
} }
const Foam::dimensionSet Foam::dragModel::dimK(1, -3, -1, 0, 0);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //

View File

@ -93,6 +93,12 @@ public:
); );
// Static data members
//- Coefficient dimensions
static const dimensionSet dimK;
// Constructors // Constructors
// Construct without residual constants // Construct without residual constants

View File

@ -34,6 +34,8 @@ namespace Foam
defineRunTimeSelectionTable(heatTransferModel, dictionary); defineRunTimeSelectionTable(heatTransferModel, dictionary);
} }
const Foam::dimensionSet Foam::heatTransferModel::dimK(1, -1, -3, -1, 0);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //

View File

@ -80,6 +80,12 @@ public:
); );
// Static data members
//- Coefficient dimensions
static const dimensionSet dimK;
// Constructors // Constructors
//- Construct froma dictionary and a phase pair //- Construct froma dictionary and a phase pair

View File

@ -35,6 +35,8 @@ namespace Foam
defineRunTimeSelectionTable(liftModel, dictionary); defineRunTimeSelectionTable(liftModel, dictionary);
} }
const Foam::dimensionSet Foam::liftModel::dimF(1, -2, -2, 0, 0);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //

View File

@ -81,6 +81,12 @@ public:
); );
// Static data members
//- Force dimensions
static const dimensionSet dimF;
// Constructors // Constructors
//- Construct from a dictionary and a phase pair //- Construct from a dictionary and a phase pair

View File

@ -34,6 +34,8 @@ namespace Foam
defineRunTimeSelectionTable(turbulentDispersionModel, dictionary); defineRunTimeSelectionTable(turbulentDispersionModel, dictionary);
} }
const Foam::dimensionSet Foam::turbulentDispersionModel::dimF(1, -2, -2, 0, 0);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //

View File

@ -80,6 +80,11 @@ public:
(dict, pair) (dict, pair)
); );
// Static data members
//- Force dimensions
static const dimensionSet dimF;
// Constructors // Constructors

View File

@ -34,6 +34,8 @@ namespace Foam
defineRunTimeSelectionTable(virtualMassModel, dictionary); defineRunTimeSelectionTable(virtualMassModel, dictionary);
} }
const Foam::dimensionSet Foam::virtualMassModel::dimK(dimDensity);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //

View File

@ -83,6 +83,12 @@ public:
); );
// Static data members
//- Coefficient dimensions
static const dimensionSet dimK;
// Constructors // Constructors
//- Construct from a dictionary and a phase pair //- Construct from a dictionary and a phase pair

View File

@ -26,6 +26,8 @@ License
#include "wallLubricationModel.H" #include "wallLubricationModel.H"
#include "phasePair.H" #include "phasePair.H"
const Foam::dimensionSet Foam::wallLubricationModel::dimF(1, -2, -2, 0, 0);
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam namespace Foam

View File

@ -84,6 +84,12 @@ public:
); );
// Static data members
//- Coefficient dimensions
static const dimensionSet dimF;
// Constructors // Constructors
//- Construct from components //- Construct from components

View File

@ -66,30 +66,6 @@ Foam::BlendedInterfacialModel<modelType>::BlendedInterfacialModel
pair_(pair), pair_(pair),
pair1In2_(pair1In2), pair1In2_(pair1In2),
pair2In1_(pair2In1), pair2In1_(pair2In1),
model_
(
modelType::New
(
modelTable[pair_],
pair_
)
),
model1In2_
(
modelType::New
(
modelTable[pair1In2_],
pair1In2_
)
),
model2In1_
(
modelType::New
(
modelTable[pair2In1_],
pair2In1_
)
),
blending_ blending_
( (
blendingMethod::New blendingMethod::New
@ -105,7 +81,43 @@ Foam::BlendedInterfacialModel<modelType>::BlendedInterfacialModel
dimless, dimless,
blendingDict.lookup("residualAlpha") blendingDict.lookup("residualAlpha")
) )
{} {
if (modelTable.found(pair_))
{
model_.set
(
modelType::New
(
modelTable[pair_],
pair_
).ptr()
);
}
if (modelTable.found(pair1In2_))
{
model1In2_.set
(
modelType::New
(
modelTable[pair1In2_],
pair1In2_
).ptr()
);
}
if (modelTable.found(pair2In1_))
{
model2In1_.set
(
modelType::New
(
modelTable[pair2In1_],
pair2In1_
).ptr()
);
}
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
@ -121,21 +133,56 @@ template<class modelType>
Foam::tmp<Foam::volScalarField> Foam::tmp<Foam::volScalarField>
Foam::BlendedInterfacialModel<modelType>::K() const Foam::BlendedInterfacialModel<modelType>::K() const
{ {
tmp<volScalarField> f1(blending_->f1()); tmp<volScalarField> f1, f2;
tmp<volScalarField> f2(blending_->f2());
tmp<volScalarField> c if (model_.valid() || model1In2_.valid())
{
f1 = blending_->f1();
}
if (model_.valid() || model2In1_.valid())
{
f2 = blending_->f2();
}
tmp<volScalarField> x
( (
model_->K()*(f1() - f2()) new volScalarField
+ model1In2_->K()*(1 - f1) (
+ model2In1_->K()*f2 IOobject
(
modelType::typeName + "Coeff",
pair_.phase1().mesh().time().timeName(),
pair_.phase1().mesh()
),
pair_.phase1().mesh(),
dimensionedScalar("zero", modelType::dimK, 0)
)
); );
c() *= max(pair_.phase1()*pair_.phase2(), residualAlpha_); if (model_.valid())
{
x() += model_->K()*(f1() - f2());
}
correctFixedFluxBCs(c()); if (model1In2_.valid())
{
x() += model1In2_->K()*(1 - f1);
}
return c; if (model2In1_.valid())
{
x() += model2In1_->K()*f2;
}
if (model_.valid() || model1In2_.valid() || model2In1_.valid())
{
x() *= max(pair_.phase1()*pair_.phase2(), residualAlpha_);
correctFixedFluxBCs(x());
}
return x;
} }
@ -144,19 +191,54 @@ template<class Type>
Foam::tmp<Foam::GeometricField<Type, Foam::fvPatchField, Foam::volMesh> > Foam::tmp<Foam::GeometricField<Type, Foam::fvPatchField, Foam::volMesh> >
Foam::BlendedInterfacialModel<modelType>::F() const Foam::BlendedInterfacialModel<modelType>::F() const
{ {
tmp<volScalarField> f1(blending_->f1()); tmp<volScalarField> f1, f2;
tmp<volScalarField> f2(blending_->f2());
tmp<GeometricField<Type, fvPatchField, volMesh> > v if (model_.valid() || model1In2_.valid())
{
f1 = blending_->f1();
}
if (model_.valid() || model2In1_.valid())
{
f2 = blending_->f2();
}
tmp<GeometricField<Type, fvPatchField, volMesh> > x
( (
model_->F()*(f1() - f2()) new GeometricField<Type, fvPatchField, volMesh>
+ model1In2_->F()*(1 - f1) (
- model2In1_->F()*f2 IOobject
(
modelType::typeName + "Coeff",
pair_.phase1().mesh().time().timeName(),
pair_.phase1().mesh()
),
pair_.phase1().mesh(),
dimensioned<Type>("zero", modelType::dimF, pTraits<Type>::zero)
)
); );
correctFixedFluxBCs(v()); if (model_.valid())
{
x() += model_->F()*(f1() - f2());
}
return v; if (model1In2_.valid())
{
x() += model1In2_->F()*(1 - f1);
}
if (model2In1_.valid())
{
x() -= model2In1_->F()*f2; // note : subtraction
}
if (model_.valid() || model1In2_.valid() || model2In1_.valid())
{
correctFixedFluxBCs(x());
}
return x;
} }

View File

@ -38,6 +38,8 @@ SourceFiles
#include "phasePair.H" #include "phasePair.H"
#include "orderedPhasePair.H" #include "orderedPhasePair.H"
#include "geometricZeroField.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam namespace Foam
@ -50,6 +52,8 @@ namespace Foam
template<class modelType> template<class modelType>
class BlendedInterfacialModel class BlendedInterfacialModel
{ {
private:
// Private data // Private data
//- Unordered phase pair //- Unordered phase pair

View File

@ -37,16 +37,20 @@ Foam::orderedPhasePair::orderedPhasePair
const dictTable& aspectRatioTable const dictTable& aspectRatioTable
) )
: :
phasePair(dispersed, continuous, g, sigmaTable, true), phasePair(dispersed, continuous, g, sigmaTable, true)
aspectRatio_ {
( if (aspectRatioTable.found(*this))
aspectRatioModel::New {
aspectRatio_.set
( (
aspectRatioTable[*this], aspectRatioModel::New
*this (
) aspectRatioTable[*this],
) *this
{} ).ptr()
);
}
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
@ -79,6 +83,13 @@ Foam::word Foam::orderedPhasePair::name() const
Foam::tmp<Foam::volScalarField> Foam::orderedPhasePair::E() const Foam::tmp<Foam::volScalarField> Foam::orderedPhasePair::E() const
{ {
if (!aspectRatio_.valid())
{
FatalErrorIn("Foam::orderedPhasePair::E() const")
<< "Aspect ratio model not specified for " << *this << "."
<< exit(FatalError);
}
return aspectRatio_->E(); return aspectRatio_->E();
} }

View File

@ -185,7 +185,7 @@ Foam::tmp<Foam::volScalarField> Foam::phasePair::Ta() const
Foam::tmp<Foam::volScalarField> Foam::phasePair::E() const Foam::tmp<Foam::volScalarField> Foam::phasePair::E() const
{ {
FatalErrorIn("Foam::phasePair::dispersed() const") FatalErrorIn("Foam::phasePair::E() const")
<< "Requested aspect ratio of the dispersed phase in an unordered pair" << "Requested aspect ratio of the dispersed phase in an unordered pair"
<< exit(FatalError); << exit(FatalError);

View File

@ -110,21 +110,18 @@ drag
} }
); );
lift virtualMass
( (
(air in water) (air in water)
{ {
type none; type constantCoefficient;
Cvm 0.5;
} }
(water in air) (water in air)
{ {
type none; type constantCoefficient;
} Cvm 0.5;
(air and water)
{
type none;
} }
); );
@ -141,67 +138,18 @@ heatTransfer
type RanzMarshall; type RanzMarshall;
residualRe 1e-3; residualRe 1e-3;
} }
(air and water)
{
type none;
}
); );
virtualMass lift
( (
(air in water)
{
type constantCoefficient;
Cvm 0.5;
}
(water in air)
{
type constantCoefficient;
Cvm 0.5;
}
(air and water)
{
type none;
}
); );
wallLubrication wallLubrication
( (
(air in water)
{
type none;
}
(water in air)
{
type none;
}
(air and water)
{
type none;
}
); );
turbulentDispersion turbulentDispersion
( (
(air in water)
{
type none;
}
(water in air)
{
type none;
}
(air and water)
{
type none;
}
); );
// Minimum allowable pressure // Minimum allowable pressure

View File

@ -110,21 +110,18 @@ drag
} }
); );
lift virtualMass
( (
(air in water) (air in water)
{ {
type none; type constantCoefficient;
Cvm 0.5;
} }
(water in air) (water in air)
{ {
type none; type constantCoefficient;
} Cvm 0.5;
(air and water)
{
type none;
} }
); );
@ -141,67 +138,18 @@ heatTransfer
type RanzMarshall; type RanzMarshall;
residualRe 1e-3; residualRe 1e-3;
} }
(air and water)
{
type none;
}
); );
virtualMass lift
( (
(air in water)
{
type constantCoefficient;
Cvm 0.5;
}
(water in air)
{
type constantCoefficient;
Cvm 0.5;
}
(air and water)
{
type none;
}
); );
wallLubrication wallLubrication
( (
(air in water)
{
type none;
}
(water in air)
{
type none;
}
(air and water)
{
type none;
}
); );
turbulentDispersion turbulentDispersion
( (
(air in water)
{
type none;
}
(water in air)
{
type none;
}
(air and water)
{
type none;
}
); );
// Minimum allowable pressure // Minimum allowable pressure

View File

@ -52,17 +52,6 @@ sigma
aspectRatio aspectRatio
( (
(particles in air)
{
type constant;
E0 1.0;
}
(air in particles)
{
type constant;
E0 1.0;
}
); );
drag drag
@ -78,33 +67,14 @@ drag
type none; type none;
} }
} }
(air in particles)
{
type none;
}
(particles and air)
{
type none;
}
); );
lift virtualMass
( (
(particles in air) (particles in air)
{ {
type none; type constantCoefficient;
} Cvm 0.5;
(air in particles)
{
type none;
}
(particles and air)
{
type none;
} }
); );
@ -115,71 +85,18 @@ heatTransfer
type RanzMarshall; type RanzMarshall;
residualRe 1e-3; residualRe 1e-3;
} }
(air in particles)
{
type none;
}
(particles and air)
{
type none;
}
); );
virtualMass lift
( (
(particles in air)
{
type constantCoefficient;
Cvm 0.5;
}
(air in particles)
{
type none;
}
(particles and air)
{
type none;
}
); );
wallLubrication wallLubrication
( (
(particles in air)
{
type none;
}
(air in particles)
{
type none;
}
(particles and air)
{
type none;
}
); );
turbulentDispersion turbulentDispersion
( (
(particles in air)
{
type none;
}
(air in particles)
{
type none;
}
(particles and air)
{
type none;
}
); );
// Minimum allowable pressure // Minimum allowable pressure

View File

@ -110,21 +110,18 @@ drag
} }
); );
lift virtualMass
( (
(air in water) (air in water)
{ {
type none; type constantCoefficient;
Cvm 0.5;
} }
(water in air) (water in air)
{ {
type none; type constantCoefficient;
} Cvm 0.5;
(air and water)
{
type none;
} }
); );
@ -141,67 +138,18 @@ heatTransfer
type RanzMarshall; type RanzMarshall;
residualRe 1e-3; residualRe 1e-3;
} }
(air and water)
{
type none;
}
); );
virtualMass lift
( (
(air in water)
{
type constantCoefficient;
Cvm 0.5;
}
(water in air)
{
type constantCoefficient;
Cvm 0.5;
}
(air and water)
{
type none;
}
); );
wallLubrication wallLubrication
( (
(air in water)
{
type none;
}
(water in air)
{
type none;
}
(air and water)
{
type none;
}
); );
turbulentDispersion turbulentDispersion
( (
(air in water)
{
type none;
}
(water in air)
{
type none;
}
(air and water)
{
type none;
}
); );
// Minimum allowable pressure // Minimum allowable pressure

View File

@ -19,32 +19,11 @@ phases (air water);
air air
{ {
diameterModel IATE; diameterModel isothermal;
isothermalCoeffs
IATECoeffs
{ {
dMax 1e-2; d0 3e-3;
dMin 1e-4; p0 1e5;
residualAlpha 1e-6;
sources
(
wakeEntrainmentCoalescence
{
Cwe 0.002;
}
randomCoalescence
{
Crc 0.04;
C 3;
alphaMax 0.75;
}
turbulentBreakUp
{
Cti 0.085;
WeCr 6;
}
);
} }
} }
@ -131,21 +110,18 @@ drag
} }
); );
lift virtualMass
( (
(air in water) (air in water)
{ {
type none; type constantCoefficient;
Cvm 0.5;
} }
(water in air) (water in air)
{ {
type none; type constantCoefficient;
} Cvm 0.5;
(air and water)
{
type none;
} }
); );
@ -162,67 +138,18 @@ heatTransfer
type RanzMarshall; type RanzMarshall;
residualRe 1e-3; residualRe 1e-3;
} }
(air and water)
{
type none;
}
); );
virtualMass lift
( (
(air in water)
{
type constantCoefficient;
Cvm 0.5;
}
(water in air)
{
type constantCoefficient;
Cvm 0.5;
}
(air and water)
{
type none;
}
); );
wallLubrication wallLubrication
( (
(air in water)
{
type none;
}
(water in air)
{
type none;
}
(air and water)
{
type none;
}
); );
turbulentDispersion turbulentDispersion
( (
(air in water)
{
type none;
}
(water in air)
{
type none;
}
(air and water)
{
type none;
}
); );
// Minimum allowable pressure // Minimum allowable pressure

View File

@ -52,17 +52,6 @@ sigma
aspectRatio aspectRatio
( (
(particles in air)
{
type constant;
E0 1.0;
}
(air in particles)
{
type constant;
E0 1.0;
}
); );
drag drag
@ -78,33 +67,14 @@ drag
type none; type none;
} }
} }
(air in particles)
{
type none;
}
(particles and air)
{
type none;
}
); );
lift virtualMass
( (
(particles in air) (particles in air)
{ {
type none; type constantCoefficient;
} Cvm 0.5;
(air in particles)
{
type none;
}
(particles and air)
{
type none;
} }
); );
@ -115,71 +85,18 @@ heatTransfer
type RanzMarshall; type RanzMarshall;
residualRe 1e-3; residualRe 1e-3;
} }
(air in particles)
{
type none;
}
(particles and air)
{
type none;
}
); );
virtualMass lift
( (
(particles in air)
{
type constantCoefficient;
Cvm 0.5;
}
(air in particles)
{
type none;
}
(particles and air)
{
type none;
}
); );
wallLubrication wallLubrication
( (
(particles in air)
{
type none;
}
(air in particles)
{
type none;
}
(particles and air)
{
type none;
}
); );
turbulentDispersion turbulentDispersion
( (
(particles in air)
{
type none;
}
(air in particles)
{
type none;
}
(particles and air)
{
type none;
}
); );
// Minimum allowable pressure // Minimum allowable pressure

View File

@ -110,21 +110,18 @@ drag
} }
); );
lift virtualMass
( (
(air in water) (air in water)
{ {
type none; type constantCoefficient;
Cvm 0.5;
} }
(water in air) (water in air)
{ {
type none; type constantCoefficient;
} Cvm 0.5;
(air and water)
{
type none;
} }
); );
@ -141,67 +138,18 @@ heatTransfer
type RanzMarshall; type RanzMarshall;
residualRe 1e-3; residualRe 1e-3;
} }
(air and water)
{
type none;
}
); );
virtualMass lift
( (
(air in water)
{
type constantCoefficient;
Cvm 0.5;
}
(water in air)
{
type constantCoefficient;
Cvm 0.5;
}
(air and water)
{
type none;
}
); );
wallLubrication wallLubrication
( (
(air in water)
{
type none;
}
(water in air)
{
type none;
}
(air and water)
{
type none;
}
); );
turbulentDispersion turbulentDispersion
( (
(air in water)
{
type none;
}
(water in air)
{
type none;
}
(air and water)
{
type none;
}
); );
// Minimum allowable pressure // Minimum allowable pressure