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

\[\omega^{\rm g}_{j} = \frac{1}{M-1} \left[ (M - j)\, \omega^{\rm g}_{\rm min} + (j - 1) \, \omega^{\rm g}_{\rm max} \right] \qquad j = 1,2,\ldots,M.\]

(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

\[\omega_{j} = \omega^{\rm g}_{j} + \Delta \omega\]

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

\[\omega^{\rm g}_{\rm min} = \frac{f_{\rm min}}{\widehat{f}_{\rm min}} - \delta \omega, \qquad \qquad \omega^{\rm g}_{\rm max} = \frac{f_{\rm max}}{\widehat{f}_{\rm max}} - \delta \omega,\]

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

\[\omega_{{\rm g},j} = (M-1) \left[ \frac{(M - j)}{\omega^{\rm g}_{\rm min}} + \frac{(j - 1)}{\omega^{\rm g}_{\rm max}} \right]^{-1} \qquad j = 1,2,\ldots,M.\]

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

\[\omega_{j} = \frac{f_{j}}{\widehat{f}} - \delta \omega,\]

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

\[\widehat{f} = \sqrt{\frac{GM}{R^{3}}} \frac{1\,{\rm \mu Hz}}{2\pi}\]

(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