tidy3d.SpaceModulation#

class SpaceModulation[source]#

The modulation profile with a user-supplied spatial distribution of amplitude and phase.

Parameters:
  • amplitude (Union[float, SpatialDataArray] = 1) – Amplitude of modulation that can vary spatially. It takes the unit of whatever is being modulated.

  • phase (Union[float, SpatialDataArray] = 0) – [units = rad]. Phase of modulation that can vary spatially.

  • interp_method (Literal['nearest', 'linear'] = nearest) – Method of interpolation to use to obtain values at spatial locations on the Yee grids.

Note

\[amp\_space(r) = amplitude(r) \cdot e^{i \cdot phase(r)}\]

The full space-time modulation is,

\[amp(r, t) = \Re[amp\_time(t) \cdot amp\_space(r)]\]

Example

>>> Nx, Ny, Nz = 10, 9, 8
>>> X = np.linspace(-1, 1, Nx)
>>> Y = np.linspace(-1, 1, Ny)
>>> Z = np.linspace(-1, 1, Nz)
>>> coords = dict(x=X, y=Y, z=Z)
>>> amp = SpatialDataArray(np.random.random((Nx, Ny, Nz)), coords=coords)
>>> phase = SpatialDataArray(np.random.random((Nx, Ny, Nz)), coords=coords)
>>> space = SpaceModulation(amplitude=amp, phase=phase)
__init__(**data)#

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Methods

coerce_numpy_scalars_for_model(data)

coerce numpy scalars / size-1 arrays to native Python scalars, but only for fields whose annotations allow scalars.

construct([_fields_set])

copy([deep, validate, update])

Return a copy of the model.

dict(*[, include, exclude, by_alias, ...])

dict_from_file(fname[, group_path, ...])

Loads a dictionary containing the model from a .yaml, .json, .hdf5, or .hdf5.gz file.

dict_from_hdf5(fname[, group_path, ...])

Loads a dictionary containing the model contents from a .hdf5 file.

dict_from_hdf5_gz(fname[, group_path, ...])

Loads a dictionary containing the model contents from a .hdf5.gz file.

dict_from_json(fname)

Load dictionary of the model from a .json file.

dict_from_yaml(fname)

Load dictionary of the model from a .yaml file.

find_paths(target_field_name[, ...])

Finds paths to nested model instances that have a specific field, optionally matching a value.

find_submodels(target_type)

Finds all unique nested instances of a specific Tidy3D model type within this model.

from_file(fname[, group_path, lazy, on_load])

Loads a Tidy3dBaseModel from .yaml, .json, .hdf5, or .hdf5.gz file.

from_hdf5(fname[, group_path, custom_decoders])

Loads Tidy3dBaseModel instance to .hdf5 file.

from_hdf5_gz(fname[, group_path, ...])

Loads Tidy3dBaseModel instance to .hdf5.gz file.

from_json(fname, **model_validate_kwargs)

Load a Tidy3dBaseModel from .json file.

from_orm(obj)

from_yaml(fname, **model_validate_kwargs)

Loads Tidy3dBaseModel from .yaml file.

generate_docstring([show_default_args, ...])

Generates a docstring for a Tidy3D model.

get_sub_model(group_path, model_dict)

Get the sub model for a given group path.

get_submodels_by_hash()

Return a mapping {hash(submodel): [field_path, ...]} for every nested Tidy3dBaseModel inside this model.

get_tuple_group_name(index)

Get the group name of a tuple element.

get_tuple_index(key_name)

Get the index into the tuple based on its group name.

help([methods])

Prints message describing the fields and methods of a Tidy3dBaseModel.

json(*[, include, exclude, by_alias, ...])

model_construct([_fields_set])

model_copy(*[, update, deep])

model_dump(*[, mode, include, exclude, ...])

model_dump_json(*[, indent, ensure_ascii, ...])

model_json_schema([by_alias, ref_template, ...])

model_parametrized_name(params)

model_post_init(context, /)

This function is meant to behave like a BaseModel method to initialise private attributes.

model_rebuild(*[, force, raise_errors, ...])

Try to rebuild the pydantic-core schema for the model.

model_validate(obj, *[, strict, extra, ...])

model_validate_json(json_data, *[, strict, ...])

model_validate_strings(obj, *[, strict, ...])

parse_file(path, *[, content_type, ...])

parse_obj(obj)

parse_raw(b, *[, content_type, encoding, ...])

schema([by_alias, ref_template])

schema_json(*[, by_alias, ref_template])

sel_inside(bounds)

Return a new space modulation that contains the minimal amount data necessary to cover a spatial region defined by bounds.

to_file(fname)

Exports Tidy3dBaseModel instance to .yaml, .json, or .hdf5 file

to_hdf5(fname[, custom_encoders])

Exports Tidy3dBaseModel instance to .hdf5 file.

to_hdf5_gz(fname[, custom_encoders])

Exports Tidy3dBaseModel instance to .hdf5.gz file.

to_json(fname)

Exports Tidy3dBaseModel instance to .json file

to_static()

Version of object with all autograd-traced fields removed.

to_yaml(fname)

Exports Tidy3dBaseModel instance to .yaml file.

tuple_to_dict(tuple_values)

How we generate a dictionary mapping new keys to tuple values for hdf5.

update_forward_refs(**localns)

updated_copy([path, deep, validate])

Make copy of a component instance with **kwargs indicating updated field values.

validate(value)

Attributes

max_modulation

Estimated maximum modulation amplitude.

model_computed_fields

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_extra

Get extra fields set during validation.

model_fields

model_fields_set

Returns the set of fields that have been explicitly set on this model instance.

amplitude

phase

interp_method

attrs

amplitude#
phase#
interp_method#
property max_modulation#

Estimated maximum modulation amplitude.

sel_inside(bounds)[source]#

Return a new space modulation that contains the minimal amount data necessary to cover a spatial region defined by bounds.

Parameters:

bounds (Tuple[float, float, float], Tuple[float, float float]) – Min and max bounds packaged as (minx, miny, minz), (maxx, maxy, maxz).

Returns:

SpaceModulation with reduced data.

Return type:

SpaceModulation