Merge branch 'master' into testLoop/MartinBeaudoin

Conflicts:
	CMakeLists.txt
	testHarness/OpenFOAM/1.6-ext/CMakeFiles/CMakeLists.txt
This commit is contained in:
Martin Beaudoin 2010-10-16 12:20:38 -04:00
commit 43799e411b
64 changed files with 789 additions and 252 deletions

View file

@ -1,10 +1,10 @@
#/*---------------------------------------------------------------------------*\ # /*-------------------------------------------------------------------------*\
# ========= | # ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration | # \\ / O peration |
# \\ / A nd | Copyright held by original author # \\ / A nd | Copyright held by original author
# \\/ M anipulation | # \\/ M anipulation |
# ------------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# License # License
# This file is part of OpenFOAM. # This file is part of OpenFOAM.
# #
@ -33,7 +33,7 @@
# Martin Beaudoin, Hydro-Quebec, 2010. All rights reserved # Martin Beaudoin, Hydro-Quebec, 2010. All rights reserved
# #
# #
# \*---------------------------------------------------------------------------*/ # \*-------------------------------------------------------------------------*/
cmake_minimum_required (VERSION 2.8) cmake_minimum_required (VERSION 2.8)

View file

@ -71,13 +71,12 @@ fi
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~
export WM_PROJECT_INST_DIR=$FOAM_INST_DIR export WM_PROJECT_INST_DIR=$FOAM_INST_DIR
export WM_PROJECT_DIR=$WM_PROJECT_INST_DIR/$WM_PROJECT-$WM_PROJECT_VERSION export WM_PROJECT_DIR=$WM_PROJECT_INST_DIR/$WM_PROJECT-$WM_PROJECT_VERSION
export WM_PROJECT_USER_DIR=$HOME/$WM_PROJECT/$USER-$WM_PROJECT_VERSION : ${WM_PROJECT_USER_DIR:=$HOME/$WM_PROJECT/$USER-$WM_PROJECT_VERSION}; export WM_PROJECT_USER_DIR
# Location of third-party software # Location of third-party software
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export WM_THIRD_PARTY_DIR=$WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION : ${WM_THIRD_PARTY_DIR=$WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION}; export WM_THIRD_PARTY_DIR
# Operating System/Platform # Operating System/Platform
# ~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~
@ -95,7 +94,7 @@ export WM_COMPILER_LIB_ARCH=
# Compilation options (architecture, precision, optimised, debug or profiling) # Compilation options (architecture, precision, optimised, debug or profiling)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export WM_NCOMPPROCS=2 : ${WM_NCOMPPROCS:=2}; export WM_NCOMPPROCS
# WM_ARCH_OPTION = 32 | 64 # WM_ARCH_OPTION = 32 | 64
: ${WM_ARCH_OPTION:=64}; export WM_ARCH_OPTION : ${WM_ARCH_OPTION:=64}; export WM_ARCH_OPTION

View file

@ -32,11 +32,18 @@ License
Foam::tensor Foam::RodriguesRotation Foam::tensor Foam::RodriguesRotation
( (
const vector& rotationAxis, const vector& rotationAxis,
const scalar& rotationAngle const scalar& rotationAngle,
const bool inDegrees
) )
{ {
tensor rotTensor; tensor rotTensor;
scalar theta = rotationAngle*mathematicalConstant::pi/180.0; scalar theta = rotationAngle;
if (inDegrees)
{
theta *= mathematicalConstant::pi/180.0;
}
scalar sinTheta = sin(theta); scalar sinTheta = sin(theta);
scalar cosTheta = cos(theta); scalar cosTheta = cos(theta);
scalar oneMinusCosTheta = 1.0 - cosTheta; scalar oneMinusCosTheta = 1.0 - cosTheta;

View file

@ -53,7 +53,8 @@ namespace Foam
tensor RodriguesRotation tensor RodriguesRotation
( (
const vector& rotationAxis, const vector& rotationAxis,
const scalar& rotationAngle const scalar& rotationAngle,
const bool inDegrees = true
); );

View file

@ -89,7 +89,7 @@ public:
// Constructors // Constructors
//- Construct given initial table size //- Construct given initial table size
HashPtrTable(label size = 100); HashPtrTable(const label size = 128);
//- Construct from Istream using given Istream constructor class //- Construct from Istream using given Istream constructor class
template<class INew> template<class INew>
@ -128,23 +128,19 @@ public:
// IOstream Operators // IOstream Operators
friend Istream& operator>> #ifndef SWIG
#ifndef __CINT__ friend Istream& operator>> <T, Key, Hash>
<T, Key, Hash>
#endif
( (
Istream&, Istream&,
HashPtrTable<T, Key, Hash>& HashPtrTable<T, Key, Hash>&
); );
friend Ostream& operator<< friend Ostream& operator<< <T, Key, Hash>
#ifndef __CINT__
<T, Key, Hash>
#endif
( (
Ostream&, Ostream&,
const HashPtrTable<T, Key, Hash>& const HashPtrTable<T, Key, Hash>&
); );
#endif
}; };

View file

@ -417,6 +417,7 @@ public:
// IOstream Operator // IOstream Operator
#ifndef SWIG
friend Istream& operator>> <T, Key, Hash> friend Istream& operator>> <T, Key, Hash>
( (
Istream&, Istream&,
@ -428,6 +429,7 @@ public:
Ostream&, Ostream&,
const HashTable<T, Key, Hash>& const HashTable<T, Key, Hash>&
); );
#endif
private: private:

View file

@ -208,6 +208,7 @@ public:
// IOstream operators // IOstream operators
#ifndef SWIG
// Write DynamicList to Ostream. // Write DynamicList to Ostream.
friend Ostream& operator<< <T, SizeInc, SizeMult, SizeDiv> friend Ostream& operator<< <T, SizeInc, SizeMult, SizeDiv>
( (
@ -221,6 +222,7 @@ public:
Istream&, Istream&,
DynamicList<T, SizeInc, SizeMult, SizeDiv>& DynamicList<T, SizeInc, SizeMult, SizeDiv>&
); );
#endif
}; };

View file

@ -71,8 +71,11 @@ template<class T> class SLList;
template<class T, unsigned Size> template<class T, unsigned Size>
class FixedList class FixedList
{ {
#ifndef SWIG
//- Size must be positive (non-zero) and also fit as a signed value //- Size must be positive (non-zero) and also fit as a signed value
StaticAssert(Size && Size <= INT_MAX); StaticAssert(Size && Size <= INT_MAX);
#endif
// Private data // Private data
@ -331,6 +334,8 @@ public:
// IOstream operators // IOstream operators
//- Read List from Istream, discarding contents of existing List. //- Read List from Istream, discarding contents of existing List.
#ifndef SWIG
friend Istream& operator>> <T, Size> friend Istream& operator>> <T, Size>
(Istream&, FixedList<T, Size>&); (Istream&, FixedList<T, Size>&);
@ -340,6 +345,7 @@ public:
Ostream&, Ostream&,
const FixedList<T, Size>& const FixedList<T, Size>&
); );
#endif
}; };

View file

@ -232,9 +232,10 @@ public:
// Istream operator // Istream operator
#ifndef SWIG
//- Read List from Istream, discarding contents of existing List. //- Read List from Istream, discarding contents of existing List.
friend Istream& operator>> <T> friend Istream& operator>> <T>(Istream&, List<T>&);
(Istream&, List<T>&); #endif
}; };

View file

@ -295,11 +295,13 @@ public:
// IOstream operator // IOstream operator
#ifndef SWIG
//- Read List from Istream, discarding contents of existing List. //- Read List from Istream, discarding contents of existing List.
friend Istream& operator>> <T>(Istream&, PtrList<T>&); friend Istream& operator>> <T>(Istream&, PtrList<T>&);
// Write List to Ostream. // Write List to Ostream.
friend Ostream& operator<< <T>(Ostream&, const PtrList<T>&); friend Ostream& operator<< <T>(Ostream&, const PtrList<T>&);
#endif
}; };

View file

@ -321,13 +321,16 @@ public:
// Ostream operator // Ostream operator
// Write UList to Ostream. // Write UList to Ostream.
#ifndef SWIG
friend Ostream& operator<< <T> friend Ostream& operator<< <T>
( (
Ostream&, Ostream&,
const UList<T>& const UList<T>&
); );
#endif
}; };
template<class T> template<class T>
void sort(UList<T>&); void sort(UList<T>&);

View file

@ -53,8 +53,11 @@ class NamedEnum
: :
public HashTable<int> public HashTable<int>
{ {
#ifndef SWIG
//- nEnum must be positive (non-zero) //- nEnum must be positive (non-zero)
StaticAssert(nEnum > 0); StaticAssert(nEnum > 0);
#endif
// Private Member Functions // Private Member Functions

View file

@ -139,9 +139,15 @@ public:
//- Construct from dictionary //- Construct from dictionary
coordinateRotation(const dictionary&); coordinateRotation(const dictionary&);
//- Return clone
autoPtr<coordinateRotation> clone() const
{
return autoPtr<coordinateRotation>(new coordinateRotation(*this));
}
// Declare run-time constructor selection table // Declare run-time constructor selection table
#ifndef SWIG
declareRunTimeSelectionTable declareRunTimeSelectionTable
( (
autoPtr, autoPtr,
@ -152,6 +158,7 @@ public:
), ),
(dict) (dict)
); );
#endif
// Selectors // Selectors

View file

@ -166,6 +166,7 @@ class coordinateSystem
//- Global-to-Local transformation tensor //- Global-to-Local transformation tensor
tensor Rtr_; tensor Rtr_;
protected: protected:
// Protected Member Functions // Protected Member Functions
@ -249,8 +250,10 @@ public:
return autoPtr<coordinateSystem>(new coordinateSystem(*this)); return autoPtr<coordinateSystem>(new coordinateSystem(*this));
} }
// Declare run-time constructor selection table // Declare run-time constructor selection table
#ifndef SWIG
declareRunTimeSelectionTable declareRunTimeSelectionTable
( (
autoPtr, autoPtr,
@ -275,6 +278,8 @@ public:
), ),
(name, origin, cr) (name, origin, cr)
); );
#endif
// Selectors // Selectors

View file

@ -50,7 +50,11 @@ namespace Foam
class IOobjectList class IOobjectList
: :
#ifndef SWIG
public HashPtrTable<IOobject> public HashPtrTable<IOobject>
#else
public HashPtrTable<IOobject, word, string_hash>
#endif
{ {
// Private Member Functions // Private Member Functions

View file

@ -209,6 +209,8 @@ public:
//- A templated class for holding compound tokens //- A templated class for holding compound tokens
#ifndef SWIG
template<class T> template<class T>
class Compound class Compound
: :
@ -235,7 +237,7 @@ public:
operator<<(os, static_cast<const T&>(*this)); operator<<(os, static_cast<const T&>(*this));
} }
}; };
#endif
//- Static undefined token //- Static undefined token
static token undefinedToken; static token undefinedToken;

View file

@ -51,7 +51,11 @@ namespace Foam
class objectRegistry class objectRegistry
: :
public regIOobject, public regIOobject,
#ifndef SWIG
public HashTable<regIOobject*> public HashTable<regIOobject*>
#else
public HashTable<regIOobject*, word, string_hash>
#endif
{ {
// Private Data // Private Data

View file

@ -174,11 +174,13 @@ public:
// IOstream operators // IOstream operators
#ifndef SWIG
friend Istream& operator>> <Type> friend Istream& operator>> <Type>
(Istream&, dimensioned<Type>&); (Istream&, dimensioned<Type>&);
friend Ostream& operator<< <Type> friend Ostream& operator<< <Type>
(Ostream&, const dimensioned<Type>&); (Ostream&, const dimensioned<Type>&);
#endif
}; };

View file

@ -162,10 +162,13 @@ public:
); );
//- Construct by transferring the DimensionedField //- Construct by transferring the DimensionedField
#ifndef SWIG
DimensionedField DimensionedField
( (
const Xfer<DimensionedField<Type, GeoMesh> >& const Xfer<DimensionedField<Type, GeoMesh> >&
); );
#endif
//- Construct as copy of tmp<DimensionedField> deleting argument //- Construct as copy of tmp<DimensionedField> deleting argument
# ifdef ConstructFromTmp # ifdef ConstructFromTmp
@ -198,11 +201,13 @@ public:
); );
//- Construct by transferring the DimensionedField with a new name //- Construct by transferring the DimensionedField with a new name
#ifndef SWIG
DimensionedField DimensionedField
( (
const word& newName, const word& newName,
const Xfer<DimensionedField<Type, GeoMesh> >& const Xfer<DimensionedField<Type, GeoMesh> >&
); );
#endif
//- Construct as copy resetting name //- Construct as copy resetting name
# ifdef ConstructFromTmp # ifdef ConstructFromTmp
@ -309,6 +314,7 @@ public:
// Ostream Operators // Ostream Operators
#ifndef SWIG
friend Ostream& operator<< <Type, GeoMesh> friend Ostream& operator<< <Type, GeoMesh>
( (
Ostream&, Ostream&,
@ -320,6 +326,7 @@ public:
Ostream&, Ostream&,
const tmp<DimensionedField<Type, GeoMesh> >& const tmp<DimensionedField<Type, GeoMesh> >&
); );
#endif
}; };

View file

@ -189,6 +189,7 @@ public:
// IOstream operators // IOstream operators
#ifndef SWIG
friend Ostream& operator<< <Field, Type> friend Ostream& operator<< <Field, Type>
( (
Ostream&, Ostream&,
@ -200,6 +201,7 @@ public:
Ostream&, Ostream&,
const tmp<FieldField<Field, Type> >& const tmp<FieldField<Field, Type> >&
); );
#endif
}; };

View file

@ -339,11 +339,13 @@ public:
// IOstream operators // IOstream operators
#ifndef SWIG
friend Ostream& operator<< <Type> friend Ostream& operator<< <Type>
(Ostream&, const Field<Type>&); (Ostream&, const Field<Type>&);
friend Ostream& operator<< <Type> friend Ostream& operator<< <Type>
(Ostream&, const tmp<Field<Type> >&); (Ostream&, const tmp<Field<Type> >&);
#endif
}; };

View file

@ -296,7 +296,8 @@ public:
const word& patchFieldType=PatchField<Type>::calculatedType() const word& patchFieldType=PatchField<Type>::calculatedType()
); );
//- Constructor given IOobject, mesh, dimensioned<Type> and patch types. //- Constructor given IOobject, mesh, dimensioned<Type>
// and patch types.
GeometricField GeometricField
( (
const IOobject&, const IOobject&,
@ -306,6 +307,8 @@ public:
); );
//- Constructor from components //- Constructor from components
#if ( !defined(SWIG) || (SWIG_VERSION > 0x010340) )
GeometricField GeometricField
( (
const IOobject&, const IOobject&,
@ -314,6 +317,7 @@ public:
const Field<Type>&, const Field<Type>&,
const PtrList<PatchField<Type> >& const PtrList<PatchField<Type> >&
); );
#endif
//- Construct and read given IOobject //- Construct and read given IOobject
GeometricField GeometricField
@ -547,6 +551,7 @@ public:
// Ostream operators // Ostream operators
#ifndef SWIG
friend Ostream& operator<< <Type, PatchField, GeoMesh> friend Ostream& operator<< <Type, PatchField, GeoMesh>
( (
Ostream&, Ostream&,
@ -558,6 +563,7 @@ public:
Ostream&, Ostream&,
const tmp<GeometricField<Type, PatchField, GeoMesh> >& const tmp<GeometricField<Type, PatchField, GeoMesh> >&
); );
#endif
}; };

View file

@ -85,7 +85,10 @@ void GGIInterpolation<MasterPatch, SlavePatch>::calcAddressing() const
<< abort(FatalError); << abort(FatalError);
} }
if (debug)
{
Info << "Evaluation of GGI weighting factors:" << endl; Info << "Evaluation of GGI weighting factors:" << endl;
}
// Create the dynamic lists to hold the addressing // Create the dynamic lists to hold the addressing
@ -475,8 +478,6 @@ void GGIInterpolation<MasterPatch, SlavePatch>::calcAddressing() const
{ {
rescaleWeightingFactors(); rescaleWeightingFactors();
} }
Info << endl;
} }
@ -569,14 +570,19 @@ void GGIInterpolation<MasterPatch, SlavePatch>::rescaleWeightingFactors() const
} }
} }
if (debug)
{
if (saW.size() > 0 && maW.size() > 0) if (saW.size() > 0 && maW.size() > 0)
{ {
Info<< " Largest slave weighting factor correction : " << largestSWC Info<< " Largest slave weighting factor correction : "
<< largestSWC
<< " average: " << sumSWC/saW.size() << nl << " average: " << sumSWC/saW.size() << nl
<< " Largest master weighting factor correction: " << largestMWC << " Largest master weighting factor correction: "
<< largestMWC
<< " average: " << sumMWC/maW.size() << endl; << " average: " << sumMWC/maW.size() << endl;
} }
} }
}
// Find non-overlapping faces from both master and slave patches // Find non-overlapping faces from both master and slave patches
// The default non-overlapping criteria is total absence of neighbours. // The default non-overlapping criteria is total absence of neighbours.

View file

@ -47,7 +47,7 @@ namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Interpolate field to cell center. // Interpolate field to cell center
template<class Type> template<class Type>
Type interpolatePointToCell Type interpolatePointToCell
( (

View file

@ -27,7 +27,7 @@ Class
Author Author
Hrvoje Jasak, Wikki Ltd. All rights reserved Hrvoje Jasak, Wikki Ltd. All rights reserved
Fethi Tekin, All rights reserved, Fethi Tekin, All rights reserved
Description Description
Mass-conservative face interpolation: typedef for stand-alone patch to Mass-conservative face interpolation: typedef for stand-alone patch to

View file

@ -54,8 +54,6 @@ void Foam::overlapGgiPolyPatch::calcExpandedMaster() const
// Create expanded master patch // Create expanded master patch
const label ncpm = nCopies(); const label ncpm = nCopies();
Info << "Number of master copies: " << ncpm << endl;
// Create expanded master points and faces // Create expanded master points and faces
const polyPatch& master = boundaryMesh()[index()]; const polyPatch& master = boundaryMesh()[index()];
const pointField& masterLocalPoints = master.localPoints(); const pointField& masterLocalPoints = master.localPoints();
@ -64,8 +62,6 @@ void Foam::overlapGgiPolyPatch::calcExpandedMaster() const
const scalar masterAngle = angle(); const scalar masterAngle = angle();
Info << "Master Angle is: " << masterAngle << endl;
// Transform points // Transform points
label nPoints_master = 0; label nPoints_master = 0;
@ -156,8 +152,6 @@ void Foam::overlapGgiPolyPatch::calcExpandedSlave() const
// Create expanded patch // Create expanded patch
const label ncp = shadow().nCopies(); const label ncp = shadow().nCopies();
Info << "Number of slave copies: " << ncp << endl;
// Create expanded points and faces // Create expanded points and faces
const polyPatch& slave = boundaryMesh()[shadowIndex()]; const polyPatch& slave = boundaryMesh()[shadowIndex()];
const pointField& slaveLocalPoints = slave.localPoints(); const pointField& slaveLocalPoints = slave.localPoints();

View file

@ -24,7 +24,7 @@ License
Author Author
Hrvoje Jasak, Wikki Ltd. All rights reserved. Hrvoje Jasak, Wikki Ltd. All rights reserved.
Fethi Tekin, All rights reserved. Fethi Tekin, All rights reserved. fethitekin@gmail.com
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
@ -37,12 +37,12 @@ template<class Type>
Foam::tmp<Foam::Field<Type> > Foam::tmp<Foam::Field<Type> >
Foam::overlapGgiPolyPatch::expandSlaveData(const Field<Type>& spf) const Foam::overlapGgiPolyPatch::expandSlaveData(const Field<Type>& spf) const
{ {
const scalar slaveAngle = shadow().angle(); const scalar slaveAngle = shadow().angle();
const label ncp = shadow().nCopies(); const label ncp = shadow().nCopies();
tmp<Field<Type> > tef(new Field<Type>(ncp*spf.size())); tmp<Field<Type> > tef(new Field<Type>(ncp*spf.size()));
Field<Type>& ef = tef(); Field<Type>& ef = tef();
label nFaces = 0; label nFaces = 0;
@ -63,15 +63,17 @@ Foam::overlapGgiPolyPatch::expandSlaveData(const Field<Type>& spf) const
return tef; return tef;
} }
template<class Type> template<class Type>
Foam::tmp<Foam::Field<Type> > Foam::tmp<Foam::Field<Type> >
Foam::overlapGgiPolyPatch::expandMasterData(const Field<Type>& spf) const Foam::overlapGgiPolyPatch::expandMasterData(const Field<Type>& spf) const
{ {
const scalar masterAngle = angle(); const scalar masterAngle = shadow().angle();
const label ncpm = nCopies(); const label ncpm = shadow().nCopies();
tmp<Field<Type> > tef(new Field<Type>(ncpm*spf.size())); tmp<Field<Type> > tef(new Field<Type>(ncpm*spf.size()));
Field<Type>& ef = tef(); Field<Type>& ef = tef();
label nFaces = 0; label nFaces = 0;
@ -91,8 +93,6 @@ Foam::overlapGgiPolyPatch::expandMasterData(const Field<Type>& spf) const
return tef; return tef;
} }
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class Type> template<class Type>
@ -155,5 +155,4 @@ Foam::overlapGgiPolyPatch::interpolate(const tmp<Field<Type> >& tpf) const
} }
} }
// ************************************************************************* // // ************************************************************************* //

View file

@ -228,6 +228,7 @@ public:
// Declare run-time constructor selection tables // Declare run-time constructor selection tables
#ifndef SWIG
declareRunTimeSelectionTable declareRunTimeSelectionTable
( (
autoPtr, autoPtr,
@ -256,6 +257,7 @@ public:
), ),
(name, dict, index, bm) (name, dict, index, bm)
); );
#endif
// Constructors // Constructors

View file

@ -48,11 +48,12 @@ namespace Foam
typedef SphericalTensor<scalar> sphericalTensor; typedef SphericalTensor<scalar> sphericalTensor;
// Identity tensor
static const sphericalTensor I(1);
static const sphericalTensor oneThirdI(1.0/3.0); // Identity tensor
static const sphericalTensor twoThirdsI(2.0/3.0); static const sphericalTensor I;
static const sphericalTensor oneThirdI;
static const sphericalTensor twoThirdsI;
//- Specify data associated with sphericalTensor type are contiguous //- Specify data associated with sphericalTensor type are contiguous

View file

@ -136,6 +136,7 @@ public:
// IOstream Operators // IOstream Operators
#ifndef SWIG
friend Istream& operator>> <Form, Cmpt, nCmpt> friend Istream& operator>> <Form, Cmpt, nCmpt>
( (
Istream&, Istream&,
@ -147,6 +148,7 @@ public:
Ostream&, Ostream&,
const VectorSpace<Form, Cmpt, nCmpt>& const VectorSpace<Form, Cmpt, nCmpt>&
); );
#endif
}; };

View file

@ -48,6 +48,20 @@ public:
vs.v_[I] = o(vs1.v_[I], vs2.v_[I]); vs.v_[I] = o(vs1.v_[I], vs2.v_[I]);
VectorSpaceOps<endLoop*N, endLoop*(I+1)>::op(vs, vs1, vs2, o); VectorSpaceOps<endLoop*N, endLoop*(I+1)>::op(vs, vs1, vs2, o);
} }
template<class V, class V1, class V2, class Op>
static inline void opVV(V& vs, const V1& vs1, const V2& vs2, Op o)
{
vs.v_[I] = o(vs1.v_[I], vs2.v_[I]);
VectorSpaceOps<endLoop*N, endLoop*(I+1)>::opVV(vs, vs1, vs2, o);
}
template<class S, class V1, class V2, class EqOp, class Op>
static inline void SopEqOpVV(S& s, const V1& vs1, const V2& vs2, EqOp eo, Op o)
{
eo(s, o(vs1.v_[I], vs2.v_[I]));
VectorSpaceOps<endLoop*N, endLoop*(I+1)>::SopEqOpVV(s, vs1, vs2, eo, o);
}
}; };
@ -80,4 +94,13 @@ public:
template<class V, class V1, class Op> template<class V, class V1, class Op>
static inline void op(V& vs, const V1&, const V1&, Op) static inline void op(V& vs, const V1&, const V1&, Op)
{} {}
template<class V, class V1, class V2, class Op>
static inline void opVV(V& vs, const V1& vs1, const V2& vs2, Op o)
{}
template<class S, class V1, class V2, class EqOp, class Op>
static inline void SopEqOpVV(S& s, const V1& vs1, const V2& vs2, EqOp eo, Op o)
{}
}; };

View file

@ -32,6 +32,11 @@ Description
combined using the given combination function and the result is combined using the given combination function and the result is
broadcast to all nodes broadcast to all nodes
Note:
Format of this file has considerably changed to remove cpp pre-processor
definition in order to help Swig with parsing in. Implemented by
Alexey Petrov; merged by HJ, 14/Oct/2010
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#ifndef ops_H #ifndef ops_H
@ -42,103 +47,272 @@ Description
namespace Foam namespace Foam
{ {
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // template<class T1, class T2>
class eqOp2
{ public: void operator()(T1& x, const T2& y) const { x = y; } };
#define EqOp(opName, op) \ template<class T>
\ class eqOp
template<class T1, class T2> \ { public: void operator()(T& x, const T& y) const { x = y; } };
class opName##Op2 \
{ \
public: \
\
void operator()(T1& x, const T2& y) const \
{ \
op; \
} \
}; \
\
template<class T> \
class opName##Op \
{ \
public: \
\
void operator()(T& x, const T& y) const \
{ \
op; \
} \
};
EqOp(eq, x = y) template<class T1, class T2>
EqOp(plusEq, x += y) class plusEqOp2
EqOp(minusEq, x -= y) { public: void operator()(T1& x, const T2& y) const { x += y; } };
EqOp(multiplyEq, x *= y)
EqOp(divideEq, x /= y)
EqOp(eqMag, x = mag(y))
EqOp(plusEqMagSqr, x += magSqr(y))
EqOp(maxEq, x = max(x, y))
EqOp(minEq, x = min(x, y))
EqOp(andEq, x = (x && y))
EqOp(orEq, x = (x || y))
EqOp(eqMinus, x = -y) template<class T>
class plusEqOp
{ public: void operator()(T& x, const T& y) const { x += y; } };
#undef EqOp template<class T1, class T2>
class minusEqOp2
{ public: void operator()(T1& x, const T2& y) const { x -= y; } };
template<class T>
class minusEqOp
{ public: void operator()(T& x, const T& y) const { x -= y; } };
template<class T1, class T2>
class multiplyEqOp2
{ public: void operator()(T1& x, const T2& y) const { x *= y; } };
template<class T>
class multiplyEqOp
{ public: void operator()(T& x, const T& y) const { x *= y; } };
template<class T1, class T2>
class divideEqOp2
{ public: void operator()(T1& x, const T2& y) const { x /= y; } };
template<class T>
class divideEqOp
{ public: void operator()(T& x, const T& y) const { x /= y; } };
template<class T1, class T2>
class eqMagOp2
{ public: void operator()(T1& x, const T2& y) const { x = mag(y); } };
template<class T>
class eqMagOp
{ public: void operator()(T& x, const T& y) const { x = mag(y); } };
template<class T1, class T2>
class plusEqMagSqrOp2
{ public: void operator()(T1& x, const T2& y) const { x += magSqr(y); } };
template<class T>
class plusEqMagSqrOp
{ public: void operator()(T& x, const T& y) const { x += magSqr(y); } };
template<class T1, class T2>
class maxEqOp2
{ public: void operator()(T1& x, const T2& y) const { x = max(x, y); } };
template<class T>
class maxEqOp
{ public: void operator()(T& x, const T& y) const { x = max(x, y); } };
template<class T1, class T2>
class minEqOp2
{ public: void operator()(T1& x, const T2& y) const { x = min(x, y); } };
template<class T>
class minEqOp
{ public: void operator()(T& x, const T& y) const { x = min(x, y); } };
template<class T1, class T2>
class andEqOp2
{ public: void operator()(T1& x, const T2& y) const { x = (x && y); } };
template<class T>
class andEqOp
{ public: void operator()(T& x, const T& y) const { x = (x && y); } };
template<class T1, class T2>
class orEqOp2
{ public: void operator()(T1& x, const T2& y) const { x = (x || y); } };
template<class T>
class orEqOp
{ public: void operator()(T& x, const T& y) const { x = (x || y); } };
template<class T1, class T2>
class eqMinusOp2
{ public: void operator()(T1& x, const T2& y) const { x = -y; } };
template<class T>
class eqMinusOp
{ public: void operator()(T& x, const T& y) const { x = -y; } };
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#define Op(opName, op) \ template<class T, class T1, class T2>
\ class sumOp3
template<class T, class T1, class T2> \ { public: T operator()(const T1& x, const T2& y) const { return x + y; } };
class opName##Op3 \
{ \
public: \
\
T operator()(const T1& x, const T2& y) const \
{ \
return op; \
} \
}; \
\
template<class T1, class T2> \
class opName##Op2 \
{ \
public: \
\
T1 operator()(const T1& x, const T2& y) const \
{ \
return op; \
} \
}; \
\
template<class T> \
class opName##Op \
{ \
public: \
\
T operator()(const T& x, const T& y) const \
{ \
return op; \
} \
};
Op(sum, x + y) template<class T1, class T2>
class sumOp2
{ public: T1 operator()(const T1& x, const T2& y) const { return x + y; } };
Op(plus, x + y) template<class T>
Op(minus, x - y) class sumOp
Op(multiply, x * y) { public: T operator()(const T& x, const T& y) const { return x + y; } };
Op(divide, x / y)
Op(cmptMultiply, cmptMultiply(x, y))
Op(cmptDivide, cmptDivide(x, y))
Op(stabilise, stabilise(x, y))
Op(max, max(x, y))
Op(min, min(x, y))
Op(minMod, minMod(x, y))
Op(and, x && y)
Op(or, x || y)
Op(eqEq, x == y)
#undef Op template<class T, class T1, class T2>
class plusOp3
{ public: T operator()(const T1& x, const T2& y) const { return x + y; } };
template<class T1, class T2>
class plusOp2
{ public: T1 operator()(const T1& x, const T2& y) const { return x + y; } };
template<class T>
class plusOp
{ public: T operator()(const T& x, const T& y) const { return x + y; } };
template<class T, class T1, class T2>
class minusOp3
{ public: T operator()(const T1& x, const T2& y) const { return x - y; } };
template<class T1, class T2>
class minusOp2
{ public: T1 operator()(const T1& x, const T2& y) const { return x - y; } };
template<class T>
class minusOp
{ public: T operator()(const T& x, const T& y) const { return x - y; } };
template<class T, class T1, class T2>
class multiplyOp3
{ public: T operator()(const T1& x, const T2& y) const { return x * y; } };
template<class T1, class T2>
class multiplyOp2
{ public: T1 operator()(const T1& x, const T2& y) const { return x * y; } };
template<class T>
class multiplyOp
{ public: T operator()(const T& x, const T& y) const { return x * y; } };
template<class T, class T1, class T2>
class divideOp3
{ public: T operator()(const T1& x, const T2& y) const { return x / y; } };
template<class T1, class T2>
class divideOp2
{ public: T1 operator()(const T1& x, const T2& y) const { return x / y; } };
template<class T>
class divideOp
{ public: T operator()(const T& x, const T& y) const { return x / y; } };
template<class T, class T1, class T2>
class cmptMultiplyOp3
{ public: T operator()(const T1& x, const T2& y) const { return cmptMultiply(x, y); } };
template<class T1, class T2>
class cmptMultiplyOp2
{ public: T1 operator()(const T1& x, const T2& y) const { return cmptMultiply(x, y); } };
template<class T>
class cmptMultiplyOp
{ public: T operator()(const T& x, const T& y) const { return cmptMultiply(x, y); } };
template<class T, class T1, class T2>
class cmptDivideOp3
{ public: T operator()(const T1& x, const T2& y) const { return cmptDivide(x, y); } };
template<class T1, class T2>
class cmptDivideOp2
{ public: T1 operator()(const T1& x, const T2& y) const { return cmptDivide(x, y); } };
template<class T>
class cmptDivideOp
{ public: T operator()(const T& x, const T& y) const { return cmptDivide(x, y); } };
template<class T, class T1, class T2>
class stabiliseOp3
{ public: T operator()(const T1& x, const T2& y) const { return stabilise(x, y); } };
template<class T1, class T2>
class stabiliseOp2
{ public: T1 operator()(const T1& x, const T2& y) const { return stabilise(x, y); } };
template<class T>
class stabiliseOp
{ public: T operator()(const T& x, const T& y) const { return stabilise(x, y); } };
template<class T, class T1, class T2>
class maxOp3
{ public: T operator()(const T1& x, const T2& y) const { return max(x, y); } };
template<class T1, class T2>
class maxOp2
{ public: T1 operator()(const T1& x, const T2& y) const { return max(x, y); } };
template<class T>
class maxOp
{ public: T operator()(const T& x, const T& y) const { return max(x, y); } };
template<class T, class T1, class T2>
class minOp3
{ public: T operator()(const T1& x, const T2& y) const { return min(x, y); } };
template<class T1, class T2>
class minOp2
{ public: T1 operator()(const T1& x, const T2& y) const { return min(x, y); } };
template<class T>
class minOp
{ public: T operator()(const T& x, const T& y) const { return min(x, y); } };
template<class T, class T1, class T2>
class minModOp3
{ public: T operator()(const T1& x, const T2& y) const { return minMod(x, y); } };
template<class T1, class T2>
class minModOp2
{ public: T1 operator()(const T1& x, const T2& y) const { return minMod(x, y); } };
template<class T>
class minModOp
{ public: T operator()(const T& x, const T& y) const { return minMod(x, y); } };
template<class T, class T1, class T2>
class andOp3
{ public: T operator()(const T1& x, const T2& y) const { return x && y; } };
template<class T1, class T2>
class andOp2
{ public: T1 operator()(const T1& x, const T2& y) const { return x && y; } };
template<class T>
class andOp
{ public: T operator()(const T& x, const T& y) const { return x && y; } };
template<class T, class T1, class T2>
class orOp3
{ public: T operator()(const T1& x, const T2& y) const { return x || y; } };
template<class T1, class T2>
class orOp2
{ public: T1 operator()(const T1& x, const T2& y) const { return x || y; } };
template<class T>
class orOp
{ public: T operator()(const T& x, const T& y) const { return x || y; } };
template<class T, class T1, class T2>
class eqEqOp3
{ public: T operator()(const T1& x, const T2& y) const { return x == y; } };
template<class T1, class T2>
class eqEqOp2
{ public: T1 operator()(const T1& x, const T2& y) const { return x == y; } };
template<class T>
class eqEqOp
{ public: T operator()(const T& x, const T& y) const { return x == y; } };
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View file

@ -71,6 +71,7 @@ public:
// Declare run-time constructor selection table // Declare run-time constructor selection table
#ifndef SWIG
declareRunTimeSelectionTable declareRunTimeSelectionTable
( (
autoPtr, autoPtr,
@ -79,6 +80,7 @@ public:
(const IOobject& io), (const IOobject& io),
(io) (io)
); );
#endif
// Constructors // Constructors

View file

@ -134,8 +134,11 @@ void Foam::turboFvMesh::calcMovingPoints() const
// The rotation data is saved within the cell data. For // The rotation data is saved within the cell data. For
// non-rotating regions rpm is zero, so mesh movement is // non-rotating regions rpm is zero, so mesh movement is
// also zero. The conversion of rotational speed // also zero. The conversion of rotational speed
// Note: deltaT changes during the run: moved to
// turboFvMesh::update(). HJ, 14/Oct/2010
movingPoints[curFace[pointI]] = movingPoints[curFace[pointI]] =
vector(0,rpm_*360.0*time().deltaT().value()/60.0, 0); vector(0, rpm_/60.0*360.0, 0);
} }
} }
} }
@ -213,7 +216,8 @@ bool Foam::turboFvMesh::update()
( (
csPtr_->globalPosition csPtr_->globalPosition
( (
csPtr_->localPosition(allPoints()) + movingPoints() csPtr_->localPosition(allPoints())
+ movingPoints()*time().deltaT().value()
) )
); );

View file

@ -129,6 +129,18 @@ void surfaceNormalFixedValueFvPatchVectorField::rmap
} }
void surfaceNormalFixedValueFvPatchVectorField::updateCoeffs()
{
if (updated())
{
return;
}
// Bug fix: update for moving mesh. HJ, 15/Oct/2010
operator==(refValue_*patch().nf());
}
void surfaceNormalFixedValueFvPatchVectorField::write(Ostream& os) const void surfaceNormalFixedValueFvPatchVectorField::write(Ostream& os) const
{ {
fvPatchVectorField::write(os); fvPatchVectorField::write(os);

View file

@ -151,6 +151,11 @@ public:
); );
// Member functions
//- Update the coefficients associated with the patch field
virtual void updateCoeffs();
//- Write //- Write
virtual void write(Ostream&) const; virtual void write(Ostream&) const;
}; };

View file

@ -114,6 +114,7 @@ public:
// Declare run-time constructor selection tables // Declare run-time constructor selection tables
#ifndef SWIG
declareRunTimeSelectionTable declareRunTimeSelectionTable
( (
tmp, tmp,
@ -152,7 +153,7 @@ public:
), ),
(p, iF, dict) (p, iF, dict)
); );
#endif
// Constructors // Constructors
@ -469,7 +470,9 @@ public:
// Ostream operator // Ostream operator
#ifndef SWIG
friend Ostream& operator<< <Type>(Ostream&, const fvPatchField<Type>&); friend Ostream& operator<< <Type>(Ostream&, const fvPatchField<Type>&);
#endif
}; };

View file

@ -102,6 +102,7 @@ public:
// Declare run-time constructor selection tables // Declare run-time constructor selection tables
#ifndef SWIG
declareRunTimeSelectionTable declareRunTimeSelectionTable
( (
tmp, tmp,
@ -140,7 +141,7 @@ public:
), ),
(p, iF, dict) (p, iF, dict)
); );
#endif
// Constructors // Constructors
@ -354,7 +355,13 @@ public:
// Ostream operator // Ostream operator
friend Ostream& operator<< <Type>(Ostream&, const fvsPatchField<Type>&); #ifndef SWIG
friend Ostream& operator<< <Type>
(
Ostream&,
const fvsPatchField<Type>&
);
#endif
}; };

View file

@ -447,6 +447,7 @@ public:
// Friend operators // Friend operators
#ifndef SWIG
friend tmp<GeometricField<Type, fvPatchField, volMesh> > friend tmp<GeometricField<Type, fvPatchField, volMesh> >
operator& <Type> operator& <Type>
( (
@ -483,6 +484,7 @@ public:
Ostream&, Ostream&,
const fvMatrix<Type>& const fvMatrix<Type>&
); );
#endif
}; };

View file

@ -113,6 +113,7 @@ public:
// Declare run-time constructor selection tables // Declare run-time constructor selection tables
#ifndef SWIG
declareRunTimeSelectionTable declareRunTimeSelectionTable
( (
autoPtr, autoPtr,
@ -121,6 +122,7 @@ public:
(const polyPatch& patch, const fvBoundaryMesh& bm), (const polyPatch& patch, const fvBoundaryMesh& bm),
(patch, bm) (patch, bm)
); );
#endif
// Constructors // Constructors

View file

@ -69,6 +69,8 @@ public:
//- Declare run-time constructor selection table //- Declare run-time constructor selection table
#ifndef SWIG
declareRunTimeSelectionTable declareRunTimeSelectionTable
( (
autoPtr, autoPtr,
@ -77,6 +79,8 @@ public:
(const fvMesh& mesh), (const fvMesh& mesh),
(mesh) (mesh)
); );
#endif
// Constructors // Constructors

View file

@ -121,6 +121,7 @@ public:
// Declare runtime constructor selection table // Declare runtime constructor selection table
#ifndef SWIG
declareRunTimeSelectionTable declareRunTimeSelectionTable
( (
autoPtr, autoPtr,
@ -131,7 +132,7 @@ public:
), ),
(T) (T)
); );
#endif
// Constructors // Constructors

View file

@ -135,7 +135,7 @@ tmp<volScalarField> twoPhaseMixture::rho() const
( (
new volScalarField new volScalarField
( (
"rho", "rho_twoPhaseMixture",
limitedAlpha1*rho1_ limitedAlpha1*rho1_
+ (scalar(1) - limitedAlpha1)*rho2_ + (scalar(1) - limitedAlpha1)*rho2_
) )
@ -151,7 +151,7 @@ tmp<volScalarField> twoPhaseMixture::mu() const
( (
new volScalarField new volScalarField
( (
"mu", "mu_twoPhaseMixture",
limitedAlpha1*rho1_*nuModel1_->nu() limitedAlpha1*rho1_*nuModel1_->nu()
+ (scalar(1) - limitedAlpha1)*rho2_*nuModel2_->nu() + (scalar(1) - limitedAlpha1)*rho2_*nuModel2_->nu()
) )
@ -168,7 +168,7 @@ tmp<surfaceScalarField> twoPhaseMixture::muf() const
( (
new surfaceScalarField new surfaceScalarField
( (
"muf", "muf_twoPhaseMixture",
alpha1f*rho1_*fvc::interpolate(nuModel1_->nu()) alpha1f*rho1_*fvc::interpolate(nuModel1_->nu())
+ (scalar(1) - alpha1f)*rho2_*fvc::interpolate(nuModel2_->nu()) + (scalar(1) - alpha1f)*rho2_*fvc::interpolate(nuModel2_->nu())
) )
@ -185,7 +185,7 @@ tmp<surfaceScalarField> twoPhaseMixture::nuf() const
( (
new surfaceScalarField new surfaceScalarField
( (
"nuf", "nuf_twoPhaseMixture",
( (
alpha1f*rho1_*fvc::interpolate(nuModel1_->nu()) alpha1f*rho1_*fvc::interpolate(nuModel1_->nu())
+ (scalar(1) - alpha1f)*rho2_*fvc::interpolate(nuModel2_->nu()) + (scalar(1) - alpha1f)*rho2_*fvc::interpolate(nuModel2_->nu())

View file

@ -92,6 +92,7 @@ public:
// Declare run-time constructor selection table // Declare run-time constructor selection table
#ifndef SWIG
declareRunTimeSelectionTable declareRunTimeSelectionTable
( (
autoPtr, autoPtr,
@ -105,6 +106,7 @@ public:
), ),
(name, viscosityProperties, U, phi) (name, viscosityProperties, U, phi)
); );
#endif
// Selectors // Selectors

View file

@ -144,7 +144,7 @@ public:
// Selectors // Selectors
//- Return a reference to the selected LES model //- Return a reference to the selected LES model
static autoPtr<LESModel> New static autoPtr<compressible::LESModel> New
( (
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,

View file

@ -136,6 +136,7 @@ public:
// Declare run-time constructor selection table // Declare run-time constructor selection table
#ifndef SWIG
declareRunTimeSelectionTable declareRunTimeSelectionTable
( (
autoPtr, autoPtr,
@ -149,7 +150,7 @@ public:
), ),
(rho, U, phi, thermoPhysicalModel) (rho, U, phi, thermoPhysicalModel)
); );
#endif
// Constructors // Constructors
@ -167,7 +168,7 @@ public:
// Selectors // Selectors
//- Return a reference to the selected turbulence model //- Return a reference to the selected turbulence model
static autoPtr<RASModel> New static autoPtr<compressible::RASModel> New
( (
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,
@ -176,8 +177,7 @@ public:
); );
// Destructor //- Destructor
virtual ~RASModel() virtual ~RASModel()
{} {}

View file

@ -104,6 +104,7 @@ public:
// Declare run-time constructor selection table // Declare run-time constructor selection table
#ifndef SWIG
declareRunTimeNewSelectionTable declareRunTimeNewSelectionTable
( (
autoPtr, autoPtr,
@ -117,6 +118,7 @@ public:
), ),
(rho, U, phi, thermoPhysicalModel) (rho, U, phi, thermoPhysicalModel)
); );
#endif
// Constructors // Constructors
@ -134,7 +136,7 @@ public:
// Selectors // Selectors
//- Return a reference to the selected turbulence model //- Return a reference to the selected turbulence model
static autoPtr<turbulenceModel> New static autoPtr<compressible::turbulenceModel> New
( (
const volScalarField& rho, const volScalarField& rho,
const volVectorField& U, const volVectorField& U,

View file

@ -142,7 +142,7 @@ public:
// Selectors // Selectors
//- Return a reference to the selected LES model //- Return a reference to the selected LES model
static autoPtr<LESModel> New static autoPtr<incompressible::LESModel> New
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,

View file

@ -159,7 +159,7 @@ public:
// Selectors // Selectors
//- Return a reference to the selected RAS model //- Return a reference to the selected RAS model
static autoPtr<RASModel> New static autoPtr<incompressible::RASModel> New
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,

View file

@ -102,6 +102,7 @@ public:
// Declare run-time New selection table // Declare run-time New selection table
#ifndef SWIG
declareRunTimeNewSelectionTable declareRunTimeNewSelectionTable
( (
autoPtr, autoPtr,
@ -114,6 +115,7 @@ public:
), ),
(U, phi, lamTransportModel) (U, phi, lamTransportModel)
); );
#endif
// Constructors // Constructors
@ -130,7 +132,7 @@ public:
// Selectors // Selectors
//- Return a reference to the selected turbulence model //- Return a reference to the selected turbulence model
static autoPtr<turbulenceModel> New static autoPtr<incompressible::turbulenceModel> New
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi, const surfaceScalarField& phi,

View file

@ -1,10 +1,10 @@
#/*---------------------------------------------------------------------------*\ # /*-------------------------------------------------------------------------*\
# ========= | # ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration | # \\ / O peration |
# \\ / A nd | Copyright held by original author # \\ / A nd | Copyright held by original author
# \\/ M anipulation | # \\/ M anipulation |
# ------------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# License # License
# This file is part of OpenFOAM. # This file is part of OpenFOAM.
# #
@ -33,7 +33,7 @@
# Martin Beaudoin, Hydro-Quebec, 2010. All rights reserved # Martin Beaudoin, Hydro-Quebec, 2010. All rights reserved
# #
# #
# \*---------------------------------------------------------------------------*/ # \*-------------------------------------------------------------------------*/
cmake_minimum_required (VERSION 2.8) cmake_minimum_required (VERSION 2.8)

View file

@ -14,3 +14,72 @@ OSIG/TurboMachinery : Test harness for the TurboMachinery OSIG. See the file OSI
Martin Beaudoin, Hydro-Quebec, 2010. All rights reserved. Martin Beaudoin, Hydro-Quebec, 2010. All rights reserved.
1: Select your git branch of choice: ie:
git checkout master # For Hrv master branch
2: Make sure your OpenFOAM environment is properly configured to run OpenFOAM.
3: The minimal cmake version number for running the test loop is 2.8.0. Make sure you are there.
4: Make sure you have the test harness scripts available under your git branch;
otherwise, you will need to fetch this from Hrv's master branch, and merge it into yours
ls $WM_PROJECT_DIR/testHarness # Checking availability of testHarness under this branch
5: move to the runDir directory for the OpenFOAM test harness
cd $WM_PROJECT_DIR/testHarness/OpenFOAM/1.6-ext/runDir
6: Normally, if using the master branch, everything should already be setup for you to run the test harness.
Still, I recommand always checking that these two important files are up-to-date:
cp ../CMakeFiles/CMakeLists.txt $WM_PROJECT_DIR
cp ../CMakeFiles/CTestConfig.cmake.openfoam-extend_of-1.6-ext-testing $WM_PROJECT_DIR/CTestConfig.cmake
7: Next, running the test loop is pretty simple:
cd $WM_PROJECT_DIR/testHarness/OpenFOAM/1.6-ext/runDir # you should already be there...
./Allclean
./Allrun_Experimental
8: The results will be published on the CDash dashboard on openfoam-extend.
To see your results:
URL : http://openfoam-extend.sourceforge.net/CDash/index.php?project=OpenFOAM-1.6-ext_testing
Username : of-1.6-ext@of-extend.cdash
Password : onepasswd4all
9: You can customize your system identifier on the dashboard using the environment variable $CDASH_SUBMIT_LOCAL_HOST_ID.
Otherwise, the fully qualified name of your system will be used.
A good customization idea would be to add the name of your git branch in your system ID.
I will probably modify my scripts to add this information automagically.
NB: Please no "forward slash" or "/" in the system ID; it looks like CDash will choke on this.
10: In general, see the file $WM_PROJECT_DIR/testHarness/OpenFOAM/1.6-ext/README.txt for the necessary information about running the
test loop.
(NB: I just found out a couple of mistakes in that file, so please use this message for now as per instructions for running the test loop.
I will fix this shortly. Sorry.)
11: As more people will start using these basic steps, I will supply more information about some other features that are available with
the test loop.
But I need to see those baby steps first... :)
12: Please do not hesitate to report any problems, comments, suggestions about the test loop.
This stuff runs great on my systems, but it needs to run even better on yours.

0
tutorials/combustion/XiFoam/les/pitzDaily/Allrun Normal file → Executable file
View file

View file

@ -1,8 +1,8 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM Extend Project: Open source CFD |
| \\ / O peration | Version: 1.6.x | | \\ / O peration | Version: 1.6-ext |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.extend-project.de |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
FoamFile FoamFile

0
tutorials/combustion/XiFoam/les/pitzDaily3D/Allrun Normal file → Executable file
View file

View file

@ -23,6 +23,7 @@ dynamicFvMesh dynamicMotionSolverFvMesh;
solver laplaceFaceDecomposition; solver laplaceFaceDecomposition;
diffusivity file; diffusivity file;
// diffusivity uniform;
frozenDiffusion off; frozenDiffusion off;

View file

@ -1,4 +1,4 @@
/*---------------------------------------------------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.4 | | \\ / O peration | Version: 1.4 |
@ -10,12 +10,6 @@ FoamFile
{ {
version 2.0; version 2.0;
format ascii; format ascii;
root "";
case "";
instance "";
local "";
class dictionary; class dictionary;
object blockMeshDict; object blockMeshDict;
} }
@ -50,11 +44,11 @@ vertices
blocks blocks
( (
hex (0 1 5 4 0 1 13 12) (15 15 1) simpleGrading (1 1 1) hex (0 1 5 4 0 1 13 12) (5 5 1) simpleGrading (1 1 1)
hex (2 3 7 6 2 3 15 14) (20 20 1) simpleGrading (2 0.25 1) hex (2 3 7 6 2 3 15 14) (7 7 1) simpleGrading (2 0.25 1)
hex (4 5 9 8 12 13 17 16) (15 15 1) simpleGrading (1 1 1) hex (4 5 9 8 12 13 17 16) (5 5 1) simpleGrading (1 1 1)
hex (5 6 10 9 13 14 18 17) (50 15 1) simpleGrading (1 1 1) hex (5 6 10 9 13 14 18 17) (15 5 1) simpleGrading (1 1 1)
hex (6 7 11 10 14 15 19 18) (20 15 1) simpleGrading (2 1 1) hex (6 7 11 10 14 15 19 18) (7 5 1) simpleGrading (2 1 1)
); );
edges edges

View file

@ -0,0 +1,112 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.4 |
| \\ / A nd | Web: http://www.openfoam.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
convertToMeters 0.001;
vertices
(
(-7.5 0 0)
(-7 0 0)
(-3.5 0 0)
(0 0 0)
(-7.5 0.75 -0.0327457)
(-7 0.75 -0.0327457)
(-3.5 2 -0.0873219)
(0 2 -0.0873219)
(-7.5 2.5 -0.109152)
(-7 2.5 -0.109152)
(-3.5 2.5 -0.109152)
(0 2.5 -0.109152)
(-7.5 0.75 0.0327457)
(-7 0.75 0.0327457)
(-3.5 2 0.0873219)
(0 2 0.0873219)
(-7.5 2.5 0.109152)
(-7 2.5 0.109152)
(-3.5 2.5 0.109152)
(0 2.5 0.109152)
);
blocks
(
hex (0 1 5 4 0 1 13 12) (15 15 1) simpleGrading (1 1 1)
hex (2 3 7 6 2 3 15 14) (20 20 1) simpleGrading (2 0.25 1)
hex (4 5 9 8 12 13 17 16) (15 15 1) simpleGrading (1 1 1)
hex (5 6 10 9 13 14 18 17) (50 15 1) simpleGrading (1 1 1)
hex (6 7 11 10 14 15 19 18) (20 15 1) simpleGrading (2 1 1)
);
edges
(
);
patches
(
wall movingWall
(
(1 5 13 1)
(5 6 14 13)
(2 2 14 6)
)
patch farFieldMoving
(
(9 17 18 10)
)
wall fixedWall
(
(3 7 15 3)
(7 11 19 15)
)
empty axis
(
(0 1 1 0)
(2 3 3 2)
)
patch left
(
(0 0 12 4)
(4 12 16 8)
)
patch farField
(
(8 16 17 9)
(10 18 19 11)
)
wedge back
(
(0 4 5 1)
(2 6 7 3)
(4 8 9 5)
(5 9 10 6)
(6 10 11 7)
)
wedge front
(
(0 1 13 12)
(2 3 15 14)
(12 13 17 16)
(13 14 18 17)
(14 15 19 18)
)
);
mergePatchPairs
(
);
// ************************************************************************* //

View file

@ -20,50 +20,50 @@ FoamFile
movingWall movingWall
{ {
type wall; type wall;
nFaces 85; nFaces 27;
startFace 3665; startFace 374;
} }
farFieldMoving farFieldMoving
{ {
type patch; type patch;
nFaces 50; nFaces 15;
startFace 3750; startFace 401;
} }
fixedWall fixedWall
{ {
type wall; type wall;
nFaces 35; nFaces 12;
startFace 3800; startFace 416;
} }
axis axis
{ {
type empty; type empty;
nFaces 0; nFaces 0;
startFace 3835; startFace 428;
} }
left left
{ {
type patch; type patch;
nFaces 30; nFaces 10;
startFace 3835; startFace 428;
} }
farField farField
{ {
type patch; type patch;
nFaces 35; nFaces 12;
startFace 3865; startFace 438;
} }
back back
{ {
type wedge; type wedge;
nFaces 1900; nFaces 209;
startFace 3900; startFace 450;
} }
front front
{ {
type wedge; type wedge;
nFaces 1900; nFaces 209;
startFace 5800; startFace 659;
} }
) )

View file

@ -1,4 +1,4 @@
/*---------------------------------------------------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.4 | | \\ / O peration | Version: 1.4 |
@ -10,12 +10,6 @@ FoamFile
{ {
version 2.0; version 2.0;
format ascii; format ascii;
root "";
case "";
instance "";
local "";
class dictionary; class dictionary;
object transportProperties; object transportProperties;
} }

View file

@ -26,11 +26,11 @@ stopAt endTime;
endTime 0.003; endTime 0.003;
deltaT 5e-06; deltaT 2e-05;
writeControl timeStep; writeControl timeStep;
writeInterval 40; writeInterval 10;
purgeWrite 0; purgeWrite 0;
@ -38,7 +38,7 @@ writeFormat ascii;
writePrecision 6; writePrecision 6;
writeCompression uncompressed; writeCompression compressed;
timeFormat general; timeFormat general;
@ -50,4 +50,5 @@ adjustTimeStep no;
maxCo 0.2; maxCo 0.2;
// ************************************************************************* // // ************************************************************************* //

View file

@ -0,0 +1,50 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 4;
method simple;
simpleCoeffs
{
n (2 2 1);
delta 0.001;
}
hierarchicalCoeffs
{
n (1 1 1);
delta 0.001;
order xyz;
}
metisCoeffs
{
processorWeights 4{1};
}
manualCoeffs
{
dataFile "";
}
distributed no;
roots
(
);
// ************************************************************************* //

View file

@ -10,12 +10,6 @@ FoamFile
{ {
version 2.0; version 2.0;
format ascii; format ascii;
root "";
case "";
instance "";
local "";
class dictionary; class dictionary;
object fvSchemes; object fvSchemes;
} }

View file

@ -20,22 +20,32 @@ solvers
{ {
motionU motionU
{ {
solver amgSolver; solver PCG;
cycle W-cycle; preconditioner DIC;
policy AAMG;
nPreSweeps 0;
nPostSweeps 2;
groupSize 4;
minCoarseEqns 30;
nMaxLevels 100;
scale on;
smoother GaussSeidel;
minIter 0; minIter 0;
maxIter 500; maxIter 1000;
tolerance 1e-8; tolerance 1e-6;
relTol 0.0; relTol 0.01;
}; };
// motionU
// {
// solver amgSolver;
// cycle W-cycle;
// policy AAMG;
// nPreSweeps 0;
// nPostSweeps 2;
// groupSize 4;
// minCoarseEqns 30;
// nMaxLevels 100;
// scale on;
// smoother GaussSeidel;
// minIter 0;
// maxIter 500;
// tolerance 1e-8;
// relTol 0.0;
// };
} }