Merge branch 'master' of /home/noisy3/OpenFOAM/OpenFOAM-dev

This commit is contained in:
mattijs
2010-06-07 17:12:19 +01:00
14 changed files with 192 additions and 202 deletions

View File

@ -43,6 +43,9 @@ int main(int argc, char *argv[])
dl.append(2); dl.append(2);
dl.append(1); dl.append(1);
Pout<< "appending : dl:" << dl << endl; Pout<< "appending : dl:" << dl << endl;
dl[2] *= 10;
Pout<< "assigning : dl:" << dl << endl;
} }
{ {

View File

@ -17,7 +17,7 @@ wmakeLnInclude OpenFOAM
wmakeLnInclude OSspecific/$WM_OSTYPE wmakeLnInclude OSspecific/$WM_OSTYPE
Pstream/Allwmake Pstream/Allwmake
wmake libo OSspecific/$WM_OSTYPE OSspecific/$WM_OSTYPE/Allwmake
wmake libso OpenFOAM wmake libso OpenFOAM
wmake libso lagrangian/basic wmake libso lagrangian/basic

21
src/OSspecific/POSIX/Allwmake Executable file
View File

@ -0,0 +1,21 @@
#!/bin/sh
cd ${0%/*} || exit 1 # run from this directory
#
# use <sys/inotify.h> if available (Linux)
# unless otherwise specified (with FOAM_USE_STAT)
#
# eg, ./Allwmake FOAM_USE_STAT
#
if [ -f /usr/include/sys/inotify.h -a "${1%USE_STAT}" = "$1" ]
then
unset FOAM_FILE_MONITOR
else
export FOAM_FILE_MONITOR="-DFOAM_USE_STAT"
fi
# make (non-shared) object
wmake libo
# ----------------------------------------------------------------- end-of-file

View File

@ -1,3 +1 @@
#ifdef SunOS64 EXE_INC = $(FOAM_FILE_MONITOR)
EXE_INC = -DFOAM_USE_STAT
#endif

View File

@ -37,7 +37,6 @@ Class
# include "regIOobject.H" // for fileModificationSkew symbol # include "regIOobject.H" // for fileModificationSkew symbol
#else #else
# include <sys/inotify.h> # include <sys/inotify.h>
# include <stropts.h>
# include <sys/ioctl.h> # include <sys/ioctl.h>
#endif #endif
@ -49,8 +48,8 @@ template<>
const char* Foam::NamedEnum<Foam::fileMonitor::fileState, 3>::names[] = const char* Foam::NamedEnum<Foam::fileMonitor::fileState, 3>::names[] =
{ {
"unmodified", "unmodified",
"deleted", "modified",
"modified" "deleted"
}; };
const Foam::NamedEnum<Foam::fileMonitor::fileState, 3> const Foam::NamedEnum<Foam::fileMonitor::fileState, 3>
Foam::fileMonitor::fileStateNames_; Foam::fileMonitor::fileStateNames_;
@ -58,7 +57,7 @@ const Foam::NamedEnum<Foam::fileMonitor::fileState, 3>
namespace Foam namespace Foam
{ {
// Reduction operator for PackedList of fileState //- Reduction operator for PackedList of fileState
class reduceFileStates class reduceFileStates
{ {
public: public:
@ -89,7 +88,7 @@ namespace Foam
} }
}; };
// Combine operator for PackedList of fileState //- Combine operator for PackedList of fileState
class combineReduceFileStates class combineReduceFileStates
{ {
public: public:
@ -98,22 +97,101 @@ namespace Foam
x = reduceFileStates()(x, y); x = reduceFileStates()(x, y);
} }
}; };
//! @cond internalClass
//- Internal tracking via stat(3p) or inotify(7)
class fileMonitorWatcher
{
public:
#ifdef FOAM_USE_STAT
//- From watch descriptor to modified time
HashTable<label, time_t> lastMod;
//- initialize HashTable size
inline fileMonitorWatcher(const label sz = 20)
:
lastMod(sz)
{}
inline label addWatch(const fileName& fName)
{
const label watchFd = lastMod.size();
lastMod.insert(watchFd, lastModified(fName));
return watchFd;
}
inline bool removeWatch(const label watchFd)
{
return lastMod.erase(watchFd);
}
#else
//- File descriptor for the inotify instance
int fd;
//- Pre-allocated structure containing file descriptors
fd_set fdSet;
//- initialize inotify
inline fileMonitorWatcher(const label dummy = 0)
:
fd(inotify_init())
{
// Add notify descriptor to select fd_set
FD_ZERO(&fdSet);
FD_SET(fd, &fdSet);
}
//- test if file descriptor is set
inline bool isSet() const
{
return FD_ISSET(fd, &fdSet);
}
//- reset file descriptor
inline void reset()
{
FD_SET(fd, &fdSet);
}
inline label addWatch(const fileName& fName)
{
return inotify_add_watch
(
fd,
fName.c_str(),
// IN_ALL_EVENTS
IN_CLOSE_WRITE | IN_DELETE_SELF | IN_MODIFY
);
}
inline bool removeWatch(const label watchFd)
{
return inotify_rm_watch(fd, int(watchFd)) == 0;
}
#endif
};
//! @endcond
} }
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
#ifdef FOAM_USE_STAT
void Foam::fileMonitor::checkFiles() const void Foam::fileMonitor::checkFiles() const
{ {
#ifdef FOAM_USE_STAT
for for
( (
HashTable<label, time_t>::iterator iter = lastModified_.begin(); HashTable<label, time_t>::iterator iter = watcher_->lastMod.begin();
iter != lastModified_.end(); iter != watcher_->lastMod.end();
++iter ++iter
) )
{ {
label watchFd = iter.key(); const label watchFd = iter.key();
const fileName& fName = watchFile_[watchFd]; const fileName& fName = watchFile_[watchFd];
time_t newTime = lastModified(fName); time_t newTime = lastModified(fName);
@ -135,21 +213,18 @@ void Foam::fileMonitor::checkFiles() const
} }
} }
} }
}
#else #else
void Foam::fileMonitor::checkFiles() const
{
while (true) while (true)
{ {
struct timeval zeroTimeout = {0, 0}; struct timeval zeroTimeout = {0, 0};
int ready = select int ready = select
( (
inotifyFd_+1, // num filedescriptors in watchSet_ watcher_->fd+1, // num filedescriptors in fdSet
&watchSet_, // watchSet_ with only inotifyFd &(watcher_->fdSet), // fdSet with only inotifyFd
NULL, NULL, // No writefds
NULL, NULL, // No errorfds
&zeroTimeout &zeroTimeout // eNo timeout
); );
if (ready < 0) if (ready < 0)
@ -158,14 +233,14 @@ void Foam::fileMonitor::checkFiles() const
<< "Problem in issuing select." << "Problem in issuing select."
<< abort(FatalError); << abort(FatalError);
} }
else if (FD_ISSET(inotifyFd_, &watchSet_)) else if (watcher_->isSet())
{ {
struct inotify_event inotifyEvent; struct inotify_event inotifyEvent;
// Read first event // Read first event
ssize_t nBytes = read ssize_t nBytes = read
( (
inotifyFd_, watcher_->fd,
&inotifyEvent, &inotifyEvent,
sizeof(inotifyEvent) sizeof(inotifyEvent)
); );
@ -178,9 +253,9 @@ void Foam::fileMonitor::checkFiles() const
<< abort(FatalError); << abort(FatalError);
} }
//Pout<< "mask:" << inotifyEvent.mask << endl; // Pout<< "mask:" << inotifyEvent.mask << nl
//Pout<< "watchFd:" << inotifyEvent.wd << endl; // << "watchFd:" << inotifyEvent.wd << nl
//Pout<< "watchName:" << watchFile_[inotifyEvent.wd] << endl; // << "watchName:" << watchFile_[inotifyEvent.wd] << endl;
switch (inotifyEvent.mask) switch (inotifyEvent.mask)
{ {
@ -204,51 +279,37 @@ void Foam::fileMonitor::checkFiles() const
} }
else else
{ {
// No data. Reset watchSet_ // No data - reset
FD_SET(inotifyFd_, &watchSet_); watcher_->reset();
return; return;
} }
} }
}
#endif #endif
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
// Null constructor
#ifdef FOAM_USE_STAT
Foam::fileMonitor::fileMonitor() Foam::fileMonitor::fileMonitor()
: :
state_(20), state_(20),
watchFile_(20), watchFile_(20),
lastModified_(20) watcher_(new fileMonitorWatcher(20))
{} {}
#else
Foam::fileMonitor::fileMonitor()
:
state_(20),
watchFile_(20),
inotifyFd_(inotify_init())
{
//- Add notify descriptor to select set
FD_ZERO(&watchSet_);
FD_SET(inotifyFd_, &watchSet_);
}
#endif
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam::fileMonitor::~fileMonitor() Foam::fileMonitor::~fileMonitor()
{ {
// Remove any remaining files // Remove watch on any remaining files
List<label> watchFds(state_.toc()); List<label> watchFds(state_.toc());
forAll(watchFds, i) forAll(watchFds, i)
{ {
removeWatch(watchFds[i]); removeWatch(watchFds[i]);
} }
delete watcher_;
} }
@ -257,18 +318,7 @@ Foam::fileMonitor::~fileMonitor()
Foam::label Foam::fileMonitor::addWatch(const fileName& fName) Foam::label Foam::fileMonitor::addWatch(const fileName& fName)
{ {
#ifdef FOAM_USE_STAT const label watchFd = watcher_->addWatch(fName);
label watchFd = lastModified_.size();
lastModified_.insert(watchFd, lastModified(fName));
#else
label watchFd = inotify_add_watch
(
inotifyFd_,
fName.c_str(),
//IN_ALL_EVENTS
IN_CLOSE_WRITE | IN_DELETE_SELF | IN_MODIFY
);
#endif
if (debug) if (debug)
{ {
@ -300,11 +350,7 @@ bool Foam::fileMonitor::removeWatch(const label watchFd)
state_.erase(watchFd); state_.erase(watchFd);
watchFile_.erase(watchFd); watchFile_.erase(watchFd);
#ifdef FOAM_USE_STAT return watcher_->removeWatch(watchFd);
return lastModified_.erase(watchFd);
#else
return inotify_rm_watch(inotifyFd_, int(watchFd)) == 0;
#endif
} }
@ -331,7 +377,7 @@ void Foam::fileMonitor::updateStates(const bool syncPar) const
label i = 0; label i = 0;
forAllConstIter(Map<fileState>, state_, iter) forAllConstIter(Map<fileState>, state_, iter)
{ {
stats[i++] = (unsigned int)(iter()); stats[i++] = static_cast<unsigned int>(iter());
} }
// Save local state for warning message below // Save local state for warning message below
PackedList<2> thisProcStats(stats); PackedList<2> thisProcStats(stats);
@ -378,7 +424,7 @@ void Foam::fileMonitor::updateStates(const bool syncPar) const
void Foam::fileMonitor::setUnmodified(const label watchFd) void Foam::fileMonitor::setUnmodified(const label watchFd)
{ {
#ifdef FOAM_USE_STAT #ifdef FOAM_USE_STAT
lastModified_[watchFd] = lastModified(watchFile_[watchFd]); watcher_->lastMod[watchFd] = lastModified(watchFile_[watchFd]);
#endif #endif
Map<fileState>::iterator iter = state_.find(watchFd); Map<fileState>::iterator iter = state_.find(watchFd);

View File

@ -27,13 +27,13 @@ Class
Description Description
Checking for changes to files. Checking for changes to files.
!!!!!!!NOTE: Note
Default is to use inotify (Linux specific, since 2.6.13) The default is to use inotify (Linux specific, since 2.6.13)
Compile with FOAM_USE_STAT to use the stat function call. Compiling with FOAM_USE_STAT (or if /usr/include/sys/inotify.h
does not exist) uses the stat function call.
- works fine except when a file is deleted and recreated:
- works fine except for if file gets deleted and recreated
it stops monitoring the file! it stops monitoring the file!
(does work though if the file gets moved) (does work though if the file gets moved)
@ -48,7 +48,6 @@ SourceFiles
#include <sys/types.h> #include <sys/types.h>
#include "Map.H" #include "Map.H"
#include "NamedEnum.H" #include "NamedEnum.H"
#include "labelList.H"
#include "className.H" #include "className.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -57,9 +56,10 @@ namespace Foam
{ {
class fileMonitor; class fileMonitor;
class fileMonitorWatcher;
/*---------------------------------------------------------------------------*\ /*---------------------------------------------------------------------------*\
Class fileMonitor Declaration Class fileMonitor Declaration
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
class fileMonitor class fileMonitor
@ -73,8 +73,8 @@ public:
enum fileState enum fileState
{ {
UNMODIFIED = 0, UNMODIFIED = 0,
DELETED = 1, MODIFIED = 1,
MODIFIED = 2 DELETED = 2,
}; };
static const NamedEnum<fileState, 3> fileStateNames_; static const NamedEnum<fileState, 3> fileStateNames_;
@ -88,18 +88,12 @@ private:
//- From watch descriptor to filename //- From watch descriptor to filename
HashTable<fileName, label> watchFile_; HashTable<fileName, label> watchFile_;
#ifdef FOAM_USE_STAT //- Watch mechanism (stat or inotify)
mutable fileMonitorWatcher *watcher_;
//- From watch descriptor to modified time
mutable HashTable<label, time_t> lastModified_;
#else
//- File descriptor for the inotify instance
int inotifyFd_;
//- Pre-allocated structure containing file descriptors // Private Member Functions
mutable fd_set watchSet_;
#endif
//- Update state_ from any events. //- Update state_ from any events.
void checkFiles() const; void checkFiles() const;
@ -121,14 +115,13 @@ public:
fileMonitor(); fileMonitor();
// Destructor //- Destructor
~fileMonitor();
~fileMonitor();
// Member Functions // Member Functions
//- Add file to watch. Returns watch descriptor //- Add file to watch. Return watch descriptor
label addWatch(const fileName&); label addWatch(const fileName&);
//- Remove file to watch. Return true if successful //- Remove file to watch. Return true if successful

View File

@ -310,7 +310,7 @@ inline void Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::append
const T& t const T& t
) )
{ {
label elemI = List<T>::size(); const label elemI = List<T>::size();
setSize(elemI + 1); setSize(elemI + 1);
this->operator[](elemI) = t; this->operator[](elemI) = t;
@ -361,7 +361,7 @@ inline void Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::append
template<class T, unsigned SizeInc, unsigned SizeMult, unsigned SizeDiv> template<class T, unsigned SizeInc, unsigned SizeMult, unsigned SizeDiv>
inline T Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::remove() inline T Foam::DynamicList<T, SizeInc, SizeMult, SizeDiv>::remove()
{ {
label elemI = List<T>::size() - 1; const label elemI = List<T>::size() - 1;
if (elemI < 0) if (elemI < 0)
{ {

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -180,6 +180,9 @@ public:
//- Clear the list, i.e. set size to zero. //- Clear the list, i.e. set size to zero.
void clear(); void clear();
//- Append an element at the end of the list
inline void append(const T&);
//- Append a List at the end of this list //- Append a List at the end of this list
inline void append(const UList<T>&); inline void append(const UList<T>&);

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -93,6 +93,13 @@ inline Foam::Xfer<Foam::List<T> > Foam::List<T>::xfer()
} }
template<class T>
inline void Foam::List<T>::append(const T& t)
{
setSize(size()+1, t);
}
template<class T> template<class T>
inline void Foam::List<T>::append(const UList<T>& lst) inline void Foam::List<T>::append(const UList<T>& lst)
{ {

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. \\ / A nd | Copyright (C) 2009-2010 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -175,10 +175,7 @@ public:
inline void operator=(const tmp<DynamicField<Type> >&); inline void operator=(const tmp<DynamicField<Type> >&);
//- Return element of Field. //- Return element of Field.
inline Type& operator[](const label i); using Field<Type>::operator[];
//- Return element of constant Field.
inline const Type& operator[](const label) const;
// IOstream operators // IOstream operators

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. \\ / A nd | Copyright (C) 2009-2010 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -25,15 +25,10 @@ License
#include "DynamicField.H" #include "DynamicField.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
template<class Type> template<class Type>
DynamicField<Type>::DynamicField() Foam::DynamicField<Type>::DynamicField()
: :
Field<Type>(), Field<Type>(),
capacity_(0) capacity_(0)
@ -41,7 +36,7 @@ DynamicField<Type>::DynamicField()
template<class Type> template<class Type>
DynamicField<Type>::DynamicField(const label size) Foam::DynamicField<Type>::DynamicField(const label size)
: :
Field<Type>(size), Field<Type>(size),
capacity_(Field<Type>::size()) capacity_(Field<Type>::size())
@ -73,7 +68,7 @@ inline Foam::DynamicField<Type>::DynamicField
template<class Type> template<class Type>
DynamicField<Type>::DynamicField Foam::DynamicField<Type>::DynamicField
( (
const UList<Type>& mapF, const UList<Type>& mapF,
const labelList& mapAddressing const labelList& mapAddressing
@ -85,7 +80,7 @@ DynamicField<Type>::DynamicField
template<class Type> template<class Type>
DynamicField<Type>::DynamicField Foam::DynamicField<Type>::DynamicField
( (
const UList<Type>& mapF, const UList<Type>& mapF,
const labelListList& mapAddressing, const labelListList& mapAddressing,
@ -99,7 +94,7 @@ DynamicField<Type>::DynamicField
//- Construct by mapping from the given field //- Construct by mapping from the given field
template<class Type> template<class Type>
DynamicField<Type>::DynamicField Foam::DynamicField<Type>::DynamicField
( (
const UList<Type>& mapF, const UList<Type>& mapF,
const FieldMapper& map const FieldMapper& map
@ -111,7 +106,7 @@ DynamicField<Type>::DynamicField
template<class Type> template<class Type>
DynamicField<Type>::DynamicField(const DynamicField<Type>& f) Foam::DynamicField<Type>::DynamicField(const DynamicField<Type>& f)
: :
Field<Type>(f), Field<Type>(f),
capacity_(Field<Type>::size()) capacity_(Field<Type>::size())
@ -119,7 +114,7 @@ DynamicField<Type>::DynamicField(const DynamicField<Type>& f)
template<class Type> template<class Type>
DynamicField<Type>::DynamicField(DynamicField<Type>& f, bool reUse) Foam::DynamicField<Type>::DynamicField(DynamicField<Type>& f, bool reUse)
: :
Field<Type>(f, reUse), Field<Type>(f, reUse),
capacity_(Field<Type>::size()) capacity_(Field<Type>::size())
@ -127,7 +122,7 @@ DynamicField<Type>::DynamicField(DynamicField<Type>& f, bool reUse)
template<class Type> template<class Type>
DynamicField<Type>::DynamicField(const Xfer<DynamicField<Type> >& f) Foam::DynamicField<Type>::DynamicField(const Xfer<DynamicField<Type> >& f)
: :
Field<Type>(f), Field<Type>(f),
capacity_(Field<Type>::size()) capacity_(Field<Type>::size())
@ -137,14 +132,14 @@ DynamicField<Type>::DynamicField(const Xfer<DynamicField<Type> >& f)
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class Type> template<class Type>
Foam::label DynamicField<Type>::capacity() const Foam::label Foam::DynamicField<Type>::capacity() const
{ {
return capacity_; return capacity_;
} }
template<class Type> template<class Type>
void DynamicField<Type>::append(const Type& t) void Foam::DynamicField<Type>::append(const Type& t)
{ {
label elemI = Field<Type>::size(); label elemI = Field<Type>::size();
setSize(elemI + 1); setSize(elemI + 1);
@ -156,7 +151,7 @@ void DynamicField<Type>::append(const Type& t)
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
template<class Type> template<class Type>
void DynamicField<Type>::operator=(const DynamicField<Type>& rhs) void Foam::DynamicField<Type>::operator=(const DynamicField<Type>& rhs)
{ {
if (this == &rhs) if (this == &rhs)
{ {
@ -171,7 +166,7 @@ void DynamicField<Type>::operator=(const DynamicField<Type>& rhs)
template<class Type> template<class Type>
void DynamicField<Type>::operator=(const UList<Type>& rhs) void Foam::DynamicField<Type>::operator=(const UList<Type>& rhs)
{ {
Field<Type>::operator=(rhs); Field<Type>::operator=(rhs);
capacity_ = Field<Type>::size(); capacity_ = Field<Type>::size();
@ -179,7 +174,7 @@ void DynamicField<Type>::operator=(const UList<Type>& rhs)
template<class Type> template<class Type>
void DynamicField<Type>::operator=(const tmp<DynamicField>& rhs) void Foam::DynamicField<Type>::operator=(const tmp<DynamicField>& rhs)
{ {
if (this == &(rhs())) if (this == &(rhs()))
{ {
@ -196,25 +191,7 @@ void DynamicField<Type>::operator=(const tmp<DynamicField>& rhs)
} }
template<class Type>
Type& DynamicField<Type>::operator[](const label i)
{
return Field<Type>::operator[](i);
}
template<class Type>
const Type& DynamicField<Type>::operator[](const label i) const
{
return Field<Type>::operator[](i);
}
// * * * * * * * * * * * * * * * IOstream Operator * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * IOstream Operator * * * * * * * * * * * * * //
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* // // ************************************************************************* //

View File

@ -38,7 +38,7 @@ License
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
//- Append all mapped elements of a list to a DynamicList // Append all mapped elements of a list to a DynamicList
void Foam::polyMeshAdder::append void Foam::polyMeshAdder::append
( (
const labelList& map, const labelList& map,
@ -50,7 +50,7 @@ void Foam::polyMeshAdder::append
forAll(lst, i) forAll(lst, i)
{ {
label newElem = map[lst[i]]; const label newElem = map[lst[i]];
if (newElem != -1) if (newElem != -1)
{ {
@ -60,7 +60,7 @@ void Foam::polyMeshAdder::append
} }
//- Append all mapped elements of a list to a DynamicList // Append all mapped elements of a list to a DynamicList
void Foam::polyMeshAdder::append void Foam::polyMeshAdder::append
( (
const labelList& map, const labelList& map,
@ -73,7 +73,7 @@ void Foam::polyMeshAdder::append
forAll(lst, i) forAll(lst, i)
{ {
label newElem = map[lst[i]]; const label newElem = map[lst[i]];
if (newElem != -1 && findSortedIndex(sortedLst, newElem) == -1) if (newElem != -1 && findSortedIndex(sortedLst, newElem) == -1)
{ {
@ -170,8 +170,8 @@ void Foam::polyMeshAdder::mergePatchNames
) )
{ {
// Insert the mesh0 patches and zones // Insert the mesh0 patches and zones
append(patches0.names(), allPatchNames); allPatchNames.append(patches0.names());
append(patches0.types(), allPatchTypes); allPatchTypes.append(patches0.types());
// Patches // Patches
@ -924,9 +924,7 @@ void Foam::polyMeshAdder::mergePointZones
) )
{ {
zoneNames.setCapacity(pz0.size() + pz1.size()); zoneNames.setCapacity(pz0.size() + pz1.size());
zoneNames.append(pz0.names());
// Names
append(pz0.names(), zoneNames);
from1ToAll.setSize(pz1.size()); from1ToAll.setSize(pz1.size());
@ -959,7 +957,7 @@ void Foam::polyMeshAdder::mergePointZones
forAll(pz1, zoneI) forAll(pz1, zoneI)
{ {
// Relabel all points of zone and add to correct pzPoints. // Relabel all points of zone and add to correct pzPoints.
label allZoneI = from1ToAll[zoneI]; const label allZoneI = from1ToAll[zoneI];
append append
( (
@ -991,8 +989,7 @@ void Foam::polyMeshAdder::mergeFaceZones
) )
{ {
zoneNames.setCapacity(fz0.size() + fz1.size()); zoneNames.setCapacity(fz0.size() + fz1.size());
zoneNames.append(fz0.names());
append(fz0.names(), zoneNames);
from1ToAll.setSize(fz1.size()); from1ToAll.setSize(fz1.size());
@ -1092,8 +1089,7 @@ void Foam::polyMeshAdder::mergeCellZones
) )
{ {
zoneNames.setCapacity(cz0.size() + cz1.size()); zoneNames.setCapacity(cz0.size() + cz1.size());
zoneNames.append(cz0.names());
append(cz0.names(), zoneNames);
from1ToAll.setSize(cz1.size()); from1ToAll.setSize(cz1.size());
forAll(cz1, zoneI) forAll(cz1, zoneI)
@ -1108,14 +1104,14 @@ void Foam::polyMeshAdder::mergeCellZones
forAll(cz0, zoneI) forAll(cz0, zoneI)
{ {
// Insert mesh0 cells // Insert mesh0 cells
append(cz0[zoneI], czCells[zoneI]); czCells[zoneI].append(cz0[zoneI]);
} }
// Cell mapping is trivial. // Cell mapping is trivial.
forAll(cz1, zoneI) forAll(cz1, zoneI)
{ {
label allZoneI = from1ToAll[zoneI]; const label allZoneI = from1ToAll[zoneI];
append(from1ToAllCells, cz1[zoneI], czCells[allZoneI]); append(from1ToAllCells, cz1[zoneI], czCells[allZoneI]);
} }

View File

@ -66,10 +66,6 @@ private:
// Private Member Functions // Private Member Functions
//- Append all elements of a list to a DynamicList
template<class T>
static void append(const List<T>&, DynamicList<T>&);
//- Append all mapped elements of a list to a DynamicList //- Append all mapped elements of a list to a DynamicList
static void append static void append
( (
@ -315,12 +311,6 @@ public:
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#ifdef NoRepository
# include "polyMeshAdderTemplates.C"
#endif
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif #endif
// ************************************************************************* // // ************************************************************************* //

View File

@ -1,41 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
\\/ 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/>.
\*---------------------------------------------------------------------------*/
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
//- Append all elements of a list to a DynamicList
template<class T>
void Foam::polyMeshAdder::append(const List<T>& lst, DynamicList<T>& dynLst)
{
dynLst.setCapacity(dynLst.size() + lst.size());
forAll(lst, i)
{
dynLst.append(lst[i]);
}
}
// ************************************************************************* //