Mohamed S. Ebeida
PhD Candidate
Dept. of Mechanical and Aeronautical Engineering
University of California - Davis

                                        
Software

Meera is an object oriented framework that I have developed to perform numerical simulation for various fluid flow problems. It has three versions; a platform independent one written in C++; a serial version written in C# under Visual Studio.Net and a parallel one written in Fortran and uses MPI. Meera serves as a development library, as well as a ready to use application and is used for simulations of unsteady turbulent flows based on Finite Volume and Galerkin Finite Element methods. Meera has the capability of generating and performing operations on sparse matrices efficiently.

Meera using C++ and Qt

To download my open source 3D mesh viewer click here. You need to have Qt, cmake and a c++ compiler to build it. If you are using Linux, you shouldn't worry about any of these. Note that this is just the mesh viewer with some basic mesh generation methods and an efficient mesh data structure. When you use the clipping planes, make sure you activate the view double surface options so you can see the internal side of the surface. This viewer can handle multiple hybrid mesh models that contain the following elements:

Hexahedra - Prisms - Pyramids - Tetrahedra - Quadrilaterals - Triangles - Lines

The full version of Meera has the following features:

  • A 3d mesh viewer with an optimal hybrid mesh data structure.
  • A 2D hybrid mesh generator with guaranteed quality with an option to produce all-quad meshes.
  • A 3D refinement algorithm based on Schneider's 2-ref templates.
  • A 3D hybrid mesh insertion algorithm. 
  • A Galerkin Finite Element Discretizer that is used in incompressible flow simulations
  • A higher order Godunov Scheme for the simulation of transport equations.
  • A nonlinear Picard solver that utilize fast iterative methods such as MG, GMRES, TFQMR and PCG.
  • A fast dynamic remeshing algorithm that can be coupled efficienly with the solver during an unsteady simulation.

Building Meera 2009:
  1. unzip the file Meera.zip in your home folder (I am assuming you are using Linux here however the code is platform independent so it should work under windows and Mac).
  2. cd Meera/build
  3. cmake ~/Meera/trunk
  4. make
  5. cd bin
  6. ./Meera_app
  7. Enter 0 to load the GUI. Load a model from the models folder and navigate using the mouse (pan - rotate - zoom). You can see the interior using a clipping plane. You can also generate meshes for some primitives (cube - cylinder - sphere).
  8. Check this web page every while for updated versions - I intend to add my mesh generator as well as a GFEM solver for laminar flow problems.

 

Development of "Meera"

Meera using C#

  • 2004:
    • Meera was initiated using a structured grid generator, a finite volume discretizer and SLOR as a solver.
    • Stream-Vorticity Method was implemented and tested using flow over Cylinder at Re=140.
    • Visualization subroutines were written for plotting the contours of the flow variables
  • 2005:
    • An Unstructured grid generator was implemented in Meera based on the work of Per-Olof Persson and Gilbert Strang at MIT. In this algorithm, the node locations of the unstructured elements are found by solving for equilibrium in a truss structure and then the topology is reset by the Delaunay algorithm. I modified the algorithm a little bit to optimize its performance (check the figure below for mesh refinement around a NACA0012).
    • A viscous-Inviscid interaction method based on Helmholtz velocity type decomposition was implemented and tested using steady laminar flow of a NACA 0012 airfoil.
    • Preconditioned Conjugate gradient method was implemented and used as the main solver.



    Mesh Refinement around a NACA0012

  • 2006:
    • A third order Godunov Scheme for hybrid unstructured grid was implemented and tested using Incompressible and compressible flows over a cylinder and a NACA 0012 airfoil.
    • kw model was implemented to simulate turbulent flows.
    • Multigrid method was implemented and used as the main solver for problems with structured grids.

    Solution of a transport equation using higher order Godunov schemes and a square domain with circular streamlines. The following figures illustrates solutions of different orders after one complete cycle.



    Initial distribution                                     First Order Solution

    Second Order Solution with (right) and without (left) slope limiters



    Third Order Solution

  • 2007:
    • A Scheme based on Galerkin finite element methods was added to Meera, the grid generator was modified to generate P2 and Q2 elements for the velocity components.
    • Many Krylov iterative methods were implemented such as BICGSTAB_2, QMR, TFQMR, FGMRES
    • The least square commutator was used as a preconditioner of the indefinite system to be solved for incompressible flows.
    • A new adaptive grid generation algorithm was introduced. This algorithm is based on Cartesian Grid and Spatial decomposition
    • A new adaptive solver for turbulent unsteady flows was introduced and tested using various problems.
    • The parallel version of Meera in Fortran started by a Laplace solver using conjugate gradient method. The implemented algorithm is suitable for any hybrid unstructured mesh.

      
       
    Execution time of solving a Hermitian Positive Definite Linear System of 106 equations using the Conjugate Gradient method and parallel processors.


  • 2008
    • A C++ version of Meera was initiated with an optimal mesh data structure
    • 3D visualizations using openGL was added to Meera in C++.
    • An object oriented data structure for CAD models with non manifold B-Rep.
    • A reduced order model for incompressible flow based on POD and Galerkin Projection.
    • An efficient traverse algorithm for hybrid meshes. 

  • 2009
    • Conformal refinement of all-quad meshes and all-hex meshes.
    • A provably good all-quad adaptive mesh generator.
    • A high Quality all-hex adaptive mesh generator.
    • Insertion of Hybrid Meshes using an optimal data structure.
    • Distributed memory version in c++ and cmake.
    • ...