欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

fortran在外部过程使用假定形状数组

程序员文章站 2022-03-09 10:03:54
...
fortran在外部过程使用假定形状数组有两种方式。
分别是写接口(interface)或是把对应的subroutine写在module中
代码如下:
1. 写interface
Program AssumedShape
    implicit none 
    interface  !.. 接口
        subroutine test_AssumedShape( a )
            real, allocatable :: a(:)
        end subroutine test_AssumedShape
    end interface
    
    integer           :: istat
    real, allocatable :: a(:)
    
    allocate( a(2), stat = istat )
    call test_AssumedShape( a )
    
    write( *,* ) a
    deallocate( a )
    
end program AssumedShape
    
subroutine test_AssumedShape( a )
    implicit none
    integer :: m, n, i
    real    :: a(:)
    
    m = lbound(a,1)
    n = ubound(a,1)
        
    forall ( i = m:n ) 
        a(i) = i
    end forall
        
end subroutine test_AssumedShape


2. 写module
Module testmod
    implicit none
contains
    
    subroutine test_AssumedShape( a )
        implicit none
        integer :: m, n, i
        real    :: a(:)
        
        m = lbound(a,1)
        n = ubound(a,1)
        
        forall ( i = m:n ) 
            a(i) = i
        end forall
        
    end subroutine test_AssumedShape
    
End module testmod
    
    
Program AssumedShape
    use testmod
    implicit none 
    integer           :: istat
    real, allocatable :: a(:)
    
    allocate( a(2), stat = istat )
    call test_AssumedShape( a )
    
    write( *,* ) a
    deallocate( a )
    
end program AssumedShape

 

相关标签: fortran