37 Foam::RASModels::kineticTheoryModel::continuousPhase()
const
39 const phaseSystem& fluid = phase_.
fluid();
43 if (fluid.movingPhases().size() != 2)
46 <<
"Continuous phase name must be specified "
47 <<
"when there are more than two moving phases."
51 forAll(fluid.movingPhases(), movingPhasei)
53 const phaseModel& otherPhase = fluid.movingPhases()[movingPhasei];
55 if (&otherPhase != &phase_)
62 return fluid.phases()[continuousPhaseName_];
94 coeffDict_.lookupOrDefault(
"continuousPhase",
word::null)
106 kineticTheoryModels::conductivityModel::
New
113 kineticTheoryModels::radialModel::
New
118 granularPressureModel_
120 kineticTheoryModels::granularPressureModel::
New
125 frictionalStressModel_
127 kineticTheoryModels::frictionalStressModel::
New
133 equilibrium_(coeffDict_.lookup(
"equilibrium")),
152 coeffDict_.lookupOrDefault<scalar>(
"maxNut", 1000)
224 if (
type == typeName)
247 coeffDict().lookup(
"equilibrium") >> equilibrium_;
248 e_.readIfPresent(coeffDict());
249 alphaMinFriction_.readIfPresent(coeffDict());
251 viscosityModel_->read();
252 conductivityModel_->read();
253 radialModel_->read();
254 granularPressureModel_->read();
255 frictionalStressModel_->read();
306 Foam::RASModels::kineticTheoryModel::pPrime()
const
316 *granularPressureModel_->granularPressureCoeffPrime
325 radialModel_->g0prime
334 + frictionalStressModel_->frictionalPressurePrime
347 if (!bpPrime[
patchi].coupled())
376 - (rho_*(nut_ + nuFric_))
398 "divDevTau(" + U_.
name() +
')'
409 const phaseModel& continuousPhase = this->continuousPhase();
429 gs0_ = radialModel_->g0(
alpha, alphaMinFriction_, phase_.alphaMax());
434 nut_ = viscosityModel_->nu(
alpha, Theta_, gs0_,
rho, da, e_);
439 lambda_ = (4.0/3.0)*
sqr(
alpha)*da*gs0_*(1 + e_)*ThetaSqrt/sqrtPi;
444 rho*(2*nut_*
D + (lambda_ - (2.0/3.0)*nut_)*
tr(
D)*
I)
453 *
rho*gs0_*(1.0/da)*ThetaSqrt/sqrtPi
478 *sqrtPi*(ThetaSqrt + ThetaSmallSqrt)
485 granularPressureModel_->granularPressureCoeff
495 kappa_ = conductivityModel_->kappa(
alpha, Theta_, gs0_,
rho, da, e_);
521 +
fvm::Sp(J2/(Theta_ + ThetaSmall), Theta_)
540 (sqrtPi/(3*(3.0 - e_)))
541 *(1 + 0.4*(1 + e_)*(3*e_ - 1)*
alpha*gs0_)
542 +1.6*
alpha*gs0_*(1 + e_)/sqrtPi
549 4*da*
rho*(1 + e_)*
alpha*gs0_/(3*sqrtPi) - 2*
K3/3.0
572 *(2*
K3*trD2 +
K2*tr2D)
581 kappa_ = conductivityModel_->kappa(
alpha, Theta_, gs0_,
rho, da, e_);
589 nut_ = viscosityModel_->nu(
alpha, Theta_, gs0_,
rho, da, e_);
594 lambda_ = (4.0/3.0)*
sqr(
alpha)*da*gs0_*(1 + e_)*ThetaSqrt/sqrtPi;
599 frictionalStressModel_->frictionalPressure
612 frictionalStressModel_->nu
626 Info<< typeName <<
':' <<
nl
627 <<
" max(Theta) = " <<
max(Theta_).value() <<
nl
628 <<
" max(nut) = " <<
max(nut_).value() <<
endl;
static const Foam::dimensionedScalar D("D", Foam::dimTemperature, 257.14)
#define forAll(list, i)
Loop across all elements in list.
Generic GeometricBoundaryField class.
Generic GeometricField class.
static tmp< GeometricField< Type, PatchField, GeoMesh > > New(const word &name, const Internal &, const PtrList< PatchField< Type >> &, const HashPtrTable< Source > &=HashPtrTable< Source >())
Return a temporary field constructed from name,.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
static word groupName(Name name, const word &group)
Templated abstract base class for RAS turbulence models.
virtual tmp< volScalarField > epsilon() const
Return the turbulence kinetic energy dissipation rate.
virtual void correct()
Solve the kinetic theory equations and correct the viscosity.
virtual tmp< volScalarField > k() const
Return the turbulence kinetic energy.
virtual tmp< volSymmTensorField > devTau() const
Return the effective stress tensor.
virtual tmp< surfaceScalarField > pPrimef() const
Return the face-phase-pressure'.
virtual tmp< fvVectorMatrix > divDevTau(volVectorField &U) const
Return the source term for the momentum equation.
virtual tmp< volSymmTensorField > sigma() const
Return the stress tensor [m^2/s^2].
kineticTheoryModel(const volScalarField &alpha, const volScalarField &rho, const volVectorField &U, const surfaceScalarField &alphaRhoPhi, const surfaceScalarField &phi, const viscosity &viscosity, const word &type=typeName)
Construct from components.
virtual tmp< volScalarField > omega() const
Return the turbulence specific dissipation rate.
virtual ~kineticTheoryModel()
Destructor.
virtual bool read()
Re-read model coefficients if they have changed.
static const SymmTensor I
static autoPtr< dictionary > New(Istream &)
Construct top-level dictionary on freestore from Istream.
Dimension set for the base types.
const word & name() const
Return const reference to name.
Class to represent a interface between phases where one phase is considered dispersed within the othe...
Model for drag between phases.
virtual tmp< volScalarField > K() const =0
Return the drag coefficient K.
static const dimensionSet dimK
Coefficient dimensions.
Eddy viscosity turbulence model base class.
Finite volume constraints.
bool constrain(fvMatrix< Type > &eqn) const
Apply constraints to an equation.
A special matrix type and solver, designed for finite volume solutions of scalar equations....
void relax(const scalar alpha)
Relax matrix (for steady-state solution).
SolverPerformance< Type > solve(const dictionary &)
Solve segregated or coupled returning the solution statistics.
tmp< fvMatrix< Type > > source(const VolField< Type > &field) const
Return source for an equation.
Abstract base class for turbulence models (RAS, LES and laminar).
const phaseSystem & fluid() const
Return the system to which this phase belongs.
virtual tmp< volVectorField > U() const =0
Return the velocity.
Class to represent a system of phases and model interfacial transfers between them.
bool foundInterfacialModel(const phaseInterface &interface) const
Check availability of a sub model for a given interface.
const ModelType & lookupInterfacialModel(const phaseInterface &interface) const
Return a sub model for an interface.
A class for managing temporary objects.
An abstract base class for Newtonian viscosity models.
Abstract base class for all fluid physical properties.
A class for handling words, derived from string.
static const word null
An empty word.
Foam::fvConstraints & fvConstraints(Foam::fvConstraints::New(mesh))
Foam::fvModels & fvModels(Foam::fvModels::New(mesh))
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
Calculate the first temporal derivative.
Calculate the field for explicit evaluation of implicit and explicit sources.
volScalarField alpha(IOobject("alpha", runTime.name(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE), lambda *max(Ua &U, zeroSensitivity))
static tmp< SurfaceField< Type > > interpolate(const VolField< Type > &tvf, const surfaceScalarField &faceFlux, Istream &schemeData)
Interpolate field onto faces using scheme given by Istream.
tmp< VolField< Type > > ddt(const dimensioned< Type > dt, const fvMesh &mesh)
tmp< VolField< Type > > Sp(const volScalarField &sp, const VolField< Type > &vf)
tmp< VolField< typename outerProduct< vector, Type >::type > > grad(const SurfaceField< Type > &ssf)
tmp< VolField< Type > > div(const SurfaceField< Type > &ssf)
tmp< fvMatrix< Type > > laplacian(const VolField< Type > &vf, const word &name)
tmp< fvMatrix< Type > > div(const surfaceScalarField &flux, const VolField< Type > &vf, const word &name)
tmp< fvMatrix< Type > > Sp(const volScalarField::Internal &, const VolField< Type > &)
tmp< fvMatrix< Type > > SuSp(const volScalarField::Internal &, const VolField< Type > &)
tmp< fvMatrix< Type > > ddt(const VolField< Type > &vf)
dimensionedSymmTensor dev2(const dimensionedSymmTensor &dt)
dimensionedSymmTensor dev(const dimensionedSymmTensor &dt)
errorManipArg< error, int > exit(error &err, const int errNo=1)
dimensionedSymmTensor symm(const dimensionedSymmTensor &dt)
dimensionedScalar tr(const dimensionedSphericalTensor &dt)
bool read(const char *, int32_t &)
dimensionedSymmTensor sqr(const dimensionedVector &dv)
To & refCast(From &r)
Reference type cast template function.
Ostream & endl(Ostream &os)
Add newline and flush stream.
word name(const bool)
Return a word representation of a bool.
dimensionedSymmTensor twoSymm(const dimensionedSymmTensor &dt)
const dimensionSet dimless
static const Identity< scalar > I
layerAndWeight min(const layerAndWeight &a, const layerAndWeight &b)
dimensionedScalar sqrt(const dimensionedScalar &ds)
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh >> &tdf1, const word &name, const dimensionSet &dimensions)
word typedName(Name name)
Return the name of the object within the given type.
layerAndWeight max(const layerAndWeight &a, const layerAndWeight &b)
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
dimensioned< scalar > magSqr(const dimensioned< Type > &)
fileType type(const fileName &, const bool checkVariants=true, const bool followLink=true)
Return the file type: directory or file.