Source code for yt.fields.interpolated_fields

from yt.fields.local_fields import add_field
from yt.utilities.linear_interpolators import (
    BilinearFieldInterpolator,
    TrilinearFieldInterpolator,
    UnilinearFieldInterpolator,
)

_int_class = {
    1: UnilinearFieldInterpolator,
    2: BilinearFieldInterpolator,
    3: TrilinearFieldInterpolator,
}


[docs]def add_interpolated_field( name, units, table_data, axes_data, axes_fields, ftype="gas", particle_type=False, validators=None, truncate=True, ): if len(table_data.shape) not in _int_class: raise RuntimeError( "Interpolated field can only be created from 1d, 2d, or 3d data." ) if len(axes_fields) != len(axes_data) or len(axes_fields) != len(table_data.shape): raise RuntimeError( "Data dimension mismatch: data is %d, " "%d axes data provided, and %d axes fields provided." % (len(table_data.shape), len(axes_data), len(axes_fields)) ) int_class = _int_class[len(table_data.shape)] my_interpolator = int_class(table_data, axes_data, axes_fields, truncate=truncate) def _interpolated_field(field, data): return my_interpolator(data) add_field( (ftype, name), function=_interpolated_field, units=units, validators=validators, particle_type=particle_type, )