# 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