From 37ebdfe36ee0934fea5c673fe29dc2fcd5ebef59 Mon Sep 17 00:00:00 2001 From: Henry Weller Date: Mon, 16 Nov 2020 21:01:41 +0000 Subject: [PATCH] Function1::TableReader: Added EmbeddedTableReader so that TableFile can read embedded table data --- .../utilities/postProcessing/noise/noise.C | 5 +- .../functions/Function1/Function1/Function1.H | 10 +- .../functions/Function1/Table/Table.C | 12 +- .../functions/Function1/Table/Table.H | 6 +- .../functions/Function1/Table/TableBase.C | 25 ++-- .../functions/Function1/Table/TableBase.H | 7 +- .../functions/Function1/TableFile/TableFile.C | 35 ++--- .../functions/Function1/TableFile/TableFile.H | 18 +-- .../TableReader/Csv/CsvTableReader.C | 34 ++--- .../TableReader/Csv/CsvTableReader.H | 26 ++-- .../Embedded/EmbeddedTableReader.C | 81 ++++++++++++ .../Embedded/EmbeddedTableReader.H | 122 ++++++++++++++++++ .../TableReader/Foam/FoamTableReader.C | 26 ++-- .../TableReader/Foam/FoamTableReader.H | 17 ++- .../TableFileReader/TableFileReader.C | 95 ++++++++++++++ .../TableFileReader/TableFileReader.H | 105 +++++++++++++++ .../TableReader/TableReader/TableReader.C | 74 +---------- .../TableReader/TableReader/TableReader.H | 48 +++---- .../TableReader/TableReader/TableReaderNew.C | 78 +++++++++++ .../TableFile/TableReader/makeTableReaders.C | 4 +- .../sixDoFMotion/sixDoFMotion.C | 2 + .../sixDoFAccelerationSource.C | 2 + .../tabulatedAxialAngularSpring.C | 4 +- 23 files changed, 617 insertions(+), 219 deletions(-) create mode 100644 src/OpenFOAM/primitives/functions/Function1/TableFile/TableReader/Embedded/EmbeddedTableReader.C create mode 100644 src/OpenFOAM/primitives/functions/Function1/TableFile/TableReader/Embedded/EmbeddedTableReader.H create mode 100644 src/OpenFOAM/primitives/functions/Function1/TableFile/TableReader/TableFileReader/TableFileReader.C create mode 100644 src/OpenFOAM/primitives/functions/Function1/TableFile/TableReader/TableFileReader/TableFileReader.H create mode 100644 src/OpenFOAM/primitives/functions/Function1/TableFile/TableReader/TableReader/TableReaderNew.C diff --git a/applications/utilities/postProcessing/noise/noise.C b/applications/utilities/postProcessing/noise/noise.C index dd66fe750a..5bf07c0903 100644 --- a/applications/utilities/postProcessing/noise/noise.C +++ b/applications/utilities/postProcessing/noise/noise.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -162,7 +162,8 @@ int main(int argc, char *argv[]) nfft -= pRef; - fileName baseFileName(pData.fName().lessExt()); + fileName pDateFileName(dict.subDict("pressureData").lookup("file")); + fileName baseFileName(pDateFileName.lessExt()); graph Pf(nfft.RMSmeanPf(N, min(nfft.size()/N, nw))); Info<< " Creating graph for " << Pf.title() << endl; diff --git a/src/OpenFOAM/primitives/functions/Function1/Function1/Function1.H b/src/OpenFOAM/primitives/functions/Function1/Function1/Function1.H index e4ae4c401c..1a5d25634d 100644 --- a/src/OpenFOAM/primitives/functions/Function1/Function1/Function1.H +++ b/src/OpenFOAM/primitives/functions/Function1/Function1/Function1.H @@ -228,7 +228,15 @@ public: defineNamedTemplateTypeNameAndDebug(Function1s::SS, 0); \ \ Function1::adddictionaryConstructorToTable> \ - addFunction1##SS##Type##ConstructorToTable_; + addFunction1##SS##Type##ConstructorToTable_; + + +#define makeNamedFunction1Type(SS, Type, Name) \ + \ + defineNamedTemplateTypeNameAndDebug(Function1s::SS, 0); \ + \ + Function1::adddictionaryConstructorToTable> \ + addFunction1##SS##Type##ConstructorToTable_(#Name); #define makeScalarFunction1(SS) \ diff --git a/src/OpenFOAM/primitives/functions/Function1/Table/Table.C b/src/OpenFOAM/primitives/functions/Function1/Table/Table.C index 2931c8ae5b..73c511296e 100644 --- a/src/OpenFOAM/primitives/functions/Function1/Table/Table.C +++ b/src/OpenFOAM/primitives/functions/Function1/Table/Table.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -94,11 +94,13 @@ Foam::Function1s::Table::~Table() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template -void Foam::Function1s::Table::writeEntries(Ostream& os) const +void Foam::Function1s::Table::writeEntries +( + Ostream& os, + const List>& table +) const { - TableBase>::writeEntries(os); - - os << indent << "values" << this->table_ + os << indent << "values" << table << token::END_STATEMENT << endl; } diff --git a/src/OpenFOAM/primitives/functions/Function1/Table/Table.H b/src/OpenFOAM/primitives/functions/Function1/Table/Table.H index c914d83410..b6313be29b 100644 --- a/src/OpenFOAM/primitives/functions/Function1/Table/Table.H +++ b/src/OpenFOAM/primitives/functions/Function1/Table/Table.H @@ -97,7 +97,11 @@ public: // Member Functions //- Write entries only in dictionary format - virtual void writeEntries(Ostream& os) const; + virtual void writeEntries + ( + Ostream& os, + const List>& table + ) const; // Member Operators diff --git a/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.C b/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.C index 8b3725573b..cce68a7d2a 100644 --- a/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.C +++ b/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,7 +24,6 @@ License \*---------------------------------------------------------------------------*/ #include "TableBase.H" -#include "Time.H" #include "linearInterpolationWeights.H" // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // @@ -300,11 +299,17 @@ Foam::Function1s::TableBase::y() const template -void Foam::Function1s::TableBase::writeEntries +void Foam::Function1s::TableBase::writeData ( Ostream& os ) const { + Function1::writeData(os); + os << token::END_STATEMENT << nl; + + os << indent << word(this->name() + "Coeffs") << nl; + os << indent << token::BEGIN_BLOCK << incrIndent << nl; + writeEntryIfDifferent ( os, @@ -320,21 +325,9 @@ void Foam::Function1s::TableBase::writeEntries linearInterpolationWeights::typeName, interpolationScheme_ ); -} + writeEntries(os, table_); -template -void Foam::Function1s::TableBase::writeData -( - Ostream& os -) const -{ - Function1::writeData(os); - os << token::END_STATEMENT << nl; - - os << indent << word(this->name() + "Coeffs") << nl; - os << indent << token::BEGIN_BLOCK << incrIndent << nl; - writeEntries(os); os << decrIndent << indent << token::END_BLOCK << endl; } diff --git a/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.H b/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.H index 5e0503e9d8..e5e6a7dd5b 100644 --- a/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.H +++ b/src/OpenFOAM/primitives/functions/Function1/Table/TableBase.H @@ -37,7 +37,6 @@ SourceFiles #include "tableBase.H" #include "Function1.H" -#include "Tuple2.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -141,7 +140,11 @@ public: virtual tmp> y() const; //- Write entries only in dictionary format - virtual void writeEntries(Ostream& os) const; + virtual void writeEntries + ( + Ostream& os, + const List>& table + ) const = 0; //- Write all table data in dictionary format virtual void writeData(Ostream& os) const; diff --git a/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.C b/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.C index df8966dc05..5eaf485f8d 100644 --- a/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.C +++ b/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -30,27 +30,13 @@ License template Foam::Function1s::TableFile::TableFile ( - const word& entryName, + const word& name, const dictionary& dict ) : - TableBase>(entryName, dict), - fName_(dict.lookup("file")), - reader_ - ( - TableReader::New - ( - dict.lookupOrDefault - ( - "format", - TableReaders::Foam::typeName - ), - dict - ) - ) + TableBase>(name, dict), + reader_(TableReader::New(name, dict, this->table_)) { - reader_()(fName_, this->table_); - TableBase>::check(); } @@ -59,7 +45,6 @@ template Foam::Function1s::TableFile::TableFile(const TableFile& tbl) : TableBase>(tbl), - fName_(tbl.fName_), reader_(tbl.reader_, false) {} @@ -74,13 +59,13 @@ Foam::Function1s::TableFile::~TableFile() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template -void Foam::Function1s::TableFile::writeEntries(Ostream& os) const +void Foam::Function1s::TableFile::writeEntries +( + Ostream& os, + const List>& table +) const { - TableBase>::writeEntries(os); - - writeEntry(os, "file", fName_); - writeEntry(os, "format", reader_->type()); - reader_->write(os); + reader_->write(os, table); } diff --git a/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.H b/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.H index d6ecc6b904..5ce90321bb 100644 --- a/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.H +++ b/src/OpenFOAM/primitives/functions/Function1/TableFile/TableFile.H @@ -75,9 +75,6 @@ class TableFile { // Private Data - //- File name for table - const fileName fName_; - //- Table reader const autoPtr> reader_; @@ -101,19 +98,14 @@ public: virtual ~TableFile(); - // Access - - //- Return the file name - inline const fileName& fName() const - { - return fName_; - } - - // I/O //- Write entries only in dictionary format - virtual void writeEntries(Ostream& os) const; + virtual void writeEntries + ( + Ostream& os, + const List>& table + ) const; // Member Operators diff --git a/src/OpenFOAM/primitives/functions/Function1/TableFile/TableReader/Csv/CsvTableReader.C b/src/OpenFOAM/primitives/functions/Function1/TableFile/TableReader/Csv/CsvTableReader.C index 56bf01aa09..b51188cba6 100644 --- a/src/OpenFOAM/primitives/functions/Function1/TableFile/TableReader/Csv/CsvTableReader.C +++ b/src/OpenFOAM/primitives/functions/Function1/TableFile/TableReader/Csv/CsvTableReader.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -198,23 +198,17 @@ void Foam::TableReaders::Csv::read } -template -void Foam::TableReaders::Csv::read -( - ISstream&, - List>>>& data -) const -{ - NotImplemented; -} - - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template -Foam::TableReaders::Csv::Csv(const dictionary& dict) +Foam::TableReaders::Csv::Csv +( + const word& name, + const dictionary& dict, + List>& table +) : - TableReader(dict), + TableFileReader(dict), nHeaderLine_(dict.lookup