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) -> NoneInitialize the propagator.
paramselfparaminitial_operatorIQuantumOperator | MajoranaOperatorA MajoranaOperator or any object
implementing get_majorana_operator().
paraminitial_stateSequence[int] | np.ndarraySlater determinant, as occupied mode indices.
paramcutoffintBound 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= NoneNone (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= NoneMonomials with |coeff| \< lower_atol are discarded during evolution.
paramupper_atolNone | float= NoneMonomials with |coeff| > upper_atol are kept regardless of complexity.
paramcommMPI.Comm | None= NoneOptional MPI communicator (must outlive the simulator).
Returns
Nonefuncevolved_operator(self, parameters=None, *, atol=1e-12) -> MajoranaOperatorReturn the evolved operator as a :class:~monoprop.majorana.MajoranaOperator.
paramselfparamparametersParameterValues= NoneVariational parameter values (see :meth:expectation_value).
paramatolfloat= 1e-12Absolute 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.MajoranaOperatorThe evolved operator (Heisenberg picture) or the evolved state (Schrodinger picture) as a :class:~monoprop.majorana.MajoranaOperator.
funcupdate_initial_operator(self, new_operator) -> NoneReplace coefficients of the initial operator (existing terms only).
paramselfparamnew_operatorMajoranaOperator:class:~monoprop.majorana.MajoranaOperator whose terms
replace the matching initial-operator coefficients.
Returns
Nonefunccutoff_type(self, new_cutoff_type) -> NoneSet the cutoff type ("length" or "support").
paramselfparamnew_cutoff_typestrReturns
None