#include "qobjects.h" #include #include //------------------------------------------------------------ // This code uses the qobjects set of classes to integrate a // a stochastic Master equation describing the continuous // measurement of the computational basis of a qubit (or, // equivalently, the spin-z component of a spin-1/2 particle). // The qubit is initialy completely mixed. The code writes // out the impurity (1-Tr(rho^2)) as the measurement proceeds, // averaged over some number of trajectories if desired. //------------------------------------------------------------ int main(int argc, char* argv[]){ //---------------------------------------initialize parameters const int seed = 123456; // random seed const std::complex ei(0,1); // imaginary unit const unsigned int N = 2, // size of quantum system ns = 1000, // number of time steps nt = 10; // number of trajectories const double T = 1, // total time dt = T/ns, rdt = std::sqrt(dt), k = 1; // measurement rate //--------------------------------initialise files std::ofstream avseries("avImp.dat"); //--------------------------------initialise states qmatrix fullmix("maxmix",N); //--------------------------------initialize operators qoperator Q("lineig",N); qoperator Q2 = Q*Q; //---------------------------------generate Wiener noise (dW's) std::vector noise(ns*nt); make_noise(noise); //------------------------------------------------------------ // Simulation //------------------------------------------------------------ double t = 0, // initialise variables dW = 0; std::complex d_rec = 0; std::vector avImp(ns+1); time_t time0, *time_ptr = 0; // timing initialisation time0 = time(time_ptr); for (unsigned int j=0;j