fortran90相关内容

fortran 90中的NaN问题

我意识到,如果你写 Real (Kind(0.d0))::x,y x = sqrt(-1.d0) y = sqrt(-1.d0) if (x == y) then write(*,*)'yep, they are equals', x endif 它使用ifort编译就可以了. 但是没有写任何东西,条件总是 false ,您注意到了吗 ..
发布时间:2020-11-10 07:06:32 其他开发

一个简单的可选参数如何导致数据损坏?

我有一个带有例程的FORTRAN代码: SUBROUTINE READ_NC_VALS(NCID, RECID, VARNAME, VARDATA) integer ncid, recid character*(*) varname real*8 vardata dimension vardata(15,45,75) etc. 我想为这段代码增加一些灵活性,我想我会先添加一个可选的fl ..
发布时间:2020-11-10 07:05:30 其他开发

Vim突出显示FORTRAN的怪异部分

我正在使用VIM主题molokai,如果有什么不同的话. 我最近一直在学习FORTRAN,当我使用VIM编写FORTRAN程序时,根据我的空白,我的颜色很奇怪. 例如,如果我按原样翻页(不缩进),则仅在单词的一部分上显示此紫色突出显示(有时不显示,请注意“打印"和“读取"). 如果我在其上进行分页,则看起来很正常: 我是VIM的新手(更不用说FORTRAN了),所以我不确定 ..
发布时间:2020-11-10 07:04:28 其他开发

在Fortran中读取行号未知的文件

英雄我使用的新代码.我已经尝试过了,如果我先声明了n,那么它就可以了,这不是我想要的.我需要知道总行数 (n),然后在模拟中使用该数字.但是,在变量声明中,我需要在读取数据之前缩小xy(n),如果这样做,代码将无法运行. 数据文件是两列随机模拟的普通数据 让我们这样说 1 3 2 4 3 6 4 8 5 9 6 8 7 1 8 9 99 88 我尝试了 ..
发布时间:2020-11-10 07:04:23 其他开发

f2py:在与python交互时在fortran中指定实际精度吗?

我正在玩f2py.我对numpy固有类型与fortran 90类型感到困惑.似乎在与python交互时,我只能在fortran 90中使用单精度实数.让我用一个例子来说明: 说我有这个fortran 90模块test.f90,可以用f2py编译并导入python中: module test implicit none integer, parameter :: sp = select ..
发布时间:2020-11-10 07:04:19 Python

每次以不同的函数作为参数多次调用子例程

我是个新手,不知道该术语,所以我无法在网络上找到答案. 在编程中,我不止一次想要做这样的事情. A和B是子例程,c和d是函数. A和B各自在其中多次调用一个函数. call A(c(x)) call A(d(x)) call B(c(x)) call B(d(x)) 此结构不起作用.有人告诉我,至少在这种情况下,Fortran不支持函数别名. (大多数涉及“别名"的搜索结果都 ..
发布时间:2020-11-10 06:57:46 其他开发

动态数组等级

我在模块中有一些动态的数组变量,后来在模块外部的两个子例程之一中分配了它们.但是,在一个子例程中,我希望数组为1D,在另一个子例程中,我希望数组为2D. 原则上,我希望在模块中添加类似的内容,但是我不认为在声明区域中可以做到这一点?: if (option1) then real (kind=8), allocatable :: arr1(:) else real (kind= ..
发布时间:2020-11-10 06:50:50 其他开发

将数组切片作为参数传递时的Fortran性能

我喜欢fortran的数组切片表示法(array(1:n)),但我想知道是否在不必要时使用它们是否会对性能产生影响. 例如,考虑以下简单的快速排序代码(它可以工作,但显然并没有注意选择一个好的枢轴): recursive subroutine quicksort(array, size) real, dimension(:), intent(inout) :: array ..
发布时间:2020-11-10 06:50:21 其他开发

将FORTRAN DEC UNION/MAP扩展转换为其他任何文件

编辑:Gfortran 6现在支持以下扩展:) 我有一些旧的f77代码,广泛使用UNION和MAP.我需要使用不支持这些扩展的gfortran进行编译.我已经弄清楚了如何转换除这些之外的所有不受支持的扩展,我很茫然.我对可能的方法有一些想法,但是还没有成功实现任何东西.我需要以与当前相同的方式访问现有的UDT.我可以重新实现UDT,但是它们的接口一定不能更改. 我所拥有的例子: ..
发布时间:2020-11-10 06:50:18 其他开发

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

filelocation = "../"//filename PRINT *, "Attempting to open ", TRIM(filename) OPEN(fh1, FILE = filelocation, STATUS='old',IOSTAT = io) 有人可以告诉我第一行中的"../"//是什么意思吗? 解决方案 字符串 ../ 是L ..
发布时间:2020-11-10 06:47:55 其他开发

隐含的DO循环效率低下吗?

我有一个基于隐式do循环的数组初始化,给定的大小为N. J=(N+1)/2 XLOC(1:N) = (/ (I-J, I=1,N) /) 在F90 +的上下文中,建议使用(/../)语法,或者使用FORALL语句更有效. 示例:先N=19然后XLOC=(-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9) 您还将如何初始化此数组? ..
发布时间:2020-11-10 06:47:39 其他开发

随机数生成器(RNG/PRNG)返回种子的更新值

我正在尝试编写一个RNG,该RNG还返回更新后的种子的值.这样做的可能显而易见的原因是,以后可以在不更改现有RNG值的情况下将新的随机变量添加到程序中.有关此问题的python/numpy版本,请参见例如:下面是一个(尝试性的)建议解决方案的用法示例: program main ! note that I am assuming size=12 for the random ..
发布时间:2020-11-10 06:40:07 其他开发

用户在Fortran中定义的运算符

我对在Fortran中编程用户定义的运算符的正确方法有疑问.更具体地说,我将提供我的问题的示例.我正在为称为“粒子"的球形粒子创建用户定义的数据类型.我想定义一个运算符,该运算符采用现有的粒子对象数组并向其中添加一个新的粒子对象.我想知道如何定义用户定义的运算符来执行此操作. 当前,在“粒子"的类型定义中,有以下几行: procedure, public:: addNewParticl ..

派生类型的可变长度数组

我主要使用Python进行科学编程,并且没有大量的Fortran(90/95)经验.对于我的一个项目,我想定义一个派生类型,并为该类型重载一堆运算符.至关重要的是,我希望派生类型的变量之一为可变长度的数组.至少,我在代码的不同部分需要两个不同的长度.如何才能最好地有效地做到这一点并避免代码重复? 我的第一种方法是使用可分配的数组,但是该方法涉及整个代码中的多个分配语句,包括重载的运算符.这也 ..
发布时间:2020-11-10 06:36:36 其他开发

正确设置随机种子以确保可重复性

使用Fortran 90子例程random_seed设置随机种子的方法非常简单. call random_seed( put=seed ) 但是我找不到有关设置种子的准则的任何信息(当您需要可重复性时,这是绝对必要的).我过去听过的民俗学建议标量种子应该很大.例如. 123456789比123更好.我可以在网上找到对此的唯一支持是,建议将ifort扩展功能ran()建议使用 我了解 ..
发布时间:2020-11-10 06:36:29 其他开发