From 657ff31702a6fef31f5b53693c101c42e022a69b Mon Sep 17 00:00:00 2001 From: Alfredo Correa Date: Wed, 9 Oct 2024 18:04:59 -0700 Subject: [PATCH] finish cai demo --- examples/cai_1d_heat.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/cai_1d_heat.cpp b/examples/cai_1d_heat.cpp index d207050d..e70824c9 100644 --- a/examples/cai_1d_heat.cpp +++ b/examples/cai_1d_heat.cpp @@ -1,4 +1,6 @@ -///usr/bin/clang++ -std=c++23 $0 -I../include && ./a.out | gnuplot -persist; exit +#if COMPILE_RUN_INSTRUCTIONS +${CXX:-c++} -std=c++2b $0 -I../include && ./a.out | gnuplot; exit +#endif #include #include // for std::exp @@ -12,7 +14,7 @@ void plot(auto const& x, auto const& f, std::string const& title = "") { assert(x.size() == f.size()); std::cout << "set title '" << title << "'\n" << "plot '-' with linespoints\n"; - for(auto i = 0; i < x.size(); ++i) { + for(auto i : x.extension()) { std::cout << x[i] << " " << f[i] << "\n"; } std::cout << 'e' << std::endl @@ -50,8 +52,6 @@ auto main() -> int { auto f_my_right = +append(f.dropped(1), NAN); auto d2f = +stv::zip_transform([dx2 = dx * dx](auto r, auto m, auto l) { return (r - 2 * m + l) / dx2; }, f_my_right, f, f_my_left); - plot(x, d2f); - // dt = 0.01; D = 1; // for k=1:100, // f_my_left = [NaN, f(1:end-1)]; @@ -65,8 +65,8 @@ auto main() -> int { auto dt = 0.01; auto D = 1.0; for(auto k = 0; k != 100; ++k) { - f_my_left({1, f.size()}) = f.taked(f.size() - 1); - f_my_right({0, f.size() - 1}) = f.dropped(1); + f_my_left({1, f.size()}) = f({0, f.size() - 1}); + f_my_right({0, f.size() - 1}) = f({1, f.size()}); d2f = stv::zip_transform([dx2 = dx * dx](auto r, auto m, auto l) { return (r - 2 * m + l) / dx2; }, f_my_right, f, f_my_left); f({1, f.size() - 1}) = stv::zip_transform([dt, D, dx2 = dx * dx](auto eff, auto d2) { return eff + D * dt * d2; }, f({1, f.size() - 1}), d2f({1, f.size() - 1}));