Change encoding

This commit is contained in:
2025-05-14 14:21:16 +03:00
parent 832a2dbeb2
commit 8100f0d4e1
2 changed files with 37 additions and 31 deletions

View File

@@ -1,13 +1,15 @@
#include "Solver.hpp"
void Solver::SolveExplicit(System& program, double tstop) const {
std::ofstream ExplicitOut(_name_1);
//ExplicitOut << "t x y T" << std::endl;
for (double t = 0.0; t < tstop; t += delta) {
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> X */
/* Обработка узлов по оси X */
for (int i = 1; i < program.LineX().size() - 1; i++) {
std::vector<Node*> temperature;
Node* cur = program.LineX()[i];
while (cur) {
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
/* Проверка на существование узла */
if (cur->r() && cur->r()->X() - cur->X() > program.step()) {
temperature.push_back(cur);
SolveLine(program, temperature);
@@ -21,12 +23,12 @@ void Solver::SolveExplicit(System& program, double tstop) const {
}
SolveLine(program, temperature);
}
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> Y */
/* Обработка узлов по оси Y */
for (int i = 1; i < program.LineY().size() - 1; i++) {
std::vector<Node*> temperature;
Node* cur = program.LineY()[i];
while (cur) {
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
/* Проверка на существование узла */
if (cur->u() && cur->u()->Y() - cur->Y() > program.step()) {
temperature.push_back(cur);
SolveLine(program, temperature);
@@ -42,7 +44,7 @@ void Solver::SolveExplicit(System& program, double tstop) const {
}
for (auto line : program.Nodes()) {
for (auto node : line)
ExplicitOut << node->X() << ' ' << node->Y() << ' ' << node->T() << '\n';
ExplicitOut << t+1 << ' ' << node->X() << ' ' << node->Y() << ' ' << node->T() << '\n';
}
ExplicitOut << "\n\n";
}
@@ -50,15 +52,17 @@ void Solver::SolveExplicit(System& program, double tstop) const {
void Solver::SolveImplicit(System& sys, double tstop) const {
std::ofstream EmplicitOut(_name_2);
//EmplicitOut << "t x y T" << std::endl;
for (double t = 0.; t < tstop; t += delta) {
for (auto line : sys.Nodes())
for (auto node : line) {
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
/* Проверка на внутренний узел */
if (!node->IsBound()) {
/* Tx = T_right - 2T_current + T_left / delta_x ^ 2 */
/* Ty = T_upper - 2T_current + T_down / delta_y ^ 2*/
/* T_new = delta_t * a * (delta_x + delta_y) + T_current
(<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> a = 1) */
(для удобства коээфициент a = 1) */
double tx = (node->r()->T() - 2 * node->T() + node->l()->T()) / pow(sys.step(), 2);
double ty = (node->u()->T() - 2 * node->T() + node->d()->T()) / pow(sys.step(), 2);
@@ -68,7 +72,7 @@ void Solver::SolveImplicit(System& sys, double tstop) const {
}
for (auto line : sys.Nodes()) {
for (auto node : line)
EmplicitOut << node->X() << ' ' << node->Y() << ' ' << node->T() << '\n';
EmplicitOut << t + 1 << ' ' << node->X() << ' ' << node->Y() << ' ' << node->T() << '\n';
}
EmplicitOut << "\n\n";
}
@@ -78,7 +82,7 @@ void Solver::SolveLine(System& sys, std::vector<Node*>& n) const {
int size = n.size() - 2;
double mu1 = n.front()->Dist(n[1]) / sys.step();
double mu2 = n.back()->Dist(n[n.size() - 2]) / sys.step();
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> */
/* Защита от нуля */
if (mu2 == 0.)
mu2 = .1;
double val2 = -(2 * sys.a1()) / (pow(sys.step(), 2)) - 1 / delta;