Изменение ГУ
This commit is contained in:
@@ -20,7 +20,7 @@ public:
|
|||||||
double X() const;
|
double X() const;
|
||||||
double Y() const;
|
double Y() const;
|
||||||
|
|
||||||
//double Dist(const Node*) const;
|
double Dist(const Node*) const;
|
||||||
void LinkX(Node*, Node*);
|
void LinkX(Node*, Node*);
|
||||||
void LinkY(Node*, Node*);
|
void LinkY(Node*, Node*);
|
||||||
Node*& l();
|
Node*& l();
|
||||||
@@ -30,8 +30,6 @@ public:
|
|||||||
void SetT(double);
|
void SetT(double);
|
||||||
bool IsBound();
|
bool IsBound();
|
||||||
void SetB(int);
|
void SetB(int);
|
||||||
|
|
||||||
double operator-(const Node*) const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
59
src/Node.cpp
59
src/Node.cpp
@@ -7,6 +7,31 @@ double Node::T() const {
|
|||||||
return 100.;
|
return 100.;
|
||||||
|
|
||||||
if (_btype == 2) {
|
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 (!_left)
|
||||||
if (_right)
|
if (_right)
|
||||||
return _right->T();
|
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;
|
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));
|
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::l() { return _left; }
|
||||||
Node*& Node::r() { return _right; }
|
Node*& Node::r() { return _right; }
|
||||||
Node*& Node::u() { return _above; }
|
Node*& Node::u() { return _above; }
|
||||||
@@ -87,5 +83,4 @@ void Node::SetT(double t) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Node::IsBound() { return _btype; }
|
bool Node::IsBound() { return _btype; }
|
||||||
void Node::SetB(int type) { _btype = type; }
|
void Node::SetB(int type) { _btype = type; }
|
||||||
|
|
||||||
@@ -80,8 +80,8 @@ void Solver::SolveImplicit(System& sys, double tstop) const {
|
|||||||
|
|
||||||
void Solver::SolveLine(System& sys, std::vector<Node*>& n) const {
|
void Solver::SolveLine(System& sys, std::vector<Node*>& n) const {
|
||||||
int size = n.size() - 2;
|
int size = n.size() - 2;
|
||||||
double mu1 = (n.front() - n[1]) / sys.step();
|
double mu1 = n.front()->Dist(n[1]) / sys.step();
|
||||||
double mu2 = (n.back() - n[n.size() - 2]) / sys.step();
|
double mu2 = n.back()->Dist(n[n.size() - 2]) / sys.step();
|
||||||
/* Защита от нуля */
|
/* Защита от нуля */
|
||||||
if (mu2 == 0.)
|
if (mu2 == 0.)
|
||||||
mu2 = .1;
|
mu2 = .1;
|
||||||
|
|||||||
12
src/main.cpp
12
src/main.cpp
@@ -36,12 +36,12 @@ int main()
|
|||||||
3 - конвекция
|
3 - конвекция
|
||||||
4 - отсутствует
|
4 - отсутствует
|
||||||
*/
|
*/
|
||||||
int left = 1;
|
int left = 3;
|
||||||
int top = 3;
|
int top = 1;
|
||||||
int right = 1;
|
int right = 3;
|
||||||
int bottom = 3;
|
int bottom = 1;
|
||||||
int arc_bound = 4;
|
int arc_bound = 3;
|
||||||
int hole_bound = 2;
|
int hole_bound = 1;
|
||||||
|
|
||||||
double step_5 = 5;
|
double step_5 = 5;
|
||||||
double step_10 = 10;
|
double step_10 = 10;
|
||||||
|
|||||||
Reference in New Issue
Block a user