default_multi_nv_model

default_multi_nv_model(orientations, positions, nitrogen_isotopes=None, carbon_atom_indices=None, static_field_strengths=0.05, static_field_directions=None, add_default_driving_fields=True, include_hyperfine=True, include_dipolar=True, secular_approximation=False, quantization_axis='global_z', qubit_subspace_electron=(0, -1), qubit_subspace_nitrogen=None, qubit_subspace_carbon=(-0.5, 0.5), warn_on_ambiguous_labels=True, rotating_frame=None)

Create a model containing multiple NV centers with arbitrary orientations and positions.

Parameters shared with default_nv_model() are documented there; this docstring focuses on the multi-NV-specific extensions.

Parameters:
  • orientations (List[Tuple[float, float, float]]) – List of anisotropy axes for each NV center. Each orientation should be one of (1, 1, 1), (1, -1, -1), (-1, 1, -1), or (-1, -1, 1), representing the possible crystallographic axes of NV centers in diamond.

  • positions (List[Tuple[float, float, float]]) – List of positions (x, y, z) in nanometers for each NV center.

  • nitrogen_isotopes (List[int | None] | None) – Optional list of nitrogen isotopes (14 or 15) for each NV.

  • carbon_atom_indices (Sequence[Sequence[Tuple[int, int, int, int]] | None] | None) – Optional per-NV list of carbon-index lists. Each outer element corresponds to one NV center and contains the carbon tuples accepted by default_nv_model(). For a single NV, a flat list of tuples is also accepted for convenience.

  • static_field_strengths (int | float | Sequence[int | float]) – Scalar or iterable of static field magnitudes (T). A single value creates one global StaticField shared by every spin; an iterable must match orientations and yields one field per NV centre (automatically targeting the corresponding electron and nitrogen spins).

  • static_field_directions (Sequence[int | float] | Sequence[Sequence[int | float]] | None) – None (uses the lab-frame \(\hat{z}\) axis), a single 3-component direction applied to the broadcast field, or len(orientations) direction vectors aligned with the per-NV strengths.

  • add_default_driving_fields (bool) – If True (default), add the default linear driving fields MW_x and RF_x. If False, leave the model without driving fields.

  • include_hyperfine (bool) – Whether to include the e–N hyperfine coupling.

  • include_dipolar (bool) – Whether to include e–e dipolar coupling.

  • secular_approximation (bool) – If True, keep only the builder-added interaction zz terms.

  • quantization_axis (Any) – Quantization axis applied to every spin, or a list with one axis per created spin. Each axis accepts 'global_z', 'anisotropy_axis', 'local_static_field' or an explicit vector.

  • qubit_subspace_electron (Tuple[int | float, int | float]) – Qubit subspace for all NV electron spins. Default is (0, -1).

  • qubit_subspace_nitrogen (Tuple[int | float, int | float] | None) – Qubit subspace for nitrogen spins. If None (default), keeps the current isotope-specific defaults: (0, -1) for \(^{14}N\) and (-1/2, 1/2) for \(^{15}N\).

  • qubit_subspace_carbon (Tuple[int | float, int | float]) – Qubit subspace for all carbon-13 spins.

  • warn_on_ambiguous_labels (bool) – If True (default), warn when eigenstate labels have low overlap with their assigned local-\(S_z\) product-basis states.

  • rotating_frame (RotatingFrameSetter | None) – Optional rotating-frame setter installed on the returned model. If omitted, the builder installs the default RotatingFrameSetter().

Return type:

Model

Returns:

Multi-NV spin model with orientation and spatially resolved dipolar interactions.