From 6b2de677d00bc9b4c2313aa6c2c5f539622769b4 Mon Sep 17 00:00:00 2001 From: Henry <Henry> Date: Mon, 12 May 2014 12:23:16 +0100 Subject: [PATCH] explicitPorositySource: Change field naming to support multiphase --- .../explicitPorositySource.C | 70 +++++++++++-------- .../explicitPorositySource.H | 26 +++---- 2 files changed, 51 insertions(+), 45 deletions(-) diff --git a/src/fvOptions/sources/derived/explicitPorositySource/explicitPorositySource.C b/src/fvOptions/sources/derived/explicitPorositySource/explicitPorositySource.C index 00cf50ba096..1df69be551e 100644 --- a/src/fvOptions/sources/derived/explicitPorositySource/explicitPorositySource.C +++ b/src/fvOptions/sources/derived/explicitPorositySource/explicitPorositySource.C @@ -45,10 +45,22 @@ namespace fv } } -// * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * // -void Foam::fv::explicitPorositySource::initialise() +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::fv::explicitPorositySource::explicitPorositySource +( + const word& name, + const word& modelType, + const dictionary& dict, + const fvMesh& mesh +) +: + option(name, modelType, dict, mesh), + porosityPtr_(NULL) { + read(dict); + if (selectionMode_ != smCellZone) { FatalErrorIn("void Foam::fv::explicitPorositySource::initialise()") @@ -66,61 +78,48 @@ void Foam::fv::explicitPorositySource::initialise() coeffs_, cellSetName_ ).ptr() - ), - - fieldNames_.setSize(1, UName_); - applied_.setSize(1, false); + ); } -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -Foam::fv::explicitPorositySource::explicitPorositySource +void Foam::fv::explicitPorositySource::addSup ( - const word& name, - const word& modelType, - const dictionary& dict, - const fvMesh& mesh + fvMatrix<vector>& eqn, + const label fieldI ) -: - option(name, modelType, dict, mesh), - porosityPtr_(NULL), - UName_(coeffs_.lookupOrDefault<word>("UName", "U")), - muName_(coeffs_.lookupOrDefault<word>("muName", "thermo:mu")) { - initialise(); + fvMatrix<vector> porosityEqn(eqn.psi(), eqn.dimensions()); + porosityPtr_->addResistance(porosityEqn); + eqn -= porosityEqn; } -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - void Foam::fv::explicitPorositySource::addSup ( + const volScalarField& rho, fvMatrix<vector>& eqn, const label fieldI ) { fvMatrix<vector> porosityEqn(eqn.psi(), eqn.dimensions()); - porosityPtr_->addResistance(porosityEqn); - eqn -= porosityEqn; } void Foam::fv::explicitPorositySource::addSup ( + const volScalarField& alpha, const volScalarField& rho, fvMatrix<vector>& eqn, const label fieldI ) { fvMatrix<vector> porosityEqn(eqn.psi(), eqn.dimensions()); - - const volScalarField& mu = mesh_.lookupObject<volScalarField>(muName_); - porosityPtr_->addResistance(porosityEqn, rho, mu); - - eqn -= porosityEqn; + porosityPtr_->addResistance(porosityEqn); + eqn -= alpha*porosityEqn; } @@ -135,8 +134,21 @@ bool Foam::fv::explicitPorositySource::read(const dictionary& dict) { if (option::read(dict)) { - coeffs_.readIfPresent("UName", UName_); - coeffs_.readIfPresent("muName", muName_); + if (coeffs_.found("UNames")) + { + coeffs_.lookup("UNames") >> fieldNames_; + } + else if (coeffs_.found("UName")) + { + word UName(coeffs_.lookup("UName")); + fieldNames_ = wordList(1, UName); + } + else + { + fieldNames_ = wordList(1, "U"); + } + + applied_.setSize(fieldNames_.size(), false); return true; } diff --git a/src/fvOptions/sources/derived/explicitPorositySource/explicitPorositySource.H b/src/fvOptions/sources/derived/explicitPorositySource/explicitPorositySource.H index 2692fd9759e..417ddef1f4e 100644 --- a/src/fvOptions/sources/derived/explicitPorositySource/explicitPorositySource.H +++ b/src/fvOptions/sources/derived/explicitPorositySource/explicitPorositySource.H @@ -34,6 +34,7 @@ Description explicitPorositySourceCoeffs { type DarcyForchheimer; + DarcyForchheimerCoeffs { d d [0 -2 0 0 0 0 0] (5e7 -1000 -1000); @@ -88,22 +89,6 @@ protected: //- Run-time selectable porosity model autoPtr<porosityModel> porosityPtr_; - //- Velocity field name, default = U - word UName_; - - //- Density field name (compressible case only), default = rho - word rhoName_; - - //- Dynamic viscosity field name (compressible case only) - // default = thermo:mu - word muName_; - - - // Protected Member Functions - - //- Initialise - void initialise(); - private: @@ -158,6 +143,15 @@ public: const label fieldI ); + //- Add implicit contribution to phase momentum equation + virtual void addSup + ( + const volScalarField& alpha, + const volScalarField& rho, + fvMatrix<vector>& eqn, + const label fieldI + ); + // I-O -- GitLab