mirror of
https://github.com/ParticulateFlow/CFDEMcoupling-PFM.git
synced 2025-12-08 06:37:44 +00:00
recurrence model: testing large, incomplete data bases
This is a small, simple tutorial for testing the implementation of large, incomplete data bases. In this tutorial case, rStatAnalysis is used as post-processor and it uses a data base in memory, which is smaller than the number of snapshots on disk.
This commit is contained in:
@ -0,0 +1,51 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 4.0 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format binary;
|
||||||
|
class volVectorField;
|
||||||
|
location "0";
|
||||||
|
object U;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [0 1 -1 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform (0 0 0);
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
cylinder
|
||||||
|
{
|
||||||
|
type fixedValue;
|
||||||
|
value uniform (0 0 0);
|
||||||
|
}
|
||||||
|
inlet
|
||||||
|
{
|
||||||
|
type fixedValue;
|
||||||
|
value uniform (0.0040120 0 0); // Re = 200
|
||||||
|
}
|
||||||
|
outlet
|
||||||
|
{
|
||||||
|
type inletOutlet;
|
||||||
|
inletValue uniform (0 0 0);
|
||||||
|
value uniform (0 0 0);
|
||||||
|
}
|
||||||
|
"side.*"
|
||||||
|
{
|
||||||
|
type slip;
|
||||||
|
}
|
||||||
|
frontBack
|
||||||
|
{
|
||||||
|
type empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,48 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 4.0 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format binary;
|
||||||
|
class volScalarField;
|
||||||
|
location "0";
|
||||||
|
object p;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [0 2 -2 0 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 0;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
cylinder
|
||||||
|
{
|
||||||
|
type zeroGradient;
|
||||||
|
}
|
||||||
|
inlet
|
||||||
|
{
|
||||||
|
type zeroGradient;
|
||||||
|
}
|
||||||
|
outlet
|
||||||
|
{
|
||||||
|
type fixedValue;
|
||||||
|
value uniform 0;
|
||||||
|
}
|
||||||
|
"side.*"
|
||||||
|
{
|
||||||
|
type zeroGradient;
|
||||||
|
}
|
||||||
|
frontBack
|
||||||
|
{
|
||||||
|
type empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
23
tutorials/rStatAnalysis/testingLargeIncompleteDataBases/Allclean
Executable file
23
tutorials/rStatAnalysis/testingLargeIncompleteDataBases/Allclean
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# clean the case
|
||||||
|
|
||||||
|
cd ${0%/*} || exit 1 # Run from this directory
|
||||||
|
|
||||||
|
# Source tutorial clean functions
|
||||||
|
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
|
||||||
|
|
||||||
|
# remove mesh
|
||||||
|
rm -rf constant/polyMesh/*
|
||||||
|
|
||||||
|
rm -rf 0 > /dev/null 2>&1
|
||||||
|
|
||||||
|
cleanCase
|
||||||
|
|
||||||
|
rm rec_jump.dat
|
||||||
|
rm recurrenceMatrix
|
||||||
|
rm recurrencePath
|
||||||
|
|
||||||
|
cd recMat
|
||||||
|
|
||||||
|
./clean.sh
|
||||||
9
tutorials/rStatAnalysis/testingLargeIncompleteDataBases/Allrun
Executable file
9
tutorials/rStatAnalysis/testingLargeIncompleteDataBases/Allrun
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# run the case
|
||||||
|
|
||||||
|
./meshIt
|
||||||
|
|
||||||
|
./run
|
||||||
|
|
||||||
|
./post
|
||||||
@ -0,0 +1,78 @@
|
|||||||
|
# Test large, incomplete data bases
|
||||||
|
|
||||||
|
This tutorial tests the use of data bases (in memory), which are smaller
|
||||||
|
than the number of snaphots in the data base (on disk). This distinction
|
||||||
|
becomes important for cases with large meshes, a large number of snapshots,
|
||||||
|
or cases with both of these properties. In such cases, the memory (RAM) of
|
||||||
|
the computer might be too small to fit all snapshots.
|
||||||
|
|
||||||
|
In such a case - with *M*, the number of snapshots in memory, being smaller
|
||||||
|
than *N*, the number of snapshots on disk - we use the recurrence model
|
||||||
|
designed for large, complete data bases.
|
||||||
|
|
||||||
|
This tutorial is based on the *laminar flow over cylinder* tutorial. It is
|
||||||
|
rather small, but is nevertheless used to demonstrate the use of the large,
|
||||||
|
incomplete data bases feature.
|
||||||
|
|
||||||
|
|
||||||
|
## Case description
|
||||||
|
|
||||||
|
This case is run for a small amount of time, and then, the tool `rStatAnalysis`
|
||||||
|
is used as a post-processing tool to compute the recurrence matrix [1].
|
||||||
|
In this case, `rStatAnalysis` is run with a data base (in memory) smaller than
|
||||||
|
the number of snapshots on disk.
|
||||||
|
|
||||||
|
|
||||||
|
## Results
|
||||||
|
|
||||||
|
If we monitor the log file written by `rStatAnalysis`, we fill find the line
|
||||||
|
similar to the following:
|
||||||
|
|
||||||
|
`Checking all 20 fields`
|
||||||
|
|
||||||
|
This line tells us the total number of snapshots on disk, which will all be
|
||||||
|
checked for existence and readabiltiy.
|
||||||
|
|
||||||
|
Afterwards, when it is enured that all expected fields are present, the data
|
||||||
|
base in memory is filled with fields read from disk. However, as the data base
|
||||||
|
in memory is smaller than the number of snapshots on disk, the data base in
|
||||||
|
memory will be incomplete.
|
||||||
|
|
||||||
|
Thus, we will encounter a line similar to the following one, which tells us
|
||||||
|
that a number of fields is being read.
|
||||||
|
|
||||||
|
`Reading fields for 11 dataBase slots`
|
||||||
|
|
||||||
|
When computing the recurrence matrix, all *N* snapshots need to be compared
|
||||||
|
with each other. As the data base holds only *M* snapshots, with *M<N*, at
|
||||||
|
some point, the snapshots in the data base will need to be replaced with
|
||||||
|
other ones, wich have not been read at that point.
|
||||||
|
Such an operation is indicated by a line as shown below, provided the switch
|
||||||
|
`verboseVacate` is enabled in `recProperties`.
|
||||||
|
|
||||||
|
` --> vacate dataBase : 5`
|
||||||
|
|
||||||
|
After the recurrence matrix has been computed, the recurrence model prints
|
||||||
|
the total number of reads-from-disk to the Terminal. This is shown below:
|
||||||
|
|
||||||
|
`Nr. of reads from disk : 30; compared to a theoretical minimum of 20 reads.`
|
||||||
|
|
||||||
|
This indicates, that the total number of reads-from-disk is necessarily
|
||||||
|
larger that the number of snapshots. The total number of reads-from-disk
|
||||||
|
depends on the relative sizes of *N* and *M*. However, it will always be larger
|
||||||
|
than the theoretical minimum, which is achieved, when *M* is equal to *N*, i.e.
|
||||||
|
each field is read only once.
|
||||||
|
|
||||||
|
|
||||||
|
## Tested
|
||||||
|
|
||||||
|
This collection of cases has been tested with:
|
||||||
|
|
||||||
|
* OpenFOAM-5.0
|
||||||
|
|
||||||
|
|
||||||
|
## References
|
||||||
|
|
||||||
|
[1] T. Lichtenegger and S. Pirker. Recurrence CFD – A novel approach to simulate
|
||||||
|
multiphase flows with strongly separated time scales. Chemical Engineering Science,
|
||||||
|
153:394-410, 2016.
|
||||||
@ -0,0 +1,94 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / 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 "";
|
||||||
|
instance "";
|
||||||
|
local "";
|
||||||
|
|
||||||
|
class dictionary;
|
||||||
|
object recProperties;
|
||||||
|
}
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
//===========================================================================//
|
||||||
|
// sub-models & settings
|
||||||
|
|
||||||
|
|
||||||
|
//recModel standardRecModel;
|
||||||
|
recModel gerhardsRecModel;
|
||||||
|
|
||||||
|
verbose false;
|
||||||
|
|
||||||
|
recNorm sqrDiffNorm;
|
||||||
|
|
||||||
|
recPath simpleRandomPath;
|
||||||
|
|
||||||
|
|
||||||
|
volScalarFields
|
||||||
|
(
|
||||||
|
);
|
||||||
|
|
||||||
|
volVectorFields
|
||||||
|
(
|
||||||
|
U
|
||||||
|
);
|
||||||
|
|
||||||
|
surfaceScalarFields
|
||||||
|
(
|
||||||
|
);
|
||||||
|
|
||||||
|
//verbose;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//===========================================================================//
|
||||||
|
// sub-model properties
|
||||||
|
|
||||||
|
standardRecModelProps
|
||||||
|
{
|
||||||
|
dataBase ".";
|
||||||
|
|
||||||
|
skipZero on;
|
||||||
|
}
|
||||||
|
|
||||||
|
gerhardsRecModelProps
|
||||||
|
{
|
||||||
|
dataBase ".";
|
||||||
|
|
||||||
|
skipZero on;
|
||||||
|
|
||||||
|
numDataBaseFields 11;
|
||||||
|
|
||||||
|
verboseVacate on;
|
||||||
|
}
|
||||||
|
|
||||||
|
sqrDiffNormProps
|
||||||
|
{
|
||||||
|
fieldType "volVectorField";
|
||||||
|
fieldName U;
|
||||||
|
|
||||||
|
//verbose false;
|
||||||
|
}
|
||||||
|
|
||||||
|
simpleRandomPathProps
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
noRecStatAnalysis
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 2.3.0 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "constant";
|
||||||
|
object transportProperties;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
transportModel Newtonian;
|
||||||
|
|
||||||
|
// water, 20°C, VDI Wärmeatlas
|
||||||
|
nu nu [ 0 2 -1 0 0 0 0 ] 1.003e-06;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 2.3.0 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "constant";
|
||||||
|
object turbulenceProperties;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
simulationType laminar;
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
6
tutorials/rStatAnalysis/testingLargeIncompleteDataBases/meshIt
Executable file
6
tutorials/rStatAnalysis/testingLargeIncompleteDataBases/meshIt
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
blockMesh 2>&1 | tee log.blockMesh 2>&1
|
||||||
|
|
||||||
|
# renumber the mesh
|
||||||
|
renumberMesh -overwrite 2>&1 | tee log.renumberMesh 2>&1
|
||||||
10
tutorials/rStatAnalysis/testingLargeIncompleteDataBases/post
Executable file
10
tutorials/rStatAnalysis/testingLargeIncompleteDataBases/post
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# run the post-processing
|
||||||
|
|
||||||
|
rStatAnalysis 2>&1 | tee log.rStatAnalysis 2>&1
|
||||||
|
|
||||||
|
cd recMat
|
||||||
|
|
||||||
|
./plot.sh
|
||||||
|
|
||||||
7
tutorials/rStatAnalysis/testingLargeIncompleteDataBases/recMat/clean.sh
Executable file
7
tutorials/rStatAnalysis/testingLargeIncompleteDataBases/recMat/clean.sh
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
rm -f *.log
|
||||||
|
rm -f *.aux
|
||||||
|
rm -f *.txt
|
||||||
|
rm -f *.pdf
|
||||||
|
rm -f myDistMatrix.tex
|
||||||
@ -0,0 +1,75 @@
|
|||||||
|
% open files
|
||||||
|
fid1 = fopen('../recurrenceMatrix');
|
||||||
|
|
||||||
|
% read dimensions
|
||||||
|
A1 = fscanf(fid1, '%g %g');
|
||||||
|
|
||||||
|
% skip the first two lines
|
||||||
|
tline = fgetl(fid1);
|
||||||
|
tline = fgetl(fid1);
|
||||||
|
|
||||||
|
% get dimensions
|
||||||
|
N1 = A1(1)
|
||||||
|
M1 = A1(2)
|
||||||
|
|
||||||
|
% allocate space
|
||||||
|
B0 = zeros(M1,N1);
|
||||||
|
|
||||||
|
% read data
|
||||||
|
for i=1:N1
|
||||||
|
B0(:,i) = fscanf(fid1, '%g', inf);
|
||||||
|
tline = fgetl(fid1);
|
||||||
|
tline = fgetl(fid1);
|
||||||
|
end
|
||||||
|
|
||||||
|
% close files
|
||||||
|
fclose(fid1);
|
||||||
|
|
||||||
|
|
||||||
|
% skip this many leading entries
|
||||||
|
sle = 0;
|
||||||
|
|
||||||
|
B1 = zeros(M1-sle,N1-sle);
|
||||||
|
|
||||||
|
B1 = B0(1+sle:M1,1+sle:N1);
|
||||||
|
|
||||||
|
maxval=0.0;
|
||||||
|
%for i=1:M1
|
||||||
|
% for j=1:N1
|
||||||
|
% if(B1(i,j)>maxval)
|
||||||
|
% maxval=B1(i,j);
|
||||||
|
% endif
|
||||||
|
% end
|
||||||
|
%end
|
||||||
|
|
||||||
|
maxval = 1.0;
|
||||||
|
for i=1:M1-sle
|
||||||
|
for j=1:N1-sle
|
||||||
|
B1(i,j)=1-B1(i,j)/maxval;
|
||||||
|
% B1(i,j)=B1(i,j)/maxval;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
% write full matrix to simple text file
|
||||||
|
dlmwrite('myMatrix.txt',B1,'delimiter','\t','precision',3)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
%plot(C1)
|
||||||
|
%saveas(gcf,'Plot','png')
|
||||||
|
|
||||||
|
%B1=B1*1;
|
||||||
|
|
||||||
|
|
||||||
|
%hold on
|
||||||
|
|
||||||
|
|
||||||
|
%colormap(jet(50))
|
||||||
|
%imagesc(B1)
|
||||||
|
%colorbar
|
||||||
|
|
||||||
|
%saveas(gcf,'Figure','png')
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
\documentclass[preview]{standalone}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\begin{document}
|
||||||
|
\begin{figure}
|
||||||
|
\input{myDistMatrix}
|
||||||
|
\end{figure}
|
||||||
|
\end{document}
|
||||||
4
tutorials/rStatAnalysis/testingLargeIncompleteDataBases/recMat/plot.sh
Executable file
4
tutorials/rStatAnalysis/testingLargeIncompleteDataBases/recMat/plot.sh
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
octave getRecMat.m
|
||||||
|
gnuplot plotDistMat.gnu
|
||||||
|
pdflatex makePlot.tex
|
||||||
|
pdfcrop makePlot.pdf distMatrix.pdf
|
||||||
@ -0,0 +1,48 @@
|
|||||||
|
reset
|
||||||
|
clear
|
||||||
|
|
||||||
|
set terminal cairolatex pdf dash dl 1
|
||||||
|
|
||||||
|
set pm3d map
|
||||||
|
set contour surface
|
||||||
|
set cntrparam levels discr 10
|
||||||
|
set samples 50
|
||||||
|
set isosamples 50
|
||||||
|
|
||||||
|
set palette maxcolors 8
|
||||||
|
set palette defined(\
|
||||||
|
0 0.2314 0.2980 0.7529,\
|
||||||
|
0.125000 0.384300 0.509800 0.917600,\
|
||||||
|
0.250000 0.552900 0.690200 0.996100,\
|
||||||
|
0.375000 0.721600 0.815700 0.976500,\
|
||||||
|
0.500000 0.866700 0.866700 0.866700,\
|
||||||
|
0.625000 0.960800 0.768600 0.678400,\
|
||||||
|
0.750000 0.956900 0.603900 0.482400,\
|
||||||
|
0.875000 0.870600 0.376500 0.302000,\
|
||||||
|
1 0.7059 0.0157 0.1490\
|
||||||
|
)
|
||||||
|
|
||||||
|
set cbtics 0.6
|
||||||
|
set mcbtics 8
|
||||||
|
#set cblabel 'distance'
|
||||||
|
#unset cbtics
|
||||||
|
set cbrange [0:0.6]
|
||||||
|
set format cb "%.1f"
|
||||||
|
|
||||||
|
#set xrange[0:3]
|
||||||
|
#set yrange[0:3]
|
||||||
|
|
||||||
|
set xlabel 't [s]'
|
||||||
|
set ylabel 't [s]'
|
||||||
|
|
||||||
|
# evil manual meddling with axes tics
|
||||||
|
set xtics ("0" 0, "500" 50, "1000" 100, "1500" 150, "2000" 199)
|
||||||
|
set ytics ("0" 0, "500" 50, "1000" 100, "1500" 150, "2000" 199)
|
||||||
|
#set mxtics 2
|
||||||
|
#set mytics 2
|
||||||
|
|
||||||
|
set size square
|
||||||
|
|
||||||
|
|
||||||
|
set out 'myDistMatrix.tex'
|
||||||
|
splot 'myMatrix.txt' matrix using ($1):($2):(1-$3) with image notitle
|
||||||
12
tutorials/rStatAnalysis/testingLargeIncompleteDataBases/run
Executable file
12
tutorials/rStatAnalysis/testingLargeIncompleteDataBases/run
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# run the simulation
|
||||||
|
|
||||||
|
rm -rf 0
|
||||||
|
cp -r 0.org 0
|
||||||
|
|
||||||
|
# initialise solution
|
||||||
|
potentialFoam 2>&1 | tee log.potentialFoam 2>&1
|
||||||
|
|
||||||
|
# run simulation
|
||||||
|
pimpleFoam 2>&1 | tee log.pimpleFoam 2>&1
|
||||||
@ -0,0 +1,145 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \ / O peration | Version: 2.1.x |
|
||||||
|
| \ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
object blockMeshDict;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
convertToMeters 1.0;
|
||||||
|
|
||||||
|
|
||||||
|
vertices
|
||||||
|
(
|
||||||
|
( 0.0 -0.25 0.0 ) // x0y0z0 = 0
|
||||||
|
( 0.0 -0.25 0.01 ) // x0y0z1 = 1
|
||||||
|
( 0.0 0.25 0.0 ) // x0y1z0 = 2
|
||||||
|
( 0.0 0.25 0.01 ) // x0y1z1 = 3
|
||||||
|
( 0.15000000000000002 -0.25 0.0 ) // x1y0z0 = 4
|
||||||
|
( 0.15000000000000002 -0.25 0.01 ) // x1y0z1 = 5
|
||||||
|
( 0.15000000000000002 0.25 0.0 ) // x1y1z0 = 6
|
||||||
|
( 0.15000000000000002 0.25 0.01 ) // x1y1z1 = 7
|
||||||
|
( 0.65 -0.25 0.0 ) // x2y0z0 = 8
|
||||||
|
( 0.65 -0.25 0.01 ) // x2y0z1 = 9
|
||||||
|
( 0.65 0.25 0.0 ) // x2y1z0 = 10
|
||||||
|
( 0.65 0.25 0.01 ) // x2y1z1 = 11
|
||||||
|
( 1.5 -0.25 0.0 ) // x3y0z0 = 12
|
||||||
|
( 1.5 -0.25 0.01 ) // x3y0z1 = 13
|
||||||
|
( 1.5 0.25 0.0 ) // x3y1z0 = 14
|
||||||
|
( 1.5 0.25 0.01 ) // x3y1z1 = 15
|
||||||
|
|
||||||
|
( 0.41767766952966373 0.017677669529663688 0.0 ) // a0h0 = 16
|
||||||
|
( 0.3823223304703363 0.01767766952966369 0.0 ) // a1h0 = 17
|
||||||
|
( 0.3823223304703363 -0.017677669529663688 0.0 ) // a2h0 = 18
|
||||||
|
( 0.41767766952966373 -0.01767766952966369 0.0 ) // a3h0 = 19
|
||||||
|
( 0.41767766952966373 0.017677669529663688 0.01 ) // a0h1 = 20
|
||||||
|
( 0.3823223304703363 0.01767766952966369 0.01 ) // a1h1 = 21
|
||||||
|
( 0.3823223304703363 -0.017677669529663688 0.01 ) // a2h1 = 22
|
||||||
|
( 0.41767766952966373 -0.01767766952966369 0.01 ) // a3h1 = 23
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
blocks
|
||||||
|
(
|
||||||
|
hex ( 0 4 6 2 1 5 7 3 ) ( 6 20 1 ) simpleGrading ( 1 1 1 ) // 0 ['x0y0z0', 'x1y0z0', 'x1y1z0', 'x0y1z0']
|
||||||
|
hex ( 8 12 14 10 9 13 15 11 ) ( 34 20 1 ) simpleGrading ( 1 1 1 ) // 1 ['x2y0z0', 'x3y0z0', 'x3y1z0', 'x2y1z0']
|
||||||
|
// cylinder block
|
||||||
|
hex ( 16 10 6 17 20 11 7 21 ) ( 18 20 1 ) simpleGrading ( 1 1 1 ) // 2 ['a0h0', 'b0h0', 'b1h0', 'a1h0']
|
||||||
|
hex ( 17 6 4 18 21 7 5 22 ) ( 18 20 1 ) simpleGrading ( 1 1 1 ) // 3 ['a1h0', 'b1h0', 'b2h0', 'a2h0']
|
||||||
|
hex ( 18 4 8 19 22 5 9 23 ) ( 18 20 1 ) simpleGrading ( 1 1 1 ) // 4 ['a2h0', 'b2h0', 'b3h0', 'a3h0']
|
||||||
|
hex ( 19 8 10 16 23 9 11 20 ) ( 18 20 1 ) simpleGrading ( 1 1 1 ) // 5 ['a3h0', 'b3h0', 'b0h0', 'a0h0']
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
edges
|
||||||
|
(
|
||||||
|
arc 16 17 ( 0.4 0.025 0.0 )// cyl block
|
||||||
|
arc 17 18 ( 0.375 3.061616997868383e-18 0.0 )// cyl block
|
||||||
|
arc 18 19 ( 0.4 -0.025 0.0 )// cyl block
|
||||||
|
arc 19 16 ( 0.42500000000000004 -6.123233995736766e-18 0.0 )// cyl block
|
||||||
|
arc 20 21 ( 0.4 0.025 0.01 )// cyl block
|
||||||
|
arc 21 22 ( 0.375 3.061616997868383e-18 0.01 )// cyl block
|
||||||
|
arc 22 23 ( 0.4 -0.025 0.01 )// cyl block
|
||||||
|
arc 23 20 ( 0.42500000000000004 -6.123233995736766e-18 0.01 )// cyl block
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
boundary
|
||||||
|
(
|
||||||
|
|
||||||
|
inlet
|
||||||
|
{
|
||||||
|
type patch;
|
||||||
|
faces
|
||||||
|
(
|
||||||
|
( 0 2 3 1 ) // ['x0y0z0', 'x0y1z0', 'x0y1z1', 'x0y0z1']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
outlet
|
||||||
|
{
|
||||||
|
type patch;
|
||||||
|
faces
|
||||||
|
(
|
||||||
|
( 12 14 15 13 ) // ['x3y0z0', 'x3y1z0', 'x3y1z1', 'x3y0z1']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
cylinder
|
||||||
|
{
|
||||||
|
type wall;
|
||||||
|
faces
|
||||||
|
(
|
||||||
|
( 16 17 21 20 ) // ['a0h0', 'a1h0', 'a1h1', 'a0h1']
|
||||||
|
( 17 18 22 21 ) // ['a1h0', 'a2h0', 'a2h1', 'a1h1']
|
||||||
|
( 18 19 23 22 ) // ['a2h0', 'a3h0', 'a3h1', 'a2h1']
|
||||||
|
( 19 16 20 23 ) // ['a3h0', 'a0h0', 'a0h1', 'a3h1']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sides
|
||||||
|
{
|
||||||
|
type patch;
|
||||||
|
faces
|
||||||
|
(
|
||||||
|
( 0 4 5 1 ) // ['x0y0z0', 'x1y0z0', 'x1y0z1', 'x0y0z1']
|
||||||
|
( 2 6 7 3 ) // ['x0y1z0', 'x1y1z0', 'x1y1z1', 'x0y1z1']
|
||||||
|
( 4 8 9 5 ) // ['x1y0z0', 'x2y0z0', 'x2y0z1', 'x1y0z1']
|
||||||
|
( 6 10 11 7 ) // ['x1y1z0', 'x2y1z0', 'x2y1z1', 'x1y1z1']
|
||||||
|
( 8 12 13 9 ) // ['x2y0z0', 'x3y0z0', 'x3y0z1', 'x2y0z1']
|
||||||
|
( 10 14 15 11 ) // ['x2y1z0', 'x3y1z0', 'x3y1z1', 'x2y1z1']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
mergePatchPairs
|
||||||
|
(
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
@ -0,0 +1,90 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 2.1.x |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "system";
|
||||||
|
object controlDict;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
application twoPhaseEulerFoam;
|
||||||
|
|
||||||
|
startFrom latestTime;
|
||||||
|
|
||||||
|
startTime 0.1;
|
||||||
|
|
||||||
|
stopAt endTime;
|
||||||
|
//stopAt writeNow;
|
||||||
|
|
||||||
|
endTime 20;
|
||||||
|
|
||||||
|
deltaT 1.0e-2;
|
||||||
|
|
||||||
|
writeControl adjustableRunTime;
|
||||||
|
|
||||||
|
writeInterval 1;
|
||||||
|
|
||||||
|
purgeWrite 0;
|
||||||
|
|
||||||
|
writeFormat binary;
|
||||||
|
|
||||||
|
writePrecision 6;
|
||||||
|
|
||||||
|
writeCompression uncompressed;
|
||||||
|
|
||||||
|
timeFormat general;
|
||||||
|
|
||||||
|
timePrecision 6;
|
||||||
|
|
||||||
|
runTimeModifiable yes;
|
||||||
|
|
||||||
|
adjustTimeStep yes;
|
||||||
|
|
||||||
|
maxCo 0.25;
|
||||||
|
|
||||||
|
maxDeltaT 1;
|
||||||
|
|
||||||
|
|
||||||
|
functions
|
||||||
|
{
|
||||||
|
forces
|
||||||
|
{
|
||||||
|
type forceCoeffs;
|
||||||
|
functionObjectLibs ( "libforces.so" );
|
||||||
|
|
||||||
|
writeControl timeStep;
|
||||||
|
writeInterval 1;
|
||||||
|
|
||||||
|
patches
|
||||||
|
(
|
||||||
|
cylinder
|
||||||
|
);
|
||||||
|
directForceDensity no;
|
||||||
|
|
||||||
|
pName p;
|
||||||
|
UName U;
|
||||||
|
rhoName rhoInf;
|
||||||
|
//log true;
|
||||||
|
rhoInf 994.5;
|
||||||
|
rho rhoInf;
|
||||||
|
CofR ( 0 0 0 );
|
||||||
|
liftDir ( 0 1 0 );
|
||||||
|
dragDir ( 1 0 0 );
|
||||||
|
pitchAxis ( 0 0 1 );
|
||||||
|
magUInf 10.0;
|
||||||
|
lRef 0.04;
|
||||||
|
Aref 0.0157;
|
||||||
|
Aref1 0.004;
|
||||||
|
rhoRef 994.5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,62 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 2.3.0 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "system";
|
||||||
|
object fvSchemes;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
ddtSchemes
|
||||||
|
{
|
||||||
|
default Euler;
|
||||||
|
}
|
||||||
|
|
||||||
|
gradSchemes
|
||||||
|
{
|
||||||
|
default Gauss linear;
|
||||||
|
grad(U) cellLimited Gauss linear 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
divSchemes
|
||||||
|
{
|
||||||
|
default none;
|
||||||
|
div(phi,U) bounded Gauss linearUpwindV grad(U);
|
||||||
|
|
||||||
|
|
||||||
|
div((nuEff*dev2(T(grad(U))))) Gauss linear;
|
||||||
|
div((nuEff*dev(T(grad(U))))) Gauss linear;
|
||||||
|
}
|
||||||
|
|
||||||
|
laplacianSchemes
|
||||||
|
{
|
||||||
|
default Gauss linear limited corrected 0.33;
|
||||||
|
}
|
||||||
|
|
||||||
|
interpolationSchemes
|
||||||
|
{
|
||||||
|
default linear;
|
||||||
|
}
|
||||||
|
|
||||||
|
snGradSchemes
|
||||||
|
{
|
||||||
|
default corrected;
|
||||||
|
}
|
||||||
|
|
||||||
|
fluxRequired
|
||||||
|
{
|
||||||
|
default no;
|
||||||
|
p ;
|
||||||
|
Phi ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,105 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: 2.3.0 |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "system";
|
||||||
|
object fvSolution;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
solvers
|
||||||
|
{
|
||||||
|
p
|
||||||
|
{
|
||||||
|
solver GAMG;
|
||||||
|
tolerance 1e-08;
|
||||||
|
relTol 0.0001;
|
||||||
|
maxIter 100;
|
||||||
|
smoother DIC;
|
||||||
|
nPreSweeps 1;
|
||||||
|
nPostSweeps 2;
|
||||||
|
nFinestSweeps 2;
|
||||||
|
scaleCorrection true;
|
||||||
|
directSolveCoarsestLevel false;
|
||||||
|
cacheAgglomeration true;
|
||||||
|
nCellsInCoarsestLevel 330;
|
||||||
|
agglomerator faceAreaPair;
|
||||||
|
mergeLevels 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
pFinal
|
||||||
|
{
|
||||||
|
$p;
|
||||||
|
relTol 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
U
|
||||||
|
{
|
||||||
|
solver PBiCG;
|
||||||
|
preconditioner DILU;
|
||||||
|
tolerance 1e-08;
|
||||||
|
relTol 0.001;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*U
|
||||||
|
{
|
||||||
|
type coupled;
|
||||||
|
solver PBiCICG;
|
||||||
|
preconditioner DILU;
|
||||||
|
tolerance (1e-08 1e-08 1e-08);
|
||||||
|
relTol (0 0 0);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
UFinal
|
||||||
|
{
|
||||||
|
$U;
|
||||||
|
}
|
||||||
|
|
||||||
|
Phi
|
||||||
|
{
|
||||||
|
solver PCG;
|
||||||
|
preconditioner DIC;
|
||||||
|
tolerance 1e-08;
|
||||||
|
relTol 0.001;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PIMPLE
|
||||||
|
{
|
||||||
|
nOuterCorrectors 10;
|
||||||
|
nCorrectors 1;
|
||||||
|
nNonOrthogonalCorrectors 1;
|
||||||
|
|
||||||
|
residualControl
|
||||||
|
{
|
||||||
|
U
|
||||||
|
{
|
||||||
|
relTol 0;
|
||||||
|
tolerance 0.00001;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
relaxationFactors
|
||||||
|
{
|
||||||
|
/*equations
|
||||||
|
{
|
||||||
|
p 0.4;
|
||||||
|
U 0.6;
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
potentialFlow
|
||||||
|
{
|
||||||
|
nNonOrthogonalCorrectors 20;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
Reference in New Issue
Block a user