fortran相关内容

用python读取fortran无格式文件

我有一个生成无格式文件的 fortran 程序,我正在尝试将它们读入 Python. 我有源代码,所以我知道第一个“块"是 character*1 name(80) 的字符数组,依此类推.所以我从 f = open(filename,'rb')字节 = 80name = struct.unpack('c'*bytes,f.read(bytes)) and name 是一个长度为 80 的 ..
发布时间:2022-01-14 10:18:49 Python

Fortran 指针函数:为什么此代码的行为取决于函数调用的顺序?

上下文 下面发布的玩具 Fortran 代码调用了两个指针函数.也就是说,两个函数都返回一个指针.事实上,它们都是数组指针.它们都试图做同样的事情,即返回一个整数数组指针,该指针引用一个具有三个元素 1、2 和 3 的整数数组.第一个函数使用指针赋值运算符 (=>) 将函数指针指向保存数据的可分配数组.第二个函数通过指针直接分配一块动态内存,用于存储数据.调用程序只打印返回数组的元素. ..
发布时间:2022-01-14 10:18:42 其他开发

如何将 gfortran 用于带有 .for 文件扩展名的 Fortran 90?

我在 Ubuntu (16.04) 中安装 Gfortran 后指向 f95.我在 gfortran 手册中看到可以为 f95 和转发提供 -std 选项.我从手册中看到的默认 -std 选项值是“gnu".如果我将 f95 用于 f90 代码,我不确定编译内部的含义. 如何将 gfortran 用于扩展名为 .for 的 Fortran 90 文件?我不想为 Fortran 90 代码使用 ..
发布时间:2022-01-14 10:18:15 其他开发

Fortran 写语句:这个“9999"是什么?正在做?

我无法弄清楚这个“9999"在 e20.8 前面究竟在做什么,在这个 fortran 写语句的标签中. Is 不引用代码中的任何其他行.换句话说,在程序的其他地方没有它引用的标记为 9999 的行. write(11,'(9999e20.8)') (9999.0, i=1,2*(numant+numunique)) 我很困惑 - 虽然我认为我对 write 语句的语法和格式有所了解,但我 ..
发布时间:2022-01-14 10:18:09 其他开发

关于在 C 中通过 iso_c_binding 使用 Fortran 函数

我花了几天时间学习 Fortran 的 C 互操作性,以便从 C 调用 Fortran 函数 DLL.在这里我找到了这个链接:在 C 中使用 Fortran 代码 我尝试像这样创建一个 Fortran DLL,而我的编译器是 Intel Fortran 编译器: 模块集成隐式无包含函数积分(func,a,b,intsteps)结果(积分)!DEC$ 属性 DLLEXPORT :: 集成界面 ..

文件位置的含义=“../"//文件名

文件位置 = "../"//文件名PRINT *,“试图打开",TRIM(文件名)打开(fh1,文件=文件位置,状态='旧',IOSTAT = io) 谁能告诉我第一行的“../"//是什么意思? 解决方案 字符串 ../ 是 Linux 的 当前工作目录的父目录.这在 Windows 机器上可能有效,也可能无效.两个字 // 表示用于字符串连接的 Fortran 运算符.所以 ..
发布时间:2022-01-14 10:17:20 其他开发

使用 Fortran 减少 Openmp 数组

我正在尝试并行化我编写的代码.我在对数组执行缩减时遇到问题.对于小型数组,这一切似乎都可以正常工作,但是当数组大小超过某个点时,我要么得到堆栈溢出错误,要么崩溃. 我尝试在编译时使用/F 增加堆栈大小,我在 Windows 上使用 ifort,我还尝试将 set KMP_STACKSIZE=xxx 传递给英特尔特定的堆栈大小减免.这有时会有所帮助并允许代码在我的循环中进一步前进,但最终并不能 ..
发布时间:2022-01-14 10:17:05 其他开发

我无法理解的 fortran 计时问题

我(在我的理论物理数值方法课程中)编写了一个非常简单的程序,用于在维度 2 中进行随机游走.它是: 程序 random_walk隐式无整数,参数 :: Nwalker = 1000000整数,参数 :: Nstep = 100整数,参数 :: Nmeas = 10整数 :: posx, posy, move整数 :: is, im, iw真正的 :: start_time, stop_time双 ..
发布时间:2022-01-14 10:16:43 其他开发

斐波那契数在一定期限后变为负数

我用 Fortran 编写了这个程序来显示直到第 x 项的斐波那契数: 程序斐波那契隐式无整数 :: x,p,c,i,t !初始化限制、前一个、当前、迭代和临时print *, "列出前 x 个斐波那契数:"read *, x ! 读取极限p=0 ! 设置前为零c=1 ! 将当前设置为 1做 i=1,xprint *, c !打印当前的斐波那契数t = c ! 将临时变量设置为当前变量c = c ..
发布时间:2022-01-14 10:16:37 其他开发

带有指针的 Fortran 函数导致正常赋值

在对此处找到的问题进行了一些讨论后 在 Fortran 中正确执行 Final 例程我认为了解具有指针结果的函数何时适合与普通或指针赋值一起使用会很有用.例如,给定这个简单的函数 函数 pointer_result(this)隐式无type(test_type),intent(in) 指针 :: this类型(测试类型),指针::pointer_result分配(指针结果)结束函数 我通常会 ..
发布时间:2022-01-14 10:16:28 其他开发

使用 clang 和 gfortran 编译

我正在尝试编译我最近开始工作的项目,并被要求在 clang 而不是 gcc 中编译代码.该项目有一个CMake文件,我尝试使用 cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ../src 但是抛出了一个错误,我认为这是因为 clang 没有 Fortran 编译器,并且项目的一部分有 Fortran 代码.有没有办法让它 ..
发布时间:2022-01-14 10:16:19 C/C++开发

如何在 Fortran 中以固定格式打印极小的双精度数?

有没有办法在 Fortran 中以固定格式打印极小的双精度数字?不知何故,“E"被截断了. 在下面的代码中将“ES15"更改为“ES18"没有帮助: 程序 print_double隐式无双精度 :: xx = 2.71818D-200写(*,*) "fmt=* : x = ", x写(*,fmt='(A,ES15.3)') " fmt=ES15.3: x = ", x写(*,fmt='(A ..
发布时间:2022-01-14 10:16:11 其他开发

我如何让 gfortran 或 ifort 告诉我它何时将 RE​​AL(4) 隐式提升为 REAL(8)?

我的任务是更改 HPC 应用程序部分的精度,记住它严重依赖自动矢量化.因此,编译器在发生任何类型的浮点转换时通知我很有用(因为这可能会对性能产生严重影响). -Wconversion 标志听起来应该适合我的需要: -Wconversion 警告不同类型之间的隐式转换. https://gcc.gnu.org/onlinedocs/gcc-4.1.0/gfortran/War ..
发布时间:2022-01-14 10:15:57 其他开发

使用常量参数调用函数时的段错误

我用 Fortran 编写了这个非常简单的代码: 程序苏隐式无真正的跑3写(*,*)运行3(0)结束程序 sureal*8 函数 ran3(iseed)隐式无整数iseed=iseed*153941+1跑3=浮点数(iseed)*2.328+0.5结束函数ran3 我在编译它时没有问题,但是当我执行代码时,我收到了这条消息: 程序收到信号 SIGSEGV:分段错误 - 无效的内存引用.此错误 ..
发布时间:2022-01-14 10:15:23 其他开发

包含的子例程中的变量和函数的范围规则

我无法理解为什么在子例程中声明的变量 (i) 会在包含的子例程中看到,但对于函数 (fie) 导致编译错误.我搜索了一个答案,并试图看看我是否可以在 Fortran 95 标准中找到一些东西,但徒劳无功. 我写了一个小例子程序: 程序 pgm打电话给结尾子程序a隐式无整数 :: 我双精度 :: fie我 = 7呼叫 b!write(*,*) fie(9)包含子程序 b双精度 :: x!双精 ..
发布时间:2022-01-14 10:15:13 其他开发