program particle_in_box_PBC integer pgopen write(*,*)'What is initial vx?' read(*,*) vx write(*,*)'What is initial vy?' read(*,*) vy x_range = 10.0 y_range = 10.0 x = 5.0 y = 5.0 if( pgopen('/xwin') <= 0 ) stop c call pgenv(0.0,x_range,0.0,y_range,0,-1) call pgenv(-0.15,x_range+0.15,-0.15,y_range+0.15,0,-1) call pgsfs(2) dt = 0.00001 do i =1, 1000000 c if(x>x_range) vx = (-1)*vx c if(x<0.0) vx = (-1)*vx c if(y>y_range) vy = (-1)*vy c if(y<0.0) vy = (-1)*vy x = x + vx * dt y = y + vy * dt if(x>x_range) x = x - x_range if(x<0.0) x = x + x_range if(y>y_range) y = y - y_range if(y<0.0) y = y + y_range call pgbbuf call pgsci(0) call pgcirc(x_old,y_old,0.1) call pgsci(1) call pgcirc(x,y,0.1) call pgebuf x_old = x y_old = y enddo call pgclos end