Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Markus Holzer
waLBerla
Commits
b6f607c7
Commit
b6f607c7
authored
Mar 18, 2021
by
Markus Holzer
Browse files
Update master
parents
5105aff5
cce82fcc
Pipeline
#31000
failed with stages
in 44 minutes and 47 seconds
Changes
933
Pipelines
1
Expand all
Hide whitespace changes
Inline
Side-by-side
.clang-tidy
View file @
b6f607c7
...
@@ -11,6 +11,7 @@ bugprone-*,
...
@@ -11,6 +11,7 @@ bugprone-*,
misc-*,
misc-*,
-misc-misplaced-const,
-misc-misplaced-const,
-misc-no-recursion,
-misc-non-private-member-variables-in-classes,
-misc-non-private-member-variables-in-classes,
modernize-*,
modernize-*,
...
@@ -25,8 +26,11 @@ modernize-*,
...
@@ -25,8 +26,11 @@ modernize-*,
-modernize-redundant-void-arg,
-modernize-redundant-void-arg,
-modernize-use-trailing-return-type,
-modernize-use-trailing-return-type,
-modernize-avoid-c-arrays,
-modernize-avoid-c-arrays,
-modernize-concat-nested-namespaces,
-modernize-use-nodiscard,
mpi-*,
mpi-*,
-mpi-type-mismatch,
openmp-*,
openmp-*,
-openmp-exception-escape,
-openmp-exception-escape,
...
@@ -43,21 +47,24 @@ readability-deleted-default,
...
@@ -43,21 +47,24 @@ readability-deleted-default,
readability-isolate-declaration,
readability-isolate-declaration,
readability-misleading-indentation,
readability-misleading-indentation,
readability-misplaced-array-index,
readability-misplaced-array-index,
readability-non-const-parameter,
readability-redundant-access-specifiers,
readability-redundant-control-flow,
readability-redundant-control-flow,
readability-redundant-declaration,
readability-redundant-declaration,
readability-redundant-function-ptr-dereference,
readability-redundant-function-ptr-dereference,
readability-redundant-preprocessor,
readability-redundant-preprocessor,
readability-redundant-smartptr-get,
readability-redundant-smartptr-get,
readability-redundant-string-cstr,
readability-redundant-string-cstr,
readability-simplify-boolean-expr,
readability-simplify-subscript-expr,
readability-simplify-subscript-expr,
readability-static-accessed-through-instance,
readability-static-accessed-through-instance,
readability-static-definition-in-anonymous-namespace,
readability-static-definition-in-anonymous-namespace,
readability-string-compare,
readability-string-compare,
readability-uniqueptr-delete-release
readability-uniqueptr-delete-release,
readability-use-anyofallof
'
'
WarningsAsErrors: '*'
WarningsAsErrors: '*'
HeaderFilterRegex: ''
HeaderFilterRegex: '.*'
AnalyzeTemporaryDtors: false
...
...
.gitlab-ci.yml
View file @
b6f607c7
This diff is collapsed.
Click to expand it.
.gitmodules
0 → 100644
View file @
b6f607c7
[submodule "extern/pybind11"]
path = extern/pybind11
url = https://github.com/pybind/pybind11.git
.isort.cfg
0 → 100644
View file @
b6f607c7
[settings]
line_length=100
balanced_wrapping=True
multi_line_output=4
known_third_party=sympy
AUTHORS.txt
View file @
b6f607c7
...
@@ -13,7 +13,10 @@ Dominik Bartuschat
...
@@ -13,7 +13,10 @@ Dominik Bartuschat
Ehsan Fattahi
Ehsan Fattahi
Felix Winterhalter
Felix Winterhalter
Florian Schornbaum
Florian Schornbaum
Frederik Hennig
Grigorii Drozdov
Helen Schottenhamml
Helen Schottenhamml
Igor Ostanin
Jan Götz
Jan Götz
Jan Hönig
Jan Hönig
João Victor Tozatti Risso
João Victor Tozatti Risso
...
...
CHANGELOG.md
View file @
b6f607c7
...
@@ -2,6 +2,11 @@
...
@@ -2,6 +2,11 @@
## [Unreleased]
## [Unreleased]
-
Python Coupling now build upon pybind11. Boost.Python is no longer supported
-
lbm module dropped from python coupling due to deprecation for a long time
-
geometry, postprocessing and timeloop dropped from python coupling due to its low usage
-
PEP8-ification of Python API. This means all keyword arguments are now in snake_case and not in CamelCase as before.
## [4.1] - 2019-04-19
## [4.1] - 2019-04-19
### Added
### Added
-
Galerkin coarsening for Multigrid
-
Galerkin coarsening for Multigrid
...
...
CMakeLists.txt
View file @
b6f607c7
This diff is collapsed.
Click to expand it.
README.md
View file @
b6f607c7
# waLBerla
# waLBerla
waLBerla (widely applicable Lattice Boltzmann from Erlangen) is a massively
waLBerla (widely applicable Lattice Boltzmann from Erlangen) is a massively
parallel framework for multi physics applications. Besides its original
parallel framework for multi physics applications. Besides its original
objective, Lattice Boltzmann solvers for hydrodynamics, it now contains
objective, Lattice Boltzmann solvers for hydrodynamics, it now contains
modules for other applications like Multigrid and rigid body dynamics
modules for other applications like Multigrid and rigid body dynamics
as well. Great emphasis is placed on the interoperability between the modules
as well. Great emphasis is placed on the interoperability between the modules
in particular the fluid-particle coupling.
in particular the fluid-particle coupling.
It scales from laptops to current and future supercomputers while maintaining
It scales from laptops to current and future supercomputers while maintaining
near-perfect efficiency.
near-perfect efficiency.
See https://www.walberla.net/ for more information and a showcase of applications.
See https://www.walberla.net/ for more information and a showcase of applications.
...
@@ -19,8 +19,8 @@ is documented in [Sphinx](http://walberla.net/sphinx/index.html).
...
@@ -19,8 +19,8 @@ is documented in [Sphinx](http://walberla.net/sphinx/index.html).
## Getting started
## Getting started
The minimum requirements are a C++1
4
-compliant compiler (e.g. GCC or Clang)
,
The minimum requirements are a C++1
7
-compliant compiler (e.g. GCC or Clang)
the
[
Boost
](
http://www.boost.org
)
library
and the
[
CMake
](
http://www.cmake.org
)
and the
[
CMake
](
http://www.cmake.org
)
build system. Furthermore, you need an MPI library (like
build system. Furthermore, you need an MPI library (like
[
Open MPI
](
http://www.open-mpi.org
)
) if you want to make use of parallel
[
Open MPI
](
http://www.open-mpi.org
)
) if you want to make use of parallel
processing capabilities. All of these dependencies are typically available in
processing capabilities. All of these dependencies are typically available in
...
@@ -47,15 +47,30 @@ Many thanks go to waLBerla's [contributors](AUTHORS.txt)
...
@@ -47,15 +47,30 @@ Many thanks go to waLBerla's [contributors](AUTHORS.txt)
If you use waLBerla in a publication, please cite the following articles:
If you use waLBerla in a publication, please cite the following articles:
-
C. Godenschwager, F. Schornbaum, M. Bauer, H. Köstler, and U. Rüde. A
Overview:
framework for hybrid parallel flow simulations with a trillion cells in complex
-
M. Bauer et al,
*
waLBerla: A block-structured high-performance framework for
geometries. In: Proceedings of the International Conference on High Performance
multiphysics simulations
*
. Computers & Mathematics with Applications, 2020.
Computing, Networking, Storage and Analysis, page 35. ACM, 2013.
https://doi.org/10.1016/j.camwa.2020.01.007.
-
M. Bauer, S. Eibl, C. Godenschwager, N. Kohl, M. Kuron, C. Rettinger,
F. Schornbaum, C. Schwarzmeier, D. Thönnes, H. Köstler, and U. Rüde. waLBerla:
Grid Refinement:
A block-structured high-performance framework for multiphysics simulations. In:
-
F. Schornbaum and U. Rüde,
*
Massively parallel algorithms for the lattice boltzmann
Computers & Mathematics with Applications, doi:10.1016/j.camwa.2020.01.007.
method on nonuniform grids
*
. SIAM Journal on Scientific Computing, 2016.
Elsevier, 2020.
https://doi.org/10.1137/15M1035240
LBM - Particle Coupling:
-
C. Rettinger and U. Rüde,
*
A comparative study of fluid-particle coupling methods for
fully resolved lattice Boltzmann simulations
*
. Computers & Fluids, 2017.
https://doi.org/10.1016/j.compfluid.2017.05.033
MESA-PD:
-
S. Eibl and U. Rüde,
*A Modular and Extensible Software Architecture for Particle Dynamics*
.
Proceedings Of The 8Th International Conference On Discrete Element Methods.
https://mercurylab.co.uk/dem8/full-papers/#page-content
Carbon Nanotubes:
-
G. Drozdov et al,
*
Densification of single-walled carbon nanotube films:
Mesoscopic distinct element method simulations and experimental validation
*
.
Journal of Applied Physics, 2020. https://doi.org/10.1063/5.0025505
## License
## License
...
...
apps/CMakeLists.txt
View file @
b6f607c7
...
@@ -32,6 +32,4 @@ endif()
...
@@ -32,6 +32,4 @@ endif()
# Python module
# Python module
if
(
WALBERLA_BUILD_WITH_PYTHON
)
if
(
WALBERLA_BUILD_WITH_PYTHON
)
add_subdirectory
(
pythonmodule
)
add_subdirectory
(
pythonmodule
)
# no else with "EXLUDE_FROM_ALL" here, since if WALBERLA_BUILD_WITH_PYTHON_MODULE is not activated
# waLBerla was build without -fPIC , so no linking into shared library is possible
endif
()
endif
()
\ No newline at end of file
apps/benchmarks/AdaptiveMeshRefinementFluidParticleCoupling/AMRSedimentSettling.cpp
View file @
b6f607c7
...
@@ -90,25 +90,25 @@ using walberla::uint_t;
...
@@ -90,25 +90,25 @@ using walberla::uint_t;
//////////////
//////////////
// PDF field, flag field & body field
// PDF field, flag field & body field
typedef
lbm
::
D3Q19
<
lbm
::
collision_model
::
TRT
,
false
>
LatticeModel_T
;
using
LatticeModel_T
=
lbm
::
D3Q19
<
lbm
::
collision_model
::
TRT
,
false
>
;
typedef
LatticeModel_T
::
Stencil
Stencil_T
;
using
Stencil_T
=
LatticeModel_T
::
Stencil
;
typedef
lbm
::
PdfField
<
LatticeModel_T
>
PdfField_T
;
using
PdfField_T
=
lbm
::
PdfField
<
LatticeModel_T
>
;
typedef
walberla
::
uint8_t
flag_t
;
using
flag_t
=
walberla
::
uint8_t
;
typedef
FlagField
<
flag_t
>
FlagField
_T
;
using
FlagField
_T
=
FlagField
<
flag_t
>
;
typedef
GhostLayerField
<
pe
::
BodyID
,
1
>
BodyField_T
;
using
BodyField_T
=
GhostLayerField
<
pe
::
BodyID
,
1
>
;
typedef
GhostLayerField
<
Vector3
<
real_t
>
,
1
>
VelocityField_T
;
using
VelocityField_T
=
GhostLayerField
<
Vector3
<
real_t
>
,
1
>
;
const
uint_t
FieldGhostLayers
=
4
;
const
uint_t
FieldGhostLayers
=
4
;
// boundary handling
// boundary handling
typedef
lbm
::
NoSlip
<
LatticeModel_T
,
flag_t
>
NoSlip_T
;
using
NoSlip_T
=
lbm
::
NoSlip
<
LatticeModel_T
,
flag_t
>
;
typedef
pe_coupling
::
CurvedLinear
<
LatticeModel_T
,
FlagField_T
>
MO_T
;
using
MO_T
=
pe_coupling
::
CurvedLinear
<
LatticeModel_T
,
FlagField_T
>
;
typedef
BoundaryHandling
<
FlagField_T
,
Stencil_T
,
NoSlip_T
,
MO_T
>
BoundaryHandling_T
;
using
BoundaryHandling_T
=
BoundaryHandling
<
FlagField_T
,
Stencil_T
,
NoSlip_T
,
MO_T
>
;
typedef
std
::
tuple
<
pe
::
Sphere
,
pe
::
Ellipsoid
,
pe
::
Plane
>
BodyTypeTuple
;
using
BodyTypeTuple
=
std
::
tuple
<
pe
::
Sphere
,
pe
::
Ellipsoid
,
pe
::
Plane
>
;
///////////
///////////
// FLAGS //
// FLAGS //
...
@@ -135,8 +135,8 @@ template< typename LatticeModel_T, typename Filter_T >
...
@@ -135,8 +135,8 @@ template< typename LatticeModel_T, typename Filter_T >
class
VectorGradientRefinement
class
VectorGradientRefinement
{
{
public:
public:
typedef
GhostLayerField
<
Vector3
<
real_t
>
,
1
>
VectorField_T
;
using
VectorField_T
=
GhostLayerField
<
Vector3
<
real_t
>
,
1
>
;
typedef
typename
LatticeModel_T
::
Stencil
Stencil_T
;
using
Stencil_T
=
typename
LatticeModel_T
::
Stencil
;
VectorGradientRefinement
(
const
ConstBlockDataID
&
fieldID
,
const
Filter_T
&
filter
,
VectorGradientRefinement
(
const
ConstBlockDataID
&
fieldID
,
const
Filter_T
&
filter
,
const
real_t
upperLimit
,
const
real_t
lowerLimit
,
const
uint_t
maxLevel
)
:
const
real_t
upperLimit
,
const
real_t
lowerLimit
,
const
uint_t
maxLevel
)
:
...
@@ -1504,7 +1504,7 @@ int main( int argc, char **argv )
...
@@ -1504,7 +1504,7 @@ int main( int argc, char **argv )
// add velocity field and utility
// add velocity field and utility
BlockDataID
velocityFieldID
=
field
::
addToStorage
<
VelocityField_T
>
(
blocks
,
"velocity field"
,
Vector3
<
real_t
>
(
real_t
(
0
)),
field
::
zyxf
,
uint_t
(
2
)
);
BlockDataID
velocityFieldID
=
field
::
addToStorage
<
VelocityField_T
>
(
blocks
,
"velocity field"
,
Vector3
<
real_t
>
(
real_t
(
0
)),
field
::
zyxf
,
uint_t
(
2
)
);
typedef
lbm
::
VelocityFieldWriter
<
PdfField_T
,
VelocityField_T
>
VelocityFieldWriter_T
;
using
VelocityFieldWriter_T
=
lbm
::
VelocityFieldWriter
<
PdfField_T
,
VelocityField_T
>
;
BlockSweepWrapper
<
VelocityFieldWriter_T
>
velocityFieldWriter
(
blocks
,
VelocityFieldWriter_T
(
pdfFieldID
,
velocityFieldID
)
);
BlockSweepWrapper
<
VelocityFieldWriter_T
>
velocityFieldWriter
(
blocks
,
VelocityFieldWriter_T
(
pdfFieldID
,
velocityFieldID
)
);
...
@@ -1847,7 +1847,7 @@ int main( int argc, char **argv )
...
@@ -1847,7 +1847,7 @@ int main( int argc, char **argv )
"Body Mapping"
,
finestLevel
);
"Body Mapping"
,
finestLevel
);
// add sweep for restoring PDFs in cells previously occupied by pe bodies
// add sweep for restoring PDFs in cells previously occupied by pe bodies
typedef
pe_coupling
::
EquilibriumReconstructor
<
LatticeModel_T
,
BoundaryHandling_T
>
Reconstructor_T
;
using
Reconstructor_T
=
pe_coupling
::
EquilibriumReconstructor
<
LatticeModel_T
,
BoundaryHandling_T
>
;
Reconstructor_T
reconstructor
(
blocks
,
boundaryHandlingID
,
bodyFieldID
);
Reconstructor_T
reconstructor
(
blocks
,
boundaryHandlingID
,
bodyFieldID
);
refinementTimestep
->
addPostStreamVoidFunction
(
lbm
::
refinement
::
SweepAsFunctorWrapper
(
pe_coupling
::
PDFReconstruction
<
LatticeModel_T
,
BoundaryHandling_T
,
Reconstructor_T
>
(
blocks
,
pdfFieldID
,
refinementTimestep
->
addPostStreamVoidFunction
(
lbm
::
refinement
::
SweepAsFunctorWrapper
(
pe_coupling
::
PDFReconstruction
<
LatticeModel_T
,
BoundaryHandling_T
,
Reconstructor_T
>
(
blocks
,
pdfFieldID
,
boundaryHandlingID
,
bodyStorageID
,
globalBodyStorage
,
bodyFieldID
,
reconstructor
,
FormerMO_Flag
,
Fluid_Flag
),
blocks
),
boundaryHandlingID
,
bodyStorageID
,
globalBodyStorage
,
bodyFieldID
,
reconstructor
,
FormerMO_Flag
,
Fluid_Flag
),
blocks
),
...
...
apps/benchmarks/AdaptiveMeshRefinementFluidParticleCoupling/AMRSettlingSphere.cpp
View file @
b6f607c7
...
@@ -84,25 +84,25 @@ using walberla::uint_t;
...
@@ -84,25 +84,25 @@ using walberla::uint_t;
//////////////
//////////////
// PDF field, flag field & body field
// PDF field, flag field & body field
typedef
lbm
::
D3Q19
<
lbm
::
collision_model
::
TRT
,
false
>
LatticeModel_T
;
using
LatticeModel_T
=
lbm
::
D3Q19
<
lbm
::
collision_model
::
TRT
,
false
>
;
typedef
LatticeModel_T
::
Stencil
Stencil_T
;
using
Stencil_T
=
LatticeModel_T
::
Stencil
;
typedef
lbm
::
PdfField
<
LatticeModel_T
>
PdfField_T
;
using
PdfField_T
=
lbm
::
PdfField
<
LatticeModel_T
>
;
typedef
walberla
::
uint8_t
flag_t
;
using
flag_t
=
walberla
::
uint8_t
;
typedef
FlagField
<
flag_t
>
FlagField
_T
;
using
FlagField
_T
=
FlagField
<
flag_t
>
;
typedef
GhostLayerField
<
pe
::
BodyID
,
1
>
BodyField_T
;
using
BodyField_T
=
GhostLayerField
<
pe
::
BodyID
,
1
>
;
typedef
GhostLayerField
<
Vector3
<
real_t
>
,
1
>
VelocityField_T
;
using
VelocityField_T
=
GhostLayerField
<
Vector3
<
real_t
>
,
1
>
;
const
uint_t
FieldGhostLayers
=
4
;
const
uint_t
FieldGhostLayers
=
4
;
// boundary handling
// boundary handling
typedef
lbm
::
NoSlip
<
LatticeModel_T
,
flag_t
>
NoSlip_T
;
using
NoSlip_T
=
lbm
::
NoSlip
<
LatticeModel_T
,
flag_t
>
;
typedef
pe_coupling
::
CurvedLinear
<
LatticeModel_T
,
FlagField_T
>
MO_T
;
using
MO_T
=
pe_coupling
::
CurvedLinear
<
LatticeModel_T
,
FlagField_T
>
;
typedef
BoundaryHandling
<
FlagField_T
,
Stencil_T
,
NoSlip_T
,
MO_T
>
BoundaryHandling_T
;
using
BoundaryHandling_T
=
BoundaryHandling
<
FlagField_T
,
Stencil_T
,
NoSlip_T
,
MO_T
>
;
typedef
std
::
tuple
<
pe
::
Sphere
,
pe
::
Ellipsoid
,
pe
::
Plane
>
BodyTypeTuple
;
using
BodyTypeTuple
=
std
::
tuple
<
pe
::
Sphere
,
pe
::
Ellipsoid
,
pe
::
Plane
>
;
///////////
///////////
// FLAGS //
// FLAGS //
...
@@ -128,8 +128,8 @@ template< typename LatticeModel_T, typename Filter_T >
...
@@ -128,8 +128,8 @@ template< typename LatticeModel_T, typename Filter_T >
class
VectorGradientRefinement
class
VectorGradientRefinement
{
{
public:
public:
typedef
GhostLayerField
<
Vector3
<
real_t
>
,
1
>
VectorField_T
;
using
VectorField_T
=
GhostLayerField
<
Vector3
<
real_t
>
,
1
>
;
typedef
typename
LatticeModel_T
::
Stencil
Stencil_T
;
using
Stencil_T
=
typename
LatticeModel_T
::
Stencil
;
VectorGradientRefinement
(
const
ConstBlockDataID
&
fieldID
,
const
Filter_T
&
filter
,
VectorGradientRefinement
(
const
ConstBlockDataID
&
fieldID
,
const
Filter_T
&
filter
,
const
real_t
upperLimit
,
const
real_t
lowerLimit
,
const
uint_t
maxLevel
)
:
const
real_t
upperLimit
,
const
real_t
lowerLimit
,
const
uint_t
maxLevel
)
:
...
@@ -994,7 +994,7 @@ int main( int argc, char **argv )
...
@@ -994,7 +994,7 @@ int main( int argc, char **argv )
// add velocity field and utility
// add velocity field and utility
BlockDataID
velocityFieldID
=
field
::
addToStorage
<
VelocityField_T
>
(
blocks
,
"velocity field"
,
Vector3
<
real_t
>
(
real_t
(
0
)),
field
::
zyxf
,
uint_t
(
2
)
);
BlockDataID
velocityFieldID
=
field
::
addToStorage
<
VelocityField_T
>
(
blocks
,
"velocity field"
,
Vector3
<
real_t
>
(
real_t
(
0
)),
field
::
zyxf
,
uint_t
(
2
)
);
typedef
lbm
::
VelocityFieldWriter
<
PdfField_T
,
VelocityField_T
>
VelocityFieldWriter_T
;
using
VelocityFieldWriter_T
=
lbm
::
VelocityFieldWriter
<
PdfField_T
,
VelocityField_T
>
;
BlockSweepWrapper
<
VelocityFieldWriter_T
>
velocityFieldWriter
(
blocks
,
VelocityFieldWriter_T
(
pdfFieldID
,
velocityFieldID
)
);
BlockSweepWrapper
<
VelocityFieldWriter_T
>
velocityFieldWriter
(
blocks
,
VelocityFieldWriter_T
(
pdfFieldID
,
velocityFieldID
)
);
...
@@ -1177,7 +1177,7 @@ int main( int argc, char **argv )
...
@@ -1177,7 +1177,7 @@ int main( int argc, char **argv )
"Body Mapping"
,
finestLevel
);
"Body Mapping"
,
finestLevel
);
// add sweep for restoring PDFs in cells previously occupied by pe bodies
// add sweep for restoring PDFs in cells previously occupied by pe bodies
typedef
pe_coupling
::
EquilibriumReconstructor
<
LatticeModel_T
,
BoundaryHandling_T
>
Reconstructor_T
;
using
Reconstructor_T
=
pe_coupling
::
EquilibriumReconstructor
<
LatticeModel_T
,
BoundaryHandling_T
>
;
Reconstructor_T
reconstructor
(
blocks
,
boundaryHandlingID
,
bodyFieldID
);
Reconstructor_T
reconstructor
(
blocks
,
boundaryHandlingID
,
bodyFieldID
);
refinementTimestep
->
addPostStreamVoidFunction
(
lbm
::
refinement
::
SweepAsFunctorWrapper
(
pe_coupling
::
PDFReconstruction
<
LatticeModel_T
,
BoundaryHandling_T
,
Reconstructor_T
>
(
blocks
,
pdfFieldID
,
refinementTimestep
->
addPostStreamVoidFunction
(
lbm
::
refinement
::
SweepAsFunctorWrapper
(
pe_coupling
::
PDFReconstruction
<
LatticeModel_T
,
BoundaryHandling_T
,
Reconstructor_T
>
(
blocks
,
pdfFieldID
,
boundaryHandlingID
,
bodyStorageID
,
globalBodyStorage
,
bodyFieldID
,
reconstructor
,
FormerMO_Flag
,
Fluid_Flag
),
blocks
),
boundaryHandlingID
,
bodyStorageID
,
globalBodyStorage
,
bodyFieldID
,
reconstructor
,
FormerMO_Flag
,
Fluid_Flag
),
blocks
),
...
...
apps/benchmarks/AdaptiveMeshRefinementFluidParticleCoupling/WorkloadEvaluation.cpp
View file @
b6f607c7
...
@@ -86,23 +86,23 @@ using namespace walberla;
...
@@ -86,23 +86,23 @@ using namespace walberla;
using
walberla
::
uint_t
;
using
walberla
::
uint_t
;
// PDF field, flag field & body field
// PDF field, flag field & body field
typedef
lbm
::
D3Q19
<
lbm
::
collision_model
::
TRT
,
false
>
LatticeModel_T
;
using
LatticeModel_T
=
lbm
::
D3Q19
<
lbm
::
collision_model
::
TRT
,
false
>
;
typedef
LatticeModel_T
::
Stencil
Stencil_T
;
using
Stencil_T
=
LatticeModel_T
::
Stencil
;
typedef
lbm
::
PdfField
<
LatticeModel_T
>
PdfField_T
;
using
PdfField_T
=
lbm
::
PdfField
<
LatticeModel_T
>
;
typedef
walberla
::
uint8_t
flag_t
;
using
flag_t
=
walberla
::
uint8_t
;
typedef
FlagField
<
flag_t
>
FlagField
_T
;
using
FlagField
_T
=
FlagField
<
flag_t
>
;
typedef
GhostLayerField
<
pe
::
BodyID
,
1
>
BodyField_T
;
using
BodyField_T
=
GhostLayerField
<
pe
::
BodyID
,
1
>
;
const
uint_t
FieldGhostLayers
=
1
;
const
uint_t
FieldGhostLayers
=
1
;
// boundary handling
// boundary handling
typedef
pe_coupling
::
CurvedLinear
<
LatticeModel_T
,
FlagField_T
>
MO_CLI_T
;
using
MO_CLI_T
=
pe_coupling
::
CurvedLinear
<
LatticeModel_T
,
FlagField_T
>
;
typedef
BoundaryHandling
<
FlagField_T
,
Stencil_T
,
MO_CLI_T
>
BoundaryHandling_T
;
using
BoundaryHandling_T
=
BoundaryHandling
<
FlagField_T
,
Stencil_T
,
MO_CLI_T
>
;
typedef
std
::
tuple
<
pe
::
Sphere
,
pe
::
Ellipsoid
,
pe
::
Plane
>
BodyTypeTuple
;
using
BodyTypeTuple
=
std
::
tuple
<
pe
::
Sphere
,
pe
::
Ellipsoid
,
pe
::
Plane
>
;
///////////
///////////
// FLAGS //
// FLAGS //
...
@@ -754,7 +754,7 @@ int main( int argc, char **argv )
...
@@ -754,7 +754,7 @@ int main( int argc, char **argv )
<<
Sweep
(
pe_coupling
::
BodyMapping
<
LatticeModel_T
,
BoundaryHandling_T
>
(
blocks
,
pdfFieldID
,
boundaryHandlingID
,
bodyStorageID
,
globalBodyStorage
,
bodyFieldID
,
MO_CLI_Flag
,
FormerMO_Flag
,
pe_coupling
::
selectRegularBodies
),
"Body Mapping"
);
<<
Sweep
(
pe_coupling
::
BodyMapping
<
LatticeModel_T
,
BoundaryHandling_T
>
(
blocks
,
pdfFieldID
,
boundaryHandlingID
,
bodyStorageID
,
globalBodyStorage
,
bodyFieldID
,
MO_CLI_Flag
,
FormerMO_Flag
,
pe_coupling
::
selectRegularBodies
),
"Body Mapping"
);
// sweep for restoring PDFs in cells previously occupied by pe bodies
// sweep for restoring PDFs in cells previously occupied by pe bodies
typedef
pe_coupling
::
EquilibriumReconstructor
<
LatticeModel_T
,
BoundaryHandling_T
>
Reconstructor_T
;
using
Reconstructor_T
=
pe_coupling
::
EquilibriumReconstructor
<
LatticeModel_T
,
BoundaryHandling_T
>
;
Reconstructor_T
reconstructor
(
blocks
,
boundaryHandlingID
,
bodyFieldID
);
Reconstructor_T
reconstructor
(
blocks
,
boundaryHandlingID
,
bodyFieldID
);
timeloop
.
add
()
timeloop
.
add
()
<<
Sweep
(
pe_coupling
::
PDFReconstruction
<
LatticeModel_T
,
BoundaryHandling_T
,
Reconstructor_T
>
<<
Sweep
(
pe_coupling
::
PDFReconstruction
<
LatticeModel_T
,
BoundaryHandling_T
,
Reconstructor_T
>
...
...
apps/benchmarks/CMakeLists.txt
View file @
b6f607c7
add_subdirectory
(
AdaptiveMeshRefinementFluidParticleCoupling
)
add_subdirectory
(
AdaptiveMeshRefinementFluidParticleCoupling
)
add_subdirectory
(
ComplexGeometry
)
add_subdirectory
(
ComplexGeometry
)
add_subdirectory
(
DEM
)
add_subdirectory
(
DEM
)
add_subdirectory
(
FieldCommunication
)
add_subdirectory
(
MeshDistance
)
add_subdirectory
(
MeshDistance
)
add_subdirectory
(
CouetteFlow
)
add_subdirectory
(
CouetteFlow
)
add_subdirectory
(
FluidParticleCoupling
)
add_subdirectory
(
FluidParticleCoupling
)
add_subdirectory
(
FluidParticleCouplingWithLoadBalancing
)
add_subdirectory
(
ForcesOnSphereNearPlaneInShearFlow
)
add_subdirectory
(
ForcesOnSphereNearPlaneInShearFlow
)
add_subdirectory
(
GranularGas
)
add_subdirectory
(
GranularGas
)
add_subdirectory
(
IntegratorAccuracy
)
add_subdirectory
(
LennardJones
)
add_subdirectory
(
LennardJones
)
add_subdirectory
(
NonUniformGrid
)
add_subdirectory
(
NonUniformGrid
)
add_subdirectory
(
MotionSingleHeavySphere
)
add_subdirectory
(
MotionSingleHeavySphere
)
...
@@ -14,10 +15,20 @@ add_subdirectory( PoiseuilleChannel )
...
@@ -14,10 +15,20 @@ add_subdirectory( PoiseuilleChannel )
add_subdirectory
(
ProbeVsExtraMessage
)
add_subdirectory
(
ProbeVsExtraMessage
)
add_subdirectory
(
SchaeferTurek
)
add_subdirectory
(
SchaeferTurek
)
add_subdirectory
(
UniformGrid
)
add_subdirectory
(
UniformGrid
)
if
(
WALBERLA_BUILD_WITH_CODEGEN
)
add_subdirectory
(
UniformGridGenerated
)
if
(
WALBERLA_BUILD_WITH_PYTHON
)
add_subdirectory
(
PhaseFieldAllenCahn
)
add_subdirectory
(
FieldCommunication
)
endif
()
if
(
WALBERLA_BUILD_WITH_CODEGEN AND WALBERLA_BUILD_WITH_CUDA
)
if
(
WALBERLA_BUILD_WITH_CODEGEN
)
add_subdirectory
(
UniformGridGPU
)
add_subdirectory
(
UniformGridGenerated
)
add_subdirectory
(
PhaseFieldAllenCahn
)
endif
()
if
(
WALBERLA_BUILD_WITH_CODEGEN AND WALBERLA_BUILD_WITH_CUDA
)
add_subdirectory
(
UniformGridGPU
)
endif
()
endif
()
endif
()
apps/benchmarks/CouetteFlow/CouetteFlow.cpp
View file @
b6f607c7
...
@@ -118,21 +118,21 @@ using walberla::real_t;
...
@@ -118,21 +118,21 @@ using walberla::real_t;
// TYPEDEFS //
// TYPEDEFS //
//////////////
//////////////
typedef
lbm
::
D3Q15
<
lbm
::
collision_model
::
SRT
,
false
>
D3Q15_SRT_INCOMP
;
using
D3Q15_SRT_INCOMP
=
lbm
::
D3Q15
<
lbm
::
collision_model
::
SRT
,
false
>
;
typedef
lbm
::
D3Q15
<
lbm
::
collision_model
::
SRT
,
true
>
D3Q15_SRT_COMP
;
using
D3Q15_SRT_COMP
=
lbm
::
D3Q15
<
lbm
::
collision_model
::
SRT
,
true
>
;
typedef
lbm
::
D3Q15
<
lbm
::
collision_model
::
TRT
,
false
>
D3Q15_TRT_INCOMP
;
using
D3Q15_TRT_INCOMP
=
lbm
::
D3Q15
<
lbm
::
collision_model
::
TRT
,
false
>
;
typedef
lbm
::
D3Q15
<
lbm
::
collision_model
::
TRT
,
true
>
D3Q15_TRT_COMP
;
using
D3Q15_TRT_COMP
=
lbm
::
D3Q15
<
lbm
::
collision_model
::
TRT
,
true
>
;
typedef
lbm
::
D3Q19
<
lbm
::
collision_model
::
SRT
,
false
>
D3Q19_SRT_INCOMP
;
using
D3Q19_SRT_INCOMP
=
lbm
::
D3Q19
<
lbm
::
collision_model
::
SRT
,
false
>
;
typedef
lbm
::
D3Q19
<
lbm
::
collision_model
::
SRT
,
true
>
D3Q19_SRT_COMP
;
using
D3Q19_SRT_COMP
=
lbm
::
D3Q19
<
lbm
::
collision_model
::
SRT
,
true
>
;
typedef
lbm
::
D3Q19
<
lbm
::
collision_model
::
TRT
,
false
>
D3Q19_TRT_INCOMP
;
using
D3Q19_TRT_INCOMP
=
lbm
::
D3Q19
<
lbm
::
collision_model
::
TRT
,
false
>
;
typedef
lbm
::
D3Q19
<
lbm
::
collision_model
::
TRT
,
true
>
D3Q19_TRT_COMP
;
using
D3Q19_TRT_COMP
=
lbm
::
D3Q19
<
lbm
::
collision_model
::
TRT
,
true
>
;
typedef
lbm
::
D3Q19
<
lbm
::
collision_model
::
D3Q19MRT
,
false
>
D3Q19_MRT_INCOMP
;
using
D3Q19_MRT_INCOMP
=
lbm
::
D3Q19
<
lbm
::
collision_model
::
D3Q19MRT
,
false
>
;
typedef
lbm
::
D3Q27
<
lbm
::
collision_model
::
SRT
,
false
>
D3Q27_SRT_INCOMP
;
using
D3Q27_SRT_INCOMP
=
lbm
::
D3Q27
<
lbm
::
collision_model
::
SRT
,
false
>
;
typedef
lbm
::
D3Q27
<
lbm
::
collision_model
::
SRT
,
true
>
D3Q27_SRT_COMP
;
using
D3Q27_SRT_COMP
=
lbm
::
D3Q27
<
lbm
::
collision_model
::
SRT
,
true
>
;
typedef
lbm
::
D3Q27
<
lbm
::
collision_model
::
TRT
,
false
>
D3Q27_TRT_INCOMP
;
using
D3Q27_TRT_INCOMP
=
lbm
::
D3Q27
<
lbm
::
collision_model
::
TRT
,
false
>
;
typedef
lbm
::
D3Q27
<
lbm
::
collision_model
::
TRT
,
true
>
D3Q27_TRT_COMP
;
using
D3Q27_TRT_COMP
=
lbm
::
D3Q27
<
lbm
::
collision_model
::
TRT
,
true
>
;
template
<
typename
LatticeModel_T
>
template
<
typename
LatticeModel_T
>
struct
Types
struct
Types
...
@@ -370,10 +370,10 @@ class MyBoundaryHandling
...
@@ -370,10 +370,10 @@ class MyBoundaryHandling
{
{
public:
public:
typedef
lbm
::
NoSlip
<
LatticeModel_T
,
flag_t
>
NoSlip_T
;
using
NoSlip_T
=
lbm
::
NoSlip
<
LatticeModel_T
,
flag_t
>
;
typedef
lbm
::
SimpleUBB
<
LatticeModel_T
,
flag_t
>
UBB_T
;
using
UBB_T
=
lbm
::
SimpleUBB
<
LatticeModel_T
,
flag_t
>
;
typedef
BoundaryHandling
<
FlagField_T
,
typename
Types
<
LatticeModel_T
>::
Stencil_T
,
NoSlip_T
,
UBB_T
>
BoundaryHandling_T
;
using
BoundaryHandling_T
=
BoundaryHandling
<
FlagField_T
,
typename
Types
<
LatticeModel_T
>::
Stencil_T
,
NoSlip_T
,
UBB_T
>
;
...
@@ -616,7 +616,7 @@ struct AddRefinementTimeStep
...
@@ -616,7 +616,7 @@ struct AddRefinementTimeStep
}
}
else
else
{
{
typedef
lbm
::
SplitSweep
<
LatticeModel_T
,
FlagField_T
>
Sweep_T
;
using
Sweep_T
=
lbm
::
SplitSweep
<
LatticeModel_T
,
FlagField_T
>
;
auto
mySweep
=
make_shared
<
Sweep_T
>
(
pdfFieldId
,
flagFieldId
,
Fluid_Flag
);
auto
mySweep
=
make_shared
<
Sweep_T
>
(
pdfFieldId
,
flagFieldId
,
Fluid_Flag
);
addRefinementTimeStep
<
LatticeModel_T
,
Sweep_T
>
(
timeloop
,
blocks
,
pdfFieldId
,
boundaryHandlingId
,
timingPool
,
levelwiseTimingPool
,
addRefinementTimeStep
<
LatticeModel_T
,
Sweep_T
>
(
timeloop
,
blocks
,
pdfFieldId
,
boundaryHandlingId
,
timingPool
,
levelwiseTimingPool
,
...
...
apps/benchmarks/DEM/DEM.cpp