fortran相关内容
我在Fortran中编写了一个例程来执行相反的字节顺序。这相当于src="1234"; dst="4321"。我想将例程更改为使用变量src和dst指定的任意排序,以设置排序位置。 以下是字节顺序颠倒的代码。 Subroutine byteorder (src, dst, x, y) Real, Intent (out) :: y Character (Len=*), Intent
..
我正在尝试运行我的团队的一些旧的Fortran代码。 我有两个Fortran 77代码(cklib.f和grcom.f),我用fort77编译,得到了两个目标文件。 我有两个Fortran 90代码(write_counterflow_sol.f和read_counterflow_sol.f),我用gfortran编译了它们,得到了另外两个目标文件。 现在,使用以下生成文件,我正在尝
..
我正在尝试通过一个Mex函数(用Fortran编写)在MatLab中创建一个稀疏方阵。我想要类似A = sparse(I,J,K)的内容。我的三胞胎是这样的,条目之间有重复 femi = [1, 2, 3, 2, 2, 4, 5, 5, 4, 6, 6, 5, 5, 2] femj = [2, 2, 1, 1, 1, 3, 3, 6, 3, 1, 1, 2, 2, 4] femk = [2,
..
我需要在Fortran中将参数从integer(kind=8)转换为integer(kind=4),有什么(简单的)方法可以做到这一点吗? 此参数是一个输入数字,如果此数字大于2^31-1(4字节整数的限制),程序将始终要求更小的数字(以便它可以“容纳”在这4个字节中),所以我认为这应该不是问题。 推荐答案 要创建任何类型的整数,请使用 result = int(sourc
..
我是Fortran新手,我正在尝试common块。我的代码很简单 program main implicit double precision (p) real * 8 :: x, y common /yvalue/ y x = 3d0 y = 3d0 print *, power(x) end program main function p
..
假设我有以下指向单参数的双精度函数的抽象接口 module abstract abstract interface function dp_func (x) double precision, intent(in) :: x double precision :: dp_func end function dp_func end in
..
该IDE是ubuntu 18.04上的code::BLOCKS。 工作区包含两个简单的项目。第一个是一个c++静态库,其中只有一个CPP文件,如下所示。 // try.cpp -- The c++ static library is defined as: # include extern "C" { void shownum ( int n ); } v
..
我希望使用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(
..
考虑以下Fortran程序 program test_prg use iso_fortran_env, only : real64 use mpi_f08 implicit none real(real64), allocatable :: arr_send(:), arr_recv(:) integer :: ierr call MPI_Init(ierr)
..
所以我有这样的东西: 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)
..
我有一个字符串,我想用子例程调用的意图(输出)数据进行初始化。我看起来有点像: character(*) :: path call get_path(path) 编译器告诉我: 错误:假定字符长度位于(%1)的实体必须是伪实体 参数或参数 该构造在子例程中工作得很好,但在主程序中失败。是否可以在不知道其长度的情况下初始化PATH变量? 编辑:我已尝试的内容,但失败。
..
我当前正在尝试在另一个第三方程序(程序B)中实现一些第三方代码(程序A)。不幸的是,似乎有一些COMMON块和子例程在两个代码之间共享名称。编译器没有检测到这一点(我怀疑这是因为编译过程涉及许多不同的文件并创建一个共享对象),但是当使用非常通用的名称(例如BASIS、JACOBIAN)访问某些公共块/子例程时,程序会崩溃,重命名它们可以缓解问题。但是,由于程序A的大小,重命名程序A中的所有公共块和
..
我有一个可以工作的串行代码和一个可以工作的并行单GPU代码,它们是通过openacc并行化的。现在,我正试图通过在多个GPU上运行,采用MPI+openacc范例来提高并行性。我用Fortran-90编写代码,并使用NVIDIA的HPC-SDK的nvfortran编译器进行编译。 我有几个初学者级别的问题: 如何设置编译器环境以开始编写MPI+openacc代码。除了NVIDIA的HP
..
我想让我的代码获取写在另一个文档中的代码,阅读它,然后像在代码中一样使用它.假设我们有以下内容: MODULE samplemod包含FUNCTION sillysum(boudary,function) RESULT(counter)隐式无REAL(KIND=8) :: 边界,计数器真实(种类=8),维度(:) :: 函数整数 :: m计数器 = 0.d0DO m = 1, my_mesh%m
..
我正在尝试编写一个例程,该例程能够基于无限多态性将字符串转换为不同类型的数据类型.这个想法是用户调用这个例程,将变量传递到它想要存储数据的位置,以及基于变量/参数类型定义转换的例程. 此例程的摘录如下: 子程序 GetAsScalar (this, value, status)!参数------------------------------------------------------
..
我尝试向这个模块,由 @VladimirF 编写,在 Fortran 2003 中实现了一个通用链表.我希望能够输出为方便起见,将列表的内容作为一个数组,所以我在一个名为 lists.f90 的文件中的列表模块中添加了以下过程: 子程序 list_as_array(self, arrayOut)类(列表),意图(输入)::自我类(*),维度(1:self%length),意图(out)::ar
..
我目前正在尝试将整个 Fortran 77 代码重新编写到 Julia 中.在此 Fortran 代码中,有各种具有 SAVE 属性的局部变量(来自 SAVE 语句或在 DATA 语句中显式初始化时). 问题是:我无法重现在 Fortran 中使用这些保存的变量所期望的相同结果.例如,该代码有许多从 Numerical Recipies 中提取的随机生成器程序.特别是ran3.f,不仅从主程
..
Julia 主页 (http://julialang.org/) 上的基准测试结果表明,Fortran 是在“rand_mat_mul"基准测试中比 Julia/Numpy 慢约 4 倍. 我不明白为什么从同一个 fortran 库 (BLAS) 调用时 fortran 速度较慢?? 我还对 fortran、julia 和 numpy 的矩阵乘法进行了简单的测试,得到了类似的结果:
..
..
我正在为我自己的模块使用 GNU gfortran 编译器(在 Cygwin 上).一个很好的例子有望从编译阶段开始,处理错误的名称并通过 ccall 从 Julia 调用子例程.我见过的大多数示例都跳过了前两个阶段. 假设我在 Fortran 90 文件中有以下模块,名为“f90tojl.f90": 模块 m包含整数函数五()五 = 5结束功能五末端模块 m 这个例子来自这里.我用 g
..