24小时热门版块排行榜    

CyRhmU.jpeg
查看: 259  |  回复: 0

zmoyanyu

铜虫 (正式写手)

[求助] 麻烦大家帮忙看看这个程序错在哪里了

program bhs
!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++声明
implicit none
integer,parameter::Num=10        !能量的格点数
integer,parameter::Num1=100      !位置的格点数
real::bhs(Num,Num1)                !存放波函数的数组
real::bhs1(Num,Num1)                !存放波函数的中间过渡数组
real::energy(Num)                   !存放能量本征值的数组
integer::n                         !既是本征态量子数,又是能量循环指标
integer::c                          ! denote 2
real::w                             !谐振子的振动频率
real::x                             !表示位置的变量
real::xx                            !位置的最大值
real::dx                            !数值模拟的位置间隔
real::kjc(1)                        !k的阶乘
real::efkjc(1)                      !二分之k的阶乘
integer::j                          !位置循环指标
integer::i                          !厄密多项式项数循环指标
integer::k                          !n取一定值时,波函数的项数由第项叠加至第n项的循环指标
integer::g                          !用来求k的阶乘,以及二分之k的阶乘的循环指标
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++赋值
xx=4.0
dx=xx/Num1
w=2.0
c=2

open(unit=60,file='bhs.txt')
open(unit=70,file='energy.txt')

!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++运算
! do j=1,Num1=100
!x=j*dx
!bhs(0,j)=exp((-1.0/2.0)*x**2)
!end do

energy(0)=(1.0/2.0)*w

do j=1,Num1   !++++++++++++++++++++++++++++++++++++++++++++++++++++++++the loop of station
    energy(n)=(n+1.0/2.0)*w
    x=j*dx

do n=1,Num     !++++++++++++++++++++++++++++++++++++++++++++++++++++++++the loop of energy
  if (n%c==0) then
    do k=1,n    !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++the loop of k
       do g=1,k  !++++++++++++++++++++++++++++++++++++++++++++++++++++++++the loop of g
          kjc(0) =kjc(0)*g
          efkjc(0)=efkjc(0)*(g/2.0)
       end do     !+++++++++++++++++++++++++++++++++++++++++++++++++++++++end g
       bhs1(k,j)=exp((-1.0/2.0)*x**2)*((-1)**(n/2.0)*kjc(0)*(2x)**(n-2*(n/2.0))/efkjc(0))
       bhs1(n,j)=bhs1(n,j)+bhs1(k,j)
       kjc(0)=0.0
       efkjc(0)=0.0
       end do      !++++++++++++++++++++++++++++++++++++++++++++++++++++++end k
       bhs(n,j)=bhs1(n,j)+exp((-1.0/2.0)*x**2)
       end if
   
    !bhs(0,j)=exp((-1.0/2.0)*x**2)
   
   if (n%c==1)then
    do k=1,n
       do g=1,k
          kjc(0)=kjc(0)*g
          efkjc(0)=efkjc(0)*(g/2.0)
       end do
          bhs1(k,j)=exp((-1.0/2.0)*x**2)*((-1)**((n-1)/2.0)*kjc(0)*(2x)**(n-2*((n-1)/2.0))/efkjc(0))
          bhs1(n,j)=bhs1(n,j)+bhs(k,j)
          kjc(0)=0.0
          efkjc(0)=0.0
       end do
        bhs(n,j)=bhs1(n,j)+exp((-1.0/2.0)*x**2)
    end if
   
    end do  !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++end the loop of energy
    end do  !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++end the loop of station
   
   
    do n=1,Num
    do j=1,Num1
    write(60,*)bhs(n,j)
    write(70,*)energy(n)
   
    end do
    end do
    close(60)
    close(70)
    end program
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 coolhaha 的主题更新
信息提示
请填处理意见