Skip to content

Geometric Models

Cameron Smith edited this page Oct 25, 2018 · 15 revisions

Support for adaptation

Improving the approximation of the mesh to the geometric model during mesh adaptation ('snapping') is only supported with the analytic, Parasolid, Acis, and GeomSim models; they provide parametric representations of the boundary. When there is adaptation on a model without snapping then the spatial position of the boundary is defined by the positions of the original mesh entities. Note, the topology on the boundary can still change (e.g., vertices added along a facet).

NULL Models

AVOID THIS UNLESS YOU ARE DEBUGGING A MESH ISSUE

Use the mkmodel tool to generate a 'null' model from a mesh:

$ module load pumi
$ mkmodel
Create a discrete geometric model from a mesh
Usage: mkmodel <mesh> <out model (.dmg)>

Note, the model created with this code only exists to debug mesh related issues. The null model works by creating a dummy model entity for the first call to retrieve classification for each mesh entity.

Analytic

Analytic models are defined by closed form expressions defined via APIs. API documentation is here: https://github.com/SCOREC/core/blob/master/gmi/gmi_analytic.h and an example is here: https://github.com/SCOREC/core/blob/59d03165714ac2c2069f4de6a3d08bd3ba041d20/test/bezierSubdivision.cc#L57-L71

GModels

See https://github.com/SCOREC/core/wiki/Mesh-Generation#gmsh

Parasolid and ACIS Models

Parasolid and ACIS Models are supported through use of the Simmetrix SimModSuite GeomSim APIs (note that this interface is different from the GeomSim Models discussed next).

Parasolid and ACIS are commercial/closed-source kernels that are only available on x86 gnu/linux systems. This means that Parasolid and ACIS models cannot be used on IBM Power systems and or the BlueGene/Q.

Simmetrix GeomSim Models

A .smd Simmetrix model file is created by either translating a Parasolid or ACIS model OR by creating a Simmetrix discrete (i.e. topological info + bounding box) model from a surface mesh or otherwise.

Note, a Simmetrix .smd file can also contain problem definition and mesh generation attributes; e.g. SimModeler saves 'models' this way.

The core tool simTranslate does the Parasolid/ACIS conversion:

$ simTranslate
Usage: simTranslate <acis .sat or parasolid .xmt_txt> <output .smd>
       to translate a native model into a GeomSim model
   or: simTranslate <acis .sat or parasolid .xmt_txt> <attribute .smd> <output .smd>
       to do the above and combine it with attributes into one file

GMI Topological Model

The mktopomodel tool can create a topological model ('.dmg' file extension) from a mesh. The underlying call to deriveMdsModel(...) "will classify all interior entities onto a model region and all boundary entities onto a boundary model entity, as defined by mesh upward adjacencies."

The mdlConvert tool can create a topological model from a Parasolid or Simmetrix GeomSim file. Note, this discrete model maintains the same classification as the original model, but drops nearly all the geometry info; I believe it maintains a bounding box.

$ mdlConvert
Convert parasolid or simmetrix geomsim model to a gmi topological model
Usage: ./mdlConvert <input model> <output model prefix>.dmg

Creating a GMI model instance from a Simmetrix GeomSim model

See https://github.com/SCOREC/core/blob/0b6940649ccf6e928bdcbb411eb6df7de5cb96e1/test/generate.cc#L243