Quick Start
The generic workflow of the simulation includes first the generation of the spin bath in the material, and second carrying the CCE dynamics calculations for the qubit interacting with this spin bath.
Base Units
All coupling constants are given in \(\mathrm{kHz}\).
Timesteps are in millisecond (\(\mathrm{ms}\)).
Distances are in angstrom (\(\mathrm{A}\)).
Gyromagnetic ratios are given in \(\mathrm{rad}\cdot\mathrm{ms}^{-1}\cdot\mathrm{G}^{-1}\).
Quadrupole constants are given in \(\mathrm{barn}\) (\(10^{-28}\ \mathrm{m}^2\)).
Magnetic field is given in Gauss (\(\mathrm{G}\)).
Simple Example
The simplest example includes the following steps:
Generate the
BathCell
object. Here we use the interface withase
which can effortlessly generate unit cells of many materials. As an example, we import the diamond structure.import numpy as np import pycce as pc from ase.build import bulk cell = pc.BathCell.from_ase(bulk('C', 'diamond', cubic=True))
Using the
BathCell
object, generate spin bath of the most common isotopes in the material. Here we generate the spin bath of size 200 Angstrom and remove one carbon, where the spin of interest is located, from the diamond crystal lattice.atoms = cell.gen_supercell(200, remove=('C', [0, 0, 0]))
This function returns the
BathArray
instance, which contains names of the bath spins in'N'
, their coordinates in angstrom in'xyz'
, empty arrays of hyperfine couplings in \(\mathrm{kHz}\) in'A'
, and quadrupole couplings in \(\mathrm{kHz}\) in'Q'
namefields. The hyperfine couplings will be generated bySimulator
in the next step. For alternative ways to define hyperfine couplings see Hamiltonian Parameters Input.Setup the
Simulator
using the generated spin bath. The first required argumentspin
is the total spin of the central spin or theCenterArray
instance, containing properties of the central spins.r_bath
,r_dipole
andorder
are convergence parameters (see the Tutorials for examples of convergence),magnetic_field
is the external applied magnetic field along the z-axis, andpulses
is the number of decoupling \(\pi\) pulses in Carr-Purcell-Meiboom-Gill (CPMG) sequence or a more complicated sequence, set withPulse
objects.calc = pc.Simulator(0.5, position=[0, 0, 0], bath=atoms, r_bath=40, r_dipole=6, order=2, magnetic_field=500, pulses=1)
The hyperfine couplings are automatically generated at this step assuming point dipole-dipole interactions between central spin and bath spins.
Compute the coherence function of the qubit using
.compute
method of theSimulator
object with conventional CCE.time_points = np.linspace(0, 2, 101) coherence = calc.compute(time_points)
This function outputs Numpy array with the same shape as the time_points
and
contains the coherence function computed at each time step.
By default compute
method uses the conventional CCE to compute the coherence function.
More detailed examples of PyCCE usage are available in the tutorials.