spinecho_sim.solver package#

Module for simulating and plotting solenoid magnetic fields and particle trajectories.

class spinecho_sim.solver.ExperimentalTrajectory(*, trajectory: Trajectory, positions: ndarray[Any, dtype[floating]])#

Bases: object

Represents the trajectory of a diatomic particle in a solenoid.

property displacement: ParticleDisplacement#

The displacement of the particle at the end of the trajectory.

positions: ndarray[Any, dtype[floating]]#
property rotational_angular_momentum: Spin[tuple[int, int]]#

The rotational angular momentum of the particle.

property spin: Spin[tuple[int, int]]#

The spin components from the simulation states.

trajectory: Trajectory#
class spinecho_sim.solver.FieldSolver(*, region: FieldRegion, z_start: float | None = None, z_end: float | None = None)#

Bases: object

Dataclass representing a solenoid with its parameters.

property length: float#
region: FieldRegion#
simulate_diatomic_trajectories(initial_states: Sequence[StateVectorParticleState], n_steps: int = 100) StateVectorSimulationResult#

Run a solenoid simulation for multiple initial states.

simulate_diatomic_trajectory(initial_state: StateVectorParticleState, n_steps: int = 100) StateVectorExperimentalTrajectory#
simulate_monatomic_trajectories(initial_states: Sequence[ParticleState], n_steps: int = 100) MonatomicSimulationResult#

Run a solenoid simulation for multiple initial states.

simulate_monatomic_trajectory(initial_state: ParticleState, n_steps: int = 100) MonatomicExperimentalTrajectory#

Run the spin echo simulation using configured parameters.

z_end: float | None = None#
property z_span: tuple[float, float]#
z_start: float | None = None#
class spinecho_sim.solver.MonatomicExperimentalTrajectory(*, trajectory: MonatomicTrajectory, positions: ndarray[Any, dtype[floating]])#

Bases: ExperimentalTrajectory

Represents the trajectory of a monatomic particle in a solenoid.

property rotational_angular_momentum: Spin[tuple[int, int]]#

The rotational angular momentum of the particle.

trajectory: MonatomicTrajectory#
class spinecho_sim.solver.MonatomicSimulationResult(*, trajectories: 'MonatomicTrajectoryList', positions: 'np.ndarray[Any, np.dtype[np.floating]]')#

Bases: SimulationResult

property rotational_angular_momentum: Spin[tuple[int, int, int]]#
trajectories: MonatomicTrajectoryList#
class spinecho_sim.solver.SimulationResult(*, trajectories: TrajectoryList, positions: ndarray[Any, dtype[floating]])#

Bases: object

Represents the result of a solenoid simulation.

property displacements: ParticleDisplacementList#

Extract the displacements from the simulation states.

positions: ndarray[Any, dtype[floating]]#
property rotational_angular_momentum: Spin[tuple[int, int, int]]#
property spin: Spin[tuple[int, int, int]]#
trajectories: TrajectoryList#
spinecho_sim.solver.animate_diatomic_mean_expectation_vectors(result: StateVectorSimulationResult) FuncAnimation#
spinecho_sim.solver.animate_monatomic_mean_expectation_vectors(result: SimulationResult) FuncAnimation#
spinecho_sim.solver.plot_diatomic_alignment_diagnostics(result: StateVectorSimulationResult, spin: Literal['I', 'J']) tuple[Figure, Axes]#
spinecho_sim.solver.plot_diatomic_alignment_tensor(result: StateVectorSimulationResult, spin: Literal['I', 'J']) tuple[Figure, Axes]#

Plot the traceless, symmetric rank-2 tensor Q_ij for all components.

spinecho_sim.solver.plot_diatomic_expectation_differences(result: StateVectorSimulationResult) tuple[Figure, Axes]#
spinecho_sim.solver.plot_diatomic_expectation_values(result: StateVectorSimulationResult) tuple[Figure, Axes]#
spinecho_sim.solver.plot_diatomic_normalisation(result: StateVectorSimulationResult) tuple[Figure, Axes]#
spinecho_sim.solver.plot_monatomic_expectation_angles(result: SimulationResult) tuple[Figure, Axes]#
spinecho_sim.solver.plot_monatomic_expectation_trajectories(result: SimulationResult) tuple[Figure, Axes3D]#
spinecho_sim.solver.plot_monatomic_expectation_values(result: SimulationResult) tuple[Figure, Axes]#
spinecho_sim.solver.plot_monatomic_spin_states(result: SimulationResult) tuple[Figure, Axes]#