waLBerla merge requestshttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests2018-01-29T09:30:31+01:00https://i10git.cs.fau.de/walberla/walberla/-/merge_requests/80fix MPIEXEC_PREFLAG2018-01-29T09:30:31+01:00Dominik Thoennesdominik.thoennes@fau.defix MPIEXEC_PREFLAGcurrently the oversubscribe flag is not always set. Using FORCE should solve the problemcurrently the oversubscribe flag is not always set. Using FORCE should solve the problemhttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/79Require C++14 and CMake 3.12018-02-21T16:25:39+01:00Michael Kuronmkuron@icp.uni-stuttgart.deRequire C++14 and CMake 3.1First batch of changes for #48.
Fixes !42First batch of changes for #48.
Fixes !42Christian Godenschwagerchristian.godenschwager@fau.deChristian Godenschwagerchristian.godenschwager@fau.dehttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/78WIP: Multimesh handling2018-11-29T18:46:05+01:00Christian Godenschwagerchristian.godenschwager@fau.deWIP: Multimesh handlingAdds some tools to load meshes which are split in multiple partsAdds some tools to load meshes which are split in multiple partsChristian Godenschwagerchristian.godenschwager@fau.deChristian Godenschwagerchristian.godenschwager@fau.dehttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/77Resolve "body filter to exclude bodies from PeVTKMeshWriter"2018-01-19T15:26:59+01:00Sebastian EiblResolve "body filter to exclude bodies from PeVTKMeshWriter"Closes #47Closes #47Christian Godenschwagerchristian.godenschwager@fau.deChristian Godenschwagerchristian.godenschwager@fau.dehttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/76Reworked Body Mapping2018-01-18T15:48:30+01:00Christoph RettingerReworked Body MappingDue to ambiguities between the pe flags (global, communicating, infiniteMass), and the demands of the pe coupling (regular , fixed, global bodies), see also issue https://i10git.cs.fau.de/walberla/walberla/issues/30, the body mapping ins...Due to ambiguities between the pe flags (global, communicating, infiniteMass), and the demands of the pe coupling (regular , fixed, global bodies), see also issue https://i10git.cs.fau.de/walberla/walberla/issues/30, the body mapping inside the pe_coupling module has been completely reworked.
Most of the body mapping functions have been removed as they duplicated the functionality.
Only two functions per type (standard LBM boundary condition mapping and momentum exchange boundary condition mapping) remained: to map all bodies and to map a single body.
The user can specify with the help of a mapping body selector function which bodies should be mapped and which should be skipped.
Standard routines are provided: selectAllBodies, selectRegularBodies(not infinite mass and not global), selectFixedBodies(infinite mass and not global), selectGlobalBodies
The PDF restoration has also been updated to now also restore global and fixed body PDFs in all cases.
These changes have been incorporated in all test cases and applications.
An additional test case for the body mapping has been added.
Documentation has been added.
All isFixed() checks in the pe_coupling sources and test have been removed and, if considered necessary, adequately replaced.
The selector functions have also been added to the PSM body mapping. Thus, it is possible to use PSM and MEM coupling in the same simulation, given that specific selector functions are provided.
The selector functions have also been added to the discrete particle method evaluators. Thus, it will be possible to use fully resolved and DPM coupling in the same simulation. Some functionalities are however still missing (e.g. solid volume fraction mapping of the fully resolved particles to have a correct guess of the SVF for the empirical correlations and the GNS sweep).Christian Godenschwagerchristian.godenschwager@fau.deChristian Godenschwagerchristian.godenschwager@fau.dehttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/75Resolve "Rename setMass function"2018-01-18T22:09:41+01:00Sebastian EiblResolve "Rename setMass function"Closes #46Closes #46Sebastian EiblSebastian Eiblhttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/74WIP: Add openmesh and mesh module to conda python modules2018-01-16T02:44:38+01:00Christian Godenschwagerchristian.godenschwager@fau.deWIP: Add openmesh and mesh module to conda python modulesChristian Godenschwagerchristian.godenschwager@fau.deChristian Godenschwagerchristian.godenschwager@fau.dehttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/73Enable dynamic refinement for coupled LBM-PE simulations2018-01-10T09:18:55+01:00Christoph RettingerEnable dynamic refinement for coupled LBM-PE simulationsAdded some functionalities, useful for coupled simulations with dynamic refinement.
Added a settling sphere test case in three variants: Uniform grid, statically refined grid, dynamically refined grid.Added some functionalities, useful for coupled simulations with dynamic refinement.
Added a settling sphere test case in three variants: Uniform grid, statically refined grid, dynamically refined grid.Christoph RettingerChristoph Rettingerhttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/72Added discrete particle method coupling2018-01-09T16:41:47+01:00Christoph RettingerAdded discrete particle method couplingThis adds the discrete particle (i.e. subgrid) coupling method to waLBerla.
The algorithm is explained in detail in https://arxiv.org/abs/1711.00336 (to be published soon).
Two test cases are added that validate the algorithm (settling v...This adds the discrete particle (i.e. subgrid) coupling method to waLBerla.
The algorithm is explained in detail in https://arxiv.org/abs/1711.00336 (to be published soon).
Two test cases are added that validate the algorithm (settling velocities and bouncing behavior).
One showcase is added (bidisperse fluidized bed) to demonstrate the capabilities of the approach.Christoph RettingerChristoph Rettingerhttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/71Added a showcases folder2018-01-04T12:26:34+01:00Christoph RettingerAdded a showcases folderA "showcases" folder is added to the apps directory.
It should - in future - contain sources for simulations that show specific aspects of waLBerla, probably in a very appealing way.
Examples are: Marble run, hour glass, fluidized bed, ....A "showcases" folder is added to the apps directory.
It should - in future - contain sources for simulations that show specific aspects of waLBerla, probably in a very appealing way.
Examples are: Marble run, hour glass, fluidized bed, ...
Those simulations do not benchmark or test certain parts in the traditional meaning, and also are not meant to be a tutorial.
The generated output (e.g. vtk) can be used to generate a video, which could be put onto the waLBerla website, with a link to the specific showcase source code.
All in all, it will be a collection of "real life" applications that can be simulated with waLBerla and will serve as a good starting base for further application developments.Christian Godenschwagerchristian.godenschwager@fau.deChristian Godenschwagerchristian.godenschwager@fau.dehttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/70Add mesh module to waLberla2017-12-20T21:38:27+01:00Christian Godenschwagerchristian.godenschwager@fau.deAdd mesh module to waLberlaThe mesh module adds support for complex geometry flow simulations.The mesh module adds support for complex geometry flow simulations.Christian Godenschwagerchristian.godenschwager@fau.deChristian Godenschwagerchristian.godenschwager@fau.dehttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/69WIP: convex Polyhedron for the pe2018-01-11T13:27:40+01:00Sebastian EiblWIP: convex Polyhedron for the peChristian Godenschwagerchristian.godenschwager@fau.deChristian Godenschwagerchristian.godenschwager@fau.dehttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/68Streamed GPUPackInfo2017-12-11T11:54:45+01:00João Victor Tozatti RissoStreamed GPUPackInfoRefactored version of the StreamedGPUPackInfo which does not modify how the MPI buffers are allocated (i.e. does not uses allocators as in !46 . Using this approach maintains compatibility with _MSVC compilers_ -- contrary to using alloc...Refactored version of the StreamedGPUPackInfo which does not modify how the MPI buffers are allocated (i.e. does not uses allocators as in !46 . Using this approach maintains compatibility with _MSVC compilers_ -- contrary to using allocators in the MPI buffers, and therefore is preferred to !46 .
Proposed changes:
* **CUDA streams:** Add support for asynchronous (un)packing operations using CUDA streams in ```cuda::communication::GPUPackInfo```. Through asynchronous operations it is possible to overlap GPU computation and MPI communication in simulations (e.g. LBM simulations). Asynchronous copies in CUDA require pinned memory on the host, and for that purpose a _staging buffer_ is introduced (i.e. ```cuda::communication::PinnedMemoryBuffer```) in the cuda module, which is used to stage data between the GPU and the MPI buffers.
* **zyxf layout:** Add zyxf field layout support in GPUPackInfo through extensions of the functions in ```cuda::GPUCopy```.
* **Extended GPUPackInfo test:** Add stream and zyxf layout tests to the GPUPackInfoTest to test the proposed implementation.
* **Extended Kernel:** add CUDA stream and shared memory configuration support in ```cuda::Kernel``` class
Closes #27, and also closes !46https://i10git.cs.fau.de/walberla/walberla/-/merge_requests/67Pe coupling refinement fixes2017-12-20T16:14:09+01:00Christoph RettingerPe coupling refinement fixesChristoph RettingerChristoph Rettingerhttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/66Resolve "PE Union should conserve momentum upon creation"2017-12-01T12:45:42+01:00Sebastian EiblResolve "PE Union should conserve momentum upon creation"Closes #43
Linear momentum is now conserved when body is added to an union.
Angular momentum is lost.Closes #43
Linear momentum is now conserved when body is added to an union.
Angular momentum is lost.Christoph RettingerChristoph Rettingerhttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/65fixed missing semicolon in Likwid macro2017-11-14T13:49:58+01:00Dominik Thoennesdominik.thoennes@fau.defixed missing semicolon in Likwid macroDominik Thoennesdominik.thoennes@fau.deDominik Thoennesdominik.thoennes@fau.dehttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/64OpenMPI 3.0 support2017-11-12T19:45:40+01:00Michael Kuronmkuron@icp.uni-stuttgart.deOpenMPI 3.0 supportOpenMPI 3.0 by default does not allow running with more processes than CPUs, which caused many tests to fail on my laptop. This merge request enables `--oversubscribe` on all tests if the OpenMPI version is greater than 3.OpenMPI 3.0 by default does not allow running with more processes than CPUs, which caused many tests to fail on my laptop. This merge request enables `--oversubscribe` on all tests if the OpenMPI version is greater than 3.Christian Godenschwagerchristian.godenschwager@fau.deChristian Godenschwagerchristian.godenschwager@fau.dehttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/63Clearer warning that BlockForest::addBlockData(boost::function, ...) cannot b...2017-11-14T11:48:55+01:00Michael Kuronmkuron@icp.uni-stuttgart.deClearer warning that BlockForest::addBlockData(boost::function, ...) cannot be used with refinementPreviously, this only gave a generic error message like the one below, forced me to wade through BlockForest for several hours to find the cause. In the end, it boiled down to whether the boundary handling was a `shared_ptr<BoundaryHandl...Previously, this only gave a generic error message like the one below, forced me to wade through BlockForest for several hours to find the cause. In the end, it boiled down to whether the boundary handling was a `shared_ptr<BoundaryHandling_T>`, which works with refinement, or a `boost::function<BoundaryHandling_T(IBlock *)>`, which does not. Both variants are used throughout the tutorials, tests and sample apps, so when one pieces together an application from multiple places, one can end up trying to use the functor-style one with dynamic refinement.
```
[0][ERROR ]------(1.373 sec)[ 0] Dynamic data structure refresh failed!
[0] For the dynamic refresh to work, all registered block data items must implement the blockforest::BlockDataHandling interface
[0] _AND_ this block data handling object must be registered at an instance of class BlockForest or StructuredBlockForest!
[0] Registering the block data handling object through a base class [BlockStorage/StructuredBlockStorage] (shared) pointer will not work!
[0] For block data item 'boundary handling' a fitting block data handling object is missing or was registered
[0] through a base class pointer and not directly at an instance of class BlockForest or StructuredBlockForest.
```
@schornbaum, would it be possible through changes to `BlockForest` to make the functor-style work with dynamic refinement too?Christoph RettingerChristoph Rettingerhttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/62Improved iterative collision detection with GJK-EPA2017-11-30T17:19:11+01:00Tobias LeemannImproved iterative collision detection with GJK-EPAhttps://i10git.cs.fau.de/walberla/walberla/-/merge_requests/61New field utilities2017-11-09T23:28:41+01:00Christoph RettingerNew field utilitiesAdded several new utilities to the field module:
Field Interpolators: flag-field aware interpolation of associated field with nearest neighbor, trilinear or kernel strategy.
Distributors: flag-field aware distributors to associated fie...Added several new utilities to the field module:
Field Interpolators: flag-field aware interpolation of associated field with nearest neighbor, trilinear or kernel strategy.
Distributors: flag-field aware distributors to associated field with nearest neighbor or kernel strategy.
Uniform pull reduction info: New pack info that synchronizes the interior cells with the ghost layer values with a specified reduction operation.Martin BauerMartin Bauer