2 Dimensional Gravitational Forces
 
 
Here we are looking at the gravitational forces exerted by an object on its surrounding 2 dimensional space.  The data used for this diagram was produced by program mj3 which is written in Fortran 90. This diagram was made by the program Transform. 
 
Equations Visualized: 
  • Fx (x,y) = ((-G*Mc)*(x-xc))/r3 
  • Fy (x,y) = ((-G*Mc)*(y-yc))/r3
  • The familiar formula,  F = -(GMcMt)/r2, is the magnitude (strength) of the force (exerted by the center on the test mass)
"Fx" is force in x direction/test mass, "Fy" is force in y direction/test mass, where "r" = sqrt[(x-xc)2+(y-yc)2] is the distance between the center and a test mass, "xc" and "yc" are the coordinates of the center, "x" and "y" are the coordinates of the test mass, "G" is the universal gravitational constant, "Mc" is the mass at the center, "Mt" is the test mass
 
 
This diagram shows the gravitational force exerted by the center point (Saturn) on the surrounding 2 dimesional space.  The size of the arrows represents the magnitude (strength) of the force.  The direction of the arrows shows the direction of the force.  The "y" axis shows the vertical distance in meters (m).  The "x" axis shows the horizontal distance in meters.  The key shows the magnitude of the large arrow in Newtons.  The graphic of Saturn was imported from a clip art program.
 
 
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