.. _gmsh: http://gmsh.info
.. _fc-oogmsh: http://www.math.univ-paris13.fr/~cuvelier/software/fc-oogmsh-Python.html
.. _fc-mayavi4mesh: http://www.math.univ-paris13.fr/~cuvelier/software/Python/fc-mayavi4mesh.html
.. _fc-meshtools: http://www.math.univ-paris13.fr/~cuvelier/software/fc-meshtools-Python.html
.. _python: http://www.python.org
.. _mayavi: http://docs.enthought.com/mayavi/mayavi/
.. image:: http://www.math.univ-paris13.fr/~cuvelier/software/codes/Python/fc-mayavi4mesh/pyfc-mayavi4mesh_400.png
:width: 200px
:align: left
The fc_mayavi4mesh Python package allows to display simplicial meshes or datas on simplicial meshes by using mayavi
_ (>= 4.6.2)
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
.. code::
pip install fc_mayavi4mesh -U
Thereafter, it's possible to run one of the demo functions
.. code:: python
import fc_mayavi4mesh
fc_mayavi4mesh.demos.plot2D()
.. |plot2D_fig1| image:: http://www.math.univ-paris13.fr/~cuvelier/software/codes/Python/fc-mayavi4mesh/snapshots/mayavi4mesh_plot2D_fig1.png
:width: 300
:align: middle
.. |plot2D_fig2| image:: http://www.math.univ-paris13.fr/~cuvelier/software/codes/Python/fc-mayavi4mesh/snapshots/mayavi4mesh_plot2D_fig2.png
:width: 300
:align: middle
.. |plot2D_fig3| image:: http://www.math.univ-paris13.fr/~cuvelier/software/codes/Python/fc-mayavi4mesh/snapshots/mayavi4mesh_plot2D_fig3.png
:width: 300
:align: middle
.. |plot2D_fig4| image:: http://www.math.univ-paris13.fr/~cuvelier/software/codes/Python/fc-mayavi4mesh/snapshots/mayavi4mesh_plot2D_fig4.png
:width: 300
:align: middle
+---------------+---------------+---------------+---------------+
| |plot2D_fig1| | |plot2D_fig2| | |plot2D_fig3| | |plot2D_fig4| |
+---------------+---------------+---------------+---------------+
.. code:: python
import fc_mayavi4mesh
fc_mayavi4mesh.demos.plot3D()
.. |plot3D_fig1| image:: http://www.math.univ-paris13.fr/~cuvelier/software/codes/Python/fc-mayavi4mesh/snapshots/mayavi4mesh_plot3D_fig1.png
:width: 300
:align: middle
.. |plot3D_fig2| image:: http://www.math.univ-paris13.fr/~cuvelier/software/codes/Python/fc-mayavi4mesh/snapshots/mayavi4mesh_plot3D_fig2.png
:width: 300
:align: middle
.. |plot3D_fig3| image:: http://www.math.univ-paris13.fr/~cuvelier/software/codes/Python/fc-mayavi4mesh/snapshots/mayavi4mesh_plot3D_fig3.png
:width: 300
:align: middle
+---------------+---------------+---------------+
| |plot3D_fig1| | |plot3D_fig2| | |plot3D_fig3| |
+---------------+---------------+---------------+
.. code:: python
import fc_mayavi4mesh
fc_mayavi4mesh.demos.streamline3D01()
.. |streamline_fig1| image:: http://www.math.univ-paris13.fr/~cuvelier/software/codes/Python/fc-mayavi4mesh/snapshots/mayavi4mesh_streamline_fig1.png
:width: 300
:align: middle
.. |streamline_fig2| image:: http://www.math.univ-paris13.fr/~cuvelier/software/codes/Python/fc-mayavi4mesh/snapshots/mayavi4mesh_streamline_fig2.png
:width: 300
:align: middle
.. |streamline_fig3| image:: http://www.math.univ-paris13.fr/~cuvelier/software/codes/Python/fc-mayavi4mesh/snapshots/mayavi4mesh_streamline_fig3.png
:width: 300
:align: middle
.. |streamline_fig4| image:: http://www.math.univ-paris13.fr/~cuvelier/software/codes/Python/fc-mayavi4mesh/snapshots/mayavi4mesh_streamline_fig4.png
:width: 300
:align: middle
+-------------------+-------------------+-------------------+-------------------+
| |streamline_fig1| | |streamline_fig2| | |streamline_fig3| | |streamline_fig4| |
+-------------------+-------------------+-------------------+-------------------+
Example:
There is a complete source code used to represent a function on a sphere
.. code:: python
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| image:: http://www.math.univ-paris13.fr/~cuvelier/software/codes/Python/fc-mayavi4mesh/snapshots/mayavi4mesh_plot3Ds_fig1.png
:width: 300
:align: middle
.. |plot3Ds_fig2| image:: http://www.math.univ-paris13.fr/~cuvelier/software/codes/Python/fc-mayavi4mesh/snapshots/mayavi4mesh_plot3Ds_fig2.png
:width: 300
:align: middle
+----------------+----------------+
| |plot3Ds_fig1| | |plot3Ds_fig2| |
+----------------+----------------+