GRAVITATIONAL POTENTIAL
contact: reibaretti2004@yahoo.com
c gravitational potential calculations
c observation point P (rp, thetap, phip)
rho(r, theta, phi)=1.
pi=2.*asin(1.)
rp=2.
thetap=pi/2.
phip=0.
r0=0.
rlimit=1.
theta0=0.
theta2=pi
phi0=0.
phi2=2.*pi
nstep=20
dr=(rlimit-r0)/float(nstep)
dtheta=(theta2-theta0)/float(nstep)
dphi=(phi2-phi0)/float(nstep)
sum=0.
do 10 ir=1,nstep
r=dr*float(ir)
do 10 itheta=1,nstep
theta=dtheta*float(itheta)
do 10 iphi=1,nstep
phi=dphi*float(iphi)
sum=sum+rho(r-dr/2.,theta-dtheta/2.,phi-dphi/2.)*(r-dr/2.)**2*
$sin(theta-dtheta/2.)
10 continue
amass=sum*dr*dtheta*dphi
c amtest massa for constant density rho=1.
amtest=4.*pi/3.
print*,'masa (num) , amtest=',amass, amtest
c computes the potential at observation point (P)
sum=0.
do 20 ir=1,nstep
r=dr*float(ir)
do 20 itheta=1,nstep
theta=dtheta*float(itheta)
do 20 iphi=1,nstep
phi=dphi*float(iphi)
cosgam=sin(theta-dtheta/2.)*cos(phi-dphi/2.)*sin(thetap)*cos(phip)
$+sin(theta-dtheta/2.)*sin(phi-dphi/2.)*sin(thetap)*sin(phip)
$+cos(theta-dtheta/2.)*cos(thetap)
denom=sqrt(rp**2+r**2-2.*rp*r*cosgam)
sum=sum+rho(r-dr/2.,theta-dtheta/2.,phi-dphi/2.)*(r-dr/2.)**2*
$sin(theta-dtheta/2.)/denom
20 continue
sum=sum*dr*dtheta*dphi
print*,'potnum, sphericalpot=', sum , amass/rp
stop
end