- #1
maverick280857
- 1,789
- 5
Hi,
So I'm trying to solve the 2D Ising Model using a simple Monte Carlo algorithm, for small square lattices, imposing periodic boundary conditions. Before I compute any thermodynamic quantities though, I want to study the energetics of the system with only nearest-neighbour interactions.
I want to visualize the system at every iteration of the Monte Carlo loop. The idea is to store the state of the lattice in a matrix, with each site storing the value +1 for spin up, and -1 for spin down.
A computer program I've written in C with a friend generates a data file with the state of the matrix. I then use a pipe to call gnuplot from within this program, to plot the file.
However, I notice that the plot window appears only after the pipe is closed -- presumably it is then that gnuplot is actually executed the first time, with all the arguments sent through the pipe. This means the plot window does not show up at a specific time of your choice, and in fact shows up at the end of the program.
Now, I want to visualize the matrix at every iteration, so for that, I need to call gnuplot (through the same pipe pointer) in every iteration, so that the existing plot is updated. How can this be done?
If I just naively include a plot command (through fprintf), then the plot shows up for the first time after some 20 or 30 iterations (depending on the size of the lattice).
Thanks in advance!
So I'm trying to solve the 2D Ising Model using a simple Monte Carlo algorithm, for small square lattices, imposing periodic boundary conditions. Before I compute any thermodynamic quantities though, I want to study the energetics of the system with only nearest-neighbour interactions.
I want to visualize the system at every iteration of the Monte Carlo loop. The idea is to store the state of the lattice in a matrix, with each site storing the value +1 for spin up, and -1 for spin down.
A computer program I've written in C with a friend generates a data file with the state of the matrix. I then use a pipe to call gnuplot from within this program, to plot the file.
However, I notice that the plot window appears only after the pipe is closed -- presumably it is then that gnuplot is actually executed the first time, with all the arguments sent through the pipe. This means the plot window does not show up at a specific time of your choice, and in fact shows up at the end of the program.
Now, I want to visualize the matrix at every iteration, so for that, I need to call gnuplot (through the same pipe pointer) in every iteration, so that the existing plot is updated. How can this be done?
If I just naively include a plot command (through fprintf), then the plot shows up for the first time after some 20 or 30 iterations (depending on the size of the lattice).
Thanks in advance!