簡體   English   中英

如何編寫返回數組的 Fortran function

[英]How to code a Fortran function that return an array

在我的研究中,我必須編寫 4 矩陣代碼,所以我編寫了這個代碼,但我有一個我不明白的錯誤。

我的 function:

function matrix(x_axis,Nblines) result(m)
    implicit none
    real(kind=8),dimension(3,3) :: m
    real(kind=8), intent(in) :: x_axis(Nblines)
    integer :: i, j


    do i=1,3
        do j=1,3
            m(i,j) = sum(x_axis**(int(i+j-2)))/Nblines
            
        end do 
    end do 
end function matrix

x_axis 是一個向量,我計算它的多重平均值。 我有這個錯誤:

Legacy Extension: REAL array index at (1)

我讀過一些關於相同類型錯誤的人,這個解決方案是關於接口的,但我不明白這一點。

我會回答你提出的問題,即使這不太可能是你的最終問題。

對於診斷(這不是錯誤):在某個地方,在您沒有向我們展示的代碼中,您有一個數組引用,例如a(x) ,其中x是 REAL 類型而不是 INTEGER。現在在 Fortran 中這是不允許的,但是,幾十年前,許多編譯器仍然支持它作為擴展。 編譯器幫了你一個忙,並指出了這一點。 這是不好的做法,可能是您的錯誤。

關於返回 arrays 的函數,這要求“顯式接口”對調用者可見。 執行此操作的最佳方法是將 function 放在一個module中,然后從您要調用它的地方use該模塊。 我在https://stevelionel.com/drfortran/2012/01/05/doctor-fortran-gets-explicit-again/更詳細地討論了顯式接口

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM