Source code for nbodykit.source.mesh.field

from nbodykit.base.mesh import MeshSource
from nbodykit import CurrentMPIComm, mockmaker
from nbodykit.utils import attrs_to_dict
from pmesh.pm import RealField, ComplexField

[docs]class FieldMesh(MeshSource): """ A MeshSource initialized from an in-memory Field object, either a :class:`pmesh.pm.RealField` or :class:`pmesh.pm.ComplexField`. .. note:: The original field object is never modified by this source. Parameters ---------- field : :class:`~pmesh.pm.RealField`, :class:`~pmesh.pm.ComplexField` the :mod:`pmesh` Field object, either of real or complex type Nmesh : int, 3-vector of int, optional the desired number of cells per size on the mesh. If this is different than the ``Nmesh`` of the input Field, the Field will be re-sampled """ def __repr__(self): return "FieldMesh()" def __init__(self, field): MeshSource.__init__(self, field.pm.comm, field.Nmesh, field.BoxSize, field.pm.dtype) self.field = field
[docs] def to_complex_field(self): """ Return a copy of the (possibly re-sampled) input ComplexField """ if isinstance(self.field, ComplexField): return self.field.copy() else: return NotImplemented
[docs] def to_real_field(self): """ Return a copy of the (possibly re-sampled) input RealField """ if isinstance(self.field, RealField): return self.field.copy() else: return NotImplemented