tutorials: pipeCyclic: Overhaul

The refinement cell set is now generated directly using boxToCell. The
mesh now uses cyclic, rather than cyclicAMI, patches so that propagation
of the refinement across the coupling can be tested. Field files have
been simplified by using #includeEtc to set constraints. A best practice
velocity/pressure specification has been set for the outlet boundary.
Unused fields and settings have been removed.
This commit is contained in:
Will Bainbridge
2022-04-27 11:44:27 +01:00
parent 7b3631bc53
commit b92fdc82f5
12 changed files with 52 additions and 201 deletions

View File

@ -20,34 +20,25 @@ internalField uniform (1 0 0);
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type codedFixedValue;
value uniform (1 0 0);
name swirl;
code #{
code
#{
const vector axis(1, 0, 0);
vectorField v(2.0*this->patch().Cf() ^ axis);
v.replace(vector::X, 1.0);
vectorField v(2*this->patch().Cf() ^ axis);
v.replace(vector::X, 1);
operator==(v);
#};
value $internalField;
}
outlet
{
type inletOutlet;
inletValue uniform (1 0 0);
value uniform (1 0 0);
}
side1
{
type cyclicAMI;
value uniform (1 0 0);
}
side2
{
type cyclicAMI;
value uniform (1 0 0);
type pressureInletOutletVelocity;
value $internalField;
}
walls
{

View File

@ -20,32 +20,24 @@ internalField uniform 1;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type turbulentMixingLengthDissipationRateInlet;
mixingLength 0.5;
value uniform 1;
value $internalField;
}
outlet
{
type inletOutlet;
inletValue uniform 1;
value uniform 1;
}
side1
{
type cyclicAMI;
value uniform 1;
}
side2
{
type cyclicAMI;
value uniform 1;
inletValue $internalField;
value $internalField;
}
walls
{
type epsilonWallFunction;
value uniform 1;
value $internalField;
}
}

View File

@ -20,27 +20,19 @@ internalField uniform 1;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type turbulentIntensityKineticEnergyInlet;
intensity 0.05;
value uniform 1;
value $internalField;
}
outlet
{
type inletOutlet;
inletValue uniform 1;
value uniform 1;
}
side1
{
type cyclicAMI;
value uniform 1;
}
side2
{
type cyclicAMI;
value uniform 1;
inletValue $internalField;
value $internalField;
}
walls
{

View File

@ -1,48 +0,0 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class volScalarField;
location "0";
object nuTilda;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
inlet
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
side1
{
type cyclicAMI;
value uniform 0;
}
side2
{
type cyclicAMI;
value uniform 0;
}
walls
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -20,30 +20,22 @@ internalField uniform 0;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type calculated;
value uniform 0;
value $internalField;
}
outlet
{
type calculated;
value uniform 0;
}
side1
{
type cyclicAMI;
value uniform 0;
}
side2
{
type cyclicAMI;
value uniform 0;
value $internalField;
}
walls
{
type nutkWallFunction;
value uniform 0;
value $internalField;
}
}

View File

@ -20,24 +20,17 @@ internalField uniform 0;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type zeroGradient;
}
outlet
{
type fixedValue;
value uniform 0;
}
side1
{
type cyclicAMI;
value uniform 0;
}
side2
{
type cyclicAMI;
value uniform 0;
type totalPressure;
p0 uniform 0;
value $internalField;
}
walls
{

View File

@ -4,8 +4,6 @@ cd ${0%/*} || exit 1 # Run from this directory
# Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
rm -f 0/cellDist
cleanCase
cleanCase & rm -f 0/cellDist
#------------------------------------------------------------------------------

View File

@ -9,7 +9,7 @@ application=$(getApplication)
runApplication blockMesh
runApplication topoSet
runApplication refineHexMesh c0 -overwrite
runApplication refineHexMesh c0 -noFields -overwrite
runApplication decomposePar -cellDist
runParallel $application

View File

@ -15,36 +15,31 @@ FoamFile
convertToMeters 1;
//- Half angle of wedge in degrees
halfAngle 45.0;
//- Half angle of wedge in degrees [deg]
halfAngle 45;
//- Radius of pipe [m]
radius 0.5;
//- Derived quantities
radHalfAngle #calc "degToRad($halfAngle)";
y #calc "$radius*sin($radHalfAngle)";
minY #calc "-1.0*$y";
z #calc "$radius*cos($radHalfAngle)";
minZ #calc "-1.0*$z";
vertices
(
(0.0 0.0 0) //0
(10 0.0 0)
(10 0.0 0) //2
(0.0 0.0 0)
(0.0 $minY $z) //4
(10 $minY $z)
(10 $y $z) //6
(0.0 $y $z)
(0 0 0)
(10 0 0)
(10 0 0)
(0 0 0)
(0 #neg $y $z)
(10 #neg $y $z)
(10 $y $z)
(0 $y $z)
);
blocks
(
// inlet block
hex (0 1 2 3 4 5 6 7) (50 5 5) simpleGrading (1 1 1)
);
@ -76,30 +71,22 @@ boundary
side1
{
type cyclicAMI;
type cyclic;
neighbourPatch side2;
faces
(
(0 1 5 4)
);
transformType rotational;
rotationAxis (1 0 0);
rotationCentre (0 0 0);
}
side2
{
type cyclicAMI;
type cyclic;
neighbourPatch side1;
faces
(
(7 6 2 3)
);
transformType rotational;
rotationAxis (1 0 0);
rotationCentre (0 0 0);
}
walls

View File

@ -30,9 +30,6 @@ divSchemes
div(phi,U) bounded Gauss limitedLinearV 1;
div(phi,k) bounded Gauss limitedLinear 1;
div(phi,epsilon) bounded Gauss limitedLinear 1;
div(phi,R) bounded Gauss limitedLinear 1;
div(R) Gauss linear;
div(phi,nuTilda) bounded Gauss limitedLinear 1;
div((nuEff*dev2(T(grad(U))))) Gauss linear;
}

View File

@ -20,7 +20,6 @@ solvers
{
solver GAMG;
smoother GaussSeidel;
tolerance 1e-06;
relTol 0.05;
}
@ -28,7 +27,6 @@ solvers
pFinal
{
$p;
tolerance 1e-06;
relTol 0;
}
@ -43,23 +41,14 @@ solvers
"(U|k|epsilon)Final"
{
$U;
tolerance 1e-05;
relTol 0;
}
}
PIMPLE
{
nOuterCorrectors 4;
nCorrectors 1;
nNonOrthogonalCorrectors 0;
pRefCell 0;
pRefValue 0;
}
SIMPLE
{
nNonOrthogonalCorrectors 0;
residualControl
{
p 1e-2;

View File

@ -16,44 +16,12 @@ FoamFile
actions
(
{
name f0;
type faceSet;
action new;
source patchToFace;
patch "side1";
}
{
name f0;
type faceSet;
action subset;
source boxToFace;
box (0 -100 -100)(100 -0.2 100);
}
{
name c0;
type cellSet;
action new;
source faceToCell;
set f0;
option any;
}
{
name walls;
type faceSet;
action new;
source patchToFace;
patch "walls";
}
{
name c0;
type cellSet;
action delete;
source faceToCell;
set walls;
option any;
source boxToCell;
box (-1e6 -1e6 -1e6)(1e6 -0.15 0.3);
}
);