Merge branch 'master' into 'develop'

Merge master changes/bugfixes into develop branch

See merge request !78
This commit is contained in:
Mark Olesen
2016-11-20 09:48:38 +00:00
13 changed files with 99 additions and 14 deletions

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -26,8 +26,8 @@ Class
Description Description
IDDESDelta used by the IDDES (improved low Re Spalart-Allmaras DES model) 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 The min and max delta are calculated using the face to face distance of
max from the face centre to the cell centre. the cell.
SourceFiles SourceFiles
IDDESDelta.C IDDESDelta.C

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation \\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -122,6 +122,37 @@ Foam::porosityModel::porosityModel
<< "cannot find porous cellZone " << zoneName_ << "cannot find porous cellZone " << zoneName_
<< exit(FatalError); << exit(FatalError);
} }
Info<< incrIndent << indent << coordSys_ << decrIndent << endl;
const pointField& points = mesh_.points();
const cellList& cells = mesh_.cells();
const faceList& faces = mesh_.faces();
DynamicList<point> 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();
}
} }

View File

@ -170,7 +170,8 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion
momentOfInertia_(sDoFRBM.momentOfInertia_), momentOfInertia_(sDoFRBM.momentOfInertia_),
aRelax_(sDoFRBM.aRelax_), aRelax_(sDoFRBM.aRelax_),
aDamp_(sDoFRBM.aDamp_), aDamp_(sDoFRBM.aDamp_),
report_(sDoFRBM.report_) report_(sDoFRBM.report_),
solver_(sDoFRBM.solver_, false)
{} {}

View File

@ -52,6 +52,7 @@ SourceFiles
#include "sixDoFRigidBodyMotionConstraint.H" #include "sixDoFRigidBodyMotionConstraint.H"
#include "Tuple2.H" #include "Tuple2.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam namespace Foam

View File

@ -25,6 +25,7 @@ License
#include "sixDoFRigidBodyMotion.H" #include "sixDoFRigidBodyMotion.H"
#include "IOstreams.H" #include "IOstreams.H"
#include "sixDoFSolver.H"
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
@ -112,6 +113,12 @@ void Foam::sixDoFRigidBodyMotion::write(Ostream& os) const
os << decrIndent << indent << token::END_BLOCK << nl; os << decrIndent << indent << token::END_BLOCK << nl;
} }
if (!solver_.empty())
{
os << indent << "solver";
solver_->write(os);
}
} }

View File

@ -46,7 +46,7 @@ Foam::sixDoFSolvers::CrankNicolson::CrankNicolson
sixDoFRigidBodyMotion& body sixDoFRigidBodyMotion& body
) )
: :
sixDoFSolver(body), sixDoFSolver(dict, body),
aoc_(dict.lookupOrDefault<scalar>("aoc", 0.5)), aoc_(dict.lookupOrDefault<scalar>("aoc", 0.5)),
voc_(dict.lookupOrDefault<scalar>("voc", 0.5)) voc_(dict.lookupOrDefault<scalar>("voc", 0.5))
{} {}
@ -90,5 +90,4 @@ void Foam::sixDoFSolvers::CrankNicolson::solve
Q() = Qpi.first(); Q() = Qpi.first();
} }
// ************************************************************************* // // ************************************************************************* //

View File

@ -98,6 +98,15 @@ public:
sixDoFRigidBodyMotion& body sixDoFRigidBodyMotion& body
); );
//- Construct and return a clone
virtual autoPtr<sixDoFSolver> clone() const
{
return autoPtr<sixDoFSolver>
(
new CrankNicolson(dict_, body_)
);
}
//- Destructor //- Destructor
virtual ~CrankNicolson(); virtual ~CrankNicolson();

View File

@ -46,7 +46,7 @@ Foam::sixDoFSolvers::Newmark::Newmark
sixDoFRigidBodyMotion& body sixDoFRigidBodyMotion& body
) )
: :
sixDoFSolver(body), sixDoFSolver(dict, body),
gamma_(dict.lookupOrDefault<scalar>("gamma", 0.5)), gamma_(dict.lookupOrDefault<scalar>("gamma", 0.5)),
beta_ beta_
( (
@ -111,5 +111,4 @@ void Foam::sixDoFSolvers::Newmark::solve
Q() = Qpi.first(); Q() = Qpi.first();
} }
// ************************************************************************* // // ************************************************************************* //

View File

@ -96,6 +96,15 @@ public:
sixDoFRigidBodyMotion& body sixDoFRigidBodyMotion& body
); );
//- Construct and return a clone
virtual autoPtr<sixDoFSolver> clone() const
{
return autoPtr<sixDoFSolver>
(
new Newmark(dict_, body_)
);
}
//- Destructor //- Destructor
virtual ~Newmark(); virtual ~Newmark();

View File

@ -24,6 +24,7 @@ License
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "sixDoFSolver.H" #include "sixDoFSolver.H"
#include "IOstreams.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@ -36,12 +37,22 @@ namespace Foam
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * 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 * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam::sixDoFSolver::~sixDoFSolver() Foam::sixDoFSolver::~sixDoFSolver()

View File

@ -59,6 +59,9 @@ protected:
//- The rigid body //- The rigid body
sixDoFRigidBodyMotion& body_; sixDoFRigidBodyMotion& body_;
//- Model dictionary
dictionary dict_;
// Protected member functions // Protected member functions
@ -148,7 +151,10 @@ public:
// Constructors // Constructors
// Construct for given body // Construct for given body
sixDoFSolver(sixDoFRigidBodyMotion& body); sixDoFSolver(const dictionary& dict, sixDoFRigidBodyMotion& body);
//- Construct and return a clone
virtual autoPtr<sixDoFSolver> clone() const = 0;
//- Destructor //- Destructor
@ -175,6 +181,10 @@ public:
scalar deltaT, scalar deltaT,
scalar deltaT0 scalar deltaT0
) = 0; ) = 0;
//- Write
void write(Ostream&) const;
}; };

View File

@ -46,7 +46,7 @@ Foam::sixDoFSolvers::symplectic::symplectic
sixDoFRigidBodyMotion& body sixDoFRigidBodyMotion& body
) )
: :
sixDoFSolver(body) sixDoFSolver(dict, body)
{} {}
@ -90,5 +90,4 @@ void Foam::sixDoFSolvers::symplectic::solve
pi() += rConstraints() & aDamp()*0.5*deltaT*tau(); pi() += rConstraints() & aDamp()*0.5*deltaT*tau();
} }
// ************************************************************************* // // ************************************************************************* //

View File

@ -95,6 +95,15 @@ public:
sixDoFRigidBodyMotion& body sixDoFRigidBodyMotion& body
); );
//- Construct and return a clone
virtual autoPtr<sixDoFSolver> clone() const
{
return autoPtr<sixDoFSolver>
(
new symplectic(dict_, body_)
);
}
//- Destructor //- Destructor
virtual ~symplectic(); virtual ~symplectic();