CSAC Spectral Line Inversions

Here you will find a number of spectral line inversion codes that use different forward modeling assumptions and different inversion strategies.


The Milne-Eddington gRid Linear Inversion Network (MERLIN) is a Milne-Eddington (ME) inversion code designed specifically to run automatically in the Hinode/SP data pipeline. It is written in C++ and the inversion scheme is based on the least-squares fitting of the observed Stokes profiles using the Levenberg-Marquardt algorithm. MERLIN can use one or multiple spectral lines to retrieve the magnetic field vector, the line-of-sight velocity, the source function, the Doppler broadening as well as the macroturbulence and the stray light factor. MERLIN routinely inverts Hinode/SP Level 1 (calibrated) spectropolarimetric maps as soon as they are approved by the quality control system, producing the Level 2 data stream. Level 1 and Level 2 Hinode/SP data processed at HAO can be found here. Here you can find MERLIN's source code and a sample XML input file to run the code.



The Very Fast Inversion of the Stokes Vector; Borrero et al 2011Centeno et al 2014 is Milne-Eddington code that was purposefully written for and tailored to the inversion of full disk spectropolarimetric data from the Helioseismic and Magnetic Imager (HMI) on board the Solar Dynamics Observatory (SDO). VFISV is written in FORTRAN and was specifically designed to keep pace with the data flow rate and prevent a processing backlog, thus, speed optimization is one of its key features. In order to achieve this, a number of compromises had to be made, in detriment of its versatility. The inversion strategy of this code is based on a Levenberg-Marquardt least squares minimization algorithm. VFISV currently operates in the HMI vector field data pipeline and its data products can be found at Stanford's Joint Science Operations Center.

Two versions of VFISV, one for spectrograph-type instruments and one for filtergraph-type instruments have been released and are freely available to the community on GitLab.



The Stokes Inversion based on Response functions (Ruiz Cobo & Del Toro Iniesta, 1992, ApJ, 398, 375) is a general-purpose spectral line inversion code that works in the Local Thermodynamical Equilibrium (LTE) regime, which dictates that the populations of the energy levels of the atoms depend only on local values of temperature and density. The polarization in spectral lines is induced by the Zeeman effect. SIR is able to infer the height stratification of the thermodynamical and magnetic properties of the solar atmosphere, and admits one or two atmospheric components. The code is publicly available on GitHub and can be downloaded from here. The SIR distribution comes with an IDL library to read, write and visualize SIR-formatted input and output. A recently developed Python version is available from GitHub.



The Stockholm Inversion Code (de la Cruz Rodríguez et al., 2016, ApJ, 830L, 30) is a non-LTE spectral line inversion package based on Han Uitenbroek's RH radiative transfer code. The forward modeling solves the non-LTE radiative transfer equation using the Multi-level Accelerated Lambda (MALI) formalism of Rybicky & Hummer and takes into account the polarization induced via the Zeeman effect only. You can reference this manuscript when you use this code. The installation instructions and source code are available through the following links: Installation instructions and source code.



HAnle and ZEeman Light (Asensio Ramos et al., 2008, ApJ, 683, 542) is a computer program for the synthesis and inversion of Stokes profiles caused by the joint action of atomic level polarization and the Hanle and Zeeman effects in some spectral lines of diagnostic interest, such as those of the He I 1083.0 nm and 587.6 nm (or D3) multiplets. It is based on the quantum theory of spectral line polarization, which takes into account in a rigorous way all the relevant physical mechanisms and ingredients (optical pumping, atomic level polarization, level crossings and repulsions, Zeeman, Paschen-Back and Hanle effects). The influence of radiative transfer on the emergent spectral line radiation is taken into account through a suitable slab model. The code is available to download here and detailed documentation can be found here.



The Non-LTE Inversion COde using the Lorien Engine ( Socas-Navarro et al. 2014) is an open-source general purpose synthesis and inversion code for Stokes profiles emerging from Solar or Stellar atmospheres. It is written entirely in FORTRAN and allows for paralellization. NICOLE solves the statistical equilibrium equations to calculate the atomic population densities. It assumes hydrostatic equilibrium to calculate the density and temperature stratification in the atmosphere and the generation of polarized radiation is dealt with in the context of the Zeeman effect. This means that no atomic level polarization is considered. A description of the code can be found Socas-Navarro et al. 2014. The source code is freely available to the community and can be found here.



Developed by López Ariste and Casini (2002), this is a non-LTE spectral line inversion code that accounts for the physics of scattering polarization and the Hanle effect in the generation and modification of the polarization of spectral lines. It is capable of inverting observations from single or multiple lines from multi-term atoms with fine structure. The inversion algorithm is based on PCA (Principal Component Analysis) and requires the generation of a database of synthetic profiles in order to compare them to the observations.