Articles of fortran

套接字编程gfortran

我希望能够在我的Fortran应用程序中调用networkingfunction。 我的老板希望我在Fortran中做所有的事情,而不是使用C和Fortran。 我们已经在Windows上使用PGI的Fortran编译器完成了一个应用程序的版本。 我们正在把它移到Linux,我们可能会使用它们的编译器。 现在,我正在使用gfortran。 我为这些networking调用创build了一个接口,并且编译和链接。 下面的代码与我正在做的类似,除了接口和常量在模块中。 PROGRAM MAIN INTEGER,PARAMETER ::AF_INET = 2 INTEGER,PARAMETER ::SOCK_STREAM = 1 INTEGER,PARAMETER ::IPPROTO_TCP = 6 INTERFACE FUNCTION socket(domain,type,protocol) INTEGER ::socket,domain,type,protocol END FUNCTION END INTERFACE sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP) WRTIE(*,*)"Socket returned: ",sock END PROGRAM 当我运行该程序时,套接字函数无法返回-1。 我真的不知道发生了什么事。 我不在命令行中添加任何库,所以我猜想它正确地链接到默认库。 我编译使用 gfortran -o MAIN_PROGRAM MAIN_PROGRAM.f90 -fno-underscoring

执行命令行并返回命令输出

目前,我正在使用非标准SYSTEM内部例程(类似于Fortran 2008 EXECUTE_COMMAND_LINE内部函数)从我的fortran程序中使用shell命令行调用: CALL SYSTEM(commandStr) 其中commandStr是包含我要执行的shell命令的string。 此刻,我不知道直接的方式来返回commandStr的输出,但只有它的返回状态。 所以,我现在正在做的是将输出写入文件,然后从Fortran程序中读取文件。 例: CALL SYSTEM('sed ''s/,//g'' myFile > dummyFile') 如果我想从myFile中删除逗号。 然后我使用OPEN和READ来获取dummyFile的内容。 这工作得很好,但是我很关心从磁盘写入/读取文件,特别是如果我在一个长的循环内执行此操作,并且commandStr输出很大。 有没有办法将commandStr输出redirect到我可以直接从Fortran程序访问的内存缓冲区(而不是硬盘)(也许是通过一个特定的UNIT号码)?

fortran:如何获取集群的节点名称

我正在Linux系统上运行一个集群上运行fortran代码。 当代码开始运行时,我希望它输出运行节点的一些基本信息,尤其是节点名称。 如何在Fortran中做到这一点。

我在哪里可以得到的文件在红帽linux上安装f2c?

我正在寻找一个rpm或简单的安装说明让f2c在我的红帽linux操作系统上工作。 我是Linux新手,很难在谷歌上find这样的东西。 (目标是使用f2c将简单的fortran77文件转换为c,然后编译) 有人有什么build议吗?

英特尔Fortran Composer 2011和Linux Mint 12

我在Linux Mint 12系统上使用英特尔Fortran Composer 2011。 每次(和每个用户)我重新启动计算机我需要设置环境variables。 source /opt/intel/composer_xe_2011_sp1.9.293/b​​in/compilervars.sh intel64 有没有办法让所有的用户自动? 对不起我可怜的英语。 谢谢,CP

用随机数据填充内存

有没有办法用随机数据填充Linux机器上的免费RAM? 我这样问的原因:我正在一个在Fortran中进行数值编程的小组工作。 有时候,人们会使用双精度实数工作,所以那些给出双精度结果的程序只能给出单精度的结果。 如果我的理解是正确的,那么在这样的程序中,单精度限制之后的结果会随机波动。 也就是说,如果您多次使用相同的input运行相同的程序,则每次都会得到随机的不同结果。 你看到的(随机部分)取决于机器可用RAM中的随机值。 但实际上,如果你在同一台机器上反复运行程序,内存中的相同部分往往会反复使用,它们中的随机数据是相同的,每次都会有相同的输出。 我的想法是,如果你可以用随机数据覆盖内存,你实际上会看到程序输出中的随机波动。 这将使得更容易find这些错误。 这个想法是否重要?如果不是,我该如何填充内存? 我可以pipe/ dev /随机进入内存,或者什么?

增加虚拟内存而不增加VmSize

我在Google和这个网站上search了我的问题,但是我仍然不明白这个解决scheme。 我有一块RECV数据的MPI程序。 程序在虚拟内存不足的情况下在大arrays上崩溃,所以我开始考虑/proc/self/status文件。 在MPI_RECV之前是: Name: model.exe VmPeak: 841640 kB VmSize: 841640 kB VmHWM: 15100 kB VmRSS: 15100 kB VmData: 760692 kB 之后: Name: model.exe VmPeak: 841640 kB VmSize: 841640 kB VmHWM: 719980 kB VmRSS: 719980 kB VmData: 760692 kB 我在Ubuntu上testing它,通过系统监视器,我看到这个内存在增加。 但我很困惑, VmSize (和VmPeak )参数没有改变。 问题是 – 真实内存使用情况的指标是什么? 这是否意味着真正的指标是VmRSS ? (和VmSize只分配但仍然没有使用内存)

Fortran源代码,但没有findFortran编译器

我试图在Python中安装pyOpt,我得到这个错误: 错误:库algencan具有Fortran源,但找不到Fortran编译器 我在Windows 7上使用Anaconda,我试图安装“Microsoft Visual C ++编译器为Python 2.7”,但我得到了同样的错误。

在excel / fortran dll连接中文件位置的问题

平台:WinXP SP2,英特尔Fortran 11,Excel 2007 我无法连接一个DLL文件与Excel。 该dll文件相对简单: subroutine FortranCall (r1, num) !DEC$ ATTRIBUTES DLLEXPORT, STDCALL, REFERENCE, ALIAS:"FortranCall" :: FortranCall integer, intent(in) :: r1 character(10), intent(out) :: num !DEC$ ATTRIBUTES REFERENCE :: num num = '' write (num,'(i0)') r1 * 2 return end subroutine FortranCall 用ifort / nologo / dllbuild立Fcall.f90 ,然后拷贝到C盘的“temp”目录下(这里怎么写一个反斜杠,除了复制/粘贴)? 我有一个Excel文件,在Sheet1中: Private Sub CommandButton1_Click() Dim r1 […]

forrt1:严重(170):程序exception – 堆栈溢出

并提前感谢您的帮助! 我已经编译了一个程序(我没有写),它在Mac上工作得很好,但是当我尝试在Windows上执行程序时,程序开始执行后不久就收到以下错误消息: forrt1:严重(170):程序exception – 堆栈溢出 我不是一个ifort或Fortran用户,而是试图编译一个工作程序。 我做了一个“ifort – 版本”,我正在使用版本12.0.0.104的英特尔Visual Fortran编译器XE。 我已经在这个问题上工作了好几天了,而且我也尝试了一些Makefile中的标志,但没有运气。 如果我能提供任何进一步的信息,我会尽我所能。 再次感谢!