Skip to content

Example: Triangular Mesh Geometry

Jon Drobny edited this page Jan 24, 2024 · 9 revisions

Warnings

Note that in order for meshes to work properly in RustBCA, the following must be true:

  • meshes must consist of only triangles
  • meshes must be "watertight" (e.g., check with trimesh: mesh.is_watertight must return True)
  • surface normals must point outwards (fix with trimesh: mesh.fix_normals)

Watertightness and other mesh properties can be tested with the trimesh library on PyPi.

Triangular Meshes for Homogeneous Composition, Complex Objects

Using parry3d, RustBCA has an experimental feature to use full 3D triangular meshes. These are currently limited to homogeneous, single-mesh targets, but compound objects and inhomogeneity are planned features for triangular meshes.

To use this feature, run one of the examples below:

  • cargo run --release --features parry3d TRIMESH examples/tungsten_twist_trimesh.toml
  • cargo run --release --features parry3d TRIMESH examples/tungsten_tiles.toml

These examples can be plotted using rustbca.py (requires toml, shapely, mayavi, numpy, matplotlib):

from scripts.rustbca import *
do_trajectory_plot_3d('tungsten_twist_', input_file='examples/tungsten_twist_trimesh.toml')

Helium trajectories on a twisted and extruded tungsten shape

Hydrogen trajectories on castellated, ITER-like tungsten tiles in 3D