/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2013-2016 OpenFOAM Foundation
-------------------------------------------------------------------------------
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::PackingModels::Implicit
Group
grpLagrangianIntermediateMPPICPackingSubModels
Description
Implicit model for applying an inter-particle stress to the particles.
The time evolution of particulate volume fraction is solved for implicitly
on the eulerian mesh. The computed flux is then applied to the lagrangian
field. The gravity force can optionally be applied to the particles as part
of this model, using the keyword "applyGravity".
SourceFiles
Implicit.C
\*---------------------------------------------------------------------------*/
#ifndef Implicit_H
#define Implicit_H
#include "PackingModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace PackingModels
{
/*---------------------------------------------------------------------------*\
Class Implicit Declaration
\*---------------------------------------------------------------------------*/
template
class Implicit
:
public PackingModel
{
//- Private data
//- Volume fraction field
volScalarField alpha_;
//- Correction flux
tmp phiCorrect_;
//- Correction cell-centred velocity
tmp uCorrect_;
//- Flag to indicate whether implicit limiting is applied
Switch applyLimiting_;
//- Flag to indicate whether gravity is applied
Switch applyGravity_;
//- Minimum stable volume fraction
scalar alphaMin_;
//- Minimum stable density
scalar rhoMin_;
public:
//- Runtime type information
TypeName("implicit");
// Constructors
//- Construct from components
Implicit(const dictionary& dict, CloudType& owner);
//- Construct copy
Implicit(const Implicit& cm);
//- Construct and return a clone
virtual autoPtr> clone() const
{
return autoPtr>
(
new Implicit(*this)
);
}
//- Destructor
virtual ~Implicit();
// Member Functions
//- Calculate the inter particles stresses
virtual void cacheFields(const bool store);
//- Calculate the velocity correction
virtual vector velocityCorrection
(
typename CloudType::parcelType& p,
const scalar deltaT
) const;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace PackingModels
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#ifdef NoRepository
#include "Implicit.C"
#endif
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //