Skip to content

Commit

Permalink
Merge branch 'FixConstructMeshesFromGeometryBulkElementIds' into 'mas…
Browse files Browse the repository at this point in the history
…ter'

Use bulk element's id for boundary element construction

Closes #3430

See merge request ogs/ogs!4751
  • Loading branch information
TomFischer committed Oct 3, 2023
2 parents 93f12dc + a23c038 commit d846de4
Show file tree
Hide file tree
Showing 18 changed files with 222 additions and 40 deletions.
15 changes: 15 additions & 0 deletions Applications/Utils/Tests.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -1388,3 +1388,18 @@ AddTest(
TESTER diff
DIFF_DATA WESSRivers_cleaned.gml WESSRivers_cleaned.gml
)

AddTest(
NAME ConstructMeshesFromGeometry_square_lines_and_points
PATH MeshGeoToolsLib/ConstructMeshesFromGeometry
WORKING_DIRECTORY ${Data_BINARY_DIR}/<PATH>
EXECUTABLE constructMeshesFromGeometry
EXECUTABLE_ARGS -m ${Data_SOURCE_DIR}/<PATH>/square_1x1_quad8_1e2.vtu -g ${Data_SOURCE_DIR}/<PATH>/square_1x1.gml
TESTER vtkdiff-mesh
DIFF_DATA
square_1x1_geometry_origin.vtu square_1x1_geometry_origin.vtu 1e-16
square_1x1_geometry_left.vtu square_1x1_geometry_left.vtu 1e-16
square_1x1_geometry_right.vtu square_1x1_geometry_right.vtu 1e-16
square_1x1_geometry_bottom.vtu square_1x1_geometry_bottom.vtu 1e-16
square_1x1_geometry_top.vtu square_1x1_geometry_top.vtu 1e-16
)
10 changes: 5 additions & 5 deletions MeshGeoToolsLib/BoundaryElementsAlongPolyline.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,14 +80,14 @@ MeshLib::Element* modifyEdgeNodeOrdering(
{
std::array nodes = {const_cast<MeshLib::Node*>(e->getNode(1)),
const_cast<MeshLib::Node*>(e->getNode(0))};
return new MeshLib::Line(nodes);
return new MeshLib::Line(nodes, e->getID());
}
if (auto const* e = dynamic_cast<MeshLib::Line3 const*>(&edge))
{
std::array nodes = {const_cast<MeshLib::Node*>(e->getNode(1)),
const_cast<MeshLib::Node*>(e->getNode(0)),
const_cast<MeshLib::Node*>(e->getNode(2))};
return new MeshLib::Line3(nodes);
return new MeshLib::Line3(nodes, e->getID());
}
OGS_FATAL("Not implemented for element type {:s}", typeid(edge).name());
}
Expand All @@ -102,18 +102,18 @@ namespace MeshGeoToolsLib
BoundaryElementsAlongPolyline::BoundaryElementsAlongPolyline(
MeshLib::Mesh const& mesh, MeshNodeSearcher const& mshNodeSearcher,
GeoLib::Polyline const& ply)
: _mesh(mesh), _ply(ply)
: _ply(ply)
{
// search nodes and elements located along the polyline
auto node_ids_on_poly = mshNodeSearcher.getMeshNodeIDs(ply);
MeshLib::ElementSearch es(_mesh);
MeshLib::ElementSearch es(mesh);
es.searchByNodeIDs(node_ids_on_poly);
auto const& ele_ids_near_ply = es.getSearchedElementIDs();

// check all edges of the elements near the polyline
for (auto ele_id : ele_ids_near_ply)
{
auto* e = _mesh.getElement(ele_id);
auto* e = mesh.getElement(ele_id);
// skip line elements
if (e->getDimension() == 1)
{
Expand Down
4 changes: 0 additions & 4 deletions MeshGeoToolsLib/BoundaryElementsAlongPolyline.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,6 @@ class BoundaryElementsAlongPolyline
/// destructor
virtual ~BoundaryElementsAlongPolyline();

/// return the mesh object
MeshLib::Mesh const& getMesh() const { return _mesh; }

/**
* Deploying this method the user can get access to the underlying
* GeoLib::Polyline.
Expand All @@ -67,7 +64,6 @@ class BoundaryElementsAlongPolyline
}

private:
MeshLib::Mesh const& _mesh;
GeoLib::Polyline const& _ply;
std::vector<MeshLib::Element*> _boundary_elements;
};
Expand Down
6 changes: 3 additions & 3 deletions MeshGeoToolsLib/BoundaryElementsAtPoint.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ namespace MeshGeoToolsLib
BoundaryElementsAtPoint::BoundaryElementsAtPoint(
MeshLib::Mesh const& mesh, MeshNodeSearcher const& mshNodeSearcher,
GeoLib::Point const& point, const bool multiple_nodes_allowed)
: _mesh(mesh), _point(point)
: _point(point)
{
auto const node_ids = mshNodeSearcher.getMeshNodeIDs(_point);

Expand Down Expand Up @@ -62,7 +62,7 @@ BoundaryElementsAtPoint::BoundaryElementsAtPoint(
if (node_ids.size() == 1)
{
std::array<MeshLib::Node*, 1> const nodes = {
{const_cast<MeshLib::Node*>(_mesh.getNode(node_ids[0]))}};
{const_cast<MeshLib::Node*>(mesh.getNode(node_ids[0]))}};

_boundary_elements.push_back(new MeshLib::Point{nodes, node_ids[0]});
return;
Expand Down Expand Up @@ -103,7 +103,7 @@ BoundaryElementsAtPoint::BoundaryElementsAtPoint(
MathLib::sqrDist(*mesh_nodes[nearest_node_id], point));

std::array<MeshLib::Node*, 1> const nodes = {
{const_cast<MeshLib::Node*>(_mesh.getNode(nearest_node_id))}};
{const_cast<MeshLib::Node*>(mesh.getNode(nearest_node_id))}};

_boundary_elements.push_back(new MeshLib::Point{nodes, nearest_node_id});
}
Expand Down
6 changes: 0 additions & 6 deletions MeshGeoToolsLib/BoundaryElementsAtPoint.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,6 @@ class BoundaryElementsAtPoint final

~BoundaryElementsAtPoint();

MeshLib::Mesh const& getMesh() const
{
return _mesh;
}

GeoLib::Point const& getPoint() const
{
return _point;
Expand All @@ -63,7 +58,6 @@ class BoundaryElementsAtPoint final
}

private:
MeshLib::Mesh const& _mesh;
GeoLib::Point const& _point;
std::vector<MeshLib::Element*> _boundary_elements;
};
Expand Down
6 changes: 3 additions & 3 deletions MeshGeoToolsLib/BoundaryElementsOnSurface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,18 @@ namespace MeshGeoToolsLib
BoundaryElementsOnSurface::BoundaryElementsOnSurface(
MeshLib::Mesh const& mesh, MeshNodeSearcher const& mshNodeSearcher,
GeoLib::Surface const& sfc)
: _mesh(mesh), _sfc(sfc)
: _sfc(sfc)
{
// search elements near the surface
auto node_ids_on_sfc = mshNodeSearcher.getMeshNodeIDs(sfc);
MeshLib::ElementSearch es(_mesh);
MeshLib::ElementSearch es(mesh);
es.searchByNodeIDs(node_ids_on_sfc);
auto& ele_ids_near_sfc = es.getSearchedElementIDs();

// get a list of faces made of the nodes
for (auto ele_id : ele_ids_near_sfc)
{
auto* e = _mesh.getElement(ele_id);
auto* e = mesh.getElement(ele_id);
// skip internal elements
if (!e->isBoundaryElement())
{
Expand Down
4 changes: 0 additions & 4 deletions MeshGeoToolsLib/BoundaryElementsOnSurface.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,6 @@ class BoundaryElementsOnSurface
/// destructor
virtual ~BoundaryElementsOnSurface();

/// return the mesh object
MeshLib::Mesh const& getMesh() const {return _mesh;}

/**
* Deploying this method the user can get access to the underlying
* GeoLib::Surface.
Expand All @@ -61,7 +58,6 @@ class BoundaryElementsOnSurface
std::vector<MeshLib::Element*> const& getBoundaryElements() const {return _boundary_elements;}

private:
MeshLib::Mesh const& _mesh;
GeoLib::Surface const& _sfc;
std::vector<MeshLib::Element*> _boundary_elements;
};
Expand Down
8 changes: 4 additions & 4 deletions MeshGeoToolsLib/BoundaryElementsSearcher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ namespace MeshGeoToolsLib
{
BoundaryElementsSearcher::BoundaryElementsSearcher(
MeshLib::Mesh const& mesh, MeshNodeSearcher const& mshNodeSearcher)
: _mesh(mesh), _mshNodeSearcher(mshNodeSearcher)
: mesh(mesh), _mshNodeSearcher(mshNodeSearcher)
{
}

Expand Down Expand Up @@ -86,7 +86,7 @@ BoundaryElementsSearcher::getBoundaryElements(GeoLib::GeoObject const& geoObj,
get_cached_item = &BoundaryElementsAtPoint::getPoint;
return MeshGeoToolsLib::getBoundaryElements(
_boundary_elements_at_point, get_cached_item,
*dynamic_cast<const GeoLib::Point*>(&geoObj), _mesh,
*dynamic_cast<const GeoLib::Point*>(&geoObj), mesh,
_mshNodeSearcher, multiple_nodes_allowed);
}
break;
Expand All @@ -97,7 +97,7 @@ BoundaryElementsSearcher::getBoundaryElements(GeoLib::GeoObject const& geoObj,
get_cached_item = &BoundaryElementsAlongPolyline::getPolyline;
return MeshGeoToolsLib::getBoundaryElements(
_boundary_elements_along_polylines, get_cached_item,
*dynamic_cast<const GeoLib::Polyline*>(&geoObj), _mesh,
*dynamic_cast<const GeoLib::Polyline*>(&geoObj), mesh,
_mshNodeSearcher, false);
}
break;
Expand All @@ -107,7 +107,7 @@ BoundaryElementsSearcher::getBoundaryElements(GeoLib::GeoObject const& geoObj,
get_cached_item = &BoundaryElementsOnSurface::getSurface;
return MeshGeoToolsLib::getBoundaryElements(
_boundary_elements_along_surfaces, get_cached_item,
*dynamic_cast<const GeoLib::Surface*>(&geoObj), _mesh,
*dynamic_cast<const GeoLib::Surface*>(&geoObj), mesh,
_mshNodeSearcher, false);
}
break;
Expand Down
2 changes: 1 addition & 1 deletion MeshGeoToolsLib/BoundaryElementsSearcher.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ class BoundaryElementsSearcher
std::vector<MeshLib::Element*> const& getBoundaryElements(
GeoLib::GeoObject const& geoObj, bool const multiple_nodes_allowed);

MeshLib::Mesh const& _mesh;
MeshLib::Mesh const& mesh;

private:
MeshNodeSearcher const& _mshNodeSearcher;
Expand Down
15 changes: 6 additions & 9 deletions MeshGeoToolsLib/ConstructMeshesFromGeometries.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,29 +68,26 @@ constructAdditionalMeshesFromGeometries(
DBUG("Creating mesh from geometry {:s} {:s}.", vec_name,
geometry_name);

#ifdef USE_PETSC
// this mesh isn't yet a NodePartitionedMesh
auto subdomain_mesh = createMeshFromElementSelection(
meshNameFromGeometry(vec_name, geometry_name),
MeshLib::cloneElements(
boundary_element_searcher.getBoundaryElements(
geometry, multiple_nodes_allowed)));

// the bulk_mesh, that is a NodePartitionedMesh, is needed to
#ifdef USE_PETSC
// The subdomain_mesh is not yet a NodePartitionedMesh.
// The bulk_mesh, which is a NodePartitionedMesh, is needed to
// construct the subdomain NodePartitionedMesh
auto const* bulk_mesh =
dynamic_cast<MeshLib::NodePartitionedMesh const*>(
&boundary_element_searcher._mesh);
&boundary_element_searcher.mesh);

additional_meshes.push_back(
MeshLib::transformMeshToNodePartitionedMesh(
bulk_mesh, subdomain_mesh.get()));
#else
additional_meshes.emplace_back(createMeshFromElementSelection(
meshNameFromGeometry(vec_name, geometry_name),
MeshLib::cloneElements(
boundary_element_searcher.getBoundaryElements(
geometry, multiple_nodes_allowed))));
// Nothing special to be done in the serial case.
additional_meshes.emplace_back(std::move(subdomain_mesh));
#endif
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="OpenGeoSysGLI.xsl"?>

<OpenGeoSysGLI xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ogs="http://www.opengeosys.org">
<name>square_1x1_geometry</name>
<points>
<point id="0" x="0" y="0" z="0" name="origin"/>
<point id="1" x="0" y="1" z="0"/>
<point id="2" x="1" y="0" z="0"/>
<point id="3" x="1" y="1" z="0"/>
</points>

<polylines>
<polyline id="0" name="left">
<pnt>0</pnt>
<pnt>1</pnt>
</polyline>
<polyline id="1" name="right">
<pnt>2</pnt>
<pnt>3</pnt>
</polyline>
<polyline id="2" name="bottom">
<pnt>0</pnt>
<pnt>2</pnt>
</polyline>
<polyline id="3" name="top">
<pnt>1</pnt>
<pnt>3</pnt>
</polyline>
</polylines>
</OpenGeoSysGLI>
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0"?>
<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64">
<UnstructuredGrid>
<Piece NumberOfPoints="21" NumberOfCells="10" >
<PointData>
<DataArray type="UInt64" Name="bulk_node_ids" format="appended" RangeMin="0" RangeMax="139" offset="0" />
</PointData>
<CellData>
<DataArray type="UInt64" Name="bulk_element_ids" format="appended" RangeMin="0" RangeMax="9" offset="236" />
</CellData>
<Points>
<DataArray type="Float64" Name="Points" NumberOfComponents="3" format="appended" RangeMin="0" RangeMax="1" offset="356" />
</Points>
<Cells>
<DataArray type="Int64" Name="connectivity" format="appended" RangeMin="" RangeMax="" offset="1040" />
<DataArray type="Int64" Name="offsets" format="appended" RangeMin="" RangeMax="" offset="1372" />
<DataArray type="UInt8" Name="types" format="appended" RangeMin="" RangeMax="" offset="1492" />
</Cells>
</Piece>
</UnstructuredGrid>
<AppendedData encoding="base64">
_qAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAABQAAAAAAAAAGAAAAAAAAAAcAAAAAAAAACAAAAAAAAAAJAAAAAAAAAAoAAAAAAAAAeQAAAAAAAAB7AAAAAAAAAH0AAAAAAAAAfwAAAAAAAACBAAAAAAAAAIMAAAAAAAAAhQAAAAAAAACHAAAAAAAAAIkAAAAAAAAAiwAAAAAAAAA=UAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAABQAAAAAAAAAGAAAAAAAAAAcAAAAAAAAACAAAAAAAAAAJAAAAAAAAAA==+AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACamZmZmZm5PwAAAAAAAAAAAAAAAAAAAACamZmZmZnJPwAAAAAAAAAAAAAAAAAAAAAzMzMzMzPTPwAAAAAAAAAAAAAAAAAAAACamZmZmZnZPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADgPwAAAAAAAAAAAAAAAAAAAAAzMzMzMzPjPwAAAAAAAAAAAAAAAAAAAABmZmZmZmbmPwAAAAAAAAAAAAAAAAAAAACamZmZmZnpPwAAAAAAAAAAAAAAAAAAAADNzMzMzMzsPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADwPwAAAAAAAAAAAAAAAAAAAACamZmZmZmpPwAAAAAAAAAAAAAAAAAAAAA0MzMzMzPDPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADQPwAAAAAAAAAAAAAAAAAAAABmZmZmZmbWPwAAAAAAAAAAAAAAAAAAAADNzMzMzMzcPwAAAAAAAAAAAAAAAAAAAACamZmZmZnhPwAAAAAAAAAAAAAAAAAAAADMzMzMzMzkPwAAAAAAAAAAAAAAAAAAAAAAAAAAAADoPwAAAAAAAAAAAAAAAAAAAAA0MzMzMzPrPwAAAAAAAAAAAAAAAAAAAABmZmZmZmbuPwAAAAAAAAAAAAAAAAAAAAA=8AAAAAAAAAAAAAAAAAAAAAEAAAAAAAAACwAAAAAAAAABAAAAAAAAAAIAAAAAAAAADAAAAAAAAAACAAAAAAAAAAMAAAAAAAAADQAAAAAAAAADAAAAAAAAAAQAAAAAAAAADgAAAAAAAAAEAAAAAAAAAAUAAAAAAAAADwAAAAAAAAAFAAAAAAAAAAYAAAAAAAAAEAAAAAAAAAAGAAAAAAAAAAcAAAAAAAAAEQAAAAAAAAAHAAAAAAAAAAgAAAAAAAAAEgAAAAAAAAAIAAAAAAAAAAkAAAAAAAAAEwAAAAAAAAAJAAAAAAAAAAoAAAAAAAAAFAAAAAAAAAA=UAAAAAAAAAADAAAAAAAAAAYAAAAAAAAACQAAAAAAAAAMAAAAAAAAAA8AAAAAAAAAEgAAAAAAAAAVAAAAAAAAABgAAAAAAAAAGwAAAAAAAAAeAAAAAAAAAA==CgAAAAAAAAAVFRUVFRUVFRUV
</AppendedData>
</VTKFile>
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0"?>
<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64">
<UnstructuredGrid>
<Piece NumberOfPoints="21" NumberOfCells="10" >
<PointData>
<DataArray type="UInt64" Name="bulk_node_ids" format="appended" RangeMin="0" RangeMax="311" offset="0" />
</PointData>
<CellData>
<DataArray type="UInt64" Name="bulk_element_ids" format="appended" RangeMin="0" RangeMax="90" offset="236" />
</CellData>
<Points>
<DataArray type="Float64" Name="Points" NumberOfComponents="3" format="appended" RangeMin="0" RangeMax="1" offset="356" />
</Points>
<Cells>
<DataArray type="Int64" Name="connectivity" format="appended" RangeMin="" RangeMax="" offset="1040" />
<DataArray type="Int64" Name="offsets" format="appended" RangeMin="" RangeMax="" offset="1372" />
<DataArray type="UInt8" Name="types" format="appended" RangeMin="" RangeMax="" offset="1492" />
</Cells>
</Piece>
</UnstructuredGrid>
<AppendedData encoding="base64">
_qAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAFgAAAAAAAAAhAAAAAAAAACwAAAAAAAAANwAAAAAAAABCAAAAAAAAAE0AAAAAAAAAWAAAAAAAAABjAAAAAAAAAG4AAAAAAAAAegAAAAAAAACPAAAAAAAAAKQAAAAAAAAAuQAAAAAAAADOAAAAAAAAAOMAAAAAAAAA+AAAAAAAAAANAQAAAAAAACIBAAAAAAAANwEAAAAAAAA=UAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAFAAAAAAAAAAeAAAAAAAAACgAAAAAAAAAMgAAAAAAAAA8AAAAAAAAAEYAAAAAAAAAUAAAAAAAAABaAAAAAAAAAA==+AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJqZmZmZmbk/AAAAAAAAAAAAAAAAAAAAAJqZmZmZmck/AAAAAAAAAAAAAAAAAAAAADMzMzMzM9M/AAAAAAAAAAAAAAAAAAAAAJqZmZmZmdk/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA/AAAAAAAAAAAAAAAAAAAAADMzMzMzM+M/AAAAAAAAAAAAAAAAAAAAAGZmZmZmZuY/AAAAAAAAAAAAAAAAAAAAAJqZmZmZmek/AAAAAAAAAAAAAAAAAAAAAM3MzMzMzOw/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAJqZmZmZmak/AAAAAAAAAAAAAAAAAAAAADQzMzMzM8M/AAAAAAAAAAAAAAAAAAAAAAAAAAAAANA/AAAAAAAAAAAAAAAAAAAAAGZmZmZmZtY/AAAAAAAAAAAAAAAAAAAAAM3MzMzMzNw/AAAAAAAAAAAAAAAAAAAAAJqZmZmZmeE/AAAAAAAAAAAAAAAAAAAAAMzMzMzMzOQ/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOg/AAAAAAAAAAAAAAAAAAAAADQzMzMzM+s/AAAAAAAAAAAAAAAAAAAAAGZmZmZmZu4/AAAAAAAAAAA=8AAAAAAAAAAAAAAAAAAAAAEAAAAAAAAACwAAAAAAAAABAAAAAAAAAAIAAAAAAAAADAAAAAAAAAACAAAAAAAAAAMAAAAAAAAADQAAAAAAAAADAAAAAAAAAAQAAAAAAAAADgAAAAAAAAAEAAAAAAAAAAUAAAAAAAAADwAAAAAAAAAFAAAAAAAAAAYAAAAAAAAAEAAAAAAAAAAGAAAAAAAAAAcAAAAAAAAAEQAAAAAAAAAHAAAAAAAAAAgAAAAAAAAAEgAAAAAAAAAIAAAAAAAAAAkAAAAAAAAAEwAAAAAAAAAJAAAAAAAAAAoAAAAAAAAAFAAAAAAAAAA=UAAAAAAAAAADAAAAAAAAAAYAAAAAAAAACQAAAAAAAAAMAAAAAAAAAA8AAAAAAAAAEgAAAAAAAAAVAAAAAAAAABgAAAAAAAAAGwAAAAAAAAAeAAAAAAAAAA==CgAAAAAAAAAVFRUVFRUVFRUV
</AppendedData>
</VTKFile>
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0"?>
<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64">
<UnstructuredGrid>
<Piece NumberOfPoints="1" NumberOfCells="1" >
<PointData>
<DataArray type="UInt64" Name="bulk_node_ids" format="appended" RangeMin="0" RangeMax="0" offset="0" />
</PointData>
<CellData>
<DataArray type="UInt64" Name="bulk_element_ids" format="appended" RangeMin="0" RangeMax="0" offset="24" />
</CellData>
<Points>
<DataArray type="Float64" Name="Points" NumberOfComponents="3" format="appended" RangeMin="0" RangeMax="0" offset="48" />
</Points>
<Cells>
<DataArray type="Int64" Name="connectivity" format="appended" RangeMin="" RangeMax="" offset="92" />
<DataArray type="Int64" Name="offsets" format="appended" RangeMin="" RangeMax="" offset="116" />
<DataArray type="UInt8" Name="types" format="appended" RangeMin="" RangeMax="" offset="140" />
</Cells>
</Piece>
</UnstructuredGrid>
<AppendedData encoding="base64">
_CAAAAAAAAAAAAAAAAAAAAA==CAAAAAAAAAAAAAAAAAAAAA==GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=CAAAAAAAAAAAAAAAAAAAAA==CAAAAAAAAAABAAAAAAAAAA==AQAAAAAAAAAB
</AppendedData>
</VTKFile>
Loading

0 comments on commit d846de4

Please sign in to comment.