diff --git a/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchField.C b/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchField.C index 2ce7ada7ea1ce5445da016c0e5f064d13322df43..9b81fa90f8716dacdd5f5e4fe1f3d04cd9175d85 100644 --- a/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchField.C +++ b/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchField.C @@ -70,7 +70,7 @@ timeVaryingUniformFixedValuePointPatchField ) : fixedValuePointPatchField<Type>(p, iF), - timeSeries_(this->db(), dict) + timeSeries_(dict) { updateCoeffs(); } diff --git a/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C index eb79f936ef5155e2d626d72c7099e9654cea7dd3..946041c6c3d71eb423ca02bff32a022de58b5cd9 100644 --- a/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C +++ b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C @@ -26,60 +26,68 @@ License #include "interpolationTable.H" #include "IFstream.H" -#include "objectRegistry.H" - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -template<class Type> -Foam::interpolationTable<Type>::interpolationTable() -: - List<Tuple2<scalar, Type> >(), - boundsHandling_(interpolationTable::WARN), - fileName_("fileNameIsUndefined") -{} +// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // template<class Type> -Foam::interpolationTable<Type>::interpolationTable -( - const objectRegistry& obr, - const dictionary& dict -) -: - List<Tuple2<scalar, Type> >(), - boundsHandling_(wordToBoundsHandling(dict.lookup("outOfBounds"))), - fileName_(dict.lookup("fileName")) +void Foam::interpolationTable<Type>::readTable() { // preserve the original (unexpanded) fileName to avoid absolute paths - // appearing in the write() method + // appearing subsequently in the write() method fileName fName(fileName_); fName.expand(); - // Correct for relative path - if (fName[0] != '/') - { - fName = obr.db().path()/fName; - } - // Read data from file IFstream(fName)() >> *this; - // Check that the data is okay + // Check that the data are okay check(); if (this->size() == 0) { FatalErrorIn ( - "Foam::interpolationTable<Type>::interpolationTable" - "(const dictionary&)" + "Foam::interpolationTable<Type>::readTable()" ) << "table is empty" << nl << exit(FatalError); } } +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Type> +Foam::interpolationTable<Type>::interpolationTable() +: + List<Tuple2<scalar, Type> >(), + boundsHandling_(interpolationTable::WARN), + fileName_("fileNameIsUndefined") +{} + + +template<class Type> +Foam::interpolationTable<Type>::interpolationTable(const fileName& fn) +: + List<Tuple2<scalar, Type> >(), + boundsHandling_(interpolationTable::WARN), + fileName_(fn) +{ + readTable(); +} + + +template<class Type> +Foam::interpolationTable<Type>::interpolationTable(const dictionary& dict) +: + List<Tuple2<scalar, Type> >(), + boundsHandling_(wordToBoundsHandling(dict.lookup("outOfBounds"))), + fileName_(dict.lookup("fileName")) +{ + readTable(); +} + + template<class Type> Foam::interpolationTable<Type>::interpolationTable ( @@ -92,12 +100,6 @@ Foam::interpolationTable<Type>::interpolationTable {} -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -template<class Type> -Foam::interpolationTable<Type>::~interpolationTable() -{} - // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -172,10 +174,23 @@ Foam::interpolationTable<Type>::wordToBoundsHandling } +template<class Type> +typename Foam::interpolationTable<Type>::boundsHandling +Foam::interpolationTable<Type>::outOfBounds +( + const boundsHandling& bound +) +{ + boundsHandling prev = boundsHandling_; + boundsHandling_ = bound; + return prev; +} + + template<class Type> void Foam::interpolationTable<Type>::check() const { - label n = size(); + label n = this->size(); scalar prevValue = List<Tuple2<scalar, Type> >::operator[](0).first(); for (label i=1; i<n; ++i) @@ -198,19 +213,6 @@ void Foam::interpolationTable<Type>::check() const } -template<class Type> -typename Foam::interpolationTable<Type>::boundsHandling -Foam::interpolationTable<Type>::outOfBounds -( - const boundsHandling& bound -) -{ - boundsHandling prev = boundsHandling_; - boundsHandling_ = bound; - return prev; -} - - template<class Type> void Foam::interpolationTable<Type>::write(Ostream& os) const { @@ -228,7 +230,7 @@ const Foam::Tuple2<Foam::scalar, Type>& Foam::interpolationTable<Type>::operator[](const label i) const { label ii = i; - label n = size(); + label n = this->size(); if (n <= 1) { @@ -322,7 +324,7 @@ Foam::interpolationTable<Type>::operator[](const label i) const template<class Type> Type Foam::interpolationTable<Type>::operator()(const scalar value) const { - label n = size(); + label n = this->size(); if (n <= 1) { @@ -479,4 +481,5 @@ Type Foam::interpolationTable<Type>::operator()(const scalar value) const } } + // ************************************************************************* // diff --git a/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.H b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.H index c60121bb883ec226d8928e5abc1c4ea2e437bb9d..8e00d9f5b3f92562a8dce8051f51db238a301f83 100644 --- a/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.H +++ b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.H @@ -27,7 +27,7 @@ Class Description A list of times and values. - The time values must be positive monotonically increasing. + The time values must be positive and monotonically increasing. The handling of out-of-bounds values depends on the current setting of @a outOfBounds. @@ -37,7 +37,7 @@ Description Note - Accessing an empty list results in an error. - - Accessing a list with a single element will always return the same value. + - Accessing a list with a single element always returns the same value. SourceFiles interpolationTable.C @@ -55,8 +55,6 @@ SourceFiles namespace Foam { -class objectRegistry; - /*---------------------------------------------------------------------------*\ Class interpolationTable Declaration \*---------------------------------------------------------------------------*/ @@ -91,6 +89,12 @@ private: fileName fileName_; + // Private Member Functions + + //- Read the table of data from file + void readTable(); + + public: // Constructors @@ -98,61 +102,44 @@ public: //- Construct null interpolationTable(); - //- Construct from objectRegistry and dictionary - interpolationTable(const objectRegistry& obr, const dictionary& dict); + //- Construct given the name of the file containing the table of data + interpolationTable(const fileName& fn); + + //- Construct by reading the fileName and boundsHandling from dictionary + // and read the table from that file. + // This is a specialised constructor used by patchFields + interpolationTable(const dictionary& dict); //- Construct copy interpolationTable(const interpolationTable& interpTable); - //- Destructor - ~interpolationTable(); - - // Member Functions - // Access - - //- Return the size - label size() const - { - return List<Tuple2<scalar, Type> >::size(); - } - - //- Return the out-of-bounds handling as a word - word boundsHandlingToWord(const boundsHandling& bound) const; + //- Return the out-of-bounds handling as a word + word boundsHandlingToWord(const boundsHandling& bound) const; - //- Return the out-of-bounds handling as an enumeration - boundsHandling wordToBoundsHandling(const word& bound) const; + //- Return the out-of-bounds handling as an enumeration + boundsHandling wordToBoundsHandling(const word& bound) const; + //- Set the out-of-bounds handling from enum, return previous setting + boundsHandling outOfBounds(const boundsHandling& bound); - // Check + //- Check that list is monotonically increasing + // Exit with a FatalError if there is a problem + void check() const; - //- Check that list is monotonically increasing - // Exit with a FatalError if there is a problem - void check() const; + //- Write + void write(Ostream& os) const; - // Edit + // Member Operators - //- Set the out-of-bounds handling from enum, - // return previous setting - boundsHandling outOfBounds(const boundsHandling& bound); + //- Return an element of constant Tuple2<scalar, Type> + const Tuple2<scalar, Type>& operator[](const label) const; - - // Member Operators - - //- Return an element of constant Tuple2<scalar, Type> - const Tuple2<scalar, Type>& operator[](const label) const; - - //- Return an interpolated value - Type operator()(const scalar) const; - - - // I-O - - //- Write - void write(Ostream& os) const; + //- Return an interpolated value + Type operator()(const scalar) const; }; @@ -166,6 +153,8 @@ public: # include "interpolationTable.C" #endif +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + #endif // ************************************************************************* // diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingFlowRateInletVelocity/timeVaryingFlowRateInletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingFlowRateInletVelocity/timeVaryingFlowRateInletVelocityFvPatchVectorField.C index f492d86c7769ee68c63572ab43e2de15b62d7ec7..ba27bdd6fadb8d40665a8ccbd2a7bb5ed4142afb 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingFlowRateInletVelocity/timeVaryingFlowRateInletVelocityFvPatchVectorField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingFlowRateInletVelocity/timeVaryingFlowRateInletVelocityFvPatchVectorField.C @@ -30,12 +30,10 @@ License #include "fvPatchFieldMapper.H" #include "surfaceFields.H" #include "Time.H" -#include "IFstream.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam:: -timeVaryingFlowRateInletVelocityFvPatchVectorField:: +Foam::timeVaryingFlowRateInletVelocityFvPatchVectorField:: timeVaryingFlowRateInletVelocityFvPatchVectorField ( const fvPatch& p, @@ -47,8 +45,7 @@ timeVaryingFlowRateInletVelocityFvPatchVectorField {} -Foam:: -timeVaryingFlowRateInletVelocityFvPatchVectorField:: +Foam::timeVaryingFlowRateInletVelocityFvPatchVectorField:: timeVaryingFlowRateInletVelocityFvPatchVectorField ( const timeVaryingFlowRateInletVelocityFvPatchVectorField& ptf, @@ -62,8 +59,7 @@ timeVaryingFlowRateInletVelocityFvPatchVectorField {} -Foam:: -timeVaryingFlowRateInletVelocityFvPatchVectorField:: +Foam::timeVaryingFlowRateInletVelocityFvPatchVectorField:: timeVaryingFlowRateInletVelocityFvPatchVectorField ( const fvPatch& p, @@ -72,12 +68,11 @@ timeVaryingFlowRateInletVelocityFvPatchVectorField ) : flowRateInletVelocityFvPatchVectorField(p, iF, dict), - timeSeries_(this->db(), dict) + timeSeries_(dict) {} -Foam:: -timeVaryingFlowRateInletVelocityFvPatchVectorField:: +Foam::timeVaryingFlowRateInletVelocityFvPatchVectorField:: timeVaryingFlowRateInletVelocityFvPatchVectorField ( const timeVaryingFlowRateInletVelocityFvPatchVectorField& ptf @@ -88,8 +83,7 @@ timeVaryingFlowRateInletVelocityFvPatchVectorField {} -Foam:: -timeVaryingFlowRateInletVelocityFvPatchVectorField:: +Foam::timeVaryingFlowRateInletVelocityFvPatchVectorField:: timeVaryingFlowRateInletVelocityFvPatchVectorField ( const timeVaryingFlowRateInletVelocityFvPatchVectorField& ptf, @@ -103,8 +97,7 @@ timeVaryingFlowRateInletVelocityFvPatchVectorField // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam:: -timeVaryingFlowRateInletVelocityFvPatchVectorField:: +void Foam::timeVaryingFlowRateInletVelocityFvPatchVectorField:: updateCoeffs() { if (updated()) @@ -117,8 +110,7 @@ updateCoeffs() } -void Foam:: -timeVaryingFlowRateInletVelocityFvPatchVectorField:: +void Foam::timeVaryingFlowRateInletVelocityFvPatchVectorField:: write(Ostream& os) const { flowRateInletVelocityFvPatchVectorField::write(os); diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFvPatchField.C index dc09d678b2257f5b5151228a9614e62833ffbe2a..28b13832a4c8f85c612dc621833cbc15a3631008 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFvPatchField.C @@ -26,7 +26,6 @@ License #include "timeVaryingUniformFixedValueFvPatchField.H" #include "Time.H" -#include "IFstream.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // @@ -53,7 +52,7 @@ timeVaryingUniformFixedValueFvPatchField ) : fixedValueFvPatchField<Type>(p, iF), - timeSeries_(this->db(), dict) + timeSeries_(dict) { if (dict.found("value")) { diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformTotalPressure/timeVaryingUniformTotalPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformTotalPressure/timeVaryingUniformTotalPressureFvPatchScalarField.C index 711fccdbc629b4ccdfa26f552bbd938e6e571286..897514ced587e33b14aca40a95e96cfd5be9be00 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformTotalPressure/timeVaryingUniformTotalPressureFvPatchScalarField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformTotalPressure/timeVaryingUniformTotalPressureFvPatchScalarField.C @@ -29,7 +29,6 @@ License #include "fvPatchFieldMapper.H" #include "volFields.H" #include "surfaceFields.H" -#include "IFstream.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // @@ -66,7 +65,7 @@ timeVaryingUniformTotalPressureFvPatchScalarField psiName_(dict.lookup("psi")), gamma_(readScalar(dict.lookup("gamma"))), p0_(readScalar(dict.lookup("p0"))), - totalPressureTimeSeries_(this->db(), dict) + totalPressureTimeSeries_(dict) { if (dict.found("value")) { @@ -215,7 +214,8 @@ void Foam::timeVaryingUniformTotalPressureFvPatchScalarField::updateCoeffs() } -void Foam::timeVaryingUniformTotalPressureFvPatchScalarField::write(Ostream& os) const +void Foam::timeVaryingUniformTotalPressureFvPatchScalarField:: +write(Ostream& os) const { fvPatchScalarField::write(os); os.writeKeyword("U") << UName_ << token::END_STATEMENT << nl;