elrnv / meshx

Mesh eXchange library.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Generalizing code over similar mesh types

elrnv opened this issue · comments

At the moment there is a lot of repeated code for manipulating similar types of meshes.
The straightforward thing to do here is to figure out a trait system that makes sense. VertexPositions and VertexMesh traits were attempts at making some sort of generalization, but we need something then for meshes with uniformly shaped cells (tetmesh, uniform_poly_mesh) and unstructured meshes (unstructured_mesh, polymesh).

The poster example can be the sort_vertices_by_key function implemented on tetmesh and uniform_poly_mesh, but can also be implemented in a similar way on unstructured_mesh and polymesh.

Originally I expected intrinsic attributes to fill this space, but due to splitting borrows issue, (hard to borrow multiple fields at once from a mesh struct) that is probably not the way.

We need to answer: what is the best way to borrow multiple "common" fields from a mesh through a trait.
We can always do this through macros, but having traits which can be used in generic code is much more convenient.