fortran相关内容

Fortran 中 INCLUDE 和模块之间的区别

使用带有 use 语句的模块或带有 include 语句的隔离文件之间的实际区别是什么?我的意思是,如果我有一个在整个程序中经常使用的子例程:我应该何时或为什么将它放在一个模块中,或者只是将它写在一个单独的文件中,并将它包含在程序的每个其他需要它的部分中用过吗? 另外,将所有打算进入模块的子例程编写在单独的文件中并在模块内使用 include 是否是一种好习惯?特别是如果子程序中的代码很长, ..
发布时间:2022-01-14 10:00:25 其他开发

“%"是什么意思?在 Fortran 中是什么意思?

我正在尝试阅读一些 Fortran 代码,但无法确定 %(百分号)的作用. 它在一行中: x = a%rho * g * (-g*a%sigma + m%gb * m%ca * (1.6 * a%rho+g)) 它有什么作用? 解决方案 在 Fortran 90 中,它们允许您像在 C++ 中一样创建结构.它基本上充当点 (.) 运算符. 来自 http://www.la ..
发布时间:2022-01-14 10:00:16 其他开发

将 Fortran、C++ 与 R 集成

我的任务是用 C++ 重写一个 R 函数来加速 while 循环.除了 .Fortran() 之外,所有的 R 代码都在 Rcpp 和 Armadillo 的帮助下重写了.我首先尝试使用 Rinside,但正如 Dirk 所指出的那样,它以非常慢的速度工作.(数据经过 R -> C++ -> R -> Fortran 代价高昂) 由于我不想用 C++ 重写 Fortran 代码,反之亦然,通 ..
发布时间:2022-01-14 10:00:08 C/C++开发

强制 gfortran 在第一个 NaN 处停止程序

为了调试我的应用程序 (fortran 90),我想将所有 NaN 转换为信号 NaN. 使用默认设置,我的程序在没有任何信号的情况下工作,只在文件中输出 NaN 数据.我想找到生成 NaN 的点.如果我可以用信号 NaN 重新编译程序,我将在第一个错误浮动操作所在的第一个点得到一个 SIGFPE 信号. 解决方案 你要找的标志是 -ffpe-trap=invalid;我通常添加 , ..
发布时间:2022-01-14 10:00:02 其他开发

Fortran 90 资源?

我正在学习 Fortran 90 课程,我正在寻找任何关于 Fortran 的好网站. 有人知道吗? 解决方案 另外,comp.lang.fortran 是一群非常友好的人. 但是,除此之外,您到底在寻找什么?某种介绍性教程,一些专门的东西……你必须提供更多数据. ..
发布时间:2022-01-14 09:59:52 其他开发

在 Fortran 90 中,将数组按行写入文本文件的好方法是什么?

我是 Fortran 的新手,我希望能够以逐行方式(列之间的空格和每行在自己的行上)将二维数组写入文本文件.我尝试了以下方法,它似乎在以下简单示例中有效: 程序测试3隐式无整数 :: i, j, k, numrows, numcols整数,维度(:,:),可分配 :: a行数=5001数字=762ALLOCATE(a(numrows,numcols))k=1DO i=1,大小(a,1)DO j= ..
发布时间:2022-01-14 09:59:43 其他开发

在现代学习 FORTRAN

我最近来维护大量的科学计算密集型 FORTRAN 代码.尽管有 google 和两本入门级书籍.该代码充斥着“性能增强改进".有人对 de-将 FORTRAN 优化到 CS 101 级别有任何指南或实用建议吗?有谁知道 FORTRAN 代码优化是如何运作的?Java/C++/.NET 开发人员接管 FORTRAN 77/90 代码库时,是否有任何典型的 FORTRAN“陷阱"? 解决方案 ..
发布时间:2022-01-14 09:59:36 其他开发

Fortran sqrt() 错误

我是 Fortran 的新手,我坚持使用以下程序来使用二次方程求根. 显示以下错误: d = sqrt(bsq \xE2\x80\x93 ac4)1错误:(1) 处的参数列表中有语法错误 程序二次隐式无实数 :: a, b, c, root1, root2实数 :: bsq, ac4, dprint *, '请输入系数 a、b 和 c 作为实数'读*、a、b、cbsq = b*bac ..
发布时间:2022-01-14 09:59:27 其他开发

如何在fortran中的特定行写入

我想从文件夹中复制一个文件并使用 fortran 在文件的特定行写入.我正在使用 Windows,GNU fortran 编译器.这是示例文件和代码.file1.txt 1 *2 **3 ***4 ****5 *****6 ******7 *******8 ********9 *********10 ********** 代码如下:我定义了一些变量.只有当两个条件匹配(特定变量值和行号)时,我 ..
发布时间:2022-01-14 09:59:20 其他开发

Fortran 中的外部声明(全局)变量

我想知道是否可以声明一个变量并将声明转移到另一个子例程或程序(因此成为全局) 例如 程序主程序隐式无打电话给我的子打印 *, x结束程序主子程序 mysub隐式无整数,参数 :: x = 1结束子程序 mysub 将打印“1" 这可能吗?我想这样做是因为我正在处理的程序有大量变量,除非必要,否则我宁愿避免复制. 解决方案 在现代 Fortran 中最直接的方法是使用模块. ..
发布时间:2022-01-14 09:59:10 其他开发

Fortran 中的隐式声明错误

我已经检查了隐式类型声明的所有格式,但未能找出以下行中的错误.我一直在使用 f77 运行代码来编译它. 隐式实数*4 (a-h,o-z) 在运行程序时,上面的语句出现以下错误. 隐式实数*4 (a-h,o-z) 1 错误:(1) 处的变量列表中有意外字符 解决方案 如果您使用的是 F77 或更早版本,请遵循一些基本规则. 把隐式行放在首位 第 1-5 列用于 ..
发布时间:2022-01-14 09:59:01 其他开发

实变量精度

我在 FORTRAN 77 中有以下代码: REAL*8 :: dmdm=1.-1.E-12写(6,*)'dm:',dm 我得到:dm: 1 这样好吗?我想获得 dm=0.999999999999 解决方案 如注释中所述,您需要指定常量的精度.此外,real*8 已过时.(它总是扩展吗?)这是一种现代的编写方式,使用 ISO Fortran 环境获取 64 位实数类型,并在声明和 ..
发布时间:2022-01-14 09:58:43 其他开发

zgeev() LAPACK 的结果不正确/不一致

我正在尝试使用 ZGEEV 来计算特征值和特征向量,但是在输出不正确并且在不同优化级别使用时也不一致时遇到了一些问题.下面是我的 Fortran 代码,其结果为 -O1 和 -O2 优化级别.我还包含了 Python 代码以进行比较. 我只能假设我以某种方式错误地调用了 zgeev(),但是我无法确定如何.我相信我的 LAPACK 安装不太可能出现问题,因为我比较了两台不同计算机(Windo ..
发布时间:2022-01-14 09:58:35 Python

对变量的模糊引用

所以我正在做 2 个链接到主程序的模块.第一个定义了所有变量,第二个定义了函数. 模块1: 模块 zmienne隐式无整数,参数::ngauss = 8整数,参数 :: out_unit=1000整数,参数 :: out_unit1=1001整数,参数 :: out_unit2=1002, out_unit3=1003实数(10),参数 :: error=0.000001real(10): ..
发布时间:2022-01-14 09:58:09 其他开发

gfortran 编译器错误:求幂结果超出 INTEGER(4) 的范围

我在 fortran 中有这一行,但标题中出现编译器错误.dFeV 是一维实数数组. dFeV(x)=R1*5**(15) * (a**2) * EXP(-(VmigFe)/kbt) 作为记录,变量名是继承的,不是我的错.我认为这是一个问题,因为没有内存空间来计算右侧的值,然后我将其存储在左侧作为真实值(这将有足够的空间),但我不知道如何为此分配更多空间计算. 解决方案 问题出现是因为 ..
发布时间:2022-01-14 09:57:53 其他开发

格式化读取和隐含执行

在 Fortran 中,可以选择使用隐含循环.它们通常用于打印,具有以下结构. write(*,'(5I6)') (i,i=1,20)!输出1 2 3 4 56 7 8 9 1011 12 13 14 1516 17 18 19 20 这将允许写入 5 个宽度为 6 的整数,完成后自动转到下一行.因此,它对于格式化非常有用. 问题是这是否可以反过来进行 read(*,'(5I6)') ..
发布时间:2022-01-14 09:57:44 其他开发

mpi 改变了它不应该改变的变量

我有一些 Fortran 代码正在与 MPI 进行并行处理,这些代码确实很奇怪.首先,有一个变量 nstartg,我从 boss 进程向所有工人广播: 调用 mpi_bcast(nstartg,1,mpi_integer,0,mpi_comm_world,ierr) 变量 nstartg 在程序中永远不会再被更改.稍后,我让老板进程将数组 edge 的 eproc 元素发送给工人: if ( ..
发布时间:2022-01-14 09:57:37 其他开发

从 g95 移动到 gfortran 时,“可分配数组必须具有延迟形状"

从使用 g95 编译器转换到 gfortran 时,当我尝试编译以前的工作代码时出现以下错误 错误:(1) 处的可分配数组“"必须具有延迟形状 这发生在我所有可分配数组的所有子例程中.下面是一个例子. SUBROUTINE TEST(name,ndimn,ntype,nelem,npoin,nface,inpoel,coord,face)隐式无整数:: i, j,测试整数,INTENT(O ..
发布时间:2022-01-14 09:57:12 其他开发

gfortran IEEE 异常不准确

我们在一台新的 64 b 机器上使用 gfortran (5.3.1)、Fedora 23.使用简单的 gfortran -o 进行编译(我们没有使用 -ffpe-trap 选项!),会引发“classical-trivial"警告: 注意:以下浮点异常是信号:IEEE_INVALID_FLAG 这是由于 INEXACT 异常(类型 2.0/3.0).DDD 调试器指向一个实常数 (180d0 ..
发布时间:2022-01-14 09:57:05 其他开发