Frequency Grids

The gyre frontend 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).

A fresh frequency grid is constructed for each iteration of the main computation loop (see the flow-chart in the gyre section). 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}_{i} = \frac{1}{M-1} \left[ (M - i)\, \omega^{\rm g}_{\rm min} + (i - 1) \, \omega^{\rm g}_{\rm max} \right] \qquad i = 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_{i} = \omega^{\rm g}_{i} + \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 \, \Orot^{\rm i} \sqrt{R^{3}/GM}\), where \(\Orot^{\rm i}\) is the rotation angular frequency 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 \, \Orot^{\rm o} \sqrt{R^{3}/GM}\), where \(\Orot^{\rm o}\) is the rotation angular frequency 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 - \Delta \omega, \qquad \qquad \omega^{\rm g}_{\rm max} = \frac{f_{\rm max}}{\widehat{f}_{\rm max}} + \delta \omega - \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 the inertial frame. The actual value of this shift depends on the freq_frame parameter, which behaves 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}_{i} = (M-1) \left[ \frac{(M - i)}{\omega^{\rm g}_{\rm min}} + \frac{(i - 1)}{\omega^{\rm g}_{\rm max}} \right]^{-1} \qquad i = 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_{i} = \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 the inertial frame. The actual value of this shift depends on the freq_frame parameter, which behaves analogously to the grid_frame parameter discussed above.

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}{2\pi\,{\rm \mu Hz}}\]

(the factor of \(2\pi\) comes from the transformation between linear and 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