fortran90相关内容
这是我的最小示例: 程序测试隐式无真正的 :: testfuncwrite(*,*) "从主写入"写(*,*) 测试函数()结束程序测试函数 testfunc() 结果(y)真实的 :: ywrite(*,*) "从函数 g 写入"y=1.0返回结束函数 testfunc 使用简单编译时 gfortran test.f90 或者当包括像 Slatec 这样的库时 gfortran tes
..
我想知道在 Fortran 中是否有更好(简洁)的方式来编码?我试图将 a(3, 3) 的每一列乘以 b(3) 中的每个值.我知道 Python 中有 np.multiply,但不确定 Fortran. !!!测试.f90程序测试隐式无整数,参数 :: dp=kind(0.d0)real(dp) :: a(3, 3)=reshape([1, 2, 3, 4, 5, 6, 7, 8, 9], [3
..
我想编写一些适用于不同类型的程序.我打算使用 here 和 这里.我这里举一个简单的例子. !-------------------------------------------------------------- !模块数据类型输入值整数 :: v端型输入右值实数(8) :: v端型结束模块数据类型!---------------------------------------------
..
我目前正在研究 Fortran,我遇到了 pure 关键字指定没有副作用的函数/子例程. 我有一本书,Fortran 90/95,作者是 S Chapman,它介绍了 pure 关键字,但奇怪的是没有提供“良好的编码实践"用途. 我想知道在他们的程序中应该如何自由地使用这个关键字.环顾四周,对我来说很明显大多数没有副作用的程序都没有必要包含 pure 关键字. 那么它最好用在哪里
..
我正在查看一些旧的 Fortran 90 代码,发现了 => 符号: var =>物品 它似乎被用于某种任务. 在 Google 中搜索 “箭头符号 Fortran" 或 “等于大于符号 Fortran" 没有找到相关材料. 解决方案 令人惊讶的是,搜索 "equals arrow symbol Fortran" 会产生一些结果. "=>" 通常被称为 指针赋值运算符.
..
我正在尝试阅读一些 Fortran 代码,但无法确定 %(百分号)的作用. 它在一行中: x = a%rho * g * (-g*a%sigma + m%gb * m%ca * (1.6 * a%rho+g)) 它有什么作用? 解决方案 在 Fortran 90 中,它们允许您像在 C++ 中一样创建结构.它基本上充当点 (.) 运算符. 来自 http://www.la
..
我想从文件夹中复制一个文件并使用 fortran 在文件的特定行写入.我正在使用 Windows,GNU fortran 编译器.这是示例文件和代码.file1.txt 1 *2 **3 ***4 ****5 *****6 ******7 *******8 ********9 *********10 ********** 代码如下:我定义了一些变量.只有当两个条件匹配(特定变量值和行号)时,我
..
所以我正在做 2 个链接到主程序的模块.第一个定义了所有变量,第二个定义了函数. 模块1: 模块 zmienne隐式无整数,参数::ngauss = 8整数,参数 :: out_unit=1000整数,参数 :: out_unit1=1001整数,参数 :: out_unit2=1002, out_unit3=1003实数(10),参数 :: error=0.000001real(10):
..
我有一些 Fortran 代码正在与 MPI 进行并行处理,这些代码确实很奇怪.首先,有一个变量 nstartg,我从 boss 进程向所有工人广播: 调用 mpi_bcast(nstartg,1,mpi_integer,0,mpi_comm_world,ierr) 变量 nstartg 在程序中永远不会再被更改.稍后,我让老板进程将数组 edge 的 eproc 元素发送给工人: if (
..
我正在编写以下简单的例程: 程序草稿字符*4 :: 单词词='地狱'打印*,连接(字)结束程序从头开始函数 concat(x)字符*(*) xconcat = x//'加东西'结束函数连接 程序应该使用字符串'hell'并将字符串'plus stuff'连接到它.我希望该函数能够接收任何长度的字符串(我也打算使用“天堂"这个词)并将字符串“加号"连接到它. 目前,当我在 Visual S
..
我很惊讶你不能像这样把一个数组成员作为循环的控制变量: 程序测试整数,维度(2)::我i(1) = 1, 3做 i(2) = 1, 3!什么都在这里写(*,*)我结束做结束做结束程序 我的问题是为什么不允许这样做? 编辑:还是允许但我做错了? ifort v 11.1 的错误信息是: test.f90(4): error #5082: Syntax error, found ID
..
这可能看起来像一个微不足道的问题,但我无法通过谷歌搜索找到任何答案.我有这个小程序: 程序 Test_spacing_print整数:: N真实:: A,BN=4;A=1.0;B=100.0打印*,'N =',N打印*,'A =',A,'B =',B打印 '(2(A3,F8.2,1X))' ,'A =',A,' B =',B打印 20, A,B20 格式('A =',F8.2,x,'B =',F
..
我知道 IACHAR(s) 在字符串 s 的第一个字符位置返回 ASCII 字符的代码,但我需要将整个字符串转换为整数.我还有一些字符串(大约 30 个字符串,每个最多包含 20 个字符).有没有办法将它们中的每一个转换为 Fortran 90 中的唯一整数? 解决方案 你可以读一个字符串到一个整型变量中: 模块 str2int_mod包含基本子程序 str2int(str,int,st
..
我正在用 fortran (90) 编写.我的程序必须读取 file1,对它的每一行执行一些操作并将结果写入 file2.但问题是 - file1 在第一行有一些不需要的信息. 如何使用 Fortran 从输入文件中跳过一行? 代码: open (18, file='m3dv.dat')打开(19,文件='m3dv2.dat')做读取(18,*)xtmp = sqrt(x**2 +
..
当我尝试通过 OpenMP 在 Fortran90 中并行化我的程序时,我收到了分段错误错误. !$OMP PARALLEL DO NUM_THREADS(4) &!$OMP PRIVATE(numstrain, i)做 irep = 1, nrep做 i=1, 10打印 *, numstrain(i)结束做结束做!$OMP 结束并行执行 我发现如果我注释掉“PRINT *, numstra
..
我可以在 fortran 中为复数指定格式说明符吗?我有一个简单的程序. 程序 complx1隐式无复杂 :: var1var1 = (10,20)写 (*,*) var1写 (*,'(F0.0)') var1写 (*,'(F0.0,A,F0.0)') 实数(var1), ' + i' , aimag(var1)结束程序 complx1 输出: ( 10.0000000 , 20.0000
..
我在尝试编译使用同一目录中的模块的简单 fortran 程序时遇到问题.我有 2 个文件:包含程序的 test1.f90 和包含模块的 modtest.f90. 这是test1.f90: 程序测试使用模组测试隐式无打印*,a结束程序测试 这是 modtest.f90: 模块模块测试隐式无保存整数 :: a = 1结束模块 modtest 两个文件都在同一个目录中.我像这样编译 mod
..
我知道 gfortran 可以编译 f90 或 f95 吗?它怎么知道它正在编译哪一个?它也可以编译f77代码吗?ubuntu 已经有 fortran 编译器还是需要下载 gfortran? 解决方案 gfortran 可以从文件扩展名中猜出某些东西;如果文件具有 .f、.f90、f95、.f03 或 .f08 的扩展名,它将采用具有适当标准的固定 (.f) 或自由格式.但是您可以使用选项
..
如何在 Fortran 中读取和写入标准输入、输出和错误流 stdin、stdout 和 stderr?我听说写给 stderr,例如,used 是 write(5, fmt=...),用 5 stderr的单位,我知道写入stdout的方法是使用write(*, fmt=...). 如何使用 ifort 编译器读取和写入标准输入和输出单元? 编译器版本: 英特尔(R) Fort
..
我正在学习 Fortran 的基础知识.我创建了一个初始化矩阵的简单子程序: 程序测试整数,参数 :: n = 1024实数 :: a(n, n)调用 init(a)写 (*, *) a(1, 1)结束程序子程序初始化(一)实数 :: a(n, n)a(:, :) = 3.0结束子程序 那么输出是 0.0 而不是预期的 3.0.除此之外,valgrind 说: ==7006== 条件跳转或移
..