&安培;对Fortran中的长方程不起作用

时间:2014-02-14 21:22:16

标签: fortran

任何人都可以在Fortran中找出这些行的错误:

if (i==1) then
    u(i,j+1)=u(i,j)-c*dt/2/dx*(u(i+1,j)-u(imax-1,j)) &
    + (c*c*dt*dt)/2/dx/dx*(u(i+1,j)-2*u(i,j)+u(imax-1,j))

此处有更多代码:

      select case (case_no)
C.. 1--Lax Wendroff one step scheme
      case (1)
          write (6,*) 'Entrance for the Lax-Wendroff one step method'
          t=dt            
          do while (t<=18)
              do i=1,41
                  if (i==1) then
                      u(i,j+1)=u(i,j)-c*dt/2/dx*(u(i+1,j)-u(imax-1,j))    &
                      + c*c*dt*dt/2/dx/dx*(u(i+1,j)-2*u(i,j)    &
                      + u(imax-1,j))
                  else if (i==41) then
                      u(i,j+1)=u(i,j)-c*dt/2/dx*(u(i+1,j)-u(i-1,2))    &  
                      + c*c*dt*dt/2/dx/dx*(u(i+1,j)-2*u(i,j)    &
                      + u(i-1,2))
                  else 
                      u(i,j+1)=u(i,j)-c*dt/2/dx*(u(i+1,j)-u(i-1,j))    & 
                      + c*c*dt*dt/2/dx/dx*(u(i+1,j)-2*u(i,j)    & 
                      +u(i-1,j))
                  end if 
                  j=j+1
                  t=t+dt
              end do
          end do

公式太长了,我想用'&amp;'把它分成两行。但编译说 1.'(i,j + 1)'的可分类陈述 2.“+”

中名称中的无效字符

我是Fortran的新手。非常感谢。

1 个答案:

答案 0 :(得分:6)

您有固定的表单源功能(您在第一列中使用C来启动注释)但是您要求自由表单行继续。您需要决定使用哪种源表单(自由表单最好不需要与古代代码保持一致),告诉编译器您以适当的方式使用自由格式(通常使用.f90文件扩展名) )然后确保注释样式,标记分割和行继续方面与该表单一致。