【问题标题】:Fortran "Error: Incompatible ranks 0 and 1 in assignment"Fortran“错误:分配中不兼容的等级 0 和 1”
【发布时间】:2014-03-05 00:53:21
【问题描述】:

我正在使用地球物理数据编写一个线性逆程序。尽管我以前用 Fortran 创建了与地球物理问题相关的程序,但我还是 Fortran 编程的新手。

我在编译时遇到错误:“错误:分配中不兼容的等级 0 和 1”。我知道这与长度不一致有关,但我一直无法解决。我想为 Prism_r(i,pp) 的行分配先前计算的值,即 r1-r4。错误如下:

Prism_r(i,pp)=(/ r1(pp),r2(pp),r3(pp),r4(pp) /)                 
    1
Error: Incompatible ranks 0 and 1 in assignment at (1) 

以下是相关代码:

real, dimension(0:P-1) :: r1, r2, r3, r4    
real, dimension(0:D-1,0:3) ::Prism_r, Prism_theta
.....
do i=0,D-1
    do pp=0,P-1
    r1(pp)=sqrt((x2+2*PP-0.2*i)**2+z1**2)
    r2(pp)=sqrt((x2+2*PP-0.2*i)**2+z2**2)
    r3(pp)=sqrt((x1+2*PP-0.2*i)**2+z2**2)
    r4(pp)=sqrt((x1+2*PP-0.2*i)**2+z1**2)
    Prism_r(i,pp)=(/ r1(pp),r2(pp),r3(pp),r4(pp) /)
    enddo  
enddo

当我将 Prism_r 注释掉时,计算正在正确执行,但它不会为其分配值。有人对我需要如何正确定义 r1-r4 以便将它们的值分配给 Prism_r 有建议吗?

【问题讨论】:

  • 缺少维度吗? (Prism_r(0:d-1,0:P-1,0:3)??

标签: fortran


【解决方案1】:

它实际上与长度不一致无关,而是与排名不一致,正如错误消息所说的那样。

Prism_r(i,pp) 是数组的单个元素:它是一个标量,即等级 0。

(/ r1(pp),r2(pp),r3(pp),r4(pp) /) 是 rank 1 数组(长度为 4)。

在 fortran 中,您不能将数组分配给标量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多