diff --git a/AneuMeshLoader.cpp b/AneuMeshLoader.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3b46ddf4c675ef77a2c8ecfc733da04dc24dbcc7 --- /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; +} +