
This record contains the code needed to reproduce the main results of the papers [1] Nonreciprocal Ising model, Yael Avni, Michel Fruchart, David Martin, Daniel Seara, Vincenzo Vitelli, PRL (2025) [ arXiv:2311.05471 ]and[2] Dynamical phase transitions in the nonreciprocal Ising model, Yael Avni, Michel Fruchart, David Martin, Daniel Seara, Vincenzo Vitelli [ arXiv:2409.07481 ]. All code is released under the 2-clause BSD license (see LICENSE), except the files pcg_basic.h and pcg_basic.c (Apache 2.0, see details in the file). 1. Monte-Carlo simulations The code for Monte-Carlo simulations of the nonreciprocal Ising model is contained in nr_ising_2D.c and nr_ising_3D.c for 2D and 3D systems, respectively. The 3D code is parallelized using MPI, so you need to have it installed and working to compile it (to test the code, this can be done using conda by installing openmpi and openmpi-mpicc). The code can then be compiled by running make in the containing folder. You can then run ./nr_ising_2D and mpiexec ./nr_ising_3D. The parameters in the code are adjusted to produce a quick execution time and should be modified to get meaningful results. Random numbers are generated using the C minimal implementation of the PCG random number generator available athttps://www.pcg-random.org/using-pcg-c-basic.html Both codes output the synchronization order parameter (R or r) and the phase-space angular momentum (S) [plotted in Figs. 9 and 12 of [2], respectively in 2D and 3D]. Other averages can be computed by paralleling the computation of the magnetization. You can also output the current state of the system with a for loop, for instance in 2Dfor (i = 0; i < N; ++i) { for (j = 0; j < N; ++j) { printf("%d, %d\n", stateA[i][j], stateB[i][j]); }}will output data that can then by read e.g. in python by doing something likeoutput = (the output of the snippet above)data = np.array([[{"1":1, "-1":-1}[x.strip()] for x in line.split(",")] for line in output.strip().splitlines()])L = int(np.sqrt(data.shape[0]))stateA = data[:,0].reshape(L,L)stateB = data[:,1].reshape(L,L) 2. Computation of critical exponents The computation of critical exponents is done in the jupyter notebook critical_exponents.ipynb. It has been tested with Python 3.11.5, numpy 1.26.0, and scipy 1.11.3.The data corresponding to Figs. 14 and 15 of [2] (obtained using the Monte-Carlo described §1) is provided in the data folder. 3. Phase portrait of the mean-field system The phase portrait of the mean-field dynamical system is visualized in the Mathematica notebook flow_mean_field.nb (tested with Mathematica 12.1).
| selected citations These citations are derived from selected sources. This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | 1 | |
| popularity This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network. | Average | |
| influence This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | Average | |
| impulse This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network. | Average |
