From f223e8c6f0dd854f06117e4bfcd0756a5ce8a5eb Mon Sep 17 00:00:00 2001 From: sergio Date: Wed, 26 Oct 2016 11:45:57 -0700 Subject: [PATCH 1/5] ENH: Changing radiation correct in YEEq.H in fireFoam. Adding clone member functions to motion solvers --- applications/solvers/combustion/fireFoam/YEEqn.H | 2 ++ .../sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C | 3 ++- .../sixDoFSolvers/CrankNicolson/CrankNicolson.C | 2 +- .../sixDoFSolvers/CrankNicolson/CrankNicolson.H | 9 +++++++++ .../sixDoFSolvers/Newmark/Newmark.C | 2 +- .../sixDoFSolvers/Newmark/Newmark.H | 9 +++++++++ .../sixDoFSolvers/sixDoFSolver/sixDoFSolver.C | 9 +++++++-- .../sixDoFSolvers/sixDoFSolver/sixDoFSolver.H | 8 +++++++- .../sixDoFSolvers/symplectic/symplectic.C | 2 +- .../sixDoFSolvers/symplectic/symplectic.H | 9 +++++++++ 10 files changed, 48 insertions(+), 7 deletions(-) diff --git a/applications/solvers/combustion/fireFoam/YEEqn.H b/applications/solvers/combustion/fireFoam/YEEqn.H index cee98e2429..826cd5a36c 100644 --- a/applications/solvers/combustion/fireFoam/YEEqn.H +++ b/applications/solvers/combustion/fireFoam/YEEqn.H @@ -53,6 +53,8 @@ tmp> mvConvection Y[inertIndex] = scalar(1) - Yt; Y[inertIndex].max(0.0); + radiation->correct(); + volScalarField& he = thermo.he(); fvScalarMatrix EEqn diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C index 06774ef78b..2b17bb8379 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C @@ -170,7 +170,8 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion momentOfInertia_(sDoFRBM.momentOfInertia_), aRelax_(sDoFRBM.aRelax_), aDamp_(sDoFRBM.aDamp_), - report_(sDoFRBM.report_) + report_(sDoFRBM.report_), + solver_(sDoFRBM.solver_, false) {} diff --git a/src/sixDoFRigidBodyMotion/sixDoFSolvers/CrankNicolson/CrankNicolson.C b/src/sixDoFRigidBodyMotion/sixDoFSolvers/CrankNicolson/CrankNicolson.C index 366266e014..884ea903b6 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFSolvers/CrankNicolson/CrankNicolson.C +++ b/src/sixDoFRigidBodyMotion/sixDoFSolvers/CrankNicolson/CrankNicolson.C @@ -46,7 +46,7 @@ Foam::sixDoFSolvers::CrankNicolson::CrankNicolson sixDoFRigidBodyMotion& body ) : - sixDoFSolver(body), + sixDoFSolver(dict, body), aoc_(dict.lookupOrDefault("aoc", 0.5)), voc_(dict.lookupOrDefault("voc", 0.5)) {} diff --git a/src/sixDoFRigidBodyMotion/sixDoFSolvers/CrankNicolson/CrankNicolson.H b/src/sixDoFRigidBodyMotion/sixDoFSolvers/CrankNicolson/CrankNicolson.H index e2f7ae8226..3854bc03fa 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFSolvers/CrankNicolson/CrankNicolson.H +++ b/src/sixDoFRigidBodyMotion/sixDoFSolvers/CrankNicolson/CrankNicolson.H @@ -98,6 +98,15 @@ public: sixDoFRigidBodyMotion& body ); + //- Construct and return a clone + virtual autoPtr clone() const + { + return autoPtr + ( + new CrankNicolson(dict_, body_) + ); + } + //- Destructor virtual ~CrankNicolson(); diff --git a/src/sixDoFRigidBodyMotion/sixDoFSolvers/Newmark/Newmark.C b/src/sixDoFRigidBodyMotion/sixDoFSolvers/Newmark/Newmark.C index 5a392b1b47..421835d807 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFSolvers/Newmark/Newmark.C +++ b/src/sixDoFRigidBodyMotion/sixDoFSolvers/Newmark/Newmark.C @@ -46,7 +46,7 @@ Foam::sixDoFSolvers::Newmark::Newmark sixDoFRigidBodyMotion& body ) : - sixDoFSolver(body), + sixDoFSolver(dict, body), gamma_(dict.lookupOrDefault("gamma", 0.5)), beta_ ( diff --git a/src/sixDoFRigidBodyMotion/sixDoFSolvers/Newmark/Newmark.H b/src/sixDoFRigidBodyMotion/sixDoFSolvers/Newmark/Newmark.H index d15bc2fcb1..088d194335 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFSolvers/Newmark/Newmark.H +++ b/src/sixDoFRigidBodyMotion/sixDoFSolvers/Newmark/Newmark.H @@ -96,6 +96,15 @@ public: sixDoFRigidBodyMotion& body ); + //- Construct and return a clone + virtual autoPtr clone() const + { + return autoPtr + ( + new Newmark(dict_, body_) + ); + } + //- Destructor virtual ~Newmark(); diff --git a/src/sixDoFRigidBodyMotion/sixDoFSolvers/sixDoFSolver/sixDoFSolver.C b/src/sixDoFRigidBodyMotion/sixDoFSolvers/sixDoFSolver/sixDoFSolver.C index 48fbba16f6..469987a9a9 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFSolvers/sixDoFSolver/sixDoFSolver.C +++ b/src/sixDoFRigidBodyMotion/sixDoFSolvers/sixDoFSolver/sixDoFSolver.C @@ -36,9 +36,14 @@ namespace Foam // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::sixDoFSolver::sixDoFSolver(sixDoFRigidBodyMotion& body) +Foam::sixDoFSolver::sixDoFSolver +( + const dictionary& dict, + sixDoFRigidBodyMotion& body +) : - body_(body) + body_(body), + dict_(dict) {} diff --git a/src/sixDoFRigidBodyMotion/sixDoFSolvers/sixDoFSolver/sixDoFSolver.H b/src/sixDoFRigidBodyMotion/sixDoFSolvers/sixDoFSolver/sixDoFSolver.H index a1e536f755..2fb415992a 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFSolvers/sixDoFSolver/sixDoFSolver.H +++ b/src/sixDoFRigidBodyMotion/sixDoFSolvers/sixDoFSolver/sixDoFSolver.H @@ -59,6 +59,9 @@ protected: //- The rigid body sixDoFRigidBodyMotion& body_; + //- Model dictionary + dictionary dict_; + // Protected member functions @@ -148,7 +151,10 @@ public: // Constructors // Construct for given body - sixDoFSolver(sixDoFRigidBodyMotion& body); + sixDoFSolver(const dictionary& dict, sixDoFRigidBodyMotion& body); + + //- Construct and return a clone + virtual autoPtr clone() const = 0; //- Destructor diff --git a/src/sixDoFRigidBodyMotion/sixDoFSolvers/symplectic/symplectic.C b/src/sixDoFRigidBodyMotion/sixDoFSolvers/symplectic/symplectic.C index bd678d1090..64f436a177 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFSolvers/symplectic/symplectic.C +++ b/src/sixDoFRigidBodyMotion/sixDoFSolvers/symplectic/symplectic.C @@ -46,7 +46,7 @@ Foam::sixDoFSolvers::symplectic::symplectic sixDoFRigidBodyMotion& body ) : - sixDoFSolver(body) + sixDoFSolver(dict, body) {} diff --git a/src/sixDoFRigidBodyMotion/sixDoFSolvers/symplectic/symplectic.H b/src/sixDoFRigidBodyMotion/sixDoFSolvers/symplectic/symplectic.H index 3aac7c7e18..caaaf33d1a 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFSolvers/symplectic/symplectic.H +++ b/src/sixDoFRigidBodyMotion/sixDoFSolvers/symplectic/symplectic.H @@ -95,6 +95,15 @@ public: sixDoFRigidBodyMotion& body ); + //- Construct and return a clone + virtual autoPtr clone() const + { + return autoPtr + ( + new symplectic(dict_, body_) + ); + } + //- Destructor virtual ~symplectic(); From bc03c94f4eced7c091eeb60920bd298f415a273b Mon Sep 17 00:00:00 2001 From: sergio Date: Wed, 26 Oct 2016 14:53:26 -0700 Subject: [PATCH 2/5] ENh: Adding clone member to sixDoFSolvers --- .../sixDoFRigidBodyDisplacementPointPatchVectorField.C | 2 ++ .../sixDoFSolvers/CrankNicolson/CrankNicolson.C | 1 - src/sixDoFRigidBodyMotion/sixDoFSolvers/Newmark/Newmark.C | 1 - src/sixDoFRigidBodyMotion/sixDoFSolvers/Newmark/Newmark.H | 2 +- .../sixDoFSolvers/sixDoFSolver/sixDoFSolver.C | 6 ++++++ .../sixDoFSolvers/sixDoFSolver/sixDoFSolver.H | 4 ++++ .../sixDoFSolvers/symplectic/symplectic.C | 1 - 7 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C index 0595948e73..657961b1d3 100644 --- a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C +++ b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C @@ -269,6 +269,8 @@ void sixDoFRigidBodyDisplacementPointPatchVectorField::write(Ostream& os) const motion_.write(os); + //motion_.solver().write(os); + initialPoints_.writeEntry("initialPoints", os); writeEntry("value", os); diff --git a/src/sixDoFRigidBodyMotion/sixDoFSolvers/CrankNicolson/CrankNicolson.C b/src/sixDoFRigidBodyMotion/sixDoFSolvers/CrankNicolson/CrankNicolson.C index 884ea903b6..2bae8f06cf 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFSolvers/CrankNicolson/CrankNicolson.C +++ b/src/sixDoFRigidBodyMotion/sixDoFSolvers/CrankNicolson/CrankNicolson.C @@ -90,5 +90,4 @@ void Foam::sixDoFSolvers::CrankNicolson::solve Q() = Qpi.first(); } - // ************************************************************************* // diff --git a/src/sixDoFRigidBodyMotion/sixDoFSolvers/Newmark/Newmark.C b/src/sixDoFRigidBodyMotion/sixDoFSolvers/Newmark/Newmark.C index 421835d807..101b7ff596 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFSolvers/Newmark/Newmark.C +++ b/src/sixDoFRigidBodyMotion/sixDoFSolvers/Newmark/Newmark.C @@ -111,5 +111,4 @@ void Foam::sixDoFSolvers::Newmark::solve Q() = Qpi.first(); } - // ************************************************************************* // diff --git a/src/sixDoFRigidBodyMotion/sixDoFSolvers/Newmark/Newmark.H b/src/sixDoFRigidBodyMotion/sixDoFSolvers/Newmark/Newmark.H index 088d194335..2b1241a719 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFSolvers/Newmark/Newmark.H +++ b/src/sixDoFRigidBodyMotion/sixDoFSolvers/Newmark/Newmark.H @@ -96,7 +96,7 @@ public: sixDoFRigidBodyMotion& body ); - //- Construct and return a clone + //- Construct and return a clone virtual autoPtr clone() const { return autoPtr diff --git a/src/sixDoFRigidBodyMotion/sixDoFSolvers/sixDoFSolver/sixDoFSolver.C b/src/sixDoFRigidBodyMotion/sixDoFSolvers/sixDoFSolver/sixDoFSolver.C index 469987a9a9..e50f01021a 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFSolvers/sixDoFSolver/sixDoFSolver.C +++ b/src/sixDoFRigidBodyMotion/sixDoFSolvers/sixDoFSolver/sixDoFSolver.C @@ -24,6 +24,7 @@ License \*---------------------------------------------------------------------------*/ #include "sixDoFSolver.H" +#include "IOstreams.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -47,6 +48,11 @@ Foam::sixDoFSolver::sixDoFSolver {} +void Foam::sixDoFSolver::write(Ostream& os) const +{ + os << dict_; +} + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::sixDoFSolver::~sixDoFSolver() diff --git a/src/sixDoFRigidBodyMotion/sixDoFSolvers/sixDoFSolver/sixDoFSolver.H b/src/sixDoFRigidBodyMotion/sixDoFSolvers/sixDoFSolver/sixDoFSolver.H index 2fb415992a..70589788df 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFSolvers/sixDoFSolver/sixDoFSolver.H +++ b/src/sixDoFRigidBodyMotion/sixDoFSolvers/sixDoFSolver/sixDoFSolver.H @@ -181,6 +181,10 @@ public: scalar deltaT, scalar deltaT0 ) = 0; + + + //- Write + void write(Ostream&) const; }; diff --git a/src/sixDoFRigidBodyMotion/sixDoFSolvers/symplectic/symplectic.C b/src/sixDoFRigidBodyMotion/sixDoFSolvers/symplectic/symplectic.C index 64f436a177..c26f88509d 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFSolvers/symplectic/symplectic.C +++ b/src/sixDoFRigidBodyMotion/sixDoFSolvers/symplectic/symplectic.C @@ -98,5 +98,4 @@ void Foam::sixDoFSolvers::symplectic::solve pi() += rConstraints() & aDamp()*0.5*deltaT*tau(); } - // ************************************************************************* // From 88c8297211ccfae3b5ccf33aeba4c3ae51796287 Mon Sep 17 00:00:00 2001 From: Andrew Heather Date: Thu, 17 Nov 2016 13:35:35 +0000 Subject: [PATCH 3/5] ENH: Porosity model - output cellZone bounds in the local co-ordinate system. Fixes #300 --- .../porosityModel/porosityModel.C | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/finiteVolume/cfdTools/general/porosityModel/porosityModel/porosityModel.C b/src/finiteVolume/cfdTools/general/porosityModel/porosityModel/porosityModel.C index 0338e35154..77d28f589c 100644 --- a/src/finiteVolume/cfdTools/general/porosityModel/porosityModel/porosityModel.C +++ b/src/finiteVolume/cfdTools/general/porosityModel/porosityModel/porosityModel.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -122,6 +122,37 @@ Foam::porosityModel::porosityModel << "cannot find porous cellZone " << zoneName_ << exit(FatalError); } + + Info<< incrIndent << indent << coordSys_ << decrIndent << endl; + + const pointField& points = mesh_.points(); + const cellList& cells = mesh_.cells(); + const faceList& faces = mesh_.faces(); + DynamicList localPoints; + forAll(cellZoneIDs_, zoneI) + { + const cellZone& cZone = mesh_.cellZones()[cellZoneIDs_[zoneI]]; + localPoints.setCapacity(10*cells.size()); + + forAll(cZone, i) + { + const label cellI = cZone[i]; + const cell& c = mesh_.cells()[cellI]; + const pointField cellPoints(c.points(faces, points)); + + forAll(cellPoints, pointI) + { + const point& pt = cellPoints[pointI]; + localPoints.append(coordSys_.localPosition(pt)); + } + } + + boundBox bb(localPoints, true); + + Info<< " local bounds: " << bb << endl; + + localPoints.clear(); + } } From b7c370d76a45c9f06b3a6755b929e2c127ec06bb Mon Sep 17 00:00:00 2001 From: sergio Date: Thu, 17 Nov 2016 08:41:08 -0800 Subject: [PATCH 4/5] Correcting header information for IDDESDelta --- .../turbulenceModels/LES/LESdeltas/IDDESDelta/IDDESDelta.H | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/IDDESDelta/IDDESDelta.H b/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/IDDESDelta/IDDESDelta.H index 4f1bf55b14..eef6e95959 100644 --- a/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/IDDESDelta/IDDESDelta.H +++ b/src/TurbulenceModels/turbulenceModels/LES/LESdeltas/IDDESDelta/IDDESDelta.H @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -26,8 +26,8 @@ Class Description IDDESDelta used by the IDDES (improved low Re Spalart-Allmaras DES model) - The min and max delta are calculated using the double distance of the min or - max from the face centre to the cell centre. + The min and max delta are calculated using the face to face distance of + the cell. SourceFiles IDDESDelta.C From 4b4e9122262b4d6468396bfdb6778c01fdc00e42 Mon Sep 17 00:00:00 2001 From: sergio Date: Thu, 17 Nov 2016 08:46:27 -0800 Subject: [PATCH 5/5] ENH: Adding writing of the motionSolver dictionary for sixDoFRigidBodyDisplacementPointPatchVectorField BC --- .../sixDoFRigidBodyDisplacementPointPatchVectorField.C | 2 -- .../sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H | 1 + .../sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C | 7 +++++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C index 657961b1d3..0595948e73 100644 --- a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C +++ b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C @@ -269,8 +269,6 @@ void sixDoFRigidBodyDisplacementPointPatchVectorField::write(Ostream& os) const motion_.write(os); - //motion_.solver().write(os); - initialPoints_.writeEntry("initialPoints", os); writeEntry("value", os); diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H index a91f17e23d..dc1e864ecc 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H @@ -52,6 +52,7 @@ SourceFiles #include "sixDoFRigidBodyMotionConstraint.H" #include "Tuple2.H" + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C index b7266df934..e04a11d478 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C @@ -25,6 +25,7 @@ License #include "sixDoFRigidBodyMotion.H" #include "IOstreams.H" +#include "sixDoFSolver.H" // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // @@ -112,6 +113,12 @@ void Foam::sixDoFRigidBodyMotion::write(Ostream& os) const os << decrIndent << indent << token::END_BLOCK << nl; } + + if (!solver_.empty()) + { + os << indent << "solver"; + solver_->write(os); + } }