Fortran 怎么在子程序中調用主程序中定義的變量?


注意:如果變量是一維的,即一個數,那么不用定義其維度為“A(1)”,直接定義雙精度變量,即可在之后的運算中調用,否則需要在之后的調用中輸入“A(1)”而不是“A”。類似地,若變量是1*n或n*1的矩陣形式,則僅需要將變量定義為“A(n)”即可。

例如:

program main
implicit none
    dimension x(1),y(1),z(1),M(1),Omega(1),gm(1) ! 定義變量維度
    double precision x,y,z,M,L,Omega,gm
    x=1
    y=2
    Omega=1 ! 變量定義
    call equation2(x,y,z,M,Omega,gm)
    open(file='result.dat',unit=1)
    write(1,'(1X, 4E20.10)') z,M,gm,0.5374E-98
    close(1)
end program main

subroutine equation1(Omega,gm) ! 子程序中調用之前定義的變量
    implicit none
    dimension Omega(1),gm(1)
    double precision Omega,gm
    gm=Omega*80
    return
end subroutine equation1

subroutine equation2(x,y,z,M,Omega,gm) ! 調用定義的變量
    implicit none
    dimension x(1),y(1),z(1),M(1),Omega(1),gm(1)
    double precision x,y,z,M,Omega,gm
    call equation1(Omega,gm)
    z=x+y+gm
    return
end subroutine equation2

這里Omega即為調用變量。

該程序在處理光存儲(由慢光過渡到光存儲,需調節控制場使之隨時間變化)的相關內容時需要使用。詳見新浪博客和科學網的博文。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM