reactingEulerFoam: populationBalanceModel: Added fractal shape modelling support

This change adds representation of the shape of a dispersed phase. A
layer has been added to model the relationship between the
characteristic volume of a sizeGroup and its physical diameter.
Previously this relationship was represented by a constant form factor.

Currently, two shape models are available:

  - spherical

  - fractal (for modelling fractal agglomerates)

The latter introduces the average surface area to volume ratio, kappa,
of the entities in a size group as a secondary field-dependent internal
variable to the population balance equation, which makes the population
balance approach "quasi-"bivariate. From kappa and a constant mass
fractal dimension, a collisional diameter can be derived which affects
the coagulation rates computed by the following models:

  - ballisticCollisions

  - brownianCollisions

  - DahnekeInterpolation

  - turbulentShear

The fractal shape modelling also takes into account the effect of sintering
of primary particles on the surface area of the aggregate.

Further additions/changes:

  - Time scale filtering for handling large drag and heat transfer
    coefficients occurring for particles in the nanometre range

  - Aerosol drag model based on Stokes drag with a Knudsen number based
    correction (Cunningham correction)

  - Reaction driven nucleation

  - A complete redesign of the sizeDistribution functionObject

The functionality is demonstrated by a tutorial case simulating the
vapour phase synthesis of titania by titanium tetrachloride oxidation.

Patch contributed by Institute of Fluid Dynamics, Helmholtz-Zentrum Dresden -
Rossendorf (HZDR) and VTT Technical Research Centre of Finland Ltd.
This commit is contained in:
Will Bainbridge
2019-08-13 08:39:06 +01:00
parent b2b3bd677f
commit cfbb389fd3
325 changed files with 9239 additions and 1711 deletions

View File

@ -32,20 +32,20 @@ gas
{
populationBalance bubbles;
formFactor 0.5235987756;
shapeModel spherical;
sizeGroups
(
f1 {d 1.0e-4; value 0 ;}
f2 {d 1.2e-4; value 0 ;}
f3 {d 1.44e-4; value 0 ;}
f4 {d 1.728e-4; value 0 ;}
f5 {d 2.074e-4; value 0 ;}
f6 {d 2.49e-4; value 0 ;}
f7 {d 2.99e-4; value 0 ;}
f8 {d 3.6e-4; value 0 ;}
f9 {d 4.3e-4; value 0 ;}
f10 {d 5.16e-4; value 1 ;}
f1 {dSph 1.0e-4; value 0 ;}
f2 {dSph 1.2e-4; value 0 ;}
f3 {dSph 1.44e-4; value 0 ;}
f4 {dSph 1.728e-4; value 0 ;}
f5 {dSph 2.074e-4; value 0 ;}
f6 {dSph 2.49e-4; value 0 ;}
f7 {dSph 2.99e-4; value 0 ;}
f8 {dSph 3.6e-4; value 0 ;}
f9 {dSph 4.3e-4; value 0 ;}
f10 {dSph 5.16e-4; value 1 ;}
);
}
@ -66,27 +66,27 @@ gas2
{
populationBalance bubbles;
formFactor 0.5235987756;
shapeModel spherical;
sizeGroups
(
f11 {d 6.19e-4; value 1 ;}
f12 {d 7.43e-4; value 0 ;}
f13 {d 8.92e-4; value 0 ;}
f14 {d 1.07e-3; value 0 ;}
f15 {d 1.28e-3; value 0 ;}
f16 {d 1.54e-3; value 0 ;}
f17 {d 1.85e-3; value 0 ;}
f18 {d 2.22e-3; value 0 ;}
f19 {d 2.67e-3; value 0 ;}
f20 {d 3.19e-3; value 0 ;}
f21 {d 3.85e-3; value 0 ;}
f22 {d 4.6e-3; value 0 ;}
f23 {d 5.52e-3; value 0 ;}
f24 {d 6.62e-3; value 0 ;}
f25 {d 7.95e-3; value 0 ;}
f26 {d 9.54e-3; value 0 ;}
f27 {d 1.14e-2; value 0 ;}
f11 {dSph 6.19e-4; value 1 ;}
f12 {dSph 7.43e-4; value 0 ;}
f13 {dSph 8.92e-4; value 0 ;}
f14 {dSph 1.07e-3; value 0 ;}
f15 {dSph 1.28e-3; value 0 ;}
f16 {dSph 1.54e-3; value 0 ;}
f17 {dSph 1.85e-3; value 0 ;}
f18 {dSph 2.22e-3; value 0 ;}
f19 {dSph 2.67e-3; value 0 ;}
f20 {dSph 3.19e-3; value 0 ;}
f21 {dSph 3.85e-3; value 0 ;}
f22 {dSph 4.6e-3; value 0 ;}
f23 {dSph 5.52e-3; value 0 ;}
f24 {dSph 6.62e-3; value 0 ;}
f25 {dSph 7.95e-3; value 0 ;}
f26 {dSph 9.54e-3; value 0 ;}
f27 {dSph 1.14e-2; value 0 ;}
);
}

View File

@ -60,10 +60,10 @@ functions
writeControl runTime;
writeInterval 0.5;
log yes;
functionType volumeDensity;
abszissaType diameter;
selectionMode cellZone;
cellZone x349;
functionType volume;
coordinateType diameter;
regionType cellZone;
name x349;
populationBalance bubbles;
}
volumeDensity_bulk.diameter.bubbles
@ -73,10 +73,10 @@ functions
writeControl runTime;
writeInterval 0.5;
log yes;
functionType volumeDensity;
abszissaType diameter;
selectionMode cellZone;
cellZone x349_bulk;
functionType volume;
coordinateType diameter;
regionType cellZone;
name x349_bulk;
populationBalance bubbles;
}
volumeDensity_wall.diameter.bubbles
@ -86,10 +86,10 @@ functions
writeControl runTime;
writeInterval 0.5;
log yes;
functionType volumeDensity;
abszissaType diameter;
selectionMode cellZone;
cellZone x349_wall;
functionType volume;
coordinateType diameter;
regionType cellZone;
name x349_wall;
populationBalance bubbles;
}
outflow

View File

@ -29,22 +29,22 @@ air1
{
populationBalance bubbles;
formFactor 0.5235987756;
shapeModel spherical;
sizeGroups
(
f0{d 1.00e-3; value 0;}
f1{d 1.08e-3; value 0;}
f2{d 1.16e-3; value 0;}
f3{d 1.25e-3; value 0;}
f4{d 1.36e-3; value 0;}
f5{d 1.46e-3; value 0;}
f6{d 1.58e-3; value 0;}
f7{d 1.71e-3; value 0;}
f8{d 1.85e-3; value 0;}
f9{d 2.00e-3; value 0;}
f10{d 2.16e-3; value 0;}
f11{d 2.33e-3; value 1.0;}
f0{dSph 1.00e-3; value 0;}
f1{dSph 1.08e-3; value 0;}
f2{dSph 1.16e-3; value 0;}
f3{dSph 1.25e-3; value 0;}
f4{dSph 1.36e-3; value 0;}
f5{dSph 1.46e-3; value 0;}
f6{dSph 1.58e-3; value 0;}
f7{dSph 1.71e-3; value 0;}
f8{dSph 1.85e-3; value 0;}
f9{dSph 2.00e-3; value 0;}
f10{dSph 2.16e-3; value 0;}
f11{dSph 2.33e-3; value 1.0;}
);
}
@ -59,20 +59,20 @@ air2
{
populationBalance bubbles;
formFactor 0.5235987756;
shapeModel spherical;
sizeGroups
(
f12{d 2.51e-3; value 0;}
f13{d 2.72e-3; value 0.25;}
f14{d 2.93e-3; value 0.5;}
f15{d 3.17e-3; value 0.25 ;}
f16{d 3.42e-3; value 0;}
f17{d 3.70e-3; value 0;}
f18{d 4.00e-3; value 0;}
f19{d 4.32e-3; value 0;}
f20{d 4.66e-3; value 0;}
f21{d 5.03e-3; value 0;}
f12{dSph 2.51e-3; value 0;}
f13{dSph 2.72e-3; value 0.25;}
f14{dSph 2.93e-3; value 0.5;}
f15{dSph 3.17e-3; value 0.25 ;}
f16{dSph 3.42e-3; value 0;}
f17{dSph 3.70e-3; value 0;}
f18{dSph 4.00e-3; value 0;}
f19{dSph 4.32e-3; value 0;}
f20{dSph 4.66e-3; value 0;}
f21{dSph 5.03e-3; value 0;}
);
}

View File

@ -104,20 +104,21 @@ functions
);
}
numberDensity.diameter.bubbles
numberDensity
{
type sizeDistribution;
functionObjectLibs ("libreactingEulerFoamFunctionObjects.so");
writeControl runTime;
writeInterval 10;
log yes;
writeControl outputTime;
writeInterval 1;
functionType numberDensity;
abszissaType diameter;
selectionMode cellZone;
cellZone zone;
populationBalance bubbles;
regionType cellZone;
name zone;
functionType number;
coordinateType diameter;
densityFunction yes;
}
}

View File

@ -28,6 +28,7 @@ solvers
nCorr 1;
tolerance 1e-4;
scale true;
sourceUpdateInterval 1;
solveOnFinalIterOnly true;
}

View File

@ -29,32 +29,32 @@ air
{
populationBalance bubbles;
formFactor 0.5235987756;
shapeModel spherical;
sizeGroups
(
f0{d 1.00e-3; value 0;}
f1{d 1.08e-3; value 0;}
f2{d 1.16e-3; value 0;}
f3{d 1.25e-3; value 0;}
f4{d 1.36e-3; value 0;}
f5{d 1.46e-3; value 0;}
f6{d 1.58e-3; value 0;}
f7{d 1.71e-3; value 0;}
f8{d 1.85e-3; value 0;}
f9{d 2.00e-3; value 0;}
f10{d 2.16e-3; value 0;}
f11{d 2.33e-3; value 0;}
f12{d 2.51e-3; value 0;}
f13{d 2.72e-3; value 0.25;}
f14{d 2.93e-3; value 0.5;}
f15{d 3.17e-3; value 0.25 ;}
f16{d 3.42e-3; value 0;}
f17{d 3.70e-3; value 0;}
f18{d 4.00e-3; value 0;}
f19{d 4.32e-3; value 0;}
f20{d 4.66e-3; value 0;}
f21{d 5.03e-3; value 0;}
f0{dSph 1.00e-3; value 0;}
f1{dSph 1.08e-3; value 0;}
f2{dSph 1.16e-3; value 0;}
f3{dSph 1.25e-3; value 0;}
f4{dSph 1.36e-3; value 0;}
f5{dSph 1.46e-3; value 0;}
f6{dSph 1.58e-3; value 0;}
f7{dSph 1.71e-3; value 0;}
f8{dSph 1.85e-3; value 0;}
f9{dSph 2.00e-3; value 0;}
f10{dSph 2.16e-3; value 0;}
f11{dSph 2.33e-3; value 0;}
f12{dSph 2.51e-3; value 0;}
f13{dSph 2.72e-3; value 0.25;}
f14{dSph 2.93e-3; value 0.5;}
f15{dSph 3.17e-3; value 0.25 ;}
f16{dSph 3.42e-3; value 0;}
f17{dSph 3.70e-3; value 0;}
f18{dSph 4.00e-3; value 0;}
f19{dSph 4.32e-3; value 0;}
f20{dSph 4.66e-3; value 0;}
f21{dSph 5.03e-3; value 0;}
);
}

View File

@ -90,20 +90,20 @@ functions
);
}
numberDensity.diameter.bubbles
numberDensity
{
type sizeDistribution;
functionObjectLibs ("libreactingEulerFoamFunctionObjects.so");
writeControl runTime;
writeInterval 10;
log yes;
writeControl outputTime;
writeInterval 1;
functionType numberDensity;
abszissaType diameter;
selectionMode cellZone;
cellZone zone;
populationBalance bubbles;
regionType cellZone;
name zone;
functionType number;
coordinateType diameter;
densityFunction yes;
}
}

View File

@ -28,6 +28,7 @@ solvers
nCorr 1;
tolerance 1e-4;
scale true;
sourceUpdateInterval 1;
solveOnFinalIterOnly true;
}

View File

@ -32,37 +32,37 @@ gas
{
populationBalance bubbles;
formFactor 0.5235987756;
shapeModel spherical;
sizeGroups
(
f1 {d 1.0e-4; value 0 ;}
f2 {d 1.2e-4; value 0 ;}
f3 {d 1.44e-4; value 0 ;}
f4 {d 1.728e-4; value 0 ;}
f5 {d 2.074e-4; value 0 ;}
f6 {d 2.49e-4; value 0 ;}
f7 {d 2.99e-4; value 0 ;}
f8 {d 3.6e-4; value 1.0 ;}
f9 {d 4.3e-4; value 0 ;}
f10 {d 5.16e-4; value 0 ;}
f11 {d 6.19e-4; value 0 ;}
f12 {d 7.43e-4; value 0 ;}
f13 {d 8.92e-4; value 0 ;}
f14 {d 1.07e-3; value 0 ;}
f15 {d 1.28e-3; value 0 ;}
f16 {d 1.54e-3; value 0 ;}
f17 {d 1.85e-3; value 0 ;}
f18 {d 2.22e-3; value 0 ;}
f19 {d 2.67e-3; value 0 ;}
f20 {d 3.19e-3; value 0 ;}
f21 {d 3.85e-3; value 0 ;}
f22 {d 4.6e-3; value 0 ;}
f23 {d 5.52e-3; value 0 ;}
f24 {d 6.62e-3; value 0 ;}
f25 {d 7.95e-3; value 0 ;}
f26 {d 9.54e-3; value 0 ;}
f27 {d 1.14e-2; value 0 ;}
f1 {dSph 1.0e-4; value 0 ;}
f2 {dSph 1.2e-4; value 0 ;}
f3 {dSph 1.44e-4; value 0 ;}
f4 {dSph 1.728e-4; value 0 ;}
f5 {dSph 2.074e-4; value 0 ;}
f6 {dSph 2.49e-4; value 0 ;}
f7 {dSph 2.99e-4; value 0 ;}
f8 {dSph 3.6e-4; value 1.0 ;}
f9 {dSph 4.3e-4; value 0 ;}
f10 {dSph 5.16e-4; value 0 ;}
f11 {dSph 6.19e-4; value 0 ;}
f12 {dSph 7.43e-4; value 0 ;}
f13 {dSph 8.92e-4; value 0 ;}
f14 {dSph 1.07e-3; value 0 ;}
f15 {dSph 1.28e-3; value 0 ;}
f16 {dSph 1.54e-3; value 0 ;}
f17 {dSph 1.85e-3; value 0 ;}
f18 {dSph 2.22e-3; value 0 ;}
f19 {dSph 2.67e-3; value 0 ;}
f20 {dSph 3.19e-3; value 0 ;}
f21 {dSph 3.85e-3; value 0 ;}
f22 {dSph 4.6e-3; value 0 ;}
f23 {dSph 5.52e-3; value 0 ;}
f24 {dSph 6.62e-3; value 0 ;}
f25 {dSph 7.95e-3; value 0 ;}
f26 {dSph 9.54e-3; value 0 ;}
f27 {dSph 1.14e-2; value 0 ;}
);
}

View File

@ -60,10 +60,10 @@ functions
writeControl runTime;
writeInterval 0.5;
log yes;
functionType volumeDensity;
abszissaType diameter;
selectionMode cellZone;
cellZone x349;
functionType volume;
coordinateType diameter;
regionType cellZone;
name x349;
populationBalance bubbles;
}
volumeDensity_bulk.diameter.bubbles
@ -73,10 +73,10 @@ functions
writeControl runTime;
writeInterval 0.5;
log yes;
functionType volumeDensity;
abszissaType diameter;
selectionMode cellZone;
cellZone x349_bulk;
functionType volume;
coordinateType diameter;
regionType cellZone;
name x349_bulk;
populationBalance bubbles;
}
volumeDensity_wall.diameter.bubbles
@ -86,10 +86,10 @@ functions
writeControl runTime;
writeInterval 0.5;
log yes;
functionType volumeDensity;
abszissaType diameter;
selectionMode cellZone;
cellZone x349_wall;
functionType volume;
coordinateType diameter;
regionType cellZone;
name x349_wall;
populationBalance bubbles;
}
outflow

View File

@ -0,0 +1,43 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object Ar.vapor;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 9.759118E-01;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value uniform 9.759118E-01;
}
outlet
{
type zeroGradient;
}
wall
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,43 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object Cl2.vapor;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0.0;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value uniform 0.0;
}
outlet
{
type zeroGradient;
}
wall
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,43 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object N2.vapor;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0.0;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value uniform 0.0;
}
outlet
{
type zeroGradient;
}
wall
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,43 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object O2.vapor;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 1.551577E-02;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value uniform 1.551577E-02;
}
outlet
{
type zeroGradient;
}
wall
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,57 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object T.particles;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 296;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value uniform 296;
}
outlet
{
type zeroGradient;
}
wall
{
type fixedProfile;
profile csvFile;
profileCoeffs
{
nHeaderLine 0; // Number of header lines
refColumn 0; // Reference column index
componentColumns (1); // Component column indices
separator " "; // Optional (defaults to ",")
mergeSeparators yes; // Merge multiple separators
outOfBounds clamp; // Optional out-of-bounds handling
file "validation/exptData/wallTemperature";
interpolationScheme linear; // Optional interpolation scheme
}
direction (1 0 0);
origin 0;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,57 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object T.vapor;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 296;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value uniform 296;
}
outlet
{
type zeroGradient;
}
wall
{
type fixedProfile;
profile csvFile;
profileCoeffs
{
nHeaderLine 0; // Number of header lines
refColumn 0; // Reference column index
componentColumns (1); // Component column indices
separator " "; // Optional (defaults to ",")
mergeSeparators yes; // Merge multiple separators
outOfBounds clamp; // Optional out-of-bounds handling
file "validation/exptData/wallTemperature";
interpolationScheme linear; // Optional interpolation scheme
}
direction (1 0 0);
origin 0;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,43 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object TiCl4.vapor;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 8.572434E-03;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value uniform 8.572434E-03;
}
outlet
{
type zeroGradient;
}
wall
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,43 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object TiO2.particles;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 1.0;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value uniform 1.0;
}
outlet
{
type zeroGradient;
}
wall
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,43 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object TiO2.vapor;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0.0;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value uniform 0.0;
}
outlet
{
type zeroGradient;
}
wall
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object U.particles;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type zeroGradient;
}
outlet
{
type zeroGradient;
}
wall
{
type slip;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,44 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object U.vapor;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type flowRateInletVelocity;
massFlowRate 2.173893E-07;
rho thermo:rho.vapor;
value $internalField;
}
outlet
{
type zeroGradient;
}
wall
{
type slip;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,42 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object alpha.particles;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value uniform 0;
}
outlet
{
type zeroGradient;
}
wall
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,42 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object alpha.particles;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 1.0;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value uniform 1.0;
}
outlet
{
type zeroGradient;
}
wall
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,43 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object f.particles.aggregates;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 1.0;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value uniform 1.0;
}
outlet
{
type zeroGradient;
}
wall
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,44 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 1e5;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type calculated;
value $internalField;
}
outlet
{
type calculated;
value $internalField;
}
wall
{
type calculated;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,47 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object p_rgh;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 1e5;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedFluxPressure;
value $internalField;
}
outlet
{
type prghTotalPressure;
U U.vapor;
rho thermo:rho.vapor;
p0 uniform 1e5;
value $internalField;
}
wall
{
type fixedFluxPressure;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,17 @@
#!/bin/sh
cd ${0%/*} || exit 1 # run from this directory
# Source tutorial run functions
. $WM_PROJECT_DIR/bin/tools/RunFunctions
# Set application name
application=$(getApplication)
m4 system/blockMeshDict.m4 > system/blockMeshDict
runApplication blockMesh
runApplication topoSet
runApplication $application
( cd validation && ./createGraphs )
#------------------------------------------------------------------------------

View File

@ -0,0 +1,42 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object chemistryProperties.gas;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
chemistryType
{
solver EulerImplicit;
}
chemistry on;
initialChemicalTimeStep 1e-07;
EulerImplicitCoeffs
{
cTauChem 1;
equilibriumRateLimiter off;
}
odeCoeffs
{
solver Rosenbrock43;
absTol 1e-8;
relTol 0.01;
}
#include "reactions.vapor"
// ************************************************************************* //

View File

@ -0,0 +1,21 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object combustionProperties.vapor;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
combustionModel laminar;
// ************************************************************************* //

View File

@ -0,0 +1,23 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class uniformDimensionedVectorField;
location "constant";
object g;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -2 0 0 0 0];
value (0 0 0);
// ************************************************************************* //

View File

@ -0,0 +1,207 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object phaseProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
type populationBalanceTwoPhaseSystem;
phases (particles vapor);
populationBalances (aggregates);
particles
{
type multiComponentPhaseModel;
diameterModel velocityGroup;
velocityGroupCoeffs
{
populationBalance aggregates;
shapeModel fractal;
fractalCoeffs
{
sinteringModel KochFriedlander;
KochFriedlanderCoeffs
{
Cs 8.3e24;
n 4.0;
m 1.0;
Ta 3700.0;
}
}
sizeGroups
(
f01{dSph 4.000E-10; value 1.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f02{dSph 5.769E-10; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f03{dSph 8.320E-10; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f04{dSph 1.200E-09; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f05{dSph 1.731E-09; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f06{dSph 2.496E-09; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f07{dSph 3.600E-09; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f08{dSph 5.192E-09; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f09{dSph 7.488E-09; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f10{dSph 1.080E-08; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f11{dSph 1.558E-08; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f12{dSph 2.246E-08; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f13{dSph 3.240E-08; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f14{dSph 4.673E-08; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f15{dSph 6.739E-08; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f16{dSph 9.720E-08; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f17{dSph 1.402E-07; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f18{dSph 2.022E-07; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f19{dSph 2.916E-07; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f20{dSph 4.206E-07; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f21{dSph 6.066E-07; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f22{dSph 8.748E-07; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f23{dSph 1.262E-06; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f24{dSph 1.820E-06; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f25{dSph 2.624E-06; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f26{dSph 3.785E-06; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f27{dSph 5.459E-06; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f28{dSph 7.873E-06; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
f29{dSph 1.136E-05; value 0.0; kappa 1.5E+10; Df 1.8; alphaC 1;}
);
}
Sct 1.0;
residualAlpha 1e-15;
}
vapor
{
type reactingPhaseModel;
diameterModel constant;
constantCoeffs
{
d 1;
}
Sct 1.0;
residualAlpha 1e-5;
}
populationBalanceCoeffs
{
aggregates
{
continuousPhase vapor;
coalescenceModels
(
DahnekeInterpolation{}
);
binaryBreakupModels
();
breakupModels
();
driftModels
();
nucleationModels
(
reactionDriven
{
nucleationDiameter 4E-10;
velocityGroup particles;
reactingPhase vapor;
specie TiO2;
}
);
}
}
blending
{
default
{
type none;
continuousPhase vapor;
}
}
interfaceCompression
();
surfaceTension
();
aspectRatio
();
drag
(
(particles in vapor)
{
type timeScaleFiltered;
minRelaxTime 1e-4;
dragModel
{
type aerosolDrag;
swarmCorrection
{
type none;
}
}
}
);
virtualMass
();
heatTransfer
(
(particles in vapor)
{
type timeScaleFiltered;
minRelaxTime 1e-4;
heatTransferModel
{
type constantNu;
Nu 1;
}
}
);
phaseTransfer
();
lift
();
wallLubrication
();
turbulentDispersion
();
// Minimum allowable pressure
pMin 10000;
// ************************************************************************* //

View File

@ -0,0 +1,39 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
-------------------------------------------------------------------------------
Reference:
Akhtar, M. K., Xiong, Y., & Pratsinis, S. E. (1991).
Vapor synthesis of titania powder by titanium tetrachloride oxidation.
AIChE Journal, 37(10), 1561-1570.
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object reactions.vapor;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
reactions
{
oxidation
{
type irreversibleArrheniusReaction;
reaction "O2^0 + TiCl4 = TiO2 + 2Cl2";
A 8.29e4;
beta 0.0;
Ta 10680;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,156 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object thermo.vapor;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
species
(
O2
TiCl4
TiO2
Cl2
Ar
N2
);
Ar
{
specie
{
molWeight 39.948;
}
thermodynamics
{
Tlow 200;
Thigh 6000;
Tcommon 1000;
highCpCoeffs ( 2.50000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -7.4537500e+02 4.37967491e+00 );
lowCpCoeffs ( 2.50000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -7.4537500e+02 4.37967491e+00 );
}
transport
{
As 2.038169524e-06;
Ts 165;
}
}
N2
{
specie
{
molWeight 28.0134;
}
thermodynamics
{
Tlow 0;
Thigh 5000;
Tcommon 1000;
highCpCoeffs ( 2.92664 0.00148798 -5.68476e-07 1.0097e-10 -6.75335e-15 -922.798 5.98053 );
lowCpCoeffs ( 3.29868 0.00140824 -3.96322e-06 5.64152e-09 -2.44485e-12 -1020.9 3.95037 );
}
transport
{
As 1.406732195e-06;
Ts 111;
}
}
O2
{
specie
{
molWeight 31.99825;
}
thermodynamics
{
Tlow 200;
Thigh 6000;
Tcommon 1000;
highCpCoeffs ( 3.66096083e+00 6.56365523e-04 -1.41149485e-07 2.05797658e-11 -1.29913248e-15 -1.21597725e+03 3.41536184e+00 );
lowCpCoeffs ( 3.78245636e+00 -2.99673415e-03 9.84730200e-06 -9.68129508e-09 3.24372836e-12 -1.06394356e+03 3.65767573e+00 );
}
transport
{
As 1.6934113e-06;
Ts 127;
}
}
TiCl4
{
specie
{
molWeight 189.6908;
}
thermodynamics
{
Tlow 280;
Thigh 5000;
Tcommon 1000;
highCpCoeffs ( 1.71426430e+01 1.09370870e-03 -1.06903110e-09 2.66167570e-13 -2.27944800e-17 -1.01880270e+05 -6.76401420e+01 );
lowCpCoeffs ( 1.70660420e+01 1.57771680e-03 -1.08703760e-06 1.03903080e-09 -3.60225300e-13 -1.01871340e+05 -6.73082280e+01 );
}
transport
{
As 1.6934113e-06; // Taken from oxygen
Ts 127;
}
}
TiO2
{
specie
{
molWeight 79.87880;
}
thermodynamics
{
Tlow 280;
Thigh 5000;
Tcommon 1000;
highCpCoeffs ( 6.84891510e+00 4.24634610e-03 -3.00889840e-06 1.06025190e-09 -1.43795970e-13 -1.15992460e+05 -3.45141060e+01 );
lowCpCoeffs ( -1.61175170e-01 3.79666600e-02 -6.51547500e-05 5.25521360e-08 -1.62000510e-11 -1.14788970e+05 -1.88740350e+00 );
}
transport
{
As 1.6934113e-06; // Taken from oxygen
Ts 127;
}
}
Cl2
{
specie
{
molWeight 35.45270;
}
thermodynamics
{
Tlow 200;
Thigh 6000;
Tcommon 1000;
highCpCoeffs ( 2.94658358e+00 -3.85985408e-04 1.36139388e-07 -2.17032923e-11 1.28751025e-15 1.36970327e+04 3.11330136e+00 );
lowCpCoeffs ( 2.26062480e+00 1.54154399e-03 -6.80283622e-07 -1.59972975e-09 1.15416636e-12 1.38552986e+04 6.57020799e+00 );
}
transport
{
As 1.6934113e-06; // Taken from oxygen
Ts 127;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,59 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object thermophysicalProperties.particles;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType
{
type heRhoThermo;
mixture multiComponentMixture;
transport const;
thermo janaf;
equationOfState rhoConst;
specie specie;
energy sensibleInternalEnergy;
}
species (TiO2);
inertSpecie TiO2;
TiO2
{
specie
{
molWeight 79.87880;
}
equationOfState
{
rho 4230;
}
thermodynamics
{
Tlow 280;
Thigh 5000;
Tcommon 1000;
highCpCoeffs ( 6.84891510e+00 4.24634610e-03 -3.00889840e-06 1.06025190e-09 -1.43795970e-13 -1.15992460e+05 -3.45141060e+01 );
lowCpCoeffs ( -1.61175170e-01 3.79666600e-02 -6.51547500e-05 5.25521360e-08 -1.62000510e-11 -1.14788970e+05 -1.88740350e+00 ); // Check heat capacities
}
transport
{
mu 1e-7;
Pr 8.0e-6;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,34 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object thermophysicalProperties.vapor;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType
{
type heRhoThermo;
mixture multiComponentMixture;
transport sutherland;
thermo janaf;
equationOfState perfectGas;
specie specie;
energy sensibleEnthalpy;
}
inertSpecie Ar;
#include "$FOAM_CASE/constant/thermo.vapor"
// ************************************************************************* //

View File

@ -0,0 +1,21 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object turbulenceProperties.particles;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType laminar;
// ************************************************************************* //

View File

@ -0,0 +1,21 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object turbulenceProperties.vapor;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType laminar;
// ************************************************************************* //

View File

@ -0,0 +1,136 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// General m4 macros
changecom(//)changequote([,])
define(calc, [esyscmd(perl -e 'print ($1)')])
define(VCOUNT, 0)
define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])
define(pi, 3.1415926536)
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// User-defined parameters
convertToMeters 1;
// Pipe radius (z-axis)
define(radius, 0.015875)
// Pipe length (x-axis)
define(length, 0.44)
// Center (wedge) angle
define(angle, 1)
// Axis origin
define(x0, 0.0)
define(y0, 0.0)
define(z0, 0.0)
// Number of cells
define(nx, 220)
define(ny, 1)
define(nz, 16)
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Derived parameters
define(deg,angle/2)
define(zr,calc(z0 + (radius*cos((pi/180)*deg))))
define(yp,calc(y0 + (radius*sin((pi/180)*deg))))
define(ym,calc(y0 - (radius*sin((pi/180)*deg))))
define(xl,calc(x0 + length))
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Parametric description
vertices
(
(x0 y0 z0)
(xl y0 z0)
(xl y0 z0)
(x0 y0 z0)
(x0 ym zr)
(xl ym zr)
(xl yp zr)
(x0 yp zr)
);
blocks
(
hex (0 1 1 0 4 5 6 7) (nx ny nz) simpleGrading (1 1 1)
);
edges
();
boundary
(
inlet
{
type patch;
faces
(
(0 4 7 0)
);
}
outlet
{
type patch;
faces
(
(1 1 6 5)
);
}
walls
{
type wall;
faces
(
(4 5 6 7)
);
}
front
{
type wedge;
faces
(
(0 1 5 4)
);
}
back
{
type wedge;
faces
(
(0 7 6 1)
);
}
axis
{
type empty;
faces
(
(0 0 1 1)
);
}
);
mergePatchPairs
(
);
// ************************************************************************* //

View File

@ -0,0 +1,80 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application reactingTwoPhaseEulerFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 10;
deltaT 1e-4;
writeControl adjustableRunTime;
writeInterval 1;
purgeWrite 0;
writeFormat ascii;
writePrecision 9;
writeCompression off;
timeFormat general;
timePrecision 8;
runTimeModifiable yes;
adjustTimeStep yes;
maxCo 0.8;
maxDeltaT 1e-3;
functions
{
#includeFunc singleGraph
numberConcentration
{
type sizeDistribution;
functionObjectLibs ("libreactingEulerFoamFunctionObjects.so");
writeControl outputTime;
writeInterval 1;
log yes;
regionType cellZone;
name outlet;
populationBalance aggregates;
functionType number;
coordinateType projectedAreaDiameter;
densityFunction yes;
normalize yes;
geometric yes;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,66 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default Euler;
}
gradSchemes
{
default Gauss linear;
}
divSchemes
{
default none;
"div\(phi,alpha.*\)" Gauss vanLeer;
"div\(phir,alpha.*\)" Gauss vanLeer;
"div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1;
"div\(phi.*,U.*\)" Gauss limitedLinearV 1;
"div\(alphaRhoPhi.*,(k|epsilon|h|e).*\)" Gauss limitedLinear 1;
"div\(alphaRhoPhi.*,K.*\)" Gauss limitedLinear 1;
"div\(alphaRhoPhi.*,Y.*\)" Gauss limitedLinear 1;
"div\(alphaPhi.*,p\)" Gauss limitedLinear 1;
"div\(alphaRhoPhi.*,f.*\)" Gauss upwind;
"div\(fAlphaRhoPhi.*,kappa.*\)" Gauss limitedLinear 1;
"div\(\(\(\(alpha.*\*thermo:rho.*\)\*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear;
}
laplacianSchemes
{
default Gauss linear corrected;
}
interpolationSchemes
{
default linear;
fi upwind alphaRhoPhi.particles;
}
snGradSchemes
{
default corrected;
}
// ************************************************************************* //

View File

@ -0,0 +1,97 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
"alpha.*"
{
nAlphaCorr 1;
nAlphaSubCycles 1;
}
aggregates
{
nCorr 1;
tolerance 1e-4;
scale true;
sourceUpdateInterval 10;
solveOnFinalIterOnly false;
}
p_rgh
{
solver PCG;
preconditioner DIC;
tolerance 1e-7;
relTol 0;
maxIter 20;
}
p_rghFinal
{
$p_rgh;
relTol 0;
}
"(h|e).*"
{
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-7;
relTol 0;
minIter 1;
maxIter 10;
}
"(k|epsilon).*"
{
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-5;
relTol 0;
minIter 1;
}
"(Yi|f|kappa).*"
{
solver PBiCGStab;
preconditioner DILU;
tolerance 1e-7;
relTol 0;
residualAlpha 1e-5;
}
}
PIMPLE
{
nOuterCorrectors 1;
nCorrectors 1;
nEnergyCorrectors 1;
nNonOrthogonalCorrectors 0;
faceMomentum yes;
}
relaxationFactors
{
equations
{
".*" 1.0;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,37 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
-------------------------------------------------------------------------------
Description
Writes graph data for specified fields along a line, specified by start
and end points.
\*---------------------------------------------------------------------------*/
start (0 0 1e-3);
end (0.44 0 1e-3);
fields
(
TiCl4.vapor
O2.vapor
Cl2.vapor
alpha.particles
);
// Sampling and I/O settings
#includeEtc "caseDicts/postProcessing/graphs/sampleDict.cfg"
// Override settings here, e.g.
setConfig
{
type lineCell;
axis x; // y, z, xyz
}
// Must be last entry
#includeEtc "caseDicts/postProcessing/graphs/graph.cfg"
// ************************************************************************* //

View File

@ -0,0 +1,44 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object topoSetDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
actions
(
{
name outlet;
type cellSet;
action new;
source cylinderToCell;
sourceInfo
{
p1 (0.435 0 0);
p2 (0.44 0 0);
radius 0.015875;
}
}
{
name outlet;
type cellZoneSet;
action new;
source setToCellZone;
sourceInfo
{
set outlet;
}
}
);
// ************************************************************************* //

View File

@ -0,0 +1,49 @@
#!/bin/sh
if ! which gnuplot > /dev/null 2>&1
then
echo 'gnuplot not found - skipping graph creation' >&2
exit 1
fi
gnuplot<<EOF
set terminal postscript eps color enhanced font "Helvetica,20"
set output '../species.eps'
set xlabel 'l (m)'
set ylabel 'Y (-)'
set y2label '{/Symbol a} (-)'
set ytics nomirror
set y2tics nomirror
set key center
file = system("ls ../postProcessing/singleGraph/$(foamListTimes -case .. | tail -1)/*.xy")
plot file u 1:2 w l t 'TiCl4',\
file u 1:3 w l t 'O2',\
file u 1:4 w l t 'Cl2',\
file u 1:5 axis x1y2 w l t '{/Symbol a}_{particles}'
EOF
gnuplot<<EOF
set terminal postscript eps color enhanced font "Helvetica,20"
set output '../sizeDistribution.eps'
set xlabel 'Mobility diameter ({/Symbol m}m)'
set ylabel 'N_i/N_t/{/Symbol D}ln d'
set y2label '{/Symbol k} (m^{-1})'
set logscale xyy2
set tics format '%1.e'
set ytics nomirror
set y2tics nomirror
set xrange [1e-3:1]
set yrange [1e-3:3]
result = system("ls ../postProcessing/numberConcentration/$(foamListTimes -case .. | tail -1)/numberConcentration.dat")
plot result u (\$3/1e-6):4 w lp t 'Size distribution',\
result u (\$3/1e-6):(\$2/\$1) axis x1y2 w l t '{/Symbol k}',\
result u (\$3/1e-6):(6./((6./pi*\$1)**(1./3.))) axis x1y2 w l t '{/Symbol k} lower bound'
EOF
#------------------------------------------------------------------------------

View File

@ -0,0 +1,49 @@
-0.21 296
-0.187434555 302.6612223
-0.167539267 316.935962
-0.143455497 345.5480682
-0.126701571 371.7970557
-0.114136126 412.4168107
-0.097382199 481.7279992
-0.080628272 563.0009102
-0.061780105 644.2654709
-0.041884817 725.5258565
-0.021989529 806.7862421
0.00104712 897.6034804
0.02408377 1005.16713
0.043979058 1091.212205
0.069109948 1174.844059
0.094240838 1270.437636
0.119371728 1327
0.145549738 1365.926835
0.171727749 1368.214802
0.197905759 1370.502768
0.22408377 1377.575424
0.24921466 1377.475221
0.27539267 1379.763187
0.30052356 1382.055329
0.32460733 1379.566956
0.35078534 1379.462578
0.37382199 1357.839625
0.4 1340.988836
0.42617801 1283.46819
0.45026178 1180.501349
0.476439791 1065.564435
0.504712042 929.08807
0.527748691 842.8718154
0.553926702 773.389447
0.579057592 727.8346986
0.606282723 687.056289
0.64921466 643.8229081
0.692146597 610.1589051
0.729842932 571.7310888
0.771727749 535.6789165
0.806282723 504.440659
0.859685864 461.1655269
0.906806283 429.8771679
0.952879581 405.7700176
1.009424084 369.6593936
1.060732984 340.7466787
1.12565445 316.5643762
1.17382199 304.4105981
1.31 296