fortran相关内容
我有一个生成无格式文件的 fortran 程序,我正在尝试将它们读入 Python. 我有源代码,所以我知道第一个“块"是 character*1 name(80) 的字符数组,依此类推.所以我从 f = open(filename,'rb')字节 = 80name = struct.unpack('c'*bytes,f.read(bytes)) and name 是一个长度为 80 的
..
上下文 下面发布的玩具 Fortran 代码调用了两个指针函数.也就是说,两个函数都返回一个指针.事实上,它们都是数组指针.它们都试图做同样的事情,即返回一个整数数组指针,该指针引用一个具有三个元素 1、2 和 3 的整数数组.第一个函数使用指针赋值运算符 (=>) 将函数指针指向保存数据的可分配数组.第二个函数通过指针直接分配一块动态内存,用于存储数据.调用程序只打印返回数组的元素.
..
平台:WinXP SP2、Intel Fortran 11、Excel 2007 我在用 excel 连接 dll 文件时遇到问题. dll文件比较简单: 子程序 FortranCall (r1, num)!DEC$ 属性 DLLEXPORT, STDCALL, REFERENCE, ALIAS:"FortranCall" :: FortranCall整数,意图(in)::r1字符(
..
我在 Ubuntu (16.04) 中安装 Gfortran 后指向 f95.我在 gfortran 手册中看到可以为 f95 和转发提供 -std 选项.我从手册中看到的默认 -std 选项值是“gnu".如果我将 f95 用于 f90 代码,我不确定编译内部的含义. 如何将 gfortran 用于扩展名为 .for 的 Fortran 90 文件?我不想为 Fortran 90 代码使用
..
我无法弄清楚这个“9999"在 e20.8 前面究竟在做什么,在这个 fortran 写语句的标签中. Is 不引用代码中的任何其他行.换句话说,在程序的其他地方没有它引用的标记为 9999 的行. write(11,'(9999e20.8)') (9999.0, i=1,2*(numant+numunique)) 我很困惑 - 虽然我认为我对 write 语句的语法和格式有所了解,但我
..
我花了几天时间学习 Fortran 的 C 互操作性,以便从 C 调用 Fortran 函数 DLL.在这里我找到了这个链接:在 C 中使用 Fortran 代码 我尝试像这样创建一个 Fortran DLL,而我的编译器是 Intel Fortran 编译器: 模块集成隐式无包含函数积分(func,a,b,intsteps)结果(积分)!DEC$ 属性 DLLEXPORT :: 集成界面
..
在下面的fortran77代码中,有这个子程序定义 子程序 MSIRNS ( D , NOBST , N , X , R , RR , SURFT ,, INOBSI , ISUR , IDELTS , IRELPS ,, RNOBSI , RSUR , RDELTS , RRELPS ,, OBSD , * , * ) 最后两个参数,星号是什么意思? 那么我该如何调用该函数?
..
我正在尝试从 C 调用一些 Fortran 代码,但我没有找到传递 C 字符数组的正确方法. SUBROUTINE My_F_Code (c_message) BIND(C, NAME='my_f_code')使用 ISO_C_BINDING隐式无CHARACTER*(C_CHAR) c_message字符*(256) f_message调用 C_F_POINTER(C_LOC(c_messa
..
我的目标是使用可在 DO CONCURRENT 结构中使用的随机数编写一个纯函数.编译器似乎不允许这样做. mwe.f95:8:30:调用 init_seed ( )1错误:在 (1) 处对“init_seed"的子程序调用不是 PUREmwe.f95:9:36:调用 random_number ( y )1错误:在 (1) 处对内在“random_number"的子程序调用不是 PUREmwe
..
文件位置 = "../"//文件名PRINT *,“试图打开",TRIM(文件名)打开(fh1,文件=文件位置,状态='旧',IOSTAT = io) 谁能告诉我第一行的“../"//是什么意思? 解决方案 字符串 ../ 是 Linux 的 当前工作目录的父目录.这在 Windows 机器上可能有效,也可能无效.两个字 // 表示用于字符串连接的 Fortran 运算符.所以
..
我正在尝试并行化我编写的代码.我在对数组执行缩减时遇到问题.对于小型数组,这一切似乎都可以正常工作,但是当数组大小超过某个点时,我要么得到堆栈溢出错误,要么崩溃. 我尝试在编译时使用/F 增加堆栈大小,我在 Windows 上使用 ifort,我还尝试将 set KMP_STACKSIZE=xxx 传递给英特尔特定的堆栈大小减免.这有时会有所帮助并允许代码在我的循环中进一步前进,但最终并不能
..
我(在我的理论物理数值方法课程中)编写了一个非常简单的程序,用于在维度 2 中进行随机游走.它是: 程序 random_walk隐式无整数,参数 :: Nwalker = 1000000整数,参数 :: Nstep = 100整数,参数 :: Nmeas = 10整数 :: posx, posy, move整数 :: is, im, iw真正的 :: start_time, stop_time双
..
我用 Fortran 编写了这个程序来显示直到第 x 项的斐波那契数: 程序斐波那契隐式无整数 :: x,p,c,i,t !初始化限制、前一个、当前、迭代和临时print *, "列出前 x 个斐波那契数:"read *, x ! 读取极限p=0 ! 设置前为零c=1 ! 将当前设置为 1做 i=1,xprint *, c !打印当前的斐波那契数t = c ! 将临时变量设置为当前变量c = c
..
在对此处找到的问题进行了一些讨论后 在 Fortran 中正确执行 Final 例程我认为了解具有指针结果的函数何时适合与普通或指针赋值一起使用会很有用.例如,给定这个简单的函数 函数 pointer_result(this)隐式无type(test_type),intent(in) 指针 :: this类型(测试类型),指针::pointer_result分配(指针结果)结束函数 我通常会
..
我正在尝试编译我最近开始工作的项目,并被要求在 clang 而不是 gcc 中编译代码.该项目有一个CMake文件,我尝试使用 cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ../src 但是抛出了一个错误,我认为这是因为 clang 没有 Fortran 编译器,并且项目的一部分有 Fortran 代码.有没有办法让它
..
有没有办法在 Fortran 中以固定格式打印极小的双精度数字?不知何故,“E"被截断了. 在下面的代码中将“ES15"更改为“ES18"没有帮助: 程序 print_double隐式无双精度 :: xx = 2.71818D-200写(*,*) "fmt=* : x = ", x写(*,fmt='(A,ES15.3)') " fmt=ES15.3: x = ", x写(*,fmt='(A
..
我的任务是更改 HPC 应用程序部分的精度,记住它严重依赖自动矢量化.因此,编译器在发生任何类型的浮点转换时通知我很有用(因为这可能会对性能产生严重影响). -Wconversion 标志听起来应该适合我的需要: -Wconversion 警告不同类型之间的隐式转换. https://gcc.gnu.org/onlinedocs/gcc-4.1.0/gfortran/War
..
我目前正在调试我的老板在 90 年代写的一些软件的子程序.在特定子例程的 do 循环中似乎发生了浮点异常: 16 irad=1,incmaxrr1=rr2rr2=rr2+rdivif(rr1.gt.rlimit) 转到 16如果(pts(irad).gt.0.0)那么discrm=(rmsden(mt,irad)/pts(irad))1 -((平均(mt,irad)**2)/(pts(irad)
..
我用 Fortran 编写了这个非常简单的代码: 程序苏隐式无真正的跑3写(*,*)运行3(0)结束程序 sureal*8 函数 ran3(iseed)隐式无整数iseed=iseed*153941+1跑3=浮点数(iseed)*2.328+0.5结束函数ran3 我在编译它时没有问题,但是当我执行代码时,我收到了这条消息: 程序收到信号 SIGSEGV:分段错误 - 无效的内存引用.此错误
..
我无法理解为什么在子例程中声明的变量 (i) 会在包含的子例程中看到,但对于函数 (fie) 导致编译错误.我搜索了一个答案,并试图看看我是否可以在 Fortran 95 标准中找到一些东西,但徒劳无功. 我写了一个小例子程序: 程序 pgm打电话给结尾子程序a隐式无整数 :: 我双精度 :: fie我 = 7呼叫 b!write(*,*) fie(9)包含子程序 b双精度 :: x!双精
..