Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop

This commit is contained in:
mattijs
2016-10-17 12:28:33 +01:00
4 changed files with 74 additions and 11 deletions

View File

@ -106,11 +106,19 @@ public:
// Access
//- Return reference, without checking pointer validity.
inline T& refOrNull();
//- Return the pointer, without nullptr checking.
// Pointer remains under autoPtr management.
inline T* rawPtr();
//- Return const reference, without checking pointer validity.
inline const T& refOrNull() const;
//- Const access to the pointer, without nullptr checking.
// Pointer remains under autoPtr management.
inline const T* rawPtr() const;
//- Return the reference, without nullptr checking.
inline T& rawRef();
//- Return the const reference, without nullptr checking.
inline const T& rawRef() const;
// Member operators

View File

@ -130,14 +130,28 @@ inline void Foam::autoPtr<T>::clear()
template<class T>
inline T& Foam::autoPtr<T>::refOrNull()
inline T* Foam::autoPtr<T>::rawPtr()
{
return ptr_;
}
template<class T>
inline const T* Foam::autoPtr<T>::rawPtr() const
{
return ptr_;
}
template<class T>
inline T& Foam::autoPtr<T>::rawRef()
{
return *ptr_;
}
template<class T>
inline const T& Foam::autoPtr<T>::refOrNull() const
inline const T& Foam::autoPtr<T>::rawRef() const
{
return *ptr_;
}

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -98,7 +98,13 @@ Foam::wallDist::wallDist(const fvMesh& mesh, const word& patchTypeName)
static_cast<const fvSchemes&>(mesh).subDict(patchTypeName_ & "Dist")
.lookupOrDefault<Switch>("nRequired", false)
),
n_(volVectorField::null())
n_(volVectorField::null()),
updateInterval_
(
static_cast<const fvSchemes&>(mesh).subDict(patchTypeName_ & "Dist")
.lookupOrDefault<label>("updateInterval", 1)
),
requireUpdate_(true)
{
if (nRequired_)
{
@ -146,7 +152,13 @@ Foam::wallDist::wallDist
static_cast<const fvSchemes&>(mesh).subDict(patchTypeName_ & "Dist")
.lookupOrDefault<Switch>("nRequired", false)
),
n_(volVectorField::null())
n_(volVectorField::null()),
updateInterval_
(
static_cast<const fvSchemes&>(mesh).subDict(patchTypeName_ & "Dist")
.lookupOrDefault<label>("updateInterval", 1)
),
requireUpdate_(true)
{
if (nRequired_)
{
@ -185,8 +197,21 @@ const Foam::volVectorField& Foam::wallDist::n() const
bool Foam::wallDist::movePoints()
{
if (pdm_->movePoints())
if
(
(updateInterval_ != 0)
&& ((mesh_.time().timeIndex() % updateInterval_) == 0)
)
{
requireUpdate_ = true;
}
if (requireUpdate_ && pdm_->movePoints())
{
DebugInfo<< "Updating wall distance" << endl;
requireUpdate_ = false;
if (nRequired_)
{
return pdm_->correct(y_, n_.ref());
@ -206,6 +231,12 @@ bool Foam::wallDist::movePoints()
void Foam::wallDist::updateMesh(const mapPolyMesh& mpm)
{
pdm_->updateMesh(mpm);
// Force update if performing topology change
// Note: needed?
// - field would have been mapped, so if using updateInterval option (!= 1)
// live with error associated of not updating and use mapped values?
requireUpdate_ = true;
movePoints();
}

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -37,6 +37,10 @@ Description
// Optional entry enabling the calculation
// of the normal-to-wall field
nRequired false;
// Optional entry delaying wall distance update to every n steps
// Default is 1 (update every step)
updateInterval 5;
}
\endverbatim
@ -90,6 +94,12 @@ class wallDist
//- Normal-to-wall field
mutable tmp<volVectorField> n_;
//- Update wall distance every updateInterval_ steps
const label updateInterval_;
//- Flag to indicate whether the wall distance requires updating
bool requireUpdate_;
// Private Member Functions