Field
Detuning
Detuning(parent: Optional[Builder] = None)
Bases: Field
This node represent detuning field of a specified level coupling (rydberg or hyperfine) type.
Examples:
- To specify detuning of rydberg coupling:
>>> node = bloqade.start.rydberg.detuning
>>> type(node)
<class 'bloqade.builder.field.Detuning'>
- To specify detuning of hyperfine coupling:
>>> node = bloqade.start.hyperfine.detuning
>>> type(node)
<class 'bloqade.builder.field.Detuning'>
Note
This node is a SpatialModulation node.
See [SpatialModulation
][bloqade.builder.field.SpatialModulation]
for additional options.
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/builder/base.py
10 11 12 13 14 |
|
Field
Field(parent: Optional[Builder] = None)
Bases: Builder
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/builder/base.py
10 11 12 13 14 |
|
uniform
property
uniform: Uniform
Address all atoms as part of defining the spatial modulation component of a drive.
Next steps to build your program include choosing the waveform that will be summed with the spatial modulation to create a drive.
The drive by itself, or the sum of subsequent drives (created by just chaining the construction of drives) will become the field (e.g. Detuning Field, Real-Valued Rabi Amplitude/Rabi Phase Field, etc.).
- You can now do:
...uniform.linear(start, stop, duration)
: to apply a linear waveform...uniform.constant(value, duration)
: to apply a constant waveform...uniform.poly([coefficients], duration)
: to apply a polynomial waveform...uniform.apply(wf:bloqade.ir.Waveform)
: to apply a pre-defined waveform...uniform.piecewise_linear([durations], [values])
: to apply a piecewise linear waveform...uniform.piecewise_constant([durations], [values])
: to apply a piecewise constant waveform...uniform.fn(f(t,...))
: to apply a function as a waveform
location
location(
labels: Union[List[int], int],
scales: Union[
List[ScalarType], ScalarType, None
] = None,
) -> Location
Address a single atom (or multiple) atoms.
Address a single atom (or multiple) as part of defining the spatial modulation component of a drive. You can specify the atoms to target as a list of labels and a list of scales. The scales are used to multiply the waveform that is applied to the atom. You can also specify a single label and scale to target a single atom.
Next steps to build your program include choosing the waveform that will be summed with the spatial modulation to create a drive.
The drive by itself, or the sum of subsequent drives (created by just chaining the construction of drives) will become the field. (e.g. Detuning Field, Real-Valued Rabi Amplitude/Rabi Phase Field, etc.)
Usage Example:
>>> prog = start.add_position([(0,0),(1,4),(2,8)]).rydberg.rabi
# to target a single atom with a waveform
>>> one_location_prog = prog.location(0)
# to target a single atom with a scale
>>> one_location_prog = prog.location(0, 0.5)
# to target multiple atoms with same waveform
>>> multi_location_prog = prog.location([0, 2])
# to target multiple atoms with different scales
>>> multi_location_prog = prog.location([0, 2], [0.5, "scale"])
- You can now do:
...location(labels, scales).linear(start, stop, duration)
: to apply a linear waveform...location(labels, scales).constant(value, duration)
: to apply a constant waveform...location(labels, scales).poly([coefficients], duration)
: to apply a polynomial waveform...location(labels, scales).apply(wf:bloqade.ir.Waveform)
: to apply a pre-defined waveform...location(labels, scales).piecewise_linear([durations], [values])
: to apply a piecewise linear waveform...location(labels, scales).piecewise_constant([durations], [values])
: to apply a piecewise constant waveform...location(labels, scales).fn(f(t,..))
: to apply a function as a waveform
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/builder/field.py
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
|
scale
scale(coeffs: Union[str, List[ScalarType]]) -> Scale
Address all the atoms scaling each atom with an element of the list
or define a variable name for the scale list to be assigned later by
defining a name
and using assign
or batch_assign
later.
Next steps to build your program include choosing the waveform that will be summed with the spatial modulation to create a drive.
The drive by itself, or the sum of subsequent drives (created by just chaining the construction of drives) will become the field (e.g. Detuning Field, Real-Valued Rabi Amplitude/Rabi Phase Field, etc.)
Usage Example:
>>> prog = start.add_position([(0,0),(1,4),(2,8)]).rydberg.rabi
# assign a literal list of values to scale each atom
>>> one_location_prog = prog.scale([0.1, 0.2, 0.3])
# assign a variable name to be assigned later
>>> one_location_prog = prog.scale("a")
# "a" can be assigned in the END of the program during variable assignment
# using a list of values, indicating the scaling for each atom
>>> single_assignment = ...assign(a = [0.1, 0.2, 0.3])
# a list of lists, indicating a set of atoms should be targeted
# for each task in a batch.
>>> batch_assignment = ...batch_assign(a = [list_1, list_2, list_3,...])
- You can now do:
...scale(coeffs).linear(start, stop, duration)
: to apply a linear waveform...scale(coeffs).constant(value, duration)
: to apply a constant waveform...scale(coeffs).poly([coefficients], duration)
: to apply a polynomial waveform...scale(coeffs).apply(wf:bloqade.ir.Waveform)
: to apply a pre-defined waveform...scale(coeffs).piecewise_linear(durations, values)
: to apply a piecewise linear waveform...scale(coeffs).piecewise_constant(durations, values)
: to apply a piecewise constant waveform...scale(coeffs).fn(f(t,..))
: to apply a function as a waveform
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/builder/field.py
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 |
|
Rabi
Rabi(parent: Optional[Builder] = None)
Bases: Builder
This node represent rabi field of a specified level coupling (rydberg or hyperfine) type.
Examples:
- To specify rabi of rydberg coupling:
>>> node = bloqade.start.rydberg.rabi
<class 'bloqade.builder.field.Rabi'>
- To specify rabi of hyperfine coupling:
>>> node = bloqade.start.hyperfine.rabi
>>> type(node)
<class 'bloqade.builder.field.Rabi'>
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/builder/base.py
10 11 12 13 14 |
|
amplitude
property
amplitude: RabiAmplitude
Specify the real-valued Rabi Amplitude field.
Next steps to build your program focus on specifying a spatial modulation.
The spatial modulation, when coupled with a waveform, completes the specification of a "Drive". One or more drives can be summed together automatically to create a field such as the Rabi Amplitude here.
- You can now
...amplitude.uniform
: Address all atoms in the field...amplitude.location(...)
: Scale atoms by their indices...amplitude.scale(...)
: Scale each atom with a value from a list or assign a variable name to be assigned later
phase
property
phase: RabiPhase
Specify the real-valued Rabi Phase field.
Next steps to build your program focus on specifying a spatial modulation.
The spatial modulation, when coupled with a waveform, completes the specification of a "Drive". One or more drives can be summed together automatically to create a field such as the Rabi Phase here.
- You can now
...amplitude.uniform
: Address all atoms in the field...amplitude.location(...)
: Scale atoms by their indices...amplitude.scale(...)
: Scale each atom with a value from a list or assign a variable name to be assigned later
RabiAmplitude
RabiAmplitude(parent: Optional[Builder] = None)
Bases: Field
This node represent amplitude of a rabi field.
Examples:
- To specify rabi amplitude of rydberg coupling:
>>> node = bloqade.start.rydberg.rabi.amplitude
>>> type(node)
<class 'bloqade.builder.field.Amplitude'>
- To specify rabi amplitude of hyperfine coupling:
>>> node = bloqade.start.hyperfine.rabi.amplitude
>>> type(node)
<class 'bloqade.builder.field.Amplitude'>
Note
This node is a SpatialModulation node.
See [SpatialModulation
][bloqade.builder.field.SpatialModulation]
for additional options.
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/builder/base.py
10 11 12 13 14 |
|
RabiPhase
RabiPhase(parent: Optional[Builder] = None)
Bases: Field
This node represent phase of a rabi field.
Examples:
- To specify rabi phase of rydberg coupling:
>>> node = bloqade.start.rydberg.rabi.phase
>>> type(node)
<class 'bloqade.builder.field.Phase'>
- To specify rabi phase of hyperfine coupling:
>>> node = bloqade.start.hyperfine.rabi.phase
>>> type(node)
<class 'bloqade.builder.field.Phase'>
Note
This node is a SpatialModulation node.
See [SpatialModulation
][bloqade.builder.field.SpatialModulation]
for additional options.
Source code in .venv/lib/python3.12/site-packages/bloqade/analog/builder/base.py
10 11 12 13 14 |
|