Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
build/
.vscode/
src/Delauney
src/Delauney

*.vtu
Binary file added doc/2d.pdf
Binary file not shown.
6 changes: 1 addition & 5 deletions src/Examples/SimpleDelaunay2D.cc
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
#include "Export/VtkExporter.h"
#include "Meshing/Core/2D/Delaunay2D.h"
#include "Meshing/Data/3D/MeshData3D.h"
#include "Meshing/Data/3D/MeshMutator3D.h"
#include "Meshing/Data/2D/TriangleElement.h"
#include "spdlog/spdlog.h"

Expand Down Expand Up @@ -42,11 +40,9 @@ int main()
const auto& triangles = meshData2D.getElements();
const auto& nodes = meshData2D.getNodes();

// Create 3D mesh data for export (with z=0)
MeshData3D meshData3D(meshData2D);
// Export to VTK
Export::VtkExporter exporter;
exporter.writeVtu(meshData3D, "simple_delaunay_2d.vtu");
exporter.writeVtu(meshData2D, "simple_delaunay_2d.vtu");

spdlog::info("");
spdlog::info("Mesh exported to simple_delaunay_2d.vtu");
Expand Down
5 changes: 1 addition & 4 deletions src/Examples/SquareWithCircularHole.cc
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@
#include "Meshing/Data/2D/MeshData2D.h"
#include "Meshing/Data/2D/Node2D.h"
#include "Meshing/Data/2D/TriangleElement.h"
#include "Meshing/Data/3D/MeshData3D.h"
#include "Meshing/Data/3D/MeshMutator3D.h"
#include "Topology2D/Topology2D.h"
#include "spdlog/spdlog.h"

Expand Down Expand Up @@ -154,8 +152,7 @@ int main()
spdlog::info("Square with circular hole mesh generation complete!");

Export::VtkExporter exporter;
MeshData3D meshData3D(context.getMeshData());
exporter.exportMesh(meshData3D, "SquareWithCircularHoles.vtu");
exporter.exportMesh(context.getMeshData(), "SquareWithCircularHoles.vtu");

return 0;
}
16 changes: 16 additions & 0 deletions src/Export/VtkExporter.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
#include "VtkExporter.h"

#include "Meshing/Data/Base/IElement.h"
#include "Meshing/Data/2D/MeshData2D.h"
#include "Meshing/Data/2D/Node2D.h"
#include "Meshing/Data/3D/MeshData3D.h"
#include "Meshing/Data/3D/MeshMutator3D.h"
#include "Meshing/Data/3D/Node3D.h"

#include <algorithm>
Expand Down Expand Up @@ -36,6 +39,13 @@ bool VtkExporter::exportMesh(const Meshing::MeshData3D& mesh, const std::string&
return true;
}

bool VtkExporter::exportMesh(const Meshing::MeshData2D& mesh, const std::string& filePath) const
{
// Convert 2D mesh to 3D (with z=0) and use the existing 3D export
Meshing::MeshData3D meshData3D = convertToMeshData3D(mesh);
return exportMesh(meshData3D, filePath);
}

void VtkExporter::writeHeader(std::ostream& os) const
{
os << "<?xml version=\"1.0\"?>\n";
Expand Down Expand Up @@ -186,4 +196,10 @@ int VtkExporter::vtkCellTypeFor(const Meshing::IElement& element)
}
}

Meshing::MeshData3D VtkExporter::convertToMeshData3D(const Meshing::MeshData2D& mesh2D)
{
// Simply use the MeshData3D constructor that handles the conversion
return Meshing::MeshData3D(mesh2D);
}

} // namespace Export
8 changes: 8 additions & 0 deletions src/Export/VtkExporter.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

namespace Meshing
{
class MeshData2D;
class MeshData3D;
class IElement;
} // namespace Meshing
Expand All @@ -29,12 +30,19 @@ class VtkExporter : public IExporter
// Direct convenience method identical to exportMesh
bool writeVtu(const Meshing::MeshData3D& mesh, const std::string& filePath) const { return exportMesh(mesh, filePath); }

// Overloaded methods for 2D meshes (exported with z=0)
bool exportMesh(const Meshing::MeshData2D& mesh, const std::string& filePath) const;
bool writeVtu(const Meshing::MeshData2D& mesh, const std::string& filePath) const { return exportMesh(mesh, filePath); }

private:
void writeHeader(std::ostream& os) const;
void writePoints(std::ostream& os, const Meshing::MeshData3D& mesh) const;
void writeCells(std::ostream& os, const Meshing::MeshData3D& mesh) const;
void writeFooter(std::ostream& os) const;

// Convert 2D mesh to 3D (with z=0) for export
static Meshing::MeshData3D convertToMeshData3D(const Meshing::MeshData2D& mesh2D);

static int vtkCellTypeFor(const Meshing::IElement& element);
};

Expand Down
3 changes: 1 addition & 2 deletions src/Meshing/Core/2D/ConstrainedDelaunay2D.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,7 @@ std::vector<ConstrainedSegment2D> ConstrainedDelaunay2D::getConstrainedEdges() c
void ConstrainedDelaunay2D::exportAndVerifyMesh()
{
Export::VtkExporter exporter;
MeshData3D meshData3D(*meshData2D_);
exporter.exportMesh(meshData3D, "constrained_delaunay_" + std::to_string(exportCounter_++) + ".vtu");
exporter.exportMesh(*meshData2D_, "constrained_delaunay_" + std::to_string(exportCounter_++) + ".vtu");

bool allConstrinedEdgesPresent = false;
// MeshLogger::logMeshData2D(*meshData2D_);
Expand Down
1 change: 0 additions & 1 deletion src/Meshing/Core/2D/ConstrainedDelaunay2D.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
#include "Meshing/Core/2D/GeometryStructures2D.h"
#include "Meshing/Data/2D/MeshData2D.h"
#include "Meshing/Data/2D/TriangleElement.h"
#include "Meshing/Data/3D/MeshData3D.h"
#include <array>
#include <memory>
#include <optional>
Expand Down
3 changes: 1 addition & 2 deletions src/Meshing/Core/2D/ShewchukRefiner2D.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -317,8 +317,7 @@ void ShewchukRefiner2D::exportAndVerifyMesh()
{
return;
Export::VtkExporter exporter;
MeshData3D meshData3D(context_->getMeshData());
exporter.exportMesh(meshData3D, "ShewchukRefiner2D_" + std::to_string(exportCounter_++) + ".vtu");
exporter.exportMesh(context_->getMeshData(), "ShewchukRefiner2D_" + std::to_string(exportCounter_++) + ".vtu");

bool allConstrinedEdgesPresent = false;
// MeshLogger::logMeshData2D(context_->getMeshData());
Expand Down
2 changes: 2 additions & 0 deletions src/Meshing/Data/3D/MeshData3D.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ class MeshData3D
{
public:
MeshData3D();
// Temporary: Constructor for MeshConnectivity usage
// TODO: Remove once MeshConnectivity supports MeshData2D directly
explicit MeshData3D(const MeshData2D& mesh2D);

// Read-only access to mesh data
Expand Down
Loading