fortran90相关内容
我意识到,如果你写 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 ,您注意到了吗
..
我有一个带有例程的FORTRAN代码: SUBROUTINE READ_NC_VALS(NCID, RECID, VARNAME, VARDATA) integer ncid, recid character*(*) varname real*8 vardata dimension vardata(15,45,75) etc. 我想为这段代码增加一些灵活性,我想我会先添加一个可选的fl
..
我正在使用VIM主题molokai,如果有什么不同的话. 我最近一直在学习FORTRAN,当我使用VIM编写FORTRAN程序时,根据我的空白,我的颜色很奇怪. 例如,如果我按原样翻页(不缩进),则仅在单词的一部分上显示此紫色突出显示(有时不显示,请注意“打印"和“读取"). 如果我在其上进行分页,则看起来很正常: 我是VIM的新手(更不用说FORTRAN了),所以我不确定
..
英雄我使用的新代码.我已经尝试过了,如果我先声明了n,那么它就可以了,这不是我想要的.我需要知道总行数 (n),然后在模拟中使用该数字.但是,在变量声明中,我需要在读取数据之前缩小xy(n),如果这样做,代码将无法运行. 数据文件是两列随机模拟的普通数据 让我们这样说 1 3 2 4 3 6 4 8 5 9 6 8 7 1 8 9 99 88 我尝试了
..
我正在玩f2py.我对numpy固有类型与fortran 90类型感到困惑.似乎在与python交互时,我只能在fortran 90中使用单精度实数.让我用一个例子来说明: 说我有这个fortran 90模块test.f90,可以用f2py编译并导入python中: module test implicit none integer, parameter :: sp = select
..
我正在使用邻接列表方法创建图形.每个节点都表示为一个节点,该节点指向与其连接的其他节点.以下是我的代码 program main use graphs implicit none type(node),pointer :: start type(node), dimension(:), pointer :: grp integer :: n, ios=0, a,b, i op
..
我是个新手,不知道该术语,所以我无法在网络上找到答案. 在编程中,我不止一次想要做这样的事情. A和B是子例程,c和d是函数. A和B各自在其中多次调用一个函数. call A(c(x)) call A(d(x)) call B(c(x)) call B(d(x)) 此结构不起作用.有人告诉我,至少在这种情况下,Fortran不支持函数别名. (大多数涉及“别名"的搜索结果都
..
module foo contains subroutine bar() integer :: i(3) i(1) = 1 i(2) = 2 i(3) = 3 call baz(i, i) end subroutine subroutine baz(a,b) integer, intent(in) ::
..
我在模块中有一些动态的数组变量,后来在模块外部的两个子例程之一中分配了它们.但是,在一个子例程中,我希望数组为1D,在另一个子例程中,我希望数组为2D. 原则上,我希望在模块中添加类似的内容,但是我不认为在声明区域中可以做到这一点?: if (option1) then real (kind=8), allocatable :: arr1(:) else real (kind=
..
我喜欢fortran的数组切片表示法(array(1:n)),但我想知道是否在不必要时使用它们是否会对性能产生影响. 例如,考虑以下简单的快速排序代码(它可以工作,但显然并没有注意选择一个好的枢轴): recursive subroutine quicksort(array, size) real, dimension(:), intent(inout) :: array
..
编辑:Gfortran 6现在支持以下扩展:) 我有一些旧的f77代码,广泛使用UNION和MAP.我需要使用不支持这些扩展的gfortran进行编译.我已经弄清楚了如何转换除这些之外的所有不受支持的扩展,我很茫然.我对可能的方法有一些想法,但是还没有成功实现任何东西.我需要以与当前相同的方式访问现有的UDT.我可以重新实现UDT,但是它们的接口一定不能更改. 我所拥有的例子:
..
filelocation = "../"//filename PRINT *, "Attempting to open ", TRIM(filename) OPEN(fh1, FILE = filelocation, STATUS='old',IOSTAT = io) 有人可以告诉我第一行中的"../"//是什么意思吗? 解决方案 字符串 ../ 是L
..
我有一个基于隐式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) 您还将如何初始化此数组?
..
假设我正在尝试写出如下所示的CSV文件标题: STRING1 2001, 2002, 2003, 2004, 还有一些实现此目的的可变格式Fortran90代码 INTEGER X
..
我正在使用gfortran版本7.2.0.我是Fortran的新手.我知道有不同版本的Fortran.在下面的代码中,我使用不同的语法声明数组(或实际上是张量) program arrays implicit none integer :: m(3, 4) integer, dimension(3, 4) :: n print *, "m = ", m
..
我正在尝试编写一个RNG,该RNG还返回更新后的种子的值.这样做的可能显而易见的原因是,以后可以在不更改现有RNG值的情况下将新的随机变量添加到程序中.有关此问题的python/numpy版本,请参见例如:下面是一个(尝试性的)建议解决方案的用法示例: program main ! note that I am assuming size=12 for the random
..
以下代码仅生成一个简单的随机数三元组: program testrand integer, parameter :: nz = 160, nf = 160, nlt = 90 real :: tmpidx(3) integer :: idxarr(3), idx1, idx2, idx3, seed_size, ticks integer, allocatable :: seed(:)
..
我对在Fortran中编程用户定义的运算符的正确方法有疑问.更具体地说,我将提供我的问题的示例.我正在为称为“粒子"的球形粒子创建用户定义的数据类型.我想定义一个运算符,该运算符采用现有的粒子对象数组并向其中添加一个新的粒子对象.我想知道如何定义用户定义的运算符来执行此操作. 当前,在“粒子"的类型定义中,有以下几行: procedure, public:: addNewParticl
..
我主要使用Python进行科学编程,并且没有大量的Fortran(90/95)经验.对于我的一个项目,我想定义一个派生类型,并为该类型重载一堆运算符.至关重要的是,我希望派生类型的变量之一为可变长度的数组.至少,我在代码的不同部分需要两个不同的长度.如何才能最好地有效地做到这一点并避免代码重复? 我的第一种方法是使用可分配的数组,但是该方法涉及整个代码中的多个分配语句,包括重载的运算符.这也
..
使用Fortran 90子例程random_seed设置随机种子的方法非常简单. call random_seed( put=seed ) 但是我找不到有关设置种子的准则的任何信息(当您需要可重复性时,这是绝对必要的).我过去听过的民俗学建议标量种子应该很大.例如. 123456789比123更好.我可以在网上找到对此的唯一支持是,建议将ifort扩展功能ran()建议使用 我了解
..