Salome HOME
[bos #40653][CEA] New mesh import export formats with meshio. 33/head
authorKonstantin Leontev <Konstantin.LEONTEV@opencascade.com>
Wed, 7 Feb 2024 09:48:43 +0000 (09:48 +0000)
committerKonstantin Leontev <Konstantin.LEONTEV@opencascade.com>
Thu, 2 May 2024 10:35:14 +0000 (11:35 +0100)
77 files changed:
doc/gui/input/importing_exporting_meshes.rst
idl/SMESH_Gen.idl
idl/SMESH_Mesh.idl
src/SMESHGUI/CMakeLists.txt
src/SMESHGUI/SMESHGUI.cxx
src/SMESHGUI/SMESHGUI_Meshio.cxx [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_Meshio.h [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_Operations.h
src/SMESHGUI/SMESH_msg_en.ts
src/SMESHGUI/SMESH_msg_fr.ts
src/SMESHGUI/SMESH_msg_ja.ts
src/SMESH_I/CMakeLists.txt
src/SMESH_I/SMESH_Gen_i.cxx
src/SMESH_I/SMESH_Gen_i.hxx
src/SMESH_I/SMESH_Mesh_i.cxx
src/SMESH_I/SMESH_Mesh_i.hxx
src/SMESH_I/SMESH_Meshio.cxx [new file with mode: 0644]
src/SMESH_I/SMESH_Meshio.h [new file with mode: 0644]
src/SMESH_SWIG/smeshBuilder.py
test/SMESH_MeshioFiles.py [new file with mode: 0644]
test/SMESH_MeshioShapes.py [new file with mode: 0644]
test/data/meshio_meshes/abaqus/README.md [new file with mode: 0644]
test/data/meshio_meshes/abaqus/UUea.inp [new file with mode: 0644]
test/data/meshio_meshes/abaqus/element_elset.inp [new file with mode: 0644]
test/data/meshio_meshes/abaqus/nle1xf3c.inp [new file with mode: 0644]
test/data/meshio_meshes/abaqus/wInclude_bulk.inp [new file with mode: 0644]
test/data/meshio_meshes/abaqus/wInclude_main.inp [new file with mode: 0644]
test/data/meshio_meshes/flac3d/flac3d_mesh_ex.f3grid [new file with mode: 0644]
test/data/meshio_meshes/flac3d/flac3d_mesh_ex_bin.f3grid [new file with mode: 0644]
test/data/meshio_meshes/med/README.md [new file with mode: 0644]
test/data/meshio_meshes/med/box.med [new file with mode: 0644]
test/data/meshio_meshes/med/cylinder.med [new file with mode: 0644]
test/data/meshio_meshes/medit/cube86.mesh [new file with mode: 0644]
test/data/meshio_meshes/medit/hch_strct.4.be.meshb [new file with mode: 0644]
test/data/meshio_meshes/medit/hch_strct.4.meshb [new file with mode: 0644]
test/data/meshio_meshes/medit/sphere_mixed.1.meshb [new file with mode: 0644]
test/data/meshio_meshes/msh/Makefile [new file with mode: 0644]
test/data/meshio_meshes/msh/README.md [new file with mode: 0644]
test/data/meshio_meshes/msh/insulated-2.2.msh [new file with mode: 0644]
test/data/meshio_meshes/msh/insulated-4.1.msh [new file with mode: 0644]
test/data/meshio_meshes/nastran/README.md [new file with mode: 0644]
test/data/meshio_meshes/nastran/cylinder.fem [new file with mode: 0644]
test/data/meshio_meshes/nastran/cylinder_cells_first.fem [new file with mode: 0644]
test/data/meshio_meshes/netgen/periodic_1d.vol [new file with mode: 0644]
test/data/meshio_meshes/netgen/periodic_2d.vol [new file with mode: 0644]
test/data/meshio_meshes/netgen/periodic_3d.vol [new file with mode: 0644]
test/data/meshio_meshes/neuroglancer/simple1 [new file with mode: 0644]
test/data/meshio_meshes/obj/elephav.obj [new file with mode: 0644]
test/data/meshio_meshes/ply/bun_zipper_res4.ply [new file with mode: 0644]
test/data/meshio_meshes/ply/tet.ply [new file with mode: 0644]
test/data/meshio_meshes/su2/README.md [new file with mode: 0644]
test/data/meshio_meshes/su2/mixgrid.su2 [new file with mode: 0644]
test/data/meshio_meshes/su2/square.su2 [new file with mode: 0644]
test/data/meshio_meshes/tecplot/quad_zone_comma.tec [new file with mode: 0644]
test/data/meshio_meshes/tecplot/quad_zone_multivar.tec [new file with mode: 0644]
test/data/meshio_meshes/tecplot/quad_zone_space.tec [new file with mode: 0644]
test/data/meshio_meshes/tetgen/mesh.ele [new file with mode: 0644]
test/data/meshio_meshes/tetgen/mesh.node [new file with mode: 0644]
test/data/meshio_meshes/ugrid/hch_strct.4.lb8.ugrid [new file with mode: 0644]
test/data/meshio_meshes/ugrid/pyra_cube.ugrid [new file with mode: 0644]
test/data/meshio_meshes/ugrid/sphere_mixed.1.lb8.ugrid [new file with mode: 0644]
test/data/meshio_meshes/vtk/00_image.vtk [new file with mode: 0644]
test/data/meshio_meshes/vtk/01_image.vtk [new file with mode: 0644]
test/data/meshio_meshes/vtk/02_structured.vtk [new file with mode: 0644]
test/data/meshio_meshes/vtk/03_rectilinear.vtk [new file with mode: 0644]
test/data/meshio_meshes/vtk/04_rectilinear.vtk [new file with mode: 0644]
test/data/meshio_meshes/vtk/05_rectilinear.vtk [new file with mode: 0644]
test/data/meshio_meshes/vtk/06_color_scalars.vtk [new file with mode: 0644]
test/data/meshio_meshes/vtk/06_unstructured.vtk [new file with mode: 0644]
test/data/meshio_meshes/vtk/gh-935.vtk [new file with mode: 0644]
test/data/meshio_meshes/vtk/rbc_001.vtk [new file with mode: 0644]
test/data/meshio_meshes/vtu/00_raw_binary.vtu [new file with mode: 0644]
test/data/meshio_meshes/vtu/01_raw_binary_int64.vtu [new file with mode: 0644]
test/data/meshio_meshes/vtu/02_raw_compressed.vtu [new file with mode: 0644]
test/data/meshio_meshes/wkt/simple.wkt [new file with mode: 0644]
test/data/meshio_meshes/wkt/whitespaced.wkt [new file with mode: 0644]
test/tests.set

index fe9aa27f1ee0e97668f2b6e03f87710a66733dc0..3f4f120726933797a9f99bb5e3f44e69278afe67 100644 (file)
@@ -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.
index 2368039752816c4ebbe2d57a4462a5d598b936c9..f3bf7f4542c6fe5304318c34c150ebda0ceeef22 100644 (file)
@@ -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
index fabf323432f2c69feac607a4d34e25e88411fae8..9a888182cfe0a9b5a11a2fd5f35e23f93da32628 100644 (file)
@@ -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,
index 862ef5de0d00d630926b06aeb03cd315bc56ef18..6d83cf9543f804ef86e453570d3663328b9c1fea 100644 (file)
@@ -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
index bbf36ce1eae6e140b7f6b591d570d37da8ea19b4..5f1d4549a0704076c63ebd7755a371544b2e5cdc 100644 (file)
@@ -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);
+
+    if (isMESHIO && !SMESHGUI_Meshio::IsMeshioInstalled())
+    {
+      return;
+    }
 
-    const bool multiMeshSupported = ( isMED || isCGNS ); // file can hold several meshes
+    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 (file)
index 0000000..048dd4a
--- /dev/null
@@ -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 <SUIT_Desktop.h>
+#include <SUIT_FileDlg.h>
+#include <SUIT_MessageBox.h>
+
+// SALOME KERNEL includes
+#include <utilities.h>
+
+// Qt
+#include <QStringList>
+
+
+/*!
+  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 (file)
index 0000000..b54a535
--- /dev/null
@@ -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 <QList>
+#include <QPair>
+
+// IDL includes
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(SMESH_Mesh)
+#include CORBA_SERVER_HEADER(SMESH_Gen)
+
+class QStringList;
+
+class SMESHGUI_EXPORT SMESHGUI_Meshio
+{
+  using meshList = QList<QPair<SMESH::SMESH_IDSource_var, QString>>;
+
+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
index bdf6e7382f98a3b7e514e4c86da706fba4f2316b..9b9ee14255584314421fffe7ce8fb128bec78364 100644 (file)
@@ -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
index 8c6f0359b72e5b87e5881e075b76c175bddd5914..5e07a0d3198970ab813b74a0d1b79b95132ebc49 100644 (file)
         <source>MEN_GMF</source>
         <translation>GMF file</translation>
     </message>
+    <message>
+        <source>MEN_IMPORT_MESHIO</source>
+        <translation>other formats... (meshio)</translation>
+    </message>
+    <message>
+        <source>MEN_EXPORT_MESHIO</source>
+        <translation>other formats... (meshio)</translation>
+    </message>
     <message>
         <source>MEN_MERGE</source>
         <translation>Merge Nodes</translation>
@@ -1971,6 +1979,10 @@ so that the application may crash. Do you wish to continue visualization?</trans
 Probably, there is not enough space on disk, or the version of MED file used is not compatible with the mesh.
 </translation>
     </message>
+    <message>
+        <source>SMESH_EXPORT_FAILED_SHORT</source>
+        <translation>Mesh export failed.</translation>
+    </message>
     <message>
         <source>SMESH_EXPORT_MED_DUPLICATED_GRP</source>
         <translation>There are duplicated group names in mesh &quot;%1&quot;.
@@ -2002,6 +2014,22 @@ Overwrite the file?</translation>
 meshes with the following names: %1
 The result file may be incorrect.
 Overwrite the file?</translation>
+    </message>
+    <message>
+        <source>SMESH_EXPORT_MESHIO_ONLY_MESH</source>
+        <translation>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?</translation>
+    </message>
+    <message>
+        <source>SMESH_MESHIO_NOT_INSTALLED</source>
+        <translation>Meshio is not installed!
+Operation will be canceled.
+
+Try to install meshio with a command:
+pip install meshio[all]</translation>
     </message>
     <message>
         <source>EXPORT_NOT_SUPPORTED</source>
index 9d00671aea312585b76d9d77c7b71165ba880031..c6c37fef589c0c236a6a2749a09a53af64113e15 100644 (file)
         <source>MEN_GMF</source>
         <translation>Fichier GMF</translation>
     </message>
+    <message>
+        <source>MEN_IMPORT_MESHIO</source>
+        <translation>autres formats... (meshio)</translation>
+    </message>
+    <message>
+        <source>MEN_EXPORT_MESHIO</source>
+        <translation>autres formats... (meshio)</translation>
+    </message>
     <message>
         <source>MEN_MERGE</source>
         <translation>Fusionner les nœuds</translation>
@@ -1966,6 +1974,10 @@ ce qui peut faire planter l'application. Voulez-vous continuer la visualisation
         <translation>Impossible d'exporter le maillage.
 Vérifiez l'espace disponible sur le disque.</translation>
     </message>
+    <message>
+        <source>SMESH_EXPORT_FAILED_SHORT</source>
+        <translation>Impossible d'exporter le maillage.</translation>
+    </message>
     <message>
         <source>SMESH_EXPORT_MED_DUPLICATED_GRP</source>
         <translation>Il y a des noms de groupes dupliqués dans le maillage &quot;%1&quot;.
@@ -1997,6 +2009,22 @@ Ecraser le fichier ?</translation>
 des maillages avec les noms suivants: %1
 Le fichier obtenu pourrait être incorrect.
 Ecraser le fichier ?</translation>
+    </message>
+    <message>
+        <source>SMESH_EXPORT_MESHIO_ONLY_MESH</source>
+        <translation>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?</translation>
+    </message>
+    <message>
+        <source>SMESH_MESHIO_NOT_INSTALLED</source>
+        <translation>Meshio n'est pas installé!
+L'opération sera annulée.
+
+Essayez d'installer meshio avec une commande:
+pip install meshio[all]</translation>
     </message>
     <message>
         <source>EXPORT_NOT_SUPPORTED</source>
index a2704dba5e187ed04baa9b81ad972d603ea1db71..37cc0a015ce01261e6b90f4e006565417efe3a99 100644 (file)
       <source>MEN_GMF</source>
       <translation>GMFファイル</translation>
     </message>
+    <message>
+        <source>MEN_IMPORT_MESHIO</source>
+        <translation>他の形式... (meshio)</translation>
+    </message>
+    <message>
+        <source>MEN_EXPORT_MESHIO</source>
+        <translation>他の形式... (meshio)</translation>
+    </message>
     <message>
       <source>MEN_MERGE</source>
       <translation>節点の結合</translation>
       <source>SMESH_EXPORT_FAILED</source>
       <translation>メッシュをエクスポートすることができません。ディスクの空き領域を確認してください。</translation>
     </message>
+    <message>
+        <source>SMESH_EXPORT_FAILED_SHORT</source>
+        <translation>メッシュのエクスポートに失敗しました。</translation>
+    </message>
     <message>
       <source>SMESH_EXPORT_MED_DUPLICATED_GRP</source>
       <translation>「%1」メッシュ内で重複するグループの名前です。エクスポートをキャンセルすることができ、名前の変更、結果の MED ファイル名に非グループの場合は研究の名前を一致しません。続行しますか。</translation>
       <source>SMESH_EXPORT_MED_MESH_NAMES_COLLISION</source>
       <translation>選択したファイルには既に次の名を持つメッシュが含まれています: %1 結果ファイルが正しくない可能性があります。ファイルを上書きしますか。</translation>
     </message>
+    <message>
+      <source>SMESH_EXPORT_MESHIO_ONLY_MESH</source>
+      <translation>現在の実装では、中間 MED ファイルを介したエクスポートが使用されます。
+ただし、mesio は複数のメッシュを含む MED ファイルの読み取りをサポートしていません。
+選択したメッシュは別のファイルに保存されます。
+
+続けたいですか?</translation>
+    </message>
+    <message>
+        <source>SMESH_MESHIO_NOT_INSTALLED</source>
+        <translation>メシオはインストールされていません!
+操作はキャンセルされます。
+
+次のコマンドで mesio をインストールしてみます。
+pip install meshio[all]</translation>
+    </message>
     <message>
       <source>EXPORT_NOT_SUPPORTED</source>
       <translation>名前 '%1' を %2 %3 とメッシュのエクスポートは無視されます。続行しますか。</translation>
index e90b62654a2ac0f40f826af6874078f4557d031a..27189b4fd5a8be0cca0b1db47dace937ae82bdf8 100644 (file)
@@ -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 ---
index 265be507473ab82b1f5f1ecc164b383210631467..1c78a25268a822ff4b26e282c0f1e8ffd35028e0 100644 (file)
 #include <SMESH_BoostTxtArchive.hxx>
 #include <SMESH_SequentialMesh_i.hxx>
 #include <SMESH_ParallelMesh_i.hxx>
+#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<SALOMEDS::SObject_wrap>& 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<string> 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<SALOMEDS::SObject_wrap> 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<SMESH_Mesh_i*>(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();
+}
 
 //=============================================================================
 /*!
index ce5e28973d288b90b68891e5ef38c51caab76a74..1b3af8ad506a974b952fb06192d4bb42e1a33e9d 100644 (file)
@@ -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,
index 13c602d92236e2149961b4aad33e877a31a5106c..e1c8ca9163a28ec9ed99493064563d9d31221f5f 100644 (file)
@@ -57,6 +57,7 @@
 #include "SMESH_PreMeshInfo.hxx"
 #include "SMESH_PythonDump.hxx"
 #include "SMESH_subMesh_i.hxx"
+#include "SMESH_Meshio.h"
 
 #include <SALOMEDS_Attributes_wrap.hxx>
 #include <SALOMEDS_wrap.hxx>
@@ -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
index d56f4e28aabd9643f47f7893dbb3c1c2248bf276..131993a40c8ddbac76c5e21e36149ebb2bd2d9c8 100644 (file)
@@ -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 (file)
index 0000000..d23d52c
--- /dev/null
@@ -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 <SALOMEDS_Tool.hxx>
+#include <Basics_DirUtils.hxx>
+#include <SALOME_Exception.hh>
+#include <utilities.h>
+
+// Qt
+#include <QFileInfo>
+
+#include <fstream>
+
+
+/*!
+  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<int> 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 (file)
index 0000000..efb41b0
--- /dev/null
@@ -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 <QString>
+
+
+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
index 2401ed74cfcc7be98c4e92706c120e297250a1c7..ce1bfdc13cbb011c4721a6a7dfa8d146803186cf 100644 (file)
@@ -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 <SMESH.SMESH_IDSource>`)
+                        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 (file)
index 0000000..6bd3cc8
--- /dev/null
@@ -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 (file)
index 0000000..f77d7a9
--- /dev/null
@@ -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 (file)
index 0000000..5c77692
--- /dev/null
@@ -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 (file)
index 0000000..b421ea6
--- /dev/null
@@ -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 (file)
index 0000000..42c197d
--- /dev/null
@@ -0,0 +1,14 @@
+*Heading\r
+Abaqus DataFile Version 6.14\r
+*Node\r
+1, 1, 0, 0\r
+2, 1, 1, 0\r
+3, 2, 0.5, 0\r
+4, 0, 0.5, 0\r
+*Element, type=S3, ELSET=right\r
+1, 1, 2, 3\r
+*Element, type=S3, ELSET=left\r
+2, 1, 2, 4\r
+*Elset, elset=all\r
+right\r
+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 (file)
index 0000000..c25c5f3
--- /dev/null
@@ -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 (file)
index 0000000..67e863d
--- /dev/null
@@ -0,0 +1,13 @@
+*NODE\r
+      1,           0.0,           0.0,           0.0\r
+      2,           1.0,           0.0,           0.0\r
+      3,           0.5,           0.0,           0.0\r
+*ELEMENT, type=B31\r
+      3,             1,             3\r
+      4,             3,             2\r
+*Elset, elset=elBm_set\r
+ 3, 4\r
+** Section: elBm_set  Profile: elBm_set\r
+*Beam Section, elset=elBm_set, material=Bm_mat, temperature=GRADIENT, section=I\r
+ 0.15, 0.3, 0.15, 0.15, 0.0107, 0.0107, 0.0071\r
+ 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 (file)
index 0000000..9bc75ad
--- /dev/null
@@ -0,0 +1,7 @@
+*Heading\r
+** meshio with *include example\r
+*Preprint, echo=NO, model=NO, history=NO, contact=NO\r
+*constraint controls, print=yes\r
+*Part, name=ParametricModel\r
+*INCLUDE,INPUT=wInclude_bulk.inp\r
+*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 (file)
index 0000000..18d2ca1
--- /dev/null
@@ -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 (file)
index 0000000..ff34069
Binary files /dev/null and b/test/data/meshio_meshes/flac3d/flac3d_mesh_ex_bin.f3grid differ
diff --git a/test/data/meshio_meshes/med/README.md b/test/data/meshio_meshes/med/README.md
new file mode 100644 (file)
index 0000000..aedac70
--- /dev/null
@@ -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 (file)
index 0000000..39562ab
Binary files /dev/null and b/test/data/meshio_meshes/med/box.med differ
diff --git a/test/data/meshio_meshes/med/cylinder.med b/test/data/meshio_meshes/med/cylinder.med
new file mode 100644 (file)
index 0000000..86c6ac1
Binary files /dev/null and b/test/data/meshio_meshes/med/cylinder.med differ
diff --git a/test/data/meshio_meshes/medit/cube86.mesh b/test/data/meshio_meshes/medit/cube86.mesh
new file mode 100644 (file)
index 0000000..504f998
--- /dev/null
@@ -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 (file)
index 0000000..46f9e23
Binary files /dev/null and b/test/data/meshio_meshes/medit/hch_strct.4.be.meshb differ
diff --git a/test/data/meshio_meshes/medit/hch_strct.4.meshb b/test/data/meshio_meshes/medit/hch_strct.4.meshb
new file mode 100644 (file)
index 0000000..57e1b9a
Binary files /dev/null and b/test/data/meshio_meshes/medit/hch_strct.4.meshb differ
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 (file)
index 0000000..de01640
Binary files /dev/null and b/test/data/meshio_meshes/medit/sphere_mixed.1.meshb differ
diff --git a/test/data/meshio_meshes/msh/Makefile b/test/data/meshio_meshes/msh/Makefile
new file mode 100644 (file)
index 0000000..32c81f5
--- /dev/null
@@ -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 (file)
index 0000000..578ca8b
--- /dev/null
@@ -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 (file)
index 0000000..2315acb
--- /dev/null
@@ -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 (file)
index 0000000..6699249
--- /dev/null
@@ -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 (file)
index 0000000..9a2ff1c
--- /dev/null
@@ -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 (file)
index 0000000..30149d9
--- /dev/null
@@ -0,0 +1,245 @@
+$$\r
+$$ Optistruct Input Deck Generated by HyperMesh Version  : 2017.3.0.17\r
+$$ Generated using HyperMesh-Optistruct Template Version : 2017.3\r
+$$\r
+$$   Template:  optistruct\r
+$$\r
+$$\r
+$$ optistruct\r
+$\r
+$$------------------------------------------------------------------------------$\r
+$$                      Case Control Cards                                      $\r
+$$------------------------------------------------------------------------------$\r
+$$--------------------------------------------------------------\r
+$$ HYPERMESH TAGS \r
+$$--------------------------------------------------------------\r
+$$BEGIN TAGS\r
+$$END TAGS\r
+$\r
+BEGIN BULK\r
+$$\r
+$$  Stacking Information for Ply-Based Composite Definition\r
+$$\r
+\r
+\r
+\r
+\r
+\r
+$$\r
+$$  GRID Data\r
+$$\r
+GRID           1        1.0     -2.45-160.0     \r
+GRID           2        1.0     -2.45-161.0     \r
+GRID           3        .7071068.70710680.0     \r
+GRID           4        2.06-15 1.0     0.0     \r
+GRID           5        -.707107.70710680.0     \r
+GRID           6        -1.0    9.004-150.0     \r
+GRID           7        -.707107-.7071070.0     \r
+GRID           8        8.698-15-1.0    0.0     \r
+GRID           9        .7071068-.7071070.0     \r
+GRID          10        .7071068.70710681.0     \r
+GRID          11        2.06-15 1.0     1.0     \r
+GRID          12        -.707107.70710681.0     \r
+GRID          13        -1.0    9.004-151.0     \r
+GRID          14        -.707107-.7071071.0     \r
+GRID          15        8.698-15-1.0    1.0     \r
+GRID          16        .7071068-.7071071.0     \r
+GRID          17        .3254219-6.154-20.0     \r
+GRID          18        9.8468-2.35124360.0     \r
+GRID          19        -0.14533-.2592060.0     \r
+GRID          20        -.0442730.2844711.0     \r
+GRID          21        .3224226-.2460451.0     \r
+GRID          22        -.169874-.2417461.0     \r
+GRID          23        -5.965-2-.291461.5227236\r
+GRID          24        -.412743.1771685.4583333\r
+GRID          25        -.271964-.345838.4791667\r
+GRID          26        .1950392-.464081.4583333\r
+GRID          27        .2936736-.1216440.5     \r
+GRID          28        .4547628.1859033.5416667\r
+GRID          29        -4.085-20.440721.4791667\r
+GRID          30        -.247058.3278403.4868056\r
+GRID          31        .2479088.3405819.5163716\r
+GRID          32        .2528394-.303703.4738152\r
+GRID          33        -0.35812-7.943-2.4813956\r
+$$\r
+$$  CBAR Elements\r
+$$\r
+CBAR          37               3       11.0     0.0     0.0             \r
+CBAR          38               4       31.0     0.0     0.0             \r
+CBAR          39               5       41.0     0.0     0.0             \r
+CBAR          40               6       51.0     0.0     0.0             \r
+CBAR          41               7       61.0     0.0     0.0             \r
+CBAR          42               8       71.0     0.0     0.0             \r
+CBAR          43               9       81.0     0.0     0.0             \r
+CBAR          44               1       91.0     0.0     0.0             \r
+CBAR          45               2      101.0     0.0     0.0             \r
+CBAR          46              10      111.0     0.0     0.0             \r
+CBAR          47              11      121.0     0.0     0.0             \r
+CBAR          48              12      131.0     0.0     0.0             \r
+CBAR          49              13      141.0     0.0     0.0             \r
+CBAR          50              14      151.0     0.0     0.0             \r
+CBAR          51              15      161.0     0.0     0.0             \r
+CBAR          52              16       21.0     0.0     0.0             \r
+CBAR          53               1       21.0     0.0     0.0             \r
+$\r
+$HMMOVE        1\r
+$             37THRU          53\r
+$$\r
+$$  CTRIA3 Data\r
+$$\r
+CTRIA3       117       0       1       9      17\r
+CTRIA3       118       0      17      19      18\r
+CTRIA3       119       0      16       2      21\r
+CTRIA3       120       0      22      21      20\r
+$\r
+$HMMOVE        1\r
+$            117THRU         120\r
+$$\r
+$$  CQUAD4 Elements\r
+$$\r
+CQUAD4        19       0       3       1      17      18\r
+CQUAD4        20       0       4       3      18       5\r
+CQUAD4        21       0       6       5      18      19\r
+CQUAD4        22       0       7       6      19       8\r
+CQUAD4        23       0       9       8      19      17\r
+CQUAD4        24       0       2      10      20      21\r
+CQUAD4        25       0      10      11      12      20\r
+CQUAD4        26       0      12      13      22      20\r
+CQUAD4        27       0      13      14      15      22\r
+CQUAD4        28       0      15      16      21      22\r
+CQUAD4        29       0      11      10       3       4\r
+CQUAD4        30       0      13      12       5       6\r
+CQUAD4        31       0      14      13       6       7\r
+CQUAD4        32       0      16      15       8       9\r
+CQUAD4        33       0       2      16       9       1\r
+CQUAD4        34       0       1       3      10       2\r
+CQUAD4        35       0       5      12      11       4\r
+CQUAD4        36       0       8      15      14       7\r
+$\r
+$HMMOVE        1\r
+$             19THRU          36\r
+$$\r
+$$  CPYRA Elements 5-noded\r
+$$\r
+CPYRA          1       0      11       4       3      10      29\r
+CPYRA          2       0      13       6       5      12      24\r
+CPYRA          3       0      14       7       6      13      25\r
+CPYRA          4       0      16       9       8      15      26\r
+CPYRA          5       0       2       1       9      16      27\r
+CPYRA          6       0       1       2      10       3      28\r
+CPYRA          7       0       5       4      11      12      29\r
+CPYRA          8       0       8       7      14      15      25\r
+CPYRA          9       0       2      21      20      10      28\r
+CPYRA         10       0      10      20      12      11      29\r
+CPYRA         11       0      12      20      22      13      24\r
+CPYRA         12       0      13      22      15      14      25\r
+CPYRA         13       0      15      22      21      16      26\r
+CPYRA         14       0       3      18      17       1      28\r
+CPYRA         15       0       4       5      18       3      29\r
+CPYRA         16       0       6      19      18       5      24\r
+CPYRA         17       0       7       8      19       6      25\r
+CPYRA         18       0       9      17      19       8      26\r
+$\r
+$HMMOVE        1\r
+$              1THRU          18\r
+$$\r
+$$  CTETRA elements 4-noded\r
+$$\r
+CTETRA        54       0      29      30      27      20\r
+CTETRA        55       0      23       8      25      19\r
+CTETRA        56       0      15      25      22      23\r
+CTETRA        57       0       5      18      29      30\r
+CTETRA        58       0      23      27      33      22\r
+CTETRA        59       0      16       2      27      21\r
+CTETRA        60       0      32      19      17      26\r
+CTETRA        61       0      17      19      27      18\r
+CTETRA        62       0      31      10      29      20\r
+CTETRA        63       0      27       2      28      21\r
+CTETRA        64       0      17       1      28      27\r
+CTETRA        65       0      27      20      22      21\r
+CTETRA        66       0      32      26      17       9\r
+CTETRA        67       0      31      20      29      27\r
+CTETRA        68       0      28      20      27      21\r
+CTETRA        69       0      27      24      22      20\r
+CTETRA        70       0      28       2      27       1\r
+CTETRA        71       0       6      13      33      24\r
+CTETRA        72       0      19      24      33      27\r
+CTETRA        73       0      29      20      12      30\r
+CTETRA        74       0      16      21      32      26\r
+CTETRA        75       0      23      22      33      25\r
+CTETRA        76       0      31      18      29       3\r
+CTETRA        77       0      29      18      31      27\r
+CTETRA        78       0      23      25      33      19\r
+CTETRA        79       0      21      26      23      32\r
+CTETRA        80       0      29      18      27      30\r
+CTETRA        81       0      29      30      12       5\r
+CTETRA        82       0      27      19      32      23\r
+CTETRA        83       0      28      18      17      27\r
+CTETRA        84       0      24      33      22      13\r
+CTETRA        85       0      29      10      31       3\r
+CTETRA        86       0      23       8      15      25\r
+CTETRA        87       0      27      18      19      24\r
+CTETRA        88       0      17       1      27       9\r
+CTETRA        89       0      16      26      32       9\r
+CTETRA        90       0      26       8      23      19\r
+CTETRA        91       0      15      23      22      26\r
+CTETRA        92       0      21      32      23      27\r
+CTETRA        93       0      32      19      26      23\r
+CTETRA        94       0      26       8      15      23\r
+CTETRA        95       0      30      24      27      20\r
+CTETRA        96       0       5      18      30      24\r
+CTETRA        97       0      30      20      12      24\r
+CTETRA        98       0      30      18      27      24\r
+CTETRA        99       0      30      24      12       5\r
+CTETRA       100       0      21      27      23      22\r
+CTETRA       101       0      22      33      25      13\r
+CTETRA       102       0      28      10      31      20\r
+CTETRA       103       0      28      20      31      27\r
+CTETRA       104       0      28      18      31       3\r
+CTETRA       105       0      31      18      28      27\r
+CTETRA       106       0      31      10      28       3\r
+CTETRA       107       0       6      13      25      33\r
+CTETRA       108       0      16      32      27       9\r
+CTETRA       109       0      21      22      23      26\r
+CTETRA       110       0      27      19      17      32\r
+CTETRA       111       0      27      32      17       9\r
+CTETRA       112       0      16      21      27      32\r
+CTETRA       113       0      19      25      33       6\r
+CTETRA       114       0      24      27      22      33\r
+CTETRA       115       0      23      19      33      27\r
+CTETRA       116       0      19       6      33      24\r
+$\r
+$HMMOVE        1\r
+$             54THRU         116\r
+$$\r
+$$------------------------------------------------------------------------------$\r
+$$    HyperMesh name and color information for generic components               $\r
+$$------------------------------------------------------------------------------$\r
+$HMNAME COMP                   1"misc1" \r
+$HWCOLOR COMP                  1      11\r
+$\r
+\r
+$\r
+\r
+$\r
+$$\r
+$$------------------------------------------------------------------------------$\r
+$$ HyperMesh Commands for loadcollectors name and color information $\r
+$$------------------------------------------------------------------------------$\r
+ENDDATA\r
+$$\r
+$$------------------------------------------------------------------------------$$\r
+$$        Data Definition for AutoDV                                            $$\r
+$$------------------------------------------------------------------------------$$\r
+$$\r
+$$-----------------------------------------------------------------------------$$\r
+$$        Design Variables Card for Control Perturbations                      $$\r
+$$-----------------------------------------------------------------------------$$\r
+$$\r
+$$------------------------------------------------------------------------------$\r
+$$        Domain Element Definitions                                            $\r
+$$------------------------------------------------------------------------------$\r
+$$\r
+$$------------------------------------------------------------------------------$$\r
+$$            Control Perturbation                                              $$\r
+$$------------------------------------------------------------------------------$$\r
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 (file)
index 0000000..f5ed467
--- /dev/null
@@ -0,0 +1,245 @@
+$$\r
+$$ Optistruct Input Deck Generated by HyperMesh Version  : 2017.3.0.17\r
+$$ Generated using HyperMesh-Optistruct Template Version : 2017.3\r
+$$\r
+$$   Template:  optistruct\r
+$$\r
+$$\r
+$$ optistruct\r
+$\r
+$$------------------------------------------------------------------------------$\r
+$$                      Case Control Cards                                      $\r
+$$------------------------------------------------------------------------------$\r
+$$--------------------------------------------------------------\r
+$$ HYPERMESH TAGS\r
+$$--------------------------------------------------------------\r
+$$BEGIN TAGS\r
+$$END TAGS\r
+$\r
+BEGIN BULK\r
+$$\r
+$$  Stacking Information for Ply-Based Composite Definition\r
+$$\r
+\r
+\r
+\r
+\r
+\r
+$$\r
+$$  CBAR Elements\r
+$$\r
+CBAR          37               3       11.0     0.0     0.0\r
+CBAR          38               4       31.0     0.0     0.0\r
+CBAR          39               5       41.0     0.0     0.0\r
+CBAR          40               6       51.0     0.0     0.0\r
+CBAR          41               7       61.0     0.0     0.0\r
+CBAR          42               8       71.0     0.0     0.0\r
+CBAR          43               9       81.0     0.0     0.0\r
+CBAR          44               1       91.0     0.0     0.0\r
+CBAR          45               2      101.0     0.0     0.0\r
+CBAR          46              10      111.0     0.0     0.0\r
+CBAR          47              11      121.0     0.0     0.0\r
+CBAR          48              12      131.0     0.0     0.0\r
+CBAR          49              13      141.0     0.0     0.0\r
+CBAR          50              14      151.0     0.0     0.0\r
+CBAR          51              15      161.0     0.0     0.0\r
+CBAR          52              16       21.0     0.0     0.0\r
+CBAR          53               1       21.0     0.0     0.0\r
+$\r
+$HMMOVE        1\r
+$             37THRU          53\r
+$$\r
+$$  CTRIA3 Data\r
+$$\r
+CTRIA3       117       0       1       9      17\r
+CTRIA3       118       0      17      19      18\r
+CTRIA3       119       0      16       2      21\r
+CTRIA3       120       0      22      21      20\r
+$\r
+$HMMOVE        1\r
+$            117THRU         120\r
+$$\r
+$$  CQUAD4 Elements\r
+$$\r
+CQUAD4        19       0       3       1      17      18\r
+CQUAD4        20       0       4       3      18       5\r
+CQUAD4        21       0       6       5      18      19\r
+CQUAD4        22       0       7       6      19       8\r
+CQUAD4        23       0       9       8      19      17\r
+CQUAD4        24       0       2      10      20      21\r
+CQUAD4        25       0      10      11      12      20\r
+CQUAD4        26       0      12      13      22      20\r
+CQUAD4        27       0      13      14      15      22\r
+CQUAD4        28       0      15      16      21      22\r
+CQUAD4        29       0      11      10       3       4\r
+CQUAD4        30       0      13      12       5       6\r
+CQUAD4        31       0      14      13       6       7\r
+CQUAD4        32       0      16      15       8       9\r
+CQUAD4        33       0       2      16       9       1\r
+CQUAD4        34       0       1       3      10       2\r
+CQUAD4        35       0       5      12      11       4\r
+CQUAD4        36       0       8      15      14       7\r
+$\r
+$HMMOVE        1\r
+$             19THRU          36\r
+$$\r
+$$  CPYRA Elements 5-noded\r
+$$\r
+CPYRA          1       0      11       4       3      10      29\r
+CPYRA          2       0      13       6       5      12      24\r
+CPYRA          3       0      14       7       6      13      25\r
+CPYRA          4       0      16       9       8      15      26\r
+CPYRA          5       0       2       1       9      16      27\r
+CPYRA          6       0       1       2      10       3      28\r
+CPYRA          7       0       5       4      11      12      29\r
+CPYRA          8       0       8       7      14      15      25\r
+CPYRA          9       0       2      21      20      10      28\r
+CPYRA         10       0      10      20      12      11      29\r
+CPYRA         11       0      12      20      22      13      24\r
+CPYRA         12       0      13      22      15      14      25\r
+CPYRA         13       0      15      22      21      16      26\r
+CPYRA         14       0       3      18      17       1      28\r
+CPYRA         15       0       4       5      18       3      29\r
+CPYRA         16       0       6      19      18       5      24\r
+CPYRA         17       0       7       8      19       6      25\r
+CPYRA         18       0       9      17      19       8      26\r
+$\r
+$HMMOVE        1\r
+$              1THRU          18\r
+$$\r
+$$  CTETRA elements 4-noded\r
+$$\r
+CTETRA        54       0      29      30      27      20\r
+CTETRA        55       0      23       8      25      19\r
+CTETRA        56       0      15      25      22      23\r
+CTETRA        57       0       5      18      29      30\r
+CTETRA        58       0      23      27      33      22\r
+CTETRA        59       0      16       2      27      21\r
+CTETRA        60       0      32      19      17      26\r
+CTETRA        61       0      17      19      27      18\r
+CTETRA        62       0      31      10      29      20\r
+CTETRA        63       0      27       2      28      21\r
+CTETRA        64       0      17       1      28      27\r
+CTETRA        65       0      27      20      22      21\r
+CTETRA        66       0      32      26      17       9\r
+CTETRA        67       0      31      20      29      27\r
+CTETRA        68       0      28      20      27      21\r
+CTETRA        69       0      27      24      22      20\r
+CTETRA        70       0      28       2      27       1\r
+CTETRA        71       0       6      13      33      24\r
+CTETRA        72       0      19      24      33      27\r
+CTETRA        73       0      29      20      12      30\r
+CTETRA        74       0      16      21      32      26\r
+CTETRA        75       0      23      22      33      25\r
+CTETRA        76       0      31      18      29       3\r
+CTETRA        77       0      29      18      31      27\r
+CTETRA        78       0      23      25      33      19\r
+CTETRA        79       0      21      26      23      32\r
+CTETRA        80       0      29      18      27      30\r
+CTETRA        81       0      29      30      12       5\r
+CTETRA        82       0      27      19      32      23\r
+CTETRA        83       0      28      18      17      27\r
+CTETRA        84       0      24      33      22      13\r
+CTETRA        85       0      29      10      31       3\r
+CTETRA        86       0      23       8      15      25\r
+CTETRA        87       0      27      18      19      24\r
+CTETRA        88       0      17       1      27       9\r
+CTETRA        89       0      16      26      32       9\r
+CTETRA        90       0      26       8      23      19\r
+CTETRA        91       0      15      23      22      26\r
+CTETRA        92       0      21      32      23      27\r
+CTETRA        93       0      32      19      26      23\r
+CTETRA        94       0      26       8      15      23\r
+CTETRA        95       0      30      24      27      20\r
+CTETRA        96       0       5      18      30      24\r
+CTETRA        97       0      30      20      12      24\r
+CTETRA        98       0      30      18      27      24\r
+CTETRA        99       0      30      24      12       5\r
+CTETRA       100       0      21      27      23      22\r
+CTETRA       101       0      22      33      25      13\r
+CTETRA       102       0      28      10      31      20\r
+CTETRA       103       0      28      20      31      27\r
+CTETRA       104       0      28      18      31       3\r
+CTETRA       105       0      31      18      28      27\r
+CTETRA       106       0      31      10      28       3\r
+CTETRA       107       0       6      13      25      33\r
+CTETRA       108       0      16      32      27       9\r
+CTETRA       109       0      21      22      23      26\r
+CTETRA       110       0      27      19      17      32\r
+CTETRA       111       0      27      32      17       9\r
+CTETRA       112       0      16      21      27      32\r
+CTETRA       113       0      19      25      33       6\r
+CTETRA       114       0      24      27      22      33\r
+CTETRA       115       0      23      19      33      27\r
+CTETRA       116       0      19       6      33      24\r
+$\r
+$HMMOVE        1\r
+$             54THRU         116\r
+$$\r
+$$  GRID Data\r
+$$\r
+GRID           1        1.0     -2.45-160.0\r
+GRID           2        1.0     -2.45-161.0\r
+GRID           3        .7071068.70710680.0\r
+GRID           4        2.06-15 1.0     0.0\r
+GRID           5        -.707107.70710680.0\r
+GRID           6        -1.0    9.004-150.0\r
+GRID           7        -.707107-.7071070.0\r
+GRID           8        8.698-15-1.0    0.0\r
+GRID           9        .7071068-.7071070.0\r
+GRID          10        .7071068.70710681.0\r
+GRID          11        2.06-15 1.0     1.0\r
+GRID          12        -.707107.70710681.0\r
+GRID          13        -1.0    9.004-151.0\r
+GRID          14        -.707107-.7071071.0\r
+GRID          15        8.698-15-1.0    1.0\r
+GRID          16        .7071068-.7071071.0\r
+GRID          17        .3254219-6.154-20.0\r
+GRID          18        9.8468-2.35124360.0\r
+GRID          19        -0.14533-.2592060.0\r
+GRID          20        -.0442730.2844711.0\r
+GRID          21        .3224226-.2460451.0\r
+GRID          22        -.169874-.2417461.0\r
+GRID          23        -5.965-2-.291461.5227236\r
+GRID          24        -.412743.1771685.4583333\r
+GRID          25        -.271964-.345838.4791667\r
+GRID          26        .1950392-.464081.4583333\r
+GRID          27        .2936736-.1216440.5\r
+GRID          28        .4547628.1859033.5416667\r
+GRID          29        -4.085-20.440721.4791667\r
+GRID          30        -.247058.3278403.4868056\r
+GRID          31        .2479088.3405819.5163716\r
+GRID          32        .2528394-.303703.4738152\r
+GRID          33        -0.35812-7.943-2.4813956\r
+$\r
+$$------------------------------------------------------------------------------$\r
+$$    HyperMesh name and color information for generic components               $\r
+$$------------------------------------------------------------------------------$\r
+$HMNAME COMP                   1"misc1"\r
+$HWCOLOR COMP                  1      11\r
+$\r
+\r
+$\r
+\r
+$\r
+$$\r
+$$------------------------------------------------------------------------------$\r
+$$ HyperMesh Commands for loadcollectors name and color information $\r
+$$------------------------------------------------------------------------------$\r
+ENDDATA\r
+$$\r
+$$------------------------------------------------------------------------------$$\r
+$$        Data Definition for AutoDV                                            $$\r
+$$------------------------------------------------------------------------------$$\r
+$$\r
+$$-----------------------------------------------------------------------------$$\r
+$$        Design Variables Card for Control Perturbations                      $$\r
+$$-----------------------------------------------------------------------------$$\r
+$$\r
+$$------------------------------------------------------------------------------$\r
+$$        Domain Element Definitions                                            $\r
+$$------------------------------------------------------------------------------$\r
+$$\r
+$$------------------------------------------------------------------------------$$\r
+$$            Control Perturbation                                              $$\r
+$$------------------------------------------------------------------------------$$\r
diff --git a/test/data/meshio_meshes/netgen/periodic_1d.vol b/test/data/meshio_meshes/netgen/periodic_1d.vol
new file mode 100644 (file)
index 0000000..dceaff8
--- /dev/null
@@ -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 (file)
index 0000000..e411d0e
--- /dev/null
@@ -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 (file)
index 0000000..b1636e7
--- /dev/null
@@ -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 (file)
index 0000000..b84f1ed
Binary files /dev/null and b/test/data/meshio_meshes/neuroglancer/simple1 differ
diff --git a/test/data/meshio_meshes/obj/elephav.obj b/test/data/meshio_meshes/obj/elephav.obj
new file mode 100644 (file)
index 0000000..d88e833
--- /dev/null
@@ -0,0 +1,2406 @@
+v  58.853138 435.746368 437.847656 \r
+v  61.271862 446.228241 451.650909 \r
+v  45.632473 438.882446 448.876190 \r
+v  43.213753 428.400574 435.072937 \r
+v  56.434418 425.264465 424.044373 \r
+v  72.073807 432.610260 426.819092 \r
+v  74.492523 443.092133 440.622375 \r
+v  77.634003 404.993622 487.831390 \r
+v  63.959820 396.794891 486.676514 \r
+v  62.973885 384.242767 476.827179 \r
+v  75.662132 379.889404 468.132751 \r
+v  89.336319 388.088135 469.287659 \r
+v  90.322258 400.640259 479.136963 \r
+v  93.682159 376.787689 529.558960 \r
+v  82.148361 368.697540 529.924622 \r
+v  82.322182 355.907349 524.009094 \r
+v  94.029808 351.207306 517.727844 \r
+v  105.563606 359.297455 517.362183 \r
+v  105.389778 372.087646 523.277710 \r
+v  108.411240 360.555664 572.781372 \r
+v  99.024544 353.304565 574.287476 \r
+v  99.969086 341.678589 571.660583 \r
+v  110.300323 337.303680 567.527466 \r
+v  119.687019 344.554749 566.021362 \r
+v  118.742477 356.180725 568.648254 \r
+v  121.222130 354.367249 614.419189 \r
+v  113.883820 348.399292 616.557678 \r
+v  115.199722 338.796143 616.260925 \r
+v  123.853928 335.160919 613.825684 \r
+v  131.192230 341.128876 611.687195 \r
+v  129.876343 350.732056 611.983948 \r
+v  131.857529 355.871368 652.373718 \r
+v  126.408997 351.363708 654.638306 \r
+v  127.757248 344.134491 655.665466 \r
+v  134.554031 341.412994 654.428040 \r
+v  140.002563 345.920685 652.163391 \r
+v  138.654312 353.149872 651.136230 \r
+v  140.319107 362.644165 685.414490 \r
+v  136.569427 359.567688 687.388794 \r
+v  137.706100 354.674377 688.867554 \r
+v  142.592468 352.857605 688.372009 \r
+v  146.342163 355.934113 686.397705 \r
+v  145.205475 360.827393 684.918945 \r
+v  148.206787 371.175720 717.345581 \r
+\r
+vn  -0.894299 0.378740 0.238297 \r
+vn  -0.870790 0.373891 0.319266 \r
+vn  -0.863918 0.479090 0.155298 \r
+vn  -0.859066 0.080675 0.505468 \r
+vn  -0.842871 0.351905 0.407101 \r
+vn  -0.841280 -0.539357 -0.036639 \r
+vn  -0.811197 0.308039 0.497062 \r
+vn  -0.801667 -0.593358 0.072500 \r
+vn  -0.777164 0.238562 0.582327 \r
+vn  -0.777007 -0.579595 -0.245620 \r
+vn  -0.766805 -0.615762 0.181239 \r
+vn  -0.763096 -0.465091 0.448748 \r
+vn  -0.737972 -0.613192 0.281768 \r
+vn  -0.715424 -0.593006 0.369476 \r
+vn  -0.272647 0.788640 -0.551099 \r
+vn  -0.164455 0.983456 -0.075955 \r
+vn  -0.118487 0.989085 0.087592 \r
+vn  -0.080297 0.975665 -0.204036 \r
+vn  -0.071552 0.641900 0.763442 \r
+vn  -0.062678 0.961212 0.268595 \r
+vn  -0.054639 -0.798021 -0.600148 \r
+vn  0.001993 0.888912 0.458074 \r
+vn  0.022093 -0.918925 -0.393813 \r
+vn  0.072954 0.762930 0.642351 \r
+vn  0.086181 -0.675437 -0.732365 \r
+vn  0.090718 -0.978638 -0.184493 \r
+vn  0.123058 -0.915326 0.383452 \r
+vn  0.148480 -0.988840 0.012206 \r
+vn  0.194573 -0.962975 0.186604 \r
+vn  0.207306 0.361286 0.909118 \r
+vn  0.745477 0.614181 -0.258932 \r
+vn  0.767884 0.614205 -0.181954 \r
+vn  0.791763 0.545023 0.275794 \r
+vn  0.794751 0.599140 -0.096961 \r
+vn  0.796167 -0.273029 -0.539975 \r
+vn  0.805985 0.526979 -0.269596 \r
+vn  0.825648 0.564131 -0.007864 \r
+vn  0.835943 -0.337450 -0.432814 \r
+vn  0.859478 0.504963 0.079437 \r
+vn  0.871544 -0.368786 -0.323123 \r
+vn  0.872663 -0.115109 -0.474562 \r
+vn  0.901383 -0.373176 -0.219654 \r
+vn  0.908108 -0.418051 0.023938 \r
+vn  0.924977 -0.357868 -0.127861 \r
+\r
+\r
+s off\r
+f 1//15 3//15 2//15\r
+f 1//15 4//15 3//15\r
+f 1//15 5//15 4//15\r
+f 1//15 6//15 5//15\r
+f 1//15 7//15 6//15\r
+f 1//15 2//15 7//15\r
+f 2//19 9//9 8//24\r
+f 2//19 3//4 9//9\r
+f 3//4 10//6 9//9\r
+f 3//4 4//10 10//6\r
+f 4//10 11//21 10//6\r
+f 4//10 5//25 11//21\r
+f 5//25 12//35 11//21\r
+f 5//25 6//41 12//35\r
+f 6//41 13//39 12//35\r
+f 6//41 7//33 13//39\r
+f 7//33 8//24 13//39\r
+f 7//33 2//19 8//24\r
+f 8//24 15//7 14//22\r
+f 8//24 9//9 15//7\r
+f 9//9 16//8 15//7\r
+f 9//9 10//6 16//8\r
+f 10//6 17//23 16//8\r
+f 10//6 11//21 17//23\r
+f 11//21 18//38 17//23\r
+f 11//21 12//35 18//38\r
+f 12//35 19//37 18//38\r
+f 12//35 13//39 19//37\r
+f 13//39 14//22 19//37\r
+f 13//39 8//24 14//22\r
+f 14//22 21//5 20//20\r
+f 14//22 15//7 21//5\r
+f 15//7 22//11 21//5\r
+f 15//7 16//8 22//11\r
+f 16//8 23//26 22//11\r
+f 16//8 17//23 23//26\r
+f 17//23 24//40 23//26\r
+f 17//23 18//38 24//40\r
+f 18//38 25//34 24//40\r
+f 18//38 19//37 25//34\r
+f 19//37 20//20 25//34\r
+f 19//37 14//22 20//20\r
+f 20//20 27//2 26//17\r
+f 20//20 21//5 27//2\r
+f 21//5 28//13 27//2\r
+f 21//5 22//11 28//13\r
+f 22//11 29//28 28//13\r
+f 22//11 23//26 29//28\r
+f 23//26 30//42 29//28\r
+f 23//26 24//40 30//42\r
+f 24//40 31//32 30//42\r
+f 24//40 25//34 31//32\r
+f 25//34 26//17 31//32\r
+f 25//34 20//20 26//17\r
+f 26//17 33//1 32//16\r
+f 26//17 27//2 33//1\r
+f 27//2 34//14 33//1\r
+f 27//2 28//13 34//14\r
+f 28//13 35//29 34//14\r
+f 28//13 29//28 35//29\r
+f 29//28 36//44 35//29\r
+f 29//28 30//42 36//44\r
+f 30//42 37//31 36//44\r
+f 30//42 31//32 37//31\r
+f 31//32 32//16 37//31\r
+f 31//32 26//17 32//16\r
+f 32//16 39//3 38//18\r
+f 32//16 33//1 39//3\r
+f 33//1 40//12 39//3\r
+f 33//1 34//14 40//12\r
+f 34//14 41//27 40//12\r
+f 34//14 35//29 41//27\r
+f 35//29 42//43 41//27\r
+f 35//29 36//44 42//43\r
+f 36//44 43//36 42//43\r
+f 36//44 37//31 43//36\r
+f 37//31 38//18 43//36\r
+f 37//31 32//16 38//18\r
+f 44//30 38//18 39//3\r
+f 44//30 39//3 40//12\r
+f 44//30 40//12 41//27\r
+f 44//30 41//27 42//43\r
+f 44//30 42//43 43//36\r
+f 44//30 43//36 38//18\r
+v  -58.853138 435.746368 437.847656 \r
+v  -61.271862 446.228241 451.650909 \r
+v  -45.632473 438.882446 448.876190 \r
+v  -43.213753 428.400574 435.072937 \r
+v  -56.434422 425.264465 424.044373 \r
+v  -72.073807 432.610260 426.819092 \r
+v  -74.492523 443.092133 440.622375 \r
+v  -77.634003 404.993622 487.831390 \r
+v  -63.959824 396.794891 486.676514 \r
+v  -62.973885 384.242767 476.827179 \r
+v  -75.662140 379.889404 468.132751 \r
+v  -89.336327 388.088135 469.287659 \r
+v  -90.322258 400.640259 479.136963 \r
+v  -93.682159 376.787689 529.558960 \r
+v  -82.148361 368.697540 529.924622 \r
+v  -82.322189 355.907349 524.009094 \r
+v  -94.029808 351.207306 517.727844 \r
+v  -105.563606 359.297455 517.362183 \r
+v  -105.389778 372.087646 523.277710 \r
+v  -108.411240 360.555664 572.781372 \r
+v  -99.024551 353.304565 574.287476 \r
+v  -99.969093 341.678589 571.660583 \r
+v  -110.300323 337.303650 567.527466 \r
+v  -119.687019 344.554749 566.021362 \r
+v  -118.742477 356.180725 568.648254 \r
+v  -121.222130 354.367249 614.419189 \r
+v  -113.883820 348.399292 616.557678 \r
+v  -115.199722 338.796112 616.260925 \r
+v  -123.853928 335.160919 613.825684 \r
+v  -131.192230 341.128876 611.687195 \r
+v  -129.876343 350.732056 611.983948 \r
+v  -131.857529 355.871368 652.373657 \r
+v  -126.408997 351.363678 654.638306 \r
+v  -127.757248 344.134491 655.665466 \r
+v  -134.554031 341.412964 654.428040 \r
+v  -140.002563 345.920654 652.163391 \r
+v  -138.654312 353.149872 651.136230 \r
+v  -140.319107 362.644165 685.414490 \r
+v  -136.569427 359.567688 687.388794 \r
+v  -137.706085 354.674377 688.867554 \r
+v  -142.592468 352.857605 688.372009 \r
+v  -146.342163 355.934113 686.397705 \r
+v  -145.205475 360.827362 684.918945 \r
+v  -148.206787 371.175720 717.345581 \r
+\r
+vn  -0.924977 -0.357868 -0.127862 \r
+vn  -0.908108 -0.418051 0.023938 \r
+vn  -0.901383 -0.373176 -0.219654 \r
+vn  -0.872663 -0.115109 -0.474562 \r
+vn  -0.871544 -0.368786 -0.323123 \r
+vn  -0.859478 0.504963 0.079437 \r
+vn  -0.835943 -0.337450 -0.432814 \r
+vn  -0.825648 0.564131 -0.007864 \r
+vn  -0.805985 0.526979 -0.269596 \r
+vn  -0.796167 -0.273029 -0.539975 \r
+vn  -0.794751 0.599140 -0.096961 \r
+vn  -0.791763 0.545023 0.275794 \r
+vn  -0.767884 0.614205 -0.181954 \r
+vn  -0.745477 0.614181 -0.258932 \r
+vn  -0.207305 0.361286 0.909119 \r
+vn  -0.194573 -0.962975 0.186604 \r
+vn  -0.148480 -0.988840 0.012206 \r
+vn  -0.123058 -0.915326 0.383452 \r
+vn  -0.090718 -0.978638 -0.184494 \r
+vn  -0.086181 -0.675437 -0.732365 \r
+vn  -0.072954 0.762930 0.642351 \r
+vn  -0.022092 -0.918925 -0.393813 \r
+vn  -0.001993 0.888912 0.458074 \r
+vn  0.054639 -0.798021 -0.600148 \r
+vn  0.062678 0.961212 0.268595 \r
+vn  0.071552 0.641900 0.763442 \r
+vn  0.080297 0.975665 -0.204036 \r
+vn  0.118487 0.989085 0.087592 \r
+vn  0.164455 0.983456 -0.075955 \r
+vn  0.272647 0.788640 -0.551099 \r
+vn  0.715424 -0.593006 0.369476 \r
+vn  0.737972 -0.613192 0.281768 \r
+vn  0.763097 -0.465091 0.448748 \r
+vn  0.766805 -0.615762 0.181239 \r
+vn  0.777007 -0.579595 -0.245620 \r
+vn  0.777164 0.238562 0.582327 \r
+vn  0.801667 -0.593358 0.072500 \r
+vn  0.811197 0.308039 0.497062 \r
+vn  0.841280 -0.539357 -0.036639 \r
+vn  0.842871 0.351905 0.407101 \r
+vn  0.859066 0.080675 0.505468 \r
+vn  0.863918 0.479091 0.155298 \r
+vn  0.870790 0.373891 0.319266 \r
+vn  0.894299 0.378740 0.238297 \r
+\r
+\r
+s off\r
+f 47//74 45//74 46//74\r
+f 48//74 45//74 47//74\r
+f 49//74 45//74 48//74\r
+f 50//74 45//74 49//74\r
+f 51//74 45//74 50//74\r
+f 46//74 45//74 51//74\r
+f 53//80 46//70 52//65\r
+f 47//85 46//70 53//80\r
+f 54//83 47//85 53//80\r
+f 48//79 47//85 54//83\r
+f 55//68 48//79 54//83\r
+f 49//64 48//79 55//68\r
+f 56//54 49//64 55//68\r
+f 50//48 49//64 56//54\r
+f 57//50 50//48 56//54\r
+f 51//56 50//48 57//50\r
+f 52//65 51//56 57//50\r
+f 46//70 51//56 52//65\r
+f 59//82 52//65 58//67\r
+f 53//80 52//65 59//82\r
+f 60//81 53//80 59//82\r
+f 54//83 53//80 60//81\r
+f 61//66 54//83 60//81\r
+f 55//68 54//83 61//66\r
+f 62//51 55//68 61//66\r
+f 56//54 55//68 62//51\r
+f 63//52 56//54 62//51\r
+f 57//50 56//54 63//52\r
+f 58//67 57//50 63//52\r
+f 52//65 57//50 58//67\r
+f 65//84 58//67 64//69\r
+f 59//82 58//67 65//84\r
+f 66//78 59//82 65//84\r
+f 60//81 59//82 66//78\r
+f 67//63 60//81 66//78\r
+f 61//66 60//81 67//63\r
+f 68//49 61//66 67//63\r
+f 62//51 61//66 68//49\r
+f 69//55 62//51 68//49\r
+f 63//52 62//51 69//55\r
+f 64//69 63//52 69//55\r
+f 58//67 63//52 64//69\r
+f 71//87 64//69 70//72\r
+f 65//84 64//69 71//87\r
+f 72//76 65//84 71//87\r
+f 66//78 65//84 72//76\r
+f 73//61 66//78 72//76\r
+f 67//63 66//78 73//61\r
+f 74//47 67//63 73//61\r
+f 68//49 67//63 74//47\r
+f 75//57 68//49 74//47\r
+f 69//55 68//49 75//57\r
+f 70//72 69//55 75//57\r
+f 64//69 69//55 70//72\r
+f 77//88 70//72 76//73\r
+f 71//87 70//72 77//88\r
+f 78//75 71//87 77//88\r
+f 72//76 71//87 78//75\r
+f 79//60 72//76 78//75\r
+f 73//61 72//76 79//60\r
+f 80//45 73//61 79//60\r
+f 74//47 73//61 80//45\r
+f 81//58 74//47 80//45\r
+f 75//57 74//47 81//58\r
+f 76//73 75//57 81//58\r
+f 70//72 75//57 76//73\r
+f 83//86 76//73 82//71\r
+f 77//88 76//73 83//86\r
+f 84//77 77//88 83//86\r
+f 78//75 77//88 84//77\r
+f 85//62 78//75 84//77\r
+f 79//60 78//75 85//62\r
+f 86//46 79//60 85//62\r
+f 80//45 79//60 86//46\r
+f 87//53 80//45 86//46\r
+f 81//58 80//45 87//53\r
+f 82//71 81//58 87//53\r
+f 76//73 81//58 82//71\r
+f 82//71 88//59 83//86\r
+f 83//86 88//59 84//77\r
+f 84//77 88//59 85//62\r
+f 85//62 88//59 86//46\r
+f 86//46 88//59 87//53\r
+f 87//53 88//59 82//71\r
+v  0.0 674.705322 144.186432 \r
+v  0.0 659.442139 21.519569 \r
+v  0.0 680.494873 -114.901505 \r
+v  0.0 677.588013 -209.343933 \r
+v  0.0 662.451782 -253.749756 \r
+v  0.0 619.927368 -307.605072 \r
+v  0.0 306.693176 -355.725189 \r
+v  0.0 282.978760 -335.986023 \r
+v  0.0 386.651550 -381.947906 \r
+v  0.0 452.129333 -373.061371 \r
+v  0.0 464.639008 -375.535736 \r
+v  0.0 548.165222 -365.281372 \r
+v  0.0 518.615662 -399.860443 \r
+v  0.0 487.902100 -415.659485 \r
+v  0.0 470.975586 -417.727692 \r
+v  0.0 412.627502 -416.541016 \r
+v  0.0 420.618774 -400.237640 \r
+v  0.0 468.681763 -389.056061 \r
+v  0.0 470.368866 -385.914642 \r
+v  0.0 400.649750 232.339508 \r
+v  0.0 347.050842 206.288391 \r
+v  0.0 325.252075 178.899506 \r
+v  0.0 313.806885 117.932831 \r
+v  0.0 314.837463 137.754272 \r
+v  0.0 319.189819 159.624985 \r
+v  0.0 269.879456 -59.536957 \r
+v  0.0 282.266632 -6.034477 \r
+v  0.0 297.798676 51.131927 \r
+v  0.0 260.412598 -228.332947 \r
+v  0.0 358.095825 -417.698120 \r
+v  0.0 358.767883 -407.076111 \r
+v  0.0 320.548431 -416.855591 \r
+v  0.0 320.728119 -408.190948 \r
+v  0.0 264.678802 -402.953827 \r
+v  0.0 264.655396 -410.283264 \r
+v  0.0 222.839462 -394.393463 \r
+v  0.0 220.736511 -402.430603 \r
+v  0.0 194.609314 -395.416138 \r
+v  0.0 195.844925 -389.740295 \r
+v  0.0 590.681274 457.055023 \r
+v  0.0 640.005554 429.823761 \r
+v  0.0 679.878784 348.259949 \r
+v  0.0 668.416504 190.709930 \r
+v  0.0 652.424377 233.459885 \r
+v  0.0 651.805298 253.958023 \r
+v  0.0 680.161011 329.351013 \r
+v  0.0 428.164734 323.170593 \r
+v  0.0 400.098724 454.754395 \r
+v  0.0 406.014984 256.838745 \r
+v  0.0 421.577759 269.887939 \r
+v  0.0 663.574707 285.522308 \r
+v  0.0 191.588745 -393.203400 \r
+v  0.0 192.143539 -389.721771 \r
+v  0.0 190.525833 -391.550476 \r
+v  0.0 410.218842 379.853394 \r
+v  0.0 365.601990 426.700714 \r
+v  0.0 384.466461 414.494141 \r
+v  3.499443 362.597076 435.303223 \r
+v  0.0 360.711639 437.529083 \r
+v  0.0 358.145355 433.967712 \r
+v  0.0 359.026581 431.397980 \r
+v  0.0 359.140442 436.638733 \r
+v  0.0 372.866119 423.227142 \r
+v  0.0 408.493378 434.260864 \r
+v  28.561386 680.828491 152.769043 \r
+v  89.147934 617.291870 8.004128 \r
+v  96.425346 630.883789 -225.567169 \r
+v  116.623894 563.952209 189.125305 \r
+v  135.253036 498.373596 -205.083496 \r
+v  102.284485 378.783508 48.076321 \r
+v  68.635033 167.411774 -317.269745 \r
+v  96.345901 507.969360 -346.729340 \r
+v  31.685234 491.952789 -389.875305 \r
+v  10.539116 450.210785 -412.170105 \r
+v  14.840648 470.856445 -392.668488 \r
+v  9.770735 472.211578 -386.184265 \r
+v  116.521805 178.172684 154.520325 \r
+v  101.803406 173.197296 113.135895 \r
+v  55.110474 461.715881 228.562622 \r
+v  29.197432 416.091888 232.177322 \r
+v  54.124645 341.445679 204.883423 \r
+v  22.852367 323.534698 168.565872 \r
+v  84.888359 269.782104 -192.991913 \r
+v  47.324020 200.793472 -307.052338 \r
+v  29.879377 260.380920 -316.286987 \r
+v  20.908667 256.221558 -244.277130 \r
+v  62.163719 156.204163 -253.238617 \r
+v  62.163738 176.986816 173.840515 \r
+v  56.963161 169.769424 121.614166 \r
+v  43.459377 310.782928 57.872765 \r
+v  83.565216 2.812408 87.586609 \r
+v  119.566643 53.798767 153.346359 \r
+v  120.825768 27.622589 189.236847 \r
+v  132.673050 32.518005 172.354477 \r
+v  100.340591 57.047668 168.625092 \r
+v  35.022182 3.596130 114.613876 \r
+v  49.711658 51.683380 162.079895 \r
+v  48.979992 13.613007 192.654083 \r
+v  80.733612 25.959442 204.418716 \r
+v  126.390030 2.812408 102.117195 \r
+v  129.353973 2.812408 183.618622 \r
+v  80.694801 2.812408 207.141617 \r
+v  109.345688 2.812408 201.640762 \r
+v  54.500790 2.812408 197.025269 \r
+v  37.963989 2.812408 156.271210 \r
+v  139.499969 2.812408 146.296692 \r
+v  3.631164 358.617462 -409.063477 \r
+v  57.757877 427.477478 486.621735 \r
+v  66.305794 450.091858 460.693939 \r
+v  72.430794 460.165649 446.856262 \r
+v  47.409939 647.614136 276.093872 \r
+v  36.704021 552.561401 468.196411 \r
+v  83.166336 462.374969 282.517426 \r
+v  97.794746 548.457275 427.954742 \r
+v  72.193176 537.422913 451.219727 \r
+v  68.373138 426.302185 310.172607 \r
+v  77.928581 491.388367 391.080841 \r
+v  77.033066 517.108643 416.937897 \r
+v  95.374550 515.711792 392.263123 \r
+v  105.212822 520.682190 367.848602 \r
+v  87.732895 523.537720 399.655945 \r
+v  84.234589 524.386841 406.262543 \r
+v  84.769745 431.200195 461.652008 \r
+v  57.775162 414.015961 490.634369 \r
+v  74.483322 462.666901 387.797546 \r
+v  83.963806 439.915405 441.301392 \r
+v  55.741165 407.134583 490.437347 \r
+v  48.314449 391.637878 482.220612 \r
+v  39.757469 395.107086 481.343567 \r
+v  101.927597 524.532593 289.449036 \r
+v  82.183266 594.307739 237.627914 \r
+v  71.702682 671.114136 371.912689 \r
+v  119.746429 630.880615 313.814209 \r
+v  98.411400 565.605469 308.700073 \r
+v  79.552818 657.672974 319.828979 \r
+v  97.803490 662.251343 369.554565 \r
+v  105.080696 646.188416 367.574463 \r
+v  117.992828 633.772278 360.118774 \r
+v  79.021889 666.386292 376.674713 \r
+v  124.450096 299.812317 86.423988 \r
+v  93.567039 287.448730 69.341545 \r
+v  78.712456 171.689362 96.333069 \r
+v  87.672211 515.497437 404.092529 \r
+v  142.125198 487.190826 75.761795 \r
+v  54.375797 387.937256 444.369385 \r
+v  85.685417 409.201599 479.704407 \r
+v  75.063766 396.528595 444.140350 \r
+v  72.064491 403.284302 486.151031 \r
+v  55.174248 386.216644 471.262787 \r
+v  92.361580 598.479614 358.234436 \r
+v  87.489281 406.573090 463.900604 \r
+v  82.037880 406.060242 475.072571 \r
+v  84.995010 402.431366 455.035065 \r
+v  74.360077 397.155579 449.641205 \r
+v  63.094547 391.059723 453.824066 \r
+v  72.155159 402.082642 479.629272 \r
+v  64.321938 394.400360 477.144409 \r
+v  60.365757 388.976166 466.250458 \r
+v  1.504729 192.970337 -391.704651 \r
+v  26.869917 399.271179 427.409149 \r
+v  7.880798 375.080566 429.976166 \r
+v  0.0 519.736877 501.326874 \r
+v  65.431923 471.750336 453.331879 \r
+v  59.693134 486.968262 469.050507 \r
+v  49.102673 503.374390 485.327179 \r
+v  0.0 394.447510 473.427734 \r
+v  0.0 271.682587 -127.661087 \r
+v  0.0 275.780365 -180.105072 \r
+v  0.0 269.623871 -203.846863 \r
+v  0.0 259.270508 -244.079498 \r
+v  0.0 263.265289 -283.019745 \r
+v  0.0 269.925720 -317.727051 \r
+v  109.488457 53.266907 111.529510 \r
+v  84.580719 50.753479 94.974091 \r
+v  50.518833 50.401581 114.022522 \r
+v  134.554459 368.699158 177.532349 \r
+v  101.841042 55.608490 -266.554230 \r
+v  98.785851 2.812439 -321.523987 \r
+v  91.762856 53.266937 -312.111664 \r
+v  82.614990 57.047699 -244.255707 \r
+v  91.918777 164.786652 -267.169952 \r
+v  91.037750 165.903214 -304.247284 \r
+v  52.195866 52.106079 -328.667084 \r
+v  65.839615 2.812439 -336.054565 \r
+v  114.947449 32.518036 -251.286713 \r
+v  121.774368 2.812439 -277.344482 \r
+v  111.628372 2.812439 -240.022552 \r
+v  103.100166 27.622620 -234.404327 \r
+v  91.620087 2.812439 -222.000397 \r
+v  63.008007 25.959473 -219.222443 \r
+v  20.238386 2.812439 -267.369965 \r
+v  31.986055 51.683411 -253.584595 \r
+v  26.654669 2.812439 -309.027313 \r
+v  31.254389 13.613037 -230.987091 \r
+v  36.775185 2.812439 -226.615906 \r
+v  62.969196 2.812439 -216.499542 \r
+v  32.038773 52.228394 -309.618652 \r
+v  126.084244 371.670807 -159.708084 \r
+v  139.331024 364.170563 -280.618439 \r
+v  129.495178 357.771454 -216.346008 \r
+v  178.559692 521.329956 -125.311584 \r
+v  50.741852 379.704468 -369.854065 \r
+v  126.098862 491.326019 -299.065491 \r
+v  25.699888 85.600800 -308.335480 \r
+v  39.776405 673.907227 331.222168 \r
+v  77.348427 578.127563 439.451477 \r
+v  0.0 389.291992 486.090851 \r
+v  53.197598 417.579498 504.358887 \r
+v  0.0 330.902405 571.212524 \r
+v  0.0 396.047028 561.760254 \r
+v  0.0 448.367249 543.600098 \r
+v  0.0 321.122803 506.096130 \r
+v  0.0 366.578491 493.328552 \r
+v  0.0 380.585266 487.656494 \r
+v  0.0 267.242859 572.588379 \r
+v  0.0 264.636108 514.555420 \r
+v  0.0 211.547058 566.812988 \r
+v  0.0 214.041687 515.471313 \r
+v  0.0 163.338455 556.453003 \r
+v  0.0 168.880386 511.701508 \r
+v  0.0 123.445633 543.892090 \r
+v  0.0 128.865707 504.205658 \r
+v  0.0 88.772095 529.737183 \r
+v  0.0 95.004730 494.096680 \r
+v  0.0 60.432281 512.184814 \r
+v  0.0 76.766418 484.694214 \r
+v  0.0 44.941895 485.530060 \r
+v  0.0 67.669769 470.122314 \r
+v  0.0 41.181000 460.585022 \r
+v  0.0 66.030304 456.359985 \r
+v  0.0 46.149750 438.815735 \r
+v  0.0 67.915985 446.862457 \r
+v  0.0 50.750610 425.787476 \r
+v  0.0 71.117798 439.923950 \r
+v  0.0 53.089813 422.642944 \r
+v  0.0 71.009399 436.437805 \r
+v  0.0 55.499329 424.193329 \r
+v  0.0 69.540802 436.470398 \r
+v  40.318222 323.123749 514.340576 \r
+v  44.910927 374.415741 507.571686 \r
+v  35.962704 330.110870 547.104858 \r
+v  39.266464 389.826355 539.846375 \r
+v  39.321838 436.194061 526.118530 \r
+v  42.576550 379.890869 485.175507 \r
+v  35.673855 364.374329 490.916351 \r
+v  32.409584 320.630798 503.137512 \r
+v  31.128992 262.814819 516.546265 \r
+v  31.120661 267.396942 550.957947 \r
+v  26.104368 212.173584 516.899048 \r
+v  26.217802 214.731186 547.603699 \r
+v  21.585955 166.665604 513.017090 \r
+v  21.755678 165.012177 540.377319 \r
+v  17.811789 128.329285 505.388031 \r
+v  18.029829 127.116852 530.179321 \r
+v  14.884996 95.121552 494.605957 \r
+v  15.121249 92.141266 516.896851 \r
+v  13.721362 76.612671 484.731659 \r
+v  13.961364 67.320435 502.436493 \r
+v  12.503607 67.766357 469.977448 \r
+v  12.746117 54.042847 480.469910 \r
+v  11.684473 66.317017 456.185638 \r
+v  11.929141 50.868683 459.775146 \r
+v  11.238026 69.033691 446.305969 \r
+v  11.482570 54.426880 442.698792 \r
+v  11.532056 71.943146 439.734772 \r
+v  11.768776 57.081177 435.891022 \r
+v  10.756892 71.728729 436.944397 \r
+v  11.010005 58.284698 433.492401 \r
+v  9.039405 69.993774 437.114563 \r
+v  9.558839 58.987793 434.598755 \r
+v  112.880119 371.152161 -355.810730 \r
+v  -3.499443 362.597076 435.303223 \r
+v  -28.561386 680.828491 152.769043 \r
+v  -89.147926 617.291870 8.004128 \r
+v  -96.425339 630.883789 -225.567169 \r
+v  -116.623886 563.952209 189.125305 \r
+v  -135.253036 498.373596 -205.083496 \r
+v  -102.284477 378.783508 48.076321 \r
+v  -68.635025 167.411774 -317.269745 \r
+v  -96.345894 507.969360 -346.729340 \r
+v  -31.685234 491.952789 -389.875305 \r
+v  -10.539116 450.210785 -412.170105 \r
+v  -14.840648 470.856445 -392.668488 \r
+v  -9.770735 472.211578 -386.184265 \r
+v  -116.521797 178.172684 154.520325 \r
+v  -101.803398 173.197296 113.135895 \r
+v  -55.110477 461.715881 228.562622 \r
+v  -29.197432 416.091888 232.177322 \r
+v  -54.124649 341.445679 204.883423 \r
+v  -22.852367 323.534698 168.565872 \r
+v  -84.888351 269.782104 -192.991913 \r
+v  -47.324024 200.793472 -307.052338 \r
+v  -29.879377 260.380920 -316.286987 \r
+v  -20.908667 256.221558 -244.277130 \r
+v  -62.163723 156.204163 -253.238617 \r
+v  -62.163742 176.986816 173.840515 \r
+v  -56.963165 169.769424 121.614166 \r
+v  -43.459381 310.782928 57.872765 \r
+v  -83.565208 2.812408 87.586609 \r
+v  -119.566635 53.798767 153.346359 \r
+v  -120.825760 27.622589 189.236847 \r
+v  -132.673050 32.518005 172.354477 \r
+v  -100.340584 57.047668 168.625092 \r
+v  -35.022186 3.596130 114.613876 \r
+v  -49.711662 51.683380 162.079895 \r
+v  -48.979996 13.613007 192.654083 \r
+v  -80.733604 25.959442 204.418716 \r
+v  -126.390022 2.812408 102.117195 \r
+v  -129.353973 2.812408 183.618622 \r
+v  -80.694794 2.812408 207.141617 \r
+v  -109.345680 2.812408 201.640762 \r
+v  -54.500793 2.812408 197.025269 \r
+v  -37.963993 2.812408 156.271210 \r
+v  -139.499969 2.812408 146.296692 \r
+v  -3.631164 358.617462 -409.063477 \r
+v  -57.757881 427.477478 486.621735 \r
+v  -66.305786 450.091858 460.693939 \r
+v  -72.430786 460.165649 446.856262 \r
+v  -47.409943 647.614136 276.093872 \r
+v  -36.704025 552.561401 468.196411 \r
+v  -83.166328 462.374969 282.517426 \r
+v  -97.794739 548.457275 427.954742 \r
+v  -72.193169 537.422913 451.219727 \r
+v  -68.373131 426.302185 310.172607 \r
+v  -77.928574 491.388367 391.080841 \r
+v  -77.033058 517.108643 416.937897 \r
+v  -95.374542 515.711792 392.263123 \r
+v  -105.212814 520.682190 367.848602 \r
+v  -87.732887 523.537720 399.655945 \r
+v  -84.234581 524.386841 406.262543 \r
+v  -84.769737 431.200195 461.652008 \r
+v  -57.775166 414.015961 490.634369 \r
+v  -74.483315 462.666901 387.797546 \r
+v  -83.963799 439.915405 441.301392 \r
+v  -55.741169 407.134583 490.437347 \r
+v  -48.314453 391.637878 482.220612 \r
+v  -39.757473 395.107086 481.343567 \r
+v  -101.927589 524.532593 289.449036 \r
+v  -82.183258 594.307739 237.627914 \r
+v  -71.702675 671.114136 371.912689 \r
+v  -119.746422 630.880615 313.814209 \r
+v  -98.411392 565.605469 308.700073 \r
+v  -79.552811 657.672974 319.828979 \r
+v  -97.803482 662.251343 369.554565 \r
+v  -105.080688 646.188416 367.574463 \r
+v  -117.992821 633.772278 360.118774 \r
+v  -79.021881 666.386292 376.674713 \r
+v  -124.450089 299.812317 86.423988 \r
+v  -93.567032 287.448730 69.341545 \r
+v  -78.712448 171.689362 96.333069 \r
+v  -87.672203 515.497437 404.092529 \r
+v  -142.125198 487.190826 75.761795 \r
+v  -54.375801 387.937256 444.369385 \r
+v  -85.685410 409.201599 479.704407 \r
+v  -75.063759 396.528595 444.140350 \r
+v  -72.064484 403.284302 486.151031 \r
+v  -55.174252 386.216644 471.262787 \r
+v  -92.361572 598.479614 358.234436 \r
+v  -87.489273 406.573090 463.900604 \r
+v  -82.037872 406.060242 475.072571 \r
+v  -84.995003 402.431366 455.035065 \r
+v  -74.360069 397.155579 449.641205 \r
+v  -63.094551 391.059723 453.824066 \r
+v  -72.155151 402.082642 479.629272 \r
+v  -64.321930 394.400360 477.144409 \r
+v  -60.365761 388.976166 466.250458 \r
+v  -1.504729 192.970337 -391.704651 \r
+v  -26.869917 399.271179 427.409149 \r
+v  -7.880797 375.080566 429.976166 \r
+v  -65.431915 471.750336 453.331879 \r
+v  -59.693138 486.968262 469.050507 \r
+v  -49.102676 503.374390 485.327179 \r
+v  -109.488449 53.266907 111.529510 \r
+v  -84.580711 50.753479 94.974091 \r
+v  -50.518837 50.401581 114.022522 \r
+v  -134.554459 368.699158 177.532349 \r
+v  -101.841034 55.608490 -266.554230 \r
+v  -98.785835 2.812439 -321.523987 \r
+v  -91.762848 53.266937 -312.111664 \r
+v  -82.614983 57.047699 -244.255707 \r
+v  -91.918770 164.786652 -267.169952 \r
+v  -91.037743 165.903214 -304.247284 \r
+v  -52.195869 52.106079 -328.667084 \r
+v  -65.839607 2.812439 -336.054565 \r
+v  -114.947441 32.518036 -251.286713 \r
+v  -121.774361 2.812439 -277.344482 \r
+v  -111.628365 2.812439 -240.022552 \r
+v  -103.100159 27.622620 -234.404327 \r
+v  -91.620079 2.812439 -222.000397 \r
+v  -63.008011 25.959473 -219.222443 \r
+v  -20.238386 2.812439 -267.369965 \r
+v  -31.986055 51.683411 -253.584595 \r
+v  -26.654669 2.812439 -309.027313 \r
+v  -31.254389 13.613037 -230.987091 \r
+v  -36.775188 2.812439 -226.615906 \r
+v  -62.969200 2.812439 -216.499542 \r
+v  -32.038776 52.228394 -309.618652 \r
+v  -126.084236 371.670807 -159.708084 \r
+v  -139.331024 364.170563 -280.618439 \r
+v  -129.495178 357.771454 -216.346008 \r
+v  -178.559692 521.329956 -125.311584 \r
+v  -50.741856 379.704468 -369.854065 \r
+v  -126.098854 491.326019 -299.065491 \r
+v  -25.699888 85.600800 -308.335480 \r
+v  -39.776409 673.907227 331.222168 \r
+v  -77.348419 578.127563 439.451477 \r
+v  -53.197601 417.579498 504.358887 \r
+v  -40.318226 323.123749 514.340576 \r
+v  -44.910931 374.415741 507.571686 \r
+v  -35.962708 330.110870 547.104858 \r
+v  -39.266468 389.826355 539.846375 \r
+v  -39.321842 436.194061 526.118530 \r
+v  -42.576553 379.890869 485.175507 \r
+v  -35.673859 364.374329 490.916351 \r
+v  -32.409588 320.630798 503.137512 \r
+v  -31.128992 262.814819 516.546265 \r
+v  -31.120661 267.396942 550.957947 \r
+v  -26.104368 212.173584 516.899048 \r
+v  -26.217802 214.731186 547.603699 \r
+v  -21.585955 166.665604 513.017090 \r
+v  -21.755678 165.012177 540.377319 \r
+v  -17.811789 128.329285 505.388031 \r
+v  -18.029829 127.116852 530.179321 \r
+v  -14.884996 95.121552 494.605957 \r
+v  -15.121249 92.141266 516.896851 \r
+v  -13.721362 76.612671 484.731659 \r
+v  -13.961364 67.320435 502.436493 \r
+v  -12.503607 67.766357 469.977448 \r
+v  -12.746117 54.042847 480.469910 \r
+v  -11.684473 66.317017 456.185638 \r
+v  -11.929141 50.868683 459.775146 \r
+v  -11.238026 69.033691 446.305969 \r
+v  -11.482570 54.426880 442.698792 \r
+v  -11.532056 71.943146 439.734772 \r
+v  -11.768776 57.081177 435.891022 \r
+v  -10.756892 71.728729 436.944397 \r
+v  -11.010005 58.284698 433.492401 \r
+v  -9.039405 69.993774 437.114563 \r
+v  -9.558839 58.987793 434.598755 \r
+v  -112.880112 371.152161 -355.810730 \r
+v  83.166336 462.374969 282.517426 \r
+v  97.803490 662.251343 369.554565 \r
+v  79.021889 666.386292 376.674713 \r
+v  71.702682 671.114136 371.912689 \r
+v  86.375710 688.534546 351.013245 \r
+v  71.041710 678.234863 364.105988 \r
+v  89.965607 597.799927 316.320465 \r
+v  98.411423 565.605469 308.700073 \r
+v  101.927597 524.532593 289.449036 \r
+v  223.745453 617.214966 252.629211 \r
+v  263.779053 603.554077 111.231125 \r
+v  250.851547 565.993835 117.612213 \r
+v  250.153976 692.800903 231.157837 \r
+v  119.746429 625.196045 322.051086 \r
+v  105.080696 646.188416 367.574463 \r
+v  154.985229 658.576416 332.510071 \r
+v  200.347290 698.369263 295.631378 \r
+v  229.934494 703.016418 255.213852 \r
+v  174.806488 714.569336 301.024475 \r
+v  124.796967 690.498535 335.785156 \r
+v  117.839737 696.844116 329.868256 \r
+v  95.352585 457.567444 275.603210 \r
+v  96.982460 444.826904 269.866760 \r
+v  234.951843 542.151672 122.796227 \r
+v  94.138756 428.036285 264.856140 \r
+v  100.976105 401.472992 242.941208 \r
+v  136.378464 448.177368 250.506012 \r
+v  165.012772 528.794556 247.697281 \r
+v  211.981293 523.431274 131.970963 \r
+v  117.992828 633.772278 360.118774 \r
+v  273.383362 653.040894 132.604462 \r
+v  266.934570 628.560059 118.617035 \r
+v  246.283127 699.169312 221.285507 \r
+v  208.589951 710.134399 260.576599 \r
+v  181.199646 712.553772 272.422424 \r
+v  162.155991 711.845215 282.709442 \r
+v  149.180008 711.340088 296.747589 \r
+v  132.867691 703.030273 309.399963 \r
+v  99.128807 374.954041 230.420349 \r
+v  126.651459 384.494080 220.204956 \r
+v  144.220947 395.410858 207.701462 \r
+v  173.386261 448.508972 173.954041 \r
+v  190.554718 464.418640 167.773285 \r
+v  194.502914 488.440857 151.411835 \r
+v  -83.166328 462.374969 282.517426 \r
+v  -97.803482 662.251343 369.554565 \r
+v  -79.021881 666.386292 376.674713 \r
+v  -71.702675 671.114136 371.912689 \r
+v  -86.375702 688.534546 351.013245 \r
+v  -71.041702 678.234863 364.105988 \r
+v  -89.965599 597.799927 316.320465 \r
+v  -98.411415 565.605469 308.700073 \r
+v  -101.927589 524.532593 289.449036 \r
+v  -223.745453 617.214966 252.629211 \r
+v  -263.779053 603.554077 111.231125 \r
+v  -250.851547 565.993835 117.612213 \r
+v  -250.153976 692.800903 231.157837 \r
+v  -119.746422 625.196045 322.051086 \r
+v  -105.080688 646.188416 367.574463 \r
+v  -154.985229 658.576416 332.510071 \r
+v  -200.347290 698.369263 295.631378 \r
+v  -229.934494 703.016418 255.213852 \r
+v  -174.806488 714.569336 301.024475 \r
+v  -124.796959 690.498535 335.785156 \r
+v  -117.839729 696.844116 329.868256 \r
+v  -95.352577 457.567444 275.603210 \r
+v  -96.982452 444.826904 269.866760 \r
+v  -234.951843 542.151672 122.796227 \r
+v  -94.138748 428.036285 264.856140 \r
+v  -100.976097 401.472992 242.941208 \r
+v  -136.378464 448.177368 250.506012 \r
+v  -165.012772 528.794556 247.697281 \r
+v  -211.981293 523.431274 131.970963 \r
+v  -117.992821 633.772278 360.118774 \r
+v  -273.383362 653.040894 132.604462 \r
+v  -266.934570 628.560059 118.617035 \r
+v  -246.283127 699.169312 221.285507 \r
+v  -208.589951 710.134399 260.576599 \r
+v  -181.199646 712.553772 272.422424 \r
+v  -162.155991 711.845215 282.709442 \r
+v  -149.180008 711.340088 296.747589 \r
+v  -132.867691 703.030273 309.399963 \r
+v  -99.128799 374.954041 230.420349 \r
+v  -126.651451 384.494080 220.204956 \r
+v  -144.220947 395.410858 207.701462 \r
+v  -173.386261 448.508972 173.954041 \r
+v  -190.554718 464.418640 167.773285 \r
+v  -194.502914 488.440857 151.411835 \r
+v  0.0 54.705750 448.371765 \r
+v  142.979660 432.121704 53.944386 \r
+v  142.259354 433.763885 -188.649475 \r
+v  172.123810 430.795349 -110.045517 \r
+v  -142.979660 432.121704 53.944386 \r
+v  -172.123810 430.795349 -110.045517 \r
+v  -143.964798 430.321655 -184.622345 \r
+\r
+vn  -0.998673 -0.034541 -0.038197 \r
+vn  -0.990649 0.135951 -0.011452 \r
+vn  -0.987159 -0.127900 -0.095699 \r
+vn  -0.986500 -0.119607 -0.111860 \r
+vn  -0.986100 0.044479 0.160089 \r
+vn  -0.984962 0.117969 0.126225 \r
+vn  -0.979778 0.191800 -0.056995 \r
+vn  -0.977198 -0.212138 0.009060 \r
+vn  -0.976428 0.050032 0.209963 \r
+vn  -0.976178 -0.053752 -0.210207 \r
+vn  -0.975949 -0.212540 0.048483 \r
+vn  -0.973460 0.072270 0.217146 \r
+vn  -0.972644 0.041816 0.228505 \r
+vn  -0.970849 -0.239674 0.003057 \r
+vn  -0.969837 -0.181013 0.163249 \r
+vn  -0.968383 -0.136717 -0.208669 \r
+vn  -0.966751 -0.112059 0.229859 \r
+vn  -0.965052 -0.262008 -0.005160 \r
+vn  -0.962143 0.263665 -0.069009 \r
+vn  -0.958495 0.285041 0.006183 \r
+vn  -0.953528 0.272774 -0.127976 \r
+vn  -0.949830 0.173022 -0.260551 \r
+vn  -0.948489 0.053494 0.312262 \r
+vn  -0.947053 -0.260579 -0.187587 \r
+vn  -0.946600 0.082869 -0.311578 \r
+vn  -0.938748 -0.026743 0.343566 \r
+vn  -0.937868 -0.104277 0.330952 \r
+vn  -0.935929 -0.286619 0.204664 \r
+vn  -0.935098 -0.331743 -0.124651 \r
+vn  -0.932268 -0.235072 0.274985 \r
+vn  -0.931502 -0.303009 0.201219 \r
+vn  -0.929509 0.363013 0.065076 \r
+vn  -0.928884 -0.235037 -0.286238 \r
+vn  -0.925893 -0.317985 -0.203981 \r
+vn  -0.924696 0.071256 0.373979 \r
+vn  -0.916991 -0.031325 -0.397675 \r
+vn  -0.916435 0.259058 0.305016 \r
+vn  -0.915159 0.092329 0.392376 \r
+vn  -0.914811 -0.319057 -0.247637 \r
+vn  -0.914078 0.078569 -0.397854 \r
+vn  -0.911128 0.354633 -0.209953 \r
+vn  -0.908375 -0.067055 -0.412744 \r
+vn  -0.906057 0.381196 -0.183714 \r
+vn  -0.904557 -0.348274 0.245931 \r
+vn  -0.903638 -0.241643 0.353620 \r
+vn  -0.902406 -0.409772 -0.133235 \r
+vn  -0.900933 -0.428188 -0.070534 \r
+vn  -0.900115 -0.427563 0.083560 \r
+vn  -0.898403 -0.437664 0.036353 \r
+vn  -0.897638 -0.075175 0.434275 \r
+vn  -0.896492 -0.209997 0.390132 \r
+vn  -0.896375 -0.314013 0.312901 \r
+vn  -0.895561 0.279921 0.345853 \r
+vn  -0.891660 -0.206380 -0.402927 \r
+vn  -0.890179 0.379752 0.251732 \r
+vn  -0.888577 -0.176965 0.423219 \r
+vn  -0.887054 0.129180 -0.443224 \r
+vn  -0.886106 -0.134553 0.443521 \r
+vn  -0.885226 0.027722 0.464334 \r
+vn  -0.884238 -0.118708 0.451699 \r
+vn  -0.882303 -0.157757 0.443457 \r
+vn  -0.878000 0.112721 -0.465200 \r
+vn  -0.873920 -0.146801 0.463372 \r
+vn  -0.873196 -0.371001 0.316049 \r
+vn  -0.872924 -0.457451 -0.169535 \r
+vn  -0.870805 -0.189656 -0.453573 \r
+vn  -0.870593 -0.091603 0.483401 \r
+vn  -0.865869 -0.474897 0.157301 \r
+vn  -0.861154 0.276771 0.426395 \r
+vn  -0.856864 -0.108272 0.504044 \r
+vn  -0.855800 -0.253704 0.450823 \r
+vn  -0.855330 -0.234309 0.462072 \r
+vn  -0.849413 -0.298478 0.435210 \r
+vn  -0.847413 -0.078917 -0.525036 \r
+vn  -0.843182 -0.013413 0.537461 \r
+vn  -0.843031 0.385436 0.375151 \r
+vn  -0.838528 0.241794 -0.488268 \r
+vn  -0.835554 -0.085150 0.542770 \r
+vn  -0.833203 -0.240931 -0.497720 \r
+vn  -0.832966 0.065493 0.549434 \r
+vn  -0.823581 0.337742 0.455680 \r
+vn  -0.817464 0.436860 0.375374 \r
+vn  -0.814548 0.371365 0.445644 \r
+vn  -0.811590 -0.255527 0.525383 \r
+vn  -0.809905 -0.331436 0.483946 \r
+vn  -0.803584 -0.038763 -0.593929 \r
+vn  -0.800903 -0.377041 0.465182 \r
+vn  -0.794084 -0.471906 0.383061 \r
+vn  -0.792189 -0.309116 0.526198 \r
+vn  -0.788328 0.002355 0.615251 \r
+vn  -0.788092 0.067491 0.611846 \r
+vn  -0.781838 0.285062 -0.554498 \r
+vn  -0.777567 -0.591815 -0.212471 \r
+vn  -0.775315 -0.577158 -0.256467 \r
+vn  -0.774406 0.368873 -0.514031 \r
+vn  -0.771773 -0.380859 0.509228 \r
+vn  -0.770790 0.159652 -0.616761 \r
+vn  -0.758194 -0.073472 -0.647876 \r
+vn  -0.755487 -0.312193 0.576000 \r
+vn  -0.754149 -0.399642 0.521101 \r
+vn  -0.746151 -0.546448 0.380334 \r
+vn  -0.732123 0.095479 -0.674448 \r
+vn  -0.730965 0.274824 0.624629 \r
+vn  -0.730829 -0.166424 -0.661961 \r
+vn  -0.728164 0.013960 -0.685261 \r
+vn  -0.724982 -0.054737 -0.686590 \r
+vn  -0.721317 0.603325 0.340147 \r
+vn  -0.721087 0.206756 -0.661275 \r
+vn  -0.718620 0.395565 -0.571939 \r
+vn  -0.714578 -0.279688 0.641212 \r
+vn  -0.713958 -0.007352 0.700150 \r
+vn  -0.713845 0.236036 0.659327 \r
+vn  -0.709469 0.632278 -0.311253 \r
+vn  -0.704546 -0.685447 -0.183788 \r
+vn  -0.704485 0.708344 0.044158 \r
+vn  -0.701339 0.712586 -0.018544 \r
+vn  -0.694846 -0.065323 0.716185 \r
+vn  -0.692512 -0.077725 0.717207 \r
+vn  -0.690065 0.161488 -0.705501 \r
+vn  -0.689580 0.170597 0.703830 \r
+vn  -0.686426 0.664631 -0.295102 \r
+vn  -0.685608 0.004560 0.727956 \r
+vn  -0.682386 0.138034 0.717841 \r
+vn  -0.680992 0.698217 0.220777 \r
+vn  -0.675654 -0.072406 -0.733655 \r
+vn  -0.670901 0.738451 0.067690 \r
+vn  -0.656495 0.224532 0.720138 \r
+vn  -0.652418 -0.127716 0.747020 \r
+vn  -0.644505 0.292579 -0.706407 \r
+vn  -0.640390 -0.454265 -0.619309 \r
+vn  -0.636597 0.765415 0.094257 \r
+vn  -0.616919 0.311126 0.722919 \r
+vn  -0.600800 0.705010 0.376829 \r
+vn  -0.600603 -0.329338 0.728568 \r
+vn  -0.574344 0.747302 0.334169 \r
+vn  -0.572946 -0.632493 0.521235 \r
+vn  -0.559577 -0.603300 0.568244 \r
+vn  -0.556795 0.328822 0.762795 \r
+vn  -0.553084 -0.509467 0.659197 \r
+vn  -0.547534 -0.107099 0.829902 \r
+vn  -0.545461 0.374907 0.749612 \r
+vn  -0.535228 0.398782 0.744650 \r
+vn  -0.532780 -0.476055 -0.699655 \r
+vn  -0.530867 -0.827856 0.181201 \r
+vn  -0.521236 0.243999 -0.817788 \r
+vn  -0.517433 -0.420395 0.745340 \r
+vn  -0.508450 0.393580 0.765881 \r
+vn  -0.495364 -0.234143 0.836535 \r
+vn  -0.484867 -0.794204 0.366256 \r
+vn  -0.473621 -0.880617 0.014049 \r
+vn  -0.472804 0.574982 -0.667722 \r
+vn  -0.472291 -0.334673 -0.815436 \r
+vn  -0.471354 -0.828010 -0.303685 \r
+vn  -0.469107 0.831646 -0.297160 \r
+vn  -0.468301 -0.857556 0.212820 \r
+vn  -0.461319 -0.405063 0.789372 \r
+vn  -0.450325 -0.446152 0.773406 \r
+vn  -0.444120 -0.444711 0.777811 \r
+vn  -0.441887 -0.256146 0.859724 \r
+vn  -0.439407 -0.322907 0.838244 \r
+vn  -0.438683 -0.408483 0.800437 \r
+vn  -0.436358 -0.325835 0.838703 \r
+vn  -0.434279 -0.884435 0.170809 \r
+vn  -0.434080 0.379053 0.817247 \r
+vn  -0.425709 -0.891134 -0.157008 \r
+vn  -0.422963 -0.243408 -0.872843 \r
+vn  -0.419890 -0.903209 -0.088916 \r
+vn  -0.412971 -0.223117 0.882991 \r
+vn  -0.406686 0.162694 0.898965 \r
+vn  -0.394028 0.533409 0.748477 \r
+vn  -0.388126 -0.854167 0.346059 \r
+vn  -0.386568 -0.751703 -0.534329 \r
+vn  -0.359381 -0.254884 -0.897708 \r
+vn  -0.357518 0.435442 0.826179 \r
+vn  -0.338292 0.932448 0.126886 \r
+vn  -0.329682 0.816620 -0.473753 \r
+vn  -0.309872 0.472052 0.825316 \r
+vn  -0.299902 0.730850 0.613121 \r
+vn  -0.296168 -0.790144 0.536616 \r
+vn  -0.254041 0.759104 0.599353 \r
+vn  -0.252111 0.965555 0.064372 \r
+vn  -0.241052 -0.956433 -0.164712 \r
+vn  -0.227466 -0.968585 -0.100511 \r
+vn  -0.211146 0.950518 -0.227889 \r
+vn  -0.209784 0.962537 0.171794 \r
+vn  -0.208099 -0.117171 -0.971064 \r
+vn  -0.198014 -0.950206 -0.240623 \r
+vn  -0.193781 0.067335 -0.978731 \r
+vn  -0.189832 0.701031 0.687400 \r
+vn  -0.189713 0.142783 0.971402 \r
+vn  -0.168066 0.721925 0.671251 \r
+vn  -0.148919 0.976646 0.154874 \r
+vn  -0.140819 -0.956507 -0.255470 \r
+vn  -0.137971 0.198536 -0.970334 \r
+vn  -0.122026 -0.411153 0.903362 \r
+vn  -0.114623 0.951038 0.287033 \r
+vn  -0.099176 0.991926 -0.079033 \r
+vn  -0.073506 0.159810 -0.984407 \r
+vn  -0.065433 -0.255417 -0.964614 \r
+vn  -0.064541 -0.090827 -0.993773 \r
+vn  -0.058920 -0.900096 -0.431689 \r
+vn  -0.052794 0.743146 0.667044 \r
+vn  -0.047591 0.467261 0.882838 \r
+vn  -0.044326 0.093986 -0.994586 \r
+vn  -0.042800 0.389630 0.919977 \r
+vn  -0.041113 0.739929 0.671428 \r
+vn  -0.024351 -0.992009 0.123795 \r
+vn  -0.022340 -0.180099 -0.983395 \r
+vn  -0.019868 -0.225351 0.974075 \r
+vn  -0.013558 0.600072 -0.799831 \r
+vn  -0.010605 0.997301 -0.072650 \r
+vn  -0.008578 -0.999963 -0.000008 \r
+vn  -0.008367 0.905320 0.424648 \r
+vn  -0.006112 -0.999819 0.018014 \r
+vn  -0.005719 -0.999984 -0.000005 \r
+vn  -0.002208 -0.999991 -0.003606 \r
+vn  0.0 -1.0 0.0 \r
+vn  0.0 -0.999976 -0.006993 \r
+vn  0.0 -0.999889 -0.014906 \r
+vn  0.0 -0.999882 0.015391 \r
+vn  0.0 -0.999327 0.036671 \r
+vn  0.0 -0.998639 -0.052165 \r
+vn  0.0 -0.996705 0.081117 \r
+vn  0.0 -0.996120 0.088002 \r
+vn  0.0 -0.995823 -0.091305 \r
+vn  0.0 -0.995316 0.096677 \r
+vn  0.0 -0.992374 -0.123261 \r
+vn  0.0 -0.991705 -0.128537 \r
+vn  0.0 -0.987873 0.155261 \r
+vn  0.0 -0.983513 -0.180835 \r
+vn  0.0 -0.976630 0.214929 \r
+vn  0.0 -0.972219 0.234074 \r
+vn  0.0 -0.968848 0.247658 \r
+vn  0.0 -0.968741 0.248072 \r
+vn  0.0 -0.965647 -0.259856 \r
+vn  0.0 -0.953782 0.300501 \r
+vn  0.0 -0.942680 -0.333697 \r
+vn  0.0 -0.931168 -0.364591 \r
+vn  0.0 -0.923728 0.383050 \r
+vn  0.0 -0.918268 -0.395960 \r
+vn  0.0 -0.907019 -0.421089 \r
+vn  0.0 -0.899311 0.437310 \r
+vn  0.0 -0.897831 0.440340 \r
+vn  0.0 -0.889807 0.456337 \r
+vn  0.0 -0.869472 0.493982 \r
+vn  0.0 -0.809618 -0.586957 \r
+vn  0.0 -0.747858 0.663859 \r
+vn  0.0 -0.746748 0.665107 \r
+vn  0.0 -0.729334 -0.684158 \r
+vn  0.0 -0.691000 -0.722855 \r
+vn  0.0 -0.661306 0.750116 \r
+vn  0.0 -0.646505 -0.762910 \r
+vn  0.0 -0.643279 -0.765632 \r
+vn  0.0 -0.625114 0.780533 \r
+vn  0.0 -0.617650 0.786453 \r
+vn  0.0 -0.571180 -0.820825 \r
+vn  0.0 -0.541665 -0.840594 \r
+vn  0.0 -0.519853 -0.854256 \r
+vn  0.0 -0.468728 -0.883343 \r
+vn  0.0 -0.459639 -0.888106 \r
+vn  0.0 -0.441129 0.897444 \r
+vn  0.0 -0.411495 0.911412 \r
+vn  0.0 -0.411394 -0.911458 \r
+vn  0.0 -0.354066 -0.935220 \r
+vn  0.0 -0.341915 -0.939731 \r
+vn  0.0 -0.336356 0.941735 \r
+vn  0.0 -0.320303 -0.947315 \r
+vn  0.0 -0.257187 -0.966362 \r
+vn  0.0 -0.239983 0.970777 \r
+vn  0.0 -0.239735 0.970838 \r
+vn  0.0 -0.226535 -0.974003 \r
+vn  0.0 -0.206544 0.978437 \r
+vn  0.0 -0.161062 0.986944 \r
+vn  0.0 -0.148290 0.988944 \r
+vn  0.0 -0.144077 -0.989567 \r
+vn  0.0 -0.114550 -0.993418 \r
+vn  0.0 -0.069705 0.997568 \r
+vn  0.0 -0.059938 -0.998202 \r
+vn  0.0 -0.039081 -0.999236 \r
+vn  0.0 -0.030054 -0.999548 \r
+vn  0.0 -0.024487 0.999700 \r
+vn  0.0 0.046255 -0.998930 \r
+vn  0.0 0.048086 -0.998843 \r
+vn  0.0 0.082046 0.996629 \r
+vn  0.0 0.084064 0.996460 \r
+vn  0.0 0.151835 -0.988406 \r
+vn  0.0 0.248054 -0.968746 \r
+vn  0.0 0.252961 0.967476 \r
+vn  0.0 0.258139 -0.966108 \r
+vn  0.0 0.264014 0.964519 \r
+vn  0.0 0.288674 -0.957427 \r
+vn  0.0 0.377903 -0.925845 \r
+vn  0.0 0.406244 -0.913765 \r
+vn  0.0 0.434964 0.900448 \r
+vn  0.0 0.489355 0.872085 \r
+vn  0.0 0.499338 -0.866407 \r
+vn  0.0 0.510465 0.859898 \r
+vn  0.0 0.613714 0.789529 \r
+vn  0.0 0.652702 -0.757614 \r
+vn  0.0 0.707194 -0.707019 \r
+vn  0.0 0.745702 -0.666280 \r
+vn  0.0 0.878826 -0.477143 \r
+vn  0.0 0.900083 -0.435718 \r
+vn  0.0 0.929260 -0.369426 \r
+vn  0.0 0.931024 -0.364957 \r
+vn  0.0 0.940177 0.340687 \r
+vn  0.0 0.950652 0.310260 \r
+vn  0.0 0.966604 -0.256273 \r
+vn  0.0 0.969453 0.245278 \r
+vn  0.0 0.983536 -0.180712 \r
+vn  0.0 0.985018 -0.172454 \r
+vn  0.0 0.989641 0.143563 \r
+vn  0.0 0.993286 0.115684 \r
+vn  0.0 0.993555 0.113353 \r
+vn  0.0 0.996990 -0.077533 \r
+vn  0.0 0.997817 0.066047 \r
+vn  0.0 0.999991 0.004262 \r
+vn  0.002208 -0.999991 -0.003606 \r
+vn  0.005719 -0.999984 -0.000005 \r
+vn  0.006112 -0.999819 0.018014 \r
+vn  0.008367 0.905320 0.424648 \r
+vn  0.008578 -0.999963 -0.000008 \r
+vn  0.010605 0.997301 -0.072650 \r
+vn  0.013558 0.600072 -0.799831 \r
+vn  0.019868 -0.225351 0.974075 \r
+vn  0.022340 -0.180099 -0.983395 \r
+vn  0.024351 -0.992009 0.123795 \r
+vn  0.041113 0.739929 0.671428 \r
+vn  0.042800 0.389630 0.919977 \r
+vn  0.044326 0.093986 -0.994586 \r
+vn  0.047591 0.467261 0.882838 \r
+vn  0.052794 0.743146 0.667044 \r
+vn  0.058920 -0.900096 -0.431689 \r
+vn  0.064541 -0.090827 -0.993773 \r
+vn  0.065433 -0.255417 -0.964614 \r
+vn  0.073506 0.159810 -0.984407 \r
+vn  0.099176 0.991926 -0.079033 \r
+vn  0.114623 0.951038 0.287033 \r
+vn  0.122026 -0.411153 0.903362 \r
+vn  0.137971 0.198536 -0.970334 \r
+vn  0.140819 -0.956507 -0.255470 \r
+vn  0.148919 0.976646 0.154874 \r
+vn  0.168066 0.721925 0.671251 \r
+vn  0.189713 0.142783 0.971402 \r
+vn  0.189832 0.701031 0.687400 \r
+vn  0.193781 0.067335 -0.978731 \r
+vn  0.198014 -0.950206 -0.240623 \r
+vn  0.208099 -0.117171 -0.971064 \r
+vn  0.209784 0.962537 0.171794 \r
+vn  0.211146 0.950518 -0.227889 \r
+vn  0.227466 -0.968585 -0.100511 \r
+vn  0.241052 -0.956433 -0.164712 \r
+vn  0.252111 0.965555 0.064372 \r
+vn  0.254041 0.759104 0.599353 \r
+vn  0.296168 -0.790144 0.536616 \r
+vn  0.299902 0.730850 0.613121 \r
+vn  0.309872 0.472052 0.825316 \r
+vn  0.329682 0.816620 -0.473753 \r
+vn  0.338292 0.932448 0.126886 \r
+vn  0.357518 0.435442 0.826179 \r
+vn  0.359381 -0.254883 -0.897708 \r
+vn  0.386568 -0.751703 -0.534329 \r
+vn  0.388126 -0.854167 0.346059 \r
+vn  0.394028 0.533409 0.748477 \r
+vn  0.406686 0.162694 0.898965 \r
+vn  0.412971 -0.223117 0.882991 \r
+vn  0.419890 -0.903209 -0.088916 \r
+vn  0.422963 -0.243408 -0.872843 \r
+vn  0.425709 -0.891134 -0.157008 \r
+vn  0.434080 0.379053 0.817247 \r
+vn  0.434279 -0.884435 0.170809 \r
+vn  0.436358 -0.325835 0.838703 \r
+vn  0.438683 -0.408483 0.800437 \r
+vn  0.439407 -0.322907 0.838244 \r
+vn  0.441887 -0.256146 0.859724 \r
+vn  0.444120 -0.444711 0.777811 \r
+vn  0.450325 -0.446152 0.773406 \r
+vn  0.461319 -0.405063 0.789372 \r
+vn  0.468301 -0.857556 0.212820 \r
+vn  0.469107 0.831646 -0.297160 \r
+vn  0.471354 -0.828010 -0.303685 \r
+vn  0.472291 -0.334673 -0.815436 \r
+vn  0.472804 0.574982 -0.667722 \r
+vn  0.473621 -0.880617 0.014049 \r
+vn  0.484867 -0.794204 0.366256 \r
+vn  0.495365 -0.234143 0.836535 \r
+vn  0.508450 0.393580 0.765881 \r
+vn  0.517433 -0.420395 0.745340 \r
+vn  0.521236 0.243999 -0.817788 \r
+vn  0.530867 -0.827856 0.181201 \r
+vn  0.532780 -0.476055 -0.699655 \r
+vn  0.535228 0.398782 0.744650 \r
+vn  0.545461 0.374907 0.749612 \r
+vn  0.547533 -0.107099 0.829902 \r
+vn  0.553084 -0.509467 0.659197 \r
+vn  0.556795 0.328822 0.762795 \r
+vn  0.559577 -0.603300 0.568244 \r
+vn  0.572946 -0.632493 0.521235 \r
+vn  0.574344 0.747302 0.334169 \r
+vn  0.600603 -0.329338 0.728568 \r
+vn  0.600800 0.705010 0.376829 \r
+vn  0.616919 0.311126 0.722919 \r
+vn  0.636597 0.765415 0.094257 \r
+vn  0.640390 -0.454265 -0.619309 \r
+vn  0.644505 0.292579 -0.706407 \r
+vn  0.652418 -0.127716 0.747020 \r
+vn  0.656495 0.224532 0.720138 \r
+vn  0.670901 0.738451 0.067690 \r
+vn  0.675654 -0.072406 -0.733654 \r
+vn  0.680992 0.698217 0.220777 \r
+vn  0.682386 0.138034 0.717841 \r
+vn  0.685608 0.004560 0.727956 \r
+vn  0.686426 0.664631 -0.295102 \r
+vn  0.689580 0.170597 0.703830 \r
+vn  0.690065 0.161488 -0.705501 \r
+vn  0.692512 -0.077725 0.717207 \r
+vn  0.694846 -0.065323 0.716185 \r
+vn  0.701339 0.712586 -0.018544 \r
+vn  0.704485 0.708344 0.044158 \r
+vn  0.704546 -0.685447 -0.183788 \r
+vn  0.709469 0.632278 -0.311253 \r
+vn  0.713845 0.236036 0.659327 \r
+vn  0.713958 -0.007352 0.700150 \r
+vn  0.714578 -0.279688 0.641212 \r
+vn  0.718620 0.395565 -0.571939 \r
+vn  0.721087 0.206756 -0.661275 \r
+vn  0.721317 0.603325 0.340147 \r
+vn  0.724982 -0.054737 -0.686590 \r
+vn  0.728164 0.013960 -0.685261 \r
+vn  0.730829 -0.166424 -0.661961 \r
+vn  0.730965 0.274824 0.624629 \r
+vn  0.732123 0.095479 -0.674448 \r
+vn  0.746151 -0.546448 0.380334 \r
+vn  0.754149 -0.399642 0.521101 \r
+vn  0.755487 -0.312193 0.576000 \r
+vn  0.758194 -0.073472 -0.647876 \r
+vn  0.770790 0.159652 -0.616761 \r
+vn  0.771773 -0.380859 0.509228 \r
+vn  0.774406 0.368873 -0.514031 \r
+vn  0.775315 -0.577158 -0.256467 \r
+vn  0.777567 -0.591815 -0.212471 \r
+vn  0.781838 0.285062 -0.554498 \r
+vn  0.788092 0.067491 0.611846 \r
+vn  0.788328 0.002355 0.615251 \r
+vn  0.792189 -0.309115 0.526198 \r
+vn  0.794084 -0.471906 0.383061 \r
+vn  0.800903 -0.377041 0.465182 \r
+vn  0.803584 -0.038763 -0.593929 \r
+vn  0.809905 -0.331436 0.483946 \r
+vn  0.811590 -0.255527 0.525383 \r
+vn  0.814548 0.371365 0.445644 \r
+vn  0.817465 0.436860 0.375374 \r
+vn  0.823581 0.337742 0.455680 \r
+vn  0.832966 0.065493 0.549435 \r
+vn  0.833203 -0.240931 -0.497720 \r
+vn  0.835554 -0.085150 0.542770 \r
+vn  0.838528 0.241794 -0.488268 \r
+vn  0.843031 0.385436 0.375151 \r
+vn  0.843182 -0.013413 0.537461 \r
+vn  0.847413 -0.078917 -0.525036 \r
+vn  0.849413 -0.298478 0.435210 \r
+vn  0.855330 -0.234309 0.462072 \r
+vn  0.855800 -0.253704 0.450823 \r
+vn  0.856864 -0.108272 0.504044 \r
+vn  0.861154 0.276771 0.426395 \r
+vn  0.865869 -0.474897 0.157301 \r
+vn  0.870593 -0.091603 0.483401 \r
+vn  0.870805 -0.189656 -0.453574 \r
+vn  0.872924 -0.457451 -0.169535 \r
+vn  0.873196 -0.371001 0.316049 \r
+vn  0.873920 -0.146801 0.463372 \r
+vn  0.878000 0.112721 -0.465200 \r
+vn  0.882303 -0.157757 0.443457 \r
+vn  0.884238 -0.118708 0.451699 \r
+vn  0.885226 0.027722 0.464334 \r
+vn  0.886106 -0.134553 0.443521 \r
+vn  0.887054 0.129180 -0.443224 \r
+vn  0.888577 -0.176965 0.423219 \r
+vn  0.890179 0.379752 0.251732 \r
+vn  0.891660 -0.206380 -0.402927 \r
+vn  0.895561 0.279921 0.345853 \r
+vn  0.896375 -0.314013 0.312901 \r
+vn  0.896492 -0.209997 0.390132 \r
+vn  0.897638 -0.075175 0.434275 \r
+vn  0.900115 -0.427563 0.083560 \r
+vn  0.900933 -0.428188 -0.070534 \r
+vn  0.902406 -0.409772 -0.133235 \r
+vn  0.903523 -0.427444 0.030629 \r
+vn  0.903638 -0.241643 0.353620 \r
+vn  0.904557 -0.348274 0.245931 \r
+vn  0.906057 0.381196 -0.183714 \r
+vn  0.908375 -0.067055 -0.412744 \r
+vn  0.911128 0.354633 -0.209953 \r
+vn  0.914078 0.078569 -0.397854 \r
+vn  0.914811 -0.319057 -0.247637 \r
+vn  0.915159 0.092329 0.392376 \r
+vn  0.916435 0.259058 0.305016 \r
+vn  0.916991 -0.031325 -0.397675 \r
+vn  0.924696 0.071256 0.373979 \r
+vn  0.925893 -0.317986 -0.203981 \r
+vn  0.928884 -0.235037 -0.286238 \r
+vn  0.929509 0.363012 0.065076 \r
+vn  0.931502 -0.303009 0.201219 \r
+vn  0.932268 -0.235072 0.274985 \r
+vn  0.935406 -0.329436 -0.128401 \r
+vn  0.937868 -0.104277 0.330952 \r
+vn  0.938748 -0.026743 0.343566 \r
+vn  0.940622 -0.271350 0.203960 \r
+vn  0.946846 0.079474 -0.311717 \r
+vn  0.947053 -0.260578 -0.187587 \r
+vn  0.948489 0.053494 0.312262 \r
+vn  0.950649 0.170929 -0.258938 \r
+vn  0.953528 0.272774 -0.127976 \r
+vn  0.958495 0.285041 0.006183 \r
+vn  0.962143 0.263665 -0.069009 \r
+vn  0.965052 -0.262008 -0.005160 \r
+vn  0.966751 -0.112059 0.229859 \r
+vn  0.968383 -0.136717 -0.208669 \r
+vn  0.969837 -0.181013 0.163249 \r
+vn  0.970849 -0.239674 0.003057 \r
+vn  0.972644 0.041816 0.228505 \r
+vn  0.973460 0.072270 0.217146 \r
+vn  0.975949 -0.212540 0.048483 \r
+vn  0.976178 -0.053752 -0.210207 \r
+vn  0.976428 0.050032 0.209963 \r
+vn  0.977198 -0.212138 0.009060 \r
+vn  0.979778 0.191800 -0.056995 \r
+vn  0.984962 0.117969 0.126225 \r
+vn  0.986100 0.044479 0.160089 \r
+vn  0.987794 -0.105965 -0.114172 \r
+vn  0.988213 -0.121405 -0.093246 \r
+vn  0.990649 0.135951 -0.011452 \r
+vn  0.998673 -0.034541 -0.038197 \r
+vn  1.0 0.0 0.0 \r
+vn  1.0 0.0 0.0 \r
+\r
+\r
+s off\r
+f 149//334 146//554 148//309\r
+f 146//554 150//336 148//309\r
+f 146//554 147//360 150//336\r
+f 149//334 144//344 146//554\r
+f 151//346 249//492 144//344\r
+f 154//507 90//403 153//447\r
+f 90//403 154//507 91//404\r
+f 155//501 93//390 92//398\r
+f 155//501 94//388 93//390\r
+f 232//616 154//507 156//569\r
+f 89//405 153//447 90//403\r
+f 91//404 154//507 155//501\r
+f 155//501 92//398 91//404\r
+f 155//501 160//477 94//388\r
+f 165//572 228//568 264//544\r
+f 286//576 158//528 171//451\r
+f 289//615 154//507 232//616\r
+f 289//615 157//597 155//501\r
+f 171//451 175//228 269//559\r
+f 155//501 291//600 160//477\r
+f 359//497 287//619 270//548\r
+f 286//576 171//451 288//596\r
+f 98//351 160//477 97//368\r
+f 359//497 159//288 290//423\r
+f 160//477 359//497 290//423\r
+f 290//423 172//154 173//260\r
+f 161//543 98//351 164//439\r
+f 98//351 161//543 160//477\r
+f 101//384 100//387 161//543\r
+f 102//375 162//536 103//370\r
+f 162//536 104//367 103//370\r
+f 100//387 160//477 161//543\r
+f 160//477 100//387 94//388\r
+f 101//384 162//536 102//375\r
+f 161//543 162//536 101//384\r
+f 104//367 162//536 195//605\r
+f 118//364 104//367 195//605\r
+f 163//483 195//605 162//536\r
+f 164//439 163//483 161//543\r
+f 162//536 161//543 163//483\r
+f 195//605 163//483 105//361\r
+f 106//335 105//361 163//483\r
+f 107//306 106//335 164//439\r
+f 163//483 164//439 106//335\r
+f 107//306 164//439 99//341\r
+f 228//568 165//572 166//524\r
+f 180//590 188//527 261//525\r
+f 229//449 228//568 230//296\r
+f 228//568 229//449 618//598\r
+f 178//421 158//528 229//449\r
+f 108//343 169//427 168//486\r
+f 169//427 108//343 109//342\r
+f 170//267 169//427 110//330\r
+f 109//342 110//330 169//427\r
+f 176//216 165//572 169//427\r
+f 111//318 178//421 177//121\r
+f 112//332 177//121 176//216\r
+f 170//267 113//322 112//332\r
+f 255//310 256//312 171//451\r
+f 171//451 114//314 255//310\r
+f 171//451 115//320 114//314\r
+f 110//330 113//322 170//267\r
+f 116//321 178//421 111//318\r
+f 115//320 178//421 116//321\r
+f 171//451 178//421 115//320\r
+f 257//324 171//451 256//312\r
+f 174//251 172//154 175//228\r
+f 173//260 172//154 174//251\r
+f 171//451 174//251 175//228\r
+f 174//251 257//324 117//319\r
+f 258//307 174//251 117//319\r
+f 259//315 174//251 258//307\r
+f 173//260 174//251 259//315\r
+f 173//260 259//315 260//328\r
+f 173//260 260//328 96//340\r
+f 171//451 257//324 174//251\r
+f 176//216 183//445 165//572\r
+f 177//121 178//421 230//296\r
+f 166//524 261//525 262//418\r
+f 111//318 177//121 112//332\r
+f 176//216 170//267 112//332\r
+f 179//428 262//418 261//525\r
+f 178//421 229//449 230//296\r
+f 170//267 176//216 169//427\r
+f 168//486 169//427 167//538\r
+f 98//351 99//341 164//439\r
+f 179//428 261//525 188//527\r
+f 180//590 182//540 194//603\r
+f 189//542 194//603 182//540\r
+f 183//445 181//480 182//540\r
+f 181//480 191//453 189//542\r
+f 181//480 189//542 182//540\r
+f 181//480 183//445 187//291\r
+f 193//101 185//171 184//165\r
+f 187//291 185//171 186//208\r
+f 192//205 186//208 193//101\r
+f 187//291 183//445 185//171\r
+f 190//278 187//291 186//208\r
+f 186//208 192//205 190//278\r
+f 193//101 186//208 185//171\r
+f 181//480 187//291 191//453\r
+f 191//453 187//291 190//278\r
+f 189//305 191//305 194//305\r
+f 190//305 192//305 193//304\r
+f 193//304 191//305 190//305\r
+f 194//305 191//305 193//304\r
+f 184//300 179//302 188//303\r
+f 193//304 184//300 188//303\r
+f 193//304 188//303 194//305\r
+f 180//590 194//603 188//527\r
+f 182//540 180//590 183//445\r
+f 165//572 180//590 261//525\r
+f 183//445 180//590 165//572\r
+f 262//418 179//428 184//165\r
+f 263//145 184//165 185//171\r
+f 184//165 263//145 262//418\r
+f 185//171 183//445 176//216\r
+f 118//364 195//605 121//358\r
+f 195//605 105//361 119//365\r
+f 121//358 120//622 118//364\r
+f 195//605 119//365 121//358\r
+f 121//358 123//622 120//622\r
+f 122//622 123//622 121//358\r
+f 123//622 122//622 124//378\r
+f 124//378 125//363 123//622\r
+f 125//363 124//378 247//611\r
+f 247//611 126//348 125//363\r
+f 127//372 247//611 124//378\r
+f 167//538 169//427 264//544\r
+f 219//579 167//538 156//569\r
+f 231//563 206//561 252//584\r
+f 294//475 128//385 200//458\r
+f 89//405 131//397 153//447\r
+f 132//395 153//447 131//397\r
+f 219//579 133//393 199//446\r
+f 133//393 139//392 199//446\r
+f 250//383 200//458 128//385\r
+f 203//532 200//458 253//490\r
+f 202//549 200//458 203//532\r
+f 213//588 204//457 201//557\r
+f 203//532 206//561 202//549\r
+f 205//591 208//607 207//562\r
+f 202//549 210//551 209//552\r
+f 206//561 231//563 210//551\r
+f 207//562 209//552 231//563\r
+f 211//567 214//620 197//541\r
+f 211//567 234//522 239//604\r
+f 214//620 198//585 197//541\r
+f 213//588 198//585 214//620\r
+f 196//519 211//567 197//541\r
+f 205//591 198//585 213//588\r
+f 213//588 214//620 235//529\r
+f 211//567 196//519 234//522\r
+f 236//465 234//522 196//519\r
+f 215//535 236//465 212//511\r
+f 196//519 212//511 236//465\r
+f 204//457 138//317 201//557\r
+f 138//317 204//457 135//313\r
+f 254//325 136//316 217//281\r
+f 133//393 219//579 132//395\r
+f 201//557 219//579 218//612\r
+f 219//579 201//557 167//538\r
+f 168//486 167//538 201//557\r
+f 201//557 138//317 168//486\r
+f 168//486 138//317 137//333\r
+f 137//333 108//343 168//486\r
+f 153//447 219//579 156//569\r
+f 219//579 153//447 132//395\r
+f 264//544 169//427 165//572\r
+f 129//386 220//437 130//400\r
+f 199//446 139//392 293//438\r
+f 219//579 221//581 222//621\r
+f 222//621 218//612 219//579\r
+f 220//437 224//489 223//468\r
+f 224//489 225//515 223//468\r
+f 199//446 293//438 223//468\r
+f 293//438 220//437 223//468\r
+f 293//438 130//400 220//437\r
+f 221//581 225//515 226//610\r
+f 221//581 199//446 223//468\r
+f 199//446 221//581 219//579\r
+f 294//475 225//515 129//386\r
+f 224//489 227//444 129//386\r
+f 227//444 220//437 129//386\r
+f 294//475 202//549 226//610\r
+f 232//616 228//568 618//598\r
+f 228//568 166//524 230//296\r
+f 252//584 206//561 203//532\r
+f 231//563 205//591 207//562\r
+f 231//563 252//584 251//599\r
+f 210//551 202//549 206//561\r
+f 228//568 232//616 264//544\r
+f 171//451 158//528 178//421\r
+f 217//281 136//316 237//415\r
+f 233//435 237//415 152//331\r
+f 237//415 216//440 217//281\r
+f 215//535 216//440 236//465\r
+f 237//415 245//473 216//440\r
+f 236//465 216//440 245//473\r
+f 222//621 221//581 238//608\r
+f 238//608 208//607 222//621\r
+f 218//612 222//621 208//607\r
+f 208//607 238//608 202//549\r
+f 218//612 208//607 201//557\r
+f 201//557 208//607 205//591\r
+f 226//610 202//549 238//608\r
+f 238//608 221//581 226//610\r
+f 294//475 226//610 225//515\r
+f 225//515 224//489 129//386\r
+f 208//607 202//549 209//552\r
+f 209//552 207//562 208//607\r
+f 240//467 239//604 234//522\r
+f 239//604 241//580 211//567\r
+f 241//580 214//620 211//567\r
+f 241//580 242//508 214//620\r
+f 235//529 214//620 242//508\r
+f 233//435 235//529 242//508\r
+f 242//508 243//455 233//435\r
+f 234//522 236//465 244//478\r
+f 244//478 240//467 234//522\r
+f 243//455 246//472 233//435\r
+f 237//415 233//435 246//472\r
+f 245//473 237//415 246//472\r
+f 236//465 245//473 244//478\r
+f 247//611 140//337 126//348\r
+f 247//611 127//372 141//350\r
+f 140//337 247//611 142//311\r
+f 247//611 141//350 142//311\r
+f 156//569 154//507 153//447\r
+f 289//615 618//598 620//593\r
+f 204//457 213//588 248//469\r
+f 135//313 204//457 143//326\r
+f 204//457 248//469 143//326\r
+f 143//326 248//469 145//338\r
+f 146//554 249//492 248//469\r
+f 145//338 248//469 249//492\r
+f 146//554 248//469 152//331\r
+f 249//492 146//554 144//344\r
+f 249//492 151//346 145//338\r
+f 136//316 152//331 237//415\r
+f 233//435 213//588 235//529\r
+f 248//469 213//588 233//435\r
+f 209//552 210//551 231//563\r
+f 213//588 201//557 205//591\r
+f 96//340 290//423 173//260\r
+f 290//423 96//340 95//347\r
+f 251//599 198//585 205//591\r
+f 231//563 251//599 205//591\r
+f 252//584 203//532 253//490\r
+f 200//458 250//383 253//490\r
+f 248//469 233//435 152//331\r
+f 261//525 166//524 165//572\r
+f 166//524 262//418 230//296\r
+f 230//296 262//418 263//145\r
+f 176//216 263//145 185//171\r
+f 263//145 177//121 230//296\r
+f 263//145 176//216 177//121\r
+f 156//569 264//544 232//616\r
+f 167//538 264//544 156//569\r
+f 265//602 266//530 267//503\r
+f 175//228 268//448 269//559\r
+f 270//548 267//503 271//276\r
+f 272//424 271//276 267//503\r
+f 272//424 267//503 266//530\r
+f 265//602 273//546 274//601\r
+f 275//542 274//601 273//546\r
+f 268//448 276//484 273//546\r
+f 276//484 277//453 275//542\r
+f 276//484 275//542 273//546\r
+f 276//484 268//448 278//293\r
+f 279//93 280//157 281//150\r
+f 278//293 280//157 282//211\r
+f 283//205 282//211 279//93\r
+f 278//293 268//448 280//157\r
+f 284//278 278//293 282//211\r
+f 282//211 283//205 284//278\r
+f 279//93 282//211 280//157\r
+f 276//484 278//293 277//453\r
+f 277//453 278//293 284//278\r
+f 275//305 277//305 274//305\r
+f 284//305 283//305 279//305\r
+f 279//305 277//305 284//305\r
+f 274//305 277//305 279//305\r
+f 281//305 272//305 266//305\r
+f 279//305 281//305 266//305\r
+f 279//305 266//305 274//305\r
+f 265//602 274//601 266//530\r
+f 273//546 265//602 268//448\r
+f 270//548 269//559 265//602\r
+f 268//448 265//602 269//559\r
+f 271//276 272//424 281//150\r
+f 285//124 281//150 280//157\r
+f 281//150 285//124 271//276\r
+f 280//157 268//448 175//228\r
+f 265//602 267//503 270//548\r
+f 270//548 271//276 159//288\r
+f 271//276 285//124 292//128\r
+f 280//157 292//128 285//124\r
+f 292//128 159//288 271//276\r
+f 292//128 280//157 175//228\r
+f 221//581 223//468 225//515\r
+f 220//437 227//444 224//489\r
+f 287//619 288//596 269//559\r
+f 269//559 270//548 287//619\r
+f 288//596 171//451 269//559\r
+f 289//615 232//616 618//598\r
+f 270//548 159//288 359//497\r
+f 287//619 359//497 291//600\r
+f 619//618 287//619 291//600\r
+f 286//576 288//596 619//618\r
+f 155//501 154//507 289//615\r
+f 620//593 619//618 157//597\r
+f 160//477 290//423 97//368\r
+f 95//347 97//368 290//423\r
+f 157//597 291//600 155//501\r
+f 288//596 287//619 619//618\r
+f 159//288 292//128 172//154\r
+f 292//128 175//228 172//154\r
+f 134//399 293//438 139//392\r
+f 130//400 293//438 134//399\r
+f 202//549 294//475 200//458\r
+f 129//386 128//385 294//475\r
+f 212//511 296//595 215//535\r
+f 196//519 296//595 212//511\r
+f 254//325 217//281 295//345\r
+f 216//440 295//345 217//281\r
+f 252//584 296//595 196//519\r
+f 196//519 197//541 252//584\r
+f 251//599 252//584 197//541\r
+f 197//541 198//585 251//599\r
+f 330//531 329//547 328//614\r
+f 327//606 328//614 329//547\r
+f 296//595 331//510 330//531\r
+f 330//531 328//614 296//595\r
+f 296//595 328//614 215//535\r
+f 253//490 331//510 252//584\r
+f 296//595 252//584 331//510\r
+f 329//547 330//531 297//373\r
+f 298//376 297//373 330//531\r
+f 298//376 331//510 299//382\r
+f 331//510 298//376 330//531\r
+f 331//510 253//490 299//382\r
+f 250//383 299//382 253//490\r
+f 333//470 332//479 328//614\r
+f 215//535 328//614 332//479\r
+f 327//606 333//470 328//614\r
+f 334//456 333//470 327//606\r
+f 301//355 333//470 300//359\r
+f 334//456 300//359 333//470\r
+f 302//356 332//479 301//355\r
+f 333//470 301//355 332//479\r
+f 215//535 332//479 216//440\r
+f 295//345 216//440 302//356\r
+f 216//440 332//479 302//356\r
+f 327//606 329//547 336//555\r
+f 336//555 335//518 327//606\r
+f 329//547 297//373 303//369\r
+f 303//369 336//555 329//547\r
+f 334//456 327//606 335//518\r
+f 300//359 334//456 335//518\r
+f 335//518 304//366 300//359\r
+f 335//518 336//555 338//564\r
+f 338//564 337//516 335//518\r
+f 336//555 303//369 305//362\r
+f 305//362 338//564 336//555\r
+f 304//366 335//518 337//516\r
+f 337//516 306//371 304//366\r
+f 337//516 338//564 340//566\r
+f 340//566 339//517 337//516\r
+f 338//564 305//362 307//357\r
+f 307//357 340//566 338//564\r
+f 306//371 337//516 339//517\r
+f 339//517 308//374 306//371\r
+f 339//517 340//566 342//571\r
+f 342//571 341//520 339//517\r
+f 340//566 307//357 309//354\r
+f 309//354 342//571 340//566\r
+f 308//374 339//517 341//520\r
+f 341//520 310//377 308//374\r
+f 341//520 342//571 344//577\r
+f 344//577 343//514 341//520\r
+f 342//571 309//354 311//349\r
+f 311//349 344//577 342//571\r
+f 310//377 341//520 343//514\r
+f 343//514 312//381 310//377\r
+f 343//514 344//577 346//578\r
+f 346//578 345//513 343//514\r
+f 344//577 311//349 313//339\r
+f 313//339 346//578 344//577\r
+f 312//381 343//514 345//513\r
+f 345//513 314//389 312//381\r
+f 345//513 346//578 348//573\r
+f 348//573 347//509 345//513\r
+f 346//578 313//339 315//327\r
+f 315//327 348//573 346//578\r
+f 314//389 345//513 347//509\r
+f 347//509 316//396 314//389\r
+f 347//509 348//573 350//574\r
+f 350//574 349//506 347//509\r
+f 348//573 315//327 317//308\r
+f 317//308 350//574 348//573\r
+f 316//396 347//509 349//506\r
+f 349//506 318//401 316//396\r
+f 349//506 350//574 352//575\r
+f 352//575 351//498 349//506\r
+f 350//574 317//308 319//323\r
+f 319//323 352//575 350//574\r
+f 318//401 349//506 351//498\r
+f 351//498 320//394 318//401\r
+f 351//498 352//575 354//583\r
+f 354//583 353//496 351//498\r
+f 352//575 319//323 321//329\r
+f 321//329 354//583 352//575\r
+f 320//394 351//498 353//496\r
+f 353//496 322//402 320//394\r
+f 353//496 354//583 356//493\r
+f 356//493 355//412 353//496\r
+f 354//583 321//329 323//352\r
+f 323//352 356//493 354//583\r
+f 322//402 353//496 355//412\r
+f 355//412 324//380 322//402\r
+f 355//412 356//493 358//239\r
+f 358//239 357//274 355//412\r
+f 325//391 358//239 356//493\r
+f 356//493 323//352 325//391\r
+f 324//380 355//412 357//274\r
+f 357//274 326//353 324//380\r
+f 147//360 146//554 152//331\r
+f 172//154 290//423 159//288\r
+f 160//477 291//600 359//497\r
+f 360//156 149//334 148//309\r
+f 150//336 360//156 148//309\r
+f 147//360 360//156 150//336\r
+f 144//344 149//334 360//156\r
+f 457//218 151//346 144//344\r
+f 90//403 362//203 361//263\r
+f 362//203 90//403 91//404\r
+f 93//390 363//209 92//398\r
+f 94//388 363//209 93//390\r
+f 362//203 440//94 364//141\r
+f 361//263 89//405 90//403\r
+f 362//203 91//404 363//209\r
+f 92//398 363//209 91//404\r
+f 368//233 363//209 94//388\r
+f 436//142 373//138 464//166\r
+f 366//182 486//137 379//259\r
+f 362//203 489//95 440//94\r
+f 365//113 489//95 363//209\r
+f 383//482 379//259 469//151\r
+f 491//110 363//209 368//233\r
+f 487//91 528//213 470//162\r
+f 379//259 486//137 488//116\r
+f 368//233 98//351 97//368\r
+f 367//422 528//213 490//287\r
+f 528//213 368//233 490//287\r
+f 380//556 490//287 381//450\r
+f 98//351 369//167 372//271\r
+f 369//167 98//351 368//233\r
+f 100//387 101//384 369//167\r
+f 370//174 102//375 103//370\r
+f 104//367 370//174 103//370\r
+f 368//233 100//387 369//167\r
+f 100//387 368//233 94//388\r
+f 370//174 101//384 102//375\r
+f 370//174 369//167 101//384\r
+f 370//174 104//367 403//105\r
+f 104//367 118//364 403//105\r
+f 403//105 371//227 370//174\r
+f 371//227 372//271 369//167\r
+f 369//167 370//174 371//227\r
+f 371//227 403//105 105//361\r
+f 105//361 106//335 371//227\r
+f 106//335 107//306 372//271\r
+f 372//271 371//227 106//335\r
+f 372//271 107//306 99//341\r
+f 373//138 436//142 374//186\r
+f 396//183 388//120 461//185\r
+f 436//142 437//261 438//414\r
+f 437//261 436//142 621//112\r
+f 366//182 386//289 437//261\r
+f 377//283 108//343 376//224\r
+f 108//343 377//283 109//342\r
+f 377//283 378//443 110//330\r
+f 110//330 109//342 377//283\r
+f 373//138 384//494 377//283\r
+f 386//289 111//318 385//589\r
+f 385//589 112//332 384//494\r
+f 113//322 378//443 112//332\r
+f 256//312 255//310 379//259\r
+f 114//314 379//259 255//310\r
+f 115//320 379//259 114//314\r
+f 113//322 110//330 378//443\r
+f 386//289 116//321 111//318\r
+f 386//289 115//320 116//321\r
+f 386//289 379//259 115//320\r
+f 379//259 257//324 256//312\r
+f 380//556 382//459 383//482\r
+f 380//556 381//450 382//459\r
+f 382//459 379//259 383//482\r
+f 257//324 382//459 117//319\r
+f 382//459 258//307 117//319\r
+f 382//459 259//315 258//307\r
+f 382//459 381//450 259//315\r
+f 259//315 381//450 260//328\r
+f 260//328 381//450 96//340\r
+f 257//324 379//259 382//459\r
+f 391//265 384//494 373//138\r
+f 386//289 385//589 438//414\r
+f 461//185 374//186 462//292\r
+f 385//589 111//318 112//332\r
+f 378//443 384//494 112//332\r
+f 462//292 387//282 461//185\r
+f 437//261 386//289 438//414\r
+f 384//494 378//443 377//283\r
+f 377//283 376//224 375//172\r
+f 99//341 98//351 372//271\r
+f 461//185 387//282 396//183\r
+f 390//170 388//120 402//107\r
+f 402//107 397//168 390//170\r
+f 389//230 391//265 390//170\r
+f 399//257 389//230 397//168\r
+f 397//168 389//230 390//170\r
+f 391//265 389//230 395//419\r
+f 393//539 401//609 392//545\r
+f 393//539 395//419 394//502\r
+f 394//502 400//505 401//609\r
+f 391//265 395//419 393//539\r
+f 395//419 398//432 394//502\r
+f 400//505 394//502 398//432\r
+f 394//502 401//609 393//539\r
+f 395//419 389//230 399//257\r
+f 395//419 399//257 398//432\r
+f 399//305 397//305 402//305\r
+f 400//305 398//305 401//406\r
+f 399//305 401//406 398//305\r
+f 399//305 402//305 401//406\r
+f 387//408 392//410 396//407\r
+f 392//410 401//406 396//407\r
+f 396//407 401//406 402//305\r
+f 402//107 388//120 396//183\r
+f 388//120 390//170 391//265\r
+f 388//120 373//138 461//185\r
+f 388//120 391//265 373//138\r
+f 387//282 462//292 392//545\r
+f 392//545 463//565 393//539\r
+f 463//565 392//545 462//292\r
+f 391//265 393//539 384//494\r
+f 403//105 118//364 121//358\r
+f 105//361 403//105 119//365\r
+f 120//622 121//358 118//364\r
+f 119//365 403//105 121//358\r
+f 123//622 121//358 120//622\r
+f 123//622 122//622 121//358\r
+f 122//622 123//622 124//378\r
+f 125//363 124//378 123//622\r
+f 124//378 125//363 455//99\r
+f 126//348 455//99 125//363\r
+f 455//99 127//372 124//378\r
+f 377//283 375//172 464//166\r
+f 375//172 427//131 364//141\r
+f 414//149 439//147 459//126\r
+f 128//385 494//235 408//252\r
+f 131//397 89//405 361//263\r
+f 361//263 132//395 131//397\r
+f 133//393 427//131 407//264\r
+f 139//392 133//393 407//264\r
+f 408//252 250//383 128//385\r
+f 408//252 411//178 460//220\r
+f 408//252 410//161 411//178\r
+f 412//253 421//122 409//153\r
+f 414//149 411//178 410//161\r
+f 416//103 413//119 415//148\r
+f 418//159 410//161 417//158\r
+f 439//147 414//149 418//159\r
+f 417//158 415//148 439//147\r
+f 422//90 419//143 405//169\r
+f 442//188 419//143 447//106\r
+f 406//125 422//90 405//169\r
+f 406//125 421//122 422//90\r
+f 419//143 404//191 405//169\r
+f 406//125 413//119 421//122\r
+f 422//90 421//122 443//181\r
+f 404//191 419//143 442//188\r
+f 442//188 444//245 404//191\r
+f 444//245 423//175 420//199\r
+f 420//199 404//191 444//245\r
+f 138//317 412//253 409//153\r
+f 412//253 138//317 135//313\r
+f 136//316 254//325 425//429\r
+f 427//131 133//393 132//395\r
+f 427//131 409//153 426//98\r
+f 409//153 427//131 375//172\r
+f 375//172 376//224 409//153\r
+f 138//317 409//153 376//224\r
+f 138//317 376//224 137//333\r
+f 108//343 137//333 376//224\r
+f 427//131 361//263 364//141\r
+f 361//263 427//131 132//395\r
+f 377//283 464//166 373//138\r
+f 428//273 129//386 130//400\r
+f 139//392 407//264 493//272\r
+f 429//129 427//131 430//89\r
+f 426//98 430//89 427//131\r
+f 432//221 428//273 431//242\r
+f 433//195 432//221 431//242\r
+f 493//272 407//264 431//242\r
+f 428//273 493//272 431//242\r
+f 130//400 493//272 428//273\r
+f 433//195 429//129 434//100\r
+f 407//264 429//129 431//242\r
+f 429//129 407//264 427//131\r
+f 433//195 494//235 129//386\r
+f 435//266 432//221 129//386\r
+f 428//273 435//266 129//386\r
+f 410//161 494//235 434//100\r
+f 436//142 440//94 621//112\r
+f 374//186 436//142 438//414\r
+f 414//149 459//126 411//178\r
+f 413//119 439//147 415//148\r
+f 459//126 439//147 458//111\r
+f 410//161 418//159 414//149\r
+f 440//94 436//142 464//166\r
+f 366//182 379//259 386//289\r
+f 136//316 425//429 445//295\r
+f 445//295 441//275 152//331\r
+f 424//270 445//295 425//429\r
+f 424//270 423//175 444//245\r
+f 453//237 445//295 424//270\r
+f 424//270 444//245 453//237\r
+f 429//129 430//89 446//102\r
+f 416//103 446//102 430//89\r
+f 430//89 426//98 416//103\r
+f 446//102 416//103 410//161\r
+f 416//103 426//98 409//153\r
+f 416//103 409//153 413//119\r
+f 410//161 434//100 446//102\r
+f 429//129 446//102 434//100\r
+f 434//100 494//235 433//195\r
+f 432//221 433//195 129//386\r
+f 410//161 416//103 417//158\r
+f 415//148 417//158 416//103\r
+f 447//106 448//243 442//188\r
+f 449//130 447//106 419//143\r
+f 422//90 449//130 419//143\r
+f 450//202 449//130 422//90\r
+f 422//90 443//181 450//202\r
+f 443//181 441//275 450//202\r
+f 451//255 450//202 441//275\r
+f 444//245 442//188 452//232\r
+f 448//243 452//232 442//188\r
+f 454//238 451//255 441//275\r
+f 441//275 445//295 454//238\r
+f 445//295 453//237 454//238\r
+f 453//237 444//245 452//232\r
+f 140//337 455//99 126//348\r
+f 127//372 455//99 141//350\r
+f 455//99 140//337 142//311\r
+f 141//350 455//99 142//311\r
+f 362//203 364//141 361//263\r
+f 621//112 489//95 622//117\r
+f 421//122 412//253 456//241\r
+f 412//253 135//313 143//326\r
+f 456//241 412//253 143//326\r
+f 456//241 143//326 145//338\r
+f 457//218 360//156 456//241\r
+f 456//241 145//338 457//218\r
+f 456//241 360//156 152//331\r
+f 360//156 457//218 144//344\r
+f 151//346 457//218 145//338\r
+f 152//331 136//316 445//295\r
+f 421//122 441//275 443//181\r
+f 421//122 456//241 441//275\r
+f 418//159 417//158 439//147\r
+f 409//153 421//122 413//119\r
+f 490//287 96//340 381//450\r
+f 96//340 490//287 95//347\r
+f 406//125 458//111 413//119\r
+f 458//111 439//147 413//119\r
+f 411//178 459//126 460//220\r
+f 250//383 408//252 460//220\r
+f 441//275 456//241 152//331\r
+f 374//186 461//185 373//138\r
+f 462//292 374//186 438//414\r
+f 462//292 438//414 463//565\r
+f 463//565 384//494 393//539\r
+f 385//589 463//565 438//414\r
+f 384//494 463//565 385//589\r
+f 464//166 364//141 440//94\r
+f 464//166 375//172 364//141\r
+f 466//180 465//108 467//207\r
+f 468//262 383//482 469//151\r
+f 467//207 470//162 471//434\r
+f 471//434 472//286 467//207\r
+f 467//207 472//286 466//180\r
+f 473//164 465//108 474//109\r
+f 474//109 475//168 473//164\r
+f 476//226 468//262 473//164\r
+f 477//257 476//226 475//168\r
+f 475//168 476//226 473//164\r
+f 468//262 476//226 478//417\r
+f 480//553 479//617 481//560\r
+f 480//553 478//417 482//499\r
+f 482//499 483//505 479//617\r
+f 468//262 478//417 480//553\r
+f 478//417 484//432 482//499\r
+f 483//505 482//499 484//432\r
+f 482//499 479//617 480//553\r
+f 478//417 476//226 477//257\r
+f 478//417 477//257 484//432\r
+f 477//305 475//305 474//305\r
+f 483//305 484//305 479//305\r
+f 477//305 479//305 484//305\r
+f 477//305 474//305 479//305\r
+f 472//305 481//305 466//305\r
+f 481//305 479//305 466//305\r
+f 466//305 479//305 474//305\r
+f 474//109 465//108 466//180\r
+f 465//108 473//164 468//262\r
+f 469//151 470//162 465//108\r
+f 465//108 468//262 469//151\r
+f 472//286 471//434 481//560\r
+f 481//560 485//586 480//553\r
+f 485//586 481//560 471//434\r
+f 468//262 480//553 383//482\r
+f 467//207 465//108 470//162\r
+f 471//434 470//162 367//422\r
+f 485//586 471//434 492//582\r
+f 492//582 480//553 485//586\r
+f 367//422 492//582 471//434\r
+f 480//553 492//582 383//482\r
+f 431//242 429//129 433//195\r
+f 435//266 428//273 432//221\r
+f 488//116 487//91 469//151\r
+f 470//162 469//151 487//91\r
+f 379//259 488//116 469//151\r
+f 440//94 489//95 621//112\r
+f 367//422 470//162 528//213\r
+f 528//213 487//91 491//110\r
+f 487//91 623//92 491//110\r
+f 622//117 623//92 486//137\r
+f 362//203 363//209 489//95\r
+f 622//117 489//95 365//113\r
+f 490//287 368//233 97//368\r
+f 97//368 95//347 490//287\r
+f 491//110 365//113 363//209\r
+f 623//92 487//91 488//116\r
+f 492//582 367//422 380//556\r
+f 383//482 492//582 380//556\r
+f 493//272 134//399 139//392\r
+f 493//272 130//400 134//399\r
+f 494//235 410//161 408//252\r
+f 128//385 129//386 494//235\r
+f 495//114 420//199 423//175\r
+f 495//114 404//191 420//199\r
+f 425//429 254//325 295//345\r
+f 295//345 424//270 425//429\r
+f 495//114 459//126 404//191\r
+f 405//169 404//191 459//126\r
+f 459//126 458//111 405//169\r
+f 406//125 405//169 458//111\r
+f 498//163 499//179 497//96\r
+f 497//96 496//104 498//163\r
+f 500//200 495//114 499//179\r
+f 497//96 499//179 495//114\r
+f 497//96 495//114 423//175\r
+f 500//200 460//220 459//126\r
+f 459//126 495//114 500//200\r
+f 499//179 498//163 297//373\r
+f 297//373 298//376 499//179\r
+f 500//200 298//376 299//382\r
+f 298//376 500//200 499//179\r
+f 460//220 500//200 299//382\r
+f 299//382 250//383 460//220\r
+f 501//231 502//240 497//96\r
+f 497//96 423//175 501//231\r
+f 502//240 496//104 497//96\r
+f 502//240 503//254 496//104\r
+f 502//240 301//355 300//359\r
+f 300//359 503//254 502//240\r
+f 501//231 302//356 301//355\r
+f 301//355 502//240 501//231\r
+f 501//231 423//175 424//270\r
+f 424//270 295//345 302//356\r
+f 501//231 424//270 302//356\r
+f 498//163 496//104 505//155\r
+f 504//192 505//155 496//104\r
+f 297//373 498//163 303//369\r
+f 505//155 303//369 498//163\r
+f 496//104 503//254 504//192\r
+f 503//254 300//359 504//192\r
+f 304//366 504//192 300//359\r
+f 505//155 504//192 507//146\r
+f 506//194 507//146 504//192\r
+f 303//369 505//155 305//362\r
+f 507//146 305//362 505//155\r
+f 504//192 304//366 506//194\r
+f 306//371 506//194 304//366\r
+f 507//146 506//194 509//144\r
+f 508//193 509//144 506//194\r
+f 305//362 507//146 307//357\r
+f 509//144 307//357 507//146\r
+f 506//194 306//371 508//193\r
+f 308//374 508//193 306//371\r
+f 509//144 508//193 511//139\r
+f 510//190 511//139 508//193\r
+f 307//357 509//144 309//354\r
+f 511//139 309//354 509//144\r
+f 508//193 308//374 510//190\r
+f 310//377 510//190 308//374\r
+f 511//139 510//190 513//133\r
+f 512//196 513//133 510//190\r
+f 309//354 511//139 311//349\r
+f 513//133 311//349 511//139\r
+f 510//190 310//377 512//196\r
+f 312//381 512//196 310//377\r
+f 513//133 512//196 515//132\r
+f 514//197 515//132 512//196\r
+f 311//349 513//133 313//339\r
+f 515//132 313//339 513//133\r
+f 512//196 312//381 514//197\r
+f 314//389 514//197 312//381\r
+f 515//132 514//197 517//136\r
+f 516//201 517//136 514//197\r
+f 313//339 515//132 315//327\r
+f 517//136 315//327 515//132\r
+f 514//197 314//389 516//201\r
+f 316//396 516//201 314//389\r
+f 517//136 516//201 519//135\r
+f 518//204 519//135 516//201\r
+f 315//327 517//136 317//308\r
+f 519//135 317//308 517//136\r
+f 516//201 316//396 518//204\r
+f 318//401 518//204 316//396\r
+f 519//135 518//204 521//134\r
+f 520//212 521//134 518//204\r
+f 317//308 519//135 319//323\r
+f 521//134 319//323 519//135\r
+f 518//204 318//401 520//212\r
+f 320//394 520//212 318//401\r
+f 521//134 520//212 523//127\r
+f 522//214 523//127 520//212\r
+f 319//323 521//134 321//329\r
+f 523//127 321//329 521//134\r
+f 520//212 320//394 522//214\r
+f 322//402 522//214 320//394\r
+f 523//127 522//214 525//217\r
+f 524//298 525//217 522//214\r
+f 321//329 523//127 323//352\r
+f 525//217 323//352 523//127\r
+f 522//214 322//402 524//298\r
+f 324//380 524//298 322//402\r
+f 525//217 524//298 527//471\r
+f 526//436 527//471 524//298\r
+f 527//471 325//391 525//217\r
+f 323//352 525//217 325//391\r
+f 524//298 324//380 526//436\r
+f 326//353 526//436 324//380\r
+f 360//156 147//360 152//331\r
+f 490//287 380//556 367//422\r
+f 491//110 368//233 528//213\r
+f 533//431 534//420 531//433\r
+f 532//416 531//433 534//420\r
+f 549//442 533//431 531//433\r
+f 540//558 539//592 538//526\r
+f 541//587 560//570 559//613\r
+f 560//570 541//587 539//592\r
+f 538//526 539//592 541//587\r
+f 561//491 541//587 559//613\r
+f 535//413 536//460 542//485\r
+f 536//460 545//500 542//485\r
+f 545//500 536//460 538//526\r
+f 546//487 545//500 541//587\r
+f 538//526 541//587 545//500\r
+f 561//491 546//487 541//587\r
+f 547//426 545//500 546//487\r
+f 546//487 562//441 547//426\r
+f 563//299 547//426 562//441\r
+f 564//285 547//426 563//299\r
+f 545//500 548//452 544//512\r
+f 548//452 543//495 558//504\r
+f 543//495 548//452 530//481\r
+f 544//512 548//452 558//504\r
+f 545//500 547//426 548//452\r
+f 565//280 547//426 564//285\r
+f 565//280 566//301 547//426\r
+f 548//452 547//426 566//301\r
+f 549//442 548//452 566//301\r
+f 549//442 531//433 548//452\r
+f 548//452 531//433 530//481\r
+f 537//474 529//454 550//463\r
+f 538//526 552//521 540//558\r
+f 568//476 554//464 567//461\r
+f 568//476 555//488 554//464\r
+f 553//466 554//464 555//488\r
+f 555//488 568//476 569//533\r
+f 537//474 556//523 536//460\r
+f 550//463 555//488 537//474\r
+f 553//466 555//488 551//462\r
+f 550//463 551//462 555//488\r
+f 555//488 569//533 570//537\r
+f 537//474 555//488 556//523\r
+f 571//550 556//523 570//537\r
+f 556//523 555//488 570//537\r
+f 538//526 557//534 552//521\r
+f 556//523 557//534 538//526\r
+f 536//460 556//523 538//526\r
+f 572//594 557//534 556//523\r
+f 571//550 572//594 556//523\r
+f 544//512 542//485 545//500\r
+f 558//504 542//485 544//512\r
+f 562//441 546//487 561//491\r
+f 578//290 577//279 575//277\r
+f 575//277 576//294 578//290\r
+f 577//279 593//268 575//277\r
+f 583//118 584//152 582//184\r
+f 604//140 585//123 603//97\r
+f 585//123 604//140 583//118\r
+f 583//118 582//184 585//123\r
+f 585//123 605//219 603//97\r
+f 580//250 579//297 586//225\r
+f 589//210 580//250 586//225\r
+f 580//250 589//210 582//184\r
+f 589//210 590//223 585//123\r
+f 585//123 582//184 589//210\r
+f 590//223 605//219 585//123\r
+f 589//210 591//284 590//223\r
+f 606//269 590//223 591//284\r
+f 591//284 607//411 606//269\r
+f 591//284 608//425 607//411\r
+f 592//258 589//210 588//198\r
+f 587//215 592//258 602//206\r
+f 592//258 587//215 574//229\r
+f 592//258 588//198 602//206\r
+f 591//284 589//210 592//258\r
+f 591//284 609//430 608//425\r
+f 610//409 609//430 591//284\r
+f 591//284 592//258 610//409\r
+f 592//258 593//268 610//409\r
+f 575//277 593//268 592//258\r
+f 575//277 592//258 574//229\r
+f 573//256 581//236 594//247\r
+f 596//189 582//184 584//152\r
+f 598//246 612//234 611//249\r
+f 599//222 612//234 598//246\r
+f 598//246 597//244 599//222\r
+f 612//234 599//222 613//177\r
+f 600//187 581//236 580//250\r
+f 599//222 594//247 581//236\r
+f 599//222 597//244 595//248\r
+f 595//248 594//247 599//222\r
+f 613//177 599//222 614//173\r
+f 599//222 581//236 600//187\r
+f 600//187 615//160 614//173\r
+f 599//222 600//187 614//173\r
+f 601//176 582//184 596//189\r
+f 601//176 600//187 582//184\r
+f 600//187 580//250 582//184\r
+f 601//176 616//115 600//187\r
+f 616//115 615//160 600//187\r
+f 586//225 588//198 589//210\r
+f 586//225 602//206 588//198\r
+f 590//223 606//269 605//219\r
+f 357//274 358//239 617//379\r
+f 358//239 325//391 617//379\r
+f 326//353 357//274 617//379\r
+f 527//471 526//436 617//379\r
+f 325//391 527//471 617//379\r
+f 526//436 326//353 617//379\r
+f 158//528 618//598 229//449\r
+f 618//598 158//528 620//593\r
+f 157//597 619//618 291//600\r
+f 620//593 157//597 289//615\r
+f 620//593 158//528 286//576\r
+f 619//618 620//593 286//576\r
+f 621//112 366//182 437//261\r
+f 366//182 621//112 622//117\r
+f 366//182 622//117 486//137\r
+f 488//116 486//137 623//92\r
+f 491//110 623//92 365//113\r
+f 623//92 622//117 365//113\r
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 (file)
index 0000000..d616380
--- /dev/null
@@ -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 (file)
index 0000000..7c52c70
--- /dev/null
@@ -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 (file)
index 0000000..7f19aef
--- /dev/null
@@ -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 (file)
index 0000000..e546995
--- /dev/null
@@ -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 (file)
index 0000000..033f3f4
--- /dev/null
@@ -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 (file)
index 0000000..aea13be
--- /dev/null
@@ -0,0 +1,14 @@
+TITLE = "Zone and variables separated by commas"\r
+VARIABLES = X, Y, "foo bar",  foobar\r
+# Random comment\r
+ZONE N=4, E =1,ET= QUADRILATERAL , T = "Hex with commas"\r
+# Random comment\r
+,   F = FEBLOCK, VARLOCATION  =(  [4]= CELLCENTERED )\r
+ 0.0 1.0 1.0 0.0\r
+ 0.0 0.0 1.0 1.0\r
+# Random comment\r
+ 1.0 2.0 3.0 4.0\r
+# Random comment\r
+ 42.0\r
+# Random comment\r
+ 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 (file)
index 0000000..e5e8d03
--- /dev/null
@@ -0,0 +1,16 @@
+TITLE = "Zone and variables separated by commas"\r
+VARIABLES = "X", "Y",\r
+"foo bar",\r
+"foobar"\r
+# Random comment\r
+ZONE N=4, E =1,ET= QUADRILATERAL , T = "Hex with commas"\r
+# Random comment\r
+,   F = FEBLOCK, VARLOCATION  =(  [4]= CELLCENTERED )\r
+ 0.0 1.0 1.0 0.0\r
+ 0.0 0.0 1.0 1.0\r
+# Random comment\r
+ 1.0 2.0 3.0 4.0\r
+# Random comment\r
+ 42.0\r
+# Random comment\r
+ 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 (file)
index 0000000..e87b8c4
--- /dev/null
@@ -0,0 +1,14 @@
+TITLE = "Zone and variables separated by white spaces"\r
+VARIABLES = X Y "foo bar"  foobar\r
+# Random comment\r
+ZONE T = "VARLOCATION" N=4 E =1 ET= QUADRILATERAL\r
+# Random comment\r
+   F = FEBLOCK VARLOCATION  =(  [4]= CELLCENTERED )\r
+ 0.0 1.0 1.0 0.0\r
+ 0.0 0.0 1.0 1.0\r
+# Random comment\r
+ 1.0 2.0 3.0 4.0\r
+# Random comment\r
+ 42.0\r
+# Random comment\r
+ 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 (file)
index 0000000..03e96e3
--- /dev/null
@@ -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 (file)
index 0000000..f408426
--- /dev/null
@@ -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 (file)
index 0000000..e613760
Binary files /dev/null and b/test/data/meshio_meshes/ugrid/hch_strct.4.lb8.ugrid differ
diff --git a/test/data/meshio_meshes/ugrid/pyra_cube.ugrid b/test/data/meshio_meshes/ugrid/pyra_cube.ugrid
new file mode 100644 (file)
index 0000000..fa67cc5
--- /dev/null
@@ -0,0 +1,16 @@
+9 0 0 0 6 0 0
+0.0 0.0 0.0
+1.0 0.0 0.0
+0.0 1.0 0.0
+1.0 1.0 0.0
+0.0 0.0 1.0
+1.0 0.0 1.0
+0.0 1.0 1.0
+1.0 1.0 1.0
+0.5 0.5 0.5
+2 1 9 4 3
+6 8 9 5 7
+6 2 9 8 4
+5 1 9 6 2
+3 1 9 7 5
+7 8 9 3 4
diff --git a/test/data/meshio_meshes/ugrid/sphere_mixed.1.lb8.ugrid b/test/data/meshio_meshes/ugrid/sphere_mixed.1.lb8.ugrid
new file mode 100644 (file)
index 0000000..cb0c29c
Binary files /dev/null and b/test/data/meshio_meshes/ugrid/sphere_mixed.1.lb8.ugrid differ
diff --git a/test/data/meshio_meshes/vtk/00_image.vtk b/test/data/meshio_meshes/vtk/00_image.vtk
new file mode 100644 (file)
index 0000000..2eb4fc0
--- /dev/null
@@ -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 (file)
index 0000000..b0990f4
--- /dev/null
@@ -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 (file)
index 0000000..5e43db3
--- /dev/null
@@ -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 (file)
index 0000000..26139ce
--- /dev/null
@@ -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 (file)
index 0000000..982ee88
--- /dev/null
@@ -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 (file)
index 0000000..c675ec6
--- /dev/null
@@ -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 (file)
index 0000000..a39c36a
--- /dev/null
@@ -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 (file)
index 0000000..65e682a
--- /dev/null
@@ -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 (file)
index 0000000..f5606af
--- /dev/null
@@ -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 (file)
index 0000000..72100ec
--- /dev/null
@@ -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 (file)
index 0000000..bb38670
Binary files /dev/null and b/test/data/meshio_meshes/vtu/00_raw_binary.vtu differ
diff --git a/test/data/meshio_meshes/vtu/01_raw_binary_int64.vtu b/test/data/meshio_meshes/vtu/01_raw_binary_int64.vtu
new file mode 100644 (file)
index 0000000..2c46465
Binary files /dev/null and b/test/data/meshio_meshes/vtu/01_raw_binary_int64.vtu differ
diff --git a/test/data/meshio_meshes/vtu/02_raw_compressed.vtu b/test/data/meshio_meshes/vtu/02_raw_compressed.vtu
new file mode 100644 (file)
index 0000000..5c38e85
Binary files /dev/null and b/test/data/meshio_meshes/vtu/02_raw_compressed.vtu differ
diff --git a/test/data/meshio_meshes/wkt/simple.wkt b/test/data/meshio_meshes/wkt/simple.wkt
new file mode 100644 (file)
index 0000000..a35c8a3
--- /dev/null
@@ -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 (file)
index 0000000..15c42bc
--- /dev/null
@@ -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)))
index fb8380f908f00b792b9d269fd415d5b3238dfc62..9de76f4a368a70b2ab501c97c3f94746d0c54a9b 100644 (file)
@@ -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)