jCODE: High-order multiphase/multi-physics flow solver
Capabilities  ♦  Requesting access  ♦  Code reference  ♦  Wiki

jCODE is a high-performance Fortran-based multiphase/multi-physics flow solver developed and maintained by the Capecelatro Research Group at the University of Michigan. The code is capable of solving the multi-component compressible Navier-Stokes equations on structured curvilinear meshes using a class of high-order energy-stable finite difference operators. It features a range of models and methods including Lagrangian particle tracking, combustion mechanisms, immersed boundaries for complex geometries, shock capturing, and discrete adjoint-based sensitivity.


Specific features:

jCODE consists of a number of modules for simulating high-speed (compressible) two-phase and chemically reacting flows in complex geometries, and corresponding adjoint-based sensitivity. Specific features include:
  • High-order narrow stencil finite difference operators that satisfy summation-by-parts (SBP) property
  • Simultaneous-approximation-term (SAT) boundary treatment to ensure an energy estimate
  • A characteristic-based immersed boundary method for efficienty handling complex geometries on structured grids for inviscid and viscous flows
  • Lagrangian particle tracking capabale of simulating upwards of a billion individual particles undergoing mass/momentum/heat exchange and inter-particle collisions
  • Fully discrete adjoint capabilities to provide machine-precision sensitivity for turbulent reacting flows
  • Parallel performance:

    Scale-up of jCODE on OLCF Titan. The code is fully explicit and massively parallel, enabling large-scale computations with billions of grid points and 100s of millions of particles.

    Requesting access to the code

    jCODE is managed on a web-based git repository at Bitbucket. A golden copy of the source code that contains the most up-to-date working version (absent of any unpublished work) will be publicly available soon. To obtain the source code, you must first become a member of Bitbucket and request access to the jCODE repository by filling out this form.

    How to reference the code

    When referencing jCODE, please consider citing the following papers where relevant:

    Underlying discretization:
  • Vishnampet Ganapathi Subramanian, R. (2015). An exact and consistent adjoint method for high-fidelity discretization of the compressible flow equations. Doctoral dissertation, University of Illinois at Urbana-Champaign.

  • Eulerian-Lagrangian modules:
  • Shallcross, G. S., Fox, R. O., & Capecelatro, J. (2020). A volume-filtered description of compressible particle-laden flows. International Journal of Multiphase Flow, 122, 103138.

  • Immersed boundary:
  • TBA

  • Adjoint modules:
  • Discrete adjoint Navier-Stokes solver: Vishnampet, R., Bodony, D. J., & Freund, J. B. (2015). A practical discrete-adjoint method for high-fidelity compressible turbulence simulations. Journal of Computational Physics, 285, 173-192.
  • Discrete adjoint with one-step chemistry: Capecelatro, J., Bodony, D. J., & Freund, J. B. (2019). Adjoint-based sensitivity and ignition threshold mapping in a turbulent mixing layer. Combustion Theory and Modelling, 23(1), 147-179.
  • Discrete adjoint multi-component mixing: Kord, A., & Capecelatro, J. (2019). Optimal perturbations for controlling the growth of a Rayleigh–Taylor instability. Journal of Fluid Mechanics, 876, 150-185.
  • Discrete adjoint with tabulated chemistry: TBA