1 #include <vtestbed/config/real_type.hh> 2 #include <vtestbed/config/openmp.hh> 3 #include <vtestbed/core/cosine_wave.hh> 4 #include <vtestbed/core/stokes_wave.hh> 5 #include <vtestbed/core/plain_wave_generator.hh> 11 template <
class T,
int N,
class Wave>
18 using typename base_type::array_type;
23 void generate(
const grid_type& grid, array_type& result)
override {
24 generate_wave<T,N,Wave>(grid, result, this->wave());
29 template <
class T,
int N>
31 make_plain_wave_generator_openmp(std::any wave);
37 #define VTB_MAKE_PLAIN_WAVE_SURFACE_GENERATOR(T,N,Wave) \ 40 vtb::core::make_plain_wave_generator(const Wave<T,N>& wave) \ 41 -> std::unique_ptr<Plain_wave_generator<T,N,Wave<T,N>,Policy::OpenMP>> { \ 42 return std::unique_ptr<Plain_wave_generator<T,N,Wave<T,N>,Policy::OpenMP>>( \ 43 new Plain_wave_generator_openmp<T,N,Wave<T,N>>(wave) \ 48 vtb::core::make_plain_wave_generator() \ 49 -> std::unique_ptr<Plain_wave_generator<T,N,Wave<T,N>,Policy::OpenMP>> { \ 50 return std::unique_ptr<Plain_wave_generator<T,N,Wave<T,N>,Policy::OpenMP>>( \ 51 new Plain_wave_generator_openmp<T,N,Wave<T,N>>() \ 58 #if defined(VTB_REAL_TYPE_FLOAT) 64 template <
class T,
int N>
66 vtb::core::make_plain_wave_generator_openmp(std::any wave) {
72 return pointer(
new Plain_wave_generator_openmp<T,N,propagating_cosine>(
73 std::any_cast<propagating_cosine>(wave)));
76 return pointer(
new Plain_wave_generator_openmp<T,N,standing_cosine>(
77 std::any_cast<standing_cosine>(wave)));
80 return pointer(
new Plain_wave_generator_openmp<T,N,propagating_stokes>(
81 std::any_cast<propagating_stokes>(wave)));
87 vtb::core::make_plain_wave_generator_openmp<VTB_REAL_TYPE,3>(std::any wave);
88 #if defined(VTB_REAL_TYPE_FLOAT) 90 vtb::core::make_plain_wave_generator_openmp<double,3>(std::any wave);
Propagating plain wave which has cosine shape.
Propagating third-order Stokes wave.
A region defined by start and end index and lower and upper bound for each dimension.
Wavy surface generator that produces elevation grid for individual wave.
Standing plain wave which has cosine shape.
Base class for wavy surface generators.