diff --git a/applications/solvers/lagrangian/DPMFoam/DPMFoam.C b/applications/solvers/lagrangian/DPMFoam/DPMFoam.C
index 9c97968c1c..513c123ddf 100644
--- a/applications/solvers/lagrangian/DPMFoam/DPMFoam.C
+++ b/applications/solvers/lagrangian/DPMFoam/DPMFoam.C
@@ -106,7 +106,7 @@ int main(int argc, char *argv[])
zeroGradientFvPatchVectorField::typeName
);
- cloudVolSUSu.internalField() = - cloudSU.source()/mesh.V();
+ cloudVolSUSu.internalField() = -cloudSU.source()/mesh.V();
cloudVolSUSu.correctBoundaryConditions();
cloudSU.source() = vector::zero;
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/Make/files b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/Make/files
index 43c0f9b2a9..e754fa07b8 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/Make/files
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/Make/files
@@ -12,4 +12,8 @@ heatTransferModels/heatTransferModel/heatTransferModel.C
heatTransferModels/heatTransferModel/newHeatTransferModel.C
heatTransferModels/RanzMarshall/RanzMarshall.C
+liftModels/liftModel/liftModel.C
+liftModels/liftModel/newLiftModel.C
+liftModels/constantCoefficient/constantCoefficient.C
+
LIB = $(FOAM_LIBBIN)/libcompressibleEulerianInterfacialModels
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/constantCoefficient/constantCoefficient.C b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/constantCoefficient/constantCoefficient.C
new file mode 100644
index 0000000000..069a983884
--- /dev/null
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/constantCoefficient/constantCoefficient.C
@@ -0,0 +1,86 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2014 OpenFOAM Foundation
+ \\/ 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 .
+
+\*---------------------------------------------------------------------------*/
+
+#include "constantCoefficient.H"
+#include "addToRunTimeSelectionTable.H"
+#include "fvc.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace liftModels
+{
+ defineTypeNameAndDebug(constantCoefficient, 0);
+
+ addToRunTimeSelectionTable
+ (
+ liftModel,
+ constantCoefficient,
+ dictionary
+ );
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+Foam::liftModels::constantCoefficient::constantCoefficient
+(
+ const dictionary& dict,
+ const volScalarField& alpha1,
+ const phaseModel& phase1,
+ const phaseModel& phase2
+)
+:
+ liftModel(dict, alpha1, phase1, phase2),
+ Cl_("Cl", dimless, dict.lookup("Cl"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+Foam::liftModels::constantCoefficient::~constantCoefficient()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+Foam::tmp Foam::liftModels::constantCoefficient::F
+(
+ const volVectorField& U
+) const
+{
+ return
+ Cl_
+ *(phase1_*phase1_.rho() + phase2_*phase2_.rho())
+ *(
+ (phase1_.U() - phase2_.U())
+ ^ fvc::curl(U)
+ );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/constantCoefficient/constantCoefficient.H b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/constantCoefficient/constantCoefficient.H
new file mode 100644
index 0000000000..054dc858be
--- /dev/null
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/constantCoefficient/constantCoefficient.H
@@ -0,0 +1,98 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2014 OpenFOAM Foundation
+ \\/ 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 .
+
+Class
+ Foam::liftModels::constantCoefficient
+
+Description
+
+SourceFiles
+ constantCoefficient.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef constantCoefficient_H
+#define constantCoefficient_H
+
+#include "liftModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace liftModels
+{
+
+/*---------------------------------------------------------------------------*\
+ Class constantCoefficient Declaration
+\*---------------------------------------------------------------------------*/
+
+class constantCoefficient
+:
+ public liftModel
+{
+ // Private data
+
+ //- Constant lift coefficient
+ dimensionedScalar Cl_;
+
+
+public:
+
+ //- Runtime type information
+ TypeName("constantCoefficient");
+
+
+ // Constructors
+
+ //- Construct from components
+ constantCoefficient
+ (
+ const dictionary& dict,
+ const volScalarField& alpha1,
+ const phaseModel& phase1,
+ const phaseModel& phase2
+ );
+
+
+ //- Destructor
+ virtual ~constantCoefficient();
+
+
+ // Member Functions
+
+ //- Lift force
+ tmp F(const volVectorField& U) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace liftModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C
new file mode 100644
index 0000000000..36dbde08ee
--- /dev/null
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C
@@ -0,0 +1,60 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2014 OpenFOAM Foundation
+ \\/ 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 .
+
+\*---------------------------------------------------------------------------*/
+
+#include "liftModel.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ defineTypeNameAndDebug(liftModel, 0);
+ defineRunTimeSelectionTable(liftModel, dictionary);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+Foam::liftModel::liftModel
+(
+ const dictionary& dict,
+ const volScalarField& alpha1,
+ const phaseModel& phase1,
+ const phaseModel& phase2
+)
+:
+ dict_(dict),
+ alpha1_(alpha1),
+ phase1_(phase1),
+ phase2_(phase2)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+Foam::liftModel::~liftModel()
+{}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.H b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.H
new file mode 100644
index 0000000000..ef16d16605
--- /dev/null
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.H
@@ -0,0 +1,127 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2014 OpenFOAM Foundation
+ \\/ 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 .
+
+Class
+ Foam::liftModel
+
+Description
+
+SourceFiles
+ liftModel.C
+ newLiftModel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef liftModel_H
+#define liftModel_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "dictionary.H"
+#include "phaseModel.H"
+#include "runTimeSelectionTables.H"
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+ Class liftModel Declaration
+\*---------------------------------------------------------------------------*/
+
+class liftModel
+{
+protected:
+
+ // Protected data
+
+ const dictionary& dict_;
+ const volScalarField& alpha1_;
+ const phaseModel& phase1_;
+ const phaseModel& phase2_;
+
+
+public:
+
+ //- Runtime type information
+ TypeName("liftModel");
+
+
+ // Declare runtime construction
+
+ declareRunTimeSelectionTable
+ (
+ autoPtr,
+ liftModel,
+ dictionary,
+ (
+ const dictionary& dict,
+ const volScalarField& alpha1,
+ const phaseModel& phase1,
+ const phaseModel& phase2
+ ),
+ (dict, alpha1, phase1, phase2)
+ );
+
+
+ // Constructors
+
+ liftModel
+ (
+ const dictionary& dict,
+ const volScalarField& alpha1,
+ const phaseModel& phase1,
+ const phaseModel& phase2
+ );
+
+
+ //- Destructor
+ virtual ~liftModel();
+
+
+ // Selectors
+
+ static autoPtr New
+ (
+ const dictionary& dict,
+ const volScalarField& alpha1,
+ const phaseModel& phase1,
+ const phaseModel& phase2
+ );
+
+
+ // Member Functions
+
+ //- Lift force
+ virtual tmp F(const volVectorField& U) const = 0;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/liftModel/newLiftModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/liftModel/newLiftModel.C
new file mode 100644
index 0000000000..21aad9034e
--- /dev/null
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/liftModel/newLiftModel.C
@@ -0,0 +1,72 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2014 OpenFOAM Foundation
+ \\/ 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 .
+
+\*---------------------------------------------------------------------------*/
+
+#include "liftModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr Foam::liftModel::New
+(
+ const dictionary& dict,
+ const volScalarField& alpha1,
+ const phaseModel& phase1,
+ const phaseModel& phase2
+)
+{
+ word liftModelType
+ (
+ dict.subDict(phase1.name()).lookup("type")
+ );
+
+ Info << "Selecting liftModel for phase "
+ << phase1.name()
+ << ": "
+ << liftModelType << endl;
+
+ dictionaryConstructorTable::iterator cstrIter =
+ dictionaryConstructorTablePtr_->find(liftModelType);
+
+ if (cstrIter == dictionaryConstructorTablePtr_->end())
+ {
+ FatalErrorIn("liftModel::New")
+ << "Unknown liftModelType type "
+ << liftModelType << endl << endl
+ << "Valid liftModel types are : " << endl
+ << dictionaryConstructorTablePtr_->sortedToc()
+ << exit(FatalError);
+ }
+
+ return
+ cstrIter()
+ (
+ dict.subDict(phase1.name()).subDict(liftModelType + "Coeffs"),
+ alpha1,
+ phase1,
+ phase2
+ );
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
index bb2658a3ef..1fc59d91fb 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C
@@ -55,8 +55,6 @@ Foam::RASModels::kineticTheoryModel::kineticTheoryModel
phase_(phase),
- draga_(phase.fluid().drag1()),
-
viscosityModel_
(
kineticTheoryModels::viscosityModel::New
@@ -401,7 +399,11 @@ void Foam::RASModels::kineticTheoryModel::correct()
(
alpha*(1.0 - alpha),
phase_.fluid().residualPhaseFraction()
- )*draga_.K(magUr + phase_.fluid().residualSlip())/rho
+ )
+ *phase_.fluid().drag(phase_).K
+ (
+ magUr + phase_.fluid().residualSlip()
+ )/rho
);
// Eq. 3.25, p. 50 Js = J1 - J2
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
index 776b523f56..ecf03b105e 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H
@@ -82,8 +82,8 @@ class kineticTheoryModel
const phaseModel& phase_;
- //- Drag model
- const dragModel& draga_;
+ ////- Drag model
+ //const dragModel& draga_;
// Sub-models
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.C b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.C
index 8ba3382b86..e1f9b221a3 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.C
@@ -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
@@ -111,13 +111,6 @@ Foam::twoPhaseSystem::twoPhaseSystem
lookup("Cvm")
),
- Cl_
- (
- "Cl",
- dimless,
- lookup("Cl")
- ),
-
drag1_
(
dragModel::New
@@ -162,6 +155,28 @@ Foam::twoPhaseSystem::twoPhaseSystem
)
),
+ lift1_
+ (
+ liftModel::New
+ (
+ subDict("lift"),
+ phase1_,
+ phase1_,
+ phase2_
+ )
+ ),
+
+ lift2_
+ (
+ liftModel::New
+ (
+ subDict("lift"),
+ phase2_,
+ phase2_,
+ phase1_
+ )
+ ),
+
dispersedPhase_(lookup("dispersedPhase")),
residualPhaseFraction_
@@ -311,11 +326,28 @@ Foam::tmp Foam::twoPhaseSystem::liftForce
);
volVectorField& liftForce = tliftForce();
- volVectorField Ur(phase1_.U() - phase2_.U());
-
- liftForce =
- Cl_*(phase1_*phase1_.rho() + phase2_*phase2_.rho())
- *(Ur ^ fvc::curl(U));
+ if (dispersedPhase_ == phase1_.name())
+ {
+ liftForce = lift1().F(U);
+ }
+ else if (dispersedPhase_ == phase2_.name())
+ {
+ liftForce = lift2().F(U);
+ }
+ else if (dispersedPhase_ == "both")
+ {
+ liftForce =
+ (
+ phase2_*lift1().F(U)
+ + phase1_*lift2().F(U)
+ );
+ }
+ else
+ {
+ FatalErrorIn("twoPhaseSystem::liftForce()")
+ << "dispersedPhase: " << dispersedPhase_ << " is incorrect"
+ << exit(FatalError);
+ }
// Remove lift at fixed-flux boundaries
forAll(phase1_.phi().boundaryField(), patchi)
@@ -631,7 +663,6 @@ bool Foam::twoPhaseSystem::read()
lookup("sigma") >> sigma_;
lookup("Cvm") >> Cvm_;
- lookup("Cl") >> Cl_;
// drag1_->read(*this);
// drag2_->read(*this);
diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.H b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.H
index 0b501152c1..cc781bcbc1 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.H
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.H
@@ -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
@@ -45,6 +45,7 @@ SourceFiles
#include "IOdictionary.H"
#include "phaseModel.H"
#include "dragModel.H"
+#include "liftModel.H"
#include "heatTransferModel.H"
#include "volFields.H"
#include "surfaceFields.H"
@@ -57,7 +58,7 @@ namespace Foam
// Forward declarations
class dragModel;
class heatTransferModel;
-
+class liftModel;
/*---------------------------------------------------------------------------*\
Class twoPhaseSystem Declaration
@@ -69,31 +70,57 @@ class twoPhaseSystem
{
// Private data
+ //- Reference to the mesh
const fvMesh& mesh_;
+ //- Phase model 1
phaseModel phase1_;
+
+ //- Phase model 2
phaseModel phase2_;
+ //- Total volumetric flux
surfaceScalarField phi_;
+ //- Dilatation term
volScalarField dgdt_;
+ //- Surface tension coefficient
dimensionedScalar sigma_;
+ //- Virtual mass coefficient
dimensionedScalar Cvm_;
- dimensionedScalar Cl_;
+ //- Drag model for phase 1
autoPtr drag1_;
+
+ //- Drag model for phase 2
autoPtr drag2_;
+ //- Heat transfer model for phase 1
autoPtr heatTransfer1_;
+
+ //- Heat transfer model for phase 2
autoPtr heatTransfer2_;
+ //- Lift model for phase 1
+ autoPtr lift1_;
+
+ //- Lift model for phase 2
+ autoPtr lift2_;
+
+ //- Name of the dispersed phase, or "both"
word dispersedPhase_;
+
+ //- Residual phase fraction
scalar residualPhaseFraction_;
+
+ //- Redisual slip
dimensionedScalar residualSlip_;
+ // Private member functions
+
//- Return the mixture flux
tmp calcPhi() const;
@@ -113,136 +140,21 @@ public:
// Member Functions
- const fvMesh& mesh() const
- {
- return mesh_;
- }
-
- const phaseModel& phase1() const
- {
- return phase1_;
- }
-
- const phaseModel& phase2() const
- {
- return phase2_;
- }
-
- const phaseModel& otherPhase(const phaseModel& phase) const
- {
- if (&phase == &phase1_)
- {
- return phase2_;
- }
- else
- {
- return phase1_;
- }
- }
-
- phaseModel& phase1()
- {
- return phase1_;
- }
-
- phaseModel& phase2()
- {
- return phase2_;
- }
-
- //- Return the mixture flux
- const surfaceScalarField& phi() const
- {
- return phi_;
- }
-
- //- Return the mixture flux
- surfaceScalarField& phi()
- {
- return phi_;
- }
-
- const volScalarField& dgdt() const
- {
- return dgdt_;
- }
-
- volScalarField& dgdt()
- {
- return dgdt_;
- }
-
- const dragModel& drag1() const
- {
- return drag1_();
- }
-
- const dragModel& drag2() const
- {
- return drag2_();
- }
-
- const dragModel& drag(const phaseModel& phase) const
- {
- if (&phase == &phase1_)
- {
- return drag1_();
- }
- else
- {
- return drag2_();
- }
- }
-
- scalar residualPhaseFraction() const
- {
- return residualPhaseFraction_;
- }
-
- const dimensionedScalar& residualSlip() const
- {
- return residualSlip_;
- }
-
+ //- Return the drag coefficient
tmp dragCoeff() const;
- tmp liftForce(const volVectorField& U) const;
-
- const heatTransferModel& heatTransfer1() const
- {
- return heatTransfer1_();
- }
-
- const heatTransferModel& heatTransfer2() const
- {
- return heatTransfer2_();
- }
+ //- Return the heat transfer coefficient
tmp heatTransferCoeff() const;
+ //- Return the lift force
+ tmp liftForce(const volVectorField& U) const;
+
//- Return the mixture density
tmp rho() const;
//- Return the mixture velocity
tmp U() const;
- //- Return the surface tension coefficient
- dimensionedScalar sigma() const
- {
- return sigma_;
- }
-
- //- Return the virtual-mass coefficient
- dimensionedScalar Cvm() const
- {
- return Cvm_;
- }
-
- //- Return the lift coefficient
- dimensionedScalar Cl() const
- {
- return Cl_;
- }
-
//- Solve for the two-phase-fractions
void solve();
@@ -254,6 +166,148 @@ public:
//- Read base phaseProperties dictionary
bool read();
+
+ // Access
+
+ //- Return the mesh
+ const fvMesh& mesh() const
+ {
+ return mesh_;
+ }
+
+ //- Return phase model 1
+ const phaseModel& phase1() const
+ {
+ return phase1_;
+ }
+
+ //- Return non-const access to phase model 1
+ phaseModel& phase1()
+ {
+ return phase1_;
+ }
+
+ //- Return phase model 2
+ const phaseModel& phase2() const
+ {
+ return phase2_;
+ }
+
+ //- Return non-const access to phase model 2
+ phaseModel& phase2()
+ {
+ return phase2_;
+ }
+
+ //- Return the phase not given as an argument
+ const phaseModel& otherPhase(const phaseModel& phase) const
+ {
+ if (&phase == &phase1_)
+ {
+ return phase2_;
+ }
+ else
+ {
+ return phase1_;
+ }
+ }
+
+ //- Return the mixture flux
+ const surfaceScalarField& phi() const
+ {
+ return phi_;
+ }
+
+ //- Return non-const access to the the mixture flux
+ surfaceScalarField& phi()
+ {
+ return phi_;
+ }
+
+ //- Return the dilatation term
+ const volScalarField& dgdt() const
+ {
+ return dgdt_;
+ }
+
+ //- Return non-const access to the
+ volScalarField& dgdt()
+ {
+ return dgdt_;
+ }
+
+ //- Return the drag model for phase 1
+ const dragModel& drag1() const
+ {
+ return drag1_();
+ }
+
+ //- Return the drag model for phase 2
+ const dragModel& drag2() const
+ {
+ return drag2_();
+ }
+
+ //- Return the drag model for the supplied phase
+ const dragModel& drag(const phaseModel& phase) const
+ {
+ if (&phase == &phase1_)
+ {
+ return drag1_();
+ }
+ else
+ {
+ return drag2_();
+ }
+ }
+
+ //- Return non-const access to the residual phase fraction
+ scalar residualPhaseFraction() const
+ {
+ return residualPhaseFraction_;
+ }
+
+ //- Return the residual slip
+ const dimensionedScalar& residualSlip() const
+ {
+ return residualSlip_;
+ }
+
+ //- Return the heat transfer model for phase 1
+ const heatTransferModel& heatTransfer1() const
+ {
+ return heatTransfer1_();
+ }
+
+ //- Return the heat transfer model for phase 2
+ const heatTransferModel& heatTransfer2() const
+ {
+ return heatTransfer2_();
+ }
+
+ //- Return the lift model for phase 1
+ const liftModel& lift1() const
+ {
+ return lift1_();
+ }
+
+ //- Return the lift model for phase 2
+ const liftModel& lift2() const
+ {
+ return lift2_();
+ }
+
+ //- Return the surface tension coefficient
+ dimensionedScalar sigma() const
+ {
+ return sigma_;
+ }
+
+ //- Return the virtual-mass coefficient
+ dimensionedScalar Cvm() const
+ {
+ return Cvm_;
+ }
};
diff --git a/applications/test/hexRef8/Test-hexRef8.C b/applications/test/hexRef8/Test-hexRef8.C
index 67477aae44..0e913ff011 100644
--- a/applications/test/hexRef8/Test-hexRef8.C
+++ b/applications/test/hexRef8/Test-hexRef8.C
@@ -34,11 +34,14 @@ Description
#include "Time.H"
#include "volFields.H"
#include "surfaceFields.H"
+#include "pointFields.H"
#include "hexRef8.H"
#include "mapPolyMesh.H"
#include "polyTopoChange.H"
#include "Random.H"
#include "zeroGradientFvPatchFields.H"
+#include "calculatedPointPatchFields.H"
+#include "pointConstraints.H"
#include "fvcDiv.H"
using namespace Foam;
@@ -61,6 +64,8 @@ int main(int argc, char *argv[])
# include "createMesh.H"
+ const pointConstraints& pc = pointConstraints::New(pointMesh::New(mesh));
+
const Switch inflate(args.args()[1]);
if (inflate)
@@ -144,6 +149,29 @@ int main(int argc, char *argv[])
surfaceOne.write();
+ // Uniform point field
+ pointScalarField pointX
+ (
+ IOobject
+ (
+ "pointX",
+ runTime.timeName(),
+ mesh,
+ IOobject::NO_READ,
+ IOobject::AUTO_WRITE
+ ),
+ pointMesh::New(mesh),
+ dimensionedScalar("one", dimless, 1.0),
+ calculatedPointPatchScalarField::typeName
+ );
+ pointX.internalField() = mesh.points().component(0);
+ pointX.correctBoundaryConditions();
+ Info<< "Writing x-component field "
+ << pointX.name() << " in " << runTime.timeName() << endl;
+ pointX.write();
+
+
+
// Force allocation of V. Important for any mesh changes since otherwise
// old time volumes are not stored
const scalar totalVol = gSum(mesh.V());
@@ -163,89 +191,107 @@ int main(int argc, char *argv[])
}
+ mesh.moving(false);
+ mesh.topoChanging(false);
- // Mesh changing engine.
- polyTopoChange meshMod(mesh);
- if (rndGen.bit())
+ label action = rndGen.integer(0, 5);
+
+
+ if (action == 0)
{
- // Refine
- label nRefine = mesh.nCells()/20;
- DynamicList