dedalus.core.field ================== .. py:module:: dedalus.core.field .. autoapi-nested-parse:: Class for data fields. Module Contents --------------- .. py:class:: Field(dist, bases=None, name=None, tensorsig=None, dtype=None) Scalar field over a domain. :Parameters: * **domain** (*domain object*) -- Problem domain * **name** (*str, optional*) -- Field name (default: Python object id) :ivar layout: Current layout of field :vartype layout: layout object :ivar data: View of internal buffer in current layout :vartype data: ndarray .. py:method:: allgather_data(layout=None) Build global data on all processes. .. py:method:: allreduce_L2_norm(normalize_volume=True) .. py:method:: allreduce_data_max(layout=None) .. py:method:: allreduce_data_norm(layout=None, order=2) .. py:method:: broadcast_ghosts(output_nonconst_dims) Copy data over constant distributed dimensions for arithmetic broadcasting. .. py:method:: change_layout(layout) Change data to specified layout. .. py:method:: change_scales(scales) Change data to specified scales. .. py:method:: copy() .. py:method:: fill_random(layout=None, scales=None, seed=None, chunk_size=2**20, distribution='standard_normal', **kw) Fill field with random data. If a seed is specified, the global data is reproducibly generated for any process mesh. :Parameters: * **layout** (*Layout object, 'c', or 'g', optional*) -- Layout for setting field data. Default: current layout. * **scales** (*number or tuple of numbers, optional*) -- Scales for setting field data. Default: current scales. * **seed** (*int, optional*) -- RNG seed. Default: None. * **chunk_size** (*int, optional*) -- Chunk size for drawing from distribution. Should be less than locally available memory. Default: 2**20, corresponding to 8 MB of float64. * **distribution** (*str, optional*) -- Distribution name, corresponding to numpy random Generator method. Default: 'standard_normal'. * **\*\*kw** (*dict*) -- Other keywords passed to the distribution method. .. py:method:: gather_data(root=0, layout=None) .. py:method:: get_basis(coord) .. py:method:: high_pass_filter(shape=None, scales=None) Apply a spectral high-pass filter by zeroing modes below specified relative scales. The scales can be specified directly or deduced from a specified global grid shape. :Parameters: * **shape** (*tuple of ints, optional*) -- Global grid shape for inferring truncation scales. * **scales** (*float or tuple of floats, optional*) -- Scale factors for truncation. .. py:method:: load_from_global_coeff_data(global_data, pre_slices=tuple(), func=None) Load local coeff data from array-like global coeff data. .. py:method:: load_from_global_grid_data(global_data, pre_slices=tuple(), func=None) Load local grid data from array-like global grid data. .. py:method:: load_from_hdf5(file, index, task=None, func=None) Load grid data from an hdf5 file. Task corresponds to field name by default. .. py:method:: local_elements() .. py:method:: low_pass_filter(shape=None, scales=None) Apply a spectral low-pass filter by zeroing modes above specified relative scales. The scales can be specified directly or deduced from a specified global grid shape. :Parameters: * **shape** (*tuple of ints, optional*) -- Global grid shape for inferring truncation scales. * **scales** (*float or tuple of floats, optional*) -- Scale factors for truncation. .. py:method:: normalize(normalize_volume=True) Normalize field inplace using L2 norm. :Parameters: **normalize_volume** (*bool, optional*) -- Normalize inner product by domain volume. Default: True. .. py:method:: require_coeff_space(axis=None) Require one axis (default: all axes) to be in coefficient space. .. py:method:: require_grid_space(axis=None) Require one axis (default: all axes) to be in grid space. .. py:method:: require_local(axis) Require an axis to be local. .. py:method:: set_global_data(global_data) .. py:method:: set_local_data(local_data) .. py:method:: towards_coeff_space() Change to next layout towards coefficient space. .. py:method:: towards_grid_space() Change to next layout towards grid space. .. py:attribute:: buffer_size :value: -1 .. py:attribute:: dist .. py:attribute:: domain .. py:attribute:: dtype :value: None .. py:property:: global_shape .. py:property:: is_scalar .. py:attribute:: layout .. py:attribute:: name :value: None .. py:attribute:: scales :value: None .. py:attribute:: tensorsig :value: None .. py:class:: LockedField(dist, bases=None, name=None, tensorsig=None, dtype=None) Field locked to particular layouts, disallowing changes to other layouts. .. py:method:: change_scales(scales) Change data to specified scales. .. py:method:: lock_axis_to_grid(axis) .. py:method:: lock_to_layouts(*layouts) .. py:method:: towards_coeff_space() Change to next layout towards coefficient space. .. py:method:: towards_grid_space() Change to next layout towards grid space. .. py:method:: unlock() Return regular Field object with same data and no layout locking. .. py:function:: TensorField(dist, coordsys, *args, order=2, **kw) .. py:function:: VectorField(dist, coordsys, *args, **kw) .. py:data:: ScalarField