From 6e7452cbcda378b9e68e1ce7fc1e2b62079db831 Mon Sep 17 00:00:00 2001 From: Yu virtonomy Date: Mon, 13 Jan 2025 16:31:08 +0100 Subject: [PATCH 1/7] add interaction_ck for ck version --- .../all_general_dynamics_ck.h | 1 + .../all_surface_indication_ck.h | 37 ++++ .../surface_indication_ck.h | 159 ++++++++++++++++ .../surface_indication_ck.hpp | 169 ++++++++++++++++++ .../test_2d_dambreak_ck/dambreak_ck.cpp | 8 +- 5 files changed, 373 insertions(+), 1 deletion(-) create mode 100644 src/shared/shared_ck/particle_dynamics/general_dynamics/surface_indication/all_surface_indication_ck.h create mode 100644 src/shared/shared_ck/particle_dynamics/general_dynamics/surface_indication/surface_indication_ck.h create mode 100644 src/shared/shared_ck/particle_dynamics/general_dynamics/surface_indication/surface_indication_ck.hpp diff --git a/src/shared/shared_ck/particle_dynamics/general_dynamics/all_general_dynamics_ck.h b/src/shared/shared_ck/particle_dynamics/general_dynamics/all_general_dynamics_ck.h index ab55f0a22..d703b1cdc 100644 --- a/src/shared/shared_ck/particle_dynamics/general_dynamics/all_general_dynamics_ck.h +++ b/src/shared/shared_ck/particle_dynamics/general_dynamics/all_general_dynamics_ck.h @@ -35,3 +35,4 @@ #include "geometric_dynamics.hpp" #include "interpolation_dynamics.hpp" #include "kernel_correction_ck.hpp" +#include "all_surface_indication_ck.h" diff --git a/src/shared/shared_ck/particle_dynamics/general_dynamics/surface_indication/all_surface_indication_ck.h b/src/shared/shared_ck/particle_dynamics/general_dynamics/surface_indication/all_surface_indication_ck.h new file mode 100644 index 000000000..d41482a0b --- /dev/null +++ b/src/shared/shared_ck/particle_dynamics/general_dynamics/surface_indication/all_surface_indication_ck.h @@ -0,0 +1,37 @@ +/* ------------------------------------------------------------------------- * + * SPHinXsys * + * ------------------------------------------------------------------------- * + * SPHinXsys (pronunciation: s'finksis) is an acronym from Smoothed Particle * + * Hydrodynamics for industrial compleX systems. It provides C++ APIs for * + * physical accurate simulation and aims to model coupled industrial dynamic * + * systems including fluid, solid, multi-body dynamics and beyond with SPH * + * (smoothed particle hydrodynamics), a meshless computational method using * + * particle discretization. * + * * + * SPHinXsys is partially funded by German Research Foundation * + * (Deutsche Forschungsgemeinschaft) DFG HU1527/6-1, HU1527/10-1, * + * HU1527/12-1 and HU1527/12-4. * + * * + * Portions copyright (c) 2017-2023 Technical University of Munich and * + * the authors' affiliations. * + * * + * Licensed under the Apache License, Version 2.0 (the "License"); you may * + * not use this file except in compliance with the License. You may obtain a * + * copy of the License at http://www.apache.org/licenses/LICENSE-2.0. * + * * + * ------------------------------------------------------------------------- */ + +#ifndef B9F4AD2C_8E17_4C49_BCAA_4BD2C6A6951F +#define B9F4AD2C_8E17_4C49_BCAA_4BD2C6A6951F +/** + * @file all_general_dynamics.h + * @brief This is the header file that user code should include to pick up all + * general dynamics used in SPHinXsys. + * @author Chi Zhang and Xiangyu Hu + */ + + +#include "surface_indication_ck.hpp" + + +#endif /* B9F4AD2C_8E17_4C49_BCAA_4BD2C6A6951F */ diff --git a/src/shared/shared_ck/particle_dynamics/general_dynamics/surface_indication/surface_indication_ck.h b/src/shared/shared_ck/particle_dynamics/general_dynamics/surface_indication/surface_indication_ck.h new file mode 100644 index 000000000..323391020 --- /dev/null +++ b/src/shared/shared_ck/particle_dynamics/general_dynamics/surface_indication/surface_indication_ck.h @@ -0,0 +1,159 @@ +#ifndef SURFACE_INDICATION_CK_H +#define SURFACE_INDICATION_CK_H + +#include "base_general_dynamics.h" +#include "base_fluid_dynamics.h" +#include "interaction_ck.hpp" + +namespace SPH +{ +namespace fluid_dynamics +{ + +template +class IndicatorCK; + +template +class FreeSurfaceIndicationCK; + +template <> +class IndicatorCK<> +{ +public: + IndicatorCK(BaseParticles *particles) {} + + class ComputingKernel + { + public: + template + ComputingKernel(const ExecutionPolicy &ex_policy, + IndicatorCK<> &encloser, + ComputingKernelType &computing_kernel) + : threshold_by_dimensions_(0.75 * Dimensions) {} + + Real operator()(Real &surface_indicator) { return surface_indicator; } + + protected: + Real threshold_by_dimensions_; + }; +}; + +template<> +class IndicatorCK : public IndicatorCK<> { +public: + IndicatorCK(BaseParticles *particles) : IndicatorCK<>(particles) {} + using ComputingKernel = typename IndicatorCK<>::ComputingKernel; +}; + +template