diff --git a/src/meshTools/PatchFunction1/ConstantField/ConstantField.C b/src/meshTools/PatchFunction1/ConstantField/ConstantField.C index 6815159711..5ef4d1d974 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::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 @@ -132,6 +147,7 @@ Foam::Field Foam::PatchFunction1Types::ConstantField::getValue fld = uniformValue; } } + return fld; } @@ -147,7 +163,17 @@ Foam::PatchFunction1Types::ConstantField::ConstantField ) : PatchFunction1(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::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 4b10bd59ca..1b825980bc 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::New is.putBack(firstToken); const Type uniformValue = pTraits(is); - const Field value(pp.size(), uniformValue); + const Field value + ( + (faceValues ? pp.size() : pp.nPoints()), + uniformValue + ); return autoPtr> (