问题标签 [fortran90]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
fortran - Fortran 中参数传递的“真实世界”使用
我一直认为 fortran 将实体“通过引用”传递给虚拟参数。然后我得到了这个答案(答案的实际论点是相关的,但不是这个)
该标准从不指定这一点,并且确实非常规避此类规范。尽管您的误解是一个常见的误解,但即使在大多数较旧的编译器中,它也不是严格准确的,尤其是在启用优化的情况下。严格的按引用传递会扼杀许多常见的优化。
使用最近的标准,在某些情况下几乎不允许引用传递。该标准在其规范性文本中没有使用这些词,但有些事情通过引用传递是不切实际的。
当你开始研究指针之类的东西时,假设一切都是按引用传递的错误将开始变得比以前更加明显。你必须放弃这种误解,否则很多事情会让你感到困惑。
我认为其他人已经充分回答了帖子的其余部分。有些人也提到了上述观点,但我想强调一下。
请参阅此处了解归属。
根据这个答案,标准中没有任何内容指定数据如何从调用者传送到被调用者。实际上,应该如何从实际使用它的角度来解释它(不管编译器如何实现标准所产生的实际效果),特别是在 intent() 规范方面?
编辑:我想澄清我的问题。我想了解的是标准期望您在执行呼叫时如何工作。鉴于标准未定义用于传递实体的实际编译器策略,原则上(根据标准)您不能期望将参数传递给函数实际上将表现为“按引用传递”,其所有相关的副作用,因为此行为取决于编译器和优化。因此,我假设该标准强加了您必须遵循的编程风格,而不管实际的实施策略如何。
fortran - POINTER 和 ALLOCATABLE 的区别
这两个代码有什么区别
和
特别是在涉及以下代码时:
fortran - fortran(ifort)中的连续行数疯狂
显然,Fortran 编译器中允许的延续行数存在限制。我有一个临时的病态案例(用于快速测试目的),我需要在不打开文件或做任何诡计的情况下初始化一个巨大的数组,只需将数据作为文字输入。该数组非常大(360000 个条目)。
如何将编译器的限制设置为无限制,或者我可以使用什么替代策略来托管这个数组初始化?
fortran90 - 在fortran文件中设置位置?
如何在 Fortran 文件中设置位置。据我了解,INQUIRE(unit, pos=currentpos)
返回文件中的当前位置。如何将位置设置为 currentpos?
我知道有 FSEEK,但它似乎是 ifort 中 POSIX 上的一个可移植层。我更喜欢标准的方式。
io - 在 Fortran 中读取可变长度/类型行
我在 fortran 中有一行数据,我需要读取不同的值。值的数量可以是任何值,类型也可以。例子
或者
如何在不获取下一行信息的情况下成功读取这一行,或者至少将其分解为基本标记(必须不惜一切代价防止这种情况发生)。
fortran - Fortran 90中意图(输出)拼接数组的未定义行为?
当我这样做时,我遇到了非常奇怪的行为。我认为这是问题的根源,但我可能是错的。如果你们中的任何人都可以确认这确实是未定义的行为,我至少会知道发生了什么
假设我有(不假装编译)
我的问题是:我在做一些奇怪的事情吗?我觉得意图(出)未定义整个块,即使我通过了一个切片,我也需要一个 inout。你能从标准中确认吗?
编辑: inout 给出相同的未定义行为,但将非切片数组传递给 Sub 有效。这是否意味着传递切片数组来初始化子块是违反标准的?
谢谢
arrays - 在子例程调用期间在 fortran 中保持数组限制
我有以下程序
在标有“这里”的行中,我做错了。事实是,当我收到数组a
(在从 -5 到 +5 分配的调用者中)时,被调用者使用常规编号(1 到 n),这意味着分配 -4 我正在执行超出边界的分配。我如何指示编译器在bar
例程中,a
数组的编号必须与调用者中的编号相同?
fortran - dsygv 中特征向量的顺序
当我调用 时dsygv
,我将特征向量作为矩阵获得。这些特征向量是沿着矩阵的列还是沿着矩阵的行?
fortran - FORTRAN 中的函数参数
问题
我试图让一个函数成为另一个函数的参数,但是我不断收到错误消息:
代码
Bellow 是调用该函数并包含实际回调的程序的准系统版本:
然后采用函数参数的函数的模块是:
概括
所以基本上,testbutcher 包含一个要以特殊方式评估的函数,因此它将它发送到模块 butcher(特别是 butcher 中的函数步骤)进行评估。我无法弄清楚如何实际做到这一点!如果我在 C 语言中工作,我会简单地创建一个指向 polytrope 的指针并将其扔给 fxn。
fortran - for_write_seq_lis 是做什么的?
我正在用 valgrind 调试 Fortran 90 程序。我在跟踪中遇到错误
而且我不明白这是我的错误还是仅仅是内部库的怪癖。我想知道这些功能的作用以及任何其他相关信息。
我在 macosx 上使用 ifort (IFORT) 11.1 20100806、valgrind 3.6.0 进行编译。
编辑:当使用内在函数时,我能够发现 valgrind 错误的发生associated(ptr)
,或者何时print *
使用。无论如何,我只是想知道这些例程负责什么。什么是 lf 表?