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
# \\ / O peration |
# \\ / A nd | Copyright held by original author
# \\/ M anipulation |
# -------------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# License
# This file is part of OpenFOAM.
#
@ -23,17 +23,17 @@
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# Description
# CMakeLists.txt file for implementing a test harness for the compilation
# and test of OpenFOAM-1.5-dev using Kitware CTest./CMake/CDash
# CMakeLists.txt file for implementing a test harness for the compilation
# and test of OpenFOAM-1.5-dev using Kitware CTest./CMake/CDash
#
# The results will be submitted to the CDash server identified by the file
# CTestConfig.cmake
# The results will be submitted to the CDash server identified by the file
# CTestConfig.cmake
#
# Author
# Martin Beaudoin, Hydro-Quebec, 2010. All rights reserved
# Martin Beaudoin, Hydro-Quebec, 2010. All rights reserved
#
#
# \*---------------------------------------------------------------------------*/
# \*-------------------------------------------------------------------------*/
cmake_minimum_required (VERSION 2.8)

View file

@ -71,13 +71,12 @@ fi
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~
export WM_PROJECT_INST_DIR=$FOAM_INST_DIR
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
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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
# ~~~~~~~~~~~~~~~~~~~~~~~~~
@ -95,7 +94,7 @@ export WM_COMPILER_LIB_ARCH=
# 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:=64}; export WM_ARCH_OPTION

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -296,7 +296,8 @@ public:
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
(
const IOobject&,
@ -306,6 +307,8 @@ public:
);
//- Constructor from components
#if ( !defined(SWIG) || (SWIG_VERSION > 0x010340) )
GeometricField
(
const IOobject&,
@ -314,6 +317,7 @@ public:
const Field<Type>&,
const PtrList<PatchField<Type> >&
);
#endif
//- Construct and read given IOobject
GeometricField
@ -345,12 +349,12 @@ public:
);
//- Construct as copy of tmp<GeometricField> deleting argument
#ifdef ConstructFromTmp
# ifdef ConstructFromTmp
GeometricField
(
const tmp<GeometricField<Type, PatchField, GeoMesh> >&
);
#endif
# endif
//- Construct as copy resetting IO parameters
GeometricField
@ -367,13 +371,13 @@ public:
);
//- Construct as copy resetting name
#ifdef ConstructFromTmp
# ifdef ConstructFromTmp
GeometricField
(
const word& newName,
const tmp<GeometricField<Type, PatchField, GeoMesh> >&
);
#endif
# endif
//- Construct as copy resetting IO parameters and patch type
GeometricField
@ -547,6 +551,7 @@ public:
// Ostream operators
#ifndef SWIG
friend Ostream& operator<< <Type, PatchField, GeoMesh>
(
Ostream&,
@ -558,6 +563,7 @@ public:
Ostream&,
const tmp<GeometricField<Type, PatchField, GeoMesh> >&
);
#endif
};

View file

@ -85,7 +85,10 @@ void GGIInterpolation<MasterPatch, SlavePatch>::calcAddressing() const
<< abort(FatalError);
}
Info << "Evaluation of GGI weighting factors:" << endl;
if (debug)
{
Info << "Evaluation of GGI weighting factors:" << endl;
}
// Create the dynamic lists to hold the addressing
@ -475,8 +478,6 @@ void GGIInterpolation<MasterPatch, SlavePatch>::calcAddressing() const
{
rescaleWeightingFactors();
}
Info << endl;
}
@ -569,12 +570,17 @@ void GGIInterpolation<MasterPatch, SlavePatch>::rescaleWeightingFactors() const
}
}
if (saW.size() > 0 && maW.size() > 0)
if (debug)
{
Info<< " Largest slave weighting factor correction : " << largestSWC
<< " average: " << sumSWC/saW.size() << nl
<< " Largest master weighting factor correction: " << largestMWC
<< " average: " << sumMWC/maW.size() << endl;
if (saW.size() > 0 && maW.size() > 0)
{
Info<< " Largest slave weighting factor correction : "
<< largestSWC
<< " average: " << sumSWC/saW.size() << nl
<< " Largest master weighting factor correction: "
<< largestMWC
<< " average: " << sumMWC/maW.size() << endl;
}
}
}

View file

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

View file

@ -27,7 +27,7 @@ Class
Author
Hrvoje Jasak, Wikki Ltd. All rights reserved
Fethi Tekin, All rights reserved,
Fethi Tekin, All rights reserved
Description
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
const label ncpm = nCopies();
Info << "Number of master copies: " << ncpm << endl;
// Create expanded master points and faces
const polyPatch& master = boundaryMesh()[index()];
const pointField& masterLocalPoints = master.localPoints();
@ -64,8 +62,6 @@ void Foam::overlapGgiPolyPatch::calcExpandedMaster() const
const scalar masterAngle = angle();
Info << "Master Angle is: " << masterAngle << endl;
// Transform points
label nPoints_master = 0;
@ -156,8 +152,6 @@ void Foam::overlapGgiPolyPatch::calcExpandedSlave() const
// Create expanded patch
const label ncp = shadow().nCopies();
Info << "Number of slave copies: " << ncp << endl;
// Create expanded points and faces
const polyPatch& slave = boundaryMesh()[shadowIndex()];
const pointField& slaveLocalPoints = slave.localPoints();

View file

@ -24,7 +24,7 @@ License
Author
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::overlapGgiPolyPatch::expandSlaveData(const Field<Type>& spf) const
{
const scalar slaveAngle = shadow().angle();
const label ncp = shadow().nCopies();
tmp<Field<Type> > tef(new Field<Type>(ncp*spf.size()));
Field<Type>& ef = tef();
label nFaces = 0;
@ -63,15 +63,17 @@ Foam::overlapGgiPolyPatch::expandSlaveData(const Field<Type>& spf) const
return tef;
}
template<class Type>
Foam::tmp<Foam::Field<Type> >
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()));
Field<Type>& ef = tef();
label nFaces = 0;
@ -91,8 +93,6 @@ Foam::overlapGgiPolyPatch::expandMasterData(const Field<Type>& spf) const
return tef;
}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
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
#ifndef SWIG
declareRunTimeSelectionTable
(
autoPtr,
@ -256,6 +257,7 @@ public:
),
(name, dict, index, bm)
);
#endif
// Constructors

View file

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

View file

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

View file

@ -48,6 +48,20 @@ public:
vs.v_[I] = o(vs1.v_[I], vs2.v_[I]);
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>
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
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
@ -42,103 +47,272 @@ Description
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 T1, class T2> \
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; \
} \
};
template<class T>
class eqOp
{ public: void operator()(T& x, const T& y) const { x = y; } };
EqOp(eq, x = y)
EqOp(plusEq, x += y)
EqOp(minusEq, 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))
template<class T1, class T2>
class plusEqOp2
{ public: void operator()(T1& x, const T2& y) const { 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 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; \
} \
};
template<class T, class T1, class T2>
class sumOp3
{ public: T operator()(const T1& x, const T2& y) const { return x + y; } };
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)
Op(minus, x - y)
Op(multiply, 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)
template<class T>
class sumOp
{ public: T operator()(const T& x, const T& y) const { return 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
#ifndef SWIG
declareRunTimeSelectionTable
(
autoPtr,
@ -79,6 +80,7 @@ public:
(const IOobject& io),
(io)
);
#endif
// Constructors

View file

@ -131,11 +131,14 @@ void Foam::turboFvMesh::calcMovingPoints() const
forAll (curFace, pointI)
{
//The rotation data is saved within the cell data. For
//non-rotating regions rpm is zero,so mesh movement is
//also zero. The conversion of rotational speed
// The rotation data is saved within the cell data. For
// non-rotating regions rpm is zero, so mesh movement is
// also zero. The conversion of rotational speed
// Note: deltaT changes during the run: moved to
// turboFvMesh::update(). HJ, 14/Oct/2010
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_->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
{
fvPatchVectorField::write(os);

View file

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

View file

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

View file

@ -102,6 +102,7 @@ public:
// Declare run-time constructor selection tables
#ifndef SWIG
declareRunTimeSelectionTable
(
tmp,
@ -140,7 +141,7 @@ public:
),
(p, iF, dict)
);
#endif
// Constructors
@ -354,7 +355,13 @@ public:
// 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
#ifndef SWIG
friend tmp<GeometricField<Type, fvPatchField, volMesh> >
operator& <Type>
(
@ -483,6 +484,7 @@ public:
Ostream&,
const fvMatrix<Type>&
);
#endif
};

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,10 +1,10 @@
#/*---------------------------------------------------------------------------*\
# /*-------------------------------------------------------------------------*\
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright held by original author
# \\/ M anipulation |
# -------------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# License
# This file is part of OpenFOAM.
#
@ -23,17 +23,17 @@
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# Description
# CMakeLists.txt file for implementing a test harness for the compilation
# and test of OpenFOAM-1.5-dev using Kitware CTest./CMake/CDash
# CMakeLists.txt file for implementing a test harness for the compilation
# and test of OpenFOAM-1.5-dev using Kitware CTest./CMake/CDash
#
# The results will be submitted to the CDash server identified by the file
# CTestConfig.cmake
# The results will be submitted to the CDash server identified by the file
# CTestConfig.cmake
#
# Author
# Martin Beaudoin, Hydro-Quebec, 2010. All rights reserved
# Martin Beaudoin, Hydro-Quebec, 2010. All rights reserved
#
#
# \*---------------------------------------------------------------------------*/
# \*-------------------------------------------------------------------------*/
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.
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++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
| \\ / O peration | Version: 1.6-ext |
| \\ / A nd | Web: www.extend-project.de |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile

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

View file

@ -18,11 +18,12 @@ FoamFile
twoDMotion yes;
dynamicFvMesh dynamicMotionSolverFvMesh;
dynamicFvMesh dynamicMotionSolverFvMesh;
solver laplaceFaceDecomposition;
diffusivity file;
// diffusivity uniform;
frozenDiffusion off;

View file

@ -1,4 +1,4 @@
/*---------------------------------------------------------------------------*\
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.4 |
@ -10,12 +10,6 @@ FoamFile
{
version 2.0;
format ascii;
root "";
case "";
instance "";
local "";
class dictionary;
object blockMeshDict;
}
@ -50,11 +44,11 @@ vertices
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)
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) (7 7 1) simpleGrading (2 0.25 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) (15 5 1) simpleGrading (1 1 1)
hex (6 7 11 10 14 15 19 18) (7 5 1) simpleGrading (2 1 1)
);
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
{
type wall;
nFaces 85;
startFace 3665;
nFaces 27;
startFace 374;
}
farFieldMoving
{
type patch;
nFaces 50;
startFace 3750;
nFaces 15;
startFace 401;
}
fixedWall
{
type wall;
nFaces 35;
startFace 3800;
nFaces 12;
startFace 416;
}
axis
{
type empty;
nFaces 0;
startFace 3835;
startFace 428;
}
left
{
type patch;
nFaces 30;
startFace 3835;
nFaces 10;
startFace 428;
}
farField
{
type patch;
nFaces 35;
startFace 3865;
nFaces 12;
startFace 438;
}
back
{
type wedge;
nFaces 1900;
startFace 3900;
nFaces 209;
startFace 450;
}
front
{
type wedge;
nFaces 1900;
startFace 5800;
nFaces 209;
startFace 659;
}
)

View file

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

View file

@ -26,11 +26,11 @@ stopAt endTime;
endTime 0.003;
deltaT 5e-06;
deltaT 2e-05;
writeControl timeStep;
writeInterval 40;
writeInterval 10;
purgeWrite 0;
@ -38,7 +38,7 @@ writeFormat ascii;
writePrecision 6;
writeCompression uncompressed;
writeCompression compressed;
timeFormat general;
@ -50,4 +50,5 @@ adjustTimeStep no;
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;
format ascii;
root "";
case "";
instance "";
local "";
class dictionary;
object fvSchemes;
}

View file

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