diff --git a/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.C b/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.C index f417b3a24a..f68e20015b 100644 --- a/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.C +++ b/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation - Copyright (C) 2016-2019 OpenCFD Ltd. + Copyright (C) 2016-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -84,7 +84,7 @@ Foam::interpolation2DTable::interpolation2DTable(const fileName& fName) List(), bounding_(bounds::normalBounding::WARN), fileName_(fName), - reader_(new openFoamTableReader(dictionary())) + reader_(new openFoamTableReader()) { readTable(); } @@ -114,13 +114,13 @@ Foam::interpolation2DTable::interpolation2DTable(const dictionary& dict) template Foam::interpolation2DTable::interpolation2DTable ( - const interpolation2DTable& interpTable + const interpolation2DTable& tbl ) : - List(interpTable), - bounding_(interpTable.bounding_), - fileName_(interpTable.fileName_), - reader_(interpTable.reader_) // note: steals reader. Used in write(). + List(tbl), + bounding_(tbl.bounding_), + fileName_(tbl.fileName_), + reader_(tbl.reader_.clone()) {} @@ -218,6 +218,24 @@ Foam::label Foam::interpolation2DTable::Xi // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // +template +void Foam::interpolation2DTable::operator= +( + const interpolation2DTable& rhs +) +{ + if (this == &rhs) + { + return; + } + + static_cast&>(*this) = rhs; + bounding_ = rhs.bounding_; + fileName_ = rhs.fileName_; + reader_.reset(rhs.reader_.clone()); +} + + template Type Foam::interpolation2DTable::operator() ( diff --git a/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.H b/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.H index 10aae764b6..8b52166aad 100644 --- a/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.H +++ b/src/OpenFOAM/interpolations/interpolation2DTable/interpolation2DTable.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation - Copyright (C) 2019 OpenCFD Ltd. + Copyright (C) 2019-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -63,7 +63,7 @@ class interpolation2DTable //- File name fileName fileName_; - //- The actual reader + //- Table reader autoPtr> reader_; @@ -102,7 +102,7 @@ public: // Constructors - //- Construct null + //- Default construct interpolation2DTable(); //- Construct from components @@ -120,7 +120,7 @@ public: explicit interpolation2DTable(const dictionary& dict); //- Copy construct - interpolation2DTable(const interpolation2DTable& interpTable); + interpolation2DTable(const interpolation2DTable& tbl); // Member Functions @@ -135,6 +135,9 @@ public: // Member Operators + //- Copy assignment + void operator=(const interpolation2DTable& rhs); + //- Return an interpolated value Type operator()(const scalar valueX, const scalar valueY) const; diff --git a/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C index e101a55668..d9d5664cde 100644 --- a/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C +++ b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation - Copyright (C) 2019 OpenCFD Ltd. + Copyright (C) 2019-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -88,7 +88,7 @@ Foam::interpolationTable::interpolationTable(const fileName& fName) List(), bounding_(bounds::repeatableBounding::WARN), fileName_(fName), - reader_(new openFoamTableReader(dictionary())) + reader_(new openFoamTableReader()) { readTable(); } @@ -118,17 +118,16 @@ Foam::interpolationTable::interpolationTable(const dictionary& dict) template Foam::interpolationTable::interpolationTable ( - const interpolationTable& interpTable + const interpolationTable& tbl ) : - List(interpTable), - bounding_(interpTable.bounding_), - fileName_(interpTable.fileName_), - reader_(interpTable.reader_) // note: steals reader. Used in write(). + List(tbl), + bounding_(tbl.bounding_), + fileName_(tbl.fileName_), + reader_(tbl.reader_.clone()) {} - // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template @@ -491,6 +490,24 @@ Foam::interpolationTable::interpolateValues // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // +template +void Foam::interpolationTable::operator= +( + const interpolationTable& rhs +) +{ + if (this == &rhs) + { + return; + } + + static_cast&>(*this) = rhs; + bounding_ = rhs.bounding_; + fileName_ = rhs.fileName_; + reader_.reset(rhs.reader_.clone()); +} + + template const Foam::Tuple2& Foam::interpolationTable::operator[](label idx) const diff --git a/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.H b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.H index 97ecbc051c..934976ffcb 100644 --- a/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.H +++ b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation - Copyright (C) 2019 OpenCFD Ltd. + Copyright (C) 2019-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -92,7 +92,7 @@ class interpolationTable //- File name fileName fileName_; - //- The actual reader + //- Table reader autoPtr> reader_; @@ -115,7 +115,7 @@ public: // Constructors - //- Construct null + //- Default construct interpolationTable(); //- Construct from components @@ -135,7 +135,7 @@ public: explicit interpolationTable(const dictionary& dict); //- Copy construct - interpolationTable(const interpolationTable& interpTable); + interpolationTable(const interpolationTable& tbl); // Member Functions @@ -172,6 +172,9 @@ public: // Member Operators + //- Copy assignment + void operator=(const interpolationTable& rhs); + //- Return an element of constant Tuple2 const Tuple2& operator[](label idx) const; diff --git a/src/OpenFOAM/interpolations/interpolationTable/tableReaders/csv/csvTableReader.C b/src/OpenFOAM/interpolations/interpolationTable/tableReaders/csv/csvTableReader.C index ff3a409689..0ee5c6d766 100644 --- a/src/OpenFOAM/interpolations/interpolationTable/tableReaders/csv/csvTableReader.C +++ b/src/OpenFOAM/interpolations/interpolationTable/tableReaders/csv/csvTableReader.C @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation + Copyright (C) 2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -28,6 +29,82 @@ License #include "csvTableReader.H" #include "fileOperation.H" #include "DynamicList.H" +#include "ListOps.H" + +// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * // + +template +Foam::labelList Foam::csvTableReader::getComponentColumns +( + const word& name, + const dictionary& dict +) +{ + // Writing of columns was forced to be ASCII, + // do the same when reading + + labelList cols; + + ITstream& is = dict.lookup(name); + is.format(IOstream::ASCII); + is >> cols; + dict.checkITstream(is, name); + + if (cols.size() != pTraits::nComponents) + { + FatalIOErrorInFunction(dict) + << name << " with " << cols + << " does not have the expected length " + << pTraits::nComponents << nl + << exit(FatalIOError); + } + + return cols; +} + + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +namespace Foam +{ + template<> + label csvTableReader