How to create a new simulation?
The model requires several mesh files (the file format can be .ply or .off):
-
mandible:
- Thi is the closed surface mesh of the mandible.
- the boundary conditions will be applied in the global cartesian reference frame. Thus, this mesh should be aligned with its principal axes (see MeshLab: Filters / Normals, Curvatures and Orientation / Transform: Align To Principal Axis)
- A gmsh file (.msh) of the volume mesh can also be given
- If this mesh is given as a surface mesh file, it will be meshed with gmsh. Try to mesh it manually in gmsh first because it sometimes fail.
-
teeth:
- A set of vertices selected on the top of the teeth where contact with the food occurs.
- Using MeshLab:
- Select the vertices using vertex selector ("Select Vertices" button) and the mouse.
- When the selection is finished, invert the selection (pressing "SHIFT-i").
- Delete all the selected vertices using "Filters / Selection / "Delete selected vertices".
- Check that your model only contains the desired number of vertices.
- Save these vertices to a file (e.g. teeth.ply)
-
LTMJ/RTMJ:
- Use the same procedure as for the teeth to save 1 vertex representing the left temporomandibular joint (LTMJ) and the right one (RTMJ) to 2 separate files (e.g. LTMJ.ply and RTMJ.ply)
- A series of muscle attachement areas (you can name them as you like)
- for each muscle, using MeshLab:
- Select the faces on which the muscle is attached to the bone
- When the selection is finished, invert the selection (pressing "SHIFT-i").
- Delete all the selected faces and vertices using "Filters / Selection / "Delete selected faces and vertices".
- Save this group of faces to a file (e.g. muscle.ply).
- for each muscle, using MeshLab:
- Each muscle requires a focal node towards which the muscle force is directed.
The mesh files are specified in the input file:
path = 'dolicorhynchops/10k'
p['mandible'] = f'{path}/mandible.ply'
p['teeth'] = f'{path}/teeth.off'
p['LTMJ'] = f'{path}/LTMJ.off'
p['RTMJ'] = f'{path}/RTMJ.off'
p['muscles'] = [
{
'file': f'{path}/Lmuscle.ply',
'force': 100.,
'focalpt': f'{path}/LmuscleF.off',
'method': 'T'
},
{
'file': f'{path}/Rmuscle.off',
'force': 100.,
'focalpt': f'{path}/RmuscleF.off',
'method': 'T'
}
]
For each muscle, the "method" can be 'U', 'T' or 'T+N' referring to (see Grosse et al. 2007)
- U: Ad Hoc Uniform Traction Model: a traction exerted by the muscle on each face is directed towards the focal node and constant in amplitude whatever its orientientation is.
- T: Tangential-Traction Model: Same as 'U' but the traction on the faces which do not have a direct line of sight to the focal point are projected onto the face and become tangential.
- T+N: Tangential-Plus-Normal-Traction Model: Same as 'T' but a normal pressure component is added to the faces which do not have a direct line of sight to the focal point. This normal component depends on the local curvature and the distance to the muscle fiber origin.