program mj3
use utility
implicit none
integer :: i, j
integer, parameter ::
yd=50, xd=50
real :: g=6.67E-11, m=10,
rad=1, xi, yi, r, v
real :: dx=2, dy=2
character*30 :: prompt
= 'enter xi and yi'
real, dimension(xd) ::
x
real, dimension(yd) ::
y
real, dimension(xd,yd)
:: fx, fy, ftotal
print*, prompt
read (*,*) xi, yi
do i=1, xd
x(i)=dx*i
end do
do j=1,yd
y(j)=dy*j
end do
call write_asf(x,y,7)
call write_asf(x,y,8)
call write_asf(x,y,9)
do i=1, xd
do j=1,
yd
r=sqrt((x(i)-xi)**2+(y(j)-yi)**2)
If (r<rad) r=rad
v=(-g*m)/r**2
fx(i,j)=v*(x(i)-xi)/r
fy(i,j)=v*(y(j)-yi)/r
ftotal(i,j)=abs(v)
end
do
write
(7,*) fx(i,:)
write
(8,*) fy(i,:)
write
(9,*) ftotal(i,:)
end do
end program mj3
module utility
! this module contains subroutines for writing header files
contains
subroutine write_asf(col,row,unitnum)
! this subroutine writes ASCII special file headers
! col contains column values and row contains row values
! unitnum contains fortran unit number for output
real, dimension(:) :: col,row
integer :: unitnum
write (unit=unitnum,fmt=*) size(col),
size(row)
write (unit=unitnum,fmt=*) 0,0
write (unit=unitnum,fmt=*) row
write (unit=unitnum,fmt=*) col
end subroutine write_asf
end module utility
Back to Main Page |