From 2428257934ce5271a8626f7d674d72ece6f7c193 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B8=D0=BD=D0=B0=20=D0=9E=D1=80=D0=B5=D1=85?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0?= Date: Sat, 21 Nov 2020 18:38:46 +0000 Subject: [PATCH] Add new file --- AneuMeshLoader.cpp | 69 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 AneuMeshLoader.cpp diff --git a/AneuMeshLoader.cpp b/AneuMeshLoader.cpp new file mode 100644 index 0000000..3b46ddf --- /dev/null +++ b/AneuMeshLoader.cpp @@ -0,0 +1,69 @@ +#include "AneuMeshLoader.h" +#include "SupportTypes.h" +#include +#include +#include +#include +#include +#include +#include +using namespace std; + +void AneuMeshLoader::LoadMesh(const std::string& filename) { + std::ifstream fin(filename); + if (!fin) { + throw NoFileFoundException(filename); + } else std::cout << "File \"" << filename << "\" was opened successfully." << std::endl; + + int amount, dimension; + + fin >> amount >> dimension; + nodes.reserve(amount); + for (int i = 1; i <= amount; ++i) { + Node temp_node; + temp_node.id = i; + fin >> temp_node.cords[0] >> temp_node.cords[1] >> temp_node.cords[2]; + + temp_node.isApex = true; + nodes.push_back(temp_node); + } + + fin >> amount >> dimension; + elements.reserve(amount); + for (int i = 1; i <= amount; ++i) { + Element temp_element; + temp_element.id = i; + fin >> temp_element.id_material; + temp_element.nodes_id.reserve(dimension); + int temp_id; + for (int j = 0; j < dimension; ++j) { + fin >> temp_id; + temp_element.nodes_id.push_back(temp_id); + } + elements.push_back(std::move(temp_element)); + } + + fin >> amount >> dimension; + boundary_elements.reserve(amount); + for (int i = 1; i <= amount; ++i) { + BoundaryFiniteElement temp; + temp.id = i; + fin >> temp.border_id; + temp_surface.nodes_id.reserve(dimension); + int temp_id; + for (int j = 0; j < dimension; ++j) { + fin >> temp_id; + temp_surface.nodes_id.push_back(temp_id); + } + std::vector temp_elements = Get_Elements_by_ID(temp.nodes_id[0], + temp.nodes_id[1], + temp.nodes_id[2]); + temp.id = temp_elements[0].id; + temp.id_material = temp[0].id_material; + boundary_elements.push_back(std::move(temp)); + } + + fin.close(); + std::cout << "All data was loaded, closing the file..." << std::endl; +} + -- GitLab