Fortraneries/GravityField/realfield.f90

43 lines
1.0 KiB
Fortran
Raw Normal View History

2022-11-28 13:47:44 +01:00
!
! project "gravity field"
!
!-----------------------------------------------------------------------
module realfield
implicit none
!-----------------------------------------------------------------------
type massbody
real :: posx, posy
real :: mass
integer :: serial
end type
!-----------------------------------------------------------------------
contains
function compute_gravity(ix, iy, body)
integer, intent(in) :: ix, iy
type(massbody), intent(in) :: body
real :: compute_gravity
real :: rx, ry, dist
rx = real(ix) - body%posx
ry = real(iy) - body%posy
dist = sqrt( (rx*rx) + (ry*ry) )
if (dist .LT. 0.15) then
write (0, *) "dist too small ", dist
compute_gravity = 0e0
endif
compute_gravity = body%mass * (dist ** 2)
end function
!-----------------------------------------------------------------------
!-----------------------------------------------------------------------
end module