错误:在ux = cos(theta)sin(phi)中的fortran中的无法分类的语句

时间:2014-11-29 11:53:35

标签: fortran

我想在FORTRAN中编写一个程序,它计算距离探测器一定距离的准时光源的探测效率。光盘探测器被认为是完美的:即光子吸收落在它上面的所有东西。所以我在这里工作3D,我使用ux,uy和uz使用球面坐标系随机引导光子;

效率与探测器半径

以下是准时来源的简单代码:

program sourceponc

integer i,N
real  x,y,z,eff,count,Dds,rd,ux,uy,uz,t

count=0
do i=1,N
  theta = acos(1-2*rand())
  phi = 2*pi*rand()
  ux=cos(theta)sin(phi)
  uy=sin(theta)sin(phi)
  uz=cos(theta)

  t=Dds/uz
  x=ux*t
  y=uy*t

  if(sqrt(x**2+y**2+z**2).le.1)then
    count=count+1
  endif
end do 

eff=count/N
print*,eff

end

编译时我一直收到这些错误:

sourceponc.f90:11:

ux=cos(theta)sin(phi)
1
Error: Unclassifiable statement at (1)
sourceponc.f90:12:

uy=sin(theta)sin(phi)
1
Error: Unclassifiable statement at (1)

有人可以帮我解决以下问题吗?

1 个答案:

答案 0 :(得分:0)

在提出下一个问题之前,请先花点时间了解如何在问题中格式化代码和其他文字。调查文本框上方的图标,首先需要的图标是 {}

好的,所以这个

ux=cos(theta)sin(phi)  

看起来像数学中的轻率翻译。尝试

ux=cos(theta)*sin(phi)  

大多数编程语言都不会自动乘以相邻的术语,因此必须更准确地告诉他们要做什么。编译器告诉你该语句是不可分类的,因为它无法解析它,该语句在语法上不是有效的Fortran。

PS在英语中,你应该写点源而不是准时源。准时已经获得了按时在约定或正确的时间做某事的含义。