Spin-2 BEC wavefunction#

The spin-2 BEC wavefunction class contains the wavefunction arrays plus an assortment of useful functions for manipulating and using the wavefunction.

Constructing the Wavefunction object is done through the constructor

SpinTwoWavefunction(grid)

Represents the spin-2 BEC wavefunction.

Here, the parameter grid is a Grid object defined prior to instantiating the Wavefunction class.

Wavefunction methods#

Initial state#

Below are the methods associated with the initial state.

SpinTwoWavefunction.set_ground_state(...)

Sets the components of the wavefunction according to the ground state we wish to be in.

SpinTwoWavefunction.set_wavefunction([...])

Sets the wavefunction components to the specified arrays.

SpinTwoWavefunction.add_noise(components, ...)

Adds noise to the specified wavefunction components using a normal distribution.

SpinTwoWavefunction.apply_phase(phase[, ...])

Applies a phase to specified components.

The set_ground_state method is used to set the initial state to a specified ground state of the spin-2 system. It is typically the way we start shaping the condensate. The supported ground states are listed below

Supported spin-2 ground states#

Ground state

Wavefunction

Description

“UN”

\(\psi=(0, 0, 1, 0, 0)^T\)

Uniaxial-nematic ground state.

“BN”

\(\psi=(1, 0, 0, 0, 1)^T/\sqrt{2}\)

Biaxial-nematic ground state.

“F2p”

\(\psi=(1, 0, 0, 0, 0)^T\)

Ferromagnetic ground state with total spin 2, pointing up.

“F2m”

\(\psi=(0, 0, 0, 0, 1)^T\)

Ferromagnetic ground state with total spin 2, pointing down.

“F1p”

\(\psi=(0, 1, 0, 0, 0)^T\)

Ferromagnetic ground state with total spin 1, pointing up.

“F1m”

\(\psi=(0, 0, 0, 1, 0)^T\)

Ferromagnetic ground state with total spin 1, pointing down.

“cyclic”

\(\psi=(\sqrt{(1 + f_z) / 3}, 0, 0, \sqrt{(2 - f_z) / 3}, 0)^T\)

Cyclic ground state where \(f_z=p+q/c_2n\).

If more flexibility is required, the set_wavefunction method allows us to set specific components to specified arrays. The add_noise method adds noise to each grid point of the wavefunction for the specified components. The noise is drawn from a uniform distribution with the mean and standard deviation specified in the function signature. Finally, apply_phase applies a user-defined phase to the specified wavefunction components as \(\psi_m\rightarrow\psi_m e^{i\phi}\) for phase \(\phi\) and component \(m \in \{2, 1, 0 , -1, -2\}\).

Other methods#

The methods below fall under the miscellaneous category and are self-explanatory.

SpinTwoWavefunction.fft()

Fourier transforms real-space components and updates Fourier-space components.

SpinTwoWavefunction.ifft()

Inverse Fourier transforms Fourier-space components and updates real-space components.

SpinTwoWavefunction.density()

Returns an array of the total condensate density.

Attributes#

See SpinTwoWavefunction for list of class attributes (variables).