Viscoelastic model update: linear Maxwell and upper convected Maxvell. Jovani Favero and Miguel Nobrega
This commit is contained in:
parent
7bca916150
commit
a7d5aa2e89
5 changed files with 257 additions and 29 deletions
|
@ -6,7 +6,8 @@ viscoelasticLaws/viscoelasticLaw/newViscoelasticLaw.C
|
||||||
viscoelasticLaws/LPTT/LPTT.C
|
viscoelasticLaws/LPTT/LPTT.C
|
||||||
viscoelasticLaws/EPTT/EPTT.C
|
viscoelasticLaws/EPTT/EPTT.C
|
||||||
viscoelasticLaws/Oldroyd-B/Oldroyd_B.C
|
viscoelasticLaws/Oldroyd-B/Oldroyd_B.C
|
||||||
viscoelasticLaws/UpperConvectedMaxwell/UpperConvectedMaxwell.C
|
viscoelasticLaws/linearMaxwell/linearMaxwell.C
|
||||||
|
viscoelasticLaws/UCM/UCM.C
|
||||||
viscoelasticLaws/Giesekus/Giesekus.C
|
viscoelasticLaws/Giesekus/Giesekus.C
|
||||||
viscoelasticLaws/FENE-CR/FENE_CR.C
|
viscoelasticLaws/FENE-CR/FENE_CR.C
|
||||||
viscoelasticLaws/FENE-P/FENE_P.C
|
viscoelasticLaws/FENE-P/FENE_P.C
|
||||||
|
|
|
@ -23,26 +23,21 @@ License
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "UpperConvectedMaxwell.H"
|
#include "UCM.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
defineTypeNameAndDebug(UpperConvectedMaxwell, 0);
|
defineTypeNameAndDebug(UCM, 0);
|
||||||
addToRunTimeSelectionTable
|
addToRunTimeSelectionTable(viscoelasticLaw, UCM, dictionary);
|
||||||
(
|
|
||||||
viscoelasticLaw,
|
|
||||||
UpperConvectedMaxwell,
|
|
||||||
dictionary
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::UpperConvectedMaxwell::UpperConvectedMaxwell
|
Foam::UCM::UCM
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -64,7 +59,6 @@ Foam::UpperConvectedMaxwell::UpperConvectedMaxwell
|
||||||
U.mesh()
|
U.mesh()
|
||||||
),
|
),
|
||||||
rho_(dict.lookup("rho")),
|
rho_(dict.lookup("rho")),
|
||||||
etaS_(dict.lookup("etaS")),
|
|
||||||
etaP_(dict.lookup("etaP")),
|
etaP_(dict.lookup("etaP")),
|
||||||
lambda_(dict.lookup("lambda"))
|
lambda_(dict.lookup("lambda"))
|
||||||
{}
|
{}
|
||||||
|
@ -72,8 +66,7 @@ Foam::UpperConvectedMaxwell::UpperConvectedMaxwell
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::tmp<Foam::fvVectorMatrix>
|
Foam::tmp<Foam::fvVectorMatrix> Foam::UCM::divTau(volVectorField& U) const
|
||||||
Foam::UpperConvectedMaxwell::divTau(volVectorField& U) const
|
|
||||||
{
|
{
|
||||||
dimensionedScalar etaPEff = etaP_;
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
|
||||||
|
@ -81,16 +74,15 @@ Foam::UpperConvectedMaxwell::divTau(volVectorField& U) const
|
||||||
(
|
(
|
||||||
fvc::div(tau_/rho_, "div(tau)")
|
fvc::div(tau_/rho_, "div(tau)")
|
||||||
- fvc::laplacian(etaPEff/rho_, U, "laplacian(etaPEff,U)")
|
- fvc::laplacian(etaPEff/rho_, U, "laplacian(etaPEff,U)")
|
||||||
+ fvm::laplacian( (etaPEff + etaS_)/rho_, U, "laplacian(etaPEff+etaS,U)")
|
+ fvm::laplacian( (etaPEff)/rho_, U, "laplacian(etaPEff+etaS,U)")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Foam::UpperConvectedMaxwell::correct()
|
void Foam::UCM::correct()
|
||||||
{
|
{
|
||||||
// Velocity gradient tensor
|
// Velocity gradient tensor
|
||||||
const tmp<volTensorField> tL = fvc::grad(U());
|
volTensorField L = fvc::grad(U());
|
||||||
const volTensorField& L = tL();
|
|
||||||
|
|
||||||
// Convected derivate term
|
// Convected derivate term
|
||||||
volTensorField C = tau_ & L;
|
volTensorField C = tau_ & L;
|
130
src/transportModels/viscoelastic/viscoelasticLaws/UCM/UCM.H
Normal file
130
src/transportModels/viscoelastic/viscoelasticLaws/UCM/UCM.H
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend 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.
|
||||||
|
|
||||||
|
foam-extend 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 foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
UCM
|
||||||
|
|
||||||
|
Description
|
||||||
|
UCM non linear viscoelastic fluid model (BIRD et al., 1987).
|
||||||
|
|
||||||
|
Author
|
||||||
|
Jovani L. Favero. All rights reserved
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
UCM.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef UCM_H
|
||||||
|
#define UCM_H
|
||||||
|
|
||||||
|
#include "viscoelasticLaw.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class UCM Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class UCM
|
||||||
|
:
|
||||||
|
public viscoelasticLaw
|
||||||
|
{
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- Transported viscoelastic stress
|
||||||
|
volSymmTensorField tau_;
|
||||||
|
|
||||||
|
|
||||||
|
// Model constants
|
||||||
|
|
||||||
|
//- Density
|
||||||
|
dimensionedScalar rho_;
|
||||||
|
|
||||||
|
//- Zero shear rate polymer viscosity
|
||||||
|
dimensionedScalar etaP_;
|
||||||
|
|
||||||
|
//- Relaxation time
|
||||||
|
dimensionedScalar lambda_;
|
||||||
|
|
||||||
|
|
||||||
|
// Private Member Functions
|
||||||
|
|
||||||
|
//- Disallow default bitwise copy construct
|
||||||
|
UCM(const UCM&);
|
||||||
|
|
||||||
|
//- Disallow default bitwise assignment
|
||||||
|
void operator=(const UCM&);
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("UCM");
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from components
|
||||||
|
UCM
|
||||||
|
(
|
||||||
|
const word& name,
|
||||||
|
const volVectorField& U,
|
||||||
|
const surfaceScalarField& phi,
|
||||||
|
const dictionary& dict
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
|
||||||
|
virtual ~UCM()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Return the viscoelastic stress tensor
|
||||||
|
virtual tmp<volSymmTensorField> tau() const
|
||||||
|
{
|
||||||
|
return tau_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return the coupling term for the momentum equation
|
||||||
|
virtual tmp<fvVectorMatrix> divTau(volVectorField& U) const;
|
||||||
|
|
||||||
|
//- Correct the viscoelastic stress
|
||||||
|
virtual void correct();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,105 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend 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.
|
||||||
|
|
||||||
|
foam-extend 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 foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "linearMaxwell.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(linearMaxwell, 0);
|
||||||
|
addToRunTimeSelectionTable(viscoelasticLaw, linearMaxwell, dictionary);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::linearMaxwell::linearMaxwell
|
||||||
|
(
|
||||||
|
const word& name,
|
||||||
|
const volVectorField& U,
|
||||||
|
const surfaceScalarField& phi,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
viscoelasticLaw(name, U, phi),
|
||||||
|
tau_
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"tau" + name,
|
||||||
|
U.time().timeName(),
|
||||||
|
U.mesh(),
|
||||||
|
IOobject::MUST_READ,
|
||||||
|
IOobject::AUTO_WRITE
|
||||||
|
),
|
||||||
|
U.mesh()
|
||||||
|
),
|
||||||
|
rho_(dict.lookup("rho")),
|
||||||
|
etaS_(dict.lookup("etaS")),
|
||||||
|
etaP_(dict.lookup("etaP")),
|
||||||
|
lambda_(dict.lookup("lambda"))
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::tmp<Foam::fvVectorMatrix> Foam::linearMaxwell::divTau(volVectorField& U) const
|
||||||
|
{
|
||||||
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
|
||||||
|
return
|
||||||
|
(
|
||||||
|
fvc::div(tau_/rho_, "div(tau)")
|
||||||
|
- fvc::laplacian(etaPEff/rho_, U, "laplacian(etaPEff,U)")
|
||||||
|
+ fvm::laplacian( (etaPEff + etaS_)/rho_, U, "laplacian(etaPEff+etaS,U)")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::linearMaxwell::correct()
|
||||||
|
{
|
||||||
|
// Velocity gradient tensor
|
||||||
|
volTensorField L = fvc::grad(U());
|
||||||
|
|
||||||
|
// Twice the rate of deformation tensor
|
||||||
|
volSymmTensorField twoD = twoSymm(L);
|
||||||
|
|
||||||
|
// Stress transport equation
|
||||||
|
fvSymmTensorMatrix tauEqn
|
||||||
|
(
|
||||||
|
fvm::ddt(tau_)
|
||||||
|
==
|
||||||
|
etaP_/lambda_*twoD
|
||||||
|
- fvm::Sp( 1/lambda_, tau_)
|
||||||
|
);
|
||||||
|
|
||||||
|
tauEqn.relax();
|
||||||
|
tauEqn.solve();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -22,21 +22,21 @@ License
|
||||||
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
Class
|
Class
|
||||||
UpperConvectedMaxwell
|
linearMaxwell
|
||||||
|
|
||||||
Description
|
Description
|
||||||
UpperConvectedMaxwell linear viscoelastic fluid model (UpperConvectedMaxwell, J.C., 1867).
|
Maxwell linear viscoelastic fluid model (linearMaxwell, J.C., 1867).
|
||||||
|
|
||||||
Author
|
Author
|
||||||
Jovani L. Favero. All rights reserved
|
Jovani L. Favero. All rights reserved
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
UpperConvectedMaxwell.C
|
linearMaxwell.C
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#ifndef UpperConvectedMaxwell_H
|
#ifndef linearMaxwell_H
|
||||||
#define UpperConvectedMaxwell_H
|
#define linearMaxwell_H
|
||||||
|
|
||||||
#include "viscoelasticLaw.H"
|
#include "viscoelasticLaw.H"
|
||||||
|
|
||||||
|
@ -46,10 +46,10 @@ namespace Foam
|
||||||
{
|
{
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*\
|
/*---------------------------------------------------------------------------*\
|
||||||
Class UpperConvectedMaxwell Declaration
|
Class linearMaxwell Declaration
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
class UpperConvectedMaxwell
|
class linearMaxwell
|
||||||
:
|
:
|
||||||
public viscoelasticLaw
|
public viscoelasticLaw
|
||||||
{
|
{
|
||||||
|
@ -77,21 +77,21 @@ class UpperConvectedMaxwell
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
//- Disallow default bitwise copy construct
|
//- Disallow default bitwise copy construct
|
||||||
UpperConvectedMaxwell(const UpperConvectedMaxwell&);
|
linearMaxwell(const linearMaxwell&);
|
||||||
|
|
||||||
//- Disallow default bitwise assignment
|
//- Disallow default bitwise assignment
|
||||||
void operator=(const UpperConvectedMaxwell&);
|
void operator=(const linearMaxwell&);
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
TypeName("UpperConvectedMaxwell");
|
TypeName("linearMaxwell");
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct from components
|
//- Construct from components
|
||||||
UpperConvectedMaxwell
|
linearMaxwell
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -102,7 +102,7 @@ public:
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
|
|
||||||
virtual ~UpperConvectedMaxwell()
|
virtual ~linearMaxwell()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
Reference in a new issue