# MSTKLA - Mesh ToolKit interface to LaGriT Note these pages have not been updated to newer versions of MSTKLA (LA-UR-99-6711) ------------------------------------------------------------------------ Questions, Comments, Suggestions? Contact: Rao V Garimella, Email: rao@lanl.gov ------------------------------------------------------------------------ **MSTKLA** is a C interface to the **LaGriT** code which is designed to make it easier to use the LaGriT functionality. It tries to hide some of the internals of LaGriT and provides an API that works in a somewhat object oriented way. It does not attempt to provide or enhance interactive commands that exist in LaGriT. Rather, it is designed more with writing automated mesh generation procedures and complex meshing algorithms within LaGriT in mind. MSTKLA has one or more *mesh objects*, which have mesh **regions**, mesh **faces,** mesh **edges** and mesh **vertices** (nodes). *Mesh faces and mesh edges are objects defined on the fly in terms of their vertices.* One can ask these objects various questions or modify their info through operators. In addition there is a **geometric model** and **geometric model objects** (In the spirit of consistent naming, I am labeling this set of functions **GMTKLA**). Since LaGriT does not really store curves or points in the database, these are also faked on the fly. The mesh and model entities are related through the concept of **CLASSIFICATION**. "A mesh entity is classified on a model entity if it forms all or part of that model entity's discretization (grid) but not its boundary's". So mesh regions can be classified only on a model region.  Mesh faces can be classified on a model face or a model region. Mesh vertices can be classified on a model vertex, model edge, model face or model region. Classification information can be queried from MSTKLA if it is available. In particular, in LaGriT, only **external faces** (what LaGriT calls **"reflective" boundaries**) and **internal faces or interfaces** created with the option **"intrcons"** in the **surface** command have the information required to retrieve full classification information. Full classification information includes the **type** of geometric model entity the mesh entity is classified on, the **ID of that geometric model entity** and **a pointer to the geometric model object** (which can be further queried). Interface surfaces created with the surface command option "**intrface**" **do not** have the necessary information to relate the mesh and the model fully. (In the future, I may put in code to take the "intrface" type surfaces and add the info needed to find out the classification information). Note that the current interface works for querying an existing mesh but not **yet** for modifying it. The operators for this are on the way. Operators for calling the actual meshing operators (connect, refine, smooth, etc) will also be added in the near future. Finally, the basic interface (low level query and modification operators) are expected to retain the same format regardless of what the underlying database is (LaGriT or something else). So, for example, I am hoping that an operator to retrieve the nodes of an element will retain the same form shown below regardless of how it functions internally: void MR_Vertices(PMeshObj mesh, PMeshRegn reg, int nv, PMeshVert rverts); I will try hard to maintain this API constant but cannot absolutely guarantee it. parent-child Also see [Parent-Child Node](parent-child.md) typedefs[TYPEDEFS](prelim.md) ## MSTKLA_Init MSTKLA Interface Operators **MESH INITIALIZATION:** void MSTKLA_Init(void); Initialize the mesh toolkit. **MESH OPERATORS:** MESH OBJECT: [MESH OBJECT](Mesh.md) MESH REGION:[MESH REGION](MeshRegion.md) MESH FACE:[MESH FACE](MeshFace.md) MESH EDGE:[MESH EDGE](MeshEdge.md) MESH VERTEX:[MESH VERTEX](MeshVertex.md) GENERIC MESH REGION QUERIES:[GENERIC MESH REGION QUERIES](GenRegion.md) **GMTKLA_Init GEOMETRIC MODEL INITIALIZATION:** void GMTKLA_Init(void); Initialize the geometric model interface. **MODEL OPERATORS:** GEOMETRIC MODEL:[GEOMETRIC MODEL](Geom.md) MODEL ENTITY:[MODEL ENTITY](GeomEntity.md) MODEL REGION:[MODEL REGION](GeomRegion.md) MODEL FACE:[MODEL FACE](GeomFace.md) MODEL EDGE:[MODEL EDGE](GeomEdge.md) MODEL VERTEX: [MODEL VERTEX](GeomVertex.md) *Not implemented fully* UTILITIES: [UTILITIES:](utilities.md) EXAMPLE: [EXAMPLE OF PROGRAMMING WITH MSTKLA](example.md)** EXECUTABLE: [LIBRARIES, INCLUDE FILES AND CREATING AN EXECUTABLE](linking.md)