카테고리 없음

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 성분