任何人都可以在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的新手。非常感谢。
答案 0 :(得分:6)
您有固定的表单源功能(您在第一列中使用C来启动注释)但是您要求自由表单行继续。您需要决定使用哪种源表单(自由表单最好不需要与古代代码保持一致),告诉编译器您以适当的方式使用自由格式(通常使用.f90文件扩展名) )然后确保注释样式,标记分割和行继续方面与该表单一致。