PolynomialInterpolation#

class fridom.framework.grid.cartesian.polynomial_interpolation.PolynomialInterpolation(order: int = 1)[source]#

Bases: InterpolationModule

Polynomial interpolation for cartesian grids.

Description#

Consider the following grid points:

\[x_i = (i - n/2) \Delta x, \quad i = 0, 1, \ldots, n\]

where \(n\) is the (odd) order of the polynomial interpolation. For example for \(n = 3\) we have the following grid points:

    We want to interpolate the field to this point (x=0)
                            ↓
        |   x_0   |   x_1   |   x_2   |   x_3   |
x/dx =     -3/2      -1/2       1/2       3/2

Let \(f_i\) be the field values at \(x_i\). We define the continuous extension of the field as:

\[f(x) = \sum_{i=0}^{n} \left( \prod_{j=0, j \neq i}^{n} \left( \frac{x - x_j}{x_i - x_j} f_i \right) \right)\]

By definition, \(f(x_i) = f_i\) holds. Finally, to interpolate the field to the point \(x=0\), we insert \(x=0\) into the above expression. Note that the grid spacing \(\Delta x\) cancels out.

\[f(0) = \sum_{i=0}^{n} c_i f_i\]

with the coefficients \(c_i\) given by:

\[c_i = \prod_{j=0, j \neq i}^{n} \frac{j-n/2}{j - i}\]
__init__(order: int = 1)[source]#

Methods

__init__([order])

disable()

Disable the module.

enable()

Enable the module.

interpolate(f, destination)

Interpolate the field to the destination position.

interpolate_axis(f, axis, destination)

is_enabled()

Whether the module is enabled or not.

reset()

Stop and start the module.

setup(mset)

Set the module up.

start()

Start the module.

stop()

Stop the module.

update(mz)

Update the model state.

Attributes

diff_module

The differentiation module to be used by this module.

grid

The grid of the model settings.

info

Return a dictionary with information about the time stepper.

interp_module

The interpolation module to be used by this module.

is_setup

Whether the module is set up.

mset

The model settings.

name

required_halo

The required halo points for this module.

name = 'Polynomial Interpolation'#
setup(mset: ModelSettingsBase) None[source]#

Set the module up.

Description#

This method is called by the ModelSettings.setup() and sets the ModelSettings as well as the differentiation and interpolation modules.

Parameters#

msetfr.ModelSettingsBase

The model settings object.

setup_modeLiteral[“default”, “forced”]

The setup mode. If the setup mode is “default” and the module is already setup, the method will return. If the setup mode is “forced”, the module will be setup again.

interpolate(f: ScalarField, destination: Position) ScalarField[source]#

Interpolate the field to the destination position.

Parameters#

ffr.ScalarField

The field to interpolate.

destinationfr.grid.Position

The position to interpolate to.

Returns#

fr.ScalarField

The interpolated field.

interpolate_axis(f: ScalarField, axis: int, destination: AxisPosition) ScalarField[source]#