Parallel flow solver

This contains two programs which share a number of functions. The first is a parallel mesh partitioner for Gmsh meshes and the second is an parallel incompressible flow solver. The flow solver is slow due to the poor usage of the pARMS library in the code, but could be readily improved, given the time. Gmsh 2.5.0 or greater is required for properly viewing the partitioned meshes and fields.


Decomposition of boundary and domain with ordered indices

The pre-processor partitions both boundary and domain elements so that PDEs can be solved over both regions. Also elements and vertices are re-indexed such that the indices are continuous on the boundary then on the domain.


Domain decomposition prior to computation

The flow through a duct, below, shows the pressure field in two of four partitions.


Flow through a duct using four partitions

Flow solver with adjoint

A serial incompressible flow solver including the Spalart-Allmaras turbulence model. This code has been used for testing shape optimization algorithms. If the reverse mode sensitivity code is generated, using TAPENADE v3.6, the objective functions (pressure loss, etc) can be computed w.r.t. the mesh vertex co-ordinates.


Flow and sensitivity of pressure loss w.r.t. surface vertices

Spray solver

An incompressible two-phase isothermal flow and spray solver, implementing the spray by transporting moments of the underlying droplet size distribution. Collisions, break-up and interphase drag are accounted for. The underlying droplet size distribution is reconstructed using the Gamma distribution, though others are available (maximum entropy, cubic splines). The Ph.D Thesis details the algorithms implemented.


Spray SMR computed from underlying moments



Generate meshes (2D/3D) and post-process field data.


Generate tangent- and adjoint-linear derivative algorithms by source transformation.



Solve sparse linear systems. Only contains a gmres solver. (MPI)


Partition graphs and meshes. (MPI)


Obtain a sequence of successive coarse grids. (MPI)