From 843ee6d241482f0ac4a928451e13cc2ab2b1d436 Mon Sep 17 00:00:00 2001 From: Joseph Weston <joseph@weston.cloud> Date: Wed, 12 Jun 2019 14:04:06 +0200 Subject: [PATCH] explicitly set the random number generator in KPM tutorial Closes #279. --- .../figure/kernel_polynomial_method.py.diff | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/doc/source/code/figure/kernel_polynomial_method.py.diff b/doc/source/code/figure/kernel_polynomial_method.py.diff index 3ac53251..db1fd8aa 100644 --- a/doc/source/code/figure/kernel_polynomial_method.py.diff +++ b/doc/source/code/figure/kernel_polynomial_method.py.diff @@ -1,4 +1,4 @@ -@@ -1,219 +1,242 @@ +@@ -1,341 +1,367 @@ # Tutorial 2.8. Calculating spectral density with the Kernel Polynomial Method # ============================================================================ # @@ -135,7 +135,7 @@ #HIDDEN_BEGIN_kpm1 fsyst = make_syst().finalized() - spectrum = kwant.kpm.SpectralDensity(fsyst) + spectrum = kwant.kpm.SpectralDensity(fsyst, rng=0) #HIDDEN_END_kpm1 #HIDDEN_BEGIN_kpm2 @@ -157,7 +157,7 @@ def dos_integrating_example(fsyst): - spectrum = kwant.kpm.SpectralDensity(fsyst) + spectrum = kwant.kpm.SpectralDensity(fsyst, rng=0) #HIDDEN_BEGIN_int1 - print('identity resolution:', spectrum.integrate()) @@ -178,7 +178,7 @@ def increasing_accuracy_example(fsyst): - spectrum = kwant.kpm.SpectralDensity(fsyst) + spectrum = kwant.kpm.SpectralDensity(fsyst, rng=0) original_dos = spectrum() # get unaltered DoS #HIDDEN_BEGIN_acc1 @@ -215,13 +215,13 @@ #HIDDEN_BEGIN_op1 # identity matrix matrix_op = scipy.sparse.eye(len(fsyst.sites)) - matrix_spectrum = kwant.kpm.SpectralDensity(fsyst, operator=matrix_op) + matrix_spectrum = kwant.kpm.SpectralDensity(fsyst, operator=matrix_op, rng=0) #HIDDEN_END_op1 #HIDDEN_BEGIN_op2 # 'sum=True' means we sum over all the sites kwant_op = kwant.operator.Density(fsyst, sum=True) - operator_spectrum = kwant.kpm.SpectralDensity(fsyst, operator=kwant_op) + operator_spectrum = kwant.kpm.SpectralDensity(fsyst, operator=kwant_op, rng=0) #HIDDEN_END_op2 plot_dos([ @@ -234,7 +234,7 @@ #HIDDEN_BEGIN_op3 # 'sum=False' is the default, but we include it explicitly here for clarity. kwant_op = kwant.operator.Density(fsyst, sum=False) - local_dos = kwant.kpm.SpectralDensity(fsyst, operator=kwant_op) + local_dos = kwant.kpm.SpectralDensity(fsyst, operator=kwant_op, rng=0) #HIDDEN_END_op3 #HIDDEN_BEGIN_op4 @@ -264,7 +264,8 @@ # 'num_vectors' can be unspecified when using 'LocalVectors' local_dos = kwant.kpm.SpectralDensity(fsyst, num_vectors=None, vector_factory=vector_factory, - mean=False) + mean=False, + rng=0) energies, densities = local_dos() plot_dos([ ('A sublattice', (energies, densities[:, 0])), @@ -277,7 +278,7 @@ def vector_factory_example(fsyst): - spectrum = kwant.kpm.SpectralDensity(fsyst) + spectrum = kwant.kpm.SpectralDensity(fsyst, rng=0) #HIDDEN_BEGIN_fact1 # construct a generator of vectors with n random elements -1 or +1. n = fsyst.hamiltonian_submatrix(sparse=True).shape[0] @@ -286,7 +287,8 @@ yield np.rint(np.random.random_sample(n)) * 2 - 1 custom_factory = kwant.kpm.SpectralDensity(fsyst, - vector_factory=binary_vectors()) + vector_factory=binary_vectors(), + rng=0) #HIDDEN_END_fact1 plot_dos([ ('default vector factory', spectrum()), @@ -302,8 +304,8 @@ def rho_alt(bra, ket): return np.vdot(bra, ket) - rho_spectrum = kwant.kpm.SpectralDensity(fsyst, operator=rho) - rho_alt_spectrum = kwant.kpm.SpectralDensity(fsyst, operator=rho_alt) + rho_spectrum = kwant.kpm.SpectralDensity(fsyst, operator=rho, rng=0) + rho_alt_spectrum = kwant.kpm.SpectralDensity(fsyst, operator=rho_alt, rng=0) #HIDDEN_END_blm plot_dos([ @@ -321,11 +323,13 @@ # component 'xx' s_factory = kwant.kpm.LocalVectors(fsyst, where) cond_xx = kwant.kpm.conductivity(fsyst, alpha='x', beta='x', mean=True, - num_vectors=None, vector_factory=s_factory) + num_vectors=None, vector_factory=s_factory, + rng=0) # component 'xy' s_factory = kwant.kpm.LocalVectors(fsyst, where) cond_xy = kwant.kpm.conductivity(fsyst, alpha='x', beta='y', mean=True, - num_vectors=None, vector_factory=s_factory) + num_vectors=None, vector_factory=s_factory, + rng=0) energies = cond_xx.energies cond_array_xx = np.array([cond_xx(e, temperature=0.01) for e in energies]) @@ -339,7 +343,8 @@ # ldos s_factory = kwant.kpm.LocalVectors(fsyst, where) spectrum = kwant.kpm.SpectralDensity(fsyst, num_vectors=None, - vector_factory=s_factory) + vector_factory=s_factory, + rng=0) plot_dos_and_curves( (spectrum.energies, spectrum.densities * 8), -- GitLab