Our Software


A time-dependent gas-grain chemical code

UCLCHEM is a gas-grain chemical code for astrochemical modelling that can be used as a stand alone Fortran program or a Python module. It propagates the abundances of chemical species through a network of user-defined reactions according to the physical conditions of the gas.

UCLCHEM is actively developed by the our group and is designed with ease of use in mind. The physical model and hence gas conditions are set by interchangeable physics modules with a variety of physical parameters that can be set through simple interfaces. The code comes with MakeRates, a python script to generate chemical networks from simple lists of species and reactions.


A 1D, equilibrium PDR code

UCL_PDR calculates the equilibrium temperature and chemical abundances of a 1D cloud. It can handle arbitrary gas phase chemical networks and solves the radiative transfer problem for any coolant for which a collisional data file is provided.

UCL_PDR is not currently actively maintained but members of the group would be happy to help new users get started so please get in touch.


Fast, accurate chemistry for hydrodynamical models

Chemistry is important to hydrodynamical models as it effectively sets the gas temperature by determining the abundances of important coolants. However, full chemical networks such as those used in UCLCHEM are typically too computationally expensive to include in a hydrodynamical model. Similarly, solving the chemistry in a time dependent way can also be a huge computational burden and equilibrium is often assumed instead.

The MOPPEX project intends to contribute to astrochemical research through the use of advanced statistical techniques. As such, we have produced a neural network based emulator which can calculate the time dependent temperature and chemical abundances of a gas. This significantly faster than solving the chemical network directly and can be embedded in hydrodynamical models to obtain accurate temperatures without the computational cost of a full chemical and radiative trasfer solver.


A spectral model and RADEX wrap for Python

SpectralRadex is a python module made up of two parts: a RADEX wrapper and a spectral model.

A number of libraries exist for the first purpose. However, SpectralRadex uses F2PY to compile a version of RADEX written in modern Fortran. As a result, running a RADEX model creates no subprocesses, no text files, and can be easily parallelized. Check our tutorials section for an example of running a grid of RADEX models quickly and entirely within Python.

For the second purpose, we use the RADEX calculated line opacities and excitation temperatures to calculate the brightness temperature as a function of frequency. This allows observed spectra to be modelled in python in a non-LTE fashion. See our spectral modelling tutorial for more.