<div dir="ltr">Dear QE developers and users,<br><br>I've been performing Born-Oppenheimer molecular dynamics (BOMD) calculations for hcp Fe at high-PT conditions using Quantum Espresso (pw.x, calculation= 'md'). For the thermostats, I am testing stochastic velocity rescaling (svr) and Andersen, as they are the only ones (in QE) that generate canonical ensembles. For these two thermostats, random numbers are generated in each time step. I find, however, that in restart calculations (restart_mode= 'restart'), the random numbers are not generated properly. In each restart calculation, the same sequence of random numbers are generated, as shown in detail in the next few paragraphs. Consequently, the calculation results (e.g pressure, temperature) exhibit a periodic behavior, with a period same as the length of each restart calculation. My question is: Can we avoid this problem by properly setting the random seed in restart calculations? If so, how to do that? (For restart_mode= 'from_scratch', such a problem does not occur, as also shown in the next few paragraphs).<br><br>Note: To print out the random numbers generated in each time step, a few more lines (write statements) have to be added to the file PW/src/dynamics_module.f90. Also, to obtain lots of data within a short time, I use fcc Si (8-atom cells) to run extensive tests. For these tests, each run consists of 12000 time steps divided into 12 rounds of calculations: A from_scratch round (steps 1–1000) followed by 11 restart rounds (steps 1001–2000, 2001–3000, ..., 11001–12000).<br><br>For the 'svr' thermostat, random numbers (R1, R2,..., R_Nf) from gaussian distribution are generated in teach time step. In the from_scratch calculation (steps 1–1000), the random numbers generated in steps 1–4 are are as below:<br><br>     Entering Dynamics:    iteration =     1<br>     rr**2 = R1**2 =  2.2273<br>     sum_of_gaussians2 = R2**2+...+R_Nf**2 = 23.3447<br>     Entering Dynamics:    iteration =     2<br>     rr**2 = R1**2 =  0.0441<br>     sum_of_gaussians2 = R2**2+...+R_Nf**2 = 17.0921<br>     Entering Dynamics:    iteration =     3<br>     rr**2 = R1**2 =  0.6032<br>     sum_of_gaussians2 = R2**2+...+R_Nf**2 = 16.4800<br>     Entering Dynamics:    iteration =     4<br>     rr**2 = R1**2 =  1.2989<br>     sum_of_gaussians2 = R2**2+...+R_Nf**2 = 13.2204<br><br>Next, in the restart calculation for steps 1001–2000, the random numbers generated in steps 1001–1004 are are as below:<br><br>     Entering Dynamics:    iteration =  1001<br>     rr**2 = R1**2 =  0.0008<br>     sum_of_gaussians2 = R2**2+...+R_Nf**2 = 18.0810<br>     Entering Dynamics:    iteration =  1002<br>     rr**2 = R1**2 =  0.8306<br>     sum_of_gaussians2 = R2**2+...+R_Nf**2 = 19.9568<br>     Entering Dynamics:    iteration =  1003<br>     rr**2 = R1**2 =  1.0171<br>     sum_of_gaussians2 = R2**2+...+R_Nf**2 = 14.5561<br>     Entering Dynamics:    iteration =  1004<br>     rr**2 = R1**2 =  0.0605<br>     sum_of_gaussians2 = R2**2+...+R_Nf**2 = 28.3579<br><br>Next, in the restart calculation for steps 2001–3000, the random numbers generated in steps 2001–2004 are are as below:<br><br>     Entering Dynamics:    iteration =  2001<br>     rr**2 = R1**2 =  0.0008<br>     sum_of_gaussians2 = R2**2+...+R_Nf**2 = 18.0810<br>     Entering Dynamics:    iteration =  2002<br>     rr**2 = R1**2 =  0.8306<br>     sum_of_gaussians2 = R2**2+...+R_Nf**2 = 19.9568<br>     Entering Dynamics:    iteration =  2003<br>     rr**2 = R1**2 =  1.0171<br>     sum_of_gaussians2 = R2**2+...+R_Nf**2 = 14.5561<br>     Entering Dynamics:    iteration =  2004<br>     rr**2 = R1**2 =  0.0605<br>     sum_of_gaussians2 = R2**2+...+R_Nf**2 = 28.3579<br><br>Next, in the restart calculation for steps 3001–4000, the random numbers generated in steps 3001–3004 are are as below:<br><br>     Entering Dynamics:    iteration =  3001<br>     rr**2 = R1**2 =  0.0008<br>     sum_of_gaussians2 = R2**2+...+R_Nf**2 = 18.0810<br>     Entering Dynamics:    iteration =  3002<br>     rr**2 = R1**2 =  0.8306<br>     sum_of_gaussians2 = R2**2+...+R_Nf**2 = 19.9568<br>     Entering Dynamics:    iteration =  3003<br>     rr**2 = R1**2 =  1.0171<br>     sum_of_gaussians2 = R2**2+...+R_Nf**2 = 14.5561<br>     Entering Dynamics:    iteration =  3004<br>     rr**2 = R1**2 =  0.0605<br>     sum_of_gaussians2 = R2**2+...+R_Nf**2 = 28.3579<br><br>Clearly, the same sequence of random numbers are generated in all restart rounds (steps 1001–2000, 2001–3000, 3001–4000, ..., etc.), while the from_scratch round (steps 1–1000) is an exception. I am thus wondering how to properly generate/seed the random numbers in restart calculations?<br><br>A few more remarks:<br>(1) I have done this test on different facilities at different institutes. The same pattern persists.<br>(2) For Andersen thermostat, the same pattern persists: In the restart calculations, at the same respective time steps (e.g. steps 1001, 2001, 3001, ...), the same atoms are "randomly" chosen to interact with the heat bath.<br><br>Finally, my understanding is that in Quantum Espresso, generation and seed of random numbers are controlled by Modules/random_numbers.f90 and a subroutine set_random_seed(). To properly set the random seed in restart calculations, perhaps the subroutine set_random_seed() should be called somewhere? (Probably not in dynamics_module.f90, as we do not want to reseed the random number in every time step...)<br><br>Any suggestions and advice are appreciated. Thank you very much for the help!!<br><br><br>Best regards,<br><br><br>Han Hsu<br>Department of Physics<br>National Central University (Taiwan)<font color="#888888"><br class="gmail-Apple-interchange-newline"></font><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr">===============================<br> Han Hsu (徐翰) <br> Associate Professor<br> Department of Physics<div> National Central University</div><div> Taoyuan 32001, Taiwan<br> Email: <a href="mailto:hanhsu@ncu.edu.tw" target="_blank">hanhsu@ncu.edu.tw</a></div><div> Web: <a href="https://sites.google.com/site/hanhsuphys/" target="_blank">sites.google.com/site/hanhsuphys</a><br> Tel: +886-3-422-7151 ext 65303<br> Fax: +886-3-425-1175<br>===============================</div></div></div></div></div></div></div></div></div></div></div>