fortran2008

    0熱度

    1回答

    過程調用形式參數更實際我有一個關閉此具體和切合主題的問題,試圖從libcurl的簡單API從Fortran語言調用C: https://stackoverflow.com/questions/44891188/calling-libcurl-from-fortran-2008 按照意見的建議,我仍然遇到了關於如何從Fortran中正確調用C指針和C函數的錯誤。 沒有太多的代碼在這裏,但主要問題是警

    4熱度

    1回答

    我正在開發一個面向對象的Fortran代碼,用於抽象類型支持的多態性的數值優化。由於這是一個很好的TDD實踐,我試圖編寫抽象類型爲class(generic_optimizer)的所有優化測試,然後應該由每個實例化的類運行,例如type(newton_raphson)。 所有的優化測試都會調用call my_problem%solve(...),在抽象類型中定義爲deferred,當然在每個派生類

    0熱度

    1回答

    我最近發現了Fortran 2008的新功能,即SUBMODULE。 請看看我的最低工作示例。編譯後,它把終端上做如下: Accessed sub0 Accessed sub1 Accessed sub2 也就是說,因爲它應該的sub1模塊程序和sub2可以CALL對方,一切都OK。 由於代碼架構和維護等原因,我需要以某種方式限制此訪問。也就是說,模塊程序(sub1和sub2)彼此不可見。

    1熱度

    1回答

    我不認爲以下do concurrent Fortran循環有效,因爲acc在每次迭代中都被修改。然而,gfortran沒有給我任何警告,並且acc中的結果值在55是正確的。它是否有效? integer :: acc, i acc = 0 do concurrent (i=1:10) acc = acc + i end do

    1熱度

    1回答

    有沒有辦法在Fortran中將數組(矢量或矩陣,甚至標量)設置爲零? 2003/2008似乎是採取的Fortran到一個非常現代化的水平,我有其中X是行數懷疑,如果他們都包含一個簡單的方法來設置數組值爲零,而不必做 do i = 1,X do j = 1,Y A(i,j) = 0 enddo enddo Y是2-d矩陣中的列數。這可以概括爲儘可能

    -1熱度

    1回答

    我需要對fortran程序的一部分進行基準測試,以瞭解和量化特定更改的影響(爲了使代碼更易維護,我們希望使代碼更加面向對象,充分利用函數指針例)。 我有一個循環調用幾次相同的子程序來執行有限元素的計算。我想看看使用函數指針而不是硬編碼函數的影響。 do i=1,n_of_finite_elements ! Need to benchmark execution time of this

    0熱度

    1回答

    我正在學習Fortran(使用Fortran 2008標準),並且想要獨立設置我的整數部分精度和小數部分精度,以便獨立地設置變量實數。我該怎麼做呢? 例如,讓我們說,我想聲明一個真實變量具有整數部分精度3和小數部分精度8. 在本說明書中上面的一個例子號碼將被說123.12345678但是1234.1234567不會滿足給定的要求。

    1熱度

    3回答

    我想將複雜Fortran陣列的虛構部分的「指針」傳遞給僅對實數進行操作的BLAS函數。我的意思是C語言意義上的「指針」,因爲我不想涉及任何數據複製。 例如,請考慮下面這個簡單的代碼(我的實際代碼稍微複雜): function foo(c1, c2, n) result(r) complex, dimension(:), intent(in) :: c1, c2 integer,

    1熱度

    1回答

    我想讀該行的整數讀未知寬度的整數: # 14 14 10 用Fortran 2008 我嘗試使用此代碼: read(21, "(A, I,I,I)") garbage, a, b, c 但這不符合標準。英特爾Fortran發出警告「Fortran 2008 does not allow this edit descriptor. [I]」和其他問題解釋此問題:Nonnegative wid

    0熱度

    1回答

    一個異步系統調用。如果我做一個系統調用,如: call execute_command_line (slowcall1, wait=.false., exitstat=i) call execute_command_line (slowcall2, wait=.false., exitstat=j) call execute_command_line (slowcall3, w