История изменений
Исправление grem, (текущая версия) :
Спасибо. Запомню.
С вектором то понятно (как вариант std::array<double, Mi*Mj> T;
можно запихнуть), а вот const auto pT = [&T](auto i, auto j) -> auto & { return T[Mj*i+j]; };
уже интереснее.
А инициализация вектора нулями в таком виде это тоже фича C++14?
Просто хотелось увидеть как выглядит какая-нибудь реализация на Rust.
RazrFalcon
А есть пример вывода? Или он сильно большой?
Сойтись должно за 6650 итераций, вывод примерно такой:
# Solving numerical Laplace equation. Please wait ...
iterat = 200 oxt = 0.223673
iterat = 400 oxt = 0.135283
iterat = 600 oxt = 0.0917682
iterat = 800 oxt = 0.0627636
iterat = 1000 oxt = 0.0429629
...
iterat = 6000 oxt = 3.41943e-06
iterat = 6200 oxt = 2.34212e-06
iterat = 6400 oxt = 1.60422e-06
iterat = 6600 oxt = 1.09879e-06
it_fin = 6650
Если раскомментировать вывод координат и температур, то вывод заметно больше (он просто для проверки решения и построения), а для тестирования скорости закомментирован.
Исходная версия grem, :
Спасибо. Запомню.
С вектором то понятно (как вариант std::array<double, Mi*Mj> T;
можно запихнуть), а вот const auto pT = [&T](auto i, auto j) -> auto & { return T[Mj*i+j]; };
уже интереснее.
Просто хотелось увидеть как выглядит какая-нибудь реализация на Rust.
RazrFalcon
А есть пример вывода? Или он сильно большой?
Сойтись должно за 6650 итераций, вывод примерно такой:
# Solving numerical Laplace equation. Please wait ...
iterat = 200 oxt = 0.223673
iterat = 400 oxt = 0.135283
iterat = 600 oxt = 0.0917682
iterat = 800 oxt = 0.0627636
iterat = 1000 oxt = 0.0429629
...
iterat = 6000 oxt = 3.41943e-06
iterat = 6200 oxt = 2.34212e-06
iterat = 6400 oxt = 1.60422e-06
iterat = 6600 oxt = 1.09879e-06
it_fin = 6650
Если раскомментировать вывод координат и температур, то вывод заметно больше (он просто для проверки решения и построения), а для тестирования скорости закомментирован.