标签: fortran90

"真正的*8"是什么意思?

用Fortran 90编写的程序手册说:"所有实际变量和参数都以64位精度(即real*8)指定."

根据维基百科,单精度对应于32位精度,而双精度对应于64位精度,因此显然程序使用双精度.

但是什么real*8意思呢?

我认为这8意味着8位数字跟随小数点.然而,维基百科似乎说单精度通常提供6-9位数,而双精度通常提供15-17位数.这是否意味着语句"64位精度"与real*8?不一致?

precision fortran bit fortran90

28
推荐指数
3
解决办法
5万
查看次数

Fortran 90中的标准输入和输出单元?

如何读取和写入标准输入,输出和错误流stdin,stdout以及stderr在Fortran中?我听说写stderr,例如,使用write(5, fmt=...)5单位的stderr,我知道写的方式stdout是使用write(*, fmt=...).

如何使用ifort编译器读取和写入标准输入和输出单元?

编译器版本:

英特尔(R)Fortran编译器,用于运行在英特尔(R)64,版本10.0 Build 20070426上的应用程序包ID:l_fc_p_10.0.023版权所有(C)1985-2007英特尔公司.版权所有

stdin fortran stdout stderr fortran90

27
推荐指数
3
解决办法
2万
查看次数

如何在Sublime Text 2中为Fortran 90获得正确的文本颜色突出显示?

在sublime论坛上有几个链接,关于如何让Sublime Text 2与Fortran 90一起工作http://www.sublimetext.com/forum/viewtopic.php?f=4&t=770,但他们没有似乎很适合作为评论标识符"!" 没有得到很好的待遇.

我使用原始建议的Punchcard.tmLanguage文件快速组装了一个解决方案,并修改了字典中的第一个块来处理"!" 作为评论(可在此处获得:https://gist.github.com/4209445).

Sublime Text 2是一个出色的文本编辑器,它支持Fortran可能对理论物理和金融领域的许多人有所帮助.如果有人知道更好的解决方案,请告诉我.

谢谢!

fortran fortran90 sublimetext2

26
推荐指数
2
解决办法
2万
查看次数

函数在Fortran中返回数组

我的理解是你可以从Fortran中的函数返回一个数组,但由于某种原因,我的代码只返回我要求它返回的数组中的第一个值.这是功能:

function polynomialMult(npts,x,y)
    integer npts
    double precision x(npts), results(npts + 1), y(npts,npts)

    polynomialMult =  x(1:npts) + 1

end function
Run Code Online (Sandbox Code Playgroud)

这就是我所说的

 C(1:numPoints) = polynomialMult(numPoints,x,f)

print *, C(1:numPoints)`
Run Code Online (Sandbox Code Playgroud)

现在它没有做任何有用的事情,因为我在编写逻辑之前试图理解语法.我看到了一些关于为函数指定类型的东西,但是当我写的时候

integer function polynomialMult(npts,x,y)
Run Code Online (Sandbox Code Playgroud)

或者无论我得到编译错误.

arrays fortran function fortran90

22
推荐指数
1
解决办法
4万
查看次数

假设大小数组:冒号与星号 - DIMENSION(:) arr与arr(*)

这两种声明假定大小数组的方法之间有什么区别吗?

例如

real, dimension(:) :: arr
Run Code Online (Sandbox Code Playgroud)

real               :: arr(*)
Run Code Online (Sandbox Code Playgroud)

arrays fortran fortran90

21
推荐指数
2
解决办法
1万
查看次数

无法通过自制软件安装gfortran

当我试图安装gfortran时,我收到了此消息.

~$ brew install gfortran
Error: No available formula for gfortran
GNU Fortran is now provided as part of GCC, and can be installed with:
  brew install gcc
Run Code Online (Sandbox Code Playgroud)

我的问题是如何用自制软件或端口安装gfortran?

要么

如果现在GNU Fortran是GCC的一部分我如何使用gcc编译fortran代码?

我不确定我是否误解了一些我记得上次我仍然可以使用gfortran编译我的代码但现在它不起作用的东西.

更多的信息:

当我使用命令时,brew list我仍然看到gfortran在那里,但不能使用它.

更多信息(最新):

好的,现在我可以使用gfortran命令,但另一个问题来了

~$ gfortran-4.9 hello.f
dyld: Library not loaded: /usr/local/lib/libcloog-isl.4.dylib
  Referenced from: /usr/local/Cellar/gcc/4.9.2/libexec/gcc/x86_64-apple-darwin14.0.0/4.9.2/f951
  Reason: image not found
gfortran-4.9: internal compiler error: Trace/BPT trap: 5 (program f951)
Abort trap: 6
Run Code Online (Sandbox Code Playgroud)

homebrew fortran gfortran fortran90

19
推荐指数
1
解决办法
2万
查看次数

单个命令用于打开文件或创建文件以及附加数据

我想知道在Fortran中是否可以只使用一个命令(带选项/说明符)来执行以下操作:

  1. 打开文件(如果存在)并附加一些数据(这可以通过以下方式完成:open(unit=40,file='data.data',Access = 'append',Status='old')但如果文件不存在则会发出运行时错误)

  2. 如果文件不存在则创建该文件并写入一些数据.

我目前正在使用inquire来检查文件是否存在,但我仍然必须使用该open语句来追加或写入数据.

fortran fortran90

18
推荐指数
3
解决办法
4万
查看次数

如何将可分配数组传递给Fortran中的子例程

以下代码返回分段错误,因为我尝试传递的可分配数组未被正确识别(大小返回1,应该是3).在这个页面(http://www.eng-tips.com/viewthread.cfm?qid=170599)中,一个类似的例子似乎表明它应该在F95中正常工作; 我的代码文件有.F90扩展名,但我尝试将其更改为F95,我正在使用gfortran进行编译.

我的猜测是问题应该是我将可分配数组传递给子程序的方式; 我究竟做错了什么?

!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%!
 PROGRAM test
!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%!
 IMPLICIT NONE
 DOUBLE PRECISION,ALLOCATABLE :: Array(:,:)
 INTEGER                      :: iii,jjj

 ALLOCATE(Array(3,3))
 DO iii=1,3
 DO jjj=1,3
    Array(iii,jjj)=iii+jjj
    PRINT*,Array(iii,jjj)
 ENDDO
 ENDDO
 CALL Subtest(Array)

 END PROGRAM
!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%!
 SUBROUTINE Subtest(Array)
 DOUBLE PRECISION,ALLOCATABLE,INTENT(IN) :: Array(:,:)
 INTEGER                                 :: iii,jjj

 PRINT*,SIZE(Array,1),SIZE(Array,2)
 DO iii=1,SIZE(Array,1)
 DO jjj=1,SIZE(Array,2)
    PRINT*,Array(iii,jjj)
 ENDDO
 ENDDO

 END SUBROUTINE
!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%!
Run Code Online (Sandbox Code Playgroud)

arrays fortran gfortran fortran90

17
推荐指数
2
解决办法
4万
查看次数

如何在fortran中阻止评论?

/* block comment */在C++中看到了块注释.我知道我可以使用!或进行行注释c,但在Fortran中是否有任何块注释选项?

fortran fortran90

17
推荐指数
4
解决办法
3万
查看次数

正确使用PURE关键字Fortran

我正在钻研Fortran,我遇到了pure关键字,指定了没有副作用的函数/子程序.

我有一本书,S Chapman的Fortran 90/95,它引入了pure关键字,但奇怪的是没有提供"良好的编码实践"用途.

我想知道如何在程序中使用这个关键字.只是环顾四周,对我来说很明显,大多数没有副作用的程序都没有必要包含pure关键字.

那么它最好用在哪里?只有在程序中才能完全保证没有副作用?或者也许在程序中,计划elemental稍后转换为程序?(elemental必须首先执行程序pure.)

fortran keyword fortran90 fortran95

17
推荐指数
2
解决办法
7039
查看次数