Numeric reference

NumericBraggInterferometer class

class mwave.numeric.NumericBraggInterferometer(kmin, kmax, distance, kpad=10, x0=0, t0=0, k0=0)

A class for numerically simulating Bragg interferometers. This class allows for the definition of an interferometer geometry and the numerical propagation of wavefunctions through that geometry.

get_nodes()

Returns a dictionary of nodes at the current level, organized by momentum and position.

Returns:

A dictionary where keys are momentum states, values are dictionaries of positions, and values of those dictionaries are lists of nodes at that momentum and position.

get_population_func(momentums, func_pop_init, func_wf_init, func_wf2_init)

Returns a function that computes the population for a given set of output momentums.

Parameters:
  • momentums – A list of output momentums to compute the population for.

  • func_pop_init – A function that computes the initial population.

  • func_wf_init – A function that computes the initial wavefunction.

  • func_wf2_init – A function that computes the initial wavefunction (secondary, used in calculation).

Returns:

A function that takes comm_args and returns the total population at the specified momentums.

propagate(t)

Propagates the state of all nodes at the current level for a time t.

Parameters:

t – The duration of the propagation.

set_operation_funcs(funcs)

Sets the functions used to numerically evaluate the operations (split, propagate) performed on the interferometer.

Parameters:

funcs – A list of functions corresponding to the operations performed on the interferometer, in order.

split(klattice)

Applies a Bragg diffraction splitting operation to all nodes at the current level.

Parameters:

klattice – The lattice wavevector(s) for the Bragg pulse. Can be a single value or a list of values.

NumericTreeNode class

class mwave.numeric.NumericTreeNode(interferometer, x, t, k, parent=None)

Basic implementation of a directed tree. Children are stored in a list.

Parameters:

parent_node – The parent node of the new node. Must be a TreeNode. Optional.

get_ancestry()

Returns a list of ancestor nodes from the root node to this node.

Returns:

A list of NumericTreeNode objects.

get_trajectory()

Returns the trajectory (time and position) of the node and its ancestors.

Returns:

A tuple (times, positions) containing lists of times and positions.

get_wf_func(func_init)

Returns a function that computes the wavefunction at this node by tracing back through its ancestry and applying the operation functions.

Parameters:

func_init – The function to compute the initial wavefunction.

Returns:

A function that computes the wavefunction.

propagate(T)

Propagates the node for a time T, creating a single child node.

Parameters:

T – The duration of propagation.

split(klattice, distance=4, filter_func=<function NumericTreeNode.<lambda>>)

Splits the node based on Bragg diffraction, creating child nodes for the diffracted states.

Parameters:
  • klattice – The lattice wavevector(s).

  • distance – The number of momentum states to keep around the diffraction orders. Defaults to 4.

  • filter_func – A function to filter which child nodes are created. Defaults to allowing all.