b250 b990 b1020 b1480

Source Code

CGYRO source code is available at GitHub.


The past: GYRO

Over the past two decades, the fusion community has focused its modeling efforts primarily on the core region. A popular kinetic code used for this purpose was GYRO [CW03b][CW03a][CWD04][CB10]. Thousands of nonlinear simulations with GYRO have informed the fusion community’s understanding of core plasma turbulence [KWC05][KWC06][KWC07][HHW+16] and provided a transport database for the calibration of reduced transport models such as TGLF [SKW07]. GYRO was the first global electromagnetic solver, and pioneered the development of numerical algorithms for the GK equations with kinetic electrons. It is formulated in real space and like all global solvers requires ad hoc absorbing-layer boundary conditions when simulating cases with profile variation. This approach is suitable for core turbulence simulations, which cover a large radial region and are dominated by low wavenumbers.

The future: CGYRO

As the understanding of core transport has become increasingly complete, the cutting edge of research moved radially toward the pedestal region, where plasmas are characterized by larger collisionality and steeper pressure gradients that greatly modify the turbulent phenomena at play. This motivated the development, from scratch, of the CGYRO code [CBB16][BC17][BC18][CSB+19] to complement GYRO. CGYRO is an Eulerian GK solver specifically designed and optimized for collisional, electromagnetic, multiscale simulation. A key algorithmic aspect of CGYRO is the radially spectral formulation used to reduce the complicated integral gyroaveraging kernel into a multiplication in wavenumber space, but retaining the ability to treat profile variation important for edge plasmas [CB18][CBS20]. A new coordinate system that is more suitable for the highly collisional and shaped edge regime was adopted from the NEO code [BC08][BC12], which is the community standard for calculation of collisional transport in toroidal geometry.

Data input

The primary CGYRO input file is input.cgyro. Profile data can be optionally captured from input.gacode.

Data output, python interface, and plotting

Although there is a description of output data, it is suggested that users use the python interface to output data.


CGYRO Normalization






minor radius



deuterium mass = \(3.345\times 10^{24} g\)



electron density



electron temperature


\(c_s = \sqrt{T_e/m_\mathrm{D}}\)

deuterium sound speed



minor radius over sound speed