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 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(); + } } diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C index 65ad05cc74..4db21f51a3 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/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); + } } diff --git a/src/sixDoFRigidBodyMotion/sixDoFSolvers/CrankNicolson/CrankNicolson.C b/src/sixDoFRigidBodyMotion/sixDoFSolvers/CrankNicolson/CrankNicolson.C index 366266e014..2bae8f06cf 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)) {} @@ -90,5 +90,4 @@ void Foam::sixDoFSolvers::CrankNicolson::solve Q() = Qpi.first(); } - // ************************************************************************* // diff --git a/src/sixDoFRigidBodyMotion/sixDoFSolvers/CrankNicolson/CrankNicolson.H b/src/sixDoFRigidBodyMotion/sixDoFSolvers/CrankNicolson/CrankNicolson.H index f7866128c8..4d6a2b8259 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..101b7ff596 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_ ( @@ -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 d15bc2fcb1..2b1241a719 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..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 * * * * * * * * * * * * * // @@ -36,12 +37,22 @@ namespace Foam // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::sixDoFSolver::sixDoFSolver(sixDoFRigidBodyMotion& body) +Foam::sixDoFSolver::sixDoFSolver +( + const dictionary& dict, + sixDoFRigidBodyMotion& body +) : - body_(body) + body_(body), + dict_(dict) {} +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 a1e536f755..70589788df 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 @@ -175,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 d7ae092e1f..41c1fcf581 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) {} @@ -90,5 +90,4 @@ void Foam::sixDoFSolvers::symplectic::solve pi() += rConstraints() & aDamp()*0.5*deltaT*tau(); } - // ************************************************************************* // diff --git a/src/sixDoFRigidBodyMotion/sixDoFSolvers/symplectic/symplectic.H b/src/sixDoFRigidBodyMotion/sixDoFSolvers/symplectic/symplectic.H index af55141a57..3e360fddd1 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();