Skip to content
Snippets Groups Projects
Commit 9a5a1064 authored by matti2's avatar matti2
Browse files

Removed entrainment model IsslerFC due to stability issues

parent 4601df60
Branches
Tags
No related merge requests found
......@@ -10,7 +10,6 @@ $(entrainment)/entrainmentModel/entrainmentModelNew.C
$(entrainment)/entrainmentOff/entrainmentOff.C
$(entrainment)/Erosionenergy/Erosionenergy.C
$(entrainment)/Front/Front.C
$(entrainment)/IsslerFC/IsslerFC.C
$(entrainment)/Medina/Medina.C
$(entrainment)/Ramms/Ramms.C
......
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | faSavageHutterFOAM
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2017 Matthias Rauter
-------------------------------------------------------------------------------
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 <http://www.gnu.org/licenses/>.
Author
Matthias Rauter matthias@rauter.it
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "faCFD.H"
#include "IsslerFC.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
{
namespace entrainmentModels
{
defineTypeNameAndDebug(IsslerFC, 0);
addToRunTimeSelectionTable(entrainmentModel, IsslerFC, dictionary);
}
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::entrainmentModels::IsslerFC::IsslerFC
(
const dictionary& entrainmentProperties,
const areaVectorField& Us,
const areaScalarField& h,
const areaScalarField& hentrain,
const areaScalarField& pb,
const areaVectorField& tau
)
:
entrainmentModel(type(), entrainmentProperties, Us, h, hentrain, pb, tau),
tauc_("tauc", coeffDict_),
mu_("mu", coeffDict_),
K_("K", coeffDict_),
gs_(Us.db().lookupObject<areaVectorField>("gs")),
gn_(Us.db().lookupObject<areaScalarField>("gn"))
{
Info << " " << tauc_ << endl << endl;
}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
const Foam::areaScalarField&
Foam::entrainmentModels::IsslerFC::Sm() const
{
const dimensionedScalar smallVel("small", dimVelocity, SMALL);
const areaScalarField u(mag(Us_));
const areaScalarField gs(mag(gs_));
const areaScalarField gamma_c(5./2.*u/h_);
const areaScalarField uthr
(
h_*gamma_c*gamma_c/2.
* K_*gamma_c
/ ( h_*(gs+mu_*gn_)+4.*K_*gamma_c*gamma_c )
);
const areaScalarField weinf
(
(h_*(gs+mu_*gn_)+4*K_*pow(gamma_c,2))
/ (h_*gamma_c+smallVel)
);
Sm_ = pos(u-uthr)*weinf*(1-uthr/(u+smallVel));
const areaScalarField hlimit(h_*mag(gs_)-(tauc_-5*K_*gamma_c*gamma_c));
const areaScalarField hlimit2(h_-dimensionedScalar("small", dimLength, 1e-2));
Sm_ = pos(hlimit2)*pos(hlimit)*Sm_;
Sm_ = min(Sm_, hentrain_/Us_.db().time().deltaT());
Info << "IsslerFC:min/max(Sm) = " << min(Sm_) << " / " << max(Sm_) << endl;
return Sm_;
}
bool Foam::entrainmentModels::IsslerFC::read
(
const dictionary& entrainmentProperties
)
{
readDict(type(), entrainmentProperties);
coeffDict_.readEntry("tauc", tauc_);
return true;
}
// ************************************************************************* //
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | faSavageHutterFOAM
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2017 Matthias Rauter
-------------------------------------------------------------------------------
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 <http://www.gnu.org/licenses/>.
Class
Foam::entrainmentModels::IsslerFC
Description
An entrainment model following the approach of Issler (2014).
Issler. "Dynamically consistent entrainment laws for depth-averaged
avalanche models", Journal of Fluid Mechanics, 759, 701-738, 2014,
dx.doi.org/10.1017/jfm.2014.584
SourceFiles
IsslerFC.C
Author
Matthias Rauter matthias@rauter.it
\*---------------------------------------------------------------------------*/
#ifndef IsslerFC_H
#define IsslerFC_H
#include "entrainmentModel.H"
#include "dimensionedScalar.H"
#include "volFields.H"
#include "IOdictionary.H"
#include "typeInfo.H"
#include "runTimeSelectionTables.H"
#include "dimensionedScalar.H"
#include "tmp.H"
#include "autoPtr.H"
#include "faMatrices.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
namespace entrainmentModels
{
/*---------------------------------------------------------------------------*\
Class IsslerFC Declaration
\*---------------------------------------------------------------------------*/
class IsslerFC
:
public entrainmentModel
{
// Private data
//- Maximum shear stress tau_c
dimensionedScalar tauc_;
//- Kinetic Theory mu
dimensionedScalar mu_;
//- Kinetic Theory K
dimensionedScalar K_;
//- Reference to the gravitation fields
const areaVectorField& gs_;
const areaScalarField& gn_;
public:
//- Runtime type information
TypeName("IsslerFC");
// Constructors
//- Construct from components
IsslerFC
(
const dictionary& frictionProperties,
const areaVectorField& Us,
const areaScalarField& h,
const areaScalarField& hentrain,
const areaScalarField& pb,
const areaVectorField& tau
);
//- Destructor
virtual ~IsslerFC() = default;
// Member Functions
//- Return the Source by entrainment
virtual const areaScalarField& Sm() const;
//- Read entrainmentProperties dictionary
virtual bool read(const dictionary& entrainmentProperties);
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace frictionModels
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment