diff --git a/applications/test/Hashing/Test-Hashing.C b/applications/test/Hashing/Test-Hashing.C index 35e0bb6dc4ecfbbf5652f785d0f92451495e28de..68482745074752f8deccde9c9e946c3c977f7757 100644 --- a/applications/test/Hashing/Test-Hashing.C +++ b/applications/test/Hashing/Test-Hashing.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2018-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -78,7 +78,7 @@ void infoHashString void reportHashList(const UList<string>& list) { - Info<< "contiguous = " << contiguous<string>() << nl << nl; + Info<< "contiguous = " << is_contiguous<string>::value << nl << nl; for (const string& val : list) { @@ -91,7 +91,7 @@ void reportHashList(const UList<string>& list) void reportHashList(const UList<label>& list) { - Info<<"contiguous = " << contiguous<label>() << nl << nl; + Info<<"contiguous = " << is_contiguous<label>::value << nl << nl; for (const label val : list) { @@ -110,7 +110,7 @@ void reportHashList(const UList<label>& list) void reportHashList(const UList<face>& list) { - Info<<"contiguous = " << contiguous<label>() << nl << nl; + Info<<"contiguous = " << is_contiguous<label>::value << nl << nl; for (const face& f : list) { @@ -157,7 +157,7 @@ typedef Pair<word> wordPair; void reportHashList(const UList<wordPair>& list) { - Info<<"contiguous = " << contiguous<wordPair>() << nl << nl; + Info<<"contiguous = " << is_contiguous<wordPair>::value << nl << nl; for (const wordPair& pr : list) { @@ -182,7 +182,7 @@ void reportHashList(const UList<wordPair>& list) void reportHashList(const UList<labelPair>& list) { - Info<<"contiguous = " << contiguous<labelPair>() << nl << nl; + Info<<"contiguous = " << is_contiguous<labelPair>::value << nl << nl; for (const labelPair& pr : list) { @@ -203,7 +203,7 @@ void reportHashList(const UList<labelPair>& list) void reportHashList(const UList<labelPairPair>& list) { - Info<<"contiguous = " << contiguous<labelPairPair>() << nl << nl; + Info<<"contiguous = " << is_contiguous<labelPairPair>::value << nl << nl; for (const labelPairPair& pr : list) { @@ -224,7 +224,7 @@ void reportHashList(const UList<labelPairPair>& list) void reportHashList(const UList<edge>& list) { - Info<<"contiguous = " << contiguous<edge>() << nl << nl; + Info<<"contiguous = " << is_contiguous<edge>::value << nl << nl; for (const edge& e : list) { @@ -245,7 +245,7 @@ void reportHashList(const UList<edge>& list) void reportHashList(const UList<triFace>& list) { - Info<<"contiguous = " << contiguous<triFace>() << nl << nl; + Info<<"contiguous = " << is_contiguous<triFace>::value << nl << nl; for (const triFace& f : list) { diff --git a/applications/test/List/Test-List.C b/applications/test/List/Test-List.C index b759f9033d783c291312512f99cf60335557091f..4be32c8e4189ceb085b145b4453c92c975618dc7 100644 --- a/applications/test/List/Test-List.C +++ b/applications/test/List/Test-List.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2017-2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2017-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -112,7 +112,7 @@ Ostream& printListOutputType(const char* what) { Info<< what << " (contiguous=" - << contiguous<T>() << " no_linebreak=" + << is_contiguous<T>::value << " no_linebreak=" << Detail::ListPolicy::no_linebreak<T>::value << " short_length=" << Detail::ListPolicy::short_length<T>::value << ')'; diff --git a/applications/test/contiguous/Make/options b/applications/test/contiguous/Make/options index 18e6fe47afacb902cddccf82632772447704fd88..d797f175596b240ba46b06ff5da02e1d4a0aa2ba 100644 --- a/applications/test/contiguous/Make/options +++ b/applications/test/contiguous/Make/options @@ -1,2 +1,7 @@ -/* EXE_INC = */ +EXE_INC = \ + -I$(LIB_SRC)/fileFormats/lnInclude \ + -I$(LIB_SRC)/surfMesh/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/parallel/distributed/lnInclude + /* EXE_LIBS = */ diff --git a/applications/test/contiguous/Test-contiguous.C b/applications/test/contiguous/Test-contiguous.C index 2de7836bd31c9f575a9c7b989d8071cfa933f288..cdf59544a51784dee018d8818d708b5a749f101e 100644 --- a/applications/test/contiguous/Test-contiguous.C +++ b/applications/test/contiguous/Test-contiguous.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2018-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -37,6 +37,7 @@ Description #include "IOstreams.H" #include "scalar.H" #include "vector.H" +#include "Switch.H" #include "labelRange.H" #include "scalarList.H" @@ -44,24 +45,43 @@ Description #include "FixedList.H" #include "Pair.H" +#include "distributedTriSurfaceMesh.H" + namespace Foam { // Wrong, but interesting to test -// template<> struct contiguous<Pair<word>> : std::true_type {}; +template<> struct is_contiguous<Pair<word>> : std::true_type {}; -} // End namespace Foam +} // end namespace Foam using namespace Foam; template<class T> -void printContiguous() +void printInfo(const char* const name = nullptr) { - Info<<"contiguous " << typeid(T).name() << " () = " - << contiguous<T>() - // << " value = " << contiguous<T>::value - << nl; + if (name == nullptr) + { + Info<< typeid(T).name(); + } + else + { + Info<< name; + } + + Info<< " contiguous=" << Switch(is_contiguous<T>::value); + + if (is_contiguous_label<T>::value) + { + Info<< " label"; + } + if (is_contiguous_scalar<T>::value) + { + Info<< " scalar"; + } + + Info<< nl; } @@ -74,18 +94,16 @@ int main(int argc, char *argv[]) argList::noParallel(); argList::noFunctionObjects(); - #include "setRootCase.H" - - printContiguous<label>(); - printContiguous<double>(); - printContiguous<FixedList<int, 2>>(); - printContiguous<FixedList<int, 3>>(); - printContiguous<Pair<long>>(); + printInfo<label>(); + printInfo<double>(); + printInfo<FixedList<double, 4>>(); + printInfo<Pair<long>>(); - printContiguous<FixedList<word, 2>>(); - printContiguous<Pair<word>>(); + printInfo<FixedList<word, 2>>(); + printInfo<Pair<word>>(); - printContiguous<FixedList<FixedList<int, 2>, 2>>(); + printInfo<FixedList<FixedList<int, 2>, 2>>(); + printInfo<segment>(); return 0; } diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellEnum.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellEnum.C index edbb3ff3610c10547509db0e38a80946d04cacaa..7a21f50758df2c044b78a064292810b510ce9485 100644 --- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellEnum.C +++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellEnum.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2017-2018 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2012-2015 OpenFOAM Foundation diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellEnum.H b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellEnum.H index b2cf8a75d468f3da6de09357541dda3e44ec2527..647343a3fa370dc855e891a1b5fdcf3df7694fe9 100644 --- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellEnum.H +++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedCell/indexedCellEnum.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2012-2015 OpenFOAM Foundation @@ -36,6 +36,7 @@ SourceFiles #ifndef indexedCellEnum_H #define indexedCellEnum_H +#include "contiguous.H" #include "Enum.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -63,11 +64,10 @@ public: }; -template<> -inline bool contiguous<indexedCellEnum>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for indexedCellEnum +template<> struct is_contiguous<indexedCellEnum> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertex.H b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertex.H index 3b8971a99b6a7a713e055fd342d761278cead05e..3eea2134d8d66798b3d1c40893a1ce5cbbc4d519 100644 --- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertex.H +++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertex.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2012-2016 OpenFOAM Foundation @@ -323,32 +323,26 @@ public: } // End namespace CGAL -// * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * // + +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // #ifdef CGAL_INEXACT namespace Foam { // For inexact representations where the storage type is a double, the data // is contiguous. This may not be true for exact number types. + template<> - inline bool contiguous + struct is_contiguous < - CGAL::indexedVertex - < - K, - CGAL::Triangulation_vertex_base_3<K> - > - >() - { - return true; - } - + CGAL::indexedVertex<K, CGAL::Triangulation_vertex_base_3<K>> + > : std::true_type {}; template<> - inline bool contiguous<CGAL::Triangulation_vertex_base_3<K>::Point>() - { - return true; - } + struct is_contiguous + < + CGAL::Triangulation_vertex_base_3<K>::Point + > : std::true_type {}; } // End namespace Foam #endif diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertexEnum.H b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertexEnum.H index 65580f9daafb3aff00986aa73fa855d8b2b3fcb0..8a30152341f36ec89bc79e9595665ddffa5dd5b7 100644 --- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertexEnum.H +++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/indexedVertex/indexedVertexEnum.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2012-2016 OpenFOAM Foundation @@ -84,15 +84,17 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for indexedVertexEnum +template<> struct is_contiguous<indexedVertexEnum> : std::true_type {}; + + +// * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * // + Istream& operator>>(Istream&, indexedVertexEnum::vertexType&); Ostream& operator<<(Ostream&, const indexedVertexEnum::vertexType&); -template<> -inline bool contiguous<indexedVertexEnum>() -{ - return true; -} - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/algorithms/indexedOctree/volumeType.H b/src/OpenFOAM/algorithms/indexedOctree/volumeType.H index 26a0839aeb831952ddd6fd337e8706195b0c06a4..defadb0e878d6141b8139e54a29ff24a3521688c 100644 --- a/src/OpenFOAM/algorithms/indexedOctree/volumeType.H +++ b/src/OpenFOAM/algorithms/indexedOctree/volumeType.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2015-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2014 OpenFOAM Foundation @@ -38,6 +38,7 @@ SourceFiles #ifndef volumeType_H #define volumeType_H +#include "contiguous.H" #include "Enum.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -45,7 +46,7 @@ SourceFiles namespace Foam { -// Forward declarations +// Forward Declarations class dictionary; class volumeType; Istream& operator>>(Istream& is, volumeType& vt); @@ -128,9 +129,10 @@ public: }; -//- Data associated with volumeType type are contiguous -template<> -inline bool contiguous<volumeType>() {return true;} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for volumeType +template<> struct is_contiguous<volumeType> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/containers/IndirectLists/IndirectListBase/IndirectListBaseIO.C b/src/OpenFOAM/containers/IndirectLists/IndirectListBase/IndirectListBaseIO.C index e5e67578d27e6261a333a0c632afb2f7cebd731d..96fd82c8671a07fe187c45d69e71e2d8fbd04951 100644 --- a/src/OpenFOAM/containers/IndirectLists/IndirectListBase/IndirectListBaseIO.C +++ b/src/OpenFOAM/containers/IndirectLists/IndirectListBase/IndirectListBaseIO.C @@ -44,9 +44,9 @@ Foam::Ostream& Foam::IndirectListBase<T, Addr>::writeList const label len = list.size(); // Write list contents depending on data format - if (os.format() == IOstream::ASCII || !contiguous<T>()) + if (os.format() == IOstream::ASCII || !is_contiguous<T>::value) { - if (len > 1 && contiguous<T>() && list.uniform()) + if (len > 1 && is_contiguous<T>::value && list.uniform()) { // Two or more entries, and all entries have identical values. os << len << token::BEGIN_BLOCK << list[0] << token::END_BLOCK; @@ -60,7 +60,7 @@ Foam::Ostream& Foam::IndirectListBase<T, Addr>::writeList && ( Detail::ListPolicy::no_linebreak<T>::value - || contiguous<T>() + || is_contiguous<T>::value ) ) ) diff --git a/src/OpenFOAM/containers/Lists/FixedList/FixedList.H b/src/OpenFOAM/containers/Lists/FixedList/FixedList.H index c74b1d96b24d8cb3904e38512b61631ba021ac11..ca5f1d0aaba071c7ab2c76143d0436a9384359d5 100644 --- a/src/OpenFOAM/containers/Lists/FixedList/FixedList.H +++ b/src/OpenFOAM/containers/Lists/FixedList/FixedList.H @@ -431,7 +431,7 @@ public: unsigned seed=0 ) const { - if (contiguous<T>()) + if (is_contiguous<T>::value) { return Hasher(obj.cdata(), N*sizeof(T), seed); } @@ -445,6 +445,20 @@ public: }; }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- FixedList is contiguous if the type is contiguous +template<class T, unsigned N> +struct is_contiguous<FixedList<T, N>> : is_contiguous<T> {}; + +//- Check for FixedList of labels +template<class T, unsigned N> +struct is_contiguous_label<FixedList<T, N>> : is_contiguous_label<T> {}; + +//- Check for FixedList of scalars +template<class T, unsigned N> +struct is_contiguous_scalar<FixedList<T, N>> : is_contiguous_scalar<T> {}; + // * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * * // @@ -465,7 +479,7 @@ struct Hash<FixedList<T, N>> unsigned seed=0 ) const { - if (contiguous<T>()) + if (is_contiguous<T>::value) { return Hasher(obj.cdata(), N*sizeof(T), seed); } diff --git a/src/OpenFOAM/containers/Lists/FixedList/FixedListIO.C b/src/OpenFOAM/containers/Lists/FixedList/FixedListIO.C index 75fd1e8e948ec514c3c0c2b200b8823a23ca9e89..337736e54a4048a898e10372b851999b1b8d54de 100644 --- a/src/OpenFOAM/containers/Lists/FixedList/FixedListIO.C +++ b/src/OpenFOAM/containers/Lists/FixedList/FixedListIO.C @@ -29,7 +29,6 @@ License #include "Istream.H" #include "Ostream.H" #include "token.H" -#include "contiguous.H" // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // @@ -75,7 +74,7 @@ Foam::Ostream& Foam::FixedList<T, N>::writeList // small and we desire a consistent appearance. // Eg, FixedList<T,2> or Pair<T> as "(-1 -1)", not as "2{-1}" - if (os.format() == IOstream::ASCII || !contiguous<T>()) + if (os.format() == IOstream::ASCII || !is_contiguous<T>::value) { if ( @@ -86,7 +85,7 @@ Foam::Ostream& Foam::FixedList<T, N>::writeList && ( Detail::ListPolicy::no_linebreak<T>::value - || contiguous<T>() + || is_contiguous<T>::value ) ) ) @@ -146,7 +145,7 @@ Foam::Istream& Foam::operator>>(Foam::Istream& is, FixedList<T, N>& list) { is.fatalCheck(FUNCTION_NAME); - if (is.format() == IOstream::ASCII || !contiguous<T>()) + if (is.format() == IOstream::ASCII || !is_contiguous<T>::value) { token firstToken(is); diff --git a/src/OpenFOAM/containers/Lists/List/List.C b/src/OpenFOAM/containers/Lists/List/List.C index 8e215e66662a54e93d0e669bce3fc7831468a782..2f746ce028e8419c27907a3c86fee28c2ce337a6 100644 --- a/src/OpenFOAM/containers/Lists/List/List.C +++ b/src/OpenFOAM/containers/Lists/List/List.C @@ -56,7 +56,7 @@ void Foam::List<T>::doResize(const label newSize) if (overlap) { #ifdef USEMEMCPY - if (contiguous<T>()) + if (is_contiguous<T>::value) { memcpy(nv, this->v_, overlap*sizeof(T)); } @@ -189,7 +189,7 @@ Foam::List<T>::List(const UList<T>& a) doAlloc(); #ifdef USEMEMCPY - if (contiguous<T>()) + if (is_contiguous<T>::value) { memcpy(this->v_, a.v_, this->byteSize()); } @@ -217,7 +217,7 @@ Foam::List<T>::List(const List<T>& a) doAlloc(); #ifdef USEMEMCPY - if (contiguous<T>()) + if (is_contiguous<T>::value) { memcpy(this->v_, a.v_, this->byteSize()); } @@ -252,7 +252,7 @@ Foam::List<T>::List(List<T>& a, bool reuse) doAlloc(); #ifdef USEMEMCPY - if (contiguous<T>()) + if (is_contiguous<T>::value) { memcpy(this->v_, a.v_, this->byteSize()); } @@ -456,7 +456,7 @@ void Foam::List<T>::operator=(const UList<T>& a) if (this->size_) { #ifdef USEMEMCPY - if (contiguous<T>()) + if (is_contiguous<T>::value) { memcpy(this->v_, a.v_, this->byteSize()); } diff --git a/src/OpenFOAM/containers/Lists/List/List.H b/src/OpenFOAM/containers/Lists/List/List.H index c28fc1c36dc7743630c133d847da3576780040d8..019919ba57ccad0df195d1222fd7c6cf84c47ee3 100644 --- a/src/OpenFOAM/containers/Lists/List/List.H +++ b/src/OpenFOAM/containers/Lists/List/List.H @@ -353,7 +353,7 @@ struct Hash<List<T>> { inline unsigned operator()(const UList<T>& obj, unsigned seed=0) const { - if (contiguous<T>()) + if (is_contiguous<T>::value) { return Hasher(obj.cdata(), obj.size()*sizeof(T), seed); } diff --git a/src/OpenFOAM/containers/Lists/List/ListIO.C b/src/OpenFOAM/containers/Lists/List/ListIO.C index 123ac8232743682e1b1607f37106d41b6e415f2a..696d90ad8ed067d2c662168afa108e21fcbf8598 100644 --- a/src/OpenFOAM/containers/Lists/List/ListIO.C +++ b/src/OpenFOAM/containers/Lists/List/ListIO.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2018-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -79,7 +79,7 @@ Foam::Istream& Foam::operator>>(Istream& is, List<T>& list) // Read list contents depending on data format - if (is.format() == IOstream::ASCII || !contiguous<T>()) + if (is.format() == IOstream::ASCII || !is_contiguous<T>::value) { // Read beginning of contents const char delimiter = is.readBeginList("List"); diff --git a/src/OpenFOAM/containers/Lists/UList/UList.C b/src/OpenFOAM/containers/Lists/UList/UList.C index ece482a0398b9f8da3f3a3ac20aac1b995f61983..5a4adac85c2622b09f219acab87a50f7737c4c95 100644 --- a/src/OpenFOAM/containers/Lists/UList/UList.C +++ b/src/OpenFOAM/containers/Lists/UList/UList.C @@ -115,7 +115,7 @@ void Foam::UList<T>::deepCopy(const UList<T>& list) else if (len) { #ifdef USEMEMCPY - if (contiguous<T>()) + if (is_contiguous<T>::value) { memcpy(this->v_, list.v_, this->byteSize()); } @@ -180,7 +180,7 @@ void Foam::UList<T>::operator=(const zero) template<class T> std::streamsize Foam::UList<T>::byteSize() const { - if (!contiguous<T>()) + if (!is_contiguous<T>::value) { FatalErrorInFunction << "Cannot return binary size of a list with non-primitive elements" diff --git a/src/OpenFOAM/containers/Lists/UList/UList.H b/src/OpenFOAM/containers/Lists/UList/UList.H index 7ea917510bf057ccbf8f423fe45d27a47e539c52..8d90489f17d1b4d147f00e473400335e4b1efc58 100644 --- a/src/OpenFOAM/containers/Lists/UList/UList.H +++ b/src/OpenFOAM/containers/Lists/UList/UList.H @@ -247,7 +247,7 @@ public: //- Return the binary size in number of characters of the UList //- if the element is a primitive type - // i.e. contiguous<T>() == true. + // i.e. is_contiguous<T>::value == true. // Note that is of type streamsize since used in stream ops std::streamsize byteSize() const; @@ -524,7 +524,7 @@ public: unsigned seed=0 ) const { - if (contiguous<T>()) + if (is_contiguous<T>::value) { return Hasher(obj.cdata(), obj.size()*sizeof(T), seed); } @@ -591,7 +591,7 @@ struct Hash<UList<T>> { inline unsigned operator()(const UList<T>& obj, unsigned seed=0) const { - if (contiguous<T>()) + if (is_contiguous<T>::value) { return Hasher(obj.cdata(), obj.size()*sizeof(T), seed); } diff --git a/src/OpenFOAM/containers/Lists/UList/UListIO.C b/src/OpenFOAM/containers/Lists/UList/UListIO.C index cb12e88808e4d966e1520b3322405204a2131581..1560032ff4d969d3fd363f16cb88e2308ec89beb 100644 --- a/src/OpenFOAM/containers/Lists/UList/UListIO.C +++ b/src/OpenFOAM/containers/Lists/UList/UListIO.C @@ -81,9 +81,9 @@ Foam::Ostream& Foam::UList<T>::writeList const label len = list.size(); // Write list contents depending on data format - if (os.format() == IOstream::ASCII || !contiguous<T>()) + if (os.format() == IOstream::ASCII || !is_contiguous<T>::value) { - if (len > 1 && contiguous<T>() && list.uniform()) + if (len > 1 && is_contiguous<T>::value && list.uniform()) { // Two or more entries, and all entries have identical values. os << len << token::BEGIN_BLOCK << list[0] << token::END_BLOCK; @@ -97,7 +97,7 @@ Foam::Ostream& Foam::UList<T>::writeList && ( Detail::ListPolicy::no_linebreak<T>::value - || contiguous<T>() + || is_contiguous<T>::value ) ) ) @@ -213,7 +213,7 @@ Foam::Istream& Foam::operator>>(Istream& is, UList<T>& list) // Read list contents depending on data format - if (is.format() == IOstream::ASCII || !contiguous<T>()) + if (is.format() == IOstream::ASCII || !is_contiguous<T>::value) { // Read beginning of contents const char delimiter = is.readBeginList("List"); diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/combineGatherScatter.C b/src/OpenFOAM/db/IOstreams/Pstreams/combineGatherScatter.C index 7dbbb492e1988a3dfb9c360d7342a47323576214..2018ad5b8b7019bdcc2adb577b810e1a3c615289 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/combineGatherScatter.C +++ b/src/OpenFOAM/db/IOstreams/Pstreams/combineGatherScatter.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2017 OpenFOAM Foundation @@ -62,7 +62,7 @@ void Foam::Pstream::combineGather { label belowID = myComm.below()[belowI]; - if (contiguous<T>()) + if (is_contiguous<T>::value) { T value; UIPstream::read @@ -114,7 +114,7 @@ void Foam::Pstream::combineGather << " data:" << Value << endl; } - if (contiguous<T>()) + if (is_contiguous<T>::value) { UOPstream::write ( @@ -194,7 +194,7 @@ void Foam::Pstream::combineScatter // Receive from up if (myComm.above() != -1) { - if (contiguous<T>()) + if (is_contiguous<T>::value) { UIPstream::read ( @@ -236,7 +236,7 @@ void Foam::Pstream::combineScatter Pout<< " sending to " << belowID << " data:" << Value << endl; } - if (contiguous<T>()) + if (is_contiguous<T>::value) { UOPstream::write ( @@ -304,7 +304,7 @@ void Foam::Pstream::listCombineGather { label belowID = myComm.below()[belowI]; - if (contiguous<T>()) + if (is_contiguous<T>::value) { List<T> receivedValues(Values.size()); @@ -363,7 +363,7 @@ void Foam::Pstream::listCombineGather << " data:" << Values << endl; } - if (contiguous<T>()) + if (is_contiguous<T>::value) { UOPstream::write ( @@ -443,7 +443,7 @@ void Foam::Pstream::listCombineScatter // Receive from up if (myComm.above() != -1) { - if (contiguous<T>()) + if (is_contiguous<T>::value) { UIPstream::read ( @@ -485,7 +485,7 @@ void Foam::Pstream::listCombineScatter Pout<< " sending to " << belowID << " data:" << Values << endl; } - if (contiguous<T>()) + if (is_contiguous<T>::value) { UOPstream::write ( diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/exchange.C b/src/OpenFOAM/db/IOstreams/Pstreams/exchange.C index 85d5a1376e834224c7825606ba773687fdea6c66..fc78a47669fafbc0b01fd839bc333a95651847e0 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/exchange.C +++ b/src/OpenFOAM/db/IOstreams/Pstreams/exchange.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -192,10 +192,11 @@ void Foam::Pstream::exchange const bool block ) { - if (!contiguous<T>()) + // OR static_assert(is_contiguous<T>::value, "Contiguous data only!") + if (!is_contiguous<T>::value) { FatalErrorInFunction - << "Continuous data only." << sizeof(T) << Foam::abort(FatalError); + << "Contiguous data only." << sizeof(T) << Foam::abort(FatalError); } if (sendBufs.size() != UPstream::nProcs(comm)) diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/gatherScatter.C b/src/OpenFOAM/db/IOstreams/Pstreams/gatherScatter.C index b6f2cac98e664bc125e086c51433b79ebfc3a005..fa9a40bcb3e728116b854693734f36e12045cc6a 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/gatherScatter.C +++ b/src/OpenFOAM/db/IOstreams/Pstreams/gatherScatter.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2017 OpenFOAM Foundation @@ -64,7 +64,7 @@ void Pstream::gather { T value; - if (contiguous<T>()) + if (is_contiguous<T>::value) { UIPstream::read ( @@ -95,7 +95,7 @@ void Pstream::gather // Send up Value if (myComm.above() != -1) { - if (contiguous<T>()) + if (is_contiguous<T>::value) { UOPstream::write ( @@ -161,7 +161,7 @@ void Pstream::scatter // Receive from up if (myComm.above() != -1) { - if (contiguous<T>()) + if (is_contiguous<T>::value) { UIPstream::read ( @@ -192,7 +192,7 @@ void Pstream::scatter // (only when using a tree schedule!) first. forAllReverse(myComm.below(), belowI) { - if (contiguous<T>()) + if (is_contiguous<T>::value) { UOPstream::write ( diff --git a/src/OpenFOAM/db/IOstreams/Pstreams/gatherScatterList.C b/src/OpenFOAM/db/IOstreams/Pstreams/gatherScatterList.C index 328b87aa7a2a3cf29bd565dbf867388266ed849b..63319d7b9e240e2b2c43fcaa63b25f6eb8d7a08d 100644 --- a/src/OpenFOAM/db/IOstreams/Pstreams/gatherScatterList.C +++ b/src/OpenFOAM/db/IOstreams/Pstreams/gatherScatterList.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2015-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2017 OpenFOAM Foundation @@ -75,7 +75,7 @@ void Pstream::gatherList label belowID = myComm.below()[belowI]; const labelList& belowLeaves = comms[belowID].allBelow(); - if (contiguous<T>()) + if (is_contiguous<T>::value) { List<T> receivedValues(belowLeaves.size() + 1); @@ -145,7 +145,7 @@ void Pstream::gatherList << " data:" << Values[UPstream::myProcNo(comm)] << endl; } - if (contiguous<T>()) + if (is_contiguous<T>::value) { List<T> sendingValues(belowLeaves.size() + 1); sendingValues[0] = Values[UPstream::myProcNo(comm)]; @@ -237,7 +237,7 @@ void Pstream::scatterList { const labelList& notBelowLeaves = myComm.allNotBelow(); - if (contiguous<T>()) + if (is_contiguous<T>::value) { List<T> receivedValues(notBelowLeaves.size()); @@ -288,7 +288,7 @@ void Pstream::scatterList label belowID = myComm.below()[belowI]; const labelList& notBelowLeaves = comms[belowID].allNotBelow(); - if (contiguous<T>()) + if (is_contiguous<T>::value) { List<T> sendingValues(notBelowLeaves.size()); diff --git a/src/OpenFOAM/fields/Fields/Field/Field.C b/src/OpenFOAM/fields/Fields/Field/Field.C index e203a6dacc92321c37a7f968e837354e110c1469..19024266d3b9ae59ac354e5e9b79ac52f06211f1 100644 --- a/src/OpenFOAM/fields/Fields/Field/Field.C +++ b/src/OpenFOAM/fields/Fields/Field/Field.C @@ -634,7 +634,7 @@ void Foam::Field<Type>::writeEntry(const word& keyword, Ostream& os) const // The contents are 'uniform' if the list is non-empty // and all entries have identical values. - if (contiguous<Type>() && List<Type>::uniform()) + if (is_contiguous<Type>::value && List<Type>::uniform()) { os << "uniform " << this->first(); } diff --git a/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointConstraint/pointConstraint.H b/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointConstraint/pointConstraint.H index 74822115991a34b8dd0d6535f8f1804b2e5c0e7e..4414afdc336c1aafec33b490413905ac90320a6a 100644 --- a/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointConstraint/pointConstraint.H +++ b/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointConstraint/pointConstraint.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -46,6 +46,7 @@ SourceFiles #include "vector.H" #include "Tuple2.H" #include "transform.H" +#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -95,6 +96,12 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for pointConstraint +template<> struct is_contiguous<pointConstraint> : std::true_type {}; + + //- Reduce operator class combineConstraintsEqOp { @@ -102,14 +109,11 @@ public: inline void operator()(pointConstraint&, const pointConstraint&) const; }; -//- Transformation function -inline pointConstraint transform(const tensor& tt, const pointConstraint& v); -//- contiguous -template<class T> bool contiguous(); -template<> -inline bool contiguous<pointConstraint>() {return true;} +// * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * // +//- Transformation function +inline pointConstraint transform(const tensor& tt, const pointConstraint& v); // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/matrices/Matrix/MatrixIO.C b/src/OpenFOAM/matrices/Matrix/MatrixIO.C index 9b93656bb61c359079c4922c9cf304bccf3007b0..7f363acfe4a20e81eb7a5c3f3f95d2b8b6c3f06a 100644 --- a/src/OpenFOAM/matrices/Matrix/MatrixIO.C +++ b/src/OpenFOAM/matrices/Matrix/MatrixIO.C @@ -68,7 +68,7 @@ bool Foam::Matrix<Form, Type>::readMatrix(Istream& is) const label len = size(); // Read list contents depending on data format - if (is.format() == IOstream::ASCII || !contiguous<Type>()) + if (is.format() == IOstream::ASCII || !is_contiguous<Type>::value) { // Read beginning of contents char listDelimiter = is.readBeginList("Matrix"); @@ -147,19 +147,19 @@ Foam::Ostream& Foam::Matrix<Form, Type>::writeMatrix os << mat.m() << token::SPACE << mat.n(); // Write list contents depending on data format - if (os.format() == IOstream::ASCII || !contiguous<Type>()) + if (os.format() == IOstream::ASCII || !is_contiguous<Type>::value) { if (len) { const Type* v = mat.cdata(); // Can the contents be considered 'uniform' (ie, identical) - if (len > 1 && contiguous<Type>() && mat.uniform()) + if (len > 1 && is_contiguous<Type>::value && mat.uniform()) { // Two or more entries, and all entries have identical values. os << token::BEGIN_BLOCK << v[0] << token::END_BLOCK; } - else if (len < shortLen && contiguous<Type>()) + else if (len < shortLen && is_contiguous<Type>::value) { // Write start contents delimiter os << token::BEGIN_LIST; diff --git a/src/OpenFOAM/meshes/boundBox/boundBox.H b/src/OpenFOAM/meshes/boundBox/boundBox.H index e263bfdd55a57bcb412e896eb662780037dce2a3..87e140512da1c5755821cc9515499faeebef4174 100644 --- a/src/OpenFOAM/meshes/boundBox/boundBox.H +++ b/src/OpenFOAM/meshes/boundBox/boundBox.H @@ -345,11 +345,19 @@ public: }; -//- Data associated with boundBox type are contiguous -template<> -inline bool contiguous<boundBox>() {return contiguous<point>();} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // -// Global Operators +//- Contiguous data for boundBox +template<> struct is_contiguous<boundBox> : is_contiguous<point> {}; + +//- Contiguous scalar data for boundBox +template<> struct is_contiguous_scalar<boundBox> +: + is_contiguous_scalar<point> +{}; + + +// * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * // inline bool operator==(const boundBox& a, const boundBox& b); inline bool operator!=(const boundBox& a, const boundBox& b); diff --git a/src/OpenFOAM/meshes/meshShapes/edge/edge.H b/src/OpenFOAM/meshes/meshShapes/edge/edge.H index 6c81451c16ac8f3ceb6e413b7be24e9c2c1dc609..696c2e815a89b6b340c883d3746b02a0dd5b4157 100644 --- a/src/OpenFOAM/meshes/meshShapes/edge/edge.H +++ b/src/OpenFOAM/meshes/meshShapes/edge/edge.H @@ -306,12 +306,17 @@ public: }; -// * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * * // +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for edge (a pair of labels) +template<> struct is_contiguous<edge> : std::true_type {}; -// Edges are a pair of labels - thus contiguous -template<> inline bool contiguous<edge>() {return true;} +//- Contiguous label data for edge (a pair of labels) +template<> struct is_contiguous_label<edge> : std::true_type {}; +// * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * * // + //- Return reverse of an edge inline edge reverse(const edge& e) { @@ -339,6 +344,7 @@ inline bool operator==(const edge& a, const edge& b); inline bool operator!=(const edge& a, const edge& b); + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/meshes/meshShapes/labelledTri/labelledTri.H b/src/OpenFOAM/meshes/meshShapes/labelledTri/labelledTri.H index 773d5ab2fe73a686e944d4013327eaf91172d64d..0954dedccbacddd9b9b689ab5024bba671be7adf 100644 --- a/src/OpenFOAM/meshes/meshShapes/labelledTri/labelledTri.H +++ b/src/OpenFOAM/meshes/meshShapes/labelledTri/labelledTri.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -45,10 +45,8 @@ SourceFiles namespace Foam { -// Forward declaration of friend functions and operators - +// Forward Declarations class labelledTri; - Istream& operator>>(Istream&, labelledTri&); Ostream& operator<<(Ostream&, const labelledTri&); @@ -126,8 +124,13 @@ public: }; -template<> -inline bool contiguous<labelledTri>() {return true;} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for labelledTri +template<> struct is_contiguous<labelledTri> : std::true_type {}; + +//- Contiguous label data for labelledTri +template<> struct is_contiguous_label<labelledTri> : std::true_type {}; //- Specialization to offset faces, used in ListListOps::combineOffset diff --git a/src/OpenFOAM/meshes/meshShapes/tetCell/tetCell.H b/src/OpenFOAM/meshes/meshShapes/tetCell/tetCell.H index 8aa98ac732e8356bc93d09ad01a2e0a33019793d..4757f51af79ca4c08572182111e0a43c4c0adf81 100644 --- a/src/OpenFOAM/meshes/meshShapes/tetCell/tetCell.H +++ b/src/OpenFOAM/meshes/meshShapes/tetCell/tetCell.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2017 OpenFOAM Foundation @@ -52,10 +52,11 @@ SourceFiles namespace Foam { +// Forward Declarations class cellShape; /*---------------------------------------------------------------------------*\ - class tetCell Declaration + Class tetCell Declaration \*---------------------------------------------------------------------------*/ class tetCell @@ -120,11 +121,13 @@ public: }; -// * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * // +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // -//- Data associated with the type are contiguous -template<> -inline bool contiguous<tetCell>() {return true;} +//- Contiguous data for tetCell +template<> struct is_contiguous<tetCell> : std::true_type {}; + +//- Contiguous label data for tetCell +template<> struct is_contiguous_label<tetCell> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/meshes/meshShapes/triFace/triFace.H b/src/OpenFOAM/meshes/meshShapes/triFace/triFace.H index 87622154331078c24d419428634ad125da3b0d36..72660ea20bee260a2452c7ccc954d00f68d58cb4 100644 --- a/src/OpenFOAM/meshes/meshShapes/triFace/triFace.H +++ b/src/OpenFOAM/meshes/meshShapes/triFace/triFace.H @@ -294,9 +294,14 @@ public: }; -// * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * // +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for triFace +template<> struct is_contiguous<triFace> : std::true_type {}; + +//- Contiguous label data for triFace +template<> struct is_contiguous_label<triFace> : std::true_type {}; -template<> inline bool contiguous<triFace>() {return true;} //- Hash specialization for triFace as a commutative hash value. template<> diff --git a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndexTemplates.C b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndexTemplates.C index 752f32bfbfe45a3a3010be228e4c1c713a89b7f8..ca88085226db7dfe86f8b80be08a663b5a6b2936 100644 --- a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndexTemplates.C +++ b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalIndexTemplates.C @@ -58,7 +58,7 @@ void Foam::globalIndex::gather { SubList<Type> procSlot(allFld, off[i+1]-off[i], off[i]); - if (contiguous<Type>()) + if (is_contiguous<Type>::value) { IPstream::read ( @@ -88,7 +88,7 @@ void Foam::globalIndex::gather { // nonBlocking - if (!contiguous<Type>()) + if (!is_contiguous<Type>::value) { FatalErrorInFunction << "nonBlocking not supported for non-contiguous data" @@ -125,7 +125,7 @@ void Foam::globalIndex::gather || commsType == Pstream::commsTypes::blocking ) { - if (contiguous<Type>()) + if (is_contiguous<Type>::value) { OPstream::write ( @@ -154,7 +154,7 @@ void Foam::globalIndex::gather { // nonBlocking - if (!contiguous<Type>()) + if (!is_contiguous<Type>::value) { FatalErrorInFunction << "nonBlocking not supported for non-contiguous data" @@ -311,7 +311,7 @@ void Foam::globalIndex::scatter off[i] ); - if (contiguous<Type>()) + if (is_contiguous<Type>::value) { OPstream::write ( @@ -341,7 +341,7 @@ void Foam::globalIndex::scatter { // nonBlocking - if (!contiguous<Type>()) + if (!is_contiguous<Type>::value) { FatalErrorInFunction << "nonBlocking not supported for non-contiguous data" @@ -383,7 +383,7 @@ void Foam::globalIndex::scatter || commsType == Pstream::commsTypes::blocking ) { - if (contiguous<Type>()) + if (is_contiguous<Type>::value) { IPstream::read ( @@ -412,7 +412,7 @@ void Foam::globalIndex::scatter { // nonBlocking - if (!contiguous<Type>()) + if (!is_contiguous<Type>::value) { FatalErrorInFunction << "nonBlocking not supported for non-contiguous data" diff --git a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBaseTemplates.C b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBaseTemplates.C index de8475deba34948fcde958aa5fc0854076bcf8d6..6df11aaafa665e8e0dffe633dd7decc04fd77bbd 100644 --- a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBaseTemplates.C +++ b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/mapDistribute/mapDistributeBaseTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2015-2016, 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2015-2017 OpenFOAM Foundation @@ -392,7 +392,7 @@ void Foam::mapDistributeBase::distribute { label nOutstanding = Pstream::nRequests(); - if (!contiguous<T>()) + if (!is_contiguous<T>::value) { PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking, tag); @@ -890,7 +890,7 @@ void Foam::mapDistributeBase::distribute { label nOutstanding = Pstream::nRequests(); - if (!contiguous<T>()) + if (!is_contiguous<T>::value) { PstreamBuffers pBufs(Pstream::commsTypes::nonBlocking, tag); diff --git a/src/OpenFOAM/meshes/primitiveShapes/objectHit/pointIndexHit.H b/src/OpenFOAM/meshes/primitiveShapes/objectHit/pointIndexHit.H index 0550453df7bb6a338b722e981953f46c759b327c..8957bfaebbf57c850d34ae0eaba28857a14794ad 100644 --- a/src/OpenFOAM/meshes/primitiveShapes/objectHit/pointIndexHit.H +++ b/src/OpenFOAM/meshes/primitiveShapes/objectHit/pointIndexHit.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011 OpenFOAM Foundation @@ -43,10 +43,8 @@ namespace Foam typedef PointIndexHit<point> pointIndexHit; - -//- Data associated with pointIndexHit type are contiguous -template<> -inline bool contiguous<pointIndexHit>() {return contiguous<point>();} +//- Contiguous data for pointIndexHit +template<> struct is_contiguous<pointIndexHit> : is_contiguous<point> {}; } diff --git a/src/OpenFOAM/meshes/treeBoundBox/treeBoundBox.H b/src/OpenFOAM/meshes/treeBoundBox/treeBoundBox.H index b106d97fc5580bdac0a1b9023ddcae756a960dc4..421891d9fbe1a670ff9c6b17999df00a6b6f910f 100644 --- a/src/OpenFOAM/meshes/treeBoundBox/treeBoundBox.H +++ b/src/OpenFOAM/meshes/treeBoundBox/treeBoundBox.H @@ -340,12 +340,19 @@ public: }; -//- Data associated with treeBoundBox type are contiguous -template<> -inline bool contiguous<treeBoundBox>() {return contiguous<boundBox>();} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // +//- Contiguous data for treeBoundBox +template<> struct is_contiguous<treeBoundBox> : is_contiguous<boundBox> {}; -// Global Operators +//- Contiguous scalar data for treeBoundBox +template<> struct is_contiguous_scalar<treeBoundBox> +: + is_contiguous_scalar<boundBox> +{}; + + +// * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * // inline bool operator==(const treeBoundBox& a, const treeBoundBox& b); inline bool operator!=(const treeBoundBox& a, const treeBoundBox& b); diff --git a/src/OpenFOAM/primitives/Barycentric/Barycentric.H b/src/OpenFOAM/primitives/Barycentric/Barycentric.H index ae4fe2fb420e8f2a5fadb5bac56df649618bcf7f..11869d392f0ea602bd28cb7a1b308648ca97a86b 100644 --- a/src/OpenFOAM/primitives/Barycentric/Barycentric.H +++ b/src/OpenFOAM/primitives/Barycentric/Barycentric.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2016-2017 OpenFOAM Foundation @@ -38,6 +38,7 @@ SourceFiles #ifndef Barycentric_H #define Barycentric_H +#include "contiguous.H" #include "VectorSpace.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -104,6 +105,21 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Data are contiguous if component type is contiguous +template<class Cmpt> +struct is_contiguous<Barycentric<Cmpt>> : is_contiguous<Cmpt> {}; + +//- Data are contiguous label if component type is label +template<class Cmpt> +struct is_contiguous_label<Barycentric<Cmpt>> : is_contiguous_label<Cmpt> {}; + +//- Data are contiguous scalar if component type is scalar +template<class Cmpt> +struct is_contiguous_scalar<Barycentric<Cmpt>> : is_contiguous_scalar<Cmpt> {}; + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/Barycentric/BarycentricTensor.H b/src/OpenFOAM/primitives/Barycentric/BarycentricTensor.H index e603dc5304aee3fc4b31d2d2aba972eb03fff381..204e2c3732ca0bd9d06a13d3d2ce76c75eabe3a4 100644 --- a/src/OpenFOAM/primitives/Barycentric/BarycentricTensor.H +++ b/src/OpenFOAM/primitives/Barycentric/BarycentricTensor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2017 OpenFOAM Foundation @@ -117,6 +117,27 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Data are contiguous if component type is contiguous +template<class Cmpt> +struct is_contiguous<BarycentricTensor<Cmpt>> : is_contiguous<Cmpt> {}; + +//- Data are contiguous label if component type is label +template<class Cmpt> +struct is_contiguous_label<BarycentricTensor<Cmpt>> +: + is_contiguous_label<Cmpt> +{}; + +//- Data are contiguous scalar if component type is scalar +template<class Cmpt> +struct is_contiguous_scalar<BarycentricTensor<Cmpt>> +: + is_contiguous_scalar<Cmpt> +{}; + + template<class Cmpt> class typeOfTranspose<Cmpt, BarycentricTensor<Cmpt>> { diff --git a/src/OpenFOAM/primitives/Barycentric/barycentric/barycentric.H b/src/OpenFOAM/primitives/Barycentric/barycentric/barycentric.H index 1f0b0aa7bdf87c0d622b723e1d57ab8cab7e0058..4734ac0af17b6e6497c4e690a70a5e007aa95beb 100644 --- a/src/OpenFOAM/primitives/Barycentric/barycentric/barycentric.H +++ b/src/OpenFOAM/primitives/Barycentric/barycentric/barycentric.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2016-2017 OpenFOAM Foundation @@ -36,34 +36,22 @@ Description #include "scalar.H" #include "Barycentric.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { -// Forward declaration of classes +// Forward Declarations class Random; -class cachedRandom; - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // typedef Barycentric<scalar> barycentric; - //- Generate a random barycentric coordinate within the unit tetrahedron barycentric barycentric01(Random& rndGen); - -template<> -inline bool contiguous<barycentric>() -{ - return true; -} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/Barycentric/barycentricTensor/barycentricTensor.H b/src/OpenFOAM/primitives/Barycentric/barycentricTensor/barycentricTensor.H index a4b7e8f5964d2b91dad5f40eb8995a3c4f7d972d..34d8ed754545f5342ea6e642a31122bf89df69ba 100644 --- a/src/OpenFOAM/primitives/Barycentric/barycentricTensor/barycentricTensor.H +++ b/src/OpenFOAM/primitives/Barycentric/barycentricTensor/barycentricTensor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2016-2017 OpenFOAM Foundation @@ -36,7 +36,6 @@ Description #include "scalar.H" #include "BarycentricTensor.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -47,14 +46,6 @@ namespace Foam typedef BarycentricTensor<scalar> barycentricTensor; - -template<> -inline bool contiguous<barycentricTensor>() -{ - return true; -} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/Barycentric2D/Barycentric2D.H b/src/OpenFOAM/primitives/Barycentric2D/Barycentric2D.H index ed29386b97237d55bb15aa9848e063ac32564906..0a50cf982d58ec952625a6d1441f8be6d0feee7e 100644 --- a/src/OpenFOAM/primitives/Barycentric2D/Barycentric2D.H +++ b/src/OpenFOAM/primitives/Barycentric2D/Barycentric2D.H @@ -38,6 +38,7 @@ SourceFiles #ifndef Barycentric2D_H #define Barycentric2D_H +#include "contiguous.H" #include "VectorSpace.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -111,6 +112,21 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Data are contiguous if component type is contiguous +template<class Cmpt> +struct is_contiguous<Barycentric2D<Cmpt>> : is_contiguous<Cmpt> {}; + +//- Data are contiguous label if component type is label +template<class Cmpt> +struct is_contiguous_label<Barycentric2D<Cmpt>> : is_contiguous_label<Cmpt> {}; + +//- Data are contiguous scalar if component type is scalar +template<class Cmpt> +struct is_contiguous_scalar<Barycentric2D<Cmpt>> : is_contiguous_scalar<Cmpt>{}; + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/Barycentric2D/barycentric2D/barycentric2D.H b/src/OpenFOAM/primitives/Barycentric2D/barycentric2D/barycentric2D.H index 762bc76c779a381d7f58ad8bc1d596957c6b5b3c..6dfe6e1c805552b5630b41cbd3864694c50c726d 100644 --- a/src/OpenFOAM/primitives/Barycentric2D/barycentric2D/barycentric2D.H +++ b/src/OpenFOAM/primitives/Barycentric2D/barycentric2D/barycentric2D.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2017 OpenFOAM Foundation @@ -36,34 +36,23 @@ Description #include "scalar.H" #include "Barycentric2D.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { -// Forward declaration of classes +// Forward Declarations class Random; -class cachedRandom; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // typedef Barycentric2D<scalar> barycentric2D; - //- Generate a random barycentric coordinate within the unit triangle barycentric2D barycentric2D01(Random& rndGen); - -template<> -inline bool contiguous<barycentric2D>() -{ - return true; -} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/DiagTensor/DiagTensor.H b/src/OpenFOAM/primitives/DiagTensor/DiagTensor.H index 797b7c68eb86a2802b6d56a56b6ede6e18fba44d..9d8c285c73d1f80d0be818207b8941e82455cebf 100644 --- a/src/OpenFOAM/primitives/DiagTensor/DiagTensor.H +++ b/src/OpenFOAM/primitives/DiagTensor/DiagTensor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -107,13 +107,27 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Data are contiguous if component type is contiguous +template<class Cmpt> +struct is_contiguous<DiagTensor<Cmpt>> : is_contiguous<Cmpt> {}; + +//- Data are contiguous label if component type is label +template<class Cmpt> +struct is_contiguous_label<DiagTensor<Cmpt>> : is_contiguous_label<Cmpt> {}; + +//- Data are contiguous scalar if component type is scalar +template<class Cmpt> +struct is_contiguous_scalar<DiagTensor<Cmpt>> : is_contiguous_scalar<Cmpt> {}; + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// Include inline implementations #include "DiagTensorI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/primitives/DiagTensor/diagTensor/diagTensor.H b/src/OpenFOAM/primitives/DiagTensor/diagTensor/diagTensor.H index 2988c8ce03f74f7ee8616b3a0378a511aefbfe44..5b3362e347256c1519242e8f8982afc75350cbff 100644 --- a/src/OpenFOAM/primitives/DiagTensor/diagTensor/diagTensor.H +++ b/src/OpenFOAM/primitives/DiagTensor/diagTensor/diagTensor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011 OpenFOAM Foundation @@ -38,7 +38,6 @@ SourceFiles #define diagTensor_H #include "DiagTensor.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -49,12 +48,6 @@ namespace Foam typedef DiagTensor<scalar> diagTensor; - -//- Data associated with diagTensor type are contiguous -template<> -inline bool contiguous<diagTensor>() {return true;} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/Pair/Pair.H b/src/OpenFOAM/primitives/Pair/Pair.H index db9589d6aced91b4695dd4652b6f9c954469edb6..fc8a1f01de1fdcccf42c624086ae65a2e24988e6 100644 --- a/src/OpenFOAM/primitives/Pair/Pair.H +++ b/src/OpenFOAM/primitives/Pair/Pair.H @@ -173,6 +173,21 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Pair is contiguous if the type is contiguous +template<class T> +struct is_contiguous<Pair<T>> : is_contiguous<T> {}; + +//- Check for Pair of labels +template<class T> +struct is_contiguous_label<Pair<T>> : is_contiguous_label<T> {}; + +//- Check for Pair of scalars +template<class T> +struct is_contiguous_scalar<Pair<T>> : is_contiguous_scalar<T> {}; + + // * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * * // //- Hashing for Pair data, which uses Hasher for contiguous data and @@ -182,7 +197,7 @@ struct Hash<Pair<T>> { inline unsigned operator()(const Pair<T>& obj, unsigned seed=0) const { - if (contiguous<T>()) + if (is_contiguous<T>::value) { return Hasher(obj.cdata(), sizeof(obj), seed); } @@ -195,8 +210,6 @@ struct Hash<Pair<T>> }; -// * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * * // - //- Return reverse of a Pair template<class T> Pair<T> reverse(const Pair<T>& p) @@ -205,6 +218,8 @@ Pair<T> reverse(const Pair<T>& p) } +// * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * * // + template<class T> bool operator==(const Pair<T>& a, const Pair<T>& b) { diff --git a/src/OpenFOAM/primitives/SphericalTensor/SphericalTensor.H b/src/OpenFOAM/primitives/SphericalTensor/SphericalTensor.H index ff9f8ec959524be82e83b5677e9a5e46cadd54b6..c08b288d093a3181788060712116ef49a9a51df9 100644 --- a/src/OpenFOAM/primitives/SphericalTensor/SphericalTensor.H +++ b/src/OpenFOAM/primitives/SphericalTensor/SphericalTensor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -39,6 +39,7 @@ SourceFiles #ifndef SphericalTensor_H #define SphericalTensor_H +#include "contiguous.H" #include "VectorSpace.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -114,13 +115,33 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Data are contiguous if component type is contiguous +template<class Cmpt> +struct is_contiguous<SphericalTensor<Cmpt>> : is_contiguous<Cmpt> {}; + +//- Data are contiguous label if component type is label +template<class Cmpt> +struct is_contiguous_label<SphericalTensor<Cmpt>> +: + is_contiguous_label<Cmpt> +{}; + +//- Data are contiguous scalar if component type is scalar +template<class Cmpt> +struct is_contiguous_scalar<SphericalTensor<Cmpt>> +: + is_contiguous_scalar<Cmpt> +{}; + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// Include inline implementations #include "SphericalTensorI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/primitives/SphericalTensor/labelSphericalTensor/labelSphericalTensor.H b/src/OpenFOAM/primitives/SphericalTensor/labelSphericalTensor/labelSphericalTensor.H index bc1943f60815bf6e445785a4f0942a0f08f9f55b..b49a671e93bd0915360b52967cd1db55967a4331 100644 --- a/src/OpenFOAM/primitives/SphericalTensor/labelSphericalTensor/labelSphericalTensor.H +++ b/src/OpenFOAM/primitives/SphericalTensor/labelSphericalTensor/labelSphericalTensor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011 OpenFOAM Foundation @@ -38,7 +38,6 @@ SourceFiles #define labelSphericalTensor_H #include "SphericalTensor.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -52,11 +51,6 @@ typedef SphericalTensor<label> labelSphericalTensor; //- Identity labelTensor static const labelSphericalTensor labelI(1); -//- Data associated with labelSphericalTensor type are contiguous -template<> -inline bool contiguous<labelSphericalTensor>() {return true;} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/SphericalTensor/sphericalTensor/sphericalTensor.H b/src/OpenFOAM/primitives/SphericalTensor/sphericalTensor/sphericalTensor.H index f2263af48a1c617fb51863dc8df335907758c483..94b009f244ed99d1f4633455d120a1e18cb27307 100644 --- a/src/OpenFOAM/primitives/SphericalTensor/sphericalTensor/sphericalTensor.H +++ b/src/OpenFOAM/primitives/SphericalTensor/sphericalTensor/sphericalTensor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -39,7 +39,6 @@ SourceFiles #include "SphericalTensor.H" #include "Identity.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -53,11 +52,6 @@ typedef SphericalTensor<scalar> sphericalTensor; static const sphericalTensor oneThirdI(1.0/3.0); static const sphericalTensor twoThirdsI(2.0/3.0); -//- Specify data associated with sphericalTensor type are contiguous -template<> -inline bool contiguous<sphericalTensor>() {return true;} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/SphericalTensor2D/SphericalTensor2D.H b/src/OpenFOAM/primitives/SphericalTensor2D/SphericalTensor2D.H index 73186231088b50a70bdb7f39a0c2259642f2eaa0..0a0dd67321bc20f54b2c0ede7007f6622a8f1028 100644 --- a/src/OpenFOAM/primitives/SphericalTensor2D/SphericalTensor2D.H +++ b/src/OpenFOAM/primitives/SphericalTensor2D/SphericalTensor2D.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -39,6 +39,7 @@ SourceFiles #ifndef SphericalTensor2D_H #define SphericalTensor2D_H +#include "contiguous.H" #include "VectorSpace.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -47,7 +48,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class SphericalTensor2D Declaration + Class SphericalTensor2D Declaration \*---------------------------------------------------------------------------*/ template<class Cmpt> @@ -105,13 +106,33 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Data are contiguous if component type is contiguous +template<class Cmpt> +struct is_contiguous<SphericalTensor2D<Cmpt>> : is_contiguous<Cmpt> {}; + +//- Data are contiguous label if component type is label +template<class Cmpt> +struct is_contiguous_label<SphericalTensor2D<Cmpt>> +: + is_contiguous_label<Cmpt> +{}; + +//- Data are contiguous scalar if component type is scalar +template<class Cmpt> +struct is_contiguous_scalar<SphericalTensor2D<Cmpt>> +: + is_contiguous_scalar<Cmpt> +{}; + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// Include inline implementations #include "SphericalTensor2DI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/primitives/SphericalTensor2D/sphericalTensor2D/sphericalTensor2D.H b/src/OpenFOAM/primitives/SphericalTensor2D/sphericalTensor2D/sphericalTensor2D.H index 30ddd92931d53bffecc985a94a55c82e76bb51ca..dbe441ccd30932970ea4744a974c56f4a0fea162 100644 --- a/src/OpenFOAM/primitives/SphericalTensor2D/sphericalTensor2D/sphericalTensor2D.H +++ b/src/OpenFOAM/primitives/SphericalTensor2D/sphericalTensor2D/sphericalTensor2D.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011 OpenFOAM Foundation @@ -39,7 +39,6 @@ SourceFiles #include "SphericalTensor2D.H" #include "tensor.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -56,12 +55,6 @@ static const sphericalTensor2D I2D(1); static const sphericalTensor2D oneThirdI2D(1.0/3.0); static const sphericalTensor2D twoThirdsI2D(2.0/3.0); - -//- Data associated with sphericalTensor2D type are contiguous -template<> -inline bool contiguous<sphericalTensor2D>() {return true;} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/SymmTensor/SymmTensor.H b/src/OpenFOAM/primitives/SymmTensor/SymmTensor.H index 2fb50c93b96d9f694e8372972e900496fbe9ab92..8d5f5d43bf93cc1ee756b6a0ebbd4b35164d6182 100644 --- a/src/OpenFOAM/primitives/SymmTensor/SymmTensor.H +++ b/src/OpenFOAM/primitives/SymmTensor/SymmTensor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -40,6 +40,7 @@ SourceFiles #ifndef SymmTensor_H #define SymmTensor_H +#include "contiguous.H" #include "VectorSpace.H" #include "SphericalTensor.H" @@ -138,6 +139,21 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Data are contiguous if component type is contiguous +template<class Cmpt> +struct is_contiguous<SymmTensor<Cmpt>> : is_contiguous<Cmpt> {}; + +//- Data are contiguous label if component type is label +template<class Cmpt> +struct is_contiguous_label<SymmTensor<Cmpt>> : is_contiguous_label<Cmpt> {}; + +//- Data are contiguous scalar if component type is scalar +template<class Cmpt> +struct is_contiguous_scalar<SymmTensor<Cmpt>> : is_contiguous_scalar<Cmpt> {}; + + template<class Cmpt> class symmTypeOfRank<Cmpt, 2> { @@ -153,7 +169,6 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// Include inline implementations #include "SymmTensorI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/primitives/SymmTensor/labelSymmTensor/labelSymmTensor.H b/src/OpenFOAM/primitives/SymmTensor/labelSymmTensor/labelSymmTensor.H index 447e36e87ad203a2983479392c9be807befb4fb0..40dd09ce8a585f7d5685d3fb508c2f2c234aa124 100644 --- a/src/OpenFOAM/primitives/SymmTensor/labelSymmTensor/labelSymmTensor.H +++ b/src/OpenFOAM/primitives/SymmTensor/labelSymmTensor/labelSymmTensor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011 OpenFOAM Foundation @@ -38,7 +38,6 @@ SourceFiles #define labelSymmTensor_H #include "SymmTensor.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -49,11 +48,6 @@ namespace Foam typedef SymmTensor<label> labelSymmTensor; -//- Data associated with labelSymmTensor type are contiguous -template<> -inline bool contiguous<labelSymmTensor>() {return true;} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/SymmTensor/symmTensor/symmTensor.H b/src/OpenFOAM/primitives/SymmTensor/symmTensor/symmTensor.H index dcba66e571589ea94ecb8245c70af5d0077160f7..e49a4ea24d52f86ffa2db258101b30ceedb72f2f 100644 --- a/src/OpenFOAM/primitives/SymmTensor/symmTensor/symmTensor.H +++ b/src/OpenFOAM/primitives/SymmTensor/symmTensor/symmTensor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2012 OpenFOAM Foundation @@ -38,7 +38,6 @@ SourceFiles #define symmTensor_H #include "SymmTensor.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -49,11 +48,6 @@ namespace Foam typedef SymmTensor<scalar> symmTensor; -//- Data associated with symmTensor type are contiguous -template<> -inline bool contiguous<symmTensor>() {return true;} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/SymmTensor2D/SymmTensor2D.H b/src/OpenFOAM/primitives/SymmTensor2D/SymmTensor2D.H index c961f6203a569b46545df76009ab125fef6f4b59..f76790d29ae7f218a25b7273c2d6b0c18c7ebead 100644 --- a/src/OpenFOAM/primitives/SymmTensor2D/SymmTensor2D.H +++ b/src/OpenFOAM/primitives/SymmTensor2D/SymmTensor2D.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -40,6 +40,7 @@ SourceFiles #ifndef SymmTensor2D_H #define SymmTensor2D_H +#include "contiguous.H" #include "VectorSpace.H" #include "SphericalTensor2D.H" @@ -130,13 +131,27 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Data are contiguous if component type is contiguous +template<class Cmpt> +struct is_contiguous<SymmTensor2D<Cmpt>> : is_contiguous<Cmpt> {}; + +//- Data are contiguous label if component type is label +template<class Cmpt> +struct is_contiguous_label<SymmTensor2D<Cmpt>> : is_contiguous_label<Cmpt> {}; + +//- Data are contiguous scalar if component type is scalar +template<class Cmpt> +struct is_contiguous_scalar<SymmTensor2D<Cmpt>> : is_contiguous_scalar<Cmpt> {}; + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// Include inline implementations #include "SymmTensor2DI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/primitives/SymmTensor2D/symmTensor2D/symmTensor2D.H b/src/OpenFOAM/primitives/SymmTensor2D/symmTensor2D/symmTensor2D.H index c958137ff8208de23bd4f4a0fad7629a1c163c33..354b0da7596058166d0f85997e92f3ee998cfffa 100644 --- a/src/OpenFOAM/primitives/SymmTensor2D/symmTensor2D/symmTensor2D.H +++ b/src/OpenFOAM/primitives/SymmTensor2D/symmTensor2D/symmTensor2D.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2013 OpenFOAM Foundation @@ -38,7 +38,6 @@ SourceFiles #define symmTensor2D_H #include "SymmTensor2D.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -49,11 +48,6 @@ namespace Foam typedef SymmTensor2D<scalar> symmTensor2D; -//- Data associated with symmTensor2D type are contiguous -template<> -inline bool contiguous<symmTensor2D>() {return true;} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/Tensor/Tensor.H b/src/OpenFOAM/primitives/Tensor/Tensor.H index 21fc9176d051670d9b95c25a3c35ddeb28aee8a6..322e6b31e289762b02b2cf513b0110f81ae039be 100644 --- a/src/OpenFOAM/primitives/Tensor/Tensor.H +++ b/src/OpenFOAM/primitives/Tensor/Tensor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2018-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -272,6 +272,21 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Data are contiguous if component type is contiguous +template<class Cmpt> +struct is_contiguous<Tensor<Cmpt>> : is_contiguous<Cmpt> {}; + +//- Data are contiguous label if component type is label +template<class Cmpt> +struct is_contiguous_label<Tensor<Cmpt>> : is_contiguous_label<Cmpt> {}; + +//- Data are contiguous scalar if component type is scalar +template<class Cmpt> +struct is_contiguous_scalar<Tensor<Cmpt>> : is_contiguous_scalar<Cmpt> {}; + + template<class Cmpt> class typeOfRank<Cmpt, 2> { diff --git a/src/OpenFOAM/primitives/Tensor/doubleTensor/doubleTensor.H b/src/OpenFOAM/primitives/Tensor/doubleTensor/doubleTensor.H index 5276c32974c9590176214da2dbb6480bf0e3f031..e58c4e189af0fe65f62508fc45e8dbd4fc24907b 100644 --- a/src/OpenFOAM/primitives/Tensor/doubleTensor/doubleTensor.H +++ b/src/OpenFOAM/primitives/Tensor/doubleTensor/doubleTensor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2018-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,7 +25,7 @@ Typedef Foam::doubleTensor Description - A Tensor of values with double precision + A Tensor of double precision values SourceFiles doubleTensor.C @@ -36,7 +36,6 @@ SourceFiles #define doubleTensor_H #include "Tensor.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -47,12 +46,6 @@ namespace Foam typedef Tensor<double> doubleTensor; -//- Data associated with doubleTensor type are contiguous -#if !defined(WM_DP) -template<> -inline bool contiguous<doubleTensor>() {return true;} -#endif - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/Tensor/floatTensor/floatTensor.H b/src/OpenFOAM/primitives/Tensor/floatTensor/floatTensor.H index 5240625536ffab1f18ba28395b5eae6a46d8fa41..f92a52e7ece034a7d4efcf4d8e45f8f77f3d3b00 100644 --- a/src/OpenFOAM/primitives/Tensor/floatTensor/floatTensor.H +++ b/src/OpenFOAM/primitives/Tensor/floatTensor/floatTensor.H @@ -27,7 +27,7 @@ Typedef Foam::floatTensor Description - A Tensor of values with float precision + A Tensor of float precision values SourceFiles floatTensor.C @@ -38,7 +38,6 @@ SourceFiles #define floatTensor_H #include "Tensor.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -49,12 +48,6 @@ namespace Foam typedef Tensor<float> floatTensor; -//- Data associated with floatTensor type are contiguous -#if !defined(WM_SP) && !defined(WM_SPDP) -template<> -inline bool contiguous<floatTensor>() {return true;} -#endif - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/Tensor/labelTensor/labelTensor.H b/src/OpenFOAM/primitives/Tensor/labelTensor/labelTensor.H index d431e1c7594140df2f22986a59e0402477aa4cad..fd24b361f1f12c80a7599ea0ecc5c09de0265fd0 100644 --- a/src/OpenFOAM/primitives/Tensor/labelTensor/labelTensor.H +++ b/src/OpenFOAM/primitives/Tensor/labelTensor/labelTensor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011 OpenFOAM Foundation @@ -27,7 +27,7 @@ Typedef Foam::labelTensor Description - A Tensor of values using label (integer) representation. + A Tensor of label (integer) values SourceFiles labelTensor.C @@ -38,7 +38,6 @@ SourceFiles #define labelTensor_H #include "Tensor.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -49,11 +48,6 @@ namespace Foam typedef Tensor<label> labelTensor; -//- Specify data associated with labelTensor type are contiguous -template<> -inline bool contiguous<labelTensor>() {return true;} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/Tensor/tensor/tensor.H b/src/OpenFOAM/primitives/Tensor/tensor/tensor.H index 7d2244caeef32c1ef50a18cd47e6ca57a84b8bd2..3ca0a16255a3e5eceb540ed85be3c661eb204da2 100644 --- a/src/OpenFOAM/primitives/Tensor/tensor/tensor.H +++ b/src/OpenFOAM/primitives/Tensor/tensor/tensor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2014 OpenFOAM Foundation @@ -41,7 +41,6 @@ SourceFiles #include "vector.H" #include "sphericalTensor.H" #include "symmTensor.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -74,10 +73,6 @@ vector eigenVector tensor eigenVectors(const symmTensor& T, const vector& lambdas); tensor eigenVectors(const symmTensor& T); -//- Data associated with tensor type are contiguous -template<> -inline bool contiguous<tensor>() {return true;} - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/primitives/Tensor2D/Tensor2D.H b/src/OpenFOAM/primitives/Tensor2D/Tensor2D.H index 332d74e9603fc803d0ff75368bbf7b92d90ef3f8..45d8f132fe578cbf7780a3fc9a77cb4fdf97cc89 100644 --- a/src/OpenFOAM/primitives/Tensor2D/Tensor2D.H +++ b/src/OpenFOAM/primitives/Tensor2D/Tensor2D.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2018-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -48,8 +48,8 @@ SourceFiles namespace Foam { -template<class Cmpt> -class SymmTensor2D; +// Forward Declarations +template<class Cmpt> class SymmTensor2D; /*---------------------------------------------------------------------------*\ Class Tensor2D Declaration @@ -172,13 +172,27 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Data are contiguous if component type is contiguous +template<class Cmpt> +struct is_contiguous<Tensor2D<Cmpt>> : is_contiguous<Cmpt> {}; + +//- Data are contiguous label if component type is label +template<class Cmpt> +struct is_contiguous_label<Tensor2D<Cmpt>> : is_contiguous_label<Cmpt> {}; + +//- Data are contiguous scalar if component type is scalar +template<class Cmpt> +struct is_contiguous_scalar<Tensor2D<Cmpt>> : is_contiguous_scalar<Cmpt> {}; + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// Include inline implementations #include "Tensor2DI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.H b/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.H index 56176ce9ec72b6e77c15b539254d20a9cd2ff4f0..e844974d8e1f4d732738b0c237860d272acacb2b 100644 --- a/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.H +++ b/src/OpenFOAM/primitives/Tensor2D/tensor2D/tensor2D.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2017 OpenFOAM Foundation @@ -27,7 +27,7 @@ Typedef Foam::tensor2D Description - Tensor2D or scalars. + Tensor2D of scalars. SourceFiles tensor2D.C @@ -39,7 +39,6 @@ SourceFiles #include "Tensor2D.H" #include "vector2D.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -60,10 +59,6 @@ vector2D eigenVector tensor2D eigenVectors(const tensor2D& t, const vector2D& lambdas); tensor2D eigenVectors(const tensor2D& t); -//- Data associated with tensor2D type are contiguous -template<> -inline bool contiguous<tensor2D>() {return true;} - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/primitives/Vector/Vector.H b/src/OpenFOAM/primitives/Vector/Vector.H index bccc1bd25f810e8b8e207f187fc502b3af9ddd40..ea9fb027f3e969eab164d3f4024c8dd2716341a4 100644 --- a/src/OpenFOAM/primitives/Vector/Vector.H +++ b/src/OpenFOAM/primitives/Vector/Vector.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2018-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -43,6 +43,7 @@ SourceFiles #ifndef Vector_H #define Vector_H +#include "contiguous.H" #include "VectorSpace.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -132,6 +133,21 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Data are contiguous if component type is contiguous +template<class Cmpt> +struct is_contiguous<Vector<Cmpt>> : is_contiguous<Cmpt> {}; + +//- Data are contiguous label if component type is label +template<class Cmpt> +struct is_contiguous_label<Vector<Cmpt>> : is_contiguous_label<Cmpt> {}; + +//- Data are contiguous scalar if component type is scalar +template<class Cmpt> +struct is_contiguous_scalar<Vector<Cmpt>> : is_contiguous_scalar<Cmpt> {}; + + template<class Cmpt> class typeOfRank<Cmpt, 1> { diff --git a/src/OpenFOAM/primitives/Vector/doubleVector/doubleVector.H b/src/OpenFOAM/primitives/Vector/doubleVector/doubleVector.H index e50e1f60923f9d4d14e3faddb41dd1d958da0f6d..7397938e276b969fd6f3356a92bc7a927a339a60 100644 --- a/src/OpenFOAM/primitives/Vector/doubleVector/doubleVector.H +++ b/src/OpenFOAM/primitives/Vector/doubleVector/doubleVector.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2018-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,7 +36,6 @@ SourceFiles #define doubleVector_H #include "Vector.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -47,12 +46,6 @@ namespace Foam typedef Vector<double> doubleVector; -//- Data associated with doubleVector type are contiguous -#if !defined(WM_DP) -template<> -inline bool contiguous<doubleVector>() {return true;} -#endif - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/Vector/floatVector/floatVector.H b/src/OpenFOAM/primitives/Vector/floatVector/floatVector.H index 5c702f6d65d14bbc3e37377681c0be2aa4af9b16..f01c97531335f39b11cd4d392d47ad6f033848aa 100644 --- a/src/OpenFOAM/primitives/Vector/floatVector/floatVector.H +++ b/src/OpenFOAM/primitives/Vector/floatVector/floatVector.H @@ -2,10 +2,8 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2011-2019 OpenCFD Ltd. \\/ M anipulation | -------------------------------------------------------------------------------- - | Copyright (C) 2011 OpenFOAM Foundation ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -38,7 +36,6 @@ SourceFiles #define floatVector_H #include "Vector.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -49,12 +46,6 @@ namespace Foam typedef Vector<float> floatVector; -//- Data associated with floatVector type are contiguous -#if !defined(WM_SP) && !defined(WM_SPDP) -template<> -inline bool contiguous<floatVector>() {return true;} -#endif - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/Vector/labelVector/labelVector.H b/src/OpenFOAM/primitives/Vector/labelVector/labelVector.H index 4e1e95254095c5695f8225c0e2398264ec6082b7..095670df0411876aa74c237fde03793790aefcb0 100644 --- a/src/OpenFOAM/primitives/Vector/labelVector/labelVector.H +++ b/src/OpenFOAM/primitives/Vector/labelVector/labelVector.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011 OpenFOAM Foundation @@ -39,7 +39,6 @@ SourceFiles #include "label.H" #include "Vector.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -50,12 +49,6 @@ namespace Foam typedef Vector<label> labelVector; - -//- Data associated with labelVector type are contiguous -template<> -inline bool contiguous<labelVector>() {return true;} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/Vector/vector/vector.H b/src/OpenFOAM/primitives/Vector/vector/vector.H index 622560fa641a6e2c9de93f454f37321f638fed07..7889fd50d2f96415c0b40f05ad5b088703e37281 100644 --- a/src/OpenFOAM/primitives/Vector/vector/vector.H +++ b/src/OpenFOAM/primitives/Vector/vector/vector.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011 OpenFOAM Foundation @@ -39,7 +39,6 @@ SourceFiles #include "scalar.H" #include "Vector.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -50,11 +49,7 @@ namespace Foam typedef Vector<scalar> vector; - -//- Data associated with vector type are contiguous -template<> -inline bool contiguous<vector>() {return true;} - +// Traits template<class Type> class flux diff --git a/src/OpenFOAM/primitives/Vector2D/Vector2D.H b/src/OpenFOAM/primitives/Vector2D/Vector2D.H index ed69c95ed7dac57efa9af4c97c2099dc5fa76e6a..44ccff9071fbcf9124377bd36c6706ebefc2a64b 100644 --- a/src/OpenFOAM/primitives/Vector2D/Vector2D.H +++ b/src/OpenFOAM/primitives/Vector2D/Vector2D.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2018-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -39,6 +39,7 @@ SourceFiles #ifndef Vector2D_H #define Vector2D_H +#include "contiguous.H" #include "VectorSpace.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -115,13 +116,27 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Data are contiguous if component type is contiguous +template<class Cmpt> +struct is_contiguous<Vector2D<Cmpt>> : is_contiguous<Cmpt> {}; + +//- Data are contiguous label if component type is label +template<class Cmpt> +struct is_contiguous_label<Vector2D<Cmpt>> : is_contiguous_label<Cmpt> {}; + +//- Data are contiguous scalar if component type is scalar +template<class Cmpt> +struct is_contiguous_scalar<Vector2D<Cmpt>> : is_contiguous_scalar<Cmpt> {}; + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// Include inline implementations #include "Vector2DI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/primitives/Vector2D/labelVector2D/labelVector2D.H b/src/OpenFOAM/primitives/Vector2D/labelVector2D/labelVector2D.H index 5c558f9adeb7ba5b4dd5eb47d1694104e2be28e1..c8d094642f11d8b7f614ef1b05a15e3e5ddc2022 100644 --- a/src/OpenFOAM/primitives/Vector2D/labelVector2D/labelVector2D.H +++ b/src/OpenFOAM/primitives/Vector2D/labelVector2D/labelVector2D.H @@ -37,7 +37,6 @@ SourceFiles #include "label.H" #include "Vector2D.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -48,12 +47,6 @@ namespace Foam typedef Vector2D<label> labelVector2D; - -//- Data associated with labelVector2D type are contiguous -template<> -inline bool contiguous<labelVector2D>() {return true;} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/Vector2D/vector2D/vector2D.H b/src/OpenFOAM/primitives/Vector2D/vector2D/vector2D.H index cd7d2fa33cc2751a70b49bf1f386639996055200..c64db4a3ea26b0b7ed5b188b7edda20e262176a5 100644 --- a/src/OpenFOAM/primitives/Vector2D/vector2D/vector2D.H +++ b/src/OpenFOAM/primitives/Vector2D/vector2D/vector2D.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011 OpenFOAM Foundation @@ -39,7 +39,6 @@ SourceFiles #include "scalar.H" #include "Vector2D.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -50,12 +49,6 @@ namespace Foam typedef Vector2D<scalar> vector2D; - -//- Data associated with vector2D type are contiguous -template<> -inline bool contiguous<vector2D>() {return true;} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/complex/complex.H b/src/OpenFOAM/primitives/complex/complex.H index 4702d9f7dab3fda1265afa3b5722d08ddc23f492..88bdd871081882fa8956fab627beace5f24b5729 100644 --- a/src/OpenFOAM/primitives/complex/complex.H +++ b/src/OpenFOAM/primitives/complex/complex.H @@ -38,12 +38,12 @@ SourceFiles #ifndef complex_H #define complex_H -#include <complex> -#include <type_traits> #include "scalar.H" #include "word.H" #include "zero.H" #include "contiguous.H" +#include <complex> +#include <type_traits> // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -344,6 +344,15 @@ namespace Detail } // End namespace Detail +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for complex +template<> struct is_contiguous<complex> : std::true_type {}; + +//- Contiguous scalar data for complex +template<> struct is_contiguous_scalar<complex> : std::true_type {}; + + // * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * // Istream& operator>>(Istream& is, complex& c); @@ -358,10 +367,6 @@ inline complex operator~(const complex& c); //- Return string representation of complex word name(const complex& c); -//- Data associated with complex type are contiguous -template<> -inline bool contiguous<complex>() {return true;} - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/primitives/contiguous/contiguous.H b/src/OpenFOAM/primitives/contiguous/contiguous.H index b8c1c55da0bd581f4bddb06269748ec336586bd4..04e189c221a7203d7b33cf84f7c4c9d4da8d87f6 100644 --- a/src/OpenFOAM/primitives/contiguous/contiguous.H +++ b/src/OpenFOAM/primitives/contiguous/contiguous.H @@ -23,21 +23,46 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. -InClass - Foam::contiguous +Class + Foam::is_contiguous Description - Template function to specify if the data of a type are contiguous. + A template class to specify that a data type can be considered as being + contiguous in memory. - The default function specifies that data are not contiguous. - This is specialised for the types (eg, primitives) with contiguous data. + Normally only integral and floating-point types can be considered + contiguous, but some other types (eg, FixedList, Pair, Vector etc) + consisting purely of these fundamental types can be considered + as having a contiguous memory layout as well. + +Note + In OpenFOAM 1906 and earlier, the contiguous trait was handled + by templated \c contiguous global functions. + + While possible to mark this as deleted, this does not detect or + prevent specializations. Thus omit the usual housekeeping. + +Class + Foam::is_contiguous_label + +Description + A template class to specify if a data type is composed solely of + Foam::label elements. + +Class + Foam::is_contiguous_scalar + +Description + A template class to specify if a data type is composed solely of + Foam::scalar elements. \*---------------------------------------------------------------------------*/ #ifndef contiguous_H #define contiguous_H -#include "int.H" +#include "scalar.H" +#include "label.H" #include <type_traits> // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -45,87 +70,30 @@ Description namespace Foam { -// Forward Declarations -template<class T, unsigned N> class FixedList; -template<class T> class Pair; - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -//- Default definition: (integral | floating-point) are contiguous +// Base definition for (integral | floating-point) as contiguous template<class T> -inline bool contiguous() -{ - return std::is_arithmetic<T>::value; -} - -// -// Fixed size containers of (integral | floating-point) are contiguous -// - -template<> -inline bool contiguous<FixedList<bool, 2>>() {return true;} -template<> -inline bool contiguous<Pair<bool>>() {return true;} - -template<> -inline bool contiguous<FixedList<char, 2>>() {return true;} -template<> -inline bool contiguous<Pair<char>>() {return true;} - -template<> -inline bool contiguous<FixedList<int8_t, 2>>() {return true;} -template<> -inline bool contiguous<Pair<int8_t>>() {return true;} - -template<> -inline bool contiguous<FixedList<uint8_t, 2>>() {return true;} -template<> -inline bool contiguous<Pair<uint8_t>>() {return true;} - -template<> -inline bool contiguous<FixedList<int16_t, 2>>() {return true;} -template<> -inline bool contiguous<Pair<int16_t>>() {return true;} - -template<> -inline bool contiguous<FixedList<uint16_t, 2>>() {return true;} -template<> -inline bool contiguous<Pair<uint16_t>>() {return true;} - -template<> -inline bool contiguous<FixedList<int32_t, 2>>() {return true;} -template<> -inline bool contiguous<Pair<int32_t>>() {return true;} - -template<> -inline bool contiguous<FixedList<uint32_t, 2>>() {return true;} -template<> -inline bool contiguous<Pair<uint32_t>>() {return true;} - -template<> -inline bool contiguous<FixedList<int64_t, 2>>() {return true;} -template<> -inline bool contiguous<Pair<int64_t>>() {return true;} - -template<> -inline bool contiguous<FixedList<uint64_t, 2>>() {return true;} -template<> -inline bool contiguous<Pair<uint64_t>>() {return true;} - -template<> -inline bool contiguous<FixedList<float, 2>>() {return true;} -template<> -inline bool contiguous<Pair<float>>() {return true;} - -template<> -inline bool contiguous<FixedList<double, 2>>() {return true;} -template<> -inline bool contiguous<Pair<double>>() {return true;} - -template<> -inline bool contiguous<FixedList<long double, 2>>() {return true;} -template<> -inline bool contiguous<Pair<long double>>() {return true;} +struct is_contiguous +: + std::is_arithmetic<T> +{}; + + +// Base definition for 'label' +template<class T> +struct is_contiguous_label +: + std::is_same<T, label> +{}; + + +// Base definition for 'scalar' +template<class T> +struct is_contiguous_scalar +: + std::is_same<T, scalar> +{}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/primitives/globalIndexAndTransform/vectorTensorTransform/vectorTensorTransform.H b/src/OpenFOAM/primitives/globalIndexAndTransform/vectorTensorTransform/vectorTensorTransform.H index 605ee406198df4b5d7009abe7dacc8d4c851cba4..75d045a9aad3750f64d87e4c864e1bdc372026b1 100644 --- a/src/OpenFOAM/primitives/globalIndexAndTransform/vectorTensorTransform/vectorTensorTransform.H +++ b/src/OpenFOAM/primitives/globalIndexAndTransform/vectorTensorTransform/vectorTensorTransform.H @@ -50,7 +50,7 @@ SourceFiles namespace Foam { -// Forward declaration of friend functions and operators +// Forward Declarations class vectorTensorTransform; Istream& operator>>(Istream& is, vectorTensorTransform&); @@ -172,25 +172,27 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for vectorTensorTransform +template<> struct is_contiguous<vectorTensorTransform> : std::true_type {}; + + // * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * // //- Return the inverse of the given vectorTensorTransform inline vectorTensorTransform inv(const vectorTensorTransform& tr); - //- Return a string representation of a vectorTensorTransform word name(const vectorTensorTransform&); - -//- Data associated with vectorTensorTransform type are contiguous -template<> -inline bool contiguous<vectorTensorTransform>() {return true;} - //- Template specialisations template<> tmp<Field<bool>> vectorTensorTransform::transform(const Field<bool>&) const; + template<> tmp<Field<label>> vectorTensorTransform::transform(const Field<label>&) const; + template<> tmp<Field<scalar>> vectorTensorTransform::transform(const Field<scalar>&) const; diff --git a/src/OpenFOAM/primitives/quaternion/quaternion.H b/src/OpenFOAM/primitives/quaternion/quaternion.H index b7b69bbc836e1f4107d449ab2504117dace6e4a3..ca624e305ded82739ab0fb5ee336fcee67593b50 100644 --- a/src/OpenFOAM/primitives/quaternion/quaternion.H +++ b/src/OpenFOAM/primitives/quaternion/quaternion.H @@ -42,7 +42,6 @@ SourceFiles #include "vector.H" #include "tensor.H" #include "word.H" -#include "contiguous.H" #include "Enum.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -239,6 +238,15 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for quaternion +template<> struct is_contiguous<quaternion> : std::true_type {}; + +//- Contiguous scalar data for quaternion +template<> struct is_contiguous_scalar<quaternion> : std::true_type {}; + + // * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * // inline scalar magSqr(const quaternion& q); @@ -280,10 +288,6 @@ quaternion pow(const quaternion& q, const label power); //- Power of a quaternion quaternion pow(const quaternion& q, const scalar power); -//- Data associated with quaternion type are contiguous -template<> -inline bool contiguous<quaternion>() {return true;} - // * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/primitives/septernion/septernion.H b/src/OpenFOAM/primitives/septernion/septernion.H index da333c142dfaef57f4f3b4ea69a8170310b887e4..d44fb1ed5abba77221d903c6fd4281a61e85417c 100644 --- a/src/OpenFOAM/primitives/septernion/septernion.H +++ b/src/OpenFOAM/primitives/septernion/septernion.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2004-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -47,15 +47,13 @@ SourceFiles #include "quaternion.H" #include "spatialTransform.H" #include "word.H" -#include "contiguous.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { -// Forward declaration of friend functions and operators - +// Forward Declarations class septernion; Istream& operator>>(Istream& is, septernion&); Ostream& operator<<(Ostream& os, const septernion& C); @@ -67,7 +65,7 @@ Ostream& operator<<(Ostream& os, const septernion& C); class septernion { - // private data + // Private Data //- Translation vector vector t_; @@ -154,6 +152,15 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for septernion +template<> struct is_contiguous<septernion> : std::true_type {}; + +//- Contiguous scalar data for septernion +template<> struct is_contiguous_scalar<septernion> : std::true_type {}; + + // * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * // //- Return the inverse of the given septernion @@ -177,10 +184,6 @@ septernion average const UList<scalar> w ); -//- Data associated with septernion type are contiguous -template<> -inline bool contiguous<septernion>() {return true;} - // * * * * * * * * * * * * * * * Global Operators * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/primitives/spatialVectorAlgebra/CompactSpatialTensor/CompactSpatialTensor.H b/src/OpenFOAM/primitives/spatialVectorAlgebra/CompactSpatialTensor/CompactSpatialTensor.H index 75c5e00a0029e4ba9b9c10aa9f97d67bfc1020d4..3de1dfb9ab586b6d28834960c05e996113345f14 100644 --- a/src/OpenFOAM/primitives/spatialVectorAlgebra/CompactSpatialTensor/CompactSpatialTensor.H +++ b/src/OpenFOAM/primitives/spatialVectorAlgebra/CompactSpatialTensor/CompactSpatialTensor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2016-2017 OpenFOAM Foundation @@ -98,6 +98,27 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Data are contiguous if component type is contiguous +template<class Cmpt> +struct is_contiguous<CompactSpatialTensor<Cmpt>> : is_contiguous<Cmpt> {}; + +//- Data are contiguous label if component type is label +template<class Cmpt> +struct is_contiguous_label<CompactSpatialTensor<Cmpt>> +: + is_contiguous_label<Cmpt> +{}; + +//- Data are contiguous scalar if component type is scalar +template<class Cmpt> +struct is_contiguous_scalar<CompactSpatialTensor<Cmpt>> +: + is_contiguous_scalar<Cmpt> +{}; + + template<class Cmpt> class typeOfInnerProduct<Cmpt, CompactSpatialTensor<Cmpt>, Tensor<Cmpt>> { diff --git a/src/OpenFOAM/primitives/spatialVectorAlgebra/CompactSpatialTensor/compactSpatialTensor/compactSpatialTensor.H b/src/OpenFOAM/primitives/spatialVectorAlgebra/CompactSpatialTensor/compactSpatialTensor/compactSpatialTensor.H index 0d28d0cdf8a881ec798f4553d413d5fe6a362260..0bccd16f5acc4fcd8c40c9184c91f82d765cd470 100644 --- a/src/OpenFOAM/primitives/spatialVectorAlgebra/CompactSpatialTensor/compactSpatialTensor/compactSpatialTensor.H +++ b/src/OpenFOAM/primitives/spatialVectorAlgebra/CompactSpatialTensor/compactSpatialTensor/compactSpatialTensor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2016 OpenFOAM Foundation @@ -48,11 +48,6 @@ namespace Foam typedef CompactSpatialTensor<scalar> compactSpatialTensor; -//- Data associated with compactSpatialTensor type are contiguous -template<> -inline bool contiguous<compactSpatialTensor>() {return true;} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/spatialVectorAlgebra/CompactSpatialTensorT/CompactSpatialTensorT.H b/src/OpenFOAM/primitives/spatialVectorAlgebra/CompactSpatialTensorT/CompactSpatialTensorT.H index 1a8354aa7585b65cfc27f294bc04b91ab573236c..209fa96f243358620eb6f31d8ec74f5e3dfe3737 100644 --- a/src/OpenFOAM/primitives/spatialVectorAlgebra/CompactSpatialTensorT/CompactSpatialTensorT.H +++ b/src/OpenFOAM/primitives/spatialVectorAlgebra/CompactSpatialTensorT/CompactSpatialTensorT.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2016 OpenFOAM Foundation @@ -97,6 +97,27 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Data are contiguous if component type is contiguous +template<class Cmpt> +struct is_contiguous<CompactSpatialTensorT<Cmpt>> : is_contiguous<Cmpt> {}; + +//- Data are contiguous label if component type is label +template<class Cmpt> +struct is_contiguous_label<CompactSpatialTensorT<Cmpt>> +: + is_contiguous_label<Cmpt> +{}; + +//- Data are contiguous scalar if component type is scalar +template<class Cmpt> +struct is_contiguous_scalar<CompactSpatialTensorT<Cmpt>> +: + is_contiguous_scalar<Cmpt> +{}; + + template<class Cmpt> class typeOfTranspose<Cmpt, CompactSpatialTensor<Cmpt>> { diff --git a/src/OpenFOAM/primitives/spatialVectorAlgebra/SpatialTensor/SpatialTensor.H b/src/OpenFOAM/primitives/spatialVectorAlgebra/SpatialTensor/SpatialTensor.H index 923a05bd611bb49af341e02c3bb5791094a0f09c..8b7b1b860f427815ea1c900ca9396786804e7874 100644 --- a/src/OpenFOAM/primitives/spatialVectorAlgebra/SpatialTensor/SpatialTensor.H +++ b/src/OpenFOAM/primitives/spatialVectorAlgebra/SpatialTensor/SpatialTensor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2016 OpenFOAM Foundation @@ -128,6 +128,27 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Data are contiguous if component type is contiguous +template<class Cmpt> +struct is_contiguous<SpatialTensor<Cmpt>> : is_contiguous<Cmpt> {}; + +//- Data are contiguous label if component type is label +template<class Cmpt> +struct is_contiguous_label<SpatialTensor<Cmpt>> +: + is_contiguous_label<Cmpt> +{}; + +//- Data are contiguous scalar if component type is scalar +template<class Cmpt> +struct is_contiguous_scalar<SpatialTensor<Cmpt>> +: + is_contiguous_scalar<Cmpt> +{}; + + template<class Cmpt> class typeOfTranspose<Cmpt, SpatialTensor<Cmpt>> { @@ -170,7 +191,6 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// Include inline implementations #include "SpatialTensorI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/primitives/spatialVectorAlgebra/SpatialTensor/spatialTensor/spatialTensor.H b/src/OpenFOAM/primitives/spatialVectorAlgebra/SpatialTensor/spatialTensor/spatialTensor.H index 9b96f76a5109851f33df5897aefa03302df1f379..279ed70329a5e8aee01908eb2910057e98d38b67 100644 --- a/src/OpenFOAM/primitives/spatialVectorAlgebra/SpatialTensor/spatialTensor/spatialTensor.H +++ b/src/OpenFOAM/primitives/spatialVectorAlgebra/SpatialTensor/spatialTensor/spatialTensor.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2016 OpenFOAM Foundation @@ -48,11 +48,6 @@ namespace Foam typedef SpatialTensor<scalar> spatialTensor; -//- Data associated with spatialTensor type are contiguous -template<> -inline bool contiguous<spatialTensor>() {return true;} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/spatialVectorAlgebra/SpatialVector/SpatialVector.H b/src/OpenFOAM/primitives/spatialVectorAlgebra/SpatialVector/SpatialVector.H index feaaf56491695b2cdc3334182be846d2361fcf9c..b4fa977c8b1212257156dca7a19f18b19951b0f8 100644 --- a/src/OpenFOAM/primitives/spatialVectorAlgebra/SpatialVector/SpatialVector.H +++ b/src/OpenFOAM/primitives/spatialVectorAlgebra/SpatialVector/SpatialVector.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2016 OpenFOAM Foundation @@ -158,6 +158,27 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Data are contiguous if component type is contiguous +template<class Cmpt> +struct is_contiguous<SpatialVector<Cmpt>> : is_contiguous<Cmpt> {}; + +//- Data are contiguous label if component type is label +template<class Cmpt> +struct is_contiguous_label<SpatialVector<Cmpt>> +: + is_contiguous_label<Cmpt> +{}; + +//- Data are contiguous scalar if component type is scalar +template<class Cmpt> +struct is_contiguous_scalar<SpatialVector<Cmpt>> +: + is_contiguous_scalar<Cmpt> +{}; + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/OpenFOAM/primitives/spatialVectorAlgebra/SpatialVector/spatialVector/spatialVector.H b/src/OpenFOAM/primitives/spatialVectorAlgebra/SpatialVector/spatialVector/spatialVector.H index c28807b2e02622f8e65fd28a8ad5bb4e96b0fdea..ca59d3cf96fdc15d1e47f92ae2609d54b8bc5fb4 100644 --- a/src/OpenFOAM/primitives/spatialVectorAlgebra/SpatialVector/spatialVector/spatialVector.H +++ b/src/OpenFOAM/primitives/spatialVectorAlgebra/SpatialVector/spatialVector/spatialVector.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2016 OpenFOAM Foundation @@ -48,10 +48,6 @@ namespace Foam typedef SpatialVector<scalar> spatialVector; -//- Data associated with spatialVector type are contiguous -template<> -inline bool contiguous<spatialVector>() {return true;} - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/OpenFOAM/primitives/triad/triad.H b/src/OpenFOAM/primitives/triad/triad.H index 21e062d858d319bd1116a29cf23e898c3845ab89..4f7bb6e9cfce68f5a87c9bbe7ee5483e18a846ef 100644 --- a/src/OpenFOAM/primitives/triad/triad.H +++ b/src/OpenFOAM/primitives/triad/triad.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2018-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2012-2016 OpenFOAM Foundation @@ -53,13 +53,12 @@ namespace Foam // Forward declarations class triad; +class quaternion; class Istream; class Ostream; Istream& operator>>(Istream&, triad&); Ostream& operator<<(Ostream&, const triad&); -class quaternion; - /*---------------------------------------------------------------------------*\ Class triad Declaration \*---------------------------------------------------------------------------*/ @@ -165,15 +164,20 @@ public: }; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for triad +template<> struct is_contiguous<triad> : std::true_type {}; + +//- Contiguous 'scalar' data for triad +template<> struct is_contiguous_scalar<triad> : std::true_type {}; + + // * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * // //- Return a quantity of the difference between two triads scalar diff(const triad& A, const triad& B); -//- Data associated with quaternion type are contiguous -template<> -inline bool contiguous<triad>() {return true;} - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/smoothDelta/smoothDelta.H b/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/smoothDelta/smoothDelta.H index 81956b51545bf92b9d60b42336670d07377e6938..8f2ef00f1fe8fb5c930046d007ce1482c133d120 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/smoothDelta/smoothDelta.H +++ b/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/smoothDelta/smoothDelta.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2004-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -271,8 +271,7 @@ public: //- Destructor - virtual ~smoothDelta() - {} + virtual ~smoothDelta() = default; // Member Functions @@ -289,14 +288,13 @@ public: } // End namespace LESModels -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -//- Data associated with deltaData type are contiguous +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for deltaData template<> -inline bool contiguous<LESModels::smoothDelta::deltaData>() -{ - return true; -} +struct is_contiguous<LESModels::smoothDelta::deltaData> : std::true_type {}; + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/dynamicMesh/meshCut/directions/directionInfo/directionInfo.H b/src/dynamicMesh/meshCut/directions/directionInfo/directionInfo.H index 1892a3a5f2a549ad7f3b5c6c2392b256bd40fa04..1ce342adc2439b24e99cd7e9bfd28f2880a66da1 100644 --- a/src/dynamicMesh/meshCut/directions/directionInfo/directionInfo.H +++ b/src/dynamicMesh/meshCut/directions/directionInfo/directionInfo.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -64,16 +64,14 @@ SourceFiles namespace Foam { + +// Forward Declarations class polyPatch; class polyMesh; class primitiveMesh; class edge; class face; class polyMesh; - - -// Forward declaration of friend functions and operators - class directionInfo; Istream& operator>>(Istream&, directionInfo&); @@ -86,7 +84,7 @@ Ostream& operator<<(Ostream&, const directionInfo&); class directionInfo { - // Private data + // Private Data // Either mesh edge or face point label index_; @@ -262,12 +260,10 @@ public: }; -//- Data associated with directionInfo type are contiguous -template<> -inline bool contiguous<directionInfo>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for directionInfo +template<> struct is_contiguous<directionInfo> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/dynamicMesh/meshCut/wallLayerCells/wallNormalInfo/wallNormalInfo.H b/src/dynamicMesh/meshCut/wallLayerCells/wallNormalInfo/wallNormalInfo.H index 67bf68504f1a7fe0e2751481390fe1870de520a2..98359fd8f0932b155d729f53d4ccf4295da4bdaf 100644 --- a/src/dynamicMesh/meshCut/wallLayerCells/wallNormalInfo/wallNormalInfo.H +++ b/src/dynamicMesh/meshCut/wallLayerCells/wallNormalInfo/wallNormalInfo.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -49,13 +49,9 @@ SourceFiles namespace Foam { -// Forward declaration of classes +// Forward Declarations class polyPatch; class polyMesh; - - -// Forward declaration of friend functions and operators - class wallNormalInfo; Istream& operator>>(Istream&, wallNormalInfo&); @@ -202,12 +198,10 @@ public: }; -//- Data associated with wallNormalInfo type are contiguous -template<> -inline bool contiguous<wallNormalInfo>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for wallNormalInfo +template<> struct is_contiguous<wallNormalInfo> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/dynamicMesh/motionSolvers/displacement/layeredSolver/pointEdgeStructuredWalk.H b/src/dynamicMesh/motionSolvers/displacement/layeredSolver/pointEdgeStructuredWalk.H index 8fc9b6a06b6dd083da8c271df648379fe397a1d0..6d03f1eceade18dd19bbf8ce67872512111a6e05 100644 --- a/src/dynamicMesh/motionSolvers/displacement/layeredSolver/pointEdgeStructuredWalk.H +++ b/src/dynamicMesh/motionSolvers/displacement/layeredSolver/pointEdgeStructuredWalk.H @@ -46,7 +46,7 @@ SourceFiles namespace Foam { -// Forward declarations +// Forward Declarations class polyPatch; class polyMesh; class pointEdgeStructuredWalk; @@ -236,12 +236,10 @@ public: }; -//- Data associated with pointEdgeStructuredWalk type are contiguous -template<> -inline bool contiguous<pointEdgeStructuredWalk>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for pointEdgeStructuredWalk +template<> struct is_contiguous<pointEdgeStructuredWalk> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/dynamicMesh/pointPatchDist/externalPointEdgePoint.H b/src/dynamicMesh/pointPatchDist/externalPointEdgePoint.H index fe4f35cb922621373d095294182082ab81b2b7dd..7eaac6d88d4e430959b3930cb95cdcc2fac59635 100644 --- a/src/dynamicMesh/pointPatchDist/externalPointEdgePoint.H +++ b/src/dynamicMesh/pointPatchDist/externalPointEdgePoint.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2013-2016 OpenFOAM Foundation @@ -47,13 +47,9 @@ SourceFiles namespace Foam { -// Forward declaration of classes +// Forward Declarations class polyPatch; class polyMesh; - - -// Forward declaration of friend functions and operators - class externalPointEdgePoint; Istream& operator>>(Istream&, externalPointEdgePoint&); @@ -251,12 +247,10 @@ public: }; -//- Data associated with externalPointEdgePoint type are contiguous -template<> -inline bool contiguous<externalPointEdgePoint>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for externalPointEdgePoint +template<> struct is_contiguous<externalPointEdgePoint> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/pointEdgeCollapse/pointEdgeCollapse.H b/src/dynamicMesh/polyTopoChange/polyTopoChange/pointEdgeCollapse/pointEdgeCollapse.H index e00bc3b9d92c2f0ed8a70160b791eb04394e2888..0038fa8f691846781c4a5d6e97764f49222a58de 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/pointEdgeCollapse/pointEdgeCollapse.H +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/pointEdgeCollapse/pointEdgeCollapse.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2012-2016 OpenFOAM Foundation @@ -46,13 +46,9 @@ SourceFiles namespace Foam { -// Forward declaration of classes +// Forward Declarations class polyPatch; class polyMesh; - - -// Forward declaration of friend functions and operators - class pointEdgeCollapse; Istream& operator>>(Istream&, pointEdgeCollapse&); @@ -221,12 +217,10 @@ public: }; -//- Data associated with pointEdgeCollapse type are contiguous -template<> -inline bool contiguous<pointEdgeCollapse>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for pointEdgeCollapse +template<> struct is_contiguous<pointEdgeCollapse> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/refinementData.H b/src/dynamicMesh/polyTopoChange/polyTopoChange/refinementData.H index f82a41c517e574dd2f3e8d4efd0ccd7e747aef50..fc2a2b39c7e7fe2ee1a1050918ec70c8bd4b0b88 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/refinementData.H +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/refinementData.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -47,12 +47,9 @@ SourceFiles namespace Foam { +// Forward Declarations class polyPatch; class polyMesh; - - -// Forward declaration of friend functions and operators - class refinementData; Istream& operator>>(Istream&, refinementData&); @@ -219,12 +216,13 @@ public: }; -//- Data associated with refinementData type are contiguous -template<> -inline bool contiguous<refinementData>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for refinementData +template<> struct is_contiguous<refinementData> : std::true_type {}; + +//- Contiguous label data for refinementData +template<> struct is_contiguous_label<refinementData> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/refinementDistanceData.H b/src/dynamicMesh/polyTopoChange/polyTopoChange/refinementDistanceData.H index e49ef5a0defed79086da6ea7c4c548b880464f9d..66318f4dfbe815eb959a528b72bd2971a31b8017 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/refinementDistanceData.H +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/refinementDistanceData.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -47,12 +47,9 @@ SourceFiles namespace Foam { +// Forward Declarations class polyPatch; class polyMesh; - - -// Forward declaration of friend functions and operators - class refinementDistanceData; Istream& operator>>(Istream&, refinementDistanceData&); @@ -65,7 +62,6 @@ Ostream& operator<<(Ostream&, const refinementDistanceData&); class refinementDistanceData { - // Private data //- Unrefined (level0) buffer size (nBufferLayers*level0Size) @@ -253,12 +249,10 @@ public: }; -//- Data associated with refinementDistanceData type are contiguous -template<> -inline bool contiguous<refinementDistanceData>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for refinementDistanceData +template<> struct is_contiguous<refinementDistanceData> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/finiteVolume/finiteVolume/fvc/fvcSmooth/smoothData.H b/src/finiteVolume/finiteVolume/fvc/fvcSmooth/smoothData.H index 2f4919b338c50c2206f91e2de07efdb6aaa53801..4de6094140ffc38289557edbaaab8e55bfba9165 100644 --- a/src/finiteVolume/finiteVolume/fvc/fvcSmooth/smoothData.H +++ b/src/finiteVolume/finiteVolume/fvc/fvcSmooth/smoothData.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -221,13 +221,10 @@ public: }; -//- Data associated with smoothData type are contiguous -template<> -inline bool contiguous<smoothData>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // +//- Contiguous data for smoothData +template<> struct is_contiguous<smoothData> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/finiteVolume/finiteVolume/fvc/fvcSmooth/sweepData.H b/src/finiteVolume/finiteVolume/fvc/fvcSmooth/sweepData.H index 7533d31c6a38e7f7d73011833d0cdfb9a1359d48..3b64353117fb708b19d5e7ad8a12121b63ba8493 100644 --- a/src/finiteVolume/finiteVolume/fvc/fvcSmooth/sweepData.H +++ b/src/finiteVolume/finiteVolume/fvc/fvcSmooth/sweepData.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2010-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -212,13 +212,10 @@ public: }; -//- Data associated with sweepData type are contiguous -template<> -inline bool contiguous<sweepData>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // +//- Contiguous data for sweepData +template<> struct is_contiguous<sweepData> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/finiteVolume/fvMesh/wallDist/wallPointYPlus/wallPointYPlus.H b/src/finiteVolume/fvMesh/wallDist/wallPointYPlus/wallPointYPlus.H index 18cb23e3712f0aaa8af43b0c2d4cc4493b7040be..d01addb110a614a67b51f731dc1e8db988f88de1 100644 --- a/src/finiteVolume/fvMesh/wallDist/wallPointYPlus/wallPointYPlus.H +++ b/src/finiteVolume/fvMesh/wallDist/wallPointYPlus/wallPointYPlus.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -53,7 +53,6 @@ SourceFiles namespace Foam { - /*---------------------------------------------------------------------------*\ Class wallPointYPlus Declaration \*---------------------------------------------------------------------------*/ @@ -81,7 +80,7 @@ public: // Static data members - //- cut-off value for y+ + //- The cut-off value for y+ static scalar yPlusCutOff; @@ -144,12 +143,11 @@ public: }; -//- Data associated with pointEdgePoint type as contiguous as underlying type +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for wallPointYPlus template<> -inline bool contiguous<wallPointYPlus>() -{ - return contiguous<wallPointData<scalar>>(); -} +struct is_contiguous<wallPointYPlus> : is_contiguous<wallPointData<scalar>> {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/functionObjects/field/nearWallFields/findCellParticle.H b/src/functionObjects/field/nearWallFields/findCellParticle.H index 8e1505753d6b5cdfbb4d346e5574e6567009ec89..85bd34bcb165761a7c6dfeee83ecd7497d940084 100644 --- a/src/functionObjects/field/nearWallFields/findCellParticle.H +++ b/src/functionObjects/field/nearWallFields/findCellParticle.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2013-2017 OpenFOAM Foundation @@ -45,11 +45,8 @@ SourceFiles namespace Foam { +// Forward Declarations class findCellParticleCloud; - - -// Forward declaration of friend functions and operators - class findCellParticle; Ostream& operator<<(Ostream&, const findCellParticle&); @@ -273,11 +270,10 @@ public: }; -template<> -inline bool contiguous<findCellParticle>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for findCellParticle +template<> struct is_contiguous<findCellParticle> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/coalCombustion/coalParcel/coalParcel.H b/src/lagrangian/coalCombustion/coalParcel/coalParcel.H index fef1d73a28525c35bb86db3ae91a708e456a51d2..e960050d44915850ca0b36f2491194d2a51f9f5f 100644 --- a/src/lagrangian/coalCombustion/coalParcel/coalParcel.H +++ b/src/lagrangian/coalCombustion/coalParcel/coalParcel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2015 OpenFOAM Foundation @@ -62,11 +62,8 @@ namespace Foam > > coalParcel; - template<> - inline bool contiguous<coalParcel>() - { - return false; - } + //- Non-contiguous data for coalParcel + template<> struct is_contiguous<coalParcel> : std::false_type {}; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/intermediate/parcels/derived/basicHeterogeneousReactingParcel/basicHeterogeneousReactingParcel.H b/src/lagrangian/intermediate/parcels/derived/basicHeterogeneousReactingParcel/basicHeterogeneousReactingParcel.H index 63b9156fdb1eef6705602fce162eeefc1ff36032..9600bbdbaed40558368c5d279ac0c04f342776c9 100644 --- a/src/lagrangian/intermediate/parcels/derived/basicHeterogeneousReactingParcel/basicHeterogeneousReactingParcel.H +++ b/src/lagrangian/intermediate/parcels/derived/basicHeterogeneousReactingParcel/basicHeterogeneousReactingParcel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2018-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -60,11 +60,9 @@ namespace Foam > > basicHeterogeneousReactingParcel; + //- Non-contiguous data for basicHeterogeneousReactingParcel template<> - inline bool contiguous<basicHeterogeneousReactingParcel>() - { - return false; - } + struct is_contiguous<basicHeterogeneousReactingParcel> : std::false_type {}; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicMPPICParcel/basicKinematicMPPICParcel.H b/src/lagrangian/intermediate/parcels/derived/basicKinematicMPPICParcel/basicKinematicMPPICParcel.H index ae1950ab5d9acb183d9de97e367b0a7dea46c731..65436b7d8f4c069fbebefcfaa3f880b73602fde0 100644 --- a/src/lagrangian/intermediate/parcels/derived/basicKinematicMPPICParcel/basicKinematicMPPICParcel.H +++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicMPPICParcel/basicKinematicMPPICParcel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2013-2016 OpenFOAM Foundation @@ -48,11 +48,9 @@ namespace Foam { typedef MPPICParcel<KinematicParcel<particle>> basicKinematicMPPICParcel; + //- Contiguous data for basicKinematicMPPICParcel template<> - inline bool contiguous<basicKinematicMPPICParcel>() - { - return true; - } + struct is_contiguous<basicKinematicMPPICParcel> : std::true_type {}; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.H b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.H index 23fc0fd883089d4b1ba32b209a98fe7212afdd17..9bcd834d0c51e5a3fb3b00074b86601072e57d07 100644 --- a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.H +++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011 OpenFOAM Foundation @@ -47,11 +47,8 @@ namespace Foam { typedef KinematicParcel<particle> basicKinematicParcel; - template<> - inline bool contiguous<basicKinematicParcel>() - { - return true; - } + //- Contiguous data for basicKinematicParcel + template<> struct is_contiguous<basicKinematicParcel> : std::true_type {}; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/basicReactingMultiphaseParcel.H b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/basicReactingMultiphaseParcel.H index a86baaaf1aa0a0732bb2e72c85a746975d3aa68e..3a20d7709f59f9745ca726422765577eb3a1f89a 100644 --- a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/basicReactingMultiphaseParcel.H +++ b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/basicReactingMultiphaseParcel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011 OpenFOAM Foundation @@ -63,11 +63,9 @@ namespace Foam > > basicReactingMultiphaseParcel; + //- Non-contiguous data for basicReactingMultiphaseParcel template<> - inline bool contiguous<basicReactingMultiphaseParcel>() - { - return false; - } + struct is_contiguous<basicReactingMultiphaseParcel> : std::false_type {}; } diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.H b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.H index 7831c8ff1bb6cffe5dcd2b538573e398b6470deb..a74f6d1d09b8ba5116854d1435fe70c942afc8fb 100644 --- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.H +++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -50,11 +50,8 @@ namespace Foam typedef ReactingParcel<ThermoParcel<KinematicParcel<particle>>> basicReactingParcel; - template<> - inline bool contiguous<basicReactingParcel>() - { - return false; - } + //- Non-contiguous data for basicReactingParcel + template<> struct is_contiguous<basicReactingParcel> : std::false_type {}; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H index 6af3b3fb09d25fb46a02b1455398f49e821e4651..c17e0522551f54d569ba501b4756948ce0e5406f 100644 --- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H +++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -48,11 +48,8 @@ namespace Foam { typedef ThermoParcel<KinematicParcel<particle>> basicThermoParcel; - template<> - inline bool contiguous<basicThermoParcel>() - { - return true; - } + //- Contiguous data for basicThermoParcel + template<> struct is_contiguous<basicThermoParcel> : std::true_type {}; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/solidParticle/solidParticle.H b/src/lagrangian/solidParticle/solidParticle.H index a7eb274ad0829f4ca085483f8d45b1619bfa527e..ca9a87168b6bffee829062c811561bbab5370ef0 100644 --- a/src/lagrangian/solidParticle/solidParticle.H +++ b/src/lagrangian/solidParticle/solidParticle.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2017 OpenFOAM Foundation @@ -52,7 +52,6 @@ namespace Foam { // Forward Declarations - class solidParticleCloud; class solidParticle; @@ -237,11 +236,10 @@ public: }; -template<> -inline bool contiguous<solidParticle>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for solidParticle +template<> struct is_contiguous<solidParticle> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/spray/parcels/derived/basicSprayParcel/basicSprayParcel.H b/src/lagrangian/spray/parcels/derived/basicSprayParcel/basicSprayParcel.H index d62de144caa49558fdae8d6cb6fb4a018758af13..5a9f27faabf539df0048198de85dc1de9472bb4a 100644 --- a/src/lagrangian/spray/parcels/derived/basicSprayParcel/basicSprayParcel.H +++ b/src/lagrangian/spray/parcels/derived/basicSprayParcel/basicSprayParcel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011 OpenFOAM Foundation @@ -63,11 +63,8 @@ namespace Foam > > basicSprayParcel; - template<> - inline bool contiguous<basicSprayParcel>() - { - return false; - } + //- Non-contiguous data for basicSprayParcel + template<> struct is_contiguous<basicSprayParcel> : std::false_type {}; } diff --git a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H index 98c8650c2c43c748dba8e1a1e06f31ecc54255bf..50fd6acbe3fa9ad8f441bd46e8cf0f4792969ce5 100644 --- a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H +++ b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2017 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2015-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2017 OpenFOAM Foundation @@ -1664,9 +1664,6 @@ public: ); }; -template<> -inline bool contiguous<FixedList<label, 3>>() {return true;} - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/mesh/snappyHexMesh/meshRefinement/patchFaceOrientation.H b/src/mesh/snappyHexMesh/meshRefinement/patchFaceOrientation.H index c8c9e5d9a56e4d85f78d75600a63c1322ae588ee..d2c1e46ae2e04c9507b09e33461e113b7bcd262f 100644 --- a/src/mesh/snappyHexMesh/meshRefinement/patchFaceOrientation.H +++ b/src/mesh/snappyHexMesh/meshRefinement/patchFaceOrientation.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2013-2015 OpenFOAM Foundation @@ -46,12 +46,8 @@ SourceFiles namespace Foam { -// Forward declaration of classes +// Forward Declarations class polyMesh; - - -// Forward declaration of friend functions and operators - class patchFaceOrientation; Istream& operator>>(Istream&, patchFaceOrientation&); @@ -164,12 +160,13 @@ public: }; -//- Data associated with patchFaceOrientation type are contiguous -template<> -inline bool contiguous<patchFaceOrientation>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for patchFaceOrientation +template<> struct is_contiguous<patchFaceOrientation> : std::true_type {}; + +//- Contiguous label data for patchFaceOrientation +template<> struct is_contiguous_label<patchFaceOrientation> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/mesh/snappyHexMesh/meshRefinement/transportData.H b/src/mesh/snappyHexMesh/meshRefinement/transportData.H index c206a08350483570ee707aa22e3fef0a08b1f8c5..ecf8da41e5e627bcb86ab927067b4b3372ae2b2e 100644 --- a/src/mesh/snappyHexMesh/meshRefinement/transportData.H +++ b/src/mesh/snappyHexMesh/meshRefinement/transportData.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2015-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -43,7 +43,7 @@ SourceFiles namespace Foam { -// Forward declaration of classes +// Forward Declarations class polyMesh; /*---------------------------------------------------------------------------*\ @@ -148,17 +148,15 @@ public: }; -//- Data associated with transportData type is same as underlying +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for transportData template<> -inline bool contiguous<transportData>() -{ - return contiguous<wallPointData<scalar>>(); -} +struct is_contiguous<transportData> : is_contiguous<wallPointData<scalar>> {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/mesh/snappyHexMesh/snappyHexMeshDriver/PointIntegrateData/PointIntegrateData.H b/src/mesh/snappyHexMesh/snappyHexMeshDriver/PointIntegrateData/PointIntegrateData.H index a2d32ba9ed21fe6a6a3c3b6b31ccdc4eb4f68492..01c5a8fd720db4fdf9882cb8e90a0a2db17cf436 100644 --- a/src/mesh/snappyHexMesh/snappyHexMeshDriver/PointIntegrateData/PointIntegrateData.H +++ b/src/mesh/snappyHexMesh/snappyHexMeshDriver/PointIntegrateData/PointIntegrateData.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2018-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -40,13 +40,11 @@ SourceFiles namespace Foam { -// Forward declaration of classes +// Forward Declarations class Istream; class Ostream; -template<class DataType> -class PointIntegrateData; +template<class DataType> class PointIntegrateData; -// Forward declaration of friend functions and operators template<class DataType> Ostream& operator<<(Ostream&, const PointIntegrateData<DataType>&); template<class DataType> @@ -86,7 +84,6 @@ public: }; - // Constructors //- Construct null @@ -227,21 +224,16 @@ public: ); }; -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -//- Data associated with PointIntegrateData types is contiguous +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // -template<> -inline bool contiguous<PointIntegrateData<scalar>>() -{ - return true; -} +//- Data are contiguous if the data type is contiguous +template<class DataType> +struct is_contiguous<PointIntegrateData<DataType>> +: + is_contiguous<DataType> +{}; -template<> -inline bool contiguous<PointIntegrateData<vector>>() -{ - return true; -} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/mesh/snappyHexMesh/trackedParticle/trackedParticle.C b/src/mesh/snappyHexMesh/trackedParticle/trackedParticle.C index e4187f63dc4971c65d29d1fdae3391c0c8bbf7e7..d5d1f47e80e23f6eb887516aebc4e1cee6753a61 100644 --- a/src/mesh/snappyHexMesh/trackedParticle/trackedParticle.C +++ b/src/mesh/snappyHexMesh/trackedParticle/trackedParticle.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2017-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2017 OpenFOAM Foundation @@ -27,7 +27,6 @@ License #include "trackedParticle.H" - // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // const std::size_t Foam::trackedParticle::sizeofFields_ diff --git a/src/mesh/snappyHexMesh/trackedParticle/trackedParticle.H b/src/mesh/snappyHexMesh/trackedParticle/trackedParticle.H index 46b99b8bda9bae7b52567785424d8a603e8f0aae..066ae635de672f7183a2ca94d65519529248d25a 100644 --- a/src/mesh/snappyHexMesh/trackedParticle/trackedParticle.H +++ b/src/mesh/snappyHexMesh/trackedParticle/trackedParticle.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2017-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2017 OpenFOAM Foundation @@ -47,7 +47,7 @@ SourceFiles namespace Foam { -// Forward declarations +// Forward Declarations class trackedParticleCloud; class trackedParticle; @@ -298,17 +298,10 @@ public: }; -template<> -inline bool contiguous<trackedParticle>() -{ - return true; -} - -//template<> -//void Cloud<trackedParticle>::readFields(); -// -//template<> -//void Cloud<trackedParticle>::writeFields() const; +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for trackedParticle +template<> struct is_contiguous<trackedParticle> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/meshTools/algorithms/PatchEdgeFaceWave/patchEdgeFaceInfo.H b/src/meshTools/algorithms/PatchEdgeFaceWave/patchEdgeFaceInfo.H index 525851fb0e0d2aff1c53f7f6131495d7a0852cb4..5a299a229fb94b89d6277a54a0f217afb8c81987 100644 --- a/src/meshTools/algorithms/PatchEdgeFaceWave/patchEdgeFaceInfo.H +++ b/src/meshTools/algorithms/PatchEdgeFaceWave/patchEdgeFaceInfo.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -49,14 +49,9 @@ SourceFiles namespace Foam { -// Forward declaration of classes - +// Forward Declarations class polyPatch; class polyMesh; - - -// Forward declaration of friend functions and operators - class patchEdgeFaceInfo; Istream& operator>>(Istream&, patchEdgeFaceInfo&); @@ -201,12 +196,13 @@ public: }; -//- Data associated with patchEdgeFaceInfo type are contiguous -template<> -inline bool contiguous<patchEdgeFaceInfo>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for patchEdgeFaceInfo +template<> struct is_contiguous<patchEdgeFaceInfo> : std::true_type {}; + +//- Contiguous scalar data for patchEdgeFaceInfo +template<> struct is_contiguous_scalar<patchEdgeFaceInfo> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/meshTools/algorithms/PatchEdgeFaceWave/patchEdgeFaceRegion.H b/src/meshTools/algorithms/PatchEdgeFaceWave/patchEdgeFaceRegion.H index f4d2293782de7986f1f71391d44550ae8db5f4e8..802a46394bf373ad7df6f62baea9e9715cd531f9 100644 --- a/src/meshTools/algorithms/PatchEdgeFaceWave/patchEdgeFaceRegion.H +++ b/src/meshTools/algorithms/PatchEdgeFaceWave/patchEdgeFaceRegion.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2012-2016 OpenFOAM Foundation @@ -51,13 +51,9 @@ SourceFiles namespace Foam { -// Forward declaration of classes +// Forward Declarations class polyPatch; class polyMesh; - - -// Forward declaration of friend functions and operators - class patchEdgeFaceRegion; Istream& operator>>(Istream&, patchEdgeFaceRegion&); @@ -181,12 +177,13 @@ public: }; -//- Data associated with patchEdgeFaceRegion type are contiguous -template<> -inline bool contiguous<patchEdgeFaceRegion>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for patchEdgeFaceRegion +template<> struct is_contiguous<patchEdgeFaceRegion> : std::true_type {}; + +//- Contiguous label data for patchEdgeFaceRegion +template<> struct is_contiguous_label<patchEdgeFaceRegion> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/meshTools/algorithms/PointEdgeWave/PointData.H b/src/meshTools/algorithms/PointEdgeWave/PointData.H index 4adf7b240ae378edbe46fc182324e7eeea8d2e0c..4adc976fe531f9f75114f89704120077a14c9976 100644 --- a/src/meshTools/algorithms/PointEdgeWave/PointData.H +++ b/src/meshTools/algorithms/PointEdgeWave/PointData.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2015 OpenFOAM Foundation @@ -46,13 +46,11 @@ SourceFiles namespace Foam { -// Forward declaration of classes +// Forward Declarations class Istream; class Ostream; -template<class DataType> -class PointData; +template<class DataType> class PointData; -// Forward declaration of friend functions and operators template<class DataType> Ostream& operator<<(Ostream&, const PointData<DataType>&); template<class DataType> @@ -67,8 +65,6 @@ class PointData : public pointEdgePoint { -private: - // Private data //- Additional transported data @@ -178,21 +174,20 @@ public: ); }; -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -//- Data associated with PointData types is contiguous +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // -template<> -inline bool contiguous<PointData<scalar>>() -{ - return true; -} +//- Data are contiguous if data type is contiguous +template<class DataType> +struct is_contiguous<PointData<DataType>> : is_contiguous<DataType> {}; + +//- Contiguous scalar only when data type is also scalar +template<class DataType> +struct is_contiguous_scalar<PointData<DataType>> +: + is_contiguous_scalar<DataType> +{}; -template<> -inline bool contiguous<PointData<vector>>() -{ - return true; -} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/meshTools/algorithms/PointEdgeWave/pointEdgePoint.H b/src/meshTools/algorithms/PointEdgeWave/pointEdgePoint.H index 2e51060d5a7b3fbb254f0b590814c327b22e3b9f..0a9d2ca13ee78bab096cbfdeb73109c0ca3a3009 100644 --- a/src/meshTools/algorithms/PointEdgeWave/pointEdgePoint.H +++ b/src/meshTools/algorithms/PointEdgeWave/pointEdgePoint.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -51,13 +51,9 @@ SourceFiles namespace Foam { -// Forward declaration of classes +// Forward Declarations class polyPatch; class polyMesh; - - -// Forward declaration of friend functions and operators - class pointEdgePoint; Istream& operator>>(Istream&, pointEdgePoint&); @@ -237,12 +233,13 @@ public: }; -//- Data associated with pointEdgePoint type are contiguous -template<> -inline bool contiguous<pointEdgePoint>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for pointEdgePoint +template<> struct is_contiguous<pointEdgePoint> : std::true_type {}; + +//- Contiguous scalar data for pointEdgePoint +template<> struct is_contiguous_scalar<pointEdgePoint> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/meshTools/cellClassification/cellInfo.H b/src/meshTools/cellClassification/cellInfo.H index 3c6265b5d2b48b9d9f654880d8378ff7276d4211..15b42eb8d45ed6c2f37d6c24e1d41925688576e7 100644 --- a/src/meshTools/cellClassification/cellInfo.H +++ b/src/meshTools/cellClassification/cellInfo.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -47,12 +47,10 @@ SourceFiles namespace Foam { + +// Forward Declarations class polyPatch; class polyMesh; - - -// Forward declaration of friend functions and operators - class cellInfo; Istream& operator>>(Istream&, cellInfo&); @@ -69,6 +67,7 @@ class cellInfo label type_; + // Private Member Functions //- Update current cell/face type with neighbouring @@ -212,12 +211,13 @@ public: }; -//- Data associated with cellInfo type are contiguous -template<> -inline bool contiguous<cellInfo>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for cellInfo +template<> struct is_contiguous<cellInfo> : std::true_type {}; + +//- Contiguous label data for cellInfo +template<> struct is_contiguous_label<cellInfo> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/meshTools/cellDist/wallPoint/wallPoint.H b/src/meshTools/cellDist/wallPoint/wallPoint.H index cb11e2659d26b248d408d617fd9923a6a9afc79d..89179c6ec6354fe3f1f8f94fcc74f75b0012c8b8 100644 --- a/src/meshTools/cellDist/wallPoint/wallPoint.H +++ b/src/meshTools/cellDist/wallPoint/wallPoint.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -49,12 +49,11 @@ SourceFiles namespace Foam { -// Forward declaration of classes +// Forward Declarations class polyPatch; class polyMesh; class wallPoint; -// Forward declaration of friend functions and operators Ostream& operator<<(Ostream&, const wallPoint&); Istream& operator>>(Istream&, wallPoint&); @@ -65,7 +64,7 @@ Istream& operator>>(Istream&, wallPoint&); class wallPoint { - // Private data + // Private Data //- Position of nearest wall center point origin_; @@ -219,12 +218,13 @@ public: }; -//- Data associated with wallPoint type are contiguous -template<> -inline bool contiguous<wallPoint>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for wallPoint +template<> struct is_contiguous<wallPoint> : std::true_type {}; + +//- Contiguous scalar data for wallPoint +template<> struct is_contiguous_scalar<wallPoint> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/meshTools/cellDist/wallPoint/wallPointData.H b/src/meshTools/cellDist/wallPoint/wallPointData.H index b52d88a43c51d5057d748e93b8ee91ba2b10c30b..9591cc0f35539ebed7d68426824f6ea6d915c595 100644 --- a/src/meshTools/cellDist/wallPoint/wallPointData.H +++ b/src/meshTools/cellDist/wallPoint/wallPointData.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -48,10 +48,9 @@ SourceFiles namespace Foam { +// Forward Declarations template<class Type> class wallPointData; -// Forward declaration of friend functions and operators - template<class Type> Istream& operator>>(Istream&, wallPointData<Type>&); template<class Type> Ostream& operator<<(Ostream&, const wallPointData<Type>&); @@ -162,48 +161,22 @@ public: }; -//- Data associated with wallPointData type are contiguous. List the usual -// ones. +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // -template<> -inline bool contiguous<wallPointData<bool>>() -{ - return contiguous<wallPoint>(); -} -template<> -inline bool contiguous<wallPointData<label>>() -{ - return contiguous<wallPoint>(); -} -template<> -inline bool contiguous<wallPointData<scalar>>() -{ - return contiguous<wallPoint>(); -} -template<> -inline bool contiguous<wallPointData<vector>>() -{ - return contiguous<wallPoint>(); -} -template<> -inline bool contiguous<wallPointData<sphericalTensor>>() -{ - return contiguous<wallPoint>(); -} -template<> -inline bool contiguous<wallPointData<symmTensor>>() -{ - return contiguous<wallPoint>(); -} -template<> -inline bool contiguous<wallPointData<tensor>>() -{ - return contiguous<wallPoint>(); -} +//- Data are contiguous if data type is contiguous +template<class Type> +struct is_contiguous<wallPointData<Type>> : is_contiguous<Type> {}; +//- Data are contiguous label if data type is label +template<class Type> +struct is_contiguous_label<wallPointData<Type>> : is_contiguous_label<Type> {}; + +//- Data are contiguous scalar if data type is scalar +template<class Type> +struct is_contiguous_scalar<wallPointData<Type>> : is_contiguous_scalar<Type>{}; -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/meshTools/meshStructure/pointTopoDistanceData.H b/src/meshTools/meshStructure/pointTopoDistanceData.H index 2a6918a10385ab875c92c7d6b634878fb96ed654..f86e3b284ad772f8c11a2126de0f830cf963a478 100644 --- a/src/meshTools/meshStructure/pointTopoDistanceData.H +++ b/src/meshTools/meshStructure/pointTopoDistanceData.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2013-2016 OpenFOAM Foundation @@ -47,12 +47,9 @@ SourceFiles namespace Foam { +// Forward Declarations class polyPatch; class polyMesh; - - -// Forward declaration of friend functions and operators - class pointTopoDistanceData; Istream& operator>>(Istream&, pointTopoDistanceData&); @@ -78,10 +75,10 @@ public: // Constructors - //- Construct null + //- Construct null with invalid (-1) for data and distance inline pointTopoDistanceData(); - //- Construct from count + //- Construct from components inline pointTopoDistanceData ( const label data, @@ -93,7 +90,6 @@ public: // Access - inline label data() const { return data_; @@ -208,6 +204,7 @@ public: inline bool operator==(const pointTopoDistanceData&) const; inline bool operator!=(const pointTopoDistanceData&) const; + // IOstream Operators friend Ostream& operator<<(Ostream&, const pointTopoDistanceData&); @@ -215,12 +212,16 @@ public: }; -//- Data associated with pointTopoDistanceData type are contiguous -template<> -inline bool contiguous<pointTopoDistanceData>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for pointTopoDistanceData +template<> struct is_contiguous<pointTopoDistanceData> : std::true_type {}; + +//- Contiguous label data for pointTopoDistanceData +template<> struct is_contiguous_label<pointTopoDistanceData> +: + std::true_type +{}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/meshTools/meshStructure/topoDistanceData.H b/src/meshTools/meshStructure/topoDistanceData.H index 7afe6de5934b627c6099ae5349f07e8d2125dbc5..400287345701baa6cf5e7d23066f369825734b19 100644 --- a/src/meshTools/meshStructure/topoDistanceData.H +++ b/src/meshTools/meshStructure/topoDistanceData.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -46,12 +46,9 @@ SourceFiles namespace Foam { +// Forward Declarations class polyPatch; class polyMesh; - - -// Forward declaration of friend functions and operators - class topoDistanceData; Istream& operator>>(Istream&, topoDistanceData&); @@ -77,10 +74,10 @@ public: // Constructors - //- Construct null + //- Construct null with invalid (-1) for data and distance inline topoDistanceData(); - //- Construct from count + //- Construct from components inline topoDistanceData ( const label data, @@ -92,7 +89,6 @@ public: // Access - inline label data() const { return data_; @@ -191,6 +187,7 @@ public: template<class TrackingData> inline bool equal(const topoDistanceData&, TrackingData& td) const; + // Member Operators // Needed for List IO @@ -206,12 +203,13 @@ public: }; -//- Data associated with topoDistanceData type are contiguous -template<> -inline bool contiguous<topoDistanceData>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for topoDistanceData +template<> struct is_contiguous<topoDistanceData> : std::true_type {}; + +//- Contiguous label data for topoDistanceData +template<> struct is_contiguous_label<topoDistanceData> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/meshTools/regionSplit/minData.H b/src/meshTools/regionSplit/minData.H index 20bba243a7f63702de185e59308987878c021156..05ed9ca00b051b442de859713cb200ad1211c2bd 100644 --- a/src/meshTools/regionSplit/minData.H +++ b/src/meshTools/regionSplit/minData.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2015-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2014-2016 OpenFOAM Foundation @@ -45,12 +45,10 @@ SourceFiles namespace Foam { +// Forward declarations + class polyPatch; class polyMesh; - - -// Forward declaration of friend functions and operators - class minData; Istream& operator>>(Istream&, minData&); @@ -193,12 +191,13 @@ public: }; -//- Data associated with minData type are contiguous -template<> -inline bool contiguous<minData>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for minData +template<> struct is_contiguous<minData> : std::true_type {}; + +//- Contiguous label data for minData +template<> struct is_contiguous_label<minData> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/overset/cellCellStencil/inverseDistance/meshToMeshData.H b/src/overset/cellCellStencil/inverseDistance/meshToMeshData.H index 0b252bbee05d5349217c6f18d626c3f35571471d..d47a25b5f450098121e4c3f57e9b78d375abe211 100644 --- a/src/overset/cellCellStencil/inverseDistance/meshToMeshData.H +++ b/src/overset/cellCellStencil/inverseDistance/meshToMeshData.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2017-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -45,12 +45,9 @@ SourceFiles namespace Foam { +// Forward Declarations class polyPatch; class polyMesh; - - -// Forward declaration of friend functions and operators - class meshToMeshData; Istream& operator>>(Istream&, meshToMeshData&); @@ -210,6 +207,7 @@ public: TrackingData& ) const; + // Member Operators // Needed for List IO @@ -225,12 +223,13 @@ public: }; -//- Data associated with meshToMeshData type are contiguous -template<> -inline bool contiguous<meshToMeshData>() -{ - return true; -} +// * * * * * * * * * * * * * * * * * Traits * * * * * * * * * * * * * * * * // + +//- Contiguous data for meshToMeshData +template<> struct is_contiguous<meshToMeshData> : std::true_type {}; + +//- Contiguous label data for meshToMeshData +template<> struct is_contiguous_label<meshToMeshData> : std::true_type {}; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/parallel/distributed/distributedTriSurfaceMesh/distributedTriSurfaceMesh.H b/src/parallel/distributed/distributedTriSurfaceMesh/distributedTriSurfaceMesh.H index 779221faa8785eddd4ac116faec954d239be6900..4480c7c2c238f096be5df2bb4a271dc8f4bc9d7e 100644 --- a/src/parallel/distributed/distributedTriSurfaceMesh/distributedTriSurfaceMesh.H +++ b/src/parallel/distributed/distributedTriSurfaceMesh/distributedTriSurfaceMesh.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2015-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2017 OpenFOAM Foundation @@ -76,8 +76,6 @@ class decompositionMethod; // Typedefs typedef Pair<point> segment; -template<> -inline bool contiguous<segment>() {return contiguous<point>();} /*---------------------------------------------------------------------------*\