diff --git a/benchmarks-sourcecode/generate_html.py b/benchmarks-sourcecode/generate_html.py
new file mode 100644
index 0000000..0c31a9d
--- /dev/null
+++ b/benchmarks-sourcecode/generate_html.py
@@ -0,0 +1,21 @@
+import os
+import subprocess
+
+sourcedir = "."
+builddir = "."
+
+names = os.listdir(sourcedir)
+names = filter(lambda x: not x == os.path.basename(__file__) and not x.endswith(".html"), names)
+# names = filter(lambda x: "raman" in x, names)
+
+for name in names:
+ print("Converting", name)
+ barename, extension = os.path.splitext(name)
+ sourcepath = os.path.join(sourcedir, name)
+ targetpath = os.path.join(builddir, barename + "_" + extension[1:] + ".html")
+ subprocess.run(["pygmentize",
+ "-o", targetpath,
+ sourcepath])
+
+f = open("../css/sourcecode.css", "w")
+subprocess.run(["pygmentize", "-f", "html", "-a", ".highlight", "-S", "default"], stdout=f)
diff --git a/benchmarks-sourcecode/timeevolution_master.jl b/benchmarks-sourcecode/timeevolution_master.jl
new file mode 100644
index 0000000..a7aeba2
--- /dev/null
+++ b/benchmarks-sourcecode/timeevolution_master.jl
@@ -0,0 +1,21 @@
+κ = 1.
+η = 4κ
+Δ = 0
+tmax = 100
+tsteps = 201
+T = Vector(linspace(0, tmax, tsteps))
+
+b = FockBasis(Ncutoff-1)
+a = destroy(b)
+ad = dagger(a)
+n = number(b)
+H = Δ*ad*a + η*(a + ad)
+J = [destroy(b)]
+Γ = [2κ]
+
+Ψ₀ = fockstate(b, 0)
+ρ₀ = Ψ₀ ⊗ dagger(Ψ₀)
+exp_n = Float64[]
+fout(t, ρ) = push!(exp_n, real(expect(n, ρ)))
+timeevolution.master(T, ρ₀, H, J; Gamma=Γ, fout=fout, reltol=1e-6, abstol=1e-8)
+return exp_n
\ No newline at end of file
diff --git a/benchmarks-sourcecode/timeevolution_master.m b/benchmarks-sourcecode/timeevolution_master.m
new file mode 100644
index 0000000..496cdf3
--- /dev/null
+++ b/benchmarks-sourcecode/timeevolution_master.m
@@ -0,0 +1,25 @@
+kap = 1.;
+eta = 4*kap;
+delta = 0;
+tmax = 100;
+tsteps = 201;
+tlist = linspace(0, tmax, tsteps);
+a = destroy(Ncutoff);
+ad = a';
+H = delta*ad*a + eta*(a + ad);
+C = sqrt(2*kap)*a;
+LH = -1i * (spre(H) - spost(H));
+L1 = spre(C)*spost(C')-0.5*spre(C'*C)-0.5*spost(C'*C);
+L = LH+L1;
+
+
+psi0 = basis(Ncutoff, 1);
+rho0 = psi0 * psi0';
+
+% Set up options, if required
+options.reltol = 1e-6;
+options.abstol = 1e-6;
+% Write out the data file
+ode2file('file1.dat', L, rho0, tlist, options);
+% Call the equation solver
+odesolve('file1.dat','file2.dat');
\ No newline at end of file
diff --git a/benchmarks-sourcecode/timeevolution_master.py b/benchmarks-sourcecode/timeevolution_master.py
new file mode 100644
index 0000000..d47a870
--- /dev/null
+++ b/benchmarks-sourcecode/timeevolution_master.py
@@ -0,0 +1,15 @@
+kap = 1.
+eta = 4*kap
+delta = 0
+tmax = 100
+tsteps = 201
+tlist = np.linspace(0, tmax, tsteps)
+
+a = qt.destroy(Ncutoff)
+ad = a.dag()
+H = delta*ad*a + eta*(a + ad)
+c_ops = [np.sqrt(2*kap)*a]
+
+psi0 = qt.basis(Ncutoff, 0)
+n = qt.mesolve(H, psi0, tlist, c_ops, [ad*a], options=options).expect[0]
+return n
\ No newline at end of file
diff --git a/benchmarks-sourcecode/timeevolution_master_jl.html b/benchmarks-sourcecode/timeevolution_master_jl.html
new file mode 100644
index 0000000..a6d94fd
--- /dev/null
+++ b/benchmarks-sourcecode/timeevolution_master_jl.html
@@ -0,0 +1,22 @@
+
κ = 1.
+η = 4 κ
+Δ = 0
+tmax = 100
+tsteps = 201
+T = Vector ( linspace ( 0 , tmax , tsteps ))
+
+b = FockBasis ( Ncutoff - 1 )
+a = destroy ( b )
+ad = dagger ( a )
+n = number ( b )
+H = Δ * ad * a + η * ( a + ad )
+J = [ destroy ( b )]
+Γ = [ 2 κ ]
+
+Ψ₀ = fockstate ( b , 0 )
+ρ₀ = Ψ₀ ⊗ dagger ( Ψ₀ )
+exp_n = Float64 []
+fout ( t , ρ ) = push! ( exp_n , real ( expect ( n , ρ )))
+timeevolution . master ( T , ρ₀ , H , J ; Gamma = Γ , fout = fout , reltol = 1e-6 , abstol = 1e-8 )
+return exp_n
+
diff --git a/benchmarks-sourcecode/timeevolution_master_m.html b/benchmarks-sourcecode/timeevolution_master_m.html
new file mode 100644
index 0000000..e0adf34
--- /dev/null
+++ b/benchmarks-sourcecode/timeevolution_master_m.html
@@ -0,0 +1,26 @@
+kap = 1. ;
+eta = 4 * kap ;
+delta = 0 ;
+tmax = 100 ;
+tsteps = 201 ;
+tlist = linspace ( 0 , tmax , tsteps );
+a = destroy ( Ncutoff );
+ad = a ' ;
+H = delta * ad * a + eta * ( a + ad );
+C = sqrt ( 2 * kap ) * a ;
+LH = - 1 i * ( spre ( H ) - spost ( H ));
+L1 = spre ( C ) * spost ( C ' ) - 0.5 * spre ( C '* C ) - 0.5 * spost ( C '* C );
+L = LH + L1 ;
+
+
+psi0 = basis ( Ncutoff , 1 );
+rho0 = psi0 * psi0 ' ;
+
+% Set up options, if required
+options . reltol = 1e-6 ;
+options . abstol = 1e-6 ;
+% Write out the data file
+ode2file ( 'file1.dat' , L , rho0 , tlist , options );
+% Call the equation solver
+odesolve ( 'file1.dat' , 'file2.dat' );
+
diff --git a/benchmarks-sourcecode/timeevolution_master_py.html b/benchmarks-sourcecode/timeevolution_master_py.html
new file mode 100644
index 0000000..626c482
--- /dev/null
+++ b/benchmarks-sourcecode/timeevolution_master_py.html
@@ -0,0 +1,16 @@
+kap = 1.
+eta = 4 * kap
+delta = 0
+tmax = 100
+tsteps = 201
+tlist = np . linspace ( 0 , tmax , tsteps )
+
+a = qt . destroy ( Ncutoff )
+ad = a . dag ()
+H = delta * ad * a + eta * ( a + ad )
+c_ops = [ np . sqrt ( 2 * kap ) * a ]
+
+psi0 = qt . basis ( Ncutoff , 0 )
+n = qt . mesolve ( H , psi0 , tlist , c_ops , [ ad * a ], options = options ) . expect [ 0 ]
+return n
+
diff --git a/benchmarks-sourcecode/timeevolution_particle.jl b/benchmarks-sourcecode/timeevolution_particle.jl
new file mode 100644
index 0000000..a5eb574
--- /dev/null
+++ b/benchmarks-sourcecode/timeevolution_particle.jl
@@ -0,0 +1,21 @@
+xmin = -10
+xmax = 10
+
+x0 = 2
+p0 = 1
+sigma0 = 1
+
+
+# Setup
+bx = PositionBasis(xmin, xmax, Npoints)
+x = position(bx)
+p = momentum(bx)
+H = p^2 + full(2*x^2)
+psi0 = gaussianstate(bx, x0, p0, sigma0)
+
+
+# Benchmark
+T = [0:1.:10;]
+exp_x = Float64[]
+fout(t, psi) = push!(exp_x, real(expect(x, psi)))
+timeevolution.schroedinger(T, psi0, H; fout=fout, reltol=1e-6, abstol=1e-8)
diff --git a/benchmarks-sourcecode/timeevolution_particle.py b/benchmarks-sourcecode/timeevolution_particle.py
new file mode 100644
index 0000000..3cb8ad6
--- /dev/null
+++ b/benchmarks-sourcecode/timeevolution_particle.py
@@ -0,0 +1,41 @@
+xmin = -10
+xmax = 10
+
+x0 = 2
+p0 = 1
+sigma0 = 1
+
+
+# Setup
+dx = (xmax - xmin)/Npoints
+pmin = -np.pi/dx
+pmax = np.pi/dx
+dp = (pmax - pmin)/Npoints
+
+samplepoints_x = np.linspace(xmin, xmax, Npoints, endpoint=False)
+samplepoints_p = np.linspace(pmin, pmax, Npoints, endpoint=False)
+
+x = qt.Qobj(np.diag(samplepoints_x))
+row0 = [sum([p*np.exp(-1j*p*dxji) for p in samplepoints_p])*dp*dx/(2*np.pi) for dxji in samplepoints_x - xmin]
+row0 = np.array(row0)
+col0 = row0.conj()
+
+a = np.zeros([Npoints, Npoints], dtype=complex)
+for i in range(Npoints):
+ a[i, i:] = row0[:Npoints-i]
+ a[i:, i] = col0[:Npoints-i]
+p = qt.Qobj(a)
+
+H = p**2 + 2*x**2
+
+def gaussianstate(x0, p0, sigma):
+ alpha = 1./(np.pi**(1/4)*np.sqrt(sigma))*np.sqrt(dx)
+ data = alpha*np.exp(1j*p0*(samplepoints_x-x0) - (samplepoints_x-x0)**2/(2*sigma**2))
+ return qt.Qobj(data)
+
+psi0 = gaussianstate(2., 1., 1.)
+
+
+# Benchmark
+tlist = np.linspace(0, 10, 11)
+exp_x = qt.mesolve(H, psi0, tlist, [], [x], options=options).expect[0]
diff --git a/benchmarks-sourcecode/timeevolution_particle_jl.html b/benchmarks-sourcecode/timeevolution_particle_jl.html
new file mode 100644
index 0000000..ea31809
--- /dev/null
+++ b/benchmarks-sourcecode/timeevolution_particle_jl.html
@@ -0,0 +1,22 @@
+xmin = - 10
+xmax = 10
+
+x0 = 2
+p0 = 1
+sigma0 = 1
+
+
+# Setup
+bx = PositionBasis ( xmin , xmax , Npoints )
+x = position ( bx )
+p = momentum ( bx )
+H = p ^ 2 + full ( 2 * x ^ 2 )
+psi0 = gaussianstate ( bx , x0 , p0 , sigma0 )
+
+
+# Benchmark
+T = [ 0 : 1. : 10 ;]
+exp_x = Float64 []
+fout ( t , psi ) = push! ( exp_x , real ( expect ( x , psi )))
+timeevolution . schroedinger ( T , psi0 , H ; fout = fout , reltol = 1e-6 , abstol = 1e-8 )
+
diff --git a/benchmarks-sourcecode/timeevolution_particle_py.html b/benchmarks-sourcecode/timeevolution_particle_py.html
new file mode 100644
index 0000000..4a692fc
--- /dev/null
+++ b/benchmarks-sourcecode/timeevolution_particle_py.html
@@ -0,0 +1,42 @@
+xmin = - 10
+xmax = 10
+
+x0 = 2
+p0 = 1
+sigma0 = 1
+
+
+# Setup
+dx = ( xmax - xmin ) / Npoints
+pmin = - np . pi / dx
+pmax = np . pi / dx
+dp = ( pmax - pmin ) / Npoints
+
+samplepoints_x = np . linspace ( xmin , xmax , Npoints , endpoint = False )
+samplepoints_p = np . linspace ( pmin , pmax , Npoints , endpoint = False )
+
+x = qt . Qobj ( np . diag ( samplepoints_x ))
+row0 = [ sum ([ p * np . exp ( - 1j * p * dxji ) for p in samplepoints_p ]) * dp * dx / ( 2 * np . pi ) for dxji in samplepoints_x - xmin ]
+row0 = np . array ( row0 )
+col0 = row0 . conj ()
+
+a = np . zeros ([ Npoints , Npoints ], dtype = complex )
+for i in range ( Npoints ):
+ a [ i , i :] = row0 [: Npoints - i ]
+ a [ i :, i ] = col0 [: Npoints - i ]
+p = qt . Qobj ( a )
+
+H = p ** 2 + 2 * x ** 2
+
+def gaussianstate ( x0 , p0 , sigma ):
+ alpha = 1. / ( np . pi ** ( 1 / 4 ) * np . sqrt ( sigma )) * np . sqrt ( dx )
+ data = alpha * np . exp ( 1j * p0 * ( samplepoints_x - x0 ) - ( samplepoints_x - x0 ) ** 2 / ( 2 * sigma ** 2 ))
+ return qt . Qobj ( data )
+
+psi0 = gaussianstate ( 2. , 1. , 1. )
+
+
+# Benchmark
+tlist = np . linspace ( 0 , 10 , 11 )
+exp_x = qt . mesolve ( H , psi0 , tlist , [], [ x ], options = options ) . expect [ 0 ]
+
diff --git a/benchmarks-sourcecode/timeevolution_timedependent.jl b/benchmarks-sourcecode/timeevolution_timedependent.jl
new file mode 100644
index 0000000..be43833
--- /dev/null
+++ b/benchmarks-sourcecode/timeevolution_timedependent.jl
@@ -0,0 +1,28 @@
+# System parameters
+ω = 1.89 # Frequency of driving laser
+ωc = 2.13 # Cavity frequency
+η = 0.76 # Pump strength
+κ = 0.34 # Decay rate
+δc = ωc - ω # Detuning
+
+# Benchmark
+b = FockBasis(Ncutoff-1)
+
+a = destroy(b)
+at = create(b)
+n = number(b)
+
+Γ = Matrix{Float64}(1,1)
+Γ[1,1] = κ
+J = [a]
+Jdagger = [at]
+
+α0 = 0.3 - 0.5im
+psi0 = coherentstate(b, α0)
+
+T = [0:1.:10;]
+αt = Float64[]
+fout(t, rho) = push!(αt, real(expect(a, rho)))
+H(t, n, a, at) = ωc*n + η*(a*exp(1im*ω*t) + at*exp(-1im*ω*t))
+HJ(t::Float64, rho::DenseOperator) = (H(t, n, a, at), J, Jdagger)
+timeevolution.master_dynamic(T, psi0, HJ; Gamma=Γ, fout=fout, reltol=1e-6, abstol=1e-8)
diff --git a/benchmarks-sourcecode/timeevolution_timedependent.py b/benchmarks-sourcecode/timeevolution_timedependent.py
new file mode 100644
index 0000000..a00cc6a
--- /dev/null
+++ b/benchmarks-sourcecode/timeevolution_timedependent.py
@@ -0,0 +1,22 @@
+# System parameters
+omega = 1.89 # Frequency of driving laser
+omega_c = 2.13 # Cavity frequency
+eta = 0.76 # Pump strength
+kappa = 0.34 # Decay rate
+
+
+# Benchmark
+a = qt.destroy(Ncutoff)
+at = qt.create(Ncutoff)
+n = qt.num(Ncutoff)
+
+J = [np.sqrt(kappa)*a]
+
+alpha0 = 0.3 - 0.5j
+psi0 = qt.coherent(Ncutoff, alpha0)
+
+tlist = np.linspace(0, 10., 11)
+H = [omega_c*n,
+ [eta*a, lambda t, args: np.exp(1j*omega*t)],
+ [eta*at, lambda t, args: np.exp(-1j*omega*t)]]
+alpha_t = np.real(qt.mesolve(H, psi0, tlist, J, [a], options=options).expect[0])
diff --git a/benchmarks-sourcecode/timeevolution_timedependent_jl.html b/benchmarks-sourcecode/timeevolution_timedependent_jl.html
new file mode 100644
index 0000000..d560589
--- /dev/null
+++ b/benchmarks-sourcecode/timeevolution_timedependent_jl.html
@@ -0,0 +1,29 @@
+# System parameters
+ω = 1.89 # Frequency of driving laser
+ωc = 2.13 # Cavity frequency
+η = 0.76 # Pump strength
+κ = 0.34 # Decay rate
+δc = ωc - ω # Detuning
+
+# Benchmark
+b = FockBasis ( Ncutoff - 1 )
+
+a = destroy ( b )
+at = create ( b )
+n = number ( b )
+
+Γ = Matrix { Float64 }( 1 , 1 )
+Γ [ 1 , 1 ] = κ
+J = [ a ]
+Jdagger = [ at ]
+
+α0 = 0.3 - 0.5 im
+psi0 = coherentstate ( b , α0 )
+
+T = [ 0 : 1. : 10 ;]
+αt = Float64 []
+fout ( t , rho ) = push! ( αt , real ( expect ( a , rho )))
+H ( t , n , a , at ) = ωc * n + η * ( a * exp ( 1 im * ω * t ) + at * exp ( - 1 im * ω * t ))
+HJ ( t :: Float64 , rho :: DenseOperator ) = ( H ( t , n , a , at ), J , Jdagger )
+timeevolution . master_dynamic ( T , psi0 , HJ ; Gamma = Γ , fout = fout , reltol = 1e-6 , abstol = 1e-8 )
+
diff --git a/benchmarks-sourcecode/timeevolution_timedependent_py.html b/benchmarks-sourcecode/timeevolution_timedependent_py.html
new file mode 100644
index 0000000..4bf061c
--- /dev/null
+++ b/benchmarks-sourcecode/timeevolution_timedependent_py.html
@@ -0,0 +1,23 @@
+# System parameters
+omega = 1.89 # Frequency of driving laser
+omega_c = 2.13 # Cavity frequency
+eta = 0.76 # Pump strength
+kappa = 0.34 # Decay rate
+
+
+# Benchmark
+a = qt . destroy ( Ncutoff )
+at = qt . create ( Ncutoff )
+n = qt . num ( Ncutoff )
+
+J = [ np . sqrt ( kappa ) * a ]
+
+alpha0 = 0.3 - 0.5j
+psi0 = qt . coherent ( Ncutoff , alpha0 )
+
+tlist = np . linspace ( 0 , 10. , 11 )
+H = [ omega_c * n ,
+ [ eta * a , lambda t , args : np . exp ( 1j * omega * t )],
+ [ eta * at , lambda t , args : np . exp ( - 1j * omega * t )]]
+alpha_t = np . real ( qt . mesolve ( H , psi0 , tlist , J , [ a ], options = options ) . expect [ 0 ])
+
diff --git a/benchmarks.php b/benchmarks.php
index 83275b6..5ef1a9a 100644
--- a/benchmarks.php
+++ b/benchmarks.php
@@ -8,47 +8,280 @@
-
- Benchmark tests are conducted with the following set of test programs found on the Quantum Optics Frameworks Benchmark Repo
.
-
-
-
+
+
+
+ Time-evolution 1
+
+
+ Time-evolution 2
+
+
+ Time-evolution 3
+
+
+ Expectation values
+
+
+ Q-Function
+
+
+ Multiplication
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ A cavity mode, modeled as a fock space with a certain cutoff, is driven on resonance with a classical laser. Since photon loss is included, the system is an open system and evolves according to a master equation
+
+
+
ρ ˙ = − i ℏ [ H , ρ ] + κ ( a ρ a † − 1 2 a † a ρ − 1 2 ρ a † a )
+
+ with Hamiltonian
+
+
+
H = η ( a + a † ) .
+
+ This benchmark measures the time it takes to create all necessary operators and states, perform a time-evolution according to a master equation and calculate the expectation value of the number operator at certain times.
+
+
Benchmark results
+
+
+
+
+
+
Source-code
+
QuantumOptics.jl
+
+
+
+
QuTiP
+
+
+
+
Matlab Quantum Optics Toolbox
+
+
+
+
+
-
-
+
+
+
+
+
+
+ Revisiting the first example, the system is now simulated without using the rotating frame of the driving laser. The pumping term then becomes time dependent and the Hamiltonian is
+
+
+
H ( t ) = ω c a † a + η ( a e i ω t + a † e − i ω t ) .
+
+
Benchmark results
+
+
+
+
+
Source-code
+
QuantumOptics.jl
+
+
+
+
QuTiP
+
+
+
+
-
-
+
+
+
+
+
+
+ A discretized position space is used to simulate the movement of an, initially gaussian, wave-packet in an harmonic trap potential according to the Schrödinger equation
+
+
+
i ℏ d d t | Ψ ( t ) ⟩ = H | Ψ ( t ) ⟩
+
+ with Hamiltonian
+
+
+
H = p 2 + 2 ∗ x 2 .
+
+ This benchmark measures only the time it takes to perform the time-evolution and calculating the expectation values. Creating all necessary operators and states is done separately.
+
+
Benchmark results
+
+
+
Source-code
+
QuantumOptics.jl
+
+
+
+
QuTiP
+
+
+
+
-
-
+
+
+
+
+
+
+
+
Expectation values
+
+
+
+
Variances
+
+
+
+
Partial trace
+
+
+
+
-
-
+
+
+
+
+
+
+
+
Coherent states
+
+
+
+
Q-function
+
+
+
+
-
-
+
+
+
+
+
+
+
+
Matrix-Matrix multiplication
+
+
+
+
+
-
-
+
+
+
+
+
+
+ Benchmarking is a tricky thing to do right. Many different variables can significantly influence the results. The choice of example and the presentation of the results may be biased towards one or the other framework. We tried our best to be as fair as possible but probably made mistakes along the way. To give everybody the chance to reproduce our results, the whole code is open source and can be found at github in the QuantumOpticsFrameworks-Benchmarks repository. If you find any mistakes or obtain different results we would be grateful if you could file an issue there.
+
+
+ A few remarks to the benchmarking process:
+
+
+ All benchmarks are performed on a single dedicated CPU core . Both cases, single-processing and multi-processing, are of interest with slightly different implications. Obviously, when working interactively on a single example, the complete available processing power should be used to get the answer as fast as possible. However, for embarrassingly parallel problems, like for example performing the same time-evolution for different parameters, it is favorable to avoid any unnecessary overhead stemming from premature parallelization.
+
+
+ Startup time is neglected . Julia's just-in-time compilation, which is the key to generate extremely performant code, comes with a price. The first time a function is called with a certain set of argument types it has to be compiled which leads to a constant offset in every single benchmark. If the function is called often enough and/or runs long enough this overhead doesn't matter. However, if a function is called only once the overhead might be considerable and is the reason why often times using Julia feels less "snappy" compared to other languages.
+
+
+
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/css/qojl.css b/css/qojl.css
index 23ca448..7e1d8f0 100644
--- a/css/qojl.css
+++ b/css/qojl.css
@@ -1,5 +1,5 @@
.jumbotron {
- margin-top: -150px;
+ margin-top: -80px;
height: 350px;
background: #eeeeee;
color: #000000;
@@ -14,7 +14,7 @@
}
body {
- padding-top: 150px;
+ padding-top: 60px;
}
footer {
@@ -35,8 +35,14 @@ canvas {
padding: 20px 0;
}
+div.singleplot {
+ /*margin: auto;*/
+ margin-left: 20%;
+ margin-right: 20%;
+}
+
#features .fa-lg {
- font-size: 72px;
+ /*font-size: 200px;*/
}
#features #feature1 {
@@ -47,4 +53,91 @@ canvas {
}
#features #feature3 {
color: #6cac5b;
+}
+
+/* Style the tab */
+div.tab {
+ overflow: hidden;
+ border: 1px solid #ccc;
+ background-color: #f1f1f1;
+}
+
+/* Style the buttons inside the tab */
+div.tab button {
+ background-color: inherit;
+ float: left;
+ border: none;
+ outline: none;
+ cursor: pointer;
+ padding: 14px 16px;
+ transition: 0.3s;
+}
+
+/* Change background color of buttons on hover */
+div.tab button:hover {
+ background-color: #ddd;
+}
+
+/* Create an active/current tablink class */
+div.tab button.active {
+ background-color: #ccc;
+}
+
+/* Style the tab content */
+
+.tabcontent {
+ display: none;
+ border: 1px solid #ccc;
+ border-top: none;
+}
+
+.tabcontent {
+ -webkit-animation: fadeEffect 0.5s;
+ animation: fadeEffect 0.5s;
+}
+
+.tabcontentheader {
+ border-bottom: 1px solid #ccc;
+ padding: 4px 15px;
+ background-color: #efefef;
+}
+
+.tabcontentbody {
+ padding: 10px 15px;
+}
+
+@-webkit-keyframes fadeEffect {
+ from {opacity: 0;}
+ to {opacity: 1;}
+}
+
+@keyframes fadeEffect {
+ from {opacity: 0;}
+ to {opacity: 1;}
+}
+
+/* Style the buttons that are used to open and close the accordion panel */
+button.accordion {
+ background-color: #eee;
+ color: #444;
+ cursor: pointer;
+ padding: 18px;
+ width: 100%;
+ text-align: left;
+ margin: 2px;
+ border: 1px solid #ccc;
+ outline: none;
+ transition: 0.4s;
+}
+
+/* Add a background color to the button if it is clicked on (add the .active class with JS), and when you move the mouse over it (hover) */
+button.accordion.active, button.accordion:hover {
+ background-color: #ddd;
+}
+
+/* Style the accordion panel. Note: hidden by default */
+div.panel {
+ padding: 0 18px;
+ background-color: white;
+ display: none;
}
\ No newline at end of file
diff --git a/css/sourcecode.css b/css/sourcecode.css
new file mode 100644
index 0000000..572069c
--- /dev/null
+++ b/css/sourcecode.css
@@ -0,0 +1,69 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #f8f8f8; }
+.highlight .c { color: #408080; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #008000; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
+.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #008000 } /* Keyword.Pseudo */
+.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #B00040 } /* Keyword.Type */
+.highlight .m { color: #666666 } /* Literal.Number */
+.highlight .s { color: #BA2121 } /* Literal.String */
+.highlight .na { color: #7D9029 } /* Name.Attribute */
+.highlight .nb { color: #008000 } /* Name.Builtin */
+.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.highlight .no { color: #880000 } /* Name.Constant */
+.highlight .nd { color: #AA22FF } /* Name.Decorator */
+.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #0000FF } /* Name.Function */
+.highlight .nl { color: #A0A000 } /* Name.Label */
+.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #19177C } /* Name.Variable */
+.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #666666 } /* Literal.Number.Bin */
+.highlight .mf { color: #666666 } /* Literal.Number.Float */
+.highlight .mh { color: #666666 } /* Literal.Number.Hex */
+.highlight .mi { color: #666666 } /* Literal.Number.Integer */
+.highlight .mo { color: #666666 } /* Literal.Number.Oct */
+.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
+.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
+.highlight .sc { color: #BA2121 } /* Literal.String.Char */
+.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
+.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
+.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.highlight .sx { color: #008000 } /* Literal.String.Other */
+.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
+.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
+.highlight .ss { color: #19177C } /* Literal.String.Symbol */
+.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #0000FF } /* Name.Function.Magic */
+.highlight .vc { color: #19177C } /* Name.Variable.Class */
+.highlight .vg { color: #19177C } /* Name.Variable.Global */
+.highlight .vi { color: #19177C } /* Name.Variable.Instance */
+.highlight .vm { color: #19177C } /* Name.Variable.Magic */
+.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
diff --git a/footer.html b/footer.html
index 2b82f78..ea5311e 100644
--- a/footer.html
+++ b/footer.html
@@ -18,9 +18,7 @@
interval: 5000 //changes the speed
})
-
-
-
+
-
+
@@ -63,7 +64,7 @@
GitHub
-
+
diff --git a/js/plots/coherentstate.json b/js/plots/coherentstate.json
index bbaab1e..d35c42b 100644
--- a/js/plots/coherentstate.json
+++ b/js/plots/coherentstate.json
@@ -1 +1 @@
-{"QuantumOptics.jl-ae69320f5c": [{"N": 50, "t": 6.13e-07}, {"N": 100, "t": 1.18e-06}, {"N": 150, "t": 1.91e-06}, {"N": 200, "t": 2.49e-06}, {"N": 250, "t": 3.02e-06}, {"N": 300, "t": 3.53e-06}, {"N": 350, "t": 4.04e-06}, {"N": 400, "t": 4.63e-06}, {"N": 450, "t": 5.14e-06}, {"N": 500, "t": 5.66e-06}], "QuTiP-3.1.0": [{"N": 50, "t": 0.000559}, {"N": 100, "t": 0.000723}, {"N": 150, "t": 0.00099}, {"N": 200, "t": 0.00127}, {"N": 250, "t": 0.00155}, {"N": 300, "t": 0.00188}, {"N": 350, "t": 0.00219}, {"N": 400, "t": 0.00258}, {"N": 450, "t": 0.00291}, {"N": 500, "t": 0.00326}]}
\ No newline at end of file
+{"QuTiP-4.1.0": [{"N": 50, "t": 0.000487}, {"N": 100, "t": 0.000745}, {"N": 150, "t": 0.00103}, {"N": 200, "t": 0.00131}, {"N": 250, "t": 0.00162}, {"N": 300, "t": 0.00193}, {"N": 350, "t": 0.0023}, {"N": 400, "t": 0.00265}, {"N": 450, "t": 0.00304}, {"N": 500, "t": 0.00342}], "QuantumOptics.jl-ae69320f5c": [{"N": 50, "t": 6.13e-07}, {"N": 100, "t": 1.18e-06}, {"N": 150, "t": 1.91e-06}, {"N": 200, "t": 2.49e-06}, {"N": 250, "t": 3.02e-06}, {"N": 300, "t": 3.53e-06}, {"N": 350, "t": 4.04e-06}, {"N": 400, "t": 4.63e-06}, {"N": 450, "t": 5.14e-06}, {"N": 500, "t": 5.66e-06}]}
\ No newline at end of file
diff --git a/js/plots/expect_operator.json b/js/plots/expect_operator.json
index 3c56354..b2b2091 100644
--- a/js/plots/expect_operator.json
+++ b/js/plots/expect_operator.json
@@ -1 +1 @@
-{"QuTiP-3.1.0": [{"N": 100, "t": 1.67e-05}, {"N": 200, "t": 4.67e-05}, {"N": 300, "t": 9.67e-05}, {"N": 400, "t": 0.000159}, {"N": 500, "t": 0.00023}, {"N": 600, "t": 0.000324}, {"N": 700, "t": 0.000434}, {"N": 800, "t": 0.000575}, {"N": 900, "t": 0.000696}, {"N": 1000, "t": 0.000852}, {"N": 1100, "t": 0.00102}, {"N": 1200, "t": 0.00121}, {"N": 1300, "t": 0.00141}, {"N": 1400, "t": 0.00162}, {"N": 1500, "t": 0.00186}, {"N": 1600, "t": 0.00211}, {"N": 1700, "t": 0.00237}, {"N": 1800, "t": 0.00265}, {"N": 1900, "t": 0.00299}, {"N": 2000, "t": 0.00335}, {"N": 2100, "t": 0.0037}, {"N": 2200, "t": 0.00417}, {"N": 2300, "t": 0.00457}, {"N": 2400, "t": 0.00496}, {"N": 2500, "t": 0.00553}], "QuantumOptics.jl-ae69320f5c": [{"N": 100, "t": 4.68e-05}, {"N": 200, "t": 9.33e-05}, {"N": 300, "t": 0.000148}, {"N": 400, "t": 0.0002}, {"N": 500, "t": 0.000274}, {"N": 600, "t": 0.000317}, {"N": 700, "t": 0.000372}, {"N": 800, "t": 0.00043}, {"N": 900, "t": 0.000493}, {"N": 1000, "t": 0.000545}, {"N": 1100, "t": 0.000602}, {"N": 1200, "t": 0.000658}, {"N": 1300, "t": 0.000722}, {"N": 1400, "t": 0.000776}, {"N": 1500, "t": 0.000842}, {"N": 1600, "t": 0.000899}, {"N": 1700, "t": 0.000955}, {"N": 1800, "t": 0.00104}, {"N": 1900, "t": 0.00107}, {"N": 2000, "t": 0.00114}, {"N": 2100, "t": 0.00118}, {"N": 2200, "t": 0.00124}, {"N": 2300, "t": 0.00132}, {"N": 2400, "t": 0.00135}, {"N": 2500, "t": 0.00143}], "QuantumOpticsToolbox": [{"N": 100, "t": 0.000138}, {"N": 200, "t": 0.000271}, {"N": 300, "t": 0.000473}, {"N": 400, "t": 0.000762}, {"N": 500, "t": 0.00113}, {"N": 600, "t": 0.00159}, {"N": 700, "t": 0.00239}, {"N": 800, "t": 0.00347}, {"N": 900, "t": 0.00478}, {"N": 1000, "t": 0.00622}]}
\ No newline at end of file
+{"QuTiP-4.1.0": [{"N": 100, "t": 1.03e-05}, {"N": 200, "t": 2.52e-05}, {"N": 300, "t": 4.82e-05}, {"N": 400, "t": 7.64e-05}, {"N": 500, "t": 0.000109}, {"N": 600, "t": 0.00015}, {"N": 700, "t": 0.000196}, {"N": 800, "t": 0.000253}, {"N": 900, "t": 0.000311}, {"N": 1000, "t": 0.00039}, {"N": 1100, "t": 0.000451}, {"N": 1200, "t": 0.000532}, {"N": 1300, "t": 0.000619}, {"N": 1400, "t": 0.000711}, {"N": 1500, "t": 0.000809}, {"N": 1600, "t": 0.000915}, {"N": 1700, "t": 0.00103}, {"N": 1800, "t": 0.00114}, {"N": 1900, "t": 0.00127}, {"N": 2000, "t": 0.0014}, {"N": 2100, "t": 0.00154}, {"N": 2200, "t": 0.00169}, {"N": 2300, "t": 0.00184}, {"N": 2400, "t": 0.00201}, {"N": 2500, "t": 0.00215}], "QuantumOptics.jl-ae69320f5c": [{"N": 100, "t": 4.68e-05}, {"N": 200, "t": 9.33e-05}, {"N": 300, "t": 0.000148}, {"N": 400, "t": 0.0002}, {"N": 500, "t": 0.000274}, {"N": 600, "t": 0.000317}, {"N": 700, "t": 0.000372}, {"N": 800, "t": 0.00043}, {"N": 900, "t": 0.000493}, {"N": 1000, "t": 0.000545}, {"N": 1100, "t": 0.000602}, {"N": 1200, "t": 0.000658}, {"N": 1300, "t": 0.000722}, {"N": 1400, "t": 0.000776}, {"N": 1500, "t": 0.000842}, {"N": 1600, "t": 0.000899}, {"N": 1700, "t": 0.000955}, {"N": 1800, "t": 0.00104}, {"N": 1900, "t": 0.00107}, {"N": 2000, "t": 0.00114}, {"N": 2100, "t": 0.00118}, {"N": 2200, "t": 0.00124}, {"N": 2300, "t": 0.00132}, {"N": 2400, "t": 0.00135}, {"N": 2500, "t": 0.00143}], "QuantumOpticsToolbox": [{"N": 100, "t": 0.000138}, {"N": 200, "t": 0.000271}, {"N": 300, "t": 0.000473}, {"N": 400, "t": 0.000762}, {"N": 500, "t": 0.00113}, {"N": 600, "t": 0.00159}, {"N": 700, "t": 0.00239}, {"N": 800, "t": 0.00347}, {"N": 900, "t": 0.00478}, {"N": 1000, "t": 0.00622}]}
\ No newline at end of file
diff --git a/js/plots/expect_state.json b/js/plots/expect_state.json
index 1b51d0a..d135b25 100644
--- a/js/plots/expect_state.json
+++ b/js/plots/expect_state.json
@@ -1 +1 @@
-{"QuantumOptics.jl-ae69320f5c": [{"N": 5000, "t": 7.71e-05}, {"N": 10000, "t": 0.000156}, {"N": 15000, "t": 0.000232}, {"N": 20000, "t": 0.000323}, {"N": 25000, "t": 0.000385}, {"N": 30000, "t": 0.000467}, {"N": 35000, "t": 0.000549}, {"N": 40000, "t": 0.000628}, {"N": 45000, "t": 0.000697}, {"N": 50000, "t": 0.000782}, {"N": 55000, "t": 0.000865}, {"N": 60000, "t": 0.000943}, {"N": 65000, "t": 0.00103}, {"N": 70000, "t": 0.0011}, {"N": 75000, "t": 0.00119}, {"N": 80000, "t": 0.00127}, {"N": 85000, "t": 0.00136}, {"N": 90000, "t": 0.00143}, {"N": 95000, "t": 0.00152}, {"N": 100000, "t": 0.00161}, {"N": 105000, "t": 0.00169}, {"N": 110000, "t": 0.00177}, {"N": 115000, "t": 0.00186}, {"N": 120000, "t": 0.00194}, {"N": 125000, "t": 0.00203}, {"N": 130000, "t": 0.00212}, {"N": 135000, "t": 0.00221}, {"N": 140000, "t": 0.00229}, {"N": 145000, "t": 0.00239}, {"N": 150000, "t": 0.00247}], "QuTiP-3.1.0": [{"N": 5000, "t": 0.000156}, {"N": 10000, "t": 0.000232}, {"N": 15000, "t": 0.000304}, {"N": 20000, "t": 0.000383}, {"N": 25000, "t": 0.000455}, {"N": 30000, "t": 0.000529}, {"N": 35000, "t": 0.000603}, {"N": 40000, "t": 0.000676}, {"N": 45000, "t": 0.000752}, {"N": 50000, "t": 0.000823}, {"N": 55000, "t": 0.0009}, {"N": 60000, "t": 0.000968}, {"N": 65000, "t": 0.00104}, {"N": 70000, "t": 0.00112}, {"N": 75000, "t": 0.0012}, {"N": 80000, "t": 0.00128}, {"N": 85000, "t": 0.00136}, {"N": 90000, "t": 0.00143}, {"N": 95000, "t": 0.0015}, {"N": 100000, "t": 0.00158}, {"N": 105000, "t": 0.00165}, {"N": 110000, "t": 0.00173}, {"N": 115000, "t": 0.00179}, {"N": 120000, "t": 0.00188}, {"N": 125000, "t": 0.00196}, {"N": 130000, "t": 0.00204}, {"N": 135000, "t": 0.00211}, {"N": 140000, "t": 0.00222}, {"N": 145000, "t": 0.0023}, {"N": 150000, "t": 0.00239}], "QuantumOpticsToolbox": [{"N": 5000, "t": 0.000322}, {"N": 10000, "t": 0.000404}, {"N": 15000, "t": 0.000575}, {"N": 20000, "t": 0.000745}, {"N": 25000, "t": 0.000888}, {"N": 30000, "t": 0.00103}, {"N": 35000, "t": 0.00115}, {"N": 40000, "t": 0.00133}, {"N": 45000, "t": 0.00145}, {"N": 50000, "t": 0.00157}, {"N": 55000, "t": 0.00174}, {"N": 60000, "t": 0.00193}, {"N": 65000, "t": 0.00209}, {"N": 70000, "t": 0.00218}]}
\ No newline at end of file
+{"QuantumOptics.jl-ae69320f5c": [{"N": 5000, "t": 7.71e-05}, {"N": 10000, "t": 0.000156}, {"N": 15000, "t": 0.000232}, {"N": 20000, "t": 0.000323}, {"N": 25000, "t": 0.000385}, {"N": 30000, "t": 0.000467}, {"N": 35000, "t": 0.000549}, {"N": 40000, "t": 0.000628}, {"N": 45000, "t": 0.000697}, {"N": 50000, "t": 0.000782}, {"N": 55000, "t": 0.000865}, {"N": 60000, "t": 0.000943}, {"N": 65000, "t": 0.00103}, {"N": 70000, "t": 0.0011}, {"N": 75000, "t": 0.00119}, {"N": 80000, "t": 0.00127}, {"N": 85000, "t": 0.00136}, {"N": 90000, "t": 0.00143}, {"N": 95000, "t": 0.00152}, {"N": 100000, "t": 0.00161}, {"N": 105000, "t": 0.00169}, {"N": 110000, "t": 0.00177}, {"N": 115000, "t": 0.00186}, {"N": 120000, "t": 0.00194}, {"N": 125000, "t": 0.00203}, {"N": 130000, "t": 0.00212}, {"N": 135000, "t": 0.00221}, {"N": 140000, "t": 0.00229}, {"N": 145000, "t": 0.00239}, {"N": 150000, "t": 0.00247}], "QuTiP-4.1.0": [{"N": 5000, "t": 0.00015}, {"N": 10000, "t": 0.000223}, {"N": 15000, "t": 0.000298}, {"N": 20000, "t": 0.000374}, {"N": 25000, "t": 0.000449}, {"N": 30000, "t": 0.000521}, {"N": 35000, "t": 0.000611}, {"N": 40000, "t": 0.000669}, {"N": 45000, "t": 0.000753}, {"N": 50000, "t": 0.000815}, {"N": 55000, "t": 0.000888}, {"N": 60000, "t": 0.000962}, {"N": 65000, "t": 0.00103}, {"N": 70000, "t": 0.00111}, {"N": 75000, "t": 0.00118}, {"N": 80000, "t": 0.00125}, {"N": 85000, "t": 0.00133}, {"N": 90000, "t": 0.0014}, {"N": 95000, "t": 0.00147}, {"N": 100000, "t": 0.00154}, {"N": 105000, "t": 0.00162}, {"N": 110000, "t": 0.00169}, {"N": 115000, "t": 0.00176}, {"N": 120000, "t": 0.00183}, {"N": 125000, "t": 0.00191}, {"N": 130000, "t": 0.00199}, {"N": 135000, "t": 0.00205}, {"N": 140000, "t": 0.00214}, {"N": 145000, "t": 0.00223}, {"N": 150000, "t": 0.00229}], "QuantumOpticsToolbox": [{"N": 5000, "t": 0.000322}, {"N": 10000, "t": 0.000404}, {"N": 15000, "t": 0.000575}, {"N": 20000, "t": 0.000745}, {"N": 25000, "t": 0.000888}, {"N": 30000, "t": 0.00103}, {"N": 35000, "t": 0.00115}, {"N": 40000, "t": 0.00133}, {"N": 45000, "t": 0.00145}, {"N": 50000, "t": 0.00157}, {"N": 55000, "t": 0.00174}, {"N": 60000, "t": 0.00193}, {"N": 65000, "t": 0.00209}, {"N": 70000, "t": 0.00218}]}
\ No newline at end of file
diff --git a/js/plots/multiplication.json b/js/plots/multiplication.json
deleted file mode 100644
index 9a11a18..0000000
--- a/js/plots/multiplication.json
+++ /dev/null
@@ -1 +0,0 @@
-{"QuantumOptics.jl-ae69320f5c": [{"N": 50, "t": 3.14e-06}, {"N": 100, "t": 8.12e-05}, {"N": 150, "t": 0.000308}, {"N": 200, "t": 0.000715}, {"N": 250, "t": 0.00109}, {"N": 300, "t": 0.00149}, {"N": 350, "t": 0.00196}, {"N": 400, "t": 0.00238}, {"N": 450, "t": 0.00278}, {"N": 500, "t": 0.00324}, {"N": 550, "t": 0.00372}, {"N": 600, "t": 0.00412}, {"N": 650, "t": 0.00467}, {"N": 700, "t": 0.00526}, {"N": 750, "t": 0.0059}, {"N": 800, "t": 0.00659}, {"N": 850, "t": 0.00726}, {"N": 900, "t": 0.00813}, {"N": 950, "t": 0.0089}, {"N": 1000, "t": 0.00988}], "QuantumOpticsToolbox": [{"N": 50, "t": 5.42e-06}, {"N": 100, "t": 2.74e-06}, {"N": 150, "t": 4.64e-06}, {"N": 200, "t": 8.02e-06}, {"N": 250, "t": 1.79e-05}, {"N": 300, "t": 3.97e-05}, {"N": 350, "t": 7.9e-05}, {"N": 400, "t": 0.000121}, {"N": 450, "t": 0.000181}, {"N": 500, "t": 0.000263}, {"N": 550, "t": 0.000355}, {"N": 600, "t": 0.000483}, {"N": 650, "t": 0.000638}, {"N": 700, "t": 0.000773}, {"N": 750, "t": 0.000988}, {"N": 800, "t": 0.00124}, {"N": 850, "t": 0.0015}, {"N": 900, "t": 0.00176}, {"N": 950, "t": 0.0021}, {"N": 1000, "t": 0.00249}], "QuTiP-3.1.0": [{"N": 50, "t": 0.000206}, {"N": 100, "t": 0.000213}, {"N": 150, "t": 0.000222}, {"N": 200, "t": 0.000235}, {"N": 250, "t": 0.000251}, {"N": 300, "t": 0.000276}, {"N": 350, "t": 0.000297}, {"N": 400, "t": 0.000326}, {"N": 450, "t": 0.000363}, {"N": 500, "t": 0.000403}, {"N": 550, "t": 0.000454}, {"N": 600, "t": 0.000509}, {"N": 650, "t": 0.000569}, {"N": 700, "t": 0.000646}, {"N": 750, "t": 0.000731}, {"N": 800, "t": 0.000832}, {"N": 850, "t": 0.000955}, {"N": 900, "t": 0.00108}, {"N": 950, "t": 0.00121}, {"N": 1000, "t": 0.00139}]}
\ No newline at end of file
diff --git a/js/plots/multiplication_dense_dense.json b/js/plots/multiplication_dense_dense.json
new file mode 100644
index 0000000..bfe27f3
--- /dev/null
+++ b/js/plots/multiplication_dense_dense.json
@@ -0,0 +1 @@
+{"QuantumOptics.jl-ae69320f5c": [{"N": 50, "t": 0.000103}, {"N": 100, "t": 0.000336}, {"N": 150, "t": 0.00113}, {"N": 200, "t": 0.00198}, {"N": 250, "t": 0.00382}, {"N": 300, "t": 0.00605}, {"N": 350, "t": 0.00928}, {"N": 400, "t": 0.0137}, {"N": 450, "t": 0.0187}, {"N": 500, "t": 0.0255}, {"N": 550, "t": 0.0325}, {"N": 600, "t": 0.0425}], "QuTiP-4.1.0": [{"N": 50, "t": 0.000794}, {"N": 100, "t": 0.00368}, {"N": 150, "t": 0.0115}, {"N": 200, "t": 0.0267}, {"N": 250, "t": 0.0511}, {"N": 300, "t": 0.0877}, {"N": 350, "t": 0.139}, {"N": 400, "t": 0.206}, {"N": 450, "t": 0.292}, {"N": 500, "t": 0.399}, {"N": 550, "t": 0.531}, {"N": 600, "t": 0.688}]}
\ No newline at end of file
diff --git a/js/plots/multiplication_dense_sparse.json b/js/plots/multiplication_dense_sparse.json
new file mode 100644
index 0000000..e695d0a
--- /dev/null
+++ b/js/plots/multiplication_dense_sparse.json
@@ -0,0 +1 @@
+{"QuantumOptics.jl-ae69320f5c": [{"N": 50, "t": 3.59e-06}, {"N": 100, "t": 2.19e-05}, {"N": 150, "t": 6.79e-05}, {"N": 200, "t": 0.00015}, {"N": 250, "t": 0.000276}, {"N": 300, "t": 0.000454}, {"N": 350, "t": 0.000705}, {"N": 400, "t": 0.00103}, {"N": 450, "t": 0.00149}, {"N": 500, "t": 0.00194}, {"N": 550, "t": 0.00252}, {"N": 600, "t": 0.00317}, {"N": 650, "t": 0.00399}, {"N": 700, "t": 0.00508}, {"N": 750, "t": 0.00618}, {"N": 800, "t": 0.00797}, {"N": 850, "t": 0.00967}, {"N": 900, "t": 0.0115}, {"N": 950, "t": 0.0137}, {"N": 1000, "t": 0.0159}], "QuTiP-4.1.0": [{"N": 50, "t": 0.000269}, {"N": 100, "t": 0.000411}, {"N": 150, "t": 0.000586}, {"N": 200, "t": 0.00132}, {"N": 250, "t": 0.00207}, {"N": 300, "t": 0.00312}, {"N": 350, "t": 0.00442}, {"N": 400, "t": 0.00607}, {"N": 450, "t": 0.00781}, {"N": 500, "t": 0.0103}, {"N": 550, "t": 0.012}, {"N": 600, "t": 0.0166}, {"N": 650, "t": 0.0202}, {"N": 700, "t": 0.0246}, {"N": 750, "t": 0.0302}, {"N": 800, "t": 0.0382}, {"N": 850, "t": 0.0423}, {"N": 900, "t": 0.0492}, {"N": 950, "t": 0.054}, {"N": 1000, "t": 0.0663}]}
\ No newline at end of file
diff --git a/js/plots/multiplication_sparse_dense.json b/js/plots/multiplication_sparse_dense.json
new file mode 100644
index 0000000..85206a3
--- /dev/null
+++ b/js/plots/multiplication_sparse_dense.json
@@ -0,0 +1 @@
+{"QuTiP-4.1.0": [{"N": 50, "t": 0.00026}, {"N": 100, "t": 0.000382}, {"N": 150, "t": 0.000515}, {"N": 200, "t": 0.00117}, {"N": 250, "t": 0.00181}, {"N": 300, "t": 0.00277}, {"N": 350, "t": 0.00398}, {"N": 400, "t": 0.00535}, {"N": 450, "t": 0.00672}, {"N": 500, "t": 0.00851}, {"N": 550, "t": 0.0106}, {"N": 600, "t": 0.0133}, {"N": 650, "t": 0.0155}, {"N": 700, "t": 0.0194}, {"N": 750, "t": 0.0234}, {"N": 800, "t": 0.0319}, {"N": 850, "t": 0.0323}, {"N": 900, "t": 0.0383}, {"N": 950, "t": 0.0442}, {"N": 1000, "t": 0.0503}], "QuantumOptics.jl-ae69320f5c": [{"N": 50, "t": 4.58e-06}, {"N": 100, "t": 2.82e-05}, {"N": 150, "t": 0.000103}, {"N": 200, "t": 0.000262}, {"N": 250, "t": 0.000491}, {"N": 300, "t": 0.000907}, {"N": 350, "t": 0.00123}, {"N": 400, "t": 0.00172}, {"N": 450, "t": 0.00241}, {"N": 500, "t": 0.00328}, {"N": 550, "t": 0.00429}, {"N": 600, "t": 0.00543}, {"N": 650, "t": 0.00689}, {"N": 700, "t": 0.00846}, {"N": 750, "t": 0.0104}, {"N": 800, "t": 0.0125}, {"N": 850, "t": 0.0153}, {"N": 900, "t": 0.0181}, {"N": 950, "t": 0.0218}, {"N": 1000, "t": 0.0257}]}
\ No newline at end of file
diff --git a/js/plots/multiplication_sparse_sparse.json b/js/plots/multiplication_sparse_sparse.json
new file mode 100644
index 0000000..154d677
--- /dev/null
+++ b/js/plots/multiplication_sparse_sparse.json
@@ -0,0 +1 @@
+{"QuantumOpticsToolbox": [{"N": 50, "t": 5.42e-06}, {"N": 100, "t": 2.74e-06}, {"N": 150, "t": 4.64e-06}, {"N": 200, "t": 8.02e-06}, {"N": 250, "t": 1.79e-05}, {"N": 300, "t": 3.97e-05}, {"N": 350, "t": 7.9e-05}, {"N": 400, "t": 0.000121}, {"N": 450, "t": 0.000181}, {"N": 500, "t": 0.000263}, {"N": 550, "t": 0.000355}, {"N": 600, "t": 0.000483}, {"N": 650, "t": 0.000638}, {"N": 700, "t": 0.000773}, {"N": 750, "t": 0.000988}, {"N": 800, "t": 0.00124}, {"N": 850, "t": 0.0015}, {"N": 900, "t": 0.00176}, {"N": 950, "t": 0.0021}, {"N": 1000, "t": 0.00249}], "QuantumOptics.jl-ae69320f5c": [{"N": 50, "t": 2.97e-06}, {"N": 100, "t": 7.86e-05}, {"N": 150, "t": 0.000298}, {"N": 200, "t": 0.000693}, {"N": 250, "t": 0.00107}, {"N": 300, "t": 0.00144}, {"N": 350, "t": 0.0019}, {"N": 400, "t": 0.00231}, {"N": 450, "t": 0.00269}, {"N": 500, "t": 0.00309}, {"N": 550, "t": 0.00351}, {"N": 600, "t": 0.00398}, {"N": 650, "t": 0.00449}, {"N": 700, "t": 0.00501}, {"N": 750, "t": 0.00563}, {"N": 800, "t": 0.00639}, {"N": 850, "t": 0.00702}, {"N": 900, "t": 0.00779}, {"N": 950, "t": 0.00857}, {"N": 1000, "t": 0.00954}], "QuTiP-4.1.0": [{"N": 50, "t": 0.000227}, {"N": 100, "t": 0.000235}, {"N": 150, "t": 0.000243}, {"N": 200, "t": 0.000219}, {"N": 250, "t": 0.000233}, {"N": 300, "t": 0.000259}, {"N": 350, "t": 0.000277}, {"N": 400, "t": 0.000311}, {"N": 450, "t": 0.000344}, {"N": 500, "t": 0.000387}, {"N": 550, "t": 0.000438}, {"N": 600, "t": 0.0005}, {"N": 650, "t": 0.000564}, {"N": 700, "t": 0.000653}, {"N": 750, "t": 0.000742}, {"N": 800, "t": 0.000876}, {"N": 850, "t": 0.000978}, {"N": 900, "t": 0.00108}, {"N": 950, "t": 0.00121}, {"N": 1000, "t": 0.00139}]}
\ No newline at end of file
diff --git a/js/plots/ptrace.json b/js/plots/ptrace.json
index 6816fd7..77e0b27 100644
--- a/js/plots/ptrace.json
+++ b/js/plots/ptrace.json
@@ -1 +1 @@
-{"QuantumOptics.jl-ae69320f5c": [{"N": 16, "t": 3.71e-06}, {"N": 36, "t": 7.51e-06}, {"N": 64, "t": 1.44e-05}, {"N": 100, "t": 2.49e-05}, {"N": 144, "t": 4.01e-05}, {"N": 196, "t": 5.9e-05}, {"N": 256, "t": 8.63e-05}, {"N": 324, "t": 0.000125}, {"N": 400, "t": 0.000165}, {"N": 484, "t": 0.000214}, {"N": 576, "t": 0.000274}, {"N": 676, "t": 0.000341}, {"N": 784, "t": 0.000417}, {"N": 900, "t": 0.000501}], "QuantumOpticsToolbox": [{"N": 16, "t": 0.00029}, {"N": 36, "t": 0.000292}, {"N": 64, "t": 0.000494}, {"N": 100, "t": 0.001}, {"N": 144, "t": 0.00234}, {"N": 196, "t": 0.00523}, {"N": 256, "t": 0.0105}, {"N": 324, "t": 0.0202}, {"N": 400, "t": 0.0367}, {"N": 484, "t": 0.0635}], "QuTiP-3.1.0": [{"N": 16, "t": 0.00148}, {"N": 36, "t": 0.00206}, {"N": 64, "t": 0.00299}, {"N": 100, "t": 0.00432}, {"N": 144, "t": 0.00619}, {"N": 196, "t": 0.00906}, {"N": 256, "t": 0.013}, {"N": 324, "t": 0.017}, {"N": 400, "t": 0.0256}, {"N": 484, "t": 0.0313}, {"N": 576, "t": 0.0457}, {"N": 676, "t": 0.0543}, {"N": 784, "t": 0.0739}, {"N": 900, "t": 0.0878}]}
\ No newline at end of file
+{"QuTiP-4.1.0": [{"N": 16, "t": 0.000263}, {"N": 36, "t": 0.000292}, {"N": 64, "t": 0.000362}, {"N": 100, "t": 0.000507}, {"N": 144, "t": 0.000752}, {"N": 196, "t": 0.00117}, {"N": 256, "t": 0.00181}, {"N": 324, "t": 0.00266}, {"N": 400, "t": 0.0039}, {"N": 484, "t": 0.00563}, {"N": 576, "t": 0.00792}, {"N": 676, "t": 0.0107}, {"N": 784, "t": 0.015}, {"N": 900, "t": 0.0205}], "QuantumOptics.jl-ae69320f5c": [{"N": 16, "t": 3.71e-06}, {"N": 36, "t": 7.51e-06}, {"N": 64, "t": 1.44e-05}, {"N": 100, "t": 2.49e-05}, {"N": 144, "t": 4.01e-05}, {"N": 196, "t": 5.9e-05}, {"N": 256, "t": 8.63e-05}, {"N": 324, "t": 0.000125}, {"N": 400, "t": 0.000165}, {"N": 484, "t": 0.000214}, {"N": 576, "t": 0.000274}, {"N": 676, "t": 0.000341}, {"N": 784, "t": 0.000417}, {"N": 900, "t": 0.000501}], "QuantumOpticsToolbox": [{"N": 16, "t": 0.00029}, {"N": 36, "t": 0.000292}, {"N": 64, "t": 0.000494}, {"N": 100, "t": 0.001}, {"N": 144, "t": 0.00234}, {"N": 196, "t": 0.00523}, {"N": 256, "t": 0.0105}, {"N": 324, "t": 0.0202}, {"N": 400, "t": 0.0367}, {"N": 484, "t": 0.0635}]}
\ No newline at end of file
diff --git a/js/plots/qfunc_operator.json b/js/plots/qfunc_operator.json
index db0b87d..0541510 100644
--- a/js/plots/qfunc_operator.json
+++ b/js/plots/qfunc_operator.json
@@ -1 +1 @@
-{"QuTiP-3.1.0": [{"N": 10, "t": 0.00928}, {"N": 20, "t": 0.0243}, {"N": 30, "t": 0.045}, {"N": 40, "t": 0.071}, {"N": 50, "t": 0.104}, {"N": 60, "t": 0.144}, {"N": 70, "t": 0.191}, {"N": 80, "t": 0.242}, {"N": 90, "t": 0.299}, {"N": 100, "t": 0.374}], "QuantumOptics.jl-ae69320f5c": [{"N": 10, "t": 0.00402}, {"N": 20, "t": 0.00568}, {"N": 30, "t": 0.00901}, {"N": 40, "t": 0.0117}, {"N": 50, "t": 0.017}, {"N": 60, "t": 0.0203}, {"N": 70, "t": 0.178}, {"N": 80, "t": 0.195}, {"N": 90, "t": 0.215}, {"N": 100, "t": 0.258}]}
\ No newline at end of file
+{"QuantumOptics.jl-ae69320f5c": [{"N": 10, "t": 0.00402}, {"N": 20, "t": 0.00568}, {"N": 30, "t": 0.00901}, {"N": 40, "t": 0.0117}, {"N": 50, "t": 0.017}, {"N": 60, "t": 0.0203}, {"N": 70, "t": 0.178}, {"N": 80, "t": 0.195}, {"N": 90, "t": 0.215}, {"N": 100, "t": 0.258}], "QuTiP-4.1.0": [{"N": 10, "t": 0.0088}, {"N": 20, "t": 0.0232}, {"N": 30, "t": 0.0435}, {"N": 40, "t": 0.0702}, {"N": 50, "t": 0.103}, {"N": 60, "t": 0.142}, {"N": 70, "t": 0.189}, {"N": 80, "t": 0.241}, {"N": 90, "t": 0.297}, {"N": 100, "t": 0.366}]}
\ No newline at end of file
diff --git a/js/plots/qfunc_state.json b/js/plots/qfunc_state.json
index 7c1991b..8ff54c7 100644
--- a/js/plots/qfunc_state.json
+++ b/js/plots/qfunc_state.json
@@ -1 +1 @@
-{"QuTiP-3.1.0": [{"N": 10, "t": 0.00105}, {"N": 20, "t": 0.00135}, {"N": 30, "t": 0.00165}, {"N": 40, "t": 0.00196}, {"N": 50, "t": 0.0023}, {"N": 60, "t": 0.0026}, {"N": 70, "t": 0.00291}, {"N": 80, "t": 0.00321}, {"N": 90, "t": 0.00353}, {"N": 100, "t": 0.00396}], "QuantumOptics.jl-ae69320f5c": [{"N": 10, "t": 0.000403}, {"N": 20, "t": 0.000759}, {"N": 30, "t": 0.00112}, {"N": 40, "t": 0.0015}, {"N": 50, "t": 0.00185}, {"N": 60, "t": 0.00223}, {"N": 70, "t": 0.00259}, {"N": 80, "t": 0.00299}, {"N": 90, "t": 0.00337}, {"N": 100, "t": 0.00375}]}
\ No newline at end of file
+{"QuantumOptics.jl-ae69320f5c": [{"N": 10, "t": 0.000403}, {"N": 20, "t": 0.000759}, {"N": 30, "t": 0.00112}, {"N": 40, "t": 0.0015}, {"N": 50, "t": 0.00185}, {"N": 60, "t": 0.00223}, {"N": 70, "t": 0.00259}, {"N": 80, "t": 0.00299}, {"N": 90, "t": 0.00337}, {"N": 100, "t": 0.00375}], "QuTiP-4.1.0": [{"N": 10, "t": 0.00101}, {"N": 20, "t": 0.00133}, {"N": 30, "t": 0.00164}, {"N": 40, "t": 0.00195}, {"N": 50, "t": 0.00226}, {"N": 60, "t": 0.00258}, {"N": 70, "t": 0.00294}, {"N": 80, "t": 0.00323}, {"N": 90, "t": 0.00353}, {"N": 100, "t": 0.00383}]}
\ No newline at end of file
diff --git a/js/plots/specs.json b/js/plots/specs.json
deleted file mode 100644
index b99defc..0000000
--- a/js/plots/specs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"cpu": [["Architecture", "x86_64"], ["CPU op-mode(s)", "32-bit, 64-bit"], ["Byte Order", "Little Endian"], ["CPU(s)", "8"], ["On-line CPU(s) list", "0-7"], ["Thread(s) per core", "1"], ["Core(s) per socket", "8"], ["Socket(s)", "1"], ["NUMA node(s)", "1"], ["Vendor ID", "GenuineIntel"], ["CPU family", "6"], ["Model", "63"], ["Model name", "Intel(R) Core(TM) i7-5960X CPU @ 3.00GHz"], ["Stepping", "2"], ["CPU MHz", "1898.254"], ["CPU max MHz", "3500,0000"], ["CPU min MHz", "1200,0000"], ["BogoMIPS", "5988.81"], ["Virtualization", "VT-x"], ["L1d cache", "32K"], ["L1i cache", "32K"], ["L2 cache", "256K"], ["L3 cache", "20480K"], ["NUMA node0 CPU(s)", "0-7"], ["Flags", "fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm epb intel_ppin tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm xsaveopt cqm_llc cqm_occup_llc dtherm ida arat pln pts"]], "julia": ["Julia Version 0.5.1", "Commit 6445c82* (2017-03-05 13:25 UTC)", "Platform Info:", "OS: Linux (x86_64-pc-linux-gnu)", "CPU: Intel(R) Core(TM) i7-5960X CPU @ 3.00GHz", "WORD_SIZE: 64", "BLAS: libopenblas (NO_AFFINITY HASWELL)", "LAPACK: liblapack", "LIBM: libm", "LLVM: libLLVM-3.7.1 (ORCJIT, haswell)"], "qutip": ["QuTiP Version: 3.1.0", "Numpy Version: 1.12.1", "Scipy Version: 0.19.0", "Cython Version: 0.25.2", "Matplotlib Version: 2.0.0", "Fortran mcsolver: False", "scikits.umfpack: False", "Python Version: 3.6.0", "Platform Info: Linux (x86_64)", "Installation path: /usr/lib/python3.6/site-packages/qutip"]}
\ No newline at end of file
diff --git a/js/plots/timeevolution_master.json b/js/plots/timeevolution_master.json
index a37d3a7..338a1ac 100644
--- a/js/plots/timeevolution_master.json
+++ b/js/plots/timeevolution_master.json
@@ -1 +1 @@
-{"QuantumOpticsToolbox": [{"N": 5, "t": 0.0713}, {"N": 10, "t": 0.265}, {"N": 15, "t": 1.18}, {"N": 20, "t": 2.11}, {"N": 25, "t": 3.38}, {"N": 30, "t": 6.1}, {"N": 35, "t": 9.09}, {"N": 40, "t": 12.3}], "QuTiP-3.1.0": [{"N": 5, "t": 0.0588}, {"N": 10, "t": 0.185}, {"N": 15, "t": 0.357}, {"N": 20, "t": 0.696}, {"N": 25, "t": 1.29}, {"N": 30, "t": 2.22}, {"N": 35, "t": 3.04}, {"N": 40, "t": 4.85}, {"N": 45, "t": 6.6}, {"N": 50, "t": 7.69}, {"N": 55, "t": 11.5}, {"N": 60, "t": 14.5}], "QuantumOptics.jl-ae69320f5c": [{"N": 5, "t": 0.00842}, {"N": 10, "t": 0.0381}, {"N": 15, "t": 0.102}, {"N": 20, "t": 0.218}, {"N": 25, "t": 0.409}, {"N": 30, "t": 0.679}, {"N": 35, "t": 1.01}, {"N": 40, "t": 1.33}, {"N": 45, "t": 1.76}, {"N": 50, "t": 2.37}, {"N": 55, "t": 3.08}, {"N": 60, "t": 3.91}]}
\ No newline at end of file
+{"QuTiP-4.1.0": [{"N": 5, "t": 0.0813}, {"N": 10, "t": 0.29}, {"N": 15, "t": 0.493}, {"N": 20, "t": 0.907}, {"N": 25, "t": 1.35}, {"N": 30, "t": 2.31}, {"N": 35, "t": 3.16}, {"N": 40, "t": 5.04}, {"N": 45, "t": 6.43}, {"N": 50, "t": 7.88}, {"N": 55, "t": 11.7}, {"N": 60, "t": 14.7}], "QuantumOpticsToolbox": [{"N": 5, "t": 0.0713}, {"N": 10, "t": 0.265}, {"N": 15, "t": 1.18}, {"N": 20, "t": 2.11}, {"N": 25, "t": 3.38}, {"N": 30, "t": 6.1}, {"N": 35, "t": 9.09}, {"N": 40, "t": 12.3}], "QuantumOptics.jl-ae69320f5c": [{"N": 5, "t": 0.00842}, {"N": 10, "t": 0.0381}, {"N": 15, "t": 0.102}, {"N": 20, "t": 0.218}, {"N": 25, "t": 0.409}, {"N": 30, "t": 0.679}, {"N": 35, "t": 1.01}, {"N": 40, "t": 1.33}, {"N": 45, "t": 1.76}, {"N": 50, "t": 2.37}, {"N": 55, "t": 3.08}, {"N": 60, "t": 3.91}]}
\ No newline at end of file
diff --git a/js/plots/timeevolution_particle.json b/js/plots/timeevolution_particle.json
index b46b11a..c776a80 100644
--- a/js/plots/timeevolution_particle.json
+++ b/js/plots/timeevolution_particle.json
@@ -1 +1 @@
-{"QuTiP-3.1.0": [{"N": 50, "t": 0.116}, {"N": 100, "t": 0.533}, {"N": 150, "t": 1.71}, {"N": 200, "t": 4.26}, {"N": 250, "t": 9.63}, {"N": 300, "t": 18.3}, {"N": 350, "t": 34.3}, {"N": 400, "t": 54.0}, {"N": 450, "t": 93.7}], "QuantumOptics.jl-ae69320f5c-fft": [{"N": 50, "t": 0.0298}, {"N": 100, "t": 0.105}, {"N": 150, "t": 0.281}, {"N": 200, "t": 0.598}, {"N": 250, "t": 1.09}, {"N": 300, "t": 1.98}, {"N": 350, "t": 2.81}, {"N": 400, "t": 4.16}, {"N": 450, "t": 7.46}], "QuantumOptics.jl-ae69320f5c": [{"N": 50, "t": 0.0162}, {"N": 100, "t": 0.505}, {"N": 150, "t": 1.63}, {"N": 200, "t": 3.56}, {"N": 250, "t": 7.01}, {"N": 300, "t": 13.6}, {"N": 350, "t": 21.8}, {"N": 400, "t": 36.6}, {"N": 450, "t": 54.8}]}
\ No newline at end of file
+{"QuTiP-4.1.0": [{"N": 50, "t": 0.0845}, {"N": 100, "t": 0.473}, {"N": 150, "t": 1.42}, {"N": 200, "t": 3.5}, {"N": 250, "t": 7.87}, {"N": 300, "t": 15.0}, {"N": 350, "t": 27.5}, {"N": 400, "t": 43.1}, {"N": 450, "t": 73.5}], "QuantumOptics.jl-ae69320f5c-fft": [{"N": 50, "t": 0.0298}, {"N": 100, "t": 0.105}, {"N": 150, "t": 0.281}, {"N": 200, "t": 0.598}, {"N": 250, "t": 1.09}, {"N": 300, "t": 1.98}, {"N": 350, "t": 2.81}, {"N": 400, "t": 4.16}, {"N": 450, "t": 7.46}], "QuantumOptics.jl-ae69320f5c": [{"N": 50, "t": 0.0162}, {"N": 100, "t": 0.505}, {"N": 150, "t": 1.63}, {"N": 200, "t": 3.56}, {"N": 250, "t": 7.01}, {"N": 300, "t": 13.6}, {"N": 350, "t": 21.8}, {"N": 400, "t": 36.6}, {"N": 450, "t": 54.8}]}
\ No newline at end of file
diff --git a/js/plots/timeevolution_timedependent.json b/js/plots/timeevolution_timedependent.json
new file mode 100644
index 0000000..483b198
--- /dev/null
+++ b/js/plots/timeevolution_timedependent.json
@@ -0,0 +1 @@
+{"QuTiP-4.1.0": [{"N": 10, "t": 0.255}, {"N": 20, "t": 0.473}, {"N": 30, "t": 0.787}, {"N": 40, "t": 1.36}, {"N": 50, "t": 1.9}, {"N": 60, "t": 3.19}, {"N": 70, "t": 4.21}, {"N": 80, "t": 4.57}, {"N": 90, "t": 6.27}, {"N": 100, "t": 8.36}, {"N": 110, "t": 10.2}, {"N": 120, "t": 12.7}, {"N": 130, "t": 15.0}, {"N": 140, "t": 19.3}, {"N": 150, "t": 22.8}], "QuTiP-4.1.0-cython": [{"N": 10, "t": 2.64}, {"N": 20, "t": 2.69}, {"N": 30, "t": 2.78}, {"N": 40, "t": 2.98}, {"N": 50, "t": 3.18}, {"N": 60, "t": 3.67}, {"N": 70, "t": 4.1}, {"N": 80, "t": 4.29}, {"N": 90, "t": 5.05}, {"N": 100, "t": 5.98}, {"N": 110, "t": 6.75}, {"N": 120, "t": 7.74}, {"N": 130, "t": 8.78}, {"N": 140, "t": 10.8}, {"N": 150, "t": 12.3}], "QuantumOptics.jl-ae69320f5c": [{"N": 10, "t": 0.118}, {"N": 20, "t": 0.221}, {"N": 30, "t": 0.283}, {"N": 40, "t": 0.361}, {"N": 50, "t": 0.449}, {"N": 60, "t": 0.558}, {"N": 70, "t": 0.722}, {"N": 80, "t": 0.961}, {"N": 90, "t": 1.29}, {"N": 100, "t": 1.79}, {"N": 110, "t": 2.32}, {"N": 120, "t": 2.98}, {"N": 130, "t": 3.64}, {"N": 140, "t": 4.51}, {"N": 150, "t": 5.83}]}
\ No newline at end of file
diff --git a/js/plots/variance_operator.json b/js/plots/variance_operator.json
index 3af99fa..eb9f80f 100644
--- a/js/plots/variance_operator.json
+++ b/js/plots/variance_operator.json
@@ -1 +1 @@
-{"QuTiP-3.1.0": [{"N": 100, "t": 0.000573}, {"N": 200, "t": 0.000673}, {"N": 300, "t": 0.000799}, {"N": 400, "t": 0.000965}, {"N": 500, "t": 0.0012}, {"N": 600, "t": 0.00141}, {"N": 700, "t": 0.00168}, {"N": 800, "t": 0.00201}, {"N": 900, "t": 0.00236}, {"N": 1000, "t": 0.00276}, {"N": 1100, "t": 0.00319}, {"N": 1200, "t": 0.00367}, {"N": 1300, "t": 0.00419}, {"N": 1400, "t": 0.00474}, {"N": 1500, "t": 0.00534}, {"N": 1600, "t": 0.006}, {"N": 1700, "t": 0.00669}, {"N": 1800, "t": 0.00745}, {"N": 1900, "t": 0.00837}, {"N": 2000, "t": 0.00922}], "QuantumOptics.jl-ae69320f5c": [{"N": 100, "t": 0.000642}, {"N": 200, "t": 0.0013}, {"N": 300, "t": 0.00201}, {"N": 400, "t": 0.00267}, {"N": 500, "t": 0.00336}, {"N": 600, "t": 0.00404}, {"N": 700, "t": 0.00473}, {"N": 800, "t": 0.0054}, {"N": 900, "t": 0.00611}, {"N": 1000, "t": 0.00676}, {"N": 1100, "t": 0.00746}, {"N": 1200, "t": 0.00814}, {"N": 1300, "t": 0.00884}, {"N": 1400, "t": 0.00956}, {"N": 1500, "t": 0.0102}, {"N": 1600, "t": 0.0109}, {"N": 1700, "t": 0.0116}, {"N": 1800, "t": 0.0122}, {"N": 1900, "t": 0.0129}, {"N": 2000, "t": 0.0136}]}
\ No newline at end of file
+{"QuTiP-4.1.0": [{"N": 100, "t": 0.000187}, {"N": 200, "t": 0.00025}, {"N": 300, "t": 0.000321}, {"N": 400, "t": 0.000408}, {"N": 500, "t": 0.000502}, {"N": 600, "t": 0.000624}, {"N": 700, "t": 0.000755}, {"N": 800, "t": 0.000899}, {"N": 900, "t": 0.00106}, {"N": 1000, "t": 0.00125}, {"N": 1100, "t": 0.00144}, {"N": 1200, "t": 0.00166}, {"N": 1300, "t": 0.00188}, {"N": 1400, "t": 0.00213}, {"N": 1500, "t": 0.00239}, {"N": 1600, "t": 0.00266}, {"N": 1700, "t": 0.00296}, {"N": 1800, "t": 0.00327}, {"N": 1900, "t": 0.00359}, {"N": 2000, "t": 0.00395}], "QuantumOptics.jl-ae69320f5c": [{"N": 100, "t": 0.000642}, {"N": 200, "t": 0.0013}, {"N": 300, "t": 0.00201}, {"N": 400, "t": 0.00267}, {"N": 500, "t": 0.00336}, {"N": 600, "t": 0.00404}, {"N": 700, "t": 0.00473}, {"N": 800, "t": 0.0054}, {"N": 900, "t": 0.00611}, {"N": 1000, "t": 0.00676}, {"N": 1100, "t": 0.00746}, {"N": 1200, "t": 0.00814}, {"N": 1300, "t": 0.00884}, {"N": 1400, "t": 0.00956}, {"N": 1500, "t": 0.0102}, {"N": 1600, "t": 0.0109}, {"N": 1700, "t": 0.0116}, {"N": 1800, "t": 0.0122}, {"N": 1900, "t": 0.0129}, {"N": 2000, "t": 0.0136}]}
\ No newline at end of file
diff --git a/js/plots/variance_state.json b/js/plots/variance_state.json
index 25f410b..5ff9f63 100644
--- a/js/plots/variance_state.json
+++ b/js/plots/variance_state.json
@@ -1 +1 @@
-{"QuantumOptics.jl-ae69320f5c": [{"N": 5000, "t": 0.00014}, {"N": 10000, "t": 0.00028}, {"N": 15000, "t": 0.000412}, {"N": 20000, "t": 0.000561}, {"N": 25000, "t": 0.000692}, {"N": 30000, "t": 0.00083}, {"N": 35000, "t": 0.000982}, {"N": 40000, "t": 0.00113}, {"N": 45000, "t": 0.00127}, {"N": 50000, "t": 0.00141}, {"N": 55000, "t": 0.00156}, {"N": 60000, "t": 0.0017}, {"N": 65000, "t": 0.00184}, {"N": 70000, "t": 0.00199}, {"N": 75000, "t": 0.00215}, {"N": 80000, "t": 0.00228}, {"N": 85000, "t": 0.00244}, {"N": 90000, "t": 0.00259}, {"N": 95000, "t": 0.00273}, {"N": 100000, "t": 0.00288}], "QuTiP-3.1.0": [{"N": 5000, "t": 0.00171}, {"N": 10000, "t": 0.00257}, {"N": 15000, "t": 0.00334}, {"N": 20000, "t": 0.0042}, {"N": 25000, "t": 0.0045}, {"N": 30000, "t": 0.0059}, {"N": 35000, "t": 0.00599}, {"N": 40000, "t": 0.00674}, {"N": 45000, "t": 0.00759}, {"N": 50000, "t": 0.00994}, {"N": 55000, "t": 0.0103}, {"N": 60000, "t": 0.0113}, {"N": 65000, "t": 0.0111}, {"N": 70000, "t": 0.0138}, {"N": 75000, "t": 0.0139}, {"N": 80000, "t": 0.0156}, {"N": 85000, "t": 0.0147}, {"N": 90000, "t": 0.0178}, {"N": 95000, "t": 0.0167}, {"N": 100000, "t": 0.02}]}
\ No newline at end of file
+{"QuantumOptics.jl-ae69320f5c": [{"N": 5000, "t": 0.00014}, {"N": 10000, "t": 0.00028}, {"N": 15000, "t": 0.000412}, {"N": 20000, "t": 0.000561}, {"N": 25000, "t": 0.000692}, {"N": 30000, "t": 0.00083}, {"N": 35000, "t": 0.000982}, {"N": 40000, "t": 0.00113}, {"N": 45000, "t": 0.00127}, {"N": 50000, "t": 0.00141}, {"N": 55000, "t": 0.00156}, {"N": 60000, "t": 0.0017}, {"N": 65000, "t": 0.00184}, {"N": 70000, "t": 0.00199}, {"N": 75000, "t": 0.00215}, {"N": 80000, "t": 0.00228}, {"N": 85000, "t": 0.00244}, {"N": 90000, "t": 0.00259}, {"N": 95000, "t": 0.00273}, {"N": 100000, "t": 0.00288}], "QuTiP-4.1.0": [{"N": 5000, "t": 0.00123}, {"N": 10000, "t": 0.00239}, {"N": 15000, "t": 0.00341}, {"N": 20000, "t": 0.00443}, {"N": 25000, "t": 0.00517}, {"N": 30000, "t": 0.00644}, {"N": 35000, "t": 0.00749}, {"N": 40000, "t": 0.00808}, {"N": 45000, "t": 0.00912}, {"N": 50000, "t": 0.0102}, {"N": 55000, "t": 0.0117}, {"N": 60000, "t": 0.0128}, {"N": 65000, "t": 0.0132}, {"N": 70000, "t": 0.0149}, {"N": 75000, "t": 0.0156}, {"N": 80000, "t": 0.0171}, {"N": 85000, "t": 0.0181}, {"N": 90000, "t": 0.0184}, {"N": 95000, "t": 0.02}, {"N": 100000, "t": 0.0204}]}
\ No newline at end of file
diff --git a/js/qojl.js b/js/qojl.js
index 1886313..79b234e 100644
--- a/js/qojl.js
+++ b/js/qojl.js
@@ -1,18 +1,18 @@
// Config
var qojl_data = "QuantumOptics.jl-ae69320f5c";
-var qutip_data = "QuTiP-3.1.0";
+var qutip_data = "QuTiP-4.1.0";
var toolbox_data = "QuantumOpticsToolbox";
// Rearrange dat structure
function rearrange (jsondata) {
d = [];
-
+
for (var i in jsondata) {
xval = jsondata[i].N;
yval = jsondata[i].t;
d.push({x: xval, y: yval});
}
-
+
return d;
}
@@ -29,7 +29,7 @@ function chartconfig (data, charttitle) {
borderColor: '#d66761',
backgroundColor: '#d66761'
}, {
- label: 'QuTiP 3.1.0',
+ label: 'QuTiP 4.1.0',
data: rearrange(data[qutip_data]),
fill: false,
borderWidth: 3.0,
@@ -48,6 +48,9 @@ function chartconfig (data, charttitle) {
title: {
display: true,
text: charttitle,
+ fontSize: 14,
+ fontStyle: 'normal',
+ fontColor: "#333333"
},
scales: {
xAxes: [{
@@ -55,21 +58,45 @@ function chartconfig (data, charttitle) {
position: 'bottom',
scaleLabel: {
display: true,
- labelString: 'Hilbert-Space Dimension'
- }
+ labelString: 'Hilbert-Space Dimension',
+ fontSize: 14,
+ fontStyle: 'normal',
+ }
}],
yAxes: [{
scaleLabel: {
display: true,
- labelString: 'Ellapsed Time'
+ labelString: 'Elapsed Time [seconds]',
+ fontSize: 14,
+ fontStyle: 'normal',
}
-
+
}]
}
}
};
}
+function openBenchmarkSet(evt, benchmarkName) {
+ // Declare all variables
+ var i, tabcontent, tablinks;
+
+ // Get all elements with class="tabcontent" and hide them
+ tabcontent = document.getElementsByClassName("tabcontent");
+ for (i = 0; i < tabcontent.length; i++) {
+ tabcontent[i].style.display = "none";
+ }
+
+ // Get all elements with class="tablinks" and remove the class "active"
+ tablinks = document.getElementsByClassName("tablinks");
+ for (i = 0; i < tablinks.length; i++) {
+ tablinks[i].className = tablinks[i].className.replace(" active", "");
+ }
+
+ // Show the current tab, and add an "active" class to the button that opened the tab
+ document.getElementById(benchmarkName).style.display = "block";
+ evt.currentTarget.className += " active";
+}
// Function to create Plot from JSON
function createplot (file, htmlid, title) {
@@ -82,12 +109,20 @@ function createplot (file, htmlid, title) {
// Now, create the plots
createplot('timeevolution_master.json', '#plot-timeevolution-master', 'Time Evolution (Master Equation)');
createplot('timeevolution_particle.json', '#plot-timeevolution-particle', 'Time Evolution (Particle)');
-createplot('multiplication.json', '#plot-multiplication', 'Multiplication');
+createplot('timeevolution_timedependent.json', '#plot-timeevolution-timedependent', 'Time Evolution (Time dependent)');
+
+createplot('multiplication_sparse_sparse.json', '#plot-multiplication-sparse-sparse', 'Multiplication: sparse-sparse');
+createplot('multiplication_sparse_dense.json', '#plot-multiplication-sparse-dense', 'Multiplication: sparse-dense');
+createplot('multiplication_dense_sparse.json', '#plot-multiplication-dense-sparse', 'Multiplication: dense-sparse');
+createplot('multiplication_dense_dense.json', '#plot-multiplication-dense-dense', 'Multiplication: dense-dense');
+
createplot('expect_state.json', '#plot-expect-state', 'Expectation Value (State Vector)');
createplot('expect_operator.json', '#plot-expect-operator', 'Expectation Value (Density Operator)');
-createplot('coherentstate.json', '#plot-coherentstate', 'Coherent State Performance');
+createplot('variance_operator.json', '#plot-variance-operator', 'Variance (Density Operator)');
+createplot('variance_state.json', '#plot-variance-state', 'Variance (State Vector)');
+
createplot('ptrace.json', '#plot-ptrace', 'Partial Trace Performance');
+
+createplot('coherentstate.json', '#plot-coherentstate', 'Coherent State Performance');
createplot('qfunc_state.json', '#plot-qfunc-state', 'Q-Function for State Vectors');
createplot('qfunc_operator.json', '#plot-qfunc-operator', 'Q-Function for Density Operators');
-createplot('variance_operator.json', '#plot-variance-operator', 'Variance (Density Operator)');
-createplot('variance_state.json', '#plot-variance-state', 'Variance (State Vector)');