fortran相关内容

更改字节顺序的Fortran子例程

我在Fortran中编写了一个例程来执行相反的字节顺序。这相当于src="1234"; dst="4321"。我想将例程更改为使用变量src和dst指定的任意排序,以设置排序位置。 以下是字节顺序颠倒的代码。 Subroutine byteorder (src, dst, x, y) Real, Intent (out) :: y Character (Len=*), Intent ..
发布时间:2022-06-24 21:38:18 其他开发

是否有适用于f77和f90代码的通用Fortran编译器

我正在尝试运行我的团队的一些旧的Fortran代码。 我有两个Fortran 77代码(cklib.f和grcom.f),我用fort77编译,得到了两个目标文件。 我有两个Fortran 90代码(write_counterflow_sol.f和read_counterflow_sol.f),我用gfortran编译了它们,得到了另外两个目标文件。 现在,使用以下生成文件,我正在尝 ..
发布时间:2022-04-17 11:37:47 其他开发

如何从一个Fortran整型转换成一个更小的整型?

我需要在Fortran中将参数从integer(kind=8)转换为integer(kind=4),有什么(简单的)方法可以做到这一点吗? 此参数是一个输入数字,如果此数字大于2^31-1(4字节整数的限制),程序将始终要求更小的数字(以便它可以“容纳”在这4个字节中),所以我认为这应该不是问题。 推荐答案 要创建任何类型的整数,请使用 result = int(sourc ..
发布时间:2022-04-12 19:30:07 其他开发

Fortran中的程序指针

假设我有以下指向单参数的双精度函数的抽象接口 module abstract abstract interface function dp_func (x) double precision, intent(in) :: x double precision :: dp_func end function dp_func end in ..
发布时间:2022-04-10 15:52:16 其他开发

在";root";没有发送缓冲区的情况下使用MPI_GATHERV

我希望使用MPI函数MPI_GATHERV,其中每个MPI等级都有一个大小不同的特定缓冲区,需要在Root进程中收集这些缓冲区。 我的根进程将只收集缓冲区,但像往常一样本身没有发送缓冲区。 例如 RANK1 buf_sz =3 buf(1) = 1 buf(2) = 2 buf(3) = 3 排名2 buf_sz =3 buf(1) = 4 buf( ..
发布时间:2022-03-10 23:45:50 其他开发

如何知道Fortran数组中非零元素的个数?

所以我有这样的东西: INTEGER i REAL value(10) DO i = 1,5 value(i) = 1 ENDDO 现在我的值=(1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0)。 提供size=5(不带零的数组大小)的函数是什么? 推荐答案 只计算非零元素 print *, count(value/=0) ..
发布时间:2022-03-08 11:20:14 其他开发

Fortran:在主程序中初始化长度未知的字符串

我有一个字符串,我想用子例程调用的意图(输出)数据进行初始化。我看起来有点像: character(*) :: path call get_path(path) 编译器告诉我: 错误:假定字符长度位于(%1)的实体必须是伪实体 参数或参数 该构造在子例程中工作得很好,但在主程序中失败。是否可以在不知道其长度的情况下初始化PATH变量? 编辑:我已尝试的内容,但失败。 ..
发布时间:2022-03-01 23:21:34 其他开发

编译函数和公共块具有相同名称的不同文件

我当前正在尝试在另一个第三方程序(程序B)中实现一些第三方代码(程序A)。不幸的是,似乎有一些COMMON块和子例程在两个代码之间共享名称。编译器没有检测到这一点(我怀疑这是因为编译过程涉及许多不同的文件并创建一个共享对象),但是当使用非常通用的名称(例如BASIS、JACOBIAN)访问某些公共块/子例程时,程序会崩溃,重命名它们可以缓解问题。但是,由于程序A的大小,重命名程序A中的所有公共块和 ..
发布时间:2022-03-01 16:24:58 其他开发

Openacc+MPI Fortran程序入门

我有一个可以工作的串行代码和一个可以工作的并行单GPU代码,它们是通过openacc并行化的。现在,我正试图通过在多个GPU上运行,采用MPI+openacc范例来提高并行性。我用Fortran-90编写代码,并使用NVIDIA的HPC-SDK的nvfortran编译器进行编译。 我有几个初学者级别的问题: 如何设置编译器环境以开始编写MPI+openacc代码。除了NVIDIA的HP ..
发布时间:2022-02-27 19:58:56 其他开发

在 Fortran 中将可分配字符传递给具有无限多态虚拟参数的子例程

我正在尝试编写一个例程,该例程能够基于无限多态性将字符串转换为不同类型的数据类型.这个想法是用户调用这个例程,将变量传递到它想要存储数据的位置,以及基于变量/参数类型定义转换的例程. 此例程的摘录如下: 子程序 GetAsScalar (this, value, status)!参数------------------------------------------------------ ..
发布时间:2022-01-24 16:52:46 其他开发

Fortran 2003 中的内在赋值和多态性

我尝试向这个模块,由 @VladimirF 编写,在 Fortran 2003 中实现了一个通用链表.我希望能够输出为方便起见,将列表的内容作为一个数组,所以我在一个名为 lists.f90 的文件中的列表模块中添加了以下过程: 子程序 list_as_array(self, arrayOut)类(列表),意图(输入)::自我类(*),维度(1:self%length),意图(out)::ar ..
发布时间:2022-01-24 16:43:35 其他开发

Julia 中是否有本地保存的数据(如 Fortran 的)?

我目前正在尝试将整个 Fortran 77 代码重新编写到 Julia 中.在此 Fortran 代码中,有各种具有 SAVE 属性的局部变量(来自 SAVE 语句或在 DATA 语句中显式初始化时). 问题是:我无法重现在 Fortran 中使用这些保存的变量所期望的相同结果.例如,该代码有许多从 Numerical Recipies 中提取的随机生成器程序.特别是ran3.f,不仅从主程 ..
发布时间:2022-01-23 19:54:54 其他开发

为什么 Fortran 在 julia 基准测试“rand_mat_mul"中很慢?

Julia 主页 (http://julialang.org/) 上的基准测试结果表明,Fortran 是在“rand_mat_mul"基准测试中比 Julia/Numpy 慢约 4 倍. 我不明白为什么从同一个 fortran 库 (BLAS) 调用时 fortran 速度较慢?? 我还对 fortran、julia 和 numpy 的矩阵乘法进行了简单的测试,得到了类似的结果: ..
发布时间:2022-01-23 19:35:16 Python

在 Julia 中集成 Fortran 代码

我正在为我自己的模块使用 GNU gfortran 编译器(在 Cygwin 上).一个很好的例子有望从编译阶段开始,处理错误的名称并通过 ccall 从 Julia 调用子例程.我见过的大多数示例都跳过了前两个阶段. 假设我在 Fortran 90 文件中有以下模块,名为“f90tojl.f90": 模块 m包含整数函数五()五 = 5结束功能五末端模块 m 这个例子来自这里.我用 g ..
发布时间:2022-01-23 19:27:56 其他开发