About Flexible Atomic Code (FAC)

It is an integrated software package by M. F. Gu to calculate various atomic radiative and collisional processes, including energy levels, radiative transition rates, collisional excitation and ionization by electron impact, photoionization, autoionization, radiative recombination and dielectronic capture. The package also includes a collisional radiative model to construct synthetic spectra for plasmas under different physical conditions. Physics and code descriptions can be found in the reference [Can. J. Phys. 86: 675-689 (2008)].

cFAC was started around 2010 (based on FAC-1.1.1, released in 2006), initially focusing on providing large volumes of data as required, e.g., for collisional-radiative (CR) plasma modeling, and eliminating reliance upon third-party Fortran numerical libraries with their C equivalents (hence the change in the package name). Databases and source codes for CR modeling will be available shortly.

Source Codes

FAC and cFAC codes are currently available at GitHub repositories of FAC and cFAC and managed by M. F. Gu and E. Stambulchik.

FAC Input Files

General guidelines to write input files for FAC calculations are available.


Examples of input files to run FAC codes are provided below.

Atomic data for K-shell and L-shell charge states
Si1.py Si2.py Si3.py Si4.py Si5.py Si6.py Si7.py Si8.py Si9.py Si10.py Si11.py Si12.py
This is an example of calculating atomic data for K-shell and L-shell ions of silicon atoms.

Atomic data for M-shell ions by UTA levels
uta_data.py: For Au ion with 31 electrons, please type "python uta_data.py 31"
The input files create a set of atomic data to be used for M-shell ions.

Atomic data for Zeeman split levels
ebfield.py: For Fe, please type "python ebfield.py Fe"
This is an example of computing zemmann splitted levels and transition rates for He-like ions.

Atomic data for polarized atoms
pol_data.py pol_spec.py
This is an example of calculating poplarizations under unidirectional excitation of an electron beam. pol_data.py calculates the atomic data and pol_spec.py calculates the spectral model and produce the linear polarization of the spectral lines.

Collisional-Radiatve model calculations
d.py: type "phtyon d.py 10 3 5"
s.py: type "phtyon s.py 10 3"
sel.py: type "phtyon sel.py 10 3"
This is an example of running the process, starting from generating the atomic data, solving rate equation and postprocessing. d.py generates atomic data for Z=10, number of electrons =3, maximum n=5 for excitation. s.py runs the collisional radiative module. sel.py prints the line intensities in ascii format. Due to matrix size limitation, the CR module in FAC code is best suited for a single charge state calculation. For charge balance calculations which involve numerous autoionizing states (dielectronic recombination channels), it is recommended to use a different code to solve the rate matrix equations.

Atomic Data Sets generated by FAC codes

  • Helium Atomic Data Sets
  • Lithium Atomic Data Sets
  • Beryllium Data Sets
  • Boron Data Sets
  • Carbon Data Sets
  • Nitrogen Data Sets
  • Oxygen Data Sets
  • Fluorine Data Sets
  • Neon Data Sets
  • Sodium Data Sets
  • Magnesium Data Sets
  • Aliminium Data Sets
  • Silicon Data Sets