class Ion base, copy of class Neutral
This commit is contained in:
parent
80c5f0d65a
commit
a92de83589
5 changed files with 419 additions and 0 deletions
|
|
@ -1,5 +1,6 @@
|
|||
diffusivityModel/Particle/Particle.C
|
||||
diffusivityModel/Neutral/Neutral.C
|
||||
diffusivityModel/Ion/Ion.C
|
||||
|
||||
diffusivityModel/Stockmayer/Stockmayer.C
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
EXE_INC = \
|
||||
-IdiffusivityModel/Particle \
|
||||
-IdiffusivityModel/Neutral \
|
||||
-IdiffusivityModel/Ion \
|
||||
-IdiffusivityModel/Stockmayer \
|
||||
-IdiffusivityModel/diffusivityModel \
|
||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||
|
|
|
|||
120
diffusivityModel/Ion/Ion.C
Normal file
120
diffusivityModel/Ion/Ion.C
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
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/>.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "Ion.H"
|
||||
|
||||
#include "dictionary.H"
|
||||
#include "scalarList.H"
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
// const dataType Foam::Ion::staticData();
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||
|
||||
|
||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::Ion::Ion(const dictionary& dict)
|
||||
:
|
||||
Particle(dict),
|
||||
wellDepth_(dict.lookupOrDefault("wellDepth", 0.0)),
|
||||
diameter_(dict.lookupOrDefault("diameter", 0.0)),
|
||||
dipoleMoment_(dict.lookupOrDefault("dipoleMoment", 0.0)),
|
||||
alpha_(dict.lookupOrDefault("dipolePolarizability", 0.0)),
|
||||
alphaQ_(dict.lookupOrDefault("quadpolePolarizability", 0.0)),
|
||||
C6_(dict.lookupOrDefault("dispersionCoef", 0.0)),
|
||||
Zrot_(dict.lookupOrDefault("rotationalRelaxation", 0.0))
|
||||
{
|
||||
|
||||
const entry* entryPtr = dict.lookupEntryPtr("tranlib", false, true);
|
||||
|
||||
if (entryPtr)
|
||||
{
|
||||
scalarList tranlib(entryPtr->stream());
|
||||
|
||||
wellDepth_ = tranlib[1];
|
||||
diameter_ = tranlib[2];
|
||||
dipoleMoment_ = tranlib[3];
|
||||
alpha_ = tranlib[4];
|
||||
// alphaQ_ = tranlib[0];
|
||||
// C6_ = tranlib[0];
|
||||
Zrot_ = tranlib[5];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::Ion::~Ion()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * * //
|
||||
|
||||
void Foam::Ion::operator=(const Ion& rhs)
|
||||
{
|
||||
// Check for assignment to self
|
||||
if (this == &rhs)
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Attempted assignment to self"
|
||||
<< abort(FatalError);
|
||||
}
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * Friend Functions * * * * * * * * * * * * * * //
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::Ostream& Foam::operator<<(Ostream& os, const Ion& st)
|
||||
{
|
||||
os << static_cast<const Particle&>(st) << tab
|
||||
<< st.wellDepth_ << tab
|
||||
<< st.diameter_ << tab
|
||||
<< st.dipoleMoment_ << tab
|
||||
<< st.alpha_ << tab
|
||||
<< st.alphaQ_ << tab
|
||||
<< st.C6_ << tab
|
||||
<< st.Zrot_;
|
||||
|
||||
os.check("Ostream& operator<<(Ostream& os, const specie& st)");
|
||||
return os;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
176
diffusivityModel/Ion/Ion.H
Normal file
176
diffusivityModel/Ion/Ion.H
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
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::Ion
|
||||
|
||||
Description
|
||||
|
||||
SourceFiles
|
||||
IonI.H
|
||||
Ion.C
|
||||
IonIO.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef Ion_H
|
||||
#define Ion_H
|
||||
|
||||
#include "Particle.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// Forward declaration of classes
|
||||
class Istream;
|
||||
class Ostream;
|
||||
|
||||
// Forward declaration of friend functions and operators
|
||||
class Ion;
|
||||
Istream& operator>>(Istream&, Ion&);
|
||||
Ostream& operator<<(Ostream&, const Ion&);
|
||||
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class Ion Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class Ion
|
||||
:
|
||||
public Particle
|
||||
{
|
||||
// Private data
|
||||
|
||||
//- Lenard-Jones parameter - potential well depth
|
||||
//- epsilon / kB [K]
|
||||
scalar wellDepth_;
|
||||
|
||||
//- Lenard-Jones parameter - collision diameter [Angstrom]
|
||||
scalar diameter_;
|
||||
|
||||
//- Dipole moment [Debye]
|
||||
scalar dipoleMoment_;
|
||||
|
||||
//- Dipole polarizability [Angstrom^3]
|
||||
scalar alpha_;
|
||||
|
||||
//- Quadrupole polarizability []
|
||||
scalar alphaQ_;
|
||||
|
||||
//- Dispersion coefficient []
|
||||
scalar C6_;
|
||||
|
||||
//- Rotational relaxation collision number [-]
|
||||
scalar Zrot_;
|
||||
|
||||
|
||||
// Private Member Functions
|
||||
|
||||
//- Disallow default bitwise copy construct
|
||||
Ion(const Ion&);
|
||||
|
||||
//- Disallow default bitwise assignment
|
||||
void operator=(const Ion&);
|
||||
|
||||
|
||||
public:
|
||||
|
||||
// Static data members
|
||||
|
||||
//- Static data staticData
|
||||
// static const dataType staticData;
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from components
|
||||
Ion(const dictionary& dict);
|
||||
|
||||
//- Construct from Istream
|
||||
Ion(Istream&);
|
||||
|
||||
//- Construct as copy
|
||||
// Ion(const Ion&);
|
||||
|
||||
|
||||
//- Destructor
|
||||
~Ion();
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
// Access
|
||||
inline scalar wellDepth() const;
|
||||
|
||||
inline scalar diameter() const;
|
||||
|
||||
inline scalar dipoleMoment() const;
|
||||
|
||||
inline scalar alpha() const;
|
||||
|
||||
inline scalar alphaQ() const;
|
||||
|
||||
inline scalar C6() const;
|
||||
|
||||
inline scalar Zrot() const;
|
||||
|
||||
inline scalar Zrot(scalar T) const;
|
||||
|
||||
// Check
|
||||
|
||||
// Edit
|
||||
|
||||
// Write
|
||||
|
||||
|
||||
// Member Operators
|
||||
|
||||
// void operator=(const Ion&);
|
||||
|
||||
|
||||
// Friend Functions
|
||||
|
||||
// Friend Operators
|
||||
|
||||
// IOstream Operators
|
||||
|
||||
friend Istream& operator>>(Istream&, Ion&);
|
||||
friend Ostream& operator<<(Ostream&, const Ion&);
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "IonI.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
121
diffusivityModel/Ion/IonI.H
Normal file
121
diffusivityModel/Ion/IonI.H
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
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/>.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
inline Foam::scalar Foam::Ion::wellDepth()
|
||||
const
|
||||
{
|
||||
return wellDepth_;
|
||||
}
|
||||
|
||||
|
||||
inline Foam::scalar Foam::Ion::diameter()
|
||||
const
|
||||
{
|
||||
return diameter_ * Angstrom;
|
||||
}
|
||||
|
||||
|
||||
inline Foam::scalar Foam::Ion::dipoleMoment()
|
||||
const
|
||||
{
|
||||
return dipoleMoment_ * Debye;
|
||||
}
|
||||
|
||||
|
||||
inline Foam::scalar Foam::Ion::alpha()
|
||||
const
|
||||
{
|
||||
return alpha_;
|
||||
}
|
||||
|
||||
|
||||
inline Foam::scalar Foam::Ion::alphaQ()
|
||||
const
|
||||
{
|
||||
return alphaQ_;
|
||||
}
|
||||
|
||||
|
||||
inline Foam::scalar Foam::Ion::C6()
|
||||
const
|
||||
{
|
||||
return C6_;
|
||||
}
|
||||
|
||||
|
||||
inline Foam::scalar Foam::Ion::Zrot()
|
||||
const
|
||||
{
|
||||
return Zrot_;
|
||||
}
|
||||
|
||||
inline Foam::scalar Foam::Ion::Zrot(const scalar T)
|
||||
const
|
||||
{
|
||||
scalar a3 = sqrt(pow3(pi));
|
||||
scalar a1 = a3/2.0;
|
||||
scalar a2 = sqr(pi) / 4.0 + 2.0;
|
||||
|
||||
scalar t1 = sqrt(wellDepth_/T);
|
||||
scalar t2 = wellDepth_/T;
|
||||
scalar t3 = t1 * t2;
|
||||
|
||||
return 1.0 + a1 * t1 + a2 * t2 + a3 * t3;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Friend Functions * * * * * * * * * * * * * //
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * //
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * * //
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * //
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
Loading…
Add table
Reference in a new issue