From 80320e36dd4e13df60a9c87f4bb2d030118ef693 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Max=20L=C3=BCbke?= Date: Wed, 8 May 2024 12:58:11 +0200 Subject: [PATCH] feat: Add 2D ADI constant Sr example --- examples/2D_ADI_constant_Sr.cpp | 57 +++++++++++++++++++++++++++++++++ examples/CMakeLists.txt | 3 ++ 2 files changed, 60 insertions(+) create mode 100644 examples/2D_ADI_constant_Sr.cpp diff --git a/examples/2D_ADI_constant_Sr.cpp b/examples/2D_ADI_constant_Sr.cpp new file mode 100644 index 0000000..49bf142 --- /dev/null +++ b/examples/2D_ADI_constant_Sr.cpp @@ -0,0 +1,57 @@ +#include "tug/Boundary.hpp" +#include "tug/Grid.hpp" +#include "tug/Simulation.hpp" +#include +#include +#include +int main() { + + constexpr std::uint32_t row = 100; + constexpr std::uint32_t col = 200; + + tug::Grid64 grid(row, col); + + constexpr double sr_value = 4.5E-4; + + Eigen::MatrixXd concentrations = + Eigen::MatrixXd::Constant(row, col, sr_value); + grid.setConcentrations(concentrations); + + grid.setDomain(0.01, 0.02); + + constexpr double alpha_value = 1.1E-12; + + Eigen::MatrixXd alphax = Eigen::MatrixXd::Constant(row, col, alpha_value); + Eigen::MatrixXd alphay = Eigen::MatrixXd::Constant(row, col, alpha_value); + + grid.setAlpha(alphax, alphay); + + tug::Boundary bc = tug::Boundary(grid); + + constexpr double sr_bc_value = 0.045; + + // north const + for (std::uint32_t i = 0; i < static_cast(col / 2); i++) { + bc.setBoundaryElementConstant(tug::BC_SIDE_TOP, i, sr_bc_value); + } + + // south const + for (std::uint32_t i = 1; i <= 19; i++) { + bc.setBoundaryElementConstant(tug::BC_SIDE_BOTTOM, i, sr_bc_value); + } + + // west const + for (std::uint32_t i = 50; i <= 99; i++) { + bc.setBoundaryElementConstant(tug::BC_SIDE_RIGHT, i, sr_bc_value); + } + + tug::Simulation sim = tug::Simulation(grid, bc); + sim.setTimestep(86400); + sim.setIterations(20); + + sim.setOutputCSV(tug::CSV_OUTPUT_ON); + + sim.run(); + + return 0; +} diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 0a3173d..281a6ab 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -18,3 +18,6 @@ add_executable(FTCS_2D_proto_example_mdl FTCS_2D_proto_example_mdl.cpp) add_executable(FTCS_2D_proto_closed_mdl FTCS_2D_proto_closed_mdl.cpp) target_link_libraries(FTCS_2D_proto_closed_mdl tug) target_link_libraries(FTCS_2D_proto_example_mdl tug) + +add_executable(2D_ADI_constant 2D_ADI_constant_Sr.cpp) +target_link_libraries(2D_ADI_constant tug) \ No newline at end of file