Commit bf76deb1 authored by Christian Godenschwager's avatar Christian Godenschwager
Browse files

Initial commit of the open source version of the waLBerla framework

If you have access to the old closed source waLBerla repository, you may restore the complete history with the following command
git fetch git@i10git.cs.fau.de:software/walberla.git 'refs/replace/*:refs/replace/*'
parents

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.
# Qt
moc_*
ui_*
qrc_*
*~
# Backup files of kate/kwrite
# Generated files
*.out
/src/waLBerlaDefinitions.h
/src/core/waLBerlaBuildInfo.cpp
# Eclipse
/.cproject
/.project
/.pydevproject
/.settings
# Binary Files
/bin/
/lib/
*.a
/build
# Logfiles
logfile*.txt
*TestLog_p*.txt
# Compiled python
*.pyc
# Blockforest saves
*.sav
/utilities/.idea
/utilities/py_waLBerla/.idea
/python/.idea
/src/stencil/.idea
/CMakeLists.txt.user
# CMake build files
CMakeFiles
Makefile
/CMakeCache.txt
CTestTestfile.cmake
/DartConfiguration.tcl
cmake_install.cmake
CMakeDefs.h
/moduleStatistics.json
/walberla-config.cmake
This diff is collapsed.
<christian.godenschwager@fau.de> <christian.godenschwager@informatik.uni-erlangen.de>
<florian.schornbaum@fau.de> <florian.schornbaum@informatik.uni-erlangen.de>
<martin.bauer@fau.de> <martin.bauer@informatik.uni-erlangen.de>
<martin.bauer@fau.de> <bauer_martin@gmx.de>
<Daniela.Anderl@lstm.uni-erlangen.de> <daniela.anderl@lstm.uni-erlangen.de>
<regina.ammer@fau.de> <regina.ammer@informatik.uni-erlangen.de>
<matthias.markl@fau.de> <matthias.markl@ww.uni-erlangen.de>
\ No newline at end of file
Lead developers
---------------
Christian Godenschwager
Christoph Rettinger
Martin Bauer
Sebastian Eibl
Contributors
------------
Christian Feichtinger
Daniel Ritter
Daniela Anderl
David Staubach
Dominik Bartuschat
Ehsan Fattahi
Felix Winterhalter
Florian Schornbaum
Jan Götz
Johannes Habich
Klaus Iglberger
Kristina Pickl
Lorenz Hufnagel
Matthias Markl
Michael Kuron
Regina Ammer
Sagar Dolas
Silke Bergler
Simon Bogner
Stefan Donath
Sunil Kontham
Tobias Preclik
Tobias Scharpff
Tobias Schruff
This diff is collapsed.
Contributing to waLBerla will require a signed copy of the Chair for System
Simulation Contributor Agreement (LSSCA). The LSSCA is an adapted version of
the Sun/Oracle Contributor Agreement.
Signing a contributor agreement is necessary for many reasons. For an overview,
see http://oss-watch.ac.uk/resources/cla.
You can download the LSSCA at http://walberla.net/lss_contributor_agreement.pdf.
Please send a signed copy to us via fax (+49 9131 85-28928) or mail it to
Universität Erlangen-Nürnberg
Lehrstuhl für Systemsimulation (Informatik 10)
Cauerstraße 11
91058 Erlangen
Germany
After we have received your agreement, we will create a GitLab account on
https://i10git.cs.fau.de/ for you. GitLab Merge Requests are the only acceptable
facility for code submission. Please do not use GitHub pull requests and do not
send patches by email.
Thank you for contributing!
\ No newline at end of file
This diff is collapsed.
## This file should be placed in the root directory of your project.
## Then modify the CMakeLists.txt file in the root directory of your
## project to incorporate the testing dashboard.
##
## # The following are required to submit to the CDash dashboard:
## ENABLE_TESTING()
## INCLUDE(CTest)
set(CTEST_PROJECT_NAME "waLBerla")
set(CTEST_NIGHTLY_START_TIME "01:00:00 UTC")
set(CTEST_DROP_METHOD "http")
set(CTEST_DROP_SITE "www10.informatik.uni-erlangen.de")
set(CTEST_DROP_LOCATION "/Research/Projects/walberla/CDash/submit.php?project=waLBerla")
set(CTEST_DROP_SITE_CDASH TRUE)
set (MEMORYCHECK_COMMAND:FILEPATH "/usr/bin/valgrind")
set (MEMORYCHECK_COMMAND_OPTIONS "--show-reachable=no")
set (MEMORYCHECK_SUPPRESSIONS_FILE "${CMAKE_SOURCE_DIR}/openmpi-valgrind.supp")
# waLBerla
waLBerla (widely applicable Lattice Boltzmann from Erlangen) is a massively
parallel framework for multi physics applications. Besides its original
objective, Lattice Boltzmann solvers for hydrodynamics, it now contains
modules for other applications like Multigrid and rigid body dynamics
as well. Great emphasis is placed on the interoperability between the modules
in particular the fluid-particle coupling.
It scales from laptops to current and future supercomputers while maintaining
near-perfect efficiency.
See http://walberla.net/ for more information and a showcase of applications.
## Documentation and Tutorials
Documentation for the C++ framework is available in
[Doxygen](http://walberla.net/doxygen/index.html), while the Python interface
is documented in [Sphinx](http://walberla.net/sphinx/index.html).
## Getting started
The minimum requirements are a C++11-compliant compiler (e.g. GCC or Clang),
the [Boost](http://www.boost.org) library and the [CMake](http://www.cmake.org)
build system. Furthermore, you need an MPI library (like
[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
your operating system's package manager.
## Get involved
### Contributing
Please submit all code contributions on our
[GitLab](https://i10git.cs.fau.de/walberla/walberla). To get an account, please
sign and submit the [contributor license agreement](CONTRIBUTING.txt).
### Support
While we currently do not have a mailing list, any questions can be asked via
the [Issue Tracker](https://i10git.cs.fau.de/walberla/walberla/issues).
## Authors
Many thanks go to waLBerla's [contributors](AUTHORS.txt)
### Please cite us
If you use waLBerla in a publication, please cite the following article:
- C. Godenschwager, F. Schornbaum, M. Bauer, H. Köstler, and U. Rüde. A
framework for hybrid parallel flow simulations with a trillion cells in complex
geometries. In: Proceedings of the International Conference on High Performance
Computing, Networking, Storage and Analysis, page 35. ACM, 2013.
## License
waLBerla is licensed under [GPLv3](COPYING.txt).
# Benchmarks
if ( WALBERLA_BUILD_BENCHMARKS )
add_subdirectory ( benchmarks )
else ()
add_subdirectory ( benchmarks EXCLUDE_FROM_ALL )
endif()
# Tools
if ( WALBERLA_BUILD_TOOLS )
add_subdirectory ( tools )
else ()
add_subdirectory ( tools EXCLUDE_FROM_ALL )
endif()
# Tutorials
if ( WALBERLA_BUILD_TUTORIALS )
add_subdirectory ( tutorials )
else ()
add_subdirectory ( tutorials EXCLUDE_FROM_ALL )
endif()
# Python module
if ( WALBERLA_BUILD_WITH_PYTHON )
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()
add_subdirectory( CouetteFlow )
add_subdirectory( NonUniformGrid )
add_subdirectory( PoiseuilleChannel )
add_subdirectory( SchaeferTurek )
add_subdirectory( UniformGrid )
\ No newline at end of file
waLBerla_link_files_to_builddir( "*.dat" )
waLBerla_add_executable( NAME CouetteFlow DEPENDS blockforest boundary core field lbm postprocessing stencil timeloop vtk )
##############
# Some tests #
##############
waLBerla_execute_test( NO_MODULE_LABEL NAME CouetteFlowTestNoCheckRelease COMMAND $<TARGET_FILE:CouetteFlow> ${CMAKE_CURRENT_SOURCE_DIR}/TestNoCheck.dat --trt --linear-exp PROCESSES 4 CONFIGURATIONS Release RelWithDbgInfo )
waLBerla_execute_test( NO_MODULE_LABEL NAME CouetteFlowTestNoCheckDebug COMMAND $<TARGET_FILE:CouetteFlow> ${CMAKE_CURRENT_SOURCE_DIR}/TestNoCheck.dat --trt --linear-exp PROCESSES 4 LABELS longrun CONFIGURATIONS Debug DebugOptimized )
waLBerla_execute_test( NO_MODULE_LABEL NAME CouetteFlowTest0 COMMAND $<TARGET_FILE:CouetteFlow> ${CMAKE_CURRENT_SOURCE_DIR}/Test0.dat --trt --linear-exp LABELS longrun CONFIGURATIONS Release RelWithDbgInfo )
waLBerla_execute_test( NO_MODULE_LABEL NAME CouetteFlowTest2 COMMAND $<TARGET_FILE:CouetteFlow> ${CMAKE_CURRENT_SOURCE_DIR}/Test2.dat --trt --linear-exp LABELS longrun verylongrun PROCESSES 4 CONFIGURATIONS Release RelWithDbgInfo )
This diff is collapsed.
CouetteFlow
{
outputSetupForest false;
//////////////////////////////
// GENERAL SIMULATION SPECS //
//////////////////////////////
xBlocks 1;
yBlocks 1;
zBlocks 1;
xCells 10;
yCells 30;
zCells 10;
memoryPerCell 153; // in bytes
processMemoryLimit 2048; // in MiB !
Re 10;
initWithMeanVelocity false; // false = fluid is at rest
///////////////////////
// WHERE TO REFINE ? //
///////////////////////
refineOnBorder false;
borderRefinementLevel 2;
////////////////////////////
// RUNNING THE SIMULATION //
////////////////////////////
outerTimeSteps 1; // total number of time steps = outerTimeSteps * innerTimeSteps
innerTimeSteps 10000; // For each outer loop, performance data is logged.
VolumetricFlowRateEvaluation
{
plotFrequency 0;
logFrequency 10000;
axis <true,false,false>;
point <0.5,0.5,0.5>;
}
AccuracyEvaluation
{
plotFrequency 0;
logFrequency 10000;
}
StabilityChecker
{
checkFrequency 10000;
}
remainingTimeLoggerFrequency 3; // in seconds
vtkBeforeTimeStep true; // false = at the end of time step
logToSqlDB false;
///////////////////////////
// SRT - TRT - MRT setup //
///////////////////////////
omega 0.7;
// magicNumber 0.25; // Used to setup TRT and MRT in case if and only if no additional parameters
// except 'omega' are specified here in the input file. [default: 0.1875]
// lambda_e 1.98; // If "--trt" is used AND 'lambda_e' and 'lambda_d' are both specified here
// lambda_d 1.95; // in the input file then these two parameters are used for setting up TRT.
// Otherwise 'omega' is used to set up TRT.
// Setting up TRT to mimic SRT: set lambda_e and lambda_d to the same value
// If "--mrt" is used AND 's1', 's2', 's4', 's9', 's10', and 's16' are all specified here in the input file
// then these parameters are used for setting up MRT. Otherwise 'omega' is used to set up MRT.
// s1 1.19; // s_e
// s2 1.4; // s_epsilon
// s4 1.2; // s_q
// s9 1.99; // s_nu
// s10 1.4; // s_pi
// s16 1.98; // s_m
// Setting up MRT to mimic SRT: set all parameters to the same value
// Setting up MRT to mimic TRT: set s1, s2, s9, and s10 to lambda_e and s4 and s16 to lambda_d
//////////////////
// CHECK AT END //
//////////////////
check true;
checkFlowRateError 1E-13; // upper bound for rel. error of the flow rate
checkErrorL1 1E-13; // upper bound for L1 norm (normalized to a volume of 1x1x1 and a maximum velocity of 1)
}
CouetteFlow
{
outputSetupForest false;
//////////////////////////////
// GENERAL SIMULATION SPECS //
//////////////////////////////
xBlocks 1;
yBlocks 3;
zBlocks 1;
xCells 10;
yCells 10;
zCells 10;
memoryPerCell 153; // in bytes
processMemoryLimit 2048; // in MiB !
Re 10;
initWithMeanVelocity false; // false = fluid is at rest
///////////////////////
// WHERE TO REFINE ? //
///////////////////////
refineOnBorder true;
borderRefinementLevel 2;
////////////////////////////
// RUNNING THE SIMULATION //
////////////////////////////
outerTimeSteps 1; // total number of time steps = outerTimeSteps * innerTimeSteps
innerTimeSteps 10000; // For each outer loop, performance data is logged.
VolumetricFlowRateEvaluation
{
plotFrequency 0;
logFrequency 10000;
axis <true,false,false>;
point <0.5,0.5,0.5>;
}
AccuracyEvaluation
{
plotFrequency 0;
logFrequency 10000;
}
StabilityChecker
{
checkFrequency 10000;
}
remainingTimeLoggerFrequency 3; // in seconds
vtkBeforeTimeStep true; // false = at the end of time step
logToSqlDB false;
///////////////////////////
// SRT - TRT - MRT setup //
///////////////////////////
omega 0.7;
// magicNumber 0.25; // Used to setup TRT and MRT in case if and only if no additional parameters
// except 'omega' are specified here in the input file. [default: 0.1875]
// lambda_e 1.98; // If "--trt" is used AND 'lambda_e' and 'lambda_d' are both specified here
// lambda_d 1.95; // in the input file then these two parameters are used for setting up TRT.
// Otherwise 'omega' is used to set up TRT.
// Setting up TRT to mimic SRT: set lambda_e and lambda_d to the same value
// If "--mrt" is used AND 's1', 's2', 's4', 's9', 's10', and 's16' are all specified here in the input file
// then these parameters are used for setting up MRT. Otherwise 'omega' is used to set up MRT.
// s1 1.19; // s_e
// s2 1.4; // s_epsilon
// s4 1.2; // s_q
// s9 1.99; // s_nu
// s10 1.4; // s_pi
// s16 1.98; // s_m
// Setting up MRT to mimic SRT: set all parameters to the same value
// Setting up MRT to mimic TRT: set s1, s2, s9, and s10 to lambda_e and s4 and s16 to lambda_d
//////////////////
// CHECK AT END //
//////////////////
check true;
checkFlowRateError 1E-13; // upper bound for rel. error of the flow rate
checkErrorL1 1E-13; // upper bound for L1 norm (normalized to a volume of 1x1x1 and a maximum velocity of 1)
}
CouetteFlow
{
outputSetupForest false;
//////////////////////////////
// GENERAL SIMULATION SPECS //
//////////////////////////////
xBlocks 1;
yBlocks 3;
zBlocks 1;
xCells 10;
yCells 10;
zCells 10;
memoryPerCell 153; // in bytes
processMemoryLimit 2048; // in MiB !
Re 10;
initWithMeanVelocity false; // false = fluid is at rest
///////////////////////
// WHERE TO REFINE ? //
///////////////////////
refineOnBorder true;
borderRefinementLevel 2;
////////////////////////////
// RUNNING THE SIMULATION //
////////////////////////////
outerTimeSteps 1; // total number of time steps = outerTimeSteps * innerTimeSteps
innerTimeSteps 2; // For each outer loop, performance data is logged.
StabilityChecker
{
checkFrequency 2;
}
remainingTimeLoggerFrequency 3; // in seconds
vtkBeforeTimeStep true; // false = at the end of time step
logToSqlDB false;
///////////////////////////
// SRT - TRT - MRT setup //
///////////////////////////
omega 0.7;
// magicNumber 0.25; // Used to setup TRT and MRT in case if and only if no additional parameters
// except 'omega' are specified here in the input file. [default: 0.1875]
// lambda_e 1.98; // If "--trt" is used AND 'lambda_e' and 'lambda_d' are both specified here
// lambda_d 1.95; // in the input file then these two parameters are used for setting up TRT.
// Otherwise 'omega' is used to set up TRT.
// Setting up TRT to mimic SRT: set lambda_e and lambda_d to the same value
// If "--mrt" is used AND 's1', 's2', 's4', 's9', 's10', and 's16' are all specified here in the input file
// then these parameters are used for setting up MRT. Otherwise 'omega' is used to set up MRT.
// s1 1.19; // s_e
// s2 1.4; // s_epsilon
// s4 1.2; // s_q
// s9 1.99; // s_nu
// s10 1.4; // s_pi
// s16 1.98; // s_m
// Setting up MRT to mimic SRT: set all parameters to the same value
// Setting up MRT to mimic TRT: set s1, s2, s9, and s10 to lambda_e and s4 and s16 to lambda_d
//////////////////
// CHECK AT END //
//////////////////
check false;
}
CouetteFlow
{
// 3 different modes of operation:
// -------------------------------
// NO sbffile and NO saveToFile -> domain decomposition is created on the fly and simulation is run
// sbffile and NO saveToFile -> domain decomposition is loaded from file and simulation is run
// sbffile and saveToFile -> domain decomposition is created and saved to file (simulation is NOT run!)
// sbffile grid.sbf;
// blocksPerProcess 7;
// saveToFile; // does not require additional arguments
outputSetupForest true; // generates: "domain_decomposition.vtk" and "process_distribution.csv"
//////////////////////////////
// GENERAL SIMULATION SPECS //
//////////////////////////////
xBlocks 1;
yBlocks 4;
zBlocks 1;
xCells 10;
yCells 10;
zCells 10;
memoryPerCell 153; // in bytes
processMemoryLimit 2048; // in MiB !
Re 10;
initWithMeanVelocity false; // false = fluid is at rest
///////////////////////
// WHERE TO REFINE ? //
///////////////////////
refineOnBorder false;
borderRefinementLevel 2;
borderRefinementBuffer 0; // in number of cells in the coarsest level
AABBRefinementSelection
{
/*
Region
{
level 2;
region [ <0.499,0.499,0.499>, <0.501,0.501,0.501> ];
}
*/
/*
Region
{
level 2;
region [ <0,0.499,0>, <1,0.501,1> ];
}
*/
/*
Region
{
level 2;
region [ <0,0,0>, <1,1,1> ];
}
*/
}
////////////////////////////
// RUNNING THE SIMULATION //
////////////////////////////
outerTimeSteps 20; // total number of time steps = outerTimeSteps * innerTimeSteps
innerTimeSteps 1000; // For each outer loop, performance data is logged.
VolumetricFlowRateEvaluation
{
plotFrequency 10;
logFrequency 1000;
filename FlowRate.txt;
axis <true,false,false>;
point <0.5,0.5,0.5>;
}
AccuracyEvaluation
{
plotFrequency 10;