Fig 1.
A general overview of the ODE solver and the methods used in the (ZV/LS)ODE implementation.
Fig 2.
Computing and averaging trajectories with n + 1 computational nodes.
We assume that n nodes calculate trajectories, and one node (denoted as node n) plays a master role—it coordinates the process of computations for the QTM. The figure presents also the general scheme of message passing during the realization of the QTM. The master node sends tasks, e.g. commands to calculate trajectories, and computing nodes response with results of their calculations.
Fig 3.
A function solving IVP (for a time-independent Hamiltonian) with the use of the zvode_ method from the ZVODE package.
The underscore placed in the name of the method is a requirement imposed by the Fortran language.
Fig 4.
The general scheme presenting generation of a single quantum trajectory (PRN—Pseudo-random numbers; H—Hamiltonian data; zvode_method_for_mc—Subroutine to ODEs solving; _T_par—Time variable; _Y_par—Actual state of the system), fnc—Calculates the right side of ODEs.
Fig 5.
The figure showing changes of the unitary Hamiltonian’s expectation value in the time.
Fig 6.
The expectation values describing the number of photons for different expectation operators (N0—Blue, N1—Red, N2—Green defined by Eq (22)) for a trilinear Hamiltonian—Eq (20).
Fig 7.
The duration of the simulation for the trilinear Hamiltonian.
The experiments were run for the different number of trajectories with use of the QuTIP (four CPU cores were used), the QuantumOptics.jl (termed as QuanOpt, with only one CPU core used during the computations), and the QTM package (with two different numbers of the computational nodes).
Fig 8.
The values of the spin excitation in the JCM obtained after calculating one trajectory without using collapse operators.
Fig 9.
The probability of the decay for the one-photon state obtained with the different numbers of trajectories.
Increasing the number of trajectories improves the accuracy of calculation.