2014-03-05 2 views
2

지구 물리학 데이터를 사용하여 선형 역 프로그램을 작성했습니다. 필자는 Fortran에서 지구 물리학적인 문제와 관련된 프로그램을 만들었지 만 Fortran에서 프로그래밍하는 것은 처음입니다.포트란 "오류 : 할당에서 0과 1의 호환되지 않는 순위"

컴파일 할 때 "오류 : 할당시 0과 1의 비 호환 순위"오류가 발생합니다. 나는 이것이 동의하지 않는 길이와 관련이 있다는 것을 알고 있지만, 나는 그것을 해결할 수 없었다. 이전에 계산 된 값, 즉 r1-r4를 Prism_r (i, pp)의 행에 할당하려고합니다. 이 오류는 다음과 같습니다 여기

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

은 관련 코드입니다 : 내가 Prism_r을 주석 때

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 

계산이 제대로 수행되고 있지만, 그것은에 값을 할당하지 않습니다. 누구든지 r1-r4를 올바르게 정의하여 Prism_r에 값이 할당되도록 조언해야합니까?

+2

크기가 누락 되었습니까? (Prism_r (0 : d-1,0 : P-1,0 : 3) ?? – ErstwhileIII

답변

4

실제로 길이가 일치하지 않아도되지만, 오류 메시지와 마찬가지로 동의하지 않는 순위가 적용됩니다.

Prism_r(i,pp) 배열의 단일 요소 : 그것은 스칼라, 즉, 랭크 0

(/ r1(pp),r2(pp),r3(pp),r4(pp) /)의 (길이 네) 랭크 1 배열이다.

포트란에서는 스칼라에 배열을 할당 할 수 없습니다.

관련 문제