Files
LaGriT/docs/pages/mstkla/mstkla.md
2025-12-17 11:00:57 +08:00

144 lines
4.5 KiB
Markdown
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)