From 18b392354c98a761111cd0cdcfb1a3ac5dce1852 Mon Sep 17 00:00:00 2001 From: Sebastian Kraemer Date: Wed, 12 Apr 2017 14:57:29 +0200 Subject: [PATCH 01/10] Update benchmarks * Compare against QuTiP 4.1 * Add timedependent example * Group benchmarks in related sets --- benchmarks.php | 43 +++++++++++++++------- js/plots/coherentstate.json | 2 +- js/plots/expect_operator.json | 2 +- js/plots/expect_state.json | 2 +- js/plots/multiplication.json | 1 - js/plots/multiplication_dense_dense.json | 1 + js/plots/multiplication_dense_sparse.json | 1 + js/plots/multiplication_sparse_dense.json | 1 + js/plots/multiplication_sparse_sparse.json | 1 + js/plots/ptrace.json | 2 +- js/plots/qfunc_operator.json | 2 +- js/plots/qfunc_state.json | 2 +- js/plots/specs.json | 1 - js/plots/timeevolution_master.json | 2 +- js/plots/timeevolution_particle.json | 2 +- js/plots/timeevolution_timedependent.json | 1 + js/plots/variance_operator.json | 2 +- js/plots/variance_state.json | 2 +- js/qojl.js | 28 +++++++++----- 19 files changed, 63 insertions(+), 35 deletions(-) delete mode 100644 js/plots/multiplication.json create mode 100644 js/plots/multiplication_dense_dense.json create mode 100644 js/plots/multiplication_dense_sparse.json create mode 100644 js/plots/multiplication_sparse_dense.json create mode 100644 js/plots/multiplication_sparse_sparse.json delete mode 100644 js/plots/specs.json create mode 100644 js/plots/timeevolution_timedependent.json diff --git a/benchmarks.php b/benchmarks.php index 83275b6..44aa0d0 100644 --- a/benchmarks.php +++ b/benchmarks.php @@ -8,28 +8,50 @@

Benchmarks

- +

Benchmark tests are conducted with the following set of test programs found on the Quantum Optics Frameworks Benchmark Repo

. -
-
+
+
+
+ +
+
+ +
-
- +
+ +
+
+
- +
+
+ +
+
+
+
+ +
+
+ +
+
+
@@ -42,13 +64,8 @@
-
- -
-
- -
+
- + 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..cf8d86a 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, @@ -56,14 +56,14 @@ function chartconfig (data, charttitle) { scaleLabel: { display: true, labelString: 'Hilbert-Space Dimension' - } + } }], yAxes: [{ scaleLabel: { display: true, labelString: 'Ellapsed Time' } - + }] } } @@ -82,12 +82,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)'); From b3180e819f349c57ecd172231d91c8233e521d00 Mon Sep 17 00:00:00 2001 From: Sebastian Kraemer Date: Wed, 12 Apr 2017 15:00:19 +0200 Subject: [PATCH 02/10] Fix typo in plots: ellapsed -> elapsed --- js/qojl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/qojl.js b/js/qojl.js index cf8d86a..d9afccd 100644 --- a/js/qojl.js +++ b/js/qojl.js @@ -61,7 +61,7 @@ function chartconfig (data, charttitle) { yAxes: [{ scaleLabel: { display: true, - labelString: 'Ellapsed Time' + labelString: 'Elapsed Time' } }] From 59741e13bbf1dcc375195f681b5b7cecc73c5192 Mon Sep 17 00:00:00 2001 From: Sebastian Kraemer Date: Thu, 13 Apr 2017 09:01:54 +0200 Subject: [PATCH 03/10] Implement tabs for benchmarks. --- benchmarks.php | 120 +++++++++++++++++++++++++++++++------------------ css/qojl.css | 51 +++++++++++++++++++++ js/qojl.js | 20 +++++++++ 3 files changed, 148 insertions(+), 43 deletions(-) diff --git a/benchmarks.php b/benchmarks.php index 44aa0d0..b29137c 100644 --- a/benchmarks.php +++ b/benchmarks.php @@ -8,64 +8,98 @@

Benchmarks

- -

Benchmark tests are conducted with the following set of test programs found on the Quantum Optics Frameworks Benchmark Repo

. +

+ Benchmark tests are conducted with the following set of test programs found on the Quantum Optics Frameworks Benchmark Repo +

-
- -
-
- -
-
- +
+ + + +
+
-
- -
-
- -
-
- -
-
- +
+
+ +
+
+ +
+
+ +
+
-
- -
-
- -
-
- -
-
- +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
-
- -
-
- -
-
- -
-
- +
+
+ +
+
+ +
+
+ +
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + diff --git a/css/qojl.css b/css/qojl.css index 23ca448..4c4c309 100644 --- a/css/qojl.css +++ b/css/qojl.css @@ -47,4 +47,55 @@ 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; + padding: 6px 12px; + /*border: 1px solid #ccc;*/ + border-top: none; +} + +.tabcontent { + -webkit-animation: fadeEffect 0.5s; + animation: fadeEffect 0.5s; +} + +@-webkit-keyframes fadeEffect { + from {opacity: 0;} + to {opacity: 1;} +} + +@keyframes fadeEffect { + from {opacity: 0;} + to {opacity: 1;} } \ No newline at end of file diff --git a/js/qojl.js b/js/qojl.js index d9afccd..60139d4 100644 --- a/js/qojl.js +++ b/js/qojl.js @@ -70,6 +70,26 @@ function chartconfig (data, charttitle) { }; } +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) { From 74f536d930e50d5ced2a6a5949b11b382463645f Mon Sep 17 00:00:00 2001 From: Sebastian Kraemer Date: Thu, 13 Apr 2017 09:04:43 +0200 Subject: [PATCH 04/10] Only load charts.jl on the benchmarks site. --- benchmarks.php | 5 ++++- footer.html | 4 +--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/benchmarks.php b/benchmarks.php index b29137c..2582e95 100644 --- a/benchmarks.php +++ b/benchmarks.php @@ -99,7 +99,10 @@ + + + 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 }) - - - + From 60840fe45dab63aaf5f8802258521df7ee44e639 Mon Sep 17 00:00:00 2001 From: Sebastian Kraemer Date: Thu, 13 Apr 2017 14:16:58 +0200 Subject: [PATCH 05/10] Further benchmark improvements. * General benchmarking information * Description of benchmark example * Include benchmark codes --- benchmarks-sourcecode/generate_html.py | 21 ++ benchmarks-sourcecode/timeevolution_master.jl | 21 ++ benchmarks-sourcecode/timeevolution_master.m | 25 +++ benchmarks-sourcecode/timeevolution_master.py | 15 ++ .../timeevolution_master_jl.html | 22 ++ .../timeevolution_master_m.html | 26 +++ .../timeevolution_master_py.html | 16 ++ .../timeevolution_particle.jl | 21 ++ .../timeevolution_particle.py | 41 ++++ .../timeevolution_particle_jl.html | 22 ++ .../timeevolution_particle_py.html | 42 ++++ .../timeevolution_timedependent.jl | 28 +++ .../timeevolution_timedependent.py | 22 ++ .../timeevolution_timedependent_jl.html | 29 +++ .../timeevolution_timedependent_py.html | 23 +++ benchmarks.php | 192 +++++++++++++++--- css/qojl.css | 26 +++ css/sourcecode.css | 69 +++++++ header.html | 5 +- 19 files changed, 637 insertions(+), 29 deletions(-) create mode 100644 benchmarks-sourcecode/generate_html.py create mode 100644 benchmarks-sourcecode/timeevolution_master.jl create mode 100644 benchmarks-sourcecode/timeevolution_master.m create mode 100644 benchmarks-sourcecode/timeevolution_master.py create mode 100644 benchmarks-sourcecode/timeevolution_master_jl.html create mode 100644 benchmarks-sourcecode/timeevolution_master_m.html create mode 100644 benchmarks-sourcecode/timeevolution_master_py.html create mode 100644 benchmarks-sourcecode/timeevolution_particle.jl create mode 100644 benchmarks-sourcecode/timeevolution_particle.py create mode 100644 benchmarks-sourcecode/timeevolution_particle_jl.html create mode 100644 benchmarks-sourcecode/timeevolution_particle_py.html create mode 100644 benchmarks-sourcecode/timeevolution_timedependent.jl create mode 100644 benchmarks-sourcecode/timeevolution_timedependent.py create mode 100644 benchmarks-sourcecode/timeevolution_timedependent_jl.html create mode 100644 benchmarks-sourcecode/timeevolution_timedependent_py.html create mode 100644 css/sourcecode.css 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 = -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');
+
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.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.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 2582e95..b43dfaa 100644 --- a/benchmarks.php +++ b/benchmarks.php @@ -8,15 +8,18 @@

Benchmarks

-

- Benchmark tests are conducted with the following set of test programs found on the Quantum Optics Frameworks Benchmark Repo -

- + +
-
-
- -
-
- -
-
+
+

Pumped cavity-mode with photon loss (Master equation)

+

+ 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. +

+

+

+ +
+

+

+

+

Source-code

+ +
+ +
+ +
+ +
+ +
+ +
+
+

+
+
+ +
+
+

Pumped cavity-mode with photon loss (Time-dependent Master equation)

+

+ 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 ). +

+

+

+

+

+

+

Source-code

+ +
+ +
+ +
+ +
+
+

+
+
+ +
+
+

Particle in harmonic trap (Schrödinger equation)

+

+ 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. +

+

+

+ +
+

+

+

+

Source-code

+ +
+ +
+ +
+ +
+
+

-
+

+
-
+
-
+
-
+
-
+
@@ -66,13 +164,13 @@
-
+
-
+
-
+
@@ -80,21 +178,41 @@
-
+
-
+
-
+
-
+
- +
+
+

+ About Benchmarking +

+

+ 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. +
  • +
+

+
+
@@ -105,4 +223,24 @@ // Open default tab document.getElementById("defaultOpen").click(); - + + \ No newline at end of file diff --git a/css/qojl.css b/css/qojl.css index 4c4c309..32e14f5 100644 --- a/css/qojl.css +++ b/css/qojl.css @@ -98,4 +98,30 @@ div.tab button.active { @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/header.html b/header.html index 878d931..fc5c638 100644 --- a/header.html +++ b/header.html @@ -19,6 +19,7 @@ + @@ -33,7 +34,7 @@ - +
From 26544f750deffa1199fc892bac56c21c4d732f7c Mon Sep 17 00:00:00 2001 From: Sebastian Kraemer Date: Thu, 13 Apr 2017 14:19:55 +0200 Subject: [PATCH 06/10] Change spacing between header and content. --- css/qojl.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/css/qojl.css b/css/qojl.css index 32e14f5..8e6dc5c 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 { From 317d0ac228f844dcc20466ac8447bfdb40d47fb5 Mon Sep 17 00:00:00 2001 From: Sebastian Kraemer Date: Thu, 13 Apr 2017 17:12:12 +0200 Subject: [PATCH 07/10] Border around benchmarks and extra box for example title. --- benchmarks.php | 205 +++++++++++++++++++++++++++++-------------------- css/qojl.css | 15 +++- 2 files changed, 134 insertions(+), 86 deletions(-) diff --git a/benchmarks.php b/benchmarks.php index b43dfaa..9532684 100644 --- a/benchmarks.php +++ b/benchmarks.php @@ -35,8 +35,10 @@
-

Pumped cavity-mode with photon loss (Master equation)

-

+

+

Pumped cavity-mode with photon loss (Master equation)

+
+
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 @@ -48,15 +50,12 @@ 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

+ + +

Source-code

@@ -69,45 +68,44 @@
-
-

+
+
-

Pumped cavity-mode with photon loss (Time-dependent Master equation)

-

+

+

Pumped cavity-mode with photon loss (Time-dependent Master equation)

+
+
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

- -
- -
- -
- -
+ +

Source-code

+ +
+
-

+ +
+ +
+
-

Particle in harmonic trap (Schrödinger equation)

-

+

+

Particle in harmonic trap (Schrödinger equation)

+
+
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 @@ -119,79 +117,118 @@ 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

+ +
+
-

-

-

-

Source-code

- -
- -
- -
- -
+ +
+
-

+
-

-
- -
-
- -
-
- -
-
- -
-
- +
+
+
+

Expectation values

+
+
+
+ +
+
+ +
+
+
+

Variances

+
+
+
+ +
+
+ +
+
+
+

Partial trace

+
+
+
+ +
+
+

-
- -
-
- -
-
- +
+
+
+

Coherent states

+
+
+
+ +
+
+
+

Q-function

+
+
+
+ +
+
+ +
+
+
-
- -
-
- -
-
- -
-
- +
+
+
+

Matrix-Matrix multiplication

+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+

diff --git a/css/qojl.css b/css/qojl.css index 8e6dc5c..0d37b93 100644 --- a/css/qojl.css +++ b/css/qojl.css @@ -78,10 +78,10 @@ div.tab button.active { } /* Style the tab content */ + .tabcontent { display: none; - padding: 6px 12px; - /*border: 1px solid #ccc;*/ + border: 1px solid #ccc; border-top: none; } @@ -90,6 +90,17 @@ div.tab button.active { animation: fadeEffect 0.5s; } +.tabcontentheader { + border: 1px solid #ccc; + border-top: none; + padding: 4px 15px; + background-color: #efefef; +} + +.tabcontentbody { + padding: 10px 15px; +} + @-webkit-keyframes fadeEffect { from {opacity: 0;} to {opacity: 1;} From cd1d6e7fd7e416c5abc2d7234e7855ee76b070d4 Mon Sep 17 00:00:00 2001 From: Sebastian Kraemer Date: Thu, 13 Apr 2017 17:16:21 +0200 Subject: [PATCH 08/10] Adjust border around benchmark example. --- css/qojl.css | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/css/qojl.css b/css/qojl.css index 0d37b93..dca5b4d 100644 --- a/css/qojl.css +++ b/css/qojl.css @@ -91,8 +91,7 @@ div.tab button.active { } .tabcontentheader { - border: 1px solid #ccc; - border-top: none; + border-bottom: 1px solid #ccc; padding: 4px 15px; background-color: #efefef; } From 59befa8e34ac90788b4ee8b91e0c5c1b98e27700 Mon Sep 17 00:00:00 2001 From: Sebastian Kraemer Date: Thu, 13 Apr 2017 17:19:07 +0200 Subject: [PATCH 09/10] Don't set font size for plots in css. Seems to lead to blurry text. --- css/qojl.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/css/qojl.css b/css/qojl.css index dca5b4d..f182471 100644 --- a/css/qojl.css +++ b/css/qojl.css @@ -36,7 +36,7 @@ canvas { } #features .fa-lg { - font-size: 72px; + /*font-size: 200px;*/ } #features #feature1 { From 193c30abae4596c3eb401eaa60ade6b698b529d0 Mon Sep 17 00:00:00 2001 From: Sebastian Kraemer Date: Thu, 13 Apr 2017 18:05:59 +0200 Subject: [PATCH 10/10] Change plot styles. --- benchmarks.php | 34 +++++++++++++++++++--------------- css/qojl.css | 6 ++++++ js/qojl.js | 11 +++++++++-- 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/benchmarks.php b/benchmarks.php index 9532684..5ef1a9a 100644 --- a/benchmarks.php +++ b/benchmarks.php @@ -52,7 +52,9 @@ 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

@@ -85,7 +87,9 @@ H(t)= ω c a a+η (a e i ω t + a e i ω t ).

Benchmark results

- +
+ +

Source-code

@@ -119,7 +123,7 @@ 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

@@ -143,10 +147,10 @@

- +
- +
@@ -154,10 +158,10 @@
- +
- +
@@ -165,7 +169,7 @@
- +
@@ -182,7 +186,7 @@
- +
@@ -190,10 +194,10 @@
- +
- +
@@ -210,18 +214,18 @@
- +
- +
- +
- +
diff --git a/css/qojl.css b/css/qojl.css index f182471..7e1d8f0 100644 --- a/css/qojl.css +++ b/css/qojl.css @@ -35,6 +35,12 @@ canvas { padding: 20px 0; } +div.singleplot { + /*margin: auto;*/ + margin-left: 20%; + margin-right: 20%; +} + #features .fa-lg { /*font-size: 200px;*/ } diff --git a/js/qojl.js b/js/qojl.js index 60139d4..79b234e 100644 --- a/js/qojl.js +++ b/js/qojl.js @@ -48,6 +48,9 @@ function chartconfig (data, charttitle) { title: { display: true, text: charttitle, + fontSize: 14, + fontStyle: 'normal', + fontColor: "#333333" }, scales: { xAxes: [{ @@ -55,13 +58,17 @@ 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: 'Elapsed Time' + labelString: 'Elapsed Time [seconds]', + fontSize: 14, + fontStyle: 'normal', } }]