hi everybody,
can u pls help me parallelize the following code by inserting MPI calls. There are 2 DO loops that I am trying to parallelize but I am confused a bit. thanks for your time.
ballo.
-------------------------------------------------------------------------------------------------------
subroutine mpi_code_f77
integer step,deltim,dmptim,iseed
parameter (n=4096)
parameter (nlayer=128)
common /control/ seth,setl,dt,yxrat,yxrat2,rnd,delr,
& nsp1,nstep,mcstep,ndump,deltim,dmptim,step,iseed
common /posvel/ isp(n),rx(n),ry(n),rz(n),
& vx(n),vy(n),vz(n),ax(n),ay(n),az(n)
common /potential/ s11,s12,s22,
& rc11,rc11sq,rc12,rc12sq,rc22,rc22sq,
& ep11,ep12,ep22,xm(2),grav
dt2=dt/2.0d0
do 1000 i=1,n
if (rx(i).gt.0.5) then
ax(i)=ax(i)-grav
else
ax(i)=ax(i)+grav
endif
vx(i)=vx(i)+ax(i)*dt2
vy(i)=vy(i)+ay(i)*dt2
vz(i)=vz(i)+az(i)*dt2
rx(i)=rx(i)+vx(i)*dt
if (rx(i).ge.1.0d0) rx(i)=rx(i)-1.0d0
if (rx(i).lt.0.0d0) rx(i)=rx(i)+1.0d0
ry(i)=ry(i)+vy(i)*dt
if (ry(i).ge.yxrat) ry(i)=ry(i)-yxrat
if (ry(i).lt.0.0d0) ry(i)=ry(i)+yxrat
rz(i)=rz(i)+vz(i)*dt
if (rz(i).ge.yxrat) rz(i)=rz(i)-yxrat
if (rz(i).lt.0.0d0) rz(i)=rz(i)+yxrat
1000 continue
call force
do 1100 i=1,n
vx(i)=vx(i)+ax(i)*dt2
vy(i)=vy(i)+ay(i)*dt2
vz(i)=vz(i)+az(i)*dt2
1100 continue
return
end
---------------------------------------------------------------------------------------------------------
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
|