ENH: PatchFunction1: work with points. See 1046.

This commit is contained in:
mattijs
2019-02-07 10:33:46 +00:00
parent c6cf671d28
commit 9461d950d2
2 changed files with 41 additions and 6 deletions

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2018 OpenCFD Ltd. \\ / A nd | Copyright (C) 2018-2019 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -43,7 +43,22 @@ Foam::PatchFunction1Types::ConstantField<Type>::ConstantField
isUniform_(isUniform), isUniform_(isUniform),
uniformValue_(uniformValue), uniformValue_(uniformValue),
value_(nonUniformValue) 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> template<class Type>
@ -132,6 +147,7 @@ Foam::Field<Type> Foam::PatchFunction1Types::ConstantField<Type>::getValue
fld = uniformValue; fld = uniformValue;
} }
} }
return fld; return fld;
} }
@ -147,7 +163,17 @@ Foam::PatchFunction1Types::ConstantField<Type>::ConstantField
) )
: :
PatchFunction1<Type>(pp, entryName, dict, faceValues), 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_) value_(cnst.value_)
{ {
// If different sizes do what? // If different sizes do what?
value_.setSize(this->patch_.size()); value_.setSize
(
this->faceValues_
? this->patch_.size()
: this->patch_.nPoints()
);
if (isUniform_) if (isUniform_)
{ {
value_ = uniformValue_; value_ = uniformValue_;

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2018 OpenCFD Ltd. \\ / A nd | Copyright (C) 2018-2019 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -69,7 +69,11 @@ Foam::autoPtr<Foam::PatchFunction1<Type>> Foam::PatchFunction1<Type>::New
is.putBack(firstToken); is.putBack(firstToken);
const Type uniformValue = pTraits<Type>(is); 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>> return autoPtr<PatchFunction1<Type>>
( (