From 252c9ac39d55814b5a948c956c6d929be7ae6b3c Mon Sep 17 00:00:00 2001 From: Tobit Flatscher <53856473+2b-t@users.noreply.github.com> Date: Sat, 15 Jun 2024 23:33:48 +0100 Subject: [PATCH] docs: Add usage ideas --- src/simple_main.cpp | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/simple_main.cpp b/src/simple_main.cpp index fc4b4a3..9ffb532 100755 --- a/src/simple_main.cpp +++ b/src/simple_main.cpp @@ -36,6 +36,7 @@ int main(int argc, char* argv[]) { // Solver settings: Floating type, lattice and collision operator constexpr auto simulation_time {3.0_min}; + constexpr auto save_time_step {simulation_time/100.0}; using T = double; using Lattice = lbt::lattice::D2Q9; using CollisionOperator = lbt::collision::Bgk; @@ -46,35 +47,47 @@ int main(int argc, char* argv[]) { constexpr std::int32_t NY {100}; constexpr std::int32_t NZ {100}; auto const output_path {std::filesystem::current_path()}; - constexpr lbt::Converter unit_converter {length, static_cast(NX), velocity, lbm_velocity, density, lbm_density}; - // Multi-threading + constexpr lbt::Converter unit_converter { + length, static_cast(NX), + velocity, lbm_velocity, + density, lbm_density + }; + auto& omp_manager = lbt::OpenMpManager::getInstance(); omp_manager.setThreadsNum(lbt::OpenMpManager::getThreadsMax()); // Geometry and boundary conditions - // TODO(tobit): Add boundary conditions + // std::vector boundary_conditions {}; + // Append boundary conditions, allow specifying range for boundary condition easily // Continuum, population and collision operator auto continuum {std::make_shared>(NX, NY, NZ, output_path)}; auto population {std::make_shared>(NX, NY, NZ)}; // auto CollisionOperator collision_operator {continuum, population, reynolds_number, lbm_velocity, lbm_length}; - // collision_operator.initialize({u, v, w}, lbm_density); + // Writer class for writing results to file + + // collision_operator.initializeUniform({u, v, w}, lbm_density); + // collision_operator.initializeFromContinuum(continuum); // Convert time-steps to simulation time constexpr auto NT {static_cast(unit_converter.toLbm(simulation_time))}; + constexpr auto NT_SAVE {static_cast(unit_converter.toLbm(save_time_step))}; for (std::int64_t i = 0; i < NT; i += 2) { // Loop performs two combined iterations at once // TODO(tobit): Currently saving every 100th step - bool const is_save {i % (NT/100)}; + bool const is_save {(i % NT_SAVE) == 0}; // collision_operator.collideAndStream(is_save); + // Enforce boundary condition on continuum + // collision_operator.collideAndStream(is_save); + // Enforce boundary condition on continuum if (is_save) { - // Enforce boundary condition on continuum auto const simulation_time {unit_converter.toPhysical(i)}; + // Convert units from LBM units continuum->save(static_cast(simulation_time.get())); } }