# Frequency Grids¶

GYRE evaluates its discriminant function \(\Dfunc(\omega)\) on a grid \(\{\omega_{1},\omega_{2},\ldots,\omega_{M}\}\) in the dimensionless frequency, and scans for changes in the sign of \(\Dfunc(\omega)\) that are indicative of a bracketed root. The computational cost of a calculation scales with the total number of points \(M\) in this grid, while the grid’s resolution — i.e., the spacing between adjacent points — impacts the completeness of the modes found by GYRE (see the Limitations of the Numerical Method section for a discussion of these behaviors).

GYRE constructs a fresh frequency grid for each combination of
harmonic degree \(\ell\) and azimuthal order \(m\) specified
in the `&mode`

namelist groups (see the
Namelist Input Files chapter for more details). This is done
under the control of the `&scan`

namelist groups; there must be
at least one of these, subject to the tag matching rules (see the
Working With Tags chapter). Each `&scan`

group creates a
separate frequency grid; these are then combined and the discriminant
function is evaluated on the merged grid.

## Grid Types¶

The `grid_type`

parameter of the `&scan`

namelist group
controls the overall distribution of points in a frequency grid. There
are currently three options:

### Linear Grid¶

When `grid_type = 'LINEAR'`

, GYRE first evaluates a sequence
of dimensionless angular frequencies in the grid reference frame
according to the formula

(here, the superscript ‘g’ indicates that these are frequencies in the grid reference frame). Then, it transforms from the grid frame to the inertial reference frame via

where \(\Delta\omega\) is the frequency shift that transforms from
the grid frame to the inertial frame. The actual value of this shift
depends on the `grid_frame`

parameter:

- When
`grid_frame = 'INERTIAL'`

, the shift is \(\Delta \omega = 0\); the grid frame and the inertial frame coincide. - When
`grid_frame = 'COROT_I'`

, the shift is \(\Delta \omega = m \, \Omega_{\rm i}\), where \(\Omega_{\rm i}\) is the dimensionless rotation angular velocity at the inner boundary of the spatial grid; the grid frame coincides with the local co-rotating frame at that boundary. - When
`grid_frame = 'COROT_O'`

, the shift is \(\Delta \omega = m \, \Omega_{\rm o}\), where \(\Omega_{\rm o}\) is the dimensionless rotation angular velocity at the outer boundary of the spatial grid; the grid frame coincides with the local co-rotating frame at that boundary.

The range spanned by the frequency grid, in the grid frame, is set by \(\omega^{\rm g}_{\rm min}\) and \(\omega^{\rm g}_{\rm max}\). These are evaluated via

where \(f_{\rm min,max}\) are user-definable, \(\widehat{f}_{\rm
min,max}\) will be discussed below in the Frequency Units section, and \(\delta\omega\) is the
frequency shift that transforms from the frame in which \(f_{\rm
min,max}\) are defined to inertial frame. The actual value of this
shift depends on the `freq_min_frame`

and
`freq_max_frame`

parameters, which behave analogously to the
`grid_frame`

parameter discussed above.

### Inverse Grid¶

When `grid_type = 'INVERSE'`

, GYRE first evaluates a sequence
of dimensionless angular frequencies in the grid reference frame
according to the formula

The grid creation then proceeds as described above in the Linear Grid section.

### File Grid¶

When `grid_type = 'FILE'`

, GYRE first reads a sequence of
dimensioned frequencies \(\{f_{1},f_{2},\ldots,f_{M}\}\) from an
external file named by the `grid_file`

parameter. This file is
a single-column ASCII table; the number of points \(M\) is
determined implicitly from the number of lines in the file. Then, it
transforms these frequencies via

where \(\widehat{f}\) will be discussed below in the
Frequency Units section, and \(\delta\omega\) is the frequency
shift that transforms from the frame in which \(f\) is defined to
inertial frame. The actual value of this shift depends on the
`freq_frame`

and parameter, which behave analogously to the
`grid_frame`

parameter discussed above in the
Linear Grid section.

## Frequency Units¶

In the expressions above, terms of the form \(f/\widehat{f}\) are used
to transform a dimensioned frequency \(f\) into a dimensionless
one \(\omega\). The scale factor \(\widehat{f}\) depends on the
`freq_units`

parameter. Thus, for example, if
`freq_units = 'UHZ`

, then \(f\) is treated as a linear
frequency expressed in \({\rm \mu Hz}\), and the scale factor is set by

(the factor of \(2\pi\) converts from linear to angular frequency).

The full set of values supported by the `freq_units`

parameter
is listed in the Frequency Scan Parameters section.

## Namelist Parameters¶

The full set of parameters supported by the `&scan`

namelist
group is listed in the Frequency Scan Parameters section. However, the table
below summarizes the mapping between the user-definable controls
appearing in the expressions above, and the corresponding namelist
parameters:

Symbol | Parameter |
---|---|

\(f_{\rm min}\) | `freq_min` |

\(f_{\rm max}\) | `freq_max` |

\(M\) | `n_freq` |

## Recommended Values¶

The default values `freq_min=1`

, `freq_max=10`

,
`n_freq=10`

, together with `grid_type='LINEAR'`

are
sufficient to find *some* modes — although unlikely the modes that
you want. Choosing good values for these parameters requires some
degree of judgment, but here are some suggestions:

- The number of points in the frequency grid should be a factor of 2–3 larger than the number of modes you expect GYRE will find. This is to ensure that the frequency spacing of the grid is everywhere smaller than the anticipated eigenfrequency spacing between adjacent modes (see the Limitations of the Numerical Method section for further discussion).
- The distribution of points in the frequency grid should follow
anticipated distribution of mode frequencies; this again is to
ensure adequate frequency resolution. For p modes, which tend toward
a uniform frequency spacing in the asymptotic limit of large radial
order, you should chose
`grid_type = 'LINEAR'`

; likewise, for g modes, which tend toward a uniform period spacing in the asymptotic limit, you should choose`grid_type = 'INVERSE'`

. - When modeling rotating stars, you should choose
`grid_frame = 'COROT_I'`

or`grid_frame = 'COROT_O'`

, because the asymptotic behaviors mentioned above apply in the co-rotating reference frame rather than the inertial one.