From 6cad3d5607343d628e13df4d3ebe1899defbcf20 Mon Sep 17 00:00:00 2001 From: Konstantin Leontev Date: Wed, 7 Feb 2024 09:48:43 +0000 Subject: [PATCH] [bos #40653][CEA] New mesh import export formats with meshio. --- doc/gui/input/importing_exporting_meshes.rst | 54 + idl/SMESH_Gen.idl | 8 + idl/SMESH_Mesh.idl | 11 + src/SMESHGUI/CMakeLists.txt | 2 + src/SMESHGUI/SMESHGUI.cxx | 62 +- src/SMESHGUI/SMESHGUI_Meshio.cxx | 267 ++ src/SMESHGUI/SMESHGUI_Meshio.h | 64 + src/SMESHGUI/SMESHGUI_Operations.h | 2 + src/SMESHGUI/SMESH_msg_en.ts | 28 + src/SMESHGUI/SMESH_msg_fr.ts | 28 + src/SMESHGUI/SMESH_msg_ja.ts | 28 + src/SMESH_I/CMakeLists.txt | 2 + src/SMESH_I/SMESH_Gen_i.cxx | 119 + src/SMESH_I/SMESH_Gen_i.hxx | 4 + src/SMESH_I/SMESH_Mesh_i.cxx | 50 + src/SMESH_I/SMESH_Mesh_i.hxx | 4 + src/SMESH_I/SMESH_Meshio.cxx | 245 ++ src/SMESH_I/SMESH_Meshio.h | 61 + src/SMESH_SWIG/smeshBuilder.py | 54 + test/SMESH_MeshioFiles.py | 181 ++ test/SMESH_MeshioShapes.py | 260 ++ test/data/meshio_meshes/abaqus/README.md | 2 + test/data/meshio_meshes/abaqus/UUea.inp | 285 ++ .../meshio_meshes/abaqus/element_elset.inp | 14 + test/data/meshio_meshes/abaqus/nle1xf3c.inp | 59 + .../meshio_meshes/abaqus/wInclude_bulk.inp | 13 + .../meshio_meshes/abaqus/wInclude_main.inp | 7 + .../flac3d/flac3d_mesh_ex.f3grid | 307 ++ .../flac3d/flac3d_mesh_ex_bin.f3grid | Bin 0 -> 9517 bytes test/data/meshio_meshes/med/README.md | 54 + test/data/meshio_meshes/med/box.med | Bin 0 -> 21200 bytes test/data/meshio_meshes/med/cylinder.med | Bin 0 -> 23913 bytes test/data/meshio_meshes/medit/cube86.mesh | 211 ++ .../meshio_meshes/medit/hch_strct.4.be.meshb | Bin 0 -> 20308 bytes .../meshio_meshes/medit/hch_strct.4.meshb | Bin 0 -> 20280 bytes .../meshio_meshes/medit/sphere_mixed.1.meshb | Bin 0 -> 371572 bytes test/data/meshio_meshes/msh/Makefile | 5 + test/data/meshio_meshes/msh/README.md | 5 + test/data/meshio_meshes/msh/insulated-2.2.msh | 214 ++ test/data/meshio_meshes/msh/insulated-4.1.msh | 319 +++ test/data/meshio_meshes/nastran/README.md | 1 + test/data/meshio_meshes/nastran/cylinder.fem | 245 ++ .../nastran/cylinder_cells_first.fem | 245 ++ .../data/meshio_meshes/netgen/periodic_1d.vol | 144 + .../data/meshio_meshes/netgen/periodic_2d.vol | 194 ++ .../data/meshio_meshes/netgen/periodic_3d.vol | 506 ++++ test/data/meshio_meshes/neuroglancer/simple1 | Bin 0 -> 100 bytes test/data/meshio_meshes/obj/elephav.obj | 2406 ++++++++++++++++ .../meshio_meshes/ply/bun_zipper_res4.ply | 1413 ++++++++++ test/data/meshio_meshes/ply/tet.ply | 22 + test/data/meshio_meshes/su2/README.md | 2 + test/data/meshio_meshes/su2/mixgrid.su2 | 73 + test/data/meshio_meshes/su2/square.su2 | 49 + .../meshio_meshes/tecplot/quad_zone_comma.tec | 14 + .../tecplot/quad_zone_multivar.tec | 16 + .../meshio_meshes/tecplot/quad_zone_space.tec | 14 + test/data/meshio_meshes/tetgen/mesh.ele | 307 ++ test/data/meshio_meshes/tetgen/mesh.node | 92 + .../meshio_meshes/ugrid/hch_strct.4.lb8.ugrid | Bin 0 -> 18036 bytes test/data/meshio_meshes/ugrid/pyra_cube.ugrid | 16 + .../ugrid/sphere_mixed.1.lb8.ugrid | Bin 0 -> 310060 bytes test/data/meshio_meshes/vtk/00_image.vtk | 110 + test/data/meshio_meshes/vtk/01_image.vtk | 79 + test/data/meshio_meshes/vtk/02_structured.vtk | 133 + .../data/meshio_meshes/vtk/03_rectilinear.vtk | 92 + .../data/meshio_meshes/vtk/04_rectilinear.vtk | 50 + .../data/meshio_meshes/vtk/05_rectilinear.vtk | 50 + .../meshio_meshes/vtk/06_color_scalars.vtk | 23 + .../meshio_meshes/vtk/06_unstructured.vtk | 64 + test/data/meshio_meshes/vtk/gh-935.vtk | 22 + test/data/meshio_meshes/vtk/rbc_001.vtk | 2500 +++++++++++++++++ test/data/meshio_meshes/vtu/00_raw_binary.vtu | Bin 0 -> 7324 bytes .../meshio_meshes/vtu/01_raw_binary_int64.vtu | Bin 0 -> 11058 bytes .../meshio_meshes/vtu/02_raw_compressed.vtu | Bin 0 -> 2712 bytes test/data/meshio_meshes/wkt/simple.wkt | 1 + test/data/meshio_meshes/wkt/whitespaced.wkt | 4 + test/tests.set | 2 + 77 files changed, 11914 insertions(+), 4 deletions(-) create mode 100644 src/SMESHGUI/SMESHGUI_Meshio.cxx create mode 100644 src/SMESHGUI/SMESHGUI_Meshio.h create mode 100644 src/SMESH_I/SMESH_Meshio.cxx create mode 100644 src/SMESH_I/SMESH_Meshio.h create mode 100644 test/SMESH_MeshioFiles.py create mode 100644 test/SMESH_MeshioShapes.py create mode 100644 test/data/meshio_meshes/abaqus/README.md create mode 100644 test/data/meshio_meshes/abaqus/UUea.inp create mode 100644 test/data/meshio_meshes/abaqus/element_elset.inp create mode 100644 test/data/meshio_meshes/abaqus/nle1xf3c.inp create mode 100644 test/data/meshio_meshes/abaqus/wInclude_bulk.inp create mode 100644 test/data/meshio_meshes/abaqus/wInclude_main.inp create mode 100644 test/data/meshio_meshes/flac3d/flac3d_mesh_ex.f3grid create mode 100644 test/data/meshio_meshes/flac3d/flac3d_mesh_ex_bin.f3grid create mode 100644 test/data/meshio_meshes/med/README.md create mode 100644 test/data/meshio_meshes/med/box.med create mode 100644 test/data/meshio_meshes/med/cylinder.med create mode 100644 test/data/meshio_meshes/medit/cube86.mesh create mode 100644 test/data/meshio_meshes/medit/hch_strct.4.be.meshb create mode 100644 test/data/meshio_meshes/medit/hch_strct.4.meshb create mode 100644 test/data/meshio_meshes/medit/sphere_mixed.1.meshb create mode 100644 test/data/meshio_meshes/msh/Makefile create mode 100644 test/data/meshio_meshes/msh/README.md create mode 100644 test/data/meshio_meshes/msh/insulated-2.2.msh create mode 100644 test/data/meshio_meshes/msh/insulated-4.1.msh create mode 100644 test/data/meshio_meshes/nastran/README.md create mode 100644 test/data/meshio_meshes/nastran/cylinder.fem create mode 100644 test/data/meshio_meshes/nastran/cylinder_cells_first.fem create mode 100644 test/data/meshio_meshes/netgen/periodic_1d.vol create mode 100644 test/data/meshio_meshes/netgen/periodic_2d.vol create mode 100644 test/data/meshio_meshes/netgen/periodic_3d.vol create mode 100644 test/data/meshio_meshes/neuroglancer/simple1 create mode 100644 test/data/meshio_meshes/obj/elephav.obj create mode 100644 test/data/meshio_meshes/ply/bun_zipper_res4.ply create mode 100644 test/data/meshio_meshes/ply/tet.ply create mode 100644 test/data/meshio_meshes/su2/README.md create mode 100644 test/data/meshio_meshes/su2/mixgrid.su2 create mode 100644 test/data/meshio_meshes/su2/square.su2 create mode 100644 test/data/meshio_meshes/tecplot/quad_zone_comma.tec create mode 100644 test/data/meshio_meshes/tecplot/quad_zone_multivar.tec create mode 100644 test/data/meshio_meshes/tecplot/quad_zone_space.tec create mode 100644 test/data/meshio_meshes/tetgen/mesh.ele create mode 100644 test/data/meshio_meshes/tetgen/mesh.node create mode 100644 test/data/meshio_meshes/ugrid/hch_strct.4.lb8.ugrid create mode 100644 test/data/meshio_meshes/ugrid/pyra_cube.ugrid create mode 100644 test/data/meshio_meshes/ugrid/sphere_mixed.1.lb8.ugrid create mode 100644 test/data/meshio_meshes/vtk/00_image.vtk create mode 100644 test/data/meshio_meshes/vtk/01_image.vtk create mode 100644 test/data/meshio_meshes/vtk/02_structured.vtk create mode 100644 test/data/meshio_meshes/vtk/03_rectilinear.vtk create mode 100644 test/data/meshio_meshes/vtk/04_rectilinear.vtk create mode 100644 test/data/meshio_meshes/vtk/05_rectilinear.vtk create mode 100644 test/data/meshio_meshes/vtk/06_color_scalars.vtk create mode 100644 test/data/meshio_meshes/vtk/06_unstructured.vtk create mode 100644 test/data/meshio_meshes/vtk/gh-935.vtk create mode 100644 test/data/meshio_meshes/vtk/rbc_001.vtk create mode 100644 test/data/meshio_meshes/vtu/00_raw_binary.vtu create mode 100644 test/data/meshio_meshes/vtu/01_raw_binary_int64.vtu create mode 100644 test/data/meshio_meshes/vtu/02_raw_compressed.vtu create mode 100644 test/data/meshio_meshes/wkt/simple.wkt create mode 100644 test/data/meshio_meshes/wkt/whitespaced.wkt diff --git a/doc/gui/input/importing_exporting_meshes.rst b/doc/gui/input/importing_exporting_meshes.rst index fe9aa27f1..3f4f12072 100644 --- a/doc/gui/input/importing_exporting_meshes.rst +++ b/doc/gui/input/importing_exporting_meshes.rst @@ -5,6 +5,10 @@ Importing and exporting meshes ****************************** +============================== +File formats +============================== + In MESH there is a functionality allowing import/export of meshes in the following formats: * **MED**, @@ -16,6 +20,52 @@ In MESH there is a functionality allowing import/export of meshes in the followi You can also export a group as a whole mesh. +------------------------------ +Additional file formats with meshio +------------------------------ + +It is possible to use additional file formats using **meshio** library. +However, there are some restrictions because of way it uses in Salome. The main points here are: + +* We use intermediate MED file to communicate between Salome and **meshio**. +* Convertion to the target format performs **meshio convert** command, using given **MED** file. +* Current **meshio** version doesn't work well with all tested file formats. + +Anyway, you can try to import/export meshes with **meshio** using following formats: + +* Abaqus (*.inp) +* ANSYS msh (*.msh) +* AVS-UCD (*.avs) +* CGNS (*.cgns) +* DOLFIN XML (*.xml) +* Exodus (*.e *.exo) +* FLAC3D (*.f3grid) +* Gmsh 2.2, 4.0, and 4.1 (*.msh) +* H5M (*.h5m) +* Kratos/MDPA (*.mdpa) +* MED/Salome (*.med) +* Medit (*.mesh *.meshb) +* Nastran (*.bdf *fem *.nas) +* Netgen(*.vol *.vol.gz) +* OBJ (*.obj) +* OFF (*.off) +* PERMAS (*.post *.post.gz *.dato *.dato.gz) +* PLY (*.ply) +* STL (*.stl) +* SU2 (*.su2) +* SVG, 2D output only (*.svg) +* Tecplot (*.dat) +* TetGen (*.node *.ele) +* UGRID (*.ugrid) +* VTK (*.vtk) +* VTU (*.vtu) +* WKT, TIN (*.wkt) +* XDMF (*.xdmf *.xmf) + +============================== +Import +============================== + *To import a mesh:* #. From the **File** menu choose the **Import** item, from its sub-menu select the corresponding format (MED, UNV, STL, GMF and CGNS) of the file containing your mesh. @@ -25,6 +75,10 @@ You can also export a group as a whole mesh. .. image:: ../images/meshimportmesh.png :align: center +============================== +Export +============================== + *To export a mesh or a group:* #. Select the object you wish to export. diff --git a/idl/SMESH_Gen.idl b/idl/SMESH_Gen.idl index 236803975..f3bf7f454 100644 --- a/idl/SMESH_Gen.idl +++ b/idl/SMESH_Gen.idl @@ -294,6 +294,14 @@ module SMESH in boolean theMakeRequiredGroups, out SMESH::ComputeError theError) raises ( SALOME::SALOME_Exception ); + + /*! + * Create a mesh and import data from any file supported by meshio library + */ + mesh_array CreateMeshesFromMESHIO(in string theFileName, + out SMESH::DriverMED_ReadStatus theStatus) + raises (SALOME::SALOME_Exception); + /*! * Create a dual mesh of a Tetrahedron mesh * \param mesh - TetraHedron mesh to create dual from diff --git a/idl/SMESH_Mesh.idl b/idl/SMESH_Mesh.idl index fabf32343..9a888182c 100644 --- a/idl/SMESH_Mesh.idl +++ b/idl/SMESH_Mesh.idl @@ -712,6 +712,17 @@ module SMESH in double ZTolerance, in boolean saveNumbers) raises (SALOME::SALOME_Exception); + /*! + * Export a [part of] Mesh to a file with meshio library using an intermediate MED file + * @params + * - meshPart : a part of mesh to store + * - fileName : name of the MED file + * - selectedFilter : filter string selected by user in a file dialog. + */ + void ExportPartToMESHIO(in SMESH_IDSource meshPart, + in string fileName, + in string selectedFilter) raises (SALOME::SALOME_Exception); + long long ExportPartToMEDCoupling( in SMESH_IDSource meshPart, in boolean auto_groups, in boolean autoDimension, diff --git a/src/SMESHGUI/CMakeLists.txt b/src/SMESHGUI/CMakeLists.txt index 862ef5de0..6d83cf954 100644 --- a/src/SMESHGUI/CMakeLists.txt +++ b/src/SMESHGUI/CMakeLists.txt @@ -161,6 +161,7 @@ SET(_moc_HEADERS SMESHGUI_InteractiveOp.h SMESHGUI_CreateDualMeshDlg.h SMESHGUI_CreateDualMeshOp.h + SMESHGUI_Meshio.h ) # header files / no moc processing @@ -290,6 +291,7 @@ SET(_other_SOURCES SMESHGUI_InteractiveOp.cxx SMESHGUI_CreateDualMeshDlg.cxx SMESHGUI_CreateDualMeshOp.cxx + SMESHGUI_Meshio.cxx ) # sources / to compile diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index bbf36ce1e..5f1d4549a 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -70,6 +70,7 @@ #include "SMESHGUI_Measurements.h" #include "SMESHGUI_MergeDlg.h" #include "SMESHGUI_MeshInfo.h" +#include "SMESHGUI_Meshio.h" #include "SMESHGUI_MeshOp.h" #include "SMESHGUI_MeshOrderOp.h" #include "SMESHGUI_MeshPatternDlg.h" @@ -213,6 +214,7 @@ namespace void Control( int theCommandID ); // Definitions + //================================================================================ /*! * \brief Reads meshes from file @@ -251,6 +253,12 @@ namespace filter.append( QObject::tr( "GMF_ASCII_FILES_FILTER" ) + " (*.mesh)" ); filter.append( QObject::tr( "GMF_BINARY_FILES_FILTER") + " (*.meshb)" ); } + else if (theCommandID == SMESHOp::OpImportMESHIO) { + if (!SMESHGUI_Meshio::IsMeshioInstalled()) + return; + + filter = SMESHGUI_Meshio::GetImportFileFilter(); + } QString anInitialPath = ""; if ( SUIT_FileDlg::getLastVisitedPath().isEmpty() ) @@ -366,11 +374,20 @@ namespace } break; } + case SMESHOp::OpImportMESHIO: + { + aMeshes = SMESHGUI_Meshio::ImportMesh(theComponentMesh, filename, errors); + break; + } } } catch ( const SALOME::SALOME_Exception& S_ex ) { - errors.append( QString( "%1 :\n\t%2" ).arg( filename ). - arg( QObject::tr( "SMESH_ERR_UNKNOWN_IMPORT_ERROR" ) ) ); + const QString exText(S_ex.details.text); + if (exText.startsWith("MESHIO")) + errors.append('\n' + exText); + else + errors.append( QString( "%1 :\n\t%2" ).arg( filename ). + arg( QObject::tr( "SMESH_ERR_UNKNOWN_IMPORT_ERROR" ) ) ); } for ( int i = 0, iEnd = aMeshes->length(); i < iEnd; i++ ) @@ -440,8 +457,14 @@ namespace theCommandID == SMESHOp::OpPopupExportCGNS ); const bool isGMF = ( theCommandID == SMESHOp::OpExportGMF || theCommandID == SMESHOp::OpPopupExportGMF ); + const bool isMESHIO = (theCommandID == SMESHOp::OpExportMESHIO); - const bool multiMeshSupported = ( isMED || isCGNS ); // file can hold several meshes + if (isMESHIO && !SMESHGUI_Meshio::IsMeshioInstalled()) + { + return; + } + + const bool multiMeshSupported = isMED || isCGNS || isMESHIO; // file can hold several meshes if ( selected.Extent() == 0 || ( selected.Extent() > 1 && !multiMeshSupported )) return; SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); @@ -517,7 +540,7 @@ namespace SMESH::SMESH_Mesh_var aMesh = aMeshOrGroup->GetMesh(); QString aMeshName = (*aMeshIter).second; - if ( isMED || isCGNS ) // formats where group names must be unique + if (isMED || isCGNS || isMESHIO) // formats where group names must be unique { // check for equal group names within each mesh for( aMeshIter = aMeshList.begin(); aMeshIter != aMeshList.end(); aMeshIter++ ) { @@ -627,6 +650,7 @@ namespace // Get parameters of export operation QString aFilename; + QString aSelectedFilter; // for meshio to get a filter selected by user int aFormat =-1; // for MED version used for write bool isOkToWrite = true; // to check MED file version compatibility before adding a mesh in an existing file @@ -872,6 +896,14 @@ namespace delete zTolWdg; delete fd; } + else if (isMESHIO) + { + if (SMESHGUI_Meshio::CheckMeshCount(aMeshList)) + { + aFilename = SMESHGUI_Meshio::GetFileName(aSelectedFilter); + MESSAGE("aSelectedFilter: " << aSelectedFilter.toStdString()); + } + } else { return; @@ -954,16 +986,28 @@ namespace toCreateGroups = true; aMesh->ExportGMF( aMeshOrGroup, aFilename.toUtf8().data(), toCreateGroups ); } + else if (isMESHIO) + { + SMESHGUI_Meshio::ExportMesh(aMeshList, aFilename, aSelectedFilter); + } } catch (const SALOME::SALOME_Exception& S_ex) { wc.suspend(); + const QString exText(S_ex.details.text); + if ( S_ex.details.type == SALOME::COMM && // communicate about too large mesh strncmp( "format=", S_ex.details.sourceFile.in(), 7 ) == 0 ) SUIT_MessageBox::critical(SMESHGUI::desktop(), QObject::tr("SMESH_WRN_WARNING"), QObject::tr(S_ex.details.text.in() )); + else if (exText.startsWith("MESHIO")) + { + SUIT_MessageBox::warning(SMESHGUI::desktop(), + QObject::tr("SMESH_WRN_WARNING"), + QObject::tr("SMESH_EXPORT_FAILED_SHORT") + "\n\n" + exText); + } else SUIT_MessageBox::warning(SMESHGUI::desktop(), QObject::tr("SMESH_WRN_WARNING"), @@ -2573,6 +2617,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) case SMESHOp::OpImportSTL: case SMESHOp::OpImportCGNS: case SMESHOp::OpImportGMF: + case SMESHOp::OpImportMESHIO: case SMESHOp::OpPopupImportDAT: case SMESHOp::OpPopupImportUNV: case SMESHOp::OpPopupImportMED: @@ -2609,6 +2654,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) case SMESHOp::OpExportSTL: case SMESHOp::OpExportCGNS: case SMESHOp::OpExportGMF: + case SMESHOp::OpExportMESHIO: case SMESHOp::OpPopupExportDAT: case SMESHOp::OpPopupExportMED: case SMESHOp::OpPopupExportUNV: @@ -4152,6 +4198,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createSMESHAction( SMESHOp::OpImportCGNS, "IMPORT_CGNS" ); #endif createSMESHAction( SMESHOp::OpImportGMF, "IMPORT_GMF" ); + createSMESHAction( SMESHOp::OpImportMESHIO, "IMPORT_MESHIO" ); createSMESHAction( SMESHOp::OpPopupImportUNV, "IMPORT_UNV"); createSMESHAction( SMESHOp::OpPopupImportMED, "IMPORT_MED"); createSMESHAction( SMESHOp::OpPopupImportSTL, "IMPORT_STL" ); @@ -4168,6 +4215,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createSMESHAction( SMESHOp::OpExportCGNS, "CGNS"); #endif createSMESHAction( SMESHOp::OpExportGMF, "GMF" ); + createSMESHAction( SMESHOp::OpExportMESHIO, "EXPORT_MESHIO" ); createSMESHAction( SMESHOp::OpPopupExportDAT, "DAT" ); createSMESHAction( SMESHOp::OpPopupExportMED, "MED" ); createSMESHAction( SMESHOp::OpPopupExportUNV, "UNV" ); @@ -4417,6 +4465,7 @@ void SMESHGUI::initialize( CAM_Application* app ) transfId = createMenu( tr( "MEN_TRANSF" ), modifyId, 405 ), basicPropId = createMenu( tr( "MEN_BASIC_PROPERTIES" ), measureId, -1, 10 ); + // Import menu //createMenu( SMESHOp::OpImportDAT, importId, -1 ); createMenu( SMESHOp::OpImportUNV, importId, -1 ); createMenu( SMESHOp::OpImportMED, importId, -1 ); @@ -4425,6 +4474,9 @@ void SMESHGUI::initialize( CAM_Application* app ) createMenu( SMESHOp::OpImportCGNS, importId, -1 ); #endif createMenu( SMESHOp::OpImportGMF, importId, -1 ); + createMenu( SMESHOp::OpImportMESHIO, importId, -1 ); // formats supported by meshio lib + + // Export menu createMenu( SMESHOp::OpExportDAT, exportId, -1 ); createMenu( SMESHOp::OpExportMED, exportId, -1 ); createMenu( SMESHOp::OpExportUNV, exportId, -1 ); @@ -4433,6 +4485,7 @@ void SMESHGUI::initialize( CAM_Application* app ) createMenu( SMESHOp::OpExportCGNS, exportId, -1 ); #endif createMenu( SMESHOp::OpExportGMF, exportId, -1 ); + createMenu( SMESHOp::OpExportMESHIO, exportId, -1 ); // formats supported by meshio lib createMenu( separator(), fileId, 10 ); createMenu( SMESHOp::OpDelete, editId, -1 ); @@ -4854,6 +4907,7 @@ void SMESHGUI::initialize( CAM_Application* app ) #endif createPopupItem( SMESHOp::OpPopupExportGMF, OB, mesh_group, only_one_non_empty, anId ); createPopupItem( SMESHOp::OpPopupExportDAT, OB, mesh_group, only_one_non_empty, anId ); + createPopupItem( SMESHOp::OpExportMESHIO, OB, mesh_group, only_one_non_empty, anId ); anId = popupMgr()->insert( tr( "MEN_IMPORT" ), -1, -1 ); // IMPORT submenu createPopupItem( SMESHOp::OpPopupImportMED, OB, smesh, "", anId ); diff --git a/src/SMESHGUI/SMESHGUI_Meshio.cxx b/src/SMESHGUI/SMESHGUI_Meshio.cxx new file mode 100644 index 000000000..048dd4ac3 --- /dev/null +++ b/src/SMESHGUI/SMESHGUI_Meshio.cxx @@ -0,0 +1,267 @@ +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// SMESH SMESHGUI : support of import / export with meshio library +// File : SMESHGUI_Meshio.h +// Author : Konstantin Leontev, Open CASCADE S.A.S. +// +#include "SMESHGUI_Meshio.h" +#include "SMESH_Meshio.h" + +// SMESH includes +#include "SMESHGUI.h" +#include "SMESHGUI_FieldSelectorWdg.h" + +// SALOME GUI includes +#include +#include +#include + +// SALOME KERNEL includes +#include + +// Qt +#include + + +/*! + Constructor +*/ +SMESHGUI_Meshio::SMESHGUI_Meshio() +{ +} + +/*! + Destructor +*/ +SMESHGUI_Meshio::~SMESHGUI_Meshio() +{ +} + +/*! + Check and warn about exporting many shapes +*/ +bool SMESHGUI_Meshio::CheckMeshCount(const meshList& aMeshList) +{ + if (aMeshList.size() == 1) + { + return true; + } + else if (!aMeshList.size()) + { + // We shouldn't get here, but... + MESSAGE("Error: empty mesh list. Export canceled."); + return false; + } + + const bool isOk = SUIT_MessageBox::warning( + SMESHGUI::desktop(), + QObject::tr("SMESH_WARNING"), + QObject::tr("SMESH_EXPORT_MESHIO_ONLY_MESH"), + SUIT_MessageBox::Yes | + SUIT_MessageBox::No, + SUIT_MessageBox::No) == SUIT_MessageBox::Yes; + + return isOk; +} + +/*! + Import mesh through an intermediate MED file +*/ +SMESH::mesh_array_var SMESHGUI_Meshio::ImportMesh( + SMESH::SMESH_Gen_ptr theComponentMesh, const QString& filename, QStringList& errors) +{ + SMESH::DriverMED_ReadStatus res; + SMESH::mesh_array_var aMeshes = theComponentMesh->CreateMeshesFromMESHIO(filename.toUtf8().constData(), res); + if (res != SMESH::DRS_OK) + { + errors.append(QString("%1 :\n\t%2").arg(filename).arg( + QObject::tr(QString("SMESH_DRS_%1").arg(res).toLatin1().data()))); + } + + return aMeshes; +} + +/*! + Returns a filter for Import File dialog +*/ +const QStringList& SMESHGUI_Meshio::GetImportFileFilter() +{ + auto addAllFiles = []() -> QStringList + { + QStringList filter = GetExportFileFilter(); + + // Remove SVG because it works only for export + const int svgIndex = filter.indexOf(QRegExp("^SVG.+")); + if (svgIndex >= 0) + { + filter.removeAt(svgIndex); + } + + filter << QObject::tr("ALL_FILES_FILTER") + " (*)"; + + return filter; + }; + + static const QStringList filter = addAllFiles(); + return filter; +} + +/*! + Returns a filter for Export File dialog +*/ +const QStringList& SMESHGUI_Meshio::GetExportFileFilter() +{ + static const QStringList filter = { + "Abaqus (*.inp)", + "ANSYS msh (*.msh)", + "AVS-UCD (*.avs)", + "CGNS (*.cgns)", + "DOLFIN XML (*.xml)", + "Exodus (*.e *.exo)", + "FLAC3D (*.f3grid)", + "Gmsh 2.2 (*.msh)", + "Gmsh 4.0, and 4.1 (*.msh)", + "H5M (*.h5m)", + "Kratos/MDPA (*.mdpa)", + "MED/Salome (*.med)", + "Medit (*.mesh *.meshb)", + "Nastran (*.bdf *fem *.nas)", + "Netgen(*.vol *.vol.gz)", + "OBJ (*.obj)", + "OFF (*.off)", + "PERMAS (*.post *.post.gz *.dato *.dato.gz)", + "PLY (*.ply)", + "STL (*.stl)", + "SU2 (*.su2)", + "SVG, 2D output only (*.svg)", + "Tecplot (*.dat)", + "TetGen (*.node *.ele)", + "UGRID (*.ugrid)", + "VTK (*.vtk)", + "VTU (*.vtu)", + "WKT, TIN (*.wkt)", + "XDMF (*.xdmf *.xmf)" + }; + + return filter; +} + +/*! + Export mesh through an intermediate MED file +*/ +void SMESHGUI_Meshio::ExportMesh(const meshList& aMeshList, const QString& targetFileName, const QString& selectedFilter) +{ + // Helper for indexed naming of the target files. + // We need to save into separated files because meshio doesn't + // support reading more than one mesh from a MED file. + // Look at src/meshio/med/_med.py in meshio git repo for a reference. + auto indexedFileName = [](const QString& targetFileName, const int index) -> QString + { + QString indexedFileName = targetFileName; + + const int lastIndex = indexedFileName.lastIndexOf("."); + indexedFileName.insert(lastIndex, "_" + QString::number(index)); + + return indexedFileName; + }; + + // Trim an extension from the filter like in example: 'VTK (.vtk)' => 'VTK' + auto getFilterWithoutExt = [](const QString& selectedFilter) -> QString + { + // Find the start index for an extension in the filter string + const int index = selectedFilter.indexOf('('); + if (index != -1) + { + const QString filterWithoutExt = selectedFilter.left(index); + return filterWithoutExt.trimmed(); + } + + return selectedFilter; + }; + + // Iterate all the meshes from a list + auto aMeshIter = aMeshList.begin(); + for(int aMeshIndex = 0; aMeshIter != aMeshList.end(); aMeshIter++, aMeshIndex++) + { + SMESH::SMESH_IDSource_var aMeshOrGroup = (*aMeshIter).first; + SMESH::SMESH_Mesh_var aMeshItem = aMeshOrGroup->GetMesh(); + + // Exprort this part. + aMeshItem->ExportPartToMESHIO( + aMeshOrGroup, // mesh part + (aMeshIndex ? indexedFileName(targetFileName, aMeshIndex) : targetFileName).toUtf8().data(), + getFilterWithoutExt(selectedFilter).toLatin1().data() + ); + } +} + +/*! + Opens file dialog and returns a choosen target name +*/ +QString SMESHGUI_Meshio::GetFileName(QString& selectedFilter, const bool isOpen/* = false*/) +{ + // Get a target directory name + QString anInitialPath = SUIT_FileDlg::getLastVisitedPath(); + if (anInitialPath.isEmpty()) + anInitialPath = QDir::currentPath(); + + // Return a target file name + return SUIT_FileDlg::getFileName( + SMESHGUI::desktop(), + anInitialPath, + GetExportFileFilter(), + selectedFilter, + QObject::tr("SMESH_EXPORT_MESH"), + isOpen + ); +} + +/*! + Returns true if meshio package is installed +*/ +bool SMESHGUI_Meshio::IsMeshioInstalled() +{ + auto IsAbleToCallMeshio = []() -> bool + { + // Try to call meshio to check if it's present + const std::string cmd = + SMESH_Meshio::IsModernPythonVersion() ? "meshio --version" : "meshio-info --version"; + + const int status = system(cmd.c_str()); + MESSAGE("status: " << status); + + return status == 0; + }; + + static const bool isInstalled = IsAbleToCallMeshio(); + if (!isInstalled) + { + SUIT_MessageBox::warning( + SMESHGUI::desktop(), + QObject::tr("SMESH_WARNING"), + QObject::tr("SMESH_MESHIO_NOT_INSTALLED") + ); + } + + return isInstalled; +} diff --git a/src/SMESHGUI/SMESHGUI_Meshio.h b/src/SMESHGUI/SMESHGUI_Meshio.h new file mode 100644 index 000000000..b54a53533 --- /dev/null +++ b/src/SMESHGUI/SMESHGUI_Meshio.h @@ -0,0 +1,64 @@ +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// SMESH SMESHGUI : support of import / export with meshio library +// File : SMESHGUI_Meshio.h +// Author : Konstantin Leontev, Open CASCADE S.A.S. +// +#ifndef SMESHGUI_MESHIO_H +#define SMESHGUI_MESHIO_H + +#include "SMESH_SMESHGUI.hxx" + +#include +#include + +// IDL includes +#include +#include CORBA_CLIENT_HEADER(SMESH_Mesh) +#include CORBA_SERVER_HEADER(SMESH_Gen) + +class QStringList; + +class SMESHGUI_EXPORT SMESHGUI_Meshio +{ + using meshList = QList>; + +public: + SMESHGUI_Meshio(); + virtual ~SMESHGUI_Meshio(); + + static void ExportMesh( + const meshList& aMeshList, const QString& targetFileName, const QString& selectedFilter); + static SMESH::mesh_array_var ImportMesh( + SMESH::SMESH_Gen_ptr theComponentMesh, const QString& filename, QStringList& errors); + + static const QStringList& GetImportFileFilter(); + static const QStringList& GetExportFileFilter(); + + static QString GetFileName(QString& selectedFilter, const bool isOpen = false); + static bool CheckMeshCount(const meshList& aMeshList); + + static bool IsMeshioInstalled(); +}; + +#endif // SMESHGUI_MESHIO_H diff --git a/src/SMESHGUI/SMESHGUI_Operations.h b/src/SMESHGUI/SMESHGUI_Operations.h index bdf6e7382..9b9ee1425 100644 --- a/src/SMESHGUI/SMESHGUI_Operations.h +++ b/src/SMESHGUI/SMESHGUI_Operations.h @@ -41,6 +41,7 @@ namespace SMESHOp { OpImportSTL = 1103, // MENU FILE - IMPORT - STL FILE OpImportCGNS = 1104, // MENU FILE - IMPORT - CGNS FILE OpImportGMF = 1106, // MENU FILE - IMPORT - GMF FILE + OpImportMESHIO = 1107, // MENU FILE - IMPORT - other formats... (meshio) OpPopupImportDAT = 1120, // POPUP MENU - IMPORT - DAT FILE OpPopupImportUNV = 1121, // POPUP MENU - IMPORT - UNV FILE OpPopupImportMED = 1122, // POPUP MENU - IMPORT - MED FILE @@ -54,6 +55,7 @@ namespace SMESHOp { OpExportSTL = 1203, // MENU FILE - EXPORT - STL FILE OpExportCGNS = 1204, // MENU FILE - EXPORT - CGNS FILE OpExportGMF = 1206, // MENU FILE - EXPORT - GMF FILE + OpExportMESHIO = 1207, // MENU FILE - EXPORT - other formats... (meshio) OpPopupExportDAT = 1210, // POPUP MENU - EXPORT - DAT FILE OpPopupExportMED = 1211, // POPUP MENU - EXPORT - MED FILE OpPopupExportUNV = 1212, // POPUP MENU - EXPORT - UNV FILE diff --git a/src/SMESHGUI/SMESH_msg_en.ts b/src/SMESHGUI/SMESH_msg_en.ts index 8c6f0359b..5e07a0d31 100644 --- a/src/SMESHGUI/SMESH_msg_en.ts +++ b/src/SMESHGUI/SMESH_msg_en.ts @@ -888,6 +888,14 @@ MEN_GMF GMF file + + MEN_IMPORT_MESHIO + other formats... (meshio) + + + MEN_EXPORT_MESHIO + other formats... (meshio) + MEN_MERGE Merge Nodes @@ -1971,6 +1979,10 @@ so that the application may crash. Do you wish to continue visualization? + + SMESH_EXPORT_FAILED_SHORT + Mesh export failed. + SMESH_EXPORT_MED_DUPLICATED_GRP There are duplicated group names in mesh "%1". @@ -2002,6 +2014,22 @@ Overwrite the file? meshes with the following names: %1 The result file may be incorrect. Overwrite the file? + + + SMESH_EXPORT_MESHIO_ONLY_MESH + Current implementation uses export through intermediate MED file. +However, meshio does not support reading MED files with more than one mesh. +Selected meshes will be saved into separated files. + +Do you want to continue? + + + SMESH_MESHIO_NOT_INSTALLED + Meshio is not installed! +Operation will be canceled. + +Try to install meshio with a command: +pip install meshio[all] EXPORT_NOT_SUPPORTED diff --git a/src/SMESHGUI/SMESH_msg_fr.ts b/src/SMESHGUI/SMESH_msg_fr.ts index 9d00671ae..c6c37fef5 100644 --- a/src/SMESHGUI/SMESH_msg_fr.ts +++ b/src/SMESHGUI/SMESH_msg_fr.ts @@ -884,6 +884,14 @@ MEN_GMF Fichier GMF + + MEN_IMPORT_MESHIO + autres formats... (meshio) + + + MEN_EXPORT_MESHIO + autres formats... (meshio) + MEN_MERGE Fusionner les nœuds @@ -1966,6 +1974,10 @@ ce qui peut faire planter l'application. Voulez-vous continuer la visualisation Impossible d'exporter le maillage. Vérifiez l'espace disponible sur le disque. + + SMESH_EXPORT_FAILED_SHORT + Impossible d'exporter le maillage. + SMESH_EXPORT_MED_DUPLICATED_GRP Il y a des noms de groupes dupliqués dans le maillage "%1". @@ -1997,6 +2009,22 @@ Ecraser le fichier ? des maillages avec les noms suivants: %1 Le fichier obtenu pourrait être incorrect. Ecraser le fichier ? + + + SMESH_EXPORT_MESHIO_ONLY_MESH + La mise en œuvre actuelle utilise l'exportation via un fichier MED intermédiaire. +Cependant, meshio ne prend pas en charge la lecture des fichiers MED comportant plusieurs maillages. +Les maillages sélectionnés seront enregistrés dans des fichiers séparés. + +Voulez-vous continuer? + + + SMESH_MESHIO_NOT_INSTALLED + Meshio n'est pas installé! +L'opération sera annulée. + +Essayez d'installer meshio avec une commande: +pip install meshio[all] EXPORT_NOT_SUPPORTED diff --git a/src/SMESHGUI/SMESH_msg_ja.ts b/src/SMESHGUI/SMESH_msg_ja.ts index a2704dba5..37cc0a015 100644 --- a/src/SMESHGUI/SMESH_msg_ja.ts +++ b/src/SMESHGUI/SMESH_msg_ja.ts @@ -723,6 +723,14 @@ MEN_GMF GMFファイル + + MEN_IMPORT_MESHIO + 他の形式... (meshio) + + + MEN_EXPORT_MESHIO + 他の形式... (meshio) + MEN_MERGE 節点の結合 @@ -1743,6 +1751,10 @@ SMESH_EXPORT_FAILED メッシュをエクスポートすることができません。ディスクの空き領域を確認してください。 + + SMESH_EXPORT_FAILED_SHORT + メッシュのエクスポートに失敗しました。 + SMESH_EXPORT_MED_DUPLICATED_GRP 「%1」メッシュ内で重複するグループの名前です。エクスポートをキャンセルすることができ、名前の変更、結果の MED ファイル名に非グループの場合は研究の名前を一致しません。続行しますか。 @@ -1763,6 +1775,22 @@ SMESH_EXPORT_MED_MESH_NAMES_COLLISION 選択したファイルには既に次の名を持つメッシュが含まれています: %1 結果ファイルが正しくない可能性があります。ファイルを上書きしますか。 + + SMESH_EXPORT_MESHIO_ONLY_MESH + 現在の実装では、中間 MED ファイルを介したエクスポートが使用されます。 +ただし、mesio は複数のメッシュを含む MED ファイルの読み取りをサポートしていません。 +選択したメッシュは別のファイルに保存されます。 + +続けたいですか? + + + SMESH_MESHIO_NOT_INSTALLED + メシオはインストールされていません! +操作はキャンセルされます。 + +次のコマンドで mesio をインストールしてみます。 +pip install meshio[all] + EXPORT_NOT_SUPPORTED 名前 '%1' を %2 %3 とメッシュのエクスポートは無視されます。続行しますか。 diff --git a/src/SMESH_I/CMakeLists.txt b/src/SMESH_I/CMakeLists.txt index e90b62654..27189b4fd 100644 --- a/src/SMESH_I/CMakeLists.txt +++ b/src/SMESH_I/CMakeLists.txt @@ -117,6 +117,7 @@ SET(SMESHEngine_HEADERS SMESH_Homard_i.hxx SMESH_SequentialMesh_i.hxx SMESH_ParallelMesh_i.hxx + SMESH_Meshio.h ) # --- sources --- @@ -147,6 +148,7 @@ SET(SMESHEngine_SOURCES MG_ADAPT_i.cxx SMESH_Homard_i.cxx SMESH_ParallelMesh_i.cxx + SMESH_Meshio.cxx ) # --- rules --- diff --git a/src/SMESH_I/SMESH_Gen_i.cxx b/src/SMESH_I/SMESH_Gen_i.cxx index 265be5074..1c78a2526 100644 --- a/src/SMESH_I/SMESH_Gen_i.cxx +++ b/src/SMESH_I/SMESH_Gen_i.cxx @@ -112,6 +112,7 @@ #include #include #include +#include "SMESH_Meshio.h" // to pass CORBA exception through SMESH_TRY #define SMY_OWN_CATCH catch( SALOME::SALOME_Exception& se ) { throw se; } @@ -1350,6 +1351,39 @@ namespace SALOME::BAD_PARAM ); } } + + //================================================================================ + /*! + * \brief Makes a python dump for a function by iterating the given SObjects + */ + //================================================================================ + + void functionToPythonDump( + SMESH_Gen_i* smesh, const std::string& functionName, std::vector& sobjects) + { + TPythonDump aPythonDump(smesh); + aPythonDump << "(["; + + int i = 0; + for (const SALOMEDS::SObject_wrap& so : sobjects) + { + if (i > 0) + { + aPythonDump << ", "; + } + + if (!so->_is_nil()) + { + aPythonDump << so; + } + else + { + aPythonDump << "mesh_" << i; + } + } + + aPythonDump << "], status) = " << smesh << functionName; + } } //============================================================================= @@ -1649,6 +1683,91 @@ SMESH_Gen_i::CreateMeshesFromGMF( const char* theFileName, return aMesh._retn(); } +//================================================================================ +/*! + * \brief Create a mesh and import data from any file supported by meshio library + */ +//================================================================================ + +SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromMESHIO(const char* theFileName, + SMESH::DriverMED_ReadStatus& theStatus) +{ + Unexpect aCatch(SALOME_SalomeException); + checkFileReadable(theFileName); + + MESSAGE("Import part with meshio through an intermediate MED file"); + + // Create an object that holds a temp file name and + // removes the file when goes out of scope. + SMESH_Meshio meshio; + const QString tempFileName = meshio.CreateTempFileName(theFileName); + + // Convert temp file into a target one with meshio command + meshio.Convert(theFileName, tempFileName); + + // We don't need a python dump from SMESH_Gen_i::CreateMeshesFromMED(), so + // we can't use this method as is here. The followed code is an edited part of + // copy pasted CreateMeshesFromMED(). + + // Retrieve mesh names from the file + DriverMED_R_SMESHDS_Mesh myReader; + myReader.SetFile(tempFileName.toStdString()); + myReader.SetMeshId(-1); + Driver_Mesh::Status aStatus; + list aNames = myReader.GetMeshNames(aStatus); + SMESH::mesh_array_var aResult = new SMESH::mesh_array(); + theStatus = (SMESH::DriverMED_ReadStatus)aStatus; + + if (theStatus == SMESH::DRS_OK) + { + SALOMEDS::StudyBuilder_var aStudyBuilder; + aStudyBuilder = getStudyServant()->NewBuilder(); + aStudyBuilder->NewCommand(); // There is a transaction + + aResult->length(aNames.size()); + std::vector sobjects; + int i = 0; + + // Iterate through all meshes and create mesh objects + for (const std::string& meshName : aNames) + { + // create mesh + SMESH::SMESH_Mesh_var mesh = createMesh(); + + // publish mesh in the study + SALOMEDS::SObject_wrap aSO; + if (CanPublishInStudy(mesh)) + aSO = PublishMesh(mesh.in(), meshName.c_str()); + + // Save SO to use in a python dump + sobjects.emplace_back(aSO); + + // Read mesh data (groups are published automatically by ImportMEDFile()) + SMESH_Mesh_i* meshServant = dynamic_cast(GetServant(mesh).in()); + ASSERT(meshServant); + SMESH::DriverMED_ReadStatus status1 = + meshServant->ImportMEDFile(tempFileName.toUtf8().data(), meshName.c_str()); + if (status1 > theStatus) + theStatus = status1; + + aResult[i++] = SMESH::SMESH_Mesh::_duplicate(mesh); + meshServant->GetImpl().GetMeshDS()->Modified(); + } + + if (!aStudyBuilder->_is_nil()) + aStudyBuilder->CommitCommand(); + + // Python dump + const std::string functionName = std::string(".CreateMeshesFromMESHIO(r'") + theFileName + "')"; + functionToPythonDump(this, functionName, sobjects); + } + + // Dump creation of groups + for (CORBA::ULong i = 0; i < aResult->length(); ++i) + SMESH::ListOfGroups_var groups = aResult[i]->GetGroups(); + + return aResult._retn(); +} //============================================================================= /*! diff --git a/src/SMESH_I/SMESH_Gen_i.hxx b/src/SMESH_I/SMESH_Gen_i.hxx index ce5e28973..1b3af8ad5 100644 --- a/src/SMESH_I/SMESH_Gen_i.hxx +++ b/src/SMESH_I/SMESH_Gen_i.hxx @@ -256,6 +256,10 @@ public: CORBA::Boolean theMakeRequiredGroups, SMESH::ComputeError_out theError); + // Create a mesh and import data from any file supported by meshio library + SMESH::mesh_array* CreateMeshesFromMESHIO(const char* theFileName, + SMESH::DriverMED_ReadStatus& theStatus); + // Create dual mesh of a tetrahedron mesh SMESH::SMESH_Mesh_ptr CreateDualMesh(SMESH::SMESH_IDSource_ptr meshPart, const char* meshName, diff --git a/src/SMESH_I/SMESH_Mesh_i.cxx b/src/SMESH_I/SMESH_Mesh_i.cxx index 13c602d92..e1c8ca916 100644 --- a/src/SMESH_I/SMESH_Mesh_i.cxx +++ b/src/SMESH_I/SMESH_Mesh_i.cxx @@ -57,6 +57,7 @@ #include "SMESH_PreMeshInfo.hxx" #include "SMESH_PythonDump.hxx" #include "SMESH_subMesh_i.hxx" +#include "SMESH_Meshio.h" #include #include @@ -4052,6 +4053,55 @@ void SMESH_Mesh_i::ExportPartToMED(SMESH::SMESH_IDSource_ptr meshPart, SMESH_CATCH( SMESH::throwCorbaException ); } +//================================================================================ +/*! + * \brief Export a part of mesh to a file with meshio library + */ +//================================================================================ + +void SMESH_Mesh_i::ExportPartToMESHIO(SMESH::SMESH_IDSource_ptr meshPart, + const char* file, + const char* selectedFilter) +{ + // Get default MED version + SMESH::long_array_var medVersions = GetMEDVersionsCompatibleForAppend(); + const CORBA::Long version = medVersions[0]; + MESSAGE("Export part with meshio through MED version: " << version); + + // Default values are the same as for MED export + const bool auto_groups = false; + const bool overwrite = true; + const bool autoDimension = true; + const GEOM::ListOfFields fields; + const char* geomAssocFields = ""; + const double ZTolerance = -1.0; + const bool saveNumbers = true; + + // Create an object that holds a temp file name and + // removes the file when goes out of scope. + SMESH_Meshio meshio(selectedFilter); + const QString tempFileName = meshio.CreateTempFileName(file); + + // Export a given mesh into the temp file + MEDFileSpeCls spe(tempFileName.toUtf8().data(), overwrite, version); + this->ExportPartToMEDCommon(spe, meshPart, auto_groups, autoDimension, fields, + geomAssocFields, ZTolerance, saveNumbers); + + // Convert temp file into a target one with meshio command + meshio.Convert(tempFileName, file); + + // Prepare python dump + SMESH_TRY; + + TPythonDump() << _this() << ".ExportPartToMESHIO(" + << meshPart << ", r'" + << file << "', '" + << selectedFilter << "'" + << ")"; + + SMESH_CATCH(SMESH::throwCorbaException); +} + //================================================================================ class MEDFileMemSpeCls diff --git a/src/SMESH_I/SMESH_Mesh_i.hxx b/src/SMESH_I/SMESH_Mesh_i.hxx index d56f4e28a..131993a40 100644 --- a/src/SMESH_I/SMESH_Mesh_i.hxx +++ b/src/SMESH_I/SMESH_Mesh_i.hxx @@ -248,6 +248,10 @@ public: CORBA::Double ZTolerance, CORBA::Boolean saveNumbers ); + void ExportPartToMESHIO(SMESH::SMESH_IDSource_ptr meshPart, + const char* file, + const char* selectedFilter); + CORBA::LongLong ExportPartToMEDCoupling(SMESH::SMESH_IDSource_ptr meshPart, CORBA::Boolean auto_groups, CORBA::Boolean autoDim, diff --git a/src/SMESH_I/SMESH_Meshio.cxx b/src/SMESH_I/SMESH_Meshio.cxx new file mode 100644 index 000000000..d23d52c6c --- /dev/null +++ b/src/SMESH_I/SMESH_Meshio.cxx @@ -0,0 +1,245 @@ +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// SMESH SMESH_I : support of import / export with meshio library +// File : SMESH_Meshio.h +// Author : Konstantin Leontev, Open CASCADE S.A.S. +// + +#include "SMESH_Meshio.h" + +// SALOME KERNEL includes +#include +#include +#include +#include + +// Qt +#include + +#include + + +/*! + Constructor +*/ +SMESH_Meshio::SMESH_Meshio() +{ + CreateErrorFileName(); +} + +/*! + Constructor +*/ +SMESH_Meshio::SMESH_Meshio(const QString& selectedFilter) +: SMESH_Meshio() +{ + mySelectedFilter = selectedFilter; +} + +/*! + Destructor +*/ +SMESH_Meshio::~SMESH_Meshio() +{ + RemoveTempFile(); + RemoveErrorFile(); +} + +/*! + Convert file with meshio convert command +*/ +void SMESH_Meshio::Convert(const QString& sourceFileName, const QString& targetFileName) const +{ + // Execute meshio convert command + const QString convert = IsModernPythonVersion() ? "meshio convert " : "meshio-convert "; + const QString optArgs = GetConvertOptArgs(); + + const std::string cmd = + (convert + optArgs + " " + sourceFileName + " " + targetFileName + " 2> " + myErrorFileName).toStdString(); + MESSAGE("Call system(\"" << cmd << "\") ..."); + + const int status = system(cmd.c_str()); + MESSAGE("status: " << status); + + // Check results + if (status != 0 || !Kernel_Utils::IsExists(targetFileName.toStdString())) + { + // Get all the output from an error file + const std::string meshioErrors = ReadErrorsFromFile(); + MESSAGE("meshioErrors: \n" << meshioErrors); + + SALOME::ExceptionStruct es; + es.type = SALOME::ExceptionType::BAD_PARAM; + es.lineNumber = -1; + es.text = CORBA::string_dup( + ("MESHIO\nFailed system(\"" + cmd + "\").\n\n" + meshioErrors + "\nOperation canceled.").c_str()); + + throw SALOME::SALOME_Exception(es); + } +} + +/*! + Returns a name for a file in default temp directory + based on a target basename. +*/ +QString SMESH_Meshio::CreateTempFileName(const QString& targetFileName) +{ + // Make a name for a temp file + const QFileInfo fileInfo(targetFileName); + const QString targetBaseName = fileInfo.baseName(); + const QString dirName(SALOMEDS_Tool::GetTmpDir().c_str()); + myTempFileName = dirName + targetBaseName + ".med"; + + MESSAGE("targetFileName: " << targetFileName.toStdString()); + MESSAGE("myTempFileName: " << myTempFileName.toStdString()); + + return myTempFileName; +} + +/*! + Removes the temporary file if we have any +*/ +void SMESH_Meshio::RemoveTempFile() +{ + if (!myTempFileName.isEmpty()) + { + std::remove(myTempFileName.toStdString().c_str()); + MESSAGE("Temp file " << myTempFileName.toStdString() << " was removed"); + } +} + +/*! + Returns true if current Python equal or newer than required version for + meshio release from 5.0 and greater. +*/ +bool SMESH_Meshio::IsModernPythonVersion() +{ + // It's a version when meshio commands were changed from using + // many executables for each operation to one for everything (meshio 5.0). + // For example, from + // meshio-convert input.msh output.vtk + // to + // meshio convert input.msh output.vtk + + const std::vector minReqVersionNums = { 3, 7 }; + + auto GetCurrentVersion = []() -> QString + { + const char *envVar = std::getenv("PYTHON_VERSION"); + if (envVar && (envVar[0] != '\0')) + { + return envVar; + } + + return {}; + }; + + auto IsModernVersion = [&]() -> bool + { + const QString curVersion = GetCurrentVersion(); + MESSAGE("Current Python version: " << curVersion.toStdString()) + if (curVersion.length() < 3) + return false; + + int index = 0; + const QStringList curVersionNums = curVersion.split('.'); + for (const int minVersion : minReqVersionNums) + { + if (minVersion > curVersionNums[index].toInt()) + { + return false; + } + + ++index; + } + + return true; + }; + + static const bool isModern = IsModernVersion(); + return isModern; +} + +/*! + Creates a temp file for error output from meshio command. +*/ +void SMESH_Meshio::CreateErrorFileName() +{ + // Make a name for a temp file + const QString fileName = "meshio_errors.txt"; + const QString dirName(SALOMEDS_Tool::GetTmpDir().c_str()); + myErrorFileName = dirName + fileName; + + MESSAGE("myErrorFileName: " << myErrorFileName.toStdString()); +} + +/*! + Removes the temporary error output file if we have any +*/ +void SMESH_Meshio::RemoveErrorFile() +{ + if (!myErrorFileName.isEmpty()) + { + std::remove(myErrorFileName.toStdString().c_str()); + MESSAGE("Temp file " << myErrorFileName.toStdString() << " was removed"); + } +} + +/*! + Read all errors output from a temp file +*/ +std::string SMESH_Meshio::ReadErrorsFromFile() const +{ + if (myErrorFileName.isEmpty()) + return {}; + + std::ifstream fileStream(myErrorFileName.toStdString()); + if(fileStream) + { + std::ostringstream ss; + ss << fileStream.rdbuf(); + + return ss.str(); + } + + return {}; +} + +/*! + Get optional arguments for meshio convert command +*/ +QString SMESH_Meshio::GetConvertOptArgs() const +{ + if (mySelectedFilter.isEmpty()) + return mySelectedFilter; + + // Check what kind of option we must provide + if (mySelectedFilter.startsWith("ANSYS")) + return "-o ansys"; + else if (mySelectedFilter.startsWith("Gmsh 2")) + return "-o gmsh22"; + else if (mySelectedFilter.startsWith("Gmsh 4")) + return "-o gmsh"; + + return {}; +} diff --git a/src/SMESH_I/SMESH_Meshio.h b/src/SMESH_I/SMESH_Meshio.h new file mode 100644 index 000000000..efb41b0bf --- /dev/null +++ b/src/SMESH_I/SMESH_Meshio.h @@ -0,0 +1,61 @@ +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// SMESH SMESH_I : support of import / export with meshio library +// File : SMESH_Meshio.h +// Author : Konstantin Leontev, Open CASCADE S.A.S. +// +#ifndef SMESH_MESHIO_H +#define SMESH_MESHIO_H + +#include "SMESH.hxx" + +#include + + +class SMESH_I_EXPORT SMESH_Meshio +{ +public: + SMESH_Meshio(); + SMESH_Meshio(const QString& selectedFilter); + virtual ~SMESH_Meshio(); + + QString CreateTempFileName(const QString& targetFileName); + void Convert(const QString& sourceFileName, const QString& targetFileName) const; + + static bool IsModernPythonVersion(); + +private: + void RemoveTempFile(); + void CreateErrorFileName(); + void RemoveErrorFile(); + std::string ReadErrorsFromFile() const; + + QString GetConvertOptArgs() const; + +private: + QString myTempFileName; + QString myErrorFileName; + QString mySelectedFilter; +}; + +#endif // SMESH_MESHIO_H diff --git a/src/SMESH_SWIG/smeshBuilder.py b/src/SMESH_SWIG/smeshBuilder.py index 2401ed74c..ce1bfdc13 100644 --- a/src/SMESH_SWIG/smeshBuilder.py +++ b/src/SMESH_SWIG/smeshBuilder.py @@ -741,6 +741,19 @@ class smeshBuilder( SMESH._objref_SMESH_Gen, object ): if error.comment: print("*** CreateMeshesFromGMF() errors:\n", error.comment) return Mesh(self, self.geompyD, aSmeshMesh), error + def CreateMeshesFromMESHIO(self, theFileName): + """ + Create a Mesh object(s) importing data from from any file supported by meshio library. + + Returns: + a tuple ( list of class :class:`Mesh` instances, + :class:`SMESH.DriverMED_ReadStatus` ) + """ + + aSmeshMeshes, aStatus = SMESH._objref_SMESH_Gen.CreateMeshesFromMESHIO(self, theFileName) + aMeshes = [ Mesh(self, self.geompyD, m) for m in aSmeshMeshes ] + return aMeshes, aStatus + def Concatenate( self, meshes, uniteIdenticalGroups, mergeNodesAndElements = False, mergeTolerance = 1e-5, allGroups = False, name = "", meshToAppendTo = None): @@ -2596,6 +2609,47 @@ class Mesh(metaclass = MeshMeta): meshPart = self.mesh self.mesh.ExportGMF(meshPart, f, True) + def ExportMESHIO( + self, + fileName, + selectedFilter, + meshPart + ): + """ + Exports a part of mesh to a file with meshio library + through an intermediate MED file. + + Parametrs described below are the same as for ExportMED() method. + However, we know that _pyMesh::Process(const Handle(_pyCommand)& theCommand) method + change a position of meshPart argument when dump to a Python script for whatever reason + this way: + - to 5th place for ExportMED command + - to last place for the rest commands + + So, for this method meshPart moved to the end of the args. + Look at src/SMESH_I/SMESH_2smeshpy.cxx for related source code. + + The same note is for the name of the method that was dumped as ExportPartToMESHIO(), + but then processing just removes PartTo from the middle of the name as it was done + for all export methods. + + Parameters: + fileName: is the file name + selectedFilter: filter string selected by user in a file dialog + meshPart: a part of mesh (:class:`sub-mesh, group or filter `) + to export instead of the mesh + """ + + if isinstance(meshPart, Mesh): + meshPart = meshPart.GetMesh() + + self.mesh.ExportPartToMESHIO( + meshPart, + fileName, + selectedFilter + ) + + def ExportToMED(self, *args, **kwargs): """ Deprecated, used only for compatibility! Please, use :meth:`ExportMED` method instead. diff --git a/test/SMESH_MeshioFiles.py b/test/SMESH_MeshioFiles.py new file mode 100644 index 000000000..6bd3cc876 --- /dev/null +++ b/test/SMESH_MeshioFiles.py @@ -0,0 +1,181 @@ +# -*- coding: iso-8859-1 -*- +# Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +# ======================================= +# Testing export/import of sample meshes from meshio repository +# File : SMESH_MeshioFiles.py +# Module : SMESH + +import tempfile +import subprocess +import os +from pathlib import Path + +from SMESH_MeshioShapes import export_mesh, import_file + + +def supported_extensions(): + """ + Returns a list of format extensions that salome already supports + for import/export operations. + """ + + return [ + '.med', + '.unv', + '.stl', + '.cgns', + '.mesh', + '.meshb' + ] + + +def convert(source_file, target_file, errors): + """ + Converts files with meshio shell command. + """ + try: + cmd = 'meshio convert {} {}'.format(source_file, target_file) + print('{} start...'.format(cmd)) + + subprocess.run(['meshio', 'convert', source_file, target_file], check=True) + + return True + + except Exception: + source_ext = Path(source_file).suffix.upper() + target_ext = Path(target_file).suffix.upper() + + errors.append('[{} -> {}]: {} failed!'.format(source_ext, target_ext, cmd)) + + return False + + +def print_errors(errors): + """ + Checks if we have got any saved error messages and print them. + """ + + if not len(errors): + return + + print('\nErrors:') + for idx, err in enumerate(errors): + print('{:02}: {}'.format(idx, err)) + + print('\n===============================================') + + +def perform_ext(directory, ext, errors): + """ + Exports a given mesh and imports it back for each mesh file + through a file with a given extension. + It uses shell meshio convert command for conversion. + """ + + for subdir, _, files in os.walk(directory): + for file in files: + + # Skip helper files + if file.endswith('.md') or file.endswith('Makefile'): + continue + + filepath = os.path.join(subdir, file) + + with tempfile.NamedTemporaryFile(suffix=ext) as temp_file: + temp_file.close() # prevents PermissionError on Windows + if not convert(filepath, temp_file.name, errors): + continue + + file_extension = Path(file).suffix + with tempfile.NamedTemporaryFile(suffix=file_extension) as temp_file_back: + temp_file.close() # prevents PermissionError on Windows + temp_file_back.close() # prevents PermissionError on Windows + convert(temp_file.name, temp_file_back.name, errors) + + +def test_shell(directory, errors): + """ + Iterates salome extensions and convert meshes through + a corresponding format. + . + """ + + for ext in supported_extensions(): + perform_ext(directory, ext, errors) + + +def test_salome(directory, errors): + """ + Iterates over mesh files in a given directory and tries to import + them into salome and export back to a temp file with the same format. + """ + + for subdir, _, files in os.walk(directory): + for file in files: + + # Skip helper files + if file.endswith('.md') or file.endswith('Makefile'): + continue + + # Skip files those have issues with current meshio version + if (file.endswith('.f3grid') or + file.endswith('.ugrid') or + file.endswith('.su2') or + file.endswith('element_elset.inp') or + file.endswith('insulated-4.1.msh') or + file.endswith('insulated-2.2.msh') or + file.endswith('simple1')): + continue + + filepath = os.path.join(subdir, file) + + # Import a file + mesh = import_file(filepath, errors) + if not mesh: + continue + + file_extension = Path(file).suffix + with tempfile.NamedTemporaryFile(suffix=file_extension) as temp_file: + temp_file.close() # prevents PermissionError on Windows + export_mesh(mesh, temp_file.name, errors) + + +def test(): + """ + Tests import/export of meshes from a given directory + and prints errors if we have any. + """ + + errors = [] + directory = 'data/meshio_meshes' + + # Only for debug purpose. + # Uncomment if you need to test meshio library shell command itself. + # test_shell(directory, errors) + + test_salome(directory, errors) + + print_errors(errors) + assert not len(errors) + + +if __name__ == "__main__": + test() diff --git a/test/SMESH_MeshioShapes.py b/test/SMESH_MeshioShapes.py new file mode 100644 index 000000000..f77d7a999 --- /dev/null +++ b/test/SMESH_MeshioShapes.py @@ -0,0 +1,260 @@ +# -*- coding: iso-8859-1 -*- +# Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +# ======================================= +# Testing export/import of some simple shapes in different formats with meshio library +# File : SMESH_MeshioShapes.py +# Module : SMESH + +import tempfile +from pathlib import Path + +import salome +salome.salome_init() + +import GEOM +from salome.geom import geomBuilder + +import SMESH +from salome.smesh import smeshBuilder + +import SALOME + +# Constants +EXPORT_TITLE = 'Export' +IMPORT_TITLE = 'Import' +UNKNOWN_EXCEPTION = 'Unknown exception' +OUTPUT_DIVIDER = '\n===============================================' + + +geompy = geomBuilder.New() +smesh = smeshBuilder.New() + + +def make_plane(): + """ + Makes default plane for testing. + """ + + plane = geompy.MakeFaceHW(100, 100, 1) + geompy.addToStudy( plane, 'plane' ) + + return plane + + +def make_box(): + """ + Makes default box for testing. + """ + + box = geompy.MakeBoxDXDYDZ(200, 200, 200) + geompy.addToStudy(box, 'box') + + return box + + +def make_mesh(shape, name): + """ + Makes a mesh from a given shape. + """ + res_mesh = smesh.Mesh(shape,name) + NETGEN_1D_2D = res_mesh.Triangle(algo=smeshBuilder.NETGEN_1D2D) + isDone = res_mesh.Compute() + assert isDone + + smesh.SetName(res_mesh, name) + smesh.SetName(NETGEN_1D_2D.GetAlgorithm(), 'NETGEN 1D-2D') + smesh.SetName(res_mesh.GetMesh(), name) + + return res_mesh + + +def file_extensions(): + """ + Returns all files extensions supported by meshio. + Commented formats should be checked on next meshio release to see if the problem was fixed. + """ + + return [ + '.avs', + '.bdf', + # '.cgns', # meshio IndexError: index 2 is out of bounds for axis 1 with size 2 + # '.dat', # meshio ValueError: need at least one array to concatenate + '.dato', + '.dato.gz', + '.e', + # '.ele', # never returns from meshio convert command + '.exo', + # '.f3grid', # meshio IndexError: Replacement index 3 out of range for positional args tuple + '.fem', + # '.h5m', # meshio AttributeError: 'list' object has no attribute 'items' + '.inp', + '.mdpa', + '.med', + '.mesh', + '.meshb', + # '.msh', # meshio KeyError: "Illegal ANSYS cell type 'line' + '.nas', + # '.node', # never returns from meshio convert command + # '.obj', # meshio._exceptions.WriteError: Wavefront .obj files can only contain triangle or quad cells + # '.off', # failed on Windows only + # '.ply', # Export Warning: PLY doesn't support 64-bit integers. Casting down to 32-bit. Then import failed + '.post', + '.post.gz', + '.stl', + # '.su2', # meshio TypeError: cannot unpack non-iterable CellBlock object + # '.svg', # meshio._exceptions.WriteError: SVG can only handle flat 2D meshes + # '.ugrid', # meshio AttributeError: 'list' object has no attribute 'reshape' + '.vol', + '.vol.gz', + '.vtk', + '.vtu', + # '.wkt', # Export Warning: WTK only supports triangle cells. Skipping {", ".join(skip)} then import failed + '.xdmf', + '.xmf', + '.xml' + ] + + +def exception_handle(file_name, errors, operation_type, ex_text): + """ + Pepares and saves an exception message. + """ + + ext = Path(file_name).suffix.upper() + msg = '{} {} failed! File name: {}'.format(operation_type, ext, file_name) + if ex_text: + msg += ' Exception: ' + ex_text + OUTPUT_DIVIDER + '\n' + + errors.append(msg) + + +def export_mesh(mesh, file_name, errors): + """ + Performs an export operatin. + """ + + try: + print('Export to file: ', file_name) + + # Here we use an empty selected filter to make things simpler + mesh.ExportMESHIO(file_name, '', mesh) + return True + + except SALOME.SALOME_Exception as ex: + exception_handle(file_name, errors, EXPORT_TITLE, ex.details.text) + + except: + exception_handle(file_name, errors, EXPORT_TITLE, UNKNOWN_EXCEPTION) + + return False + + +def import_file(file_name, errors): + """ + Performs an import operatin. + """ + + try: + print('Import from file: ', file_name) + + ([mesh], status) = smesh.CreateMeshesFromMESHIO(file_name) + return mesh + + except SALOME.SALOME_Exception as ex: + exception_handle(file_name, errors, IMPORT_TITLE, ex.details.text) + + except: + exception_handle(file_name, errors, IMPORT_TITLE, UNKNOWN_EXCEPTION) + + return None + + +def print_errors(errors): + """ + Checks if we have got any saved error messages and print them. + The test failed in this case. + """ + + if not len(errors): + return + + print('\nErrors:\n') + for idx, err in enumerate(errors): + print('{:02}: {}'.format(idx, err)) + + print(OUTPUT_DIVIDER) + + +def perform(mesh, name, errors): + """ + Exports a given mesh and imports it back for each file format. + """ + + for ext in file_extensions(): + with tempfile.NamedTemporaryFile(suffix=ext, prefix=name) as file: + file.close() # prevents PermissionError on Windows + if (export_mesh(mesh, file.name, errors)): + file.close() # prevents PermissionError on Windows + import_file(file.name, errors) + + +def test_box(errors): + """ + Tests export / import of a mesh for a default box geometry. + """ + + box = make_box() + + mesh_name = 'Test_box_' + mesh = make_mesh(box, mesh_name) + perform(mesh, mesh_name, errors) + + +def test_plane(errors): + """ + Tests export / import of a mesh for a default plane geometry. + """ + + plane = make_plane() + + mesh_name = 'Test_plane_' + mesh = make_mesh(plane, mesh_name) + perform(mesh, mesh_name, errors) + + +def test(): + """ + Creates meshes from plane and box and tries to export them to a temp files + and import them back with different formats supported by meshio library. + Prints errors if we have any. + """ + + errors = [] + + test_plane(errors) + test_box(errors) + + print_errors(errors) + assert not len(errors) + + +if __name__ == "__main__": + test() diff --git a/test/data/meshio_meshes/abaqus/README.md b/test/data/meshio_meshes/abaqus/README.md new file mode 100644 index 000000000..5c77692cf --- /dev/null +++ b/test/data/meshio_meshes/abaqus/README.md @@ -0,0 +1,2 @@ +* `UUea.inp`: From http://www-h.eng.cam.ac.uk/help/programs/fe/abaqus/faq68/txt/UUea.inp.txt +* `nle1xf3c.inp`: From https://abaqus-docs.mit.edu/2017/English/SIMAINPRefResources/nle1xf3c.inp diff --git a/test/data/meshio_meshes/abaqus/UUea.inp b/test/data/meshio_meshes/abaqus/UUea.inp new file mode 100644 index 000000000..b421ea6b3 --- /dev/null +++ b/test/data/meshio_meshes/abaqus/UUea.inp @@ -0,0 +1,285 @@ +*Heading +** Job name: UUa Model name: Model-2 +** Generated by: Abaqus/CAE 6.11-1 +*Preprint, echo=NO, model=NO, history=NO, contact=NO +** +** PARTS +** +*Part, name=Part-1 +*End Part +** +** +** ASSEMBLY +** +*Assembly, name=Assembly +** +*Instance, name=Part-1-1, part=Part-1 +*Node + 1, 0., 0. + 2, 10., 0. + 3, 20., 0. + 4, 30., 0. + 5, 40., 0. + 6, 50., 0. + 7, 0., 10. + 8, 10., 10. + 9, 20., 10. + 10, 30., 10. + 11, 40., 10. + 12, 50., 10. + 13, 0., 20. + 14, 10., 20. + 15, 20., 20. + 16, 30., 20. + 17, 40., 20. + 18, 50., 20. + 19, 0., 30. + 20, 10., 30. + 21, 20., 30. + 22, 30., 30. + 23, 40., 30. + 24, 50., 30. + 25, 0., 40. + 26, 10., 40. + 27, 20., 40. + 28, 30., 40. + 29, 40., 40. + 30, 50., 40. + 31, 0., 50. + 32, 10., 50. + 33, 20., 50. + 34, 30., 50. + 35, 40., 50. + 36, 50., 50. + 37, 0., 60. + 38, 10., 60. + 39, 20., 60. + 40, 30., 60. + 41, 40., 60. + 42, 50., 60. + 43, 0., 70. + 44, 10., 70. + 45, 20., 70. + 46, 30., 70. + 47, 40., 70. + 48, 50., 70. + 49, 0., 80. + 50, 10., 80. + 51, 20., 80. + 52, 30., 80. + 53, 40., 80. + 54, 50., 80. + 55, 0., 90. + 56, 10., 90. + 57, 20., 90. + 58, 30., 90. + 59, 40., 90. + 60, 50., 90. + 61, 0., 100. + 62, 10., 100. + 63, 20., 100. + 64, 30., 100. + 65, 40., 100. + 66, 50., 100. +*Element, type=CAX4P + 1, 1, 2, 8, 7 + 2, 2, 3, 9, 8 + 3, 3, 4, 10, 9 + 4, 4, 5, 11, 10 + 5, 5, 6, 12, 11 + 6, 7, 8, 14, 13 + 7, 8, 9, 15, 14 + 8, 9, 10, 16, 15 + 9, 10, 11, 17, 16 +10, 11, 12, 18, +17 +11, 13, 14, 20, 19 +12, 14, 15, 21, 20 +13, 15, 16, 22, 21 +14, 16, 17, 23, 22 +15, 17, 18, 24, 23 +16, 19, 20, 26, 25 +17, 20, +21, 27, 26 +18, 21, 22, 28, 27 +19, 22, 23, 29, 28 +20, 23, 24, 30, 29 +21, 25, 26, 32, 31 +22, 26, 27, 33, 32 +23, 27, 28, 34, 33 +24, 28, 29, 35, 34 +25, 29, 30, 36, 35 +26, 31, 32, 38, 37 +27, 32, 33, 39, 38 +28, 33, 34, 40, 39 +29, 34, 35, 41, 40 +30, 35, 36, 42, 41 +31, 37, 38, 44, 43 +32, 38, 39, 45, 44 +33, 39, 40, 46, 45 +34, 40, 41, 47, 46 +35, 41, 42, 48, 47 +36, 43, 44, 50, 49 +37, 44, 45, 51, 50 +38, 45, 46, 52, 51 +39, 46, 47, 53, 52 +40, 47, 48, 54, 53 +41, 49, +50, 56, 55 +42, 50, 51, 57, 56 +43, 51, 52, 58, 57 +44, 52, 53, 59, 58 +45, 53, 54, 60, 59 +46, 55, 56, 62, 61 +47, 56, +57, 63, 62 +48, 57, 58, 64, 63 +49, 58, 59, +65, 64 +50, 59, 60, 66, 65 +*Nset, nset=_PickedSet2, internal, generate + 1, 66, 1 +*Elset, elset=_PickedSet2, internal, generate + 1, 50, 1 +** Section: Section-1 +*Solid Section, elset=_PickedSet2, material=Material-1 +, +*End Instance +** +*Nset, nset=_PickedSet7, internal, instance=Part-1-1, generate + 1, 61, 6 +*Elset, elset=_PickedSet7, internal, instance=Part-1-1, generate + 1, 46, 5 +*Nset, nset=_PickedSet8, internal, instance=Part-1-1, generate + 1, 6, 1 +*Elset, elset=_PickedSet8, internal, instance=Part-1-1, generate + 1, 5, 1 +*Nset, nset=_PickedSet14, internal, instance=Part-1-1, generate + 61, 66, 1 +*Elset, elset=_PickedSet14, internal, instance=Part-1-1, generate + 46, 50, 1 +*Nset, nset=_PickedSet15, internal, instance=Part-1-1, generate + 1, 66, 1 +*Elset, elset=_PickedSet15, internal, instance=Part-1-1, generate + 1, 50, 1 +*Nset, nset=_PickedSet16, internal, instance=Part-1-1, generate + 1, 66, 1 +*Elset, elset=_PickedSet16, internal, instance=Part-1-1, generate + 1, 50, 1 +*Nset, nset=_PickedSet17, internal, instance=Part-1-1, generate + 1, 66, 1 +*Elset, elset=_PickedSet17, internal, instance=Part-1-1, generate + 1, 50, 1 +*Elset, elset=__PickedSurf12_S3, internal, instance=Part-1-1, generate + 46, 50, 1 +*Surface, type=ELEMENT, name=_PickedSurf12, internal +__PickedSurf12_S3, S3 +*Elset, elset=__PickedSurf13_S2, internal, instance=Part-1-1, generate + 5, 50, 5 +*Surface, type=ELEMENT, name=_PickedSurf13, internal +__PickedSurf13_S2, S2 +*Elset, elset=__PickedSurf18_S3, internal, instance=Part-1-1, generate + 46, 50, 1 +*Surface, type=ELEMENT, name=_PickedSurf18, internal +__PickedSurf18_S3, S3 +*End Assembly +*Amplitude, name=Amp-1 + 0., 0., 1., 1. +*Amplitude, name=Amp-2 + 0., 0., 1., 1. +** +** MATERIALS +** +*Material, name=Material-1 +*Density + 2.7e-06, +*Elastic,dependencies=1 +45., 0.2, 0. +75., 0.2, 100. +*Permeability, specific=10. + 1e-08, 0.3 +*Mohr Coulomb, dependencies=1 +30.,10., , 0. +40.,20., , 100. +*Mohr Coulomb Hardening + 0.2, 0., + 0.4, 0.05, + 0.6, 0.09, +** +** BOUNDARY CONDITIONS +** +** Name: Bottom-nodes Type: Symmetry/Antisymmetry/Encastre +*Boundary +_PickedSet8, YSYMM +** Name: Side-nodes Type: Symmetry/Antisymmetry/Encastre +*Boundary +_PickedSet7, XSYMM +** +** PREDEFINED FIELDS +** +** Name: Predefined Field-1 Type: Geostatic stress +*Initial Conditions, type=STRESS, GEOSTATIC +_PickedSet15, -0.221, 0., -0.221, 100., 1., 1. +** Name: Predefined Field-2 Type: Void ratio +*Initial Conditions, TYPE=RATIO +_PickedSet16, 0.3 +** Name: Predefined Field-3 Type: Pore pressure +*Initial Conditions, TYPE=PORE PRESSURE +_PickedSet17, 1. +** ---------------------------------------------------------------- +** +** STEP: Step-1 +** +*Step, name=Step-1 +*Geostatic +** +*FIELD, VARIABLE=1, USER +** +** +** LOADS +** +** Name: Side-Confining-Stress Type: Pressure +*Dsload +_PickedSurf13, P, 1.221 +** Name: Top-Confining-Stress Type: Pressure +*Dsload +_PickedSurf12, P, 1.221 +** +** OUTPUT REQUESTS +** +*Restart, write, frequency=0 +** +** FIELD OUTPUT: F-Output-1 +** +*Output, field, variable=PRESELECT +** +** HISTORY OUTPUT: H-Output-1 +** +*Output, history, variable=PRESELECT +*End Step +** ---------------------------------------------------------------- +** +** STEP: Step-2 +** +*Step, name=Step-2 +*Soils, consolidation, end=PERIOD, utol=1000. +0.01, 1., 1e-05, 0.01, +** +** BOUNDARY CONDITIONS +** +** Name: BC-4 Type: Displacement/Rotation +*Boundary, amplitude=Amp-1 +_PickedSet14, 2, 2, -50. +** +** OUTPUT REQUESTS +** +*Restart, write, frequency=0 +** +** FIELD OUTPUT: F-Output-1 +** +*Output, field, variable=PRESELECT +** +** HISTORY OUTPUT: H-Output-1 +** +*Output, history, variable=PRESELECT +*End Step diff --git a/test/data/meshio_meshes/abaqus/element_elset.inp b/test/data/meshio_meshes/abaqus/element_elset.inp new file mode 100644 index 000000000..42c197de9 --- /dev/null +++ b/test/data/meshio_meshes/abaqus/element_elset.inp @@ -0,0 +1,14 @@ +*Heading +Abaqus DataFile Version 6.14 +*Node +1, 1, 0, 0 +2, 1, 1, 0 +3, 2, 0.5, 0 +4, 0, 0.5, 0 +*Element, type=S3, ELSET=right +1, 1, 2, 3 +*Element, type=S3, ELSET=left +2, 1, 2, 4 +*Elset, elset=all +right +left \ No newline at end of file diff --git a/test/data/meshio_meshes/abaqus/nle1xf3c.inp b/test/data/meshio_meshes/abaqus/nle1xf3c.inp new file mode 100644 index 000000000..c25c5f3fd --- /dev/null +++ b/test/data/meshio_meshes/abaqus/nle1xf3c.inp @@ -0,0 +1,59 @@ +*HEADING +: NAFEMS TEST LE1, Plane Stress Elements -- Elliptic Membr. [CPS3] +*RESTART,WRITE +*NODE, NSET=CF000 + 1, 0.000000000E+00, 0.100000000E+01, 0.000000000E+00 + 2, 0.000000000E+00, 0.187500000E+01, 0.000000000E+00 + 3, 0.000000000E+00, 0.275000000E+01, 0.000000000E+00 + 4, 0.116500008E+01, 0.812829971E+00, 0.000000000E+00 + 5, 0.147400010E+01, 0.155601501E+01, 0.000000000E+00 + 6, 0.178300011E+01, 0.229920006E+01, 0.000000000E+00 + 7, 0.178302014E+01, 0.452999949E+00, 0.000000000E+00 + 8, 0.230790997E+01, 0.900500059E+00, 0.000000000E+00 + 9, 0.283279991E+01, 0.134800017E+01, 0.000000000E+00 + 10, 0.200000000E+01, 0.000000000E+00, 0.000000000E+00 + 11, 0.262500000E+01, 0.000000000E+00, 0.000000000E+00 + 12, 0.325000000E+01, 0.000000000E+00, 0.000000000E+00 +*ELEMENT, TYPE=CPS3, ELSET=M001P001 + 1, 5, 2, 1 + 2, 1, 4, 5 + 3, 8, 5, 4 + 4, 4, 7, 8 + 5, 11, 8, 7 + 6, 7, 10, 11 + 7, 6, 3, 2 + 8, 2, 5, 6 + 9, 9, 6, 5 + 10, 5, 8, 9 + 11, 12, 9, 8 + 12, 8, 11, 12 +*ELSET,ELSET=LOAD + 7,9,11 +*ELSET,ELSET=PR + 6, +*SOLID SECTION, ELSET=M001P001, MATERIAL=M001P001 +0.1000 , 5 +*MATERIAL, NAME=M001P001 +*ELASTIC, TYPE=ISO +0.2100E+06, 0.3000 , 0.0000E+00 +*STEP, AMP=RAMP +LOAD CASE 1 +*STATIC +*DLOAD, OP=NEW + LOAD,P1,-10.0 +*BOUNDARY, OP=NEW + 1, 1, , 0.0000E+00 + 2, 1, , 0.0000E+00 + 3, 1, , 0.0000E+00 + 10, 2, , 0.0000E+00 + 11, 2, , 0.0000E+00 + 12, 2, , 0.0000E+00 +*EL FILE, ELSET=PR, POSITION=AVERAGED AT NODES +S, +*NODE FILE, GLOBAL=YES +U, +*OUTPUT,FIELD +*NODE OUTPUT +U, +*EL PRINT,POS=AVERAGED AT NODES +*END STEP diff --git a/test/data/meshio_meshes/abaqus/wInclude_bulk.inp b/test/data/meshio_meshes/abaqus/wInclude_bulk.inp new file mode 100644 index 000000000..67e863df8 --- /dev/null +++ b/test/data/meshio_meshes/abaqus/wInclude_bulk.inp @@ -0,0 +1,13 @@ +*NODE + 1, 0.0, 0.0, 0.0 + 2, 1.0, 0.0, 0.0 + 3, 0.5, 0.0, 0.0 +*ELEMENT, type=B31 + 3, 1, 3 + 4, 3, 2 +*Elset, elset=elBm_set + 3, 4 +** Section: elBm_set Profile: elBm_set +*Beam Section, elset=elBm_set, material=Bm_mat, temperature=GRADIENT, section=I + 0.15, 0.3, 0.15, 0.15, 0.0107, 0.0107, 0.0071 + 0.0, -1.0, 0.0 \ No newline at end of file diff --git a/test/data/meshio_meshes/abaqus/wInclude_main.inp b/test/data/meshio_meshes/abaqus/wInclude_main.inp new file mode 100644 index 000000000..9bc75ad56 --- /dev/null +++ b/test/data/meshio_meshes/abaqus/wInclude_main.inp @@ -0,0 +1,7 @@ +*Heading +** meshio with *include example +*Preprint, echo=NO, model=NO, history=NO, contact=NO +*constraint controls, print=yes +*Part, name=ParametricModel +*INCLUDE,INPUT=wInclude_bulk.inp +*End Part \ No newline at end of file diff --git a/test/data/meshio_meshes/flac3d/flac3d_mesh_ex.f3grid b/test/data/meshio_meshes/flac3d/flac3d_mesh_ex.f3grid new file mode 100644 index 000000000..18d2ca105 --- /dev/null +++ b/test/data/meshio_meshes/flac3d/flac3d_mesh_ex.f3grid @@ -0,0 +1,307 @@ +* FLAC3D grid produced by FLAC3D 7.00 Release 118 +* Wed Aug 19 01:28:26 2020 +* GRIDPOINTS +G 1 0.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 +G 2 3.33333333333333e-01 0.00000000000000e+00 0.00000000000000e+00 +G 3 0.00000000000000e+00 3.33333333333333e-01 0.00000000000000e+00 +G 4 0.00000000000000e+00 0.00000000000000e+00 3.33333333333333e-01 +G 5 3.33333333333333e-01 3.33333333333333e-01 0.00000000000000e+00 +G 6 0.00000000000000e+00 3.33333333333333e-01 3.33333333333333e-01 +G 7 3.33333333333333e-01 0.00000000000000e+00 3.33333333333333e-01 +G 8 3.33333333333333e-01 3.33333333333333e-01 3.33333333333333e-01 +G 9 6.66666666666667e-01 0.00000000000000e+00 0.00000000000000e+00 +G 10 6.66666666666667e-01 3.33333333333333e-01 0.00000000000000e+00 +G 11 6.66666666666667e-01 0.00000000000000e+00 3.33333333333333e-01 +G 12 6.66666666666667e-01 3.33333333333333e-01 3.33333333333333e-01 +G 13 1.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 +G 14 1.00000000000000e+00 3.33333333333333e-01 0.00000000000000e+00 +G 15 1.00000000000000e+00 0.00000000000000e+00 3.33333333333333e-01 +G 16 1.00000000000000e+00 3.33333333333333e-01 3.33333333333333e-01 +G 17 0.00000000000000e+00 6.66666666666667e-01 0.00000000000000e+00 +G 18 3.33333333333333e-01 6.66666666666667e-01 0.00000000000000e+00 +G 19 0.00000000000000e+00 6.66666666666667e-01 3.33333333333333e-01 +G 20 3.33333333333333e-01 6.66666666666667e-01 3.33333333333333e-01 +G 21 6.66666666666667e-01 6.66666666666667e-01 0.00000000000000e+00 +G 22 6.66666666666667e-01 6.66666666666667e-01 3.33333333333333e-01 +G 23 1.00000000000000e+00 6.66666666666667e-01 0.00000000000000e+00 +G 24 1.00000000000000e+00 6.66666666666667e-01 3.33333333333333e-01 +G 25 0.00000000000000e+00 1.00000000000000e+00 0.00000000000000e+00 +G 26 3.33333333333333e-01 1.00000000000000e+00 0.00000000000000e+00 +G 27 0.00000000000000e+00 1.00000000000000e+00 3.33333333333333e-01 +G 28 3.33333333333333e-01 1.00000000000000e+00 3.33333333333333e-01 +G 29 6.66666666666667e-01 1.00000000000000e+00 0.00000000000000e+00 +G 30 6.66666666666667e-01 1.00000000000000e+00 3.33333333333333e-01 +G 31 1.00000000000000e+00 1.00000000000000e+00 0.00000000000000e+00 +G 32 1.00000000000000e+00 1.00000000000000e+00 3.33333333333333e-01 +G 33 0.00000000000000e+00 0.00000000000000e+00 6.66666666666667e-01 +G 34 0.00000000000000e+00 3.33333333333333e-01 6.66666666666667e-01 +G 35 3.33333333333333e-01 0.00000000000000e+00 6.66666666666667e-01 +G 36 3.33333333333333e-01 3.33333333333333e-01 6.66666666666667e-01 +G 37 6.66666666666667e-01 0.00000000000000e+00 6.66666666666667e-01 +G 38 6.66666666666667e-01 3.33333333333333e-01 6.66666666666667e-01 +G 39 1.00000000000000e+00 0.00000000000000e+00 6.66666666666667e-01 +G 40 1.00000000000000e+00 3.33333333333333e-01 6.66666666666667e-01 +G 41 0.00000000000000e+00 6.66666666666667e-01 6.66666666666667e-01 +G 42 3.33333333333333e-01 6.66666666666667e-01 6.66666666666667e-01 +G 43 6.66666666666667e-01 6.66666666666667e-01 6.66666666666667e-01 +G 44 1.00000000000000e+00 6.66666666666667e-01 6.66666666666667e-01 +G 45 0.00000000000000e+00 1.00000000000000e+00 6.66666666666667e-01 +G 46 3.33333333333333e-01 1.00000000000000e+00 6.66666666666667e-01 +G 47 6.66666666666667e-01 1.00000000000000e+00 6.66666666666667e-01 +G 48 1.00000000000000e+00 1.00000000000000e+00 6.66666666666667e-01 +G 49 0.00000000000000e+00 0.00000000000000e+00 1.00000000000000e+00 +G 50 0.00000000000000e+00 3.33333333333333e-01 1.00000000000000e+00 +G 51 3.33333333333333e-01 0.00000000000000e+00 1.00000000000000e+00 +G 52 3.33333333333333e-01 3.33333333333333e-01 1.00000000000000e+00 +G 53 6.66666666666667e-01 0.00000000000000e+00 1.00000000000000e+00 +G 54 6.66666666666667e-01 3.33333333333333e-01 1.00000000000000e+00 +G 55 1.00000000000000e+00 0.00000000000000e+00 1.00000000000000e+00 +G 56 1.00000000000000e+00 3.33333333333333e-01 1.00000000000000e+00 +G 57 0.00000000000000e+00 6.66666666666667e-01 1.00000000000000e+00 +G 58 3.33333333333333e-01 6.66666666666667e-01 1.00000000000000e+00 +G 59 6.66666666666667e-01 6.66666666666667e-01 1.00000000000000e+00 +G 60 1.00000000000000e+00 6.66666666666667e-01 1.00000000000000e+00 +G 61 0.00000000000000e+00 1.00000000000000e+00 1.00000000000000e+00 +G 62 3.33333333333333e-01 1.00000000000000e+00 1.00000000000000e+00 +G 63 6.66666666666667e-01 1.00000000000000e+00 1.00000000000000e+00 +G 64 1.00000000000000e+00 1.00000000000000e+00 1.00000000000000e+00 +G 65 1.66666666666667e-01 1.66666666666667e-01 1.16666666666667e+00 +G 66 1.66666666666667e-01 3.88888888888889e-01 1.16666666666667e+00 +G 67 3.88888888888889e-01 1.66666666666667e-01 1.16666666666667e+00 +G 68 3.88888888888889e-01 3.88888888888889e-01 1.16666666666667e+00 +G 69 6.11111111111111e-01 1.66666666666667e-01 1.16666666666667e+00 +G 70 6.11111111111111e-01 3.88888888888889e-01 1.16666666666667e+00 +G 71 8.33333333333333e-01 1.66666666666667e-01 1.16666666666667e+00 +G 72 8.33333333333333e-01 3.88888888888889e-01 1.16666666666667e+00 +G 73 1.66666666666667e-01 6.11111111111111e-01 1.16666666666667e+00 +G 74 3.88888888888889e-01 6.11111111111111e-01 1.16666666666667e+00 +G 75 6.11111111111111e-01 6.11111111111111e-01 1.16666666666667e+00 +G 76 8.33333333333333e-01 6.11111111111111e-01 1.16666666666667e+00 +G 77 1.66666666666667e-01 8.33333333333333e-01 1.16666666666667e+00 +G 78 3.88888888888889e-01 8.33333333333333e-01 1.16666666666667e+00 +G 79 6.11111111111111e-01 8.33333333333333e-01 1.16666666666667e+00 +G 80 8.33333333333333e-01 8.33333333333333e-01 1.16666666666667e+00 +G 81 3.33333333333333e-01 3.33333333333333e-01 1.33333333333333e+00 +G 82 3.33333333333333e-01 4.44444444444444e-01 1.33333333333333e+00 +G 83 4.44444444444444e-01 3.33333333333333e-01 1.33333333333333e+00 +G 84 4.44444444444444e-01 4.44444444444444e-01 1.33333333333333e+00 +G 85 5.55555555555556e-01 3.33333333333333e-01 1.33333333333333e+00 +G 86 5.55555555555556e-01 4.44444444444444e-01 1.33333333333333e+00 +G 87 6.66666666666667e-01 3.33333333333333e-01 1.33333333333333e+00 +G 88 6.66666666666667e-01 4.44444444444444e-01 1.33333333333333e+00 +G 89 3.33333333333333e-01 5.55555555555556e-01 1.33333333333333e+00 +G 90 4.44444444444444e-01 5.55555555555556e-01 1.33333333333333e+00 +G 91 5.55555555555556e-01 5.55555555555556e-01 1.33333333333333e+00 +G 92 6.66666666666667e-01 5.55555555555556e-01 1.33333333333333e+00 +G 93 3.33333333333333e-01 6.66666666666667e-01 1.33333333333333e+00 +G 94 4.44444444444444e-01 6.66666666666667e-01 1.33333333333333e+00 +G 95 5.55555555555556e-01 6.66666666666667e-01 1.33333333333333e+00 +G 96 6.66666666666667e-01 6.66666666666667e-01 1.33333333333333e+00 +G 97 5.00000000000000e-01 5.00000000000000e-01 1.50000000000000e+00 +G 98 1.33333333333333e+00 0.00000000000000e+00 0.00000000000000e+00 +G 99 1.33333333333333e+00 3.33333333333333e-01 0.00000000000000e+00 +G 100 1.22222222222222e+00 0.00000000000000e+00 3.33333333333333e-01 +G 101 1.22222222222222e+00 3.33333333333333e-01 3.33333333333333e-01 +G 102 1.66666666666667e+00 0.00000000000000e+00 0.00000000000000e+00 +G 103 1.66666666666667e+00 3.33333333333333e-01 0.00000000000000e+00 +G 104 1.44444444444444e+00 0.00000000000000e+00 3.33333333333333e-01 +G 105 1.44444444444444e+00 3.33333333333333e-01 3.33333333333333e-01 +G 106 2.00000000000000e+00 0.00000000000000e+00 0.00000000000000e+00 +G 107 2.00000000000000e+00 3.33333333333333e-01 0.00000000000000e+00 +G 108 1.66666666666667e+00 0.00000000000000e+00 3.33333333333333e-01 +G 109 1.66666666666667e+00 3.33333333333333e-01 3.33333333333333e-01 +G 110 1.33333333333333e+00 6.66666666666667e-01 0.00000000000000e+00 +G 111 1.22222222222222e+00 6.66666666666667e-01 3.33333333333333e-01 +G 112 1.66666666666667e+00 6.66666666666667e-01 0.00000000000000e+00 +G 113 1.44444444444444e+00 6.66666666666667e-01 3.33333333333333e-01 +G 114 2.00000000000000e+00 6.66666666666667e-01 0.00000000000000e+00 +G 115 1.66666666666667e+00 6.66666666666667e-01 3.33333333333333e-01 +G 116 1.33333333333333e+00 1.00000000000000e+00 0.00000000000000e+00 +G 117 1.22222222222222e+00 1.00000000000000e+00 3.33333333333333e-01 +G 118 1.66666666666667e+00 1.00000000000000e+00 0.00000000000000e+00 +G 119 1.44444444444444e+00 1.00000000000000e+00 3.33333333333333e-01 +G 120 2.00000000000000e+00 1.00000000000000e+00 0.00000000000000e+00 +G 121 1.66666666666667e+00 1.00000000000000e+00 3.33333333333333e-01 +G 122 1.11111111111111e+00 0.00000000000000e+00 6.66666666666667e-01 +G 123 1.11111111111111e+00 3.33333333333333e-01 6.66666666666667e-01 +G 124 1.22222222222222e+00 0.00000000000000e+00 6.66666666666667e-01 +G 125 1.22222222222222e+00 3.33333333333333e-01 6.66666666666667e-01 +G 126 1.33333333333333e+00 0.00000000000000e+00 6.66666666666667e-01 +G 127 1.33333333333333e+00 3.33333333333333e-01 6.66666666666667e-01 +G 128 1.11111111111111e+00 6.66666666666667e-01 6.66666666666667e-01 +G 129 1.22222222222222e+00 6.66666666666667e-01 6.66666666666667e-01 +G 130 1.33333333333333e+00 6.66666666666667e-01 6.66666666666667e-01 +G 131 1.11111111111111e+00 1.00000000000000e+00 6.66666666666667e-01 +G 132 1.22222222222222e+00 1.00000000000000e+00 6.66666666666667e-01 +G 133 1.33333333333333e+00 1.00000000000000e+00 6.66666666666667e-01 +G 134 0.00000000000000e+00 5.00000000000000e-01 1.50000000000000e+00 +G 135 0.00000000000000e+00 3.33333333333333e-01 1.33333333333333e+00 +G 136 0.00000000000000e+00 6.66666666666667e-01 1.33333333333333e+00 +G 137 1.66666666666667e-01 5.00000000000000e-01 1.50000000000000e+00 +G 138 0.00000000000000e+00 5.55555555555556e-01 1.22222222222222e+00 +G 139 1.66666666666667e-01 6.11111111111111e-01 1.38888888888889e+00 +G 140 1.66666666666667e-01 3.88888888888889e-01 1.38888888888889e+00 +G 141 1.66666666666667e-01 5.37037037037037e-01 1.31481481481481e+00 +G 142 0.00000000000000e+00 1.66666666666667e-01 1.16666666666667e+00 +G 143 0.00000000000000e+00 4.44444444444444e-01 1.11111111111111e+00 +G 144 1.66666666666667e-01 2.77777777777778e-01 1.27777777777778e+00 +G 145 1.66666666666667e-01 4.62962962962963e-01 1.24074074074074e+00 +G 146 0.00000000000000e+00 8.33333333333333e-01 1.16666666666667e+00 +G 147 0.00000000000000e+00 7.77777777777778e-01 1.11111111111111e+00 +G 148 1.66666666666667e-01 7.22222222222222e-01 1.27777777777778e+00 +G 149 1.66666666666667e-01 6.85185185185185e-01 1.24074074074074e+00 +G 150 0.00000000000000e+00 7.22222222222222e-01 1.05555555555556e+00 +G 151 1.66666666666667e-01 6.48148148148148e-01 1.20370370370370e+00 +G 152 3.33333333333333e-01 5.00000000000000e-01 1.50000000000000e+00 +G 153 3.33333333333333e-01 5.55555555555556e-01 1.44444444444444e+00 +G 154 3.33333333333333e-01 4.44444444444444e-01 1.44444444444444e+00 +G 155 3.33333333333333e-01 5.18518518518518e-01 1.40740740740741e+00 +G 156 3.33333333333333e-01 3.88888888888889e-01 1.38888888888889e+00 +G 157 3.33333333333333e-01 4.81481481481481e-01 1.37037037037037e+00 +G 158 3.33333333333333e-01 6.11111111111111e-01 1.38888888888889e+00 +G 159 3.33333333333333e-01 5.92592592592593e-01 1.37037037037037e+00 +G 160 3.33333333333333e-01 5.74074074074074e-01 1.35185185185185e+00 +* ZONES +Z B8 1 1 2 3 4 5 6 7 8 +Z B8 2 2 9 5 7 10 8 11 12 +Z B8 3 9 13 10 11 14 12 15 16 +Z B8 4 3 5 17 6 18 19 8 20 +Z B8 5 5 10 18 8 21 20 12 22 +Z B8 6 10 14 21 12 23 22 16 24 +Z B8 7 17 18 25 19 26 27 20 28 +Z B8 8 18 21 26 20 29 28 22 30 +Z B8 9 21 23 29 22 31 30 24 32 +Z B8 10 4 7 6 33 8 34 35 36 +Z B8 11 7 11 8 35 12 36 37 38 +Z B8 12 11 15 12 37 16 38 39 40 +Z B8 13 6 8 19 34 20 41 36 42 +Z B8 14 8 12 20 36 22 42 38 43 +Z B8 15 12 16 22 38 24 43 40 44 +Z B8 16 19 20 27 41 28 45 42 46 +Z B8 17 20 22 28 42 30 46 43 47 +Z B8 18 22 24 30 43 32 47 44 48 +Z B8 19 33 35 34 49 36 50 51 52 +Z B8 20 35 37 36 51 38 52 53 54 +Z B8 21 37 39 38 53 40 54 55 56 +Z B8 22 34 36 41 50 42 57 52 58 +Z B8 23 36 38 42 52 43 58 54 59 +Z B8 24 38 40 43 54 44 59 56 60 +Z B8 25 41 42 45 57 46 61 58 62 +Z B8 26 42 43 46 58 47 62 59 63 +Z B8 27 43 44 47 59 48 63 60 64 +Z B8 28 49 51 50 65 52 66 67 68 +Z B8 29 51 53 52 67 54 68 69 70 +Z B8 30 53 55 54 69 56 70 71 72 +Z B8 31 50 52 57 66 58 73 68 74 +Z B8 32 52 54 58 68 59 74 70 75 +Z B8 33 54 56 59 70 60 75 72 76 +Z B8 34 57 58 61 73 62 77 74 78 +Z B8 35 58 59 62 74 63 78 75 79 +Z B8 36 59 60 63 75 64 79 76 80 +Z B8 37 65 67 66 81 68 82 83 84 +Z B8 38 67 69 68 83 70 84 85 86 +Z B8 39 69 71 70 85 72 86 87 88 +Z B8 40 66 68 73 82 74 89 84 90 +Z B8 41 68 70 74 84 75 90 86 91 +Z B8 42 70 72 75 86 76 91 88 92 +Z B8 43 73 74 77 89 78 93 90 94 +Z B8 44 74 75 78 90 79 94 91 95 +Z B8 45 75 76 79 91 80 95 92 96 +Z P5 46 81 83 82 97 84 +Z P5 47 83 85 84 97 86 +Z P5 48 85 87 86 97 88 +Z P5 49 82 84 89 97 90 +Z P5 50 84 86 90 97 91 +Z P5 51 86 88 91 97 92 +Z P5 52 89 90 93 97 94 +Z P5 53 90 91 94 97 95 +Z P5 54 91 92 95 97 96 +Z B8 55 13 98 14 15 99 16 100 101 +Z B8 56 98 102 99 100 103 101 104 105 +Z B8 57 102 106 103 104 107 105 108 109 +Z B8 58 14 99 23 16 110 24 101 111 +Z B8 59 99 103 110 101 112 111 105 113 +Z B8 60 103 107 112 105 114 113 109 115 +Z B8 61 23 110 31 24 116 32 111 117 +Z B8 62 110 112 116 111 118 117 113 119 +Z B8 63 112 114 118 113 120 119 115 121 +Z B8 64 15 100 16 39 101 40 122 123 +Z B8 65 100 104 101 122 105 123 124 125 +Z B8 66 104 108 105 124 109 125 126 127 +Z B8 67 16 101 24 40 111 44 123 128 +Z B8 68 101 105 111 123 113 128 125 129 +Z B8 69 105 109 113 125 115 129 127 130 +Z B8 70 24 111 32 44 117 48 128 131 +Z B8 71 111 113 117 128 119 131 129 132 +Z B8 72 113 115 119 129 121 132 130 133 +Z W6 73 39 122 40 55 123 56 +Z W6 74 122 124 123 55 125 56 +Z W6 75 124 126 125 55 127 56 +Z W6 76 40 123 44 56 128 60 +Z W6 77 123 125 128 56 129 60 +Z W6 78 125 127 129 56 130 60 +Z W6 79 44 128 48 60 131 64 +Z W6 80 128 129 131 60 132 64 +Z W6 81 129 130 132 60 133 64 +Z B8 82 134 135 136 137 138 139 140 141 +Z B8 83 135 142 138 140 143 141 144 145 +Z B8 84 142 49 143 144 50 145 65 66 +Z B8 85 136 138 146 139 147 148 141 149 +Z B8 86 138 143 147 141 150 149 145 151 +Z B8 87 143 50 150 145 57 151 66 73 +Z W6 88 148 149 146 77 147 61 +Z W6 89 149 151 147 77 150 61 +Z W6 90 151 73 150 77 57 61 +Z B8 91 137 140 139 152 141 153 154 155 +Z B8 92 140 144 141 154 145 155 156 157 +Z B8 93 144 65 145 156 66 157 81 82 +Z B8 94 139 141 148 153 149 158 155 159 +Z B8 95 141 145 149 155 151 159 157 160 +Z B8 96 145 66 151 157 73 160 82 89 +Z W6 97 158 159 148 93 149 77 +Z W6 98 159 160 149 93 151 77 +Z W6 99 160 89 151 93 73 77 +Z P5 100 152 154 153 97 155 +Z P5 101 154 156 155 97 157 +Z P5 102 156 81 157 97 82 +Z P5 103 153 155 158 97 159 +Z P5 104 155 157 159 97 160 +Z P5 105 157 82 160 97 89 +Z T4 106 158 159 93 97 +Z T4 107 159 160 93 97 +Z T4 108 160 89 93 97 +* ZONE GROUPS +ZGROUP "Brick1" SLOT "Default" + 6 7 4 5 2 3 1 14 15 12 13 10 11 8 9 22 23 20 21 18 + 19 16 17 26 27 24 25 +ZGROUP "Pyramid2" SLOT "Default" + 38 39 36 37 34 35 32 33 46 47 44 45 42 43 40 41 54 52 30 53 + 31 50 28 51 29 48 49 +ZGROUP "Tetrahedron4" SLOT "Default" + 101 98 99 96 97 108 86 87 106 84 107 85 104 82 105 83 94 95 92 93 + 90 91 88 89 102 103 100 +ZGROUP "Wedge3" SLOT "Default" + 56 78 57 79 76 77 74 75 72 73 80 81 55 70 71 68 62 63 69 60 + 66 61 67 58 64 59 65 +* FACES +F Q4 1 1 3 6 4 +F Q4 2 3 17 19 6 +F Q4 3 17 25 27 19 +F Q4 4 4 6 34 33 +F Q4 5 6 19 41 34 +F Q4 6 19 27 45 41 +F Q4 7 33 34 50 49 +F Q4 8 34 41 57 50 +F Q4 9 41 45 61 57 +F Q4 10 135 138 136 134 +F Q4 11 142 143 138 135 +F Q4 12 49 50 143 142 +F Q4 13 138 147 146 136 +F Q4 14 143 150 147 138 +F Q4 15 50 57 150 143 +F T3 16 146 147 61 +F T3 17 147 150 61 +F T3 18 150 57 61 +* FACE GROUPS +FGROUP "bottom" SLOT "Default" + 6 7 4 5 2 3 1 14 15 12 13 10 11 8 9 18 16 17 diff --git a/test/data/meshio_meshes/flac3d/flac3d_mesh_ex_bin.f3grid b/test/data/meshio_meshes/flac3d/flac3d_mesh_ex_bin.f3grid new file mode 100644 index 0000000000000000000000000000000000000000..ff3406940856984680af824bc073cacb3c910774 GIT binary patch literal 9517 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 Ux)~4VA$ov^caRRv_3;_~9|CHJ-T(jq literal 0 HcmV?d00001 diff --git a/test/data/meshio_meshes/med/README.md b/test/data/meshio_meshes/med/README.md new file mode 100644 index 000000000..aedac705b --- /dev/null +++ b/test/data/meshio_meshes/med/README.md @@ -0,0 +1,54 @@ +`cylinder.med` is first generated by salome 9.2.2. The mesh version is then modified by HDFView by changing the mesh version from 4.0.0 to 3.0.0 so that it can also be read in gmsh. + +`box.med` is generated by code_aster 13.6 using the following command file. A specific displacement field is prescribed to an orthotropic hexahedral element, and we verify if meshio is able to read the current stress/strain/energy data. + +``` +DEBUT() + +mesh = LIRE_MAILLAGE(FORMAT='MED', INFO=2, UNITE=20) + +mesh = DEFI_GROUP( + reuse=mesh, MAILLAGE=mesh, + CREA_GROUP_NO=(_F(NOM='Left', NOEUD=('N1', 'N2', 'N3', 'N4')), + _F(NOM='Right', NOEUD=('N5', 'N6', 'N7', 'N8')))) + +model = AFFE_MODELE( + AFFE=_F(MODELISATION=('3D', ), PHENOMENE='MECANIQUE', TOUT='OUI'), + MAILLAGE=mesh +) + +mat = DEFI_MATERIAU( + ELAS_ORTH=_F(RHO=1.37486e-09, E_L=5329.16, E_T=2418.93, E_N=1746.66, + G_LT=1202.6, G_TN=515.638, G_LN=569.752, + NU_LT=0.450006, NU_TN=0.564862, NU_LN=0.397544, + ALPHA_L=1.0163e-05, ALPHA_T=2.67311e-05, ALPHA_N=6.86122e-05)) + +load = AFFE_CHAR_MECA( + MODELE=model, DDL_IMPO=(_F(GROUP_NO='Left', DX=0, DY=0, DZ=0), + _F(GROUP_NO='Right', DX=1, DY=1, DZ=1)) +) + +fieldmat = AFFE_MATERIAU( + AFFE=_F(MATER=(mat, ), TOUT='OUI'), + MODELE=model +) + +resu = MECA_STATIQUE( + CHAM_MATER=fieldmat, + EXCIT=_F(CHARGE=load), + MODELE=model, + OPTION='SANS', + SOLVEUR=_F(METHODE='MUMPS') +) + +resu = CALC_CHAMP( + reuse=resu, RESULTAT=resu, CONTRAINTE='SIEF_ELNO', DEFORMATION='EPSI_ELNO', ENERGIE=('ENEL_ELEM', 'ENEL_ELNO')) + +IMPR_RESU( + FORMAT='MED', + RESU=_F(RESULTAT=resu), + UNITE=80 +) + +FIN() +``` diff --git a/test/data/meshio_meshes/med/box.med b/test/data/meshio_meshes/med/box.med new file mode 100644 index 0000000000000000000000000000000000000000..39562abf2f7795d899b5f515231c581de6a722ea GIT binary patch literal 21200 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 BtwR6+ literal 0 HcmV?d00001 diff --git a/test/data/meshio_meshes/med/cylinder.med b/test/data/meshio_meshes/med/cylinder.med new file mode 100644 index 0000000000000000000000000000000000000000..86c6ac1f486fdecf01a3205d324939264e591a15 GIT binary patch literal 23913 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 literal 0 HcmV?d00001 diff --git a/test/data/meshio_meshes/medit/cube86.mesh b/test/data/meshio_meshes/medit/cube86.mesh new file mode 100644 index 000000000..504f99873 --- /dev/null +++ b/test/data/meshio_meshes/medit/cube86.mesh @@ -0,0 +1,211 @@ +MeshVersionFormatted 1 + +Dimension +3 +#Mesh generated by GAMBIT converted by GAMBIT_to_LifeV (Martin P.) + +Vertices +39 +1 0 1 6 +1 0 0 4 +1 0 0.5 3 +1 1 0 5 +1 0.5 0 4 +1 1 1 6 +1 1 0.5 5 +1 0.5 1 6 +1 0.707565 0.707566 3 +1 0.292433 0.292434 3 +1 0.652965 0.347034 3 +1 0.347033 0.652966 3 +0 1 0 5 +0.5 1 0 5 +0 1 1 6 +0 1 0.5 5 +0.5 1 1 6 +0.292435 1 0.707566 5 +0.707567 1 0.292434 5 +0.347035 1 0.347034 5 +0.652967 1 0.652966 5 +0 0 0 4 +0 0.5 0 4 +0 0 1 6 +0 0 0.5 2 +0 0.5 1 6 +0 0.292435 0.707566 1 +0 0.707567 0.292434 1 +0 0.347035 0.347034 1 +0 0.652967 0.652966 1 +0.5 0 0 4 +0.5 0 1 6 +0.707565 0 0.707566 2 +0.292433 0 0.292434 2 +0.652965 0 0.347034 2 +0.347033 0 0.652966 2 +0.581989 0.58199 0 4 +0.581989 0.41801 1 6 +0.646741 0.569188 0.569188 0 + +Tetrahedra +86 +32 1 33 38 1 +32 36 38 33 1 +12 33 1 38 1 +12 33 3 1 1 +12 1 8 38 1 +27 32 36 38 1 +27 36 32 24 1 +27 32 38 26 1 +35 3 12 33 1 +35 10 12 3 1 +30 26 27 38 1 +27 25 36 24 1 +27 24 32 26 1 +18 26 30 38 1 +27 36 25 29 1 +17 8 9 6 1 +2 35 3 10 1 +2 35 10 31 1 +35 31 37 10 1 +37 5 11 10 1 +17 6 9 21 1 +15 18 26 30 1 +17 26 18 38 1 +34 25 36 29 1 +35 31 34 37 1 +23 34 37 29 1 +23 34 29 22 1 +23 37 28 29 1 +23 34 31 37 1 +34 25 29 22 1 +17 15 18 26 1 +15 18 30 16 1 +6 9 21 7 1 +37 4 19 11 1 +37 11 5 4 1 +31 37 10 5 1 +2 5 31 10 1 +37 14 19 4 1 +7 19 4 11 1 +20 37 14 19 1 +20 28 14 37 1 +20 28 30 16 1 +20 30 18 16 1 +23 14 28 37 1 +23 31 34 22 1 +13 23 14 28 1 +20 28 16 13 1 +20 13 14 28 1 +39 37 19 11 1 +39 11 9 12 1 +39 20 19 37 1 +39 20 21 19 1 +39 19 7 11 1 +39 19 21 7 1 +39 20 18 21 1 +39 18 20 30 1 +39 38 18 30 1 +39 9 11 7 1 +39 21 9 7 1 +39 17 9 21 1 +39 38 12 8 1 +39 12 9 8 1 +39 12 38 33 1 +39 33 35 12 1 +39 10 37 11 1 +39 35 37 10 1 +39 11 12 10 1 +39 12 35 10 1 +39 38 36 33 1 +39 35 33 36 1 +39 38 17 18 1 +39 21 18 17 1 +39 29 30 28 1 +39 30 20 28 1 +39 28 37 29 1 +39 20 37 28 1 +39 36 27 29 1 +39 29 27 30 1 +39 27 36 38 1 +39 38 30 27 1 +39 37 34 29 1 +39 35 34 37 1 +39 29 34 36 1 +39 35 36 34 1 +39 8 17 38 1 +39 9 17 8 1 + +Triangles +72 +27 24 26 1 +27 25 24 1 +25 29 22 1 +23 22 29 1 +13 23 28 1 +28 16 13 1 +15 16 30 1 +15 30 26 1 +30 27 26 1 +27 29 25 1 +28 30 16 1 +23 29 28 1 +29 30 28 1 +29 27 30 1 +32 33 1 2 +33 3 1 2 +2 3 35 2 +2 35 31 2 +31 34 22 2 +34 25 22 2 +25 36 24 2 +36 32 24 2 +32 36 33 2 +35 3 33 2 +34 36 25 2 +35 34 31 2 +35 36 34 2 +35 33 36 2 +8 9 6 3 +6 9 7 3 +7 11 4 3 +11 5 4 3 +2 5 10 3 +2 10 3 3 +12 1 3 3 +12 8 1 3 +12 9 8 3 +9 11 7 3 +10 12 3 3 +5 11 10 3 +11 12 10 3 +11 9 12 3 +37 14 4 4 +37 4 5 4 +13 14 23 4 +23 31 22 4 +2 31 5 4 +23 14 37 4 +23 37 31 4 +31 37 5 4 +17 18 15 5 +15 18 16 5 +20 13 16 5 +20 14 13 5 +14 19 4 5 +7 4 19 5 +6 7 21 5 +17 6 21 5 +21 18 17 5 +20 16 18 5 +19 21 7 5 +20 19 14 5 +20 21 19 5 +20 18 21 5 +32 1 38 6 +1 8 38 6 +24 32 26 6 +17 15 26 6 +17 8 6 6 +32 38 26 6 +17 26 38 6 +8 17 38 6 diff --git a/test/data/meshio_meshes/medit/hch_strct.4.be.meshb b/test/data/meshio_meshes/medit/hch_strct.4.be.meshb new file mode 100644 index 0000000000000000000000000000000000000000..46f9e232e332995d6d7cfa1995daad54b4dd0a4f GIT binary patch literal 20308 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 literal 0 HcmV?d00001 diff --git a/test/data/meshio_meshes/medit/sphere_mixed.1.meshb b/test/data/meshio_meshes/medit/sphere_mixed.1.meshb new file mode 100644 index 0000000000000000000000000000000000000000..de016406af9264cd89ed073fb91da78e8fc5a4c3 GIT binary patch literal 371572 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≫~ldCW$j#|$vx4_QJUvzh2I15EfsY{+AF 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

m&U`2Q0BZ(ob~3^pSpAyM{i}Kk{IS^^yLO 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 literal 0 HcmV?d00001 diff --git a/test/data/meshio_meshes/msh/Makefile b/test/data/meshio_meshes/msh/Makefile new file mode 100644 index 000000000..32c81f51a --- /dev/null +++ b/test/data/meshio_meshes/msh/Makefile @@ -0,0 +1,5 @@ +%-2.2.msh: %.geo + gmsh -2 -format msh2 -o $@ $< +%-4.1.msh: %.geo + gmsh -2 -o $@ $< +all: insulated-2.2.msh insulated-4.1.msh diff --git a/test/data/meshio_meshes/msh/README.md b/test/data/meshio_meshes/msh/README.md new file mode 100644 index 000000000..578ca8b67 --- /dev/null +++ b/test/data/meshio_meshes/msh/README.md @@ -0,0 +1,5 @@ +Two versions of the Gmsh MSH format are covered here: 2.2 and 4.1. + +The meshes were generated by Gmsh 4.2.2-git-0766f664d from the same Gmsh GEO file `insulated.geo` as shown in the `Makefile` (`make -j2`); the difference is that the first was passed `-format msh2`, MSH4.1 being the default. + +The meshes are coarse versions of a real finite element example and contain 111 3-node triangular domain elements, divided into two Physical Surfaces, and 21 2-node line boundary elements, in a single Physical Line. \ No newline at end of file diff --git a/test/data/meshio_meshes/msh/insulated-2.2.msh b/test/data/meshio_meshes/msh/insulated-2.2.msh new file mode 100644 index 000000000..2315acb89 --- /dev/null +++ b/test/data/meshio_meshes/msh/insulated-2.2.msh @@ -0,0 +1,214 @@ +$MeshFormat +2.2 0 8 +$EndMeshFormat +$PhysicalNames +3 +1 3 "convection" +2 1 "wire" +2 2 "insulation" +$EndPhysicalNames +$Nodes +67 +1 2 0 0 +2 -0.9999999999999996 1.732050807568877 0 +3 -1.000000000000001 -1.732050807568877 0 +4 3 0 0 +5 -1.499999999999999 2.598076211353316 0 +6 -1.500000000000001 -2.598076211353315 0 +7 1.827090914409903 0.8134732881175547 0 +8 1.338261209269959 1.486289654059163 0 +9 0.6180339846184854 1.902113033932683 0 +10 -0.2090569285631289 1.989043790523414 0 +11 -1.618033990162066 1.17557050264126 0 +12 -1.95629520245368 0.4158233769964312 0 +13 -1.956295200503979 -0.4158233861690545 0 +14 -1.618033987472603 -1.175570506342989 0 +15 -0.2090569245005841 -1.989043790950405 0 +16 0.6180339927037 -1.902113031305638 0 +17 1.33826121597086 -1.486289648025645 0 +18 1.827090916184073 -0.8134732841327028 0 +19 2.866718416712208 0.884265525327689 0 +20 2.478716320112386 1.689960178349925 0 +21 1.870469399717563 2.345494452076197 0 +22 1.096023066394168 2.792621248564138 0 +23 0.2241902761490784 2.991611391889027 0 +24 -0.6675628038033028 2.924783736103966 0 +25 -2.19915561691068 2.040518211781069 0 +26 -2.70290660585828 1.301651212886028 0 +27 -2.96649247971263 0.4471267916468595 0 +28 -2.966492477661765 -0.447126805253458 0 +29 -2.702906601876784 -1.301651221153692 0 +30 -2.199155614492735 -2.040518214386993 0 +31 -0.667562799591218 -2.924783737065347 0 +32 0.2241902856922546 -2.991611391173865 0 +33 1.096023079844227 -2.792621243285379 0 +34 1.870469411104438 -2.345494442995467 0 +35 2.478716325782583 -1.689960170033273 0 +36 2.866718418080356 -0.8842655208922591 0 +37 -0.9339546057726886 -0.4158233831706852 0 +38 0.02141496984582745 1.058980690221818 0 +39 -0.1941278312183717 0.1071477189577097 0 +40 0.9834805227413372 0.6826480240423473 0 +41 -0.7686480115959173 0.5453804900735302 0 +42 0.9999999999999992 -0.2125565610925706 0 +43 0.1213651863888595 -1.154712599348981 0 +44 -0.6406278644518437 -1.11916553237733 0 +45 0.8593162093855847 -0.9615150557898803 0 +46 -0.5943735880144831 1.234440025041052 0 +47 -1.335215615779825 0.1351111195641902 0 +48 0.6825711700739076 1.215293176376306 0 +49 1.45264285928781 0.3208911877668328 0 +50 0.3069952762974677 -0.3818091452905251 0 +51 -0.2680699677513154 -0.5928725882459622 0 +52 0.3727472045845057 0.474808656902285 0 +53 1.237382076390581 -2.143208614122736 0 +54 -2.474764143942451 -5.801802924119936e-09 0 +55 -0.7488578504306679 2.3047474739574 0 +56 1.237382067086159 2.143208619683771 0 +57 -1.621540936588582 -1.800903659450643 0 +58 -1.621540937918335 1.800903656784694 0 +59 2.37039878696343 -0.5038438145749483 0 +60 -2.187495154555313 -1.033152983087325 0 +61 0.1990108480843664 2.411002866027006 0 +62 1.988484306593702 -1.377849882960454 0 +63 -2.187495156981738 1.033152975378704 0 +64 1.988484301214432 1.377849888762947 0 +65 0.1990108553729037 -2.411002864348951 0 +66 -0.7488578478505082 -2.304747474025119 0 +67 2.370398785654296 0.5038438169983678 0 +$EndNodes +$Elements +132 +1 1 2 3 4 4 19 +2 1 2 3 4 19 20 +3 1 2 3 4 20 21 +4 1 2 3 4 21 22 +5 1 2 3 4 22 23 +6 1 2 3 4 23 24 +7 1 2 3 4 24 5 +8 1 2 3 5 5 25 +9 1 2 3 5 25 26 +10 1 2 3 5 26 27 +11 1 2 3 5 27 28 +12 1 2 3 5 28 29 +13 1 2 3 5 29 30 +14 1 2 3 5 30 6 +15 1 2 3 6 6 31 +16 1 2 3 6 31 32 +17 1 2 3 6 32 33 +18 1 2 3 6 33 34 +19 1 2 3 6 34 35 +20 1 2 3 6 35 36 +21 1 2 3 6 36 4 +22 2 2 1 1 39 38 41 +23 2 2 1 1 37 39 41 +24 2 2 1 1 38 39 52 +25 2 2 1 1 13 14 37 +26 2 2 1 1 9 10 38 +27 2 2 1 1 18 1 42 +28 2 2 1 1 15 16 43 +29 2 2 1 1 41 11 47 +30 2 2 1 1 11 41 46 +31 2 2 1 1 37 14 44 +32 2 2 1 1 18 42 45 +33 2 2 1 1 43 16 45 +34 2 2 1 1 15 43 44 +35 2 2 1 1 11 12 47 +36 2 2 1 1 39 37 51 +37 2 2 1 1 9 38 48 +38 2 2 1 1 42 1 49 +39 2 2 1 1 2 11 46 +40 2 2 1 1 38 10 46 +41 2 2 1 1 41 38 46 +42 2 2 1 1 13 37 47 +43 2 2 1 1 14 3 44 +44 2 2 1 1 17 18 45 +45 2 2 1 1 3 15 44 +46 2 2 1 1 16 17 45 +47 2 2 1 1 7 8 40 +48 2 2 1 1 37 41 47 +49 2 2 1 1 50 42 52 +50 2 2 1 1 42 40 52 +51 2 2 1 1 39 50 52 +52 2 2 1 1 10 2 46 +53 2 2 1 1 12 13 47 +54 2 2 1 1 40 8 48 +55 2 2 1 1 7 40 49 +56 2 2 1 1 40 42 49 +57 2 2 1 1 48 38 52 +58 2 2 1 1 40 48 52 +59 2 2 1 1 1 7 49 +60 2 2 1 1 8 9 48 +61 2 2 1 1 43 50 51 +62 2 2 1 1 50 39 51 +63 2 2 1 1 44 43 51 +64 2 2 1 1 43 45 50 +65 2 2 1 1 37 44 51 +66 2 2 1 1 45 42 50 +67 2 2 2 2 58 25 63 +68 2 2 2 2 36 59 62 +69 2 2 2 2 24 55 61 +70 2 2 2 2 67 19 64 +71 2 2 2 2 30 57 60 +72 2 2 2 2 66 31 65 +73 2 2 2 2 11 58 63 +74 2 2 2 2 7 67 64 +75 2 2 2 2 15 66 65 +76 2 2 2 2 55 10 61 +77 2 2 2 2 59 18 62 +78 2 2 2 2 57 14 60 +79 2 2 2 2 35 36 62 +80 2 2 2 2 23 24 61 +81 2 2 2 2 25 26 63 +82 2 2 2 2 29 30 60 +83 2 2 2 2 19 20 64 +84 2 2 2 2 31 32 65 +85 2 2 2 2 13 28 60 +86 2 2 2 2 9 22 61 +87 2 2 2 2 17 34 62 +88 2 2 2 2 21 8 64 +89 2 2 2 2 33 16 65 +90 2 2 2 2 27 12 63 +91 2 2 2 2 28 13 54 +92 2 2 2 2 22 9 56 +93 2 2 2 2 34 17 53 +94 2 2 2 2 8 21 56 +95 2 2 2 2 16 33 53 +96 2 2 2 2 12 27 54 +97 2 2 2 2 4 1 59 +98 2 2 2 2 5 2 55 +99 2 2 2 2 6 3 57 +100 2 2 2 2 1 4 67 +101 2 2 2 2 2 5 58 +102 2 2 2 2 3 6 66 +103 2 2 2 2 28 29 60 +104 2 2 2 2 20 21 64 +105 2 2 2 2 32 33 65 +106 2 2 2 2 34 35 62 +107 2 2 2 2 22 23 61 +108 2 2 2 2 26 27 63 +109 2 2 2 2 4 19 67 +110 2 2 2 2 5 25 58 +111 2 2 2 2 6 31 66 +112 2 2 2 2 30 6 57 +113 2 2 2 2 24 5 55 +114 2 2 2 2 36 4 59 +115 2 2 2 2 27 28 54 +116 2 2 2 2 21 22 56 +117 2 2 2 2 33 34 53 +118 2 2 2 2 13 12 54 +119 2 2 2 2 17 16 53 +120 2 2 2 2 9 8 56 +121 2 2 2 2 11 2 58 +122 2 2 2 2 7 1 67 +123 2 2 2 2 15 3 66 +124 2 2 2 2 3 14 57 +125 2 2 2 2 2 10 55 +126 2 2 2 2 1 18 59 +127 2 2 2 2 8 7 64 +128 2 2 2 2 12 11 63 +129 2 2 2 2 16 15 65 +130 2 2 2 2 18 17 62 +131 2 2 2 2 10 9 61 +132 2 2 2 2 14 13 60 +$EndElements diff --git a/test/data/meshio_meshes/msh/insulated-4.1.msh b/test/data/meshio_meshes/msh/insulated-4.1.msh new file mode 100644 index 000000000..669924963 --- /dev/null +++ b/test/data/meshio_meshes/msh/insulated-4.1.msh @@ -0,0 +1,319 @@ +$MeshFormat +4.1 0 8 +$EndMeshFormat +$PhysicalNames +3 +1 3 "convection" +2 1 "wire" +2 2 "insulation" +$EndPhysicalNames +$Entities +8 6 2 0 +1 0 0 0 0 +2 2 0 0 0 +3 -0.9999999999999996 1.732050807568877 0 0 +4 -1.000000000000001 -1.732050807568877 0 0 +5 0 0 0 0 +6 3 0 0 0 +7 -1.499999999999999 2.598076211353316 0 0 +8 -1.500000000000001 -2.598076211353315 0 0 +1 -0.9999999999999996 0 0 2 1.996616316542536 0 0 2 2 -3 +2 -1.986476715483886 -1.732050807568877 0 -1 1.732050807568878 0 0 2 3 -4 +3 -1.000000000000001 -1.996616316542536 0 2 3.33066907387547e-16 0 0 2 4 -2 +4 -1.499999999999999 0 0 3 2.994924474813804 0 1 3 2 6 -7 +5 -2.97971507322583 -2.598076211353315 0 -1.5 2.598076211353317 0 1 3 2 7 -8 +6 -1.500000000000002 -2.994924474813804 0 3 6.661338147750939e-16 0 1 3 2 8 -6 +1 -1.986476715483886 -1.996616316542536 0 2 1.996616316542536 0 1 1 3 1 2 3 +2 -2.97971507322583 -2.994924474813804 0 3 2.994924474813804 0 1 2 6 4 5 6 -3 -2 -1 +$EndEntities +$Nodes +14 67 1 67 +0 2 0 1 +1 +2 0 0 +0 3 0 1 +2 +-0.9999999999999996 1.732050807568877 0 +0 4 0 1 +3 +-1.000000000000001 -1.732050807568877 0 +0 6 0 1 +4 +3 0 0 +0 7 0 1 +5 +-1.499999999999999 2.598076211353316 0 +0 8 0 1 +6 +-1.500000000000001 -2.598076211353315 0 +1 1 0 4 +7 +8 +9 +10 +1.827090914409903 0.8134732881175547 0 +1.338261209269959 1.486289654059163 0 +0.6180339846184854 1.902113033932683 0 +-0.2090569285631289 1.989043790523414 0 +1 2 0 4 +11 +12 +13 +14 +-1.618033990162066 1.17557050264126 0 +-1.95629520245368 0.4158233769964312 0 +-1.956295200503979 -0.4158233861690545 0 +-1.618033987472603 -1.175570506342989 0 +1 3 0 4 +15 +16 +17 +18 +-0.2090569245005841 -1.989043790950405 0 +0.6180339927037 -1.902113031305638 0 +1.33826121597086 -1.486289648025645 0 +1.827090916184073 -0.8134732841327028 0 +1 4 0 6 +19 +20 +21 +22 +23 +24 +2.866718416712208 0.884265525327689 0 +2.478716320112386 1.689960178349925 0 +1.870469399717563 2.345494452076197 0 +1.096023066394168 2.792621248564138 0 +0.2241902761490784 2.991611391889027 0 +-0.6675628038033028 2.924783736103966 0 +1 5 0 6 +25 +26 +27 +28 +29 +30 +-2.19915561691068 2.040518211781069 0 +-2.70290660585828 1.301651212886028 0 +-2.96649247971263 0.4471267916468595 0 +-2.966492477661765 -0.447126805253458 0 +-2.702906601876784 -1.301651221153692 0 +-2.199155614492735 -2.040518214386993 0 +1 6 0 6 +31 +32 +33 +34 +35 +36 +-0.667562799591218 -2.924783737065347 0 +0.2241902856922546 -2.991611391173865 0 +1.096023079844227 -2.792621243285379 0 +1.870469411104438 -2.345494442995467 0 +2.478716325782583 -1.689960170033273 0 +2.866718418080356 -0.8842655208922591 0 +2 1 0 16 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +-0.9339546057726886 -0.4158233831706852 0 +0.02141496984582745 1.058980690221818 0 +-0.1941278312183717 0.1071477189577097 0 +0.9834805227413372 0.6826480240423473 0 +-0.7686480115959173 0.5453804900735302 0 +0.9999999999999992 -0.2125565610925706 0 +0.1213651863888595 -1.154712599348981 0 +-0.6406278644518437 -1.11916553237733 0 +0.8593162093855847 -0.9615150557898803 0 +-0.5943735880144831 1.234440025041052 0 +-1.335215615779825 0.1351111195641902 0 +0.6825711700739076 1.215293176376306 0 +1.45264285928781 0.3208911877668328 0 +0.3069952762974677 -0.3818091452905251 0 +-0.2680699677513154 -0.5928725882459622 0 +0.3727472045845057 0.474808656902285 0 +2 2 0 15 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +1.237382076390581 -2.143208614122736 0 +-2.474764143942451 -5.801802924119936e-09 0 +-0.7488578504306679 2.3047474739574 0 +1.237382067086159 2.143208619683771 0 +-1.621540936588582 -1.800903659450643 0 +-1.621540937918335 1.800903656784694 0 +2.37039878696343 -0.5038438145749483 0 +-2.187495154555313 -1.033152983087325 0 +0.1990108480843664 2.411002866027006 0 +1.988484306593702 -1.377849882960454 0 +-2.187495156981738 1.033152975378704 0 +1.988484301214432 1.377849888762947 0 +0.1990108553729037 -2.411002864348951 0 +-0.7488578478505082 -2.304747474025119 0 +2.370398785654296 0.5038438169983678 0 +$EndNodes +$Elements +5 132 1 132 +1 4 1 7 +1 4 19 +2 19 20 +3 20 21 +4 21 22 +5 22 23 +6 23 24 +7 24 5 +1 5 1 7 +8 5 25 +9 25 26 +10 26 27 +11 27 28 +12 28 29 +13 29 30 +14 30 6 +1 6 1 7 +15 6 31 +16 31 32 +17 32 33 +18 33 34 +19 34 35 +20 35 36 +21 36 4 +2 1 2 45 +22 39 38 41 +23 37 39 41 +24 38 39 52 +25 13 14 37 +26 9 10 38 +27 18 1 42 +28 15 16 43 +29 41 11 47 +30 11 41 46 +31 37 14 44 +32 18 42 45 +33 43 16 45 +34 15 43 44 +35 11 12 47 +36 39 37 51 +37 9 38 48 +38 42 1 49 +39 2 11 46 +40 38 10 46 +41 41 38 46 +42 13 37 47 +43 14 3 44 +44 17 18 45 +45 3 15 44 +46 16 17 45 +47 7 8 40 +48 37 41 47 +49 50 42 52 +50 42 40 52 +51 39 50 52 +52 10 2 46 +53 12 13 47 +54 40 8 48 +55 7 40 49 +56 40 42 49 +57 48 38 52 +58 40 48 52 +59 1 7 49 +60 8 9 48 +61 43 50 51 +62 50 39 51 +63 44 43 51 +64 43 45 50 +65 37 44 51 +66 45 42 50 +2 2 2 66 +67 58 25 63 +68 36 59 62 +69 24 55 61 +70 67 19 64 +71 30 57 60 +72 66 31 65 +73 11 58 63 +74 7 67 64 +75 15 66 65 +76 55 10 61 +77 59 18 62 +78 57 14 60 +79 35 36 62 +80 23 24 61 +81 25 26 63 +82 29 30 60 +83 19 20 64 +84 31 32 65 +85 13 28 60 +86 9 22 61 +87 17 34 62 +88 21 8 64 +89 33 16 65 +90 27 12 63 +91 28 13 54 +92 22 9 56 +93 34 17 53 +94 8 21 56 +95 16 33 53 +96 12 27 54 +97 4 1 59 +98 5 2 55 +99 6 3 57 +100 1 4 67 +101 2 5 58 +102 3 6 66 +103 28 29 60 +104 20 21 64 +105 32 33 65 +106 34 35 62 +107 22 23 61 +108 26 27 63 +109 4 19 67 +110 5 25 58 +111 6 31 66 +112 30 6 57 +113 24 5 55 +114 36 4 59 +115 27 28 54 +116 21 22 56 +117 33 34 53 +118 13 12 54 +119 17 16 53 +120 9 8 56 +121 11 2 58 +122 7 1 67 +123 15 3 66 +124 3 14 57 +125 2 10 55 +126 1 18 59 +127 8 7 64 +128 12 11 63 +129 16 15 65 +130 18 17 62 +131 10 9 61 +132 14 13 60 +$EndElements diff --git a/test/data/meshio_meshes/nastran/README.md b/test/data/meshio_meshes/nastran/README.md new file mode 100644 index 000000000..9a2ff1cca --- /dev/null +++ b/test/data/meshio_meshes/nastran/README.md @@ -0,0 +1 @@ +`cylinder.fem` is a HyperMesh-generated Optistruct (Nastran-like) mesh file. It contains the same mesh information as that in `../med/cylinder.med`. diff --git a/test/data/meshio_meshes/nastran/cylinder.fem b/test/data/meshio_meshes/nastran/cylinder.fem new file mode 100644 index 000000000..30149d99e --- /dev/null +++ b/test/data/meshio_meshes/nastran/cylinder.fem @@ -0,0 +1,245 @@ +$$ +$$ Optistruct Input Deck Generated by HyperMesh Version : 2017.3.0.17 +$$ Generated using HyperMesh-Optistruct Template Version : 2017.3 +$$ +$$ Template: optistruct +$$ +$$ +$$ optistruct +$ +$$------------------------------------------------------------------------------$ +$$ Case Control Cards $ +$$------------------------------------------------------------------------------$ +$$-------------------------------------------------------------- +$$ HYPERMESH TAGS +$$-------------------------------------------------------------- +$$BEGIN TAGS +$$END TAGS +$ +BEGIN BULK +$$ +$$ Stacking Information for Ply-Based Composite Definition +$$ + + + + + +$$ +$$ GRID Data +$$ +GRID 1 1.0 -2.45-160.0 +GRID 2 1.0 -2.45-161.0 +GRID 3 .7071068.70710680.0 +GRID 4 2.06-15 1.0 0.0 +GRID 5 -.707107.70710680.0 +GRID 6 -1.0 9.004-150.0 +GRID 7 -.707107-.7071070.0 +GRID 8 8.698-15-1.0 0.0 +GRID 9 .7071068-.7071070.0 +GRID 10 .7071068.70710681.0 +GRID 11 2.06-15 1.0 1.0 +GRID 12 -.707107.70710681.0 +GRID 13 -1.0 9.004-151.0 +GRID 14 -.707107-.7071071.0 +GRID 15 8.698-15-1.0 1.0 +GRID 16 .7071068-.7071071.0 +GRID 17 .3254219-6.154-20.0 +GRID 18 9.8468-2.35124360.0 +GRID 19 -0.14533-.2592060.0 +GRID 20 -.0442730.2844711.0 +GRID 21 .3224226-.2460451.0 +GRID 22 -.169874-.2417461.0 +GRID 23 -5.965-2-.291461.5227236 +GRID 24 -.412743.1771685.4583333 +GRID 25 -.271964-.345838.4791667 +GRID 26 .1950392-.464081.4583333 +GRID 27 .2936736-.1216440.5 +GRID 28 .4547628.1859033.5416667 +GRID 29 -4.085-20.440721.4791667 +GRID 30 -.247058.3278403.4868056 +GRID 31 .2479088.3405819.5163716 +GRID 32 .2528394-.303703.4738152 +GRID 33 -0.35812-7.943-2.4813956 +$$ +$$ CBAR Elements +$$ +CBAR 37 3 11.0 0.0 0.0 +CBAR 38 4 31.0 0.0 0.0 +CBAR 39 5 41.0 0.0 0.0 +CBAR 40 6 51.0 0.0 0.0 +CBAR 41 7 61.0 0.0 0.0 +CBAR 42 8 71.0 0.0 0.0 +CBAR 43 9 81.0 0.0 0.0 +CBAR 44 1 91.0 0.0 0.0 +CBAR 45 2 101.0 0.0 0.0 +CBAR 46 10 111.0 0.0 0.0 +CBAR 47 11 121.0 0.0 0.0 +CBAR 48 12 131.0 0.0 0.0 +CBAR 49 13 141.0 0.0 0.0 +CBAR 50 14 151.0 0.0 0.0 +CBAR 51 15 161.0 0.0 0.0 +CBAR 52 16 21.0 0.0 0.0 +CBAR 53 1 21.0 0.0 0.0 +$ +$HMMOVE 1 +$ 37THRU 53 +$$ +$$ CTRIA3 Data +$$ +CTRIA3 117 0 1 9 17 +CTRIA3 118 0 17 19 18 +CTRIA3 119 0 16 2 21 +CTRIA3 120 0 22 21 20 +$ +$HMMOVE 1 +$ 117THRU 120 +$$ +$$ CQUAD4 Elements +$$ +CQUAD4 19 0 3 1 17 18 +CQUAD4 20 0 4 3 18 5 +CQUAD4 21 0 6 5 18 19 +CQUAD4 22 0 7 6 19 8 +CQUAD4 23 0 9 8 19 17 +CQUAD4 24 0 2 10 20 21 +CQUAD4 25 0 10 11 12 20 +CQUAD4 26 0 12 13 22 20 +CQUAD4 27 0 13 14 15 22 +CQUAD4 28 0 15 16 21 22 +CQUAD4 29 0 11 10 3 4 +CQUAD4 30 0 13 12 5 6 +CQUAD4 31 0 14 13 6 7 +CQUAD4 32 0 16 15 8 9 +CQUAD4 33 0 2 16 9 1 +CQUAD4 34 0 1 3 10 2 +CQUAD4 35 0 5 12 11 4 +CQUAD4 36 0 8 15 14 7 +$ +$HMMOVE 1 +$ 19THRU 36 +$$ +$$ CPYRA Elements 5-noded +$$ +CPYRA 1 0 11 4 3 10 29 +CPYRA 2 0 13 6 5 12 24 +CPYRA 3 0 14 7 6 13 25 +CPYRA 4 0 16 9 8 15 26 +CPYRA 5 0 2 1 9 16 27 +CPYRA 6 0 1 2 10 3 28 +CPYRA 7 0 5 4 11 12 29 +CPYRA 8 0 8 7 14 15 25 +CPYRA 9 0 2 21 20 10 28 +CPYRA 10 0 10 20 12 11 29 +CPYRA 11 0 12 20 22 13 24 +CPYRA 12 0 13 22 15 14 25 +CPYRA 13 0 15 22 21 16 26 +CPYRA 14 0 3 18 17 1 28 +CPYRA 15 0 4 5 18 3 29 +CPYRA 16 0 6 19 18 5 24 +CPYRA 17 0 7 8 19 6 25 +CPYRA 18 0 9 17 19 8 26 +$ +$HMMOVE 1 +$ 1THRU 18 +$$ +$$ CTETRA elements 4-noded +$$ +CTETRA 54 0 29 30 27 20 +CTETRA 55 0 23 8 25 19 +CTETRA 56 0 15 25 22 23 +CTETRA 57 0 5 18 29 30 +CTETRA 58 0 23 27 33 22 +CTETRA 59 0 16 2 27 21 +CTETRA 60 0 32 19 17 26 +CTETRA 61 0 17 19 27 18 +CTETRA 62 0 31 10 29 20 +CTETRA 63 0 27 2 28 21 +CTETRA 64 0 17 1 28 27 +CTETRA 65 0 27 20 22 21 +CTETRA 66 0 32 26 17 9 +CTETRA 67 0 31 20 29 27 +CTETRA 68 0 28 20 27 21 +CTETRA 69 0 27 24 22 20 +CTETRA 70 0 28 2 27 1 +CTETRA 71 0 6 13 33 24 +CTETRA 72 0 19 24 33 27 +CTETRA 73 0 29 20 12 30 +CTETRA 74 0 16 21 32 26 +CTETRA 75 0 23 22 33 25 +CTETRA 76 0 31 18 29 3 +CTETRA 77 0 29 18 31 27 +CTETRA 78 0 23 25 33 19 +CTETRA 79 0 21 26 23 32 +CTETRA 80 0 29 18 27 30 +CTETRA 81 0 29 30 12 5 +CTETRA 82 0 27 19 32 23 +CTETRA 83 0 28 18 17 27 +CTETRA 84 0 24 33 22 13 +CTETRA 85 0 29 10 31 3 +CTETRA 86 0 23 8 15 25 +CTETRA 87 0 27 18 19 24 +CTETRA 88 0 17 1 27 9 +CTETRA 89 0 16 26 32 9 +CTETRA 90 0 26 8 23 19 +CTETRA 91 0 15 23 22 26 +CTETRA 92 0 21 32 23 27 +CTETRA 93 0 32 19 26 23 +CTETRA 94 0 26 8 15 23 +CTETRA 95 0 30 24 27 20 +CTETRA 96 0 5 18 30 24 +CTETRA 97 0 30 20 12 24 +CTETRA 98 0 30 18 27 24 +CTETRA 99 0 30 24 12 5 +CTETRA 100 0 21 27 23 22 +CTETRA 101 0 22 33 25 13 +CTETRA 102 0 28 10 31 20 +CTETRA 103 0 28 20 31 27 +CTETRA 104 0 28 18 31 3 +CTETRA 105 0 31 18 28 27 +CTETRA 106 0 31 10 28 3 +CTETRA 107 0 6 13 25 33 +CTETRA 108 0 16 32 27 9 +CTETRA 109 0 21 22 23 26 +CTETRA 110 0 27 19 17 32 +CTETRA 111 0 27 32 17 9 +CTETRA 112 0 16 21 27 32 +CTETRA 113 0 19 25 33 6 +CTETRA 114 0 24 27 22 33 +CTETRA 115 0 23 19 33 27 +CTETRA 116 0 19 6 33 24 +$ +$HMMOVE 1 +$ 54THRU 116 +$$ +$$------------------------------------------------------------------------------$ +$$ HyperMesh name and color information for generic components $ +$$------------------------------------------------------------------------------$ +$HMNAME COMP 1"misc1" +$HWCOLOR COMP 1 11 +$ + +$ + +$ +$$ +$$------------------------------------------------------------------------------$ +$$ HyperMesh Commands for loadcollectors name and color information $ +$$------------------------------------------------------------------------------$ +ENDDATA +$$ +$$------------------------------------------------------------------------------$$ +$$ Data Definition for AutoDV $$ +$$------------------------------------------------------------------------------$$ +$$ +$$-----------------------------------------------------------------------------$$ +$$ Design Variables Card for Control Perturbations $$ +$$-----------------------------------------------------------------------------$$ +$$ +$$------------------------------------------------------------------------------$ +$$ Domain Element Definitions $ +$$------------------------------------------------------------------------------$ +$$ +$$------------------------------------------------------------------------------$$ +$$ Control Perturbation $$ +$$------------------------------------------------------------------------------$$ diff --git a/test/data/meshio_meshes/nastran/cylinder_cells_first.fem b/test/data/meshio_meshes/nastran/cylinder_cells_first.fem new file mode 100644 index 000000000..f5ed46719 --- /dev/null +++ b/test/data/meshio_meshes/nastran/cylinder_cells_first.fem @@ -0,0 +1,245 @@ +$$ +$$ Optistruct Input Deck Generated by HyperMesh Version : 2017.3.0.17 +$$ Generated using HyperMesh-Optistruct Template Version : 2017.3 +$$ +$$ Template: optistruct +$$ +$$ +$$ optistruct +$ +$$------------------------------------------------------------------------------$ +$$ Case Control Cards $ +$$------------------------------------------------------------------------------$ +$$-------------------------------------------------------------- +$$ HYPERMESH TAGS +$$-------------------------------------------------------------- +$$BEGIN TAGS +$$END TAGS +$ +BEGIN BULK +$$ +$$ Stacking Information for Ply-Based Composite Definition +$$ + + + + + +$$ +$$ CBAR Elements +$$ +CBAR 37 3 11.0 0.0 0.0 +CBAR 38 4 31.0 0.0 0.0 +CBAR 39 5 41.0 0.0 0.0 +CBAR 40 6 51.0 0.0 0.0 +CBAR 41 7 61.0 0.0 0.0 +CBAR 42 8 71.0 0.0 0.0 +CBAR 43 9 81.0 0.0 0.0 +CBAR 44 1 91.0 0.0 0.0 +CBAR 45 2 101.0 0.0 0.0 +CBAR 46 10 111.0 0.0 0.0 +CBAR 47 11 121.0 0.0 0.0 +CBAR 48 12 131.0 0.0 0.0 +CBAR 49 13 141.0 0.0 0.0 +CBAR 50 14 151.0 0.0 0.0 +CBAR 51 15 161.0 0.0 0.0 +CBAR 52 16 21.0 0.0 0.0 +CBAR 53 1 21.0 0.0 0.0 +$ +$HMMOVE 1 +$ 37THRU 53 +$$ +$$ CTRIA3 Data +$$ +CTRIA3 117 0 1 9 17 +CTRIA3 118 0 17 19 18 +CTRIA3 119 0 16 2 21 +CTRIA3 120 0 22 21 20 +$ +$HMMOVE 1 +$ 117THRU 120 +$$ +$$ CQUAD4 Elements +$$ +CQUAD4 19 0 3 1 17 18 +CQUAD4 20 0 4 3 18 5 +CQUAD4 21 0 6 5 18 19 +CQUAD4 22 0 7 6 19 8 +CQUAD4 23 0 9 8 19 17 +CQUAD4 24 0 2 10 20 21 +CQUAD4 25 0 10 11 12 20 +CQUAD4 26 0 12 13 22 20 +CQUAD4 27 0 13 14 15 22 +CQUAD4 28 0 15 16 21 22 +CQUAD4 29 0 11 10 3 4 +CQUAD4 30 0 13 12 5 6 +CQUAD4 31 0 14 13 6 7 +CQUAD4 32 0 16 15 8 9 +CQUAD4 33 0 2 16 9 1 +CQUAD4 34 0 1 3 10 2 +CQUAD4 35 0 5 12 11 4 +CQUAD4 36 0 8 15 14 7 +$ +$HMMOVE 1 +$ 19THRU 36 +$$ +$$ CPYRA Elements 5-noded +$$ +CPYRA 1 0 11 4 3 10 29 +CPYRA 2 0 13 6 5 12 24 +CPYRA 3 0 14 7 6 13 25 +CPYRA 4 0 16 9 8 15 26 +CPYRA 5 0 2 1 9 16 27 +CPYRA 6 0 1 2 10 3 28 +CPYRA 7 0 5 4 11 12 29 +CPYRA 8 0 8 7 14 15 25 +CPYRA 9 0 2 21 20 10 28 +CPYRA 10 0 10 20 12 11 29 +CPYRA 11 0 12 20 22 13 24 +CPYRA 12 0 13 22 15 14 25 +CPYRA 13 0 15 22 21 16 26 +CPYRA 14 0 3 18 17 1 28 +CPYRA 15 0 4 5 18 3 29 +CPYRA 16 0 6 19 18 5 24 +CPYRA 17 0 7 8 19 6 25 +CPYRA 18 0 9 17 19 8 26 +$ +$HMMOVE 1 +$ 1THRU 18 +$$ +$$ CTETRA elements 4-noded +$$ +CTETRA 54 0 29 30 27 20 +CTETRA 55 0 23 8 25 19 +CTETRA 56 0 15 25 22 23 +CTETRA 57 0 5 18 29 30 +CTETRA 58 0 23 27 33 22 +CTETRA 59 0 16 2 27 21 +CTETRA 60 0 32 19 17 26 +CTETRA 61 0 17 19 27 18 +CTETRA 62 0 31 10 29 20 +CTETRA 63 0 27 2 28 21 +CTETRA 64 0 17 1 28 27 +CTETRA 65 0 27 20 22 21 +CTETRA 66 0 32 26 17 9 +CTETRA 67 0 31 20 29 27 +CTETRA 68 0 28 20 27 21 +CTETRA 69 0 27 24 22 20 +CTETRA 70 0 28 2 27 1 +CTETRA 71 0 6 13 33 24 +CTETRA 72 0 19 24 33 27 +CTETRA 73 0 29 20 12 30 +CTETRA 74 0 16 21 32 26 +CTETRA 75 0 23 22 33 25 +CTETRA 76 0 31 18 29 3 +CTETRA 77 0 29 18 31 27 +CTETRA 78 0 23 25 33 19 +CTETRA 79 0 21 26 23 32 +CTETRA 80 0 29 18 27 30 +CTETRA 81 0 29 30 12 5 +CTETRA 82 0 27 19 32 23 +CTETRA 83 0 28 18 17 27 +CTETRA 84 0 24 33 22 13 +CTETRA 85 0 29 10 31 3 +CTETRA 86 0 23 8 15 25 +CTETRA 87 0 27 18 19 24 +CTETRA 88 0 17 1 27 9 +CTETRA 89 0 16 26 32 9 +CTETRA 90 0 26 8 23 19 +CTETRA 91 0 15 23 22 26 +CTETRA 92 0 21 32 23 27 +CTETRA 93 0 32 19 26 23 +CTETRA 94 0 26 8 15 23 +CTETRA 95 0 30 24 27 20 +CTETRA 96 0 5 18 30 24 +CTETRA 97 0 30 20 12 24 +CTETRA 98 0 30 18 27 24 +CTETRA 99 0 30 24 12 5 +CTETRA 100 0 21 27 23 22 +CTETRA 101 0 22 33 25 13 +CTETRA 102 0 28 10 31 20 +CTETRA 103 0 28 20 31 27 +CTETRA 104 0 28 18 31 3 +CTETRA 105 0 31 18 28 27 +CTETRA 106 0 31 10 28 3 +CTETRA 107 0 6 13 25 33 +CTETRA 108 0 16 32 27 9 +CTETRA 109 0 21 22 23 26 +CTETRA 110 0 27 19 17 32 +CTETRA 111 0 27 32 17 9 +CTETRA 112 0 16 21 27 32 +CTETRA 113 0 19 25 33 6 +CTETRA 114 0 24 27 22 33 +CTETRA 115 0 23 19 33 27 +CTETRA 116 0 19 6 33 24 +$ +$HMMOVE 1 +$ 54THRU 116 +$$ +$$ GRID Data +$$ +GRID 1 1.0 -2.45-160.0 +GRID 2 1.0 -2.45-161.0 +GRID 3 .7071068.70710680.0 +GRID 4 2.06-15 1.0 0.0 +GRID 5 -.707107.70710680.0 +GRID 6 -1.0 9.004-150.0 +GRID 7 -.707107-.7071070.0 +GRID 8 8.698-15-1.0 0.0 +GRID 9 .7071068-.7071070.0 +GRID 10 .7071068.70710681.0 +GRID 11 2.06-15 1.0 1.0 +GRID 12 -.707107.70710681.0 +GRID 13 -1.0 9.004-151.0 +GRID 14 -.707107-.7071071.0 +GRID 15 8.698-15-1.0 1.0 +GRID 16 .7071068-.7071071.0 +GRID 17 .3254219-6.154-20.0 +GRID 18 9.8468-2.35124360.0 +GRID 19 -0.14533-.2592060.0 +GRID 20 -.0442730.2844711.0 +GRID 21 .3224226-.2460451.0 +GRID 22 -.169874-.2417461.0 +GRID 23 -5.965-2-.291461.5227236 +GRID 24 -.412743.1771685.4583333 +GRID 25 -.271964-.345838.4791667 +GRID 26 .1950392-.464081.4583333 +GRID 27 .2936736-.1216440.5 +GRID 28 .4547628.1859033.5416667 +GRID 29 -4.085-20.440721.4791667 +GRID 30 -.247058.3278403.4868056 +GRID 31 .2479088.3405819.5163716 +GRID 32 .2528394-.303703.4738152 +GRID 33 -0.35812-7.943-2.4813956 +$ +$$------------------------------------------------------------------------------$ +$$ HyperMesh name and color information for generic components $ +$$------------------------------------------------------------------------------$ +$HMNAME COMP 1"misc1" +$HWCOLOR COMP 1 11 +$ + +$ + +$ +$$ +$$------------------------------------------------------------------------------$ +$$ HyperMesh Commands for loadcollectors name and color information $ +$$------------------------------------------------------------------------------$ +ENDDATA +$$ +$$------------------------------------------------------------------------------$$ +$$ Data Definition for AutoDV $$ +$$------------------------------------------------------------------------------$$ +$$ +$$-----------------------------------------------------------------------------$$ +$$ Design Variables Card for Control Perturbations $$ +$$-----------------------------------------------------------------------------$$ +$$ +$$------------------------------------------------------------------------------$ +$$ Domain Element Definitions $ +$$------------------------------------------------------------------------------$ +$$ +$$------------------------------------------------------------------------------$$ +$$ Control Perturbation $$ +$$------------------------------------------------------------------------------$$ diff --git a/test/data/meshio_meshes/netgen/periodic_1d.vol b/test/data/meshio_meshes/netgen/periodic_1d.vol new file mode 100644 index 000000000..dceaff8df --- /dev/null +++ b/test/data/meshio_meshes/netgen/periodic_1d.vol @@ -0,0 +1,144 @@ +# Generated by NETGEN v6.2.2103-39-g3165e042 + +mesh3d +dimension +1 +geomtype +0 + +# surfnr bcnr domin domout np p1 p2 p3 +surfaceelements +0 + + +# matnr np p1 p2 p3 p4 +volumeelements +0 + + +# surfid 0 p1 p2 trignum1 trignum2 domin/surfnr1 domout/surfnr2 ednr1 dist1 ednr2 dist2 +edgesegmentsgi2 +50 + 1 0 1 2 -1 -1 -1 -1 1 0 1 0 + 1 0 2 3 -1 -1 -1 -1 1 0 1 0 + 1 0 3 4 -1 -1 -1 -1 1 0 1 0 + 1 0 4 5 -1 -1 -1 -1 1 0 1 0 + 1 0 5 6 -1 -1 -1 -1 1 0 1 0 + 1 0 6 7 -1 -1 -1 -1 1 0 1 0 + 1 0 7 8 -1 -1 -1 -1 1 0 1 0 + 1 0 8 9 -1 -1 -1 -1 1 0 1 0 + 1 0 9 10 -1 -1 -1 -1 1 0 1 0 + 1 0 10 11 -1 -1 -1 -1 1 0 1 0 + 1 0 11 12 -1 -1 -1 -1 1 0 1 0 + 1 0 12 13 -1 -1 -1 -1 1 0 1 0 + 1 0 13 14 -1 -1 -1 -1 1 0 1 0 + 1 0 14 15 -1 -1 -1 -1 1 0 1 0 + 1 0 15 16 -1 -1 -1 -1 1 0 1 0 + 1 0 16 17 -1 -1 -1 -1 1 0 1 0 + 1 0 17 18 -1 -1 -1 -1 1 0 1 0 + 1 0 18 19 -1 -1 -1 -1 1 0 1 0 + 1 0 19 20 -1 -1 -1 -1 1 0 1 0 + 1 0 20 21 -1 -1 -1 -1 1 0 1 0 + 1 0 21 22 -1 -1 -1 -1 1 0 1 0 + 1 0 22 23 -1 -1 -1 -1 1 0 1 0 + 1 0 23 24 -1 -1 -1 -1 1 0 1 0 + 1 0 24 25 -1 -1 -1 -1 1 0 1 0 + 1 0 25 26 -1 -1 -1 -1 1 0 1 0 + 1 0 26 27 -1 -1 -1 -1 1 0 1 0 + 1 0 27 28 -1 -1 -1 -1 1 0 1 0 + 1 0 28 29 -1 -1 -1 -1 1 0 1 0 + 1 0 29 30 -1 -1 -1 -1 1 0 1 0 + 1 0 30 31 -1 -1 -1 -1 1 0 1 0 + 1 0 31 32 -1 -1 -1 -1 1 0 1 0 + 1 0 32 33 -1 -1 -1 -1 1 0 1 0 + 1 0 33 34 -1 -1 -1 -1 1 0 1 0 + 1 0 34 35 -1 -1 -1 -1 1 0 1 0 + 1 0 35 36 -1 -1 -1 -1 1 0 1 0 + 1 0 36 37 -1 -1 -1 -1 1 0 1 0 + 1 0 37 38 -1 -1 -1 -1 1 0 1 0 + 1 0 38 39 -1 -1 -1 -1 1 0 1 0 + 1 0 39 40 -1 -1 -1 -1 1 0 1 0 + 1 0 40 41 -1 -1 -1 -1 1 0 1 0 + 1 0 41 42 -1 -1 -1 -1 1 0 1 0 + 1 0 42 43 -1 -1 -1 -1 1 0 1 0 + 1 0 43 44 -1 -1 -1 -1 1 0 1 0 + 1 0 44 45 -1 -1 -1 -1 1 0 1 0 + 1 0 45 46 -1 -1 -1 -1 1 0 1 0 + 1 0 46 47 -1 -1 -1 -1 1 0 1 0 + 1 0 47 48 -1 -1 -1 -1 1 0 1 0 + 1 0 48 49 -1 -1 -1 -1 1 0 1 0 + 1 0 49 50 -1 -1 -1 -1 1 0 1 0 + 1 0 50 51 -1 -1 -1 -1 1 0 1 0 + + +# X Y Z +points +51 + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.0200000000000000 0.0000000000000000 0.0000000000000000 + 0.0400000000000000 0.0000000000000000 0.0000000000000000 + 0.0600000000000000 0.0000000000000000 0.0000000000000000 + 0.0800000000000000 0.0000000000000000 0.0000000000000000 + 0.1000000000000000 0.0000000000000000 0.0000000000000000 + 0.1200000000000000 0.0000000000000000 0.0000000000000000 + 0.1400000000000000 0.0000000000000000 0.0000000000000000 + 0.1600000000000000 0.0000000000000000 0.0000000000000000 + 0.1800000000000000 0.0000000000000000 0.0000000000000000 + 0.2000000000000000 0.0000000000000000 0.0000000000000000 + 0.2200000000000000 0.0000000000000000 0.0000000000000000 + 0.2400000000000000 0.0000000000000000 0.0000000000000000 + 0.2600000000000000 0.0000000000000000 0.0000000000000000 + 0.2800000000000000 0.0000000000000000 0.0000000000000000 + 0.3000000000000000 0.0000000000000000 0.0000000000000000 + 0.3200000000000000 0.0000000000000000 0.0000000000000000 + 0.3400000000000000 0.0000000000000000 0.0000000000000000 + 0.3600000000000000 0.0000000000000000 0.0000000000000000 + 0.3800000000000000 0.0000000000000000 0.0000000000000000 + 0.4000000000000000 0.0000000000000000 0.0000000000000000 + 0.4200000000000000 0.0000000000000000 0.0000000000000000 + 0.4400000000000000 0.0000000000000000 0.0000000000000000 + 0.4600000000000000 0.0000000000000000 0.0000000000000000 + 0.4800000000000000 0.0000000000000000 0.0000000000000000 + 0.5000000000000000 0.0000000000000000 0.0000000000000000 + 0.5200000000000000 0.0000000000000000 0.0000000000000000 + 0.5400000000000000 0.0000000000000000 0.0000000000000000 + 0.5600000000000001 0.0000000000000000 0.0000000000000000 + 0.5800000000000000 0.0000000000000000 0.0000000000000000 + 0.6000000000000000 0.0000000000000000 0.0000000000000000 + 0.6200000000000000 0.0000000000000000 0.0000000000000000 + 0.6400000000000000 0.0000000000000000 0.0000000000000000 + 0.6600000000000000 0.0000000000000000 0.0000000000000000 + 0.6800000000000000 0.0000000000000000 0.0000000000000000 + 0.7000000000000000 0.0000000000000000 0.0000000000000000 + 0.7200000000000000 0.0000000000000000 0.0000000000000000 + 0.7400000000000000 0.0000000000000000 0.0000000000000000 + 0.7600000000000000 0.0000000000000000 0.0000000000000000 + 0.7800000000000000 0.0000000000000000 0.0000000000000000 + 0.8000000000000000 0.0000000000000000 0.0000000000000000 + 0.8200000000000000 0.0000000000000000 0.0000000000000000 + 0.8400000000000000 0.0000000000000000 0.0000000000000000 + 0.8600000000000000 0.0000000000000000 0.0000000000000000 + 0.8800000000000000 0.0000000000000000 0.0000000000000000 + 0.9000000000000000 0.0000000000000000 0.0000000000000000 + 0.9200000000000000 0.0000000000000000 0.0000000000000000 + 0.9399999999999999 0.0000000000000000 0.0000000000000000 + 0.9600000000000000 0.0000000000000000 0.0000000000000000 + 0.9800000000000000 0.0000000000000000 0.0000000000000000 + 1.0000000000000000 0.0000000000000000 0.0000000000000000 + + +# pnum index +pointelements +2 + 1 1 + 51 2 +identifications +1 + 1 51 1 +identificationtypes +1 + 2 + + +endmesh + diff --git a/test/data/meshio_meshes/netgen/periodic_2d.vol b/test/data/meshio_meshes/netgen/periodic_2d.vol new file mode 100644 index 000000000..e411d0e18 --- /dev/null +++ b/test/data/meshio_meshes/netgen/periodic_2d.vol @@ -0,0 +1,194 @@ +# Generated by NETGEN v6.2.2103-39-g3165e042 + +mesh3d +dimension +2 +geomtype +0 + +# surfnr bcnr domin domout np p1 p2 p3 +surfaceelements +58 + 2 1 0 0 3 1 5 17 + 2 1 0 0 3 5 6 21 + 2 1 0 0 3 6 7 22 + 2 1 0 0 3 6 22 21 + 2 1 0 0 3 7 8 23 + 2 1 0 0 3 7 23 22 + 2 1 0 0 3 2 24 8 + 2 1 0 0 3 8 24 23 + 2 1 0 0 3 2 9 24 + 2 1 0 0 3 9 10 25 + 2 1 0 0 3 9 25 24 + 2 1 0 0 3 10 11 26 + 2 1 0 0 3 10 26 25 + 2 1 0 0 3 11 12 27 + 2 1 0 0 3 11 27 26 + 2 1 0 0 3 3 13 12 + 2 1 0 0 3 13 14 28 + 2 1 0 0 3 14 15 29 + 2 1 0 0 3 14 29 28 + 2 1 0 0 3 15 16 30 + 2 1 0 0 3 15 30 29 + 2 1 0 0 3 4 31 16 + 2 1 0 0 3 16 31 30 + 2 1 0 0 3 4 20 31 + 2 1 0 0 3 17 32 18 + 2 1 0 0 3 18 33 19 + 2 1 0 0 3 18 32 33 + 2 1 0 0 3 19 34 20 + 2 1 0 0 3 20 34 31 + 2 1 0 0 3 19 33 34 + 2 1 0 0 3 12 13 27 + 2 1 0 0 3 13 28 27 + 2 1 0 0 3 5 21 17 + 2 1 0 0 3 22 23 35 + 2 1 0 0 3 21 22 36 + 2 1 0 0 3 22 35 36 + 2 1 0 0 3 26 27 37 + 2 1 0 0 3 27 28 37 + 2 1 0 0 3 23 24 25 + 2 1 0 0 3 23 25 35 + 2 1 0 0 3 30 31 38 + 2 1 0 0 3 31 34 38 + 2 1 0 0 3 29 30 38 + 2 1 0 0 3 28 29 39 + 2 1 0 0 3 28 39 37 + 2 1 0 0 3 29 38 39 + 2 1 0 0 3 17 21 32 + 2 1 0 0 3 21 36 32 + 2 1 0 0 3 25 26 40 + 2 1 0 0 3 32 36 33 + 2 1 0 0 3 26 37 40 + 2 1 0 0 3 33 38 34 + 2 1 0 0 3 33 36 38 + 2 1 0 0 3 25 40 35 + 2 1 0 0 3 36 39 38 + 2 1 0 0 3 35 39 36 + 2 1 0 0 3 35 40 39 + 2 1 0 0 3 37 39 40 + + +# matnr np p1 p2 p3 p4 +volumeelements +0 + + +# surfid 0 p1 p2 trignum1 trignum2 domin/surfnr1 domout/surfnr2 ednr1 dist1 ednr2 dist2 +edgesegmentsgi2 +20 + 1 0 1 5 -1 -1 1 0 1 0 1 0.2 + 1 0 5 6 -1 -1 1 0 1 0.2 1 0.4 + 1 0 6 7 -1 -1 1 0 1 0.4 1 0.6 + 1 0 7 8 -1 -1 1 0 1 0.6 1 0.8 + 1 0 8 2 -1 -1 1 0 1 0.8 1 1 + 2 0 2 9 -1 -1 1 0 2 0 2 0.2 + 2 0 9 10 -1 -1 1 0 2 0.2 2 0.4 + 2 0 10 11 -1 -1 1 0 2 0.4 2 0.6 + 2 0 11 12 -1 -1 1 0 2 0.6 2 0.8 + 2 0 12 3 -1 -1 1 0 2 0.8 2 1 + 3 0 3 13 -1 -1 1 0 3 0 3 0.2 + 3 0 13 14 -1 -1 1 0 3 0.2 3 0.4 + 3 0 14 15 -1 -1 1 0 3 0.4 3 0.6 + 3 0 15 16 -1 -1 1 0 3 0.6 3 0.8 + 3 0 16 4 -1 -1 1 0 3 0.8 3 1 + 4 0 1 17 -1 -1 0 1 4 0 4 0.2 + 4 0 17 18 -1 -1 0 1 4 0.2 4 0.4 + 4 0 18 19 -1 -1 0 1 4 0.4 4 0.6 + 4 0 19 20 -1 -1 0 1 4 0.6 4 0.8 + 4 0 20 4 -1 -1 0 1 4 0.8 4 1 + + +# X Y Z +points +40 + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 1.0000000000000000 0.0000000000000000 0.0000000000000000 + 1.0000000000000000 1.0000000000000000 0.0000000000000000 + 0.0000000000000000 1.0000000000000000 0.0000000000000000 + 0.2000000000000000 0.0000000000000000 0.0000000000000000 + 0.4000000000000000 0.0000000000000000 0.0000000000000000 + 0.6000000000000000 0.0000000000000000 0.0000000000000000 + 0.8000000000000000 0.0000000000000000 0.0000000000000000 + 1.0000000000000000 0.2000000000000000 0.0000000000000000 + 1.0000000000000000 0.4000000000000000 0.0000000000000000 + 1.0000000000000000 0.6000000000000000 0.0000000000000000 + 1.0000000000000000 0.8000000000000000 0.0000000000000000 + 0.7999999999999999 1.0000000000000000 0.0000000000000000 + 0.6000000000000000 1.0000000000000000 0.0000000000000000 + 0.4000000000000000 1.0000000000000000 0.0000000000000000 + 0.2000000000000000 1.0000000000000000 0.0000000000000000 + 0.0000000000000000 0.2000000000000000 0.0000000000000000 + 0.0000000000000000 0.4000000000000000 0.0000000000000000 + 0.0000000000000000 0.6000000000000000 0.0000000000000000 + 0.0000000000000000 0.8000000000000000 0.0000000000000000 + 0.2737029466317127 0.1811747818216966 0.0000000000000000 + 0.4805348579459315 0.1852935472807671 0.0000000000000000 + 0.6827590117435046 0.1702890061939871 0.0000000000000000 + 0.8575695844442716 0.1419063764469471 0.0000000000000000 + 0.8111112850985802 0.3258703253208415 0.0000000000000000 + 0.8493339534816288 0.5262364626047286 0.0000000000000000 + 0.8421283897191041 0.7318614438631723 0.0000000000000000 + 0.6601606467397222 0.8032633168034399 0.0000000000000000 + 0.4765343016929663 0.8179836454001187 0.0000000000000000 + 0.3132853271934791 0.8629930180472398 0.0000000000000000 + 0.1584925502078927 0.8390807603910830 0.0000000000000000 + 0.1662260298847409 0.3347019222223993 0.0000000000000000 + 0.1698338083646673 0.5130730339035593 0.0000000000000000 + 0.1324637082656786 0.6819019947250892 0.0000000000000000 + 0.5818135591952022 0.3542155081169817 0.0000000000000000 + 0.3642445694293263 0.4057099958862074 0.0000000000000000 + 0.7111939984221883 0.6337182845699614 0.0000000000000000 + 0.3154224090519101 0.6697496604451058 0.0000000000000000 + 0.5278793480475702 0.5943130585988371 0.0000000000000000 + 0.6923017137632204 0.4803955670550934 0.0000000000000000 + + +# pnum index +pointelements +4 + 1 1 + 2 2 + 3 3 + 4 4 +identifications +6 + 2 1 4 + 3 4 4 + 9 17 4 + 10 18 4 + 11 19 4 + 12 20 4 +identificationtypes +4 + 1 1 1 2 + + +bcnames +4 +1 outer +2 periodic +3 outer +4 periodic + + + + +cd2names +4 +1 +2 +3 +4 + + + + +# Surfnr Red Green Blue +face_colours +1 + 2 0.00000000 1.00000000 0.00000000 + + +endmesh + diff --git a/test/data/meshio_meshes/netgen/periodic_3d.vol b/test/data/meshio_meshes/netgen/periodic_3d.vol new file mode 100644 index 000000000..b1636e7c1 --- /dev/null +++ b/test/data/meshio_meshes/netgen/periodic_3d.vol @@ -0,0 +1,506 @@ +# Generated by NETGEN v6.2.2103-39-g3165e042 + +mesh3d +dimension +3 +geomtype +0 + +# surfnr bcnr domin domout np p1 p2 p3 +surfaceelements +108 + 1 1 1 0 3 1 9 32 + 1 1 1 0 3 9 10 33 + 1 1 1 0 3 4 34 10 + 1 1 1 0 3 10 34 33 + 1 1 1 0 3 4 28 34 + 1 1 1 0 3 3 31 11 + 1 1 1 0 3 11 35 12 + 1 1 1 0 3 7 12 36 + 1 1 1 0 3 7 36 27 + 1 1 1 0 3 12 35 36 + 1 1 1 0 3 27 37 28 + 1 1 1 0 3 28 37 34 + 1 1 1 0 3 27 36 37 + 3 6 1 0 3 49 51 53 + 1 1 1 0 3 9 33 32 + 3 6 1 0 3 30 51 49 + 1 1 1 0 3 35 37 36 + 1 1 1 0 3 33 34 37 + 1 1 1 0 3 31 32 33 + 1 1 1 0 3 11 31 35 + 1 1 1 0 3 31 33 35 + 1 1 1 0 3 33 37 35 + 7 2 1 0 3 1 22 9 + 7 2 1 0 3 9 38 10 + 7 2 1 0 3 4 10 16 + 3 6 1 0 3 49 53 50 + 7 2 1 0 3 10 38 16 + 7 2 1 0 3 6 15 26 + 7 2 1 0 3 15 16 39 + 7 2 1 0 3 15 39 26 + 3 6 1 0 3 51 52 53 + 7 2 1 0 3 2 25 21 + 7 2 1 0 3 21 40 22 + 7 2 1 0 3 25 26 39 + 7 2 1 0 3 9 22 40 + 7 2 1 0 3 21 25 40 + 7 2 1 0 3 25 39 40 + 7 2 1 0 3 9 40 38 + 7 2 1 0 3 16 38 39 + 7 2 1 0 3 38 40 39 + 4 4 1 0 3 8 13 17 + 4 4 1 0 3 13 14 41 + 4 4 1 0 3 7 42 14 + 4 4 1 0 3 14 42 41 + 4 4 1 0 3 7 27 42 + 3 6 1 0 3 29 30 49 + 4 4 1 0 3 15 43 16 + 4 4 1 0 3 4 16 44 + 4 4 1 0 3 4 44 28 + 4 4 1 0 3 16 43 44 + 3 6 1 0 3 19 29 49 + 4 4 1 0 3 6 18 15 + 4 4 1 0 3 27 28 45 + 4 4 1 0 3 27 45 42 + 4 4 1 0 3 28 44 45 + 4 4 1 0 3 13 41 17 + 4 4 1 0 3 43 45 44 + 4 4 1 0 3 41 42 45 + 4 4 1 0 3 15 18 43 + 4 4 1 0 3 17 41 18 + 4 4 1 0 3 18 41 43 + 4 4 1 0 3 41 45 43 + 2 5 1 0 3 8 17 24 + 2 5 1 0 3 17 18 46 + 2 5 1 0 3 6 26 18 + 2 5 1 0 3 18 26 46 + 3 6 1 0 3 31 50 53 + 2 5 1 0 3 5 23 47 + 2 5 1 0 3 23 24 47 + 2 5 1 0 3 2 30 25 + 2 5 1 0 3 25 48 26 + 2 5 1 0 3 25 30 48 + 2 5 1 0 3 5 47 29 + 2 5 1 0 3 29 48 30 + 2 5 1 0 3 17 46 24 + 2 5 1 0 3 29 47 48 + 2 5 1 0 3 24 46 47 + 2 5 1 0 3 46 48 47 + 3 6 1 0 3 32 53 52 + 2 5 1 0 3 26 48 46 + 3 6 1 0 3 5 29 19 + 3 6 1 0 3 19 49 20 + 3 6 1 0 3 3 20 50 + 3 6 1 0 3 3 50 31 + 3 6 1 0 3 20 49 50 + 3 6 1 0 3 2 21 30 + 3 6 1 0 3 21 22 51 + 3 6 1 0 3 1 52 22 + 3 6 1 0 3 22 52 51 + 3 6 1 0 3 1 32 52 + 3 6 1 0 3 21 51 30 + 3 6 1 0 3 31 53 32 + 8 3 1 0 3 3 11 20 + 8 3 1 0 3 11 12 54 + 8 3 1 0 3 7 14 12 + 8 3 1 0 3 12 14 54 + 8 3 1 0 3 8 24 13 + 8 3 1 0 3 13 55 14 + 8 3 1 0 3 13 24 55 + 8 3 1 0 3 5 19 23 + 8 3 1 0 3 19 20 56 + 8 3 1 0 3 23 55 24 + 8 3 1 0 3 11 56 20 + 8 3 1 0 3 19 56 23 + 8 3 1 0 3 23 56 55 + 8 3 1 0 3 11 54 56 + 8 3 1 0 3 14 55 54 + 8 3 1 0 3 54 55 56 + + +# matnr np p1 p2 p3 p4 +volumeelements +166 +1 4 33 57 59 61 +1 4 12 14 54 36 +1 4 33 38 59 57 +1 4 21 40 51 60 +1 4 49 51 53 57 +1 4 11 35 54 58 +1 4 57 59 61 64 +1 4 11 20 58 56 +1 4 54 55 56 61 +1 4 15 39 62 43 +1 4 39 43 59 62 +1 4 55 56 61 64 +1 4 1 9 65 22 +1 4 49 57 63 60 +1 4 41 45 59 61 +1 4 29 47 60 63 +1 4 29 47 48 60 +1 4 46 47 60 48 +1 4 9 38 65 40 +1 4 24 46 47 64 +1 4 39 40 62 59 +1 4 21 30 60 51 +1 4 1 9 32 65 +1 4 57 59 64 62 +1 4 56 58 61 64 +1 4 38 39 59 40 +1 4 20 49 58 56 +1 4 36 37 42 61 +1 4 35 36 61 37 +1 4 27 36 37 42 +1 4 35 36 54 61 +1 4 37 42 61 45 +1 4 5 19 23 63 +1 4 14 41 55 61 +1 4 23 47 63 64 +1 4 9 22 40 65 +1 4 31 32 33 53 +1 4 25 26 62 48 +1 4 23 24 47 64 +1 4 40 57 62 59 +1 4 56 58 64 63 +1 4 22 51 65 52 +1 4 29 49 63 60 +1 4 34 37 59 45 +1 4 33 53 57 58 +1 4 23 24 64 55 +1 4 32 33 53 65 +1 4 11 12 54 35 +1 4 43 44 59 45 +1 4 21 25 60 30 +1 4 40 51 57 65 +1 4 13 14 41 55 +1 4 22 40 65 51 +1 4 41 46 64 62 +1 4 3 11 20 58 +1 4 41 43 59 45 +1 4 10 33 38 34 +1 4 31 33 35 58 +1 4 21 25 40 60 +1 4 2 21 30 25 +1 4 24 41 46 64 +1 4 17 18 46 41 +1 4 49 57 58 63 +1 4 4 10 16 44 +1 4 10 34 38 44 +1 4 17 24 41 46 +1 4 19 29 49 63 +1 4 33 37 61 59 +1 4 33 38 57 65 +1 4 11 31 35 58 +1 4 38 40 59 57 +1 4 7 12 36 14 +1 4 30 49 60 51 +1 4 27 37 45 42 +1 4 14 36 42 61 +1 4 15 18 43 62 +1 4 19 20 56 49 +1 4 41 55 61 64 +1 4 21 22 51 40 +1 4 10 16 44 38 +1 4 57 58 63 64 +1 4 15 16 39 43 +1 4 25 30 48 60 +1 4 46 48 60 62 +1 4 12 35 36 54 +1 4 33 35 61 37 +1 4 26 46 62 48 +1 4 33 35 58 61 +1 4 25 48 62 60 +1 4 3 20 50 58 +1 4 18 41 62 46 +1 4 25 40 60 62 +1 4 37 45 61 59 +1 4 40 57 60 62 +1 4 23 55 64 56 +1 4 38 40 57 65 +1 4 41 59 62 64 +1 4 49 50 58 53 +1 4 14 36 61 54 +1 4 51 52 53 65 +1 4 25 26 39 62 +1 4 34 38 44 59 +1 4 9 32 65 33 +1 4 51 53 57 65 +1 4 16 38 59 44 +1 4 23 56 64 63 +1 4 14 54 61 55 +1 4 6 15 26 18 +1 4 15 18 62 26 +1 4 54 56 58 61 +1 4 3 31 58 50 +1 4 49 56 63 58 +1 4 5 19 63 29 +1 4 1 32 52 65 +1 4 4 28 34 44 +1 4 35 54 58 61 +1 4 4 10 44 34 +1 4 49 53 58 57 +1 4 1 22 65 52 +1 4 41 59 64 61 +1 4 29 30 49 60 +1 4 5 29 63 47 +1 4 9 10 33 38 +1 4 40 51 60 57 +1 4 18 41 43 62 +1 4 46 47 64 60 +1 4 49 51 57 60 +1 4 16 43 44 59 +1 4 16 39 43 59 +1 4 57 60 64 63 +1 4 7 14 36 42 +1 4 33 53 65 57 +1 4 15 26 62 39 +1 4 33 34 37 59 +1 4 33 34 59 38 +1 4 47 60 63 64 +1 4 7 27 42 36 +1 4 13 17 24 41 +1 4 13 24 55 41 +1 4 46 60 64 62 +1 4 41 43 62 59 +1 4 57 58 64 61 +1 4 9 33 65 38 +1 4 18 26 46 62 +1 4 16 38 39 59 +1 4 19 49 56 63 +1 4 24 41 64 55 +1 4 8 13 17 24 +1 4 25 39 40 62 +1 4 11 54 56 58 +1 4 29 30 60 48 +1 4 3 11 58 31 +1 4 5 23 47 63 +1 4 31 50 53 58 +1 4 32 52 65 53 +1 4 28 34 44 45 +1 4 34 44 45 59 +1 4 57 60 62 64 +1 4 19 23 63 56 +1 4 14 41 61 42 +1 4 20 49 50 58 +1 4 41 42 45 61 +1 4 31 33 58 53 +1 4 33 57 61 58 +1 4 27 28 45 37 +1 4 28 34 45 37 + + +# surfid 0 p1 p2 trignum1 trignum2 domin/surfnr1 domout/surfnr2 ednr1 dist1 ednr2 dist2 +edgesegmentsgi2 +72 + 1 0 1 9 -1 -1 1 7 1 0 0 0 + 2 0 9 1 -1 -1 1 7 1 0 0 0 + 1 0 9 10 -1 -1 1 7 1 0 0 0 + 2 0 10 9 -1 -1 1 7 1 0 0 0 + 1 0 10 4 -1 -1 1 7 1 0 0 0 + 2 0 4 10 -1 -1 1 7 1 0 0 0 + 1 0 11 3 -1 -1 8 1 2 0 0 0 + 3 0 3 11 -1 -1 8 1 2 0 0 0 + 1 0 12 11 -1 -1 8 1 2 0 0 0 + 3 0 11 12 -1 -1 8 1 2 0 0 0 + 1 0 7 12 -1 -1 8 1 2 0 0 0 + 3 0 12 7 -1 -1 8 1 2 0 0 0 + 4 0 8 13 -1 -1 4 8 3 0 0 0 + 3 0 13 8 -1 -1 4 8 3 0 0 0 + 4 0 13 14 -1 -1 4 8 3 0 0 0 + 3 0 14 13 -1 -1 4 8 3 0 0 0 + 4 0 14 7 -1 -1 4 8 3 0 0 0 + 3 0 7 14 -1 -1 4 8 3 0 0 0 + 4 0 15 6 -1 -1 7 4 4 0 0 0 + 2 0 6 15 -1 -1 7 4 4 0 0 0 + 4 0 16 15 -1 -1 7 4 4 0 0 0 + 2 0 15 16 -1 -1 7 4 4 0 0 0 + 4 0 4 16 -1 -1 7 4 4 0 0 0 + 2 0 16 4 -1 -1 7 4 4 0 0 0 + 5 0 8 17 -1 -1 2 4 5 0 0 0 + 4 0 17 8 -1 -1 2 4 5 0 0 0 + 5 0 17 18 -1 -1 2 4 5 0 0 0 + 4 0 18 17 -1 -1 2 4 5 0 0 0 + 5 0 18 6 -1 -1 2 4 5 0 0 0 + 4 0 6 18 -1 -1 2 4 5 0 0 0 + 6 0 19 5 -1 -1 8 3 6 0 0 0 + 3 0 5 19 -1 -1 8 3 6 0 0 0 + 6 0 20 19 -1 -1 8 3 6 0 0 0 + 3 0 19 20 -1 -1 8 3 6 0 0 0 + 6 0 3 20 -1 -1 8 3 6 0 0 0 + 3 0 20 3 -1 -1 8 3 6 0 0 0 + 6 0 2 21 -1 -1 3 7 7 0 0 0 + 2 0 21 2 -1 -1 3 7 7 0 0 0 + 6 0 21 22 -1 -1 3 7 7 0 0 0 + 2 0 22 21 -1 -1 3 7 7 0 0 0 + 6 0 22 1 -1 -1 3 7 7 0 0 0 + 2 0 1 22 -1 -1 3 7 7 0 0 0 + 5 0 5 23 -1 -1 2 8 8 0 0 0 + 3 0 23 5 -1 -1 2 8 8 0 0 0 + 5 0 23 24 -1 -1 2 8 8 0 0 0 + 3 0 24 23 -1 -1 2 8 8 0 0 0 + 5 0 24 8 -1 -1 2 8 8 0 0 0 + 3 0 8 24 -1 -1 2 8 8 0 0 0 + 5 0 25 2 -1 -1 7 2 9 0 0 0 + 2 0 2 25 -1 -1 7 2 9 0 0 0 + 5 0 26 25 -1 -1 7 2 9 0 0 0 + 2 0 25 26 -1 -1 7 2 9 0 0 0 + 5 0 6 26 -1 -1 7 2 9 0 0 0 + 2 0 26 6 -1 -1 7 2 9 0 0 0 + 1 0 27 7 -1 -1 4 1 10 0 0 0 + 4 0 7 27 -1 -1 4 1 10 0 0 0 + 1 0 28 27 -1 -1 4 1 10 0 0 0 + 4 0 27 28 -1 -1 4 1 10 0 0 0 + 1 0 4 28 -1 -1 4 1 10 0 0 0 + 4 0 28 4 -1 -1 4 1 10 0 0 0 + 5 0 29 5 -1 -1 3 2 11 0 0 0 + 6 0 5 29 -1 -1 3 2 11 0 0 0 + 5 0 30 29 -1 -1 3 2 11 0 0 0 + 6 0 29 30 -1 -1 3 2 11 0 0 0 + 5 0 2 30 -1 -1 3 2 11 0 0 0 + 6 0 30 2 -1 -1 3 2 11 0 0 0 + 1 0 3 31 -1 -1 1 3 12 0 0 0 + 6 0 31 3 -1 -1 1 3 12 0 0 0 + 1 0 31 32 -1 -1 1 3 12 0 0 0 + 6 0 32 31 -1 -1 1 3 12 0 0 0 + 1 0 32 1 -1 -1 1 3 12 0 0 0 + 6 0 1 32 -1 -1 1 3 12 0 0 0 + + +# X Y Z +points +65 + 0.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 0.0000000000000000 1.0000000000000000 + 1.0000000000000000 0.0000000000000000 0.0000000000000000 + 0.0000000000000000 1.0000000000000000 0.0000000000000000 + 1.0000000000000000 0.0000000000000000 1.0000000000000000 + 0.0000000000000000 1.0000000000000000 1.0000000000000000 + 1.0000000000000000 1.0000000000000000 0.0000000000000000 + 1.0000000000000000 1.0000000000000000 1.0000000000000000 + 0.0000000000000000 0.3333333333333333 0.0000000000000000 + 0.0000000000000000 0.6666666666666666 0.0000000000000000 + 1.0000000000000000 0.3333333333333333 0.0000000000000000 + 1.0000000000000000 0.6666666666666666 0.0000000000000000 + 1.0000000000000000 1.0000000000000000 0.6666666666666666 + 1.0000000000000000 1.0000000000000000 0.3333333333333332 + 0.0000000000000000 1.0000000000000000 0.6666666666666666 + 0.0000000000000000 1.0000000000000000 0.3333333333333332 + 0.6666666666666666 1.0000000000000000 1.0000000000000000 + 0.3333333333333332 1.0000000000000000 1.0000000000000000 + 1.0000000000000000 0.0000000000000000 0.6666666666666666 + 1.0000000000000000 0.0000000000000000 0.3333333333333332 + 0.0000000000000000 0.0000000000000000 0.6666666666666666 + 0.0000000000000000 0.0000000000000000 0.3333333333333332 + 1.0000000000000000 0.3333333333333333 1.0000000000000000 + 1.0000000000000000 0.6666666666666666 1.0000000000000000 + 0.0000000000000000 0.3333333333333333 1.0000000000000000 + 0.0000000000000000 0.6666666666666666 1.0000000000000000 + 0.6666666666666666 1.0000000000000000 0.0000000000000000 + 0.3333333333333332 1.0000000000000000 0.0000000000000000 + 0.6666666666666666 0.0000000000000000 1.0000000000000000 + 0.3333333333333332 0.0000000000000000 1.0000000000000000 + 0.6666666666666666 0.0000000000000000 0.0000000000000000 + 0.3333333333333332 0.0000000000000000 0.0000000000000000 + 0.3453764872152520 0.4289616495406477 0.0000000000000000 + 0.2363722957339057 0.7629978630944177 0.0000000000000000 + 0.7093903868425258 0.4777271339652773 0.0000000000000000 + 0.7767853874295251 0.7740629504580570 0.0000000000000000 + 0.5093916952832738 0.7373846519656869 0.0000000000000000 + 0.0000000000000000 0.5848322921574791 0.2973390248238796 + 0.0000000000000000 0.6376771832790789 0.6256884212430072 + 0.0000000000000000 0.3078273776201016 0.4901690889415314 + 0.6546235127847480 1.0000000000000000 0.5710383504593523 + 0.7636277042660942 1.0000000000000000 0.2370021369055823 + 0.2906096131574742 1.0000000000000000 0.5222728660347228 + 0.2232146125704748 1.0000000000000000 0.2259370495419430 + 0.4906083047167261 1.0000000000000000 0.2626153480343131 + 0.5226154526972956 0.6723847618372673 1.0000000000000000 + 0.7303054535238108 0.3470956979891270 1.0000000000000000 + 0.3846043860484825 0.3457533069880933 1.0000000000000000 + 0.6545492698511188 0.0000000000000000 0.5710115507028192 + 0.7635147493753501 0.0000000000000000 0.2370411648783929 + 0.2904642514608775 0.0000000000000000 0.5222189640348618 + 0.2231265594790997 0.0000000000000000 0.2258767298015257 + 0.4905217481815927 0.0000000000000000 0.2626047101435547 + 1.0000000000000000 0.5848322921574791 0.2973390248238796 + 1.0000000000000000 0.6376771832790789 0.6256884212430072 + 1.0000000000000000 0.3078273776201016 0.4901690889415314 + 0.4272276804008159 0.3426052995823172 0.4176406498588326 + 0.7299469195459262 0.2730082184471636 0.2789191388190804 + 0.3202369865656342 0.7063322531411742 0.4178510398137523 + 0.4187321713884653 0.2791900408384976 0.7467956942298275 + 0.6883019035327874 0.6532015011171384 0.3389153362395730 + 0.2848826858717337 0.6291905246270143 0.7492446890085234 + 0.7505520006346695 0.2364072052628841 0.7265283730519375 + 0.6904080728530597 0.5313023561184044 0.6778821530260029 + 0.2153574046463540 0.2182196460363049 0.2340094009251045 + + +# pnum index +pointelements +0 +identifications +15 + 1 3 1 + 2 5 1 + 4 7 1 + 6 8 1 + 9 11 1 + 10 12 1 + 15 13 1 + 16 14 1 + 21 19 1 + 22 20 1 + 25 23 1 + 26 24 1 + 38 54 1 + 39 55 1 + 40 56 1 +identificationtypes +1 + 2 + + +bcnames +6 +1 outer +2 default +3 default +4 outer +5 outer +6 outer + + + + +# Surfnr Red Green Blue +face_colours +6 + 1 0.00000000 1.00000000 0.00000000 + 7 0.00000000 1.00000000 0.00000000 + 8 0.00000000 1.00000000 0.00000000 + 4 0.00000000 1.00000000 0.00000000 + 2 0.00000000 1.00000000 0.00000000 + 3 0.00000000 1.00000000 0.00000000 + + +endmesh + +csgsurfaces 8 +plane 6 +-1.00000000 0.00000000 0.00000000 0.00000000 0.00000000 -1.00000000 +plane 6 +-1.00000000 0.00000000 1.00000000 0.00000000 0.00000000 1.00000000 +plane 6 +-1.00000000 0.00000000 0.00000000 0.00000000 -1.00000000 0.00000000 +plane 6 +-1.00000000 1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 +plane 6 +-1.00000000 0.00000000 0.00000000 -1.00000000 0.00000000 0.00000000 +plane 6 +2.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000 +plane 6 +0.00000000 0.00000000 0.00000000 -1.00000000 0.00000000 0.00000000 +plane 6 +1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000 diff --git a/test/data/meshio_meshes/neuroglancer/simple1 b/test/data/meshio_meshes/neuroglancer/simple1 new file mode 100644 index 0000000000000000000000000000000000000000..b84f1edbb34f45761580f88e738c59c365099b5a GIT binary patch literal 100 ycmXwu2@U`-2*TL$ulY2eKB^lDvDB@~ks?ggoUi4~c)0hpAfu1i%jM$W|AQ}P^#u_C literal 0 HcmV?d00001 diff --git a/test/data/meshio_meshes/obj/elephav.obj b/test/data/meshio_meshes/obj/elephav.obj new file mode 100644 index 000000000..d88e833ce --- /dev/null +++ b/test/data/meshio_meshes/obj/elephav.obj @@ -0,0 +1,2406 @@ +v 58.853138 435.746368 437.847656 +v 61.271862 446.228241 451.650909 +v 45.632473 438.882446 448.876190 +v 43.213753 428.400574 435.072937 +v 56.434418 425.264465 424.044373 +v 72.073807 432.610260 426.819092 +v 74.492523 443.092133 440.622375 +v 77.634003 404.993622 487.831390 +v 63.959820 396.794891 486.676514 +v 62.973885 384.242767 476.827179 +v 75.662132 379.889404 468.132751 +v 89.336319 388.088135 469.287659 +v 90.322258 400.640259 479.136963 +v 93.682159 376.787689 529.558960 +v 82.148361 368.697540 529.924622 +v 82.322182 355.907349 524.009094 +v 94.029808 351.207306 517.727844 +v 105.563606 359.297455 517.362183 +v 105.389778 372.087646 523.277710 +v 108.411240 360.555664 572.781372 +v 99.024544 353.304565 574.287476 +v 99.969086 341.678589 571.660583 +v 110.300323 337.303680 567.527466 +v 119.687019 344.554749 566.021362 +v 118.742477 356.180725 568.648254 +v 121.222130 354.367249 614.419189 +v 113.883820 348.399292 616.557678 +v 115.199722 338.796143 616.260925 +v 123.853928 335.160919 613.825684 +v 131.192230 341.128876 611.687195 +v 129.876343 350.732056 611.983948 +v 131.857529 355.871368 652.373718 +v 126.408997 351.363708 654.638306 +v 127.757248 344.134491 655.665466 +v 134.554031 341.412994 654.428040 +v 140.002563 345.920685 652.163391 +v 138.654312 353.149872 651.136230 +v 140.319107 362.644165 685.414490 +v 136.569427 359.567688 687.388794 +v 137.706100 354.674377 688.867554 +v 142.592468 352.857605 688.372009 +v 146.342163 355.934113 686.397705 +v 145.205475 360.827393 684.918945 +v 148.206787 371.175720 717.345581 + +vn -0.894299 0.378740 0.238297 +vn -0.870790 0.373891 0.319266 +vn -0.863918 0.479090 0.155298 +vn -0.859066 0.080675 0.505468 +vn -0.842871 0.351905 0.407101 +vn -0.841280 -0.539357 -0.036639 +vn -0.811197 0.308039 0.497062 +vn -0.801667 -0.593358 0.072500 +vn -0.777164 0.238562 0.582327 +vn -0.777007 -0.579595 -0.245620 +vn -0.766805 -0.615762 0.181239 +vn -0.763096 -0.465091 0.448748 +vn -0.737972 -0.613192 0.281768 +vn -0.715424 -0.593006 0.369476 +vn -0.272647 0.788640 -0.551099 +vn -0.164455 0.983456 -0.075955 +vn -0.118487 0.989085 0.087592 +vn -0.080297 0.975665 -0.204036 +vn -0.071552 0.641900 0.763442 +vn -0.062678 0.961212 0.268595 +vn -0.054639 -0.798021 -0.600148 +vn 0.001993 0.888912 0.458074 +vn 0.022093 -0.918925 -0.393813 +vn 0.072954 0.762930 0.642351 +vn 0.086181 -0.675437 -0.732365 +vn 0.090718 -0.978638 -0.184493 +vn 0.123058 -0.915326 0.383452 +vn 0.148480 -0.988840 0.012206 +vn 0.194573 -0.962975 0.186604 +vn 0.207306 0.361286 0.909118 +vn 0.745477 0.614181 -0.258932 +vn 0.767884 0.614205 -0.181954 +vn 0.791763 0.545023 0.275794 +vn 0.794751 0.599140 -0.096961 +vn 0.796167 -0.273029 -0.539975 +vn 0.805985 0.526979 -0.269596 +vn 0.825648 0.564131 -0.007864 +vn 0.835943 -0.337450 -0.432814 +vn 0.859478 0.504963 0.079437 +vn 0.871544 -0.368786 -0.323123 +vn 0.872663 -0.115109 -0.474562 +vn 0.901383 -0.373176 -0.219654 +vn 0.908108 -0.418051 0.023938 +vn 0.924977 -0.357868 -0.127861 + + +s off +f 1//15 3//15 2//15 +f 1//15 4//15 3//15 +f 1//15 5//15 4//15 +f 1//15 6//15 5//15 +f 1//15 7//15 6//15 +f 1//15 2//15 7//15 +f 2//19 9//9 8//24 +f 2//19 3//4 9//9 +f 3//4 10//6 9//9 +f 3//4 4//10 10//6 +f 4//10 11//21 10//6 +f 4//10 5//25 11//21 +f 5//25 12//35 11//21 +f 5//25 6//41 12//35 +f 6//41 13//39 12//35 +f 6//41 7//33 13//39 +f 7//33 8//24 13//39 +f 7//33 2//19 8//24 +f 8//24 15//7 14//22 +f 8//24 9//9 15//7 +f 9//9 16//8 15//7 +f 9//9 10//6 16//8 +f 10//6 17//23 16//8 +f 10//6 11//21 17//23 +f 11//21 18//38 17//23 +f 11//21 12//35 18//38 +f 12//35 19//37 18//38 +f 12//35 13//39 19//37 +f 13//39 14//22 19//37 +f 13//39 8//24 14//22 +f 14//22 21//5 20//20 +f 14//22 15//7 21//5 +f 15//7 22//11 21//5 +f 15//7 16//8 22//11 +f 16//8 23//26 22//11 +f 16//8 17//23 23//26 +f 17//23 24//40 23//26 +f 17//23 18//38 24//40 +f 18//38 25//34 24//40 +f 18//38 19//37 25//34 +f 19//37 20//20 25//34 +f 19//37 14//22 20//20 +f 20//20 27//2 26//17 +f 20//20 21//5 27//2 +f 21//5 28//13 27//2 +f 21//5 22//11 28//13 +f 22//11 29//28 28//13 +f 22//11 23//26 29//28 +f 23//26 30//42 29//28 +f 23//26 24//40 30//42 +f 24//40 31//32 30//42 +f 24//40 25//34 31//32 +f 25//34 26//17 31//32 +f 25//34 20//20 26//17 +f 26//17 33//1 32//16 +f 26//17 27//2 33//1 +f 27//2 34//14 33//1 +f 27//2 28//13 34//14 +f 28//13 35//29 34//14 +f 28//13 29//28 35//29 +f 29//28 36//44 35//29 +f 29//28 30//42 36//44 +f 30//42 37//31 36//44 +f 30//42 31//32 37//31 +f 31//32 32//16 37//31 +f 31//32 26//17 32//16 +f 32//16 39//3 38//18 +f 32//16 33//1 39//3 +f 33//1 40//12 39//3 +f 33//1 34//14 40//12 +f 34//14 41//27 40//12 +f 34//14 35//29 41//27 +f 35//29 42//43 41//27 +f 35//29 36//44 42//43 +f 36//44 43//36 42//43 +f 36//44 37//31 43//36 +f 37//31 38//18 43//36 +f 37//31 32//16 38//18 +f 44//30 38//18 39//3 +f 44//30 39//3 40//12 +f 44//30 40//12 41//27 +f 44//30 41//27 42//43 +f 44//30 42//43 43//36 +f 44//30 43//36 38//18 +v -58.853138 435.746368 437.847656 +v -61.271862 446.228241 451.650909 +v -45.632473 438.882446 448.876190 +v -43.213753 428.400574 435.072937 +v -56.434422 425.264465 424.044373 +v -72.073807 432.610260 426.819092 +v -74.492523 443.092133 440.622375 +v -77.634003 404.993622 487.831390 +v -63.959824 396.794891 486.676514 +v -62.973885 384.242767 476.827179 +v -75.662140 379.889404 468.132751 +v -89.336327 388.088135 469.287659 +v -90.322258 400.640259 479.136963 +v -93.682159 376.787689 529.558960 +v -82.148361 368.697540 529.924622 +v -82.322189 355.907349 524.009094 +v -94.029808 351.207306 517.727844 +v -105.563606 359.297455 517.362183 +v -105.389778 372.087646 523.277710 +v -108.411240 360.555664 572.781372 +v -99.024551 353.304565 574.287476 +v -99.969093 341.678589 571.660583 +v -110.300323 337.303650 567.527466 +v -119.687019 344.554749 566.021362 +v -118.742477 356.180725 568.648254 +v -121.222130 354.367249 614.419189 +v -113.883820 348.399292 616.557678 +v -115.199722 338.796112 616.260925 +v -123.853928 335.160919 613.825684 +v -131.192230 341.128876 611.687195 +v -129.876343 350.732056 611.983948 +v -131.857529 355.871368 652.373657 +v -126.408997 351.363678 654.638306 +v -127.757248 344.134491 655.665466 +v -134.554031 341.412964 654.428040 +v -140.002563 345.920654 652.163391 +v -138.654312 353.149872 651.136230 +v -140.319107 362.644165 685.414490 +v -136.569427 359.567688 687.388794 +v -137.706085 354.674377 688.867554 +v -142.592468 352.857605 688.372009 +v -146.342163 355.934113 686.397705 +v -145.205475 360.827362 684.918945 +v -148.206787 371.175720 717.345581 + +vn -0.924977 -0.357868 -0.127862 +vn -0.908108 -0.418051 0.023938 +vn -0.901383 -0.373176 -0.219654 +vn -0.872663 -0.115109 -0.474562 +vn -0.871544 -0.368786 -0.323123 +vn -0.859478 0.504963 0.079437 +vn -0.835943 -0.337450 -0.432814 +vn -0.825648 0.564131 -0.007864 +vn -0.805985 0.526979 -0.269596 +vn -0.796167 -0.273029 -0.539975 +vn -0.794751 0.599140 -0.096961 +vn -0.791763 0.545023 0.275794 +vn -0.767884 0.614205 -0.181954 +vn -0.745477 0.614181 -0.258932 +vn -0.207305 0.361286 0.909119 +vn -0.194573 -0.962975 0.186604 +vn -0.148480 -0.988840 0.012206 +vn -0.123058 -0.915326 0.383452 +vn -0.090718 -0.978638 -0.184494 +vn -0.086181 -0.675437 -0.732365 +vn -0.072954 0.762930 0.642351 +vn -0.022092 -0.918925 -0.393813 +vn -0.001993 0.888912 0.458074 +vn 0.054639 -0.798021 -0.600148 +vn 0.062678 0.961212 0.268595 +vn 0.071552 0.641900 0.763442 +vn 0.080297 0.975665 -0.204036 +vn 0.118487 0.989085 0.087592 +vn 0.164455 0.983456 -0.075955 +vn 0.272647 0.788640 -0.551099 +vn 0.715424 -0.593006 0.369476 +vn 0.737972 -0.613192 0.281768 +vn 0.763097 -0.465091 0.448748 +vn 0.766805 -0.615762 0.181239 +vn 0.777007 -0.579595 -0.245620 +vn 0.777164 0.238562 0.582327 +vn 0.801667 -0.593358 0.072500 +vn 0.811197 0.308039 0.497062 +vn 0.841280 -0.539357 -0.036639 +vn 0.842871 0.351905 0.407101 +vn 0.859066 0.080675 0.505468 +vn 0.863918 0.479091 0.155298 +vn 0.870790 0.373891 0.319266 +vn 0.894299 0.378740 0.238297 + + +s off +f 47//74 45//74 46//74 +f 48//74 45//74 47//74 +f 49//74 45//74 48//74 +f 50//74 45//74 49//74 +f 51//74 45//74 50//74 +f 46//74 45//74 51//74 +f 53//80 46//70 52//65 +f 47//85 46//70 53//80 +f 54//83 47//85 53//80 +f 48//79 47//85 54//83 +f 55//68 48//79 54//83 +f 49//64 48//79 55//68 +f 56//54 49//64 55//68 +f 50//48 49//64 56//54 +f 57//50 50//48 56//54 +f 51//56 50//48 57//50 +f 52//65 51//56 57//50 +f 46//70 51//56 52//65 +f 59//82 52//65 58//67 +f 53//80 52//65 59//82 +f 60//81 53//80 59//82 +f 54//83 53//80 60//81 +f 61//66 54//83 60//81 +f 55//68 54//83 61//66 +f 62//51 55//68 61//66 +f 56//54 55//68 62//51 +f 63//52 56//54 62//51 +f 57//50 56//54 63//52 +f 58//67 57//50 63//52 +f 52//65 57//50 58//67 +f 65//84 58//67 64//69 +f 59//82 58//67 65//84 +f 66//78 59//82 65//84 +f 60//81 59//82 66//78 +f 67//63 60//81 66//78 +f 61//66 60//81 67//63 +f 68//49 61//66 67//63 +f 62//51 61//66 68//49 +f 69//55 62//51 68//49 +f 63//52 62//51 69//55 +f 64//69 63//52 69//55 +f 58//67 63//52 64//69 +f 71//87 64//69 70//72 +f 65//84 64//69 71//87 +f 72//76 65//84 71//87 +f 66//78 65//84 72//76 +f 73//61 66//78 72//76 +f 67//63 66//78 73//61 +f 74//47 67//63 73//61 +f 68//49 67//63 74//47 +f 75//57 68//49 74//47 +f 69//55 68//49 75//57 +f 70//72 69//55 75//57 +f 64//69 69//55 70//72 +f 77//88 70//72 76//73 +f 71//87 70//72 77//88 +f 78//75 71//87 77//88 +f 72//76 71//87 78//75 +f 79//60 72//76 78//75 +f 73//61 72//76 79//60 +f 80//45 73//61 79//60 +f 74//47 73//61 80//45 +f 81//58 74//47 80//45 +f 75//57 74//47 81//58 +f 76//73 75//57 81//58 +f 70//72 75//57 76//73 +f 83//86 76//73 82//71 +f 77//88 76//73 83//86 +f 84//77 77//88 83//86 +f 78//75 77//88 84//77 +f 85//62 78//75 84//77 +f 79//60 78//75 85//62 +f 86//46 79//60 85//62 +f 80//45 79//60 86//46 +f 87//53 80//45 86//46 +f 81//58 80//45 87//53 +f 82//71 81//58 87//53 +f 76//73 81//58 82//71 +f 82//71 88//59 83//86 +f 83//86 88//59 84//77 +f 84//77 88//59 85//62 +f 85//62 88//59 86//46 +f 86//46 88//59 87//53 +f 87//53 88//59 82//71 +v 0.0 674.705322 144.186432 +v 0.0 659.442139 21.519569 +v 0.0 680.494873 -114.901505 +v 0.0 677.588013 -209.343933 +v 0.0 662.451782 -253.749756 +v 0.0 619.927368 -307.605072 +v 0.0 306.693176 -355.725189 +v 0.0 282.978760 -335.986023 +v 0.0 386.651550 -381.947906 +v 0.0 452.129333 -373.061371 +v 0.0 464.639008 -375.535736 +v 0.0 548.165222 -365.281372 +v 0.0 518.615662 -399.860443 +v 0.0 487.902100 -415.659485 +v 0.0 470.975586 -417.727692 +v 0.0 412.627502 -416.541016 +v 0.0 420.618774 -400.237640 +v 0.0 468.681763 -389.056061 +v 0.0 470.368866 -385.914642 +v 0.0 400.649750 232.339508 +v 0.0 347.050842 206.288391 +v 0.0 325.252075 178.899506 +v 0.0 313.806885 117.932831 +v 0.0 314.837463 137.754272 +v 0.0 319.189819 159.624985 +v 0.0 269.879456 -59.536957 +v 0.0 282.266632 -6.034477 +v 0.0 297.798676 51.131927 +v 0.0 260.412598 -228.332947 +v 0.0 358.095825 -417.698120 +v 0.0 358.767883 -407.076111 +v 0.0 320.548431 -416.855591 +v 0.0 320.728119 -408.190948 +v 0.0 264.678802 -402.953827 +v 0.0 264.655396 -410.283264 +v 0.0 222.839462 -394.393463 +v 0.0 220.736511 -402.430603 +v 0.0 194.609314 -395.416138 +v 0.0 195.844925 -389.740295 +v 0.0 590.681274 457.055023 +v 0.0 640.005554 429.823761 +v 0.0 679.878784 348.259949 +v 0.0 668.416504 190.709930 +v 0.0 652.424377 233.459885 +v 0.0 651.805298 253.958023 +v 0.0 680.161011 329.351013 +v 0.0 428.164734 323.170593 +v 0.0 400.098724 454.754395 +v 0.0 406.014984 256.838745 +v 0.0 421.577759 269.887939 +v 0.0 663.574707 285.522308 +v 0.0 191.588745 -393.203400 +v 0.0 192.143539 -389.721771 +v 0.0 190.525833 -391.550476 +v 0.0 410.218842 379.853394 +v 0.0 365.601990 426.700714 +v 0.0 384.466461 414.494141 +v 3.499443 362.597076 435.303223 +v 0.0 360.711639 437.529083 +v 0.0 358.145355 433.967712 +v 0.0 359.026581 431.397980 +v 0.0 359.140442 436.638733 +v 0.0 372.866119 423.227142 +v 0.0 408.493378 434.260864 +v 28.561386 680.828491 152.769043 +v 89.147934 617.291870 8.004128 +v 96.425346 630.883789 -225.567169 +v 116.623894 563.952209 189.125305 +v 135.253036 498.373596 -205.083496 +v 102.284485 378.783508 48.076321 +v 68.635033 167.411774 -317.269745 +v 96.345901 507.969360 -346.729340 +v 31.685234 491.952789 -389.875305 +v 10.539116 450.210785 -412.170105 +v 14.840648 470.856445 -392.668488 +v 9.770735 472.211578 -386.184265 +v 116.521805 178.172684 154.520325 +v 101.803406 173.197296 113.135895 +v 55.110474 461.715881 228.562622 +v 29.197432 416.091888 232.177322 +v 54.124645 341.445679 204.883423 +v 22.852367 323.534698 168.565872 +v 84.888359 269.782104 -192.991913 +v 47.324020 200.793472 -307.052338 +v 29.879377 260.380920 -316.286987 +v 20.908667 256.221558 -244.277130 +v 62.163719 156.204163 -253.238617 +v 62.163738 176.986816 173.840515 +v 56.963161 169.769424 121.614166 +v 43.459377 310.782928 57.872765 +v 83.565216 2.812408 87.586609 +v 119.566643 53.798767 153.346359 +v 120.825768 27.622589 189.236847 +v 132.673050 32.518005 172.354477 +v 100.340591 57.047668 168.625092 +v 35.022182 3.596130 114.613876 +v 49.711658 51.683380 162.079895 +v 48.979992 13.613007 192.654083 +v 80.733612 25.959442 204.418716 +v 126.390030 2.812408 102.117195 +v 129.353973 2.812408 183.618622 +v 80.694801 2.812408 207.141617 +v 109.345688 2.812408 201.640762 +v 54.500790 2.812408 197.025269 +v 37.963989 2.812408 156.271210 +v 139.499969 2.812408 146.296692 +v 3.631164 358.617462 -409.063477 +v 57.757877 427.477478 486.621735 +v 66.305794 450.091858 460.693939 +v 72.430794 460.165649 446.856262 +v 47.409939 647.614136 276.093872 +v 36.704021 552.561401 468.196411 +v 83.166336 462.374969 282.517426 +v 97.794746 548.457275 427.954742 +v 72.193176 537.422913 451.219727 +v 68.373138 426.302185 310.172607 +v 77.928581 491.388367 391.080841 +v 77.033066 517.108643 416.937897 +v 95.374550 515.711792 392.263123 +v 105.212822 520.682190 367.848602 +v 87.732895 523.537720 399.655945 +v 84.234589 524.386841 406.262543 +v 84.769745 431.200195 461.652008 +v 57.775162 414.015961 490.634369 +v 74.483322 462.666901 387.797546 +v 83.963806 439.915405 441.301392 +v 55.741165 407.134583 490.437347 +v 48.314449 391.637878 482.220612 +v 39.757469 395.107086 481.343567 +v 101.927597 524.532593 289.449036 +v 82.183266 594.307739 237.627914 +v 71.702682 671.114136 371.912689 +v 119.746429 630.880615 313.814209 +v 98.411400 565.605469 308.700073 +v 79.552818 657.672974 319.828979 +v 97.803490 662.251343 369.554565 +v 105.080696 646.188416 367.574463 +v 117.992828 633.772278 360.118774 +v 79.021889 666.386292 376.674713 +v 124.450096 299.812317 86.423988 +v 93.567039 287.448730 69.341545 +v 78.712456 171.689362 96.333069 +v 87.672211 515.497437 404.092529 +v 142.125198 487.190826 75.761795 +v 54.375797 387.937256 444.369385 +v 85.685417 409.201599 479.704407 +v 75.063766 396.528595 444.140350 +v 72.064491 403.284302 486.151031 +v 55.174248 386.216644 471.262787 +v 92.361580 598.479614 358.234436 +v 87.489281 406.573090 463.900604 +v 82.037880 406.060242 475.072571 +v 84.995010 402.431366 455.035065 +v 74.360077 397.155579 449.641205 +v 63.094547 391.059723 453.824066 +v 72.155159 402.082642 479.629272 +v 64.321938 394.400360 477.144409 +v 60.365757 388.976166 466.250458 +v 1.504729 192.970337 -391.704651 +v 26.869917 399.271179 427.409149 +v 7.880798 375.080566 429.976166 +v 0.0 519.736877 501.326874 +v 65.431923 471.750336 453.331879 +v 59.693134 486.968262 469.050507 +v 49.102673 503.374390 485.327179 +v 0.0 394.447510 473.427734 +v 0.0 271.682587 -127.661087 +v 0.0 275.780365 -180.105072 +v 0.0 269.623871 -203.846863 +v 0.0 259.270508 -244.079498 +v 0.0 263.265289 -283.019745 +v 0.0 269.925720 -317.727051 +v 109.488457 53.266907 111.529510 +v 84.580719 50.753479 94.974091 +v 50.518833 50.401581 114.022522 +v 134.554459 368.699158 177.532349 +v 101.841042 55.608490 -266.554230 +v 98.785851 2.812439 -321.523987 +v 91.762856 53.266937 -312.111664 +v 82.614990 57.047699 -244.255707 +v 91.918777 164.786652 -267.169952 +v 91.037750 165.903214 -304.247284 +v 52.195866 52.106079 -328.667084 +v 65.839615 2.812439 -336.054565 +v 114.947449 32.518036 -251.286713 +v 121.774368 2.812439 -277.344482 +v 111.628372 2.812439 -240.022552 +v 103.100166 27.622620 -234.404327 +v 91.620087 2.812439 -222.000397 +v 63.008007 25.959473 -219.222443 +v 20.238386 2.812439 -267.369965 +v 31.986055 51.683411 -253.584595 +v 26.654669 2.812439 -309.027313 +v 31.254389 13.613037 -230.987091 +v 36.775185 2.812439 -226.615906 +v 62.969196 2.812439 -216.499542 +v 32.038773 52.228394 -309.618652 +v 126.084244 371.670807 -159.708084 +v 139.331024 364.170563 -280.618439 +v 129.495178 357.771454 -216.346008 +v 178.559692 521.329956 -125.311584 +v 50.741852 379.704468 -369.854065 +v 126.098862 491.326019 -299.065491 +v 25.699888 85.600800 -308.335480 +v 39.776405 673.907227 331.222168 +v 77.348427 578.127563 439.451477 +v 0.0 389.291992 486.090851 +v 53.197598 417.579498 504.358887 +v 0.0 330.902405 571.212524 +v 0.0 396.047028 561.760254 +v 0.0 448.367249 543.600098 +v 0.0 321.122803 506.096130 +v 0.0 366.578491 493.328552 +v 0.0 380.585266 487.656494 +v 0.0 267.242859 572.588379 +v 0.0 264.636108 514.555420 +v 0.0 211.547058 566.812988 +v 0.0 214.041687 515.471313 +v 0.0 163.338455 556.453003 +v 0.0 168.880386 511.701508 +v 0.0 123.445633 543.892090 +v 0.0 128.865707 504.205658 +v 0.0 88.772095 529.737183 +v 0.0 95.004730 494.096680 +v 0.0 60.432281 512.184814 +v 0.0 76.766418 484.694214 +v 0.0 44.941895 485.530060 +v 0.0 67.669769 470.122314 +v 0.0 41.181000 460.585022 +v 0.0 66.030304 456.359985 +v 0.0 46.149750 438.815735 +v 0.0 67.915985 446.862457 +v 0.0 50.750610 425.787476 +v 0.0 71.117798 439.923950 +v 0.0 53.089813 422.642944 +v 0.0 71.009399 436.437805 +v 0.0 55.499329 424.193329 +v 0.0 69.540802 436.470398 +v 40.318222 323.123749 514.340576 +v 44.910927 374.415741 507.571686 +v 35.962704 330.110870 547.104858 +v 39.266464 389.826355 539.846375 +v 39.321838 436.194061 526.118530 +v 42.576550 379.890869 485.175507 +v 35.673855 364.374329 490.916351 +v 32.409584 320.630798 503.137512 +v 31.128992 262.814819 516.546265 +v 31.120661 267.396942 550.957947 +v 26.104368 212.173584 516.899048 +v 26.217802 214.731186 547.603699 +v 21.585955 166.665604 513.017090 +v 21.755678 165.012177 540.377319 +v 17.811789 128.329285 505.388031 +v 18.029829 127.116852 530.179321 +v 14.884996 95.121552 494.605957 +v 15.121249 92.141266 516.896851 +v 13.721362 76.612671 484.731659 +v 13.961364 67.320435 502.436493 +v 12.503607 67.766357 469.977448 +v 12.746117 54.042847 480.469910 +v 11.684473 66.317017 456.185638 +v 11.929141 50.868683 459.775146 +v 11.238026 69.033691 446.305969 +v 11.482570 54.426880 442.698792 +v 11.532056 71.943146 439.734772 +v 11.768776 57.081177 435.891022 +v 10.756892 71.728729 436.944397 +v 11.010005 58.284698 433.492401 +v 9.039405 69.993774 437.114563 +v 9.558839 58.987793 434.598755 +v 112.880119 371.152161 -355.810730 +v -3.499443 362.597076 435.303223 +v -28.561386 680.828491 152.769043 +v -89.147926 617.291870 8.004128 +v -96.425339 630.883789 -225.567169 +v -116.623886 563.952209 189.125305 +v -135.253036 498.373596 -205.083496 +v -102.284477 378.783508 48.076321 +v -68.635025 167.411774 -317.269745 +v -96.345894 507.969360 -346.729340 +v -31.685234 491.952789 -389.875305 +v -10.539116 450.210785 -412.170105 +v -14.840648 470.856445 -392.668488 +v -9.770735 472.211578 -386.184265 +v -116.521797 178.172684 154.520325 +v -101.803398 173.197296 113.135895 +v -55.110477 461.715881 228.562622 +v -29.197432 416.091888 232.177322 +v -54.124649 341.445679 204.883423 +v -22.852367 323.534698 168.565872 +v -84.888351 269.782104 -192.991913 +v -47.324024 200.793472 -307.052338 +v -29.879377 260.380920 -316.286987 +v -20.908667 256.221558 -244.277130 +v -62.163723 156.204163 -253.238617 +v -62.163742 176.986816 173.840515 +v -56.963165 169.769424 121.614166 +v -43.459381 310.782928 57.872765 +v -83.565208 2.812408 87.586609 +v -119.566635 53.798767 153.346359 +v -120.825760 27.622589 189.236847 +v -132.673050 32.518005 172.354477 +v -100.340584 57.047668 168.625092 +v -35.022186 3.596130 114.613876 +v -49.711662 51.683380 162.079895 +v -48.979996 13.613007 192.654083 +v -80.733604 25.959442 204.418716 +v -126.390022 2.812408 102.117195 +v -129.353973 2.812408 183.618622 +v -80.694794 2.812408 207.141617 +v -109.345680 2.812408 201.640762 +v -54.500793 2.812408 197.025269 +v -37.963993 2.812408 156.271210 +v -139.499969 2.812408 146.296692 +v -3.631164 358.617462 -409.063477 +v -57.757881 427.477478 486.621735 +v -66.305786 450.091858 460.693939 +v -72.430786 460.165649 446.856262 +v -47.409943 647.614136 276.093872 +v -36.704025 552.561401 468.196411 +v -83.166328 462.374969 282.517426 +v -97.794739 548.457275 427.954742 +v -72.193169 537.422913 451.219727 +v -68.373131 426.302185 310.172607 +v -77.928574 491.388367 391.080841 +v -77.033058 517.108643 416.937897 +v -95.374542 515.711792 392.263123 +v -105.212814 520.682190 367.848602 +v -87.732887 523.537720 399.655945 +v -84.234581 524.386841 406.262543 +v -84.769737 431.200195 461.652008 +v -57.775166 414.015961 490.634369 +v -74.483315 462.666901 387.797546 +v -83.963799 439.915405 441.301392 +v -55.741169 407.134583 490.437347 +v -48.314453 391.637878 482.220612 +v -39.757473 395.107086 481.343567 +v -101.927589 524.532593 289.449036 +v -82.183258 594.307739 237.627914 +v -71.702675 671.114136 371.912689 +v -119.746422 630.880615 313.814209 +v -98.411392 565.605469 308.700073 +v -79.552811 657.672974 319.828979 +v -97.803482 662.251343 369.554565 +v -105.080688 646.188416 367.574463 +v -117.992821 633.772278 360.118774 +v -79.021881 666.386292 376.674713 +v -124.450089 299.812317 86.423988 +v -93.567032 287.448730 69.341545 +v -78.712448 171.689362 96.333069 +v -87.672203 515.497437 404.092529 +v -142.125198 487.190826 75.761795 +v -54.375801 387.937256 444.369385 +v -85.685410 409.201599 479.704407 +v -75.063759 396.528595 444.140350 +v -72.064484 403.284302 486.151031 +v -55.174252 386.216644 471.262787 +v -92.361572 598.479614 358.234436 +v -87.489273 406.573090 463.900604 +v -82.037872 406.060242 475.072571 +v -84.995003 402.431366 455.035065 +v -74.360069 397.155579 449.641205 +v -63.094551 391.059723 453.824066 +v -72.155151 402.082642 479.629272 +v -64.321930 394.400360 477.144409 +v -60.365761 388.976166 466.250458 +v -1.504729 192.970337 -391.704651 +v -26.869917 399.271179 427.409149 +v -7.880797 375.080566 429.976166 +v -65.431915 471.750336 453.331879 +v -59.693138 486.968262 469.050507 +v -49.102676 503.374390 485.327179 +v -109.488449 53.266907 111.529510 +v -84.580711 50.753479 94.974091 +v -50.518837 50.401581 114.022522 +v -134.554459 368.699158 177.532349 +v -101.841034 55.608490 -266.554230 +v -98.785835 2.812439 -321.523987 +v -91.762848 53.266937 -312.111664 +v -82.614983 57.047699 -244.255707 +v -91.918770 164.786652 -267.169952 +v -91.037743 165.903214 -304.247284 +v -52.195869 52.106079 -328.667084 +v -65.839607 2.812439 -336.054565 +v -114.947441 32.518036 -251.286713 +v -121.774361 2.812439 -277.344482 +v -111.628365 2.812439 -240.022552 +v -103.100159 27.622620 -234.404327 +v -91.620079 2.812439 -222.000397 +v -63.008011 25.959473 -219.222443 +v -20.238386 2.812439 -267.369965 +v -31.986055 51.683411 -253.584595 +v -26.654669 2.812439 -309.027313 +v -31.254389 13.613037 -230.987091 +v -36.775188 2.812439 -226.615906 +v -62.969200 2.812439 -216.499542 +v -32.038776 52.228394 -309.618652 +v -126.084236 371.670807 -159.708084 +v -139.331024 364.170563 -280.618439 +v -129.495178 357.771454 -216.346008 +v -178.559692 521.329956 -125.311584 +v -50.741856 379.704468 -369.854065 +v -126.098854 491.326019 -299.065491 +v -25.699888 85.600800 -308.335480 +v -39.776409 673.907227 331.222168 +v -77.348419 578.127563 439.451477 +v -53.197601 417.579498 504.358887 +v -40.318226 323.123749 514.340576 +v -44.910931 374.415741 507.571686 +v -35.962708 330.110870 547.104858 +v -39.266468 389.826355 539.846375 +v -39.321842 436.194061 526.118530 +v -42.576553 379.890869 485.175507 +v -35.673859 364.374329 490.916351 +v -32.409588 320.630798 503.137512 +v -31.128992 262.814819 516.546265 +v -31.120661 267.396942 550.957947 +v -26.104368 212.173584 516.899048 +v -26.217802 214.731186 547.603699 +v -21.585955 166.665604 513.017090 +v -21.755678 165.012177 540.377319 +v -17.811789 128.329285 505.388031 +v -18.029829 127.116852 530.179321 +v -14.884996 95.121552 494.605957 +v -15.121249 92.141266 516.896851 +v -13.721362 76.612671 484.731659 +v -13.961364 67.320435 502.436493 +v -12.503607 67.766357 469.977448 +v -12.746117 54.042847 480.469910 +v -11.684473 66.317017 456.185638 +v -11.929141 50.868683 459.775146 +v -11.238026 69.033691 446.305969 +v -11.482570 54.426880 442.698792 +v -11.532056 71.943146 439.734772 +v -11.768776 57.081177 435.891022 +v -10.756892 71.728729 436.944397 +v -11.010005 58.284698 433.492401 +v -9.039405 69.993774 437.114563 +v -9.558839 58.987793 434.598755 +v -112.880112 371.152161 -355.810730 +v 83.166336 462.374969 282.517426 +v 97.803490 662.251343 369.554565 +v 79.021889 666.386292 376.674713 +v 71.702682 671.114136 371.912689 +v 86.375710 688.534546 351.013245 +v 71.041710 678.234863 364.105988 +v 89.965607 597.799927 316.320465 +v 98.411423 565.605469 308.700073 +v 101.927597 524.532593 289.449036 +v 223.745453 617.214966 252.629211 +v 263.779053 603.554077 111.231125 +v 250.851547 565.993835 117.612213 +v 250.153976 692.800903 231.157837 +v 119.746429 625.196045 322.051086 +v 105.080696 646.188416 367.574463 +v 154.985229 658.576416 332.510071 +v 200.347290 698.369263 295.631378 +v 229.934494 703.016418 255.213852 +v 174.806488 714.569336 301.024475 +v 124.796967 690.498535 335.785156 +v 117.839737 696.844116 329.868256 +v 95.352585 457.567444 275.603210 +v 96.982460 444.826904 269.866760 +v 234.951843 542.151672 122.796227 +v 94.138756 428.036285 264.856140 +v 100.976105 401.472992 242.941208 +v 136.378464 448.177368 250.506012 +v 165.012772 528.794556 247.697281 +v 211.981293 523.431274 131.970963 +v 117.992828 633.772278 360.118774 +v 273.383362 653.040894 132.604462 +v 266.934570 628.560059 118.617035 +v 246.283127 699.169312 221.285507 +v 208.589951 710.134399 260.576599 +v 181.199646 712.553772 272.422424 +v 162.155991 711.845215 282.709442 +v 149.180008 711.340088 296.747589 +v 132.867691 703.030273 309.399963 +v 99.128807 374.954041 230.420349 +v 126.651459 384.494080 220.204956 +v 144.220947 395.410858 207.701462 +v 173.386261 448.508972 173.954041 +v 190.554718 464.418640 167.773285 +v 194.502914 488.440857 151.411835 +v -83.166328 462.374969 282.517426 +v -97.803482 662.251343 369.554565 +v -79.021881 666.386292 376.674713 +v -71.702675 671.114136 371.912689 +v -86.375702 688.534546 351.013245 +v -71.041702 678.234863 364.105988 +v -89.965599 597.799927 316.320465 +v -98.411415 565.605469 308.700073 +v -101.927589 524.532593 289.449036 +v -223.745453 617.214966 252.629211 +v -263.779053 603.554077 111.231125 +v -250.851547 565.993835 117.612213 +v -250.153976 692.800903 231.157837 +v -119.746422 625.196045 322.051086 +v -105.080688 646.188416 367.574463 +v -154.985229 658.576416 332.510071 +v -200.347290 698.369263 295.631378 +v -229.934494 703.016418 255.213852 +v -174.806488 714.569336 301.024475 +v -124.796959 690.498535 335.785156 +v -117.839729 696.844116 329.868256 +v -95.352577 457.567444 275.603210 +v -96.982452 444.826904 269.866760 +v -234.951843 542.151672 122.796227 +v -94.138748 428.036285 264.856140 +v -100.976097 401.472992 242.941208 +v -136.378464 448.177368 250.506012 +v -165.012772 528.794556 247.697281 +v -211.981293 523.431274 131.970963 +v -117.992821 633.772278 360.118774 +v -273.383362 653.040894 132.604462 +v -266.934570 628.560059 118.617035 +v -246.283127 699.169312 221.285507 +v -208.589951 710.134399 260.576599 +v -181.199646 712.553772 272.422424 +v -162.155991 711.845215 282.709442 +v -149.180008 711.340088 296.747589 +v -132.867691 703.030273 309.399963 +v -99.128799 374.954041 230.420349 +v -126.651451 384.494080 220.204956 +v -144.220947 395.410858 207.701462 +v -173.386261 448.508972 173.954041 +v -190.554718 464.418640 167.773285 +v -194.502914 488.440857 151.411835 +v 0.0 54.705750 448.371765 +v 142.979660 432.121704 53.944386 +v 142.259354 433.763885 -188.649475 +v 172.123810 430.795349 -110.045517 +v -142.979660 432.121704 53.944386 +v -172.123810 430.795349 -110.045517 +v -143.964798 430.321655 -184.622345 + +vn -0.998673 -0.034541 -0.038197 +vn -0.990649 0.135951 -0.011452 +vn -0.987159 -0.127900 -0.095699 +vn -0.986500 -0.119607 -0.111860 +vn -0.986100 0.044479 0.160089 +vn -0.984962 0.117969 0.126225 +vn -0.979778 0.191800 -0.056995 +vn -0.977198 -0.212138 0.009060 +vn -0.976428 0.050032 0.209963 +vn -0.976178 -0.053752 -0.210207 +vn -0.975949 -0.212540 0.048483 +vn -0.973460 0.072270 0.217146 +vn -0.972644 0.041816 0.228505 +vn -0.970849 -0.239674 0.003057 +vn -0.969837 -0.181013 0.163249 +vn -0.968383 -0.136717 -0.208669 +vn -0.966751 -0.112059 0.229859 +vn -0.965052 -0.262008 -0.005160 +vn -0.962143 0.263665 -0.069009 +vn -0.958495 0.285041 0.006183 +vn -0.953528 0.272774 -0.127976 +vn -0.949830 0.173022 -0.260551 +vn -0.948489 0.053494 0.312262 +vn -0.947053 -0.260579 -0.187587 +vn -0.946600 0.082869 -0.311578 +vn -0.938748 -0.026743 0.343566 +vn -0.937868 -0.104277 0.330952 +vn -0.935929 -0.286619 0.204664 +vn -0.935098 -0.331743 -0.124651 +vn -0.932268 -0.235072 0.274985 +vn -0.931502 -0.303009 0.201219 +vn -0.929509 0.363013 0.065076 +vn -0.928884 -0.235037 -0.286238 +vn -0.925893 -0.317985 -0.203981 +vn -0.924696 0.071256 0.373979 +vn -0.916991 -0.031325 -0.397675 +vn -0.916435 0.259058 0.305016 +vn -0.915159 0.092329 0.392376 +vn -0.914811 -0.319057 -0.247637 +vn -0.914078 0.078569 -0.397854 +vn -0.911128 0.354633 -0.209953 +vn -0.908375 -0.067055 -0.412744 +vn -0.906057 0.381196 -0.183714 +vn -0.904557 -0.348274 0.245931 +vn -0.903638 -0.241643 0.353620 +vn -0.902406 -0.409772 -0.133235 +vn -0.900933 -0.428188 -0.070534 +vn -0.900115 -0.427563 0.083560 +vn -0.898403 -0.437664 0.036353 +vn -0.897638 -0.075175 0.434275 +vn -0.896492 -0.209997 0.390132 +vn -0.896375 -0.314013 0.312901 +vn -0.895561 0.279921 0.345853 +vn -0.891660 -0.206380 -0.402927 +vn -0.890179 0.379752 0.251732 +vn -0.888577 -0.176965 0.423219 +vn -0.887054 0.129180 -0.443224 +vn -0.886106 -0.134553 0.443521 +vn -0.885226 0.027722 0.464334 +vn -0.884238 -0.118708 0.451699 +vn -0.882303 -0.157757 0.443457 +vn -0.878000 0.112721 -0.465200 +vn -0.873920 -0.146801 0.463372 +vn -0.873196 -0.371001 0.316049 +vn -0.872924 -0.457451 -0.169535 +vn -0.870805 -0.189656 -0.453573 +vn -0.870593 -0.091603 0.483401 +vn -0.865869 -0.474897 0.157301 +vn -0.861154 0.276771 0.426395 +vn -0.856864 -0.108272 0.504044 +vn -0.855800 -0.253704 0.450823 +vn -0.855330 -0.234309 0.462072 +vn -0.849413 -0.298478 0.435210 +vn -0.847413 -0.078917 -0.525036 +vn -0.843182 -0.013413 0.537461 +vn -0.843031 0.385436 0.375151 +vn -0.838528 0.241794 -0.488268 +vn -0.835554 -0.085150 0.542770 +vn -0.833203 -0.240931 -0.497720 +vn -0.832966 0.065493 0.549434 +vn -0.823581 0.337742 0.455680 +vn -0.817464 0.436860 0.375374 +vn -0.814548 0.371365 0.445644 +vn -0.811590 -0.255527 0.525383 +vn -0.809905 -0.331436 0.483946 +vn -0.803584 -0.038763 -0.593929 +vn -0.800903 -0.377041 0.465182 +vn -0.794084 -0.471906 0.383061 +vn -0.792189 -0.309116 0.526198 +vn -0.788328 0.002355 0.615251 +vn -0.788092 0.067491 0.611846 +vn -0.781838 0.285062 -0.554498 +vn -0.777567 -0.591815 -0.212471 +vn -0.775315 -0.577158 -0.256467 +vn -0.774406 0.368873 -0.514031 +vn -0.771773 -0.380859 0.509228 +vn -0.770790 0.159652 -0.616761 +vn -0.758194 -0.073472 -0.647876 +vn -0.755487 -0.312193 0.576000 +vn -0.754149 -0.399642 0.521101 +vn -0.746151 -0.546448 0.380334 +vn -0.732123 0.095479 -0.674448 +vn -0.730965 0.274824 0.624629 +vn -0.730829 -0.166424 -0.661961 +vn -0.728164 0.013960 -0.685261 +vn -0.724982 -0.054737 -0.686590 +vn -0.721317 0.603325 0.340147 +vn -0.721087 0.206756 -0.661275 +vn -0.718620 0.395565 -0.571939 +vn -0.714578 -0.279688 0.641212 +vn -0.713958 -0.007352 0.700150 +vn -0.713845 0.236036 0.659327 +vn -0.709469 0.632278 -0.311253 +vn -0.704546 -0.685447 -0.183788 +vn -0.704485 0.708344 0.044158 +vn -0.701339 0.712586 -0.018544 +vn -0.694846 -0.065323 0.716185 +vn -0.692512 -0.077725 0.717207 +vn -0.690065 0.161488 -0.705501 +vn -0.689580 0.170597 0.703830 +vn -0.686426 0.664631 -0.295102 +vn -0.685608 0.004560 0.727956 +vn -0.682386 0.138034 0.717841 +vn -0.680992 0.698217 0.220777 +vn -0.675654 -0.072406 -0.733655 +vn -0.670901 0.738451 0.067690 +vn -0.656495 0.224532 0.720138 +vn -0.652418 -0.127716 0.747020 +vn -0.644505 0.292579 -0.706407 +vn -0.640390 -0.454265 -0.619309 +vn -0.636597 0.765415 0.094257 +vn -0.616919 0.311126 0.722919 +vn -0.600800 0.705010 0.376829 +vn -0.600603 -0.329338 0.728568 +vn -0.574344 0.747302 0.334169 +vn -0.572946 -0.632493 0.521235 +vn -0.559577 -0.603300 0.568244 +vn -0.556795 0.328822 0.762795 +vn -0.553084 -0.509467 0.659197 +vn -0.547534 -0.107099 0.829902 +vn -0.545461 0.374907 0.749612 +vn -0.535228 0.398782 0.744650 +vn -0.532780 -0.476055 -0.699655 +vn -0.530867 -0.827856 0.181201 +vn -0.521236 0.243999 -0.817788 +vn -0.517433 -0.420395 0.745340 +vn -0.508450 0.393580 0.765881 +vn -0.495364 -0.234143 0.836535 +vn -0.484867 -0.794204 0.366256 +vn -0.473621 -0.880617 0.014049 +vn -0.472804 0.574982 -0.667722 +vn -0.472291 -0.334673 -0.815436 +vn -0.471354 -0.828010 -0.303685 +vn -0.469107 0.831646 -0.297160 +vn -0.468301 -0.857556 0.212820 +vn -0.461319 -0.405063 0.789372 +vn -0.450325 -0.446152 0.773406 +vn -0.444120 -0.444711 0.777811 +vn -0.441887 -0.256146 0.859724 +vn -0.439407 -0.322907 0.838244 +vn -0.438683 -0.408483 0.800437 +vn -0.436358 -0.325835 0.838703 +vn -0.434279 -0.884435 0.170809 +vn -0.434080 0.379053 0.817247 +vn -0.425709 -0.891134 -0.157008 +vn -0.422963 -0.243408 -0.872843 +vn -0.419890 -0.903209 -0.088916 +vn -0.412971 -0.223117 0.882991 +vn -0.406686 0.162694 0.898965 +vn -0.394028 0.533409 0.748477 +vn -0.388126 -0.854167 0.346059 +vn -0.386568 -0.751703 -0.534329 +vn -0.359381 -0.254884 -0.897708 +vn -0.357518 0.435442 0.826179 +vn -0.338292 0.932448 0.126886 +vn -0.329682 0.816620 -0.473753 +vn -0.309872 0.472052 0.825316 +vn -0.299902 0.730850 0.613121 +vn -0.296168 -0.790144 0.536616 +vn -0.254041 0.759104 0.599353 +vn -0.252111 0.965555 0.064372 +vn -0.241052 -0.956433 -0.164712 +vn -0.227466 -0.968585 -0.100511 +vn -0.211146 0.950518 -0.227889 +vn -0.209784 0.962537 0.171794 +vn -0.208099 -0.117171 -0.971064 +vn -0.198014 -0.950206 -0.240623 +vn -0.193781 0.067335 -0.978731 +vn -0.189832 0.701031 0.687400 +vn -0.189713 0.142783 0.971402 +vn -0.168066 0.721925 0.671251 +vn -0.148919 0.976646 0.154874 +vn -0.140819 -0.956507 -0.255470 +vn -0.137971 0.198536 -0.970334 +vn -0.122026 -0.411153 0.903362 +vn -0.114623 0.951038 0.287033 +vn -0.099176 0.991926 -0.079033 +vn -0.073506 0.159810 -0.984407 +vn -0.065433 -0.255417 -0.964614 +vn -0.064541 -0.090827 -0.993773 +vn -0.058920 -0.900096 -0.431689 +vn -0.052794 0.743146 0.667044 +vn -0.047591 0.467261 0.882838 +vn -0.044326 0.093986 -0.994586 +vn -0.042800 0.389630 0.919977 +vn -0.041113 0.739929 0.671428 +vn -0.024351 -0.992009 0.123795 +vn -0.022340 -0.180099 -0.983395 +vn -0.019868 -0.225351 0.974075 +vn -0.013558 0.600072 -0.799831 +vn -0.010605 0.997301 -0.072650 +vn -0.008578 -0.999963 -0.000008 +vn -0.008367 0.905320 0.424648 +vn -0.006112 -0.999819 0.018014 +vn -0.005719 -0.999984 -0.000005 +vn -0.002208 -0.999991 -0.003606 +vn 0.0 -1.0 0.0 +vn 0.0 -0.999976 -0.006993 +vn 0.0 -0.999889 -0.014906 +vn 0.0 -0.999882 0.015391 +vn 0.0 -0.999327 0.036671 +vn 0.0 -0.998639 -0.052165 +vn 0.0 -0.996705 0.081117 +vn 0.0 -0.996120 0.088002 +vn 0.0 -0.995823 -0.091305 +vn 0.0 -0.995316 0.096677 +vn 0.0 -0.992374 -0.123261 +vn 0.0 -0.991705 -0.128537 +vn 0.0 -0.987873 0.155261 +vn 0.0 -0.983513 -0.180835 +vn 0.0 -0.976630 0.214929 +vn 0.0 -0.972219 0.234074 +vn 0.0 -0.968848 0.247658 +vn 0.0 -0.968741 0.248072 +vn 0.0 -0.965647 -0.259856 +vn 0.0 -0.953782 0.300501 +vn 0.0 -0.942680 -0.333697 +vn 0.0 -0.931168 -0.364591 +vn 0.0 -0.923728 0.383050 +vn 0.0 -0.918268 -0.395960 +vn 0.0 -0.907019 -0.421089 +vn 0.0 -0.899311 0.437310 +vn 0.0 -0.897831 0.440340 +vn 0.0 -0.889807 0.456337 +vn 0.0 -0.869472 0.493982 +vn 0.0 -0.809618 -0.586957 +vn 0.0 -0.747858 0.663859 +vn 0.0 -0.746748 0.665107 +vn 0.0 -0.729334 -0.684158 +vn 0.0 -0.691000 -0.722855 +vn 0.0 -0.661306 0.750116 +vn 0.0 -0.646505 -0.762910 +vn 0.0 -0.643279 -0.765632 +vn 0.0 -0.625114 0.780533 +vn 0.0 -0.617650 0.786453 +vn 0.0 -0.571180 -0.820825 +vn 0.0 -0.541665 -0.840594 +vn 0.0 -0.519853 -0.854256 +vn 0.0 -0.468728 -0.883343 +vn 0.0 -0.459639 -0.888106 +vn 0.0 -0.441129 0.897444 +vn 0.0 -0.411495 0.911412 +vn 0.0 -0.411394 -0.911458 +vn 0.0 -0.354066 -0.935220 +vn 0.0 -0.341915 -0.939731 +vn 0.0 -0.336356 0.941735 +vn 0.0 -0.320303 -0.947315 +vn 0.0 -0.257187 -0.966362 +vn 0.0 -0.239983 0.970777 +vn 0.0 -0.239735 0.970838 +vn 0.0 -0.226535 -0.974003 +vn 0.0 -0.206544 0.978437 +vn 0.0 -0.161062 0.986944 +vn 0.0 -0.148290 0.988944 +vn 0.0 -0.144077 -0.989567 +vn 0.0 -0.114550 -0.993418 +vn 0.0 -0.069705 0.997568 +vn 0.0 -0.059938 -0.998202 +vn 0.0 -0.039081 -0.999236 +vn 0.0 -0.030054 -0.999548 +vn 0.0 -0.024487 0.999700 +vn 0.0 0.046255 -0.998930 +vn 0.0 0.048086 -0.998843 +vn 0.0 0.082046 0.996629 +vn 0.0 0.084064 0.996460 +vn 0.0 0.151835 -0.988406 +vn 0.0 0.248054 -0.968746 +vn 0.0 0.252961 0.967476 +vn 0.0 0.258139 -0.966108 +vn 0.0 0.264014 0.964519 +vn 0.0 0.288674 -0.957427 +vn 0.0 0.377903 -0.925845 +vn 0.0 0.406244 -0.913765 +vn 0.0 0.434964 0.900448 +vn 0.0 0.489355 0.872085 +vn 0.0 0.499338 -0.866407 +vn 0.0 0.510465 0.859898 +vn 0.0 0.613714 0.789529 +vn 0.0 0.652702 -0.757614 +vn 0.0 0.707194 -0.707019 +vn 0.0 0.745702 -0.666280 +vn 0.0 0.878826 -0.477143 +vn 0.0 0.900083 -0.435718 +vn 0.0 0.929260 -0.369426 +vn 0.0 0.931024 -0.364957 +vn 0.0 0.940177 0.340687 +vn 0.0 0.950652 0.310260 +vn 0.0 0.966604 -0.256273 +vn 0.0 0.969453 0.245278 +vn 0.0 0.983536 -0.180712 +vn 0.0 0.985018 -0.172454 +vn 0.0 0.989641 0.143563 +vn 0.0 0.993286 0.115684 +vn 0.0 0.993555 0.113353 +vn 0.0 0.996990 -0.077533 +vn 0.0 0.997817 0.066047 +vn 0.0 0.999991 0.004262 +vn 0.002208 -0.999991 -0.003606 +vn 0.005719 -0.999984 -0.000005 +vn 0.006112 -0.999819 0.018014 +vn 0.008367 0.905320 0.424648 +vn 0.008578 -0.999963 -0.000008 +vn 0.010605 0.997301 -0.072650 +vn 0.013558 0.600072 -0.799831 +vn 0.019868 -0.225351 0.974075 +vn 0.022340 -0.180099 -0.983395 +vn 0.024351 -0.992009 0.123795 +vn 0.041113 0.739929 0.671428 +vn 0.042800 0.389630 0.919977 +vn 0.044326 0.093986 -0.994586 +vn 0.047591 0.467261 0.882838 +vn 0.052794 0.743146 0.667044 +vn 0.058920 -0.900096 -0.431689 +vn 0.064541 -0.090827 -0.993773 +vn 0.065433 -0.255417 -0.964614 +vn 0.073506 0.159810 -0.984407 +vn 0.099176 0.991926 -0.079033 +vn 0.114623 0.951038 0.287033 +vn 0.122026 -0.411153 0.903362 +vn 0.137971 0.198536 -0.970334 +vn 0.140819 -0.956507 -0.255470 +vn 0.148919 0.976646 0.154874 +vn 0.168066 0.721925 0.671251 +vn 0.189713 0.142783 0.971402 +vn 0.189832 0.701031 0.687400 +vn 0.193781 0.067335 -0.978731 +vn 0.198014 -0.950206 -0.240623 +vn 0.208099 -0.117171 -0.971064 +vn 0.209784 0.962537 0.171794 +vn 0.211146 0.950518 -0.227889 +vn 0.227466 -0.968585 -0.100511 +vn 0.241052 -0.956433 -0.164712 +vn 0.252111 0.965555 0.064372 +vn 0.254041 0.759104 0.599353 +vn 0.296168 -0.790144 0.536616 +vn 0.299902 0.730850 0.613121 +vn 0.309872 0.472052 0.825316 +vn 0.329682 0.816620 -0.473753 +vn 0.338292 0.932448 0.126886 +vn 0.357518 0.435442 0.826179 +vn 0.359381 -0.254883 -0.897708 +vn 0.386568 -0.751703 -0.534329 +vn 0.388126 -0.854167 0.346059 +vn 0.394028 0.533409 0.748477 +vn 0.406686 0.162694 0.898965 +vn 0.412971 -0.223117 0.882991 +vn 0.419890 -0.903209 -0.088916 +vn 0.422963 -0.243408 -0.872843 +vn 0.425709 -0.891134 -0.157008 +vn 0.434080 0.379053 0.817247 +vn 0.434279 -0.884435 0.170809 +vn 0.436358 -0.325835 0.838703 +vn 0.438683 -0.408483 0.800437 +vn 0.439407 -0.322907 0.838244 +vn 0.441887 -0.256146 0.859724 +vn 0.444120 -0.444711 0.777811 +vn 0.450325 -0.446152 0.773406 +vn 0.461319 -0.405063 0.789372 +vn 0.468301 -0.857556 0.212820 +vn 0.469107 0.831646 -0.297160 +vn 0.471354 -0.828010 -0.303685 +vn 0.472291 -0.334673 -0.815436 +vn 0.472804 0.574982 -0.667722 +vn 0.473621 -0.880617 0.014049 +vn 0.484867 -0.794204 0.366256 +vn 0.495365 -0.234143 0.836535 +vn 0.508450 0.393580 0.765881 +vn 0.517433 -0.420395 0.745340 +vn 0.521236 0.243999 -0.817788 +vn 0.530867 -0.827856 0.181201 +vn 0.532780 -0.476055 -0.699655 +vn 0.535228 0.398782 0.744650 +vn 0.545461 0.374907 0.749612 +vn 0.547533 -0.107099 0.829902 +vn 0.553084 -0.509467 0.659197 +vn 0.556795 0.328822 0.762795 +vn 0.559577 -0.603300 0.568244 +vn 0.572946 -0.632493 0.521235 +vn 0.574344 0.747302 0.334169 +vn 0.600603 -0.329338 0.728568 +vn 0.600800 0.705010 0.376829 +vn 0.616919 0.311126 0.722919 +vn 0.636597 0.765415 0.094257 +vn 0.640390 -0.454265 -0.619309 +vn 0.644505 0.292579 -0.706407 +vn 0.652418 -0.127716 0.747020 +vn 0.656495 0.224532 0.720138 +vn 0.670901 0.738451 0.067690 +vn 0.675654 -0.072406 -0.733654 +vn 0.680992 0.698217 0.220777 +vn 0.682386 0.138034 0.717841 +vn 0.685608 0.004560 0.727956 +vn 0.686426 0.664631 -0.295102 +vn 0.689580 0.170597 0.703830 +vn 0.690065 0.161488 -0.705501 +vn 0.692512 -0.077725 0.717207 +vn 0.694846 -0.065323 0.716185 +vn 0.701339 0.712586 -0.018544 +vn 0.704485 0.708344 0.044158 +vn 0.704546 -0.685447 -0.183788 +vn 0.709469 0.632278 -0.311253 +vn 0.713845 0.236036 0.659327 +vn 0.713958 -0.007352 0.700150 +vn 0.714578 -0.279688 0.641212 +vn 0.718620 0.395565 -0.571939 +vn 0.721087 0.206756 -0.661275 +vn 0.721317 0.603325 0.340147 +vn 0.724982 -0.054737 -0.686590 +vn 0.728164 0.013960 -0.685261 +vn 0.730829 -0.166424 -0.661961 +vn 0.730965 0.274824 0.624629 +vn 0.732123 0.095479 -0.674448 +vn 0.746151 -0.546448 0.380334 +vn 0.754149 -0.399642 0.521101 +vn 0.755487 -0.312193 0.576000 +vn 0.758194 -0.073472 -0.647876 +vn 0.770790 0.159652 -0.616761 +vn 0.771773 -0.380859 0.509228 +vn 0.774406 0.368873 -0.514031 +vn 0.775315 -0.577158 -0.256467 +vn 0.777567 -0.591815 -0.212471 +vn 0.781838 0.285062 -0.554498 +vn 0.788092 0.067491 0.611846 +vn 0.788328 0.002355 0.615251 +vn 0.792189 -0.309115 0.526198 +vn 0.794084 -0.471906 0.383061 +vn 0.800903 -0.377041 0.465182 +vn 0.803584 -0.038763 -0.593929 +vn 0.809905 -0.331436 0.483946 +vn 0.811590 -0.255527 0.525383 +vn 0.814548 0.371365 0.445644 +vn 0.817465 0.436860 0.375374 +vn 0.823581 0.337742 0.455680 +vn 0.832966 0.065493 0.549435 +vn 0.833203 -0.240931 -0.497720 +vn 0.835554 -0.085150 0.542770 +vn 0.838528 0.241794 -0.488268 +vn 0.843031 0.385436 0.375151 +vn 0.843182 -0.013413 0.537461 +vn 0.847413 -0.078917 -0.525036 +vn 0.849413 -0.298478 0.435210 +vn 0.855330 -0.234309 0.462072 +vn 0.855800 -0.253704 0.450823 +vn 0.856864 -0.108272 0.504044 +vn 0.861154 0.276771 0.426395 +vn 0.865869 -0.474897 0.157301 +vn 0.870593 -0.091603 0.483401 +vn 0.870805 -0.189656 -0.453574 +vn 0.872924 -0.457451 -0.169535 +vn 0.873196 -0.371001 0.316049 +vn 0.873920 -0.146801 0.463372 +vn 0.878000 0.112721 -0.465200 +vn 0.882303 -0.157757 0.443457 +vn 0.884238 -0.118708 0.451699 +vn 0.885226 0.027722 0.464334 +vn 0.886106 -0.134553 0.443521 +vn 0.887054 0.129180 -0.443224 +vn 0.888577 -0.176965 0.423219 +vn 0.890179 0.379752 0.251732 +vn 0.891660 -0.206380 -0.402927 +vn 0.895561 0.279921 0.345853 +vn 0.896375 -0.314013 0.312901 +vn 0.896492 -0.209997 0.390132 +vn 0.897638 -0.075175 0.434275 +vn 0.900115 -0.427563 0.083560 +vn 0.900933 -0.428188 -0.070534 +vn 0.902406 -0.409772 -0.133235 +vn 0.903523 -0.427444 0.030629 +vn 0.903638 -0.241643 0.353620 +vn 0.904557 -0.348274 0.245931 +vn 0.906057 0.381196 -0.183714 +vn 0.908375 -0.067055 -0.412744 +vn 0.911128 0.354633 -0.209953 +vn 0.914078 0.078569 -0.397854 +vn 0.914811 -0.319057 -0.247637 +vn 0.915159 0.092329 0.392376 +vn 0.916435 0.259058 0.305016 +vn 0.916991 -0.031325 -0.397675 +vn 0.924696 0.071256 0.373979 +vn 0.925893 -0.317986 -0.203981 +vn 0.928884 -0.235037 -0.286238 +vn 0.929509 0.363012 0.065076 +vn 0.931502 -0.303009 0.201219 +vn 0.932268 -0.235072 0.274985 +vn 0.935406 -0.329436 -0.128401 +vn 0.937868 -0.104277 0.330952 +vn 0.938748 -0.026743 0.343566 +vn 0.940622 -0.271350 0.203960 +vn 0.946846 0.079474 -0.311717 +vn 0.947053 -0.260578 -0.187587 +vn 0.948489 0.053494 0.312262 +vn 0.950649 0.170929 -0.258938 +vn 0.953528 0.272774 -0.127976 +vn 0.958495 0.285041 0.006183 +vn 0.962143 0.263665 -0.069009 +vn 0.965052 -0.262008 -0.005160 +vn 0.966751 -0.112059 0.229859 +vn 0.968383 -0.136717 -0.208669 +vn 0.969837 -0.181013 0.163249 +vn 0.970849 -0.239674 0.003057 +vn 0.972644 0.041816 0.228505 +vn 0.973460 0.072270 0.217146 +vn 0.975949 -0.212540 0.048483 +vn 0.976178 -0.053752 -0.210207 +vn 0.976428 0.050032 0.209963 +vn 0.977198 -0.212138 0.009060 +vn 0.979778 0.191800 -0.056995 +vn 0.984962 0.117969 0.126225 +vn 0.986100 0.044479 0.160089 +vn 0.987794 -0.105965 -0.114172 +vn 0.988213 -0.121405 -0.093246 +vn 0.990649 0.135951 -0.011452 +vn 0.998673 -0.034541 -0.038197 +vn 1.0 0.0 0.0 +vn 1.0 0.0 0.0 + + +s off +f 149//334 146//554 148//309 +f 146//554 150//336 148//309 +f 146//554 147//360 150//336 +f 149//334 144//344 146//554 +f 151//346 249//492 144//344 +f 154//507 90//403 153//447 +f 90//403 154//507 91//404 +f 155//501 93//390 92//398 +f 155//501 94//388 93//390 +f 232//616 154//507 156//569 +f 89//405 153//447 90//403 +f 91//404 154//507 155//501 +f 155//501 92//398 91//404 +f 155//501 160//477 94//388 +f 165//572 228//568 264//544 +f 286//576 158//528 171//451 +f 289//615 154//507 232//616 +f 289//615 157//597 155//501 +f 171//451 175//228 269//559 +f 155//501 291//600 160//477 +f 359//497 287//619 270//548 +f 286//576 171//451 288//596 +f 98//351 160//477 97//368 +f 359//497 159//288 290//423 +f 160//477 359//497 290//423 +f 290//423 172//154 173//260 +f 161//543 98//351 164//439 +f 98//351 161//543 160//477 +f 101//384 100//387 161//543 +f 102//375 162//536 103//370 +f 162//536 104//367 103//370 +f 100//387 160//477 161//543 +f 160//477 100//387 94//388 +f 101//384 162//536 102//375 +f 161//543 162//536 101//384 +f 104//367 162//536 195//605 +f 118//364 104//367 195//605 +f 163//483 195//605 162//536 +f 164//439 163//483 161//543 +f 162//536 161//543 163//483 +f 195//605 163//483 105//361 +f 106//335 105//361 163//483 +f 107//306 106//335 164//439 +f 163//483 164//439 106//335 +f 107//306 164//439 99//341 +f 228//568 165//572 166//524 +f 180//590 188//527 261//525 +f 229//449 228//568 230//296 +f 228//568 229//449 618//598 +f 178//421 158//528 229//449 +f 108//343 169//427 168//486 +f 169//427 108//343 109//342 +f 170//267 169//427 110//330 +f 109//342 110//330 169//427 +f 176//216 165//572 169//427 +f 111//318 178//421 177//121 +f 112//332 177//121 176//216 +f 170//267 113//322 112//332 +f 255//310 256//312 171//451 +f 171//451 114//314 255//310 +f 171//451 115//320 114//314 +f 110//330 113//322 170//267 +f 116//321 178//421 111//318 +f 115//320 178//421 116//321 +f 171//451 178//421 115//320 +f 257//324 171//451 256//312 +f 174//251 172//154 175//228 +f 173//260 172//154 174//251 +f 171//451 174//251 175//228 +f 174//251 257//324 117//319 +f 258//307 174//251 117//319 +f 259//315 174//251 258//307 +f 173//260 174//251 259//315 +f 173//260 259//315 260//328 +f 173//260 260//328 96//340 +f 171//451 257//324 174//251 +f 176//216 183//445 165//572 +f 177//121 178//421 230//296 +f 166//524 261//525 262//418 +f 111//318 177//121 112//332 +f 176//216 170//267 112//332 +f 179//428 262//418 261//525 +f 178//421 229//449 230//296 +f 170//267 176//216 169//427 +f 168//486 169//427 167//538 +f 98//351 99//341 164//439 +f 179//428 261//525 188//527 +f 180//590 182//540 194//603 +f 189//542 194//603 182//540 +f 183//445 181//480 182//540 +f 181//480 191//453 189//542 +f 181//480 189//542 182//540 +f 181//480 183//445 187//291 +f 193//101 185//171 184//165 +f 187//291 185//171 186//208 +f 192//205 186//208 193//101 +f 187//291 183//445 185//171 +f 190//278 187//291 186//208 +f 186//208 192//205 190//278 +f 193//101 186//208 185//171 +f 181//480 187//291 191//453 +f 191//453 187//291 190//278 +f 189//305 191//305 194//305 +f 190//305 192//305 193//304 +f 193//304 191//305 190//305 +f 194//305 191//305 193//304 +f 184//300 179//302 188//303 +f 193//304 184//300 188//303 +f 193//304 188//303 194//305 +f 180//590 194//603 188//527 +f 182//540 180//590 183//445 +f 165//572 180//590 261//525 +f 183//445 180//590 165//572 +f 262//418 179//428 184//165 +f 263//145 184//165 185//171 +f 184//165 263//145 262//418 +f 185//171 183//445 176//216 +f 118//364 195//605 121//358 +f 195//605 105//361 119//365 +f 121//358 120//622 118//364 +f 195//605 119//365 121//358 +f 121//358 123//622 120//622 +f 122//622 123//622 121//358 +f 123//622 122//622 124//378 +f 124//378 125//363 123//622 +f 125//363 124//378 247//611 +f 247//611 126//348 125//363 +f 127//372 247//611 124//378 +f 167//538 169//427 264//544 +f 219//579 167//538 156//569 +f 231//563 206//561 252//584 +f 294//475 128//385 200//458 +f 89//405 131//397 153//447 +f 132//395 153//447 131//397 +f 219//579 133//393 199//446 +f 133//393 139//392 199//446 +f 250//383 200//458 128//385 +f 203//532 200//458 253//490 +f 202//549 200//458 203//532 +f 213//588 204//457 201//557 +f 203//532 206//561 202//549 +f 205//591 208//607 207//562 +f 202//549 210//551 209//552 +f 206//561 231//563 210//551 +f 207//562 209//552 231//563 +f 211//567 214//620 197//541 +f 211//567 234//522 239//604 +f 214//620 198//585 197//541 +f 213//588 198//585 214//620 +f 196//519 211//567 197//541 +f 205//591 198//585 213//588 +f 213//588 214//620 235//529 +f 211//567 196//519 234//522 +f 236//465 234//522 196//519 +f 215//535 236//465 212//511 +f 196//519 212//511 236//465 +f 204//457 138//317 201//557 +f 138//317 204//457 135//313 +f 254//325 136//316 217//281 +f 133//393 219//579 132//395 +f 201//557 219//579 218//612 +f 219//579 201//557 167//538 +f 168//486 167//538 201//557 +f 201//557 138//317 168//486 +f 168//486 138//317 137//333 +f 137//333 108//343 168//486 +f 153//447 219//579 156//569 +f 219//579 153//447 132//395 +f 264//544 169//427 165//572 +f 129//386 220//437 130//400 +f 199//446 139//392 293//438 +f 219//579 221//581 222//621 +f 222//621 218//612 219//579 +f 220//437 224//489 223//468 +f 224//489 225//515 223//468 +f 199//446 293//438 223//468 +f 293//438 220//437 223//468 +f 293//438 130//400 220//437 +f 221//581 225//515 226//610 +f 221//581 199//446 223//468 +f 199//446 221//581 219//579 +f 294//475 225//515 129//386 +f 224//489 227//444 129//386 +f 227//444 220//437 129//386 +f 294//475 202//549 226//610 +f 232//616 228//568 618//598 +f 228//568 166//524 230//296 +f 252//584 206//561 203//532 +f 231//563 205//591 207//562 +f 231//563 252//584 251//599 +f 210//551 202//549 206//561 +f 228//568 232//616 264//544 +f 171//451 158//528 178//421 +f 217//281 136//316 237//415 +f 233//435 237//415 152//331 +f 237//415 216//440 217//281 +f 215//535 216//440 236//465 +f 237//415 245//473 216//440 +f 236//465 216//440 245//473 +f 222//621 221//581 238//608 +f 238//608 208//607 222//621 +f 218//612 222//621 208//607 +f 208//607 238//608 202//549 +f 218//612 208//607 201//557 +f 201//557 208//607 205//591 +f 226//610 202//549 238//608 +f 238//608 221//581 226//610 +f 294//475 226//610 225//515 +f 225//515 224//489 129//386 +f 208//607 202//549 209//552 +f 209//552 207//562 208//607 +f 240//467 239//604 234//522 +f 239//604 241//580 211//567 +f 241//580 214//620 211//567 +f 241//580 242//508 214//620 +f 235//529 214//620 242//508 +f 233//435 235//529 242//508 +f 242//508 243//455 233//435 +f 234//522 236//465 244//478 +f 244//478 240//467 234//522 +f 243//455 246//472 233//435 +f 237//415 233//435 246//472 +f 245//473 237//415 246//472 +f 236//465 245//473 244//478 +f 247//611 140//337 126//348 +f 247//611 127//372 141//350 +f 140//337 247//611 142//311 +f 247//611 141//350 142//311 +f 156//569 154//507 153//447 +f 289//615 618//598 620//593 +f 204//457 213//588 248//469 +f 135//313 204//457 143//326 +f 204//457 248//469 143//326 +f 143//326 248//469 145//338 +f 146//554 249//492 248//469 +f 145//338 248//469 249//492 +f 146//554 248//469 152//331 +f 249//492 146//554 144//344 +f 249//492 151//346 145//338 +f 136//316 152//331 237//415 +f 233//435 213//588 235//529 +f 248//469 213//588 233//435 +f 209//552 210//551 231//563 +f 213//588 201//557 205//591 +f 96//340 290//423 173//260 +f 290//423 96//340 95//347 +f 251//599 198//585 205//591 +f 231//563 251//599 205//591 +f 252//584 203//532 253//490 +f 200//458 250//383 253//490 +f 248//469 233//435 152//331 +f 261//525 166//524 165//572 +f 166//524 262//418 230//296 +f 230//296 262//418 263//145 +f 176//216 263//145 185//171 +f 263//145 177//121 230//296 +f 263//145 176//216 177//121 +f 156//569 264//544 232//616 +f 167//538 264//544 156//569 +f 265//602 266//530 267//503 +f 175//228 268//448 269//559 +f 270//548 267//503 271//276 +f 272//424 271//276 267//503 +f 272//424 267//503 266//530 +f 265//602 273//546 274//601 +f 275//542 274//601 273//546 +f 268//448 276//484 273//546 +f 276//484 277//453 275//542 +f 276//484 275//542 273//546 +f 276//484 268//448 278//293 +f 279//93 280//157 281//150 +f 278//293 280//157 282//211 +f 283//205 282//211 279//93 +f 278//293 268//448 280//157 +f 284//278 278//293 282//211 +f 282//211 283//205 284//278 +f 279//93 282//211 280//157 +f 276//484 278//293 277//453 +f 277//453 278//293 284//278 +f 275//305 277//305 274//305 +f 284//305 283//305 279//305 +f 279//305 277//305 284//305 +f 274//305 277//305 279//305 +f 281//305 272//305 266//305 +f 279//305 281//305 266//305 +f 279//305 266//305 274//305 +f 265//602 274//601 266//530 +f 273//546 265//602 268//448 +f 270//548 269//559 265//602 +f 268//448 265//602 269//559 +f 271//276 272//424 281//150 +f 285//124 281//150 280//157 +f 281//150 285//124 271//276 +f 280//157 268//448 175//228 +f 265//602 267//503 270//548 +f 270//548 271//276 159//288 +f 271//276 285//124 292//128 +f 280//157 292//128 285//124 +f 292//128 159//288 271//276 +f 292//128 280//157 175//228 +f 221//581 223//468 225//515 +f 220//437 227//444 224//489 +f 287//619 288//596 269//559 +f 269//559 270//548 287//619 +f 288//596 171//451 269//559 +f 289//615 232//616 618//598 +f 270//548 159//288 359//497 +f 287//619 359//497 291//600 +f 619//618 287//619 291//600 +f 286//576 288//596 619//618 +f 155//501 154//507 289//615 +f 620//593 619//618 157//597 +f 160//477 290//423 97//368 +f 95//347 97//368 290//423 +f 157//597 291//600 155//501 +f 288//596 287//619 619//618 +f 159//288 292//128 172//154 +f 292//128 175//228 172//154 +f 134//399 293//438 139//392 +f 130//400 293//438 134//399 +f 202//549 294//475 200//458 +f 129//386 128//385 294//475 +f 212//511 296//595 215//535 +f 196//519 296//595 212//511 +f 254//325 217//281 295//345 +f 216//440 295//345 217//281 +f 252//584 296//595 196//519 +f 196//519 197//541 252//584 +f 251//599 252//584 197//541 +f 197//541 198//585 251//599 +f 330//531 329//547 328//614 +f 327//606 328//614 329//547 +f 296//595 331//510 330//531 +f 330//531 328//614 296//595 +f 296//595 328//614 215//535 +f 253//490 331//510 252//584 +f 296//595 252//584 331//510 +f 329//547 330//531 297//373 +f 298//376 297//373 330//531 +f 298//376 331//510 299//382 +f 331//510 298//376 330//531 +f 331//510 253//490 299//382 +f 250//383 299//382 253//490 +f 333//470 332//479 328//614 +f 215//535 328//614 332//479 +f 327//606 333//470 328//614 +f 334//456 333//470 327//606 +f 301//355 333//470 300//359 +f 334//456 300//359 333//470 +f 302//356 332//479 301//355 +f 333//470 301//355 332//479 +f 215//535 332//479 216//440 +f 295//345 216//440 302//356 +f 216//440 332//479 302//356 +f 327//606 329//547 336//555 +f 336//555 335//518 327//606 +f 329//547 297//373 303//369 +f 303//369 336//555 329//547 +f 334//456 327//606 335//518 +f 300//359 334//456 335//518 +f 335//518 304//366 300//359 +f 335//518 336//555 338//564 +f 338//564 337//516 335//518 +f 336//555 303//369 305//362 +f 305//362 338//564 336//555 +f 304//366 335//518 337//516 +f 337//516 306//371 304//366 +f 337//516 338//564 340//566 +f 340//566 339//517 337//516 +f 338//564 305//362 307//357 +f 307//357 340//566 338//564 +f 306//371 337//516 339//517 +f 339//517 308//374 306//371 +f 339//517 340//566 342//571 +f 342//571 341//520 339//517 +f 340//566 307//357 309//354 +f 309//354 342//571 340//566 +f 308//374 339//517 341//520 +f 341//520 310//377 308//374 +f 341//520 342//571 344//577 +f 344//577 343//514 341//520 +f 342//571 309//354 311//349 +f 311//349 344//577 342//571 +f 310//377 341//520 343//514 +f 343//514 312//381 310//377 +f 343//514 344//577 346//578 +f 346//578 345//513 343//514 +f 344//577 311//349 313//339 +f 313//339 346//578 344//577 +f 312//381 343//514 345//513 +f 345//513 314//389 312//381 +f 345//513 346//578 348//573 +f 348//573 347//509 345//513 +f 346//578 313//339 315//327 +f 315//327 348//573 346//578 +f 314//389 345//513 347//509 +f 347//509 316//396 314//389 +f 347//509 348//573 350//574 +f 350//574 349//506 347//509 +f 348//573 315//327 317//308 +f 317//308 350//574 348//573 +f 316//396 347//509 349//506 +f 349//506 318//401 316//396 +f 349//506 350//574 352//575 +f 352//575 351//498 349//506 +f 350//574 317//308 319//323 +f 319//323 352//575 350//574 +f 318//401 349//506 351//498 +f 351//498 320//394 318//401 +f 351//498 352//575 354//583 +f 354//583 353//496 351//498 +f 352//575 319//323 321//329 +f 321//329 354//583 352//575 +f 320//394 351//498 353//496 +f 353//496 322//402 320//394 +f 353//496 354//583 356//493 +f 356//493 355//412 353//496 +f 354//583 321//329 323//352 +f 323//352 356//493 354//583 +f 322//402 353//496 355//412 +f 355//412 324//380 322//402 +f 355//412 356//493 358//239 +f 358//239 357//274 355//412 +f 325//391 358//239 356//493 +f 356//493 323//352 325//391 +f 324//380 355//412 357//274 +f 357//274 326//353 324//380 +f 147//360 146//554 152//331 +f 172//154 290//423 159//288 +f 160//477 291//600 359//497 +f 360//156 149//334 148//309 +f 150//336 360//156 148//309 +f 147//360 360//156 150//336 +f 144//344 149//334 360//156 +f 457//218 151//346 144//344 +f 90//403 362//203 361//263 +f 362//203 90//403 91//404 +f 93//390 363//209 92//398 +f 94//388 363//209 93//390 +f 362//203 440//94 364//141 +f 361//263 89//405 90//403 +f 362//203 91//404 363//209 +f 92//398 363//209 91//404 +f 368//233 363//209 94//388 +f 436//142 373//138 464//166 +f 366//182 486//137 379//259 +f 362//203 489//95 440//94 +f 365//113 489//95 363//209 +f 383//482 379//259 469//151 +f 491//110 363//209 368//233 +f 487//91 528//213 470//162 +f 379//259 486//137 488//116 +f 368//233 98//351 97//368 +f 367//422 528//213 490//287 +f 528//213 368//233 490//287 +f 380//556 490//287 381//450 +f 98//351 369//167 372//271 +f 369//167 98//351 368//233 +f 100//387 101//384 369//167 +f 370//174 102//375 103//370 +f 104//367 370//174 103//370 +f 368//233 100//387 369//167 +f 100//387 368//233 94//388 +f 370//174 101//384 102//375 +f 370//174 369//167 101//384 +f 370//174 104//367 403//105 +f 104//367 118//364 403//105 +f 403//105 371//227 370//174 +f 371//227 372//271 369//167 +f 369//167 370//174 371//227 +f 371//227 403//105 105//361 +f 105//361 106//335 371//227 +f 106//335 107//306 372//271 +f 372//271 371//227 106//335 +f 372//271 107//306 99//341 +f 373//138 436//142 374//186 +f 396//183 388//120 461//185 +f 436//142 437//261 438//414 +f 437//261 436//142 621//112 +f 366//182 386//289 437//261 +f 377//283 108//343 376//224 +f 108//343 377//283 109//342 +f 377//283 378//443 110//330 +f 110//330 109//342 377//283 +f 373//138 384//494 377//283 +f 386//289 111//318 385//589 +f 385//589 112//332 384//494 +f 113//322 378//443 112//332 +f 256//312 255//310 379//259 +f 114//314 379//259 255//310 +f 115//320 379//259 114//314 +f 113//322 110//330 378//443 +f 386//289 116//321 111//318 +f 386//289 115//320 116//321 +f 386//289 379//259 115//320 +f 379//259 257//324 256//312 +f 380//556 382//459 383//482 +f 380//556 381//450 382//459 +f 382//459 379//259 383//482 +f 257//324 382//459 117//319 +f 382//459 258//307 117//319 +f 382//459 259//315 258//307 +f 382//459 381//450 259//315 +f 259//315 381//450 260//328 +f 260//328 381//450 96//340 +f 257//324 379//259 382//459 +f 391//265 384//494 373//138 +f 386//289 385//589 438//414 +f 461//185 374//186 462//292 +f 385//589 111//318 112//332 +f 378//443 384//494 112//332 +f 462//292 387//282 461//185 +f 437//261 386//289 438//414 +f 384//494 378//443 377//283 +f 377//283 376//224 375//172 +f 99//341 98//351 372//271 +f 461//185 387//282 396//183 +f 390//170 388//120 402//107 +f 402//107 397//168 390//170 +f 389//230 391//265 390//170 +f 399//257 389//230 397//168 +f 397//168 389//230 390//170 +f 391//265 389//230 395//419 +f 393//539 401//609 392//545 +f 393//539 395//419 394//502 +f 394//502 400//505 401//609 +f 391//265 395//419 393//539 +f 395//419 398//432 394//502 +f 400//505 394//502 398//432 +f 394//502 401//609 393//539 +f 395//419 389//230 399//257 +f 395//419 399//257 398//432 +f 399//305 397//305 402//305 +f 400//305 398//305 401//406 +f 399//305 401//406 398//305 +f 399//305 402//305 401//406 +f 387//408 392//410 396//407 +f 392//410 401//406 396//407 +f 396//407 401//406 402//305 +f 402//107 388//120 396//183 +f 388//120 390//170 391//265 +f 388//120 373//138 461//185 +f 388//120 391//265 373//138 +f 387//282 462//292 392//545 +f 392//545 463//565 393//539 +f 463//565 392//545 462//292 +f 391//265 393//539 384//494 +f 403//105 118//364 121//358 +f 105//361 403//105 119//365 +f 120//622 121//358 118//364 +f 119//365 403//105 121//358 +f 123//622 121//358 120//622 +f 123//622 122//622 121//358 +f 122//622 123//622 124//378 +f 125//363 124//378 123//622 +f 124//378 125//363 455//99 +f 126//348 455//99 125//363 +f 455//99 127//372 124//378 +f 377//283 375//172 464//166 +f 375//172 427//131 364//141 +f 414//149 439//147 459//126 +f 128//385 494//235 408//252 +f 131//397 89//405 361//263 +f 361//263 132//395 131//397 +f 133//393 427//131 407//264 +f 139//392 133//393 407//264 +f 408//252 250//383 128//385 +f 408//252 411//178 460//220 +f 408//252 410//161 411//178 +f 412//253 421//122 409//153 +f 414//149 411//178 410//161 +f 416//103 413//119 415//148 +f 418//159 410//161 417//158 +f 439//147 414//149 418//159 +f 417//158 415//148 439//147 +f 422//90 419//143 405//169 +f 442//188 419//143 447//106 +f 406//125 422//90 405//169 +f 406//125 421//122 422//90 +f 419//143 404//191 405//169 +f 406//125 413//119 421//122 +f 422//90 421//122 443//181 +f 404//191 419//143 442//188 +f 442//188 444//245 404//191 +f 444//245 423//175 420//199 +f 420//199 404//191 444//245 +f 138//317 412//253 409//153 +f 412//253 138//317 135//313 +f 136//316 254//325 425//429 +f 427//131 133//393 132//395 +f 427//131 409//153 426//98 +f 409//153 427//131 375//172 +f 375//172 376//224 409//153 +f 138//317 409//153 376//224 +f 138//317 376//224 137//333 +f 108//343 137//333 376//224 +f 427//131 361//263 364//141 +f 361//263 427//131 132//395 +f 377//283 464//166 373//138 +f 428//273 129//386 130//400 +f 139//392 407//264 493//272 +f 429//129 427//131 430//89 +f 426//98 430//89 427//131 +f 432//221 428//273 431//242 +f 433//195 432//221 431//242 +f 493//272 407//264 431//242 +f 428//273 493//272 431//242 +f 130//400 493//272 428//273 +f 433//195 429//129 434//100 +f 407//264 429//129 431//242 +f 429//129 407//264 427//131 +f 433//195 494//235 129//386 +f 435//266 432//221 129//386 +f 428//273 435//266 129//386 +f 410//161 494//235 434//100 +f 436//142 440//94 621//112 +f 374//186 436//142 438//414 +f 414//149 459//126 411//178 +f 413//119 439//147 415//148 +f 459//126 439//147 458//111 +f 410//161 418//159 414//149 +f 440//94 436//142 464//166 +f 366//182 379//259 386//289 +f 136//316 425//429 445//295 +f 445//295 441//275 152//331 +f 424//270 445//295 425//429 +f 424//270 423//175 444//245 +f 453//237 445//295 424//270 +f 424//270 444//245 453//237 +f 429//129 430//89 446//102 +f 416//103 446//102 430//89 +f 430//89 426//98 416//103 +f 446//102 416//103 410//161 +f 416//103 426//98 409//153 +f 416//103 409//153 413//119 +f 410//161 434//100 446//102 +f 429//129 446//102 434//100 +f 434//100 494//235 433//195 +f 432//221 433//195 129//386 +f 410//161 416//103 417//158 +f 415//148 417//158 416//103 +f 447//106 448//243 442//188 +f 449//130 447//106 419//143 +f 422//90 449//130 419//143 +f 450//202 449//130 422//90 +f 422//90 443//181 450//202 +f 443//181 441//275 450//202 +f 451//255 450//202 441//275 +f 444//245 442//188 452//232 +f 448//243 452//232 442//188 +f 454//238 451//255 441//275 +f 441//275 445//295 454//238 +f 445//295 453//237 454//238 +f 453//237 444//245 452//232 +f 140//337 455//99 126//348 +f 127//372 455//99 141//350 +f 455//99 140//337 142//311 +f 141//350 455//99 142//311 +f 362//203 364//141 361//263 +f 621//112 489//95 622//117 +f 421//122 412//253 456//241 +f 412//253 135//313 143//326 +f 456//241 412//253 143//326 +f 456//241 143//326 145//338 +f 457//218 360//156 456//241 +f 456//241 145//338 457//218 +f 456//241 360//156 152//331 +f 360//156 457//218 144//344 +f 151//346 457//218 145//338 +f 152//331 136//316 445//295 +f 421//122 441//275 443//181 +f 421//122 456//241 441//275 +f 418//159 417//158 439//147 +f 409//153 421//122 413//119 +f 490//287 96//340 381//450 +f 96//340 490//287 95//347 +f 406//125 458//111 413//119 +f 458//111 439//147 413//119 +f 411//178 459//126 460//220 +f 250//383 408//252 460//220 +f 441//275 456//241 152//331 +f 374//186 461//185 373//138 +f 462//292 374//186 438//414 +f 462//292 438//414 463//565 +f 463//565 384//494 393//539 +f 385//589 463//565 438//414 +f 384//494 463//565 385//589 +f 464//166 364//141 440//94 +f 464//166 375//172 364//141 +f 466//180 465//108 467//207 +f 468//262 383//482 469//151 +f 467//207 470//162 471//434 +f 471//434 472//286 467//207 +f 467//207 472//286 466//180 +f 473//164 465//108 474//109 +f 474//109 475//168 473//164 +f 476//226 468//262 473//164 +f 477//257 476//226 475//168 +f 475//168 476//226 473//164 +f 468//262 476//226 478//417 +f 480//553 479//617 481//560 +f 480//553 478//417 482//499 +f 482//499 483//505 479//617 +f 468//262 478//417 480//553 +f 478//417 484//432 482//499 +f 483//505 482//499 484//432 +f 482//499 479//617 480//553 +f 478//417 476//226 477//257 +f 478//417 477//257 484//432 +f 477//305 475//305 474//305 +f 483//305 484//305 479//305 +f 477//305 479//305 484//305 +f 477//305 474//305 479//305 +f 472//305 481//305 466//305 +f 481//305 479//305 466//305 +f 466//305 479//305 474//305 +f 474//109 465//108 466//180 +f 465//108 473//164 468//262 +f 469//151 470//162 465//108 +f 465//108 468//262 469//151 +f 472//286 471//434 481//560 +f 481//560 485//586 480//553 +f 485//586 481//560 471//434 +f 468//262 480//553 383//482 +f 467//207 465//108 470//162 +f 471//434 470//162 367//422 +f 485//586 471//434 492//582 +f 492//582 480//553 485//586 +f 367//422 492//582 471//434 +f 480//553 492//582 383//482 +f 431//242 429//129 433//195 +f 435//266 428//273 432//221 +f 488//116 487//91 469//151 +f 470//162 469//151 487//91 +f 379//259 488//116 469//151 +f 440//94 489//95 621//112 +f 367//422 470//162 528//213 +f 528//213 487//91 491//110 +f 487//91 623//92 491//110 +f 622//117 623//92 486//137 +f 362//203 363//209 489//95 +f 622//117 489//95 365//113 +f 490//287 368//233 97//368 +f 97//368 95//347 490//287 +f 491//110 365//113 363//209 +f 623//92 487//91 488//116 +f 492//582 367//422 380//556 +f 383//482 492//582 380//556 +f 493//272 134//399 139//392 +f 493//272 130//400 134//399 +f 494//235 410//161 408//252 +f 128//385 129//386 494//235 +f 495//114 420//199 423//175 +f 495//114 404//191 420//199 +f 425//429 254//325 295//345 +f 295//345 424//270 425//429 +f 495//114 459//126 404//191 +f 405//169 404//191 459//126 +f 459//126 458//111 405//169 +f 406//125 405//169 458//111 +f 498//163 499//179 497//96 +f 497//96 496//104 498//163 +f 500//200 495//114 499//179 +f 497//96 499//179 495//114 +f 497//96 495//114 423//175 +f 500//200 460//220 459//126 +f 459//126 495//114 500//200 +f 499//179 498//163 297//373 +f 297//373 298//376 499//179 +f 500//200 298//376 299//382 +f 298//376 500//200 499//179 +f 460//220 500//200 299//382 +f 299//382 250//383 460//220 +f 501//231 502//240 497//96 +f 497//96 423//175 501//231 +f 502//240 496//104 497//96 +f 502//240 503//254 496//104 +f 502//240 301//355 300//359 +f 300//359 503//254 502//240 +f 501//231 302//356 301//355 +f 301//355 502//240 501//231 +f 501//231 423//175 424//270 +f 424//270 295//345 302//356 +f 501//231 424//270 302//356 +f 498//163 496//104 505//155 +f 504//192 505//155 496//104 +f 297//373 498//163 303//369 +f 505//155 303//369 498//163 +f 496//104 503//254 504//192 +f 503//254 300//359 504//192 +f 304//366 504//192 300//359 +f 505//155 504//192 507//146 +f 506//194 507//146 504//192 +f 303//369 505//155 305//362 +f 507//146 305//362 505//155 +f 504//192 304//366 506//194 +f 306//371 506//194 304//366 +f 507//146 506//194 509//144 +f 508//193 509//144 506//194 +f 305//362 507//146 307//357 +f 509//144 307//357 507//146 +f 506//194 306//371 508//193 +f 308//374 508//193 306//371 +f 509//144 508//193 511//139 +f 510//190 511//139 508//193 +f 307//357 509//144 309//354 +f 511//139 309//354 509//144 +f 508//193 308//374 510//190 +f 310//377 510//190 308//374 +f 511//139 510//190 513//133 +f 512//196 513//133 510//190 +f 309//354 511//139 311//349 +f 513//133 311//349 511//139 +f 510//190 310//377 512//196 +f 312//381 512//196 310//377 +f 513//133 512//196 515//132 +f 514//197 515//132 512//196 +f 311//349 513//133 313//339 +f 515//132 313//339 513//133 +f 512//196 312//381 514//197 +f 314//389 514//197 312//381 +f 515//132 514//197 517//136 +f 516//201 517//136 514//197 +f 313//339 515//132 315//327 +f 517//136 315//327 515//132 +f 514//197 314//389 516//201 +f 316//396 516//201 314//389 +f 517//136 516//201 519//135 +f 518//204 519//135 516//201 +f 315//327 517//136 317//308 +f 519//135 317//308 517//136 +f 516//201 316//396 518//204 +f 318//401 518//204 316//396 +f 519//135 518//204 521//134 +f 520//212 521//134 518//204 +f 317//308 519//135 319//323 +f 521//134 319//323 519//135 +f 518//204 318//401 520//212 +f 320//394 520//212 318//401 +f 521//134 520//212 523//127 +f 522//214 523//127 520//212 +f 319//323 521//134 321//329 +f 523//127 321//329 521//134 +f 520//212 320//394 522//214 +f 322//402 522//214 320//394 +f 523//127 522//214 525//217 +f 524//298 525//217 522//214 +f 321//329 523//127 323//352 +f 525//217 323//352 523//127 +f 522//214 322//402 524//298 +f 324//380 524//298 322//402 +f 525//217 524//298 527//471 +f 526//436 527//471 524//298 +f 527//471 325//391 525//217 +f 323//352 525//217 325//391 +f 524//298 324//380 526//436 +f 326//353 526//436 324//380 +f 360//156 147//360 152//331 +f 490//287 380//556 367//422 +f 491//110 368//233 528//213 +f 533//431 534//420 531//433 +f 532//416 531//433 534//420 +f 549//442 533//431 531//433 +f 540//558 539//592 538//526 +f 541//587 560//570 559//613 +f 560//570 541//587 539//592 +f 538//526 539//592 541//587 +f 561//491 541//587 559//613 +f 535//413 536//460 542//485 +f 536//460 545//500 542//485 +f 545//500 536//460 538//526 +f 546//487 545//500 541//587 +f 538//526 541//587 545//500 +f 561//491 546//487 541//587 +f 547//426 545//500 546//487 +f 546//487 562//441 547//426 +f 563//299 547//426 562//441 +f 564//285 547//426 563//299 +f 545//500 548//452 544//512 +f 548//452 543//495 558//504 +f 543//495 548//452 530//481 +f 544//512 548//452 558//504 +f 545//500 547//426 548//452 +f 565//280 547//426 564//285 +f 565//280 566//301 547//426 +f 548//452 547//426 566//301 +f 549//442 548//452 566//301 +f 549//442 531//433 548//452 +f 548//452 531//433 530//481 +f 537//474 529//454 550//463 +f 538//526 552//521 540//558 +f 568//476 554//464 567//461 +f 568//476 555//488 554//464 +f 553//466 554//464 555//488 +f 555//488 568//476 569//533 +f 537//474 556//523 536//460 +f 550//463 555//488 537//474 +f 553//466 555//488 551//462 +f 550//463 551//462 555//488 +f 555//488 569//533 570//537 +f 537//474 555//488 556//523 +f 571//550 556//523 570//537 +f 556//523 555//488 570//537 +f 538//526 557//534 552//521 +f 556//523 557//534 538//526 +f 536//460 556//523 538//526 +f 572//594 557//534 556//523 +f 571//550 572//594 556//523 +f 544//512 542//485 545//500 +f 558//504 542//485 544//512 +f 562//441 546//487 561//491 +f 578//290 577//279 575//277 +f 575//277 576//294 578//290 +f 577//279 593//268 575//277 +f 583//118 584//152 582//184 +f 604//140 585//123 603//97 +f 585//123 604//140 583//118 +f 583//118 582//184 585//123 +f 585//123 605//219 603//97 +f 580//250 579//297 586//225 +f 589//210 580//250 586//225 +f 580//250 589//210 582//184 +f 589//210 590//223 585//123 +f 585//123 582//184 589//210 +f 590//223 605//219 585//123 +f 589//210 591//284 590//223 +f 606//269 590//223 591//284 +f 591//284 607//411 606//269 +f 591//284 608//425 607//411 +f 592//258 589//210 588//198 +f 587//215 592//258 602//206 +f 592//258 587//215 574//229 +f 592//258 588//198 602//206 +f 591//284 589//210 592//258 +f 591//284 609//430 608//425 +f 610//409 609//430 591//284 +f 591//284 592//258 610//409 +f 592//258 593//268 610//409 +f 575//277 593//268 592//258 +f 575//277 592//258 574//229 +f 573//256 581//236 594//247 +f 596//189 582//184 584//152 +f 598//246 612//234 611//249 +f 599//222 612//234 598//246 +f 598//246 597//244 599//222 +f 612//234 599//222 613//177 +f 600//187 581//236 580//250 +f 599//222 594//247 581//236 +f 599//222 597//244 595//248 +f 595//248 594//247 599//222 +f 613//177 599//222 614//173 +f 599//222 581//236 600//187 +f 600//187 615//160 614//173 +f 599//222 600//187 614//173 +f 601//176 582//184 596//189 +f 601//176 600//187 582//184 +f 600//187 580//250 582//184 +f 601//176 616//115 600//187 +f 616//115 615//160 600//187 +f 586//225 588//198 589//210 +f 586//225 602//206 588//198 +f 590//223 606//269 605//219 +f 357//274 358//239 617//379 +f 358//239 325//391 617//379 +f 326//353 357//274 617//379 +f 527//471 526//436 617//379 +f 325//391 527//471 617//379 +f 526//436 326//353 617//379 +f 158//528 618//598 229//449 +f 618//598 158//528 620//593 +f 157//597 619//618 291//600 +f 620//593 157//597 289//615 +f 620//593 158//528 286//576 +f 619//618 620//593 286//576 +f 621//112 366//182 437//261 +f 366//182 621//112 622//117 +f 366//182 622//117 486//137 +f 488//116 486//137 623//92 +f 491//110 623//92 365//113 +f 623//92 622//117 365//113 diff --git a/test/data/meshio_meshes/ply/bun_zipper_res4.ply b/test/data/meshio_meshes/ply/bun_zipper_res4.ply new file mode 100644 index 000000000..d61638096 --- /dev/null +++ b/test/data/meshio_meshes/ply/bun_zipper_res4.ply @@ -0,0 +1,1413 @@ +ply +format ascii 1.0 +comment zipper output +element vertex 453 +property float x +property float y +property float z +property float confidence +property float intensity +element face 948 +property list uchar int vertex_indices +end_header +-0.0312216 0.126304 0.00514924 0.850855 0.5 +-0.0446774 0.131204 0.00570479 0.900159 0.5 +-0.0683011 0.144828 0.0413688 0.398443 0.5 +-0.00600095 0.130398 0.0178986 0.85268 0.5 +-0.0173568 0.127613 0.00526885 0.675938 0.5 +0.0330513 0.107034 0.0319543 0.652757 0.5 +0.0400873 0.10521 0.0173419 0.708171 0.5 +-0.0301802 0.106322 0.0399745 0.454541 0.437538 +0.0304193 0.118572 0.0188068 0.533079 0.5 +-0.0640822 0.159391 -0.0169096 0.404517 0.5 +0.0447046 0.0927877 0.00507585 0.579563 0.425995 +-0.0316754 0.170395 -0.00635023 0.365607 0.5 +-0.0848523 0.134078 0.0470177 0.499575 0.5 +-0.0688547 0.122052 0.0517569 0.564827 0.5 +0.00595475 0.131024 0.0178252 0.748371 0.5 +0.0404629 0.105142 0.00640978 0.680399 0.5 +0.0387342 0.102161 -0.00463112 0.600054 0.5 +-0.0914513 0.134136 0.0171026 0.824561 0.5 +-0.0818721 0.107166 0.031016 0.690889 0.5 +-0.067218 0.156155 0.0178863 0.807492 0.5 +-0.0795687 0.152875 0.0299311 0.248168 0.41865 +0.00596007 0.122504 0.0346272 0.555044 0.354559 +-0.0516317 0.145001 0.0184804 0.691477 0.5 +-0.0779781 0.13255 0.0513494 0.566256 0.5 +-0.00590708 0.127934 0.0274623 0.271491 0.462815 +-0.0479133 0.129301 0.0269646 0.539149 0.5 +-0.082427 0.0928134 -0.00556046 0.710999 0.5 +0.01744 0.127694 0.0185348 0.530957 0.5 +-0.0906868 0.120305 0.0066804 0.635593 0.5 +-0.0294038 0.17903 -0.00787959 0.269231 0.447035 +-0.0797891 0.14376 0.0426994 0.414139 0.5 +-0.018288 0.108329 0.0415098 0.482541 0.5 +-0.0202326 0.181846 -0.0183274 0.341071 0.440034 +-0.0377039 0.167987 -0.0130391 0.396317 0.473039 +0.00582164 0.12806 0.0279016 0.350014 0.41288 +-0.0435389 0.130014 0.0175333 0.599596 0.5 +0.0188699 0.119862 0.032409 0.625269 0.5 +-0.0440101 0.167035 0.00231898 0.413994 0.469929 +-0.089811 0.132401 0.00705743 0.625486 0.5 +-0.057352 0.144989 0.0315196 0.696873 0.5 +0.0442622 0.0934526 0.0176417 0.665192 0.5 +0.0412343 0.0921731 0.0285603 0.671611 0.5 +-0.0563953 0.154565 0.016878 0.394763 0.437313 +-0.0206135 0.159773 -0.00717522 0.136389 0.380194 +-0.0729893 0.0656116 0.0181693 0.413051 0.5 +-0.0673967 0.155256 0.00581389 0.855717 0.5 +-0.0904864 0.118611 0.0412148 0.673877 0.5 +0.0273142 0.117965 0.0286191 0.635485 0.5 +0.041907 0.0916386 -0.00556945 0.585857 0.459742 +-0.0702109 0.165303 -0.0194661 0.548789 0.5 +-0.0061847 0.122729 0.034787 0.602316 0.374044 +0.0300138 0.0932786 0.0421476 0.649753 0.5 +-0.0175129 0.162126 -0.0145489 0.338176 0.5 +-0.0763977 0.171291 -0.0411021 0.256591 0.4298 +-0.0854227 0.105386 0.00339486 0.523819 0.297125 +0.0370431 0.110443 0.0207229 0.52623 0.448558 +-0.00659732 0.0427285 0.0469391 0.280725 0.5 +0.00639794 0.0437006 0.046826 0.331809 0.5 +-0.0559247 0.157606 0.00656455 0.561042 0.5 +-0.0911449 0.118816 0.0298442 0.848517 0.5 +-0.0595109 0.128352 0.0399626 0.658867 0.444043 +-0.0176335 0.127605 0.0179366 0.547632 0.5 +-0.066633 0.153831 0.0308703 0.855321 0.5 +-0.0436418 0.169438 -0.00550226 0.274377 0.177706 +-0.0572759 0.043243 0.042862 0.417977 0.459314 +-0.0763773 0.157221 -0.0168889 0.267801 0.372187 +-0.0434461 0.15605 0.00615795 0.447592 0.5 +-0.0427118 0.0421645 0.0427004 0.509262 0.5 +-0.0254201 0.0886622 0.0503827 0.608282 0.5 +-0.014179 0.12627 0.0266417 0.420759 0.5 +-0.0882582 0.0898687 0.00696625 0.753697 0.5 +-0.0688695 0.157773 -0.00687593 0.595216 0.5 +-0.0679676 0.142877 -0.00757643 0.446131 0.5 +0.0188538 0.106293 0.0416902 0.669811 0.5 +-0.036487 0.171225 0.000545037 0.438578 0.5 +-0.0664352 0.117198 -0.00987161 0.569796 0.5 +-0.0682606 0.170398 -0.0436995 0.381568 0.451091 +-0.090925 0.14605 0.0190382 0.648478 0.5 +0.00678622 0.115841 0.0388077 0.549283 0.408623 +0.0310139 0.0930696 -0.017798 0.732658 0.5 +0.0056976 0.10589 0.0435511 0.592572 0.5 +-0.0706519 0.13063 0.0502497 0.563116 0.5 +0.0059746 0.130858 0.00579479 0.795238 0.5 +0.0184217 0.0423182 0.042477 0.259499 0.426724 +0.0147876 0.0909747 0.0509658 0.654705 0.5 +-0.00598232 0.115409 0.0402027 0.615633 0.5 +-0.0811312 0.117972 -0.00359453 0.505277 0.5 +-0.0787032 0.144274 -0.00389052 0.466714 0.5 +0.00581988 0.106226 -0.0208968 0.792948 0.5 +-0.0192761 0.119853 0.0328061 0.445477 0.415699 +-0.00593116 0.130215 0.005954 0.738924 0.5 +-0.0893322 0.142745 0.0290326 0.80362 0.5 +-0.00762538 0.123273 -0.00981555 0.767738 0.284429 +-0.0692263 0.178922 -0.0542743 0.245129 0.411885 +-0.0298757 0.124252 0.0209674 0.32811 0.5 +-0.0848266 0.148987 0.0327697 0.331963 0.314683 +-0.0888516 0.0909723 0.0179034 0.603378 0.5 +-0.0305879 0.122384 -0.00635771 0.63839 0.5 +-0.0307198 0.117989 0.0306166 0.543293 0.5 +-0.0780612 0.120653 0.0513999 0.490413 0.5 +0.0332714 0.108498 -0.00743195 0.534403 0.5 +-0.0677112 0.0928918 -0.0168814 0.511499 0.5 +-0.075666 0.0911817 -0.0136967 0.429902 0.5 +-0.082422 0.0951121 0.0310878 0.678588 0.5 +-0.0856984 0.136903 0.00192122 0.517441 0.5 +-0.0292804 0.0417747 0.051397 0.553401 0.5 +-0.017732 0.0423864 0.051684 0.709553 0.5 +-0.0656987 0.171007 -0.056644 0.549906 0.5 +-0.0298523 0.170905 -0.0165609 0.436075 0.5 +-0.0562502 0.135013 0.0330455 0.727547 0.5 +-0.0666127 0.133021 0.0447044 0.724494 0.5 +-0.0425379 0.155441 -0.00749353 0.424682 0.5 +-0.0545308 0.0714603 0.0397042 0.682177 0.456916 +-0.0413159 0.0906923 -0.0225881 0.72469 0.5 +-0.0172876 0.0921774 0.0536212 0.546444 0.5 +-0.00598119 0.0940308 0.0542643 0.455087 0.5 +0.0423724 0.0672563 0.0295801 0.33948 0.5 +0.0285741 0.116909 -0.00391772 0.66246 0.5 +-0.0331811 0.0450744 0.0451146 0.432059 0.466683 +-0.0539402 0.118566 0.0353731 0.515399 0.5 +0.0422724 0.0795546 -0.00579461 0.568535 0.5 +0.0297273 0.0425502 0.0304975 0.650152 0.5 +-0.0315639 0.0959331 -0.0236801 0.474586 0.431409 +0.0381804 0.105121 0.0266947 0.534482 0.490368 +-0.0284988 0.090492 -0.0290854 0.294426 0.332222 +-0.0173189 0.0437942 0.0432695 0.576068 0.5 +0.00376754 0.0477551 0.0502037 0.495901 0.44823 +0.0432673 0.0458291 0.0278251 0.807573 0.5 +-0.0233322 0.181239 -0.0112893 0.246322 0.458572 +-0.0056258 0.0565038 0.0538818 0.61481 0.5 +0.00529431 0.0556798 0.0532881 0.560812 0.423049 +-0.0883219 0.105757 0.0172983 0.604102 0.5 +-0.0566374 0.0470184 0.0305809 0 0 +-0.0296243 0.0543188 0.0398951 0.676102 0.5 +-0.00597407 0.105897 0.0440669 0.338462 0.5 +-0.0214122 0.0546976 0.044641 0.195646 0.404388 +-0.0161488 0.0574363 0.050904 0.451613 0.5 +-0.0568305 0.146392 -0.0026426 0.48145 0.5 +-0.0931466 0.119067 0.0179948 0.570519 0.5 +-0.061862 0.158417 -0.0293026 0.690546 0.5 +-0.0855858 0.10684 0.021729 0.519516 0.5 +0.0336642 0.0540543 0.0350841 0.609925 0.5 +0.042771 0.0560351 0.031559 0.669803 0.5 +-0.0434589 0.117191 0.0317044 0.657986 0.5 +-0.0680962 0.156721 -0.0426174 0.523327 0.5 +0.0272384 0.103156 0.0397058 0.689793 0.5 +-0.0293932 0.178536 -0.0145563 0.314049 0.5 +-0.0762697 0.0912245 0.0383419 0.647987 0.457049 +-0.0191285 0.0985952 0.0456676 0.271215 0.427554 +-0.053091 0.0567402 0.0293963 0.192432 0.5 +-0.0431978 0.0555777 0.0390838 0.311543 0.5 +-0.0833055 0.115643 0.046828 0.438131 0.5 +0.0144345 0.127081 0.026297 0.479299 0.429147 +-0.0388913 0.123761 0.0249778 0.514489 0.5 +-0.0594359 0.119905 0.0399756 0.634635 0.5 +-0.0702332 0.154262 -0.0312401 0.685413 0.5 +-0.0574473 0.152576 0.0284508 0.93076 0.5 +-0.0480038 0.056366 0.0362663 0.58186 0.5 +-0.0107262 0.179662 -0.0277472 0.400699 0.458536 +-0.0882293 0.106066 0.00846756 0.477822 0.5 +-0.078994 0.153984 0.00651862 0.57436 0.5 +-0.0295675 0.126072 0.0146338 0.393422 0.5 +-0.0817356 0.15439 0.0177332 0.505065 0.5 +-0.0795469 0.104194 -0.00620274 0.528684 0.5 +-0.0248608 0.122913 0.0245429 0.379391 0.5 +-0.0664416 0.159957 -0.0533713 0.38665 0.5 +-0.0784878 0.0705283 0.0174461 0.703257 0.5 +-0.00967101 0.173225 -0.0264945 0.379771 0.5 +-0.0566284 0.0547031 0.00744563 0.270787 0.5 +-0.0184015 0.122219 -0.00775134 0.782181 0.5 +-0.0695952 0.146412 -0.018032 0.130446 0.5 +-0.0412517 0.123196 -0.00958087 0.590842 0.5 +-0.0684972 0.148194 -0.028726 0.690046 0.5 +-0.0540036 0.055543 0.0177674 0.079935 0 +-0.0169203 0.0682168 0.0531499 0.608033 0.445048 +-0.00607221 0.0677102 0.0564501 0.650491 0.470895 +0.00708728 0.0673218 0.0553369 0.748671 0.5 +-0.0143174 0.116971 0.037836 0.441459 0.5 +0.0538923 0.0557547 0.0266244 0.405493 0.41666 +0.00517855 0.0931738 0.0535873 0.395048 0.366076 +-0.0431038 0.0674388 0.0407737 0.587502 0.5 +-0.0293069 0.0680733 0.041016 0.650585 0.5 +-0.0379555 0.161954 -0.0128021 0.499753 0.5 +-0.0561165 0.0654329 0.0341979 0.277414 0.5 +-0.0761707 0.155559 -0.0059272 0.708579 0.5 +-0.0552181 0.122506 -0.00946488 0.538005 0.5 +0.0177004 0.105983 -0.0186138 0.576137 0.468722 +0.0534583 0.0656375 0.0264336 0.501229 0.5 +-0.0869152 0.0944156 0.00293118 0.494536 0.346642 +-0.0764257 0.161707 -0.0297517 0.476378 0.5 +-0.0440959 0.127453 -0.00327875 0.853498 0.5 +-0.0312919 0.0798298 0.0434944 0.693464 0.5 +-0.0549448 0.106348 -0.0185625 0.484023 0.5 +-0.0723735 0.110057 -0.00943257 0.44421 0.5 +-0.0553659 0.0919829 -0.0211783 0.619673 0.5 +-0.0488091 0.0660127 0.0373959 0.829801 0.5 +-0.0473086 0.145156 0.00688469 0.636632 0.45621 +-0.0803913 0.129634 -0.00469755 0.386393 0.5 +-0.041802 0.105934 -0.0198692 0.79815 0.5 +-0.00632139 0.0931652 -0.0328935 0.564234 0.5 +-0.00597054 0.106138 -0.0222282 0.740261 0.5 +-0.0294827 0.158293 -0.00619266 0.209483 0.5 +-0.0177953 0.106289 -0.0217771 0.723165 0.5 +-0.0885261 0.137839 0.0393964 0.651389 0.5 +-0.0674935 0.128392 -0.00863471 0.737784 0.5 +0.0463693 0.0715128 0.0216754 0.461473 0.448797 +-0.0409565 0.117168 -0.0145809 0.602235 0.5 +-0.0106656 0.167541 -0.0199013 0.359593 0.5 +-0.0532547 0.157456 -0.00281896 0.292939 0.5 +0.00530988 0.0933129 -0.0301852 0.75972 0.5 +-0.0773436 0.0727226 0.0266546 0.757943 0.5 +-0.0625087 0.149934 -0.0150319 0.415531 0.480025 +-0.0688014 0.0685726 0.0306649 0.49936 0.45677 +-0.0545252 0.0808478 -0.0201707 0.75515 0.5 +-0.0436768 0.078916 0.0428855 0.696934 0.5 +-0.0185748 0.0789703 0.0557353 0.607912 0.5 +-0.00599993 0.0794548 0.0578008 0.791265 0.5 +0.00706485 0.0811917 0.0558187 0.523043 0.5 +-0.0850269 0.146034 0.00585954 0.583528 0.5 +0.0370111 0.110397 0.00265294 0.516602 0.481774 +-0.0683084 0.0803316 0.0407109 0.610448 0.476331 +-0.055894 0.0792594 0.0435335 0.634349 0.5 +0.0381456 0.0881056 -0.0138675 0.676152 0.5 +-0.0642837 0.0396418 0.039624 0.532543 0.5 +-0.0698696 0.168536 -0.0313319 0.458525 0.324439 +-0.061796 0.155741 -0.0207923 0.443336 0.5 +-0.0622848 0.16236 -0.0396288 0.427869 0.464762 +-0.0686864 0.0923704 0.0421978 0.59211 0.5 +-0.049353 0.139298 0.0147955 0.761861 0.5 +-0.0784177 0.110126 0.0417886 0.498936 0.5 +0.0179416 0.0792747 0.0518862 0.491924 0.475524 +0.00532732 0.123661 -0.00997105 0.555015 0.5 +-0.0556774 0.0935206 0.044207 0.778337 0.5 +-0.0431924 0.0921154 0.0432689 0.605881 0.5 +-0.0298626 0.0940124 0.0444805 0.668172 0.5 +0.0205955 0.087113 0.0492325 0.678548 0.5 +0.01721 0.127663 0.00512593 0.595962 0.5 +-0.0290125 0.106719 -0.0207479 0.809584 0.5 +0.0185443 0.0948112 0.0477587 0.669841 0.5 +-0.00588676 0.116622 -0.0160049 0.826286 0.5 +-0.0528191 0.162649 0.00296711 0.343566 0.5 +0.0358078 0.0958594 -0.0120328 0.738943 0.5 +-0.0912064 0.131415 0.0295307 0.816274 0.5 +-0.067874 0.106952 0.0403725 0.481571 0.5 +-0.0441636 0.104918 0.0401706 0.648927 0.395789 +0.00749586 0.09835 0.0488255 0.46146 0.5 +-0.0554961 0.103898 0.0411405 0.529374 0.5 +-0.0669044 0.115717 0.0473479 0.429195 0.5 +-0.0501524 0.140326 0.00258818 0.569746 0.5 +-0.0554508 0.13242 -0.00485445 0.673026 0.5 +-0.014752 0.181897 -0.0262781 0.40888 0.5 +-0.029558 0.161783 -0.0143368 0.852313 0.5 +-0.0561854 0.111277 0.0373713 0.588374 0.5 +-0.040984 0.110496 0.0370883 0.553647 0.5 +-0.0320055 0.110468 0.0370438 0.565129 0.5 +0.0250033 0.110611 0.0368459 0.631257 0.5 +-0.046987 0.147434 -0.00222536 0.521986 0.5 +-0.0183407 0.0352362 0.0507938 0.291685 0.457265 +-0.0178406 0.170484 -0.0181143 0.809186 0.5 +-0.0569472 0.0349416 0.0423717 0.341981 0.5 +0.00583339 0.0351076 0.0420914 0.261253 0.345588 +-0.0428024 0.0351574 0.0416872 0.193197 0.5 +-0.066462 0.104777 -0.0148582 0.608847 0.5 +0.0257452 0.0459137 0.0381185 0.444171 0.5 +0.0379451 0.0817167 -0.0141547 0.644934 0.5 +-0.0844262 0.0797714 0.0186332 0.67606 0.5 +0.0532504 0.04759 0.0181903 0.342211 0.398387 +0.0186424 0.0536035 0.046215 0.589102 0.5 +0.00732515 0.118243 -0.0153012 0.54369 0.457314 +-0.0314704 0.157066 0.000976216 0.445666 0.44081 +0.0286229 0.056876 0.0407635 0.635463 0.446542 +0.0581591 0.0550016 0.0180254 0.474964 0.5 +0.016864 0.089935 -0.0269104 0.546403 0.5 +0.0145778 0.0585769 0.0501691 0.387785 0.5 +0.0367248 0.0918184 0.0366248 0.726421 0.5 +-0.0198801 0.166404 -0.0112699 0.688671 0.5 +0.0150294 0.0677357 0.0520671 0.554385 0.463079 +0.0210524 0.0681161 0.0484346 0.414803 0.412252 +0.0298776 0.0679936 0.0419172 0.611901 0.5 +0.0368358 0.0678495 0.036641 0.593561 0.5 +0.0574748 0.0682218 0.0171425 0.550839 0.448044 +0.0316842 0.0785087 -0.019208 0.760295 0.5 +-0.0760271 0.175704 -0.0506937 0.340571 0.5 +-0.0655396 0.0607885 0.0175707 0.414933 0.425841 +-0.0806026 0.081447 0.0306516 0.756683 0.5 +0.0189749 0.121506 -0.00694565 0.549 0.5 +0.030684 0.0795461 0.0431507 0.572664 0.5 +0.0371888 0.0792484 0.0367937 0.505468 0.5 +0.0419366 0.0795911 0.0295911 0.645662 0.5 +0.046032 0.0793694 0.0177694 0.458504 0.467907 +-0.0787921 0.0707773 0.00685585 0.704234 0.277826 +-0.0293987 0.115917 -0.0147065 0.856895 0.5 +-0.0869924 0.113518 0.00410409 0.344807 0.5 +-0.0142186 0.174013 -0.0259807 0.439072 0.5 +0.0174795 0.0352131 -0.00592856 0 0 +0.0162141 0.0358475 -0.0162131 0.173751 0.5 +0.0193248 0.0358322 0.0313206 0.156956 0.287305 +0.0435544 0.0411101 0.00579916 0.245023 0.5 +0.0226191 0.0406052 -0.00793544 0.173629 0.5 +0.0191348 0.042782 -0.0192095 0.367832 0.5 +0.0414633 0.0456301 -0.00354513 0.514406 0.5 +0.0436925 0.0411968 0.01772 0.265572 0.5 +0.0512872 0.0463959 0.00580531 0.199267 0.5 +0.0285777 0.105181 -0.0142381 0.728425 0.5 +0.0306748 0.0445124 -0.00617993 0.464947 0.5 +-0.0184118 0.0948059 -0.0307434 0.520871 0.5 +-0.0315484 0.0343023 -0.0284081 0.16856 0.5 +0.0260381 0.0475902 -0.0165794 0.515417 0.5 +0.0554197 0.0686378 0.00589653 0.629664 0.372945 +0.0520374 0.055073 -0.0024816 0.592036 0.5 +0.0567375 0.0542224 0.00512483 0.511629 0.5 +0.0428049 0.0553286 -0.00604704 0.434179 0.5 +-0.0620037 0.167422 -0.0527165 0.538383 0.466596 +0.0341128 0.0541776 -0.00948346 0.591066 0.5 +0.029518 0.0560564 -0.0175875 0.574224 0.5 +-0.0177887 0.115911 -0.0157838 0.559736 0.5 +-0.0417838 0.0357602 -0.0264107 0.0979878 0.5 +-0.00518939 0.043046 -0.0273333 0.274297 0.5 +-0.0664059 0.0343649 -0.00416668 0.135623 0.5 +0.0475414 0.0712174 0.00542617 0.590477 0.5 +0.0249138 0.0825163 -0.0245877 0.759593 0.5 +-0.0299024 0.0426031 -0.0283179 0.537642 0.5 +0.0218121 0.0515865 -0.0236492 0.56032 0.5 +-0.0271537 0.0351608 0.0509267 0.96808 0.5 +0.0161181 0.11563 -0.0145451 0.45799 0.403894 +0.031738 0.0679983 -0.0183532 0.581486 0.5 +0.0418226 0.0675201 -0.00551555 0.572144 0.5 +0.0514871 0.0637279 -0.00174794 0.518067 0.5 +-0.0893303 0.128309 0.0428023 0.633972 0.457764 +0.0459385 0.0796307 0.00579632 0.323813 0.5 +-0.0705433 0.149897 -0.0387319 0.143598 0.5 +-0.0429617 0.0430242 -0.0176288 0.371561 0.5 +-0.0719677 0.177848 -0.0474604 0.498199 0.393806 +-0.0760529 0.177651 -0.0471457 0.200482 0.341482 +0.0304173 0.118495 0.00573814 0.517745 0.5 +-0.0771451 0.167706 -0.0298798 0.259817 0.452429 +0.0202668 0.092861 -0.0237363 0.630702 0.48336 +-0.0254815 0.0798697 0.0510546 0.764034 0.5 +-0.0650541 0.0353259 0.0162237 0.352362 0.5 +-0.0647676 0.0350792 0.0294481 0.161121 0.384305 +-0.0644267 0.0414591 0.0304476 0.206373 0.5 +-0.06432 0.0352261 0.0387914 0.349097 0.5 +-0.0676 0.0340299 0.00590491 0.228898 0.5 +-0.0679534 0.0418588 0.00668394 0.30841 0.5 +-0.0573497 0.0431548 0.0200229 0 0 +-0.0634632 0.0414321 0.0142052 0.258252 0.450399 +-0.059413 0.0471382 0.00628538 0.460736 0.319245 +-0.0233834 0.0656416 0.0450976 0.709715 0.5 +-0.063538 0.071665 0.0379463 0.556494 0.5 +-0.0193036 0.0810128 -0.0384318 0.500126 0.449734 +-0.0427206 0.0343557 -0.0191302 0.176398 0.205782 +-0.00690237 0.03464 -0.0202171 0.15305 0.5 +-0.0656787 0.0408332 -0.00401793 0.169982 0.409113 +-0.0383907 0.0419218 -0.0264039 0.3765 0.5 +-0.0556585 0.0432866 -0.00758834 0.62257 0.5 +-0.0416785 0.0420276 -0.00999679 0.340556 0.5 +-0.0322294 0.0446593 -0.0167499 0.299501 0.5 +-0.0307385 0.0563307 -0.018517 0.265727 0.5 +-0.0429026 0.0561897 -0.0113043 0.555432 0.5 +-0.0550285 0.0566557 -0.00531375 0.527245 0.5 +-0.0261858 0.0568836 -0.0282694 0.366688 0.5 +-0.0552189 0.117461 -0.0133744 0.568329 0.5 +-0.0190658 0.0546695 -0.0318646 0.484351 0.5 +-0.0687629 0.0686694 -0.00654941 0.168435 0.5 +-0.0730504 0.06542 0.00552859 0.275779 0.5 +-0.0207234 0.0672793 -0.036553 0.45692 0.5 +-0.0290792 0.067426 -0.0290521 0.452259 0.5 +-0.0328056 0.0664637 -0.0195215 0.908229 0.5 +-0.0177608 0.0343319 -0.0259142 0.174612 0.215481 +-0.0773687 0.0732571 -0.00409771 0.293636 0.296358 +0.0151616 0.126104 -0.00266395 0.542796 0.5 +-0.0845255 0.0800572 0.00530702 0.615888 0.5 +-0.0793517 0.0798559 -0.00640565 0.260107 0.5 +-0.0309728 0.0794701 -0.0312475 0.64535 0.304239 +-0.0355144 0.081801 -0.0226887 0.930953 0.5 +-0.068141 0.0801227 -0.0164278 0.485274 0.5 +-0.0512932 0.034227 -0.0129013 0.159841 0.5 +0.0161924 0.080479 -0.0292174 0.750174 0.5 +-0.0144478 0.0879274 -0.0380297 0.689122 0.5 +-0.0173157 0.0432674 -0.0282906 0.230538 0.5 +-0.0193328 0.0979251 -0.024792 0.661276 0.5 +-0.0555479 0.0336816 -0.00619013 0.1361 0.5 +0.00702627 0.0978418 -0.0246055 0.732067 0.326346 +-0.0148892 0.126068 -0.00252126 0.467449 0.5 +0.0175205 0.0552114 -0.0272756 0.685576 0.5 +-0.00953661 0.0794104 -0.0379859 0.670336 0.467319 +0.00524266 0.0391336 -0.021947 0.540697 0.5 +0.0175653 0.0679339 -0.0289388 0.690366 0.5 +-0.0057907 0.128077 -0.00285105 0.714685 0.5 +0.00626556 0.128047 -0.0031705 0.574275 0.5 +0.00559979 0.0346604 -0.0179318 0.278473 0.5 +0.029824 0.0359142 0.00488977 0.290019 0.5 +0.00625193 0.0459623 -0.0263782 0.665265 0.460024 +0.0143253 0.0473484 -0.0251513 0.546545 0.456757 +0.00604086 0.0555073 -0.0304314 0.840924 0.5 +-0.00613413 0.0546372 -0.032635 0.634884 0.475184 +-0.0346694 0.057124 -0.0114953 0.102172 0.5 +-0.00684543 0.0679742 -0.0359406 0.670518 0.457134 +0.0056558 0.0676237 -0.0329199 0.79033 0.385997 +-0.0569732 0.0651628 -0.00958219 0.452904 0.5 +-0.0422796 0.0699944 -0.0161463 0.543504 0.5 +-0.0175719 0.0705473 -0.0382261 0.581028 0.470136 +-0.055586 0.0722983 -0.0161218 0.401473 0.5 +-0.0637884 0.0712697 -0.0138535 0.437166 0.5 +0.00568561 0.0790547 -0.0339189 0.719764 0.5 +-0.00338429 0.0804511 -0.0367226 0.799862 0.5 +-0.0248988 0.0815004 -0.0371078 0.39297 0.457854 +-0.0412513 0.0791378 -0.0197746 0.273711 0.5 +-0.0735819 0.0777026 -0.0122023 0.445372 0.5 +-0.018062 0.0352627 -0.0195401 0.319674 0.5 +-0.031577 0.0358487 -0.0179669 0.482378 0.5 +-0.00602034 0.0381237 -0.0145184 0.909294 0.5 +-0.0177811 0.0382546 -0.0154503 0.887215 0.5 +0.00753447 0.0355596 -0.00650063 0.962688 0.5 +0.00430437 0.0384017 -0.0071754 0.927286 0.5 +-0.00593935 0.038948 -0.00592129 0.816802 0.5 +-0.0176142 0.0386055 -0.00584508 0.759701 0.5 +-0.0430308 0.0341391 -0.00565972 0.772585 0.5 +0.0189222 0.0351076 0.00499769 0.579133 0.5 +-0.0299129 0.0383912 -0.00582677 0.752109 0.5 +0.00512066 0.0348398 0.00558498 0.588251 0.5 +0.00103528 0.0375917 0.000952222 0.441385 0.5 +-0.00584714 0.0383419 0.00590803 0.728422 0.5 +-0.0424621 0.0343144 0.00590597 0.266658 0.5 +-0.017873 0.0383166 0.00599471 0.753895 0.5 +0.028662 0.0358411 0.0187496 0.360666 0.5 +-0.055026 0.0336204 0.00583816 0.742717 0.5 +-0.0284733 0.0381489 0.00441853 0.456211 0.5 +-0.000947006 0.0357374 0.0103469 0.779853 0.5 +0.0193224 0.0351814 0.0196616 0.180494 0.5 +-0.0342325 0.033759 0.00717517 0.152905 0 +0.00536022 0.0345956 0.0179871 0.676527 0.5 +-0.000385714 0.0351459 0.0134171 0.848157 0.5 +0.0334119 0.0376179 0.0210082 0.70177 0.5 +-0.00589791 0.0381782 0.0177062 0.797449 0.5 +-0.0352445 0.0350571 0.0178257 0.572312 0.5 +-0.0178078 0.0381962 0.0178114 0.753708 0.5 +-0.0261898 0.0377592 0.0177044 0.146481 0.5 +-0.0563247 0.0336762 0.0175265 0.458851 0.5 +0.00114114 0.037661 0.0223414 0.978558 0.5 +0.0100253 0.0355029 0.029656 0.701449 0.5 +0.00550127 0.0385556 0.0296609 0.996029 0.5 +-0.00596581 0.0388946 0.0299252 0.805634 0.5 +-0.0330745 0.0355217 0.0292236 0.263742 0.5 +-0.0277717 0.0382563 0.0322865 0.074682 0.5 +-0.0179091 0.0385902 0.0296167 0.782021 0.5 +-0.0419404 0.0343698 0.0299668 0.109729 0 +0.015243 0.0356116 0.0412692 0.759188 0.5 +-0.0554301 0.0342555 0.0297952 0.808252 0.5 +-0.0660515 0.0611144 0.00585548 0.442355 0.5 +-0.00654912 0.0350372 0.0453959 0.139343 0 +-0.0307826 0.0347596 0.0432959 0.154826 0.5 +-0.0180834 0.0348142 0.0458772 0.143796 0.5 +3 164 94 98 +3 224 335 49 +3 331 350 376 +3 124 122 237 +3 61 89 69 +3 61 161 94 +3 24 89 50 +3 109 25 35 +3 27 34 152 +3 444 443 435 +3 94 35 153 +3 3 61 69 +3 24 69 89 +3 38 218 104 +3 22 42 39 +3 14 24 34 +3 290 166 371 +3 226 76 224 +3 204 197 72 +3 82 3 14 +3 13 81 23 +3 99 13 23 +3 23 110 30 +3 110 2 30 +3 166 265 371 +3 90 61 3 +3 34 24 50 +3 293 167 207 +3 80 78 85 +3 61 94 164 +3 84 238 80 +3 4 161 61 +3 132 149 64 +3 196 22 228 +3 59 46 242 +3 179 84 80 +3 265 96 371 +3 52 258 207 +3 121 127 141 +3 343 168 346 +3 232 227 220 +3 232 243 227 +3 232 246 243 +3 57 126 56 +3 57 130 126 +3 221 232 220 +3 4 61 90 +3 134 80 85 +3 176 217 175 +3 4 0 161 +3 78 21 50 +3 126 130 129 +3 56 126 129 +3 111 182 201 +3 96 70 371 +3 89 164 98 +3 123 6 55 +3 197 87 72 +3 416 419 412 +3 245 80 179 +3 21 78 36 +3 61 164 89 +3 67 132 64 +3 150 149 132 +3 384 387 325 +3 214 221 112 +3 214 233 232 +3 221 214 232 +3 244 246 232 +3 233 244 232 +3 244 252 246 +3 244 143 119 +3 252 244 119 +3 127 142 141 +3 67 150 132 +3 82 90 3 +3 112 180 214 +3 244 253 143 +3 111 201 269 +3 37 74 63 +3 133 150 67 +3 118 133 67 +3 133 180 150 +3 191 214 180 +3 181 191 180 +3 191 234 233 +3 214 191 233 +3 234 244 233 +3 234 7 244 +3 244 98 253 +3 253 98 143 +3 216 217 115 +3 181 180 133 +3 15 16 219 +3 254 98 244 +3 7 254 244 +3 74 11 63 +3 14 3 24 +3 3 69 24 +3 217 216 175 +3 85 78 50 +3 73 78 80 +3 7 98 254 +3 105 133 118 +3 1 248 196 +3 48 241 100 +3 42 156 39 +3 149 173 344 +3 135 133 105 +3 106 135 105 +3 31 7 234 +3 148 31 234 +3 89 98 7 +3 31 89 7 +3 235 84 230 +3 14 27 236 +3 106 125 135 +3 19 20 62 +3 131 54 159 +3 34 50 21 +3 82 14 236 +3 201 52 43 +3 310 308 280 +3 131 159 54 +3 271 310 280 +3 27 14 34 +3 177 89 31 +3 238 73 80 +3 130 176 175 +3 354 331 381 +3 129 130 175 +3 125 136 135 +3 251 52 201 +3 106 56 125 +3 56 129 136 +3 125 56 136 +3 129 175 174 +3 136 129 174 +3 175 216 215 +3 174 175 215 +3 115 114 215 +3 216 115 215 +3 134 85 31 +3 85 177 31 +3 50 89 177 +3 85 50 177 +3 179 80 245 +3 400 407 367 +3 263 83 121 +3 217 179 115 +3 149 132 64 +3 178 187 116 +3 142 178 116 +3 326 120 319 +3 57 83 267 +3 304 391 294 +3 355 354 359 +3 128 29 11 +3 267 273 130 +3 48 16 10 +3 301 302 266 +3 196 66 22 +3 230 84 217 +3 247 13 243 +3 110 81 13 +3 271 178 266 +3 110 13 247 +3 278 277 267 +3 48 10 329 +3 258 11 275 +3 1 196 228 +3 154 247 243 +3 154 110 247 +3 263 141 270 +3 154 60 110 +3 60 154 110 +3 154 60 110 +3 11 74 37 +3 274 5 51 +3 252 154 243 +3 119 252 243 +3 109 110 60 +3 39 2 110 +3 109 39 110 +3 32 128 29 +3 32 128 11 +3 309 300 311 +3 252 119 154 +3 73 145 255 +3 67 64 259 +3 32 29 128 +3 258 275 43 +3 154 119 60 +3 119 109 60 +3 137 256 248 +3 270 267 83 +3 235 238 84 +3 267 130 57 +3 258 32 11 +3 302 310 271 +3 51 238 235 +3 266 302 271 +3 5 36 255 +3 51 235 230 +3 51 145 73 +3 286 51 230 +3 287 274 286 +3 119 25 109 +3 10 40 289 +3 120 48 329 +3 274 51 286 +3 276 230 217 +3 10 16 15 +3 51 5 145 +3 43 11 201 +3 176 276 217 +3 143 25 119 +3 158 207 167 +3 360 321 357 +3 130 273 276 +3 122 198 237 +3 270 278 267 +3 77 218 38 +3 15 6 40 +3 280 187 178 +3 271 280 178 +3 258 207 32 +3 66 58 22 +3 279 287 278 +3 155 139 172 +3 121 141 263 +3 288 41 274 +3 287 288 274 +3 276 176 130 +3 289 288 205 +3 274 41 5 +3 288 287 279 +3 329 10 289 +3 16 100 219 +3 127 178 142 +3 273 267 276 +3 252 119 243 +3 116 279 141 +3 41 123 5 +3 116 288 279 +3 142 116 141 +3 207 158 32 +3 276 277 230 +3 101 102 163 +3 299 298 294 +3 287 286 278 +3 5 255 145 +3 131 159 70 +3 275 11 43 +3 32 158 250 +3 205 288 116 +3 73 36 78 +3 120 329 319 +3 297 391 300 +3 84 179 217 +3 17 77 38 +3 255 36 73 +3 263 270 83 +3 249 248 1 +3 286 230 277 +3 11 37 66 +3 43 52 258 +3 267 277 276 +3 279 278 270 +3 141 279 270 +3 51 73 238 +3 47 36 5 +3 201 66 269 +3 201 11 66 +3 309 310 302 +3 300 309 302 +3 182 33 251 +3 278 286 277 +3 243 246 252 +3 416 427 419 +3 96 131 70 +3 66 256 111 +3 65 335 189 +3 113 374 407 +3 144 139 155 +3 226 224 139 +3 358 400 396 +3 30 91 203 +3 226 139 144 +3 46 328 242 +3 307 304 298 +3 70 159 54 +3 103 265 284 +3 443 261 446 +3 17 38 28 +3 88 200 239 +3 72 170 211 +3 138 17 28 +3 35 1 228 +3 295 299 294 +3 18 131 140 +3 18 59 131 +3 207 258 52 +3 188 70 54 +3 104 87 197 +3 222 48 120 +3 325 326 311 +3 326 281 120 +3 54 159 292 +3 386 299 295 +3 138 59 17 +3 48 100 16 +3 59 242 17 +3 296 121 83 +3 10 15 40 +3 242 91 17 +3 225 9 211 +3 314 322 384 +3 326 325 281 +3 170 225 211 +3 17 91 77 +3 144 76 226 +3 155 9 225 +3 159 131 28 +3 172 139 170 +3 131 138 28 +3 281 264 120 +3 264 222 120 +3 139 155 225 +3 139 225 170 +3 314 325 313 +3 386 295 390 +3 292 159 28 +3 132 149 344 +3 424 427 416 +3 49 335 65 +3 314 313 304 +3 111 269 66 +3 9 71 72 +3 211 9 72 +3 306 316 353 +3 307 314 304 +3 325 311 313 +3 40 41 288 +3 289 40 288 +3 40 6 41 +3 6 123 41 +3 22 39 109 +3 165 312 76 +3 299 307 298 +3 144 165 76 +3 312 107 76 +3 376 381 331 +3 165 107 312 +3 155 172 330 +3 35 228 22 +3 45 184 160 +3 42 62 156 +3 2 39 62 +3 58 42 22 +3 49 71 9 +3 280 116 187 +3 280 205 116 +3 155 330 144 +3 280 289 205 +3 319 280 308 +3 162 77 20 +3 20 77 91 +3 329 289 280 +3 319 329 280 +3 156 62 39 +3 372 408 375 +3 190 1 0 +3 1 35 0 +3 42 19 62 +3 35 161 0 +3 190 0 97 +3 35 22 109 +3 76 53 224 +3 161 35 94 +3 49 9 155 +3 224 49 155 +3 29 63 11 +3 160 162 19 +3 76 333 53 +3 153 25 143 +3 71 49 65 +3 2 20 30 +3 62 20 2 +3 55 8 5 +3 169 0 4 +3 6 8 55 +3 35 25 153 +3 160 218 162 +3 218 77 162 +3 15 334 6 +3 334 8 6 +3 332 76 93 +3 8 47 5 +3 98 153 143 +3 94 153 98 +3 219 334 15 +3 332 333 76 +3 93 76 107 +3 100 334 219 +3 160 19 45 +3 19 162 20 +3 340 132 344 +3 45 19 42 +3 27 47 8 +3 27 36 47 +3 80 115 179 +3 45 42 58 +3 71 184 45 +3 236 27 8 +3 334 236 8 +3 332 93 333 +3 27 152 36 +3 223 64 340 +3 236 334 117 +3 152 21 36 +3 134 148 115 +3 115 148 114 +3 152 34 21 +3 5 123 55 +3 337 68 191 +3 333 93 282 +3 256 66 196 +3 135 174 347 +3 183 180 195 +3 117 285 236 +3 182 111 63 +3 354 318 352 +3 114 234 68 +3 71 65 184 +3 135 136 174 +3 191 215 337 +3 337 215 114 +3 63 33 182 +3 133 135 181 +3 135 347 181 +3 110 23 81 +3 157 180 183 +3 149 157 183 +3 227 147 220 +3 12 23 30 +3 151 99 46 +3 174 215 191 +3 99 328 46 +3 114 148 234 +3 149 150 157 +3 220 147 284 +3 79 186 336 +3 68 234 191 +3 396 357 356 +3 99 23 12 +3 328 99 12 +3 337 114 68 +3 356 358 396 +3 338 343 342 +3 223 340 339 +3 265 103 96 +3 341 223 339 +3 347 174 191 +3 182 251 201 +3 134 115 80 +3 12 30 203 +3 345 343 338 +3 147 227 103 +3 33 108 251 +3 95 20 91 +3 181 347 191 +3 345 346 343 +3 157 150 180 +3 103 227 18 +3 66 240 58 +3 345 344 346 +3 146 32 108 +3 445 125 444 +3 30 95 91 +3 124 373 374 +3 137 249 72 +3 344 345 338 +3 344 168 346 +3 12 203 328 +3 284 147 103 +3 240 66 37 +3 344 173 168 +3 314 384 322 +3 107 282 93 +3 76 53 107 +3 107 53 282 +3 282 53 333 +3 165 76 107 +3 315 202 291 +3 165 144 76 +3 407 374 367 +3 144 53 76 +3 388 389 92 +3 155 144 330 +3 144 224 53 +3 432 431 434 +3 155 189 144 +3 144 189 224 +3 189 335 53 +3 224 189 53 +3 146 29 32 +3 382 88 209 +3 331 316 350 +3 331 353 316 +3 357 367 366 +3 360 357 366 +3 367 374 373 +3 366 367 373 +3 373 407 374 +3 388 92 169 +3 170 65 155 +3 155 65 189 +3 328 203 91 +3 413 421 414 +3 356 331 358 +3 242 328 91 +3 168 343 346 +3 113 198 122 +3 124 113 122 +3 239 200 315 +3 331 356 357 +3 372 26 102 +3 375 372 102 +3 26 163 102 +3 408 372 375 +3 72 87 65 +3 170 72 65 +3 87 184 65 +3 63 108 11 +3 63 29 108 +3 370 285 231 +3 389 370 231 +3 131 18 140 +3 33 63 108 +3 368 306 321 +3 374 113 124 +3 285 324 268 +3 231 285 268 +3 336 272 186 +3 224 155 139 +3 363 369 372 +3 86 193 163 +3 208 63 111 +3 380 305 202 +3 356 357 321 +3 346 354 352 +3 346 168 354 +3 168 359 354 +3 364 290 369 +3 363 364 369 +3 290 371 372 +3 369 290 372 +3 371 70 26 +3 372 371 26 +3 70 188 26 +3 188 54 26 +3 54 163 26 +3 54 86 163 +3 54 28 86 +3 28 38 86 +3 38 197 86 +3 38 104 197 +3 104 218 87 +3 218 160 87 +3 160 184 87 +3 58 240 208 +3 240 37 63 +3 208 240 63 +3 340 64 132 +3 343 168 346 +3 400 367 357 +3 396 400 357 +3 54 292 28 +3 96 103 18 +3 346 168 343 +3 249 137 248 +3 200 209 199 +3 79 222 281 +3 327 308 309 +3 343 346 352 +3 383 388 169 +3 200 88 209 +3 285 186 324 +3 241 48 79 +3 16 100 79 +3 303 100 79 +3 323 105 451 +3 100 303 186 +3 100 16 79 +3 321 353 331 +3 236 285 370 +3 389 231 92 +3 100 285 117 +3 108 63 11 +3 186 303 79 +3 88 382 209 +3 82 236 389 +3 100 241 79 +3 45 72 71 +3 0 169 97 +3 45 137 72 +3 285 100 186 +3 137 45 58 +3 199 378 305 +3 208 137 58 +3 356 331 357 +3 305 380 202 +3 378 349 305 +3 169 92 315 +3 192 262 75 +3 361 192 75 +3 291 202 237 +3 258 293 207 +3 272 79 377 +3 324 186 268 +3 268 186 88 +3 90 389 388 +3 169 315 291 +3 97 169 291 +3 79 320 377 +3 4 383 169 +3 379 317 368 +3 200 202 315 +3 92 239 315 +3 306 353 321 +3 370 389 236 +3 48 222 79 +3 206 361 185 +3 361 206 185 +3 92 231 239 +3 356 321 331 +3 190 171 185 +3 249 190 185 +3 206 198 361 +3 198 192 361 +3 90 388 383 +3 305 124 237 +3 327 311 326 +3 4 90 383 +3 190 249 1 +3 206 361 185 +3 171 206 185 +3 202 305 237 +3 108 29 146 +3 308 310 309 +3 334 100 117 +3 90 82 389 +3 79 336 186 +3 224 53 335 +3 354 381 318 +3 231 268 239 +3 186 272 209 +3 88 186 209 +3 200 199 202 +3 327 326 319 +3 308 327 319 +3 309 311 327 +3 435 443 446 +3 199 305 202 +3 97 171 190 +3 171 97 206 +3 97 291 206 +3 237 198 206 +3 291 237 206 +3 406 124 305 +3 399 402 400 +3 373 374 407 +3 300 304 311 +3 304 313 311 +3 407 213 113 +3 208 111 256 +3 403 402 399 +3 363 403 399 +3 29 128 32 +3 403 375 402 +3 363 399 359 +3 194 192 198 +3 193 86 75 +3 400 213 407 +3 272 336 79 +3 79 281 320 +3 300 302 297 +3 294 298 304 +3 299 322 314 +3 307 299 314 +3 322 384 314 +3 377 281 325 +3 387 377 325 +3 281 377 320 +3 355 358 331 +3 101 102 262 +3 363 375 403 +3 197 204 75 +3 102 101 262 +3 299 384 322 +3 262 163 193 +3 318 343 352 +3 299 322 384 +3 299 393 322 +3 322 393 384 +3 137 208 256 +3 86 197 75 +3 186 79 336 +3 222 264 281 +3 185 361 75 +3 365 360 366 +3 386 392 393 +3 299 386 393 +3 393 392 384 +3 392 394 384 +3 394 398 387 +3 384 394 387 +3 404 377 387 +3 398 404 387 +3 404 209 377 +3 209 272 377 +3 399 400 358 +3 359 399 358 +3 101 163 262 +3 262 193 75 +3 102 101 375 +3 204 72 249 +3 31 148 134 +3 424 437 427 +3 359 358 355 +3 400 402 213 +3 204 249 185 +3 351 317 386 +3 390 351 386 +3 317 392 386 +3 392 317 394 +3 317 395 394 +3 395 397 398 +3 394 395 398 +3 397 405 404 +3 398 397 404 +3 199 209 404 +3 405 199 404 +3 268 88 239 +3 75 204 185 +3 318 352 354 +3 243 18 227 +3 397 385 405 +3 385 199 405 +3 262 192 194 +3 101 262 194 +3 18 131 96 +3 349 378 199 +3 385 349 199 +3 250 158 167 +3 293 250 167 +3 379 362 395 +3 317 379 395 +3 395 362 397 +3 362 365 397 +3 365 401 397 +3 401 349 385 +3 397 401 385 +3 375 194 213 +3 213 194 113 +3 375 101 194 +3 354 352 318 +3 342 343 318 +3 375 213 402 +3 451 261 443 +3 32 250 293 +3 258 32 293 +3 113 194 198 +3 351 409 368 +3 355 331 354 +3 339 340 344 +3 372 375 363 +3 339 344 338 +3 368 321 379 +3 360 362 379 +3 360 365 362 +3 366 365 362 +3 365 366 362 +3 406 349 401 +3 365 406 401 +3 108 258 52 +3 258 108 32 +3 305 349 406 +3 297 302 301 +3 52 251 108 +3 321 360 379 +3 384 325 314 +3 373 406 365 +3 366 373 365 +3 373 349 406 +3 349 373 406 +3 373 124 406 +3 106 105 323 +3 439 434 431 +3 18 243 229 +3 83 57 260 +3 447 83 260 +3 418 425 429 +3 439 441 434 +3 441 442 434 +3 257 106 323 +3 391 425 418 +3 435 437 444 +3 257 323 452 +3 391 418 294 +3 296 440 441 +3 440 296 441 +3 131 59 138 +3 294 413 295 +3 95 30 20 +3 428 432 434 +3 422 424 415 +3 294 420 413 +3 425 296 429 +3 414 422 415 +3 425 121 296 +3 296 440 431 +3 452 323 451 +3 296 83 447 +3 431 441 439 +3 445 444 436 +3 429 296 431 +3 450 56 106 +3 301 121 433 +3 106 257 452 +3 414 415 411 +3 390 413 386 +3 18 229 59 +3 59 229 46 +3 386 414 411 +3 301 433 425 +3 248 256 196 +3 411 416 412 +3 300 391 304 +3 422 436 424 +3 46 229 151 +3 127 121 301 +3 412 419 356 +3 295 413 390 +3 351 390 411 +3 442 56 125 +3 409 351 412 +3 247 243 13 +3 330 172 155 +3 451 118 67 +3 364 44 290 +3 290 44 166 +3 166 210 265 +3 265 210 284 +3 442 436 434 +3 229 99 151 +3 364 449 44 +3 449 283 44 +3 418 420 294 +3 363 449 364 +3 212 284 210 +3 44 210 166 +3 420 428 422 +3 44 212 210 +3 247 229 243 +3 229 247 99 +3 127 266 178 +3 56 450 260 +3 413 420 421 +3 359 168 363 +3 363 168 449 +3 415 424 416 +3 296 447 260 +3 212 220 284 +3 436 437 424 +3 351 411 412 +3 440 441 431 +3 283 212 44 +3 451 67 261 +3 168 173 449 +3 449 173 283 +3 426 342 318 +3 381 426 318 +3 212 348 220 +3 266 127 301 +3 426 338 342 +3 149 283 173 +3 149 212 283 +3 438 338 426 +3 433 121 425 +3 149 183 212 +3 414 421 422 +3 172 170 155 +3 368 317 351 +3 350 381 376 +3 67 259 261 +3 183 112 212 +3 212 112 348 +3 348 112 220 +3 432 431 434 +3 448 339 338 +3 438 448 338 +3 420 431 432 +3 112 221 220 +3 428 420 432 +3 431 432 434 +3 417 381 350 +3 422 428 434 +3 423 426 381 +3 417 423 381 +3 56 260 57 +3 451 105 118 +3 296 260 440 +3 386 413 414 +3 306 350 316 +3 448 341 339 +3 415 416 411 +3 436 444 437 +3 259 341 448 +3 297 425 391 +3 442 125 445 +3 450 106 452 +3 410 350 306 +3 341 259 223 +3 355 417 350 +3 410 355 350 +3 259 64 223 +3 410 356 350 +3 356 410 350 +3 356 355 410 +3 355 419 417 +3 247 13 99 +3 195 112 183 +3 180 112 195 +3 419 355 356 +3 301 425 297 +3 390 386 411 +3 446 259 448 +3 446 261 259 +3 434 436 422 +3 421 420 422 +3 409 410 306 +3 368 409 306 +3 412 356 410 +3 409 412 410 +3 442 445 436 +3 435 423 430 diff --git a/test/data/meshio_meshes/ply/tet.ply b/test/data/meshio_meshes/ply/tet.ply new file mode 100644 index 000000000..7c52c703b --- /dev/null +++ b/test/data/meshio_meshes/ply/tet.ply @@ -0,0 +1,22 @@ +ply +format ascii 1.0 +comment single tetrahedron with colored faces +element vertex 4 +comment tetrahedron vertices +property float x +property float y +property float z +element face 4 +property list uchar int vertex_indices +property uchar red +property uchar green +property uchar blue +end_header +0 0 0 +0 1 1 +1 0 1 +1 1 0 +3 0 1 2 255 255 255 +3 0 2 3 255 0 0 +3 0 1 3 0 255 0 +3 1 2 3 0 0 255 diff --git a/test/data/meshio_meshes/su2/README.md b/test/data/meshio_meshes/su2/README.md new file mode 100644 index 000000000..7f19aef9d --- /dev/null +++ b/test/data/meshio_meshes/su2/README.md @@ -0,0 +1,2 @@ +* `square.su2` : from https://su2code.github.io/docs_v7/Mesh-File/ +* `mixgrid.su2` : generated using http://ossanworld.com/cfdbooks/cfdcodes/mixgrid_cube_v5.f90 diff --git a/test/data/meshio_meshes/su2/mixgrid.su2 b/test/data/meshio_meshes/su2/mixgrid.su2 new file mode 100644 index 000000000..e5469954d --- /dev/null +++ b/test/data/meshio_meshes/su2/mixgrid.su2 @@ -0,0 +1,73 @@ + % + % Problem dimension + % +NDIME= 3 + % + % Inner element connectivity +NELEM= 10 + 10 2 6 3 11 0 + 10 6 7 3 11 1 + 10 14 10 11 6 2 + 10 14 11 15 6 3 + 10 2 10 6 11 4 + 10 6 15 7 11 5 + 13 4 8 0 5 9 1 6 + 13 12 8 4 13 9 5 7 + 13 5 9 1 6 10 2 8 + 13 13 9 5 14 10 6 9 + % + % Node coordinates + % +NPOIN= 16 + 0.000000000000000E+00 0.000000000000000E+00 0.000000000000000E+00 + 0.000000000000000E+00 0.000000000000000E+00 1.500000000000000E-01 + 0.000000000000000E+00 0.000000000000000E+00 3.000000000000000E-01 + 0.000000000000000E+00 0.000000000000000E+00 1.000000000000000E+00 + 0.000000000000000E+00 1.000000000000000E+00 0.000000000000000E+00 + 0.000000000000000E+00 1.000000000000000E+00 1.500000000000000E-01 + 0.000000000000000E+00 1.000000000000000E+00 3.000000000000000E-01 + 0.000000000000000E+00 1.000000000000000E+00 1.000000000000000E+00 + 1.000000000000000E+00 0.000000000000000E+00 0.000000000000000E+00 + 1.000000000000000E+00 0.000000000000000E+00 1.500000000000000E-01 + 1.000000000000000E+00 0.000000000000000E+00 3.000000000000000E-01 + 1.000000000000000E+00 0.000000000000000E+00 1.000000000000000E+00 + 1.000000000000000E+00 1.000000000000000E+00 0.000000000000000E+00 + 1.000000000000000E+00 1.000000000000000E+00 1.500000000000000E-01 + 1.000000000000000E+00 1.000000000000000E+00 3.000000000000000E-01 + 1.000000000000000E+00 1.000000000000000E+00 1.000000000000000E+00 + % + % Boundary elements + % +NMARK= 6 +MARKER_TAG= xmin +MARKER_ELEMS= 4 + 5 6 7 3 + 5 6 3 2 + 9 0 4 5 1 + 9 1 5 6 2 +MARKER_TAG= xmax +MARKER_ELEMS= 4 + 5 14 10 11 + 5 14 11 15 + 9 12 8 9 13 + 9 13 9 10 14 +MARKER_TAG= ymin +MARKER_ELEMS= 4 + 5 2 3 11 + 5 2 11 10 + 9 8 0 1 9 + 9 9 1 2 10 +MARKER_TAG= ymax +MARKER_ELEMS= 4 + 5 6 14 15 + 5 6 15 7 + 9 4 12 13 5 + 9 5 13 14 6 +MARKER_TAG= zmin +MARKER_ELEMS= 2 + 5 4 0 8 + 5 4 8 12 +MARKER_TAG= zmax +MARKER_ELEMS= 2 + 5 7 15 11 + 5 7 11 3 diff --git a/test/data/meshio_meshes/su2/square.su2 b/test/data/meshio_meshes/su2/square.su2 new file mode 100644 index 000000000..033f3f4fa --- /dev/null +++ b/test/data/meshio_meshes/su2/square.su2 @@ -0,0 +1,49 @@ +% +% Problem dimension +% +NDIME= 2 +% +% Inner element connectivity +% +NELEM= 8 +5 0 1 3 0 +5 1 4 3 1 +5 1 2 4 2 +5 2 5 4 3 +5 3 4 6 4 +5 4 7 6 5 +5 4 5 7 6 +5 5 8 7 7 +% +% Node coordinates +% +NPOIN= 9 +0.00000000000000 0.00000000000000 0 +0.50000000000000 0.00000000000000 1 +1.00000000000000 0.00000000000000 2 +0.00000000000000 0.50000000000000 3 +0.50000000000000 0.50000000000000 4 +1.00000000000000 0.50000000000000 5 +0.00000000000000 1.00000000000000 6 +0.50000000000000 1.00000000000000 7 +1.00000000000000 1.00000000000000 8 +% +% Boundary elements +% +NMARK= 4 +MARKER_TAG= lower +MARKER_ELEMS= 2 +3 0 1 +3 1 2 +MARKER_TAG= right +MARKER_ELEMS= 2 +3 2 5 +3 5 8 +MARKER_TAG= upper +MARKER_ELEMS= 2 +3 8 7 +3 7 6 +MARKER_TAG= left +MARKER_ELEMS= 2 +3 6 3 +3 3 0 diff --git a/test/data/meshio_meshes/tecplot/quad_zone_comma.tec b/test/data/meshio_meshes/tecplot/quad_zone_comma.tec new file mode 100644 index 000000000..aea13be18 --- /dev/null +++ b/test/data/meshio_meshes/tecplot/quad_zone_comma.tec @@ -0,0 +1,14 @@ +TITLE = "Zone and variables separated by commas" +VARIABLES = X, Y, "foo bar", foobar +# Random comment +ZONE N=4, E =1,ET= QUADRILATERAL , T = "Hex with commas" +# Random comment +, F = FEBLOCK, VARLOCATION =( [4]= CELLCENTERED ) + 0.0 1.0 1.0 0.0 + 0.0 0.0 1.0 1.0 +# Random comment + 1.0 2.0 3.0 4.0 +# Random comment + 42.0 +# Random comment + 1 2 3 4 \ No newline at end of file diff --git a/test/data/meshio_meshes/tecplot/quad_zone_multivar.tec b/test/data/meshio_meshes/tecplot/quad_zone_multivar.tec new file mode 100644 index 000000000..e5e8d0379 --- /dev/null +++ b/test/data/meshio_meshes/tecplot/quad_zone_multivar.tec @@ -0,0 +1,16 @@ +TITLE = "Zone and variables separated by commas" +VARIABLES = "X", "Y", +"foo bar", +"foobar" +# Random comment +ZONE N=4, E =1,ET= QUADRILATERAL , T = "Hex with commas" +# Random comment +, F = FEBLOCK, VARLOCATION =( [4]= CELLCENTERED ) + 0.0 1.0 1.0 0.0 + 0.0 0.0 1.0 1.0 +# Random comment + 1.0 2.0 3.0 4.0 +# Random comment + 42.0 +# Random comment + 1 2 3 4 \ No newline at end of file diff --git a/test/data/meshio_meshes/tecplot/quad_zone_space.tec b/test/data/meshio_meshes/tecplot/quad_zone_space.tec new file mode 100644 index 000000000..e87b8c456 --- /dev/null +++ b/test/data/meshio_meshes/tecplot/quad_zone_space.tec @@ -0,0 +1,14 @@ +TITLE = "Zone and variables separated by white spaces" +VARIABLES = X Y "foo bar" foobar +# Random comment +ZONE T = "VARLOCATION" N=4 E =1 ET= QUADRILATERAL +# Random comment + F = FEBLOCK VARLOCATION =( [4]= CELLCENTERED ) + 0.0 1.0 1.0 0.0 + 0.0 0.0 1.0 1.0 +# Random comment + 1.0 2.0 3.0 4.0 +# Random comment + 42.0 +# Random comment + 1 2 3 4 \ No newline at end of file diff --git a/test/data/meshio_meshes/tetgen/mesh.ele b/test/data/meshio_meshes/tetgen/mesh.ele new file mode 100644 index 000000000..03e96e3f2 --- /dev/null +++ b/test/data/meshio_meshes/tetgen/mesh.ele @@ -0,0 +1,307 @@ +# This file was created by meshio v4.1.0 +# attribute names: medit:ref +304 4 1 +0 41 35 40 42 2 +1 50 36 46 45 2 +2 40 54 41 42 2 +3 41 54 44 43 2 +4 56 40 35 38 2 +5 55 51 50 37 2 +6 42 35 40 38 2 +7 50 51 55 36 2 +8 54 41 48 43 2 +9 52 56 35 38 2 +10 46 36 49 45 2 +11 41 48 43 42 2 +12 41 54 48 42 2 +13 53 55 51 36 2 +14 47 49 36 45 2 +15 35 42 52 38 2 +16 42 40 54 39 2 +17 54 48 42 38 2 +18 20 56 35 52 2 +19 38 56 40 39 2 +20 50 55 13 36 2 +21 49 43 48 46 2 +22 40 42 38 39 2 +23 53 51 49 36 2 +24 49 0 51 53 2 +25 36 51 49 47 2 +26 35 40 56 19 2 +27 49 16 43 46 2 +28 48 54 16 38 2 +29 38 42 54 39 2 +30 12 55 50 37 2 +31 13 55 14 36 2 +32 55 51 0 53 2 +33 38 54 16 39 2 +34 18 56 40 19 2 +35 54 44 16 47 2 +36 19 56 35 20 2 +37 43 48 16 49 2 +38 51 55 11 37 2 +39 50 13 55 12 2 +40 55 12 11 37 2 +41 51 16 0 49 2 +42 38 16 1 39 2 +43 55 53 14 36 2 +44 51 55 10 11 2 +45 53 0 55 15 2 +46 52 20 56 21 2 +47 49 51 16 47 2 +48 38 1 56 39 2 +49 40 56 18 39 2 +50 55 53 15 14 2 +51 0 51 55 10 2 +52 56 18 39 17 2 +53 39 1 56 17 2 +54 22 1 56 38 2 +55 56 52 21 38 2 +56 22 56 21 38 2 +57 45 47 43 44 2 +58 16 43 47 44 2 +59 36 45 51 47 2 +60 36 51 45 50 2 +61 37 51 45 47 2 +62 37 45 51 50 2 +63 43 45 16 47 2 +64 43 16 45 46 2 +65 49 16 45 47 2 +66 49 45 16 46 2 +67 43 16 54 44 2 +68 43 54 16 48 2 +69 43 48 73 42 1 +70 74 41 35 40 1 +71 45 50 37 75 1 +72 54 44 65 41 1 +73 35 62 74 40 1 +74 75 45 44 68 1 +75 41 74 65 40 1 +76 48 77 73 42 1 +77 44 74 65 41 1 +78 41 65 54 40 1 +79 75 37 45 68 1 +80 37 50 12 86 1 +81 32 46 48 76 1 +82 50 37 75 86 1 +83 37 47 45 68 1 +84 43 44 74 45 1 +85 45 47 44 68 1 +86 80 46 48 32 1 +87 35 41 74 42 1 +88 46 36 50 76 1 +89 42 63 35 52 1 +90 62 40 18 64 1 +91 40 35 62 19 1 +92 36 46 80 76 1 +93 37 11 88 86 1 +94 42 77 73 52 1 +95 50 46 76 45 1 +96 85 36 80 76 1 +97 62 65 74 40 1 +98 76 46 43 45 1 +99 65 44 54 68 1 +100 76 50 45 75 1 +101 73 77 48 32 1 +102 45 44 74 75 1 +103 54 44 47 68 1 +104 51 67 16 47 1 +105 16 71 29 67 1 +106 75 12 50 86 1 +107 68 75 37 86 1 +108 32 48 73 76 1 +109 43 74 41 42 1 +110 44 27 75 68 1 +111 40 18 64 39 1 +112 37 88 51 28 1 +113 76 85 36 87 1 +114 67 16 71 51 1 +115 65 27 44 68 1 +116 73 35 74 42 1 +117 49 82 0 53 1 +118 41 44 74 43 1 +119 67 66 16 47 1 +120 19 35 62 25 1 +121 70 2 60 29 1 +122 60 66 70 29 1 +123 66 60 2 29 1 +124 76 36 50 87 1 +125 79 72 30 49 1 +126 43 74 76 45 1 +127 57 60 39 70 1 +128 77 61 73 52 1 +129 65 27 74 44 1 +130 34 83 8 79 1 +131 4 26 78 59 1 +132 65 54 40 39 1 +133 43 73 74 42 1 +134 80 48 77 32 1 +135 27 74 44 75 1 +136 35 74 62 25 1 +137 40 62 23 64 1 +138 53 14 36 85 1 +139 86 88 37 28 1 +140 73 63 35 42 1 +141 79 30 78 49 1 +142 51 16 71 81 1 +143 66 39 60 70 1 +144 50 33 12 75 1 +145 29 66 16 67 1 +146 52 77 61 38 1 +147 66 54 16 47 1 +148 71 70 16 29 1 +149 23 40 64 39 1 +150 80 46 32 76 1 +151 71 67 51 84 1 +152 73 63 42 52 1 +153 60 57 2 70 1 +154 16 78 69 72 1 +155 69 78 30 72 1 +156 85 80 9 76 1 +157 16 48 38 78 1 +158 11 88 51 37 1 +159 83 72 8 79 1 +160 60 2 23 66 1 +161 54 39 66 70 1 +162 69 38 16 58 1 +163 84 7 67 28 1 +164 36 34 53 85 1 +165 38 78 59 69 1 +166 72 16 78 49 1 +167 78 38 16 69 1 +168 59 78 4 69 1 +169 72 78 30 49 1 +170 69 59 38 58 1 +171 39 54 16 70 1 +172 84 51 71 81 1 +173 9 85 76 87 1 +174 63 73 61 52 1 +175 47 37 51 68 1 +176 8 82 72 83 1 +177 68 6 75 86 1 +178 65 3 62 74 1 +179 58 16 69 70 1 +180 0 16 51 81 1 +181 36 53 34 80 1 +182 16 48 78 49 1 +183 66 16 54 70 1 +184 43 74 73 76 1 +185 70 66 16 29 1 +186 65 62 23 40 1 +187 80 9 34 85 1 +188 35 25 63 73 1 +189 45 74 76 75 1 +190 72 82 16 49 1 +191 74 3 62 25 1 +192 87 76 9 33 1 +193 40 23 65 39 1 +194 67 71 7 84 1 +195 15 53 83 14 1 +196 57 1 16 39 1 +197 1 16 38 58 1 +198 32 9 80 76 1 +199 82 0 16 49 1 +200 25 35 74 73 1 +201 31 81 71 72 1 +202 49 53 36 80 1 +203 72 30 8 79 1 +204 75 27 6 68 1 +205 53 83 82 15 1 +206 75 6 33 86 1 +207 2 57 24 70 1 +208 86 68 6 28 1 +209 50 76 33 75 1 +210 39 16 57 70 1 +211 49 36 46 80 1 +212 37 68 86 28 1 +213 1 16 58 70 1 +214 68 37 51 28 1 +215 82 31 8 72 1 +216 3 65 27 74 1 +217 30 4 78 69 1 +218 26 61 5 77 1 +219 29 71 7 67 1 +220 63 25 5 73 1 +221 34 36 80 85 1 +222 21 52 61 38 1 +223 82 16 0 72 1 +224 81 71 7 31 1 +225 38 48 77 78 1 +226 33 12 75 86 1 +227 47 66 54 68 1 +228 66 65 54 68 1 +229 67 51 84 88 1 +230 65 54 39 66 1 +231 39 60 64 66 1 +232 67 51 88 28 1 +233 24 58 69 70 1 +234 48 49 46 80 1 +235 78 48 77 80 1 +236 51 67 47 68 1 +237 84 71 7 81 1 +238 57 16 1 70 1 +239 77 73 5 32 1 +240 14 53 34 85 1 +241 62 23 3 65 1 +242 13 50 36 87 1 +243 58 69 4 24 1 +244 31 0 81 72 1 +245 63 19 35 20 1 +246 47 67 66 68 1 +247 53 82 0 15 1 +248 82 0 31 72 1 +249 60 23 64 66 1 +250 13 50 87 12 1 +251 1 58 24 70 1 +252 50 76 87 33 1 +253 24 57 1 70 1 +254 77 26 61 38 1 +255 20 35 63 52 1 +256 51 67 68 28 1 +257 61 73 5 77 1 +258 88 84 67 28 1 +259 48 78 49 80 1 +260 4 59 69 58 1 +261 22 38 59 58 1 +262 21 22 38 59 1 +263 70 16 69 72 1 +264 77 26 38 78 1 +265 39 23 65 66 1 +266 73 5 63 61 1 +267 39 64 23 66 1 +268 78 79 49 80 1 +269 39 60 57 17 1 +270 78 26 38 59 1 +271 53 34 83 14 1 +272 21 61 26 38 1 +273 57 1 39 17 1 +274 33 87 50 12 1 +275 25 19 35 63 1 +276 84 10 51 81 1 +277 38 22 1 58 1 +278 71 16 70 72 1 +279 85 13 36 87 1 +280 10 0 51 81 1 +281 14 13 36 85 1 +282 38 26 21 59 1 +283 51 10 84 88 1 +284 88 51 10 11 1 +285 64 60 39 17 1 +286 52 61 20 21 1 +287 18 40 62 19 1 +288 12 11 37 86 1 +289 20 63 61 52 1 +290 18 64 39 17 1 +291 76 48 43 46 1 +292 76 43 48 73 1 +293 42 38 77 52 1 +294 77 38 42 48 1 +295 79 49 83 72 1 +296 82 83 49 72 1 +297 82 49 83 53 1 +298 81 16 72 0 1 +299 81 72 16 71 1 +300 49 83 80 79 1 +301 49 80 83 53 1 +302 34 80 83 79 1 +303 34 83 80 53 1 diff --git a/test/data/meshio_meshes/tetgen/mesh.node b/test/data/meshio_meshes/tetgen/mesh.node new file mode 100644 index 000000000..f40842699 --- /dev/null +++ b/test/data/meshio_meshes/tetgen/mesh.node @@ -0,0 +1,92 @@ +# This file was created by meshio v4.1.0 +# attribute and marker names: moje_data, medit:ref +89 3 1 1 +0 1.0000000000000000e+00 5.0000000000000000e-01 6.9999998807907104e-01 0.0000000000000000e+00 0 +1 0.0000000000000000e+00 5.0000000000000000e-01 6.9999998807907104e-01 0.0000000000000000e+00 0 +2 0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1 +3 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 +4 0.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1 +5 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 +6 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 +7 1.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1 +8 1.0000000000000000e+00 1.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1 +9 1.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 +10 1.0000000000000000e+00 3.4363371133804321e-01 6.2469798326492310e-01 0.0000000000000000e+00 0 +11 1.0000000000000000e+00 3.0501440167427063e-01 4.5549580454826355e-01 0.0000000000000000e+00 0 +12 1.0000000000000000e+00 4.1322329640388489e-01 3.1980618834495544e-01 0.0000000000000000e+00 0 +13 1.0000000000000000e+00 5.8677667379379272e-01 3.1980618834495544e-01 0.0000000000000000e+00 0 +14 1.0000000000000000e+00 6.9498562812805176e-01 4.5549580454826355e-01 0.0000000000000000e+00 0 +15 1.0000000000000000e+00 6.5636628866195679e-01 6.2469798326492310e-01 0.0000000000000000e+00 0 +16 5.0000000000000000e-01 5.0000000000000000e-01 6.9999998807907104e-01 0.0000000000000000e+00 0 +17 0.0000000000000000e+00 3.4363371133804321e-01 6.2469798326492310e-01 0.0000000000000000e+00 0 +18 0.0000000000000000e+00 3.0501440167427063e-01 4.5549580454826355e-01 0.0000000000000000e+00 0 +19 0.0000000000000000e+00 4.1322329640388489e-01 3.1980618834495544e-01 0.0000000000000000e+00 0 +20 0.0000000000000000e+00 5.8677667379379272e-01 3.1980618834495544e-01 0.0000000000000000e+00 0 +21 0.0000000000000000e+00 6.9498562812805176e-01 4.5549580454826355e-01 0.0000000000000000e+00 0 +22 0.0000000000000000e+00 6.5636628866195679e-01 6.2469798326492310e-01 0.0000000000000000e+00 0 +23 0.0000000000000000e+00 0.0000000000000000e+00 5.0000000000000000e-01 0.0000000000000000e+00 0 +24 0.0000000000000000e+00 5.0000000000000000e-01 1.0000000000000000e+00 0.0000000000000000e+00 1 +25 0.0000000000000000e+00 5.0000000000000000e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 +26 0.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 0.0000000000000000e+00 0 +27 5.0000000000000000e-01 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 +28 1.0000000000000000e+00 0.0000000000000000e+00 5.0000000000000000e-01 0.0000000000000000e+00 0 +29 5.0000000000000000e-01 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1 +30 5.0000000000000000e-01 1.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 1 +31 1.0000000000000000e+00 5.0000000000000000e-01 1.0000000000000000e+00 0.0000000000000000e+00 1 +32 5.0000000000000000e-01 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 +33 1.0000000000000000e+00 5.0000000000000000e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 +34 1.0000000000000000e+00 1.0000000000000000e+00 5.0000000000000000e-01 0.0000000000000000e+00 0 +35 1.5536570549011230e-01 4.9953359365463257e-01 3.0000048875808716e-01 0.0000000000000000e+00 0 +36 8.1072819232940674e-01 6.6186362504959106e-01 3.8252589106559753e-01 0.0000000000000000e+00 0 +37 8.3570951223373413e-01 3.4318828582763672e-01 3.7586259841918945e-01 0.0000000000000000e+00 0 +38 1.4899100363254547e-01 6.9498562812805176e-01 5.4450422525405884e-01 0.0000000000000000e+00 0 +39 1.4899100363254547e-01 3.0501440167427063e-01 5.4450422525405884e-01 0.0000000000000000e+00 0 +40 1.6211509704589844e-01 3.4222349524497986e-01 3.7709110975265503e-01 0.0000000000000000e+00 0 +41 3.1894388794898987e-01 4.1364109516143799e-01 3.1960558891296387e-01 0.0000000000000000e+00 0 +42 3.0048260092735291e-01 5.9788781404495239e-01 3.2559248805046082e-01 0.0000000000000000e+00 0 +43 4.7484621405601501e-01 5.1894259452819824e-01 3.0089908838272095e-01 0.0000000000000000e+00 0 +44 4.8751631379127502e-01 3.6032208800315857e-01 3.5685640573501587e-01 0.0000000000000000e+00 0 +45 6.5104299783706665e-01 4.2482939362525940e-01 3.1466409564018250e-01 0.0000000000000000e+00 0 +46 6.4090651273727417e-01 6.1140972375869751e-01 3.3390399813652039e-01 0.0000000000000000e+00 0 +47 6.5412777662277222e-01 3.0226328969001770e-01 4.6999689936637878e-01 0.0000000000000000e+00 0 +48 4.3121519684791565e-01 6.9295471906661987e-01 4.4738370180130005e-01 0.0000000000000000e+00 0 +49 6.4405417442321777e-01 6.9429111480712891e-01 5.4744458198547363e-01 0.0000000000000000e+00 0 +50 8.2820540666580200e-01 5.0739651918411255e-01 3.0013680458068848e-01 0.0000000000000000e+00 0 +51 8.2212162017822266e-01 3.0967760086059570e-01 5.6146049499511719e-01 0.0000000000000000e+00 0 +52 1.1974179744720459e-01 6.4263367652893066e-01 3.5980150103569031e-01 0.0000000000000000e+00 0 +53 8.5100901126861572e-01 6.9498562812805176e-01 5.4450422525405884e-01 0.0000000000000000e+00 0 +54 3.2907238602638245e-01 3.0151790380477905e-01 4.7540658712387085e-01 0.0000000000000000e+00 0 +55 1.0000000000000000e+00 5.0000000000000000e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 +56 0.0000000000000000e+00 5.0000000000000000e-01 5.0000000000000000e-01 0.0000000000000000e+00 0 +57 0.0000000000000000e+00 3.5660341382026672e-01 7.9776620864868164e-01 0.0000000000000000e+00 0 +58 0.0000000000000000e+00 6.4339661598205566e-01 7.9776620864868164e-01 0.0000000000000000e+00 0 +59 0.0000000000000000e+00 8.3515560626983643e-01 7.2511637210845947e-01 0.0000000000000000e+00 0 +60 0.0000000000000000e+00 1.7500209808349609e-01 7.0604157447814941e-01 0.0000000000000000e+00 0 +61 0.0000000000000000e+00 7.7878558635711670e-01 2.8744849562644958e-01 0.0000000000000000e+00 0 +62 0.0000000000000000e+00 2.4160820245742798e-01 2.9393941164016724e-01 0.0000000000000000e+00 0 +63 0.0000000000000000e+00 6.4330238103866577e-01 1.7870600521564484e-01 0.0000000000000000e+00 0 +64 0.0000000000000000e+00 1.9976480305194855e-01 5.5565208196640015e-01 0.0000000000000000e+00 0 +65 2.5000000000000000e-01 0.0000000000000000e+00 2.5000000000000000e-01 0.0000000000000000e+00 0 +66 3.7500000000000000e-01 0.0000000000000000e+00 6.2500000000000000e-01 0.0000000000000000e+00 0 +67 7.1875000000000000e-01 0.0000000000000000e+00 7.1875000000000000e-01 0.0000000000000000e+00 0 +68 6.5429687500000000e-01 0.0000000000000000e+00 3.4570309519767761e-01 0.0000000000000000e+00 0 +69 2.5000000000000000e-01 7.5000000000000000e-01 1.0000000000000000e+00 0.0000000000000000e+00 1 +70 3.7500000000000000e-01 3.7500000000000000e-01 1.0000000000000000e+00 0.0000000000000000e+00 1 +71 7.1875000000000000e-01 2.8125000000000000e-01 1.0000000000000000e+00 0.0000000000000000e+00 1 +72 6.5429687500000000e-01 6.5429687500000000e-01 1.0000000000000000e+00 0.0000000000000000e+00 1 +73 2.5000000000000000e-01 7.5000000000000000e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 +74 3.7500000000000000e-01 3.7500000000000000e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 +75 7.1875000000000000e-01 2.8125000000000000e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 +76 6.5429687500000000e-01 6.5429687500000000e-01 0.0000000000000000e+00 0.0000000000000000e+00 0 +77 2.5000000000000000e-01 1.0000000000000000e+00 2.5000000000000000e-01 0.0000000000000000e+00 0 +78 3.7500000000000000e-01 1.0000000000000000e+00 6.2500000000000000e-01 0.0000000000000000e+00 0 +79 7.1875000000000000e-01 1.0000000000000000e+00 7.1875000000000000e-01 0.0000000000000000e+00 0 +80 6.5429687500000000e-01 1.0000000000000000e+00 3.4570309519767761e-01 0.0000000000000000e+00 0 +81 1.0000000000000000e+00 3.5660341382026672e-01 7.9776620864868164e-01 0.0000000000000000e+00 0 +82 1.0000000000000000e+00 6.4339661598205566e-01 7.9776620864868164e-01 0.0000000000000000e+00 0 +83 1.0000000000000000e+00 8.3515560626983643e-01 7.2511637210845947e-01 0.0000000000000000e+00 0 +84 1.0000000000000000e+00 1.7500209808349609e-01 7.0604157447814941e-01 0.0000000000000000e+00 0 +85 1.0000000000000000e+00 7.7878558635711670e-01 2.8744849562644958e-01 0.0000000000000000e+00 0 +86 1.0000000000000000e+00 2.4160820245742798e-01 2.9393941164016724e-01 0.0000000000000000e+00 0 +87 1.0000000000000000e+00 6.4330238103866577e-01 1.7870600521564484e-01 0.0000000000000000e+00 0 +88 1.0000000000000000e+00 1.9976480305194855e-01 5.5565208196640015e-01 0.0000000000000000e+00 0 diff --git a/test/data/meshio_meshes/ugrid/hch_strct.4.lb8.ugrid b/test/data/meshio_meshes/ugrid/hch_strct.4.lb8.ugrid new file mode 100644 index 0000000000000000000000000000000000000000..e613760af5bc7b4ac7681f63c8cf465b2d9d977e GIT binary patch literal 18036 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 PsH`838Y=6Dqn`c&C;JDM literal 0 HcmV?d00001 diff --git a/test/data/meshio_meshes/vtk/00_image.vtk b/test/data/meshio_meshes/vtk/00_image.vtk new file mode 100644 index 000000000..2eb4fc001 --- /dev/null +++ b/test/data/meshio_meshes/vtk/00_image.vtk @@ -0,0 +1,110 @@ +# vtk DataFile Version 3.4 +Image +ASCII +DATASET STRUCTURED_POINTS +DIMENSIONS 10 10 1 +ORIGIN 0.0 0.0 0.0 +SPACING 0.5 0.5 0.0 +POINT_DATA 100 +SCALARS transmissivity float 1 +LOOKUP_TABLE default +0.298739662586 +0.279131445489 +0.291060629758 +0.209081029997 +0.167312512876 +0.17295265379 +0.2100958905 +0.203211077558 +0.194905559894 +0.194502141846 +0.131241923907 +0.19249787806 +0.200954738051 +0.155585026284 +0.182841950501 +0.187871957767 +0.207598852496 +0.195911898513 +0.208253505857 +0.1920442551 +0.202996450184 +0.252721080135 +0.23671796761 +0.233189895756 +0.270186702166 +0.272931816024 +0.270380706188 +0.235920429082 +0.295855745957 +0.262264695111 +0.259718930583 +0.230059095126 +0.234317359927 +0.237685617976 +0.214377778761 +0.212776562413 +0.191132637109 +0.190419933446 +0.19304295094 +0.219138618799 +0.280266184206 +0.232735721002 +0.2013628867 +0.242265369993 +0.204605952014 +0.217593655281 +0.257883000267 +0.265031911042 +0.252164884194 +0.274015475987 +0.258132330746 +0.258587001316 +0.20202912732 +0.177675067263 +0.172328034934 +0.207081436701 +0.280701097154 +0.236035028008 +0.22751839086 +0.198225008225 +0.166977802309 +0.167918014212 +0.171268784021 +0.162286321399 +0.225587172718 +0.255948616943 +0.169888780058 +0.131652207091 +0.164775824684 +0.225934163991 +0.235147380819 +0.306821054112 +0.26003544081 +0.247473520841 +0.24507626514 +0.199585971691 +0.146278300724 +0.146749272746 +0.227855782454 +0.243324810464 +0.263984406253 +0.202267248848 +0.185525164757 +0.207851666271 +0.22789498338 +0.175890885834 +0.158555750876 +0.251900632165 +0.213176490915 +0.204000194234 +0.250290544772 +0.2187337482 +0.211795398808 +0.185664474197 +0.174563178783 +0.174648363874 +0.166720082135 +0.12097483942 +0.122984046496 +0.205734861691 diff --git a/test/data/meshio_meshes/vtk/01_image.vtk b/test/data/meshio_meshes/vtk/01_image.vtk new file mode 100644 index 000000000..b0990f402 --- /dev/null +++ b/test/data/meshio_meshes/vtk/01_image.vtk @@ -0,0 +1,79 @@ +# vtk DataFile Version 4.2 +vtk output +ASCII +DATASET STRUCTURED_POINTS +DIMENSIONS 7 7 3 +ASPECT_RATIO 1 1 1 +ORIGIN 0 0 0 +CELL_DATA 72 +FIELD FieldData 2 +pressure1 1 72 double +0.8677104542 0.51636185155 0.60688284218 0.46963710959 0.84631932221 0.19738233512 0.10449260542 0.13325513899 0.1261254424 +0.92811591687 0.85276551296 0.87436138227 0.57021773734 0.64484045379 0.83211192182 0.91742765699 0.78576559398 0.61298629515 +0.6735725119 0.95343444683 0.94452291226 0.75495718491 0.92715036051 0.41195114237 0.16643423413 0.77370647925 0.87340165423 +0.25739115973 0.25705504591 0.31147847687 0.7299432699 0.70197478982 0.1637118679 0.3955116108 0.5419513408 0.043992262805 +0.63705083954 0.15316737283 0.81736094123 0.62336803143 0.50731765079 0.11081170015 0.56418617227 0.91414438791 0.052267630295 +0.11663225967 0.98749503289 0.61230653547 0.95160106712 0.36307324908 0.93814204076 0.47078090661 0.3778094117 0.98835590606 +0.041782676901 0.41421973924 0.51073980308 0.84948398985 0.70052446738 0.064860319334 0.36908298368 0.55362015347 0.13069604232 +0.11563651603 0.034805442219 0.22238653602 0.24687431521 0.94102825318 0.89631139818 0.49057691045 0.83937323407 0.40715670809 + +METADATA +INFORMATION 0 + +pressure2 1 72 double +0.8677104542 0.51636185155 0.60688284218 0.46963710959 0.84631932221 0.19738233512 0.10449260542 0.13325513899 0.1261254424 +0.92811591687 0.85276551296 0.87436138227 0.57021773734 0.64484045379 0.83211192182 0.91742765699 0.78576559398 0.61298629515 +0.6735725119 0.95343444683 0.94452291226 0.75495718491 0.92715036051 0.41195114237 0.16643423413 0.77370647925 0.87340165423 +0.25739115973 0.25705504591 0.31147847687 0.7299432699 0.70197478982 0.1637118679 0.3955116108 0.5419513408 0.043992262805 +0.63705083954 0.15316737283 0.81736094123 0.62336803143 0.50731765079 0.11081170015 0.56418617227 0.91414438791 0.052267630295 +0.11663225967 0.98749503289 0.61230653547 0.95160106712 0.36307324908 0.93814204076 0.47078090661 0.3778094117 0.98835590606 +0.041782676901 0.41421973924 0.51073980308 0.84948398985 0.70052446738 0.064860319334 0.36908298368 0.55362015347 0.13069604232 +0.11563651603 0.034805442219 0.22238653602 0.24687431521 0.94102825318 0.89631139818 0.49057691045 0.83937323407 0.40715670809 + +METADATA +INFORMATION 0 + +POINT_DATA 147 +FIELD FieldData 2 +temp1 1 147 double +0.19932609943 0.080484975432 0.62271676952 0.17526854106 0.85265478881 0.20618656795 0.84349132399 0.038892471051 0.90607584362 +0.53145615434 0.31918008657 0.20474882787 0.026379692258 0.48104509843 0.50001234209 0.045244591207 0.83508077518 0.47561534276 +0.40962142531 0.0011841612877 0.14709018583 0.75095831727 0.48417916779 0.18271087896 0.54656071738 0.75066701975 0.92200696569 +0.99769339208 0.26117515176 0.085311465967 0.1646683261 0.81218612228 0.63122274863 0.56536002542 0.61634033728 0.51835579684 +0.4278608922 0.630029077 0.61492773995 0.54908405353 0.7708722292 0.25359302007 0.70233431709 0.61075920411 0.9125950554 +0.55867195058 0.028337602721 0.75342955411 0.35627445538 0.65575668043 0.10189677317 0.81150143817 0.61299601434 0.21606925506 +0.60478711464 0.83937102764 0.85003752009 0.044045564549 0.46397193546 0.76703318221 0.060487798272 0.089849800165 0.6698869959 +0.49180368025 0.054588170455 0.60657339138 0.99430585956 0.95520254464 0.41486965842 0.31728314337 0.7863231829 0.021234945228 +0.51786325975 0.072245341545 0.7311841733 0.0059933017956 0.14530623862 0.70174168053 0.047421832096 0.65318254961 0.23720001553 +0.58673678257 0.22685717667 0.12009824017 0.038425067107 0.035546247175 0.10844204481 0.46533179621 0.19527170909 0.014046989322 +0.98575901443 0.12321432463 0.04330563787 0.31288353454 0.77184910491 0.50055628109 0.91733177324 0.94877989401 0.98760860859 +0.62370960235 0.1802712889 0.60612390385 0.27937860958 0.78119102642 0.2098678809 0.23795094593 0.87305172717 0.022913016055 +0.85021930614 0.34946437346 0.20389954341 0.64959363365 0.10151151857 0.95849443411 0.18591031788 0.26712287986 0.21679083654 +0.30027647079 0.92909265289 0.058716366373 0.41706634312 0.62893832977 0.438984896 0.27390875927 0.058657266281 0.05994697265 +0.39632622578 0.24057772072 0.26926772847 0.90228743973 0.7462902986 0.55399859345 0.28386352495 0.02032014315 0.84847748999 +0.089787722754 0.094645324833 0.70209677424 0.9284726152 0.20015337624 0.61003086407 0.15306703884 0.10979782787 0.12908663141 +0.050329141049 0.48476689788 0.72757728194 +METADATA +INFORMATION 0 + +temp2 1 147 double +0.19932609943 0.080484975432 0.62271676952 0.17526854106 0.85265478881 0.20618656795 0.84349132399 0.038892471051 0.90607584362 +0.53145615434 0.31918008657 0.20474882787 0.026379692258 0.48104509843 0.50001234209 0.045244591207 0.83508077518 0.47561534276 +0.40962142531 0.0011841612877 0.14709018583 0.75095831727 0.48417916779 0.18271087896 0.54656071738 0.75066701975 0.92200696569 +0.99769339208 0.26117515176 0.085311465967 0.1646683261 0.81218612228 0.63122274863 0.56536002542 0.61634033728 0.51835579684 +0.4278608922 0.630029077 0.61492773995 0.54908405353 0.7708722292 0.25359302007 0.70233431709 0.61075920411 0.9125950554 +0.55867195058 0.028337602721 0.75342955411 0.35627445538 0.65575668043 0.10189677317 0.81150143817 0.61299601434 0.21606925506 +0.60478711464 0.83937102764 0.85003752009 0.044045564549 0.46397193546 0.76703318221 0.060487798272 0.089849800165 0.6698869959 +0.49180368025 0.054588170455 0.60657339138 0.99430585956 0.95520254464 0.41486965842 0.31728314337 0.7863231829 0.021234945228 +0.51786325975 0.072245341545 0.7311841733 0.0059933017956 0.14530623862 0.70174168053 0.047421832096 0.65318254961 0.23720001553 +0.58673678257 0.22685717667 0.12009824017 0.038425067107 0.035546247175 0.10844204481 0.46533179621 0.19527170909 0.014046989322 +0.98575901443 0.12321432463 0.04330563787 0.31288353454 0.77184910491 0.50055628109 0.91733177324 0.94877989401 0.98760860859 +0.62370960235 0.1802712889 0.60612390385 0.27937860958 0.78119102642 0.2098678809 0.23795094593 0.87305172717 0.022913016055 +0.85021930614 0.34946437346 0.20389954341 0.64959363365 0.10151151857 0.95849443411 0.18591031788 0.26712287986 0.21679083654 +0.30027647079 0.92909265289 0.058716366373 0.41706634312 0.62893832977 0.438984896 0.27390875927 0.058657266281 0.05994697265 +0.39632622578 0.24057772072 0.26926772847 0.90228743973 0.7462902986 0.55399859345 0.28386352495 0.02032014315 0.84847748999 +0.089787722754 0.094645324833 0.70209677424 0.9284726152 0.20015337624 0.61003086407 0.15306703884 0.10979782787 0.12908663141 +0.050329141049 0.48476689788 0.72757728194 +METADATA +INFORMATION 0 + diff --git a/test/data/meshio_meshes/vtk/02_structured.vtk b/test/data/meshio_meshes/vtk/02_structured.vtk new file mode 100644 index 000000000..5e43db3c9 --- /dev/null +++ b/test/data/meshio_meshes/vtk/02_structured.vtk @@ -0,0 +1,133 @@ +# vtk DataFile Version 4.2 +vtk output +ASCII +DATASET STRUCTURED_GRID +DIMENSIONS 7 7 3 +POINTS 147 double +0.016097836025 -0.0066555606458 -0.009106647449 0.1733969032 0.0090399163471 0.031757449436 0.33911962646 0.0062874519805 0.045462455612 +0.51075862185 0.0051257278606 -0.029177116516 0.66533800385 0.013108560268 0.021271506318 0.83769838526 -0.010959765226 -0.036359143999 +0.98504259859 0.0047546018538 0.037050545331 0.013907309336 0.18246627742 -0.046818381932 0.18237891839 0.17280584132 0.0075819263041 +0.34160966101 0.17207531769 0.00033680576228 0.50236559154 0.15418839664 -0.028289303738 0.65397837769 0.17017370868 0.04317322173 +0.84949887936 0.15216477824 -0.0029299702212 0.99356665017 0.1770215724 0.0017804475498 -0.00615227565 0.34418527946 0.0081030082193 +0.18010898176 0.31722833449 0.028447390308 0.32276500029 0.34201857872 -0.016800280505 0.50807503845 0.34942519486 -0.034778344998 +0.6775474319 0.31984603087 0.0089720258128 0.84729482517 0.3380957034 -0.0067066948018 0.99778934884 0.33289718497 -0.037154068295 +-0.0046982195539 0.51099100874 0.026708283818 0.17025938284 0.51610470142 -0.014625934125 0.34967543289 0.51050560084 -0.0056288607216 +0.51630177359 0.49084931472 0.034521905043 0.65975943881 0.48570355408 0.03361898188 0.84535056542 0.50894076316 0.0042127103501 +1.0009500488 0.51289667312 0.044010949234 -0.00062435261137 0.66720370788 -0.039056045075 0.18310410081 0.65601094071 0.016454461598 +0.33508947575 0.65192817519 -0.021969451183 0.49039746817 0.65967511716 -0.025093635557 0.66562052027 0.66587432699 0.0052201201525 +0.81850101297 0.66795922618 0.0022057548268 1.0086206694 0.66311947564 0.011916832912 0.014075847621 0.83326223107 0.017165200178 +0.16793797389 0.84864274331 0.014327767801 0.32842270252 0.83439817252 0.017658447612 0.50390288265 0.82542010683 -0.028739776196 +0.65773881722 0.84416812106 0.0031585656079 0.84077196999 0.84873968954 -0.013238234486 0.99315793374 0.84546739623 0.030260034366 +0.0011339276995 1.0009399919 0.016604400368 0.161138787 1.0146364726 -0.018236235337 0.3257754929 1.011335575 0.043021284072 +0.5135458276 0.99392427679 -0.038683127984 0.66209330283 1.0066475641 -0.045988329763 0.84097006872 0.98758829167 -0.00020137200397 +1.0147581381 0.99225296045 -0.012100243863 -0.0053978491539 0.0065439697198 0.51836477299 0.16075286646 -0.0097629422425 0.47058952605 +0.33887020292 0.011350790233 0.53746850822 0.48574130015 -0.0020366546289 0.50191286689 0.65572014649 0.013807237767 0.48375058233 +0.8286386126 0.014895959291 0.52733015129 1.0132117409 0.0027836366985 0.53247640091 -0.0054687440332 0.17303097363 0.52858610778 +0.15742413014 0.15506885862 0.46464570524 0.32601624685 0.17061990442 0.4896244983 0.48980400894 0.17908195358 0.51230355275 +0.65594053528 0.16880734052 0.48971676102 0.84853513403 0.17476649675 0.48797754997 0.99042706129 0.15662090744 0.49256653888 +0.0019434558926 0.34302192065 0.49936580467 0.17613165273 0.34471838518 0.54189882581 0.33600899704 0.34443755922 0.50142421043 +0.50895519771 0.32548817805 0.5014986656 0.65743998465 0.34081949026 0.54565134373 0.83567477275 0.32610244517 0.49228933485 +1.0129068439 0.31794200907 0.52093193269 0.016073625036 0.48486895082 0.47221600206 0.17768514791 0.48743891922 0.5368466837 +0.32492097448 0.48844429481 0.45489056792 0.50003238085 0.50768809536 0.51980795881 0.65600972293 0.50704920527 0.46723968272 +0.83211554696 0.495375411 0.53579643575 0.98712402729 0.50507430278 0.47326845807 -0.00096293597575 0.66989639799 0.52757706696 +0.16705943198 0.67924747016 0.47690763262 0.33740643281 0.66711601652 0.52621217856 0.49032456835 0.68114181972 0.49023234967 +0.67426929968 0.66604729849 0.45317248132 0.82816868139 0.66292566539 0.54257962857 1.0085781987 0.67245996766 0.53233887191 +-0.014926130627 0.82676956937 0.51649185431 0.15429890054 0.83935985212 0.45543127707 0.33099872077 0.83414017462 0.53402917956 +0.48587430366 0.81933839437 0.51956711517 0.67963890486 0.84251881063 0.54729295716 0.82821127204 0.84785102758 0.52317708288 +1.0054908084 0.82130274444 0.53657655345 -0.0066630333791 1.0157021684 0.54740452099 0.17342776222 0.99154207105 0.50179414233 +0.3377092001 0.99656626995 0.47004175737 0.51284211707 1.0142119526 0.52212713485 0.65844114141 1.0048894149 0.50890097353 +0.84533619888 1.0144229156 0.46577786174 0.9987748856 0.98568696397 0.54777213491 0.012888379129 0.0036885122952 0.95686958603 +0.15357341885 -0.00065272064772 1.0262438715 0.33084580824 -0.012703473288 0.97483592167 0.51497209512 -0.0080521912046 1.0474399204 +0.65806115248 -0.0023892088967 0.9909297062 0.83433168465 0.0077882065681 1.0276363672 0.98751789355 -0.015274787969 0.96520219509 +0.012499901777 0.16593426678 0.97297871598 0.17903934469 0.15965855978 1.0150660153 0.31733710435 0.15073370233 0.96573021298 +0.48605751426 0.15225681334 0.95915124858 0.66222984704 0.17792898839 0.97189336808 0.84328956432 0.16275335658 1.0073620281 +1.0115100333 0.15153424052 0.98375124428 0.014793864125 0.3262260491 1.0309538307 0.18084271085 0.34945243625 1.0325615197 +0.34304794555 0.31807601105 0.97398668319 0.51101813833 0.32185478716 1.0066933164 0.65616899442 0.33103228005 1.0055869756 +0.81917854206 0.3358492536 0.99294344768 0.98891622685 0.31700080099 0.97101092853 -0.0089239267162 0.51637444872 1.0427526453 +0.16813267386 0.51400173705 0.95825287153 0.33116685779 0.49959174349 1.0092050071 0.49314264493 0.49476947159 0.9869242523 +0.66407957958 0.50646028997 0.9679152694 0.84067943458 0.49837411967 0.97954023236 0.98752341704 0.50942169697 0.97808465982 +-0.0095755796684 0.68303966073 1.0495865001 0.16515442322 0.66479655691 0.95383350655 0.34526248577 0.67569920919 1.0343110894 +0.50952068108 0.67065665572 1.0142876209 0.67854006544 0.67600911734 1.0428590006 0.82446214933 0.65979837887 1.0219414642 +0.9844952586 0.67762181541 1.0187000185 -0.015338152602 0.82775377543 1.0151882645 0.17222253348 0.83560593105 1.0343837216 +0.34616504528 0.84903909119 0.95739113825 0.49197639208 0.82213793931 1.0275791115 0.66911848575 0.81981520446 1.0067994817 +0.84912558532 0.83750537796 1.0371248509 0.99463189989 0.82488770538 0.96105625502 0.0038184510469 1.0085641489 1.0432839637 +0.15493784139 0.99441967197 1.0456896885 0.32000013409 0.98764375732 0.96541431975 0.51076144504 0.99287470313 0.95482439237 +0.66112983526 0.98708057706 0.96853110168 0.84110227276 0.99637224249 0.99355281029 0.9957977991 0.99972130129 0.95543345973 + +METADATA +INFORMATION 1 +NAME L2_NORM_RANGE LOCATION vtkDataArray +DATA 2 0.0196562 1.70409 + +CELL_DATA 72 +FIELD FieldData 2 +pressure1 1 72 double +0.13795852842 0.98039815271 0.10503754932 0.56626638522 0.96500924554 0.56046976315 0.079983972734 0.58105215018 0.58169340716 +0.73007629678 0.38185702564 0.84247618396 0.66446283803 0.54833912486 0.049465659777 0.30332955473 0.76474601713 0.217329204 +0.57776437415 0.62245938112 0.12074733274 0.13687847854 0.44494998211 0.95257764869 0.95490828371 0.051995397266 0.46979080479 +0.44659958769 0.58862913817 0.20730383598 0.3810851279 0.39268992004 0.77525984955 0.38349863597 0.031496502929 0.63753663639 +0.16304690985 0.95619314363 0.37786053731 0.094818892515 0.31637379495 0.3892127265 0.96224381919 0.36789802527 0.15250598575 +0.56489044555 0.75706877783 0.91414670708 0.80978710761 0.45469246223 0.26310806104 0.23791097635 0.49177825303 0.98001386831 +0.85561706219 0.25061800099 0.65687075091 0.45132291264 0.14397228247 0.65085350344 0.30767470134 0.89154954303 0.80948890197 +0.93611774845 0.078629417722 0.2826173675 0.86934277701 0.29405340228 0.63487937666 0.40551511911 0.11533128603 0.35473096858 + +METADATA +INFORMATION 0 + +pressure2 1 72 double +0.13795852842 0.98039815271 0.10503754932 0.56626638522 0.96500924554 0.56046976315 0.079983972734 0.58105215018 0.58169340716 +0.73007629678 0.38185702564 0.84247618396 0.66446283803 0.54833912486 0.049465659777 0.30332955473 0.76474601713 0.217329204 +0.57776437415 0.62245938112 0.12074733274 0.13687847854 0.44494998211 0.95257764869 0.95490828371 0.051995397266 0.46979080479 +0.44659958769 0.58862913817 0.20730383598 0.3810851279 0.39268992004 0.77525984955 0.38349863597 0.031496502929 0.63753663639 +0.16304690985 0.95619314363 0.37786053731 0.094818892515 0.31637379495 0.3892127265 0.96224381919 0.36789802527 0.15250598575 +0.56489044555 0.75706877783 0.91414670708 0.80978710761 0.45469246223 0.26310806104 0.23791097635 0.49177825303 0.98001386831 +0.85561706219 0.25061800099 0.65687075091 0.45132291264 0.14397228247 0.65085350344 0.30767470134 0.89154954303 0.80948890197 +0.93611774845 0.078629417722 0.2826173675 0.86934277701 0.29405340228 0.63487937666 0.40551511911 0.11533128603 0.35473096858 + +METADATA +INFORMATION 0 + +POINT_DATA 147 +FIELD FieldData 2 +temp1 1 147 double +0.75023536049 0.154708685 0.6273602213 0.30175482123 0.92254998434 0.089076740076 0.025287843123 0.37685724918 0.076809625199 +0.99486465488 0.017172268283 0.12954509502 0.95339440924 0.13110635282 0.49969090164 0.63720996334 0.08856119452 0.69090885019 +0.21226712372 0.034083195757 0.37151013113 0.58830683975 0.50767692592 0.86544378728 0.48254945355 0.9468299584 0.51427839019 +0.4070569932 0.024021552562 0.33321767926 0.64695361204 0.085823132238 0.97189032231 0.41045785695 0.073433693377 0.31239171126 +0.319060392 0.74354845141 0.98278182919 0.99821039821 0.87446758805 0.94711144761 0.29705499059 0.49418872785 0.067030942278 +0.8860269077 0.13286120491 0.46133436519 0.46578066258 0.82148145133 0.020924397894 0.82685114851 0.10065334804 0.36475133035 +0.52068525602 0.17279068289 0.045065193484 0.098446399493 0.55558292092 0.78585837389 0.23328187527 0.62096676061 0.16742452658 +0.96233672454 0.88190385933 0.30434086402 0.77567526464 0.086635714033 0.49595480903 0.31517172346 0.76226683408 0.15361320544 +0.22325246351 0.52400041894 0.76030701583 0.68857500684 0.75058253364 0.65029287163 0.9647594872 0.0010202630388 0.53480133747 +0.73645798211 0.66522544405 0.98286413592 0.39401448762 0.083885504284 0.66063864323 0.73336542804 0.037902948881 0.35287082071 +0.48594617628 0.11367411678 0.12959748521 0.49154031154 0.67497204442 0.36306596385 0.90980600643 0.19441857986 0.20868246346 +0.83309798327 0.49451340436 0.46994311507 0.20945743958 0.90180499386 0.5882724815 0.59257716926 0.36687922328 0.031175163596 +0.59139143764 0.22074049374 0.25009561491 0.42839567802 0.73397672723 0.27750910732 0.10343172891 0.29795508391 0.5824967726 +0.49255555201 0.41040440901 0.51740971604 0.27642443648 0.17821611139 0.51489622537 0.11142441873 0.96543388855 0.82264080865 +0.15457351543 0.351476427 0.1313250572 0.3373358227 0.97473064492 0.72094042884 0.84408819099 0.82331232023 0.52003273245 +0.97129609052 0.55093322641 0.60515474675 0.37546482768 0.17590731957 0.30494883209 0.068149684854 0.11239873611 0.88408229271 +0.2256313757 0.91498208381 0.71068656904 +METADATA +INFORMATION 0 + +temp2 1 147 double +0.75023536049 0.154708685 0.6273602213 0.30175482123 0.92254998434 0.089076740076 0.025287843123 0.37685724918 0.076809625199 +0.99486465488 0.017172268283 0.12954509502 0.95339440924 0.13110635282 0.49969090164 0.63720996334 0.08856119452 0.69090885019 +0.21226712372 0.034083195757 0.37151013113 0.58830683975 0.50767692592 0.86544378728 0.48254945355 0.9468299584 0.51427839019 +0.4070569932 0.024021552562 0.33321767926 0.64695361204 0.085823132238 0.97189032231 0.41045785695 0.073433693377 0.31239171126 +0.319060392 0.74354845141 0.98278182919 0.99821039821 0.87446758805 0.94711144761 0.29705499059 0.49418872785 0.067030942278 +0.8860269077 0.13286120491 0.46133436519 0.46578066258 0.82148145133 0.020924397894 0.82685114851 0.10065334804 0.36475133035 +0.52068525602 0.17279068289 0.045065193484 0.098446399493 0.55558292092 0.78585837389 0.23328187527 0.62096676061 0.16742452658 +0.96233672454 0.88190385933 0.30434086402 0.77567526464 0.086635714033 0.49595480903 0.31517172346 0.76226683408 0.15361320544 +0.22325246351 0.52400041894 0.76030701583 0.68857500684 0.75058253364 0.65029287163 0.9647594872 0.0010202630388 0.53480133747 +0.73645798211 0.66522544405 0.98286413592 0.39401448762 0.083885504284 0.66063864323 0.73336542804 0.037902948881 0.35287082071 +0.48594617628 0.11367411678 0.12959748521 0.49154031154 0.67497204442 0.36306596385 0.90980600643 0.19441857986 0.20868246346 +0.83309798327 0.49451340436 0.46994311507 0.20945743958 0.90180499386 0.5882724815 0.59257716926 0.36687922328 0.031175163596 +0.59139143764 0.22074049374 0.25009561491 0.42839567802 0.73397672723 0.27750910732 0.10343172891 0.29795508391 0.5824967726 +0.49255555201 0.41040440901 0.51740971604 0.27642443648 0.17821611139 0.51489622537 0.11142441873 0.96543388855 0.82264080865 +0.15457351543 0.351476427 0.1313250572 0.3373358227 0.97473064492 0.72094042884 0.84408819099 0.82331232023 0.52003273245 +0.97129609052 0.55093322641 0.60515474675 0.37546482768 0.17590731957 0.30494883209 0.068149684854 0.11239873611 0.88408229271 +0.2256313757 0.91498208381 0.71068656904 +METADATA +INFORMATION 0 + diff --git a/test/data/meshio_meshes/vtk/03_rectilinear.vtk b/test/data/meshio_meshes/vtk/03_rectilinear.vtk new file mode 100644 index 000000000..26139ce9b --- /dev/null +++ b/test/data/meshio_meshes/vtk/03_rectilinear.vtk @@ -0,0 +1,92 @@ +# vtk DataFile Version 4.2 +vtk output +ASCII +DATASET RECTILINEAR_GRID +DIMENSIONS 7 7 3 +X_COORDINATES 7 double +0 0.16666666667 0.33333333333 0.5 0.66666666667 0.83333333333 1 +METADATA +INFORMATION 0 + +Y_COORDINATES 7 double +0 0.16666666667 0.33333333333 0.5 0.66666666667 0.83333333333 1 +METADATA +INFORMATION 0 + +Z_COORDINATES 3 double +0 0.5 1 +METADATA +INFORMATION 0 + +CELL_DATA 72 +FIELD FieldData 2 +pressure1 1 72 double +0.68481602841 0.7408984814 0.17688921297 0.63393817883 0.044208263843 0.82976770229 0.89378590019 0.075092558663 0.43180151434 +0.035131859465 0.134643422 0.47990950523 0.80192557645 0.7468449724 0.20534806841 0.92834914766 0.88198675703 0.45615571918 +0.042484004691 0.87550368235 0.68700029846 0.22131595768 0.75649463584 0.44563818901 0.069957941663 0.46754458779 0.86074528691 +0.95202479824 0.2375718218 0.35798944994 0.19527332554 0.74519124313 0.95125108946 0.93581255986 0.94507096115 0.01704049028 +0.89259582525 0.8848127866 0.88185041179 0.63730034541 0.040485258291 0.86773991306 0.40879356878 0.63753083929 0.72482238033 +0.34846270951 0.32066055117 0.66800047263 0.35008675445 0.57675212419 0.44109084634 0.62252503984 0.74068575587 0.84557747344 +0.89870057861 0.63543896047 0.87469776486 0.97029262447 0.84717730236 0.41587290249 0.14356359296 0.99228835994 0.71032127168 +0.5956867493 0.92442066026 0.7386054156 0.60352799914 0.095139821159 0.3034024004 0.11421540773 0.67402382509 0.48084460187 + +METADATA +INFORMATION 0 + +pressure2 1 72 double +0.68481602841 0.7408984814 0.17688921297 0.63393817883 0.044208263843 0.82976770229 0.89378590019 0.075092558663 0.43180151434 +0.035131859465 0.134643422 0.47990950523 0.80192557645 0.7468449724 0.20534806841 0.92834914766 0.88198675703 0.45615571918 +0.042484004691 0.87550368235 0.68700029846 0.22131595768 0.75649463584 0.44563818901 0.069957941663 0.46754458779 0.86074528691 +0.95202479824 0.2375718218 0.35798944994 0.19527332554 0.74519124313 0.95125108946 0.93581255986 0.94507096115 0.01704049028 +0.89259582525 0.8848127866 0.88185041179 0.63730034541 0.040485258291 0.86773991306 0.40879356878 0.63753083929 0.72482238033 +0.34846270951 0.32066055117 0.66800047263 0.35008675445 0.57675212419 0.44109084634 0.62252503984 0.74068575587 0.84557747344 +0.89870057861 0.63543896047 0.87469776486 0.97029262447 0.84717730236 0.41587290249 0.14356359296 0.99228835994 0.71032127168 +0.5956867493 0.92442066026 0.7386054156 0.60352799914 0.095139821159 0.3034024004 0.11421540773 0.67402382509 0.48084460187 + +METADATA +INFORMATION 0 + +POINT_DATA 147 +FIELD FieldData 2 +temp1 1 147 double +0.15184421213 0.44742653081 0.095466301934 0.54763321187 0.19324596196 0.81336074461 0.89618473408 0.44987667885 0.80114149531 +0.16315685215 0.99812561567 0.9037730004 0.75268298488 0.53006709174 0.18576458996 0.51199463388 0.41105329773 0.24239596208 +0.85846691194 0.43413524711 0.47267822282 0.60641499485 0.51355839313 0.43287135185 0.47640559997 0.97288961494 0.61429042394 +0.70581048665 0.065936841167 0.63314967535 0.60012026764 0.18594694771 0.16823928819 0.080521273321 0.68190240412 0.75080745507 +0.5353777274 0.96784897933 0.12995469679 0.71846181243 0.66743195557 0.72575238303 0.088554580153 0.20320467526 0.87482370275 +0.65065914812 0.12594994752 0.02725564106 0.15049339894 0.68657697094 0.88013131699 0.94249582775 0.18122748926 0.46658147111 +0.44637444367 0.69280768437 0.92473788911 0.82529254604 0.15755822605 0.0051687595707 0.61460578104 0.7234585607 0.56905630427 +0.75900412905 0.47414886317 0.54394429824 0.34211996751 0.98196177072 0.92221924883 0.77527841623 0.63382558964 0.14924749942 +0.32768385259 0.2895643701 0.10320564521 0.15081282933 0.49996009749 0.32673651659 0.75383874553 0.8571015154 0.56124108275 +0.34393414122 0.9432200479 0.061201799696 0.9985863168 0.60908020181 0.73346253495 0.99490699616 0.15026452495 0.51409752559 +0.75630422794 0.92491239667 0.1099003329 0.57226406431 0.23060786115 0.29605317945 0.034194329357 0.59689719066 0.069093550567 +0.12779281759 0.39340161394 0.2860681582 0.25854783332 0.18894330876 0.85827171176 0.40775520287 0.76044080381 0.74732740091 +0.32219448353 0.39770096191 0.58102050637 0.05189883446 0.99509596567 0.9026782597 0.068170246003 0.16427309592 0.74588518831 +0.4044565828 0.58493877163 0.47228021091 0.65929383313 0.85792127496 0.33328956984 0.3600731556 0.27493365102 0.95807327535 +0.90241394706 0.93271836171 0.44865942466 0.46441902328 0.20433162022 0.56895928481 0.032408533118 0.53155053595 0.3759268701 +0.12034935601 0.12251117325 0.2785867957 0.73229626025 0.0004345801637 0.67193163546 0.81041906487 0.92307518563 0.047169703428 +0.57421165038 0.36437130081 0.20314746133 +METADATA +INFORMATION 0 + +temp2 1 147 double +0.15184421213 0.44742653081 0.095466301934 0.54763321187 0.19324596196 0.81336074461 0.89618473408 0.44987667885 0.80114149531 +0.16315685215 0.99812561567 0.9037730004 0.75268298488 0.53006709174 0.18576458996 0.51199463388 0.41105329773 0.24239596208 +0.85846691194 0.43413524711 0.47267822282 0.60641499485 0.51355839313 0.43287135185 0.47640559997 0.97288961494 0.61429042394 +0.70581048665 0.065936841167 0.63314967535 0.60012026764 0.18594694771 0.16823928819 0.080521273321 0.68190240412 0.75080745507 +0.5353777274 0.96784897933 0.12995469679 0.71846181243 0.66743195557 0.72575238303 0.088554580153 0.20320467526 0.87482370275 +0.65065914812 0.12594994752 0.02725564106 0.15049339894 0.68657697094 0.88013131699 0.94249582775 0.18122748926 0.46658147111 +0.44637444367 0.69280768437 0.92473788911 0.82529254604 0.15755822605 0.0051687595707 0.61460578104 0.7234585607 0.56905630427 +0.75900412905 0.47414886317 0.54394429824 0.34211996751 0.98196177072 0.92221924883 0.77527841623 0.63382558964 0.14924749942 +0.32768385259 0.2895643701 0.10320564521 0.15081282933 0.49996009749 0.32673651659 0.75383874553 0.8571015154 0.56124108275 +0.34393414122 0.9432200479 0.061201799696 0.9985863168 0.60908020181 0.73346253495 0.99490699616 0.15026452495 0.51409752559 +0.75630422794 0.92491239667 0.1099003329 0.57226406431 0.23060786115 0.29605317945 0.034194329357 0.59689719066 0.069093550567 +0.12779281759 0.39340161394 0.2860681582 0.25854783332 0.18894330876 0.85827171176 0.40775520287 0.76044080381 0.74732740091 +0.32219448353 0.39770096191 0.58102050637 0.05189883446 0.99509596567 0.9026782597 0.068170246003 0.16427309592 0.74588518831 +0.4044565828 0.58493877163 0.47228021091 0.65929383313 0.85792127496 0.33328956984 0.3600731556 0.27493365102 0.95807327535 +0.90241394706 0.93271836171 0.44865942466 0.46441902328 0.20433162022 0.56895928481 0.032408533118 0.53155053595 0.3759268701 +0.12034935601 0.12251117325 0.2785867957 0.73229626025 0.0004345801637 0.67193163546 0.81041906487 0.92307518563 0.047169703428 +0.57421165038 0.36437130081 0.20314746133 +METADATA +INFORMATION 0 + diff --git a/test/data/meshio_meshes/vtk/04_rectilinear.vtk b/test/data/meshio_meshes/vtk/04_rectilinear.vtk new file mode 100644 index 000000000..982ee8843 --- /dev/null +++ b/test/data/meshio_meshes/vtk/04_rectilinear.vtk @@ -0,0 +1,50 @@ +# vtk DataFile Version 4.2 +vtk output +ASCII +DATASET RECTILINEAR_GRID +DIMENSIONS 10 4 1 +X_COORDINATES 10 double +0 0.11111111111 0.22222222222 0.33333333333 0.44444444444 0.55555555556 0.66666666667 0.77777777778 0.88888888889 +1 +Y_COORDINATES 4 double +0 0.66666666667 1.3333333333 2 +Z_COORDINATES 1 double +0 +CELL_DATA 27 +FIELD FieldData 2 +pressure1 1 27 double +0.5967368454 0.95115399245 0.08747213813 0.28749644837 0.40514625881 0.16690134756 0.62865801418 0.030783662473 0.73469688514 +0.15982357526 0.94215501991 0.853981868 0.23819470223 0.95185671549 0.37963864995 0.060379164151 0.55299101432 0.40994903565 +0.44752862897 0.94077520508 0.098657258377 0.61637721618 0.61373522457 0.76903310377 0.73321879947 0.54788850996 0.4664110617 + +METADATA +INFORMATION 0 + +pressure2 1 27 double +0.5967368454 0.95115399245 0.08747213813 0.28749644837 0.40514625881 0.16690134756 0.62865801418 0.030783662473 0.73469688514 +0.15982357526 0.94215501991 0.853981868 0.23819470223 0.95185671549 0.37963864995 0.060379164151 0.55299101432 0.40994903565 +0.44752862897 0.94077520508 0.098657258377 0.61637721618 0.61373522457 0.76903310377 0.73321879947 0.54788850996 0.4664110617 + +METADATA +INFORMATION 0 + +POINT_DATA 40 +FIELD FieldData 2 +temp1 1 40 double +0.70315056489 0.77283040507 0.23882065545 0.47826852144 0.2100912521 0.53921783206 0.20433042163 0.73420831075 0.027654148794 +0.68639133094 0.4330220864 0.28495508317 0.33821187823 0.82527437165 0.54255032296 0.45393458559 0.83989136196 0.85876287932 +0.4214370932 0.19047900181 0.51820664038 0.77471790134 0.60592653466 0.81065380638 0.62617898509 0.38810685582 0.1126304294 +0.20460114912 0.54238177923 0.81393995793 0.96197048162 0.4422555548 0.2418563543 0.1052903392 0.48388728482 0.4595709923 +0.20135841829 0.89066770205 0.34317565499 0.65652281351 +METADATA +INFORMATION 0 + +temp2 1 40 double +0.70315056489 0.77283040507 0.23882065545 0.47826852144 0.2100912521 0.53921783206 0.20433042163 0.73420831075 0.027654148794 +0.68639133094 0.4330220864 0.28495508317 0.33821187823 0.82527437165 0.54255032296 0.45393458559 0.83989136196 0.85876287932 +0.4214370932 0.19047900181 0.51820664038 0.77471790134 0.60592653466 0.81065380638 0.62617898509 0.38810685582 0.1126304294 +0.20460114912 0.54238177923 0.81393995793 0.96197048162 0.4422555548 0.2418563543 0.1052903392 0.48388728482 0.4595709923 +0.20135841829 0.89066770205 0.34317565499 0.65652281351 +METADATA +INFORMATION 0 + diff --git a/test/data/meshio_meshes/vtk/05_rectilinear.vtk b/test/data/meshio_meshes/vtk/05_rectilinear.vtk new file mode 100644 index 000000000..c675ec688 --- /dev/null +++ b/test/data/meshio_meshes/vtk/05_rectilinear.vtk @@ -0,0 +1,50 @@ +# vtk DataFile Version 4.2 +vtk output +ASCII +DATASET RECTILINEAR_GRID +DIMENSIONS 10 1 4 +X_COORDINATES 10 double +0 0.11111111111 0.22222222222 0.33333333333 0.44444444444 0.55555555556 0.66666666667 0.77777777778 0.88888888889 +1 +Y_COORDINATES 1 double +0 +Z_COORDINATES 4 double +0 0.66666666667 1.3333333333 2 +CELL_DATA 27 +FIELD FieldData 2 +pressure1 1 27 double +0.23241625202 0.11445560209 0.76365154653 0.47087525569 0.72431649469 0.92392403459 0.77855368618 0.84124534651 0.23006099738 +0.072055527286 0.54402393208 0.76577680989 0.95543852626 0.5500200629 0.87894640567 0.1649442032 0.015127389286 0.91713330418 +0.88199809591 0.67635433792 0.022145891361 0.27235031166 0.2517931659 0.23538443475 0.83078337459 0.12698638054 0.32136110723 + +METADATA +INFORMATION 0 + +pressure2 1 27 double +0.23241625202 0.11445560209 0.76365154653 0.47087525569 0.72431649469 0.92392403459 0.77855368618 0.84124534651 0.23006099738 +0.072055527286 0.54402393208 0.76577680989 0.95543852626 0.5500200629 0.87894640567 0.1649442032 0.015127389286 0.91713330418 +0.88199809591 0.67635433792 0.022145891361 0.27235031166 0.2517931659 0.23538443475 0.83078337459 0.12698638054 0.32136110723 + +METADATA +INFORMATION 0 + +POINT_DATA 40 +FIELD FieldData 2 +temp1 1 40 double +0.63326220102 0.65880449811 0.092134010247 0.26224177577 0.18028495303 0.45655723881 0.75424083555 0.25092637201 0.42578021015 +0.34947513336 0.80900439304 0.10986986982 0.79435528494 0.040592168323 0.34699882279 0.64743497427 0.77190625479 0.87132637738 +0.85488395442 0.68169002004 0.479460097 0.44164793037 0.42271564266 0.60839199607 0.16007533174 0.11289515092 0.72833184529 +0.067663762988 0.86608996337 0.30484964892 0.96540154884 0.94371142461 0.14854998865 0.66201000286 0.29212325327 0.088839789059 +0.94721379534 0.16104719752 0.21336087397 0.98095779109 +METADATA +INFORMATION 0 + +temp2 1 40 double +0.63326220102 0.65880449811 0.092134010247 0.26224177577 0.18028495303 0.45655723881 0.75424083555 0.25092637201 0.42578021015 +0.34947513336 0.80900439304 0.10986986982 0.79435528494 0.040592168323 0.34699882279 0.64743497427 0.77190625479 0.87132637738 +0.85488395442 0.68169002004 0.479460097 0.44164793037 0.42271564266 0.60839199607 0.16007533174 0.11289515092 0.72833184529 +0.067663762988 0.86608996337 0.30484964892 0.96540154884 0.94371142461 0.14854998865 0.66201000286 0.29212325327 0.088839789059 +0.94721379534 0.16104719752 0.21336087397 0.98095779109 +METADATA +INFORMATION 0 + diff --git a/test/data/meshio_meshes/vtk/06_color_scalars.vtk b/test/data/meshio_meshes/vtk/06_color_scalars.vtk new file mode 100644 index 000000000..a39c36a5c --- /dev/null +++ b/test/data/meshio_meshes/vtk/06_color_scalars.vtk @@ -0,0 +1,23 @@ +# vtk DataFile Version 2.0 +data +ASCII +DATASET UNSTRUCTURED_GRID +POINTS 5 float + 1.5 0.0 0.0 + 0.0 1.5 0.0 + 1.5 1.5 0.0 + 0.0 0.0 0.0 +-1.5 -1.5 0.0 +CELLS 2 7 +2 3 4 +3 0 1 2 +CELL_TYPES 2 +3 +5 +POINT_DATA 5 +COLOR_SCALARS lut 4 +1.0 0.0 0.0 1.0 +0.0 1.0 0.0 1.0 +0.0 0.0 1.0 1.0 +0.0 0.0 0.0 1.0 +0.0 0.0 0.0 1.0 diff --git a/test/data/meshio_meshes/vtk/06_unstructured.vtk b/test/data/meshio_meshes/vtk/06_unstructured.vtk new file mode 100644 index 000000000..65e682aef --- /dev/null +++ b/test/data/meshio_meshes/vtk/06_unstructured.vtk @@ -0,0 +1,64 @@ +# vtk DataFile Version 5.1 +vtk output +ASCII +DATASET UNSTRUCTURED_GRID +POINTS 42 float +1.3 0.8 0.4 1.4 0.8 0.4 1.4 0.9 0.4 +1.3 0.9 0.4 1.3 0.8 0.5 1.4 0.8 0.5 +1.4 0.9 0.5 1.3 0.9 0.5 1.5 0.8 0.4 +1.5 0.9 0.4 1.5 0.8 0.5 1.5 0.9 0.5 +1.3 0.9 0 1.4 0.9 0 1.4 1 0 +1.3 1 0 1.3 0.9 0.1 1.4 0.9 0.1 +1.4 1 0.1 1.3 1 0.1 1.3 0.9 0.2 +1.4 0.9 0.2 1.4 1 0.2 1.3 1 0.2 +1.3 0.9 0.3 1.4 0.9 0.3 1.4 1 0.3 +1.3 1 0.3 1.4 1 0.4 1.3 1 0.4 +1.4 1 0.5 1.3 1 0.5 1.5 0.9 0 +1.5 1 0 1.5 0.9 0.1 1.5 1 0.1 +1.5 0.9 0.2 1.5 1 0.2 1.5 0.9 0.3 +1.5 1 0.3 1.5 1 0.4 1.5 1 0.5 + +CELLS 13 96 +OFFSETS vtktypeint64 +0 8 16 24 32 40 48 56 64 +72 80 88 96 +CONNECTIVITY vtktypeint64 +0 1 2 3 4 5 6 7 1 +8 9 2 5 10 11 6 12 13 +14 15 16 17 18 19 16 17 18 +19 20 21 22 23 20 21 22 23 +24 25 26 27 24 25 26 27 3 +2 28 29 3 2 28 29 7 6 +30 31 13 32 33 14 17 34 35 +18 17 34 35 18 21 36 37 22 +21 36 37 22 25 38 39 26 25 +38 39 26 2 9 40 28 2 9 +40 28 6 11 41 30 +CELL_TYPES 12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 +12 + +CELL_DATA 12 +SCALARS mat_id int +LOOKUP_TABLE default +2 2 1 1 1 1 2 1 1 +1 1 2 + +POINT_DATA 42 +SCALARS node_groups int +LOOKUP_TABLE default +0 0 0 0 0 0 0 0 0 +0 0 0 1 1 1 1 0 0 +0 0 0 0 0 0 0 0 0 +0 0 0 0 0 1 1 0 0 +0 0 0 0 0 0 diff --git a/test/data/meshio_meshes/vtk/gh-935.vtk b/test/data/meshio_meshes/vtk/gh-935.vtk new file mode 100644 index 000000000..f5606afa8 --- /dev/null +++ b/test/data/meshio_meshes/vtk/gh-935.vtk @@ -0,0 +1,22 @@ +# vtk DataFile Version 3.0 +vtk output +ASCII +DATASET UNSTRUCTURED_GRID +POINTS 6 float + 0 1 0.0 + 0 0 0.0 + 1 0 0.0 + 0 1 0.0 + 1 0 0.0 + 1 1 0.0 +CELLS 2 8 +3 0 1 2 +3 3 4 5 +CELL_TYPES 2 +5 +5 +CELL_DATA 2 +POINT_DATA 6 +SCALARS sol float 2 +LOOKUP_TABLE default +-1 1 -1 0 0 -0 0 0 0 0 0 0 diff --git a/test/data/meshio_meshes/vtk/rbc_001.vtk b/test/data/meshio_meshes/vtk/rbc_001.vtk new file mode 100644 index 000000000..72100ecb4 --- /dev/null +++ b/test/data/meshio_meshes/vtk/rbc_001.vtk @@ -0,0 +1,2500 @@ +# vtk DataFile Version 1.0 +rbc_001.vtk 3D Unstructured Grid of Triangles +ASCII + +DATASET UNSTRUCTURED_GRID +POINTS 500 float +-3.424999 -0.855454 2.257396 +-1.484919 0.665606 -3.151304 +1.636841 -0.848154 -0.458954 +3.732041 0.187906 -1.319734 +-1.756719 0.682006 0.807596 +0.911641 -0.828054 3.040696 +-0.218059 -0.489374 -3.806524 +-1.078099 0.891706 -2.420454 +-3.338019 0.263706 1.386896 +2.931841 1.447006 1.793796 +-1.796229 0.715706 1.214996 +2.421641 1.454706 0.904796 +-0.204659 0.658506 3.627796 +-2.160579 -0.044274 3.331996 +0.495541 -0.380754 -3.778464 +0.053641 1.122906 -2.441584 +-1.962639 -1.126464 3.026496 +0.009941 1.061706 2.921296 +0.252541 0.849906 0.570996 +-1.675219 -1.336964 2.454096 +0.409141 0.968806 -1.146214 +2.016341 1.414006 -2.211994 +-1.008069 -1.305914 1.804096 +-2.530049 0.495106 2.133796 +2.489541 0.835106 -3.168524 +-1.025719 -1.208374 -2.156554 +0.768841 -0.904814 -2.371244 +3.327941 -0.212814 1.173396 +-0.179759 0.895606 -1.223224 +2.897641 -0.330874 -1.827444 +0.013941 -0.720894 -3.509614 +-1.960699 -1.392874 1.492296 +-2.685229 0.550306 -0.706694 +-2.297709 0.619406 0.586196 +-3.521319 -0.083864 1.833196 +-2.201219 -0.828584 -3.217494 +-0.360359 -0.889074 3.534896 +3.468741 -0.190594 0.697996 +-0.013059 1.067406 -2.013034 +-2.036049 0.250906 3.181796 +-3.022249 0.471206 -0.260454 +-3.295369 -0.809574 -2.371464 +-1.521199 0.796606 2.329096 +0.574041 -0.871424 -2.850944 +1.364141 -0.949124 1.757796 +-3.098809 -1.382564 1.671896 +0.341441 -0.982094 -0.316984 +3.380241 0.552906 2.256096 +-1.214439 0.759306 -1.130544 +1.671941 1.292106 -2.835764 +2.491941 -0.394084 -2.298934 +2.029841 -0.587094 -2.285774 +-2.777879 -0.951204 -2.762034 +0.566441 -0.961874 -1.878424 +3.446041 0.698506 -2.345714 +-3.547709 -0.450094 2.114896 +-2.336589 0.629806 1.022096 +0.848541 1.224606 2.076096 +1.314241 1.287706 2.779996 +-2.709559 -1.280744 -2.224514 +3.367141 0.017976 -1.816064 +3.232341 0.051706 2.114896 +0.541141 -0.869594 3.255796 +2.128541 -0.497124 2.652896 +-0.200059 -1.053504 3.208996 +-3.756499 0.066606 0.776996 +-3.967359 -1.328364 -0.088464 +-1.813299 0.726006 -1.791184 +3.796541 1.269606 1.178996 +1.059441 -0.933104 -0.369634 +0.764641 -0.181114 3.786496 +3.614641 0.458406 1.807496 +0.174741 -1.149784 2.131896 +1.279841 -0.896984 -0.835184 +-0.483759 0.750706 -0.474934 +1.634441 -0.617364 2.942196 +1.827941 -0.867034 1.017696 +3.867841 0.122106 0.346746 +0.176841 1.027506 1.681196 +2.225041 1.175706 2.845196 +-2.500429 -1.389734 0.049896 +-2.051029 0.619206 2.480296 +-3.125099 -0.430314 2.663296 +-0.736519 -1.247034 1.423396 +1.188141 -0.197534 -3.677924 +1.832341 -0.803304 1.991596 +0.211041 1.027506 -1.579384 +-3.254559 0.137506 -1.890674 +-0.771749 0.856406 1.552396 +4.013141 1.273606 0.476596 +-2.140089 0.548706 -2.465164 +-0.101059 0.185806 -4.007984 +-2.145699 0.432206 2.838696 +-0.124659 -1.003264 -2.836324 +-3.656639 -1.327274 -1.205834 +1.990941 0.889406 3.301896 +-3.563009 -1.078494 -1.807824 +3.114041 -0.382604 -0.930404 +-2.629559 -1.438624 -1.052814 +0.668341 -0.484874 3.660796 +2.528741 1.352506 2.330696 +3.056941 -0.458614 -0.045094 +-2.171369 -1.329874 0.457096 +-0.542059 -1.084944 -0.932734 +-3.823749 -0.821974 1.650896 +0.440041 -0.998044 -1.463874 +-2.106999 0.624406 -0.558624 +1.826441 0.404306 3.518896 +3.806941 1.402606 -0.673144 +-0.175859 -1.177544 1.418596 +-0.430259 -0.984474 -3.124334 +-1.429589 0.105206 -3.781744 +2.318241 -0.226994 2.950596 +0.988841 -0.551814 3.477596 +-3.672659 0.131006 -0.855224 +3.800141 0.181506 0.958096 +-1.200429 0.745406 1.081696 +-0.132059 1.001306 -3.235794 +2.477541 1.434306 0.434786 +1.191441 -0.736104 -2.760274 +-4.140549 -0.733584 -0.846874 +-3.094119 -1.123994 -2.225014 +-3.149999 -0.062234 2.407796 +-1.158149 -1.072274 -3.039524 +-0.400659 -1.241414 1.903496 +1.400641 -0.174024 3.597496 +-1.630609 0.521006 3.115196 +-1.910689 0.640406 0.362426 +2.543641 -0.179114 -2.735614 +1.308541 -0.967644 1.277396 +-1.093769 -1.170714 -1.120094 +-2.038329 0.620406 -0.058894 +-3.683249 -0.062744 -1.421644 +3.818441 0.036916 -0.292334 +-0.993219 -0.522244 3.780696 +-2.148329 -1.325934 -2.178484 +2.447041 1.396806 -0.113854 +-3.777879 -1.387444 0.533296 +-0.112359 -1.087874 0.573196 +1.377841 1.272306 1.635396 +1.254941 0.151606 3.713996 +0.372641 -1.007944 -1.036354 +0.403441 1.165806 2.515396 +1.230641 -0.844674 2.678496 +3.348241 0.265006 -2.227234 +-2.340539 0.614206 -1.496794 +2.706141 1.026906 2.803596 +-1.531129 0.802406 1.941896 +0.804641 1.121306 -1.501914 +0.059541 0.809706 -0.311584 +1.451341 -0.739234 -2.431744 +0.343741 0.558806 -3.900584 +-2.072989 0.334706 -3.202074 +-1.751489 -1.001144 -3.138244 +2.893641 0.571106 -2.934174 +1.919241 1.291906 0.708896 +-3.474459 -1.394114 1.127496 +0.477941 0.873206 -3.684324 +1.020041 0.816806 -3.717124 +-1.097129 -1.220604 1.032496 +-3.003429 -1.491814 0.041216 +-0.507559 -0.220114 -3.970844 +-0.871339 0.908506 -1.824914 +-1.002469 0.877506 -2.880294 +-4.003789 -0.252654 -0.874304 +1.928341 -0.505854 -2.700694 +-4.185099 -0.475784 -0.280294 +2.133041 1.318306 -0.575044 +-1.046039 0.694406 3.191796 +-3.890309 -1.158434 1.104596 +2.113641 1.121406 -3.070624 +-2.010099 -1.292954 -0.216314 +1.987941 -0.788144 -0.140574 +-1.267489 0.847406 -2.042934 +1.081541 -0.900484 -1.586604 +1.738041 -0.756064 2.435396 +-0.069359 0.820406 0.927096 +-0.635559 0.800206 1.127196 +2.931141 0.143506 2.623996 +-4.225549 -0.669494 0.371026 +-0.338759 0.966206 -1.677904 +3.366541 -0.280934 -0.452624 +-1.410509 -1.305514 1.425996 +0.167541 1.102406 2.105496 +-2.300829 0.579706 -1.995564 +1.544641 -0.527864 -2.984594 +-1.480049 -1.367304 2.012496 +1.878641 -0.009994 -3.437454 +-1.177279 -1.306154 2.668896 +-0.553259 -1.221724 2.822196 +1.621241 1.165206 -0.259554 +0.955141 -0.677624 -3.163504 +0.479541 1.086106 -3.276734 +1.177041 -0.857644 -2.034864 +-2.630079 -0.422604 3.087996 +3.196841 -0.183384 1.661096 +-0.283959 -1.216724 2.424996 +-0.107759 -1.058054 -1.231574 +2.249141 1.312206 -2.593074 +0.830641 -1.040704 1.520796 +0.576841 -1.023904 0.578496 +1.423641 1.337406 -2.343334 +-0.730489 0.730806 0.734796 +0.769941 0.229206 3.836296 +4.100741 1.182206 -0.238214 +2.089241 0.092906 3.337096 +-0.763159 0.136706 -3.966944 +2.048641 -0.227544 -3.081924 +-3.669929 0.168106 0.252466 +0.140141 -1.084624 2.934796 +0.851241 0.607406 3.712096 +3.700541 0.473606 -1.803374 +-2.468259 -0.464164 -3.254234 +-0.203359 0.903606 1.386696 +-0.643559 -0.829614 -3.468714 +1.614941 1.173406 0.307636 +1.392641 0.580206 3.626796 +-2.505129 0.283706 -2.756974 +0.253041 -1.109694 2.506596 +3.828141 0.886106 -1.663004 +1.044541 1.128806 -3.297774 +0.181941 0.250406 3.905496 +1.562941 1.190006 -0.810124 +0.781841 -1.043654 1.933696 +-3.185429 0.424706 0.220286 +-3.531809 -1.195284 1.705096 +-2.097159 -1.340254 -0.863994 +-1.135099 -1.219464 -1.635044 +-0.228059 0.551806 -3.881094 +-1.908889 -0.349964 -3.592664 +0.218941 -0.982404 -2.523044 +0.260041 -0.803284 3.486996 +-3.861169 -0.444074 1.489996 +2.300241 -0.574664 2.219096 +0.152141 -1.099804 0.946196 +3.145741 -0.413984 0.443116 +3.507441 -0.195284 0.108416 +1.944941 1.339006 -1.191414 +0.712741 1.140906 1.651796 +-2.285379 -1.159364 -2.725134 +1.321641 0.496906 -3.766264 +-0.113859 0.838606 -3.632624 +2.832541 -0.493464 1.442796 +-1.841069 0.723306 1.646096 +-0.459359 1.016406 2.225996 +0.201841 -1.017674 0.189156 +-2.841829 0.421906 -1.719214 +0.231941 -0.095884 -3.976554 +2.697141 1.501506 1.322996 +-1.631849 -0.014764 3.592596 +4.061241 0.948106 0.957796 +1.418341 -0.368324 -3.372364 +2.487241 1.436906 -1.049184 +2.995641 1.236706 2.259996 +2.362241 -0.658334 1.734596 +-1.561139 -1.230494 2.969396 +1.554241 1.240906 1.116496 +2.133941 -0.699834 -1.353124 +0.626741 0.939306 0.855396 +-2.521189 0.573706 -0.265734 +-3.175499 -1.467974 -1.143624 +-2.036329 -0.890544 3.291296 +0.962641 1.060106 -0.985534 +-1.670869 0.685006 -0.876284 +-1.524279 0.747106 -2.679794 +1.228941 -0.958444 0.811796 +2.037241 1.395306 1.342896 +1.108541 1.029206 -0.500484 +-2.722179 -1.445594 0.558096 +1.703441 1.345006 -1.781734 +-2.143929 -1.295104 2.540596 +-1.302389 -1.200624 0.643196 +1.449241 -0.890044 0.039516 +-0.215759 0.355906 3.842396 +-0.920159 -1.124644 3.251996 +0.225241 -1.137294 1.749496 +-0.786199 -1.095824 -0.176074 +-1.303999 0.689606 0.573696 +2.387341 -0.695494 1.207696 +3.616041 -0.063804 -0.868164 +1.275241 -0.915394 2.204296 +1.104941 1.255006 -1.907854 +-2.126609 0.680406 1.985496 +-0.612959 -1.130234 -1.434614 +0.288041 -0.826834 -3.206864 +1.504641 1.081106 -3.301794 +0.956941 1.083106 3.279996 +3.425541 1.292006 1.749896 +-1.562639 0.657506 -0.367044 +-0.385059 0.723606 0.010976 +0.643941 0.357306 -3.944714 +1.143541 1.026006 0.066126 +-3.923099 -0.495494 -1.432014 +2.303941 1.442606 -1.648764 +2.674241 -0.622824 0.391136 +-2.575289 0.574706 0.181276 +2.102141 -0.780244 0.270976 +2.378241 1.455306 1.844496 +-1.409929 -0.961854 3.454296 +4.013241 0.332406 -0.723214 +-1.573919 -1.215954 -0.711444 +3.366141 1.546806 0.229086 +3.014341 1.508506 -0.892014 +-2.636479 -1.351154 2.158996 +0.922241 0.047476 -3.878244 +0.762741 -1.012504 2.373096 +-3.926779 -0.052834 -0.307064 +2.968041 0.646406 2.733196 +3.782941 1.456006 -0.006234 +0.293941 0.980106 3.322096 +0.743841 0.927906 0.369276 +0.353641 -1.106064 1.342896 +0.550941 0.926506 -0.651724 +1.762441 0.858206 -3.461724 +0.785441 -0.965424 0.039136 +-2.446739 -0.783074 3.110596 +-1.761889 -1.299734 0.946196 +-2.697899 -0.063044 -3.002244 +0.640841 -0.980814 2.763096 +-1.050859 -1.134324 0.211156 +3.911441 0.552606 1.280196 +3.353541 1.548406 -0.400284 +-0.360759 0.853606 3.253696 +-0.389559 -1.095464 -2.375984 +-2.230669 0.634006 -1.033524 +-0.163959 -1.039024 -0.132964 +1.953141 1.367106 2.454696 +3.068341 1.251806 -2.229364 +0.992941 1.103506 1.196096 +-0.354459 -1.058014 -0.495984 +-2.665739 0.304606 2.489996 +-0.427759 -1.081724 0.236916 +3.759441 0.923206 1.707396 +2.993841 1.552106 0.718696 +2.296441 -0.743554 0.741996 +-1.763279 -1.196994 -2.678954 +3.417241 1.480306 -1.070794 +1.431641 1.326906 2.206896 +-2.096879 -1.401974 2.006296 +-3.095769 -1.187684 2.249096 +-4.128129 -1.086374 0.486896 +0.675741 -0.955924 -0.695564 +-1.630539 -1.295414 -1.868474 +-0.768859 0.565106 3.506796 +4.012841 0.625006 -1.187824 +-1.592159 -0.658304 -3.554044 +-2.151139 -1.366284 -1.505324 +1.944341 0.534006 -3.505884 +2.740341 1.467306 -0.486764 +-1.790669 0.713506 -1.313474 +-2.856189 0.495806 1.193596 +-0.925189 0.930706 2.507296 +-1.699529 0.733406 -2.239544 +4.207241 0.885506 0.224376 +-0.837619 0.695306 0.283396 +0.104841 -1.031214 -2.123114 +-2.548549 -1.424364 1.589096 +-0.612259 0.793806 -0.936894 +1.131341 -0.948084 0.398946 +-2.658279 -1.417134 -1.649294 +0.653841 1.171006 2.953596 +-4.042969 -0.364854 0.835896 +-3.526489 -1.494984 -0.025274 +2.868441 1.487406 -1.434434 +2.522341 0.143006 -3.086934 +3.510241 1.089206 -2.010794 +2.655341 1.425806 -2.070284 +0.943541 1.250306 2.522996 +2.051841 1.298306 0.066136 +-4.223849 -0.936654 -0.173444 +0.290641 -0.136404 3.874196 +-1.223659 -0.271774 -3.852484 +2.581841 0.234906 2.999296 +2.808341 -0.374994 1.972596 +-2.557319 -1.120344 2.757496 +-3.287539 -1.493654 0.579396 +-0.594659 -0.048564 3.911296 +2.679541 -0.253214 2.470396 +3.700541 1.267106 -1.359364 +-0.959359 0.694006 -0.198754 +4.180941 0.748706 -0.471614 +2.535541 -0.659604 -0.082264 +-3.089509 0.229006 1.982496 +1.731841 -0.727054 -2.039894 +0.752941 1.246206 -2.426534 +-2.794649 0.507006 -1.181084 +-3.928009 -0.950514 -1.345824 +-1.636959 -1.274204 -1.269404 +-1.940279 0.529306 -2.870564 +1.882741 -0.848684 1.494496 +-3.549919 -0.243094 -2.000504 +-0.985279 0.894306 2.008496 +-0.019559 0.850306 -0.771854 +-4.049549 -0.204584 0.297226 +4.087041 0.536406 0.624496 +0.371741 0.972006 1.250196 +-3.046759 0.034546 -2.443624 +-0.719569 -1.137034 0.634596 +-3.158539 -1.349784 -1.706094 +-0.279059 0.747106 0.458496 +-1.316909 0.801306 -1.568304 +2.739641 -0.508704 -1.402154 +4.125641 0.432706 -0.049424 +-2.650109 0.030536 2.922696 +0.728641 -0.572354 -3.501974 +-3.251199 -0.368214 -2.488764 +-1.667539 -1.229094 0.297986 +-3.511899 0.271306 -0.265254 +-1.217199 -0.839184 -3.421624 +1.688541 -0.870954 0.546196 +-2.974609 -0.856614 2.734296 +-0.895229 -0.556384 -3.761854 +2.268441 -0.709414 -0.535614 +-1.094129 0.717706 -0.654994 +-0.452859 -1.158414 1.013596 +-1.450159 0.338706 3.469996 +-4.085079 -0.786084 1.017296 +-2.013369 -0.428744 3.485496 +0.186241 0.812206 0.140706 +3.297341 0.979906 2.281496 +-1.587119 -0.584934 3.599196 +3.576841 0.144706 1.499496 +2.837841 -0.528204 -0.495564 +1.889941 -0.783134 -0.895424 +-1.428079 0.758706 2.798596 +0.046441 -0.556934 3.784296 +-3.684669 -0.679584 -1.936454 +-0.686599 0.914906 2.917896 +-0.347959 1.019106 -2.897304 +-0.755329 0.847706 -1.379134 +3.290941 -0.199454 -1.362574 +-1.419229 0.659306 0.105926 +-1.311779 0.798806 1.546596 +1.666841 1.197906 3.029896 +-2.321029 0.633806 1.482596 +3.287141 1.490906 1.234996 +2.984741 -0.097804 -2.290484 +-2.836459 0.532306 0.656296 +-0.861149 -1.306774 2.294096 +-0.311359 -0.327694 3.905596 +-3.734009 -0.074834 1.271696 +1.872541 1.382106 1.877196 +-1.407059 -1.176224 -0.210924 +-2.367179 -1.400034 1.022796 +1.364841 1.219006 -1.359284 +1.681541 -0.782554 -1.677954 +-0.059659 -1.061814 -1.689014 +2.290341 0.381006 -3.348324 +0.475541 0.734206 3.681596 +-4.023649 -1.188844 -0.711754 +-0.577459 1.001106 -2.162764 +1.243741 1.071406 0.684396 +2.914741 -0.510524 0.930496 +0.902341 -0.944574 -1.144034 +-0.839749 0.521606 -3.775084 +4.048341 1.041606 -0.934924 +-0.546859 1.000206 -2.571354 +1.303541 0.921306 3.446996 +2.932241 1.521106 0.098186 +2.429641 0.627306 3.172496 +2.306841 -0.595294 -1.818344 +-0.992569 -1.123874 -0.610844 +1.003941 1.263606 -2.859874 +3.594241 1.493206 0.682696 +-3.338079 0.342506 0.779696 +3.029841 0.258606 -2.684064 +2.654641 1.184106 -2.680514 +-0.231759 1.062706 2.546896 +-0.821239 -1.130474 -2.681534 +-1.402569 0.509406 -3.546474 +-1.452419 -1.244514 -2.433904 +-0.661849 0.763206 -3.535814 +-3.107039 -1.510414 -0.552684 +1.605141 0.186106 -3.659124 +-3.223199 0.382406 -0.773184 +3.076441 0.948906 -2.630754 +-2.743569 0.480606 1.693896 +-2.588259 -1.436754 -0.474874 +-3.638209 -1.458764 -0.615664 +-2.727689 0.347506 -2.256804 +0.030141 -1.025324 -0.732464 +-1.283989 -0.180894 3.756196 +-3.285119 0.273906 -1.328174 +-0.357559 0.968406 1.837296 +-2.064339 0.056406 -3.468924 +-0.845689 0.842506 -3.252574 +1.527441 -0.844614 -1.273824 +-0.703919 -0.773084 3.688796 +2.527141 -0.614204 -0.945414 +-0.561259 -1.137704 -1.919154 +1.234441 -0.629994 3.225896 +3.253041 1.394206 -1.693584 +0.767641 -1.038624 1.048796 +0.639041 0.907006 -0.173444 +-2.963859 -1.458584 1.104196 +1.736241 -0.330294 3.299396 +-0.916819 0.269506 3.752496 +-2.924189 -0.517674 -2.831784 +0.530241 1.155206 -1.994664 +0.333941 1.167606 -2.848074 +CELLS 996 3984 +3 270 374 303 +3 104 55 232 +3 339 225 45 +3 410 374 315 +3 104 232 416 +3 232 55 34 +3 330 122 403 +3 410 82 0 +3 55 0 82 +3 481 417 420 +3 339 45 303 +3 339 303 374 +3 416 232 361 +3 122 34 55 +3 34 122 382 +3 169 225 104 +3 104 416 169 +3 330 403 92 +3 315 194 410 +3 16 261 374 +3 417 315 261 +3 270 16 374 +3 19 270 338 +3 420 261 298 +3 261 420 417 +3 440 65 361 +3 440 361 232 +3 232 34 440 +3 92 81 330 +3 45 494 356 +3 356 303 45 +3 338 303 356 +3 268 494 375 +3 361 393 179 +3 225 169 156 +3 375 494 156 +3 156 45 225 +3 156 494 45 +3 340 169 416 +3 82 403 122 +3 82 410 194 +3 194 315 417 +3 481 249 417 +3 194 13 403 +3 403 82 194 +3 34 8 440 +3 393 361 65 +3 23 330 81 +3 443 356 494 +3 494 268 443 +3 306 166 393 +3 375 156 137 +3 137 156 169 +3 169 340 137 +3 303 338 270 +3 65 440 8 +3 23 382 330 +3 122 330 382 +3 23 81 282 +3 81 92 424 +3 415 126 39 +3 39 92 403 +3 375 137 362 +3 338 356 31 +3 356 443 31 +3 268 80 102 +3 102 443 268 +3 66 340 369 +3 340 416 179 +3 361 179 416 +3 166 179 393 +3 19 186 188 +3 476 382 23 +3 23 282 476 +3 434 350 476 +3 476 282 434 +3 126 168 424 +3 42 282 81 +3 12 343 496 +3 92 39 126 +3 343 168 415 +3 343 12 322 +3 179 369 340 +3 66 137 340 +3 66 362 137 +3 478 66 449 +3 338 186 19 +3 316 182 31 +3 438 188 186 +3 338 31 186 +3 182 22 186 +3 438 186 22 +3 316 31 443 +3 443 102 316 +3 186 31 182 +3 159 182 316 +3 406 102 171 +3 375 362 160 +3 160 268 375 +3 160 80 268 +3 40 32 474 +3 32 40 259 +3 306 407 114 +3 96 94 386 +3 438 124 196 +3 427 467 351 +3 295 259 40 +3 106 32 259 +3 259 295 131 +3 324 32 106 +3 288 431 379 +3 56 350 434 +3 434 10 56 +3 56 4 33 +3 127 33 4 +3 437 464 350 +3 437 33 295 +3 350 56 437 +3 437 56 33 +3 208 306 393 +3 208 407 306 +3 393 65 208 +3 65 464 208 +3 382 476 8 +3 382 8 34 +3 8 464 65 +3 350 464 8 +3 8 476 350 +3 126 415 168 +3 427 351 424 +3 126 424 92 +3 427 424 168 +3 362 66 478 +3 449 94 478 +3 369 449 66 +3 397 319 331 +3 102 406 316 +3 159 316 271 +3 271 316 406 +3 442 319 406 +3 319 397 271 +3 159 271 397 +3 30 404 284 +3 53 26 193 +3 43 119 26 +3 224 40 407 +3 407 208 224 +3 224 208 464 +3 295 40 224 +3 224 437 295 +3 464 437 224 +3 166 306 164 +3 306 114 164 +3 121 41 52 +3 41 121 96 +3 449 386 94 +3 386 449 120 +3 420 134 481 +3 420 298 134 +3 322 17 427 +3 142 183 467 +3 391 351 244 +3 42 424 351 +3 81 424 42 +3 114 132 164 +3 292 164 132 +3 263 324 106 +3 106 288 263 +3 32 324 385 +3 145 385 324 +3 184 246 145 +3 385 145 246 +3 259 131 106 +3 288 106 131 +3 131 295 127 +3 33 127 295 +3 127 431 131 +3 431 288 131 +3 184 90 479 +3 352 264 90 +3 249 496 415 +3 376 496 481 +3 39 13 415 +3 249 481 496 +3 39 403 13 +3 249 415 13 +3 194 417 13 +3 13 417 249 +3 376 481 134 +3 230 43 26 +3 185 191 251 +3 191 284 404 +3 119 191 185 +3 119 165 150 +3 207 185 251 +3 191 119 43 +3 472 160 362 +3 362 478 472 +3 94 96 398 +3 398 96 121 +3 426 292 390 +3 390 132 87 +3 386 120 292 +3 164 292 120 +3 369 120 449 +3 166 164 120 +3 120 369 166 +3 179 166 369 +3 16 255 298 +3 315 374 261 +3 16 270 255 +3 19 255 270 +3 193 150 383 +3 276 331 319 +3 159 397 414 +3 414 397 138 +3 331 138 397 +3 275 199 223 +3 124 275 72 +3 172 2 412 +3 196 72 218 +3 72 196 124 +3 196 189 438 +3 188 438 189 +3 218 209 196 +3 64 189 209 +3 17 309 360 +3 286 360 309 +3 147 42 391 +3 88 432 391 +3 18 399 176 +3 18 176 258 +3 116 432 88 +3 429 400 48 +3 379 289 74 +3 57 238 183 +3 78 483 183 +3 142 467 17 +3 244 467 183 +3 78 183 238 +3 183 142 57 +3 441 266 139 +3 118 155 11 +3 11 155 266 +3 238 57 139 +3 256 139 266 +3 215 451 155 +3 213 395 176 +3 238 395 78 +3 213 78 395 +3 483 78 213 +3 212 229 35 +3 317 484 212 +3 405 317 497 +3 132 482 87 +3 474 482 114 +3 284 110 30 +3 93 284 43 +3 471 454 469 +3 229 111 371 +3 1 485 469 +3 264 163 1 +3 184 479 246 +3 246 87 482 +3 87 246 479 +3 479 90 217 +3 485 1 163 +3 111 469 454 +3 485 117 471 +3 60 436 144 +3 29 436 60 +3 324 263 349 +3 48 400 349 +3 349 263 48 +3 413 288 379 +3 413 263 288 +3 48 263 413 +3 379 74 413 +3 163 7 456 +3 487 134 298 +3 425 439 487 +3 134 487 439 +3 185 165 119 +3 51 150 165 +3 383 150 51 +3 319 442 276 +3 80 171 102 +3 94 398 260 +3 260 478 94 +3 260 472 478 +3 132 390 292 +3 426 386 292 +3 426 41 96 +3 96 386 426 +3 405 390 396 +3 497 41 405 +3 212 497 317 +3 390 405 426 +3 41 426 405 +3 405 396 317 +3 87 396 390 +3 305 223 280 +3 453 174 486 +3 257 423 486 +3 311 199 275 +3 138 331 245 +3 36 64 231 +3 318 5 209 +3 209 62 64 +3 36 274 64 +3 318 209 218 +3 318 218 305 +3 218 72 305 +3 17 360 142 +3 367 142 360 +3 367 57 142 +3 63 233 377 +3 42 147 282 +3 434 282 243 +3 243 282 147 +3 243 147 432 +3 243 10 434 +3 243 432 10 +3 391 244 483 +3 183 483 244 +3 244 351 467 +3 351 391 42 +3 391 483 88 +3 147 391 432 +3 418 289 399 +3 399 18 418 +3 418 18 310 +3 277 431 127 +3 177 116 88 +3 177 213 176 +3 177 88 213 +3 483 213 88 +3 162 429 180 +3 256 451 328 +3 328 395 238 +3 238 139 328 +3 328 139 256 +3 395 258 176 +3 395 328 258 +3 258 328 451 +3 310 18 258 +3 258 451 310 +3 132 114 482 +3 474 114 407 +3 474 385 482 +3 246 482 385 +3 385 474 32 +3 407 40 474 +3 497 212 52 +3 497 52 41 +3 24 475 154 +3 154 54 465 +3 285 313 158 +3 157 158 151 +3 206 371 111 +3 111 484 469 +3 152 469 484 +3 228 454 241 +3 471 469 485 +3 152 484 317 +3 217 388 152 +3 396 217 317 +3 67 145 349 +3 324 349 145 +3 67 352 184 +3 145 67 184 +3 67 349 400 +3 48 413 357 +3 357 413 74 +3 357 429 48 +3 28 429 357 +3 163 264 7 +3 352 7 264 +3 117 485 428 +3 388 90 264 +3 400 429 162 +3 28 180 429 +3 162 450 173 +3 162 180 450 +3 415 496 343 +3 231 425 36 +3 203 370 70 +3 376 134 439 +3 439 425 370 +3 490 113 62 +3 16 298 261 +3 36 487 274 +3 189 274 188 +3 188 255 19 +3 50 29 460 +3 383 51 460 +3 461 276 442 +3 300 461 442 +3 442 171 300 +3 271 406 319 +3 406 171 442 +3 276 461 329 +3 359 260 398 +3 342 346 135 +3 472 260 98 +3 98 359 346 +3 260 359 98 +3 1 152 388 +3 388 217 90 +3 469 152 1 +3 152 317 217 +3 217 396 479 +3 87 479 396 +3 223 305 72 +3 242 373 254 +3 143 5 318 +3 423 2 73 +3 73 486 423 +3 453 486 73 +3 73 341 453 +3 73 2 69 +3 69 341 73 +3 257 486 445 +3 193 383 445 +3 445 174 193 +3 445 486 174 +3 159 414 83 +3 83 182 159 +3 83 22 182 +3 325 245 331 +3 245 200 138 +3 234 138 200 +3 487 36 425 +3 189 196 209 +3 298 274 487 +3 274 298 255 +3 189 64 274 +3 255 188 274 +3 57 337 139 +3 367 337 57 +3 441 139 337 +3 140 216 203 +3 216 140 107 +3 75 175 63 +3 58 286 433 +3 337 367 58 +3 448 210 457 +3 216 457 210 +3 79 95 146 +3 372 459 205 +3 457 216 95 +3 149 74 289 +3 289 418 149 +3 202 277 116 +3 176 399 202 +3 202 177 176 +3 116 177 202 +3 354 289 379 +3 399 289 354 +3 379 431 354 +3 431 277 354 +3 354 202 399 +3 277 202 354 +3 10 4 56 +3 4 277 127 +3 4 10 116 +3 432 116 10 +3 116 277 4 +3 368 155 118 +3 144 436 465 +3 447 154 364 +3 313 347 240 +3 151 158 290 +3 388 264 1 +3 173 450 7 +3 456 428 163 +3 428 499 117 +3 499 428 15 +3 285 220 49 +3 456 15 428 +3 499 462 192 +3 220 192 462 +3 471 241 454 +3 157 241 192 +3 97 401 430 +3 29 60 430 +3 133 236 181 +3 133 181 279 +3 173 67 400 +3 90 184 352 +3 400 162 173 +3 456 7 450 +3 173 352 67 +3 7 352 173 +3 370 221 439 +3 168 343 322 +3 210 448 221 +3 273 221 448 +3 427 168 322 +3 99 425 231 +3 231 113 99 +3 62 231 64 +3 70 99 125 +3 495 125 113 +3 370 203 221 +3 99 70 425 +3 210 221 203 +3 113 125 99 +3 5 490 62 +3 231 62 113 +3 125 140 70 +3 205 107 125 +3 490 495 113 +3 128 436 50 +3 29 50 436 +3 364 128 207 +3 128 50 165 +3 103 329 461 +3 331 276 325 +3 329 325 276 +3 325 329 46 +3 105 174 453 +3 130 461 300 +3 130 103 461 +3 411 214 408 +3 411 6 214 +3 30 214 6 +3 214 30 110 +3 239 59 52 +3 239 135 59 +3 135 359 59 +3 121 52 59 +3 359 398 59 +3 121 59 398 +3 52 35 239 +3 153 239 35 +3 35 52 212 +3 408 153 345 +3 345 35 229 +3 35 345 153 +3 472 98 477 +3 160 472 477 +3 80 160 477 +3 477 171 80 +3 300 171 226 +3 226 98 346 +3 171 477 226 +3 226 477 98 +3 492 129 199 +3 199 311 492 +3 492 234 200 +3 311 234 492 +3 389 129 76 +3 280 44 85 +3 85 254 233 +3 199 129 44 +3 199 44 223 +3 44 280 223 +3 44 129 389 +3 254 85 389 +3 389 85 44 +3 294 296 381 +3 69 2 272 +3 69 272 314 +3 272 2 172 +3 172 296 272 +3 272 296 409 +3 409 358 272 +3 257 488 423 +3 423 412 2 +3 412 423 488 +3 412 488 422 +3 412 381 172 +3 422 381 412 +3 50 460 51 +3 488 257 401 +3 401 460 29 +3 460 401 257 +3 257 445 460 +3 383 460 445 +3 109 414 234 +3 109 83 414 +3 138 234 414 +3 109 234 311 +3 46 245 325 +3 480 46 329 +3 46 341 69 +3 480 341 46 +3 360 58 367 +3 210 203 216 +3 360 286 58 +3 459 95 107 +3 457 433 286 +3 95 433 457 +3 203 70 140 +3 216 107 95 +3 373 377 233 +3 493 418 310 +3 493 149 418 +3 20 86 28 +3 256 266 155 +3 326 297 441 +3 297 248 266 +3 11 266 248 +3 433 95 79 +3 459 146 95 +3 368 118 136 +3 190 368 167 +3 256 155 451 +3 155 368 215 +3 310 451 291 +3 215 368 190 +3 222 237 444 +3 444 237 269 +3 366 21 293 +3 293 269 237 +3 364 465 128 +3 436 128 465 +3 51 165 50 +3 347 24 447 +3 447 473 347 +3 290 240 304 +3 304 247 290 +3 151 228 157 +3 241 157 228 +3 192 117 499 +3 241 471 117 +3 158 157 220 +3 285 158 220 +3 117 192 241 +3 163 428 485 +3 484 111 229 +3 411 345 371 +3 408 345 411 +3 484 229 212 +3 435 248 9 +3 422 488 97 +3 279 181 97 +3 97 488 401 +3 422 97 181 +3 29 430 401 +3 97 430 279 +3 3 430 60 +3 279 430 3 +3 376 273 496 +3 17 322 309 +3 467 427 17 +3 221 273 376 +3 309 12 448 +3 322 12 309 +3 70 370 425 +3 12 496 273 +3 376 439 221 +3 273 448 12 +3 286 448 457 +3 309 448 286 +3 193 174 53 +3 150 193 26 +3 105 53 174 +3 197 480 103 +3 329 103 480 +3 387 130 300 +3 387 226 346 +3 300 226 387 +3 93 468 110 +3 110 123 214 +3 153 408 123 +3 408 214 123 +3 229 371 345 +3 6 411 161 +3 93 110 284 +3 278 254 389 +3 334 278 76 +3 265 76 129 +3 200 358 265 +3 265 358 409 +3 409 76 265 +3 265 492 200 +3 129 492 265 +3 143 280 175 +3 62 209 5 +3 318 305 143 +3 280 143 305 +3 236 133 77 +3 77 37 236 +3 124 109 275 +3 22 124 438 +3 22 83 124 +3 223 72 275 +3 311 275 109 +3 83 109 124 +3 245 46 314 +3 314 358 200 +3 200 245 314 +3 358 314 272 +3 314 46 69 +3 146 459 307 +3 107 205 459 +3 112 205 495 +3 140 125 107 +3 495 490 75 +3 495 75 112 +3 195 421 61 +3 178 377 61 +3 180 28 86 +3 148 86 20 +3 498 38 86 +3 38 450 180 +3 456 450 15 +3 38 15 450 +3 54 154 475 +3 144 465 54 +3 466 24 170 +3 154 447 24 +3 365 475 327 +3 313 170 24 +3 198 466 170 +3 347 313 24 +3 240 158 313 +3 473 304 240 +3 180 86 38 +3 281 498 148 +3 384 15 498 +3 38 498 15 +3 49 170 285 +3 79 326 433 +3 337 58 326 +3 441 337 326 +3 266 441 297 +3 58 433 326 +3 100 326 79 +3 297 326 100 +3 9 100 253 +3 100 9 297 +3 248 297 9 +3 252 293 237 +3 136 167 368 +3 167 222 190 +3 237 222 167 +3 167 252 237 +3 291 215 190 +3 222 267 190 +3 291 493 310 +3 215 291 451 +3 267 312 493 +3 281 269 201 +3 498 281 384 +3 86 148 498 +3 269 281 444 +3 148 444 281 +3 302 336 363 +3 363 491 366 +3 363 252 302 +3 293 252 363 +3 465 364 154 +3 473 447 187 +3 240 347 473 +3 206 454 228 +3 161 91 247 +3 91 151 290 +3 206 228 91 +3 14 404 30 +3 161 206 91 +3 30 6 14 +3 371 206 161 +3 14 6 247 +3 247 304 14 +3 151 91 228 +3 111 454 206 +3 371 161 411 +3 419 332 287 +3 458 136 118 +3 333 11 248 +3 248 435 333 +3 118 11 333 +3 333 458 118 +3 68 332 250 +3 250 89 68 +3 250 353 89 +3 204 89 353 +3 68 89 463 +3 54 219 211 +3 211 144 54 +3 211 60 144 +3 211 3 60 +3 299 133 279 +3 279 3 299 +3 480 197 141 +3 141 341 480 +3 453 341 141 +3 141 105 453 +3 130 387 227 +3 335 123 470 +3 123 110 468 +3 470 468 25 +3 233 254 373 +3 254 278 242 +3 172 381 296 +3 334 76 409 +3 389 76 278 +3 409 296 334 +3 296 294 334 +3 280 85 175 +3 233 175 85 +3 233 63 175 +3 175 75 143 +3 5 75 490 +3 5 143 75 +3 37 115 27 +3 37 77 115 +3 77 394 115 +3 71 421 320 +3 205 112 372 +3 63 112 75 +3 125 495 205 +3 178 372 112 +3 178 112 377 +3 63 377 112 +3 327 491 365 +3 466 327 475 +3 54 475 365 +3 365 219 54 +3 198 170 49 +3 475 24 466 +3 49 462 201 +3 21 201 269 +3 201 384 281 +3 201 21 49 +3 198 49 21 +3 462 49 220 +3 313 285 170 +3 384 201 462 +3 192 220 157 +3 15 384 499 +3 462 499 384 +3 262 222 444 +3 20 312 262 +3 444 148 262 +3 148 20 262 +3 291 190 267 +3 222 262 267 +3 267 262 312 +3 493 291 267 +3 149 493 312 +3 149 312 392 +3 392 357 74 +3 74 149 392 +3 20 28 392 +3 357 392 28 +3 392 312 20 +3 269 293 21 +3 293 363 366 +3 327 366 491 +3 198 366 466 +3 327 466 366 +3 21 366 198 +3 91 290 247 +3 304 473 84 +3 372 307 459 +3 47 307 178 +3 68 287 332 +3 287 435 9 +3 287 68 435 +3 463 435 68 +3 136 458 348 +3 252 167 348 +3 136 348 167 +3 302 252 348 +3 108 204 455 +3 89 204 308 +3 458 333 301 +3 301 333 463 +3 435 463 333 +3 3 211 344 +3 344 299 3 +3 344 219 455 +3 344 211 219 +3 130 227 283 +3 197 103 283 +3 130 283 103 +3 346 342 387 +3 359 135 346 +3 227 387 342 +3 468 93 323 +3 150 26 119 +3 230 26 355 +3 27 195 242 +3 377 373 61 +3 71 61 421 +3 195 61 373 +3 101 294 381 +3 181 101 422 +3 101 181 236 +3 381 422 101 +3 452 334 294 +3 452 242 278 +3 278 334 452 +3 299 344 380 +3 380 344 455 +3 380 204 353 +3 455 204 380 +3 133 299 402 +3 402 77 133 +3 402 394 77 +3 299 380 402 +3 353 394 402 +3 402 380 353 +3 320 332 71 +3 115 320 421 +3 320 115 394 +3 320 250 332 +3 353 250 394 +3 320 394 250 +3 378 365 491 +3 378 108 455 +3 455 219 378 +3 219 365 378 +3 187 251 84 +3 364 187 447 +3 404 251 191 +3 165 207 128 +3 191 43 284 +3 14 84 404 +3 251 187 207 +3 165 185 207 +3 372 178 307 +3 419 307 47 +3 47 61 71 +3 178 61 47 +3 71 332 47 +3 332 419 47 +3 307 419 146 +3 419 287 253 +3 9 253 287 +3 253 100 146 +3 79 146 100 +3 253 146 419 +3 108 308 204 +3 301 463 308 +3 89 308 463 +3 355 53 446 +3 53 355 26 +3 227 342 25 +3 242 452 27 +3 373 242 195 +3 421 27 115 +3 421 195 27 +3 294 101 235 +3 235 452 294 +3 236 37 235 +3 235 101 236 +3 235 37 452 +3 27 452 37 +3 187 84 473 +3 251 404 84 +3 240 290 158 +3 364 207 187 +3 84 14 304 +3 161 247 6 +3 301 308 321 +3 302 348 321 +3 321 348 458 +3 458 301 321 +3 308 108 321 +3 336 378 491 +3 108 378 336 +3 336 321 108 +3 491 363 336 +3 302 321 336 +3 141 197 105 +3 105 446 53 +3 446 105 197 +3 283 446 197 +3 489 283 227 +3 227 25 489 +3 489 446 283 +3 355 446 489 +3 43 230 93 +3 25 323 489 +3 323 25 468 +3 230 355 323 +3 230 323 93 +3 355 489 323 +3 335 470 135 +3 342 135 470 +3 25 342 470 +3 153 123 335 +3 335 135 239 +3 239 153 335 +3 468 470 123 +3 122 55 82 +3 225 0 104 +3 55 104 0 +3 0 225 339 +3 0 339 410 +3 374 410 339 +CELL_TYPES 996 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 diff --git a/test/data/meshio_meshes/vtu/00_raw_binary.vtu b/test/data/meshio_meshes/vtu/00_raw_binary.vtu new file mode 100644 index 0000000000000000000000000000000000000000..bb38670420cff754fa283a0d152ba69060a3d815 GIT binary patch literal 7324 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 J-za7Ee*t&h5taY| literal 0 HcmV?d00001 diff --git a/test/data/meshio_meshes/wkt/simple.wkt b/test/data/meshio_meshes/wkt/simple.wkt new file mode 100644 index 000000000..a35c8a325 --- /dev/null +++ b/test/data/meshio_meshes/wkt/simple.wkt @@ -0,0 +1 @@ +TIN (((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0))) diff --git a/test/data/meshio_meshes/wkt/whitespaced.wkt b/test/data/meshio_meshes/wkt/whitespaced.wkt new file mode 100644 index 000000000..15c42bca5 --- /dev/null +++ b/test/data/meshio_meshes/wkt/whitespaced.wkt @@ -0,0 +1,4 @@ + TIN ( + ((0 + 0 0, 0 0.00 .1, 0. 0.1 0, 0 0 0)), ( +( 0 0 0 , 0 1 0, 1 1 0, 0 0 0))) diff --git a/test/tests.set b/test/tests.set index fb8380f90..9de76f4a3 100644 --- a/test/tests.set +++ b/test/tests.set @@ -131,6 +131,8 @@ SET(SESSION_FREE_TESTS doublenodes_polyhedra.py shaper_smesh_groups_without_session.py ssl_hdf5_symbols_conflicts.py + SMESH_MeshioShapes.py + SMESH_MeshioFiles.py ) # Additional files to install (not tests)