OutputControlDictionary host class

Used to enable a combination of run-time selection and automatic read/write
provided by IOdictionary. Currently used in sixDOFODE class.
This commit is contained in:
Vuko Vukcevic 2017-02-28 09:33:36 +01:00 committed by Hrvoje Jasak
parent b33681bd75
commit 60821402da
5 changed files with 185 additions and 9 deletions

View file

@ -38,7 +38,7 @@ SourceFiles
\*---------------------------------------------------------------------------*/
#include "quaternionSixDOF.H"
#include "sixDOFODEIO.H"
#include "OutputControlDictionary.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View file

@ -158,7 +158,8 @@ Foam::sixDOFODE::~sixDOFODE()
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
const Foam::sixDOFODEIO& Foam::sixDOFODE::dict() const
const Foam::OutputControlDictionary<Foam::sixDOFODE>&
Foam::sixDOFODE::dict() const
{
return dict_;
}

View file

@ -45,9 +45,9 @@ SourceFiles
#define sixDOFODE_H
#include "ODE.H"
#include "sixDOFODEIO.H"
#include "dimensionedTypes.H"
#include "autoPtr.H"
#include "OutputControlDictionary.H"
#include "runTimeSelectionTables.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -55,9 +55,6 @@ SourceFiles
namespace Foam
{
// Forward declarations of classes
class IOobject;
class finiteRotation;
class HamiltonRodriguezRot;
@ -72,7 +69,7 @@ class sixDOFODE
// Private data
//- Dictionary object controlling I/O for sixDOFODE
const sixDOFODEIO dict_;
const OutputControlDictionary<sixDOFODE> dict_;
// Body data
@ -197,8 +194,8 @@ public:
// Access to common data
//- Return sixDOFODEIO (IOdictionary)
const sixDOFODEIO& dict() const;
//- Return write controlled dictionary
const OutputControlDictionary<sixDOFODE>& dict() const;
//- Return mass
inline const dimensionedScalar& mass() const;

View file

@ -0,0 +1,75 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | foam-extend: Open Source CFD
\\ / O peration | Version: 4.0
\\ / 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
OutputControlDictionary
Description
Host template class used to control input/output for a given type. Used to
enable a combination of run-time selection using the TypeName macro (see
typeInfo.H) and automatic read/write provided by regIOobject part of the
IOdictionary.
For example of usage, see $FOAM_SRC/ODE/sixDOFODE/sixDOFODE.H
Author
Vuko Vukcevic, Wikki Ltd. All rights reserved.
\*---------------------------------------------------------------------------*/
#include "OutputControlDictionary.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
template <class PolicyType>
Foam::OutputControlDictionary<PolicyType>::OutputControlDictionary
(
const IOobject& io,
const PolicyType& pt
)
:
IOdictionary(io),
pt_(pt)
{
// Note: parameter pt may be incomplete here, must not call its member
// functions inside the constructor body.
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
template <class PolicyType>
Foam::OutputControlDictionary<PolicyType>::~OutputControlDictionary()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template <class PolicyType>
bool Foam::OutputControlDictionary<PolicyType>::writeData(Ostream& os) const
{
return pt_.writeData(os);
}
// ************************************************************************* //

View file

@ -0,0 +1,103 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | foam-extend: Open Source CFD
\\ / O peration | Version: 4.0
\\ / 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
OutputControlDictionary
Description
Host template class used to control input/output for a given type. Used to
enable a combination of run-time selection using the TypeName macro (see
typeInfo.H) and automatic read/write provided by regIOobject part of the
IOdictionary.
For example of usage, see $FOAM_SRC/ODE/sixDOFODE/sixDOFODE.H
Author
Vuko Vukcevic, Wikki Ltd. All rights reserved.
SourceFiles
OutputControlDictionary.C
\*---------------------------------------------------------------------------*/
#ifndef OutputControlDictionary_H
#define OutputControlDictionary_H
#include "IOdictionary.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
/*---------------------------------------------------------------------------*\
Class OutputControlDictionary Declaration
\*---------------------------------------------------------------------------*/
template <class PolicyType>
class OutputControlDictionary
:
public IOdictionary
{
// Private data
//- Const reference to the policy class
const PolicyType& pt_;
public:
// Constructors
//- Construct from IOobject and policy
OutputControlDictionary(const IOobject& io, const PolicyType& pt);
// Destructor
virtual ~OutputControlDictionary();
// Write control
//- writeData member function controlling output. Calls
// PolicyType::writeData(Ostream& os) member function
virtual bool writeData(Ostream& os) const;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#ifdef NoRepository
# include "OutputControlDictionary.C"
#endif
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //