fortran相关内容

fortran操作符重载:函数或子例程

最近我将.f90代码更新为.f03,而且我期待看到加速,因为我的旧版本在do循环(总共4000次)的每次迭代中涉及许多分配和释放(7个3D数组 - 45x45x45) 。使用派生类型,我在模拟开始时分配这些数组,并在最后解除分配它们。我认为我会看到加速,但实际上运行速度明显较慢(30分钟,而不是23分钟)。 我运行了一个profiler,看起来像add /减/乘/除运算符需要相对较长的时间。 ..

Fortran 66中的“DO”循环如何工作?

我正在读一本我在二手书店找到的旧书(再次)。这个被称为“Fortran技术 - 特别涉及非数值应用”,1972年由剑桥大学出版社出版的A. Colin Day。毕竟,跟上最新的软件开发是非常重要的; - ) 本书声称涵盖了Fortran-66(X3.9-1966),又名Fortran-IV,与 DATA 这里不相关的语句。 麻烦的是,这本书似乎留下了很多猜测,我的猜测相当不确定WRT ..
发布时间:2018-03-16 16:58:07 其他开发

数组构造函数中不同的CHARACTER长度(3/4),如何修剪字符串 - fortran

根据对类似问题的回答,我已经声明了这些字符 gfortran不允许具有不同组件长度的字符数组。不过,我想使用修剪功能,因为我需要添加空格来手动填充名称,然后这些变量在代码的另一部分中使用。我可以在创建数组的同时进行修剪吗? 错误:数组构造函数中不同CHARACTER长度(3/4) ) 如果我添加随机字符以使它们具有相同的长度,但由于显而易见的原因,我无法这么做。我用gfortran和m ..
发布时间:2018-03-16 16:58:02 其他开发

线程安全的统一随机数生成器

我有一些平行的Fortran90代码,其中每个线程需要生成相同的随机数序列。 我有一个随机数生成器,似乎是线程不安全的,因为对于给定的种子,我完全无法在每次运行时重复相同的结果该程序。 我在整个网络上都没有成功(几乎)浏览一些线程安全的RNG代码。任何人都可以向我提供(链接到)其中一个代码? 预先感谢! 解决方案 Fortran90的一个很好的伪随机数生成器可以在英特尔数 ..
发布时间:2018-03-16 16:57:57 其他开发

过程指针,派生类型

以下不在Intel Fortran XE 2011中编译: TYPE type1 procedure(interface1),POINTER: :p END TYPE type1 抽象接口 整数函数interface1(a) 实数,意图(in):: a END函数interface1 END INTERFACE 错误: 错误#8262:传递对象 ..
发布时间:2018-03-16 16:57:54 其他开发

Fortran:处理大小的整数值:〜700000000000

目前我正在学习Fortran95的知识(不要问为什么)...... 尽管我遇到了一个问题。如何处理大整数,例如。大小为:〜700000000000 INTEGER(KIND = 3)不能容纳这个数字。 如果任何人有兴趣,我可用的编译器是Silverfrost FTN95。 我使用整数来运行更大的一组数据。 您有什么建议吗? 标准解决方案因为Fortran 95,所以我认为 ..
发布时间:2018-03-16 16:57:53 其他开发

在Fortran 90中模拟名称空间

Fortran 90最麻烦的问题之一是缺少命名空间。在这个前面的问题中“如何使用Fortran 90模块数据“from Pete ,已经讨论过USE的主要问题就像Python中的”从模块导入*“那样行为:在模块中声明为公共的所有内容都按原样导入导入模块的范围内。没有前缀。这使得非常非常难以理解的是,在阅读一些代码时,给定的标识符来自哪里,以及是否仍然使用给定的模块。 可能的解决方案,在上面链 ..
发布时间:2018-03-16 16:57:47 其他开发

LAPACK:打包存储矩阵上的操作速度更快吗?

我想用Fortran和LAPACK对一个真正的对称矩阵进行三角化。 LAPACK基本上提供了两个例程,一个在全矩阵上运行,另一个在包装存储的矩阵中运行。虽然后者确实使用较少的内存,但我想知道是否有什么可以说速度差异?解决方案 这是一个经验问题,当然:但是一般来说,没有任何东西是免费的,而更少的内存/更多的运行时间是一个非常常见的折衷。 在这种情况下,数据的索引是对于打包案例来说更复杂,所以当 ..
发布时间:2018-03-16 16:57:43 其他开发

如何在Fortran中执行块注释?

我在C ++中看到了 / * block comment * / 用于块注释。我知道我可以通过使用!或 c 来进行行注释,但在Fortran中是否有任何选项可用于块注释? 解决方案 不,块评论的奇怪概念与Fortran不同。您的编辑器或开发环境可能提供一种方式来一次性评论一行代码。 ..
发布时间:2018-03-16 16:57:40 其他开发

指定gfortran应寻找模块的目录

我现在正在编译基于模块的程序(例如依赖于模块 bar 的主程序 foo ),如下: gfortran -c bar.f90 gfortran -o foo.exe foo.f90 bar.o 当 foo.f90 和 bar.f90 位于同一个目录中。当我在 use bar 时,如何指定gfortran应该查找 bar.o 的目录C> foo.f90 ? (即我不想指定 ..
发布时间:2018-03-16 16:57:37 其他开发

用不同的级别重载fortran接口

在Fortran模块中,我有一个函数,它接受一个数组及其名称,从数据库(实际调用一个C函数)获取数组的形状,将该数组复制到一个临时缓冲区中,并将该缓冲区传递给另一个C函数来处理它。此Fortran函数的名称为整型数据fs_WriteData_i,实型为fs_WriteData_f,双精度型为fs_WriteData_d。所有这些功能不仅可以接受一维阵列,还可以接受2D,3D和4D阵列,并且它们完美 ..
发布时间:2018-03-16 16:57:31 其他开发

我如何确保我的Fortran FORALL构造被并行化?

我已经给出了表示金属板表面温度点的2D矩阵。矩阵(板)的边缘保持恒定在20摄氏度,并且在一个预定义点处存在100摄氏度的恒定热源。所有其他网格点最初设定为50摄氏度。我的目标是取所有内部网格点并通过迭代平均计算其周围的四个温度来计算其稳态温度格点(i + 1,i-1,j + 1,j-1)直到达到收敛(迭代之间的变化小于0.02摄氏度)。 据我所知,我迭代网格点的顺序是不相关的。 对我来 ..
发布时间:2018-03-16 16:57:28 其他开发

fortran,将可分配数组传递给有正确边界的子例程

我需要在一个程序中传递一些可分配的数组到子例程中,并且我需要知道我是这样做的方式是否在标准中。 如果你知道我可以在哪里搜索fortran的标准,请告诉我。 以下是一些可以更好解释的代码 程序测试 使用modt99 隐式无 真实(pr) ,dimension(:),allocatable :: vx allocate(vx(-1:6)) vx =(/ 666 ..
发布时间:2018-03-16 16:57:25 其他开发

MPI Fortran代码:如何通过openMP共享节点上的数据?

现在,我正面临一种情况,一组数据增长非常大,但对于每个进程,所以我宁愿将它存储在内存中,每个节点只有一次,并且一个节点上的所有进程访问相同的数据。 为每个进程存储一次超过可用的RAM。 是否有可能通过openMP实现类似的功能? 数据共享节点是我想要的唯一东西,不需要其他每个节点都需要并行化,因为这已经通过MPI完成了。 解决方案 如果仅用于共享大块数据,则不需要实施混合MP ..
发布时间:2018-03-16 16:57:12 其他开发

确定Fortran中的变量类型

在Fortran中,有没有办法确定变量的类型? 一个可能的用例需要变量的类型如下。我们将一个变量的类型作为参数传递给一个函数,以便能够使用该函数调用特定于类型的代码,从而消除了为每个数据类型分别使用相似的函数的必要。 解决方案 好吧,如果你想知道KIND内部函数和POINTER,你可能可以做你想做的事情,但是如果你只关心函数和子程序的签名,它到Fortran。如果你定义 函数c ..
发布时间:2018-03-16 16:57:08 其他开发