http://www.math.univ-paris13.fr/~cuvelier/software/codes/Python/fc-mayavi4mesh/pyfc-mayavi4mesh_400.png

The fc_mayavi4mesh Python package allows to display simplicial meshes or datas on simplicial meshes by using Mayavi (>= 4.5.0) Python package. The simplicial meshes must be given by two arrays : the vertices array and the connectivity array.


Introduction:

Simplicial meshes could be:

  • a triangular mesh in dimension 2, made with 2-simplices (ie. triangles),
  • a tetrahedral mesh in dimension 3, made with 3-simplices (ie. tetrahedron),
  • a triangular mesh in dimension 3 (surface mesh), made with 2-simplices,
  • a line mesh in dimension 2 or 3 made with 1-simplices (ie. lines).

A simplicial mesh is given by its vertices array q and its connectivity array me. For demonstration purpose, we used some simplicial meshes provided by the fc_meshtools Python package: they can be load by using the function getMesh2D, getMesh3D or getMesh3Ds of the fc_meshtools.simplicial module.

Documentation is available on fc_mayavi4mesh dedicated web page.

Installation:

The fc_mayavi4mesh Python package is available from the Python Package Index, so to install/upgrade simply type

pip install fc_mayavi4mesh -U

Thereafter, it's possible to run one of the demo functions

import fc_mayavi4mesh
fc_mayavi4mesh.demos.plot3D()
plot3D_fig1 plot3D_fig2 plot3D_fig3
import fc_mayavi4mesh
fc_mayavi4mesh.demos.streamline()
streamline_fig1 streamline_fig2 streamline_fig3

Example:

There is a complete source code used to represent the function

(x, y, z)↦cos(3x − 1)sin(2y − 2)sin(3z)

on a sphere.

from mayavi import mlab
from fc_meshtools import simplicial as mshsim
import fc_mayavi4mesh.simplicial as mlab4sim
import numpy as np
q2,me2=mshsim.getMesh3Ds(2)[:2]
q1,me1=mshsim.getMesh3Ds(1)[:2]
f=lambda x,y,z: np.cos(3*x-1)*np.sin(2*y-2)*np.sin(3*z)
u2=f(q2[:,0],q2[:,1],q2[:,2])
u1=f(q1[:,0],q1[:,1],q1[:,2])
mlab.figure(1)
mlab4sim.plot(q2,me2,u2)
mlab4sim.plotmesh(q1,me1,color='Black',line_width=2)
mlab.colorbar()
mlab.figure(2)
mlab4sim.plot(q1,me1,u1,line_width=2,vmin=min(u2),vmax=max(u2))
mlab4sim.plotmesh(q2,me2,color='LightGray',opacity=0.1)
mlab.colorbar()
plot3Ds_fig1 plot3Ds_fig2