首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在子程序调用期间保持fortran中的数组限制

在Fortran中,子程序调用期间保持数组限制是指在调用子程序时,保持实际参数数组的维度、大小和属性与形式参数数组相同。这样可以确保子程序内部对数组的操作不会改变数组的结构和属性。

Fortran中的数组限制包括维度、大小和属性。维度指的是数组的维数和每个维度的大小。大小指的是数组中元素的个数。属性指的是数组元素的类型和存储顺序。

为了在子程序调用期间保持数组限制,可以使用以下方法:

  1. 使用形式参数声明:在子程序的参数列表中,使用与实际参数相同的数组声明。例如,如果实际参数是一个二维数组A,那么在子程序中的形式参数也应该声明为一个二维数组A。
  2. 使用显式界限:在子程序中对数组进行操作时,使用显式界限来确保操作范围与实际参数相同。例如,如果实际参数是一个二维数组A,那么在子程序中对数组进行循环操作时,循环的上下界应该与实际参数的上下界相同。
  3. 使用属性保持一致:在子程序中对数组进行操作时,确保操作的属性与实际参数相同。例如,如果实际参数是一个整型数组,那么在子程序中对数组的操作也应该是整型操作。

保持数组限制的好处是可以避免在子程序调用期间对数组进行不必要的复制和重新分配内存的操作,提高程序的执行效率和性能。

在腾讯云的云计算平台中,可以使用腾讯云函数(Tencent Cloud Function)来实现在子程序调用期间保持数组限制。腾讯云函数是一种无服务器计算服务,可以让开发者在云端运行代码,无需关心服务器的运维和扩展。通过腾讯云函数,可以方便地将Fortran代码部署到云端,并在子程序调用期间保持数组限制。

腾讯云函数的产品介绍和相关链接如下:

通过使用腾讯云函数,可以将Fortran代码与云计算相结合,实现高效的子程序调用和数组操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

fortran中的数组

接下来是Fortran的数组,我认为这是Fortran语言最有价值的精华部分,因此特意放在了学习笔记靠后的部分,在学习了基本的语法和子程序等之后。...可以使用其他语法进行数组的声明,在Fortran 77中没有双冒号,而且需要两条命令分别确定数组元素的类型和数组的尺寸。 ! 基本的用法 integer :: a(10) !...或者直接deallocate(a) 固定尺寸的数组和动态数组的本质区别,就像c/c++中的一样:固定尺寸的数组在栈上分配内存,不需要手动释放;动态数组在堆上分配内存,需要手动释放,相比于栈可使用的空间更多...如果子程序把这个形参定义为整数,则子程序得到的是内存地址对应的整数。此时对整数的修改会导致调用者丢失整个数组,非常危险。...如果子程序把这个形参定义为数组,则会根据形参数组的尺寸处理实参对应的部分内存,实质还是传地址,因此对分量的修改会反馈给调用者。

59210
  • 一篇搞定fortran超详细学习教程 fortran语法讲解

    五、数组与矩阵操作 重点详细内容知识点总结: Fortran以其强大的数组处理能力而著称。在Fortran中,数组可以是一维的、二维的甚至多维的。...如何学习: 学习Fortran中数组的声明和初始化方法,了解数组的形状和大小。 掌握Fortran中数组操作的基本函数和运算符的使用方法。...六、子程序与函数 重点详细内容知识点总结: Fortran支持子程序(SUBROUTINE)和函数(FUNCTION)的编写和调用。...子程序用于执行一系列操作但不返回值,而函数则用于执行计算并返回一个值。Fortran中的子程序和函数可以接受参数并传递数据。 如何学习: 学习Fortran中子程序和函数的定义和调用方法。...掌握如何在Fortran程序中编写和调用子程序和函数。 编写包含子程序和函数的Fortran程序,实现复杂的计算任务。

    37010

    【阿信子程序学习笔记(2)】什么是ABAQUS子程序?

    如题,在解释ABAQUS子程序是什么东东之前,需要明确几个问题: 什么是FORTRAN语言? 什么是FORTRAN程序? 什么是FORTRAN子程序? 什么是ABAQUS子程序?...它是为科学、工程问题或企事业管理中的那些能够用数学公式表达的问题而设计的,其数值计算的功能较强。FORTRAN语言是世界上第一个被正式推广使用的高级语言。...FORTRAN程序一般包含主程序和若干程序模块,这些程序模块可以是子程序也可以是函数等类型。 什么是FORTRAN子程序?...通俗的讲,子程序是可以被主程序调用的模块,或者说过程,以SUBROURTINE语句开始,END语句结束。 什么是ABAQUS子程序?...因此可看作是FORTRAN子程序的子集。如下图所示。

    1.5K20

    编程语言的出现都这么随意吗?

    不支持:数据类型声明、单独编译子程序 Fortran II 发布于 1958 年,主要对 Fortran I 的编译器做了优化,并支持了单独编译的子程序。...随着 Fortran 的诞生,其他一些语言也在开发中,这些语言的语法格式各不相同,而且和 Fortran 一样,都与运行它们的具体计算机关联(比如标示符长度、代码行数的限制等)。...Algol 60,发表于 1960 年,在 Algol 58 的基础上做了重大改进:移入块结构、 支持两种子程序参数传递(按值传递和按名传递)、允许递归、支持本地数组(在栈上分配数组)。...将命令式编程中的数据和数据的有关函数集成在一起,就形成了面向对象编程中的对象,而对象的类型就是类。将命令式编程中主程序调用子程序的从属关系,变为面向对象编程中对象之间互相发送消息的平等关系。...BCPL,诞生于 1967 剑桥大写,它的祖先是 1962 年诞生诞生于同一所大学的 CPL 语言。 B 和汇编一样数据类型就是机器字,这极大的限制了 B 程序在不同位数的机器之间的迁移。

    1.7K60

    Python numpy np.clip() 将数组中的元素限制在指定的最小值和最大值之间

    NumPy 库来实现一个简单的功能:将数组中的元素限制在指定的最小值和最大值之间。...具体来说,它首先创建了一个包含 0 到 9(包括 0 和 9)的整数数组,然后使用 np.clip 函数将这个数组中的每个元素限制在 1 到 8 之间。...如果数组中的元素小于 1,则该元素被设置为 1;如果大于 8,则被设置为 8;如果在 1 到 8 之间,则保持不变。...此函数遍历输入数组中的每个元素,将小于 1 的元素替换为 1,将大于 8 的元素替换为 8,而位于 1 和 8 之间的元素保持不变。处理后的新数组被赋值给变量 b。...对于输入数组中的每个元素,如果它小于最小值,则会被设置为最小值;如果它大于最大值,则会被设置为最大值;否则,它保持不变。

    27800

    fortran中三种数组传递方式

    Fortran 中,调用函数或子程序时,默认将实参的地址传递给形参,称为地址传递或引用传递。...究其原因,是因为Fortran主要针对数值计算,参数多为大型数组(二维数组称矩阵),如果采用值传递,会复制实参的一个拷贝给形参,占用时间和内存,而地址传递则仅仅将实参数组的首地址传递给形参,没有时间和内存冗余...这里介绍3种常见的数组传递方式。...注意:这种方式需要显式接口,可用 interface 指定接口,或将子程序写入 module 中使用。 在某些老代码中,可能会见到第四种写法,其与第一种类似。 !...第二种最常用,但需要传递额外的参数来指定数组大小。 第三种很灵活,能实现第二种的所有功能,而且减少了参数个数,但需要显式接口。推荐用这种方法,并封装与 module 中避免书写接口。

    1.2K30

    检查代码中的数据引用错误

    1、是否有引用的变量未赋值或未初始化?这可能是最常见的编程错误,在各种环境中都可能发生。在引用每个数据项(如变量、数组元素、结构中的域)时,应试图非正式地“证明”该数据项在当前位置具有确定的值。...2、对于所有的数组引用,是否每一个下标的值都在相应维规定的界限之内?3、对于所有的数组引用,是否每一个下标的值都是整数?虽然在某些语言中这不是错误,但这样做是危险的。...在FORTRAN语言中对EQUIVALENCE语句使用,或COBOL语言中对REDEFINES语句使用的地方,都可能发生这种错误。...这种错误的一个例子是,当一个指向某个数据结构的C++指针,被赋值为另外的数据结构的地址。9、假如一个数据结构在多个过程或子程序中被引用,那么每个过程或子程序对该结构的定义是否都相同?...10、如果字符串有索引,当对数组进行索引操作或下标引用,字符串的边界取值是否有“仅差一个”(off-by-one)的错误?11、对于面向对象的语言,是否所有的继承需求都在实现类中得到了满足?

    9210

    厉害了!Ziglang首次落地高性能计算场景

    子句数据存储在extra_data数组中,该数组是Zig 编译器用于注释 AST 节点的杂项数据的 32 位整数数组。...在获取每个标识符的 AST 节点索引后,这些索引被连续存储在extra_data数组中,子句结构的开始和结束索引则存储在子句中。...然而,Zig 和 Fortran 之间有几个主要区别,最显著的是 Fortran 中的数组是从 1 开始索引的,且 DO 循环的上界是包含在内的,而 Zig 中则不是。...因此,在这样的移植过程中,所有数组索引和循环下界都需要调整,这增加了复杂性。 尽管以前从未这样做过,但从 Zig 调用 Fortran 过程的过程类似于调用 C 函数,所有参数类型都更改为指针。...我们将 Fortran 中的 conj_grad 子程序移植到 Zig 中,该子程序占据了大约 95% 的运行时间。

    48710

    4.虚存管理

    覆盖技术.png (2)流程解释 假设系统中有一个作业 w 由6个程序段组成,如图(a)所示,从图上可以看出,主程序是一个独立段,它调用子程序1和子程序2,且子程序1与子程序2是互斥被调用的两个段,在子程序...1执行过程中,它调用子程序11,而子程序2执行过程中调用子程序21和子程序22,显然子程序21和子程序22也是互斥调用的。...程序执行时,除了少部分的转移和过程调用指令外,在大多数情况下仍是顺序执行的。该论点也在后来的许多学者对高级程序设计语言(如FORTRAN语言、PASCAL语言)及C语言规律的研究中被证实。...程序中存在许多循环结构,这些虽然只由少数指令构成,但是它们将多次执行。 程序中还包括许多对数据结构的处理,如对数组进行操作,它们往往都局限于很小的范围内。...然而,缺页中断是在指令执行期间,发现所要访问的指令或数据不在内存时所产生和处理的。 2)一条指令在执行期间,可能产生多次缺页中断。在图6-4中示出了一个例子。

    97810

    如何在Fortran中调用Python

    那么我们应该将基于Python的机器学习迁移到Fortran模型中吗?数据科学领域可能会利用HTTP API(比如Flask)封装机器学习方法,但是HTTP在紧密耦合的系统(比如气候模式)中效率太低。...因此,可以选择直接从Fortran中调用Python,直接通过RAM传递气候模式的状态,而不是通过高延迟的通信层,比如HTTP。...中嵌入Python代码块,以及如何传递数组给Fortran或从Fortran传递数组给Python。...•首先,必须在header.h中进行C头文件声明•然后,执行函数必须要在builder.py的module字符串中,或一个外部模块中•最后,Fortran代码中必须包含定义子程序的interface块(...get和set函数的功能主要就是将Fortran数组传递给STATA或者从STATE中取出Fortran数组。

    6K40

    --04:数据类型

    由于圆括号()一般用于界定子程序调用的实际参数,方括号在区分这两种情况则有易读的优势。...何时确定数组的形状(维数和上下届)对管理数组的存储有着决定性的作用,比如一下的5种可能性: 全局生存期,静态形状: 如果一个数组的形状在编译时已知,而且在程序执行期间一直存在,那么编译器就可以在静态的全局存储中为这种数组分配空间...局部生存期,静态形状: 如果一个数组的形状在编译时已知,但它在程序执行期间不应该一直存在,则可以运行时在子程序的栈帧里为数组分配空间。...在一些语言中,指针被严格的限制为只能指向堆里的对象,而创建指针的方式只有一种,那就是调用一个内部功能,在堆中分配一个新对象并返回指向它的地址。...静态对象在程序的执行期间始终是活动的,栈对象在它们的声明所在的子程序执行期间是活动的,而堆对象则没有明确定义活动时间。

    1.1K60

    在Win下安装Visual Studio和Parallel Studio XE

    使用Visual Studio搭配Parallel Studio进行Fortran编程有个好处是调试方便,数组可以直接可视化,不用外加write之类的语句。...设置断点后,调试到达断点时,鼠标置于数组上即可显示其内容。示例如下: ? 本文将展示如何在Windows系统里安装最新版的两款软件,以及如何调用MKL库。...这里介绍四个常用快捷键: F5 调试 F9 设置/取消断点 Ctrl+F7 仅编译 Ctrl+F5 编译、链接及运行 MKL库的调用 官方Fortran编译器文档(2000多页),MKL文档(...3000多页MKL子程序详细参数说明,必备利器)等可分别在 https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference...当然,存在其他更为复杂的设置/调用方式,笔者没时间一一尝试,只列出了尝试过的、最简单的一种。

    8.9K31

    Fortran中的陷阱——可分配数组的size

    早期的Fortran程序多使用静态数组。在编译时,静态数组被分配固定的存储空间,且在程序运行过程中静态数组的大小是不会改变的。为了能够存储足够多的数据,静态数组的大小需要足够大,这会造成内存的浪费。...如果静态数组的大小不够大,程序的运行也可能会出现错误。 在Fortran90标准之后,我们可以很方便地使用可分配数组。...子程序modify_size通过输入参数n来给values分配内存,若n>0则将values的大小设置为n并赋值values为1,否则不给values分配内存。...5,并且数组中的元素全是1。...然而第二次调用modify_size时,释放values的内存后没有分配values的大小,size(values)的值还是5。在输出values的值时程序会报错。

    2.9K20

    【阿信子程序学习笔记(4)】ABAQUS子程序该用哪个FORTRAN版本,77?90?95?

    FORTRAN语言发展至今已经推出了若干版本,那么究竟采用哪个版本来编写ABAQUS子程序呢?...这是困扰很多同学的问题,因为我们能买的FORTRAN教材基本都是讲解的FORTRAN90/95以上的版本。但是直接采用90或者95以上的版本编写子程序,ABAQUS却又不能识别。...这里需要说明一点,ABAQUS原生支持的FORTRAN77的语法形式,因此采用77写子程序肯定是没有问题的,但是实际上更高级的比如90也是能够支持的,需要对.env文件进行修改,加入支持90的语句即可。...因此无需特别高级FORTRAN版本就能够实现子程序的编写,换个角度想想,很多计算力学的理论早已在有限元软件中实现,那时候有如今高版本的FORTRAN语言吗?...另外,高版本的FORTRAN包含了低版本的所有语法形式和函数,因此从应用的角度讲,没必要花费太多的时间去学习FORTRAN语言,只需要掌握最基本的语法和函数即可,更多的是需要自己在实际的编写中锻炼编程技术

    1.3K20

    Fortran 流程控制(二):forall和do concurrent孰优孰劣

    在《Fortran 流程控制(一):where》一文中,我们介绍了一种面向数组的条件判断结构,类似于面向标量的if结构。...2008中引入,可以用来改善数组操作的性能和简洁性。...安全的处理方法是避免使用这些语句。 • 允许在结构体中调用其他程序,只要这些程序是纯的,这意味着该程序没有副作用。...会使程序变得不纯的副作用的例子有: • 将全局或局地实体中的程序状态更改为下次调用该过程时可能使用的过程。 • 在一次迭代期间产生输出,在另一次迭代中读取输出。...• 程序员也要保证在迭代过程中编译器没有数据依赖(比如,通过共享变量,在一次迭代过程中分配数据内存,在另一个迭代过程中释放数据内存,或者在不同的迭代过程中从外部渠道读取和写入数据)。

    90010

    通过写“猜数字”游戏学习 Fortran | Linux 中国

    但是当我去大学攻读物理学时,我又学习了 Fortran。 Fortran 曾经在科学计算中很常见。曾几何时,所有计算机系统都有一个 Fortran 编译器。...这意味着你只能编写符合以下限制条件的经典 Fortran 程序(LCTT 译注:后来的 Fortran 95 等版本已经对这些限制做了很大的改进,如有兴趣建议直接学习新版): 每张卡只允许一行源代码。...程序语句在第 7-72 列。 要表示跨行,请在第 6 列中输入一个连续字符(通常是 +)。 要创建注释行,请在第 1 列中输入 C 或 *。...虽然有这些限制,你仍然可以编写非常有用和有趣的程序。 在 Fortran 中猜数字 通过编写“猜数字”游戏来探索 Fortran。...Fortran 程序无法从操作系统初始化随机数生成器,因此你必须始终使用“种子”值和 SRAND 子程序(subroutine) 启动随机数生成器。

    1.9K30

    --03:控制流

    在将来任何时候,f都可以调用c,然后可以用c来重新建立其保存的上下文。一般的应用情况是我们把这个c赋值给一个变量,则可重复的调用它,甚至我们可以在f中返回它,即使f已经执行完毕,仍然可以调用c。"...如Fortran早期版本中循环的语法形式如下: do 11 i=1,10,2 //...代码 11 continue do后面的11是一个标号,它必须出现在当前子程序里随后的某个位置...Fortran77取消了这个限制,允许任意正负的实数或表达式,由于在计算机中实数的精度问题导致的条件判断问题(两个相近的浮点数的比较可能会得到相反的结果),Fortran99中又取消了实数作为边界值和步长的功能...获取当前枚举到的元素等方法,在调用期间,这个对象负责保存迭代器的迭代状态。...如上面gcd的例子,如果递归的实现确实是实实在在的子程序调用,那么这种子程序调用所带来的栈的分配等的开销确实要比迭代要大。

    2K100

    定位并解决程序错误

    运行程序之后会出现图中所示的错误提示。按照上图标注的顺序: 首先定位错误提示信息第一行。 在赋值 A(:) = B 中,A 和 B 中的元素数目必须相同。...pzff 的源头,可以发现 pzff 的值在if else 判断语句中确定,在79和84行添加断点确定在哪部分执行 ?...继续往下 然后,定位到出错信息的程序调用提示部分,这部分会定位到是哪个程序的哪一行出错了,程序调用顺序为 debug 调用 getflash ,getflash调用 getadtd子程序,getadtd...子程序调用 processData子程序。...编程语言都是互通的,无论你使用的是python,matlab,ncl,julia还是R,或go,对了最古老的语言之一——fortran,当程序出错的时候都会抛出一个错误提示,只要你理解了错误提示,然后掌握一定的

    1.2K10
    领券