Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
integrators.hpp
Go to the documentation of this file.
1// -------------------------------------------------------//
2//
3// SHAMROCK code for hydrodynamics
4// Copyright (c) 2021-2026 Timothée David--Cléris <tim.shamrock@proton.me>
5// SPDX-License-Identifier: CeCILL Free Software License Agreement v2.1
6// Shamrock is licensed under the CeCILL 2.1 License, see LICENSE for more information
7//
8// -------------------------------------------------------//
9
10#pragma once
11
19#include "shambackends/sycl.hpp"
21#include "shambackends/vec.hpp"
23
24namespace shamrock {
25 namespace integrators {
26
38 template<class flt, class T>
39 void forward_euler(
40 sham::DeviceQueue &queue,
41 sham::DeviceBuffer<T> &buf_val,
42 sham::DeviceBuffer<T> &buf_der,
43 sycl::range<1> elem_range,
44 flt dt);
45
59 template<class flt, class T>
61 sham::DeviceQueue &queue,
62 sham::DeviceBuffer<T> &buf_val,
63 sham::DeviceBuffer<T> &buf_der,
64 sham::DeviceBuffer<T> &buf_der_old,
65 sham::DeviceBuffer<flt> &buf_eps_sq,
66 sycl::range<1> elem_range,
67 flt hdt);
68 } // namespace integrators
69
70 namespace utilities {
71
81 template<class T>
83 sham::DeviceQueue &queue,
84 sham::DeviceBuffer<T> &buf_xyz,
85 sycl::range<1> elem_range,
86 std::pair<T, T> box);
87
102 template<class T>
104 sham::DeviceQueue &queue,
105 sham::DeviceBuffer<T> &buf_xyz,
106 sham::DeviceBuffer<T> &buf_vxyz,
107 sycl::range<1> elem_range,
108 std::pair<T, T> box,
109 i32_3 shear_base,
110 i32_3 shear_dir,
111 shambase::VecComponent<T> shear_value,
112 shambase::VecComponent<T> shear_speed);
113
123 template<class T>
124 void swap_fields(
125 sham::DeviceQueue &queue,
128 u32 cnt);
129 } // namespace utilities
130
131} // namespace shamrock
Header file describing a Node Instance.
std::uint32_t u32
32 bit unsigned integer
A buffer allocated in USM (Unified Shared Memory)
A SYCL queue associated with a device and a context.
void forward_euler(sham::DeviceQueue &queue, sham::DeviceBuffer< T > &buf_val, sham::DeviceBuffer< T > &buf_der, sycl::range< 1 > elem_range, flt dt)
Perform forward Euler integration step.
void sycl_position_sheared_modulo(sham::DeviceQueue &queue, sham::DeviceBuffer< T > &buf_xyz, sham::DeviceBuffer< T > &buf_vxyz, sycl::range< 1 > elem_range, std::pair< T, T > box, i32_3 shear_base, i32_3 shear_dir, shambase::VecComponent< T > shear_value, shambase::VecComponent< T > shear_speed)
Apply periodic boundary conditions with shearing.
void sycl_position_modulo(sham::DeviceQueue &queue, sham::DeviceBuffer< T > &buf_xyz, sycl::range< 1 > elem_range, std::pair< T, T > box)
Apply periodic boundary conditions to positions.
void leapfrog_corrector(sham::DeviceQueue &queue, sham::DeviceBuffer< T > &buf_val, sham::DeviceBuffer< T > &buf_der, sham::DeviceBuffer< T > &buf_der_old, sham::DeviceBuffer< flt > &buf_eps_sq, sycl::range< 1 > elem_range, flt hdt)
Perform leapfrog corrector step with adaptive softening.
void swap_fields(sham::DeviceQueue &queue, sham::DeviceBuffer< T > &b1, sham::DeviceBuffer< T > &b2, u32 cnt)
Swap contents of two buffers.
namespace for the main framework
Definition __init__.py:1