diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C index 2d2e1f65512dcce562369d1abffcbe4f3f41a389..179903b082bdf146a685184f34e7ed7609f8598a 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C @@ -91,7 +91,7 @@ Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::kappa return da*sqrt(Theta)* ( 2.0*sqr(alpha1)*g0*(1.0 + e)/sqrtPi - + (9.0/8.0)*sqrtPi*0.25*sqr(1.0 + e)*(2.0*e - 1.0)*sqr(alpha1) + + (9.0/8.0)*sqrtPi*g0*0.25*sqr(1.0 + e)*(2.0*e - 1.0)*sqr(alpha1) /(49.0/16.0 - 33.0*e/16.0) + (15.0/16.0)*sqrtPi*alpha1*(0.5*sqr(e) + 0.25*e - 0.75 + lamda) /((49.0/16.0 - 33.0*e/16.0)*lamda) diff --git a/applications/utilities/mesh/advanced/combinePatchFaces/Make/options b/applications/utilities/mesh/advanced/combinePatchFaces/Make/options index 4f26f666de6b5f60e27a69d0e4e595a1d594c9be..3da3443a27b1e7677ab4670333548fe371e1731a 100644 --- a/applications/utilities/mesh/advanced/combinePatchFaces/Make/options +++ b/applications/utilities/mesh/advanced/combinePatchFaces/Make/options @@ -1,9 +1,9 @@ EXE_INC = \ -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude \ EXE_LIBS = \ - -lmeshTools \ - -lsampling \ + -lfiniteVolume \ -ldynamicMesh diff --git a/applications/utilities/mesh/conversion/foamMeshToFluent/fluentFvMesh.C b/applications/utilities/mesh/conversion/foamMeshToFluent/fluentFvMesh.C index fcb38fb9a5c2ec0097530fbc6ec4b659506f0104..05c27a15df5c10201477ea71cf6621f96c0fba17 100644 --- a/applications/utilities/mesh/conversion/foamMeshToFluent/fluentFvMesh.C +++ b/applications/utilities/mesh/conversion/foamMeshToFluent/fluentFvMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -33,6 +33,7 @@ using std::ios; #include "fluentFvMesh.H" #include "primitiveMesh.H" #include "wallFvPatch.H" +#include "symmetryPlaneFvPatch.H" #include "symmetryFvPatch.H" #include "cellModeller.H" @@ -177,7 +178,11 @@ void Foam::fluentFvMesh::writeFluentMesh() const { fluentMeshFile << 3; } - else if (isA<symmetryFvPatch>(boundary()[patchI])) + else if + ( + isA<symmetryPlaneFvPatch>(boundary()[patchI]) + || isA<symmetryFvPatch>(boundary()[patchI]) + ) { fluentMeshFile << 7; } @@ -280,7 +285,11 @@ void Foam::fluentFvMesh::writeFluentMesh() const { fluentMeshFile << "wall "; } - else if (isA<symmetryFvPatch>(boundary()[patchI])) + else if + ( + isA<symmetryPlaneFvPatch>(boundary()[patchI]) + || isA<symmetryFvPatch>(boundary()[patchI]) + ) { fluentMeshFile << "symmetry "; } diff --git a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict index 507891d356f316fdee9d2a2227c86c19fc49f1aa..87922d974d8a5062b70cba93f757b8c7a1013f3b 100644 --- a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict +++ b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict @@ -401,7 +401,7 @@ addLayersControls // Angle used to pick up medial axis points // Note: changed(corrected) w.r.t 17x! 90 degrees corresponds to 130 // in 17x. - minMedianAxisAngle 90; + minMedialAxisAngle 90; // Reduce layer growth where ratio thickness to medial // distance is large @@ -414,6 +414,9 @@ addLayersControls // default is 0. nSmoothDisplacement 90; + // Optional: limit the number of steps walking away from the surface + nMedialAxisIter 10; + // Mesh shrinking diff --git a/applications/utilities/mesh/manipulation/checkMesh/Make/options b/applications/utilities/mesh/manipulation/checkMesh/Make/options index 70c838b774c8b2609363d066e78b1a19b9306ccd..2ff5dbabfef1b5ac11da7992941505bbec8ae2b0 100644 --- a/applications/utilities/mesh/manipulation/checkMesh/Make/options +++ b/applications/utilities/mesh/manipulation/checkMesh/Make/options @@ -1,5 +1,6 @@ EXE_INC = \ -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude EXE_LIBS = \ diff --git a/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C b/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C index bc0e78a67f847cfe5d670f89ffc4142ffa96dbca..cdbe770d1acdc461e9b77bd62ce02c7e0a805e9c 100644 --- a/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C +++ b/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C @@ -619,19 +619,41 @@ int main(int argc, char *argv[]) const word masterName = groupName + "_master"; const word slaveName = groupName + "_slave"; - dictionary patchDict = patchSource; - patchDict.set("nFaces", 0); - patchDict.set("startFace", 0); - patchDict.set("coupleGroup", groupName); + word groupNameMaster = groupName; + word groupNameSlave = groupName; - addPatch(mesh, masterName, groupName, patchDict); - addPatch(mesh, slaveName, groupName, patchDict); + + dictionary patchDictMaster(patchSource); + patchDictMaster.set("nFaces", 0); + patchDictMaster.set("startFace", 0); + patchDictMaster.set("coupleGroup", groupName); + + dictionary patchDictSlave(patchDictMaster); + + // Note: This is added for the particular case where we want + // master and slave in different groupNames + // (ie 3D thermal baffles) + bool groupBase = false; + if (patchSource.found("groupBase")) + { + groupBase = readBool(patchSource.lookup("groupBase")); + + if (groupBase) + { + groupNameMaster = groupName + "Group_master"; + groupNameSlave = groupName + "Group_slave"; + patchDictMaster.set("coupleGroup", groupNameMaster); + patchDictSlave.set("coupleGroup", groupNameSlave); + } + } + + addPatch(mesh, masterName, groupNameMaster, patchDictMaster); + addPatch(mesh, slaveName, groupNameSlave, patchDictSlave); } } } - // Make sure patches and zoneFaces are synchronised across couples mesh.boundaryMesh().checkParallelSync(true); mesh.faceZones().checkParallelSync(true); @@ -793,6 +815,12 @@ int main(int argc, char *argv[]) else { const dictionary& patchSource = dict.subDict("patchPairs"); + bool groupBase = false; + if (patchSource.found("groupBase")) + { + groupBase = readBool(patchSource.lookup("groupBase")); + } + const word& groupName = selectors[selectorI].name(); if (patchSource.found("patchFields")) @@ -801,23 +829,51 @@ int main(int argc, char *argv[]) ( "patchFields" ); - // Add coupleGroup to all entries - forAllIter(dictionary, patchFieldsDict, iter) + + if (!groupBase) { - if (iter().isDict()) + // Add coupleGroup to all entries + forAllIter(dictionary, patchFieldsDict, iter) { - dictionary& dict = iter().dict(); - dict.set("coupleGroup", groupName); + if (iter().isDict()) + { + dictionary& dict = iter().dict(); + dict.set("coupleGroup", groupName); + } } - } - const labelList& patchIDs = pbm.groupPatchIDs()[groupName]; - forAll(patchIDs, i) + const labelList& patchIDs = + pbm.groupPatchIDs()[groupName]; + + forAll(patchIDs, i) + { + fvMeshTools::setPatchFields + ( + mesh, + patchIDs[i], + patchFieldsDict + ); + } + } + else { + const word masterPatchName(groupName + "_master"); + const word slavePatchName(groupName + "_slave"); + + label patchIMaster = pbm.findPatchID(masterPatchName); + label patchISlave = pbm.findPatchID(slavePatchName); + + fvMeshTools::setPatchFields + ( + mesh, + patchIMaster, + patchFieldsDict + ); + fvMeshTools::setPatchFields ( mesh, - patchIDs[i], + patchISlave, patchFieldsDict ); } diff --git a/applications/utilities/mesh/manipulation/objToVTK/objToVTK.C b/applications/utilities/mesh/manipulation/objToVTK/objToVTK.C index 375e38961b1625b10176931bc955a49055f055cf..ebaf8737b834153883df54981e37c98c8bfc6e2c 100644 --- a/applications/utilities/mesh/manipulation/objToVTK/objToVTK.C +++ b/applications/utilities/mesh/manipulation/objToVTK/objToVTK.C @@ -210,6 +210,14 @@ int main(int argc, char *argv[]) outFile << pt.x() << ' ' << pt.y() << ' ' << pt.z() << nl; } + outFile + << "VERTICES " << points.size() << ' ' << (2 * points.size()) << nl; + + forAll(points, i) + { + outFile << 1 << ' ' << i << nl; + } + label nItems = 0; forAll(polyLines, polyI) { diff --git a/applications/utilities/postProcessing/velocityField/streamFunction/streamFunction.C b/applications/utilities/postProcessing/velocityField/streamFunction/streamFunction.C index de9af38b878de353e317110daa060f21489a8829..11874fe2eadffe65a3630b6965db543b92da37f5 100644 --- a/applications/utilities/postProcessing/velocityField/streamFunction/streamFunction.C +++ b/applications/utilities/postProcessing/velocityField/streamFunction/streamFunction.C @@ -33,6 +33,7 @@ Description #include "fvCFD.H" #include "pointFields.H" #include "emptyPolyPatch.H" +#include "symmetryPlanePolyPatch.H" #include "symmetryPolyPatch.H" #include "wedgePolyPatch.H" #include "OSspecific.H" @@ -286,6 +287,8 @@ int main(int argc, char *argv[]) ( !isType<emptyPolyPatch> (patches[patchNo]) + && !isType<symmetryPlanePolyPatch> + (patches[patchNo]) && !isType<symmetryPolyPatch> (patches[patchNo]) && !isType<wedgePolyPatch> diff --git a/bin/foamJob b/bin/foamJob index 4eda40490e5dfc2307c337131a2621aee08f0eef..20793c3d52079b137a8fca3d9dd58f5ce7857ec1 100755 --- a/bin/foamJob +++ b/bin/foamJob @@ -3,7 +3,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation +# \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation # \\/ M anipulation | #------------------------------------------------------------------------------- # License @@ -50,6 +50,28 @@ USAGE exit 1 } +#for being able to echo strings that have single quotes +echoArgs() { + addSpace="" + + for stringItem in "$@"; do + + echo -n "${addSpace}" + + if [ "${stringItem##* }" = "$stringItem" ] + then + echo -n "$stringItem" + addSpace=" " + else + echo -n "'$stringItem'" + addSpace=" " + fi + + done + + unset stringItem addSpace +} + unset version # replacement for possibly buggy 'which' @@ -217,11 +239,11 @@ then # if [ "$screenOpt" = true ] then - echo "Executing: $mpirun $mpiopts $APPLICATION $@ -parallel | tee log" - $mpirun $mpiopts $APPLICATION $@ -parallel | tee log + echo "Executing: $mpirun $mpiopts $APPLICATION $(echoArgs "$@") -parallel | tee log" + $mpirun $mpiopts $APPLICATION "$@" -parallel | tee log else - echo "Executing: $mpirun $mpiopts $APPLICATION $@ -parallel > log 2>&1" - $mpirun $mpiopts $APPLICATION $@ -parallel > log 2>&1 & + echo "Executing: $mpirun $mpiopts $APPLICATION $(echoArgs "$@") -parallel > log 2>&1" + $mpirun $mpiopts $APPLICATION "$@" -parallel > log 2>&1 & fi else @@ -230,12 +252,12 @@ else # if [ "$screenOpt" = true ] then - echo "Executing: $APPLICATION $@ | tee log &" - $APPLICATION $@ | tee log & + echo "Executing: $APPLICATION $(echoArgs "$@") | tee log &" + $APPLICATION "$@" | tee log & wait $! else - echo "Executing: $APPLICATION $@ > log 2>&1 &" - $APPLICATION $@ > log 2>&1 & + echo "Executing: $APPLICATION $(echoArgs "$@") > log 2>&1 &" + $APPLICATION "$@" > log 2>&1 & fi fi diff --git a/etc/caseDicts/setConstraintTypes b/etc/caseDicts/setConstraintTypes index 1678e2a147933ba98dd05283b45e64ba6586dbad..6b075c7382577d13a2797aab6fe6f14b0f3dcfd3 100644 --- a/etc/caseDicts/setConstraintTypes +++ b/etc/caseDicts/setConstraintTypes @@ -51,6 +51,11 @@ symmetryPlane type symmetryPlane; } +symmetry +{ + type symmetry; +} + wedge { type wedge; diff --git a/etc/controlDict b/etc/controlDict index 8f811534dc06b94560c6e3fba5ab921e5d984803..68d8f86a44fed75a13585f2b46ad519493d827b2 100644 --- a/etc/controlDict +++ b/etc/controlDict @@ -813,6 +813,7 @@ DebugSwitches symmTensorAverageField 0; symmTensorField 0; symmetryPlane 0; + symmetry 0; syringePressure 0; tensorAverageField 0; tensorField 0; diff --git a/src/Allwmake b/src/Allwmake index bafcd93df7c394d0190f511b0a64cd02f84bda88..fa091ed845c2749db93b22af1527bea6c0ee2d47 100755 --- a/src/Allwmake +++ b/src/Allwmake @@ -81,4 +81,6 @@ wmake $makeType regionCoupled postProcessing/Allwmake $* +wmake $makeType sixDoFRigidBodyMotion + # ----------------------------------------------------------------- end-of-file diff --git a/src/OpenFOAM/Make/files b/src/OpenFOAM/Make/files index 0e1224505b25afbc3bd5038e34a6f66942da6a24..42be066ee2e37eb2cd245e32e9920da712841de9 100644 --- a/src/OpenFOAM/Make/files +++ b/src/OpenFOAM/Make/files @@ -411,6 +411,7 @@ $(constraintPolyPatches)/empty/emptyPolyPatch.C $(constraintPolyPatches)/nonuniformTransformCyclic/nonuniformTransformCyclicPolyPatch.C $(constraintPolyPatches)/processorCyclic/processorCyclicPolyPatch.C $(constraintPolyPatches)/processor/processorPolyPatch.C +$(constraintPolyPatches)/symmetryPlane/symmetryPlanePolyPatch.C $(constraintPolyPatches)/symmetry/symmetryPolyPatch.C $(constraintPolyPatches)/wedge/wedgePolyPatch.C @@ -530,6 +531,7 @@ $(constraintPointPatches)/empty/emptyPointPatch.C $(constraintPointPatches)/nonuniformTransformCyclic/nonuniformTransformCyclicPointPatch.C $(constraintPointPatches)/processor/processorPointPatch.C $(constraintPointPatches)/processorCyclic/processorCyclicPointPatch.C +$(constraintPointPatches)/symmetryPlane/symmetryPlanePointPatch.C $(constraintPointPatches)/symmetry/symmetryPointPatch.C $(constraintPointPatches)/wedge/wedgePointPatch.C @@ -599,6 +601,7 @@ $(constraintPointPatchFields)/empty/emptyPointPatchFields.C $(constraintPointPatchFields)/nonuniformTransformCyclic/nonuniformTransformCyclicPointPatchFields.C $(constraintPointPatchFields)/processor/processorPointPatchFields.C $(constraintPointPatchFields)/processorCyclic/processorCyclicPointPatchFields.C +$(constraintPointPatchFields)/symmetryPlane/symmetryPlanePointPatchFields.C $(constraintPointPatchFields)/symmetry/symmetryPointPatchFields.C $(constraintPointPatchFields)/wedge/wedgePointPatchFields.C diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.C b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.C new file mode 100644 index 0000000000000000000000000000000000000000..b91c965e92eecc5a79510ec78db6ee1736441f93 --- /dev/null +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.C @@ -0,0 +1,149 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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 "symmetryPlanePointPatchField.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Type> +symmetryPlanePointPatchField<Type>::symmetryPlanePointPatchField +( + const pointPatch& p, + const DimensionedField<Type, pointMesh>& iF +) +: + basicSymmetryPointPatchField<Type>(p, iF), + symmetryPlanePatch_(refCast<const symmetryPlanePointPatch>(p)) +{} + + +template<class Type> +symmetryPlanePointPatchField<Type>::symmetryPlanePointPatchField +( + const pointPatch& p, + const DimensionedField<Type, pointMesh>& iF, + const dictionary& dict +) +: + basicSymmetryPointPatchField<Type>(p, iF, dict), + symmetryPlanePatch_(refCast<const symmetryPlanePointPatch>(p)) +{ + if (!isType<symmetryPlanePointPatch>(p)) + { + FatalIOErrorIn + ( + "symmetryPlanePointPatchField<Type>::symmetryPlanePointPatchField\n" + "(\n" + " const pointPatch& p,\n" + " const Field<Type>& field,\n" + " const dictionary& dict\n" + ")\n", + dict + ) << "patch " << this->patch().index() << " not symmetry type. " + << "Patch type = " << p.type() + << exit(FatalIOError); + } +} + + +template<class Type> +symmetryPlanePointPatchField<Type>::symmetryPlanePointPatchField +( + const symmetryPlanePointPatchField<Type>& ptf, + const pointPatch& p, + const DimensionedField<Type, pointMesh>& iF, + const pointPatchFieldMapper& mapper +) +: + basicSymmetryPointPatchField<Type>(ptf, p, iF, mapper), + symmetryPlanePatch_(refCast<const symmetryPlanePointPatch>(p)) +{ + if (!isType<symmetryPlanePointPatch>(this->patch())) + { + FatalErrorIn + ( + "symmetryPlanePointPatchField<Type>::symmetryPlanePointPatchField\n" + "(\n" + " const symmetryPlanePointPatchField<Type>& ptf,\n" + " const pointPatch& p,\n" + " const DimensionedField<Type, pointMesh>& iF,\n" + " const pointPatchFieldMapper& mapper\n" + ")\n" + ) << "Field type does not correspond to patch type for patch " + << this->patch().index() << "." << endl + << "Field type: " << typeName << endl + << "Patch type: " << this->patch().type() + << exit(FatalError); + } +} + + +template<class Type> +symmetryPlanePointPatchField<Type>::symmetryPlanePointPatchField +( + const symmetryPlanePointPatchField<Type>& ptf, + const DimensionedField<Type, pointMesh>& iF +) +: + basicSymmetryPointPatchField<Type>(ptf, iF), + symmetryPlanePatch_(ptf.symmetryPlanePatch_) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class Type> +void Foam::symmetryPlanePointPatchField<Type>::evaluate +( + const Pstream::commsTypes +) +{ + vector nHat = symmetryPlanePatch_.n(); + + 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()); + + this->setInInternalField(iF, tvalues()); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.H new file mode 100644 index 0000000000000000000000000000000000000000..c3774789d83324fbaa0e6e770f02066172d25596 --- /dev/null +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.H @@ -0,0 +1,161 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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::symmetryPlanePointPatchField + +Description + A symmetry-plane boundary condition for pointField + +SourceFiles + symmetryPlanePointPatchField.C + +\*---------------------------------------------------------------------------*/ + +#ifndef symmetryPlanePointPatchField_H +#define symmetryPlanePointPatchField_H + +#include "basicSymmetryPointPatchField.H" +#include "symmetryPlanePointPatch.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class symmetryPlanePointPatchField Declaration +\*---------------------------------------------------------------------------*/ + +template<class Type> +class symmetryPlanePointPatchField +: + public basicSymmetryPointPatchField<Type> +{ + // Private data + + //- Local reference cast into the symmetryPlane patch + const symmetryPlanePointPatch& symmetryPlanePatch_; + + +public: + + //- Runtime type information + TypeName(symmetryPlanePointPatch::typeName_()); + + + // Constructors + + //- Construct from patch and internal field + symmetryPlanePointPatchField + ( + const pointPatch&, + const DimensionedField<Type, pointMesh>& + ); + + //- Construct from patch, internal field and dictionary + symmetryPlanePointPatchField + ( + const pointPatch&, + const DimensionedField<Type, pointMesh>&, + const dictionary& + ); + + //- Construct by mapping given patchField<Type> onto a new patch + symmetryPlanePointPatchField + ( + const symmetryPlanePointPatchField<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 symmetryPlanePointPatchField<Type> + ( + *this + ) + ); + } + + //- Construct as copy setting internal field reference + symmetryPlanePointPatchField + ( + const symmetryPlanePointPatchField<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 symmetryPlanePointPatchField<Type> + ( + *this, + iF + ) + ); + } + + + // Member functions + + //- Return the constraint type this pointPatchField implements + virtual const word& constraintType() const + { + return symmetryPlanePointPatch::typeName; + } + + // Evaluation functions + + //- Update the patch field + virtual void evaluate + ( + const Pstream::commsTypes commsType=Pstream::blocking + ); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "symmetryPlanePointPatchField.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchFields.C b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchFields.C new file mode 100644 index 0000000000000000000000000000000000000000..2317f097350354464c2f3b614672819de67f214d --- /dev/null +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchFields.C @@ -0,0 +1,43 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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 "symmetryPlanePointPatchFields.H" +#include "pointPatchFields.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +makePointPatchFields(symmetryPlane); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchFields.H b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchFields.H new file mode 100644 index 0000000000000000000000000000000000000000..61e35ee4fe03b455e56671eb6e0ef7651da4e758 --- /dev/null +++ b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchFields.H @@ -0,0 +1,49 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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 symmetryPlanePointPatchFields_H +#define symmetryPlanePointPatchFields_H + +#include "symmetryPlanePointPatchField.H" +#include "fieldTypes.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +makePointPatchFieldTypedefs(symmetryPlane); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/SolverPerformance.H b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/SolverPerformance.H index d39ecb10a80edf07b7afc15004eaad701cd440da..0bc3fb389e16b4d7b936e38c20ad5070a4b1034c 100644 --- a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/SolverPerformance.H +++ b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/SolverPerformance.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,9 +25,8 @@ Class Foam::SolverPerformance Description - SolverPerformance is a general matrix class in which the coefficients are - stored as three arrays, one for the upper triangle, one for the - lower triangle and a third for the diagonal. + SolverPerformance is the class returned by the LduMatrix solver + containing performance statistics. SourceFiles SolverPerformance.C @@ -72,13 +71,10 @@ Ostream& operator<< ); - /*---------------------------------------------------------------------------*\ Class SolverPerformance Declaration \*---------------------------------------------------------------------------*/ -//- Class returned by the solver -// containing performance statistics template<class Type> class SolverPerformance { diff --git a/src/OpenFOAM/meshes/pointMesh/pointMesh.C b/src/OpenFOAM/meshes/pointMesh/pointMesh.C index de6f88d16cc0cfffa1545a9d3e09e84b5e5650d1..c00c67cdb0f5cd6c2f7443fa3d35520826aa9e3e 100644 --- a/src/OpenFOAM/meshes/pointMesh/pointMesh.C +++ b/src/OpenFOAM/meshes/pointMesh/pointMesh.C @@ -88,6 +88,20 @@ Foam::pointMesh::pointMesh(const polyMesh& pMesh) } +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::pointMesh::~pointMesh() +{ + if (debug) + { + Pout<< "~pointMesh::pointMesh()" + << endl; + } +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + bool Foam::pointMesh::movePoints() { if (debug) diff --git a/src/OpenFOAM/meshes/pointMesh/pointMesh.H b/src/OpenFOAM/meshes/pointMesh/pointMesh.H index e6ac2797614c105d581665814e3ebcf8ea982c91..28180b1252f5307031158657b897014a7416b265 100644 --- a/src/OpenFOAM/meshes/pointMesh/pointMesh.H +++ b/src/OpenFOAM/meshes/pointMesh/pointMesh.H @@ -85,6 +85,10 @@ public: explicit pointMesh(const polyMesh& pMesh); + //- Destructor + ~pointMesh(); + + // Member Functions //- Return number of points diff --git a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetry/symmetryPointPatch.H b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetry/symmetryPointPatch.H index 99041195210d237fd66ddf0acd70f21afdb93a82..35cf991cb96c9d3889b21e20a126bbac2b802436 100644 --- a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetry/symmetryPointPatch.H +++ b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetry/symmetryPointPatch.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,11 +25,14 @@ Class Foam::symmetryPointPatch Description - Symmetry-plane patch. + Symmetry patch for non-planar or multi-plane patches. SourceFiles symmetryPointPatch.C +SeeAlso + symmetryPlanePointPatch + \*---------------------------------------------------------------------------*/ #ifndef symmetryPointPatch_H diff --git a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetryPlane/symmetryPlanePointPatch.C b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetryPlane/symmetryPlanePointPatch.C new file mode 100644 index 0000000000000000000000000000000000000000..f8f70537e9518e4d190187f99f8799ab8746fc6d --- /dev/null +++ b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetryPlane/symmetryPlanePointPatch.C @@ -0,0 +1,71 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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 "symmetryPlanePointPatch.H" +#include "pointConstraint.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(symmetryPlanePointPatch, 0); + + // Add the patch constructor functions to the hash tables + addToRunTimeSelectionTable + ( + facePointPatch, + symmetryPlanePointPatch, + polyPatch + ); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::symmetryPlanePointPatch::symmetryPlanePointPatch +( + const polyPatch& patch, + const pointBoundaryMesh& bm +) +: + facePointPatch(patch, bm), + symmetryPlanePolyPatch_(refCast<const symmetryPlanePolyPatch>(patch)) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::symmetryPlanePointPatch::applyConstraint +( + const label, + pointConstraint& pc +) const +{ + pc.applyConstraint(symmetryPlanePolyPatch_.n()); +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetryPlane/symmetryPlanePointPatch.H b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetryPlane/symmetryPlanePointPatch.H new file mode 100644 index 0000000000000000000000000000000000000000..a791d3828f12d32818da094311b46a71487fd37a --- /dev/null +++ b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetryPlane/symmetryPlanePointPatch.H @@ -0,0 +1,107 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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::symmetryPlanePointPatch + +Description + Symmetry-plane patch. + +SourceFiles + symmetryPlanePointPatch.C + +\*---------------------------------------------------------------------------*/ + +#ifndef symmetryPlanePointPatch_H +#define symmetryPlanePointPatch_H + +#include "facePointPatch.H" +#include "symmetryPlanePolyPatch.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class symmetryPlanePointPatch Declaration +\*---------------------------------------------------------------------------*/ + +class symmetryPlanePointPatch +: + public facePointPatch +{ + // Private data + + //- Local reference cast into the symmetryPlane patch + const symmetryPlanePolyPatch& symmetryPlanePolyPatch_; + + +public: + + //- Runtime type information + TypeName(symmetryPlanePolyPatch::typeName_()); + + + // Constructors + + //- Construct from polyPatch + symmetryPlanePointPatch + ( + const polyPatch& patch, + const pointBoundaryMesh& bm + ); + + + // 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 + ( + const label pointi, + pointConstraint& + ) const; + + //- Return symmetry plane normal + const vector& n() const + { + return symmetryPlanePolyPatch_.n(); + } +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetry/symmetryPolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetry/symmetryPolyPatch.H index 9df659518f7069221510301924fd0dbb59dcd956..c07f46eb69e1bdc35f459d37c9faf259c60e4db8 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetry/symmetryPolyPatch.H +++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetry/symmetryPolyPatch.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,11 +25,14 @@ Class Foam::symmetryPolyPatch Description - Symmetry-plane patch. + Symmetry patch for non-planar or multi-plane patches. SourceFiles symmetryPolyPatch.C +SeeAlso + symmetryPlanePolyPatch + \*---------------------------------------------------------------------------*/ #ifndef symmetryPolyPatch_H @@ -53,7 +56,7 @@ class symmetryPolyPatch public: //- Runtime type information - TypeName("symmetryPlane"); + TypeName("symmetry"); // Constructors diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetryPlane/symmetryPlanePolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetryPlane/symmetryPlanePolyPatch.C new file mode 100644 index 0000000000000000000000000000000000000000..49b48f8df7c902d4d54aa954f347b68b4fc4b17b --- /dev/null +++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetryPlane/symmetryPlanePolyPatch.C @@ -0,0 +1,136 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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 "symmetryPlanePolyPatch.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(symmetryPlanePolyPatch, 0); + + addToRunTimeSelectionTable(polyPatch, symmetryPlanePolyPatch, word); + addToRunTimeSelectionTable(polyPatch, symmetryPlanePolyPatch, dictionary); +} + +// * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * * * * * // + +Foam::symmetryPlanePolyPatch::symmetryPlanePolyPatch +( + const word& name, + const label size, + const label start, + const label index, + const polyBoundaryMesh& bm, + const word& patchType +) +: + polyPatch(name, size, start, index, bm, patchType), + n_(vector::zero) +{} + + +Foam::symmetryPlanePolyPatch::symmetryPlanePolyPatch +( + const word& name, + const dictionary& dict, + const label index, + const polyBoundaryMesh& bm, + const word& patchType +) +: + polyPatch(name, dict, index, bm, patchType), + n_(vector::zero) +{} + + +Foam::symmetryPlanePolyPatch::symmetryPlanePolyPatch +( + const symmetryPlanePolyPatch& pp, + const polyBoundaryMesh& bm +) +: + polyPatch(pp, bm), + n_(vector::zero) +{} + + +Foam::symmetryPlanePolyPatch::symmetryPlanePolyPatch +( + const symmetryPlanePolyPatch& pp, + const polyBoundaryMesh& bm, + const label index, + const label newSize, + const label newStart +) +: + polyPatch(pp, bm, index, newSize, newStart), + n_(vector::zero) +{} + + +Foam::symmetryPlanePolyPatch::symmetryPlanePolyPatch +( + const symmetryPlanePolyPatch& pp, + const polyBoundaryMesh& bm, + const label index, + const labelUList& mapAddressing, + const label newStart +) +: + polyPatch(pp, bm, index, mapAddressing, newStart), + n_(vector::zero) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +const Foam::vector& Foam::symmetryPlanePolyPatch::n() const +{ + // If the symmetry normal is not set calculate it + // as the average face-normal + if (magSqr(n_) < 0.5) + { + const vectorField& nf(faceNormals()); + n_ = gAverage(nf); + + // Check the symmetry plane is planar + forAll(nf, facei) + { + if (magSqr(n_ - nf[facei]) > SMALL) + { + FatalErrorIn("symmetryPlanePolyPatch::n()") + << "Symmetry plane '" << name() << "' is not planar" + << exit(FatalError); + } + } + } + + return n_; +} + + +// ************************************************************************* // diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetryPlane/symmetryPlanePolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetryPlane/symmetryPlanePolyPatch.H new file mode 100644 index 0000000000000000000000000000000000000000..81b8afcd7280b1d4bbc206cb972532cd4a705fc9 --- /dev/null +++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetryPlane/symmetryPlanePolyPatch.H @@ -0,0 +1,177 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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::symmetryPlanePolyPatch + +Description + Symmetry-plane patch. + +SourceFiles + symmetryPlanePolyPatch.C + +\*---------------------------------------------------------------------------*/ + +#ifndef symmetryPlanePolyPatch_H +#define symmetryPlanePolyPatch_H + +#include "polyPatch.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class symmetryPlanePolyPatch Declaration +\*---------------------------------------------------------------------------*/ + +class symmetryPlanePolyPatch +: + public polyPatch +{ + // Private data + + //- Symmetry plane normal (calculated on demand) + mutable vector n_; + + +public: + + //- Runtime type information + TypeName("symmetryPlane"); + + + // Constructors + + //- Construct from components + symmetryPlanePolyPatch + ( + const word& name, + const label size, + const label start, + const label index, + const polyBoundaryMesh& bm, + const word& patchType + ); + + //- Construct from dictionary + symmetryPlanePolyPatch + ( + const word& name, + const dictionary& dict, + const label index, + const polyBoundaryMesh& bm, + const word& patchType + ); + + //- Construct as copy, resetting the boundary mesh + symmetryPlanePolyPatch + ( + const symmetryPlanePolyPatch&, + const polyBoundaryMesh& + ); + + //- Construct given the original patch and resetting the + // face list and boundary mesh information + symmetryPlanePolyPatch + ( + const symmetryPlanePolyPatch& pp, + const polyBoundaryMesh& bm, + const label index, + const label newSize, + const label newStart + ); + + //- Construct given the original patch and a map + symmetryPlanePolyPatch + ( + const symmetryPlanePolyPatch& pp, + const polyBoundaryMesh& bm, + const label index, + const labelUList& mapAddressing, + const label newStart + ); + + //- Construct and return a clone, resetting the boundary mesh + virtual autoPtr<polyPatch> clone(const polyBoundaryMesh& bm) const + { + return autoPtr<polyPatch>(new symmetryPlanePolyPatch(*this, bm)); + } + + //- Construct and return a clone, resetting the face list + // and boundary mesh + virtual autoPtr<polyPatch> clone + ( + const polyBoundaryMesh& bm, + const label index, + const label newSize, + const label newStart + ) const + { + return autoPtr<polyPatch> + ( + new symmetryPlanePolyPatch(*this, bm, index, newSize, newStart) + ); + } + + //- Construct and return a clone, resetting the face list + // and boundary mesh + virtual autoPtr<polyPatch> clone + ( + const polyBoundaryMesh& bm, + const label index, + const labelUList& mapAddressing, + const label newStart + ) const + { + return autoPtr<polyPatch> + ( + new symmetryPlanePolyPatch + ( + *this, + bm, + index, + mapAddressing, + newStart + ) + ); + } + + + // Member Functions + + //- Return symmetry plane normal + const vector& n() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/OpenFOAM/primitives/septernion/septernion.C b/src/OpenFOAM/primitives/septernion/septernion.C index ffac2bd6092ec88e443cb6c196a3c765303d17a6..67cae051fdbff5ff126e6d25704d1a0f8adbc18d 100644 --- a/src/OpenFOAM/primitives/septernion/septernion.C +++ b/src/OpenFOAM/primitives/septernion/septernion.C @@ -59,6 +59,17 @@ Foam::word Foam::name(const septernion& s) } +Foam::septernion Foam::slerp +( + const septernion& qa, + const septernion& qb, + const scalar t +) +{ + return septernion((1.0-t)*qa.t()+t*qb.t(), slerp(qa.r(), qb.r(), t)); +} + + // * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // Foam::Istream& Foam::operator>>(Istream& is, septernion& s) diff --git a/src/OpenFOAM/primitives/septernion/septernion.H b/src/OpenFOAM/primitives/septernion/septernion.H index 03253ed7b9325b43d7ca18cf9a251ec47f0f04f6..b6a672f3ecc409e6656c03c05b747ca21730be88 100644 --- a/src/OpenFOAM/primitives/septernion/septernion.H +++ b/src/OpenFOAM/primitives/septernion/septernion.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -157,6 +157,13 @@ inline septernion inv(const septernion& tr); //- Return a string representation of a septernion word name(const septernion&); +//- Spherical linear interpolation of septernions. 0 for qa, 1 for qb +septernion slerp +( + const septernion& qa, + const septernion& qb, + const scalar t +); //- Data associated with septernion type are contiguous template<> diff --git a/src/TurbulenceModels/Allwmake b/src/TurbulenceModels/Allwmake index 561610c0cefbb5761f7d569659e4f9d65021c5f7..84deb51c932692c3d145f89a2a89760fd29f2f7a 100755 --- a/src/TurbulenceModels/Allwmake +++ b/src/TurbulenceModels/Allwmake @@ -3,9 +3,9 @@ cd ${0%/*} || exit 1 # run from this directory makeType=${1:-libso} set -x -wmake libso turbulenceModels -wmake libso incompressible -wmake libso compressible +wmake $makeType turbulenceModels +wmake $makeType incompressible +wmake $makeType compressible wmakeLnInclude phaseIncompressible wmakeLnInclude phaseCompressible diff --git a/src/dynamicFvMesh/Make/files b/src/dynamicFvMesh/Make/files index 42105a9a60d3f17ca134598ab8c0264f7f22c2cc..0403ea42edff6119dd4e0982c708a6ef2a9cb901 100644 --- a/src/dynamicFvMesh/Make/files +++ b/src/dynamicFvMesh/Make/files @@ -18,5 +18,6 @@ $(solidBodyMotionFunctions)/axisRotationMotion/axisRotationMotion.C $(solidBodyMotionFunctions)/multiMotion/multiMotion.C $(solidBodyMotionFunctions)/oscillatingLinearMotion/oscillatingLinearMotion.C $(solidBodyMotionFunctions)/oscillatingRotatingMotion/oscillatingRotatingMotion.C +solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C LIB = $(FOAM_LIBBIN)/libdynamicFvMesh diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C b/src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C new file mode 100644 index 0000000000000000000000000000000000000000..f925d3a20be74341396ea605bfc48967af8f81ce --- /dev/null +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C @@ -0,0 +1,197 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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 "solidBodyMotionDisplacementPointPatchVectorField.H" +#include "transformField.H" +#include "addToRunTimeSelectionTable.H" +#include "pointPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * * // + +solidBodyMotionDisplacementPointPatchVectorField:: +solidBodyMotionDisplacementPointPatchVectorField +( + const pointPatch& p, + const DimensionedField<vector, pointMesh>& iF +) +: + fixedValuePointPatchVectorField(p, iF), + SBMFPtr_() +{} + + +solidBodyMotionDisplacementPointPatchVectorField:: +solidBodyMotionDisplacementPointPatchVectorField +( + const pointPatch& p, + const DimensionedField<vector, pointMesh>& iF, + const dictionary& dict +) +: + fixedValuePointPatchVectorField(p, iF, dict, false), + SBMFPtr_(solidBodyMotionFunction::New(dict, this->db().time())) +{ + if (!dict.found("value")) + { + // Determine current local points and offset + fixedValuePointPatchVectorField::operator== + ( + transform(SBMFPtr_().transformation(), localPoints0()) + -localPoints0() + ); + } +} + + +solidBodyMotionDisplacementPointPatchVectorField:: +solidBodyMotionDisplacementPointPatchVectorField +( + const solidBodyMotionDisplacementPointPatchVectorField& ptf, + const pointPatch& p, + const DimensionedField<vector, pointMesh>& iF, + const pointPatchFieldMapper& mapper +) +: + fixedValuePointPatchVectorField(ptf, p, iF, mapper), + SBMFPtr_(ptf.SBMFPtr_().clone().ptr()) +{ + // For safety re-evaluate + + fixedValuePointPatchVectorField::operator== + ( + transform(SBMFPtr_().transformation(), localPoints0()) + -localPoints0() + ); +} + + +solidBodyMotionDisplacementPointPatchVectorField:: +solidBodyMotionDisplacementPointPatchVectorField +( + const solidBodyMotionDisplacementPointPatchVectorField& ptf +) +: + fixedValuePointPatchVectorField(ptf), + SBMFPtr_(ptf.SBMFPtr_().clone().ptr()) +{} + + +solidBodyMotionDisplacementPointPatchVectorField:: +solidBodyMotionDisplacementPointPatchVectorField +( + const solidBodyMotionDisplacementPointPatchVectorField& ptf, + const DimensionedField<vector, pointMesh>& iF +) +: + fixedValuePointPatchVectorField(ptf, iF), + SBMFPtr_(ptf.SBMFPtr_().clone().ptr()) +{ + // For safety re-evaluate + + fixedValuePointPatchVectorField::operator== + ( + transform(SBMFPtr_().transformation(), localPoints0()) + -localPoints0() + ); +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +const pointField& +solidBodyMotionDisplacementPointPatchVectorField::localPoints0() const +{ + if (!localPoints0Ptr_.valid()) + { + pointIOField points0 + ( + IOobject + ( + "points", + this->db().time().constant(), + polyMesh::meshSubDir, + this->db(), + IOobject::MUST_READ, + IOobject::NO_WRITE, + false + ) + ); + + localPoints0Ptr_.reset(new pointField(points0, patch().meshPoints())); + } + return localPoints0Ptr_(); +} + + +void solidBodyMotionDisplacementPointPatchVectorField::updateCoeffs() +{ + if (this->updated()) + { + return; + } + + // Determine current local points and offset + fixedValuePointPatchVectorField::operator== + ( + transform(SBMFPtr_().transformation(), localPoints0()) + -localPoints0() + ); + + fixedValuePointPatchVectorField::updateCoeffs(); +} + + +void solidBodyMotionDisplacementPointPatchVectorField:: +write(Ostream& os) const +{ + // Note: write value + fixedValuePointPatchVectorField::write(os); + + os.writeKeyword(solidBodyMotionFunction::typeName) << SBMFPtr_->type() + << token::END_STATEMENT << nl; + os << indent << word(SBMFPtr_->type() + "Coeffs"); + SBMFPtr_->writeData(os); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +makePointPatchTypeField +( + pointPatchVectorField, + solidBodyMotionDisplacementPointPatchVectorField +); + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.H new file mode 100644 index 0000000000000000000000000000000000000000..c8319cd95fd75392be69d50b9d94eda3d35c637b --- /dev/null +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.H @@ -0,0 +1,169 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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::solidBodyMotionDisplacementPointPatchVectorField + +Description + Enables the specification of a fixed value boundary condition using the + solid body motion functions. + +SourceFiles + solidBodyMotionDisplacementPointPatchVectorField.C + +\*---------------------------------------------------------------------------*/ + +#ifndef solidBodyMotionDisplacementPointPatchVectorField_H +#define solidBodyMotionDisplacementPointPatchVectorField_H + +#include "solidBodyMotionFunction.H" +#include "fixedValuePointPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class solidBodyMotionDisplacementPointPatchVectorField Declaration +\*---------------------------------------------------------------------------*/ + +class solidBodyMotionDisplacementPointPatchVectorField +: + public fixedValuePointPatchVectorField +{ + // Private data + + //- The motion control function + autoPtr<solidBodyMotionFunction> SBMFPtr_; + + mutable autoPtr<pointField> localPoints0Ptr_; + + +public: + + //- Runtime type information + TypeName("solidBodyMotionDisplacement"); + + + // Constructors + + //- Construct from patch and internal field + solidBodyMotionDisplacementPointPatchVectorField + ( + const pointPatch&, + const DimensionedField<vector, pointMesh>& + ); + + //- Construct from patch, internal field and dictionary + solidBodyMotionDisplacementPointPatchVectorField + ( + const pointPatch&, + const DimensionedField<vector, pointMesh>&, + const dictionary& + ); + + //- Construct by mapping given patchField<vector> onto a new patch + solidBodyMotionDisplacementPointPatchVectorField + ( + const solidBodyMotionDisplacementPointPatchVectorField&, + const pointPatch&, + const DimensionedField<vector, pointMesh>&, + const pointPatchFieldMapper& + ); + + //- Construct as copy + solidBodyMotionDisplacementPointPatchVectorField + ( + const solidBodyMotionDisplacementPointPatchVectorField& + ); + + //- Construct and return a clone + virtual autoPtr<pointPatchField<vector> > clone() const + { + return autoPtr<pointPatchField<vector> > + ( + new solidBodyMotionDisplacementPointPatchVectorField + ( + *this + ) + ); + } + + //- Construct as copy setting internal field reference + solidBodyMotionDisplacementPointPatchVectorField + ( + const solidBodyMotionDisplacementPointPatchVectorField&, + const DimensionedField<vector, pointMesh>& + ); + + + //- Construct and return a clone setting internal field reference + virtual autoPtr<pointPatchField<vector> > clone + ( + const DimensionedField<vector, pointMesh>& iF + ) const + { + return autoPtr<pointPatchField<vector> > + ( + new solidBodyMotionDisplacementPointPatchVectorField + ( + *this, + iF + ) + ); + } + + + // Member functions + + // Access + + //- Return the fluctuation scale + const solidBodyMotionFunction& motion() const + { + return SBMFPtr_(); + } + + const pointField& localPoints0() const; + + // Evaluation functions + + //- Update the coefficients associated with the patch field + virtual void updateCoeffs(); + + + //- Write + virtual void write(Ostream&) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/SDA/SDA.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/SDA/SDA.H index f24afc9dc666e9387ef1157c4209ee41d61665a0..67bef0f9ed56958e5b6ac87e386261fa8efdd594 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/SDA/SDA.H +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/SDA/SDA.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -118,6 +118,19 @@ public: const Time& runTime ); + //- Construct and return a clone + virtual autoPtr<solidBodyMotionFunction> clone() const + { + return autoPtr<solidBodyMotionFunction> + ( + new SDA + ( + SBMFCoeffs_, + time_ + ) + ); + } + //- Destructor virtual ~SDA(); diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.H index bc6b67936512c83294712de2980ed106eddddc25..9f78e72d1b0cb9a8af27d05f1d0da82fbea5bba3 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.H +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.H @@ -88,6 +88,19 @@ public: const Time& runTime ); + //- Construct and return a clone + virtual autoPtr<solidBodyMotionFunction> clone() const + { + return autoPtr<solidBodyMotionFunction> + ( + new axisRotationMotion + ( + SBMFCoeffs_, + time_ + ) + ); + } + //- Destructor virtual ~axisRotationMotion(); diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/linearMotion/linearMotion.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/linearMotion/linearMotion.H index cd79131d7763a334b5a32513a7afa8eacbcbcfc2..036ed957b63a48c9dbe2ff1e19a5d8786e61fc8d 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/linearMotion/linearMotion.H +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/linearMotion/linearMotion.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -84,6 +84,19 @@ public: const Time& runTime ); + //- Construct and return a clone + virtual autoPtr<solidBodyMotionFunction> clone() const + { + return autoPtr<solidBodyMotionFunction> + ( + new linearMotion + ( + SBMFCoeffs_, + time_ + ) + ); + } + //- Destructor virtual ~linearMotion(); diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/multiMotion/multiMotion.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/multiMotion/multiMotion.H index 9bbf045efa99528fa05d670f0b0389d710030005..93eb8dd8e53b6a465ef44f732045d266c1601e49 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/multiMotion/multiMotion.H +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/multiMotion/multiMotion.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -84,6 +84,19 @@ public: const Time& runTime ); + //- Construct and return a clone + virtual autoPtr<solidBodyMotionFunction> clone() const + { + return autoPtr<solidBodyMotionFunction> + ( + new multiMotion + ( + SBMFCoeffs_, + time_ + ) + ); + } + //- Destructor virtual ~multiMotion(); diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.H index a3251b80c912e7ed956be5c4e1e1508a3454346f..d080f486ef414c9027f6c40ff010e4f06320e02e 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.H +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -87,6 +87,19 @@ public: const Time& runTime ); + //- Construct and return a clone + virtual autoPtr<solidBodyMotionFunction> clone() const + { + return autoPtr<solidBodyMotionFunction> + ( + new oscillatingLinearMotion + ( + SBMFCoeffs_, + time_ + ) + ); + } + //- Destructor virtual ~oscillatingLinearMotion(); diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.H index cbe10a95ecc2a186e1970855e3bdd9511902396f..60692b98f2f8bfe0cf5f7dddb141b86a8def077a 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.H +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.H @@ -90,6 +90,19 @@ public: const Time& runTime ); + //- Construct and return a clone + virtual autoPtr<solidBodyMotionFunction> clone() const + { + return autoPtr<solidBodyMotionFunction> + ( + new oscillatingRotatingMotion + ( + SBMFCoeffs_, + time_ + ) + ); + } + //- Destructor virtual ~oscillatingRotatingMotion(); diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.H index 87ec08746fb45af2ed36ca9059a8cd2c0f423f1f..169d5d17aa8b62abcbfa0dae44e2136e331a2b04 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.H +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.H @@ -95,6 +95,19 @@ public: const Time& runTime ); + //- Construct and return a clone + virtual autoPtr<solidBodyMotionFunction> clone() const + { + return autoPtr<solidBodyMotionFunction> + ( + new rotatingMotion + ( + SBMFCoeffs_, + time_ + ) + ); + } + //- Destructor virtual ~rotatingMotion(); diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C index 10a3bb079965bcb6902d0922d6b08c3f52ae459d..214ac972a153284d2f3ce9cdb1788cd6b4a23c5b 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -70,4 +70,10 @@ bool Foam::solidBodyMotionFunction::read(const dictionary& SBMFCoeffs) } +void Foam::solidBodyMotionFunction::writeData(Ostream& os) const +{ + os << SBMFCoeffs_; +} + + // ************************************************************************* // diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.H index 77a8920a22bef07db95b90917c2a20835f773a38..075e74629795f22b02706a8e4c985f01a1d319f3 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.H +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -106,6 +106,9 @@ public: const Time& runTime ); + //- Construct and return a clone + virtual autoPtr<solidBodyMotionFunction> clone() const = 0; + // Selectors @@ -128,6 +131,9 @@ public: //- Update properties from given dictionary virtual bool read(const dictionary& SBMFCoeffs) = 0; + + //- Write in dictionary format + virtual void writeData(Ostream&) const; }; diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.H index 763d7105cfe6bc7bef35835b569f377c8fb73ce4..0a5bfc736f7dcdef46f3ed6eeee632f655317b63 100644 --- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.H +++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -100,6 +100,19 @@ public: const Time& runTime ); + //- Construct and return a clone + virtual autoPtr<solidBodyMotionFunction> clone() const + { + return autoPtr<solidBodyMotionFunction> + ( + new tabulated6DoFMotion + ( + SBMFCoeffs_, + time_ + ) + ); + } + //- Destructor virtual ~tabulated6DoFMotion(); diff --git a/src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.C b/src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.C index 970e0dac478073bb6514ed4f7d715e6049437c72..ca8755562787c2c4c7351904fd8525e46e6657a9 100644 --- a/src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.C +++ b/src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.C @@ -43,6 +43,39 @@ defineTypeNameAndDebug(extrudePatchMesh, 0); // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // +extrudePatchMesh::extrudePatchMesh +( + const fvMesh& mesh, + const fvPatch& patch, + const dictionary& dict, + const word regionName, + const List<polyPatch*>& regionPatches +) +: + fvMesh + ( + IOobject + ( + regionName, + mesh.facesInstance(), + mesh, + IOobject::READ_IF_PRESENT, + IOobject::NO_WRITE, + true + ), + xferCopy(pointField()), + xferCopy(faceList()), + xferCopy(labelList()), + xferCopy(labelList()), + false + ), + extrudedPatch_(patch.patch()), + dict_(dict) +{ + extrudeMesh(regionPatches); +} + + extrudePatchMesh::extrudePatchMesh ( const fvMesh& mesh, @@ -68,11 +101,59 @@ extrudePatchMesh::extrudePatchMesh xferCopy(labelList()), false ), - extrudedPatch_(patch.patch()) + extrudedPatch_(patch.patch()), + dict_(dict) +{ + + List<polyPatch*> regionPatches(3); + List<word> patchNames(regionPatches.size()); + List<word> patchTypes(regionPatches.size()); + PtrList<dictionary> dicts(regionPatches.size()); + + forAll (dicts, patchI) + { + if (!dicts.set(patchI)) + { + dicts.set(patchI, new dictionary()); + } + } + + dicts[bottomPatchID] = dict_.subDict("bottomCoeffs"); + dicts[sidePatchID] = dict_.subDict("sideCoeffs"); + dicts[topPatchID] = dict_.subDict("topCoeffs"); + + forAll (dicts, patchI) + { + dicts[patchI].lookup("name") >> patchNames[patchI]; + dicts[patchI].lookup("type") >> patchTypes[patchI]; + } + + forAll (regionPatches, patchI) + { + dictionary& patchDict = dicts[patchI]; + patchDict.set("nFaces", 0); + patchDict.set("startFace", 0); + + regionPatches[patchI] = polyPatch::New + ( + patchNames[patchI], + patchDict, + patchI, + mesh.boundaryMesh() + ).ptr(); + + } + + extrudeMesh(regionPatches); + +} + + +void extrudePatchMesh::extrudeMesh(const List<polyPatch*>& regionPatches) { if (this->boundaryMesh().size() == 0) { - bool columnCells = readBool(dict.lookup("columnCells")); + bool columnCells = readBool(dict_.lookup("columnCells")); PackedBoolList nonManifoldEdge(extrudedPatch_.nEdges()); for (label edgeI = 0; edgeI < extrudedPatch_.nInternalEdges(); edgeI++) @@ -83,7 +164,7 @@ extrudePatchMesh::extrudePatchMesh } } - autoPtr<extrudeModel> model_(extrudeModel::New(dict)); + autoPtr<extrudeModel> model_(extrudeModel::New(dict_)); faceList pointGlobalRegions; faceList pointLocalRegions; @@ -180,7 +261,7 @@ extrudePatchMesh::extrudePatchMesh pointLocalRegions, localRegionPoints ); - +/* List<polyPatch*> regionPatches(3); List<word> patchNames(regionPatches.size()); List<word> patchTypes(regionPatches.size()); @@ -194,9 +275,9 @@ extrudePatchMesh::extrudePatchMesh } } - dicts[bottomPatchID] = dict.subDict("bottomCoeffs"); - dicts[sidePatchID] = dict.subDict("sideCoeffs"); - dicts[topPatchID] = dict.subDict("topCoeffs"); + dicts[bottomPatchID] = dict_.subDict("bottomCoeffs"); + dicts[sidePatchID] = dict_.subDict("sideCoeffs"); + dicts[topPatchID] = dict_.subDict("topCoeffs"); forAll (dicts, patchI) { @@ -219,7 +300,7 @@ extrudePatchMesh::extrudePatchMesh ).ptr(); } - +*/ this->clearOut(); this->removeFvBoundary(); this->addFvPatches(regionPatches, true); diff --git a/src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.H b/src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.H index 0ced75eec68c08f9e8b340ea8e36ed7e9a16eaf5..6fc480b1bd2ec2e9f2bb4fcf0d2382c867d0e71a 100644 --- a/src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.H +++ b/src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.H @@ -105,6 +105,15 @@ private: //- Const reference to the patch from which this mesh is extruded const polyPatch& extrudedPatch_; + //- Model dictionary + dictionary dict_; + + + // Private member functions + + //- Extrude mesh using polyPatches + void extrudeMesh(const List<polyPatch*>& regionPatches); + public: @@ -123,6 +132,17 @@ public: const word ); + //- Construct from mesh, patch, dictionary and new mesh + // polyPatch information + extrudePatchMesh + ( + const fvMesh&, + const fvPatch&, + const dictionary&, + const word, + const List<polyPatch*>& polyPatches + ); + //- Destructor virtual ~extrudePatchMesh(); diff --git a/src/dynamicMesh/motionSmoother/motionSmootherAlgo.C b/src/dynamicMesh/motionSmoother/motionSmootherAlgo.C index b6c1bd183c3b9839f628297a3e6dbec427229f79..a953c66ea6cec8f555429309a11808edee84bd66 100644 --- a/src/dynamicMesh/motionSmoother/motionSmootherAlgo.C +++ b/src/dynamicMesh/motionSmoother/motionSmootherAlgo.C @@ -169,7 +169,7 @@ void Foam::motionSmootherAlgo::minSmooth } // Single and multi-patch constraints - pointConstraints::New(newFld.mesh()).constrain(newFld, false); + pointConstraints::New(mesh()).constrain(newFld, false); } @@ -202,7 +202,7 @@ void Foam::motionSmootherAlgo::minSmooth } // Single and multi-patch constraints - pointConstraints::New(newFld.mesh()).constrain(newFld, false); + pointConstraints::New(mesh()).constrain(newFld, false); } @@ -224,7 +224,7 @@ void Foam::motionSmootherAlgo::scaleField } // Single and multi-patch constraints - pointConstraints::New(fld.mesh()).constrain(fld, false); + pointConstraints::New(mesh()).constrain(fld, false); } @@ -266,7 +266,7 @@ void Foam::motionSmootherAlgo::subtractField } // Single and multi-patch constraints - pointConstraints::New(fld.mesh()).constrain(fld); + pointConstraints::New(mesh()).constrain(fld); } @@ -476,7 +476,7 @@ void Foam::motionSmootherAlgo::setDisplacementPatchFields } // Multi-patch constraints - pointConstraints::New(displacement.mesh()).constrainCorners(displacement); + pointConstraints::New(displacement.mesh()()).constrainCorners(displacement); // Adapt the fixedValue bc's (i.e. copy internal point data to // boundaryField for all affected patches) to take the changes caused @@ -622,7 +622,7 @@ void Foam::motionSmootherAlgo::correctBoundaryConditions } // Multi-patch constraints - pointConstraints::New(displacement.mesh()).constrainCorners(displacement); + pointConstraints::New(displacement.mesh()()).constrainCorners(displacement); // Correct for problems introduced by corner constraints syncTools::syncPointList diff --git a/src/dynamicMesh/motionSmoother/motionSmootherAlgoTemplates.C b/src/dynamicMesh/motionSmoother/motionSmootherAlgoTemplates.C index fa847ff328c3294d09467f715c41494959d2407e..f78a11a9a3810541d6da13e50c52df536b34b18f 100644 --- a/src/dynamicMesh/motionSmoother/motionSmootherAlgoTemplates.C +++ b/src/dynamicMesh/motionSmoother/motionSmootherAlgoTemplates.C @@ -229,7 +229,7 @@ Foam::motionSmootherAlgo::avg } // Single and multi-patch constraints - pointConstraints::New(res.mesh()).constrain(res, false); + pointConstraints::New(mesh).constrain(res, false); return tres; } @@ -256,7 +256,7 @@ void Foam::motionSmootherAlgo::smooth } // Single and multi-patch constraints - pointConstraints::New(newFld.mesh()).constrain(newFld, false); + pointConstraints::New(mesh_).constrain(newFld, false); } diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files index 67deac58109ac4285d0e2b029048916a76e7de02..0bcfcf48a575f19a1d2aa01748f8e5ba00385db1 100644 --- a/src/finiteVolume/Make/files +++ b/src/finiteVolume/Make/files @@ -24,6 +24,7 @@ $(constraintFvPatches)/empty/emptyFvPatch.C $(constraintFvPatches)/nonuniformTransformCyclic/nonuniformTransformCyclicFvPatch.C $(constraintFvPatches)/processor/processorFvPatch.C $(constraintFvPatches)/processorCyclic/processorCyclicFvPatch.C +$(constraintFvPatches)/symmetryPlane/symmetryPlaneFvPatch.C $(constraintFvPatches)/symmetry/symmetryFvPatch.C $(constraintFvPatches)/wedge/wedgeFvPatch.C @@ -119,6 +120,8 @@ $(constraintFvPatchFields)/nonuniformTransformCyclic/nonuniformTransformCyclicFv $(constraintFvPatchFields)/processor/processorFvPatchFields.C $(constraintFvPatchFields)/processor/processorFvPatchScalarField.C $(constraintFvPatchFields)/processorCyclic/processorCyclicFvPatchFields.C +$(constraintFvPatchFields)/symmetryPlane/symmetryPlaneFvPatchFields.C +$(constraintFvPatchFields)/symmetryPlane/symmetryPlaneFvPatchScalarField.C $(constraintFvPatchFields)/symmetry/symmetryFvPatchFields.C $(constraintFvPatchFields)/wedge/wedgeFvPatchFields.C $(constraintFvPatchFields)/wedge/wedgeFvPatchScalarField.C @@ -213,6 +216,7 @@ $(constraintFvsPatchFields)/empty/emptyFvsPatchFields.C $(constraintFvsPatchFields)/nonuniformTransformCyclic/nonuniformTransformCyclicFvsPatchFields.C $(constraintFvsPatchFields)/processor/processorFvsPatchFields.C $(constraintFvsPatchFields)/processorCyclic/processorCyclicFvsPatchFields.C +$(constraintFvsPatchFields)/symmetryPlane/symmetryPlaneFvsPatchFields.C $(constraintFvsPatchFields)/symmetry/symmetryFvsPatchFields.C $(constraintFvsPatchFields)/wedge/wedgeFvsPatchFields.C diff --git a/src/finiteVolume/fields/fvPatchFields/basic/basicSymmetry/basicSymmetryFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/basic/basicSymmetry/basicSymmetryFvPatchScalarField.C index 32ab1deb1f50961e5734a9a6ea2147ac70e1cb15..40f3f5467fb4990d62566e781ce5b6718a21d4d9 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/basicSymmetry/basicSymmetryFvPatchScalarField.C +++ b/src/finiteVolume/fields/fvPatchFields/basic/basicSymmetry/basicSymmetryFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -26,22 +26,21 @@ License #include "basicSymmetryFvPatchField.H" #include "volFields.H" -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<> -tmp<scalarField > basicSymmetryFvPatchField<scalar>::snGrad() const +Foam::tmp<Foam::scalarField> +Foam::basicSymmetryFvPatchField<Foam::scalar>::snGrad() const { return tmp<scalarField >(new scalarField(size(), 0.0)); } template<> -void basicSymmetryFvPatchField<scalar>::evaluate(const Pstream::commsTypes) +void Foam::basicSymmetryFvPatchField<Foam::scalar>::evaluate +( + const Pstream::commsTypes +) { if (!updated()) { @@ -53,8 +52,4 @@ void basicSymmetryFvPatchField<scalar>::evaluate(const Pstream::commsTypes) } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - // ************************************************************************* // diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/symmetry/symmetryFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/symmetry/symmetryFvPatchField.H index a5812c09b4b7204791d689a5cc9deb1e6d01de77..191bd597d1b68060be2f34ea98954836815e1fc6 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/symmetry/symmetryFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/constraint/symmetry/symmetryFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,7 +36,7 @@ Description \verbatim myPatch { - type symmetryPlane; + type symmetry; } \endverbatim diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchField.C new file mode 100644 index 0000000000000000000000000000000000000000..053a56689b6c543e5d1e55190f94c74a91847509 --- /dev/null +++ b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchField.C @@ -0,0 +1,201 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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 "symmetryPlaneFvPatchField.H" + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Type> +Foam::symmetryPlaneFvPatchField<Type>::symmetryPlaneFvPatchField +( + const fvPatch& p, + const DimensionedField<Type, volMesh>& iF +) +: + basicSymmetryFvPatchField<Type>(p, iF), + symmetryPlanePatch_(refCast<const symmetryPlaneFvPatch>(p)) +{} + + +template<class Type> +Foam::symmetryPlaneFvPatchField<Type>::symmetryPlaneFvPatchField +( + const symmetryPlaneFvPatchField<Type>& ptf, + const fvPatch& p, + const DimensionedField<Type, volMesh>& iF, + const fvPatchFieldMapper& mapper +) +: + basicSymmetryFvPatchField<Type>(ptf, p, iF, mapper), + symmetryPlanePatch_(refCast<const symmetryPlaneFvPatch>(p)) +{ + if (!isType<symmetryPlaneFvPatch>(this->patch())) + { + FatalErrorIn + ( + "symmetryPlaneFvPatchField<Type>::symmetryPlaneFvPatchField\n" + "(\n" + " const symmetryPlaneFvPatchField<Type>& ptf,\n" + " const fvPatch& p,\n" + " const DimensionedField<Type, volMesh>& iF,\n" + " const fvPatchFieldMapper& mapper\n" + ")\n" + ) << "\n patch type '" << p.type() + << "' not constraint type '" << typeName << "'" + << "\n for patch " << p.name() + << " of field " << this->dimensionedInternalField().name() + << " in file " << this->dimensionedInternalField().objectPath() + << exit(FatalIOError); + } +} + + +template<class Type> +Foam::symmetryPlaneFvPatchField<Type>::symmetryPlaneFvPatchField +( + const fvPatch& p, + const DimensionedField<Type, volMesh>& iF, + const dictionary& dict +) +: + basicSymmetryFvPatchField<Type>(p, iF, dict), + symmetryPlanePatch_(refCast<const symmetryPlaneFvPatch>(p)) +{ + if (!isType<symmetryPlaneFvPatch>(p)) + { + FatalIOErrorIn + ( + "symmetryPlaneFvPatchField<Type>::symmetryPlaneFvPatchField\n" + "(\n" + " const fvPatch& p,\n" + " const Field<Type>& field,\n" + " const dictionary& dict\n" + ")\n", + dict + ) << "\n patch type '" << p.type() + << "' not constraint type '" << typeName << "'" + << "\n for patch " << p.name() + << " of field " << this->dimensionedInternalField().name() + << " in file " << this->dimensionedInternalField().objectPath() + << exit(FatalIOError); + } +} + + +template<class Type> +Foam::symmetryPlaneFvPatchField<Type>::symmetryPlaneFvPatchField +( + const symmetryPlaneFvPatchField<Type>& ptf +) +: + basicSymmetryFvPatchField<Type>(ptf), + symmetryPlanePatch_(ptf.symmetryPlanePatch_) +{} + + +template<class Type> +Foam::symmetryPlaneFvPatchField<Type>::symmetryPlaneFvPatchField +( + const symmetryPlaneFvPatchField<Type>& ptf, + const DimensionedField<Type, volMesh>& iF +) +: + basicSymmetryFvPatchField<Type>(ptf, iF), + symmetryPlanePatch_(ptf.symmetryPlanePatch_) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class Type> +Foam::tmp<Foam::Field<Type> > +Foam::symmetryPlaneFvPatchField<Type>::snGrad() const +{ + vector nHat(symmetryPlanePatch_.n()); + + const Field<Type> iF(this->patchInternalField()); + + return + (transform(I - 2.0*sqr(nHat), iF) - iF) + *(this->patch().deltaCoeffs()/2.0); +} + + +template<class Type> +void Foam::symmetryPlaneFvPatchField<Type>::evaluate(const Pstream::commsTypes) +{ + if (!this->updated()) + { + this->updateCoeffs(); + } + + vector nHat(symmetryPlanePatch_.n()); + + const Field<Type> iF(this->patchInternalField()); + + Field<Type>::operator= + ( + (iF + transform(I - 2.0*sqr(nHat), iF))/2.0 + ); + + transformFvPatchField<Type>::evaluate(); +} + + +template<class Type> +Foam::tmp<Foam::Field<Type> > +Foam::symmetryPlaneFvPatchField<Type>::snGradTransformDiag() const +{ + vector nHat(symmetryPlanePatch_.n()); + + const vector diag + ( + mag(nHat.component(vector::X)), + mag(nHat.component(vector::Y)), + mag(nHat.component(vector::Z)) + ); + + return tmp<Field<Type> > + ( + new Field<Type> + ( + this->size(), + transformMask<Type> + ( + //pow<vector, pTraits<Type>::rank>(diag) + pow + ( + diag, + pTraits<typename powProduct<vector, pTraits<Type>::rank> + ::type>::zero + ) + ) + ) + ); +} + + +// ************************************************************************* // diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchField.H new file mode 100644 index 0000000000000000000000000000000000000000..5f17938aa4952852e1fc147dd662bdc9797d387f --- /dev/null +++ b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchField.H @@ -0,0 +1,189 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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::symmetryPlaneFvPatchField + +Group + grpConstraintBoundaryConditions + +Description + This boundary condition enforces a symmetryPlane constraint + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type symmetryPlane; + } + \endverbatim + +SourceFiles + symmetryPlaneFvPatchField.C + symmetryPlaneFvPatchFields.C + symmetryPlaneFvPatchFields.H + symmetryPlaneFvPatchFieldsFwd.H + +\*---------------------------------------------------------------------------*/ + +#ifndef symmetryPlaneFvPatchField_H +#define symmetryPlaneFvPatchField_H + +#include "basicSymmetryFvPatchField.H" +#include "symmetryPlaneFvPatch.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class symmetryPlaneFvPatchField Declaration +\*---------------------------------------------------------------------------*/ + +template<class Type> +class symmetryPlaneFvPatchField +: + public basicSymmetryFvPatchField<Type> +{ + // Private data + + //- Local reference cast into the symmetryPlane patch + const symmetryPlaneFvPatch& symmetryPlanePatch_; + + +public: + + //- Runtime type information + TypeName(symmetryPlaneFvPatch::typeName_()); + + + // Constructors + + //- Construct from patch and internal field + symmetryPlaneFvPatchField + ( + const fvPatch&, + const DimensionedField<Type, volMesh>& + ); + + //- Construct from patch, internal field and dictionary + symmetryPlaneFvPatchField + ( + const fvPatch&, + const DimensionedField<Type, volMesh>&, + const dictionary& + ); + + //- Construct by mapping given symmetryPlaneFvPatchField + // onto a new patch + symmetryPlaneFvPatchField + ( + const symmetryPlaneFvPatchField<Type>&, + const fvPatch&, + const DimensionedField<Type, volMesh>&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + symmetryPlaneFvPatchField + ( + const symmetryPlaneFvPatchField<Type>& + ); + + //- Construct and return a clone + virtual tmp<fvPatchField<Type> > clone() const + { + return tmp<fvPatchField<Type> > + ( + new symmetryPlaneFvPatchField<Type>(*this) + ); + } + + //- Construct as copy setting internal field reference + symmetryPlaneFvPatchField + ( + const symmetryPlaneFvPatchField<Type>&, + const DimensionedField<Type, volMesh>& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp<fvPatchField<Type> > clone + ( + const DimensionedField<Type, volMesh>& iF + ) const + { + return tmp<fvPatchField<Type> > + ( + new symmetryPlaneFvPatchField<Type>(*this, iF) + ); + } + + + // Member functions + + // Evaluation functions + + //- Return gradient at boundary + virtual tmp<Field<Type> > snGrad() const; + + //- Evaluate the patch field + virtual void evaluate + ( + const Pstream::commsTypes commsType=Pstream::blocking + ); + + //- Return face-gradient transform diagonal + virtual tmp<Field<Type> > snGradTransformDiag() const; +}; + + +// * * * * * * * * * * * Template Specialisations * * * * * * * * * * * * * // + +template<> +tmp<scalarField> symmetryPlaneFvPatchField<scalar>::snGrad() const; + +template<> +void symmetryPlaneFvPatchField<scalar>::evaluate +( + const Pstream::commsTypes commsType +); + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "symmetryPlaneFvPatchField.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchFields.C b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchFields.C new file mode 100644 index 0000000000000000000000000000000000000000..5430190f01b40e57ff773df7d415a099a7245d21 --- /dev/null +++ b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchFields.C @@ -0,0 +1,43 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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 "symmetryPlaneFvPatchFields.H" +#include "addToRunTimeSelectionTable.H" +#include "volFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +makePatchFields(symmetryPlane); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchFields.H b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchFields.H new file mode 100644 index 0000000000000000000000000000000000000000..8b32421c2113b733802987977d6a1ea4089b0be4 --- /dev/null +++ b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchFields.H @@ -0,0 +1,49 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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 symmetryPlaneFvPatchFields_H +#define symmetryPlaneFvPatchFields_H + +#include "symmetryPlaneFvPatchField.H" +#include "fieldTypes.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +makePatchTypeFieldTypedefs(symmetryPlane); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchFieldsFwd.H b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchFieldsFwd.H new file mode 100644 index 0000000000000000000000000000000000000000..ef8a3946a37afc6504d68e6b267d5a582fb39b3f --- /dev/null +++ b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchFieldsFwd.H @@ -0,0 +1,50 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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 symmetryPlaneFvPatchFieldsFwd_H +#define symmetryPlaneFvPatchFieldsFwd_H + +#include "fieldTypes.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +template<class Type> class symmetryPlaneFvPatchField; + +makePatchTypeFieldTypedefs(symmetryPlane); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchScalarField.C new file mode 100644 index 0000000000000000000000000000000000000000..4f439406268e9fdbcf3b1bc799188e776aeaab42 --- /dev/null +++ b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchScalarField.C @@ -0,0 +1,55 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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 "symmetryPlaneFvPatchField.H" +#include "volFields.H" + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<> +Foam::tmp<Foam::scalarField> +Foam::symmetryPlaneFvPatchField<Foam::scalar>::snGrad() const +{ + return tmp<scalarField >(new scalarField(size(), 0.0)); +} + + +template<> +void Foam::symmetryPlaneFvPatchField<Foam::scalar>::evaluate +( + const Pstream::commsTypes +) +{ + if (!updated()) + { + updateCoeffs(); + } + + scalarField::operator=(patchInternalField()); + transformFvPatchField<scalar>::evaluate(); +} + + +// ************************************************************************* // diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C index a7205577f301e63d0c61c3f25bcf7bc7c8d92f0c..f93817c3c7a940deb05f075cf2866d42f215f8cb 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C @@ -536,7 +536,8 @@ void timeVaryingMappedFixedValueFvPatchField<Type>::updateCoeffs() if (debug) { Pout<< "updateCoeffs : set fixedValue to min:" << gMin(*this) - << " max:" << gMax(*this) << endl; + << " max:" << gMax(*this) + << " avg:" << gAverage(*this) << endl; } fixedValueFvPatchField<Type>::updateCoeffs(); @@ -548,7 +549,10 @@ void timeVaryingMappedFixedValueFvPatchField<Type>::write(Ostream& os) const { fvPatchField<Type>::write(os); os.writeKeyword("setAverage") << setAverage_ << token::END_STATEMENT << nl; - os.writeKeyword("perturb") << perturb_ << token::END_STATEMENT << nl; + if (perturb_ != 1e-5) + { + os.writeKeyword("perturb") << perturb_ << token::END_STATEMENT << nl; + } if (fieldTableName_ != this->dimensionedInternalField().name()) { diff --git a/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchField.C b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchField.C new file mode 100644 index 0000000000000000000000000000000000000000..9e3477d5864ec618bff8d22ac65f53f2c036694e --- /dev/null +++ b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchField.C @@ -0,0 +1,130 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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 "symmetryPlaneFvsPatchField.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Type> +symmetryPlaneFvsPatchField<Type>::symmetryPlaneFvsPatchField +( + const fvPatch& p, + const DimensionedField<Type, surfaceMesh>& iF +) +: + fvsPatchField<Type>(p, iF) +{} + + +template<class Type> +symmetryPlaneFvsPatchField<Type>::symmetryPlaneFvsPatchField +( + const symmetryPlaneFvsPatchField<Type>& ptf, + const fvPatch& p, + const DimensionedField<Type, surfaceMesh>& iF, + const fvPatchFieldMapper& mapper +) +: + fvsPatchField<Type>(ptf, p, iF, mapper) +{ + if (!isType<symmetryPlaneFvPatch>(this->patch())) + { + FatalErrorIn + ( + "symmetryPlaneFvsPatchField<Type>::symmetryPlaneFvsPatchField\n" + "(\n" + " const symmetryPlaneFvsPatchField<Type>& ptf,\n" + " const fvPatch& p,\n" + " const DimensionedField<Type, surfaceMesh>& iF,\n" + " const fvPatchFieldMapper& mapper\n" + ")\n" + ) << "Field type does not correspond to patch type for patch " + << this->patch().index() << "." << endl + << "Field type: " << typeName << endl + << "Patch type: " << this->patch().type() + << exit(FatalError); + } +} + + +template<class Type> +symmetryPlaneFvsPatchField<Type>::symmetryPlaneFvsPatchField +( + const fvPatch& p, + const DimensionedField<Type, surfaceMesh>& iF, + const dictionary& dict +) +: + fvsPatchField<Type>(p, iF, dict) +{ + if (!isType<symmetryPlaneFvPatch>(p)) + { + FatalIOErrorIn + ( + "symmetryPlaneFvsPatchField<Type>::symmetryPlaneFvsPatchField\n" + "(\n" + " const fvPatch& p,\n" + " const Field<Type>& field,\n" + " const dictionary& dict\n" + ")\n", + dict + ) << "patch " << this->patch().index() << " not symmetryPlane type. " + << "Patch type = " << p.type() + << exit(FatalIOError); + } +} + + +template<class Type> +symmetryPlaneFvsPatchField<Type>::symmetryPlaneFvsPatchField +( + const symmetryPlaneFvsPatchField<Type>& ptf +) +: + fvsPatchField<Type>(ptf) +{} + + +template<class Type> +symmetryPlaneFvsPatchField<Type>::symmetryPlaneFvsPatchField +( + const symmetryPlaneFvsPatchField<Type>& ptf, + const DimensionedField<Type, surfaceMesh>& iF +) +: + fvsPatchField<Type>(ptf, iF) +{} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchField.H b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchField.H new file mode 100644 index 0000000000000000000000000000000000000000..8dd2035610147c02140911b4a55bb68d98f5e538 --- /dev/null +++ b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchField.H @@ -0,0 +1,139 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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::symmetryPlaneFvsPatchField + +Description + Foam::symmetryPlaneFvsPatchField + +SourceFiles + symmetryPlaneFvsPatchField.C + +\*---------------------------------------------------------------------------*/ + +#ifndef symmetryPlaneFvsPatchField_H +#define symmetryPlaneFvsPatchField_H + +#include "fvsPatchField.H" +#include "symmetryPlaneFvPatch.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class symmetryPlaneFvsPatch Declaration +\*---------------------------------------------------------------------------*/ + +template<class Type> +class symmetryPlaneFvsPatchField +: + public fvsPatchField<Type> +{ + +public: + + //- Runtime type information + TypeName(symmetryPlaneFvPatch::typeName_()); + + + // Constructors + + //- Construct from patch and internal field + symmetryPlaneFvsPatchField + ( + const fvPatch&, + const DimensionedField<Type, surfaceMesh>& + ); + + //- Construct from patch, internal field and dictionary + symmetryPlaneFvsPatchField + ( + const fvPatch&, + const DimensionedField<Type, surfaceMesh>&, + const dictionary& + ); + + //- Construct by mapping given symmetryPlaneFvsPatchField + // onto a new patch + symmetryPlaneFvsPatchField + ( + const symmetryPlaneFvsPatchField<Type>&, + const fvPatch&, + const DimensionedField<Type, surfaceMesh>&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + symmetryPlaneFvsPatchField + ( + const symmetryPlaneFvsPatchField<Type>& + ); + + //- Construct and return a clone + virtual tmp<fvsPatchField<Type> > clone() const + { + return tmp<fvsPatchField<Type> > + ( + new symmetryPlaneFvsPatchField<Type>(*this) + ); + } + + //- Construct as copy setting internal field reference + symmetryPlaneFvsPatchField + ( + const symmetryPlaneFvsPatchField<Type>&, + const DimensionedField<Type, surfaceMesh>& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp<fvsPatchField<Type> > clone + ( + const DimensionedField<Type, surfaceMesh>& iF + ) const + { + return tmp<fvsPatchField<Type> > + ( + new symmetryPlaneFvsPatchField<Type>(*this, iF) + ); + } +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "symmetryPlaneFvsPatchField.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchFields.C b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchFields.C new file mode 100644 index 0000000000000000000000000000000000000000..0d881f615c0755b0b48846394af774cdc741314e --- /dev/null +++ b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchFields.C @@ -0,0 +1,43 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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 "symmetryPlaneFvsPatchFields.H" +#include "fvsPatchFields.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +makeFvsPatchFields(symmetryPlane); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchFields.H b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchFields.H new file mode 100644 index 0000000000000000000000000000000000000000..b7d5e2cab80cee416a5b64124f770e4ce9365aca --- /dev/null +++ b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchFields.H @@ -0,0 +1,49 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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 symmetryPlaneFvsPatchFields_H +#define symmetryPlaneFvsPatchFields_H + +#include "symmetryPlaneFvsPatchField.H" +#include "fieldTypes.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +makeFvsPatchTypeFieldTypedefs(symmetryPlane); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchFieldsFwd.H b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchFieldsFwd.H new file mode 100644 index 0000000000000000000000000000000000000000..c041cbf295b777bdc867449ebb82e6408c1324b2 --- /dev/null +++ b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchFieldsFwd.H @@ -0,0 +1,50 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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 symmetryPlaneFvsPatchFieldsFwd_H +#define symmetryPlaneFvsPatchFieldsFwd_H + +#include "fieldTypes.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +template<class Type> class symmetryPlaneFvsPatchField; + +makeFvsPatchTypeFieldTypedefs(symmetryPlane); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/finiteVolume/fvMesh/fvPatches/constraint/symmetry/symmetryFvPatch.H b/src/finiteVolume/fvMesh/fvPatches/constraint/symmetry/symmetryFvPatch.H index 11ca298ec4ed679f83ddf453a71b447ea25d1e34..ba10021d51949f2ce6452d164fe6c1b9c4a067ef 100644 --- a/src/finiteVolume/fvMesh/fvPatches/constraint/symmetry/symmetryFvPatch.H +++ b/src/finiteVolume/fvMesh/fvPatches/constraint/symmetry/symmetryFvPatch.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,7 +25,7 @@ Class Foam::symmetryFvPatch Description - Symmetry-plane patch. + Symmetry patch for non-planar or multi-plane patches. SourceFiles symmetryFvPatch.C diff --git a/src/finiteVolume/fvMesh/fvPatches/constraint/symmetryPlane/symmetryPlaneFvPatch.C b/src/finiteVolume/fvMesh/fvPatches/constraint/symmetryPlane/symmetryPlaneFvPatch.C new file mode 100644 index 0000000000000000000000000000000000000000..cabfd123c6b1777485bfe23059e4a4e547c69de0 --- /dev/null +++ b/src/finiteVolume/fvMesh/fvPatches/constraint/symmetryPlane/symmetryPlaneFvPatch.C @@ -0,0 +1,43 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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 "symmetryPlaneFvPatch.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defineTypeNameAndDebug(symmetryPlaneFvPatch, 0); +addToRunTimeSelectionTable(fvPatch, symmetryPlaneFvPatch, polyPatch); + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/finiteVolume/fvMesh/fvPatches/constraint/symmetryPlane/symmetryPlaneFvPatch.H b/src/finiteVolume/fvMesh/fvPatches/constraint/symmetryPlane/symmetryPlaneFvPatch.H new file mode 100644 index 0000000000000000000000000000000000000000..069b37b6bc332fea1f61b57d97813f2a04d0d325 --- /dev/null +++ b/src/finiteVolume/fvMesh/fvPatches/constraint/symmetryPlane/symmetryPlaneFvPatch.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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::symmetryPlaneFvPatch + +Description + Symmetry-plane patch. + +SourceFiles + symmetryPlaneFvPatch.C + +\*---------------------------------------------------------------------------*/ + +#ifndef symmetryPlaneFvPatch_H +#define symmetryPlaneFvPatch_H + +#include "fvPatch.H" +#include "symmetryPlanePolyPatch.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class symmetryPlaneFvPatch Declaration +\*---------------------------------------------------------------------------*/ + +class symmetryPlaneFvPatch +: + public fvPatch +{ + // Private data + + //- Local reference cast into the symmetryPlane patch + const symmetryPlanePolyPatch& symmetryPlanePolyPatch_; + + +public: + + //- Runtime type information + TypeName(symmetryPlanePolyPatch::typeName_()); + + + // Constructors + + //- Construct from polyPatch + symmetryPlaneFvPatch(const polyPatch& patch, const fvBoundaryMesh& bm) + : + fvPatch(patch, bm), + symmetryPlanePolyPatch_ + ( + refCast<const symmetryPlanePolyPatch>(patch) + ) + {} + + + // Member Functions + + //- Return symmetry plane normal + const vector& n() const + { + return symmetryPlanePolyPatch_.n(); + } +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.C b/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.C index bb370fffb8e2dfe12fe641b350811cea3a3e1c4e..5bc4d56e9414f88583067db33246031a7a68d57a 100644 --- a/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.C +++ b/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.C @@ -51,11 +51,11 @@ void pointConstraints::makePatchPatchAddressing() << endl; } - const pointMesh& pMesh = mesh(); - const polyMesh& mesh = pMesh(); + //const polyMesh& mesh = mesh(); + const pointMesh& pMesh = pointMesh::New(mesh()); const pointBoundaryMesh& pbm = pMesh.boundary(); - const polyBoundaryMesh& bm = mesh.boundaryMesh(); + const polyBoundaryMesh& bm = mesh().boundaryMesh(); // first count the total number of patch-patch points @@ -146,7 +146,7 @@ void pointConstraints::makePatchPatchAddressing() // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ { - const globalMeshData& gd = mesh.globalData(); + const globalMeshData& gd = mesh().globalData(); const labelListList& globalPointSlaves = gd.globalPointSlaves(); const mapDistribute& globalPointSlavesMap = gd.globalPointSlavesMap(); const Map<label>& cpPointMap = gd.coupledPatch().meshPointMap(); @@ -226,7 +226,7 @@ void pointConstraints::makePatchPatchAddressing() { //Pout<< "on meshpoint:" << meshPointI // << " coupled:" << coupledPointI - // << " at:" << mesh.points()[meshPointI] + // << " at:" << mesh().points()[meshPointI] // << " have new constraint:" // << constraints[coupledPointI] // << endl; @@ -244,7 +244,7 @@ void pointConstraints::makePatchPatchAddressing() { //Pout<< "on meshpoint:" << meshPointI // << " coupled:" << coupledPointI - // << " at:" << mesh.points()[meshPointI] + // << " at:" << mesh().points()[meshPointI] // << " have possibly extended constraint:" // << constraints[coupledPointI] // << endl; @@ -323,9 +323,10 @@ void pointConstraints::makePatchPatchAddressing() // * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * * // -pointConstraints::pointConstraints(const pointMesh& pm) +//pointConstraints::pointConstraints(const pointMesh& pm) +pointConstraints::pointConstraints(const polyMesh& pm) : - MeshObject<pointMesh, Foam::UpdateableMeshObject, pointConstraints>(pm) + MeshObject<polyMesh, Foam::UpdateableMeshObject, pointConstraints>(pm) { makePatchPatchAddressing(); } @@ -334,7 +335,12 @@ pointConstraints::pointConstraints(const pointMesh& pm) // * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * * // pointConstraints::~pointConstraints() -{} +{ + if (debug) + { + Pout<< "pointConstraints::~pointConstraints()" << endl; + } +} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -375,9 +381,9 @@ void pointConstraints::constrainDisplacement // Apply any 2D motion constraints (or should they go before // corner constraints?) - twoDPointCorrector::New(mesh()()).correctDisplacement + twoDPointCorrector::New(mesh()).correctDisplacement ( - mesh()().points(), + mesh().points(), pf.internalField() ); diff --git a/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.H b/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.H index 06515ba003b58673103035ccacd551457003c452..b5256155ee7cdb60e497a5d8b8bc9cc680430c06 100644 --- a/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.H +++ b/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.H @@ -34,6 +34,11 @@ Description coupled to points which are not on any constraint patch and we don't want to get inconsistency between the two points. + Note: is currently MeshObject on polyMesh but should really be on + pointMesh. The problem is that pointMesh::updateMesh never + gets called (since currently polyMesh gets reset and destroys + pointMesh) + SourceFiles pointConstraints.C pointConstraintsTemplates.C @@ -62,7 +67,8 @@ class polyMesh; class pointConstraints : - public MeshObject<pointMesh, UpdateableMeshObject, pointConstraints> +//See above:public MeshObject<pointMesh, UpdateableMeshObject, pointConstraints> + public MeshObject<polyMesh, UpdateableMeshObject, pointConstraints> { // Private data @@ -97,7 +103,8 @@ public: // Constructors //- Constructor from pointMesh. - explicit pointConstraints(const pointMesh&); + //explicit pointConstraints(const pointMesh&); + explicit pointConstraints(const polyMesh&); //- Destructor diff --git a/src/finiteVolume/interpolation/volPointInterpolation/pointConstraintsTemplates.C b/src/finiteVolume/interpolation/volPointInterpolation/pointConstraintsTemplates.C index 724d827e7ffec97fab2bed41bd132bd374a398f4..c30ee47c2a0374e792340498c11e758811d2a93d 100644 --- a/src/finiteVolume/interpolation/volPointInterpolation/pointConstraintsTemplates.C +++ b/src/finiteVolume/interpolation/volPointInterpolation/pointConstraintsTemplates.C @@ -139,7 +139,12 @@ void pointConstraints::constrain pf.correctBoundaryConditions(); // Sync any dangling points - syncUntransformedData(mesh()(), pf.internalField(), maxMagSqrEqOp<Type>()); + syncUntransformedData + ( + pf.mesh()(), + pf.internalField(), + maxMagSqrEqOp<Type>() + ); // Apply multiple constraints on edge/corner points constrainCorners(pf); diff --git a/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolate.C b/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolate.C index 2c9bf7d5e4b1d601cce470a11069aa6026a382de..16b3abed4edc9bc2d5507f57983061f1fd553739 100644 --- a/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolate.C +++ b/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolate.C @@ -271,7 +271,7 @@ void volPointInterpolation::interpolateBoundaryField interpolateBoundaryField(vf, pf); // Apply constraints - const pointConstraints& pcs = pointConstraints::New(pf.mesh()); + const pointConstraints& pcs = pointConstraints::New(vf.mesh()); pcs.constrain(pf, overrideFixedValue); } diff --git a/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolation.C b/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolation.C index 7a307d31ae697aa52b00b76d949ddf59c72cacc0..53e1e4c448488ff3ede623e8ae15f409741adf09 100644 --- a/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolation.C +++ b/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolation.C @@ -390,7 +390,7 @@ void volPointInterpolation::interpolateDisplacement interpolateBoundaryField(vf, pf); // Apply displacement constraints - const pointConstraints& pcs = pointConstraints::New(pf.mesh()); + const pointConstraints& pcs = pointConstraints::New(vf.mesh()); pcs.constrainDisplacement(pf, false); } diff --git a/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.C b/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.C index cf1b18b89df764bfe3343339ab941401958fff88..bbbc75f396873331c57b5cd9c4147e7628954e42 100644 --- a/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.C +++ b/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.C @@ -48,8 +48,8 @@ timeVaryingMappedFixedValuePointPatchField startAverage_(pTraits<Type>::zero), endSampleTime_(-1), endSampledValues_(0), - endAverage_(pTraits<Type>::zero) - + endAverage_(pTraits<Type>::zero), + offset_() {} @@ -75,7 +75,13 @@ timeVaryingMappedFixedValuePointPatchField startAverage_(pTraits<Type>::zero), endSampleTime_(-1), endSampledValues_(0), - endAverage_(pTraits<Type>::zero) + endAverage_(pTraits<Type>::zero), + offset_ + ( + ptf.offset_.valid() + ? ptf.offset_().clone().ptr() + : NULL + ) {} @@ -100,8 +106,14 @@ timeVaryingMappedFixedValuePointPatchField startAverage_(pTraits<Type>::zero), endSampleTime_(-1), endSampledValues_(0), - endAverage_(pTraits<Type>::zero) + endAverage_(pTraits<Type>::zero), + offset_() { + if (dict.found("offset")) + { + offset_ = DataEntry<Type>::New("offset", dict); + } + dict.readIfPresent("fieldTableName", fieldTableName_); if (dict.found("value")) @@ -141,7 +153,13 @@ timeVaryingMappedFixedValuePointPatchField startAverage_(ptf.startAverage_), endSampleTime_(ptf.endSampleTime_), endSampledValues_(ptf.endSampledValues_), - endAverage_(ptf.endAverage_) + endAverage_(ptf.endAverage_), + offset_ + ( + ptf.offset_.valid() + ? ptf.offset_().clone().ptr() + : NULL + ) {} @@ -165,7 +183,13 @@ timeVaryingMappedFixedValuePointPatchField startAverage_(ptf.startAverage_), endSampleTime_(ptf.endSampleTime_), endSampledValues_(ptf.endSampledValues_), - endAverage_(ptf.endAverage_) + endAverage_(ptf.endAverage_), + offset_ + ( + ptf.offset_.valid() + ? ptf.offset_().clone().ptr() + : NULL + ) {} @@ -532,10 +556,18 @@ void Foam::timeVaryingMappedFixedValuePointPatchField<Type>::updateCoeffs() } } + // apply offset to mapped values + if (offset_.valid()) + { + const scalar t = this->db().time().timeOutputValue(); + this->operator==(*this + offset_->value(t)); + } + if (debug) { Pout<< "updateCoeffs : set fixedValue to min:" << gMin(*this) - << " max:" << gMax(*this) << endl; + << " max:" << gMax(*this) + << " avg:" << gAverage(*this) << endl; } fixedValuePointPatchField<Type>::updateCoeffs(); @@ -550,13 +582,21 @@ void Foam::timeVaryingMappedFixedValuePointPatchField<Type>::write { fixedValuePointPatchField<Type>::write(os); os.writeKeyword("setAverage") << setAverage_ << token::END_STATEMENT << nl; - os.writeKeyword("perturb") << perturb_ << token::END_STATEMENT << nl; + if (perturb_ != 1e-5) + { + os.writeKeyword("perturb") << perturb_ << token::END_STATEMENT << nl; + } if (fieldTableName_ != this->dimensionedInternalField().name()) { os.writeKeyword("fieldTableName") << fieldTableName_ << token::END_STATEMENT << nl; } + + if (offset_.valid()) + { + offset_->writeData(os); + } } diff --git a/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.H b/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.H index 942dc3e4a643960058160516e32533b59cc49937..ed87fa4c543a1352ef111ab1020b73667f5c6d73 100644 --- a/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.H +++ b/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.H @@ -41,6 +41,7 @@ SourceFiles #include "fixedValuePointPatchField.H" #include "instantList.H" #include "pointToPointPlanarInterpolation.H" +#include "DataEntry.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -91,6 +92,9 @@ class timeVaryingMappedFixedValuePointPatchField //- If setAverage: end average value Type endAverage_; + //- Time varying offset values to interpolated data + autoPtr<DataEntry<Type> > offset_; + public: diff --git a/src/lagrangian/basic/particle/particle.H b/src/lagrangian/basic/particle/particle.H index 0275cc5fd1ec6ed1cd6bcd20b3d8fac3d86666c6..6cb1838e83a482e4d82f213a05209d41a6f4d46d 100644 --- a/src/lagrangian/basic/particle/particle.H +++ b/src/lagrangian/basic/particle/particle.H @@ -55,6 +55,7 @@ class polyPatch; class cyclicPolyPatch; class processorPolyPatch; +class symmetryPlanePolyPatch; class symmetryPolyPatch; class wallPolyPatch; class wedgePolyPatch; @@ -248,6 +249,15 @@ protected: template<class TrackData> void hitWedgePatch(const wedgePolyPatch&, TrackData& td); + //- Overridable function to handle the particle hitting a + // symmetryPlanePatch + template<class TrackData> + void hitSymmetryPlanePatch + ( + const symmetryPlanePolyPatch&, + TrackData& td + ); + //- Overridable function to handle the particle hitting a // symmetryPatch template<class TrackData> diff --git a/src/lagrangian/basic/particle/particleTemplates.C b/src/lagrangian/basic/particle/particleTemplates.C index ad50f7ddd8261ee575e4ca0f7420a6bcdf484811..3f47fe82e6ad4f6ad9631ea85695161ef49b31ab 100644 --- a/src/lagrangian/basic/particle/particleTemplates.C +++ b/src/lagrangian/basic/particle/particleTemplates.C @@ -28,6 +28,7 @@ License #include "cyclicPolyPatch.H" #include "cyclicAMIPolyPatch.H" #include "processorPolyPatch.H" +#include "symmetryPlanePolyPatch.H" #include "symmetryPolyPatch.H" #include "wallPolyPatch.H" #include "wedgePolyPatch.H" @@ -585,6 +586,13 @@ Foam::scalar Foam::particle::trackToFace static_cast<const wedgePolyPatch&>(patch), td ); } + else if (isA<symmetryPlanePolyPatch>(patch)) + { + p.hitSymmetryPlanePatch + ( + static_cast<const symmetryPlanePolyPatch&>(patch), td + ); + } else if (isA<symmetryPolyPatch>(patch)) { p.hitSymmetryPatch @@ -958,6 +966,20 @@ void Foam::particle::hitWedgePatch } +template<class TrackData> +void Foam::particle::hitSymmetryPlanePatch +( + const symmetryPlanePolyPatch& spp, + TrackData& +) +{ + vector nf = normal(); + nf /= mag(nf); + + transformProperties(I - 2.0*nf*nf); +} + + template<class TrackData> void Foam::particle::hitSymmetryPatch ( diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.H b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.H index 298ca934d19206356ee53c3c17851aac1d9bed40..ee94b0b0156265b28f7c57b89975407c41f49188 100644 --- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.H +++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.H @@ -510,7 +510,7 @@ private: const motionSmoother& meshMover, const label nSmoothNormals, const label nSmoothSurfaceNormals, - const scalar minMedianAxisAngleCos, + const scalar minMedialAxisAngleCos, const scalar featureAngle, pointVectorField& dispVec, diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriverShrink.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriverShrink.C index a2d7a39a3a6eb5fb1680c47636489fa90271c847..e8c3d38cd6c30778ca58b80a12459cc797d48ef0 100644 --- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriverShrink.C +++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriverShrink.C @@ -864,7 +864,7 @@ void Foam::autoLayerDriver::medialAxisSmoothingInfo const motionSmoother& meshMover, const label nSmoothNormals, const label nSmoothSurfaceNormals, - const scalar minMedianAxisAngleCos, + const scalar minMedialAxisAngleCos, const scalar featureAngle, pointVectorField& dispVec, @@ -1049,7 +1049,7 @@ void Foam::autoLayerDriver::medialAxisSmoothingInfo { // Unvisited point. See above about nUnvisit warning } - else if (isMaxEdge(pointWallDist, edgeI, minMedianAxisAngleCos)) + else if (isMaxEdge(pointWallDist, edgeI, minMedialAxisAngleCos)) { // Both end points of edge have very different nearest wall // point. Mark both points as medial axis points. diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.C index 8ac5eadea544b715175d1cc8db3f6b12886e6a0c..b466e17de2fcb627b72eed5c0dc293f3de3ad8f8 100644 --- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.C +++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.C @@ -154,10 +154,6 @@ Foam::layerParameters::layerParameters ( readScalar(dict.lookup("maxThicknessToMedialRatio")) ), - minMedianAxisAngleCos_ - ( - Foam::cos(degToRad(readScalar(dict.lookup("minMedianAxisAngle")))) - ), nBufferCellsNoExtrude_ ( readLabel(dict.lookup("nBufferCellsNoExtrude")) @@ -175,6 +171,18 @@ Foam::layerParameters::layerParameters ) ) { + word angleKey = "minMedialAxisAngle"; + if (!dict.found(angleKey)) + { + // Backwards compatibility + angleKey = "minMedianAxisAngle"; + } + minMedialAxisAngleCos_ = Foam::cos + ( + degToRad(readScalar(dict.lookup(angleKey))) + ); + + // Detect layer specification mode label nSpec = 0; diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.H b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.H index 3b4d09f76f362e745428ac681ed765b272b70065..d9d2860238fff705520dd5ae45e92d14bc050bb5 100644 --- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.H +++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.H @@ -134,7 +134,7 @@ private: scalar maxThicknessToMedialRatio_; - scalar minMedianAxisAngleCos_; + scalar minMedialAxisAngleCos_; label nBufferCellsNoExtrude_; @@ -348,9 +348,9 @@ public: } //- Angle used to pick up medial axis points - scalar minMedianAxisAngleCos() const + scalar minMedialAxisAngleCos() const { - return minMedianAxisAngleCos_; + return minMedialAxisAngleCos_; } label nSnap() const diff --git a/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.C b/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.C index 728cae5f16a61ad930892bea41d6a31335b5bbc2..84d212e4251ce0b684056c4068b6a360210f7237 100644 --- a/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.C +++ b/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.C @@ -106,7 +106,15 @@ void Foam::displacementMeshMoverMotionSolver::solve() label nAllowableErrors = 0; labelList checkFaces(identity(mesh().nFaces())); - meshMover().move(coeffDict(), nAllowableErrors, checkFaces); + meshMover().move + ( + coeffDict().subDict(meshMover().type() + "Coeffs"), + nAllowableErrors, + checkFaces + ); + + // This will have updated the mesh and implicitly the pointDisplacement + pointDisplacement().correctBoundaryConditions(); } diff --git a/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.C b/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.C index db2dedf89ff6928130fe3744e684306aa4dcc7e9..eb223c88414a6c294290464d790e15b4629d74a1 100644 --- a/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.C +++ b/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.C @@ -402,7 +402,7 @@ bool Foam::medialAxisMeshMover::isMaxEdge void Foam::medialAxisMeshMover::update(const dictionary& coeffDict) { Info<< typeName - << " : Calculate distance to Medial Axis ..." << endl; + << " : Calculating distance to Medial Axis ..." << endl; const pointField& points = mesh().points(); @@ -420,9 +420,15 @@ void Foam::medialAxisMeshMover::update(const dictionary& coeffDict) ); //- When is medial axis - const scalar minMedianAxisAngleCos = Foam::cos + word angleKey = "minMedialAxisAngle"; + if (!coeffDict.found(angleKey)) + { + // Backwards compatibility + angleKey = "minMedianAxisAngle"; + } + scalar minMedialAxisAngleCos = Foam::cos ( - degToRad(readScalar(coeffDict.lookup("minMedianAxisAngle"))) + degToRad(readScalar(coeffDict.lookup(angleKey))) ); //- Feature angle when to stop adding layers @@ -442,6 +448,13 @@ void Foam::medialAxisMeshMover::update(const dictionary& coeffDict) coeffDict.lookup("nSmoothNormals") ); + //- Number of edges walking out + const label nMedialAxisIter = coeffDict.lookupOrDefault<label> + ( + "nMedialAxisIter", + mesh().globalData().nTotalPoints() + ); + // Predetermine mesh edges // ~~~~~~~~~~~~~~~~~~~~~~~ @@ -512,10 +525,10 @@ void Foam::medialAxisMeshMover::update(const dictionary& coeffDict) wallInfo, pointWallDist, edgeWallDist, - mesh().globalData().nTotalPoints(), // max iterations + 0, // max iterations dummyTrackData ); - + wallDistCalc.iterate(nMedialAxisIter); label nUnvisit = returnReduce ( @@ -525,16 +538,27 @@ void Foam::medialAxisMeshMover::update(const dictionary& coeffDict) if (nUnvisit > 0) { - WarningIn - ( - "medialAxisMeshMover::" - "medialAxisSmoothingInfo(..)" - ) << "Walking did not visit all points." << nl - << " Did not visit " << nUnvisit - << " out of " << mesh().globalData().nTotalPoints() - << " points. This is not necessarily a problem" << nl - << " and might be due to faceZones splitting of part" - << " of the domain." << nl << endl; + if (nMedialAxisIter > 0) + { + Info<< typeName + << " : Limited walk to " << nMedialAxisIter + << " steps. Not visited " << nUnvisit + << " out of " << mesh().globalData().nTotalPoints() + << " points" << endl; + } + else + { + WarningIn + ( + "medialAxisMeshMover::" + "medialAxisSmoothingInfo(..)" + ) << "Walking did not visit all points." << nl + << " Did not visit " << nUnvisit + << " out of " << mesh().globalData().nTotalPoints() + << " points. This is not necessarily a problem" << nl + << " and might be due to faceZones splitting of part" + << " of the domain." << nl << endl; + } } } @@ -564,8 +588,29 @@ void Foam::medialAxisMeshMover::update(const dictionary& coeffDict) ) { // Unvisited point. See above about nUnvisit warning + forAll(e, ep) + { + label pointI = e[ep]; + + if (!pointMedialDist[pointI].valid(dummyTrackData)) + { + maxPoints.append(pointI); + maxInfo.append + ( + pointData + ( + points[pointI], + 0.0, + pointI, // passive data + vector::zero // passive data + ) + ); + pointMedialDist[pointI] = maxInfo.last(); + } + } + } - else if (isMaxEdge(pointWallDist, edgeI, minMedianAxisAngleCos)) + else if (isMaxEdge(pointWallDist, edgeI, minMedialAxisAngleCos)) { // Both end points of edge have very different nearest wall // point. Mark both points as medial axis points. @@ -653,7 +698,8 @@ void Foam::medialAxisMeshMover::update(const dictionary& coeffDict) if (pvf.fixesValue()) { // Disable all movement on fixedValue patchFields - Info<< "Inserting all points on patch " << pp.name() + Info<< typeName + << " : Inserting all points on patch " << pp.name() << endl; forAll(meshPoints, i) @@ -683,7 +729,8 @@ void Foam::medialAxisMeshMover::update(const dictionary& coeffDict) // normal as the passive vector. Note that this points // out of the originating wall so inside of the domain // on this patch. - Info<< "Inserting points on patch " << pp.name() + Info<< typeName + << " : Inserting points on patch " << pp.name() << " if angle to nearest layer patch > " << slipFeatureAngle << " degrees." << endl; @@ -753,15 +800,29 @@ void Foam::medialAxisMeshMover::update(const dictionary& coeffDict) pointMedialDist, edgeMedialDist, - mesh().globalData().nTotalPoints(), // max iterations + 0, // max iterations dummyTrackData ); + medialDistCalc.iterate(2*nMedialAxisIter); + // Extract medial axis distance as pointScalarField forAll(pointMedialDist, pointI) { - medialDist_[pointI] = Foam::sqrt(pointMedialDist[pointI].distSqr()); - medialVec_[pointI] = pointMedialDist[pointI].origin(); + if (pointMedialDist[pointI].valid(dummyTrackData)) + { + medialDist_[pointI] = Foam::sqrt + ( + pointMedialDist[pointI].distSqr() + ); + medialVec_[pointI] = pointMedialDist[pointI].origin(); + } + else + { + // Unvisited. Do as if on medial axis so unmoving + medialDist_[pointI] = 0.0; + medialVec_[pointI] = point(1, 0, 0); + } } } @@ -1380,7 +1441,8 @@ void Foam::medialAxisMeshMover::findIsolatedRegions } reduce(nPointCounter, sumOp<label>()); - Info<< "Number isolated points extrusion stopped : "<< nPointCounter + Info<< typeName + << " : Number of isolated points extrusion stopped : "<< nPointCounter << endl; } @@ -1632,6 +1694,13 @@ void Foam::medialAxisMeshMover::calculateDisplacement coeffDict.lookup("nSmoothThickness") ); + //- Number of edges walking out + const label nMedialAxisIter = coeffDict.lookupOrDefault<label> + ( + "nMedialAxisIter", + mesh().globalData().nTotalPoints() + ); + // Precalulate master points/edge (only relevant for shared points/edges) const PackedBoolList isMasterPoint(syncTools::getMasterPoints(mesh())); @@ -1677,7 +1746,8 @@ void Foam::medialAxisMeshMover::calculateDisplacement + ".obj" ) ); - Info<< "Writing points with too large an extrusion distance to " + Info<< typeName + << " : Writing points with too large an extrusion distance to " << str().name() << endl; } @@ -1694,8 +1764,9 @@ void Foam::medialAxisMeshMover::calculateDisplacement + ".obj" ) ); - Info<< "Writing points with too large an extrusion distance to " - << medialVecStr().name() << endl; + Info<< typeName + << " : Writing medial axis vectors on points with too large" + << " an extrusion distance to " << medialVecStr().name() << endl; } forAll(meshPoints, patchPointI) @@ -1721,7 +1792,7 @@ void Foam::medialAxisMeshMover::calculateDisplacement if (thicknessRatio > maxThicknessToMedialRatio) { // Truncate thickness. - if (debug) + if (debug&2) { Pout<< "truncating displacement at " << mesh().points()[pointI] @@ -1770,7 +1841,7 @@ void Foam::medialAxisMeshMover::calculateDisplacement } reduce(numThicknessRatioExclude, sumOp<label>()); - Info<< typeName << " : Reduce layer thickness at " + Info<< typeName << " : Reducing layer thickness at " << numThicknessRatioExclude << " nodes where thickness to medial axis distance is large " << endl; @@ -1849,9 +1920,10 @@ void Foam::medialAxisMeshMover::calculateDisplacement wallInfo, pointWallDist, edgeWallDist, - mesh().globalData().nTotalPoints(), // max iterations + 0, // max iterations dummyTrackData ); + wallDistCalc.iterate(nMedialAxisIter); } @@ -1917,10 +1989,13 @@ bool Foam::medialAxisMeshMover::shrinkMesh for (label iter = 0; iter < 2*nSnap ; iter++) { - Info<< "Iteration " << iter << endl; + Info<< typeName + << " : Iteration " << iter << endl; if (iter == nSnap) { - Info<< "Displacement scaling for error reduction set to 0." << endl; + Info<< typeName + << " : Displacement scaling for error reduction set to 0." + << endl; oldErrorReduction = meshMover_.setErrorReduction(0.0); } @@ -1937,7 +2012,7 @@ bool Foam::medialAxisMeshMover::shrinkMesh ) ) { - Info<< typeName << " :" << " Successfully moved mesh" << endl; + Info<< typeName << " : Successfully moved mesh" << endl; meshOk = true; break; } diff --git a/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C b/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C index b861bdb037221a652ed4575f991f2a8a60c0bf67..c8e8be3d06b276926d448363f22031d1552cc3ee 100644 --- a/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C +++ b/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C @@ -141,6 +141,17 @@ void Foam::trackedParticle::hitWedgePatch } +void Foam::trackedParticle::hitSymmetryPlanePatch +( + const symmetryPlanePolyPatch&, + trackingData& td +) +{ + // Remove particle + td.keepParticle = false; +} + + void Foam::trackedParticle::hitSymmetryPatch ( const symmetryPolyPatch&, diff --git a/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.H b/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.H index 30acbc2fcc3bfe521f61deafca5806b93b766c47..4500cab11df97acba8386981252bbcce46fd15f6 100644 --- a/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.H +++ b/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.H @@ -214,7 +214,15 @@ public: ); //- Overridable function to handle the particle hitting a - // symmetryPlane + // symmetry plane + void hitSymmetryPlanePatch + ( + const symmetryPlanePolyPatch&, + trackingData& td + ); + + //- Overridable function to handle the particle hitting a + // symmetry patch void hitSymmetryPatch ( const symmetryPolyPatch&, diff --git a/src/meshTools/triSurface/triSurfaceTools/pointToPointPlanarInterpolation.C b/src/meshTools/triSurface/triSurfaceTools/pointToPointPlanarInterpolation.C index a850308c6ed6677852506b4abb9f0f06f4215ea6..1f7de7c58c2be7056ec9ce1bfee956f55487f9dd 100644 --- a/src/meshTools/triSurface/triSurfaceTools/pointToPointPlanarInterpolation.C +++ b/src/meshTools/triSurface/triSurfaceTools/pointToPointPlanarInterpolation.C @@ -210,37 +210,45 @@ void Foam::pointToPointPlanarInterpolation::calcWeights nearestVertexWeight_ ); - //if (debug) - //{ - // forAll(sourcePoints, i) - // { - // Pout<< "source:" << i << " at:" << sourcePoints[i] - // << " 2d:" << localVertices[i] - // << endl; - // } - // - // - // forAll(destPoints, i) - // { - // label v0 = nearestVertex_[i][0]; - // label v1 = nearestVertex_[i][1]; - // label v2 = nearestVertex_[i][2]; - // - // Pout<< "For location " << destPoints[i] - // << " 2d:" << localFaceCentres[i] - // << " sampling vertices" << nl - // << " " << v0 - // << " at:" << sourcePoints[v0] - // << " weight:" << nearestVertexWeight_[i][0] << nl - // << " " << v1 - // << " at:" << sourcePoints[v1] - // << " weight:" << nearestVertexWeight_[i][1] << nl - // << " " << v2 - // << " at:" << sourcePoints[v2] - // << " weight:" << nearestVertexWeight_[i][2] << nl - // << endl; - // } - //} + if (debug) + { + forAll(sourcePoints, i) + { + Pout<< "source:" << i << " at:" << sourcePoints[i] + << " 2d:" << localVertices[i] + << endl; + } + + + forAll(destPoints, i) + { + label v0 = nearestVertex_[i][0]; + label v1 = nearestVertex_[i][1]; + label v2 = nearestVertex_[i][2]; + + Pout<< "For location " << destPoints[i] + << " 2d:" << localFaceCentres[i] + << " sampling vertices" << nl + << " " << v0 + << " at:" << sourcePoints[v0] + << " weight:" << nearestVertexWeight_[i][0] << nl; + + if (v1 != -1) + { + Pout<< " " << v1 + << " at:" << sourcePoints[v1] + << " weight:" << nearestVertexWeight_[i][1] << nl; + } + if (v2 != -1) + { + Pout<< " " << v2 + << " at:" << sourcePoints[v2] + << " weight:" << nearestVertexWeight_[i][2] << nl; + } + + Pout<< endl; + } + } } diff --git a/src/postProcessing/functionObjects/field/nearWallFields/findCellParticle.C b/src/postProcessing/functionObjects/field/nearWallFields/findCellParticle.C index 5fe71cac6ea1f1c0937ccf1f62b47275d652f06f..ad4d234a35dcf0cc8834bca46b5e506937d9a3f5 100644 --- a/src/postProcessing/functionObjects/field/nearWallFields/findCellParticle.C +++ b/src/postProcessing/functionObjects/field/nearWallFields/findCellParticle.C @@ -140,6 +140,17 @@ void Foam::findCellParticle::hitWedgePatch } +void Foam::findCellParticle::hitSymmetryPlanePatch +( + const symmetryPlanePolyPatch&, + trackingData& td +) +{ + // Remove particle + td.keepParticle = false; +} + + void Foam::findCellParticle::hitSymmetryPatch ( const symmetryPolyPatch&, diff --git a/src/postProcessing/functionObjects/field/nearWallFields/findCellParticle.H b/src/postProcessing/functionObjects/field/nearWallFields/findCellParticle.H index 0e87f644e26a07f065693e4bfde72a8ad5a3549e..82a430778a2956238332e28b789653c78a03fc4a 100644 --- a/src/postProcessing/functionObjects/field/nearWallFields/findCellParticle.H +++ b/src/postProcessing/functionObjects/field/nearWallFields/findCellParticle.H @@ -196,7 +196,15 @@ public: ); //- Overridable function to handle the particle hitting a - // symmetryPlane + // symmetry plane + void hitSymmetryPlanePatch + ( + const symmetryPlanePolyPatch&, + trackingData& td + ); + + //- Overridable function to handle the particle hitting a + // symmetry patch void hitSymmetryPatch ( const symmetryPolyPatch&, diff --git a/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C b/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C index ff03f1160b301b2bd87d6681392de80e81649c48..b62409d6bb1fb45a6c54fa92eac661ccf3265995 100644 --- a/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C +++ b/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C @@ -345,6 +345,17 @@ void Foam::streamLineParticle::hitWedgePatch } +void Foam::streamLineParticle::hitSymmetryPlanePatch +( + const symmetryPlanePolyPatch& pp, + trackingData& td +) +{ + // Remove particle + td.keepParticle = false; +} + + void Foam::streamLineParticle::hitSymmetryPatch ( const symmetryPolyPatch& pp, diff --git a/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.H b/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.H index 02bd609933fffbeb4923d4c242614aeeb4bf9c26..2d8e728662ad56b29cab6cba971d84913b5a0702 100644 --- a/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.H +++ b/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -237,7 +237,15 @@ public: ); //- Overridable function to handle the particle hitting a - // symmetryPlane + // symmetry plane + void hitSymmetryPlanePatch + ( + const symmetryPlanePolyPatch&, + trackingData& td + ); + + //- Overridable function to handle the particle hitting a + // symmetry patch void hitSymmetryPatch ( const symmetryPolyPatch&, diff --git a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.H b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.H index df93215be1a6d53747591f5c8e162239be34a405..55ba6c27f75ab94b5a84e24dc3e5db6aaa1ec1f9 100644 --- a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.H +++ b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -159,7 +159,16 @@ protected: ); //- Overridable function to handle the particle hitting a - // symmetryPlane + // symmetry plane + template<class TrackData> + void hitSymmetryPlanePatch + ( + const symmetryPlanePolyPatch&, + TrackData& td + ); + + //- Overridable function to handle the particle hitting a + // symmetry patch template<class TrackData> void hitSymmetryPatch ( diff --git a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedParticleTemplates.C b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedParticleTemplates.C index 18b1b37a8984928ea29d615f65f71bebfb71ae0b..265621ae05e0a2c74838e9c5750ef32fcac5d66c 100644 --- a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedParticleTemplates.C +++ b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedParticleTemplates.C @@ -80,6 +80,13 @@ void Foam::wallBoundedParticle::patchInteraction static_cast<const wedgePolyPatch&>(patch), td ); } + else if (isA<symmetryPlanePolyPatch>(patch)) + { + p.hitSymmetryPlanePatch + ( + static_cast<const symmetryPlanePolyPatch&>(patch), td + ); + } else if (isA<symmetryPolyPatch>(patch)) { p.hitSymmetryPatch @@ -403,6 +410,18 @@ void Foam::wallBoundedParticle::hitWedgePatch } +template<class TrackData> +void Foam::wallBoundedParticle::hitSymmetryPlanePatch +( + const symmetryPlanePolyPatch& pp, + TrackData& td +) +{ + // Remove particle + td.keepParticle = false; +} + + template<class TrackData> void Foam::wallBoundedParticle::hitSymmetryPatch ( diff --git a/src/postProcessing/functionObjects/forces/Make/files b/src/postProcessing/functionObjects/forces/Make/files index 4f9cf092148bd82a13509d7a9f9a79d0e6c59edb..8b91d9092221ed12c0192c7afb0aa1a042d661e5 100644 --- a/src/postProcessing/functionObjects/forces/Make/files +++ b/src/postProcessing/functionObjects/forces/Make/files @@ -4,33 +4,4 @@ forces/forcesFunctionObject.C forceCoeffs/forceCoeffs.C forceCoeffs/forceCoeffsFunctionObject.C -sDoFRBM = pointPatchFields/derived/sixDoFRigidBodyMotion - -$(sDoFRBM)/sixDoFRigidBodyMotion.C -$(sDoFRBM)/sixDoFRigidBodyMotionIO.C -$(sDoFRBM)/sixDoFRigidBodyMotionState.C -$(sDoFRBM)/sixDoFRigidBodyMotionStateIO.C - -sDoFRBMR = $(sDoFRBM)/sixDoFRigidBodyMotionRestraint - -$(sDoFRBMR)/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C -$(sDoFRBMR)/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C -$(sDoFRBMR)/linearAxialAngularSpring/linearAxialAngularSpring.C -$(sDoFRBMR)/linearSpring/linearSpring.C -$(sDoFRBMR)/sphericalAngularSpring/sphericalAngularSpring.C -$(sDoFRBMR)/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C - -sDoFRBMC = $(sDoFRBM)/sixDoFRigidBodyMotionConstraint - -$(sDoFRBMC)/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C -$(sDoFRBMC)/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C -$(sDoFRBMC)/fixedAxis/fixedAxis.C -$(sDoFRBMC)/fixedLine/fixedLine.C -$(sDoFRBMC)/fixedOrientation/fixedOrientation.C -$(sDoFRBMC)/fixedPlane/fixedPlane.C -$(sDoFRBMC)/fixedPoint/fixedPoint.C - -pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C -pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C - LIB = $(FOAM_LIBBIN)/libforces diff --git a/src/regionModels/regionModel/regionModel/regionModel.C b/src/regionModels/regionModel/regionModel/regionModel.C index 8068660057bf972daf75f8df22371b766d7deed9..04b0077ca9ac2a498f08e05e90511667cc348f18 100644 --- a/src/regionModels/regionModel/regionModel/regionModel.C +++ b/src/regionModels/regionModel/regionModel/regionModel.C @@ -103,7 +103,7 @@ void Foam::regionModels::regionModel::initialise() forAll(rbm, patchI) { const polyPatch& regionPatch = rbm[patchI]; - if (isA<mappedWallPolyPatch>(regionPatch)) + if (isA<mappedPatchBase>(regionPatch)) { if (debug) { @@ -136,7 +136,7 @@ void Foam::regionModels::regionModel::initialise() primaryPatchIDs_.transfer(primaryPatchIDs); intCoupledPatchIDs_.transfer(intCoupledPatchIDs); - if (nBoundaryFaces == 0) + if (returnReduce(nBoundaryFaces, sumOp<label>()) == 0) { WarningIn("regionModel::initialise()") << "Region model has no mapped boundary conditions - transfer " diff --git a/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.C b/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.C index 027336f2e6ab8df2fc2527414c002eed59f3be72..aa3195cc6cbe1d9c236cbae2ef52a63edb784424 100644 --- a/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.C +++ b/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.C @@ -25,6 +25,9 @@ License #include "thermalBaffleFvPatchScalarField.H" #include "addToRunTimeSelectionTable.H" +#include "emptyPolyPatch.H" +#include "polyPatch.H" +#include "mappedWallPolyPatch.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -114,17 +117,6 @@ thermalBaffleFvPatchScalarField owner_ = true; baffle_->rename(baffleName); } - else if //Backwards compatibility (if region exists) - ( - thisMesh.time().foundObject<fvMesh>(regionName) - && baffle_.empty() - && regionName != "none" - ) - { - baffle_.reset(baffle::New(thisMesh, dict).ptr()); - owner_ = true; - baffle_->rename(baffleName); - } } } @@ -168,19 +160,79 @@ void thermalBaffleFvPatchScalarField::rmap void thermalBaffleFvPatchScalarField::createPatchMesh() { - const fvMesh& defaultRegion = - db().time().lookupObject<fvMesh>(fvMesh::defaultRegion); + + const fvMesh& thisMesh = patch().boundaryMesh().mesh(); word regionName = dict_.lookup("regionName"); + List<polyPatch*> regionPatches(3); + List<word> patchNames(regionPatches.size()); + List<word> patchTypes(regionPatches.size()); + List<dictionary> dicts(regionPatches.size()); + + patchNames[bottomPatchID] = word("bottom"); + patchNames[sidePatchID] = word("side"); + patchNames[topPatchID] = word("top"); + + patchTypes[bottomPatchID] = mappedWallPolyPatch::typeName; + patchTypes[topPatchID] = mappedWallPolyPatch::typeName; + + if (readBool(dict_.lookup("columnCells"))) + { + patchTypes[sidePatchID] = emptyPolyPatch::typeName; + } + else + { + patchTypes[sidePatchID] = polyPatch::typeName; + } + + const mappedPatchBase& mpp = + refCast<const mappedPatchBase>(patch().patch()); + + const word coupleGroup(mpp.coupleGroup()); + + wordList inGroups(1); + inGroups[0] = coupleGroup; + + dicts[bottomPatchID].add("coupleGroup", coupleGroup); + dicts[bottomPatchID].add("inGroups", inGroups); + dicts[bottomPatchID].add("sampleMode", mpp.sampleModeNames_[mpp.mode()]); + + const label sepPos = coupleGroup.find('_'); + + const word coupleGroupSlave = coupleGroup(0, sepPos) + "_slave"; + + inGroups[0] = coupleGroupSlave; + dicts[topPatchID].add("coupleGroup", coupleGroupSlave); + dicts[topPatchID].add("inGroups", inGroups); + dicts[topPatchID].add("sampleMode", mpp.sampleModeNames_[mpp.mode()]); + + + forAll (regionPatches, patchI) + { + dictionary& patchDict = dicts[patchI]; + patchDict.set("nFaces", 0); + patchDict.set("startFace", 0); + + regionPatches[patchI] = polyPatch::New + ( + patchTypes[patchI], + patchNames[patchI], + dicts[patchI], + patchI, + thisMesh.boundaryMesh() + ).ptr(); + } + extrudeMeshPtr_.reset ( new extrudePatchMesh ( - defaultRegion, + thisMesh, patch(), dict_, - regionName + regionName, + regionPatches ) ); diff --git a/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.H b/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.H index 543df2e39b803e60ca1c2def3fca445301fb2d3c..75166563506e6d2e6cc0f6acb4ccdfbd9ba6e88c 100644 --- a/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.H +++ b/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.H @@ -182,6 +182,14 @@ class thermalBaffleFvPatchScalarField { // Private data + //- Enumeration of patch IDs + enum patchID + { + bottomPatchID, + topPatchID, + sidePatchID + }; + //- Is the baffle owner bool owner_; diff --git a/src/sixDoFRigidBodyMotion/Make/files b/src/sixDoFRigidBodyMotion/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..7ceb41d544ec2e2203132a9bea7893cb67ed3142 --- /dev/null +++ b/src/sixDoFRigidBodyMotion/Make/files @@ -0,0 +1,30 @@ +sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C +sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C +sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C +sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C + +restraints = sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint + +$(restraints)/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C +$(restraints)/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C +$(restraints)/linearAxialAngularSpring/linearAxialAngularSpring.C +$(restraints)/linearSpring/linearSpring.C +$(restraints)/sphericalAngularSpring/sphericalAngularSpring.C +$(restraints)/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C + +constraints = sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint + +$(constraints)/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C +$(constraints)/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C +$(constraints)/fixedAxis/fixedAxis.C +$(constraints)/fixedLine/fixedLine.C +$(constraints)/fixedOrientation/fixedOrientation.C +$(constraints)/fixedPlane/fixedPlane.C +$(constraints)/fixedPoint/fixedPoint.C + +pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C +pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C + +sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C + +LIB = $(FOAM_LIBBIN)/libsixDoFRigidBodyMotion diff --git a/src/sixDoFRigidBodyMotion/Make/options b/src/sixDoFRigidBodyMotion/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..f2367d2e1d47e8b701978c06a03ad5696c8c8668 --- /dev/null +++ b/src/sixDoFRigidBodyMotion/Make/options @@ -0,0 +1,12 @@ +EXE_INC = \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/postProcessing/functionObjects/forces/lnInclude \ + -I$(LIB_SRC)/fileFormats/lnInclude \ + -I$(LIB_SRC)/dynamicMesh/lnInclude + +LIB_LIBS = \ + -lforces \ + -lmeshTools \ + -lfileFormats \ + -ldynamicMesh diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C similarity index 97% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C rename to src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C index 3045282447067284e583c0ac88b00d27c18a7b49..75af41d304aa3dd77fe049bcdc9913430078d7fc 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C +++ b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C @@ -238,10 +238,13 @@ void sixDoFRigidBodyDisplacementPointPatchVectorField::updateCoeffs() g_ = g.value(); } + // scalar ramp = min(max((this->db().time().value() - 5)/10, 0), 1); + scalar ramp = 1.0; + motion_.updateAcceleration ( - f.forceEff() + g_*motion_.mass(), - f.momentEff(), + ramp*(f.forceEff() + g_*motion_.mass()), + ramp*(f.momentEff()), t.deltaTValue() ); diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H rename to src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C rename to src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H similarity index 98% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H rename to src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H index 65af1b096de97a508f63d39233a84fb71772e28a..3ffaf25bb52b897940ae5892c7deafab7a18ac4f 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H +++ b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C similarity index 90% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C index 4e218fc0d316944711bffbe75cf7cdb2663fdec7..492b88752c0d48dda341cc1e3c3af34e6bf4559c 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C @@ -24,6 +24,7 @@ License \*---------------------------------------------------------------------------*/ #include "sixDoFRigidBodyMotion.H" +#include "septernion.H" // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // @@ -175,6 +176,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion() momentOfInertia_(diagTensor::one*VSMALL), mass_(VSMALL), aRelax_(1.0), + aDamp_(1.0), report_(false) {} @@ -192,6 +194,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion const tensor& initialQ, const diagTensor& momentOfInertia, scalar aRelax, + scalar aDamp, bool report ) : @@ -215,6 +218,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion momentOfInertia_(momentOfInertia), mass_(mass), aRelax_(aRelax), + aDamp_(aDamp), report_(report) {} @@ -239,6 +243,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion(const dictionary& dict) momentOfInertia_(dict.lookup("momentOfInertia")), mass_(readScalar(dict.lookup("mass"))), aRelax_(dict.lookupOrDefault<scalar>("accelerationRelaxation", 1.0)), + aDamp_(dict.lookupOrDefault<scalar>("accelerationDamping", 1.0)), report_(dict.lookupOrDefault<Switch>("report", false)) { addRestraints(dict); @@ -264,6 +269,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion momentOfInertia_(sDoFRBM.momentOfInertia_), mass_(sDoFRBM.mass_), aRelax_(sDoFRBM.aRelax_), + aDamp_(sDoFRBM.aDamp_), report_(sDoFRBM.report_) {} @@ -375,8 +381,8 @@ void Foam::sixDoFRigidBodyMotion::updatePosition if (Pstream::master()) { - v() = v0() + 0.5*deltaT0*a(); - pi() = pi0() + 0.5*deltaT0*tau(); + v() = v0() + aDamp_*0.5*deltaT0*a(); + pi() = pi0() + aDamp_*0.5*deltaT0*tau(); // Leapfrog move part centreOfMass() = centreOfMass0() + deltaT*v(); @@ -426,8 +432,8 @@ void Foam::sixDoFRigidBodyMotion::updateAcceleration applyConstraints(deltaT); // Correct velocities - v() += 0.5*deltaT*a(); - pi() += 0.5*deltaT*tau(); + v() += aDamp_*0.5*deltaT*a(); + pi() += aDamp_*0.5*deltaT*tau(); if (report_) { @@ -446,8 +452,8 @@ void Foam::sixDoFRigidBodyMotion::updateVelocity(scalar deltaT) if (Pstream::master()) { - v() += 0.5*deltaT*a(); - pi() += 0.5*deltaT*tau(); + v() += aDamp_*0.5*deltaT*a(); + pi() += aDamp_*0.5*deltaT*tau(); if (report_) { @@ -528,4 +534,47 @@ void Foam::sixDoFRigidBodyMotion::status() const } +Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::currentPosition +( + const pointField& initialPoints +) const +{ + return + ( + centreOfMass() + + (Q() & initialQ_.T() & (initialPoints - initialCentreOfMass_)) + ); +} + + +Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::scaledPosition +( + const pointField& initialPoints, + const scalarField& scale +) const +{ + // Calculate the transformation septerion from the initial state + septernion s + ( + centreOfMass() - initialCentreOfMass(), + quaternion(Q() & initialQ().T()) + ); + + tmp<pointField> tpoints(new pointField(initialPoints)); + pointField& points = tpoints(); + + forAll(points, pointi) + { + //- Slerp septernion + septernion ss(slerp(septernion::I, s, scale[pointi])); + + points[pointi] = + initialCentreOfMass() + + ss.transform(initialPoints[pointi] - initialCentreOfMass()); + } + + return tpoints; +} + + // ************************************************************************* // diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H similarity index 96% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H index dcdc9f441bbd26f8d07ff9515cfb78aa10c5af2f..c75e0719642f58d7bc43fb8cae08a219df033c66 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H @@ -122,6 +122,9 @@ class sixDoFRigidBodyMotion //- Acceleration relaxation coefficient scalar aRelax_; + //- Acceleration damping coefficient (for steady-state simulations) + scalar aDamp_; + //- Switch to turn reporting of motion data on and off Switch report_; @@ -264,6 +267,7 @@ public: const tensor& initialQ, const diagTensor& momentOfInertia, scalar aRelax = 1.0, + scalar aDamp = 1.0, bool report = false ); @@ -321,14 +325,19 @@ public: //- Transform the given initial state pointField by the current // motion state - inline tmp<pointField> currentPosition + tmp<pointField> currentPosition(const pointField& initialPoints) const; + + //- Transform the given initial state pointField by the current + // motion state + tmp<pointField> scaledPosition ( - const pointField& pInitial + const pointField& initialPoints, + const scalarField& scale ) const; //- Transform the given initial state point by the current motion // state - inline point currentPosition(const point& pInitial) const; + inline point currentPosition(const point& initialPoints) const; //- Transform the given initial state direction by the current // motion state @@ -344,7 +353,7 @@ public: // additional supplied force and moment point predictedPosition ( - const point& pInitial, + const point& initialPoints, const vector& deltaForce, const vector& deltaMoment, scalar deltaT diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C similarity index 98% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C index cfff8d36767d3632a96e48ac2b44be91319cf661..0e2737842535eba35bbd5a64b08e37c9a1a2b701 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H similarity index 97% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H index c394e6892d05e293e51b7cb23c8fdb3d9bab6ad9..7772833f4d53fccb4f81be74b404cc92c9433e2e 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C similarity index 98% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C index 920e4ef698b6036981e29e458b7a506184138e9f..f77afa2b10ade1dc45492a1995ab8dd67f2fd1da 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H similarity index 97% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H index b308bd2faad25845ce779d42eb27f546da73fa92..8d0710e0908780deb5364a99e63c4f5ab695e388 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C similarity index 98% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C index 98630a62e66a2f343b86c9a0e903787e3649b3e6..c66bdbb3623383e897bf77d359c2ca110314030e 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H similarity index 97% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H index 2c88722ecfc6f9c3877c9fc62453a3515efe7d6b..fcf7a62167ac24d29205cc07a68cd133c0d4a89a 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C similarity index 98% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C index 0ad4f755bfc4ae088d9d6dbc13a4502170c4280b..263694ee3f2ee1a8c449055844088dcb1632e88f 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H similarity index 97% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H index d3aca88c8beaaf9595b04e819561e41c92ccd2f6..b7f100ac5eae4e7dfd6d0d556dbe702fe8cdf055 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C similarity index 98% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C index 97eba4718d327d9397f4aacf4fdd14d181d37773..084334868dbee3ab2cc9a8f20b9625e29c22666c 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H similarity index 98% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H index 3db6ec0fa8cc972680c99508330bf9e00add64ba..c361d3a8b3d0ad730ec293f2fdc39b02c50f379a 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C similarity index 97% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C index b4154fc847f0b62de2e694b5c6a760aff560440e..22299c7f3c8cc3f2dc1b7fca94aa554a3c975665 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H similarity index 98% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H index 059585b966532ab31d5ec7c72bc43740d7809a2b..b1f5438948cf5ad3bd255f1e403db4a28d4f90ad 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C similarity index 96% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C index 1bc23dbf0c440d9c278f5722ab2a255f78a3731c..fa74999aa5d8d3ec9dd785422758ade35fba4de7 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H similarity index 95% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H index 5c1eb5e7ebe6d91c0698ab69305f3b1eeb9c076d..e64e1677fcb2987cc8dbc5906fc48a6b759090ce 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H @@ -255,26 +255,15 @@ inline Foam::vector& Foam::sixDoFRigidBodyMotion::tau() // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -inline Foam::tmp<Foam::pointField> -Foam::sixDoFRigidBodyMotion::currentPosition(const pointField& pInitial) const -{ - return - ( - centreOfMass() - + (Q() & initialQ_.T() & (pInitial - initialCentreOfMass_))) - ; -} - - inline Foam::point Foam::sixDoFRigidBodyMotion::currentPosition ( - const point& pInitial + const point& initialPoints ) const { return ( centreOfMass() - + (Q() & initialQ_.T() & (pInitial - initialCentreOfMass_)) + + (Q() & initialQ_.T() & (initialPoints - initialCentreOfMass_)) ); } diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C similarity index 100% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C similarity index 98% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C index 1e1c2dab751ec9390d59bc1945466f532342073c..76805d60d47a8bf1772957292ca5a1a88ef9169a 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H similarity index 98% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H index c82979ea15e0e8505822e756f47f17d2bc7bb3ae..d7f8c5e2805bc572d86f902dade04204c4efd074 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C similarity index 98% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C index 1b96b1d5d30c31b530c20ee084264f0cc723a74c..c6b1c10ca063592136c08861faa11022d9006566 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H similarity index 98% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H index 41840264aab5586352966ecae00202460415d550..c0610d974b39d9843580e78c81c473206e6370cd 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C similarity index 97% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C index 6a7088a0dc351764b68d747215870491470b8bc3..b06c5baf465f9262ec34ae7d69934c60c3584b38 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H similarity index 98% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H index 13d02532d5bcf75ec32efef7600b7f0fbc30df5b..d8bdf1469a3d60b404ce8ab0f25157002ec1723a 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C similarity index 96% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C index f96d3b46ce0fa62c778689c89ea651a1075b18b6..9361e0ab4df1c3b788435bb944d02d6ca50563da 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C similarity index 98% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C index 3d2ec6d0ad5d702c7bd8baab89c57c608d481c46..dbb480b93aa692727e6ee5ca9b45cdc572809e0c 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H similarity index 97% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H index 3c347e91a05aecfe40e837358a85a9dfe9305fc9..a36ef5d4ab104f3e1f2683184cd8496b73cb33f6 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C similarity index 98% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C index 198967778a4d3f2759143aa7e3c561af0b0aa601..252aa471f7958fab956c2887b1aa6e209e4537f0 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H similarity index 98% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H index ddc5190c27a1233d9ec9e6355c04ed55cfd163ab..bb45f00d519361353833a4cb02574ccac7219757 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C similarity index 97% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C index 6eddebc8b05bb2cd0efd6fca557b98743513521d..e92274c09844e8ce80bae96fcf7e462136851f45 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H similarity index 98% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H index d6a618e70ec484b97c89a4d024036e687e75db4d..92b3109c8b505676d8e878002da1e7aef28f1c86 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H similarity index 97% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H index 15bce1ba24c77a9fe73b5d3ce31187f345f83163..e5e955724532012278cde20d66357311677b81c5 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C similarity index 97% rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C index ec13669919c885ad717ea876377f4593fd328339..4033b240ba4e7087d7be33d17e959972962982e9 100644 --- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C new file mode 100644 index 0000000000000000000000000000000000000000..ca303bbeca1bf75f0414003adfa0b6b967065f4d --- /dev/null +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C @@ -0,0 +1,186 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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 "sixDoFRigidBodyMotionSolver.H" +#include "addToRunTimeSelectionTable.H" +#include "polyMesh.H" +#include "patchDist.H" +#include "volPointInterpolation.H" +#include "uniformDimensionedFields.H" +#include "forces.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(sixDoFRigidBodyMotionSolver, 0); + + addToRunTimeSelectionTable + ( + motionSolver, + sixDoFRigidBodyMotionSolver, + dictionary + ); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::sixDoFRigidBodyMotionSolver::sixDoFRigidBodyMotionSolver +( + const polyMesh& mesh, + const IOdictionary& dict +) +: + displacementMotionSolver(mesh, dict, typeName), + motion_(coeffDict()), + patches_(wordReList(coeffDict().lookup("patches"))), + patchSet_(mesh.boundaryMesh().patchSet(patches_)), + distance_(readScalar(coeffDict().lookup("distance"))), + rhoInf_(1.0), + rhoName_(coeffDict().lookupOrDefault<word>("rhoName", "rho")), + scale_ + ( + IOobject + ( + "scale", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + pointMesh::New(mesh), + dimensionedScalar("zero", dimless, 0.0) + ), + curTimeIndex_(-1) +{ + const fvMesh& fMesh = dynamic_cast<const fvMesh&>(mesh); + + if (rhoName_ == "rhoInf") + { + rhoInf_ = readScalar(dict.lookup("rhoInf")); + } + + // Calculate scaling factor everywhere + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + { + patchDist dist(fMesh, patchSet_); + + // Update distance to object + pointScalarField pDist + ( + volPointInterpolation::New + ( + fMesh + ).interpolate(dist) + ); + + // Scaling. 1 at patches, 0 at distance_ away from patches + scale_.internalField() = 1 - min(1.0, pDist.internalField()/distance_); + scale_.correctBoundaryConditions(); + scale_.write(); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::sixDoFRigidBodyMotionSolver::~sixDoFRigidBodyMotionSolver() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::pointField> +Foam::sixDoFRigidBodyMotionSolver::curPoints() const +{ + return points0() + pointDisplacement_.internalField(); +} + + +void Foam::sixDoFRigidBodyMotionSolver::solve() +{ + const Time& t = mesh().time(); + + if (mesh().nPoints() != points0().size()) + { + FatalErrorIn + ( + "sixDoFRigidBodyMotionSolver::curPoints() const" + ) << "The number of points in the mesh seems to have changed." << endl + << "In constant/polyMesh there are " << points0().size() + << " points; in the current mesh there are " << mesh().nPoints() + << " points." << exit(FatalError); + } + + // Store the motion state at the beginning of the time-step + if (curTimeIndex_ != this->db().time().timeIndex()) + { + motion_.newTime(); + curTimeIndex_ = this->db().time().timeIndex(); + } + + // Patch force data is valid for the current positions, so + // calculate the forces on the motion object from this data, then + // update the positions + + motion_.updatePosition(t.deltaTValue(), t.deltaT0Value()); + + dictionary forcesDict; + + forcesDict.add("type", forces::typeName); + forcesDict.add("patches", patches_); + forcesDict.add("rhoInf", rhoInf_); + forcesDict.add("rhoName", rhoName_); + forcesDict.add("CofR", motion_.centreOfMass()); + + forces f("forces", db(), forcesDict); + + f.calcForcesMoment(); + + uniformDimensionedVectorField g = + db().lookupObject<uniformDimensionedVectorField>("g"); + + // scalar ramp = min(max((this->db().time().value() - 5)/10, 0), 1); + scalar ramp = 1.0; + + motion_.updateAcceleration + ( + ramp*(f.forceEff() + g.value()*motion_.mass()), + ramp*(f.momentEff()), + t.deltaTValue() + ); + + // Update the displacements + pointDisplacement_.internalField() = + motion_.scaledPosition(points0(), scale_) - points0(); + + pointDisplacement_.correctBoundaryConditions(); +} + + +// ************************************************************************* // diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H new file mode 100644 index 0000000000000000000000000000000000000000..1d1e72263c8c0cfa8088afee9cf3981756640092 --- /dev/null +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H @@ -0,0 +1,136 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ 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::sixDoFRigidBodyMotionSolver + +Description + 6-DoF solid-body mesh motion solver for an fvMesh. + + Applies SLERP interpolation of movement as function of distance to + the object surface. + +SourceFiles + sixDoFRigidBodyMotionSolver.C + +\*---------------------------------------------------------------------------*/ + +#ifndef sixDoFRigidBodyMotionSolver_H +#define sixDoFRigidBodyMotionSolver_H + +#include "displacementMotionSolver.H" +#include "sixDoFRigidBodyMotion.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class sixDoFRigidBodyMotionSolver Declaration +\*---------------------------------------------------------------------------*/ + +class sixDoFRigidBodyMotionSolver +: + public displacementMotionSolver +{ + // Private data + + //- Six dof motion object + sixDoFRigidBodyMotion motion_; + + wordReList patches_; + + //- Patches to integrate forces + const labelHashSet patchSet_; + + //- Morphing distance + const scalar distance_; + + //- Reference density required by the forces object for + // incompressible calculations, required if rhoName == rhoInf + scalar rhoInf_; + + //- Name of density field, optional unless used for an + // incompressible simulation, when this needs to be specified + // as rhoInf + word rhoName_; + + //- Current interpolation scale (1 at patches, 0 at distance_) + pointScalarField scale_; + + //- Current time index (used for updating) + label curTimeIndex_; + + + // Private Member Functions + + //- Disallow default bitwise copy construct + sixDoFRigidBodyMotionSolver + ( + const sixDoFRigidBodyMotionSolver& + ); + + //- Disallow default bitwise assignment + void operator=(const sixDoFRigidBodyMotionSolver&); + + +public: + + //- Runtime type information + TypeName("sixDoFRigidBodyMotion"); + + + // Constructors + + //- Construct from polyMesh and IOdictionary + sixDoFRigidBodyMotionSolver + ( + const polyMesh&, + const IOdictionary& dict + ); + + + //- Destructor + ~sixDoFRigidBodyMotionSolver(); + + + // Member Functions + + //- Return point location obtained from the current motion field + virtual tmp<pointField> curPoints() const; + + //- Solve for motion + virtual void solve(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/properties/liquidProperties/liquidProperties/liquidProperties.H b/src/thermophysicalModels/properties/liquidProperties/liquidProperties/liquidProperties.H index 2210d567a317663006428a0eeceae7e1f8796489..fa295c97c97161767c3c7ef5c6222683ae4c7b4c 100644 --- a/src/thermophysicalModels/properties/liquidProperties/liquidProperties/liquidProperties.H +++ b/src/thermophysicalModels/properties/liquidProperties/liquidProperties/liquidProperties.H @@ -64,7 +64,7 @@ class liquidProperties //- Critical pressure [Pa] scalar Pc_; - //- Critical volume [m^3/mol] + //- Critical volume [m^3/kmol] scalar Vc_; //- Critical compressibility factor [] @@ -185,7 +185,7 @@ public: //- Critical pressure [Pa] inline scalar Pc() const; - //- Critical volume [m^3/mol] + //- Critical volume [m^3/kmol] inline scalar Vc() const; //- Critical compressibilty factor diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.C b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.C index 862d4ee6be33dbe206ec2144eb3895c861095a93..bd27dc874d9ca12b334c36d0ad4661e0efa886c1 100644 --- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.C +++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -47,7 +47,7 @@ turbulentTemperatureCoupledBaffleMixedFvPatchScalarField : mixedFvPatchScalarField(p, iF), temperatureCoupledBase(patch(), "undefined", "undefined-K"), - neighbourFieldName_("undefined-neighbourFieldName") + TnbrName_("undefined-Tnbr") { this->refValue() = 0.0; this->refGrad() = 0.0; @@ -66,7 +66,7 @@ turbulentTemperatureCoupledBaffleMixedFvPatchScalarField : mixedFvPatchScalarField(ptf, p, iF, mapper), temperatureCoupledBase(patch(), ptf.KMethod(), ptf.kappaName()), - neighbourFieldName_(ptf.neighbourFieldName_) + TnbrName_(ptf.TnbrName_) {} @@ -80,7 +80,7 @@ turbulentTemperatureCoupledBaffleMixedFvPatchScalarField : mixedFvPatchScalarField(p, iF), temperatureCoupledBase(patch(), dict), - neighbourFieldName_(dict.lookup("neighbourFieldName")) + TnbrName_(dict.lookup("neighbourFieldName")) { if (!isA<mappedPatchBase>(this->patch().patch())) { @@ -129,7 +129,7 @@ turbulentTemperatureCoupledBaffleMixedFvPatchScalarField : mixedFvPatchScalarField(wtcsf, iF), temperatureCoupledBase(patch(), wtcsf.KMethod(), wtcsf.kappaName()), - neighbourFieldName_(wtcsf.neighbourFieldName_) + TnbrName_(wtcsf.TnbrName_) {} @@ -169,7 +169,7 @@ void turbulentTemperatureCoupledBaffleMixedFvPatchScalarField::updateCoeffs() ( nbrPatch.lookupPatchField<volScalarField, scalar> ( - neighbourFieldName_ + TnbrName_ ) ); @@ -237,7 +237,7 @@ void turbulentTemperatureCoupledBaffleMixedFvPatchScalarField::write ) const { mixedFvPatchScalarField::write(os); - os.writeKeyword("neighbourFieldName")<< neighbourFieldName_ + os.writeKeyword("TnbrName")<< TnbrName_ << token::END_STATEMENT << nl; temperatureCoupledBase::write(os); } diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.H b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.H index e9fc1f84aedd597d9414bcd5d40cecd4a30c164c..60e61d9d0f02c2ac85fee2faca8c488c86057fb3 100644 --- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.H +++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -89,7 +89,7 @@ class turbulentTemperatureCoupledBaffleMixedFvPatchScalarField // Private data //- Name of field on the neighbour region - const word neighbourFieldName_; + const word TnbrName_; public: diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.C b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.C index 137db852d481eea3bb8fb11343b21d896dfaf6e0..6d512d50bd5c6479c42832e16ccfa8b131efe83c 100644 --- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.C +++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -84,9 +84,9 @@ turbulentTemperatureRadCoupledMixedFvPatchScalarField : mixedFvPatchScalarField(p, iF), temperatureCoupledBase(patch(), dict), - TnbrName_(dict.lookup("Tnbr")), - QrNbrName_(dict.lookup("QrNbr")), - QrName_(dict.lookup("Qr")) + TnbrName_(dict.lookupOrDefault<word>("Tnbr", "T")), + QrNbrName_(dict.lookupOrDefault<word>("QrNbr", "none")), + QrName_(dict.lookupOrDefault<word>("Qr", "none")) { if (!isA<mappedPatchBase>(this->patch().patch())) { diff --git a/tutorials/basic/potentialFoam/cylinder/0.org/U b/tutorials/basic/potentialFoam/cylinder/0.org/U index c4b3d7fb847efb27b1bb62a66c1edcf5302b29c5..d6116b31aabcabcab75c2b6d7b039eb4925ef1b2 100644 --- a/tutorials/basic/potentialFoam/cylinder/0.org/U +++ b/tutorials/basic/potentialFoam/cylinder/0.org/U @@ -43,7 +43,7 @@ boundaryField cylinder { - type symmetryPlane; + type symmetry; } defaultFaces diff --git a/tutorials/basic/potentialFoam/cylinder/0.org/p b/tutorials/basic/potentialFoam/cylinder/0.org/p index 89f2085d0defe41b267263f067bf0b237f573684..6f49804a73c532afd414d41edb937ba089777746 100644 --- a/tutorials/basic/potentialFoam/cylinder/0.org/p +++ b/tutorials/basic/potentialFoam/cylinder/0.org/p @@ -43,7 +43,7 @@ boundaryField cylinder { - type symmetryPlane; + type symmetry; } defaultFaces diff --git a/tutorials/basic/potentialFoam/cylinder/constant/polyMesh/blockMeshDict b/tutorials/basic/potentialFoam/cylinder/constant/polyMesh/blockMeshDict index b234ca868aa82d451fa0ba50244b4e806efbe039..7bfe080d73fbeb9c68fad0d317cdc849914ae7a1 100644 --- a/tutorials/basic/potentialFoam/cylinder/constant/polyMesh/blockMeshDict +++ b/tutorials/basic/potentialFoam/cylinder/constant/polyMesh/blockMeshDict @@ -138,7 +138,7 @@ boundary } cylinder { - type symmetryPlane; + type symmetry; faces ( (10 5 24 29) diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/boundaryT b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/boundaryT index 53679a4d4015921a950bb20ef27a026c93fdd4f7..ef322d8c87d4dab8bc272c69eb834ae5ef32a43b 100644 --- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/boundaryT +++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/boundaryT @@ -26,7 +26,7 @@ boundaryField value uniform 300; } - entrance + "entrance.*" { type symmetryPlane; } diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/boundaryU b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/boundaryU index ea3b12802eedcf9902e3527cccd1b18297c5c07a..744ecbbfb812a7416d788c9fa2b6d98758a69e0b 100644 --- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/boundaryU +++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/boundaryU @@ -26,7 +26,7 @@ boundaryField value uniform (1936 0 0); } - entrance + "entrance.*" { type symmetryPlane; } diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/dsmcRhoN b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/dsmcRhoN index d4692578fb6d6333ad0b045cbf5b623804a7a101..785995c6cf929f6382791a86d02fbf6c6e8ff46a 100644 --- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/dsmcRhoN +++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/dsmcRhoN @@ -25,7 +25,7 @@ boundaryField type zeroGradient; } - entrance + "entrance.*" { type symmetryPlane; } diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/fD b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/fD index 25c79baa0dfe753cecaf849836af34168ff96948..7b9c6df33abac4bf60a111566100b2693303c37e 100644 --- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/fD +++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/fD @@ -26,7 +26,7 @@ boundaryField value uniform (0 0 0); } - entrance + "entrance.*" { type symmetryPlane; } diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/iDof b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/iDof index a7675b5581cfd93ff11a2602cc76bf1054349320..ead6eebcbd0b706b4d0b9b60c7b8ca8d303641fd 100644 --- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/iDof +++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/iDof @@ -25,7 +25,7 @@ boundaryField type zeroGradient; } - entrance + "entrance.*" { type symmetryPlane; } diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/internalE b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/internalE index f906279f83784e6e443cc462dd37c10afc1174fd..ced72b0e8dc1ff43a77200bd4c3bd706dda196a2 100644 --- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/internalE +++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/internalE @@ -25,7 +25,7 @@ boundaryField type zeroGradient; } - entrance + "entrance.*" { type symmetryPlane; } diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/linearKE b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/linearKE index 46d7cf4032db1396170cf097902676bfb7be6f38..0bd68d2dd0bd0e2d0f04ee2c965105c647f4db0e 100644 --- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/linearKE +++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/linearKE @@ -25,7 +25,7 @@ boundaryField type zeroGradient; } - entrance + "entrance.*" { type symmetryPlane; } diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/momentum b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/momentum index 366978bbc47a727326e5972d04a064250b3a0913..2a65f62e0499cef7f99a62999471fba220864132 100644 --- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/momentum +++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/momentum @@ -25,7 +25,7 @@ boundaryField type zeroGradient; } - entrance + "entrance.*" { type symmetryPlane; } diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/q b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/q index 497d603d75e470c9720018f789a08743a4d8d206..49d5c4c775c8f428631c094e9a15fc621bf3e8e4 100644 --- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/q +++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/q @@ -27,7 +27,7 @@ boundaryField } - entrance + "entrance.*" { type symmetryPlane; } diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/rhoM b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/rhoM index 20a8d376945ec1d4f783a3add22b249de4328e8e..a07b9b4cc5720af7e6cb96a020496b02c31e2c17 100644 --- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/rhoM +++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/rhoM @@ -25,7 +25,7 @@ boundaryField type zeroGradient; } - entrance + "entrance.*" { type symmetryPlane; } diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/rhoN b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/rhoN index 9aec13a5eed9c62f9fb59c65bf1142cc53d5938a..10cad731ebd2944a2209c7fef8f5187e2fb713b5 100644 --- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/rhoN +++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/rhoN @@ -25,7 +25,7 @@ boundaryField type zeroGradient; } - entrance + "entrance.*" { type symmetryPlane; } diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/constant/polyMesh/blockMeshDict b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/constant/polyMesh/blockMeshDict index 66a179d00eb614bdbf766cee3c43207c1bbbafb6..599dfd540caaaeeffb04e3771723305ff69a8803 100644 --- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/constant/polyMesh/blockMeshDict +++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/constant/polyMesh/blockMeshDict @@ -56,12 +56,20 @@ boundary ); } - entrance + entrance1 { type symmetryPlane; faces ( (0 1 5 4) + ); + } + + entrance2 + { + type symmetryPlane; + faces + ( (0 3 2 1) ); } diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/baffle3DRegion/T b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/baffle3DRegion/T index 2c6bde2e11234c7c304f802383b3e0b98bdedc2c..656062e8a95733adcfc4337933ebf94fe4277cb7 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/baffle3DRegion/T +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/baffle3DRegion/T @@ -24,11 +24,8 @@ boundaryField bottom { type compressible::thermalBaffle; - Tnbr T; kappa solidThermo; kappaName none; - QrNbr none; - Qr none; value uniform 300; } side @@ -38,11 +35,8 @@ boundaryField top { type compressible::thermalBaffle; - Tnbr T; kappa solidThermo; kappaName none; - QrNbr none; - Qr none; value uniform 300; } } diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/3DBaffle/3DTemperatureMasterBafflePatches b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/3DBaffle/3DTemperatureMasterBafflePatches index 17ab57161fb6693f0003500292a88bee4c7a6d49..a068b051ba8ac32fe1153cb2adc3c662d80e4d69 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/3DBaffle/3DTemperatureMasterBafflePatches +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/3DBaffle/3DTemperatureMasterBafflePatches @@ -9,15 +9,10 @@ T { type compressible::thermalBaffle; - Tnbr T; kappa fluidThermo; kappaName none; - QrNbr none; - Qr none; value uniform 300; - // Thermo baffle model - //thermalBaffleModel thermalBaffle; regionName ${baffleRegionName}; active yes; @@ -26,33 +21,6 @@ T // New fvMesh (region) information # include "extrudeModel" - - // New mesh polyPatch information - bottomCoeffs - { - name "bottom"; - type mappedWall; - sampleMode nearestPatchFace; - samplePatch ${masterPatchName}; - offsetMode uniform; - offset (0 0 0); - } - - topCoeffs - { - name "top"; - type mappedWall; - sampleMode nearestPatchFace; - samplePatch ${slavePatchName}; - offsetMode uniform; - offset (0 0 0); - } - - sideCoeffs - { - name "side"; - type patch; - } } // ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/createBafflesDict b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/createBafflesDict index fe16ef97a259ec6b8886c14ee462a6c0bdc0c79e..2aed1e32a615e3405ccb0d355239984cfc0f1514 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/createBafflesDict +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/createBafflesDict @@ -48,47 +48,16 @@ baffles surface triSurfaceMesh; name baffle3D.stl; - patches + patchPairs { - master - { - //- Master side patch - name ${masterPatchName}; - - type mappedWall; - inGroups (baffleWallGroup); - - sampleMode nearestPatchFace; - sampleRegion ${baffleRegionName}; - samplePatch bottom; - offsetMode uniform; - offset (0 0 0); - - patchFields - { - #include "./0/include/wallBafflePatches" - #include "./0/include/3DBaffle/3DTemperatureMasterBafflePatches" - } - } - slave + type mappedWall; + sampleMode nearestPatchFace; + //Group master and slave in different groups. (default off) + groupBase on; + patchFields { - //- Slave side patch - name ${slavePatchName}; - - type mappedWall; - inGroups (baffleWallGroup); - - sampleMode nearestPatchFace; - sampleRegion ${baffleRegionName}; - samplePatch top; - offsetMode uniform; - offset (0 0 0); - - patchFields - { - #include "./0/include/wallBafflePatches" - #include "./0/include/3DBaffle/3DTemperatureSlaveBafflePatches" - } + #include "./0/include/wallBafflePatches" + #include "./0/include/3DBaffle/3DTemperatureMasterBafflePatches" } } } diff --git a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/U b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/U index b6507db443dcd3e12f13ba5ec1f196bc2fc36d4b..9b63f3c191a4b6c36b08e3704f45360d30bbb114 100644 --- a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/U +++ b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/U @@ -33,7 +33,7 @@ boundaryField } up { - type symmetryPlane; + type symmetry; } hole { diff --git a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/kl b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/kl index 496477b8a6596e3c31f281f1b516662595c7a526..b35fc203808408e14912000de992eba5bccfc862 100644 --- a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/kl +++ b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/kl @@ -34,7 +34,7 @@ boundaryField } up { - type symmetryPlane; + type symmetry; } hole { diff --git a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/kt b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/kt index 265bd65e66f967426d383ecd7d09665fdfd75687..c64ca0f6cff76dc305cb63e56440d0afa38990d7 100644 --- a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/kt +++ b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/kt @@ -34,7 +34,7 @@ boundaryField } up { - type symmetryPlane; + type symmetry; } hole { diff --git a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/nut b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/nut index e2a11d2cffc99cd11b2cca0fadae84fda1a64b3a..435c96ce84a9229d930170318d84c25ad313369a 100644 --- a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/nut +++ b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/nut @@ -33,7 +33,7 @@ boundaryField } up { - type symmetryPlane; + type symmetry; } hole { diff --git a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/omega b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/omega index 9ed9c7a2dc0853983ef82932a00f881186564dd5..fed86624a8eb3c3db210347610e3debba58c6fd0 100644 --- a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/omega +++ b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/omega @@ -34,7 +34,7 @@ boundaryField } up { - type symmetryPlane; + type symmetry; } hole { diff --git a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/p b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/p index fbb21d38abc95c5d5e7a7548c5f839272bc9ebc8..e2ef78a321070c009eacc94d7dbc04ce26b30350 100644 --- a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/p +++ b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/p @@ -31,7 +31,7 @@ boundaryField } up { - type symmetryPlane; + type symmetry; } hole { diff --git a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/constant/polyMesh/blockMeshDict b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/constant/polyMesh/blockMeshDict index 64e4d59a024a09314d0dff56ee5f257e7807b55e..28e1b8a9f3951cdcc8a0d8c8b39d1bc67b013e20 100644 --- a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/constant/polyMesh/blockMeshDict +++ b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/constant/polyMesh/blockMeshDict @@ -67,7 +67,7 @@ boundary ( left { - type symmetryPlane; + type symmetry; faces ( (8 9 20 19) @@ -85,7 +85,7 @@ boundary } down { - type symmetryPlane; + type symmetry; faces ( (0 1 12 11) @@ -94,7 +94,7 @@ boundary } up { - type symmetryPlane; + type symmetry; faces ( (7 8 19 18) diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/U b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/U index 8cbb63e11608b0080a911f2591fc31af47ef1a9b..cee307a730f64dcc1f2b1b96970ff69e9868aadd 100644 --- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/U +++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/U @@ -54,7 +54,7 @@ boundaryField { type symmetryPlane; } - frontAndBack + "(front|back)" { type symmetryPlane; } diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/include/frontBackUpperPatches b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/include/frontBackUpperPatches index 69519e55ad077a0426254a46a79e65935e095f54..ae6ea03155c54a5561e7bc393f131d38dfae4c4c 100644 --- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/include/frontBackUpperPatches +++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/include/frontBackUpperPatches @@ -11,7 +11,7 @@ upperWall type symmetryPlane; } -frontAndBack +"(front|back)" { type symmetryPlane; } diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/k b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/k index 17fb5eca6d05e1702952e9b9bf20ac7d11889c8d..b4cd87638c3a29462792abf6ee257c83ae3b1199 100644 --- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/k +++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/k @@ -46,7 +46,7 @@ boundaryField { type symmetryPlane; } - frontAndBack + "(front|back)" { type symmetryPlane; } diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/nuTilda b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/nuTilda index 8fb0fba67ec954e8fcc9436c52270edd5f2512cb..41461e671110c3338e2b919e10057e1cc97ceaec 100644 --- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/nuTilda +++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/nuTilda @@ -46,7 +46,7 @@ boundaryField { type symmetryPlane; } - frontAndBack + "(front|back)" { type symmetryPlane; } diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/nut b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/nut index 9f5768c2e73c9231f2b6a5e86171b814217b6b2b..915f16d2257f63a89179082c09d9d26735f511fe 100644 --- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/nut +++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/nut @@ -21,7 +21,7 @@ internalField uniform 0; boundaryField { - frontAndBack + "(front|back)" { type symmetryPlane; value uniform 0; diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/p b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/p index ea47d98bd969451e359de3dab54bf8477d8ecab5..f85ce77a8ce2b3741bf182ed4e13b478200f415f 100644 --- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/p +++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/p @@ -42,7 +42,7 @@ boundaryField { type symmetryPlane; } - frontAndBack + "(front|back)" { type symmetryPlane; } diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/blockMeshDict b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/blockMeshDict index ecd71ab96cbc821f0b2d3aa7f006578aca6009d6..53f4ee34474e057cfe840445b41c674f63575bad 100644 --- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/blockMeshDict +++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/blockMeshDict @@ -40,12 +40,19 @@ edges boundary ( - frontAndBack + front { type symmetryPlane; faces ( (3 7 6 2) + ); + } + back + { + type symmetryPlane; + faces + ( (1 5 4 0) ); } diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/blockMeshDict.8pSmall b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/blockMeshDict.8pSmall index 9272e69301522a40d59f915a105738c04dbf38b7..c865acf47b5a02d5d6b490b5da742329c69cd50e 100644 --- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/blockMeshDict.8pSmall +++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/blockMeshDict.8pSmall @@ -40,12 +40,19 @@ edges boundary ( - frontAndBack + front { type symmetryPlane; faces ( (3 7 6 2) + ); + } + back + { + type symmetryPlane; + faces + ( (1 5 4 0) ); } diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/boundary b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/boundary index 70a305827af2cbe30d545936791c61bf3ada7876..40530a746d077ecc7a9cb45a277031110b068c62 100644 --- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/boundary +++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/boundary @@ -15,15 +15,22 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -5 +6 ( - frontAndBack + front { type symmetryPlane; inGroups 1(symmetryPlane); - nFaces 320; + nFaces 160; startFace 3456; } + back + { + type symmetryPlane; + inGroups 1(symmetryPlane); + nFaces 160; + startFace 3616; + } inlet { type patch; diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSchemes b/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSchemes index 70e7cf49ab6ec67ae4c65dc39708f95f9a61a430..84e4f5d57dfd09e85acab261c76262e00856e689 100644 --- a/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSchemes +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSchemes @@ -28,13 +28,13 @@ gradSchemes divSchemes { - div(rho*phi,U) Gauss linearUpwind grad(U); + div(rhoPhi,U) Gauss linearUpwind grad(U); div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss interfaceCompression 1; div(phid1,p_rgh) Gauss upwind; div(phid2,p_rgh) Gauss upwind; - div(rho*phi,T) Gauss linearUpwind unlimited; - div(rho*phi,K) Gauss upwind; + div(rhoPhi,T) Gauss linearUpwind unlimited; + div(rhoPhi,K) Gauss upwind; div(phi,k) Gauss upwind; div(phi,epsilon) Gauss upwind; div((muEff*dev2(T(grad(U))))) Gauss linear; diff --git a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/U b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/U index 92d3cfd744cc45ea733384c41fdc96497f965257..cdfb0476f512ad3fbc326665250c1ba4eeea57e2 100644 --- a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/U +++ b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/U @@ -39,7 +39,7 @@ boundaryField sides { - type symmetryPlane; + type symmetry; } atmosphere diff --git a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/alpha.water.org b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/alpha.water.org index dbef449a2f88da06ed726668d4636417ca2131cc..9f0c8ce1fc6fce29cadbdca5aa07f99adffe52ac 100644 --- a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/alpha.water.org +++ b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/alpha.water.org @@ -11,7 +11,7 @@ FoamFile format ascii; class volScalarField; location "0"; - object alpha; + object alpha.water; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -34,7 +34,7 @@ boundaryField sides { - type symmetryPlane; + type symmetry; } atmosphere diff --git a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/k b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/k index 9f4d8df1c01a973102a7e5c645e39c382962deaa..aad177972c35962637692bb6233b97855b9788a9 100644 --- a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/k +++ b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/k @@ -34,7 +34,7 @@ boundaryField sides { - type symmetryPlane; + type symmetry; } atmosphere diff --git a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/nut b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/nut index 5106e2b1029e657da831443c0dc3ee9d5e52fa96..c36622b550442471c0f6994d2cc46c97368ee7d0 100644 --- a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/nut +++ b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/nut @@ -34,7 +34,7 @@ boundaryField sides { - type symmetryPlane; + type symmetry; } atmosphere diff --git a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/omega b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/omega index 885912311ac33b4f148d9a7f7031996b734b38ba..cf768115ca3e68ffaa1a7f50684ba3909ea99921 100644 --- a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/omega +++ b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/omega @@ -40,7 +40,7 @@ boundaryField sides { - type symmetryPlane; + type symmetry; } atmosphere diff --git a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/p_rgh b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/p_rgh index 835531655703ace8fb4f92cbec548c0a569f1ad9..d041cce82d07af19480424a07c2eb2ce63e92ac9 100644 --- a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/p_rgh +++ b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/p_rgh @@ -33,7 +33,7 @@ boundaryField sides { - type symmetryPlane; + type symmetry; } atmosphere diff --git a/tutorials/multiphase/LTSInterFoam/wigleyHull/constant/polyMesh/blockMeshDict b/tutorials/multiphase/LTSInterFoam/wigleyHull/constant/polyMesh/blockMeshDict index 15c061cdf7ca172f97a8b4e63434a77a1a131ab1..989ecac8b0ae3ecffa8eda3106db8e383b52af45 100644 --- a/tutorials/multiphase/LTSInterFoam/wigleyHull/constant/polyMesh/blockMeshDict +++ b/tutorials/multiphase/LTSInterFoam/wigleyHull/constant/polyMesh/blockMeshDict @@ -68,7 +68,7 @@ boundary sides { - type symmetryPlane; + type symmetry; faces ( (1 5 4 0) diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/fvSchemes b/tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/fvSchemes index 568660217fe3cdf6d0843a3fff4f058d4d03d1bb..e6b91940f088b92d23efb21a78fc8437f487c08c 100644 --- a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/fvSchemes +++ b/tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/fvSchemes @@ -27,7 +27,7 @@ gradSchemes divSchemes { - div(rho*phi,U) Gauss linear; + div(rhoPhi,U) Gauss linear; div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss interfaceCompression; div((muEff*dev(T(grad(U))))) Gauss linear; diff --git a/tutorials/multiphase/MRFMultiphaseInterFoam/mixerVessel2D/0.org/alpha.water b/tutorials/multiphase/MRFMultiphaseInterFoam/mixerVessel2D/0.org/alpha.water index 0f3dcd46393f9b498f154afa8e76bbbe50579b1e..e1483e3c1ea0f46f5be5c2d819f89291fe8b3ace 100644 --- a/tutorials/multiphase/MRFMultiphaseInterFoam/mixerVessel2D/0.org/alpha.water +++ b/tutorials/multiphase/MRFMultiphaseInterFoam/mixerVessel2D/0.org/alpha.water @@ -10,7 +10,7 @@ FoamFile version 2.0; format ascii; class volScalarField; - object alpha1; + object alpha.water; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/MRFMultiphaseInterFoam/mixerVessel2D/system/fvSchemes b/tutorials/multiphase/MRFMultiphaseInterFoam/mixerVessel2D/system/fvSchemes index d1ed26cae3bca94b43c279390ae992152d8c1682..8c391523146a27e605a4cd78234fe5b85346f191 100644 --- a/tutorials/multiphase/MRFMultiphaseInterFoam/mixerVessel2D/system/fvSchemes +++ b/tutorials/multiphase/MRFMultiphaseInterFoam/mixerVessel2D/system/fvSchemes @@ -27,7 +27,7 @@ gradSchemes divSchemes { - div(rho*phi,U) Gauss limitedLinearV 1; + div(rhoPhi,U) Gauss limitedLinearV 1; div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss interfaceCompression; div((muEff*dev(T(grad(U))))) Gauss linear; diff --git a/tutorials/multiphase/compressibleInterDyMFoam/ras/sloshingTank2D/system/fvSchemes b/tutorials/multiphase/compressibleInterDyMFoam/ras/sloshingTank2D/system/fvSchemes index 3d39f5b409eb703d6ffea93e60538665384fb81b..85be6a2abe599318c6182c176356482da3fa4dc1 100644 --- a/tutorials/multiphase/compressibleInterDyMFoam/ras/sloshingTank2D/system/fvSchemes +++ b/tutorials/multiphase/compressibleInterDyMFoam/ras/sloshingTank2D/system/fvSchemes @@ -30,11 +30,11 @@ divSchemes div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss interfaceCompression 1; - div(rho*phi,U) Gauss vanLeerV; + div(rhoPhi,U) Gauss vanLeerV; div(phi,thermo:rho.water) Gauss linear; div(phi,thermo:rho.air) Gauss linear; - div(rho*phi,T) Gauss vanLeer; - div(rho*phi,K) Gauss linear; + div(rhoPhi,T) Gauss vanLeer; + div(rhoPhi,K) Gauss linear; div((phi+meshPhi),p) Gauss linear; div((muEff*dev2(T(grad(U))))) Gauss linear; diff --git a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/system/fvSchemes b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/system/fvSchemes index b44890f3896acda7fb7e8726a5231784fb20b1ff..2003e43e507d73c37ee629b545a1fa2395ab067e 100644 --- a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/system/fvSchemes +++ b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/system/fvSchemes @@ -30,11 +30,11 @@ divSchemes div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss interfaceCompression 1; - div(rho*phi,U) Gauss upwind; + div(rhoPhi,U) Gauss upwind; div(phi,thermo:rho.water) Gauss upwind; div(phi,thermo:rho.air) Gauss upwind; - div(rho*phi,T) Gauss upwind; - div(rho*phi,K) Gauss upwind; + div(rhoPhi,T) Gauss upwind; + div(rhoPhi,K) Gauss upwind; div(phi,p) Gauss upwind; div(phi,k) Gauss upwind; diff --git a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/fvSchemes b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/fvSchemes index b44890f3896acda7fb7e8726a5231784fb20b1ff..2003e43e507d73c37ee629b545a1fa2395ab067e 100644 --- a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/fvSchemes +++ b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/fvSchemes @@ -30,11 +30,11 @@ divSchemes div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss interfaceCompression 1; - div(rho*phi,U) Gauss upwind; + div(rhoPhi,U) Gauss upwind; div(phi,thermo:rho.water) Gauss upwind; div(phi,thermo:rho.air) Gauss upwind; - div(rho*phi,T) Gauss upwind; - div(rho*phi,K) Gauss upwind; + div(rhoPhi,T) Gauss upwind; + div(rhoPhi,K) Gauss upwind; div(phi,p) Gauss upwind; div(phi,k) Gauss upwind; diff --git a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/0.org/T b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/0.org/T index 1dc67cd149c827026b09c4f1738f89f3a7073cc1..8041c3700d95a318a5e9f57f89081f7bccb4ec5a 100644 --- a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/0.org/T +++ b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/0.org/T @@ -39,7 +39,7 @@ boundaryField atmosphere { type inletOutlet; - phi rho*phi; + phi rhoPhi; inletValue $internalField; } defaultFaces diff --git a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/system/fvSchemes b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/system/fvSchemes index 9f3fac1dce597032e84957e7b639b1152fb3cad8..fd25001435963d0885cd27d48e1d7f31204700ab 100644 --- a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/system/fvSchemes +++ b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/system/fvSchemes @@ -27,12 +27,12 @@ gradSchemes divSchemes { - div(rho*phi,U) Gauss upwind; + div(rhoPhi,U) Gauss upwind; div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss interfaceCompression; "div\(phi,.*rho.*\)" Gauss upwind; - div(rho*phi,T) Gauss upwind; - div(rho*phi,K) Gauss upwind; + div(rhoPhi,T) Gauss upwind; + div(rhoPhi,K) Gauss upwind; div(phi,p) Gauss upwind; div((muEff*dev2(T(grad(U))))) Gauss linear; } diff --git a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/constant/dynamicMeshDict index 6c2f78df72ac14f3681a8d56f6a0f381841f43dd..7132713ff0c3ff5b6053ebf25cd9f2a18e40d0df 100644 --- a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/constant/dynamicMeshDict +++ b/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/constant/dynamicMeshDict @@ -41,7 +41,7 @@ dynamicRefineFvMeshCoeffs ( (phi none) (nHatf none) - (rho*phi none) + (rhoPhi none) (ghf none) ); // Write the refinement level as a volScalarField diff --git a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/system/fvSchemes index ba444728e19c244ad788ce3878e4c65a2609b292..6a01390f25ecca9d7ba0bef02edf0cdb391ea166 100644 --- a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/system/fvSchemes +++ b/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/system/fvSchemes @@ -27,7 +27,7 @@ gradSchemes divSchemes { - div(rho*phi,U) Gauss upwind; + div(rhoPhi,U) Gauss upwind; div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss interfaceCompression; div((muEff*dev(T(grad(U))))) Gauss linear; diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement index daff376a9d323b0fc015d085f6f15ccf2e51e110..2b8d06c0fee203a782e795d7251859f4ba1276c9 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement @@ -32,13 +32,7 @@ boundaryField } floatingObject { - type sixDoFRigidBodyDisplacement; - centreOfMass (0.5 0.5 0.5); - momentOfInertia (0.08622222 0.08622222 0.144); - mass 9.6; - rhoInf 1; - report on; - accelerationRelaxation 0.3; + type calculated; value uniform (0 0 0); } } diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict index 8001efbebcfad0057065cd89baeff3e54c58b6bb..3dfd129db5fbb717145f9cc67bbaa0e5de8623af 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict @@ -14,15 +14,22 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -dynamicFvMesh dynamicMotionSolverFvMesh; +dynamicFvMesh dynamicMotionSolverFvMesh; -motionSolverLibs ("libfvMotionSolvers.so"); +motionSolverLibs ("libsixDoFRigidBodyMotion.so"); -solver displacementLaplacian; +solver sixDoFRigidBodyMotion; -displacementLaplacianCoeffs +sixDoFRigidBodyMotionCoeffs { - diffusivity inverseDistance (floatingObject); + patches (floatingObject); + distance 0.3; + + centreOfMass (0.5 0.5 0.5); + momentOfInertia (0.08622222 0.08622222 0.144); + mass 9.6; + report on; + accelerationRelaxation 0.3; } diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict index 2a0a90efa67a634198a39d9b79ec7f9606a5be1a..d51c2fd31ed6c3b2dc01d5e8ffad9a213cf3a21d 100644 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict @@ -51,12 +51,4 @@ maxCo 5; maxAlphaCo 5; maxDeltaT 1; -libs -( - "libOpenFOAM.so" - "libincompressibleRASModels.so" - "libfvMotionSolvers.so" - "libforces.so" -); - // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/U b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/U new file mode 100644 index 0000000000000000000000000000000000000000..3bd47593e0467cf08cac6c3846c1f4b7702c1fe3 --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/U @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + stationaryWalls + { + type fixedValue; + value uniform (0 0 0); + } + atmosphere + { + type pressureInletOutletVelocity; + value uniform (0 0 0); + } + floatingObject + { + type movingWallVelocity; + value uniform (0 0 0); + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/alpha.water b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/alpha.water new file mode 100644 index 0000000000000000000000000000000000000000..e09e2739bd74209760e5464f8115fcb98a495b1d --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/alpha.water @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alpha.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + stationaryWalls + { + type zeroGradient; + } + atmosphere + { + type inletOutlet; + inletValue uniform 0; + value uniform 0; + } + floatingObject + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/epsilon b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/epsilon new file mode 100644 index 0000000000000000000000000000000000000000..7f3186509e35ac5e959629401a942c7b254f53df --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/epsilon @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 0.1; + +boundaryField +{ + stationaryWalls + { + type epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 0.1; + } + atmosphere + { + type inletOutlet; + inletValue uniform 0.1; + value uniform 0.1; + } + floatingObject + { + type epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 0.1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/k b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/k new file mode 100644 index 0000000000000000000000000000000000000000..b43eb2f5c00f09a27984fcf19366600a87a876f5 --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/k @@ -0,0 +1,43 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0.1; + +boundaryField +{ + stationaryWalls + { + type kqRWallFunction; + value uniform 0.1; + } + atmosphere + { + type inletOutlet; + inletValue uniform 0.1; + value uniform 0.1; + } + floatingObject + { + type kqRWallFunction; + value uniform 0.1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/nut b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/nut new file mode 100644 index 0000000000000000000000000000000000000000..9d437e984132980225b2dfe8071b3a564d15e833 --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/nut @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object nut; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + stationaryWalls + { + type nutkWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 0; + } + atmosphere + { + type calculated; + value uniform 0; + } + floatingObject + { + type nutkWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 0; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/p_rgh b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/p_rgh new file mode 100644 index 0000000000000000000000000000000000000000..e24799fc142dceac24cdc489930837bd6163db4f --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/p_rgh @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + stationaryWalls + { + type fixedFluxPressure; + } + atmosphere + { + type totalPressure; + p0 uniform 0; + U U; + phi phi; + rho rho; + psi none; + gamma 1; + value uniform 0; + } + floatingObject + { + type fixedFluxPressure; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/pointDisplacement b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/pointDisplacement new file mode 100644 index 0000000000000000000000000000000000000000..daff376a9d323b0fc015d085f6f15ccf2e51e110 --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/pointDisplacement @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class pointVectorField; + object pointDisplacement; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 0 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + stationaryWalls + { + type fixedValue; + value uniform (0 0 0); + } + atmosphere + { + type fixedValue; + value uniform (0 0 0); + } + floatingObject + { + type sixDoFRigidBodyDisplacement; + centreOfMass (0.5 0.5 0.5); + momentOfInertia (0.08622222 0.08622222 0.144); + mass 9.6; + rhoInf 1; + report on; + accelerationRelaxation 0.3; + value uniform (0 0 0); + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/Allclean b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/Allclean new file mode 100755 index 0000000000000000000000000000000000000000..d16400a94f636d461b62f6f909c2d64d7e29c335 --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/Allclean @@ -0,0 +1,11 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + +# Source tutorial clean functions +. $WM_PROJECT_DIR/bin/tools/CleanFunctions + +rm -rf 0 > /dev/null 2>&1 + +cleanCase + +# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/Allrun b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/Allrun new file mode 100755 index 0000000000000000000000000000000000000000..8ca61574f237151679a9f4041dcc7540282c72b3 --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/Allrun @@ -0,0 +1,17 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +# Set application name +application=`getApplication` + +runApplication blockMesh +runApplication topoSet +runApplication subsetMesh -overwrite c0 -patch floatingObject +cp -r 0.org 0 > /dev/null 2>&1 +runApplication setFields +runApplication $application + +# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/3DBaffle/3DTemperatureSlaveBafflePatches b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/RASProperties similarity index 69% rename from tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/3DBaffle/3DTemperatureSlaveBafflePatches rename to tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/RASProperties index 9ca00a628f803a95ac26f205b6238a26b08d03ab..a4937b503a46850b2626f0d301e4a07b9f691507 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/3DBaffle/3DTemperatureSlaveBafflePatches +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/RASProperties @@ -5,16 +5,21 @@ | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ - -T +FoamFile { - type compressible::thermalBaffle; - Tnbr T; - kappa fluidThermo; - kappaName none; - QrNbr none; - Qr none; - value uniform 300; + version 2.0; + format ascii; + class dictionary; + location "constant"; + object RASProperties; } +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +RASModel kEpsilon; + +turbulence on; + +printCoeffs on; + // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/dynamicMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..b350585fe9e80204fbf4038f73628f25f1e4b39c --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/dynamicMeshDict @@ -0,0 +1,29 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object motionProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dynamicFvMesh dynamicMotionSolverFvMesh; + +motionSolverLibs ("libfvMotionSolvers.so" "libsixDoFRigidBodyMotion.so"); + +solver displacementLaplacian; + +displacementLaplacianCoeffs +{ + diffusivity inverseDistance (floatingObject); +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/g b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/g new file mode 100644 index 0000000000000000000000000000000000000000..897615a50df92736e7b9c64bb2e64fba539496fc --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value ( 0 0 -9.81 ); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/polyMesh/blockMeshDict b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/polyMesh/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..67928d075a42ee149582200510ad64144bee4e1a --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/polyMesh/blockMeshDict @@ -0,0 +1,73 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + (0 0 0) + (1 0 0) + (1 1 0) + (0 1 0) + (0 0 1) + (1 0 1) + (1 1 1) + (0 1 1) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (40 40 60) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + stationaryWalls + { + type wall; + faces + ( + (0 3 2 1) + (2 6 5 1) + (1 5 4 0) + (3 7 6 2) + (0 4 7 3) + ); + } + atmosphere + { + type patch; + faces + ( + (4 5 6 7) + ); + } + floatingObject + { + type wall; + faces (); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/polyMesh/boundary b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/polyMesh/boundary new file mode 100644 index 0000000000000000000000000000000000000000..1543006b7ac2cf94c682d7432780a0bd0d678615 --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/polyMesh/boundary @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +3 +( + stationaryWalls + { + type wall; + nFaces 11200; + startFace 277808; + } + atmosphere + { + type patch; + nFaces 1600; + startFace 289008; + } + floatingObject + { + type wall; + nFaces 672; + startFace 290608; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/transportProperties b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/transportProperties new file mode 100644 index 0000000000000000000000000000000000000000..3729fc7648bb9d76cae6c48139d4b359b92e526c --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/transportProperties @@ -0,0 +1,37 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object transportProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +phases (water air); + +water +{ + transportModel Newtonian; + nu nu [ 0 2 -1 0 0 0 0 ] 1e-06; + rho rho [ 1 -3 0 0 0 0 0 ] 998.2; +} + +air +{ + transportModel Newtonian; + nu nu [ 0 2 -1 0 0 0 0 ] 1.48e-05; + rho rho [ 1 -3 0 0 0 0 0 ] 1; +} + +sigma sigma [ 1 0 -2 0 0 0 0 ] 0; + + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/1DBaffle/1DTemperatureSlaveBafflePatches b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/turbulenceProperties similarity index 71% rename from tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/1DBaffle/1DTemperatureSlaveBafflePatches rename to tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/turbulenceProperties index eafad0fe9852c775b1908b2e7c25a697e7eb68d0..c2021e7271ad4486bc209ceb70840ec26087d5e1 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/1DBaffle/1DTemperatureSlaveBafflePatches +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/turbulenceProperties @@ -5,12 +5,16 @@ | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ - -T +FoamFile { - type compressible::thermalBaffle1D<hConstSolidThermoPhysics>; - samplePatch baffle1DWall_master; - value uniform 300; + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; } +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RASModel; // ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/controlDict b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..d51c2fd31ed6c3b2dc01d5e8ffad9a213cf3a21d --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/controlDict @@ -0,0 +1,54 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application interDyMFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 6; + +deltaT 0.01; + +writeControl adjustableRunTime; + +writeInterval 0.2; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 12; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep yes; + +maxCo 5; +maxAlphaCo 5; +maxDeltaT 1; + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/decomposeParDict b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/decomposeParDict new file mode 100644 index 0000000000000000000000000000000000000000..0548a40b126dfbd72a03816fa8bc3fc04ed3cb6e --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/decomposeParDict @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 8; + +method scotch; + +simpleCoeffs +{ + n ( 2 2 1 ); + delta 0.001; +} + +hierarchicalCoeffs +{ + n ( 2 2 1 ); + delta 0.001; + order xyz; +} + +manualCoeffs +{ + dataFile ""; +} + +distributed no; + +roots ( ); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..df7685da654a4a4fa7b159dc88722b7c7a521f5a --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/fvSchemes @@ -0,0 +1,62 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + div(rhoPhi,U) Gauss vanLeerV; + div(phi,alpha) Gauss vanLeer; + div(phirb,alpha) Gauss interfaceCompression; + div(phi,k) Gauss upwind; + div(phi,epsilon) Gauss upwind; + div((muEff*dev(T(grad(U))))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} + +fluxRequired +{ + default no; + p_rgh; + pcorr; + alpha.water; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/fvSolution b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..c539caec767bd1663cc77089af78b605b21446b0 --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/fvSolution @@ -0,0 +1,152 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "cellDisplacement.*" + { + solver GAMG; + tolerance 1e-5; + relTol 0; + smoother GaussSeidel; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + } + + "alpha.water.*" + { + nAlphaCorr 1; + nAlphaSubCycles 1; + cAlpha 1; + + alphaOuterCorrectors yes; + + MULESCorr yes; + nLimiterIter 5; + + solver PBiCG; + preconditioner DILU; + tolerance 1e-8; + relTol 0; + } + + "pcorr.*" + { + solver PCG; + preconditioner + { + preconditioner GAMG; + tolerance 1e-5; + relTol 0; + smoother DICGaussSeidel; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration false; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + } + + tolerance 1e-05; + relTol 0; + maxIter 100; + } + + p_rgh + { + solver GAMG; + tolerance 1e-8; + relTol 0.01; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + } + + p_rghFinal + { + solver PCG; + preconditioner + { + preconditioner GAMG; + tolerance 1e-8; + relTol 0; + nVcycles 2; + smoother DICGaussSeidel; + nPreSweeps 2; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + } + + tolerance 1e-8; + relTol 0; + maxIter 20; + } + + "(U|k|epsilon)" + { + solver smoothSolver; + smoother GaussSeidel; + tolerance 1e-6; + relTol 0.1; + nSweeps 1; + } + + "(U|k|epsilon)Final" + { + solver smoothSolver; + smoother GaussSeidel; + tolerance 1e-6; + relTol 0; + nSweeps 1; + } +} + +PIMPLE +{ + momentumPredictor no; + nOuterCorrectors 6; + nCorrectors 1; + nNonOrthogonalCorrectors 0; + correctPhi yes; + moveMeshOuterCorrectors yes; +} + +relaxationFactors +{ + fields + { + } + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/setFieldsDict b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/setFieldsDict new file mode 100644 index 0000000000000000000000000000000000000000..2506a693af099682fa83ec08257f7e33b07498f8 --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/setFieldsDict @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue alpha.water 0 +); + +regions +( + boxToCell + { + box ( -100 -100 -100 ) ( 100 100 0.5368 ); + fieldValues ( volScalarFieldValue alpha.water 1 ); + } + + boxToCell + { + box ( 0.7 0.8 -100 ) ( 100 100 0.65 ); + fieldValues ( volScalarFieldValue alpha.water 1 ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/topoSetDict b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/topoSetDict new file mode 100644 index 0000000000000000000000000000000000000000..7cfce50d58bf0d2bc54981426cdb76ad4d9a542f --- /dev/null +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/topoSetDict @@ -0,0 +1,38 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object topoSetDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +actions +( + { + name c0; + type cellSet; + action new; + source boxToCell; + sourceInfo + { + box (0.35 0.35 0.44) (0.65 0.65 0.56); + } + } + + { + name c0; + type cellSet; + action invert; + } +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/interDyMFoam/ras/mixerVesselAMI/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/mixerVesselAMI/system/fvSchemes index 70e7cf49ab6ec67ae4c65dc39708f95f9a61a430..84e4f5d57dfd09e85acab261c76262e00856e689 100644 --- a/tutorials/multiphase/interDyMFoam/ras/mixerVesselAMI/system/fvSchemes +++ b/tutorials/multiphase/interDyMFoam/ras/mixerVesselAMI/system/fvSchemes @@ -28,13 +28,13 @@ gradSchemes divSchemes { - div(rho*phi,U) Gauss linearUpwind grad(U); + div(rhoPhi,U) Gauss linearUpwind grad(U); div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss interfaceCompression 1; div(phid1,p_rgh) Gauss upwind; div(phid2,p_rgh) Gauss upwind; - div(rho*phi,T) Gauss linearUpwind unlimited; - div(rho*phi,K) Gauss upwind; + div(rhoPhi,T) Gauss linearUpwind unlimited; + div(rhoPhi,K) Gauss upwind; div(phi,k) Gauss upwind; div(phi,epsilon) Gauss upwind; div((muEff*dev2(T(grad(U))))) Gauss linear; diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/fvSchemes index b2c0af769de60be4fa5704d4973f1d0e6ae62d45..90379ecc541423649a05ed06cadd84b2252b9ff0 100644 --- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/fvSchemes +++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/fvSchemes @@ -27,7 +27,7 @@ gradSchemes divSchemes { - div(rho*phi,U) Gauss vanLeerV; + div(rhoPhi,U) Gauss vanLeerV; div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss vanLeer; div((muEff*dev(T(grad(U))))) Gauss linear; diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/fvSchemes index b2c0af769de60be4fa5704d4973f1d0e6ae62d45..90379ecc541423649a05ed06cadd84b2252b9ff0 100644 --- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/fvSchemes +++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/fvSchemes @@ -27,7 +27,7 @@ gradSchemes divSchemes { - div(rho*phi,U) Gauss vanLeerV; + div(rhoPhi,U) Gauss vanLeerV; div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss vanLeer; div((muEff*dev(T(grad(U))))) Gauss linear; diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/fvSchemes index b2c0af769de60be4fa5704d4973f1d0e6ae62d45..90379ecc541423649a05ed06cadd84b2252b9ff0 100644 --- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/fvSchemes +++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/fvSchemes @@ -27,7 +27,7 @@ gradSchemes divSchemes { - div(rho*phi,U) Gauss vanLeerV; + div(rhoPhi,U) Gauss vanLeerV; div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss vanLeer; div((muEff*dev(T(grad(U))))) Gauss linear; diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/fvSchemes index b2c0af769de60be4fa5704d4973f1d0e6ae62d45..90379ecc541423649a05ed06cadd84b2252b9ff0 100644 --- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/fvSchemes +++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/fvSchemes @@ -27,7 +27,7 @@ gradSchemes divSchemes { - div(rho*phi,U) Gauss vanLeerV; + div(rhoPhi,U) Gauss vanLeerV; div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss vanLeer; div((muEff*dev(T(grad(U))))) Gauss linear; diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/system/fvSchemes index b2c0af769de60be4fa5704d4973f1d0e6ae62d45..90379ecc541423649a05ed06cadd84b2252b9ff0 100644 --- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/system/fvSchemes +++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/system/fvSchemes @@ -27,7 +27,7 @@ gradSchemes divSchemes { - div(rho*phi,U) Gauss vanLeerV; + div(rhoPhi,U) Gauss vanLeerV; div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss vanLeer; div((muEff*dev(T(grad(U))))) Gauss linear; diff --git a/tutorials/multiphase/interDyMFoam/ras/testTubeMixer/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/testTubeMixer/system/fvSchemes index b2c0af769de60be4fa5704d4973f1d0e6ae62d45..90379ecc541423649a05ed06cadd84b2252b9ff0 100644 --- a/tutorials/multiphase/interDyMFoam/ras/testTubeMixer/system/fvSchemes +++ b/tutorials/multiphase/interDyMFoam/ras/testTubeMixer/system/fvSchemes @@ -27,7 +27,7 @@ gradSchemes divSchemes { - div(rho*phi,U) Gauss vanLeerV; + div(rhoPhi,U) Gauss vanLeerV; div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss vanLeer; div((muEff*dev(T(grad(U))))) Gauss linear; diff --git a/tutorials/multiphase/interFoam/laminar/capillaryRise/0/alpha.water.org b/tutorials/multiphase/interFoam/laminar/capillaryRise/0/alpha.water.org index f4ef0309517e7abb534ae10a948b3dd7bc4fede2..67a10a49fd4a7ca09e7e67a366edfff20913e518 100644 --- a/tutorials/multiphase/interFoam/laminar/capillaryRise/0/alpha.water.org +++ b/tutorials/multiphase/interFoam/laminar/capillaryRise/0/alpha.water.org @@ -10,7 +10,7 @@ FoamFile version 2.0; format ascii; class volScalarField; - object alpha; + object alpha.water; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/interFoam/laminar/capillaryRise/system/fvSchemes b/tutorials/multiphase/interFoam/laminar/capillaryRise/system/fvSchemes index aded32f19531e85eb3b940fae50024c6628844f3..ef8581b85fac9dc78cea846977d7933cce157ac1 100644 --- a/tutorials/multiphase/interFoam/laminar/capillaryRise/system/fvSchemes +++ b/tutorials/multiphase/interFoam/laminar/capillaryRise/system/fvSchemes @@ -27,7 +27,7 @@ gradSchemes divSchemes { - div(rho*phi,U) Gauss upwind; + div(rhoPhi,U) Gauss upwind; div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss interfaceCompression; div((muEff*dev(T(grad(U))))) Gauss linear; diff --git a/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSchemes b/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSchemes index 1d9632b67461e66072dc478e30a1133c3801c202..672ec59cc1fbbbf7eb75e051bb167808cc7ceb49 100644 --- a/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSchemes +++ b/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSchemes @@ -27,7 +27,7 @@ gradSchemes divSchemes { - div(rho*phi,U) Gauss limitedLinearV 1; + div(rhoPhi,U) Gauss limitedLinearV 1; div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss interfaceCompression; div((muEff*dev(T(grad(U))))) Gauss linear; diff --git a/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSolution b/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSolution index 9e473a7865023654a2e5865a837a2989d6071492..0836eb66e57e756a1f4467b199877a3c7c21a35f 100644 --- a/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSolution +++ b/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSolution @@ -17,7 +17,7 @@ FoamFile solvers { - alpha.water + "alpha.water.*" { nAlphaCorr 2; nAlphaSubCycles 1; diff --git a/tutorials/multiphase/interFoam/ras/waterChannel/0/alpha.water.org b/tutorials/multiphase/interFoam/ras/waterChannel/0/alpha.water.org index 914cb9ee1a0007ac0f19318ff30d93baeb6f8e75..d5b5bc0ce74cb77c9ea57247c4324ce360c90ad3 100644 --- a/tutorials/multiphase/interFoam/ras/waterChannel/0/alpha.water.org +++ b/tutorials/multiphase/interFoam/ras/waterChannel/0/alpha.water.org @@ -10,7 +10,7 @@ FoamFile version 2.0; format ascii; class volScalarField; - object alpha; + object alpha.water; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/interFoam/ras/waterChannel/LTSInterFoam/system/controlDict b/tutorials/multiphase/interFoam/ras/waterChannel/LTSInterFoam/system/controlDict index 64eae52fe0c8adca928d5ac57ed83e84597d78ff..bfea3cad84711f84633e955ca793b09b8e6af093 100644 --- a/tutorials/multiphase/interFoam/ras/waterChannel/LTSInterFoam/system/controlDict +++ b/tutorials/multiphase/interFoam/ras/waterChannel/LTSInterFoam/system/controlDict @@ -66,7 +66,7 @@ functions fields ( - rho*phi + rhoPhi ); } diff --git a/tutorials/multiphase/interFoam/ras/waterChannel/LTSInterFoam/system/fvSchemes b/tutorials/multiphase/interFoam/ras/waterChannel/LTSInterFoam/system/fvSchemes index de873558162e1e1cea020af091244cba613e96e7..803b55e99544928c5a3cd0442df63de4e9b6b016 100644 --- a/tutorials/multiphase/interFoam/ras/waterChannel/LTSInterFoam/system/fvSchemes +++ b/tutorials/multiphase/interFoam/ras/waterChannel/LTSInterFoam/system/fvSchemes @@ -27,7 +27,7 @@ gradSchemes divSchemes { - div(rho*phi,U) Gauss linearUpwind grad(U); + div(rhoPhi,U) Gauss linearUpwind grad(U); div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss interfaceCompression; div(phi,k) Gauss upwind; diff --git a/tutorials/multiphase/interFoam/ras/waterChannel/system/controlDict b/tutorials/multiphase/interFoam/ras/waterChannel/system/controlDict index 05b109778c550ad3fa1a6cb1a3a94641829382a8..7d4ac3e2ef25f49e84c92b223e51c96f0ff425e0 100644 --- a/tutorials/multiphase/interFoam/ras/waterChannel/system/controlDict +++ b/tutorials/multiphase/interFoam/ras/waterChannel/system/controlDict @@ -67,7 +67,7 @@ functions fields ( - rho*phi + rhoPhi ); } diff --git a/tutorials/multiphase/interFoam/ras/waterChannel/system/fvSchemes b/tutorials/multiphase/interFoam/ras/waterChannel/system/fvSchemes index 11fc30f2729251a04dbc6d17b621722ea785fbdb..053e51aa7f2d05c9829a95121112f5c9cbeab3e0 100644 --- a/tutorials/multiphase/interFoam/ras/waterChannel/system/fvSchemes +++ b/tutorials/multiphase/interFoam/ras/waterChannel/system/fvSchemes @@ -29,7 +29,7 @@ divSchemes { default none; - div(rho*phi,U) Gauss linearUpwind grad(U); + div(rhoPhi,U) Gauss linearUpwind grad(U); div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss interfaceCompression; diff --git a/tutorials/multiphase/interFoam/ras/waterChannel/system/fvSolution b/tutorials/multiphase/interFoam/ras/waterChannel/system/fvSolution index f6208ef3d23141f4002c87e5a90a0d4207596194..1a7bff2000b7530e309c934df8be824bb87d8972 100644 --- a/tutorials/multiphase/interFoam/ras/waterChannel/system/fvSolution +++ b/tutorials/multiphase/interFoam/ras/waterChannel/system/fvSolution @@ -17,7 +17,7 @@ FoamFile solvers { - alpha.water + "alpha.water.*" { nAlphaCorr 1; nAlphaSubCycles 1; diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/system/fvSchemes b/tutorials/multiphase/interFoam/ras/weirOverflow/system/fvSchemes index 8ed8e03cc081883369e850bae8f758e5823c4b5b..3869ad107b691a7963cc3d5d2c1454f5c7788bcd 100644 --- a/tutorials/multiphase/interFoam/ras/weirOverflow/system/fvSchemes +++ b/tutorials/multiphase/interFoam/ras/weirOverflow/system/fvSchemes @@ -27,7 +27,7 @@ gradSchemes divSchemes { - div(rho*phi,U) Gauss linear; + div(rhoPhi,U) Gauss linear; div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss interfaceCompression; div(phi,k) Gauss upwind; diff --git a/tutorials/multiphase/interMixingFoam/laminar/damBreak/system/fvSchemes b/tutorials/multiphase/interMixingFoam/laminar/damBreak/system/fvSchemes index ea304e7042cb6bda7221eed5ee0c717684d3f48f..1de7b2421d4981d4b0ffe6f316b0e0e7c9eba555 100644 --- a/tutorials/multiphase/interMixingFoam/laminar/damBreak/system/fvSchemes +++ b/tutorials/multiphase/interMixingFoam/laminar/damBreak/system/fvSchemes @@ -27,7 +27,7 @@ gradSchemes divSchemes { - div(rho*phi,U) Gauss limitedLinearV 1; + div(rhoPhi,U) Gauss limitedLinearV 1; div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss interfaceCompression; div((muEff*dev(T(grad(U))))) Gauss linear; diff --git a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/U b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/U index 35049b5a32a89e44c8995b056341063795d27a77..2929f0e586937c9bff9faf0b545243bb1743a9c2 100644 --- a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/U +++ b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/U @@ -36,7 +36,7 @@ boundaryField walls { - type symmetryPlane; + type symmetry; } bullet diff --git a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/alpha.water b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/alpha.water index 6ca929b85518854cdadce3d0ce13500e21666b65..c08ba3184e0f599d9b062e94b6c553797f212dea 100644 --- a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/alpha.water +++ b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/alpha.water @@ -35,7 +35,7 @@ boundaryField walls { - type symmetryPlane; + type symmetry; } bullet diff --git a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/p_rgh b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/p_rgh index f2ef63d0be0ced1f66ff74471e1a87f72bc2a739..1106c436ecfe9001af305c9dfd0fa2e7a5a68ff3 100644 --- a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/p_rgh +++ b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/p_rgh @@ -34,7 +34,7 @@ boundaryField walls { - type symmetryPlane; + type symmetry; } bullet diff --git a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/polyMesh/blockMeshDict b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/polyMesh/blockMeshDict index 100156548dc5a63f11c7a333711e5ca59d743362..a88ee223dcf3f67449a08f9d2931c25efbd00950 100644 --- a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/polyMesh/blockMeshDict +++ b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/polyMesh/blockMeshDict @@ -54,7 +54,7 @@ boundary } walls { - type symmetryPlane; + type symmetry; faces ( (0 4 7 3) diff --git a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/polyMesh/boundary b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/polyMesh/boundary index 17c34d0093bec0469e5824177f10948c1f2b86ba..c87bd5dc917069d98ffd5703d32f421044ad6947 100644 --- a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/polyMesh/boundary +++ b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/polyMesh/boundary @@ -31,8 +31,8 @@ FoamFile } walls { - type symmetryPlane; - inGroups 1(symmetryPlane); + type symmetry; + inGroups 1(symmetry); nFaces 3000; startFace 1130431; } diff --git a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/system/fvSolution b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/system/fvSolution index 41c0ac39c6a22d42a6dee9577cd5a9bdfbe7a7be..f19f2cd8b23802d6e351247ded6af95d41cbe478 100644 --- a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/system/fvSolution +++ b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/system/fvSolution @@ -16,7 +16,7 @@ FoamFile solvers { - alpha.water + "alpha.water.*" { cAlpha 0; nAlphaCorr 2; diff --git a/tutorials/multiphase/twoLiquidMixingFoam/lockExchange/system/fvSchemes b/tutorials/multiphase/twoLiquidMixingFoam/lockExchange/system/fvSchemes index c4837bb39f9ed2c9b51387613228f3ae2a12cd5b..84a24f49246ed00e059462e590ef65ecab7b5723 100644 --- a/tutorials/multiphase/twoLiquidMixingFoam/lockExchange/system/fvSchemes +++ b/tutorials/multiphase/twoLiquidMixingFoam/lockExchange/system/fvSchemes @@ -30,7 +30,7 @@ divSchemes { default none; - div(rho*phi,U) Gauss linear; + div(rhoPhi,U) Gauss linear; div(phi,alpha) Gauss vanLeer; div(phi,k) Gauss limitedLinear 1; div((muEff*dev(T(grad(U))))) Gauss linear; diff --git a/tutorials/multiphase/twoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air b/tutorials/multiphase/twoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air index 637ebed0e893d74b6cff62103ebf3c627ec682b9..b995d77c1687f8ba93cc24503dd72b1355ef7b90 100644 --- a/tutorials/multiphase/twoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air +++ b/tutorials/multiphase/twoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air @@ -10,7 +10,7 @@ FoamFile version 2.0; format ascii; class volScalarField; - object alpha1; + object alpha.air; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //