Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
V
VirtualFluids
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
iRMB
VirtualFluids
Commits
4ed6421f
Commit
4ed6421f
authored
5 years ago
by
LEGOLAS\lenz
Browse files
Options
Downloads
Patches
Plain Diff
makes DrivenCavity LBM target runnable, GKS not yet working
parent
1d55591d
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
targets/apps/LBM/DrivenCavity/DrivenCavity.cpp
+142
-46
142 additions, 46 deletions
targets/apps/LBM/DrivenCavity/DrivenCavity.cpp
targets/apps/LBM/DrivenCavity/configDrivenCavity.txt
+11
-11
11 additions, 11 deletions
targets/apps/LBM/DrivenCavity/configDrivenCavity.txt
with
153 additions
and
57 deletions
targets/apps/LBM/DrivenCavity/DrivenCavity.cpp
+
142
−
46
View file @
4ed6421f
...
...
@@ -24,8 +24,6 @@
//////////////////////////////////////////////////////////////////////////
//#include "GridGenerator/global.h"
#include
"GridGenerator/grid/GridBuilder/LevelGridBuilder.h"
#include
"GridGenerator/grid/GridBuilder/MultipleGridBuilder.h"
#include
"GridGenerator/grid/BoundaryConditions/Side.h"
...
...
@@ -73,7 +71,39 @@
#include
"GksGpu/CudaUtility/CudaUtility.h"
//////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// U s e r s e t t i n g s
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
LbmOrGks
lbmOrGks
=
GKS
;
//LbmOrGks lbmOrGks = LBM;
const
real
L
=
1.0
;
const
real
Re
=
1000.0
;
const
real
velocity
=
1.0
;
const
real
dt
=
1.0e-3
;
const
uint
nx
=
64
;
std
::
string
path
(
"F:/Work/Computations/out/DrivenCavity/"
);
std
::
string
simulationName
(
"DrivenCavity"
);
const
uint
timeStepOut
=
10000
;
const
uint
timeStepEnd
=
100000
;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void
multipleLevel
(
const
std
::
string
&
configPath
)
{
...
...
@@ -94,27 +124,6 @@ void multipleLevel(const std::string& configPath)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
LbmOrGks
lbmOrGks
=
LBM
;
const
real
L
=
1.0
;
const
real
Re
=
1000
;
const
uint
nx
=
64
;
const
real
vx
=
0.05
;
// LB units
const
real
vy
=
0.05
;
// LB units
const
real
velocity
=
sqrt
(
vx
*
vx
+
vy
*
vy
);
const
real
viscosity
=
nx
*
velocity
/
Re
;
// LB units
*
logging
::
out
<<
logging
::
Logger
::
INFO_HIGH
<<
"velocity = "
<<
velocity
<<
" s
\n
"
;
*
logging
::
out
<<
logging
::
Logger
::
INFO_HIGH
<<
"viscosity = "
<<
viscosity
<<
"
\n
"
;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
real
dx
=
L
/
real
(
nx
);
...
...
@@ -124,7 +133,7 @@ void multipleLevel(const std::string& configPath)
gridBuilder
->
setPeriodicBoundaryCondition
(
false
,
false
,
false
);
gridBuilder
->
buildGrids
(
LBM
,
false
);
// buildGrids() has to be called before setting the BCs!!!!
gridBuilder
->
buildGrids
(
lbmOrGks
,
false
);
// buildGrids() has to be called before setting the BCs!!!!
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
...
...
@@ -137,32 +146,57 @@ void multipleLevel(const std::string& configPath)
if
(
lbmOrGks
==
LBM
)
{
gridBuilder
->
setVelocityBoundaryCondition
(
SideType
::
PX
,
0.0
,
0.0
,
0.0
);
gridBuilder
->
setVelocityBoundaryCondition
(
SideType
::
MX
,
0.0
,
0.0
,
0.0
);
gridBuilder
->
setVelocityBoundaryCondition
(
SideType
::
PY
,
0.0
,
0.0
,
0.0
);
gridBuilder
->
setVelocityBoundaryCondition
(
SideType
::
MY
,
0.0
,
0.0
,
0.0
);
gridBuilder
->
setVelocityBoundaryCondition
(
SideType
::
PZ
,
vx
,
vy
,
0.0
);
gridBuilder
->
setVelocityBoundaryCondition
(
SideType
::
MZ
,
0.0
,
0.0
,
0.0
);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SPtr
<
Parameter
>
para
=
Parameter
::
make
(
configData
,
comm
);
//SPtr<Parameter> para = Parameter::make();
SPtr
<
CudaMemoryManager
>
cudaMemoryManager
=
CudaMemoryManager
::
make
(
para
);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SPtr
<
GridProvider
>
gridGenerator
=
GridProvider
::
makeGridGenerator
(
gridBuilder
,
para
,
cudaMemoryManager
);
const
real
velocityLB
=
velocity
*
dt
/
dx
;
// LB units
const
real
vx
=
velocityLB
/
sqrt
(
2.0
);
// LB units
const
real
vy
=
velocityLB
/
sqrt
(
2.0
);
// LB units
const
real
viscosityLB
=
nx
*
velocityLB
/
Re
;
// LB units
*
logging
::
out
<<
logging
::
Logger
::
INFO_HIGH
<<
"velocity [dx/dt] = "
<<
velocityLB
<<
"
\n
"
;
*
logging
::
out
<<
logging
::
Logger
::
INFO_HIGH
<<
"viscosity [dx/dt] = "
<<
viscosityLB
<<
"
\n
"
;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
para
->
setVelocity
(
velocity
);
para
->
setOutputPath
(
path
);
para
->
setOutputPrefix
(
simulationName
);
para
->
setFName
(
para
->
getOutputPath
()
+
"/"
+
para
->
getOutputPrefix
());
para
->
setPrintFiles
(
true
);
para
->
set
Viscosity
(
viscosity
);
para
->
set
MaxLevel
(
1
);
para
->
setVelocityRatio
(
1.0
/
velocity
);
para
->
setVelocity
(
velocityLB
);
para
->
setViscosity
(
viscosityLB
);
para
->
setVelocityRatio
(
1.0
/
velocityLB
);
para
->
setTOut
(
timeStepOut
);
para
->
setTEnd
(
timeStepEnd
);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
gridBuilder
->
setVelocityBoundaryCondition
(
SideType
::
PX
,
0.0
,
0.0
,
0.0
);
gridBuilder
->
setVelocityBoundaryCondition
(
SideType
::
MX
,
0.0
,
0.0
,
0.0
);
gridBuilder
->
setVelocityBoundaryCondition
(
SideType
::
PY
,
0.0
,
0.0
,
0.0
);
gridBuilder
->
setVelocityBoundaryCondition
(
SideType
::
MY
,
0.0
,
0.0
,
0.0
);
gridBuilder
->
setVelocityBoundaryCondition
(
SideType
::
PZ
,
vx
,
vy
,
0.0
);
gridBuilder
->
setVelocityBoundaryCondition
(
SideType
::
MZ
,
0.0
,
0.0
,
0.0
);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SPtr
<
CudaMemoryManager
>
cudaMemoryManager
=
CudaMemoryManager
::
make
(
para
);
SPtr
<
GridProvider
>
gridGenerator
=
GridProvider
::
makeGridGenerator
(
gridBuilder
,
para
,
cudaMemoryManager
);
Simulation
sim
;
SPtr
<
FileWriter
>
fileWriter
=
SPtr
<
FileWriter
>
(
new
FileWriter
());
SPtr
<
KernelFactoryImp
>
kernelFactory
=
KernelFactoryImp
::
getInstance
();
...
...
@@ -177,9 +211,40 @@ void multipleLevel(const std::string& configPath)
else
{
CudaUtility
::
setCudaDevice
(
0
);
Parameters
parameters
;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const
real
vx
=
velocity
/
sqrt
(
2.0
);
const
real
vy
=
velocity
/
sqrt
(
2.0
);
parameters
.
K
=
2.0
;
parameters
.
Pr
=
1.0
;
parameters
.
K
=
2.0
;
const
real
Ma
=
0.1
;
real
rho
=
1.0
;
real
cs
=
velocity
/
Ma
;
real
lambda
=
c1o2
*
(
(
parameters
.
K
+
5.0
)
/
(
parameters
.
K
+
3.0
)
)
/
(
cs
*
cs
);
const
real
mu
=
velocity
*
L
*
rho
/
Re
;
*
logging
::
out
<<
logging
::
Logger
::
INFO_HIGH
<<
"CFL = "
<<
dx
/
(
dt
*
(
velocity
+
cs
)
)
<<
" s
\n
"
;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
parameters
.
mu
=
mu
;
parameters
.
dt
=
dt
;
parameters
.
dx
=
dx
;
parameters
.
lambdaRef
=
lambda
;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
GksMeshAdapter
meshAdapter
(
gridBuilder
);
meshAdapter
.
inputGrid
();
...
...
@@ -193,9 +258,7 @@ void multipleLevel(const std::string& configPath)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
real
lambda
=
0.1
;
SPtr
<
BoundaryCondition
>
bcLid
=
std
::
make_shared
<
IsothermalWall
>
(
dataBase
,
Vec3
(
vx
,
0.0
,
0.0
),
lambda
,
false
);
SPtr
<
BoundaryCondition
>
bcLid
=
std
::
make_shared
<
IsothermalWall
>
(
dataBase
,
Vec3
(
vx
,
vy
,
0.0
),
lambda
,
false
);
SPtr
<
BoundaryCondition
>
bcWall
=
std
::
make_shared
<
IsothermalWall
>
(
dataBase
,
Vec3
(
0.0
,
0.0
,
0.0
),
lambda
,
false
);
bcLid
->
findBoundaryCells
(
meshAdapter
,
true
,
[
&
](
Vec3
center
){
return
center
.
y
>
0.5
;
}
);
...
...
@@ -205,6 +268,45 @@ void multipleLevel(const std::string& configPath)
dataBase
->
boundaryConditions
.
push_back
(
bcWall
);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
dataBase
->
setMesh
(
meshAdapter
);
Initializer
::
interpret
(
dataBase
,
[
&
]
(
Vec3
cellCenter
)
->
ConservedVariables
{
return
toConservedVariables
(
PrimitiveVariables
(
rho
,
0.0
,
0.0
,
0.0
,
lambda
),
parameters
.
K
);
});
dataBase
->
copyDataHostToDevice
();
Initializer
::
initializeDataUpdate
(
dataBase
);
writeVtkXML
(
dataBase
,
parameters
,
0
,
path
+
simulationName
+
"_0"
);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
CupsAnalyzer
cupsAnalyzer
(
dataBase
,
false
,
60.0
,
true
,
10000
);
ConvergenceAnalyzer
convergenceAnalyzer
(
dataBase
,
10000
);
cupsAnalyzer
.
start
();
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
for
(
uint
iter
=
1
;
iter
<=
1000000
;
iter
++
)
{
TimeStepping
::
nestedTimeStep
(
dataBase
,
parameters
,
0
);
if
(
iter
%
10000
==
0
)
{
dataBase
->
copyDataDeviceToHost
();
writeVtkXML
(
dataBase
,
parameters
,
0
,
path
+
simulationName
+
"_"
+
std
::
to_string
(
iter
)
);
}
cupsAnalyzer
.
run
(
iter
,
parameters
.
dt
);
convergenceAnalyzer
.
run
(
iter
);
}
}
}
...
...
@@ -220,12 +322,6 @@ int main( int argc, char* argv[])
{
//////////////////////////////////////////////////////////////////////////
//std::stringstream targetPath; targetPath << __FILE__;
//
//std::cout << targetPath.str() << std::endl;
std
::
string
targetPath
;
targetPath
=
__FILE__
;
...
...
This diff is collapsed.
Click to expand it.
targets/apps/LBM/DrivenCavity/configDrivenCavity.txt
+
11
−
11
View file @
4ed6421f
##################################################
#GPU Mapping
##################################################
Devices="0 1 2 3"
NumberOfDevices=4
#
Devices="0 1 2 3"
#
NumberOfDevices=4
##################################################
#informations for Writing
##################################################
#Path="E:/DrivenCavity/results"
Path="F:/Work/Computations/out/DrivenCavity/"
Prefix="DrivenCavity"
WriteGrid=true
#
Path="F:/Work/Computations/out/DrivenCavity/"
#
Prefix="DrivenCavity"
#
WriteGrid=true
##################################################
#informations for reading
##################################################
#GridPath="E:/DrivenCavity/dummy"
GridPath="
F:/Work/Computations/out/DrivenCavity/dummy
"
GridPath="
C:
"
##################################################
#number of grid levels
##################################################
NOGL=1
#
NOGL=1
##################################################
#LBM Version
##################################################
D3Qxx=27
#
D3Qxx=27
#MainKernelName=CumulantAA2016CompSP27
##################################################
#simulation parameter
##################################################
TimeEnd=100000
TimeOut=1000
TimeStartOut=0
\ No newline at end of file
#TimeEnd=100000
#TimeOut=1000
#TimeStartOut=0
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment