We are pleased to announce the 2nd DualSPHysics Users Workshop which will take place at the University of Manchester 6th-7th December 2016. The DualSPHysics Users Workshop aims will bring together the growing community of users and developers of this open-source SPH code.
The scheduled presentations by the developers will be:
“Welcome & Opening lecture on SPH. Why DualSPHysics project?”
By Ben Rogers
“DualSPHysics code. New version 4.0”
By José Manuel Domínguez / Georgios Fourtakas
“DualSPHysics in Coastal Engineering: wave generation & absorption, wave-structure interaction”
By Corrado Altomare
“DualSPHysics to design Wave Energy Converters”
By Alejandro J. C. Crespo
“Free-surface flows with rigid body dynamics: Towards modelling debris flows”
By Ricardo Canelas
“Converting DualSPHysics to solve strictly Incompressible SPH”
By Alex Chow
“Multi-phase modelling with DualSPHysics”
By Georgios Fourtakas
“Extending DualSPHysics to massive CPU Clusters”
By Athanasios Mokos
“Pre-processing and XML file”
By José Manuel Domínguez / Alejandro J. C. Crespo
“Post-processing and advanced visualisation”
By Orlando García-Feal / Alejandro J. C. Crespo
“Current limitations and future developments”
By Alejandro J. C. Crespo / Renato Vacondio
We are pleased to announce the release of new packages of DualSPHysics (v4.0) that include:
• Structure of the CPU and GPU code.
This new implementation helps to follow the common structure of the CPU and GPU code. Now only CUDA kernels are implemented in the CUDA files (.cu). The new CPU structure mimics the GPU threads. In this way, CPU threads also compute all particle interactions for one particle and then computes all interactions of a second one. Note that symmetry of pair-wise interactions is not applied in version 4.0 where the code is optimised for execution in multi-core CPU machines (an efficiency of 86.2% is achieved using 32 cores to simulate 150k particles). In addition, the new implementation of periodic boundaries is also much easier and can be automatically combined by new implementations performed by the user.
• Optimisation of the size of blocks for execution of CUDA kernels.
The version 4.0 includes a new automatic estimation of the optimum block size of CUDA kernels (particle interactions on GPU). This optimum block size depends on: (i) features of the kernel (registers and shared memory), (ii) compilation parameters and CUDA version, (iii) hardware to be used and GPU specifications and (iv) input data to be processed by the kernel (divergence, memory coalescent access). The CUDA Occupancy Calculator is available from CUDA version 6.5.
• Double precision.
Problems of precision in DualSPHysics, and more generally in SPH, can appear in simulations involving very large domains requiring a very high resolution. It has been shown that the source of the problem comes from the lack of precision to represent the position of the particles. DualSPHysics v4.0 now includes an implementation with double precision where necessary. For example, arrays of position use now double precision and updating state of particles is also implemented with double precision.
• Improved formulation for adding external forces.
Previous versions of the code contained only translational accelerations, but version 4.0 now includes all relative rotational acceleration terms (see [Longshaw and Rogers 2015]). Example: CaseSloshingAcc.
• Movement from external file for rotation.
A prescribed movement can be loaded from an external file with defined rotation time series like already exist for translation. The file contains time and angles (degrees or radians). Examples: Motion09, CaseSloshingMotion and CaseFloatingWavesVal.
• Coupled SPH & DEM.
The Discrete Element Method (DEM) allows for the computation of rigid particle dynamics, by considering contact laws to account for interaction forces. The coupled numerical solution, based on SPH and DEM discretisations, resolves solid-solid and solid-fluid interactions in broad range of scales [Canelas et al., 2016]. The source files of DEM implementation are released in version 4.0. Examples: CaseBowling and CaseSolids.
• Multi-Phase soil-water.
The DualSPHysics code has been validated for multi-phase simulations involving water and sediment for fully saturated flows [Fourtakas and Rogers, 2016]. This has been released in v4.0 as executables with the source code to following v4.2. Example: CaseTwoPhases.
• Novel Shifting algorithm.
Anisotropic particle spacing is an important stability issue in SPH as, especially in violent flows, particles cannot maintain a uniform distribution. The result is the introduction of noise in the velocity and pressure field, as well as the creation of voids within the water flow for certain cases. With the shifting algorithm, the particles are moved (“shifted”) towards areas with fewer particles (lower particle concentration) allowing the domain to maintain a uniform particle distribution and eliminating any voids that may occur due to the noise. The implementation follows the work of [Lind et al., 2012]. Example: CaseMovingSquare.
• Automatic wave generation.
Wave generation is included in this version of DualSPHysics, for long-crested waves only. In this way, the numerical model can be used to simulate a physical wave flume. Both regular and random waves can be generated. Examples: CaseWavesREG and CaseWavesIRREG.
• More powerful GenCase.
With the new GenCase, larger cases can be rapidly created using OpenMP. In addition, new features facilitate the design of more complex cases.
• New options in MeasureTool.
Now the MeasureTool code can compute magnitudes at locations/points that change position with time. These locations can be the positions of moving particles or can be loaded from an external file (-pointspos). Example: CaseSloshingMotion.
• Force computation.
A new postprocessing tool named ComputeForces is provided in this release. This code computes the force exerted by the fluid onto a solid object. The value of force is calculated as the summation of the acceleration values (solving the momentum equation during interaction between fluid and boundary) multiplied by the mass of each boundary particle. Examples: CaseDambreak (obstacle), CaseWavemaker2D (structure) and CaseFloatingWavesVal2D (floating).
• Validation of floating bodies and motion analysis.
The new code FloatingInfo allows to obtain different variables of interest of the floating objects during the simulation; positions of the center, linear velocity, angular velocity, motions (surge, sway and heave) and angles of rotation (pitch, roll and yaw). Examples: CaseFloating, CaseFloatingSphereVal2D and CaseFloatingWavesVal2D.
• Store information with variable output time.
The new version allows user to define intervals of time with different output time to save results. Examples: in OTHERS\UseDtDetailed.
• New properties for different type of fluids or boundaries.
The user can define new properties for the particles according to “mk” in the XML file and then he can load these values in DualSPHysics.
• New variables in post-processing tools defined by the user.
Post-processing tools are now designed to deal with variables defined by the user. In this way, a user can create a new variable in DualSPHysics source files and one can define its own output data that can be then used by PartVTK, MeasureTool, IsoSurface…