问题标签 [fortran2008]

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.

0 投票
2 回答
271 浏览

arrays - Fortran 数组中被删除的变量?

我有以下代码,其中包含抽象类型、继承类型和短程序,我在其中创建一个对象并将其存储在一个数组中。

问题是,输出看起来像这样:

可以看出,存储在数组中的相同变量使第二个变量无效。为什么会这样?是因为数组是 type a,它只包含第一个变量吗?

我正在用ifort version 18.0.3.

0 投票
0 回答
50 浏览

class - 从 Fortran 二进制文件读取错误

我正在尝试编写一个短代码,它将具有相同父类的对象数组存储到二进制文件中,然后将它们读回。我正在使用未格式化的二进制输出,因为我发现它是最简单的方法。

我的尝试在这里:

但是当尝试从二进制文件中读取时,代码会崩溃,并出现以下错误:

我究竟做错了什么?

0 投票
1 回答
158 浏览

class - 使用定义的输入过程从 Fortran 中的二进制文件中读取错误值

我正在尝试编写一个简单的代码,该代码采用一些具有相同父抽象类的对象,将它们存储到二进制文件中并读回它们。

我的代码如下所示:

问题是,读取o1- 它的类型是b,即这个对象有两个组件 -numnum2. 我存储它,我自然希望读取的值与写入的值相同。

但是我得到了与在 Fortran 数组中被删除的变量中描述的相同的奇怪行为?. 在那个问题中,它是由初始化数组时的错误赋值语法引起的,但在这种情况下,我完全不知道为什么我的输出看起来像这样:

下面的值b显然应该是 1 和 2,而不是 1 和 0。我做错了什么?

0 投票
1 回答
85 浏览

fortran - 指向父类的多态指针不起作用

考虑下面的类结构,它涉及三个独立的模块:

!------------------------ 在文件 af 中

!------------------------ 在文件 bf 中

!---------------------------- 在文件 cf

!-------------------- 主程序

!----------------------------------------

预期的输出是 123,而实际的输出是随机的。该代码使用 ifort 版本 18.0.1 编译。请注意,使用“body”类本身时不会发生相同的问题,即以下工作正常:

任何帮助表示赞赏。

0 投票
0 回答
120 浏览

arrays - 如何定义具有有限续行的大尺寸数组参数?

我有一个大型整数参数数组(6024 个三元组,在 3x6024 数组中总共有 ~9000 个元素)放置在一个模块中作为其他函数的数据。参数定义:

其中ajbjcj是任意整数常量。

为了可读性,我更喜欢这种格式(使用连续行将三元组保持在一起),但对于长数组,它引入了太多的连续行以符合标准 Fortran(Fortran 2003 和更高版本允许多达 255 个连续行)。这些参数不可预测地分布,因此定义的隐含循环不是一种选择。

我可以在一行中放置更多的三元组,但 4 字节整数每个占用 12 个字符(10 个数字、符号、逗号),延续&在符合标准的自由格式行(132 个字符)上为 10 个整数留出空间. 在 255 行中,这确定了可以为数组参数定义列出的约 2550 个元素(这种类型)的实际限制。

有没有办法在符合 Fortran 2008 标准的代码中定义这个参数?参数数组可以分段定义吗?例如

0 投票
0 回答
328 浏览

enums - 如何在fortran中将枚举值打印为字符串?

我在 fortran 中定义了一个枚举 UNIT,如下所示,并希望将值打印为字符串而不是数字。

我有一个函数,它从文件中读取字符串值(“TIME_STEP”、“DAY”等)并返回相应的枚举值(E_TIME_STEP、E_DAY 等)。

这可以正常工作,在读取过程中没有任何问题。但是,我在阅读时不会将字符串值存储在任何地方,阅读后我只有枚举值(E_TIME_STEP、E_DAY 等)。在将其打印到控制台时,我需要打印字符串而不是数字。是否可以在不将其存储在拳头位置的情况下获取字符串。?

我添加了两个函数,其中一个接受输入字符串(“TIME_STEP”、“DAY”等)并返回枚举名称(UNIT),第二个函数接受枚举名称和枚举值(UNIT,1 到 5)并返回枚举字符串(“TIME_STEP”、“DAY”等)没有意义,因为我再次将枚举名称存储在局部变量中。是否可以在不将其存储在本地的情况下获取字符串?

0 投票
1 回答
621 浏览

class - fortran中的多态性

我有一个类似的代码:

我不确定子例程 set_Ao 、 type(Ao)、intent(in) :: Ao 的哪个位置应该像这样留下,或者改为有 class(Ao)、intent(in) :: Ao。我知道 class(Ao) 正在使变量多态并访问 A 的数据类型。但我不知道何时必须使用它。

谢谢。

0 投票
1 回答
57 浏览

arrays - fortran 中的 array(2:)(::2) 有什么问题?

我正在学习 Fortran08 并且对为什么我无法执行以下操作感到困惑

,但以下工作正常

0 投票
0 回答
208 浏览

c - 将空指针传递给 Fortran C 绑定

假设我有一个 C 函数void foo(int* val),为此我编写了以下 Fortran C 绑定(我希望符合 F2008 标准):

C 函数的实现通过检查指针来void foo(int* val)将参数视为可选的。我的问题是:如何设置和/或使用 Fortran C 绑定,使其支持可选,即实际上将空指针传递给 C 函数?valNULLsubroutine foo(val)val

0 投票
1 回答
26 浏览

oop - 如何在 Fortran 中使用多态数据类型作为另一种数据类型的属性

我创建了一个名为“元素”的类,它有几个属性和类型绑定的过程。其中一个属性是具有两个继承类型“kin1”和“kin2”的抽象类类型“kin”。我希望能够在运行时根据输入使用构造函数将“kin1”或“kin2”作为属性分配给对象“元素”。目标是有一个元素列表,每个元素的 element%kin 要么是“kin1”类型,要么是“kin2”类型。

模块元素

模块元素

使用亲属

包含

端模块元件

模块亲属

模块 kin 隐式 无 私有

包含

!其他手续...

端模块kin

程序

程序测试

结束程序

错误

我在 element_type_constructor 子例程运行期间收到以下错误:程序收到信号 SIGSEGV:分段错误 - 内存引用无效。