monoprop

MajoranaPropagator

Classical simulator for Majorana operators.

Accepts a MajoranaOperator (or any object implementing get_majorana_operator(), such as a FermiOperator) and a Circuit of Majorana/fermionic gates. See MonomialPropagator for the shared surface.

Functions

func__init__(self, initial_operator, initial_state, *, cutoff, schrodinger_cutoff=None, cutoff_type='length', lower_atol=None, upper_atol=None, comm=None) -> None

Initialize the propagator.

paramself
paraminitial_operatorIQuantumOperator | MajoranaOperator

A MajoranaOperator or any object implementing get_majorana_operator().

paraminitial_stateSequence[int] | np.ndarray

Slater determinant, as occupied mode indices.

paramcutoffint

Bound on the complexity of the Majorana monomials retained during evolution, read according to cutoff_type. A fully paired monomial -- support made up entirely of complete pairs (m_\{2j-1\} m_\{2j\}) -- is kept regardless: only paired monomials contribute against a computational-basis state or Slater determinant.

paramschrodinger_cutoffint | None
= None

None (default) keeps the Heisenberg picture; an integer selects the Schrodinger picture and bounds the evolved state -- including its initialization from initial_state -- by the same notion as cutoff_type. Choose it at least as large as cutoff for comparable accuracy.

paramcutoff_typestr
= 'length'

"length" (default) bounds the number of Majorana operators in a monomial; "support" bounds the distinct orbitals it acts on. The fully-paired exception applies on top of either.

paramlower_atolNone | float
= None

Monomials with |coeff| \< lower_atol are discarded during evolution.

paramupper_atolNone | float
= None

Monomials with |coeff| > upper_atol are kept regardless of complexity.

paramcommMPI.Comm | None
= None

Optional MPI communicator (must outlive the simulator).

Returns

None
funcevolved_operator(self, parameters=None, *, atol=1e-12) -> MajoranaOperator

Return the evolved operator as a :class:~monoprop.majorana.MajoranaOperator.

paramself
paramparametersParameterValues
= None

Variational parameter values (see :meth:expectation_value).

paramatolfloat
= 1e-12

Absolute tolerance for filtering small coefficients; terms with |coeff| \< atol are dropped. Defaults to 1e-12; set to 0.0 to keep all terms.

Returns

monoprop.majorana.MajoranaOperator

The evolved operator (Heisenberg picture) or the evolved state (Schrodinger picture) as a :class:~monoprop.majorana.MajoranaOperator.

funcupdate_initial_operator(self, new_operator) -> None

Replace coefficients of the initial operator (existing terms only).

paramself
paramnew_operatorMajoranaOperator

:class:~monoprop.majorana.MajoranaOperator whose terms replace the matching initial-operator coefficients.

Returns

None
funccutoff_type(self, new_cutoff_type) -> None

Set the cutoff type ("length" or "support").

paramself
paramnew_cutoff_typestr

Returns

None

On this page