Merge branch 'master' into testLoop/MartinBeaudoin
This commit is contained in:
commit
bd3d61803e
310 changed files with 4914 additions and 276306 deletions
|
@ -37,7 +37,7 @@
|
||||||
- fvm::laplacian(rUAf, p)
|
- fvm::laplacian(rUAf, p)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (corr == nCorr-1 && nonOrth == nNonOrthCorr)
|
if (corr == nCorr - 1 && nonOrth == nNonOrthCorr)
|
||||||
{
|
{
|
||||||
pEqn.solve(mesh.solver(p.name() + "Final"));
|
pEqn.solve(mesh.solver(p.name() + "Final"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,10 @@ _foamAddLib()
|
||||||
while [ $# -ge 1 ]
|
while [ $# -ge 1 ]
|
||||||
do
|
do
|
||||||
export LD_LIBRARY_PATH=$1:$LD_LIBRARY_PATH
|
export LD_LIBRARY_PATH=$1:$LD_LIBRARY_PATH
|
||||||
|
if [ "$WM_ARCH" == "darwinIntel" ]
|
||||||
|
then
|
||||||
|
export DYLD_LIBRARY_PATH=$1:$DYLD_LIBRARY_PATH
|
||||||
|
fi
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
@ -168,6 +172,14 @@ unset MPI_ARCH_PATH
|
||||||
|
|
||||||
case "$WM_MPLIB" in
|
case "$WM_MPLIB" in
|
||||||
OPENMPI)
|
OPENMPI)
|
||||||
|
if [ "$WM_ARCH" == "darwinIntel" ]
|
||||||
|
then
|
||||||
|
mpi_version=openmpi-system
|
||||||
|
export MPI_HOME=/usr
|
||||||
|
export MPI_ARCH_PATH=/usr
|
||||||
|
|
||||||
|
unset OPAL_PREFIX
|
||||||
|
else
|
||||||
mpi_version=openmpi-1.4.1
|
mpi_version=openmpi-1.4.1
|
||||||
export MPI_HOME=$WM_THIRD_PARTY_DIR/$mpi_version
|
export MPI_HOME=$WM_THIRD_PARTY_DIR/$mpi_version
|
||||||
export MPI_ARCH_PATH=$MPI_HOME/platforms/$WM_OPTIONS
|
export MPI_ARCH_PATH=$MPI_HOME/platforms/$WM_OPTIONS
|
||||||
|
@ -177,6 +189,7 @@ OPENMPI)
|
||||||
|
|
||||||
_foamAddPath $MPI_ARCH_PATH/bin
|
_foamAddPath $MPI_ARCH_PATH/bin
|
||||||
_foamAddLib $MPI_ARCH_PATH/lib
|
_foamAddLib $MPI_ARCH_PATH/lib
|
||||||
|
fi
|
||||||
|
|
||||||
export FOAM_MPI_LIBBIN=$FOAM_LIBBIN/$mpi_version
|
export FOAM_MPI_LIBBIN=$FOAM_LIBBIN/$mpi_version
|
||||||
unset mpi_version
|
unset mpi_version
|
||||||
|
@ -317,6 +330,16 @@ export MPI_BUFFER_SIZE
|
||||||
# export LD_PRELOAD=$FOAM_LIBBIN/libhoard.so:$LD_PRELOAD
|
# export LD_PRELOAD=$FOAM_LIBBIN/libhoard.so:$LD_PRELOAD
|
||||||
#fi
|
#fi
|
||||||
|
|
||||||
|
# HOARD seems to crash Paraview on Mac OS X 10.6
|
||||||
|
#if [ -f $FOAM_LIBBIN/libhoard.dylib ]
|
||||||
|
#then
|
||||||
|
# if [ -z "$DYLD_INSERT_LIBRARIES" ]
|
||||||
|
# then
|
||||||
|
# export DYLD_INSERT_LIBRARIES=$FOAM_LIBBIN/libhoard.dylib
|
||||||
|
# else
|
||||||
|
# export DYLD_INSERT_LIBRARIES=$FOAM_LIBBIN/libhoard.dylib:$DYLD_INSERT_LIBRARIES
|
||||||
|
# fi
|
||||||
|
#fi
|
||||||
|
|
||||||
# cleanup environment:
|
# cleanup environment:
|
||||||
# ~~~~~~~~~~~~~~~~~~~~
|
# ~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
|
@ -27,9 +27,10 @@ Class
|
||||||
|
|
||||||
Author
|
Author
|
||||||
Hrvoje Jasak, Wikki Ltd. All rights reserved
|
Hrvoje Jasak, Wikki Ltd. All rights reserved
|
||||||
|
Fethi Tekin, All rights reserved,
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Mass-conservative face interpolation: typedef for polyPatch to
|
Mass-conservative face interpolation: typedef for stand-alone patch to
|
||||||
stand-alone patch
|
stand-alone patch
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
@ -49,7 +50,7 @@ namespace Foam
|
||||||
{
|
{
|
||||||
typedef GGIInterpolation
|
typedef GGIInterpolation
|
||||||
<
|
<
|
||||||
PrimitivePatch<face, SubList, const pointField&>,
|
PrimitivePatch<face, List, pointField>,
|
||||||
PrimitivePatch<face, List, pointField>
|
PrimitivePatch<face, List, pointField>
|
||||||
> overlapGgiInterpolation;
|
> overlapGgiInterpolation;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ License
|
||||||
|
|
||||||
Author
|
Author
|
||||||
Hrvoje Jasak, Wikki Ltd. All rights reserved.
|
Hrvoje Jasak, Wikki Ltd. All rights reserved.
|
||||||
|
Fethi Tekin, All rights reserved.
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -60,7 +61,8 @@ Foam::overlapGgiPolyPatch::overlapGgiPolyPatch
|
||||||
shadowName_(word::null),
|
shadowName_(word::null),
|
||||||
shadowIndex_(-1),
|
shadowIndex_(-1),
|
||||||
rotationAxis_(vector(0.0, 0.0, 1.0)),
|
rotationAxis_(vector(0.0, 0.0, 1.0)),
|
||||||
angle_(0),
|
nCopies_(0),
|
||||||
|
expandedMasterPtr_(NULL),
|
||||||
expandedSlavePtr_(NULL),
|
expandedSlavePtr_(NULL),
|
||||||
patchToPatchPtr_(NULL),
|
patchToPatchPtr_(NULL),
|
||||||
reconFaceCellCentresPtr_(NULL)
|
reconFaceCellCentresPtr_(NULL)
|
||||||
|
@ -77,14 +79,15 @@ Foam::overlapGgiPolyPatch::overlapGgiPolyPatch
|
||||||
const polyBoundaryMesh& bm,
|
const polyBoundaryMesh& bm,
|
||||||
const word& shadowName,
|
const word& shadowName,
|
||||||
const vector& axis,
|
const vector& axis,
|
||||||
const scalar angle
|
const scalar nCopies
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
coupledPolyPatch(name, size, start, index, bm),
|
coupledPolyPatch(name, size, start, index, bm),
|
||||||
shadowName_(shadowName),
|
shadowName_(shadowName),
|
||||||
shadowIndex_(-1),
|
shadowIndex_(-1),
|
||||||
rotationAxis_(axis),
|
rotationAxis_(axis),
|
||||||
angle_(angle),
|
nCopies_(nCopies),
|
||||||
|
expandedMasterPtr_(NULL),
|
||||||
expandedSlavePtr_(NULL),
|
expandedSlavePtr_(NULL),
|
||||||
patchToPatchPtr_(NULL),
|
patchToPatchPtr_(NULL),
|
||||||
reconFaceCellCentresPtr_(NULL)
|
reconFaceCellCentresPtr_(NULL)
|
||||||
|
@ -104,7 +107,8 @@ Foam::overlapGgiPolyPatch::overlapGgiPolyPatch
|
||||||
shadowName_(dict.lookup("shadowPatch")),
|
shadowName_(dict.lookup("shadowPatch")),
|
||||||
shadowIndex_(-1),
|
shadowIndex_(-1),
|
||||||
rotationAxis_(dict.lookup("rotationAxis")),
|
rotationAxis_(dict.lookup("rotationAxis")),
|
||||||
angle_(readScalar(dict.lookup("angle"))),
|
nCopies_(readScalar(dict.lookup("nCopies"))),
|
||||||
|
expandedMasterPtr_(NULL),
|
||||||
expandedSlavePtr_(NULL),
|
expandedSlavePtr_(NULL),
|
||||||
patchToPatchPtr_(NULL),
|
patchToPatchPtr_(NULL),
|
||||||
reconFaceCellCentresPtr_(NULL)
|
reconFaceCellCentresPtr_(NULL)
|
||||||
|
@ -122,7 +126,8 @@ Foam::overlapGgiPolyPatch::overlapGgiPolyPatch
|
||||||
shadowName_(pp.shadowName_),
|
shadowName_(pp.shadowName_),
|
||||||
shadowIndex_(-1),
|
shadowIndex_(-1),
|
||||||
rotationAxis_(pp.rotationAxis_),
|
rotationAxis_(pp.rotationAxis_),
|
||||||
angle_(pp.angle_),
|
nCopies_(pp.nCopies_),
|
||||||
|
expandedMasterPtr_(NULL),
|
||||||
expandedSlavePtr_(NULL),
|
expandedSlavePtr_(NULL),
|
||||||
patchToPatchPtr_(NULL),
|
patchToPatchPtr_(NULL),
|
||||||
reconFaceCellCentresPtr_(NULL)
|
reconFaceCellCentresPtr_(NULL)
|
||||||
|
@ -143,7 +148,8 @@ Foam::overlapGgiPolyPatch::overlapGgiPolyPatch
|
||||||
shadowName_(pp.shadowName_),
|
shadowName_(pp.shadowName_),
|
||||||
shadowIndex_(-1),
|
shadowIndex_(-1),
|
||||||
rotationAxis_(pp.rotationAxis_),
|
rotationAxis_(pp.rotationAxis_),
|
||||||
angle_(pp.angle_),
|
nCopies_(pp.nCopies_),
|
||||||
|
expandedMasterPtr_(NULL),
|
||||||
expandedSlavePtr_(NULL),
|
expandedSlavePtr_(NULL),
|
||||||
patchToPatchPtr_(NULL),
|
patchToPatchPtr_(NULL),
|
||||||
reconFaceCellCentresPtr_(NULL)
|
reconFaceCellCentresPtr_(NULL)
|
||||||
|
@ -199,7 +205,6 @@ Foam::label Foam::overlapGgiPolyPatch::shadowIndex() const
|
||||||
return shadowIndex_;
|
return shadowIndex_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const Foam::overlapGgiPolyPatch&
|
const Foam::overlapGgiPolyPatch&
|
||||||
Foam::overlapGgiPolyPatch::shadow() const
|
Foam::overlapGgiPolyPatch::shadow() const
|
||||||
{
|
{
|
||||||
|
@ -209,34 +214,21 @@ Foam::overlapGgiPolyPatch::shadow() const
|
||||||
|
|
||||||
Foam::label Foam::overlapGgiPolyPatch::nCopies() const
|
Foam::label Foam::overlapGgiPolyPatch::nCopies() const
|
||||||
{
|
{
|
||||||
// Calculate number of copies to be made for the expanded slave
|
// Read the number of copies to be made from the dictionary for the
|
||||||
// to completely cover the master
|
// expanded slave and expanded master to cover 360 degrees
|
||||||
if (!master())
|
return nCopies_;
|
||||||
{
|
|
||||||
FatalErrorIn("label overlapGgiPolyPatch::nCopies() const")
|
|
||||||
<< "nCopies requested for a slave. Error in master-slave logic"
|
|
||||||
<< abort(FatalError);
|
|
||||||
}
|
|
||||||
|
|
||||||
label ncp = 0;
|
|
||||||
scalar remainder = angle_;
|
|
||||||
|
|
||||||
const scalar slaveAngle = shadow().angle();
|
|
||||||
|
|
||||||
while (remainder > SMALL)
|
|
||||||
{
|
|
||||||
remainder -= slaveAngle;
|
|
||||||
ncp++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ncp;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Foam::overlapGgiPolyPatch::master() const
|
bool Foam::overlapGgiPolyPatch::master() const
|
||||||
{
|
{
|
||||||
|
// The first overlapggi interface is master,second one is slave
|
||||||
|
if (angle() == shadow().angle())
|
||||||
|
{
|
||||||
|
return start() < shadow().start() ;
|
||||||
|
}
|
||||||
|
|
||||||
// Master is the one with the larger angle
|
// Master is the one with the larger angle
|
||||||
return angle() >= shadow().angle();
|
return angle() > shadow().angle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -246,7 +238,9 @@ void Foam::overlapGgiPolyPatch::write(Ostream& os) const
|
||||||
polyPatch::write(os);
|
polyPatch::write(os);
|
||||||
os.writeKeyword("rotationAxis") << rotationAxis_
|
os.writeKeyword("rotationAxis") << rotationAxis_
|
||||||
<< token::END_STATEMENT << nl;
|
<< token::END_STATEMENT << nl;
|
||||||
os.writeKeyword("angle") << angle_
|
os.writeKeyword("nCopies") << nCopies_
|
||||||
|
<< token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("shadowPatch") << shadowName_
|
||||||
<< token::END_STATEMENT << nl;
|
<< token::END_STATEMENT << nl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,17 +26,17 @@ Class
|
||||||
overlapGgiPolyPatch
|
overlapGgiPolyPatch
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Partial overlap generalised grid interface (GGI) patch. Master side
|
Partial overlap generalised grid interface (GGI) patch. Master and slave
|
||||||
remains unchanged and the slave side will be copied as needed
|
sides are copied as much as the given number to complete the 360 degree
|
||||||
to pave the master patch surface.
|
cicumferential surface.
|
||||||
|
|
||||||
This implies that the master patch has got a larger angular pitch than
|
The data interpolation between master and slave patches do not depend on
|
||||||
the slave and that master and slave are aligned at one edge.
|
relative position of them, because of the full circumferential expansion
|
||||||
Master and slave will specify the pitch, based on which the expansion
|
for both sides.
|
||||||
of the master side will be performed and used in interpolation.
|
|
||||||
|
|
||||||
Author
|
Author
|
||||||
Hrvoje Jasak, Wikki Ltd. All rights reserved
|
Hrvoje Jasak, Wikki Ltd. All rights reserved
|
||||||
|
Fethi Tekin, All rights reserved.
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
overlapGgiPolyPatch.C
|
overlapGgiPolyPatch.C
|
||||||
|
@ -78,12 +78,20 @@ class overlapGgiPolyPatch
|
||||||
//- Rotation axis
|
//- Rotation axis
|
||||||
const vector rotationAxis_;
|
const vector rotationAxis_;
|
||||||
|
|
||||||
//- Wedge angle
|
// Number of copies in order to complete 360 degrees
|
||||||
const scalar angle_;
|
const scalar nCopies_;
|
||||||
|
|
||||||
|
|
||||||
// Interpolation
|
// Interpolation
|
||||||
|
|
||||||
|
//- Pointer to expanded master patch
|
||||||
|
mutable standAlonePatch* expandedMasterPtr_;
|
||||||
|
|
||||||
|
//- Pointer to expanded faceCentres of Master
|
||||||
|
mutable vectorField* faceCentresPtr_;
|
||||||
|
|
||||||
|
//- Pointer to expanded faceareas of Master
|
||||||
|
mutable vectorField* faceAreasPtr_;
|
||||||
|
|
||||||
//- Pointer to expanded slave patch
|
//- Pointer to expanded slave patch
|
||||||
mutable standAlonePatch* expandedSlavePtr_;
|
mutable standAlonePatch* expandedSlavePtr_;
|
||||||
|
|
||||||
|
@ -97,18 +105,24 @@ class overlapGgiPolyPatch
|
||||||
|
|
||||||
// Private member functions
|
// Private member functions
|
||||||
|
|
||||||
|
//- Return reference to patch-to-patch interpolation
|
||||||
|
const overlapGgiInterpolation& patchToPatch() const;
|
||||||
|
|
||||||
|
//- Calculate expanded master patch
|
||||||
|
void calcExpandedMaster() const;
|
||||||
|
|
||||||
//- Calculate expanded slave patch
|
//- Calculate expanded slave patch
|
||||||
void calcExpandedSlave() const;
|
void calcExpandedSlave() const;
|
||||||
|
|
||||||
|
//- Return reference to expanded master patch
|
||||||
|
const standAlonePatch& expandedMaster() const;
|
||||||
|
|
||||||
//- Return reference to expanded slave patch
|
//- Return reference to expanded slave patch
|
||||||
const standAlonePatch& expandedSlave() const;
|
const standAlonePatch& expandedSlave() const;
|
||||||
|
|
||||||
//- Calculate interpolation
|
//- Calculate interpolation
|
||||||
void calcPatchToPatch() const;
|
void calcPatchToPatch() const;
|
||||||
|
|
||||||
//- Return reference to patch-to-patch interpolation
|
|
||||||
const overlapGgiInterpolation& patchToPatch() const;
|
|
||||||
|
|
||||||
//- Calculate reconstructed cell centres
|
//- Calculate reconstructed cell centres
|
||||||
void calcReconFaceCellCentres() const;
|
void calcReconFaceCellCentres() const;
|
||||||
|
|
||||||
|
@ -118,10 +132,6 @@ class overlapGgiPolyPatch
|
||||||
//- Check definition: angles and offsets
|
//- Check definition: angles and offsets
|
||||||
void checkDefinition() const;
|
void checkDefinition() const;
|
||||||
|
|
||||||
//- Expand slave face field to full coverage
|
|
||||||
template<class Type>
|
|
||||||
tmp<Field<Type> > expandSlaveData(const Field<Type>& spf) const;
|
|
||||||
|
|
||||||
//- Clear out
|
//- Clear out
|
||||||
void clearOut();
|
void clearOut();
|
||||||
|
|
||||||
|
@ -177,7 +187,7 @@ public:
|
||||||
const polyBoundaryMesh& bm,
|
const polyBoundaryMesh& bm,
|
||||||
const word& shadowName,
|
const word& shadowName,
|
||||||
const vector& axis,
|
const vector& axis,
|
||||||
const scalar angle
|
const scalar n
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct from dictionary
|
//- Construct from dictionary
|
||||||
|
@ -263,9 +273,9 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
//- Return wedge angle
|
//- Return wedge angle
|
||||||
const scalar& angle() const
|
scalar angle() const
|
||||||
{
|
{
|
||||||
return angle_;
|
return 360.0/nCopies();
|
||||||
}
|
}
|
||||||
|
|
||||||
//- Return number of slave copies
|
//- Return number of slave copies
|
||||||
|
@ -280,6 +290,14 @@ public:
|
||||||
return !master();
|
return !master();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//- Expand master face field to full for 360 degrees coverage
|
||||||
|
template<class Type>
|
||||||
|
tmp<Field<Type> > expandMasterData(const Field<Type>& spf) const;
|
||||||
|
|
||||||
|
//- Expand slave face field to full for 360 degrees coverage
|
||||||
|
template<class Type>
|
||||||
|
tmp<Field<Type> > expandSlaveData(const Field<Type>& spf) const;
|
||||||
|
|
||||||
//- Interpolate face field: given field on a the shadow side,
|
//- Interpolate face field: given field on a the shadow side,
|
||||||
// create an interpolated field on this side
|
// create an interpolated field on this side
|
||||||
template<class Type>
|
template<class Type>
|
||||||
|
|
|
@ -24,11 +24,14 @@ License
|
||||||
|
|
||||||
Author
|
Author
|
||||||
Hrvoje Jasak, Wikki Ltd. All rights reserved.
|
Hrvoje Jasak, Wikki Ltd. All rights reserved.
|
||||||
|
Fethi Tekin, All rights reserved.
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "overlapGgiPolyPatch.H"
|
#include "overlapGgiPolyPatch.H"
|
||||||
#include "polyMesh.H"
|
#include "polyMesh.H"
|
||||||
|
#include "polyPatch.H"
|
||||||
|
#include "primitiveMesh.H"
|
||||||
#include "demandDrivenData.H"
|
#include "demandDrivenData.H"
|
||||||
#include "polyPatchID.H"
|
#include "polyPatchID.H"
|
||||||
#include "OFstream.H"
|
#include "OFstream.H"
|
||||||
|
@ -36,6 +39,108 @@ Author
|
||||||
|
|
||||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
|
void Foam::overlapGgiPolyPatch::calcExpandedMaster() const
|
||||||
|
{
|
||||||
|
// Create expanded master patch interpolation
|
||||||
|
if (expandedMasterPtr_)
|
||||||
|
{
|
||||||
|
FatalErrorIn("void overlapGgiPolyPatch::calcExpandedMaster() const")
|
||||||
|
<< "Expanded master already calculated"
|
||||||
|
<< abort(FatalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (master())
|
||||||
|
{
|
||||||
|
// 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();
|
||||||
|
|
||||||
|
pointField MasterExpandedPoints(ncpm*masterLocalPoints.size());
|
||||||
|
|
||||||
|
const scalar masterAngle = angle();
|
||||||
|
|
||||||
|
Info << "Master Angle is: " << masterAngle << endl;
|
||||||
|
|
||||||
|
// Transform points
|
||||||
|
label nPoints_master = 0;
|
||||||
|
|
||||||
|
for (label copyI = 0; copyI < ncpm; copyI++)
|
||||||
|
{
|
||||||
|
// Calculate transform
|
||||||
|
const tensor curRotation =
|
||||||
|
RodriguesRotation(rotationAxis_, copyI*(masterAngle));
|
||||||
|
|
||||||
|
forAll (masterLocalPoints, pointI)
|
||||||
|
{
|
||||||
|
MasterExpandedPoints[nPoints_master] =
|
||||||
|
transform(curRotation, masterLocalPoints[pointI]);
|
||||||
|
nPoints_master++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transform faces
|
||||||
|
const faceList& masterLocalFaces = master.localFaces();
|
||||||
|
faceList MasterExpandedFaces(ncpm*masterLocalFaces.size());
|
||||||
|
|
||||||
|
label nFacesMaster = 0;
|
||||||
|
|
||||||
|
for (label copyI = 0; copyI < ncpm; copyI++)
|
||||||
|
{
|
||||||
|
const label copyOffsetMaster = copyI*masterLocalPoints.size();
|
||||||
|
|
||||||
|
forAll (masterLocalFaces, faceI)
|
||||||
|
{
|
||||||
|
const face& curMasterFace = masterLocalFaces[faceI];
|
||||||
|
|
||||||
|
face& MastercurExpandedFace =
|
||||||
|
MasterExpandedFaces[nFacesMaster];
|
||||||
|
|
||||||
|
// Copy face with offsets
|
||||||
|
MastercurExpandedFace.setSize(curMasterFace.size());
|
||||||
|
|
||||||
|
forAll (curMasterFace, fpI)
|
||||||
|
{
|
||||||
|
MastercurExpandedFace[fpI] =
|
||||||
|
curMasterFace[fpI] + copyOffsetMaster;
|
||||||
|
}
|
||||||
|
|
||||||
|
nFacesMaster++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
expandedMasterPtr_ =
|
||||||
|
new standAlonePatch(MasterExpandedFaces, MasterExpandedPoints);
|
||||||
|
|
||||||
|
if (debug > 1)
|
||||||
|
{
|
||||||
|
Info << "Writing expanded master patch as VTK" << endl;
|
||||||
|
|
||||||
|
const polyMesh& mesh = boundaryMesh().mesh();
|
||||||
|
|
||||||
|
fileName fvPath(mesh.time().path()/"VTK");
|
||||||
|
mkDir(fvPath);
|
||||||
|
|
||||||
|
standAlonePatch::writeVTK
|
||||||
|
(
|
||||||
|
fvPath/fileName("expandedMaster" + name() + shadow().name()),
|
||||||
|
MasterExpandedFaces,
|
||||||
|
MasterExpandedPoints
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FatalErrorIn("void overlapGgiPolyPatch::calcExpandedMaster() const")
|
||||||
|
<< "Attempting to create expanded master on a shadow"
|
||||||
|
<< abort(FatalError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Foam::overlapGgiPolyPatch::calcExpandedSlave() const
|
void Foam::overlapGgiPolyPatch::calcExpandedSlave() const
|
||||||
{
|
{
|
||||||
// Create expanded slave patch interpolation
|
// Create expanded slave patch interpolation
|
||||||
|
@ -49,7 +154,7 @@ void Foam::overlapGgiPolyPatch::calcExpandedSlave() const
|
||||||
if (master())
|
if (master())
|
||||||
{
|
{
|
||||||
// Create expanded patch
|
// Create expanded patch
|
||||||
const label ncp = nCopies();
|
const label ncp = shadow().nCopies();
|
||||||
|
|
||||||
Info << "Number of slave copies: " << ncp << endl;
|
Info << "Number of slave copies: " << ncp << endl;
|
||||||
|
|
||||||
|
@ -135,11 +240,18 @@ void Foam::overlapGgiPolyPatch::calcExpandedSlave() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const Foam::standAlonePatch& Foam::overlapGgiPolyPatch::expandedMaster() const
|
||||||
|
{
|
||||||
|
if (!expandedMasterPtr_)
|
||||||
|
{
|
||||||
|
calcExpandedMaster();
|
||||||
|
}
|
||||||
|
|
||||||
|
return *expandedMasterPtr_;
|
||||||
|
}
|
||||||
|
|
||||||
const Foam::standAlonePatch& Foam::overlapGgiPolyPatch::expandedSlave() const
|
const Foam::standAlonePatch& Foam::overlapGgiPolyPatch::expandedSlave() const
|
||||||
{
|
{
|
||||||
// Note: expanded slave only exists for the master side.
|
|
||||||
// Slave patch will use master for interpolation.
|
|
||||||
// HJ, 14/Jan/2009
|
|
||||||
if (!expandedSlavePtr_)
|
if (!expandedSlavePtr_)
|
||||||
{
|
{
|
||||||
calcExpandedSlave();
|
calcExpandedSlave();
|
||||||
|
@ -151,7 +263,8 @@ const Foam::standAlonePatch& Foam::overlapGgiPolyPatch::expandedSlave() const
|
||||||
|
|
||||||
void Foam::overlapGgiPolyPatch::calcPatchToPatch() const
|
void Foam::overlapGgiPolyPatch::calcPatchToPatch() const
|
||||||
{
|
{
|
||||||
// Create patch-to-patch interpolation
|
// Create patch-to-patch interpolation between the expanded master
|
||||||
|
// and slave patches
|
||||||
if (patchToPatchPtr_)
|
if (patchToPatchPtr_)
|
||||||
{
|
{
|
||||||
FatalErrorIn("void overlapGgiPolyPatch::calcPatchToPatch() const")
|
FatalErrorIn("void overlapGgiPolyPatch::calcPatchToPatch() const")
|
||||||
|
@ -164,7 +277,7 @@ void Foam::overlapGgiPolyPatch::calcPatchToPatch() const
|
||||||
patchToPatchPtr_ =
|
patchToPatchPtr_ =
|
||||||
new overlapGgiInterpolation
|
new overlapGgiInterpolation
|
||||||
(
|
(
|
||||||
*this,
|
expandedMaster(),
|
||||||
expandedSlave(),
|
expandedSlave(),
|
||||||
forwardT(),
|
forwardT(),
|
||||||
reverseT(),
|
reverseT(),
|
||||||
|
@ -214,8 +327,6 @@ void Foam::overlapGgiPolyPatch::calcReconFaceCellCentres() const
|
||||||
// Create neighbouring face centres using interpolation
|
// Create neighbouring face centres using interpolation
|
||||||
if (master())
|
if (master())
|
||||||
{
|
{
|
||||||
vectorField alpha(shadow().size(), vector(0, 0, 1));
|
|
||||||
|
|
||||||
const label shadowID = shadowIndex();
|
const label shadowID = shadowIndex();
|
||||||
|
|
||||||
// Get the transformed and interpolated shadow face cell centers
|
// Get the transformed and interpolated shadow face cell centers
|
||||||
|
@ -265,6 +376,7 @@ void Foam::overlapGgiPolyPatch::checkDefinition() const
|
||||||
|
|
||||||
void Foam::overlapGgiPolyPatch::clearOut()
|
void Foam::overlapGgiPolyPatch::clearOut()
|
||||||
{
|
{
|
||||||
|
deleteDemandDrivenData(expandedMasterPtr_);
|
||||||
deleteDemandDrivenData(expandedSlavePtr_);
|
deleteDemandDrivenData(expandedSlavePtr_);
|
||||||
deleteDemandDrivenData(patchToPatchPtr_);
|
deleteDemandDrivenData(patchToPatchPtr_);
|
||||||
deleteDemandDrivenData(reconFaceCellCentresPtr_);
|
deleteDemandDrivenData(reconFaceCellCentresPtr_);
|
||||||
|
|
|
@ -24,6 +24,7 @@ License
|
||||||
|
|
||||||
Author
|
Author
|
||||||
Hrvoje Jasak, Wikki Ltd. All rights reserved.
|
Hrvoje Jasak, Wikki Ltd. All rights reserved.
|
||||||
|
Fethi Tekin, All rights reserved.
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -36,20 +37,10 @@ template<class Type>
|
||||||
Foam::tmp<Foam::Field<Type> >
|
Foam::tmp<Foam::Field<Type> >
|
||||||
Foam::overlapGgiPolyPatch::expandSlaveData(const Field<Type>& spf) const
|
Foam::overlapGgiPolyPatch::expandSlaveData(const Field<Type>& spf) const
|
||||||
{
|
{
|
||||||
if (spf.size() != shadow().size())
|
|
||||||
{
|
|
||||||
FatalErrorIn
|
|
||||||
(
|
|
||||||
"tmp<Field<Type> > overlapGgiPolyPatch::interpolate"
|
|
||||||
"(const Field<Type>& spf) const"
|
|
||||||
) << " Incorrect field size for expansion. Field size: "
|
|
||||||
<< spf.size() << " patch size: " << shadow().size()
|
|
||||||
<< abort(FatalError);
|
|
||||||
}
|
|
||||||
|
|
||||||
const scalar slaveAngle = shadow().angle();
|
const scalar slaveAngle = shadow().angle();
|
||||||
|
|
||||||
const label ncp = nCopies();
|
const label ncp = shadow().nCopies();
|
||||||
|
|
||||||
tmp<Field<Type> > tef(new Field<Type>(ncp*spf.size()));
|
tmp<Field<Type> > tef(new Field<Type>(ncp*spf.size()));
|
||||||
Field<Type>& ef = tef();
|
Field<Type>& ef = tef();
|
||||||
|
@ -72,6 +63,35 @@ Foam::overlapGgiPolyPatch::expandSlaveData(const Field<Type>& spf) const
|
||||||
return tef;
|
return tef;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
Foam::tmp<Foam::Field<Type> >
|
||||||
|
Foam::overlapGgiPolyPatch::expandMasterData(const Field<Type>& spf) const
|
||||||
|
{
|
||||||
|
const scalar masterAngle = angle();
|
||||||
|
|
||||||
|
const label ncpm = nCopies();
|
||||||
|
|
||||||
|
tmp<Field<Type> > tef(new Field<Type>(ncpm*spf.size()));
|
||||||
|
Field<Type>& ef = tef();
|
||||||
|
|
||||||
|
label nFaces = 0;
|
||||||
|
|
||||||
|
for (label copyI = 0; copyI < ncpm; copyI++)
|
||||||
|
{
|
||||||
|
// Calculate transform
|
||||||
|
const tensor curRotation =
|
||||||
|
RodriguesRotation(rotationAxis_, copyI*(masterAngle));
|
||||||
|
|
||||||
|
forAll (spf, faceI)
|
||||||
|
{
|
||||||
|
ef[nFaces] = transform(curRotation, spf[faceI]);
|
||||||
|
nFaces++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return tef;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
@ -82,13 +102,20 @@ Foam::overlapGgiPolyPatch::interpolate(const Field<Type>& pf) const
|
||||||
if (master())
|
if (master())
|
||||||
{
|
{
|
||||||
// Expand slave data
|
// Expand slave data
|
||||||
tmp<Field<Type> > expand = expandSlaveData(pf);
|
tmp<Field<Type> > expandslave = expandSlaveData(pf);
|
||||||
|
|
||||||
return patchToPatch().slaveToMaster(expand);
|
tmp<Field<Type> > tresult= patchToPatch().slaveToMaster(expandslave);
|
||||||
|
// Truncate to size
|
||||||
|
tresult().setSize(size());
|
||||||
|
|
||||||
|
return tresult;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tmp<Field<Type> > tresult = patchToPatch().masterToSlave(pf);
|
// Expand master data
|
||||||
|
tmp<Field<Type> > expandmaster = expandMasterData(pf);
|
||||||
|
|
||||||
|
tmp<Field<Type> > tresult = patchToPatch().masterToSlave(expandmaster);
|
||||||
|
|
||||||
// Truncate to size
|
// Truncate to size
|
||||||
tresult().setSize(size());
|
tresult().setSize(size());
|
||||||
|
@ -107,11 +134,19 @@ Foam::overlapGgiPolyPatch::interpolate(const tmp<Field<Type> >& tpf) const
|
||||||
// Expand slave data
|
// Expand slave data
|
||||||
tmp<Field<Type> > expand = expandSlaveData(tpf());
|
tmp<Field<Type> > expand = expandSlaveData(tpf());
|
||||||
|
|
||||||
return patchToPatch().slaveToMaster(expand);
|
tmp<Field<Type> > tresult = patchToPatch().slaveToMaster(expand);
|
||||||
|
|
||||||
|
// Truncate to size
|
||||||
|
tresult().setSize(size());
|
||||||
|
|
||||||
|
return tresult;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tmp<Field<Type> > tresult = patchToPatch().masterToSlave(tpf);
|
// Expand master data
|
||||||
|
tmp<Field<Type> > expandmaster = expandMasterData(tpf());
|
||||||
|
|
||||||
|
tmp<Field<Type> > tresult = patchToPatch().masterToSlave(expandmaster);
|
||||||
|
|
||||||
// Truncate to size
|
// Truncate to size
|
||||||
tresult().setSize(size());
|
tresult().setSize(size());
|
||||||
|
|
|
@ -18,6 +18,7 @@ $(solidBodyMotionFunctions)/SKA/SKA.C
|
||||||
$(solidBodyMotionFunctions)/translation/translation.C
|
$(solidBodyMotionFunctions)/translation/translation.C
|
||||||
|
|
||||||
mixerGgiFvMesh/mixerGgiFvMesh.C
|
mixerGgiFvMesh/mixerGgiFvMesh.C
|
||||||
|
turboFvMesh/turboFvMesh.C
|
||||||
|
|
||||||
tetMetrics/tetMetric.C
|
tetMetrics/tetMetric.C
|
||||||
tetMetrics/tetMetrics.C
|
tetMetrics/tetMetrics.C
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
| \\ / O peration | Version: 1.4.1-dev |
|
| \\ / O peration | Version: 1.5.dev |
|
||||||
| \\ / A nd | Web: http://www.openfoam.org |
|
| \\ / A nd | Web: http://www.openfoam.org |
|
||||||
| \\/ M anipulation | |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
@ -10,44 +10,34 @@ FoamFile
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
root "/home/jovani/jovaniFoam/foamNewSolver/cases/recentCases/upwind";
|
object dynamicMeshDict;
|
||||||
case "FENE-CR";
|
|
||||||
instance "0";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volSymmTensorField;
|
|
||||||
object taufirst;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
dimensions [1 -1 -2 0 0 0 0];
|
dynamicFvMeshLib "libtopoChangerFvMesh.so";
|
||||||
|
dynamicFvMesh turboFvMesh;
|
||||||
|
|
||||||
internalField uniform (0 0 0 0 0 0);
|
turboFvMeshCoeffs
|
||||||
|
|
||||||
boundaryField
|
|
||||||
{
|
{
|
||||||
patch3
|
coordinateSystem
|
||||||
{
|
{
|
||||||
type fixedValue;
|
type cylindrical;
|
||||||
value uniform (0 0 0 0 0 0);
|
origin (0 0 0);
|
||||||
}
|
axis (0 0 1);
|
||||||
patch2
|
direction (1 0 0);
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
patch1
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
patch0
|
rpm
|
||||||
{
|
{
|
||||||
type empty;
|
Rotor1 60;
|
||||||
|
Rotor2 -30;
|
||||||
|
Stator 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
||||||
|
|
225
src/dynamicFvMesh/turboFvMesh/turboFvMesh.C
Normal file
225
src/dynamicFvMesh/turboFvMesh/turboFvMesh.C
Normal file
|
@ -0,0 +1,225 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / 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
|
||||||
|
|
||||||
|
Instructions:
|
||||||
|
This tool is used to have multiple rotating regions around the same origin
|
||||||
|
with different rpms.
|
||||||
|
Creating the cellZones is not implemented in this tool.
|
||||||
|
The steps to obtain the cellZones are :
|
||||||
|
|
||||||
|
1) use regionCellSets utility. With this command you can have different
|
||||||
|
cellSets for each region.
|
||||||
|
|
||||||
|
2) Change the name of the regions eg. CellRegion0 to Rotor1 ,CellRegion1
|
||||||
|
to Stator and vice versa.
|
||||||
|
|
||||||
|
3) run command " setsToZones -noFlipMap ". After this command the
|
||||||
|
cellSets are transformed to cellZones.
|
||||||
|
|
||||||
|
4) in dynamicMeshDict rpm section should be added.
|
||||||
|
|
||||||
|
5) The case is ready to be run.
|
||||||
|
|
||||||
|
Implemented by Fethi Tekin, 24.03.2010
|
||||||
|
|
||||||
|
Author
|
||||||
|
Hrvoje Jasak, Wikki Ltd. All rights reserved.
|
||||||
|
Fethi Tekin, All rights reserved.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
#include "turboFvMesh.H"
|
||||||
|
#include "Time.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(turboFvMesh, 0);
|
||||||
|
addToRunTimeSelectionTable(dynamicFvMesh, turboFvMesh, IOobject);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
|
void Foam::turboFvMesh::addZonesAndModifiers()
|
||||||
|
{
|
||||||
|
// Add zones and modifiers for motion action
|
||||||
|
// No functionality is implemented
|
||||||
|
|
||||||
|
if (cellZones().size() > 0)
|
||||||
|
{
|
||||||
|
Info<< "void turboFvMesh::addZonesAndModifiers() : "
|
||||||
|
<< "Zones and modifiers already present. Skipping."
|
||||||
|
<< endl;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FatalErrorIn("turboFvMesh")
|
||||||
|
<< "Cell Regions have to be created"
|
||||||
|
<< abort(FatalError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void Foam::turboFvMesh::calcMovingPoints() const
|
||||||
|
{
|
||||||
|
if (debug)
|
||||||
|
{
|
||||||
|
Info<< "void turboFvMesh::calcMovingMasks() const : "
|
||||||
|
<< "Calculating point and cell masks"
|
||||||
|
<< endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (movingPointsPtr_)
|
||||||
|
{
|
||||||
|
FatalErrorIn("void turboFvMesh::calcMovingMasks() const")
|
||||||
|
<< "point mask already calculated"
|
||||||
|
<< abort(FatalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve the zone Names
|
||||||
|
const wordList zoneNames = cellZones().names();
|
||||||
|
|
||||||
|
// Set the points
|
||||||
|
movingPointsPtr_ = new vectorField(allPoints().size(),vector::zero);
|
||||||
|
|
||||||
|
vectorField& movingPoints = *movingPointsPtr_;
|
||||||
|
|
||||||
|
const cellList& c = cells();
|
||||||
|
const faceList& f = allFaces();
|
||||||
|
|
||||||
|
forAll(zoneNames,zoneI)
|
||||||
|
{
|
||||||
|
Info<< "Moving Region Zone Name:" << zoneNames[zoneI]<< nl<<endl;
|
||||||
|
|
||||||
|
const labelList& cellAddr =
|
||||||
|
cellZones()[cellZones().findZoneID(zoneNames[zoneI])];
|
||||||
|
|
||||||
|
rpm_ = readScalar(dict_.subDict("rpm").lookup(zoneNames[zoneI]));
|
||||||
|
|
||||||
|
Info<< "rpm:" << rpm_<<nl<<endl;
|
||||||
|
|
||||||
|
forAll (cellAddr, cellI)
|
||||||
|
{
|
||||||
|
const cell& curCell = c[cellAddr[cellI]];
|
||||||
|
|
||||||
|
forAll (curCell, faceI)
|
||||||
|
{
|
||||||
|
const face& curFace = f[curCell[faceI]];
|
||||||
|
|
||||||
|
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
|
||||||
|
movingPoints[curFace[pointI]] =
|
||||||
|
vector(0,rpm_*360.0*time().deltaT().value()/60.0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
// Construct from components
|
||||||
|
Foam::turboFvMesh::turboFvMesh
|
||||||
|
(
|
||||||
|
const IOobject& io
|
||||||
|
)
|
||||||
|
:
|
||||||
|
dynamicFvMesh(io),
|
||||||
|
dict_
|
||||||
|
(
|
||||||
|
IOdictionary
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"dynamicMeshDict",
|
||||||
|
time().constant(),
|
||||||
|
*this,
|
||||||
|
IOobject::MUST_READ,
|
||||||
|
IOobject::NO_WRITE
|
||||||
|
)
|
||||||
|
).subDict(typeName + "Coeffs")
|
||||||
|
),
|
||||||
|
csPtr_
|
||||||
|
(
|
||||||
|
coordinateSystem::New
|
||||||
|
(
|
||||||
|
"coordinateSystem",
|
||||||
|
dict_.subDict("coordinateSystem")
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
|
movingPointsPtr_(NULL)
|
||||||
|
{
|
||||||
|
addZonesAndModifiers();
|
||||||
|
|
||||||
|
Info<< "Turbomachine Mixer mesh:" << nl
|
||||||
|
<< " origin: " << cs().origin() << nl
|
||||||
|
<< " axis : " << cs().axis() << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::turboFvMesh::~turboFvMesh()
|
||||||
|
{
|
||||||
|
deleteDemandDrivenData(movingPointsPtr_);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
// Return moving points mask
|
||||||
|
const Foam::vectorField& Foam::turboFvMesh::movingPoints() const
|
||||||
|
{
|
||||||
|
if (!movingPointsPtr_)
|
||||||
|
{
|
||||||
|
calcMovingPoints();
|
||||||
|
}
|
||||||
|
|
||||||
|
return *movingPointsPtr_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Foam::turboFvMesh::update()
|
||||||
|
{
|
||||||
|
movePoints
|
||||||
|
(
|
||||||
|
csPtr_->globalPosition
|
||||||
|
(
|
||||||
|
csPtr_->localPosition(allPoints()) + movingPoints()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
// The mesh is not morphing
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
131
src/dynamicFvMesh/turboFvMesh/turboFvMesh.H
Normal file
131
src/dynamicFvMesh/turboFvMesh/turboFvMesh.H
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2006-7 H. Jasak All rights reserved
|
||||||
|
\\/ 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
|
||||||
|
|
||||||
|
Class
|
||||||
|
turboFvMesh
|
||||||
|
|
||||||
|
Description
|
||||||
|
Simple mixer mesh using an overlapGGI interface
|
||||||
|
|
||||||
|
Author
|
||||||
|
Hrvoje Jasak, Wikki Ltd. All rights reserved.
|
||||||
|
Fethi Tekin, All rights reserved.
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
turboFvMesh.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef turboFvMesh_H
|
||||||
|
#define turboFvMesh_H
|
||||||
|
|
||||||
|
#include "dynamicFvMesh.H"
|
||||||
|
#include "cylindricalCS.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class turboFvMesh Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class turboFvMesh
|
||||||
|
:
|
||||||
|
public dynamicFvMesh
|
||||||
|
{
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- Motion dictionary
|
||||||
|
dictionary dict_;
|
||||||
|
|
||||||
|
//- Coordinate system
|
||||||
|
autoPtr<coordinateSystem> csPtr_;
|
||||||
|
|
||||||
|
// - Rotational speed in rotations per minute (rpm)
|
||||||
|
mutable scalar rpm_;
|
||||||
|
|
||||||
|
//- Markup field for points.
|
||||||
|
mutable vectorField* movingPointsPtr_;
|
||||||
|
|
||||||
|
|
||||||
|
// Private Member Functions
|
||||||
|
|
||||||
|
//- Disallow default bitwise copy construct
|
||||||
|
turboFvMesh(const turboFvMesh&);
|
||||||
|
|
||||||
|
//- Disallow default bitwise assignment
|
||||||
|
void operator=(const turboFvMesh&);
|
||||||
|
|
||||||
|
|
||||||
|
//- Add mixer zones
|
||||||
|
void addZonesAndModifiers();
|
||||||
|
|
||||||
|
//- Calculate moving Points
|
||||||
|
void calcMovingPoints() const;
|
||||||
|
|
||||||
|
//- Return moving points
|
||||||
|
const vectorField& movingPoints() const;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("turboFvMesh");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from IOobject
|
||||||
|
explicit turboFvMesh(const IOobject& io);
|
||||||
|
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
|
||||||
|
virtual ~turboFvMesh();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Return coordinate system
|
||||||
|
const coordinateSystem& cs() const
|
||||||
|
{
|
||||||
|
return csPtr_();
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Update the mesh for both mesh motion
|
||||||
|
virtual bool update();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -12,13 +12,13 @@ viscoelasticLaws/FENE-CR/FENE_CR.C
|
||||||
viscoelasticLaws/FENE-P/FENE_P.C
|
viscoelasticLaws/FENE-P/FENE_P.C
|
||||||
viscoelasticLaws/XPP_SE/XPP_SE.C
|
viscoelasticLaws/XPP_SE/XPP_SE.C
|
||||||
viscoelasticLaws/XPP_DE/XPP_DE.C
|
viscoelasticLaws/XPP_DE/XPP_DE.C
|
||||||
viscoelasticLaws/PP/PP.C
|
|
||||||
viscoelasticLaws/DCPP/DCPP.C
|
viscoelasticLaws/DCPP/DCPP.C
|
||||||
viscoelasticLaws/Feta-PTT/Feta_PTT.C
|
viscoelasticLaws/Feta-PTT/Feta_PTT.C
|
||||||
viscoelasticLaws/Leonov/Leonov.C
|
viscoelasticLaws/Leonov/Leonov.C
|
||||||
viscoelasticLaws/White-Metzner/White-Metzner_Larson/White_Metzner_Larson.C
|
viscoelasticLaws/WhiteMetzner/WhiteMetznerLarson/WhiteMetznerLarson.C
|
||||||
viscoelasticLaws/White-Metzner/White-Metzner_CM/White_Metzner_CM.C
|
viscoelasticLaws/WhiteMetzner/WhiteMetznerCross/WhiteMetznerCross.C
|
||||||
viscoelasticLaws/White-Metzner/White-Metzner_CY/White_Metzner_CY.C
|
viscoelasticLaws/WhiteMetzner/WhiteMetznerCarreauYasuda/WhiteMetznerCarreauYasuda.C
|
||||||
|
viscoelasticLaws/S_MDCPP/S_MDCPP.C
|
||||||
|
|
||||||
viscoelasticLaws/multiMode/multiMode.C
|
viscoelasticLaws/multiMode/multiMode.C
|
||||||
|
|
||||||
|
|
|
@ -27,20 +27,18 @@ License
|
||||||
#include "DCPP.H"
|
#include "DCPP.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
defineTypeNameAndDebug(DCPP, 0);
|
||||||
|
addToRunTimeSelectionTable(viscoelasticLaw, DCPP, dictionary);
|
||||||
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
defineTypeNameAndDebug(DCPP, 0);
|
|
||||||
addToRunTimeSelectionTable(viscoelasticLaw, DCPP, dictionary);
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// from components
|
Foam::DCPP::DCPP
|
||||||
DCPP::DCPP
|
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -117,25 +115,23 @@ DCPP::DCPP
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
tmp<fvVectorMatrix> DCPP::divTau(volVectorField& U) const
|
Foam::tmp<Foam::fvVectorMatrix> Foam::DCPP::divTau(volVectorField& U) const
|
||||||
{
|
{
|
||||||
|
|
||||||
dimensionedScalar etaPEff = etaP_;
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
|
||||||
return
|
return
|
||||||
(
|
(
|
||||||
fvc::div(tau_/rho_, "div(tau)")
|
fvc::div(tau_/rho_, "div(tau)")
|
||||||
- fvc::laplacian(etaPEff/rho_, U, "laplacian(etaPEff,U)")
|
- fvc::laplacian(etaPEff/rho_, U, "laplacian(etaPEff,U)")
|
||||||
+ fvm::laplacian( (etaPEff + etaS_)/rho_, U, "laplacian(etaPEff+etaS,U)")
|
+ fvm::laplacian((etaPEff + etaS_)/rho_, U, "laplacian(etaPEff+etaS,U)")
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DCPP::correct()
|
void Foam::DCPP::correct()
|
||||||
{
|
{
|
||||||
// Velocity gradient tensor
|
// Velocity gradient tensor
|
||||||
volTensorField L = fvc::grad( U() );
|
volTensorField L = fvc::grad(U());
|
||||||
|
|
||||||
// Upper convected derivate term
|
// Upper convected derivate term
|
||||||
volTensorField Cupper = S_ & L;
|
volTensorField Cupper = S_ & L;
|
||||||
|
@ -144,48 +140,42 @@ void DCPP::correct()
|
||||||
volTensorField Clower = L & S_;
|
volTensorField Clower = L & S_;
|
||||||
|
|
||||||
// Twice the rate of deformation tensor
|
// Twice the rate of deformation tensor
|
||||||
volSymmTensorField twoD = twoSymm( L );
|
volSymmTensorField twoD = twoSymm(L);
|
||||||
|
|
||||||
|
|
||||||
// Evolution of orientation
|
// Evolution of orientation
|
||||||
tmp<fvSymmTensorMatrix> SEqn
|
fvSymmTensorMatrix SEqn
|
||||||
(
|
(
|
||||||
fvm::ddt(S_)
|
fvm::ddt(S_)
|
||||||
+ fvm::div(phi(), S_)
|
+ fvm::div(phi(), S_)
|
||||||
==
|
==
|
||||||
(1 - zeta_/2)*twoSymm( Cupper )
|
(1 - zeta_/2)*twoSymm(Cupper)
|
||||||
- (zeta_/2)*twoSymm( Clower )
|
- (zeta_/2)*twoSymm(Clower)
|
||||||
- (1 - zeta_)*fvm::Sp( (twoD && S_) , S_ )
|
- (1 - zeta_)*fvm::Sp((twoD && S_), S_)
|
||||||
- fvm::Sp(( 1/lambdaOb_/Foam::sqr(Lambda_) ), S_ )
|
- fvm::Sp(1/lambdaOb_/Foam::sqr(Lambda_), S_)
|
||||||
+ 1/lambdaOb_/Foam::sqr(Lambda_)/3*I_
|
+ 1/lambdaOb_/Foam::sqr(Lambda_)/3*I_
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
SEqn().relax();
|
SEqn.relax();
|
||||||
solve(SEqn);
|
SEqn.solve();
|
||||||
|
|
||||||
// Evolution of the backbone stretch
|
// Evolution of the backbone stretch
|
||||||
tmp<fvScalarMatrix> LambdaEqn
|
fvScalarMatrix lambdaEqn
|
||||||
(
|
(
|
||||||
fvm::ddt(Lambda_)
|
fvm::ddt(Lambda_)
|
||||||
+ fvm::div(phi(), Lambda_)
|
+ fvm::div(phi(), Lambda_)
|
||||||
==
|
==
|
||||||
fvm::Sp( (twoD && S_) / 2 , Lambda_ )
|
fvm::Sp((twoD && S_)/2 , Lambda_)
|
||||||
- fvm::Sp( Foam::exp( 2/q_*(Lambda_ - 1))/lambdaOs_ , Lambda_ )
|
- fvm::Sp(Foam::exp(2/q_*(Lambda_ - 1))/lambdaOs_ , Lambda_)
|
||||||
+ Foam::exp( 2/q_*(Lambda_ - 1))/lambdaOs_
|
+ Foam::exp( 2/q_*(Lambda_ - 1))/lambdaOs_
|
||||||
);
|
);
|
||||||
|
|
||||||
LambdaEqn().relax();
|
lambdaEqn.relax();
|
||||||
solve(LambdaEqn);
|
lambdaEqn.solve();
|
||||||
|
|
||||||
// Viscoelastic stress
|
// Viscoelastic stress
|
||||||
tau_ = etaP_/lambdaOb_/(1 - zeta_) * (3*Foam::sqr(Lambda_)*S_ - I_);
|
tau_ = etaP_/lambdaOb_/(1 - zeta_) * (3*Foam::sqr(Lambda_)*S_ - I_);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -27,20 +27,17 @@ License
|
||||||
#include "EPTT.H"
|
#include "EPTT.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
defineTypeNameAndDebug(EPTT, 0);
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
addToRunTimeSelectionTable(viscoelasticLaw, EPTT, dictionary);
|
||||||
|
}
|
||||||
defineTypeNameAndDebug(EPTT, 0);
|
|
||||||
addToRunTimeSelectionTable(viscoelasticLaw, EPTT, dictionary);
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// from components
|
Foam::EPTT::EPTT
|
||||||
EPTT::EPTT
|
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -72,7 +69,7 @@ EPTT::EPTT
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
tmp<fvVectorMatrix> EPTT::divTau(volVectorField& U) const
|
Foam::tmp<Foam::fvVectorMatrix> Foam::EPTT::divTau(volVectorField& U) const
|
||||||
{
|
{
|
||||||
dimensionedScalar etaPEff = etaP_;
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
|
||||||
|
@ -85,37 +82,36 @@ tmp<fvVectorMatrix> EPTT::divTau(volVectorField& U) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void EPTT::correct()
|
void Foam::EPTT::correct()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Velocity gradient tensor
|
// Velocity gradient tensor
|
||||||
volTensorField L = fvc::grad( U() );
|
volTensorField L = fvc::grad(U());
|
||||||
|
|
||||||
// Convected derivate term
|
// Convected derivate term
|
||||||
volTensorField C = tau_ & L;
|
volTensorField C = tau_ & L;
|
||||||
|
|
||||||
// Twice the rate of deformation tensor
|
// Twice the rate of deformation tensor
|
||||||
volSymmTensorField twoD = twoSymm( L );
|
volSymmTensorField twoD = twoSymm(L);
|
||||||
|
|
||||||
// Stress transport equation
|
// Stress transport equation
|
||||||
tmp<fvSymmTensorMatrix> tauEqn
|
fvSymmTensorMatrix tauEqn
|
||||||
(
|
(
|
||||||
fvm::ddt(tau_)
|
fvm::ddt(tau_)
|
||||||
+ fvm::div(phi(), tau_)
|
+ fvm::div(phi(), tau_)
|
||||||
==
|
==
|
||||||
etaP_ / lambda_ * twoD
|
etaP_/lambda_*twoD
|
||||||
+ twoSymm( C )
|
+ twoSymm(C)
|
||||||
- zeta_ / 2 * ( (tau_ & twoD) + (twoD & tau_) )
|
- zeta_/2*((tau_ & twoD) + (twoD & tau_))
|
||||||
- fvm::Sp( (1/lambda_) * Foam::exp( epsilon_ * lambda_ / etaP_ * tr(tau_) ) , tau_ )
|
- fvm::Sp
|
||||||
|
(
|
||||||
|
(1/lambda_)*Foam::exp(epsilon_*lambda_/etaP_*tr(tau_)),
|
||||||
|
tau_
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
tauEqn().relax();
|
tauEqn.relax();
|
||||||
solve(tauEqn);
|
tauEqn.solve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -27,20 +27,18 @@ License
|
||||||
#include "FENE_CR.H"
|
#include "FENE_CR.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
defineTypeNameAndDebug(FENE_CR, 0);
|
||||||
|
addToRunTimeSelectionTable(viscoelasticLaw, FENE_CR, dictionary);
|
||||||
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
defineTypeNameAndDebug(FENE_CR, 0);
|
|
||||||
addToRunTimeSelectionTable(viscoelasticLaw, FENE_CR, dictionary);
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// from components
|
Foam::FENE_CR::FENE_CR
|
||||||
FENE_CR::FENE_CR
|
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -71,7 +69,7 @@ FENE_CR::FENE_CR
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
tmp<fvVectorMatrix> FENE_CR::divTau(volVectorField& U) const
|
Foam::tmp<Foam::fvVectorMatrix> Foam::FENE_CR::divTau(volVectorField& U) const
|
||||||
{
|
{
|
||||||
dimensionedScalar etaPEff = etaP_;
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
|
||||||
|
@ -84,36 +82,31 @@ tmp<fvVectorMatrix> FENE_CR::divTau(volVectorField& U) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void FENE_CR::correct()
|
void Foam::FENE_CR::correct()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Velocity gradient tensor
|
// Velocity gradient tensor
|
||||||
volTensorField L = fvc::grad( U() );
|
volTensorField L = fvc::grad(U());
|
||||||
|
|
||||||
// Convected derivate term
|
// Convected derivate term
|
||||||
volTensorField C = tau_ & L;
|
volTensorField C = tau_ & L;
|
||||||
|
|
||||||
// Twice the rate of deformation tensor
|
// Twice the rate of deformation tensor
|
||||||
volSymmTensorField twoD = twoSymm( L );
|
volSymmTensorField twoD = twoSymm(L);
|
||||||
|
|
||||||
// Stress transport equation
|
// Stress transport equation
|
||||||
tmp<fvSymmTensorMatrix> tauEqn
|
fvSymmTensorMatrix tauEqn
|
||||||
(
|
(
|
||||||
fvm::ddt(tau_)
|
fvm::ddt(tau_)
|
||||||
+ fvm::div(phi(), tau_)
|
+ fvm::div(phi(), tau_)
|
||||||
==
|
==
|
||||||
((L2_ / lambda_ + tr(tau_)/etaP_) / (L2_ - 3.0) ) * etaP_ * twoD
|
((L2_ / lambda_ + tr(tau_)/etaP_)/(L2_ - 3.0))*etaP_*twoD
|
||||||
+ twoSymm( C )
|
+ twoSymm(C)
|
||||||
- fvm::Sp( (L2_ / lambda_ + tr(tau_)/etaP_) / (L2_ - 3.0), tau_ )
|
- fvm::Sp((L2_/lambda_ + tr(tau_)/etaP_)/(L2_ - 3), tau_)
|
||||||
);
|
);
|
||||||
|
|
||||||
tauEqn().relax();
|
tauEqn.relax();
|
||||||
solve(tauEqn);
|
tauEqn.solve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -27,20 +27,18 @@ License
|
||||||
#include "FENE_P.H"
|
#include "FENE_P.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
defineTypeNameAndDebug(FENE_P, 0);
|
||||||
|
addToRunTimeSelectionTable(viscoelasticLaw, FENE_P, dictionary);
|
||||||
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
defineTypeNameAndDebug(FENE_P, 0);
|
|
||||||
addToRunTimeSelectionTable(viscoelasticLaw, FENE_P, dictionary);
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// from components
|
Foam::FENE_P::FENE_P
|
||||||
FENE_P::FENE_P
|
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -71,9 +69,8 @@ FENE_P::FENE_P
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
tmp<fvVectorMatrix> FENE_P::divTau(volVectorField& U) const
|
Foam::tmp<Foam::fvVectorMatrix> Foam::FENE_P::divTau(volVectorField& U) const
|
||||||
{
|
{
|
||||||
|
|
||||||
dimensionedScalar etaPEff = etaP_;
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -86,36 +83,35 @@ tmp<fvVectorMatrix> FENE_P::divTau(volVectorField& U) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void FENE_P::correct()
|
void Foam::FENE_P::correct()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Velocity gradient tensor
|
// Velocity gradient tensor
|
||||||
volTensorField L = fvc::grad( U() );
|
volTensorField L = fvc::grad(U());
|
||||||
|
|
||||||
// Convected derivate term
|
// Convected derivate term
|
||||||
volTensorField C = tau_ & L;
|
volTensorField C = tau_ & L;
|
||||||
|
|
||||||
// Twice the rate of deformation tensor
|
// Twice the rate of deformation tensor
|
||||||
volSymmTensorField twoD = twoSymm( L );
|
volSymmTensorField twoD = twoSymm(L);
|
||||||
|
|
||||||
// Stress transport equation
|
// Stress transport equation
|
||||||
tmp<fvSymmTensorMatrix> tauEqn
|
fvSymmTensorMatrix tauEqn
|
||||||
(
|
(
|
||||||
fvm::ddt(tau_)
|
fvm::ddt(tau_)
|
||||||
+ fvm::div(phi(), tau_)
|
+ fvm::div(phi(), tau_)
|
||||||
==
|
==
|
||||||
( 1 / lambda_ / (1 - 3/L2_) ) * etaP_ * twoD
|
(1/lambda_/(1 - 3/L2_))*etaP_*twoD
|
||||||
+ twoSymm( C )
|
+ twoSymm(C)
|
||||||
- fvm::Sp( 1 / lambda_ + ( 3 / lambda_ / (1 - 3/L2_) + tr(tau_)/etaP_ ) / (L2_), tau_ )
|
- fvm::Sp
|
||||||
|
(
|
||||||
|
1/lambda_ + (3/lambda_/(1 - 3/L2_) + tr(tau_)/etaP_)/(L2_),
|
||||||
|
tau_
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
tauEqn().relax();
|
tauEqn.relax();
|
||||||
solve(tauEqn);
|
tauEqn.solve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -27,20 +27,17 @@ License
|
||||||
#include "Feta_PTT.H"
|
#include "Feta_PTT.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
defineTypeNameAndDebug(Feta_PTT, 0);
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
addToRunTimeSelectionTable(viscoelasticLaw, Feta_PTT, dictionary);
|
||||||
|
}
|
||||||
defineTypeNameAndDebug(Feta_PTT, 0);
|
|
||||||
addToRunTimeSelectionTable(viscoelasticLaw, Feta_PTT, dictionary);
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// from components
|
Foam::Feta_PTT::Feta_PTT
|
||||||
Feta_PTT::Feta_PTT
|
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -80,7 +77,11 @@ Feta_PTT::Feta_PTT
|
||||||
IOobject::NO_READ,
|
IOobject::NO_READ,
|
||||||
IOobject::AUTO_WRITE
|
IOobject::AUTO_WRITE
|
||||||
),
|
),
|
||||||
etaP_/( Foam::pow(scalar(1) + A_*Foam::pow(0.5*( Foam::sqr(tr(tau_)) - tr(tau_ & tau_) ) * Foam::sqr(lambda_) / Foam::sqr(etaP_), a_), b_) )
|
etaP_/
|
||||||
|
(
|
||||||
|
Foam::pow(scalar(1) + A_*Foam::pow(0.5*( Foam::sqr(tr(tau_))
|
||||||
|
- tr(tau_ & tau_))*Foam::sqr(lambda_)/Foam::sqr(etaP_), a_), b_)
|
||||||
|
)
|
||||||
),
|
),
|
||||||
lambdaEff_
|
lambdaEff_
|
||||||
(
|
(
|
||||||
|
@ -99,10 +100,10 @@ Feta_PTT::Feta_PTT
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
tmp<fvVectorMatrix> Feta_PTT::divTau(volVectorField& U) const
|
Foam::tmp<Foam::fvVectorMatrix> Foam::Feta_PTT::divTau(volVectorField& U) const
|
||||||
{
|
{
|
||||||
|
// Need to be equal to old time step (a constant)
|
||||||
dimensionedScalar etaPEff = etaP_; // need to be equal to old time step (a constant)
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
|
||||||
return
|
return
|
||||||
(
|
(
|
||||||
|
@ -110,46 +111,45 @@ tmp<fvVectorMatrix> Feta_PTT::divTau(volVectorField& U) const
|
||||||
- fvc::laplacian(etaPEff/rho_, U, "laplacian(etaPEff,U)")
|
- fvc::laplacian(etaPEff/rho_, U, "laplacian(etaPEff,U)")
|
||||||
+ fvm::laplacian( (etaPEff + etaS_)/rho_, U, "laplacian(etaPEff+etaS,U)")
|
+ fvm::laplacian( (etaPEff + etaS_)/rho_, U, "laplacian(etaPEff+etaS,U)")
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Feta_PTT::correct()
|
void Foam::Feta_PTT::correct()
|
||||||
{
|
{
|
||||||
// Velocity gradient tensor
|
// Velocity gradient tensor
|
||||||
volTensorField L = fvc::grad( U() );
|
volTensorField L = fvc::grad(U());
|
||||||
|
|
||||||
// Convected derivate term
|
// Convected derivate term
|
||||||
volTensorField C = tau_ & L;
|
volTensorField C = tau_ & L;
|
||||||
|
|
||||||
// Twice the rate of deformation tensor
|
// Twice the rate of deformation tensor
|
||||||
volSymmTensorField twoD = twoSymm( L );
|
volSymmTensorField twoD = twoSymm(L);
|
||||||
|
|
||||||
// etaP effective
|
// etaP effective
|
||||||
etaPEff_ = etaP_/( Foam::pow(scalar(1) + A_*Foam::pow(0.5*( Foam::sqr(tr(tau_)) - tr(tau_ & tau_) ) * Foam::sqr(lambda_) / Foam::sqr(etaP_), a_), b_) );
|
etaPEff_ = etaP_/
|
||||||
|
(
|
||||||
|
Foam::pow(scalar(1) + A_*Foam::pow(0.5*( Foam::sqr(tr(tau_))
|
||||||
|
- tr(tau_ & tau_)) * Foam::sqr(lambda_)/Foam::sqr(etaP_), a_), b_)
|
||||||
|
);
|
||||||
|
|
||||||
// lambda effective
|
// lambda effective
|
||||||
lambdaEff_ = (lambda_ / (scalar(1) + epsilon_*lambda_*tr(tau_) / etaP_) );
|
lambdaEff_ = lambda_/(scalar(1) + epsilon_*lambda_*tr(tau_)/etaP_);
|
||||||
|
|
||||||
// Stress transport equation
|
// Stress transport equation
|
||||||
tmp<fvSymmTensorMatrix> tauEqn
|
fvSymmTensorMatrix tauEqn
|
||||||
(
|
(
|
||||||
fvm::ddt(tau_)
|
fvm::ddt(tau_)
|
||||||
+ fvm::div(phi(), tau_)
|
+ fvm::div(phi(), tau_)
|
||||||
==
|
==
|
||||||
etaPEff_ / lambdaEff_ * twoD
|
etaPEff_/lambdaEff_*twoD
|
||||||
+ twoSymm( C )
|
+ twoSymm(C)
|
||||||
- zeta_ / 2 * ( (tau_ & twoD) + (twoD & tau_) )
|
- zeta_/2*((tau_ & twoD) + (twoD & tau_))
|
||||||
- fvm::Sp( epsilon_ / etaPEff_ * tr(tau_) + 1/lambdaEff_, tau_ )
|
- fvm::Sp(epsilon_/etaPEff_*tr(tau_) + 1/lambdaEff_, tau_)
|
||||||
);
|
);
|
||||||
|
|
||||||
tauEqn().relax();
|
tauEqn.relax();
|
||||||
solve(tauEqn);
|
tauEqn.solve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -89,11 +89,13 @@ class Feta_PTT
|
||||||
dimensionedScalar b_;
|
dimensionedScalar b_;
|
||||||
|
|
||||||
|
|
||||||
//- Effective zero shear rate polymer viscosity and relaxation time
|
//- Effective zero shear rate polymer viscosity
|
||||||
volScalarField etaPEff_;
|
volScalarField etaPEff_;
|
||||||
|
|
||||||
|
//- Relaxation time
|
||||||
volScalarField lambdaEff_;
|
volScalarField lambdaEff_;
|
||||||
|
|
||||||
|
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
//- Disallow default bitwise copy construct
|
//- Disallow default bitwise copy construct
|
||||||
|
|
|
@ -27,20 +27,18 @@ License
|
||||||
#include "Giesekus.H"
|
#include "Giesekus.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
defineTypeNameAndDebug(Giesekus, 0);
|
||||||
|
addToRunTimeSelectionTable(viscoelasticLaw, Giesekus, dictionary);
|
||||||
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
defineTypeNameAndDebug(Giesekus, 0);
|
|
||||||
addToRunTimeSelectionTable(viscoelasticLaw, Giesekus, dictionary);
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// from components
|
Foam::Giesekus::Giesekus
|
||||||
Giesekus::Giesekus
|
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -71,7 +69,7 @@ Giesekus::Giesekus
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
tmp<fvVectorMatrix> Giesekus::divTau(volVectorField& U) const
|
Foam::tmp<Foam::fvVectorMatrix> Foam::Giesekus::divTau(volVectorField& U) const
|
||||||
{
|
{
|
||||||
dimensionedScalar etaPEff = etaP_;
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
|
||||||
|
@ -84,7 +82,7 @@ tmp<fvVectorMatrix> Giesekus::divTau(volVectorField& U) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Giesekus::correct()
|
void Foam::Giesekus::correct()
|
||||||
{
|
{
|
||||||
// Velocity gradient tensor
|
// Velocity gradient tensor
|
||||||
volTensorField L = fvc::grad(U());
|
volTensorField L = fvc::grad(U());
|
||||||
|
@ -97,24 +95,20 @@ void Giesekus::correct()
|
||||||
|
|
||||||
|
|
||||||
// Stress transport equation
|
// Stress transport equation
|
||||||
tmp<fvSymmTensorMatrix> tauEqn
|
fvSymmTensorMatrix tauEqn
|
||||||
(
|
(
|
||||||
fvm::ddt(tau_)
|
fvm::ddt(tau_)
|
||||||
+ fvm::div(phi(), tau_)
|
+ fvm::div(phi(), tau_)
|
||||||
==
|
==
|
||||||
etaP_ / lambda_ * twoD
|
etaP_/lambda_*twoD
|
||||||
+ twoSymm( C )
|
+ twoSymm(C)
|
||||||
- (alpha_ / etaP_) * ( tau_ & tau_)
|
- (alpha_/etaP_)*(tau_ & tau_)
|
||||||
- fvm::Sp(1/lambda_, tau_ )
|
- fvm::Sp(1/lambda_, tau_)
|
||||||
);
|
);
|
||||||
|
|
||||||
tauEqn().relax();
|
tauEqn.relax();
|
||||||
solve(tauEqn);
|
tauEqn.solve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -27,20 +27,17 @@ License
|
||||||
#include "LPTT.H"
|
#include "LPTT.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
defineTypeNameAndDebug(LPTT, 0);
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
addToRunTimeSelectionTable(viscoelasticLaw, LPTT, dictionary);
|
||||||
|
}
|
||||||
defineTypeNameAndDebug(LPTT, 0);
|
|
||||||
addToRunTimeSelectionTable(viscoelasticLaw, LPTT, dictionary);
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// from components
|
Foam::LPTT::LPTT
|
||||||
LPTT::LPTT
|
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -72,9 +69,8 @@ LPTT::LPTT
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
tmp<fvVectorMatrix> LPTT::divTau(volVectorField& U) const
|
Foam::tmp<Foam::fvVectorMatrix> Foam::LPTT::divTau(volVectorField& U) const
|
||||||
{
|
{
|
||||||
|
|
||||||
// dimensionedScalar etaPEff = (1 + 1/epsilon_)*etaP_;
|
// dimensionedScalar etaPEff = (1 + 1/epsilon_)*etaP_;
|
||||||
dimensionedScalar etaPEff = etaP_;
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
|
||||||
|
@ -88,37 +84,32 @@ tmp<fvVectorMatrix> LPTT::divTau(volVectorField& U) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void LPTT::correct()
|
void Foam::LPTT::correct()
|
||||||
{
|
{
|
||||||
// Velocity gradient tensor
|
// Velocity gradient tensor
|
||||||
volTensorField L = fvc::grad( U() );
|
volTensorField L = fvc::grad(U());
|
||||||
|
|
||||||
// Convected derivate term
|
// Convected derivate term
|
||||||
volTensorField C = tau_ & L;
|
volTensorField C = tau_ & L;
|
||||||
|
|
||||||
// Twice the rate of deformation tensor
|
// Twice the rate of deformation tensor
|
||||||
volSymmTensorField twoD = twoSymm( L );
|
volSymmTensorField twoD = twoSymm(L);
|
||||||
|
|
||||||
|
|
||||||
// Stress transport equation
|
// Stress transport equation
|
||||||
tmp<fvSymmTensorMatrix> tauEqn
|
fvSymmTensorMatrix tauEqn
|
||||||
(
|
(
|
||||||
fvm::ddt(tau_)
|
fvm::ddt(tau_)
|
||||||
+ fvm::div(phi(), tau_)
|
+ fvm::div(phi(), tau_)
|
||||||
==
|
==
|
||||||
etaP_ / lambda_ * twoD
|
etaP_/lambda_*twoD
|
||||||
+ twoSymm( C )
|
+ twoSymm(C)
|
||||||
- zeta_ / 2 * ( (tau_ & twoD) + (twoD & tau_) )
|
- zeta_/2*((tau_ & twoD) + (twoD & tau_))
|
||||||
- fvm::Sp( epsilon_ / etaP_ * tr(tau_) + 1/lambda_, tau_ )
|
- fvm::Sp(epsilon_/etaP_*tr(tau_) + 1/lambda_, tau_)
|
||||||
);
|
);
|
||||||
|
|
||||||
tauEqn().relax();
|
tauEqn.relax();
|
||||||
solve(tauEqn);
|
tauEqn.solve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -27,20 +27,17 @@ License
|
||||||
#include "Leonov.H"
|
#include "Leonov.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
defineTypeNameAndDebug(Leonov, 0);
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
addToRunTimeSelectionTable(viscoelasticLaw, Leonov, dictionary);
|
||||||
|
}
|
||||||
defineTypeNameAndDebug(Leonov, 0);
|
|
||||||
addToRunTimeSelectionTable(viscoelasticLaw, Leonov, dictionary);
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// from components
|
Foam::Leonov::Leonov
|
||||||
Leonov::Leonov
|
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -102,9 +99,8 @@ Leonov::Leonov
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
tmp<fvVectorMatrix> Leonov::divTau(volVectorField& U) const
|
Foam::tmp<Foam::fvVectorMatrix> Foam::Leonov::divTau(volVectorField& U) const
|
||||||
{
|
{
|
||||||
|
|
||||||
dimensionedScalar etaPEff = etaP_;
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -116,40 +112,43 @@ tmp<fvVectorMatrix> Leonov::divTau(volVectorField& U) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Leonov::correct()
|
void Foam::Leonov::correct()
|
||||||
{
|
{
|
||||||
// Velocity gradient tensor
|
// Velocity gradient tensor
|
||||||
volTensorField L = fvc::grad( U() );
|
volTensorField L = fvc::grad(U());
|
||||||
|
|
||||||
// Convected derivate term
|
// Convected derivate term
|
||||||
volTensorField C = sigma_ & L;
|
volTensorField C = sigma_ & L;
|
||||||
|
|
||||||
// Twice the rate of deformation tensor
|
// Twice the rate of deformation tensor
|
||||||
volSymmTensorField twoD = twoSymm( L );
|
volSymmTensorField twoD = twoSymm(L);
|
||||||
|
|
||||||
// Stress transport equation
|
// Stress transport equation
|
||||||
tmp<fvSymmTensorMatrix> sigmaEqn
|
fvSymmTensorMatrix sigmaEqn
|
||||||
(
|
(
|
||||||
fvm::ddt(sigma_)
|
fvm::ddt(sigma_)
|
||||||
+ fvm::div(phi(), sigma_)
|
+ fvm::div(phi(), sigma_)
|
||||||
==
|
==
|
||||||
twoSymm( C )
|
twoSymm(C)
|
||||||
- 1/etaP_/2*( (sigma_ & sigma_) - Foam::pow( (etaP_/lambda_),2)*I_ )
|
- 1/etaP_/2*((sigma_ & sigma_) - Foam::pow((etaP_/lambda_), 2)*I_)
|
||||||
+ fvm::Sp(1/etaP_/6*( tr(sigma_) - Foam::pow(etaP_/lambda_,2) * tr(inv(sigma_)) ), sigma_)
|
+ fvm::Sp
|
||||||
|
(
|
||||||
|
1/etaP_/6*
|
||||||
|
(
|
||||||
|
tr(sigma_)
|
||||||
|
- Foam::pow(etaP_/lambda_,2) * tr(inv(sigma_))
|
||||||
|
),
|
||||||
|
sigma_
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
sigmaEqn().relax();
|
sigmaEqn.relax();
|
||||||
solve(sigmaEqn);
|
sigmaEqn.solve();
|
||||||
|
|
||||||
// Viscoelastic stress
|
// Viscoelastic stress
|
||||||
tau_ = sigma_ - etaP_/lambda_ * I_;
|
tau_ = sigma_ - etaP_/lambda_*I_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -27,20 +27,18 @@ License
|
||||||
#include "Maxwell.H"
|
#include "Maxwell.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
defineTypeNameAndDebug(Maxwell, 0);
|
||||||
|
addToRunTimeSelectionTable(viscoelasticLaw, Maxwell, dictionary);
|
||||||
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
defineTypeNameAndDebug(Maxwell, 0);
|
|
||||||
addToRunTimeSelectionTable(viscoelasticLaw, Maxwell, dictionary);
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// from components
|
Foam::Maxwell::Maxwell
|
||||||
Maxwell::Maxwell
|
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -70,9 +68,8 @@ Maxwell::Maxwell
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
tmp<fvVectorMatrix> Maxwell::divTau(volVectorField& U) const
|
Foam::tmp<Foam::fvVectorMatrix> Foam::Maxwell::divTau(volVectorField& U) const
|
||||||
{
|
{
|
||||||
|
|
||||||
dimensionedScalar etaPEff = etaP_;
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -85,32 +82,26 @@ tmp<fvVectorMatrix> Maxwell::divTau(volVectorField& U) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Maxwell::correct()
|
void Foam::Maxwell::correct()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Velocity gradient tensor
|
// Velocity gradient tensor
|
||||||
volTensorField L = fvc::grad( U() );
|
volTensorField L = fvc::grad(U());
|
||||||
|
|
||||||
// Twice the rate of deformation tensor
|
// Twice the rate of deformation tensor
|
||||||
volSymmTensorField twoD = twoSymm( L );
|
volSymmTensorField twoD = twoSymm(L);
|
||||||
|
|
||||||
// Stress transport equation
|
// Stress transport equation
|
||||||
tmp<fvSymmTensorMatrix> tauEqn
|
fvSymmTensorMatrix tauEqn
|
||||||
(
|
(
|
||||||
fvm::ddt(tau_)
|
fvm::ddt(tau_)
|
||||||
==
|
==
|
||||||
etaP_ / lambda_ * twoD
|
etaP_/lambda_*twoD
|
||||||
- fvm::Sp( 1/lambda_, tau_ )
|
- fvm::Sp( 1/lambda_, tau_ )
|
||||||
);
|
);
|
||||||
|
|
||||||
// tauEqn().relax(); // to see
|
tauEqn.relax();
|
||||||
solve(tauEqn);
|
tauEqn.solve();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -27,20 +27,18 @@ License
|
||||||
#include "Oldroyd_B.H"
|
#include "Oldroyd_B.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
defineTypeNameAndDebug(Oldroyd_B, 0);
|
||||||
|
addToRunTimeSelectionTable(viscoelasticLaw, Oldroyd_B, dictionary);
|
||||||
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
defineTypeNameAndDebug(Oldroyd_B, 0);
|
|
||||||
addToRunTimeSelectionTable(viscoelasticLaw, Oldroyd_B, dictionary);
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// from components
|
Foam::Oldroyd_B::Oldroyd_B
|
||||||
Oldroyd_B::Oldroyd_B
|
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -70,9 +68,9 @@ Oldroyd_B::Oldroyd_B
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
tmp<fvVectorMatrix> Oldroyd_B::divTau(volVectorField& U) const
|
Foam::tmp<Foam::fvVectorMatrix>
|
||||||
|
Foam::Oldroyd_B::divTau(volVectorField& U) const
|
||||||
{
|
{
|
||||||
|
|
||||||
dimensionedScalar etaPEff = etaP_;
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -81,40 +79,34 @@ tmp<fvVectorMatrix> Oldroyd_B::divTau(volVectorField& U) const
|
||||||
- fvc::laplacian(etaPEff/rho_, U, "laplacian(etaPEff,U)")
|
- fvc::laplacian(etaPEff/rho_, U, "laplacian(etaPEff,U)")
|
||||||
+ fvm::laplacian( (etaPEff + etaS_)/rho_, U, "laplacian(etaPEff+etaS,U)")
|
+ fvm::laplacian( (etaPEff + etaS_)/rho_, U, "laplacian(etaPEff+etaS,U)")
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Oldroyd_B::correct()
|
void Foam::Oldroyd_B::correct()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Velocity gradient tensor
|
// Velocity gradient tensor
|
||||||
volTensorField L = fvc::grad( U() );
|
volTensorField L = fvc::grad(U());
|
||||||
|
|
||||||
// Convected derivate term
|
// Convected derivate term
|
||||||
volTensorField C = tau_ & L;
|
volTensorField C = tau_ & L;
|
||||||
|
|
||||||
// Twice the rate of deformation tensor
|
// Twice the rate of deformation tensor
|
||||||
volSymmTensorField twoD = twoSymm( L );
|
volSymmTensorField twoD = twoSymm(L);
|
||||||
|
|
||||||
// Stress transport equation
|
// Stress transport equation
|
||||||
tmp<fvSymmTensorMatrix> tauEqn
|
fvSymmTensorMatrix tauEqn
|
||||||
(
|
(
|
||||||
fvm::ddt(tau_)
|
fvm::ddt(tau_)
|
||||||
+ fvm::div(phi(), tau_)
|
+ fvm::div(phi(), tau_)
|
||||||
==
|
==
|
||||||
etaP_ / lambda_ * twoD
|
etaP_/lambda_*twoD
|
||||||
+ twoSymm( C )
|
+ twoSymm(C)
|
||||||
- fvm::Sp( 1/lambda_, tau_ )
|
- fvm::Sp(1/lambda_, tau_)
|
||||||
);
|
);
|
||||||
|
|
||||||
tauEqn().relax();
|
tauEqn.relax();
|
||||||
solve(tauEqn);
|
tauEqn.solve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -24,23 +24,20 @@ License
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "PP.H"
|
#include "S_MDCPP.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
namespace Foam
|
|
||||||
{
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
defineTypeNameAndDebug(PP, 0);
|
namespace Foam
|
||||||
addToRunTimeSelectionTable(viscoelasticLaw, PP, dictionary);
|
{
|
||||||
|
defineTypeNameAndDebug(S_MDCPP, 0);
|
||||||
|
addToRunTimeSelectionTable(viscoelasticLaw, S_MDCPP, dictionary);
|
||||||
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// from components
|
Foam::S_MDCPP::S_MDCPP
|
||||||
PP::PP
|
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -49,30 +46,6 @@ PP::PP
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
viscoelasticLaw(name, U, phi),
|
viscoelasticLaw(name, U, phi),
|
||||||
S_
|
|
||||||
(
|
|
||||||
IOobject
|
|
||||||
(
|
|
||||||
"S" + name,
|
|
||||||
U.time().timeName(),
|
|
||||||
U.mesh(),
|
|
||||||
IOobject::MUST_READ,
|
|
||||||
IOobject::AUTO_WRITE
|
|
||||||
),
|
|
||||||
U.mesh()
|
|
||||||
),
|
|
||||||
Lambda_
|
|
||||||
(
|
|
||||||
IOobject
|
|
||||||
(
|
|
||||||
"Lambda" + name,
|
|
||||||
U.time().timeName(),
|
|
||||||
U.mesh(),
|
|
||||||
IOobject::MUST_READ,
|
|
||||||
IOobject::AUTO_WRITE
|
|
||||||
),
|
|
||||||
U.mesh()
|
|
||||||
),
|
|
||||||
tau_
|
tau_
|
||||||
(
|
(
|
||||||
IOobject
|
IOobject
|
||||||
|
@ -80,16 +53,10 @@ PP::PP
|
||||||
"tau" + name,
|
"tau" + name,
|
||||||
U.time().timeName(),
|
U.time().timeName(),
|
||||||
U.mesh(),
|
U.mesh(),
|
||||||
IOobject::NO_READ,
|
IOobject::MUST_READ,
|
||||||
IOobject::AUTO_WRITE
|
IOobject::AUTO_WRITE
|
||||||
),
|
),
|
||||||
U.mesh(),
|
U.mesh()
|
||||||
dimensionedSymmTensor
|
|
||||||
(
|
|
||||||
"zero",
|
|
||||||
dimensionSet(1, -1, -2, 0, 0, 0, 0),
|
|
||||||
symmTensor::zero
|
|
||||||
)
|
|
||||||
),
|
),
|
||||||
I_
|
I_
|
||||||
(
|
(
|
||||||
|
@ -108,6 +75,7 @@ PP::PP
|
||||||
rho_(dict.lookup("rho")),
|
rho_(dict.lookup("rho")),
|
||||||
etaS_(dict.lookup("etaS")),
|
etaS_(dict.lookup("etaS")),
|
||||||
etaP_(dict.lookup("etaP")),
|
etaP_(dict.lookup("etaP")),
|
||||||
|
zeta_(dict.lookup("zeta")),
|
||||||
lambdaOb_(dict.lookup("lambdaOb")),
|
lambdaOb_(dict.lookup("lambdaOb")),
|
||||||
lambdaOs_(dict.lookup("lambdaOs")),
|
lambdaOs_(dict.lookup("lambdaOs")),
|
||||||
q_(dict.lookup("q"))
|
q_(dict.lookup("q"))
|
||||||
|
@ -116,9 +84,8 @@ PP::PP
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
tmp<fvVectorMatrix> PP::divTau(volVectorField& U) const
|
Foam::tmp<Foam::fvVectorMatrix> Foam::S_MDCPP::divTau(volVectorField& U) const
|
||||||
{
|
{
|
||||||
|
|
||||||
dimensionedScalar etaPEff = etaP_;
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -131,68 +98,46 @@ tmp<fvVectorMatrix> PP::divTau(volVectorField& U) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PP::correct()
|
void Foam::S_MDCPP::correct()
|
||||||
{
|
{
|
||||||
// Velocity gradient tensor
|
// Velocity gradient tensor
|
||||||
volTensorField L = fvc::grad( U() );
|
volTensorField L = fvc::grad(U());
|
||||||
|
|
||||||
// Convected derivate term
|
// Convected derivate term
|
||||||
volTensorField C = S_ & L;
|
volTensorField C = tau_ & L;
|
||||||
|
|
||||||
// Twice the rate of deformation tensor
|
// Twice the rate of deformation tensor
|
||||||
volSymmTensorField twoD = twoSymm( L );
|
volSymmTensorField twoD = twoSymm(L);
|
||||||
|
|
||||||
|
// Lambda (Backbone stretch)
|
||||||
|
volScalarField Lambda =
|
||||||
|
Foam::sqrt(1 + tr(tau_)*lambdaOb_*(1 - zeta_)/3/etaP_);
|
||||||
|
|
||||||
// Evolution of orientation
|
// Auxiliary field
|
||||||
tmp<fvSymmTensorMatrix> SEqn
|
volScalarField aux = Foam::exp( 2/q_*(Lambda - 1));
|
||||||
|
|
||||||
|
// Extra function
|
||||||
|
volScalarField fTau =
|
||||||
|
aux*(2*lambdaOb_/lambdaOs_*(1 - 1/Lambda) + 1/Foam::sqr(Lambda));
|
||||||
|
|
||||||
|
// Stress transport equation
|
||||||
|
fvSymmTensorMatrix tauEqn
|
||||||
(
|
(
|
||||||
fvm::ddt(S_)
|
fvm::ddt(tau_)
|
||||||
+ fvm::div(phi(), S_)
|
+ fvm::div(phi(), tau_)
|
||||||
==
|
==
|
||||||
twoSymm( C )
|
etaP_/lambdaOb_*twoD
|
||||||
- fvm::Sp( 1/lambdaOb_, S_ )
|
+ twoSymm(C)
|
||||||
+ 1/3/lambdaOb_*I_
|
- zeta_/2*((tau_ & twoD) + (twoD & tau_))
|
||||||
|
- fvm::Sp(1/lambdaOb_*fTau, tau_)
|
||||||
);
|
- (
|
||||||
|
1/lambdaOb_*( etaP_/lambdaOb_/(1 - zeta_)*(fTau - aux)*I_)
|
||||||
SEqn().relax();
|
|
||||||
solve(SEqn);
|
|
||||||
|
|
||||||
|
|
||||||
// Evolution of the backbone stretch
|
|
||||||
tmp<fvScalarMatrix> LambdaEqn
|
|
||||||
(
|
|
||||||
fvm::ddt(Lambda_)
|
|
||||||
+ fvm::div(phi(), Lambda_)
|
|
||||||
==
|
|
||||||
fvm::Sp( (twoD && (S_/tr(S_)) ) / 2 , Lambda_ )
|
|
||||||
- fvm::Sp( Foam::exp( 2/q_*(Lambda_ - 1))/lambdaOs_ , Lambda_ )
|
|
||||||
+ Foam::exp( 2/q_*(Lambda_ - 1))/lambdaOs_
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
LambdaEqn().relax();
|
|
||||||
solve(LambdaEqn);
|
|
||||||
|
|
||||||
|
|
||||||
// Pom Pom condition:
|
|
||||||
Lambda_.max
|
|
||||||
(
|
|
||||||
dimensionedScalar
|
|
||||||
(
|
|
||||||
"zero",
|
|
||||||
Lambda_.dimensions(),
|
|
||||||
scalar( q_.value() )
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
// Viscoelastic stress
|
tauEqn.relax();
|
||||||
tau_ = etaP_/lambdaOb_ * (3*Foam::sqr(Lambda_)*S_/tr(S_) - I_);
|
tauEqn.solve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
|
@ -0,0 +1,147 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / 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
|
||||||
|
|
||||||
|
Class
|
||||||
|
S_MDCPP
|
||||||
|
|
||||||
|
Description
|
||||||
|
S-MDCPP non linear viscoelastic fluid model:
|
||||||
|
Wei Wang, Xikui Li and Xianhong Han,
|
||||||
|
Journal of Non-Newtonian Fluid Mechanics, 165,1480-1493, 2010.
|
||||||
|
|
||||||
|
Author
|
||||||
|
Jovani L. Favero. All rights reserved
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
S_MDCPP.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef S_MDCPP_H
|
||||||
|
#define S_MDCPP_H
|
||||||
|
|
||||||
|
#include "viscoelasticLaw.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class S_MDCPP Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class S_MDCPP
|
||||||
|
:
|
||||||
|
public viscoelasticLaw
|
||||||
|
{
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- Transported viscoelastic stress
|
||||||
|
volSymmTensorField tau_;
|
||||||
|
|
||||||
|
//- Identity tensor
|
||||||
|
dimensionedSymmTensor I_;
|
||||||
|
|
||||||
|
// Model constants
|
||||||
|
|
||||||
|
//- Density
|
||||||
|
dimensionedScalar rho_;
|
||||||
|
|
||||||
|
//- Solvent viscosity
|
||||||
|
dimensionedScalar etaS_;
|
||||||
|
|
||||||
|
//- Zero shear rate polymer viscosity
|
||||||
|
dimensionedScalar etaP_;
|
||||||
|
|
||||||
|
//- Material parameter, defining the amount of anisotropy
|
||||||
|
dimensionedScalar zeta_;
|
||||||
|
|
||||||
|
//- Relaxation time of the backbone tube orientation
|
||||||
|
dimensionedScalar lambdaOb_;
|
||||||
|
|
||||||
|
//- Relaxation time for the stretch
|
||||||
|
dimensionedScalar lambdaOs_;
|
||||||
|
|
||||||
|
//- Amount of arms at the end of a backbone
|
||||||
|
dimensionedScalar q_;
|
||||||
|
|
||||||
|
|
||||||
|
// Private Member Functions
|
||||||
|
|
||||||
|
//- Disallow default bitwise copy construct
|
||||||
|
S_MDCPP(const S_MDCPP&);
|
||||||
|
|
||||||
|
//- Disallow default bitwise assignment
|
||||||
|
void operator=(const S_MDCPP&);
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("S-MDCPP");
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from components
|
||||||
|
S_MDCPP
|
||||||
|
(
|
||||||
|
const word& name,
|
||||||
|
const volVectorField& U,
|
||||||
|
const surfaceScalarField& phi,
|
||||||
|
const dictionary& dict
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
|
||||||
|
virtual ~S_MDCPP()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Return the viscoelastic stress tensor
|
||||||
|
virtual tmp<volSymmTensorField> tau() const
|
||||||
|
{
|
||||||
|
return tau_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return the coupling term for the momentum equation
|
||||||
|
virtual tmp<fvVectorMatrix> divTau(volVectorField& U) const;
|
||||||
|
|
||||||
|
//- Correct the viscoelastic stress
|
||||||
|
virtual void correct();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,144 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / 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
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "S_MDCPP.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(S_MDCPP, 0);
|
||||||
|
addToRunTimeSelectionTable(viscoelasticLaw, S_MDCPP, dictionary);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::S_MDCPP::S_MDCPP
|
||||||
|
(
|
||||||
|
const word& name,
|
||||||
|
const volVectorField& U,
|
||||||
|
const surfaceScalarField& phi,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
viscoelasticLaw(name, U, phi),
|
||||||
|
tau_
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"tau" + name,
|
||||||
|
U.time().timeName(),
|
||||||
|
U.mesh(),
|
||||||
|
IOobject::MUST_READ,
|
||||||
|
IOobject::AUTO_WRITE
|
||||||
|
),
|
||||||
|
U.mesh()
|
||||||
|
),
|
||||||
|
I_
|
||||||
|
(
|
||||||
|
dimensionedSymmTensor
|
||||||
|
(
|
||||||
|
"I",
|
||||||
|
dimensionSet(0, 0, 0, 0, 0, 0, 0),
|
||||||
|
symmTensor
|
||||||
|
(
|
||||||
|
1, 0, 0,
|
||||||
|
1, 0,
|
||||||
|
1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
rho_(dict.lookup("rho")),
|
||||||
|
etaS_(dict.lookup("etaS")),
|
||||||
|
etaP_(dict.lookup("etaP")),
|
||||||
|
zeta_(dict.lookup("zeta")),
|
||||||
|
lambdaOb_(dict.lookup("lambdaOb")),
|
||||||
|
lambdaOs_(dict.lookup("lambdaOs")),
|
||||||
|
q_(dict.lookup("q"))
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::tmp<Foam::fvVectorMatrix> Foam::S_MDCPP::divTau(volVectorField& U) const
|
||||||
|
{
|
||||||
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
|
||||||
|
return
|
||||||
|
(
|
||||||
|
fvc::div(tau_/rho_, "div(tau)")
|
||||||
|
- fvc::laplacian(etaPEff/rho_, U, "laplacian(etaPEff,U)")
|
||||||
|
+ fvm::laplacian( (etaPEff + etaS_)/rho_, U, "laplacian(etaPEff+etaS,U)")
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::S_MDCPP::correct()
|
||||||
|
{
|
||||||
|
// Velocity gradient tensor
|
||||||
|
volTensorField L = fvc::grad(U());
|
||||||
|
|
||||||
|
// Convected derivate term
|
||||||
|
volTensorField C = tau_ & L;
|
||||||
|
|
||||||
|
// Twice the rate of deformation tensor
|
||||||
|
volSymmTensorField twoD = twoSymm(L);
|
||||||
|
|
||||||
|
// Lambda (Backbone stretch)
|
||||||
|
volScalarField Lambda =
|
||||||
|
Foam::sqrt(1 + tr(tau_)*lambdaOb_*(1 - zeta_)/3/etaP_);
|
||||||
|
|
||||||
|
// Auxiliary field
|
||||||
|
volScalarField aux = Foam::exp( 2/q_*(Lambda - 1));
|
||||||
|
|
||||||
|
// Extra function
|
||||||
|
volScalarField fTau =
|
||||||
|
aux*(2*lambdaOb_/lambdaOs_*(1 - 1/Lambda) + 1/Foam::sqr(Lambda));
|
||||||
|
|
||||||
|
// Stress transport equation
|
||||||
|
fvSymmTensorMatrix tauEqn
|
||||||
|
(
|
||||||
|
fvm::ddt(tau_)
|
||||||
|
+ fvm::div(phi(), tau_)
|
||||||
|
==
|
||||||
|
etaP_/lambdaOb_*twoD
|
||||||
|
+ twoSymm(C)
|
||||||
|
- zeta_/2*((tau_ & twoD) + (twoD & tau_))
|
||||||
|
- fvm::Sp(1/lambdaOb_*fTau, tau_)
|
||||||
|
- (
|
||||||
|
1/lambdaOb_*(etaP_/lambdaOb_/(1 - zeta_)*(fTau - aux)*I_)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
tauEqn.relax();
|
||||||
|
tauEqn.solve();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -23,22 +23,23 @@ License
|
||||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
Class
|
Class
|
||||||
PP
|
S-MDCPP
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Pom-Pom (PP) non linear viscoelastic fluid model.
|
S-MDCPP non linear viscoelastic fluid model:
|
||||||
(McLeish,T.C.B., Larson R.G., J. Rheol. 42, 81, 1998)
|
Wei Wang, Xikui Li and Xianhong Han,
|
||||||
|
Journal of Non-Newtonian Fluid Mechanics, 165,1480-1493, 2010.
|
||||||
|
|
||||||
Author
|
Author
|
||||||
Jovani L. Favero. All rights reserved
|
Jovani L. Favero. All rights reserved
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
PP.C
|
S_MDCPP.C
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#ifndef PP_H
|
#ifndef S_MDCP_H
|
||||||
#define PP_H
|
#define S_MDCP_H
|
||||||
|
|
||||||
#include "viscoelasticLaw.H"
|
#include "viscoelasticLaw.H"
|
||||||
|
|
||||||
|
@ -48,28 +49,21 @@ namespace Foam
|
||||||
{
|
{
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*\
|
/*---------------------------------------------------------------------------*\
|
||||||
Class PP Declaration
|
Class S_MDCPP Declaration
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
class PP
|
class S_MDCPP
|
||||||
:
|
:
|
||||||
public viscoelasticLaw
|
public viscoelasticLaw
|
||||||
{
|
{
|
||||||
// Private data
|
// Private data
|
||||||
|
|
||||||
//- Evolution of orientation
|
|
||||||
volSymmTensorField S_;
|
|
||||||
|
|
||||||
//- Evolution of the backbone stretch
|
|
||||||
volScalarField Lambda_;
|
|
||||||
|
|
||||||
//- Transported viscoelastic stress
|
//- Transported viscoelastic stress
|
||||||
volSymmTensorField tau_;
|
volSymmTensorField tau_;
|
||||||
|
|
||||||
//- Identity tensor
|
//- Identity tensor
|
||||||
dimensionedSymmTensor I_;
|
dimensionedSymmTensor I_;
|
||||||
|
|
||||||
|
|
||||||
// Model constants
|
// Model constants
|
||||||
|
|
||||||
//- Density
|
//- Density
|
||||||
|
@ -81,6 +75,9 @@ class PP
|
||||||
//- Zero shear rate polymer viscosity
|
//- Zero shear rate polymer viscosity
|
||||||
dimensionedScalar etaP_;
|
dimensionedScalar etaP_;
|
||||||
|
|
||||||
|
//- Material parameter, defining the amount of anisotropy
|
||||||
|
dimensionedScalar zeta_;
|
||||||
|
|
||||||
//- Relaxation time of the backbone tube orientation
|
//- Relaxation time of the backbone tube orientation
|
||||||
dimensionedScalar lambdaOb_;
|
dimensionedScalar lambdaOb_;
|
||||||
|
|
||||||
|
@ -94,21 +91,21 @@ class PP
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
//- Disallow default bitwise copy construct
|
//- Disallow default bitwise copy construct
|
||||||
PP(const PP&);
|
S_MDCPP(const S_MDCPP&);
|
||||||
|
|
||||||
//- Disallow default bitwise assignment
|
//- Disallow default bitwise assignment
|
||||||
void operator=(const PP&);
|
void operator=(const S_MDCPP&);
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
TypeName("PP");
|
TypeName("S_MDCPP");
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct from components
|
//- Construct from components
|
||||||
PP
|
S_MDCPP
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -119,7 +116,7 @@ public:
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
|
|
||||||
virtual ~PP()
|
virtual ~S_MDCPP()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
|
@ -24,23 +24,27 @@ License
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "White_Metzner_CY.H"
|
#include "WhiteMetznerCarreauYasuda.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
defineTypeNameAndDebug(WhiteMetznerCarreauYasuda, 0);
|
||||||
|
addToRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
viscoelasticLaw,
|
||||||
|
WhiteMetznerCarreauYasuda,
|
||||||
|
dictionary
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
defineTypeNameAndDebug(White_Metzner_CY, 0);
|
|
||||||
addToRunTimeSelectionTable(viscoelasticLaw, White_Metzner_CY, dictionary);
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// from components
|
Foam::WhiteMetznerCarreauYasuda::WhiteMetznerCarreauYasuda
|
||||||
White_Metzner_CY::White_Metzner_CY
|
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -76,10 +80,11 @@ White_Metzner_CY::White_Metzner_CY
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
tmp<fvVectorMatrix> White_Metzner_CY::divTau(volVectorField& U) const
|
Foam::tmp<Foam::fvVectorMatrix>
|
||||||
|
Foam::WhiteMetznerCarreauYasuda::divTau(volVectorField& U) const
|
||||||
{
|
{
|
||||||
|
// Need to be equal to old time step (a constant)
|
||||||
dimensionedScalar etaPEff = etaP_; // need to be equal to old time step (a constant)
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
|
||||||
return
|
return
|
||||||
(
|
(
|
||||||
|
@ -87,45 +92,43 @@ tmp<fvVectorMatrix> White_Metzner_CY::divTau(volVectorField& U) const
|
||||||
- fvc::laplacian(etaPEff/rho_, U, "laplacian(etaPEff,U)")
|
- fvc::laplacian(etaPEff/rho_, U, "laplacian(etaPEff,U)")
|
||||||
+ fvm::laplacian( (etaPEff + etaS_)/rho_, U, "laplacian(etaPEff+etaS,U)")
|
+ fvm::laplacian( (etaPEff + etaS_)/rho_, U, "laplacian(etaPEff+etaS,U)")
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void White_Metzner_CY::correct()
|
void Foam::WhiteMetznerCarreauYasuda::correct()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Velocity gradient tensor
|
// Velocity gradient tensor
|
||||||
volTensorField L = fvc::grad( U() );
|
volTensorField L = fvc::grad(U());
|
||||||
|
|
||||||
// Convected derivate term
|
// Convected derivate term
|
||||||
volTensorField C = tau_ & L;
|
volTensorField C = tau_ & L;
|
||||||
|
|
||||||
// Twice the rate of deformation tensor
|
// Twice the rate of deformation tensor
|
||||||
volSymmTensorField twoD = twoSymm( L );
|
volSymmTensorField twoD = twoSymm(L);
|
||||||
|
|
||||||
// Effective viscosity and relaxation time
|
// Effective viscosity and relaxation time
|
||||||
volScalarField etaPValue = etaP_ * Foam::pow( 1 + Foam::pow( K_* sqrt(2.0)*mag(symm(L)),a_), (m_- 1)/a_ );
|
volScalarField etaPValue = etaP_*
|
||||||
volScalarField lambdaValue = lambda_ * Foam::pow( 1 + Foam::pow( L_* sqrt(2.0)*mag(symm(L)),b_), (n_- 1)/b_ );
|
Foam::pow(1 + Foam::pow(K_* sqrt(2.0)*mag(symm(L)),a_), (m_- 1)/a_);
|
||||||
|
|
||||||
|
volScalarField lambdaValue = lambda_*
|
||||||
|
Foam::pow(1 + Foam::pow( L_* sqrt(2.0)*mag(symm(L)),b_), (n_- 1)/b_);
|
||||||
|
|
||||||
|
|
||||||
// Stress transport equation
|
// Stress transport equation
|
||||||
tmp<fvSymmTensorMatrix> tauEqn
|
fvSymmTensorMatrix tauEqn
|
||||||
(
|
(
|
||||||
fvm::ddt(tau_)
|
fvm::ddt(tau_)
|
||||||
+ fvm::div(phi(), tau_)
|
+ fvm::div(phi(), tau_)
|
||||||
==
|
==
|
||||||
etaPValue / lambdaValue * twoD
|
etaPValue/lambdaValue*twoD
|
||||||
+ twoSymm( C )
|
+ twoSymm(C)
|
||||||
- fvm::Sp( 1/lambdaValue, tau_ )
|
- fvm::Sp(1/lambdaValue, tau_)
|
||||||
);
|
);
|
||||||
|
|
||||||
tauEqn().relax();
|
tauEqn.relax();
|
||||||
solve(tauEqn);
|
tauEqn.solve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
|
@ -23,7 +23,7 @@ License
|
||||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
Class
|
Class
|
||||||
White_Metzner_CY
|
WhiteMetznerCarreauYasuda
|
||||||
|
|
||||||
Description
|
Description
|
||||||
White-Metzner Carreau-Yasuda Law non linear viscoelastic fluid model
|
White-Metzner Carreau-Yasuda Law non linear viscoelastic fluid model
|
||||||
|
@ -34,12 +34,12 @@ Author
|
||||||
Jovani L. Favero. All rights reserved
|
Jovani L. Favero. All rights reserved
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
White_Metzner_CY.C
|
WhiteMetznerCarreauYasuda.C
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#ifndef White_Metzner_CY_H
|
#ifndef WhiteMetznerCarreauYasuda_H
|
||||||
#define White_Metzner_CY_H
|
#define WhiteMetznerCarreauYasuda_H
|
||||||
|
|
||||||
#include "viscoelasticLaw.H"
|
#include "viscoelasticLaw.H"
|
||||||
|
|
||||||
|
@ -49,10 +49,10 @@ namespace Foam
|
||||||
{
|
{
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*\
|
/*---------------------------------------------------------------------------*\
|
||||||
Class White_Metzner_CY Declaration
|
Class WhiteMetznerCarreauYasuda Declaration
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
class White_Metzner_CY
|
class WhiteMetznerCarreauYasuda
|
||||||
:
|
:
|
||||||
public viscoelasticLaw
|
public viscoelasticLaw
|
||||||
{
|
{
|
||||||
|
@ -98,21 +98,21 @@ class White_Metzner_CY
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
//- Disallow default bitwise copy construct
|
//- Disallow default bitwise copy construct
|
||||||
White_Metzner_CY(const White_Metzner_CY&);
|
WhiteMetznerCarreauYasuda(const WhiteMetznerCarreauYasuda&);
|
||||||
|
|
||||||
//- Disallow default bitwise assignment
|
//- Disallow default bitwise assignment
|
||||||
void operator=(const White_Metzner_CY&);
|
void operator=(const WhiteMetznerCarreauYasuda&);
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
TypeName("White-Metzner_Carreau-Yasuda");
|
TypeName("WhiteMetznerCarreauYasuda");
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct from components
|
//- Construct from components
|
||||||
White_Metzner_CY
|
WhiteMetznerCarreauYasuda
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -123,7 +123,7 @@ public:
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
|
|
||||||
virtual ~White_Metzner_CY()
|
virtual ~WhiteMetznerCarreauYasuda()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
|
@ -24,23 +24,21 @@ License
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "White_Metzner_CM.H"
|
#include "WhiteMetznerCross.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
namespace Foam
|
|
||||||
{
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
defineTypeNameAndDebug(White_Metzner_CM, 0);
|
namespace Foam
|
||||||
addToRunTimeSelectionTable(viscoelasticLaw, White_Metzner_CM, dictionary);
|
{
|
||||||
|
defineTypeNameAndDebug(WhiteMetznerCross, 0);
|
||||||
|
addToRunTimeSelectionTable(viscoelasticLaw, WhiteMetznerCross, dictionary);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// from components
|
Foam::WhiteMetznerCross::WhiteMetznerCross
|
||||||
White_Metzner_CM::White_Metzner_CM
|
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -74,10 +72,11 @@ White_Metzner_CM::White_Metzner_CM
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
tmp<fvVectorMatrix> White_Metzner_CM::divTau(volVectorField& U) const
|
Foam::tmp<Foam::fvVectorMatrix>
|
||||||
|
Foam::WhiteMetznerCross::divTau(volVectorField& U) const
|
||||||
{
|
{
|
||||||
|
// Need to be equal to old time step (a constant)
|
||||||
dimensionedScalar etaPEff = etaP_; // need to be equal to old time step (a constant)
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
|
||||||
return
|
return
|
||||||
(
|
(
|
||||||
|
@ -89,40 +88,38 @@ tmp<fvVectorMatrix> White_Metzner_CM::divTau(volVectorField& U) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void White_Metzner_CM::correct()
|
void Foam::WhiteMetznerCross::correct()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Velocity gradient tensor
|
// Velocity gradient tensor
|
||||||
volTensorField L = fvc::grad( U() );
|
volTensorField L = fvc::grad(U());
|
||||||
|
|
||||||
// Convected derivate term
|
// Convected derivate term
|
||||||
volTensorField C = tau_ & L;
|
volTensorField C = tau_ & L;
|
||||||
|
|
||||||
// Twice the rate of deformation tensor
|
// Twice the rate of deformation tensor
|
||||||
volSymmTensorField twoD = twoSymm( L );
|
volSymmTensorField twoD = twoSymm(L);
|
||||||
|
|
||||||
// Effective viscosity and relaxation time
|
// Effective viscosity and relaxation time
|
||||||
volScalarField etaPValue = etaP_ / (1 + Foam::pow(K_* sqrt(2.0)*mag(symm(L)), (1 - m_)) );
|
volScalarField etaPValue = etaP_/
|
||||||
volScalarField lambdaValue = lambda_ / (1 + Foam::pow(L_ * sqrt(2.0)*mag(symm(L)), (1 - n_)) );
|
(1 + Foam::pow(K_* sqrt(2.0)*mag(symm(L)), (1 - m_)));
|
||||||
|
|
||||||
|
volScalarField lambdaValue = lambda_/
|
||||||
|
(1 + Foam::pow(L_ * sqrt(2.0)*mag(symm(L)), (1 - n_)));
|
||||||
|
|
||||||
// Stress transport equation
|
// Stress transport equation
|
||||||
tmp<fvSymmTensorMatrix> tauEqn
|
fvSymmTensorMatrix tauEqn
|
||||||
(
|
(
|
||||||
fvm::ddt(tau_)
|
fvm::ddt(tau_)
|
||||||
+ fvm::div(phi(), tau_)
|
+ fvm::div(phi(), tau_)
|
||||||
==
|
==
|
||||||
etaPValue / lambdaValue * twoD
|
etaPValue/lambdaValue*twoD
|
||||||
+ twoSymm( C )
|
+ twoSymm(C)
|
||||||
- fvm::Sp( 1/lambdaValue, tau_ )
|
- fvm::Sp(1/lambdaValue, tau_)
|
||||||
);
|
);
|
||||||
|
|
||||||
tauEqn().relax();
|
tauEqn.relax();
|
||||||
solve(tauEqn);
|
tauEqn.solve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
|
@ -23,7 +23,7 @@ License
|
||||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
Class
|
Class
|
||||||
White_Metzner_CM
|
WhiteMetznerCross
|
||||||
|
|
||||||
Description
|
Description
|
||||||
White-Metzner Power Law non linear viscoelastic fluid model
|
White-Metzner Power Law non linear viscoelastic fluid model
|
||||||
|
@ -34,12 +34,12 @@ Author
|
||||||
Jovani L. Favero. All rights reserved
|
Jovani L. Favero. All rights reserved
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
White_Metzner_CM.C
|
WhiteMetznerCross.C
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#ifndef White_Metzner_CM_H
|
#ifndef WhiteMetznerCross_H
|
||||||
#define White_Metzner_CM_H
|
#define WhiteMetznerCross_H
|
||||||
|
|
||||||
#include "viscoelasticLaw.H"
|
#include "viscoelasticLaw.H"
|
||||||
|
|
||||||
|
@ -49,10 +49,10 @@ namespace Foam
|
||||||
{
|
{
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*\
|
/*---------------------------------------------------------------------------*\
|
||||||
Class White_Metzner_CM Declaration
|
Class WhiteMetznerCross Declaration
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
class White_Metzner_CM
|
class WhiteMetznerCross
|
||||||
:
|
:
|
||||||
public viscoelasticLaw
|
public viscoelasticLaw
|
||||||
{
|
{
|
||||||
|
@ -92,21 +92,21 @@ class White_Metzner_CM
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
//- Disallow default bitwise copy construct
|
//- Disallow default bitwise copy construct
|
||||||
White_Metzner_CM(const White_Metzner_CM&);
|
WhiteMetznerCross(const WhiteMetznerCross&);
|
||||||
|
|
||||||
//- Disallow default bitwise assignment
|
//- Disallow default bitwise assignment
|
||||||
void operator=(const White_Metzner_CM&);
|
void operator=(const WhiteMetznerCross&);
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
TypeName("White-Metzner_Cross-Model");
|
TypeName("WhiteMetznerCross");
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct from components
|
//- Construct from components
|
||||||
White_Metzner_CM
|
WhiteMetznerCross
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -117,7 +117,7 @@ public:
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
|
|
||||||
virtual ~White_Metzner_CM()
|
virtual ~WhiteMetznerCross()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
|
@ -24,23 +24,25 @@ License
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "White_Metzner_Larson.H"
|
#include "WhiteMetznerLarson.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
namespace Foam
|
|
||||||
{
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
defineTypeNameAndDebug(White_Metzner_Larson, 0);
|
namespace Foam
|
||||||
addToRunTimeSelectionTable(viscoelasticLaw, White_Metzner_Larson, dictionary);
|
{
|
||||||
|
defineTypeNameAndDebug(WhiteMetznerLarson, 0);
|
||||||
|
addToRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
viscoelasticLaw,
|
||||||
|
WhiteMetznerLarson,
|
||||||
|
dictionary
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// from components
|
Foam::WhiteMetznerLarson::WhiteMetznerLarson
|
||||||
White_Metzner_Larson::White_Metzner_Larson
|
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -71,10 +73,13 @@ White_Metzner_Larson::White_Metzner_Larson
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
tmp<fvVectorMatrix> White_Metzner_Larson::divTau(volVectorField& U) const
|
Foam::tmp<Foam::fvVectorMatrix> Foam::WhiteMetznerLarson::divTau
|
||||||
|
(
|
||||||
|
volVectorField& U
|
||||||
|
) const
|
||||||
{
|
{
|
||||||
|
// Meed to be equal to old time step (a constant)
|
||||||
dimensionedScalar etaPEff = etaP_; // need to be equal to old time step (a constant)
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
|
||||||
return
|
return
|
||||||
(
|
(
|
||||||
|
@ -82,13 +87,11 @@ tmp<fvVectorMatrix> White_Metzner_Larson::divTau(volVectorField& U) const
|
||||||
- fvc::laplacian(etaPEff/rho_, U, "laplacian(etaPEff,U)")
|
- fvc::laplacian(etaPEff/rho_, U, "laplacian(etaPEff,U)")
|
||||||
+ fvm::laplacian( (etaPEff + etaS_)/rho_, U, "laplacian(etaPEff+etaS,U)")
|
+ fvm::laplacian( (etaPEff + etaS_)/rho_, U, "laplacian(etaPEff+etaS,U)")
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void White_Metzner_Larson::correct()
|
void Foam::WhiteMetznerLarson::correct()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Velocity gradient tensor
|
// Velocity gradient tensor
|
||||||
volTensorField L = fvc::grad( U() );
|
volTensorField L = fvc::grad( U() );
|
||||||
|
|
||||||
|
@ -99,23 +102,19 @@ void White_Metzner_Larson::correct()
|
||||||
volSymmTensorField twoD = twoSymm( L );
|
volSymmTensorField twoD = twoSymm( L );
|
||||||
|
|
||||||
// Stress transport equation
|
// Stress transport equation
|
||||||
tmp<fvSymmTensorMatrix> tauEqn
|
fvSymmTensorMatrix tauEqn
|
||||||
(
|
(
|
||||||
fvm::ddt(tau_)
|
fvm::ddt(tau_)
|
||||||
+ fvm::div(phi(), tau_)
|
+ fvm::div(phi(), tau_)
|
||||||
==
|
==
|
||||||
etaP_ / lambda_ * twoD
|
etaP_/lambda_*twoD
|
||||||
+ twoSymm( C )
|
+ twoSymm(C)
|
||||||
- fvm::Sp( (1 + a_*lambda_* sqrt(2.0)*mag(symm(L)) )/lambda_, tau_ )
|
- fvm::Sp((1 + a_*lambda_* sqrt(2.0)*mag(symm(L)) )/lambda_, tau_)
|
||||||
);
|
);
|
||||||
|
|
||||||
tauEqn().relax();
|
tauEqn.relax();
|
||||||
solve(tauEqn);
|
tauEqn.solve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
|
@ -23,7 +23,7 @@ License
|
||||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
Class
|
Class
|
||||||
White_Metzner_Larson
|
WhiteMetznerLarson
|
||||||
|
|
||||||
Description
|
Description
|
||||||
White-Metzner non linear viscoelastic fluid model (Larson, R. G.,
|
White-Metzner non linear viscoelastic fluid model (Larson, R. G.,
|
||||||
|
@ -33,12 +33,12 @@ Author
|
||||||
Jovani L. Favero. All rights reserved
|
Jovani L. Favero. All rights reserved
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
White_Metzner_Larson.C
|
WhiteMetznerLarson.C
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#ifndef White_Metzner_Larson_H
|
#ifndef WhiteMetznerLarson_H
|
||||||
#define White_Metzner_Larson_H
|
#define WhiteMetznerLarson_H
|
||||||
|
|
||||||
#include "viscoelasticLaw.H"
|
#include "viscoelasticLaw.H"
|
||||||
|
|
||||||
|
@ -48,10 +48,10 @@ namespace Foam
|
||||||
{
|
{
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*\
|
/*---------------------------------------------------------------------------*\
|
||||||
Class White_Metzner_Larson Declaration
|
Class WhiteMetznerLarson Declaration
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
class White_Metzner_Larson
|
class WhiteMetznerLarson
|
||||||
:
|
:
|
||||||
public viscoelasticLaw
|
public viscoelasticLaw
|
||||||
{
|
{
|
||||||
|
@ -82,21 +82,21 @@ class White_Metzner_Larson
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
//- Disallow default bitwise copy construct
|
//- Disallow default bitwise copy construct
|
||||||
White_Metzner_Larson(const White_Metzner_Larson&);
|
WhiteMetznerLarson(const WhiteMetznerLarson&);
|
||||||
|
|
||||||
//- Disallow default bitwise assignment
|
//- Disallow default bitwise assignment
|
||||||
void operator=(const White_Metzner_Larson&);
|
void operator=(const WhiteMetznerLarson&);
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
TypeName("White-Metzner_Larson");
|
TypeName("WhiteMetznerLarson");
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct from components
|
//- Construct from components
|
||||||
White_Metzner_Larson
|
WhiteMetznerLarson
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -107,7 +107,7 @@ public:
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
|
|
||||||
virtual ~White_Metzner_Larson()
|
virtual ~WhiteMetznerLarson()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
|
@ -27,20 +27,17 @@ License
|
||||||
#include "XPP_DE.H"
|
#include "XPP_DE.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
defineTypeNameAndDebug(XPP_DE, 0);
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
addToRunTimeSelectionTable(viscoelasticLaw, XPP_DE, dictionary);
|
||||||
|
}
|
||||||
defineTypeNameAndDebug(XPP_DE, 0);
|
|
||||||
addToRunTimeSelectionTable(viscoelasticLaw, XPP_DE, dictionary);
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// from components
|
Foam::XPP_DE::XPP_DE
|
||||||
XPP_DE::XPP_DE
|
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -117,9 +114,8 @@ XPP_DE::XPP_DE
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
tmp<fvVectorMatrix> XPP_DE::divTau(volVectorField& U) const
|
Foam::tmp<Foam::fvVectorMatrix> Foam::XPP_DE::divTau(volVectorField& U) const
|
||||||
{
|
{
|
||||||
|
|
||||||
dimensionedScalar etaPEff = etaP_;
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -132,17 +128,16 @@ tmp<fvVectorMatrix> XPP_DE::divTau(volVectorField& U) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void XPP_DE::correct()
|
void Foam::XPP_DE::correct()
|
||||||
{
|
{
|
||||||
// Velocity gradient tensor
|
// Velocity gradient tensor
|
||||||
volTensorField L = fvc::grad( U() );
|
volTensorField L = fvc::grad(U());
|
||||||
|
|
||||||
// Convected derivate term
|
// Convected derivate term
|
||||||
volTensorField C = S_ & L;
|
volTensorField C = S_ & L;
|
||||||
|
|
||||||
// Twice the rate of deformation tensor
|
// Twice the rate of deformation tensor
|
||||||
volSymmTensorField twoD = twoSymm( L );
|
volSymmTensorField twoD = twoSymm(L);
|
||||||
|
|
||||||
|
|
||||||
// Evolution of orientation
|
// Evolution of orientation
|
||||||
tmp<fvSymmTensorMatrix> SEqn
|
tmp<fvSymmTensorMatrix> SEqn
|
||||||
|
@ -150,11 +145,16 @@ void XPP_DE::correct()
|
||||||
fvm::ddt(S_)
|
fvm::ddt(S_)
|
||||||
+ fvm::div(phi(), S_)
|
+ fvm::div(phi(), S_)
|
||||||
==
|
==
|
||||||
twoSymm( C )
|
twoSymm(C)
|
||||||
- fvm::Sp( (twoD && S_) , S_ )
|
- fvm::Sp((twoD && S_) , S_)
|
||||||
- fvm::Sp( 1/lambdaOb_/Foam::sqr(Lambda_)*(1 - alpha_ - 3*alpha_*Foam::pow(Lambda_, 4)*tr(S_ & S_) ), S_ )
|
- fvm::Sp
|
||||||
- 1/lambdaOb_/Foam::sqr(Lambda_)*( 3*alpha_*Foam::pow(Lambda_, 4)*(S_ & S_) - (1 - alpha_)/3*I_ )
|
(
|
||||||
|
1/lambdaOb_/Foam::sqr(Lambda_)*
|
||||||
|
(1 - alpha_ - 3*alpha_*Foam::pow(Lambda_, 4)*tr(S_ & S_)),
|
||||||
|
S_
|
||||||
|
)
|
||||||
|
- 1/lambdaOb_/Foam::sqr(Lambda_)*
|
||||||
|
(3*alpha_*Foam::pow(Lambda_, 4)*(S_ & S_) - (1 - alpha_)/3*I_)
|
||||||
);
|
);
|
||||||
|
|
||||||
SEqn().relax();
|
SEqn().relax();
|
||||||
|
@ -162,28 +162,22 @@ void XPP_DE::correct()
|
||||||
|
|
||||||
|
|
||||||
// Evolution of the backbone stretch
|
// Evolution of the backbone stretch
|
||||||
tmp<fvScalarMatrix> LambdaEqn
|
fvScalarMatrix LambdaEqn
|
||||||
(
|
(
|
||||||
fvm::ddt(Lambda_)
|
fvm::ddt(Lambda_)
|
||||||
+ fvm::div(phi(), Lambda_)
|
+ fvm::div(phi(), Lambda_)
|
||||||
==
|
==
|
||||||
fvm::Sp( (twoD && S_) / 2 , Lambda_ )
|
fvm::Sp((twoD && S_)/2 , Lambda_)
|
||||||
- fvm::Sp( Foam::exp( 2/q_*(Lambda_ - 1))/lambdaOs_ , Lambda_ )
|
- fvm::Sp(Foam::exp( 2/q_*(Lambda_ - 1))/lambdaOs_ , Lambda_)
|
||||||
+ Foam::exp( 2/q_*(Lambda_ - 1))/lambdaOs_
|
+ Foam::exp(2/q_*(Lambda_ - 1))/lambdaOs_
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
LambdaEqn().relax();
|
LambdaEqn.relax();
|
||||||
solve(LambdaEqn);
|
LambdaEqn.solve();
|
||||||
|
|
||||||
// Viscoelastic stress
|
// Viscoelastic stress
|
||||||
tau_ = etaP_/lambdaOb_ * (3*Foam::sqr(Lambda_)*S_ - I_);
|
tau_ = etaP_/lambdaOb_*(3*Foam::sqr(Lambda_)*S_ - I_);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -27,19 +27,17 @@ License
|
||||||
#include "XPP_SE.H"
|
#include "XPP_SE.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
defineTypeNameAndDebug(XPP_SE, 0);
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
addToRunTimeSelectionTable(viscoelasticLaw, XPP_SE, dictionary);
|
||||||
|
}
|
||||||
defineTypeNameAndDebug(XPP_SE, 0);
|
|
||||||
addToRunTimeSelectionTable(viscoelasticLaw, XPP_SE, dictionary);
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
XPP_SE::XPP_SE
|
Foam::XPP_SE::XPP_SE
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -86,7 +84,7 @@ XPP_SE::XPP_SE
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
tmp<fvVectorMatrix> XPP_SE::divTau(volVectorField& U) const
|
Foam::tmp<Foam::fvVectorMatrix> Foam::XPP_SE::divTau(volVectorField& U) const
|
||||||
{
|
{
|
||||||
|
|
||||||
dimensionedScalar etaPEff = etaP_;
|
dimensionedScalar etaPEff = etaP_;
|
||||||
|
@ -101,47 +99,50 @@ tmp<fvVectorMatrix> XPP_SE::divTau(volVectorField& U) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void XPP_SE::correct()
|
void Foam::XPP_SE::correct()
|
||||||
{
|
{
|
||||||
// Velocity gradient tensor
|
// Velocity gradient tensor
|
||||||
volTensorField L = fvc::grad( U() );
|
volTensorField L = fvc::grad(U());
|
||||||
|
|
||||||
// Convected derivate term
|
// Convected derivate term
|
||||||
volTensorField C = tau_ & L;
|
volTensorField C = tau_ & L;
|
||||||
|
|
||||||
// Twice the rate of deformation tensor
|
// Twice the rate of deformation tensor
|
||||||
volSymmTensorField twoD = twoSymm( L );
|
volSymmTensorField twoD = twoSymm(L);
|
||||||
|
|
||||||
// Lambda (Backbone stretch)
|
// Lambda (Backbone stretch)
|
||||||
volScalarField Lambda = Foam::sqrt( 1 + tr(tau_)*lambdaOb_/3/etaP_ );
|
volScalarField Lambda = Foam::sqrt(1 + tr(tau_)*lambdaOb_/3/etaP_);
|
||||||
|
|
||||||
// lambdaS (stretch relaxation time)
|
// lambdaS (stretch relaxation time)
|
||||||
volScalarField lambdaS = lambdaOs_*Foam::exp( -2/q_*(Lambda - 1));
|
volScalarField lambdaS = lambdaOs_*Foam::exp(-2/q_*(Lambda - 1));
|
||||||
|
|
||||||
// Extra function
|
// Extra function
|
||||||
volScalarField fTau = 2*lambdaOb_/lambdaS*(1 - 1/Lambda) + 1/Foam::sqr(Lambda)*(1 - alpha_*tr(tau_ & tau_)/3/Foam::sqr(etaP_/lambdaOb_) );
|
volScalarField fTau = 2*lambdaOb_/lambdaS*(1 - 1/Lambda)
|
||||||
|
+ 1/Foam::sqr(Lambda)*
|
||||||
|
(1 - alpha_*tr(tau_ & tau_)/3/Foam::sqr(etaP_/lambdaOb_));
|
||||||
|
|
||||||
// Stress transport equation
|
// Stress transport equation
|
||||||
tmp<fvSymmTensorMatrix> tauEqn
|
fvSymmTensorMatrix tauEqn
|
||||||
(
|
(
|
||||||
fvm::ddt(tau_)
|
fvm::ddt(tau_)
|
||||||
+ fvm::div(phi(), tau_)
|
+ fvm::div(phi(), tau_)
|
||||||
==
|
==
|
||||||
etaP_ / lambdaOb_ * twoD
|
etaP_/lambdaOb_*twoD
|
||||||
+ twoSymm( C )
|
+ twoSymm(C)
|
||||||
- fvm::Sp(1/lambdaOb_*fTau, tau_)
|
- fvm::Sp(1/lambdaOb_*fTau, tau_)
|
||||||
- (
|
- (
|
||||||
1/lambdaOb_*( alpha_*lambdaOb_/etaP_*(tau_ & tau_) + etaP_/lambdaOb_*(fTau -1)*I_ ) )
|
1/lambdaOb_*
|
||||||
|
(
|
||||||
|
alpha_*lambdaOb_/etaP_*(tau_ & tau_)
|
||||||
|
+ etaP_/lambdaOb_*(fTau - 1)*I_
|
||||||
|
)
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
tauEqn().relax();
|
tauEqn.relax();
|
||||||
solve(tauEqn);
|
tauEqn.solve();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -27,20 +27,18 @@ License
|
||||||
#include "multiMode.H"
|
#include "multiMode.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
defineTypeNameAndDebug(multiMode, 0);
|
||||||
|
addToRunTimeSelectionTable(viscoelasticLaw, multiMode, dictionary);
|
||||||
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
defineTypeNameAndDebug(multiMode, 0);
|
|
||||||
addToRunTimeSelectionTable(viscoelasticLaw, multiMode, dictionary);
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// from components
|
Foam::multiMode::multiMode
|
||||||
multiMode::multiMode
|
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -67,24 +65,6 @@ multiMode::multiMode
|
||||||
symmTensor::zero
|
symmTensor::zero
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
nulo_
|
|
||||||
(
|
|
||||||
IOobject
|
|
||||||
(
|
|
||||||
"nulo",
|
|
||||||
U.time().timeName(),
|
|
||||||
U.mesh(),
|
|
||||||
IOobject::NO_READ,
|
|
||||||
IOobject::NO_WRITE
|
|
||||||
),
|
|
||||||
U.mesh(),
|
|
||||||
dimensionedSymmTensor
|
|
||||||
(
|
|
||||||
"zero",
|
|
||||||
dimensionSet(1, -1, -2, 0, 0, 0, 0),
|
|
||||||
symmTensor::zero
|
|
||||||
)
|
|
||||||
),
|
|
||||||
models_()
|
models_()
|
||||||
{
|
{
|
||||||
PtrList<entry> modelEntries(dict.lookup("models"));
|
PtrList<entry> modelEntries(dict.lookup("models"));
|
||||||
|
@ -109,7 +89,8 @@ multiMode::multiMode
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
tmp<fvVectorMatrix> multiMode::divTau(volVectorField& U) const
|
Foam::tmp<Foam::fvVectorMatrix>
|
||||||
|
Foam::multiMode::divTau(volVectorField& U) const
|
||||||
{
|
{
|
||||||
tmp<fvVectorMatrix> divMatrix = models_[0].divTau(U);
|
tmp<fvVectorMatrix> divMatrix = models_[0].divTau(U);
|
||||||
|
|
||||||
|
@ -122,10 +103,9 @@ tmp<fvVectorMatrix> multiMode::divTau(volVectorField& U) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
tmp<volSymmTensorField> multiMode::tau() const
|
Foam::tmp<Foam::volSymmTensorField> Foam::multiMode::tau() const
|
||||||
{
|
{
|
||||||
|
tau_ *= 0;
|
||||||
tau_ = nulo_;
|
|
||||||
|
|
||||||
for (label i = 0; i < models_.size(); i++)
|
for (label i = 0; i < models_.size(); i++)
|
||||||
{
|
{
|
||||||
|
@ -133,11 +113,10 @@ tmp<volSymmTensorField> multiMode::tau() const
|
||||||
}
|
}
|
||||||
|
|
||||||
return tau_;
|
return tau_;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void multiMode::correct()
|
void Foam::multiMode::correct()
|
||||||
{
|
{
|
||||||
forAll (models_, i)
|
forAll (models_, i)
|
||||||
{
|
{
|
||||||
|
@ -146,12 +125,7 @@ void multiMode::correct()
|
||||||
}
|
}
|
||||||
|
|
||||||
tau();
|
tau();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -59,9 +59,6 @@ class multiMode
|
||||||
//- Transported viscoelastic stress
|
//- Transported viscoelastic stress
|
||||||
mutable volSymmTensorField tau_;
|
mutable volSymmTensorField tau_;
|
||||||
|
|
||||||
//- A null (zero) symmetric tensor
|
|
||||||
volSymmTensorField nulo_;
|
|
||||||
|
|
||||||
//- List of models
|
//- List of models
|
||||||
PtrList<viscoelasticLaw> models_;
|
PtrList<viscoelasticLaw> models_;
|
||||||
|
|
||||||
|
|
|
@ -29,12 +29,7 @@ License
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
Foam::autoPtr<Foam::viscoelasticLaw> Foam::viscoelasticLaw::New
|
||||||
{
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
autoPtr<viscoelasticLaw> viscoelasticLaw::New
|
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -66,8 +61,4 @@ autoPtr<viscoelasticLaw> viscoelasticLaw::New
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -30,15 +30,14 @@ License
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
defineTypeNameAndDebug(viscoelasticLaw, 0);
|
||||||
|
defineRunTimeSelectionTable(viscoelasticLaw, dictionary);
|
||||||
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
defineTypeNameAndDebug(viscoelasticLaw, 0);
|
|
||||||
defineRunTimeSelectionTable(viscoelasticLaw, dictionary);
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
viscoelasticLaw::viscoelasticLaw
|
Foam::viscoelasticLaw::viscoelasticLaw
|
||||||
(
|
(
|
||||||
const word& name,
|
const word& name,
|
||||||
const volVectorField& U,
|
const volVectorField& U,
|
||||||
|
@ -51,8 +50,4 @@ viscoelasticLaw::viscoelasticLaw
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
} // End namespace Foam
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,60 +1,56 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# Source tutorial clean functions
|
|
||||||
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
|
|
||||||
|
|
||||||
cd PTT-Exponential
|
cd PTT-Exponential
|
||||||
cleanCase
|
./Allclean
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
cd DCPP
|
cd DCPP
|
||||||
cleanCase
|
./Allclean
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
cd Giesekus
|
cd Giesekus
|
||||||
cleanCase
|
./Allclean
|
||||||
|
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
cd FENE-CR
|
cd FENE-CR
|
||||||
rm -rf constant/polyMesh/sets > /dev/null 2>&1
|
./Allclean
|
||||||
cleanCase
|
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
cd FENE-P
|
cd FENE-P
|
||||||
cleanCase
|
./Allclean
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
cd Feta-PTT
|
cd Feta-PTT
|
||||||
cleanCase
|
./Allclean
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
cd Leonov
|
cd Leonov
|
||||||
cleanCase
|
./Allclean
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
cd Oldroyd-B
|
cd Oldroyd-B
|
||||||
cleanCase
|
./Allclean
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
cd PP
|
cd S-MDCPP
|
||||||
cleanCase
|
./Allclean
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
cd PTT-Linear
|
cd PTT-Linear
|
||||||
cleanCase
|
./Allclean
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
cd White-Metzner/Carreau-Yasuda
|
cd WhiteMetzner/CarreauYasuda
|
||||||
cleanCase
|
./Allclean
|
||||||
|
|
||||||
cd ../..
|
cd ../..
|
||||||
cd XPP_DE
|
cd XPP_DE
|
||||||
cleanCase
|
./Allclean
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
cd XPP_SE
|
cd XPP_SE
|
||||||
cleanCase
|
./Allclean
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
|
|
|
@ -1,39 +1,55 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# Source tutorial run functions
|
|
||||||
. $WM_PROJECT_DIR/bin/tools/RunFunctions
|
|
||||||
|
|
||||||
application="viscoelasticFluidFoam"
|
|
||||||
|
|
||||||
cd FENE-CR
|
|
||||||
|
|
||||||
runApplication gmshToFoam mesh.msh
|
|
||||||
cp boundary constant/polyMesh/boundary
|
|
||||||
echo "FENE-CR: execution time ~ 320 s in a Core 2 Duo 2.0 Ghz processor"
|
|
||||||
runApplication $application
|
|
||||||
|
|
||||||
cd ..
|
|
||||||
cd PTT-Exponential
|
cd PTT-Exponential
|
||||||
runApplication blockMesh
|
./Allrun
|
||||||
echo "PTT-Exponential: execution time ~ 4250 s in a Core 2 Duo 2.0 Ghz processor"
|
|
||||||
runApplication $application
|
|
||||||
|
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
cd DCPP
|
cd DCPP
|
||||||
|
./Allrun
|
||||||
runApplication blockMesh
|
|
||||||
echo "DCPP: execution time ~ 41830 s in a Core 2 Duo 2.0 Ghz processor"
|
|
||||||
runApplication $application
|
|
||||||
runApplication PSD
|
|
||||||
runApplication sample
|
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
cd Giesekus
|
cd Giesekus
|
||||||
|
./Allrun
|
||||||
|
|
||||||
runApplication blockMesh
|
|
||||||
echo "Giesekus: execution time ~ 91195 s in a Core 2 Duo 2.0 Ghz processor"
|
cd ..
|
||||||
runApplication $application
|
cd FENE-CR
|
||||||
runApplication stressDifferences
|
./Allrun
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
cd FENE-P
|
||||||
|
./Allrun
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
cd Feta-PTT
|
||||||
|
./Allrun
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
cd Leonov
|
||||||
|
./Allrun
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
cd Oldroyd-B
|
||||||
|
./Allrun
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
cd S-MDCPP
|
||||||
|
./Allrun
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
cd PTT-Linear
|
||||||
|
./Allrun
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
cd White-Metzner/Carreau-Yasuda
|
||||||
|
./Allrun
|
||||||
|
|
||||||
|
cd ../..
|
||||||
|
cd XPP_DE
|
||||||
|
./Allrun
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
cd XPP_SE
|
||||||
|
./Allrun
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4.1-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
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
|
|
||||||
root "/home/jovani/jovaniFoam/foamNewSolver/cases/recentCases/upwind";
|
|
||||||
case "DCPP";
|
|
||||||
instance "0";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volScalarField;
|
class volScalarField;
|
||||||
object Lambdafirst;
|
object Lambdafirst;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
dimensions [0 0 0 0 0 0 0];
|
dimensions [0 0 0 0 0 0 0];
|
||||||
|
@ -51,5 +43,4 @@ boundaryField
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4.1-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
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
|
|
||||||
root "/home/jovani/jovaniFoam/foamNewSolver/cases/recentCases/upwind";
|
|
||||||
case "DCPP";
|
|
||||||
instance "0";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volScalarField;
|
class volScalarField;
|
||||||
object Lambdafourth;
|
object Lambdafourth;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
dimensions [0 0 0 0 0 0 0];
|
dimensions [0 0 0 0 0 0 0];
|
||||||
|
@ -51,5 +43,4 @@ boundaryField
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4.1-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
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
|
|
||||||
root "/home/jovani/jovaniFoam/foamNewSolver/cases/recentCases/upwind";
|
|
||||||
case "DCPP";
|
|
||||||
instance "0";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volScalarField;
|
class volScalarField;
|
||||||
object Lambdasecond;
|
object Lambdasecond;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
dimensions [0 0 0 0 0 0 0];
|
dimensions [0 0 0 0 0 0 0];
|
||||||
|
@ -51,5 +43,4 @@ boundaryField
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4.1-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
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
|
|
||||||
root "/home/jovani/jovaniFoam/foamNewSolver/cases/recentCases/upwind";
|
|
||||||
case "DCPP";
|
|
||||||
instance "0";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volScalarField;
|
class volScalarField;
|
||||||
object Lambdathird;
|
object Lambdathird;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
dimensions [0 0 0 0 0 0 0];
|
dimensions [0 0 0 0 0 0 0];
|
||||||
|
@ -51,5 +43,4 @@ boundaryField
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4.1-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
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
|
|
||||||
root "/home/jovani/jovaniFoam/foamNewSolver/cases/recentCases/upwind";
|
|
||||||
case "DCPP";
|
|
||||||
instance "0";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volSymmTensorField;
|
class volSymmTensorField;
|
||||||
object Sfirst;
|
object Sfirst;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
dimensions [0 0 0 0 0 0 0];
|
dimensions [0 0 0 0 0 0 0];
|
||||||
|
@ -51,5 +43,4 @@ boundaryField
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4.1-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
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
|
|
||||||
root "/home/jovani/jovaniFoam/foamNewSolver/cases/recentCases/upwind";
|
|
||||||
case "DCPP";
|
|
||||||
instance "0";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volSymmTensorField;
|
class volSymmTensorField;
|
||||||
object Sfourth;
|
object Sfourth;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
dimensions [0 0 0 0 0 0 0];
|
dimensions [0 0 0 0 0 0 0];
|
||||||
|
@ -51,5 +43,4 @@ boundaryField
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4.1-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
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
|
|
||||||
root "/home/jovani/jovaniFoam/foamNewSolver/cases/recentCases/upwind";
|
|
||||||
case "DCPP";
|
|
||||||
instance "0";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volSymmTensorField;
|
class volSymmTensorField;
|
||||||
object Ssecond;
|
object Ssecond;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
dimensions [0 0 0 0 0 0 0];
|
dimensions [0 0 0 0 0 0 0];
|
||||||
|
@ -51,5 +43,4 @@ boundaryField
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4.1-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
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
|
|
||||||
root "/home/jovani/jovaniFoam/foamNewSolver/cases/recentCases/upwind";
|
|
||||||
case "DCPP";
|
|
||||||
instance "0";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volSymmTensorField;
|
class volSymmTensorField;
|
||||||
object Sthird;
|
object Sthird;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
dimensions [0 0 0 0 0 0 0];
|
dimensions [0 0 0 0 0 0 0];
|
||||||
|
@ -51,5 +43,4 @@ boundaryField
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4.1-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
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
|
|
||||||
root "/home/jovani/jovaniFoam/foamNewSolver/cases/recentCases/upwind";
|
|
||||||
case "DCPP";
|
|
||||||
instance "0";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volVectorField;
|
class volVectorField;
|
||||||
object U;
|
object U;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
dimensions [0 1 -1 0 0 0 0];
|
dimensions [0 1 -1 0 0 0 0];
|
||||||
|
@ -52,5 +44,4 @@ boundaryField
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4.1-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
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
|
|
||||||
root "/home/jovani/jovaniFoam/foamNewSolver/cases/recentCases/upwind";
|
|
||||||
case "DCPP";
|
|
||||||
instance "0";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volScalarField;
|
class volScalarField;
|
||||||
object p;
|
object p;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
dimensions [0 2 -2 0 0 0 0];
|
dimensions [0 2 -2 0 0 0 0];
|
||||||
|
@ -51,5 +43,4 @@ boundaryField
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4.1-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
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
|
|
||||||
root "/home/jovani/jovaniFoam/foamNewSolver/cases/recentCases/upwind";
|
|
||||||
case "DCPP";
|
|
||||||
instance "0";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volSymmTensorField;
|
class volSymmTensorField;
|
||||||
object tau;
|
object tau;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
dimensions [1 -1 -2 0 0 0 0];
|
dimensions [1 -1 -2 0 0 0 0];
|
||||||
|
@ -51,5 +43,4 @@ boundaryField
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
9
tutorials/viscoelastic/viscoelasticFluidFoam/DCPP/Allclean
Executable file
9
tutorials/viscoelastic/viscoelasticFluidFoam/DCPP/Allclean
Executable file
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Source tutorial clean functions
|
||||||
|
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
|
||||||
|
|
||||||
|
cleanCase
|
||||||
|
rm -R -f sets
|
||||||
|
echo "done!"
|
||||||
|
|
22
tutorials/viscoelastic/viscoelasticFluidFoam/DCPP/Allrun
Executable file
22
tutorials/viscoelastic/viscoelasticFluidFoam/DCPP/Allrun
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Source tutorial run functions
|
||||||
|
. $WM_PROJECT_DIR/bin/tools/RunFunctions
|
||||||
|
|
||||||
|
# Get application name
|
||||||
|
application=`getApplication`
|
||||||
|
|
||||||
|
echo "Running blockMesh application"
|
||||||
|
runApplication blockMesh
|
||||||
|
|
||||||
|
echo "Running viscoelasticFluidFoam solver"
|
||||||
|
echo "DCPP model: execution time ~ 41830 s in a Core 2 Duo 2.0 Ghz processor"
|
||||||
|
runApplication $application
|
||||||
|
|
||||||
|
echo "Running PSD application"
|
||||||
|
runApplication PSD
|
||||||
|
|
||||||
|
echo "Running sample application"
|
||||||
|
runApplication sample
|
||||||
|
|
||||||
|
echo "done!"
|
35
tutorials/viscoelastic/viscoelasticFluidFoam/DCPP/README
Normal file
35
tutorials/viscoelastic/viscoelasticFluidFoam/DCPP/README
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
|
| \\ / O peration | Version: 1.6-ext |
|
||||||
|
| \\ / A nd | Web: www.extend-project.de |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
#
|
||||||
|
#+TITLE: *DCPP viscoelastic constitutive model README file for version 1.6-ext*
|
||||||
|
#+AUTHOR: Jovani
|
||||||
|
#+DATE: 05 October 2010
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
* This is a simulation case for a viscoelastic fluid described by the Double
|
||||||
|
Convected Pom-Pom constitutive model (DCPP).
|
||||||
|
The geometry was the 4:1 plane contraction. This is a well studied
|
||||||
|
geometry in viscoelastic fluid flow research.
|
||||||
|
|
||||||
|
More details about the model or parameters used, as also informations
|
||||||
|
about the geometry, can be found at:
|
||||||
|
|
||||||
|
*** CLEMEUR, N.; RUTGERS, R. P. G.; DEBBAUT, B. Numerical simulation of abrupt
|
||||||
|
contraction flows using the double convected pom-pom model. Journal of Non-
|
||||||
|
Newtonian Fluid Mechanics, v. 117, n. 2-3, p. 193 – 209, 2004. ISSN 0377-
|
||||||
|
0257.
|
||||||
|
<http://www.sciencedirect.com/science/article/B6TGV-4C47GVS-3/2/d9d170224e2a3ee5f6560b5ec5875662>
|
||||||
|
|
||||||
|
|
||||||
|
* The results for this case using viscoelasticFluidFoam solver can be found at:
|
||||||
|
|
||||||
|
*** Journal of Non-Newtonian Fluid Mechanics:
|
||||||
|
<http://www.sciencedirect.com/science/article/B6TGV-511BYYF-1/2/53b604790dda6f271bb2e82870ba0c2a>
|
||||||
|
|
||||||
|
|
|
@ -1,28 +1,19 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- 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;
|
||||||
|
|
||||||
root "/opt/OpenFOAM/jovani-1.4.1/run/tutorials/viscoelasticFluidFoam";
|
|
||||||
case "DCPP";
|
|
||||||
instance "constant";
|
|
||||||
local "polyMesh";
|
|
||||||
|
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object blockMeshDict;
|
object blockMeshDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
convertToMeters 0.001;
|
convertToMeters 0.001;
|
||||||
|
|
||||||
vertices
|
vertices
|
||||||
|
@ -104,5 +95,4 @@ mergePatchPairs
|
||||||
(
|
(
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -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: exported |
|
| \\ / A nd | Web: www.extend-project.de |
|
||||||
| \\/ M anipulation | Web: http://www.OpenFOAM.org |
|
| \\/ M anipulation | |
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
FoamFile
|
FoamFile
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
/*---------------------------------------------------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4 |
|
| \\ / 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;
|
||||||
|
|
||||||
root "";
|
|
||||||
case "";
|
|
||||||
instance "";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object viscoelasticProperties;
|
object viscoelasticProperties;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -41,7 +33,6 @@ zeta 0.2 0.2 0.07 0.05
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
rheology
|
rheology
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -100,9 +91,6 @@ rheology
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- 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;
|
||||||
|
|
||||||
root "/opt/OpenFOAM/jovani-1.4.1/run/tutorials/viscoelasticFluidFoam";
|
|
||||||
case "DCPP";
|
|
||||||
instance "system";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object controlDict;
|
object controlDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
application viscoelasticFluidFoam;
|
application viscoelasticFluidFoam;
|
||||||
|
@ -60,5 +52,4 @@ maxCo 0.8;
|
||||||
|
|
||||||
maxDeltaT 0.01;
|
maxDeltaT 0.01;
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,28 +1,19 @@
|
||||||
/*---------------------------------------------------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4 |
|
| \\ / 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;
|
||||||
|
|
||||||
root "";
|
|
||||||
case "";
|
|
||||||
instance "";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object decomposeParDict;
|
object decomposeParDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
numberOfSubdomains 2;
|
numberOfSubdomains 2;
|
||||||
|
|
||||||
method metis;
|
method metis;
|
||||||
|
@ -60,5 +51,4 @@ roots
|
||||||
(
|
(
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,31 +1,22 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- 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;
|
||||||
|
|
||||||
root "/home/jovani/OpenFOAM/jovani-1.4.1/run/tutorials/viscoelasticFluidFoam";
|
|
||||||
case "DCPP";
|
|
||||||
instance "system";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object fvSchemes;
|
object fvSchemes;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
ddtSchemes
|
ddtSchemes
|
||||||
{
|
{
|
||||||
default CrankNicholson 1;
|
default Euler;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gradSchemes
|
gradSchemes
|
||||||
|
@ -33,23 +24,22 @@ gradSchemes
|
||||||
default Gauss linear;
|
default Gauss linear;
|
||||||
grad(p) Gauss linear;
|
grad(p) Gauss linear;
|
||||||
grad(U) Gauss linear;
|
grad(U) Gauss linear;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
divSchemes
|
divSchemes
|
||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
div(phi,U) Gauss upwind; //GammaV 0.5;
|
div(phi,U) Gauss Minmod; //upwind;
|
||||||
|
|
||||||
div(phi,Sfirst) Gauss upwind; //Gamma 0.5;
|
div(phi,Sfirst) Gauss Minmod; //upwind;
|
||||||
div(phi,Ssecond) Gauss upwind; //Gamma 0.5;
|
div(phi,Ssecond) Gauss Minmod; //upwind;
|
||||||
div(phi,Sthird) Gauss upwind; //Gamma 0.5;
|
div(phi,Sthird) Gauss Minmod; //upwind;
|
||||||
div(phi,Sfourth) Gauss upwind; //Gamma 0.5;
|
div(phi,Sfourth) Gauss Minmod; //upwind;
|
||||||
|
|
||||||
div(phi,Lambdafirst) Gauss upwind; //Gamma 0.5;
|
div(phi,Lambdafirst) Gauss Minmod; //upwind;
|
||||||
div(phi,Lambdasecond) Gauss upwind; //Gamma 0.5;
|
div(phi,Lambdasecond) Gauss Minmod; //upwind;
|
||||||
div(phi,Lambdathird) Gauss upwind; //Gamma 0.5;
|
div(phi,Lambdathird) Gauss Minmod; //upwind;
|
||||||
div(phi,Lambdafourth) Gauss upwind; //Gamma 0.5;
|
div(phi,Lambdafourth) Gauss Minmod; //upwind;
|
||||||
|
|
||||||
div(tau) Gauss linear;
|
div(tau) Gauss linear;
|
||||||
}
|
}
|
||||||
|
@ -79,5 +69,4 @@ fluxRequired
|
||||||
p;
|
p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,36 +1,29 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- 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;
|
||||||
|
|
||||||
root "/opt/OpenFOAM/jovani-1.4.1/run/tutorials/viscoelasticFluidFoam";
|
|
||||||
case "DCPP";
|
|
||||||
instance "system";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object fvSolution;
|
object fvSolution;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
solvers
|
solvers
|
||||||
{
|
{
|
||||||
|
|
||||||
p CG
|
p
|
||||||
{
|
{
|
||||||
|
solver PCG;
|
||||||
preconditioner
|
preconditioner
|
||||||
{
|
{
|
||||||
// type Cholesky;
|
// preconditioner Cholesky;
|
||||||
type AMG;
|
preconditioner AMG;
|
||||||
cycle W-cycle;
|
cycle W-cycle;
|
||||||
policy AAMG;
|
policy AAMG;
|
||||||
nPreSweeps 0;
|
nPreSweeps 0;
|
||||||
|
@ -43,135 +36,144 @@ solvers
|
||||||
}
|
}
|
||||||
|
|
||||||
tolerance 1e-07;
|
tolerance 1e-07;
|
||||||
relTol 0.0;
|
relTol 0;
|
||||||
minIter 0;
|
minIter 0;
|
||||||
maxIter 800;
|
maxIter 800;
|
||||||
};
|
|
||||||
|
|
||||||
U BiCGStab
|
|
||||||
{
|
|
||||||
preconditioner
|
|
||||||
{
|
|
||||||
type Cholesky;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
minIter 0;
|
U
|
||||||
maxIter 1000;
|
|
||||||
tolerance 1e-6;
|
|
||||||
relTol 0.0;
|
|
||||||
};
|
|
||||||
|
|
||||||
Sfirst BiCGStab
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
solver BiCGStab;
|
||||||
preconditioner
|
preconditioner
|
||||||
{
|
{
|
||||||
type Cholesky;
|
preconditioner Cholesky;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tolerance 1e-6;
|
||||||
|
relTol 0;
|
||||||
minIter 0;
|
minIter 0;
|
||||||
maxIter 1000;
|
maxIter 1000;
|
||||||
tolerance 1e-6;
|
}
|
||||||
relTol 0.0;
|
|
||||||
};
|
|
||||||
|
|
||||||
Ssecond BiCGStab
|
Sfirst
|
||||||
{
|
{
|
||||||
|
solver BiCGStab;
|
||||||
preconditioner
|
preconditioner
|
||||||
{
|
{
|
||||||
type Cholesky;
|
preconditioner Cholesky;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tolerance 1e-6;
|
||||||
|
relTol 0;
|
||||||
minIter 0;
|
minIter 0;
|
||||||
maxIter 1000;
|
maxIter 1000;
|
||||||
tolerance 1e-6;
|
}
|
||||||
relTol 0.0;
|
|
||||||
};
|
|
||||||
|
|
||||||
Sthird BiCGStab
|
Ssecond
|
||||||
{
|
{
|
||||||
|
solver BiCGStab;
|
||||||
preconditioner
|
preconditioner
|
||||||
{
|
{
|
||||||
type Cholesky;
|
preconditioner Cholesky;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tolerance 1e-6;
|
||||||
|
relTol 0;
|
||||||
minIter 0;
|
minIter 0;
|
||||||
maxIter 1000;
|
maxIter 1000;
|
||||||
tolerance 1e-6;
|
}
|
||||||
relTol 0.0;
|
|
||||||
};
|
|
||||||
|
|
||||||
Sfourth BiCGStab
|
Sthird
|
||||||
{
|
{
|
||||||
|
solver BiCGStab;
|
||||||
preconditioner
|
preconditioner
|
||||||
{
|
{
|
||||||
type Cholesky;
|
preconditioner Cholesky;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tolerance 1e-6;
|
||||||
|
relTol 0;
|
||||||
minIter 0;
|
minIter 0;
|
||||||
maxIter 1000;
|
maxIter 1000;
|
||||||
tolerance 1e-6;
|
}
|
||||||
relTol 0.0;
|
|
||||||
};
|
|
||||||
|
|
||||||
Lambdafirst BiCGStab
|
Sfourth
|
||||||
{
|
{
|
||||||
|
solver BiCGStab;
|
||||||
preconditioner
|
preconditioner
|
||||||
{
|
{
|
||||||
type Cholesky;
|
preconditioner Cholesky;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tolerance 1e-6;
|
||||||
|
relTol 0;
|
||||||
minIter 0;
|
minIter 0;
|
||||||
maxIter 1000;
|
maxIter 1000;
|
||||||
tolerance 1e-6;
|
}
|
||||||
relTol 0.0;
|
|
||||||
};
|
|
||||||
|
|
||||||
Lambdasecond BiCGStab
|
Lambdafirst
|
||||||
{
|
{
|
||||||
|
solver BiCGStab;
|
||||||
preconditioner
|
preconditioner
|
||||||
{
|
{
|
||||||
type Cholesky;
|
preconditioner Cholesky;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tolerance 1e-6;
|
||||||
|
relTol 0;
|
||||||
minIter 0;
|
minIter 0;
|
||||||
maxIter 1000;
|
maxIter 1000;
|
||||||
tolerance 1e-6;
|
}
|
||||||
relTol 0.0;
|
|
||||||
};
|
|
||||||
|
|
||||||
Lambdathird BiCGStab
|
Lambdasecond
|
||||||
{
|
{
|
||||||
|
solver BiCGStab;
|
||||||
preconditioner
|
preconditioner
|
||||||
{
|
{
|
||||||
type Cholesky;
|
preconditioner Cholesky;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tolerance 1e-6;
|
||||||
|
relTol 0;
|
||||||
minIter 0;
|
minIter 0;
|
||||||
maxIter 1000;
|
maxIter 1000;
|
||||||
tolerance 1e-6;
|
}
|
||||||
relTol 0.0;
|
|
||||||
};
|
|
||||||
|
|
||||||
Lambdafourth BiCGStab
|
Lambdathird
|
||||||
{
|
{
|
||||||
|
solver BiCGStab;
|
||||||
preconditioner
|
preconditioner
|
||||||
{
|
{
|
||||||
type Cholesky;
|
preconditioner Cholesky;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tolerance 1e-6;
|
||||||
|
relTol 0;
|
||||||
minIter 0;
|
minIter 0;
|
||||||
maxIter 1000;
|
maxIter 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
Lambdafourth
|
||||||
|
{
|
||||||
|
solver BiCGStab;
|
||||||
|
preconditioner
|
||||||
|
{
|
||||||
|
preconditioner Cholesky;
|
||||||
|
}
|
||||||
|
|
||||||
tolerance 1e-6;
|
tolerance 1e-6;
|
||||||
relTol 0.0;
|
relTol 0;
|
||||||
};
|
minIter 0;
|
||||||
|
maxIter 1000;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PISO
|
PISO
|
||||||
{
|
{
|
||||||
momentumPredictor yes;
|
|
||||||
nCorrectors 2;
|
nCorrectors 2;
|
||||||
nNonOrthogonalCorrectors 1;
|
nNonOrthogonalCorrectors 0;
|
||||||
pRefCell 0;
|
pRefCell 0;
|
||||||
pRefValue 0;
|
pRefValue 0;
|
||||||
}
|
}
|
||||||
|
@ -193,6 +195,4 @@ relaxationFactors
|
||||||
Lambdafourth 0.3;
|
Lambdafourth 0.3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4 |
|
| \\ / 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;
|
||||||
|
@ -13,7 +12,6 @@ FoamFile
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object sampleDict;
|
object sampleDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
interpolationScheme cellPointFace;
|
interpolationScheme cellPointFace;
|
||||||
|
@ -58,5 +56,4 @@ fields
|
||||||
PSD
|
PSD
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,57 +1,47 @@
|
||||||
/*---------------------------------------------------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.3 |
|
| \\ / 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;
|
||||||
|
|
||||||
root "";
|
|
||||||
case "FENE-CR";
|
|
||||||
instance "";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volVectorField;
|
class volVectorField;
|
||||||
object U;
|
object U;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
dimensions [0 1 -1 0 0 0 0];
|
dimensions [0 1 -1 0 0 0 0];
|
||||||
|
|
||||||
internalField uniform (0 0 0);
|
internalField uniform (0 0 0);
|
||||||
|
|
||||||
boundaryField
|
boundaryField
|
||||||
{
|
{
|
||||||
patch3
|
inlet
|
||||||
{
|
{
|
||||||
type fixedValue;
|
type fixedValue;
|
||||||
value uniform (5 0 0);
|
value uniform (0 0 -0.03875);
|
||||||
}
|
}
|
||||||
|
fixedWalls
|
||||||
patch2
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
|
|
||||||
patch1
|
|
||||||
{
|
{
|
||||||
type fixedValue;
|
type fixedValue;
|
||||||
value uniform (0 0 0);
|
value uniform (0 0 0);
|
||||||
}
|
}
|
||||||
|
outlet
|
||||||
patch0
|
{
|
||||||
|
type zeroGradient;
|
||||||
|
}
|
||||||
|
simetry
|
||||||
|
{
|
||||||
|
type symmetryPlane;
|
||||||
|
}
|
||||||
|
frontAndBack
|
||||||
{
|
{
|
||||||
type empty;
|
type empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,55 +1,46 @@
|
||||||
/*---------------------------------------------------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.3 |
|
| \\ / 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;
|
||||||
|
|
||||||
root "";
|
|
||||||
case "FENE-CR";
|
|
||||||
instance "";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volScalarField;
|
class volScalarField;
|
||||||
object p;
|
object p;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
dimensions [0 2 -2 0 0 0 0];
|
dimensions [0 2 -2 0 0 0 0];
|
||||||
|
|
||||||
internalField uniform 0;
|
internalField uniform 0;
|
||||||
|
|
||||||
boundaryField
|
boundaryField
|
||||||
{
|
{
|
||||||
patch3
|
inlet
|
||||||
{
|
{
|
||||||
type zeroGradient;
|
type zeroGradient;
|
||||||
|
|
||||||
}
|
}
|
||||||
patch2
|
fixedWalls
|
||||||
|
{
|
||||||
|
type zeroGradient;
|
||||||
|
}
|
||||||
|
outlet
|
||||||
{
|
{
|
||||||
type fixedValue;
|
type fixedValue;
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
patch1
|
simetry
|
||||||
{
|
{
|
||||||
type zeroGradient;
|
type symmetryPlane;
|
||||||
}
|
}
|
||||||
|
frontAndBack
|
||||||
patch0
|
|
||||||
{
|
{
|
||||||
type empty;
|
type empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4.1-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
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
|
|
||||||
root "/home/jovani/jovaniFoam/foamNewSolver/cases/recentCases/upwind";
|
|
||||||
case "FENE-CR";
|
|
||||||
instance "0";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volSymmTensorField;
|
class volSymmTensorField;
|
||||||
object tau;
|
object tau;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
dimensions [1 -1 -2 0 0 0 0];
|
dimensions [1 -1 -2 0 0 0 0];
|
||||||
|
@ -28,27 +20,27 @@ internalField uniform (0 0 0 0 0 0);
|
||||||
|
|
||||||
boundaryField
|
boundaryField
|
||||||
{
|
{
|
||||||
patch3
|
inlet
|
||||||
{
|
{
|
||||||
type fixedValue;
|
type fixedValue;
|
||||||
value uniform (0 0 0 0 0 0);
|
value uniform (0 0 0 0 0 0);
|
||||||
}
|
}
|
||||||
patch2
|
fixedWalls
|
||||||
{
|
{
|
||||||
type zeroGradient;
|
type zeroGradient;
|
||||||
}
|
}
|
||||||
patch1
|
outlet
|
||||||
{
|
{
|
||||||
type zeroGradient;
|
type zeroGradient;
|
||||||
}
|
}
|
||||||
|
simetry
|
||||||
patch0
|
{
|
||||||
|
type symmetryPlane;
|
||||||
|
}
|
||||||
|
frontAndBack
|
||||||
{
|
{
|
||||||
type empty;
|
type empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
8
tutorials/viscoelastic/viscoelasticFluidFoam/FENE-CR/Allclean
Executable file
8
tutorials/viscoelastic/viscoelasticFluidFoam/FENE-CR/Allclean
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Source tutorial clean functions
|
||||||
|
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
|
||||||
|
|
||||||
|
cleanCase
|
||||||
|
echo "done!"
|
||||||
|
|
16
tutorials/viscoelastic/viscoelasticFluidFoam/FENE-CR/Allrun
Executable file
16
tutorials/viscoelastic/viscoelasticFluidFoam/FENE-CR/Allrun
Executable file
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Source tutorial run functions
|
||||||
|
. $WM_PROJECT_DIR/bin/tools/RunFunctions
|
||||||
|
|
||||||
|
# Get application name
|
||||||
|
application=`getApplication`
|
||||||
|
|
||||||
|
echo "Running blockMesh application"
|
||||||
|
runApplication blockMesh
|
||||||
|
|
||||||
|
echo "Running viscoelasticFluidFoam solver"
|
||||||
|
echo "FENE-CR model: "
|
||||||
|
runApplication $application
|
||||||
|
|
||||||
|
echo "done!"
|
26
tutorials/viscoelastic/viscoelasticFluidFoam/FENE-CR/README
Normal file
26
tutorials/viscoelastic/viscoelasticFluidFoam/FENE-CR/README
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
|
| \\ / O peration | Version: 1.6-ext |
|
||||||
|
| \\ / A nd | Web: www.extend-project.de |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
#
|
||||||
|
#+TITLE: *FENE-CR viscoelastic constitutive model README file for version 1.6-ext*
|
||||||
|
#+AUTHOR: Jovani
|
||||||
|
#+DATE: 05 October 2010
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
* This is a simulation case for a viscoelastic fluid described by the Finitely
|
||||||
|
Extensible Nonlinear Elastic Chilcott-Rallison constitutive model (FENE-CR).
|
||||||
|
The geometry was the 5:1 3D plane contraction, considering 1/4 of the real
|
||||||
|
geometry.
|
||||||
|
|
||||||
|
*** This is only an illustrative case for the FENE-CR constitutive model. Therefore,
|
||||||
|
there are not more details published until now for this model using this geometry
|
||||||
|
and viscoelasticFluidFoam solver.
|
||||||
|
|
||||||
|
*** Some results using this model with a 2D 4:1 plane contraction can be found at:
|
||||||
|
<http://hdl.handle.net/10183/16306>
|
||||||
|
|
|
@ -0,0 +1,102 @@
|
||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
|
| \\ / O peration | Version: 1.6-ext |
|
||||||
|
| \\ / A nd | Web: www.extend-project.de |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
object blockMeshDict;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
convertToMeters 0.001;
|
||||||
|
|
||||||
|
vertices
|
||||||
|
(
|
||||||
|
(0 0 0)
|
||||||
|
(1 0 0)
|
||||||
|
(0 1 0)
|
||||||
|
(0 0 50) //block one
|
||||||
|
(1 0 50)
|
||||||
|
(0 1 50)
|
||||||
|
|
||||||
|
(3 0 50) //block two
|
||||||
|
(0 3 50)
|
||||||
|
(5 0 50)
|
||||||
|
(0 5 50)
|
||||||
|
|
||||||
|
(0 0 120)
|
||||||
|
(1 0 120) //block three
|
||||||
|
(0 1 120)
|
||||||
|
|
||||||
|
(3 0 120) //block four
|
||||||
|
(0 3 120)
|
||||||
|
(5 0 120)
|
||||||
|
(0 5 120)
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
blocks
|
||||||
|
(
|
||||||
|
|
||||||
|
hex (0 1 2 0 3 4 5 3) (10 10 50) simpleGrading (0.3 1 0.05)
|
||||||
|
hex (3 4 5 3 10 11 12 10) (10 10 60) simpleGrading (0.3 1 20)
|
||||||
|
hex (4 6 7 5 11 13 14 12) (20 10 60) simpleGrading (3 1 20)
|
||||||
|
hex (6 8 9 7 13 15 16 14) (20 10 60) simpleGrading (0.3 1 20)
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
edges
|
||||||
|
(
|
||||||
|
arc 1 2 (0.9396926 0.342020 0)
|
||||||
|
arc 4 5 (0.9396926 0.342020 50)
|
||||||
|
arc 6 7 (2.8190779 1.026060 50)
|
||||||
|
arc 8 9 (4.698463 1.7101007 50)
|
||||||
|
arc 11 12 (0.9396926 0.342020 120)
|
||||||
|
arc 13 14 (2.8190779 1.026060 120)
|
||||||
|
arc 15 16 (4.698463 1.7101007 120)
|
||||||
|
);
|
||||||
|
|
||||||
|
patches
|
||||||
|
(
|
||||||
|
patch inlet
|
||||||
|
(
|
||||||
|
(10 12 11 10)
|
||||||
|
(12 14 13 11)
|
||||||
|
(14 16 15 13)
|
||||||
|
)
|
||||||
|
wall fixedWalls
|
||||||
|
(
|
||||||
|
(1 4 5 2)
|
||||||
|
(4 6 7 5)
|
||||||
|
(6 8 9 7)
|
||||||
|
(8 15 16 9)
|
||||||
|
)
|
||||||
|
patch outlet
|
||||||
|
(
|
||||||
|
(0 1 2 0)
|
||||||
|
)
|
||||||
|
symmetryPlane simetry
|
||||||
|
(
|
||||||
|
(0 3 4 1)
|
||||||
|
(0 2 5 3)
|
||||||
|
(3 10 11 4)
|
||||||
|
(4 11 13 6)
|
||||||
|
|
||||||
|
(6 13 15 8)
|
||||||
|
(3 5 12 10)
|
||||||
|
(5 7 14 12)
|
||||||
|
(7 9 16 14)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
mergePatchPairs
|
||||||
|
(
|
||||||
|
);
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -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
|
||||||
|
@ -15,33 +15,38 @@ FoamFile
|
||||||
}
|
}
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
4
|
5
|
||||||
(
|
(
|
||||||
patch0
|
inlet
|
||||||
{
|
{
|
||||||
type empty;
|
type patch;
|
||||||
nFaces 8592;
|
nFaces 500;
|
||||||
startFace 6292;
|
startFace 99900;
|
||||||
}
|
}
|
||||||
patch1
|
fixedWalls
|
||||||
{
|
{
|
||||||
type wall;
|
type wall;
|
||||||
nFaces 292;
|
nFaces 1500;
|
||||||
startFace 14884;
|
startFace 100400;
|
||||||
}
|
}
|
||||||
patch2
|
outlet
|
||||||
{
|
{
|
||||||
type patch;
|
type patch;
|
||||||
nFaces 6;
|
nFaces 100;
|
||||||
startFace 15176;
|
startFace 101900;
|
||||||
}
|
}
|
||||||
patch3
|
simetry
|
||||||
{
|
{
|
||||||
type patch;
|
type symmetryPlane;
|
||||||
nFaces 6;
|
nFaces 7000;
|
||||||
startFace 15182;
|
startFace 102000;
|
||||||
|
}
|
||||||
|
defaultFaces
|
||||||
|
{
|
||||||
|
type empty;
|
||||||
|
nFaces 0;
|
||||||
|
startFace 109000;
|
||||||
}
|
}
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,50 +1,29 @@
|
||||||
/*---------------------------------------------------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4 |
|
| \\ / 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;
|
||||||
|
|
||||||
root "";
|
|
||||||
case "";
|
|
||||||
instance "";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object viscoelasticProperties;
|
object viscoelasticProperties;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
rheology
|
rheology
|
||||||
{
|
{
|
||||||
|
|
||||||
type multiMode;
|
|
||||||
|
|
||||||
models
|
|
||||||
(
|
|
||||||
|
|
||||||
first
|
|
||||||
{
|
|
||||||
type FENE-CR;
|
type FENE-CR;
|
||||||
rho rho [1 -3 0 0 0 0 0] 875.96;
|
rho rho [1 -3 0 0 0 0 0] 875.96;
|
||||||
etaS etaS [1 -1 -1 0 0 0 0] 0.007;
|
etaS etaS [1 -1 -1 0 0 0 0] 0.007;
|
||||||
etaP etaP [1 -1 -1 0 0 0 0] 11.356;
|
etaP etaP [1 -1 -1 0 0 0 0] 11.356;
|
||||||
lambda lambda [0 0 1 0 0 0 0] 0.35;
|
lambda lambda [0 0 1 0 0 0 0] 0.35;
|
||||||
L2 L2 [0 0 0 0 0 0 0] 25;
|
L2 L2 [0 0 0 0 0 0 0] 25;
|
||||||
}
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,42 +1,34 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- 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;
|
||||||
|
|
||||||
root "/opt/OpenFOAM/jovani-1.4.1/run/tutorials/viscoelasticFluidFoam";
|
|
||||||
case "FENE-CR";
|
|
||||||
instance "system";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object controlDict;
|
object controlDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
application viscoelasticFluidFoam;
|
application viscoelasticFluidFoam;
|
||||||
|
|
||||||
startFrom startTime;
|
startFrom startTime;
|
||||||
|
|
||||||
startTime 0.0;
|
startTime 0;
|
||||||
|
|
||||||
stopAt endTime;
|
stopAt endTime;
|
||||||
|
|
||||||
endTime 5;
|
endTime 3;
|
||||||
|
|
||||||
deltaT 1e-6;
|
deltaT 1e-5;
|
||||||
|
|
||||||
writeControl adjustableRunTime;
|
writeControl adjustableRunTime;
|
||||||
|
|
||||||
writeInterval 1;
|
writeInterval 0.5;
|
||||||
|
|
||||||
purgeWrite 0;
|
purgeWrite 0;
|
||||||
|
|
||||||
|
@ -60,5 +52,4 @@ maxCo 0.8;
|
||||||
|
|
||||||
maxDeltaT 0.001;
|
maxDeltaT 0.001;
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,28 +1,19 @@
|
||||||
/*---------------------------------------------------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4 |
|
| \\ / 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;
|
||||||
|
|
||||||
root "";
|
|
||||||
case "";
|
|
||||||
instance "";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object decomposeParDict;
|
object decomposeParDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
numberOfSubdomains 2;
|
numberOfSubdomains 2;
|
||||||
|
|
||||||
method metis;
|
method metis;
|
||||||
|
@ -60,5 +51,4 @@ roots
|
||||||
(
|
(
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
|
@ -1,30 +1,22 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- 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;
|
||||||
|
|
||||||
root "/home/jovani/OpenFOAM/jovani-1.4.1/run/tutorials/viscoelasticFluidFoam";
|
|
||||||
case "FENE-CR";
|
|
||||||
instance "system";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object fvSchemes;
|
object fvSchemes;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
ddtSchemes
|
ddtSchemes
|
||||||
{
|
{
|
||||||
default CrankNicholson 1;
|
default Euler;
|
||||||
}
|
}
|
||||||
|
|
||||||
gradSchemes
|
gradSchemes
|
||||||
|
@ -38,8 +30,8 @@ gradSchemes
|
||||||
divSchemes
|
divSchemes
|
||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
div(phi,U) Gauss upwind; //GammaV 0.5;
|
div(phi,U) Gauss upwind;
|
||||||
div(phi,taufirst) Gauss upwind; //Gamma 0.5;
|
div(phi,tau) Gauss upwind;
|
||||||
div(tau) Gauss linear;
|
div(tau) Gauss linear;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,5 +60,4 @@ fluxRequired
|
||||||
p;
|
p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,36 +1,29 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- 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;
|
||||||
|
|
||||||
root "/opt/OpenFOAM/jovani-1.4.1/run/tutorials/viscoelasticFluidFoam";
|
|
||||||
case "FENE-CR";
|
|
||||||
instance "system";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object fvSolution;
|
object fvSolution;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
solvers
|
solvers
|
||||||
{
|
{
|
||||||
|
|
||||||
p CG
|
p
|
||||||
{
|
{
|
||||||
|
solver PCG;
|
||||||
preconditioner
|
preconditioner
|
||||||
{
|
{
|
||||||
type Cholesky;
|
// preconditioner Cholesky;
|
||||||
/* type AMG;
|
preconditioner AMG;
|
||||||
cycle W-cycle;
|
cycle W-cycle;
|
||||||
policy AAMG;
|
policy AAMG;
|
||||||
nPreSweeps 0;
|
nPreSweeps 0;
|
||||||
|
@ -39,41 +32,43 @@ solvers
|
||||||
minCoarseEqns 20;
|
minCoarseEqns 20;
|
||||||
nMaxLevels 100;
|
nMaxLevels 100;
|
||||||
scale off;
|
scale off;
|
||||||
smoother ILU;*/
|
smoother ILU;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tolerance 1e-07;
|
||||||
tolerance 1e-06;
|
relTol 0;
|
||||||
relTol 0.0;
|
|
||||||
minIter 0;
|
minIter 0;
|
||||||
maxIter 800;
|
maxIter 800;
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
U BiCGStab
|
|
||||||
{
|
|
||||||
preconditioner
|
|
||||||
{
|
|
||||||
type Cholesky;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
minIter 0;
|
U
|
||||||
maxIter 1000;
|
|
||||||
tolerance 1e-5;
|
|
||||||
relTol 0.0;
|
|
||||||
};
|
|
||||||
|
|
||||||
taufirst BiCGStab
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
solver BiCGStab;
|
||||||
preconditioner
|
preconditioner
|
||||||
{
|
{
|
||||||
type Cholesky;
|
preconditioner Cholesky;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tolerance 1e-6;
|
||||||
|
relTol 0;
|
||||||
|
minIter 0;
|
||||||
|
maxIter 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
tau
|
||||||
|
{
|
||||||
|
|
||||||
|
solver BiCGStab;
|
||||||
|
preconditioner
|
||||||
|
{
|
||||||
|
preconditioner Cholesky;
|
||||||
|
}
|
||||||
|
|
||||||
|
tolerance 1e-6;
|
||||||
|
relTol 0;
|
||||||
minIter 0;
|
minIter 0;
|
||||||
maxIter 1000;
|
maxIter 1000;
|
||||||
tolerance 1e-5;
|
|
||||||
relTol 0.0;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -81,7 +76,6 @@ solvers
|
||||||
|
|
||||||
PISO
|
PISO
|
||||||
{
|
{
|
||||||
momentumPredictor yes;
|
|
||||||
nCorrectors 2;
|
nCorrectors 2;
|
||||||
nNonOrthogonalCorrectors 1;
|
nNonOrthogonalCorrectors 1;
|
||||||
pRefCell 0;
|
pRefCell 0;
|
||||||
|
@ -92,9 +86,7 @@ relaxationFactors
|
||||||
{
|
{
|
||||||
p 0.3;
|
p 0.3;
|
||||||
U 0.5;
|
U 0.5;
|
||||||
taufirst 0.3;
|
tau 0.3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
50
tutorials/viscoelastic/viscoelasticFluidFoam/FENE-P/0/N1
Normal file
50
tutorials/viscoelastic/viscoelasticFluidFoam/FENE-P/0/N1
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
|
| \\ / O peration | Version: 1.6-ext |
|
||||||
|
| \\ / A nd | Web: www.extend-project.de |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volScalarField;
|
||||||
|
location "0";
|
||||||
|
object N1;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [1 -1 -2 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 0;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
inlet
|
||||||
|
{
|
||||||
|
type calculated;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
fixedWalls
|
||||||
|
{
|
||||||
|
type calculated;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
outlet
|
||||||
|
{
|
||||||
|
type calculated;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
simetry
|
||||||
|
{
|
||||||
|
type symmetryPlane;
|
||||||
|
}
|
||||||
|
frontAndBack
|
||||||
|
{
|
||||||
|
type empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
50
tutorials/viscoelastic/viscoelasticFluidFoam/FENE-P/0/N2
Normal file
50
tutorials/viscoelastic/viscoelasticFluidFoam/FENE-P/0/N2
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
|
| \\ / O peration | Version: 1.6-ext |
|
||||||
|
| \\ / A nd | Web: www.extend-project.de |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class volScalarField;
|
||||||
|
location "0";
|
||||||
|
object N2;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [1 -1 -2 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 0;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
inlet
|
||||||
|
{
|
||||||
|
type calculated;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
fixedWalls
|
||||||
|
{
|
||||||
|
type calculated;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
outlet
|
||||||
|
{
|
||||||
|
type calculated;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
simetry
|
||||||
|
{
|
||||||
|
type symmetryPlane;
|
||||||
|
}
|
||||||
|
frontAndBack
|
||||||
|
{
|
||||||
|
type empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -1,25 +1,17 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4.1-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
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
|
|
||||||
root "/home/jovani/jovaniFoam/foamNewSolver/cases/recentCases/upwind";
|
|
||||||
case "FENE-P";
|
|
||||||
instance "0";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volVectorField;
|
class volVectorField;
|
||||||
object U;
|
object U;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
dimensions [0 1 -1 0 0 0 0];
|
dimensions [0 1 -1 0 0 0 0];
|
||||||
|
@ -52,5 +44,4 @@ boundaryField
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4.1-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
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
|
|
||||||
root "/home/jovani/jovaniFoam/foamNewSolver/cases/recentCases/upwind";
|
|
||||||
case "FENE-P";
|
|
||||||
instance "0";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volScalarField;
|
class volScalarField;
|
||||||
object p;
|
object p;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
dimensions [0 2 -2 0 0 0 0];
|
dimensions [0 2 -2 0 0 0 0];
|
||||||
|
@ -51,5 +43,4 @@ boundaryField
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,25 +1,17 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4.1-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
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
|
|
||||||
root "/home/jovani/jovaniFoam/foamNewSolver/cases/recentCases/upwind";
|
|
||||||
case "FENE-P";
|
|
||||||
instance "0";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volSymmTensorField;
|
class volSymmTensorField;
|
||||||
object tau;
|
object tau;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
dimensions [1 -1 -2 0 0 0 0];
|
dimensions [1 -1 -2 0 0 0 0];
|
||||||
|
@ -51,5 +43,4 @@ boundaryField
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,55 +0,0 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
|
||||||
| ========= | |
|
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
|
||||||
| \\ / O peration | Version: 1.4.1-dev |
|
|
||||||
| \\ / A nd | Web: http://www.openfoam.org |
|
|
||||||
| \\/ M anipulation | |
|
|
||||||
\*---------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
FoamFile
|
|
||||||
{
|
|
||||||
version 2.0;
|
|
||||||
format ascii;
|
|
||||||
|
|
||||||
root "/home/jovani/jovaniFoam/foamNewSolver/cases/recentCases/upwind";
|
|
||||||
case "FENE-P";
|
|
||||||
instance "0";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volSymmTensorField;
|
|
||||||
object taufirst;
|
|
||||||
}
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
dimensions [1 -1 -2 0 0 0 0];
|
|
||||||
|
|
||||||
internalField uniform (0 0 0 0 0 0);
|
|
||||||
|
|
||||||
boundaryField
|
|
||||||
{
|
|
||||||
inlet
|
|
||||||
{
|
|
||||||
type fixedValue;
|
|
||||||
value uniform (0 0 0 0 0 0);
|
|
||||||
}
|
|
||||||
fixedWalls
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
outlet
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
simetry
|
|
||||||
{
|
|
||||||
type symmetryPlane;
|
|
||||||
}
|
|
||||||
frontAndBack
|
|
||||||
{
|
|
||||||
type empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
9
tutorials/viscoelastic/viscoelasticFluidFoam/FENE-P/Allclean
Executable file
9
tutorials/viscoelastic/viscoelasticFluidFoam/FENE-P/Allclean
Executable file
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Source tutorial clean functions
|
||||||
|
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
|
||||||
|
|
||||||
|
cleanCase
|
||||||
|
rm -R -f sets
|
||||||
|
echo "done!"
|
||||||
|
|
22
tutorials/viscoelastic/viscoelasticFluidFoam/FENE-P/Allrun
Executable file
22
tutorials/viscoelastic/viscoelasticFluidFoam/FENE-P/Allrun
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Source tutorial run functions
|
||||||
|
. $WM_PROJECT_DIR/bin/tools/RunFunctions
|
||||||
|
|
||||||
|
# Get application name
|
||||||
|
application=`getApplication`
|
||||||
|
|
||||||
|
echo "Running blockMesh application"
|
||||||
|
runApplication blockMesh
|
||||||
|
|
||||||
|
echo "Running viscoelasticFluidFoam solver"
|
||||||
|
echo "FENE-P model:"
|
||||||
|
runApplication $application
|
||||||
|
|
||||||
|
echo "Running stressDifferences application"
|
||||||
|
runApplication stressDifferences
|
||||||
|
|
||||||
|
echo "Running sample application"
|
||||||
|
runApplication sample
|
||||||
|
|
||||||
|
echo "done!"
|
34
tutorials/viscoelastic/viscoelasticFluidFoam/FENE-P/README
Normal file
34
tutorials/viscoelastic/viscoelasticFluidFoam/FENE-P/README
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
|
| \\ / O peration | Version: 1.6-ext |
|
||||||
|
| \\ / A nd | Web: www.extend-project.de |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
#
|
||||||
|
#+TITLE: *FENE-P viscoelastic constitutive model README file for version 1.6-ext*
|
||||||
|
#+AUTHOR: Jovani
|
||||||
|
#+DATE: 05 October 2010
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
* This is a simulation case for a viscoelastic fluid described by the Finitely
|
||||||
|
Extensible Nonlinear Elastic-Peterlin constitutive model (FENE-P).
|
||||||
|
The geometry was the 4:1 plane contraction. This is a well studied
|
||||||
|
geometry in viscoelastic fluid flow research.
|
||||||
|
|
||||||
|
More details about the model or parameters used, as also informations
|
||||||
|
about the geometry, can be found at:
|
||||||
|
|
||||||
|
*** AZAIEZ, J.; GUÉNETTE, R.; AïT-KADI, A. Numerical simulation of viscoelastic
|
||||||
|
flows through a planar contraction. Journal of Non-Newtonian Fluid
|
||||||
|
Mechanics, v. 62, n. 2-3, p. 253 – 277, 1996. ISSN 0377-0257.
|
||||||
|
<http://www.sciencedirect.com/science/article/B6TGV-3TKMMG1-8/2/b9b59e81347a3b5b3c185a2d9f2289af>
|
||||||
|
|
||||||
|
|
||||||
|
* The results for this case using viscoelasticFluidFoam solver can be found at:
|
||||||
|
|
||||||
|
*** Journal of Non-Newtonian Fluid Mechanics:
|
||||||
|
<http://www.sciencedirect.com/science/article/B6TGV-511BYYF-1/2/53b604790dda6f271bb2e82870ba0c2a>
|
||||||
|
|
||||||
|
|
|
@ -1,28 +1,19 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- 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;
|
||||||
|
|
||||||
root "/opt/OpenFOAM/jovani-1.4.1/run/tutorials/viscoelasticFluidFoam";
|
|
||||||
case "FENE-P";
|
|
||||||
instance "constant";
|
|
||||||
local "polyMesh";
|
|
||||||
|
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object blockMeshDict;
|
object blockMeshDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
convertToMeters 0.0032;
|
convertToMeters 0.0032;
|
||||||
|
|
||||||
vertices
|
vertices
|
||||||
|
@ -104,5 +95,4 @@ mergePatchPairs
|
||||||
(
|
(
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -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
|
|
@ -1,25 +1,17 @@
|
||||||
/*---------------------------------------------------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4 |
|
| \\ / 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;
|
||||||
|
|
||||||
root "";
|
|
||||||
case "";
|
|
||||||
instance "";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object viscoelasticProperties;
|
object viscoelasticProperties;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -30,32 +22,22 @@ Mechanics, v. 62, n. 2-3, p. 253 - 277, 1996.
|
||||||
|
|
||||||
Table 1
|
Table 1
|
||||||
Model Model parameter lambda etaS etaP
|
Model Model parameter lambda etaS etaP
|
||||||
PTT Linear L2 = 6.0 0.04 0.002 1.422
|
FENE-P L2 = 6.0 0.04 0.002 1.422
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
rheology
|
rheology
|
||||||
{
|
{
|
||||||
|
|
||||||
type multiMode;
|
|
||||||
|
|
||||||
models
|
|
||||||
(
|
|
||||||
|
|
||||||
first
|
|
||||||
{
|
|
||||||
type FENE-P;
|
type FENE-P;
|
||||||
rho rho [1 -3 0 0 0 0 0] 803.87097;
|
rho rho [1 -3 0 0 0 0 0] 803.87097;
|
||||||
etaS etaS [1 -1 -1 0 0 0 0] 0.002;
|
etaS etaS [1 -1 -1 0 0 0 0] 0.002;
|
||||||
etaP etaP [1 -1 -1 0 0 0 0] 1.422;
|
etaP etaP [1 -1 -1 0 0 0 0] 1.422;
|
||||||
lambda lambda [0 0 1 0 0 0 0] 0.04;
|
lambda lambda [0 0 1 0 0 0 0] 0.04;
|
||||||
L2 L2 [0 0 0 0 0 0 0] 6.0;
|
L2 L2 [0 0 0 0 0 0 0] 6.0;
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,32 +1,24 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- 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;
|
||||||
|
|
||||||
root "/opt/OpenFOAM/jovani-1.4.1/run/tutorials/viscoelasticFluidFoam";
|
|
||||||
case "FENE-P";
|
|
||||||
instance "system";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object controlDict;
|
object controlDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
application viscoelasticFluidFoam;
|
application viscoelasticFluidFoam;
|
||||||
|
|
||||||
startFrom startTime;
|
startFrom startTime;
|
||||||
|
|
||||||
startTime 0.0;
|
startTime 0;
|
||||||
|
|
||||||
stopAt endTime;
|
stopAt endTime;
|
||||||
|
|
||||||
|
@ -36,7 +28,7 @@ deltaT 1e-5;
|
||||||
|
|
||||||
writeControl adjustableRunTime;
|
writeControl adjustableRunTime;
|
||||||
|
|
||||||
writeInterval 0.1;
|
writeInterval 1;
|
||||||
|
|
||||||
purgeWrite 0;
|
purgeWrite 0;
|
||||||
|
|
||||||
|
@ -60,5 +52,4 @@ maxCo 0.8;
|
||||||
|
|
||||||
maxDeltaT 0.001;
|
maxDeltaT 0.001;
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,28 +1,19 @@
|
||||||
/*---------------------------------------------------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4 |
|
| \\ / 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;
|
||||||
|
|
||||||
root "";
|
|
||||||
case "";
|
|
||||||
instance "";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object decomposeParDict;
|
object decomposeParDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
numberOfSubdomains 2;
|
numberOfSubdomains 2;
|
||||||
|
|
||||||
method metis;
|
method metis;
|
||||||
|
@ -60,5 +51,4 @@ roots
|
||||||
(
|
(
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,30 +1,22 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- 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;
|
||||||
|
|
||||||
root "/home/jovani/OpenFOAM/jovani-1.4.1/run/tutorials/viscoelasticFluidFoam";
|
|
||||||
case "FENE-P";
|
|
||||||
instance "system";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object fvSchemes;
|
object fvSchemes;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
ddtSchemes
|
ddtSchemes
|
||||||
{
|
{
|
||||||
default CrankNicholson 1;
|
default Euler;
|
||||||
}
|
}
|
||||||
|
|
||||||
gradSchemes
|
gradSchemes
|
||||||
|
@ -38,8 +30,8 @@ gradSchemes
|
||||||
divSchemes
|
divSchemes
|
||||||
{
|
{
|
||||||
default none;
|
default none;
|
||||||
div(phi,U) Gauss upwind; //GammaV 0.5;
|
div(phi,U) Gauss Minmod; //upwind;
|
||||||
div(phi,taufirst) Gauss upwind; //Gamma 0.5;
|
div(phi,tau) Gauss Minmod; //upwind;
|
||||||
div(tau) Gauss linear;
|
div(tau) Gauss linear;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,5 +60,4 @@ fluxRequired
|
||||||
p;
|
p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,36 +1,29 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- 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;
|
||||||
|
|
||||||
root "/opt/OpenFOAM/jovani-1.4.1/run/tutorials/viscoelasticFluidFoam";
|
|
||||||
case "FENE-P";
|
|
||||||
instance "system";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object fvSolution;
|
object fvSolution;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
solvers
|
solvers
|
||||||
{
|
{
|
||||||
|
|
||||||
p CG
|
p
|
||||||
{
|
{
|
||||||
|
solver PCG;
|
||||||
preconditioner
|
preconditioner
|
||||||
{
|
{
|
||||||
// type Cholesky;
|
// preconditioner Cholesky;
|
||||||
type AMG;
|
preconditioner AMG;
|
||||||
cycle W-cycle;
|
cycle W-cycle;
|
||||||
policy AAMG;
|
policy AAMG;
|
||||||
nPreSweeps 0;
|
nPreSweeps 0;
|
||||||
|
@ -42,38 +35,40 @@ solvers
|
||||||
smoother ILU;
|
smoother ILU;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
tolerance 1e-07;
|
tolerance 1e-07;
|
||||||
relTol 0.0;
|
relTol 0;
|
||||||
minIter 0;
|
minIter 0;
|
||||||
maxIter 800;
|
maxIter 800;
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
U BiCGStab
|
|
||||||
{
|
|
||||||
preconditioner
|
|
||||||
{
|
|
||||||
type Cholesky;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
minIter 0;
|
U
|
||||||
maxIter 1000;
|
|
||||||
tolerance 1e-6;
|
|
||||||
relTol 0.0;
|
|
||||||
};
|
|
||||||
|
|
||||||
taufirst BiCGStab
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
solver BiCGStab;
|
||||||
preconditioner
|
preconditioner
|
||||||
{
|
{
|
||||||
type Cholesky;
|
preconditioner Cholesky;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tolerance 1e-6;
|
||||||
|
relTol 0;
|
||||||
minIter 0;
|
minIter 0;
|
||||||
maxIter 1000;
|
maxIter 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
tau
|
||||||
|
{
|
||||||
|
|
||||||
|
solver BiCGStab;
|
||||||
|
preconditioner
|
||||||
|
{
|
||||||
|
preconditioner Cholesky;
|
||||||
|
}
|
||||||
|
|
||||||
tolerance 1e-6;
|
tolerance 1e-6;
|
||||||
relTol 0.0;
|
relTol 0;
|
||||||
|
minIter 0;
|
||||||
|
maxIter 1000;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -81,9 +76,8 @@ solvers
|
||||||
|
|
||||||
PISO
|
PISO
|
||||||
{
|
{
|
||||||
momentumPredictor yes;
|
|
||||||
nCorrectors 2;
|
nCorrectors 2;
|
||||||
nNonOrthogonalCorrectors 1;
|
nNonOrthogonalCorrectors 0;
|
||||||
pRefCell 0;
|
pRefCell 0;
|
||||||
pRefValue 0;
|
pRefValue 0;
|
||||||
}
|
}
|
||||||
|
@ -92,9 +86,7 @@ relaxationFactors
|
||||||
{
|
{
|
||||||
p 0.3;
|
p 0.3;
|
||||||
U 0.5;
|
U 0.5;
|
||||||
taufirst 0.3;
|
tau 0.3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,31 +1,22 @@
|
||||||
/*---------------------------------------------------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4 |
|
| \\ / 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;
|
||||||
|
|
||||||
root "";
|
|
||||||
case "FENE-P";
|
|
||||||
instance "";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class dictionary;
|
class dictionary;
|
||||||
object sampleDict;
|
object sampleDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
interpolationScheme cellPoint;
|
interpolationScheme cellPoint;
|
||||||
|
|
||||||
writeFormat raw;
|
setFormat raw;
|
||||||
|
|
||||||
sets
|
sets
|
||||||
(
|
(
|
||||||
|
@ -49,7 +40,6 @@ sets
|
||||||
nPoints 100;
|
nPoints 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fig7_x_1
|
fig7_x_1
|
||||||
{
|
{
|
||||||
type uniform;
|
type uniform;
|
||||||
|
@ -59,7 +49,6 @@ sets
|
||||||
nPoints 100;
|
nPoints 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fig7_x_15
|
fig7_x_15
|
||||||
{
|
{
|
||||||
type uniform;
|
type uniform;
|
||||||
|
@ -87,7 +76,6 @@ sets
|
||||||
nPoints 100;
|
nPoints 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// y axes N1 upstream profile
|
// y axes N1 upstream profile
|
||||||
|
|
||||||
fig7_y_1
|
fig7_y_1
|
||||||
|
@ -221,5 +209,4 @@ fields
|
||||||
N1
|
N1
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
|
@ -1,175 +0,0 @@
|
||||||
/*---------------------------------------------------------------------------*\
|
|
||||||
| ========= | |
|
|
||||||
| \\ / 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;
|
|
||||||
|
|
||||||
root "";
|
|
||||||
case "FENE-P";
|
|
||||||
instance "";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class dictionary;
|
|
||||||
object sampleDict;
|
|
||||||
}
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
|
|
||||||
interpolationScheme cellPoint;
|
|
||||||
|
|
||||||
writeFormat raw;
|
|
||||||
|
|
||||||
sampleSets
|
|
||||||
(
|
|
||||||
|
|
||||||
// x axes Ux upstream profile
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig5_x_05;
|
|
||||||
axis distance;
|
|
||||||
start (0.2544 0.0 0.00016);
|
|
||||||
end (0.2544 0.0128 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig5_x_1;
|
|
||||||
axis distance;
|
|
||||||
start (0.2528 0.0 0.00016);
|
|
||||||
end (0.2528 0.0128 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig5_x_15;
|
|
||||||
axis distance;
|
|
||||||
start (0.2512 0.0 0.00016);
|
|
||||||
end (0.2512 0.0128 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig5_x_2;
|
|
||||||
axis distance;
|
|
||||||
start (0.2496 0.0 0.00016);
|
|
||||||
end (0.2496 0.0128 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig5_x_10;
|
|
||||||
axis distance;
|
|
||||||
start (0.2240 0.0 0.00016);
|
|
||||||
end (0.2240 0.0128 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// y axes Ux upstream profile
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig5_y_1;
|
|
||||||
axis distance;
|
|
||||||
start (0.2240 0.0032 0.00016);
|
|
||||||
end (0.2560 0.0032 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig5_y_15;
|
|
||||||
axis distance;
|
|
||||||
start (0.2240 0.0048 0.00016);
|
|
||||||
end (0.2560 0.0048 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig5_y_2;
|
|
||||||
axis distance;
|
|
||||||
start (0.2240 0.0064 0.00016);
|
|
||||||
end (0.2560 0.0064 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig5_y_25;
|
|
||||||
axis distance;
|
|
||||||
start (0.2240 0.0080 0.00016);
|
|
||||||
end (0.2560 0.0080 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig5_y_3;
|
|
||||||
axis distance;
|
|
||||||
start (0.2240 0.0096 0.00016);
|
|
||||||
end (0.2560 0.0096 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig5_y_35;
|
|
||||||
axis distance;
|
|
||||||
start (0.2240 0.0112 0.00016);
|
|
||||||
end (0.2560 0.0112 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
// x axes Ux downstream profile
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig8_x_5;
|
|
||||||
axis distance;
|
|
||||||
start (0.2720 0.0 0.00016);
|
|
||||||
end (0.2720 0.0032 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig8_x_1;
|
|
||||||
axis distance;
|
|
||||||
start (0.2592 0.0 0.00016);
|
|
||||||
end (0.2592 0.0032 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig8_x_0;
|
|
||||||
axis distance;
|
|
||||||
start (0.2560 0.0 0.00016);
|
|
||||||
end (0.2560 0.0032 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
fields
|
|
||||||
(
|
|
||||||
mag(U)
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
|
@ -1,225 +0,0 @@
|
||||||
/*---------------------------------------------------------------------------*\
|
|
||||||
| ========= | |
|
|
||||||
| \\ / 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;
|
|
||||||
|
|
||||||
root "";
|
|
||||||
case "FENE-P";
|
|
||||||
instance "";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class dictionary;
|
|
||||||
object sampleDict;
|
|
||||||
}
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
|
|
||||||
interpolationScheme cellPointFace;
|
|
||||||
|
|
||||||
writeFormat raw;
|
|
||||||
|
|
||||||
sampleSets
|
|
||||||
(
|
|
||||||
|
|
||||||
// x axes Ux upstream profile
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig6_x_037;
|
|
||||||
axis distance;
|
|
||||||
start (0.25482 0.0 0.00016);
|
|
||||||
end (0.25482 0.0128 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig6_x_05;
|
|
||||||
axis distance;
|
|
||||||
start (0.2544 0.0 0.00016);
|
|
||||||
end (0.2544 0.0128 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig6_x_1;
|
|
||||||
axis distance;
|
|
||||||
start (0.2528 0.0 0.00016);
|
|
||||||
end (0.2528 0.0128 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig6_x_15;
|
|
||||||
axis distance;
|
|
||||||
start (0.2512 0.0 0.00016);
|
|
||||||
end (0.2512 0.0128 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig6_x_2;
|
|
||||||
axis distance;
|
|
||||||
start (0.2496 0.0 0.00016);
|
|
||||||
end (0.2496 0.0128 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig6_x_10;
|
|
||||||
axis distance;
|
|
||||||
start (0.2240 0.0 0.00016);
|
|
||||||
end (0.2240 0.0128 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// y axes Ux upstream profile
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig6_y_1;
|
|
||||||
axis distance;
|
|
||||||
start (0.2432 0.0032 0.00016);
|
|
||||||
end (0.2544 0.0032 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig6_y_15;
|
|
||||||
axis distance;
|
|
||||||
start ( 0.2432 0.0048 0.00016);
|
|
||||||
end (0.2544 0.0048 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig6_y_2;
|
|
||||||
axis distance;
|
|
||||||
start ( 0.2432 0.0064 0.00016);
|
|
||||||
end (0.2544 0.0064 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig6_y_25;
|
|
||||||
axis distance;
|
|
||||||
start ( 0.2432 0.0080 0.00016);
|
|
||||||
end (0.2544 0.0080 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig6_y_3;
|
|
||||||
axis distance;
|
|
||||||
start (0.2432 0.0096 0.00016);
|
|
||||||
end (0.2544 0.0096 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig6_y_35;
|
|
||||||
axis distance;
|
|
||||||
start (0.2432 0.0112 0.00016);
|
|
||||||
end (0.2544 0.0112 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// x axes Ux downstream profile
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig9_x_5;
|
|
||||||
axis distance;
|
|
||||||
start (0.2720 0.0 0.00016);
|
|
||||||
end (0.2720 0.00288 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig9_x_1;
|
|
||||||
axis distance;
|
|
||||||
start (0.2592 0.0 0.00016);
|
|
||||||
end (0.2592 0.00288 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig9_x_05;
|
|
||||||
axis distance;
|
|
||||||
start (0.2576 0.0 0.00016);
|
|
||||||
end (0.2576 0.00288 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig9_x_0;
|
|
||||||
axis distance;
|
|
||||||
start (0.2560 0.0 0.00016);
|
|
||||||
end (0.2560 0.00288 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
// y axes Ux downstream profile
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig9_y_1;
|
|
||||||
axis distance;
|
|
||||||
start (0.2272 0.0032 0.00016);
|
|
||||||
end (0.2752 0.0032 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig9_y_04;
|
|
||||||
axis distance;
|
|
||||||
start (0.2272 0.00128 0.00016);
|
|
||||||
end (0.2752 0.00128 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform
|
|
||||||
{
|
|
||||||
name fig9_y_0;
|
|
||||||
axis distance;
|
|
||||||
start (0.2272 0.0 0.00016);
|
|
||||||
end (0.2752 0.0 0.00016);
|
|
||||||
nPoints 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
fields
|
|
||||||
(
|
|
||||||
tauxy
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
|
@ -1,25 +1,17 @@
|
||||||
/*--------------------------------*- C++ -*----------------------------------*\
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
| ========= | |
|
| ========= | |
|
||||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
| \\ / F ield | OpenFOAM Extend Project: Open source CFD |
|
||||||
| \\ / O peration | Version: 1.4.1-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
|
||||||
{
|
{
|
||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
|
|
||||||
root "/home/jovani/jovaniFoam/foamNewSolver/cases/recentCases/upwind";
|
|
||||||
case "Feta-PTT";
|
|
||||||
instance "0";
|
|
||||||
local "";
|
|
||||||
|
|
||||||
class volVectorField;
|
class volVectorField;
|
||||||
object U;
|
object U;
|
||||||
}
|
}
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
dimensions [0 1 -1 0 0 0 0];
|
dimensions [0 1 -1 0 0 0 0];
|
||||||
|
@ -45,5 +37,4 @@ boundaryField
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Some files were not shown because too many files have changed in this diff Show more
Reference in a new issue