在Fortran子例程中分配数组

姆塞加德

我需要从Fortran程序中的文件中读取大量数据。数据的大小是可变的,所以我想动态分配数组。我的想法是创建一个读取所有数据并分配内存的子例程。该程序的简化版本是:

  program main

  implicit none
  real*8, dimension(:,:), allocatable :: v
  integer*4 n

  !This subroutine will read all the data and allocate the memory 
  call Memory(v,n)

  !From here the program will have other subroutines to make calculations

  end


  subroutine Memory(v,n)

  implicit none
  real*8, dimension(:,:), allocatable :: v
  integer*4 n,i

  n=5
  allocate(v(n,2))
  do i=1,n
  v(i,1)=1.0
  v(i,2)=2.0 
  enddo

  return
  end subroutine Memory

该程序给我以下错误:

Error: Dummy argument 'v' of procedure 'memory' at (1) has an attribute that requieres an explicit interface for this procedure

这是构造此类程序的正确方法吗?如果是这样,我该如何解决错误?

谢谢。

高性能标志

假设您有一个包含程序和子例程的单个源文件(如您的帖子所述),最简单的解决方法是替换包含该语句的行

end

一行包含该语句

contains

在源文件的末尾写一行包含该语句的行

end program

(是的,关键字program不是必需的,但很有用。)

编译器报告的问题是,在对代码进行结构化时,该程序对子例程的接口一无所知memory,该接口在Fortran中是隐式的当您要调用子例程并传入或传出可分配数组时,该子例程必须具有显式接口。

提供显式接口有几种方法。正如我已经向您展示的,一种方法是在程序中包含该子例程。当您的程序变得更大一点时,另一种更有用的方法是在模块中编写子例程,并将其与要使用它们的程序相关联。阅读Fortran教程中涉及modules和该use语句的部分。

至少还有其他选择,但是它特别是对于初学者来说,没有吸引力,我这里不再赘述。

并且,在撰写本文时,请学习并使用关键字intent指定是将对子例程的参数进行读取,写入还是将二者都指定。这对安全编程有很大帮​​助,您最喜欢的Fortran资源将进行详细说明。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

fortran,将可分配数组传递给具有右边界的子例程

来自分类Dev

fortran函数/子例程中的Arbitray变量/数组类型

来自分类Dev

如何在Python中分配数组大小

来自分类Dev

FORTRAN-子例程中的可分配数组

来自分类Dev

在Fortran中分配字符数组

来自分类Dev

我如何在C#.net中分配值时分配数组的键

来自分类Dev

Intel Fortran错误“未分配可分配数组或指针”

来自分类Dev

fortran子例程:任意类型的数组

来自分类Dev

在Fortran 90中从定义中分离函数/子例程声明的干净方法

来自分类Dev

如何从初始化列表中分配数组

来自分类Dev

在循环中分配数组的值

来自分类Dev

为什么在Fortran中需要可分配数组?

来自分类Dev

使用索引功能在R中分配数组值

来自分类Dev

Fortran函数返回可分配数组

来自分类Dev

如何在Fortran子例程中使用可分配数组?

来自分类Dev

在fortran的子例程中更新数组的值

来自分类Dev

fortran函数/子例程中的Arbitray变量/数组类型

来自分类Dev

如何在Java中分配数组中的元素数?

来自分类Dev

fortran 77和gfortran中的可分配数组

来自分类Dev

相应地在php中分配数组值

来自分类Dev

在每个循环中分配数组值

来自分类Dev

在多行texbox winforms中分配数组

来自分类Dev

为什么在Fortran中需要可分配数组?

来自分类Dev

使用索引功能在R中分配数组值

来自分类Dev

在多个选择框中分配数组值

来自分类Dev

如何指示子例程,可分配数组使用哪个模块

来自分类Dev

写入 Fortran 可分配数组时出现访问冲突

来自分类Dev

将巨大的工作区数组用于 Fortran 子例程

来自分类Dev

在 Oracle 中分配数组或表变量

Related 相关文章

热门标签

归档