Skip to content
Dmitrii Semikin edited this page Feb 26, 2021 · 12 revisions

open-neutral-mesh-file-formats

This project is an initiative to define several basic neutral file formats to facilitate exchange of meshes (as in FEM) between different SW packages.

Drafts of File Format Definitions

  • Neutral Triangular Mesh (Text) v1 - Draft. In Work and thoughts and reasoning about this standard.
  • Neutral Triangular Mesh (Binary) v1 - not yet started
  • Neutral Linear Mesh (Text) v1 - not yet started
  • Neutral Linear Mesh (Binary) v1 - not yet started
  • Neutral Polyhedral Mesh (Text) v1 - not yet started
  • Neutral Polyhedral Mesh (Binary) - not yet started

Goals of the Project

Main goal of this project is to define several file formats, which could be used for easy and efficient exchange of meshes between different SW packages. In context of this project the word mesh means discretisation of geomtrical objects, like in FEM or FVM.

The following file formats are planned to be developed:

  • Triangular mesh (effectively it is intended to be a replacement for stl)
  • Tetrahedral mesh (special case of linear mesh below). It is not yet clear if separate format is needed for this kind of mesh.
  • Linear mesh. Can represent linear surace or volume elements, like tetrahedron, wedge, hexagon, prism etc., but not generic polyhedral mesh.
  • Polyhedral mesh. Often used in CFD applications. Usually uses different topology definition compared to the linear mesh above.

Each of the formats above should be defined in two variants: text and binary.

As further development one may consider also definition of additional format(s) for representation of non-linear elements.

Objectives for the Formats

  • The formats should be as simple as possible. Minimum features is going to be included. Simplicity of implementation is preferred over flexibility and richness.

  • Simplicity of implementation of reader is more important, than simplicity of implementation of writer.

  • Formats are designed for the files to be created and read by computer rather than human. Text variants are going to be understandable by human, but many features, which could simplify understanding and manual authoring of such files (like e.g. comments) will not be included.

  • The formats are supposed to be useable with real life industrial scale models (i.e. big models), so they should be efficient enough in all the senses (This is also one of the reasons to introduce binary versions of all formats):

    • performance of reading,
    • performance of writing,
    • storage efficiency.
  • Binary and text formats should be as close as possible.

  • It is desireable, that more simple formats are proper subsets of more complicated formats. E.g. Triangular Mesh should be compatible with Linear Mesh. Of course, it is not yet clear, if this objective can be fulfilled, because we will start with more simple formats and thus may overlook needs of more complicated formats. Besides it may contradict to the main objective for these formats: simplicity.

Why this project?

I am not an Engineer, who's job is to do simulations all the time or to work with meshes. But it happened so, that from time to time I touch this area. First time it was about ten years back. That time I was wondering, why there is no common mesh format, which would be supported by many sw packages. Recently I was again involved in some engineering activity and in particular I neede some way to exchange meshes between different pieces of software. And I came to conclusion, that nothing has changed in the past ten years. There is still no common format, which could support exchange of discrtized geometry. The only exception is ubiquitous STL, which is supported by virtually all systems, but which is so poor on features, that it is not really feasible to use it in area of simulations (not to mention, that the representation is fahr from optimal).

One of the attempts to standardise the format for meshes and simulation data was UNV format (Ideas universal format). In my opinion it is somwhat too complicated (I happened to implement reader for couple of types od datasets), but it was universal and open, which made it a good candidate for common use. And indeed, in certain cases I could successfully exchange meshes with this format. But the oroblem is, that recently the server, wgere the specification was hosted became unavailable and since then I could not find either any mirror or explanation, why the format description is not feely available anymore.

So I decided, that probably no universal format exists because nobody ever started writing it. And then I decided to take the stand and created this repository on github. And here we are.