카테고리 없음
TOV 방정식
조지 가모프
2024. 8. 24. 00:29
program tov
integer i,j,k !================반복문 변수이다
real c,b,d, flo
real dens, h
real a(513) ,g(513) !======================== a는 lamda b는 nu 이다
dens=0.00128
h=1/513.0
do i=1,513,1
a(i)=0.0
g(i)=0.0
end do
!======================================= 수치해법의 초기조건
do j=1,10000,1
do i=2,255,1
c=a(i)
b=a(i+1)
d=a(i-1)
!======================= 수치해석 메인코드
a(i)=a(i)+(a(i+1)-2*a(i)+a(i-1)+2*(b-d)/(i)+((b-d)*(b-d))*0.5&
+h*h*4*3.14*exp(2*c)*64*((1-i*h)**(-4))*(dens*(1-4*i*i*h*h)&
+99*dens**2*(1-4*i*i*h*h)**2))/(2.0-h*h*8.0*3.14*exp(2*c)*64*((1-&
i*h)**(-4))*(dens*(1-4*i*i*h*h)+99*dens**2*(1-4*i*i*h*h)**2))
!============================수치해석 메인코드
end do
do k=256,512,1
c=a(k)
b=a(k+1)
d=a(k-1)
a(k)=a(k)+( a(k+1)-2*a(k)+a(k-1)+2*(b-d)/(k)+(b-d)*(b-d)/2.0)/2.0
end do
a(513)=0
a(1)=a(1)+2/3*(-3/2*a(1)+2*a(2)-1/2*a(2))
end do
!====================================== 여기서부터는 nu factor 계산하기
do j=1,10000,1
do i=2,512,1
if(i<255) then
c=g(i)
b=g(i+1)
d=g(i-1)
flo=a(i)
g(i)=g(i)+(g(i+1)-2*g(i)+g(i-1)+2*(b-d)/i+(b&
-d)**2+(b-d)*(a(i+1)&
-a(i-1))-h*h*4*3.14*64*(1-&
i*h)**(-4)*exp(flo)*(dens*(1-4*i*i*h*h)+202*(dens*dens)*(1&
-4*i*i*h*h)))/(2&
+h*h*4*3.14*64*(1&
-i*h)**(4)*exp(flo)*(dens*(1&
-4*i*i*h*h)+202*(dens*dens)*(1-4*i*i*h*h)))
else if(i>=255) then
c=g(i)
b=g(i+1)
d=g(i-1)
flo=a(i)
g(i)=g(i)+(g(i+1)-2*g(i)+g(i-1)+2*(b-d)/i+(b-d)**2+(b-d)*(a(i+1)&
-a(i-1)))/2.0
end if
end do
g(513)=0
g(1)=a(1)+2/3*(-3/2*g(1)+2*g(2)-1/2*g(2))
end do
open(unit=1,file='oppenheimer.txt',status='replace')
do i=1,513,1
write(1,*) h*i ,g(i)
end do
close(1)
end program tov
-exp(nu)dt^2의 nu 성분
exp(lamda)dr^2 의 radial 성분