From 5d1f889a1b94f43f0dcca236f9cd18fe4bebdff4 Mon Sep 17 00:00:00 2001 From: ParkSuMin Date: Wed, 14 May 2025 20:25:34 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=93=D0=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/Node.hpp | 4 +--- src/Node.cpp | 59 ++++++++++++++++++++++-------------------------- src/Solver.cpp | 4 ++-- src/main.cpp | 12 +++++----- 4 files changed, 36 insertions(+), 43 deletions(-) diff --git a/include/Node.hpp b/include/Node.hpp index 4e3c3a1..a868339 100644 --- a/include/Node.hpp +++ b/include/Node.hpp @@ -20,7 +20,7 @@ public: double X() const; double Y() const; - //double Dist(const Node*) const; + double Dist(const Node*) const; void LinkX(Node*, Node*); void LinkY(Node*, Node*); Node*& l(); @@ -30,8 +30,6 @@ public: void SetT(double); bool IsBound(); void SetB(int); - - double operator-(const Node*) const; }; #endif diff --git a/src/Node.cpp b/src/Node.cpp index b6e7497..29b0fbd 100644 --- a/src/Node.cpp +++ b/src/Node.cpp @@ -7,6 +7,31 @@ double Node::T() const { return 100.; if (_btype == 2) { + if (!_left) + if (_right) + return _right->T() / (1 + Dist(_right)); + if (!_right) + if (_left) + return _left->T() / (1 + Dist(_left)); + if (!_above) + if (_below) + return _below->T() / (1 + Dist(_below)); + if (!_below) + if (_above) + return _above->T() / (1 + Dist(_above)); + if (_right && _left) { + if (_right->IsBound()) + return _left->T() / (1 + Dist(_left)); + return _right->T() / (1 + Dist(_right)); + } + if (_above && _below) { + if (_above->IsBound()) + return _below->T() / (1 + Dist(_below)); + return _above->T() / (1 + Dist(_above)); + } + } + + if (_btype == 3) { if (!_left) if (_right) return _right->T(); @@ -31,42 +56,13 @@ double Node::T() const { } } - if (_btype == 3) { - if (!_left) - if (_right) - return _right->T() / (1 + this - _right); - if (!_right) - if (_left) - return _left->T() / (1 + this - _left); - if (!_above) - if (_below) - return _below->T() / (1 + this - _below); - if (!_below) - if (_above) - return _above->T() / (1 + this - _above); - if (_right && _left) { - if (_right->IsBound()) - return _left->T() / (1 + this - _left); - return _right->T() / (1 + this - _right); - } - if (_above && _below) { - if (_above->IsBound()) - return _below->T() / (1 + this - _below); - return _above->T() / (1 + this - _above); - } - } - return _t; } -double Node::operator-(const Node* to) const { +double Node::Dist(const Node* to) const { return std::sqrt(pow(X() - to->X(), 2) + pow(Y() - to->Y(), 2)); } -//double Node::Dist(const Node* to) const { -// return std::sqrt(pow(X() - to->X(), 2) + pow(Y() - to->Y(), 2)); -//} - Node*& Node::l() { return _left; } Node*& Node::r() { return _right; } Node*& Node::u() { return _above; } @@ -87,5 +83,4 @@ void Node::SetT(double t) { } bool Node::IsBound() { return _btype; } -void Node::SetB(int type) { _btype = type; } - +void Node::SetB(int type) { _btype = type; } \ No newline at end of file diff --git a/src/Solver.cpp b/src/Solver.cpp index e6f42ee..2f3284a 100644 --- a/src/Solver.cpp +++ b/src/Solver.cpp @@ -80,8 +80,8 @@ void Solver::SolveImplicit(System& sys, double tstop) const { void Solver::SolveLine(System& sys, std::vector& n) const { int size = n.size() - 2; - double mu1 = (n.front() - n[1]) / sys.step(); - double mu2 = (n.back() - n[n.size() - 2]) / sys.step(); + double mu1 = n.front()->Dist(n[1]) / sys.step(); + double mu2 = n.back()->Dist(n[n.size() - 2]) / sys.step(); /* Защита от нуля */ if (mu2 == 0.) mu2 = .1; diff --git a/src/main.cpp b/src/main.cpp index 4812961..eab61bf 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -36,12 +36,12 @@ int main() 3 - конвекция 4 - отсутствует */ - int left = 1; - int top = 3; - int right = 1; - int bottom = 3; - int arc_bound = 4; - int hole_bound = 2; + int left = 3; + int top = 1; + int right = 3; + int bottom = 1; + int arc_bound = 3; + int hole_bound = 1; double step_5 = 5; double step_10 = 10;