! ! project "gravity field" ! !----------------------------------------------------------------------- module realfield implicit none !----------------------------------------------------------------------- ! definition of structures ! type massbody real :: posx, posy real :: mass = 1.0 integer :: serial = 666 end type !----------------------------------------------------------------------- contains !----------------------------------------------------------------------- function compute_gravity(fx, fy, body) real, intent(in) :: fx, fy type(massbody), intent(in) :: body real :: compute_gravity real :: rx, ry, dist rx = fx - body%posx ry = fy - body%posy dist = sqrt( (rx*rx) + (ry*ry) ) if (dist .LT. 4.50) then write (0, *) "dist too small ", dist compute_gravity = 0e0 endif compute_gravity = body%mass / (dist ** 2) end function !----------------------------------------------------------------------- !----------------------------------------------------------------------- end module