LINUX.ORG.RU

История изменений

Исправление 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


Если раскомментировать вывод координат и температур, то вывод заметно больше (он просто для проверки решения и построения), а для тестирования скорости закомментирован.