diff --git a/src/OpenFOAM/Make/files b/src/OpenFOAM/Make/files index 17da5aefef5c108eff6d9aa9e81ca5e23385bb5b..ed23f471d5dfdd72e8b49da31c544f3e07bfc739 100644 --- a/src/OpenFOAM/Make/files +++ b/src/OpenFOAM/Make/files @@ -506,6 +506,7 @@ $(constraintPointPatchFields)/empty/emptyPointPatchFields.C $(constraintPointPatchFields)/symmetry/symmetryPointPatchFields.C $(constraintPointPatchFields)/wedge/wedgePointPatchFields.C $(constraintPointPatchFields)/cyclic/cyclicPointPatchFields.C +$(constraintPointPatchFields)/cyclicSlip/cyclicSlipPointPatchFields.C $(constraintPointPatchFields)/processor/processorPointPatchFields.C derivedPointPatchFields = $(pointPatchFields)/derived diff --git a/src/OpenFOAM/fields/pointPatchFields/basic/basicSymmetry/basicSymmetryPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/basic/basicSymmetry/basicSymmetryPointPatchField.H index 445a67281f2fa01b89d70cef0a418755b9bb3342..5d77b058045f1f0cc8a9ede2562c4d19b61775c8 100644 --- a/src/OpenFOAM/fields/pointPatchFields/basic/basicSymmetry/basicSymmetryPointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/basic/basicSymmetry/basicSymmetryPointPatchField.H @@ -36,6 +36,7 @@ SourceFiles #define basicSymmetryPointPatchField_H #include "pointPatchField.H" +#include "symmetryPointPatch.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -120,6 +121,12 @@ public: // Evaluation functions + //- Return the constraint type this pointPatchField implements + virtual const word& constraintType() const + { + return symmetryPointPatch::typeName; + } + //- Update the patch field virtual void evaluate ( diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/cyclic/cyclicPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/cyclic/cyclicPointPatchField.H index 14785b36eba0709f8083dad628c9830ae045041f..72eabdaaf9f3552f3a412fa21a6a302863c234ed 100644 --- a/src/OpenFOAM/fields/pointPatchFields/constraint/cyclic/cyclicPointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/cyclic/cyclicPointPatchField.H @@ -127,6 +127,14 @@ public: // Member functions + //- Constraint handling + + //- Return the constraint type this pointPatchField implements + virtual const word& constraintType() const + { + return cyclicPointPatch::typeName; + } + //- Cyclic coupled interface functions //- Does the patch field perform the transfromation diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchField.C b/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchField.C new file mode 100644 index 0000000000000000000000000000000000000000..7db347c5a6a041fdcd04ed5a8a35df5a3317519a --- /dev/null +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchField.C @@ -0,0 +1,122 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "cyclicSlipPointPatchField.H" +#include "pointConstraint.H" +#include "transformField.H" +#include "symmTransformField.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Type> +cyclicSlipPointPatchField<Type>::cyclicSlipPointPatchField +( + const pointPatch& p, + const DimensionedField<Type, pointMesh>& iF +) +: + cyclicPointPatchField<Type>(p, iF) +{} + + +template<class Type> +cyclicSlipPointPatchField<Type>::cyclicSlipPointPatchField +( + const pointPatch& p, + const DimensionedField<Type, pointMesh>& iF, + const dictionary& dict +) +: + cyclicPointPatchField<Type>(p, iF, dict) +{} + + +template<class Type> +cyclicSlipPointPatchField<Type>::cyclicSlipPointPatchField +( + const cyclicSlipPointPatchField<Type>& ptf, + const pointPatch& p, + const DimensionedField<Type, pointMesh>& iF, + const pointPatchFieldMapper& mapper +) +: + cyclicPointPatchField<Type>(ptf, p, iF, mapper) +{} + + +template<class Type> +cyclicSlipPointPatchField<Type>::cyclicSlipPointPatchField +( + const cyclicSlipPointPatchField<Type>& ptf, + const DimensionedField<Type, pointMesh>& iF +) +: + cyclicPointPatchField<Type>(ptf, iF) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class Type> +void cyclicSlipPointPatchField<Type>::evaluate(const Pstream::commsTypes) +{ + const vectorField& nHat = this->patch().pointNormals(); + + tmp<Field<Type> > tvalues = + ( + ( + this->patchInternalField() + + transform(I - 2.0*sqr(nHat), this->patchInternalField()) + )/2.0 + ); + + // Get internal field to insert values into + Field<Type>& iF = const_cast<Field<Type>&>(this->internalField()); + + setInInternalField(iF, tvalues()); +} + + +template<class Type> +void cyclicSlipPointPatchField<Type>::applyConstraint +( + const label pointi, + pointConstraint& pc +) const +{ + pc.applyConstraint(this->patch().pointNormals()[pointi]); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchField.H new file mode 100644 index 0000000000000000000000000000000000000000..52c59ab1b632fc0c1ac86d8cd64d0f6ecef5853a --- /dev/null +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchField.H @@ -0,0 +1,154 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::cyclicSlipPointPatchField + +Description + Specialisation of cyclic that constrains to the patch + +SourceFiles + cyclicSlipPointPatchField.C + +\*---------------------------------------------------------------------------*/ + +#ifndef cyclicSlipPointPatchField_H +#define cyclicSlipPointPatchField_H + +#include "cyclicPointPatchField.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class cyclicSlipPointPatchField Declaration +\*---------------------------------------------------------------------------*/ + +template<class Type> +class cyclicSlipPointPatchField +: + public cyclicPointPatchField<Type> +{ + +public: + + //- Runtime type information + TypeName("cyclicSlip"); + + + // Constructors + + //- Construct from patch and internal field + cyclicSlipPointPatchField + ( + const pointPatch&, + const DimensionedField<Type, pointMesh>& + ); + + //- Construct from patch, internal field and dictionary + cyclicSlipPointPatchField + ( + const pointPatch&, + const DimensionedField<Type, pointMesh>&, + const dictionary& + ); + + //- Construct by mapping given patchField<Type> onto a new patch + cyclicSlipPointPatchField + ( + const cyclicSlipPointPatchField<Type>&, + const pointPatch&, + const DimensionedField<Type, pointMesh>&, + const pointPatchFieldMapper& + ); + + //- Construct and return a clone + virtual autoPtr<pointPatchField<Type> > clone() const + { + return autoPtr<pointPatchField<Type> > + ( + new cyclicSlipPointPatchField<Type> + ( + *this + ) + ); + } + + //- Construct as copy setting internal field reference + cyclicSlipPointPatchField + ( + const cyclicSlipPointPatchField<Type>&, + const DimensionedField<Type, pointMesh>& + ); + + //- Construct and return a clone setting internal field reference + virtual autoPtr<pointPatchField<Type> > clone + ( + const DimensionedField<Type, pointMesh>& iF + ) const + { + return autoPtr<pointPatchField<Type> > + ( + new cyclicSlipPointPatchField<Type> + ( + *this, iF + ) + ); + } + + + // Member functions + + //- Update the patch field + virtual void evaluate + ( + const Pstream::commsTypes commsType=Pstream::blocking + ); + + //- Accumulate the effect of constraint direction of this patch + virtual void applyConstraint + ( + const label pointi, + pointConstraint& + ) const; + +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "cyclicSlipPointPatchField.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchFields.C b/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchFields.C new file mode 100644 index 0000000000000000000000000000000000000000..71e09f575fa47fae3a2795055481ef9268e49de3 --- /dev/null +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchFields.C @@ -0,0 +1,43 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "cyclicSlipPointPatchFields.H" +#include "pointPatchFields.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +makePointPatchFields(cyclicSlip); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchFields.H b/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchFields.H new file mode 100644 index 0000000000000000000000000000000000000000..da2196d9be549eb9ed34c27f68f2d80526b196fc --- /dev/null +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/cyclicSlip/cyclicSlipPointPatchFields.H @@ -0,0 +1,49 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#ifndef cyclicSlipPointPatchFields_H +#define cyclicSlipPointPatchFields_H + +#include "cyclicSlipPointPatchField.H" +#include "fieldTypes.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +makePointPatchFieldTypedefs(cyclicSlip); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/empty/emptyPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/empty/emptyPointPatchField.H index cc578731a096aaa67c7a19a9c47dec75d34ff270..bb58e0eeead0e01e17ee04726caffacfd8332a5f 100644 --- a/src/OpenFOAM/fields/pointPatchFields/constraint/empty/emptyPointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/empty/emptyPointPatchField.H @@ -119,6 +119,17 @@ public: ) ); } + + // Member functions + + //- Constraint handling + + //- Return the constraint type this pointPatchField implements + virtual const word& constraintType() const + { + return type(); + } + }; diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/processor/processorPointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/processor/processorPointPatchField.H index b5474e46d7a20cd6ee8b125516d1b926e5e3f0e8..cc1760a7b2b1d3c2cd1540670d796e48425b2a8b 100644 --- a/src/OpenFOAM/fields/pointPatchFields/constraint/processor/processorPointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/processor/processorPointPatchField.H @@ -158,6 +158,15 @@ public: } + //- Constraint handling + + //- Return the constraint type this pointPatchField implements + virtual const word& constraintType() const + { + return type(); + } + + // Evaluation functions //- Evaluate the patch field diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/wedge/wedgePointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/wedge/wedgePointPatchField.H index 5f01f592e55b7fcf8bfd7fcda8beccf6c61f162f..8c62f3e47b42e1db22119271e1daa87c4ac49c04 100644 --- a/src/OpenFOAM/fields/pointPatchFields/constraint/wedge/wedgePointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/wedge/wedgePointPatchField.H @@ -122,6 +122,14 @@ public: // Member functions + //- Constraint handling + + //- Return the constraint type this pointPatchField implements + virtual const word& constraintType() const + { + return type(); + } + // Evaluation functions //- Update the patch field diff --git a/src/OpenFOAM/fields/pointPatchFields/pointPatchField/newPointPatchField.C b/src/OpenFOAM/fields/pointPatchFields/pointPatchField/newPointPatchField.C index c77236f80d05c1299c4b12913b20c59ca6245b20..b14fbeac8fff19d4f196f196301bf01fd5aa1541 100644 --- a/src/OpenFOAM/fields/pointPatchFields/pointPatchField/newPointPatchField.C +++ b/src/OpenFOAM/fields/pointPatchFields/pointPatchField/newPointPatchField.C @@ -50,7 +50,7 @@ Foam::autoPtr<Foam::pointPatchField<Type> > Foam::pointPatchField<Type>::New ( "PointPatchField<Type>::New" "(const word&, const pointPatch&, const Field<Type>&)" - ) << "Unknown patchTypefield type " + ) << "Unknown patchFieldType type " << patchFieldType << endl << endl << "Valid patchField types are :" << endl @@ -58,16 +58,32 @@ Foam::autoPtr<Foam::pointPatchField<Type> > Foam::pointPatchField<Type>::New << exit(FatalError); } - typename pointPatchConstructorTable::iterator patchTypeCstrIter = - pointPatchConstructorTablePtr_->find(p.type()); + autoPtr<pointPatchField<Type> > pfPtr(cstrIter()(p, iF)); - if (patchTypeCstrIter != pointPatchConstructorTablePtr_->end()) + if (pfPtr().constraintType() == p.constraintType()) { - return autoPtr<pointPatchField<Type> >(patchTypeCstrIter()(p, iF)); + // Compatible (constraint-wise) with the patch type + return pfPtr; } else { - return autoPtr<pointPatchField<Type> >(cstrIter()(p, iF)); + // Use default constraint type + typename pointPatchConstructorTable::iterator patchTypeCstrIter = + pointPatchConstructorTablePtr_->find(p.type()); + + if (patchTypeCstrIter == pointPatchConstructorTablePtr_->end()) + { + FatalErrorIn + ( + "PointPatchField<Type>::New" + "(const word&, const pointPatch&, const Field<Type>&)" + ) << "inconsistent patch and patchField types for \n" + << " patch type " << p.type() + << " and patchField type " << patchFieldType + << exit(FatalError); + } + + return patchTypeCstrIter()(p, iF); } } @@ -115,34 +131,44 @@ Foam::autoPtr<Foam::pointPatchField<Type> > Foam::pointPatchField<Type>::New } } + // Construct (but not necesarily returned) + autoPtr<pointPatchField<Type> > pfPtr(cstrIter()(p, iF, dict)); + if ( !dict.found("patchType") || word(dict.lookup("patchType")) != p.type() ) { - typename dictionaryConstructorTable::iterator patchTypeCstrIter - = dictionaryConstructorTablePtr_->find(p.type()); - - if - ( - patchTypeCstrIter != dictionaryConstructorTablePtr_->end() - && patchTypeCstrIter() != cstrIter() - ) + if (pfPtr().constraintType() == p.constraintType()) { - FatalIOErrorIn - ( - "PointPatchField<Type>const pointPatch&, " - "const Field<Type>&, const dictionary&)", - dict - ) << "inconsistent patch and patchField types for \n" - << " patch type " << p.type() - << " and patchField type " << patchFieldType - << exit(FatalIOError); + // Compatible (constraint-wise) with the patch type + return pfPtr; + } + else + { + // Use default constraint type + typename dictionaryConstructorTable::iterator patchTypeCstrIter + = dictionaryConstructorTablePtr_->find(p.type()); + + if (patchTypeCstrIter == pointPatchConstructorTablePtr_->end()) + { + FatalIOErrorIn + ( + "PointPatchField<Type>const pointPatch&, " + "const Field<Type>&, const dictionary&)", + dict + ) << "inconsistent patch and patchField types for \n" + << " patch type " << p.type() + << " and patchField type " << patchFieldType + << exit(FatalIOError); + } + + return patchTypeCstrIter()(p, iF, dict); } } - return autoPtr<pointPatchField<Type> >(cstrIter()(p, iF, dict)); + return cstrIter()(p, iF, dict); } @@ -185,7 +211,7 @@ Foam::autoPtr<Foam::pointPatchField<Type> > Foam::pointPatchField<Type>::New << exit(FatalError); } - return autoPtr<pointPatchField<Type> >(cstrIter()(ptf, p, iF, pfMapper)); + return cstrIter()(ptf, p, iF, pfMapper); } diff --git a/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchField.H index 8961fbb9dbebe63aed7637ad76ce04847a6f2df6..98604bb4bff9fc6c8bbcf587f191ec9fcb49e58b 100644 --- a/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchField.H +++ b/src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchField.H @@ -336,9 +336,15 @@ public: const Field<Type1>& pF ) const; - //- Return the type of the calculated for of pointPatchField + //- Return the type of the calculated form of pointPatchField static const word& calculatedType(); + //- Return the constraint type this pointPatchField implements. + virtual const word& constraintType() const + { + return word::null; + } + // Mapping functions diff --git a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/cyclic/cyclicPointPatch.H b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/cyclic/cyclicPointPatch.H index 4b7090ae432a9ff23ad325115e5c4e9ddb5de585..2682c194c8ecb921db0ba971ba5e97025435b74c 100644 --- a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/cyclic/cyclicPointPatch.H +++ b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/cyclic/cyclicPointPatch.H @@ -113,6 +113,12 @@ public: // Access + //- Return the constraint type this pointPatch implements. + virtual const word& constraintType() const + { + return type(); + } + //- Return the underlying cyclicPolyPatch const cyclicPolyPatch& cyclicPatch() const { diff --git a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/empty/emptyPointPatch.H b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/empty/emptyPointPatch.H index c0450f1ce77a15b343cc177a87457c70ab483c49..1352a71aa3010b383b71723a92b41e0d6e2a9fe9 100644 --- a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/empty/emptyPointPatch.H +++ b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/empty/emptyPointPatch.H @@ -73,6 +73,12 @@ public: // Member Functions + //- Return the constraint type this pointPatch implements. + virtual const word& constraintType() const + { + return type(); + } + //- Accumulate the effect of constraint direction of this patch virtual void applyConstraint ( diff --git a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/processor/processorPointPatch.H b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/processor/processorPointPatch.H index ef30fb27f21bb963b75b111e413cf270111366dd..1654b58d4bf03582abfbaad1bd47aaa9cf0408a8 100644 --- a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/processor/processorPointPatch.H +++ b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/processor/processorPointPatch.H @@ -129,6 +129,12 @@ public: } } + //- Return the constraint type this pointPatch implements. + virtual const word& constraintType() const + { + return type(); + } + //- Return processor number int myProcNo() const { diff --git a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetry/symmetryPointPatch.H b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetry/symmetryPointPatch.H index 16d66dccf844d07378e8a7910cc5d213e49ab327..cc66f9c50531c062d522a54ad884250cefe4f682 100644 --- a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetry/symmetryPointPatch.H +++ b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetry/symmetryPointPatch.H @@ -73,6 +73,12 @@ public: // Member Functions + //- Return the constraint type this pointPatch implements. + virtual const word& constraintType() const + { + return type(); + } + //- Accumulate the effect of constraint direction of this patch virtual void applyConstraint ( diff --git a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/wedge/wedgePointPatch.H b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/wedge/wedgePointPatch.H index 0de34e86614806c154d4ea3979f4fa28857d1c2c..0841de7f9c241b14e46c19294f647643096b085e 100644 --- a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/wedge/wedgePointPatch.H +++ b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/wedge/wedgePointPatch.H @@ -73,6 +73,12 @@ public: // Member Functions + //- Return the constraint type this pointPatch implements. + virtual const word& constraintType() const + { + return type(); + } + //- Accumulate the effect of constraint direction of this patch virtual void applyConstraint ( diff --git a/src/OpenFOAM/meshes/pointMesh/pointPatches/pointPatch/pointPatch.H b/src/OpenFOAM/meshes/pointMesh/pointPatches/pointPatch/pointPatch.H index 76f04d1d1241534c13ca104ee95d06793b0e7d92..e2e01c4553ab52434146729614beb01cc7f51dfb 100644 --- a/src/OpenFOAM/meshes/pointMesh/pointPatches/pointPatch/pointPatch.H +++ b/src/OpenFOAM/meshes/pointMesh/pointPatches/pointPatch/pointPatch.H @@ -157,6 +157,12 @@ public: //- Return point normals virtual const vectorField& pointNormals() const = 0; + //- Return the constraint type this pointPatch implements. + virtual const word& constraintType() const + { + return word::null; + } + //- Accumulate the effect of constraint direction of this patch virtual void applyConstraint ( diff --git a/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolation.C b/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolation.C index 37e61081eda29b3dc26567b785f8abc0863c0c05..36a92ca66b9610da9e921d49fb0effeb09384094 100644 --- a/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolation.C +++ b/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolation.C @@ -620,6 +620,7 @@ volPointInterpolation::~volPointInterpolation() void volPointInterpolation::updateMesh() { makeWeights(); + makePatchPatchAddressing(); }