Merge branch 'master' into testLoop/MartinBeaudoin

This commit is contained in:
Martin Beaudoin 2010-10-13 17:17:03 -04:00
commit 6c89f28e58
76 changed files with 732 additions and 470 deletions

View file

@ -0,0 +1,3 @@
icoDyMFoam.C
EXE = $(FOAM_APPBIN)/icoDyMFoam

View file

@ -0,0 +1,13 @@
EXE_INC = \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude
EXE_LIBS = \
-ldynamicFvMesh \
-ldynamicMesh \
-lengine \
-lmeshTools \
-lfiniteVolume \
-llduSolvers

View file

@ -0,0 +1,11 @@
fvVectorMatrix UEqn
(
fvm::ddt(U)
+ fvm::div(phi, U)
- fvm::laplacian(nu, U)
);
if (momentumPredictor)
{
solve(UEqn == -fvc::grad(p));
}

View file

@ -0,0 +1,47 @@
{
wordList pcorrTypes(p.boundaryField().types());
for (label i=0; i<p.boundaryField().size(); i++)
{
if (p.boundaryField()[i].fixesValue())
{
pcorrTypes[i] = fixedValueFvPatchScalarField::typeName;
}
}
volScalarField pcorr
(
IOobject
(
"pcorr",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh,
dimensionedScalar("pcorr", p.dimensions(), 0.0),
pcorrTypes
);
for(int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
{
fvScalarMatrix pcorrEqn
(
fvm::laplacian(rAU, pcorr) == fvc::div(phi)
);
pcorrEqn.setReference(pRefCell, pRefValue);
pcorrEqn.solve();
if (nonOrth == nNonOrthCorr)
{
phi -= pcorrEqn.flux();
}
// Fluxes are corrected to absolute velocity and further corrected
// later. HJ, 6/Feb/2009
}
}
#include "continuityErrs.H"

View file

@ -0,0 +1,90 @@
Info<< "Reading transportProperties\n" << endl;
IOdictionary transportProperties
(
IOobject
(
"transportProperties",
runTime.constant(),
mesh,
IOobject::MUST_READ,
IOobject::NO_WRITE
)
);
dimensionedScalar nu
(
transportProperties.lookup("nu")
);
Info<< "Reading field p\n" << endl;
volScalarField p
(
IOobject
(
"p",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
Info<< "Reading field U\n" << endl;
volVectorField U
(
IOobject
(
"U",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
# include "createPhi.H"
label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, mesh.solutionDict().subDict("PISO"), pRefCell, pRefValue);
Info<< "Reading field rAU if present\n" << endl;
volScalarField rAU
(
IOobject
(
"rAU",
runTime.timeName(),
mesh,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
mesh,
runTime.deltaT(),
zeroGradientFvPatchScalarField::typeName
);
{
const dictionary& piso = mesh.solutionDict().subDict("PISO");
bool momentumPredictor = true;
if (piso.found("momentumPredictor"))
{
momentumPredictor = Switch(piso.lookup("momentumPredictor"));
}
bool momentumPredictorSave = momentumPredictor;
momentumPredictor = false;
# include "UEqn.H"
momentumPredictor = momentumPredictorSave;
rAU = 1.0/UEqn.A();
}

View file

@ -0,0 +1,149 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / 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.
OpenFOAM is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Application
icoDyMFoam
Description
Transient solver for incompressible, laminar flow of Newtonian fluids
with dynamic mesh.
Author
Hrvoje Jasak, Wikki Ltd. All rights reserved.
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "dynamicFvMesh.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
# include "setRootCase.H"
# include "createTime.H"
# include "createDynamicFvMesh.H"
# include "initContinuityErrs.H"
# include "initTotalVolume.H"
# include "createFields.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl;
while (runTime.run())
{
# include "readControls.H"
# include "checkTotalVolume.H"
# include "CourantNo.H"
# include "setDeltaT.H"
// Make the fluxes absolute
fvc::makeAbsolute(phi, U);
runTime++;
Info<< "Time = " << runTime.timeName() << nl << endl;
bool meshChanged = mesh.update();
# include "volContinuity.H"
if (correctPhi && meshChanged)
{
// Fluxes will be corrected to absolute velocity
// HJ, 6/Feb/2009
# include "correctPhi.H"
}
// Make the fluxes relative to the mesh motion
fvc::makeRelative(phi, U);
if (meshChanged)
{
# include "CourantNo.H"
}
# include "UEqn.H"
// --- PISO loop
for (int corr=0; corr<nCorr; corr++)
{
rAU = 1.0/UEqn.A();
U = rAU*UEqn.H();
phi = (fvc::interpolate(U) & mesh.Sf());
//+ fvc::ddtPhiCorr(rAU, U, phi);
adjustPhi(phi, U, p);
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
{
fvScalarMatrix pEqn
(
fvm::laplacian(rAU, p) == fvc::div(phi)
);
pEqn.setReference(pRefCell, pRefValue);
if (corr == nCorr - 1 && nonOrth == nNonOrthCorr)
{
pEqn.solve(mesh.solver(p.name() + "Final"));
}
else
{
pEqn.solve(mesh.solver(p.name()));
}
if (nonOrth == nNonOrthCorr)
{
phi -= pEqn.flux();
}
}
# include "continuityErrs.H"
// Make the fluxes relative to the mesh motion
fvc::makeRelative(phi, U);
U -= rAU*fvc::grad(p);
U.correctBoundaryConditions();
}
runTime.write();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
}
Info<< "End\n" << endl;
return(0);
}
// ************************************************************************* //

View file

@ -0,0 +1,14 @@
# include "readTimeControls.H"
# include "readPISOControls.H"
bool correctPhi = false;
if (piso.found("correctPhi"))
{
correctPhi = Switch(piso.lookup("correctPhi"));
}
bool checkMeshCourantNo = false;
if (piso.found("checkMeshCourantNo"))
{
checkMeshCourantNo = Switch(piso.lookup("checkMeshCourantNo"));
}

View file

@ -24,12 +24,6 @@
pcorrTypes pcorrTypes
); );
# include "continuityErrs.H"
// Flux predictor
phi = (fvc::interpolate(U) & mesh.Sf());
rAU == runTime.deltaT();
for(int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) for(int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
{ {
fvScalarMatrix pcorrEqn fvScalarMatrix pcorrEqn
@ -50,4 +44,4 @@
} }
} }
#include "continuityErrs.H"

View file

@ -54,17 +54,37 @@
scalar pRefValue = 0.0; scalar pRefValue = 0.0;
setRefCell(p, mesh.solutionDict().subDict("PISO"), pRefCell, pRefValue); setRefCell(p, mesh.solutionDict().subDict("PISO"), pRefCell, pRefValue);
scalar totalVolume = sum(mesh.V()).value();
Info<< "Reading field rAU if present\n" << endl;
volScalarField rAU volScalarField rAU
( (
IOobject IOobject
( (
"rAU", "rAU",
runTime.timeName(), runTime.timeName(),
mesh mesh,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
), ),
mesh, mesh,
runTime.deltaT(), runTime.deltaT(),
zeroGradientFvPatchScalarField::typeName zeroGradientFvPatchScalarField::typeName
); );
{
const dictionary& piso = mesh.solutionDict().subDict("PISO");
bool momentumPredictor = true;
if (piso.found("momentumPredictor"))
{
momentumPredictor = Switch(piso.lookup("momentumPredictor"));
}
bool momentumPredictorSave = momentumPredictor;
momentumPredictor = false;
# include "UEqn.H"
momentumPredictor = momentumPredictorSave;
rAU = 1.0/UEqn.A();
}

View file

@ -46,6 +46,7 @@ int main(int argc, char *argv[])
# include "createTime.H" # include "createTime.H"
# include "createDynamicFvMesh.H" # include "createDynamicFvMesh.H"
# include "initContinuityErrs.H" # include "initContinuityErrs.H"
# include "initTotalVolume.H"
# include "createFields.H" # include "createFields.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View file

@ -55,7 +55,7 @@ cleanTimeDirectories ()
zeros=`printf %0${nZeros}d 0` zeros=`printf %0${nZeros}d 0`
nZeros=$(($nZeros + 1)) nZeros=$(($nZeros + 1))
done done
rm -rf ./{[1-9]*,-[1-9]*,log,log.*,log-*,logSummary.*,.fxLock,*.xml,ParaView*,paraFoam*,*.OpenFOAM} > /dev/null 2>&1 rm -rf ./[1-9]* ./-[1-9]* ./log ./log.* ./log-* ./logSummary.* ./.fxLock ./*.xml ./ParaView* ./paraFoam* ./*.OpenFOAM > /dev/null 2>&1
} }
cleanCase () cleanCase ()
@ -66,10 +66,20 @@ cleanCase ()
rm -rf forces* > /dev/null 2>&1 rm -rf forces* > /dev/null 2>&1
rm -rf system/machines \ rm -rf system/machines \
constant/polyMesh/{allOwner*,cell*,face*,meshModifiers*} \ constant/polyMesh/allOwner* \
constant/polyMesh/{owner*,neighbour*,point*,edge*} \ constant/polyMesh/cell* \
constant/polyMesh/{cellLevel*,pointLevel*,refinementHistory*,surfaceIndex*} \ constant/polyMesh/face* \
constant/{cellToRegion,cellLevel*,pointLevel*} \ constant/polyMesh/meshModifiers* \
constant/polyMesh/owner* \
constant/polyMesh/neighbour* \
constant/polyMesh/point* \
constant/polyMesh/edge* \
constant/polyMesh/zoneToPatchName \
constant/polyMesh/cellLevel* \
constant/polyMesh/pointLevel* \
constant/polyMesh/refinementHistory*, \
constant/polyMesh/surfaceIndex* \
constant/cellToRegion \
constant/polyMesh/sets/ \ constant/polyMesh/sets/ \
VTK \ VTK \
> /dev/null 2>&1 > /dev/null 2>&1

View file

@ -65,6 +65,12 @@ compileApplication ()
wmake $1 wmake $1
} }
compileLibrary ()
{
echo "Compiling $1 application"
wmake libso $1
}
cloneCase () cloneCase ()
{ {
if [ -d $2 ] ; then if [ -d $2 ] ; then

View file

@ -911,7 +911,9 @@ Tolerances
patchToPatchProjectionTol 0.05; patchToPatchProjectionTol 0.05;
// Thermophysical models // Thermophysical models
specieThermoTol 1e-4; specieThermoTol 1e-4;
speciesThermoTJump 20;
speciesThermoMaxIter 100;
// Intersection tolerance // Intersection tolerance
intersectionPlanarTol 0.2; intersectionPlanarTol 0.2;

View file

@ -81,10 +81,11 @@ protected:
//- Face restriction addressing array. //- Face restriction addressing array.
// Maps from the finer to the coarser level. // Maps from the finer to the coarser level.
// Positive indices map the finer faces which form part of the boundary // Positive indices map the finer faces which form part of the
// of the coarser cells to the corresponding coarser cell face. // boundary of the coarser cells to the corresponding coarser
// cell face.
// Negative indices map the finer faces which are internal to the // Negative indices map the finer faces which are internal to the
// coarser cells to minus the corresponding coarser cell index minus 1. // coarser cells to minus the corresponding coarser cell index minus 1
PtrList<labelList> faceRestrictAddressing_; PtrList<labelList> faceRestrictAddressing_;
//- Hierarchy of mesh addressing //- Hierarchy of mesh addressing

View file

@ -73,7 +73,7 @@ class pointMesh
public: public:
// Declare name of the class and its debug switch // Declare name of the class and its debug switch
ClassName("pointMesh"); TypeName("pointMesh");
typedef pointMesh Mesh; typedef pointMesh Mesh;
typedef pointBoundaryMesh BoundaryMesh; typedef pointBoundaryMesh BoundaryMesh;

View file

@ -1226,7 +1226,6 @@ void Foam::polyMesh::setOldPoints
oldPointsPtr_ = new pointField::subField(oldAllPoints(), nPoints()); oldPointsPtr_ = new pointField::subField(oldAllPoints(), nPoints());
curMotionTimeIndex_ = 0; curMotionTimeIndex_ = 0;
primitiveMesh::clearGeom(); primitiveMesh::clearGeom();
} }

View file

@ -28,6 +28,7 @@ License
#include "primitiveMesh.H" #include "primitiveMesh.H"
#include "globalMeshData.H" #include "globalMeshData.H"
#include "demandDrivenData.H" #include "demandDrivenData.H"
#include "meshObjectBase.H"
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
@ -90,6 +91,9 @@ void Foam::polyMesh::clearGeom()
// Reset valid directions (could change with rotation) // Reset valid directions (could change with rotation)
geometricD_ = Vector<label>::zero; geometricD_ = Vector<label>::zero;
solutionD_ = Vector<label>::zero; solutionD_ = Vector<label>::zero;
// Move points all mesh objects. HJ, 13/Oct/2010
meshObjectBase::allMovePoints(*this);
} }

View file

@ -27,6 +27,8 @@ License
#include "polyMesh.H" #include "polyMesh.H"
#include "Time.H" #include "Time.H"
#include "cellIOList.H" #include "cellIOList.H"
#include "meshObjectBase.H"
#include "mapPolyMesh.H"
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
@ -394,6 +396,11 @@ Foam::polyMesh::readUpdateState Foam::polyMesh::readUpdate()
cellZones_.set(czI, newCellZones[czI].clone(cellZones_)); cellZones_.set(czI, newCellZones[czI].clone(cellZones_));
} }
// Instantiate a dummy mapPolyMesh
autoPtr<mapPolyMesh> mapPtr(new mapPolyMesh(*this));
// Execute dummy topo change on all mesh objects
meshObjectBase::allUpdateTopology(*this, mapPtr());
if (boundaryChanged) if (boundaryChanged)
{ {
@ -440,6 +447,9 @@ Foam::polyMesh::readUpdateState Foam::polyMesh::readUpdate()
geometricD_ = Vector<label>::zero; geometricD_ = Vector<label>::zero;
solutionD_ = Vector<label>::zero; solutionD_ = Vector<label>::zero;
// Move points in all mesh objects
meshObjectBase::allMovePoints<polyMesh>(*this);
return polyMesh::POINTS_MOVED; return polyMesh::POINTS_MOVED;
} }
else else

View file

@ -577,7 +577,7 @@ Foam::label Foam::directTopoChange::getCellOrder
// Now we have new-to-old in newOrder. // Now we have new-to-old in newOrder.
newOrder.setSize(cellInOrder); newOrder.setSize(cellInOrder);
// Invert to get old-to-new. Make sure removed (i.e. unmapped) cells are -1. // Invert to get old-to-new. Make sure removed (i.e. unmapped) cells are -1
oldToNew = invert(cellCellAddressing.size(), newOrder); oldToNew = invert(cellCellAddressing.size(), newOrder);
return cellInOrder; return cellInOrder;
@ -1487,7 +1487,8 @@ void Foam::directTopoChange::resetZones
{ {
if (newZoneAddr[i] < pointMap_.size()) if (newZoneAddr[i] < pointMap_.size())
{ {
curPzRnb[i] = oldZone.whichPoint(pointMap_[newZoneAddr[i]]); curPzRnb[i] =
oldZone.whichPoint(pointMap_[newZoneAddr[i]]);
} }
else else
{ {
@ -1719,13 +1720,13 @@ void Foam::directTopoChange::calcFaceZonePointMap
curFzPointRnb.setSize(newZoneMeshPoints.size()); curFzPointRnb.setSize(newZoneMeshPoints.size());
if( zoneI < oldFaceZoneMeshPointMaps.size() ) if( zoneI < oldFaceZoneMeshPointMaps.size() )
{ {
//HR 22.11.09: cannot take reference to zero element of //HR 22.11.09: cannot take reference to zero element of
// oldFaceZoneMeshPointMaps. It may be empty. Hence this // oldFaceZoneMeshPointMaps. It may be empty. Hence this
// if-statement needs to move out of the loop // if-statement needs to move out of the loop
const Map<label>& oldZoneMeshPointMap = const Map<label>& oldZoneMeshPointMap =
oldFaceZoneMeshPointMaps[zoneI]; oldFaceZoneMeshPointMaps[zoneI];
forAll (newZoneMeshPoints, pointI) forAll (newZoneMeshPoints, pointI)
{ {
@ -2034,7 +2035,8 @@ void Foam::directTopoChange::compactAndReorder
{ {
//HR 22.11.09: Fixes error when faceZone is empty //HR 22.11.09: Fixes error when faceZone is empty
label maxFaceIndex = -1; label maxFaceIndex = -1;
if ( mesh.faceZones()[zoneI].size() > 0 )
if ( mesh.faceZones()[zoneI].size() > 0 )
{ {
maxFaceIndex = max(mesh.faceZones()[zoneI]); maxFaceIndex = max(mesh.faceZones()[zoneI]);
} }
@ -2211,8 +2213,8 @@ void Foam::directTopoChange::addMesh
const pointZoneMesh& pointZones = mesh.pointZones(); const pointZoneMesh& pointZones = mesh.pointZones();
// Resize // Resize
points_.setSize(points_.size() + points.size()); points_.setCapacity(points_.size() + points.size());
pointMap_.setSize(pointMap_.size() + points.size()); pointMap_.setCapacity(pointMap_.size() + points.size());
pointZone_.resize(pointZone_.size() + points.size()/100); pointZone_.resize(pointZone_.size() + points.size()/100);
// Precalc offset zones // Precalc offset zones
@ -2251,11 +2253,11 @@ void Foam::directTopoChange::addMesh
// always equals nCells // always equals nCells
label nAllCells = mesh.nCells(); label nAllCells = mesh.nCells();
cellMap_.setSize(cellMap_.size() + nAllCells); cellMap_.setCapacity(cellMap_.size() + nAllCells);
cellFromPoint_.resize(cellFromPoint_.size() + nAllCells/100); cellFromPoint_.resize(cellFromPoint_.size() + nAllCells/100);
cellFromEdge_.resize(cellFromEdge_.size() + nAllCells/100); cellFromEdge_.resize(cellFromEdge_.size() + nAllCells/100);
cellFromFace_.resize(cellFromFace_.size() + nAllCells/100); cellFromFace_.resize(cellFromFace_.size() + nAllCells/100);
cellZone_.setSize(cellZone_.size() + nAllCells); cellZone_.setCapacity(cellZone_.size() + nAllCells);
// Precalc offset zones // Precalc offset zones
@ -2311,11 +2313,11 @@ void Foam::directTopoChange::addMesh
// Resize // Resize
label nAllFaces = mesh.faces().size(); label nAllFaces = mesh.faces().size();
faces_.setSize(faces_.size() + nAllFaces); faces_.setCapacity(faces_.size() + nAllFaces);
region_.setSize(region_.size() + nAllFaces); region_.setCapacity(region_.size() + nAllFaces);
faceOwner_.setSize(faceOwner_.size() + nAllFaces); faceOwner_.setCapacity(faceOwner_.size() + nAllFaces);
faceNeighbour_.setSize(faceNeighbour_.size() + nAllFaces); faceNeighbour_.setCapacity(faceNeighbour_.size() + nAllFaces);
faceMap_.setSize(faceMap_.size() + nAllFaces); faceMap_.setCapacity(faceMap_.size() + nAllFaces);
faceFromPoint_.resize(faceFromPoint_.size() + nAllFaces/100); faceFromPoint_.resize(faceFromPoint_.size() + nAllFaces/100);
faceFromEdge_.resize(faceFromEdge_.size() + nAllFaces/100); faceFromEdge_.resize(faceFromEdge_.size() + nAllFaces/100);
flipFaceFlux_.resize(flipFaceFlux_.size() + nAllFaces/100); flipFaceFlux_.resize(flipFaceFlux_.size() + nAllFaces/100);

View file

@ -47,7 +47,7 @@ namespace Foam
{ {
/*---------------------------------------------------------------------------*\ /*---------------------------------------------------------------------------*\
Class repatchPolyTopoChanger Declaration Class repatchPolyTopoChanger Declaration
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
class repatchPolyTopoChanger class repatchPolyTopoChanger

View file

@ -59,6 +59,7 @@ void boundMinMax
const dimensionedScalar& vsf1 const dimensionedScalar& vsf1
); );
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam } // End namespace Foam

View file

@ -37,7 +37,6 @@ License
#include "MapFvFields.H" #include "MapFvFields.H"
#include "fvMeshMapper.H" #include "fvMeshMapper.H"
#include "mapClouds.H" #include "mapClouds.H"
#include "meshObjectBase.H"
#include "volPointInterpolation.H" #include "volPointInterpolation.H"
#include "extendedLeastSquaresVectors.H" #include "extendedLeastSquaresVectors.H"
@ -78,9 +77,8 @@ void Foam::fvMesh::clearGeom()
// needs to be saved. // needs to be saved.
// Geometry dependent object updated through call-back // Geometry dependent object updated through call-back
// "Reserve" optional delete. Reconsider // and handled by polyMesh
// HJ, 29/Aug/2010 // HJ, 29/Aug/2010
// meshObjectBase::allDelete(*this);
} }
@ -89,9 +87,8 @@ void Foam::fvMesh::clearAddressing()
deleteDemandDrivenData(lduPtr_); deleteDemandDrivenData(lduPtr_);
// Geometry dependent object updated through call-back // Geometry dependent object updated through call-back
// "Reserve" optional delete. Reconsider // and handled by polyMesh
// HJ, 29/Aug/2010 // HJ, 29/Aug/2010
// meshObjectBase::allDelete(*this);
} }
@ -528,9 +525,6 @@ void Foam::fvMesh::syncUpdateMesh()
// This is a temporary solution // This is a temporary solution
surfaceInterpolation::movePoints(); surfaceInterpolation::movePoints();
// Instantiate a dummy mapPolyMesh
autoPtr<mapPolyMesh> mapPtr(new mapPolyMesh(*this));
// Function object update moved to polyMesh // Function object update moved to polyMesh
// HJ, 29/Aug/2010 // HJ, 29/Aug/2010
} }

View file

@ -81,7 +81,7 @@ class volPointInterpolation
public: public:
// Declare name of the class and its debug switch // Declare name of the class and its debug switch
ClassName("volPointInterpolation"); TypeName("volPointInterpolation");
// Constructors // Constructors

View file

@ -74,7 +74,7 @@ Foam::bicgSolver::bicgSolver
coupleBouCoeffs, coupleBouCoeffs,
coupleIntCoeffs, coupleIntCoeffs,
interfaces, interfaces,
dict.subDict("preconditioner") dict
) )
) )
{} {}

View file

@ -78,7 +78,7 @@ Foam::bicgStabSolver::bicgStabSolver
coupleBouCoeffs, coupleBouCoeffs,
coupleIntCoeffs, coupleIntCoeffs,
interfaces, interfaces,
dict.subDict("preconditioner") dict
) )
) )
{} {}

View file

@ -74,7 +74,7 @@ Foam::cgSolver::cgSolver
coupleBouCoeffs, coupleBouCoeffs,
coupleIntCoeffs, coupleIntCoeffs,
interfaces, interfaces,
dict.subDict("preconditioner") dict
) )
) )
{} {}

View file

@ -146,7 +146,7 @@ Foam::deflationSolver::deflationSolver
coupleBouCoeffs, coupleBouCoeffs,
coupleIntCoeffs, coupleIntCoeffs,
interfaces, interfaces,
dict.subDict("preconditioner") dict
) )
), ),
rpmOrder_(readLabel(dict.lookup("rpmOrder"))), rpmOrder_(readLabel(dict.lookup("rpmOrder"))),

View file

@ -109,7 +109,7 @@ Foam::gmresSolver::gmresSolver
coupleBouCoeffs, coupleBouCoeffs,
coupleIntCoeffs, coupleIntCoeffs,
interfaces, interfaces,
dict.subDict("preconditioner") dict
) )
), ),
nDirs_(readLabel(dict.lookup("nDirections"))) nDirs_(readLabel(dict.lookup("nDirections")))

View file

@ -114,10 +114,12 @@ private:
// Private member functions // Private member functions
//- Check given temperature is within the range of the fitted coeffs //- Check given temperature is within the range of the fitted coeffs
inline void checkT(const scalar T) const; // Note: bounding T within range. HJ, 12/Oct/2010
inline void checkT(scalar& T) const;
//- Return the coefficients corresponding to the given temperature //- Return the coefficients corresponding to the given temperature
inline const coeffArray& coeffs(const scalar T) const; // Note: bounding T within range. HJ, 12/Oct/2010
inline const coeffArray& coeffs(scalar& T) const;
public: public:
@ -145,19 +147,23 @@ public:
// Member Functions // Member Functions
//- Heat capacity at constant pressure [J/(kmol K)] //- Heat capacity at constant pressure [J/(kmol K)]
inline scalar cp(const scalar T) const; // Note: bounding T within range. HJ, 12/Oct/2010
inline scalar cp(scalar T) const;
//- Enthalpy [J/kmol] //- Enthalpy [J/kmol]
inline scalar h(const scalar T) const; // Note: bounding T within range. HJ, 12/Oct/2010
inline scalar h(scalar T) const;
//- Sensible enthalpy [J/kmol] //- Sensible enthalpy [J/kmol]
inline scalar hs(const scalar T) const; // Note: bounding T within range. HJ, 12/Oct/2010
inline scalar hs(scalar T) const;
//- Chemical enthalpy [J/kmol] //- Chemical enthalpy [J/kmol]
inline scalar hc() const; inline scalar hc() const;
//- Entropy [J/(kmol K)] //- Entropy [J/(kmol K)]
inline scalar s(const scalar T) const; // Note: bounding T within range. HJ, 12/Oct/2010
inline scalar s(scalar T) const;
// Member operators // Member operators

View file

@ -54,17 +54,21 @@ inline Foam::janafThermo<equationOfState>::janafThermo
template<class equationOfState> template<class equationOfState>
inline void Foam::janafThermo<equationOfState>::checkT(const scalar T) const inline void Foam::janafThermo<equationOfState>::checkT(scalar& T) const
{ {
if (T < Tlow_ || T > Thigh_) if (T < Tlow_ || T > Thigh_)
{ {
FatalErrorIn // Improvements: graceful exit with recovery. HJ, 11/Oct/2010
InfoIn
( (
"janafThermo<equationOfState>::checkT(const scalar T) const" "janafThermo<equationOfState>::checkT(scalar& T) const"
) << "attempt to use janafThermo<equationOfState>" ) << "attempt to use janafThermo<equationOfState>"
" out of temperature range " " out of temperature range "
<< Tlow_ << " -> " << Thigh_ << "; T = " << T << Tlow_ << " -> " << Thigh_ << "; T = " << T
<< abort(FatalError); << endl;
// Bracket T to avoid out-of-range error
T = Foam::min(Thigh_, Foam::max(T, Tlow_));
} }
} }
@ -73,9 +77,11 @@ template<class equationOfState>
inline const typename Foam::janafThermo<equationOfState>::coeffArray& inline const typename Foam::janafThermo<equationOfState>::coeffArray&
Foam::janafThermo<equationOfState>::coeffs Foam::janafThermo<equationOfState>::coeffs
( (
const scalar T scalar& T
) const ) const
{ {
// Note: T will be bounded by checkT in coeffs(T). No longer const
// HJ, 12/Oct/2010
checkT(T); checkT(T);
if (T < Tcommon_) if (T < Tcommon_)
@ -103,7 +109,7 @@ inline Foam::janafThermo<equationOfState>::janafThermo
Thigh_(jt.Thigh_), Thigh_(jt.Thigh_),
Tcommon_(jt.Tcommon_) Tcommon_(jt.Tcommon_)
{ {
for (register label coefLabel=0; coefLabel<nCoeffs_; coefLabel++) for (register label coefLabel = 0; coefLabel < nCoeffs_; coefLabel++)
{ {
highCpCoeffs_[coefLabel] = jt.highCpCoeffs_[coefLabel]; highCpCoeffs_[coefLabel] = jt.highCpCoeffs_[coefLabel];
lowCpCoeffs_[coefLabel] = jt.lowCpCoeffs_[coefLabel]; lowCpCoeffs_[coefLabel] = jt.lowCpCoeffs_[coefLabel];
@ -116,7 +122,7 @@ inline Foam::janafThermo<equationOfState>::janafThermo
template<class equationOfState> template<class equationOfState>
inline Foam::scalar Foam::janafThermo<equationOfState>::cp inline Foam::scalar Foam::janafThermo<equationOfState>::cp
( (
const scalar T scalar T
) const ) const
{ {
const coeffArray& a = coeffs(T); const coeffArray& a = coeffs(T);
@ -127,7 +133,7 @@ inline Foam::scalar Foam::janafThermo<equationOfState>::cp
template<class equationOfState> template<class equationOfState>
inline Foam::scalar Foam::janafThermo<equationOfState>::h inline Foam::scalar Foam::janafThermo<equationOfState>::h
( (
const scalar T scalar T
) const ) const
{ {
const coeffArray& a = coeffs(T); const coeffArray& a = coeffs(T);
@ -142,7 +148,7 @@ inline Foam::scalar Foam::janafThermo<equationOfState>::h
template<class equationOfState> template<class equationOfState>
inline Foam::scalar Foam::janafThermo<equationOfState>::hs inline Foam::scalar Foam::janafThermo<equationOfState>::hs
( (
const scalar T scalar T
) const ) const
{ {
return h(T) - hc(); return h(T) - hc();
@ -167,9 +173,12 @@ inline Foam::scalar Foam::janafThermo<equationOfState>::hc() const
template<class equationOfState> template<class equationOfState>
inline Foam::scalar Foam::janafThermo<equationOfState>::s inline Foam::scalar Foam::janafThermo<equationOfState>::s
( (
const scalar T scalar T
) const ) const
{ {
// Note: T will be bounded by checkT in coeffs(T). No longer const
// HJ, 12/Oct/2010
const coeffArray& a = coeffs(T); const coeffArray& a = coeffs(T);
return return
this->RR* this->RR*

View file

@ -41,6 +41,13 @@ const Foam::scalar Foam::specieThermo<thermo>::tol_
); );
template<class thermo>
const Foam::scalar Foam::specieThermo<thermo>::TJump_
(
debug::tolerances("speciesThermoTJump", 20)
);
template<class thermo> template<class thermo>
const int Foam::specieThermo<thermo>::maxIter_ const int Foam::specieThermo<thermo>::maxIter_
( (

View file

@ -98,13 +98,16 @@ class specieThermo
//- Convergence tolerance of energy -> temperature inversion functions //- Convergence tolerance of energy -> temperature inversion functions
static const scalar tol_; static const scalar tol_;
//- Max temperature jump of energy -> temperature inversion functions
static const scalar TJump_;
//- Max number of iterations in energy->temperature inversion functions //- Max number of iterations in energy->temperature inversion functions
static const int maxIter_; static const int maxIter_;
// Private member functions // Private member functions
//- return the temperature corresponding to the value of the //- Return the temperature corresponding to the value of the
// thermodynamic property f, given the function f = F(T) and dF(T)/dT // thermodynamic property f, given the function f = F(T) and dF(T)/dT
inline scalar T inline scalar T
( (
@ -131,7 +134,7 @@ public:
// Member Functions // Member Functions
// Fundamaental properties // Fundamental properties
// (These functions must be provided in derived types) // (These functions must be provided in derived types)
// Heat capacity at constant pressure [J/(kmol K)] // Heat capacity at constant pressure [J/(kmol K)]

View file

@ -50,23 +50,33 @@ inline Foam::scalar Foam::specieThermo<thermo>::T
scalar Test = T0; scalar Test = T0;
scalar Tnew = T0; scalar Tnew = T0;
scalar Ttol = T0*tol_; scalar Ttol = T0*tol_;
int iter = 0; int iter = 0;
do do
{ {
// Limit the temperature jump in a single corrector to TJump_
// HJ, 12/Oct/2010
Test = Tnew; Test = Tnew;
Tnew = Test - ((this->*F)(Test) - f)/(this->*dFdT)(Test); Tnew = Test
- Foam::min(((this->*F)(Test) - f)/(this->*dFdT)(Test), TJump_);
if (iter++ > maxIter_) if (iter++ > maxIter_)
{ {
FatalErrorIn // Improvements: graceful exit with recovery. HJ, 11/Oct/2010
InfoIn
( (
"specieThermo<thermo>::T(scalar f, scalar T0, " "specieThermo<thermo>::T(scalar f, scalar T0, "
"scalar (specieThermo<thermo>::*F)(const scalar) const, " "scalar (specieThermo<thermo>::*F)(const scalar) const, "
"scalar (specieThermo<thermo>::*dFdT)(const scalar) const" "scalar (specieThermo<thermo>::*dFdT)(const scalar) const"
") const" ") const"
) << "Maximum number of iterations exceeded" ) << "Maximum number of iterations exceeded. Rescue by HJ"
<< abort(FatalError); << endl;
// Use value where dFdT is calculated using T0. HJ, 11/Oct/2010
Tnew = f/(this->*dFdT)(T0);
return Tnew;
} }
} while (mag(Tnew - Test) > Ttol); } while (mag(Tnew - Test) > Ttol);

View file

@ -1,14 +0,0 @@
#!/bin/sh
currDir=`pwd`
application=`basename $currDir`
cases="springDamper sixDOFmotion"
tutorialPath=`dirname $0`/..
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
for case in $cases
do
cleanCase $case
rm $case/*.dat
done

View file

@ -1,13 +0,0 @@
#!/bin/sh
currDir=`pwd`
application=`basename $currDir`
cases="springDamper sixDOFmotion"
tutorialPath=`dirname $0`/..
. $WM_PROJECT_DIR/bin/tools/RunFunctions
for case in $cases
do
(cd $case; runApplication $application)
done

View file

@ -0,0 +1,7 @@
#!/bin/sh
# Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase
rm -f *.dat

View file

@ -0,0 +1,7 @@
#!/bin/sh
# Source tutorial run functions
. $WM_PROJECT_DIR/bin/tools/RunFunctions
application="sixDOFSolver"
runApplication $application

View file

@ -0,0 +1,7 @@
#!/bin/sh
# Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase
rm -f *.dat

View file

@ -0,0 +1,7 @@
#!/bin/sh
# Source tutorial run functions
. $WM_PROJECT_DIR/bin/tools/RunFunctions
application="sixDOFSolver"
runApplication $application

View file

@ -1,52 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5-dev |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class polyBoundaryMesh;
location "constant/polyMesh";
object boundary;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
5
(
impellerWall
{
type wall;
nFaces 68;
startFace 1040;
}
baffleWall
{
type wall;
nFaces 84;
startFace 1108;
}
insideSlider
{
type patch;
nFaces 36;
startFace 1192;
}
outsideSlider
{
type patch;
nFaces 36;
startFace 1228;
}
defaultFaces
{
type empty;
nFaces 1152;
startFace 1264;
}
)
// ************************************************************************* //

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 fvSolution; object fvSolution;
} }
@ -24,12 +18,10 @@ FoamFile
solvers solvers
{ {
pcorr PCG pcorr
{ {
preconditioner solver BiCGStab;
{ preconditioner DILU;
type DIC;
}
minIter 0; minIter 0;
maxIter 1000; maxIter 1000;
@ -37,59 +29,41 @@ solvers
relTol 0; relTol 0;
}; };
p PCG p
{ {
preconditioner solver CG;
{ preconditioner Cholesky;
type DIC;
}
minIter 0; minIter 0;
maxIter 1000; maxIter 1000;
tolerance 1e-06; tolerance 1e-07;
relTol 0.05; relTol 0.0;
}; };
pFinal PCG pFinal
{ {
preconditioner solver CG;
{ preconditioner Cholesky;
type DIC;
}
minIter 0; minIter 0;
maxIter 1000; maxIter 1000;
tolerance 1e-06; tolerance 1e-07;
relTol 0; relTol 0;
}; };
U PBiCG U
{ {
preconditioner solver BiCGStab;
{ preconditioner DILU;
type DILU;
}
minIter 0; minIter 0;
maxIter 1000; maxIter 1000;
tolerance 1e-05; tolerance 1e-07;
relTol 0;
};
cellMotionUx PCG
{
preconditioner
{
type DIC;
}
minIter 0;
maxIter 1000;
tolerance 1e-08;
relTol 0; relTol 0;
}; };
} }
PISO PISO
{ {
nCorrectors 4; nCorrectors 4;

View file

@ -5,5 +5,5 @@
cleanCase cleanCase
rm -rf VTK rm -rf VTK
rm constant/polyMesh/boundary rm -f constant/polyMesh/boundary
rm -rf constant/polyMesh/sets rm -rf constant/polyMesh/sets

View file

@ -62,7 +62,7 @@ functions
phi phi; phi phi;
// Where to load it from (if not already in solver) // Where to load it from (if not already in solver)
functionObjectLibs ("libsampling.so"); functionObjectLibs ("libcheckFunctionObjects.so");
} }
); );

View file

@ -18,12 +18,10 @@ FoamFile
solvers solvers
{ {
pcorr BiCGStab pcorr
{ {
preconditioner solver BiCGStab;
{ preconditioner DILU;
type DILU;
}
minIter 0; minIter 0;
maxIter 1000; maxIter 1000;
@ -31,12 +29,10 @@ solvers
relTol 0; relTol 0;
}; };
p BiCGStab p
{ {
preconditioner solver CG;
{ preconditioner Cholesky;
type DILU;
}
minIter 0; minIter 0;
maxIter 1000; maxIter 1000;
@ -44,12 +40,10 @@ solvers
relTol 0.0; relTol 0.0;
}; };
pFinal BiCGStab pFinal
{ {
preconditioner solver CG;
{ preconditioner Cholesky;
type DILU;
}
minIter 0; minIter 0;
maxIter 1000; maxIter 1000;
@ -57,12 +51,10 @@ solvers
relTol 0; relTol 0;
}; };
U BiCGStab U
{ {
preconditioner solver BiCGStab;
{ preconditioner DILU;
type DILU;
}
minIter 0; minIter 0;
maxIter 1000; maxIter 1000;
@ -71,6 +63,7 @@ solvers
}; };
} }
PISO PISO
{ {
nCorrectors 4; nCorrectors 4;

View file

@ -25,7 +25,7 @@ License
Author Author
Frank Bos, TU Delft. All rights reserved. Frank Bos, TU Delft. All rights reserved.
\*----------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "RBFMotionFunctionObject.H" #include "RBFMotionFunctionObject.H"
#include "addToRunTimeSelectionTable.H" #include "addToRunTimeSelectionTable.H"
@ -56,15 +56,14 @@ Foam::RBFMotionFunctionObject::RBFMotionFunctionObject
const dictionary& dict const dictionary& dict
) )
: :
functionObject(), functionObject(name),
name_(name),
time_(t), time_(t),
regionName_(polyMesh::defaultRegion), regionName_(polyMesh::defaultRegion),
rotationAmplitude_(readScalar(dict.lookup("rotationAmplitude"))), rotationAmplitude_(readScalar(dict.lookup("rotationAmplitude"))),
rotationFrequency_(readScalar(dict.lookup("rotationFrequency"))), rotationFrequency_(readScalar(dict.lookup("rotationFrequency"))),
translationAmplitude_(dict.lookup("translationAmplitude")), translationAmplitude_(dict.lookup("translationAmplitude")),
translationFrequency_(dict.lookup("translationFrequency")), translationFrequency_(dict.lookup("translationFrequency")),
initialRotationOrigin_(dict.lookup("initialRotationOrigin")), initialRotationOrigin_(dict.lookup("initialRotationOrigin")),
statPoints_() statPoints_()
{ {
@ -86,7 +85,7 @@ bool Foam::RBFMotionFunctionObject::start()
mesh.lookupObject<RBFMotionSolver>("dynamicMeshDict") mesh.lookupObject<RBFMotionSolver>("dynamicMeshDict")
); );
statPoints_ = ms.movingPoints(); statPoints_ = ms.movingPoints();
return true; return true;
} }

View file

@ -58,20 +58,17 @@ class RBFMotionFunctionObject
{ {
// Private data // Private data
//- Name
const word name_;
//- Reference to main object registry //- Reference to main object registry
const Time& time_; const Time& time_;
//- Region name //- Region name
word regionName_; word regionName_;
scalar rotationAmplitude_; scalar rotationAmplitude_;
scalar rotationFrequency_; scalar rotationFrequency_;
vector translationAmplitude_; vector translationAmplitude_;
vector translationFrequency_; vector translationFrequency_;
vector initialRotationOrigin_; vector initialRotationOrigin_;
//- Stationary points //- Stationary points
pointField statPoints_; pointField statPoints_;
@ -114,7 +111,7 @@ public:
//- Read and set the function object if its data has changed //- Read and set the function object if its data has changed
virtual bool read(const dictionary& dict); virtual bool read(const dictionary& dict);
//- Update for changes of mesh //- Update for changes of mesh
virtual void movePoints(const pointField&) virtual void movePoints(const pointField&)
{} {}
}; };

View file

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

View file

@ -58,10 +58,10 @@ maxDeltaT 0.25;
functions functions
( (
RBFMotion RBFMotion
{ {
type RBFMotion; type RBFMotion;
functionObjectLibs ("libRBFMotionFunction.so"); functionObjectLibs ("libRBFMotionFunction.so");
rotationAmplitude 0.9; rotationAmplitude 0.9;
rotationFrequency 0.25; rotationFrequency 0.25;
translationAmplitude (0.0 3.0 0.0); translationAmplitude (0.0 3.0 0.0);

View file

@ -18,32 +18,29 @@ FoamFile
solvers solvers
{ {
p CG p
{ {
preconditioner solver CG;
{ preconditioner DIC;
type DIC;
}
tolerance 1e-06; tolerance 1e-06;
relTol 0; relTol 0;
}; };
pFinal CG pFinal
{ {
preconditioner solver CG;
{ preconditioner DIC;
type DIC;
}
tolerance 1e-06; tolerance 1e-06;
relTol 0; relTol 0;
}; };
U BiCGStab U
{ {
preconditioner solver BiCGStab;
{ preconditioner DILU;
type DILU;
}
tolerance 1e-7; tolerance 1e-7;
relTol 0; relTol 0;
}; };

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.5 | | \\ / O peration | Version: 1.6-ext |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: www.extend-project.de |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
FoamFile FoamFile
@ -10,6 +10,7 @@ FoamFile
version 2.0; version 2.0;
format binary; format binary;
class polyBoundaryMesh; class polyBoundaryMesh;
location "constant/polyMesh";
object boundary; object boundary;
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View file

@ -16,29 +16,33 @@ FoamFile
solvers solvers
{ {
pcorr PCG pcorr
{ {
solver PCG;
preconditioner DIC; preconditioner DIC;
tolerance 1e-02; tolerance 1e-02;
relTol 0; relTol 0;
}; };
p PCG p
{ {
solver PCG;
preconditioner DIC; preconditioner DIC;
tolerance 1e-06; tolerance 1e-06;
relTol 0.05; relTol 0.05;
}; };
pFinal PCG pFinal
{ {
solver PCG;
preconditioner DIC; preconditioner DIC;
tolerance 1e-06; tolerance 1e-06;
relTol 0; relTol 0;
}; };
U PBiCG U
{ {
solver PBiCG;
preconditioner DILU; preconditioner DILU;
tolerance 1e-05; tolerance 1e-05;
relTol 0; relTol 0;

View file

@ -1,22 +0,0 @@
/*--------------------------------*- 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 tetFemSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
motionU ICCG 1e-06 0;
}
// ************************************************************************* //

View file

@ -0,0 +1,8 @@
#!/bin/sh
# Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase
rm -f 0/motionGamma
( cd setMotionMovingCone ; wclean )

View file

@ -0,0 +1,11 @@
#!/bin/sh
# Source tutorial run functions
. $WM_PROJECT_DIR/bin/tools/RunFunctions
# Get application name from directory
application="icoDyMFoam"
compileApplication setMotionMovingCone
runApplication setMotionMovingCone
runApplication blockMesh
runApplication $application

View file

@ -1,84 +1,70 @@
/*---------------------------------------------------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM Extend Project: Open source CFD |
| \\ / O peration | Version: 1.4.1 | | \\ / O peration | Version: 1.6-ext |
| \\ / A nd | Web: http://www.openfoam.org | | \\ / A nd | Web: www.extend-project.de |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
FoamFile FoamFile
{ {
version 2.0; version 2.0;
format ascii; format ascii;
class polyBoundaryMesh;
root "/home/hjasak/OpenFOAM/OpenFOAM-1.4.1/tutorials/icoDyMFoam"; location "constant/polyMesh";
case "movingConeMotion"; object boundary;
instance "constant";
local "polyMesh";
class polyBoundaryMesh;
object boundary;
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
8 8
( (
movingWall movingWall
{ {
type wall; type wall;
nFaces 85; nFaces 85;
startFace 3665; startFace 3665;
} }
farFieldMoving
farFieldMoving {
{ type patch;
type patch; nFaces 50;
nFaces 50; startFace 3750;
startFace 3750; }
} fixedWall
{
fixedWall type wall;
{ nFaces 35;
type wall; startFace 3800;
nFaces 35; }
startFace 3800; axis
} {
type empty;
axis nFaces 0;
{ startFace 3835;
type empty; }
nFaces 0; left
startFace 3835; {
} type patch;
nFaces 30;
left startFace 3835;
{ }
type patch; farField
nFaces 30; {
startFace 3835; type patch;
} nFaces 35;
startFace 3865;
farField }
{ back
type patch; {
nFaces 35; type wedge;
startFace 3865; nFaces 1900;
} startFace 3900;
}
back front
{ {
type wedge; type wedge;
nFaces 1900; nFaces 1900;
startFace 3900; startFace 5800;
} }
front
{
type wedge;
nFaces 1900;
startFace 5800;
}
) )
// ************************************************************************* // // ************************************************************************* //

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 fvSolution; object fvSolution;
} }
@ -24,12 +18,10 @@ FoamFile
solvers solvers
{ {
pcorr PCG pcorr
{ {
preconditioner solver PCG;
{ preconditioner DIC;
type DIC;
}
minIter 0; minIter 0;
maxIter 1000; maxIter 1000;
@ -37,12 +29,10 @@ solvers
relTol 0; relTol 0;
}; };
p PCG p
{ {
preconditioner solver PCG;
{ preconditioner DIC;
type DIC;
}
minIter 0; minIter 0;
maxIter 1000; maxIter 1000;
@ -50,12 +40,10 @@ solvers
relTol 0.05; relTol 0.05;
}; };
pFinal PCG pFinal
{ {
preconditioner solver PCG;
{ preconditioner DIC;
type DIC;
}
minIter 0; minIter 0;
maxIter 1000; maxIter 1000;
@ -63,33 +51,19 @@ solvers
relTol 0; relTol 0;
}; };
U PBiCG U
{ {
preconditioner solver PBiCG;
{ preconditioner DILU;
type DILU;
}
minIter 0; minIter 0;
maxIter 1000; maxIter 1000;
tolerance 1e-05; tolerance 1e-05;
relTol 0; relTol 0;
}; };
cellMotionUx PCG
{
preconditioner
{
type DIC;
}
minIter 0;
maxIter 1000;
tolerance 1e-08;
relTol 0;
};
} }
PISO PISO
{ {
nCorrectors 2; nCorrectors 2;

View file

@ -18,8 +18,9 @@ FoamFile
solvers solvers
{ {
motionU amgSolver motionU
{ {
solver amgSolver;
cycle W-cycle; cycle W-cycle;
policy AAMG; policy AAMG;
nPreSweeps 0; nPreSweeps 0;

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.5-dev | | \\ / O peration | Version: 1.6-ext |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: www.extend-project.de |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
FoamFile FoamFile

View file

@ -18,12 +18,10 @@ FoamFile
solvers solvers
{ {
pcorr PCG pcorr
{ {
preconditioner solver PCG;
{ preconditioner DIC;
type DIC;
}
minIter 0; minIter 0;
maxIter 1000; maxIter 1000;
@ -31,12 +29,10 @@ solvers
relTol 0; relTol 0;
}; };
p PCG p
{ {
preconditioner solver PCG;
{ preconditioner DIC;
type DIC;
}
minIter 0; minIter 0;
maxIter 1000; maxIter 1000;
@ -44,12 +40,10 @@ solvers
relTol 0.0; relTol 0.0;
}; };
pFinal PCG pFinal
{ {
preconditioner solver PCG;
{ preconditioner DIC;
type DIC;
}
minIter 0; minIter 0;
maxIter 1000; maxIter 1000;
@ -57,12 +51,10 @@ solvers
relTol 0; relTol 0;
}; };
U PBiCG U
{ {
preconditioner solver PBiCG;
{ preconditioner DILU;
type DILU;
}
minIter 0; minIter 0;
maxIter 1000; maxIter 1000;

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.5 | | \\ / O peration | Version: 1.6-ext |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: www.extend-project.de |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
FoamFile FoamFile
@ -10,6 +10,7 @@ FoamFile
version 2.0; version 2.0;
format ascii; format ascii;
class polyBoundaryMesh; class polyBoundaryMesh;
location "constant/polyMesh";
object boundary; object boundary;
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

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.5 | | \\ / O peration | Version: 1.6-ext |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: www.extend-project.de |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
FoamFile FoamFile
@ -10,6 +10,7 @@ FoamFile
version 2.0; version 2.0;
format ascii; format ascii;
class polyBoundaryMesh; class polyBoundaryMesh;
location "constant/polyMesh";
object boundary; object boundary;
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

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.5 | | \\ / O peration | Version: 1.6-ext |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: www.extend-project.de |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
FoamFile FoamFile
@ -10,6 +10,7 @@ FoamFile
version 2.0; version 2.0;
format ascii; format ascii;
class polyBoundaryMesh; class polyBoundaryMesh;
location "constant/polyMesh";
object boundary; object boundary;
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

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.5 | | \\ / O peration | Version: 1.6-ext |
| \\ / A nd | Web: http://www.OpenFOAM.org | | \\ / A nd | Web: www.extend-project.de |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
FoamFile FoamFile
@ -10,6 +10,7 @@ FoamFile
version 2.0; version 2.0;
format ascii; format ascii;
class polyBoundaryMesh; class polyBoundaryMesh;
location "constant/polyMesh";
object boundary; object boundary;
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View file

@ -3,7 +3,5 @@
# Source tutorial clean functions # Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions . $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase cleanCase
rm -R -f sets rm -rf sets
echo "done!"

View file

@ -3,6 +3,5 @@
# Source tutorial clean functions # Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions . $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase cleanCase
echo "done!"

View file

@ -3,7 +3,6 @@
# Source tutorial clean functions # Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions . $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase cleanCase
rm -R -f sets rm -rf sets
echo "done!"

View file

@ -3,6 +3,5 @@
# Source tutorial clean functions # Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions . $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase cleanCase
echo "done!"

View file

@ -3,7 +3,6 @@
# Source tutorial clean functions # Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions . $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase cleanCase
rm -R -f sets rm -rf sets
echo "done!"

View file

@ -3,6 +3,6 @@
# Source tutorial clean functions # Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions . $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase cleanCase
echo "done!" echo "done!"

View file

@ -3,7 +3,6 @@
# Source tutorial clean functions # Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions . $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase cleanCase
rm -R -f sets rm -R -f sets
echo "done!"

View file

@ -3,6 +3,5 @@
# Source tutorial clean functions # Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions . $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase cleanCase
echo "done!"

View file

@ -3,7 +3,6 @@
# Source tutorial clean functions # Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions . $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase cleanCase
rm -R -f sets rm -Rf sets
echo "done!"

View file

@ -3,6 +3,5 @@
# Source tutorial clean functions # Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions . $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase cleanCase
echo "done!"

View file

@ -3,6 +3,5 @@
# Source tutorial clean functions # Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions . $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase cleanCase
echo "done!"

View file

@ -4,5 +4,4 @@
. $WM_PROJECT_DIR/bin/tools/CleanFunctions . $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase cleanCase
echo "done!"