diff --git a/main/src/CMakeLists.txt b/main/src/CMakeLists.txt index 3736b0ff1..b146f278c 100644 --- a/main/src/CMakeLists.txt +++ b/main/src/CMakeLists.txt @@ -6,12 +6,12 @@ set(SPH_EXA_INCLUDE_DIRS ${CSTONE_DIR} ${COOLING_DIR} ${RYOANJI_DIR} ${SPH_DIR} ${PLANET_DIR}) function(enableGrackle exename) - if (SPH_EXA_WITH_GRACKLE) + if(SPH_EXA_WITH_GRACKLE) target_compile_definitions(${exename} PUBLIC SPH_EXA_HAVE_GRACKLE) target_compile_definitions(${exename} PUBLIC CONFIG_BFLOAT_8) target_link_libraries(${exename} PRIVATE grackle) target_link_libraries(${exename} PRIVATE cooler) - endif () + endif() endfunction() add_subdirectory(init) @@ -25,6 +25,6 @@ endif () include(setup_gitinfo) configure_file( - version.h.in - ${CMAKE_BINARY_DIR}/main/src/version.h + version.h.in + ${CMAKE_BINARY_DIR}/main/src/version.h ) diff --git a/main/src/propagator/factory.hpp b/main/src/propagator/factory.hpp index 18b9c78fc..95daab420 100644 --- a/main/src/propagator/factory.hpp +++ b/main/src/propagator/factory.hpp @@ -38,7 +38,6 @@ #include "nbody.hpp" #include "std_hydro.hpp" #include "ve_hydro.hpp" - #include "ve_hydro_bdt.hpp" #ifdef SPH_EXA_HAVE_GRACKLE #include "std_hydro_grackle.hpp" diff --git a/physics/Planet/CMakeLists.txt b/physics/Planet/CMakeLists.txt index 8fa857f04..d59a37660 100644 --- a/physics/Planet/CMakeLists.txt +++ b/physics/Planet/CMakeLists.txt @@ -1,6 +1,5 @@ cmake_minimum_required(VERSION 3.17) -#project(sphexa-planet) set(CMAKE_CXX_STANDARD 20) set(CSTONE_DIR ${CMAKE_SOURCE_DIR}/domain/include) diff --git a/physics/Planet/include/CMakeLists.txt b/physics/Planet/include/CMakeLists.txt index d4f37e82b..9959fa96b 100644 --- a/physics/Planet/include/CMakeLists.txt +++ b/physics/Planet/include/CMakeLists.txt @@ -1,5 +1,9 @@ -if(CMAKE_CUDA_COMPILER) +if(CMAKE_HIP_COMPILER) + set_source_files_properties(computeCentralForce_gpu.cu accretion_gpu.cu betaCooling_gpu.cu eos_polytropic_gpu.cu PROPERTIES LANGUAGE HIP) +endif() + +if(CMAKE_CUDA_COMPILER OR CMAKE_HIP_COMPILER) add_library(planet_gpu OBJECT computeCentralForce_gpu.cu accretion_gpu.cu betaCooling_gpu.cu eos_polytropic_gpu.cu) target_include_directories(planet_gpu PRIVATE ${CSTONE_DIR} ${SPH_DIR}) target_compile_definitions(planet_gpu PRIVATE USE_CUDA) diff --git a/physics/Planet/include/accretion.hpp b/physics/Planet/include/accretion.hpp index cacc10871..99d344cec 100644 --- a/physics/Planet/include/accretion.hpp +++ b/physics/Planet/include/accretion.hpp @@ -20,7 +20,7 @@ namespace planet { -//! @brief Flag particles for removal. Overwrites keys. +//! @brief Flag particles for removal. Overwrites keys for the removed particles. template void computeAccretionCondition(size_t first, size_t last, Dataset& d, StarData& star) { diff --git a/physics/Planet/include/betaCooling_gpu.hpp b/physics/Planet/include/betaCooling_gpu.hpp index 28f9da3e2..49b3da95d 100644 --- a/physics/Planet/include/betaCooling_gpu.hpp +++ b/physics/Planet/include/betaCooling_gpu.hpp @@ -12,4 +12,4 @@ void betaCoolingGPU(size_t first, size_t last, Dataset& d, StarData& star); template double duTimestepGPU(size_t first, size_t last, const Dataset& d, const StarData& star); -} // namespace planet \ No newline at end of file +} // namespace planet diff --git a/physics/Planet/include/computeCentralForce_gpu.cu b/physics/Planet/include/computeCentralForce_gpu.cu index 74a79574a..e51a89555 100644 --- a/physics/Planet/include/computeCentralForce_gpu.cu +++ b/physics/Planet/include/computeCentralForce_gpu.cu @@ -132,4 +132,4 @@ void computeCentralForceGPU(size_t first, size_t last, Dataset& d, StarData& sta } template void computeCentralForceGPU(size_t, size_t, sphexa::ParticlesData&, StarData&); -} // namespace planet \ No newline at end of file +} // namespace planet diff --git a/physics/Planet/include/computeCentralForce_gpu.hpp b/physics/Planet/include/computeCentralForce_gpu.hpp index 6167681de..5b16156ac 100644 --- a/physics/Planet/include/computeCentralForce_gpu.hpp +++ b/physics/Planet/include/computeCentralForce_gpu.hpp @@ -8,4 +8,4 @@ namespace planet { template void computeCentralForceGPU(size_t first, size_t last, Dataset& d, StarData& star); -} \ No newline at end of file +} diff --git a/physics/Planet/include/star_data.hpp b/physics/Planet/include/star_data.hpp index 8a241ef07..0f7c62cdb 100644 --- a/physics/Planet/include/star_data.hpp +++ b/physics/Planet/include/star_data.hpp @@ -121,4 +121,4 @@ struct StarData std::array p_removed_local{}; //! @brief du-timestep (local to rank) double t_du{}; -}; \ No newline at end of file +}; diff --git a/physics/Planet/test/CMakeLists.txt b/physics/Planet/test/CMakeLists.txt index 1d0359515..b3c6b4351 100644 --- a/physics/Planet/test/CMakeLists.txt +++ b/physics/Planet/test/CMakeLists.txt @@ -1,15 +1,15 @@ set(UNIT_TESTS planet_test.cpp accretion.cpp) -set(testname planet_tests) -add_executable(${testname} ${UNIT_TESTS}) -target_compile_options(${testname} PRIVATE -Wall -Wextra) -target_compile_definitions(${testname} PUBLIC SPH_EXA_HAVE_H5PART) -target_include_directories(${testname} PRIVATE ${MPI_CXX_INCLUDE_PATH}) -target_include_directories(${testname} PRIVATE ${PLANET_DIR} ${CSTONE_DIR} ${SPH_DIR} ${PROJECT_SOURCE_DIR}/include ${MAIN_APP_DIR}) +set(testname PlanetTests) +set(exename planet_tests) +add_executable(${exename} ${UNIT_TESTS}) +target_compile_options(${exename} PRIVATE -Wall -Wextra) +target_compile_definitions(${exename} PUBLIC SPH_EXA_HAVE_H5PART) +target_include_directories(${exename} PRIVATE ${MPI_CXX_INCLUDE_PATH}) +target_include_directories(${exename} PRIVATE ${PLANET_DIR} ${CSTONE_DIR} ${SPH_DIR} ${PROJECT_SOURCE_DIR}/include ${MAIN_APP_DIR}) -#target_link_libraries(${testname} PRIVATE grackle) -#target_link_libraries(${testname} PRIVATE cooler) -target_link_libraries(${testname} PRIVATE ${MPI_CXX_LIBRARIES} GTest::gtest_main) -#target_compile_definitions(${testname} PRIVATE PROJECT_SOURCE_DIR="${CMAKE_SOURCE_DIR}") -add_test(NAME ${testname} COMMAND ${testname}) +target_link_libraries(${exename} PRIVATE ${MPI_CXX_LIBRARIES} GTest::gtest_main) -install(TARGETS ${testname} RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR}/physics) +set(cmd ${exename}) +list(PREPEND cmd "${MPIEXEC_EXECUTABLE}" " " "${MPIEXEC_NUMPROC_FLAG}" " 2 ") +add_test(NAME ${testname} COMMAND ${cmd}) +install(TARGETS ${exename} RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR}/physics) diff --git a/physics/Planet/test/accretion.cpp b/physics/Planet/test/accretion.cpp index 9645b6739..f097aa6f7 100644 --- a/physics/Planet/test/accretion.cpp +++ b/physics/Planet/test/accretion.cpp @@ -35,10 +35,11 @@ struct AccretionTest : public ::testing::Test using ConservedFields = util::FieldList<"vx", "vy", "vz", "m">; using DependentFields = util::FieldList<"keys", "u", "rho">; - inline constexpr static size_t n_elements = 20; - inline constexpr static size_t n_elements3 = n_elements * n_elements * n_elements; - inline constexpr static double inner_limit = 0.2; - inline constexpr static double dt = 1.; + inline constexpr static size_t n_elements = 20; + inline constexpr static size_t n_elements3 = n_elements * n_elements * n_elements; + inline constexpr static double inner_limit = 0.2; + inline constexpr static double initial_star_mass = 1.; + inline constexpr static double dt = 1.; sphexa::ParticlesData data; std::unique_ptr> domain_ptr = nullptr; @@ -66,6 +67,8 @@ struct AccretionTest : public ::testing::Test star.inner_size = inner_limit; star.removal_limit_h = INFINITY; + star.fixed_star = 0; + star.m = initial_star_mass; } void initData() @@ -159,7 +162,7 @@ struct AccretionTest : public ::testing::Test void testExchangeAndAccreteOnStar() { // Check if mass of star = mass of accreted particles - EXPECT_NEAR(star.m, 1. + mass_inside, 1e-9); + EXPECT_NEAR(star.m, initial_star_mass + mass_inside, 1e-9); // Check momentum of star EXPECT_NEAR(star.position_m1[0] / dt * star.m, momentum_inside_x, 1e-4); EXPECT_NEAR(star.position_m1[1] / dt * star.m, momentum_inside_y, 1e-4); @@ -169,7 +172,7 @@ struct AccretionTest : public ::testing::Test TEST_F(AccretionTest, testAccretion) { - // if (numRanks != 2) throw std::runtime_error("Must be excuted with two ranks"); + if (numRanks != 2) throw std::runtime_error("Must be excuted with two ranks"); initData(); @@ -191,48 +194,3 @@ TEST_F(AccretionTest, testAccretion) EXPECT_TRUE(n_inside == 0); EXPECT_TRUE(n_inside_with_halos == 0); } - -TEST_F(AccretionTest, testAccretion2) -{ - initData(); - - sync(); - - /*const size_t first = domain_ptr->startIndex(); - const size_t last = domain_ptr->endIndex(); - - - const double star_size2 = star.inner_size * star.inner_size; - - double accr_mass{}; - double accr_mom[3]{}; - size_t n_accreted{}; - size_t n_removed{}; - - for (size_t i = first; i < last; i++) - { - const double dx = data.x[i] - star.position[0]; - const double dy = data.y[i] - star.position[1]; - const double dz = data.z[i] - star.position[2]; - const double dist2 = dx * dx + dy * dy + dz * dz; - if (dist2 < 0.02) { - printf("i: %zu\n", i); - printf("dx, dy, dz: %lf\t%lf\t%lf\n", dx, dy, dz); - data.keys[i] = cstone::removeKey::value; } - }*/ - - // data.keys[1831] = cstone::removeKey::value; - // data.keys[3609] = cstone::removeKey::value; - // data.keys[7331] = cstone::removeKey::value; - // - // data.keys[2168] = cstone::removeKey::value; - // data.keys[4390] = cstone::removeKey::value; - // data.keys[5826] = cstone::removeKey::value; - // data.keys[5830] = cstone::removeKey::value; - // data.keys[5831] = cstone::removeKey::value; - // data.keys[5832] = cstone::removeKey::value; - // data.keys[6168] = cstone::removeKey::value; - - sync(); - printf("count: %zu\n", data.keys.size()); -} \ No newline at end of file diff --git a/physics/Planet/test/planet_test.cpp b/physics/Planet/test/planet_test.cpp index 5a062e162..33d2d37f7 100644 --- a/physics/Planet/test/planet_test.cpp +++ b/physics/Planet/test/planet_test.cpp @@ -32,6 +32,8 @@ TEST_F(PlanetTest, testStarPosition) star.position = {0., 1., 0.}; star.position_m1 = {0., 0., 0.}; star.force_local = {1., 0., 0.}; + star.m = 1.0; + star.fixed_star = 0; planet::computeAndExchangeStarPosition(star, 1., 1., rank); if (rank == 0) diff --git a/sph/include/sph/eos.hpp b/sph/include/sph/eos.hpp index e4140aac1..72db6daae 100644 --- a/sph/include/sph/eos.hpp +++ b/sph/include/sph/eos.hpp @@ -42,13 +42,7 @@ HOST_DEVICE_FUN auto idealGasEOS_u(T1 u, T2 rho, T3 gamma) template HOST_DEVICE_FUN auto idealGasEOSTemp(T1 temp, T2 rho, T3 mui, T1 gamma) { - using Tc = std::common_type_t; return idealGasEOS_u(idealGasCv(mui, gamma) * temp, rho, gamma); - /*Tc tmp = idealGasCv(mui, gamma) * temp * (gamma - Tc(1)); - Tc p = rho * tmp; - Tc c = std::sqrt(tmp); - - return util::tuple{p, c};*/ } /*! @brief Polytropic EOS for a 1.4 M_sun and 12.8 km neutron star