diff --git a/src/meshTools/PatchFunction1/ConstantField/ConstantField.C b/src/meshTools/PatchFunction1/ConstantField/ConstantField.C index 6815159711a88366c50fc6fe274bf1fd06f401ab..5ef4d1d974c53bea1833330964b14e381708745e 100644 --- a/src/meshTools/PatchFunction1/ConstantField/ConstantField.C +++ b/src/meshTools/PatchFunction1/ConstantField/ConstantField.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 @@ -43,7 +43,22 @@ Foam::PatchFunction1Types::ConstantField<Type>::ConstantField isUniform_(isUniform), uniformValue_(uniformValue), value_(nonUniformValue) -{} +{ + if (faceValues && nonUniformValue.size() != pp.size()) + { + FatalIOErrorInFunction(dict) + << "Supplied field size " << nonUniformValue.size() + << " is not equal to the number of faces " << pp.size() + << " of patch " << pp.name() << exit(FatalIOError); + } + else if (!faceValues && nonUniformValue.size() != pp.nPoints()) + { + FatalIOErrorInFunction(dict) + << "Supplied field size " << nonUniformValue.size() + << " is not equal to the number of points " << pp.nPoints() + << " of patch " << pp.name() << exit(FatalIOError); + } +} template<class Type> @@ -132,6 +147,7 @@ Foam::Field<Type> Foam::PatchFunction1Types::ConstantField<Type>::getValue fld = uniformValue; } } + return fld; } @@ -147,7 +163,17 @@ Foam::PatchFunction1Types::ConstantField<Type>::ConstantField ) : PatchFunction1<Type>(pp, entryName, dict, faceValues), - value_(getValue(entryName, dict, pp.size(), isUniform_, uniformValue_)) + value_ + ( + getValue + ( + entryName, + dict, + (faceValues ? pp.size() : pp.nPoints()), + isUniform_, + uniformValue_ + ) + ) {} @@ -177,7 +203,12 @@ Foam::PatchFunction1Types::ConstantField<Type>::ConstantField value_(cnst.value_) { // If different sizes do what? - value_.setSize(this->patch_.size()); + value_.setSize + ( + this->faceValues_ + ? this->patch_.size() + : this->patch_.nPoints() + ); if (isUniform_) { value_ = uniformValue_; diff --git a/src/meshTools/PatchFunction1/PatchFunction1New.C b/src/meshTools/PatchFunction1/PatchFunction1New.C index 4b10bd59ca203726f43efc1c9d505cc4d5a7a073..1b825980bcc3012ea40cff498b58d40d53999d22 100644 --- a/src/meshTools/PatchFunction1/PatchFunction1New.C +++ b/src/meshTools/PatchFunction1/PatchFunction1New.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 @@ -69,7 +69,11 @@ Foam::autoPtr<Foam::PatchFunction1<Type>> Foam::PatchFunction1<Type>::New is.putBack(firstToken); const Type uniformValue = pTraits<Type>(is); - const Field<Type> value(pp.size(), uniformValue); + const Field<Type> value + ( + (faceValues ? pp.size() : pp.nPoints()), + uniformValue + ); return autoPtr<PatchFunction1<Type>> (