From 9325bbc747913c248b4718c77ef8075c316f64bc Mon Sep 17 00:00:00 2001 From: ParkSuMin Date: Thu, 15 May 2025 15:10:34 +0300 Subject: [PATCH] Here we go again MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Или я опять всё напутал в начальных условиях --- include/Object.hpp | 4 ++-- src/Mesh.cpp | 21 ++++++++++++--------- src/Object.cpp | 4 ++-- src/main.cpp | 29 +++++++++++++++-------------- 4 files changed, 31 insertions(+), 27 deletions(-) diff --git a/include/Object.hpp b/include/Object.hpp index 67d30fe..164bb0e 100644 --- a/include/Object.hpp +++ b/include/Object.hpp @@ -19,8 +19,8 @@ public: double Height() const; bool Add_Form(const std::string&, std::map&, bool, int); - std::pair Filly(double, double); - std::pair Fillx(double, double); + std::pair FillX(double, double); + std::pair FillY(double, double); Form* Who(double, double); }; diff --git a/src/Mesh.cpp b/src/Mesh.cpp index 79bbf4a..ef400a8 100644 --- a/src/Mesh.cpp +++ b/src/Mesh.cpp @@ -3,7 +3,6 @@ #include Mesh::Mesh(Object& _obj, double _step) : obj(_obj), step(_step) { - for (double y = 0.0; y <= _obj.Height(); y += _step) { mesh.push_back(std::vector()); for (double x = 0.0; x <= _obj.Width(); x += _step) { @@ -16,7 +15,6 @@ Mesh::Mesh(Object& _obj, double _step) : obj(_obj), step(_step) { } void Mesh::LinkX() { - for (int i = 0; i < mesh.size(); i++) { mesh[i][0]->LinkX(nullptr, mesh[i][1]); for (int j = 1; j < mesh[i].size() - 1; j++) @@ -27,7 +25,6 @@ void Mesh::LinkX() { hlines.push_back(mesh[i][0]); } - void Mesh::LinkY() { for (int j = 0; j < mesh[0].size(); j++) { mesh[0][j]->LinkY(nullptr, mesh[1][j]); @@ -39,7 +36,6 @@ void Mesh::LinkY() { vlines.push_back(mesh[0][i]); } - void Mesh::Adapt() { for (int i = 0; i < mesh.size(); i++) { int s = mesh[i].size(); @@ -55,25 +51,31 @@ void Mesh::Adapt() { void Mesh::Delnode(int i, int j) { Node* node = mesh[i][j]; - double bndX1 = obj.Fillx(node->X(), node->Y()).first; - double bndX2 = obj.Fillx(node->X(), node->Y()).second; - double bndY1 = obj.Filly(node->X(), node->Y()).first; - double bndY2 = obj.Filly(node->X(), node->Y()).second; + /* X Y */ + double bndX1 = obj.FillX(node->X(), node->Y()).first; + double bndX2 = obj.FillX(node->X(), node->Y()).second; + double bndY1 = obj.FillY(node->X(), node->Y()).first; + double bndY2 = obj.FillY(node->X(), node->Y()).second; + /* */ int btype = obj.Who(node->X(), node->Y())->GetB(); if (node->l()) { + // if (node->l()->X() != bndX2 && node->l()->X() != bndX1) { if (bndX1 != bndX2) { + /* bndX2 bndX1 btype */ Node* left = new Node(bndX2, node->Y(), btype); Node* right = new Node(bndX1, node->Y(), btype); node->l()->r() = left; if (node->r()) node->r()->l() = right; + /* X */ left->LinkX(node->l(), right); right->LinkX(left, node->r()); node->l() = right; mesh[i].push_back(left); mesh[i].push_back(right); } + /* X , */ else { Node* left = new Node(bndX2, node->Y(), btype); node->l()->r() = left; @@ -84,9 +86,10 @@ void Mesh::Delnode(int i, int j) { mesh[i].push_back(left); } } + /* , */ else node->l()->r() = node->r(); - } + } /* */ if (node->r()) { node->r()->l() = node->l(); } diff --git a/src/Object.cpp b/src/Object.cpp index a64f954..1d870b6 100644 --- a/src/Object.cpp +++ b/src/Object.cpp @@ -46,7 +46,7 @@ bool Object::Add_Form(const std::string& name, std::map& ar -std::pair Object::Fillx(double x, double y) { +std::pair Object::FillX(double x, double y) { for (auto form : forms) { if (form->Inhere(x, y)) { return form->missX(y); @@ -55,7 +55,7 @@ std::pair Object::Fillx(double x, double y) { return { 0, 0 }; } -std::pair Object::Filly(double x, double y) { +std::pair Object::FillY(double x, double y) { for (auto form : forms) { if (form->Inhere(x, y)) { return form->missY(x); diff --git a/src/main.cpp b/src/main.cpp index 4bf4d80..93f5c7f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -9,15 +9,15 @@ #define ARC_RADIUS 150. -//#define SQUARE_X 355. -//#define SQUARE_Y 155. -//#define SQUARE_SIDE 100. +#define SQUARE_X 355. +#define SQUARE_Y 155. +#define SQUARE_SIDE 100. -#define HOLE_X 155. -#define HOLE_Y 255. -#define HOLE_RADIUS 50. +//#define HOLE_X 155. +//#define HOLE_Y 255. +//#define HOLE_RADIUS 50. -#define CONDUCTIVITY 90. // Теплопроводность материала +#define CONDUCTIVITY 50. // Теплопроводность материала void visualize(std::ofstream& file, std::string filename, int time_end) { file << "set cbrange [" << 0 << ":" << 100 << "]" << std::endl; @@ -41,7 +41,7 @@ int main() int right = 1; int bottom = 3; int arc_bound = 3; - int hole_bound = 2; + int hole_bound = 1; double step_5 = 5; double step_10 = 10; @@ -54,12 +54,16 @@ int main() std::map arc{ {"a", WIDTH - ARC_RADIUS}, {"b", HEIGHT - ARC_RADIUS}, {"h_x", 1 / ARC_RADIUS}, {"h_y", 1 / ARC_RADIUS} }; - std::map circle{ - {"a", HOLE_X}, {"b", HOLE_Y}, {"h_x", 1 / HOLE_RADIUS}, {"h_y", 1 / HOLE_RADIUS} + //std::map circle{ + // {"a", HOLE_X}, {"b", HOLE_Y}, {"h_x", 1 / HOLE_RADIUS}, {"h_y", 1 / HOLE_RADIUS} + //}; + + std::map square{ + {"a", SQUARE_X}, {"b", SQUARE_Y}, {"h_x", 1 / SQUARE_SIDE}, {"h_y", 1 / SQUARE_SIDE} }; Object obj; - obj.Add_Form("Circle", circle, true, hole_bound); + obj.Add_Form("Rectangle", square, true, hole_bound); obj.Add_Form("Arc", arc, true, arc_bound); obj.Add_Form("Rectangle", plate, false, 1); @@ -101,6 +105,3 @@ int main() return 0; } -//std::map square{ - // {"a", SQUARE_X}, {"b", SQUARE_Y}, {"h_x", 1 / SQUARE_SIDE}, {"h_y", 1 / SQUARE_SIDE} - //}; \ No newline at end of file