fortran90相关内容

Fortran 90/95 中的广播数组乘法

我想知道在 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 ..
发布时间:2022-01-14 10:06:06 其他开发

如何在 fortran 90/95 中使用内部类型进行一些通用编程

我想编写一些适用于不同类型的程序.我打算使用 here 和 这里.我这里举一个简单的例子. !-------------------------------------------------------------- !模块数据类型输入值整数 :: v端型输入右值实数(8) :: v端型结束模块数据类型!--------------------------------------------- ..
发布时间:2022-01-14 10:03:08 其他开发

正确使用 PURE 关键字 Fortran

我目前正在研究 Fortran,我遇到了 pure 关键字指定没有副作用的函数/子例程. 我有一本书,Fortran 90/95,作者是 S Chapman,它介绍了 pure 关键字,但奇怪的是没有提供“良好的编码实践"用途. 我想知道在他们的程序中应该如何自由地使用这个关键字.环顾四周,对我来说很明显大多数没有副作用的程序都没有必要包含 pure 关键字. 那么它最好用在哪里 ..
发布时间:2022-01-14 10:02:52 其他开发

=> 是什么意思?(等于大于)Fortran 中的平均值?

我正在查看一些旧的 Fortran 90 代码,发现了 => 符号: var =>物品 它似乎被用于某种任务. 在 Google 中搜索 “箭头符号 Fortran" 或 “等于大于符号 Fortran" 没有找到相关材料. 解决方案 令人惊讶的是,搜索 "equals arrow symbol Fortran" 会产生一些结果. "=>" 通常被称为 指针赋值运算符. ..
发布时间:2022-01-14 10:01:48 其他开发

“%"是什么意思?在 Fortran 中是什么意思?

我正在尝试阅读一些 Fortran 代码,但无法确定 %(百分号)的作用. 它在一行中: x = a%rho * g * (-g*a%sigma + m%gb * m%ca * (1.6 * a%rho+g)) 它有什么作用? 解决方案 在 Fortran 90 中,它们允许您像在 C++ 中一样创建结构.它基本上充当点 (.) 运算符. 来自 http://www.la ..
发布时间:2022-01-14 10:00:16 其他开发

如何在fortran中的特定行写入

我想从文件夹中复制一个文件并使用 fortran 在文件的特定行写入.我正在使用 Windows,GNU fortran 编译器.这是示例文件和代码.file1.txt 1 *2 **3 ***4 ****5 *****6 ******7 *******8 ********9 *********10 ********** 代码如下:我定义了一些变量.只有当两个条件匹配(特定变量值和行号)时,我 ..
发布时间:2022-01-14 09:59:20 其他开发

对变量的模糊引用

所以我正在做 2 个链接到主程序的模块.第一个定义了所有变量,第二个定义了函数. 模块1: 模块 zmienne隐式无整数,参数::ngauss = 8整数,参数 :: out_unit=1000整数,参数 :: out_unit1=1001整数,参数 :: out_unit2=1002, out_unit3=1003实数(10),参数 :: error=0.000001real(10): ..
发布时间:2022-01-14 09:58:09 其他开发

mpi 改变了它不应该改变的变量

我有一些 Fortran 代码正在与 MPI 进行并行处理,这些代码确实很奇怪.首先,有一个变量 nstartg,我从 boss 进程向所有工人广播: 调用 mpi_bcast(nstartg,1,mpi_integer,0,mpi_comm_world,ierr) 变量 nstartg 在程序中永远不会再被更改.稍后,我让老板进程将数组 edge 的 eproc 元素发送给工人: if ( ..
发布时间:2022-01-14 09:57:37 其他开发

假设字符串长度输入到 Fortran 函数中

我正在编写以下简单的例程: 程序草稿字符*4 :: 单词词='地狱'打印*,连接(字)结束程序从头开始函数 concat(x)字符*(*) xconcat = x//'加东西'结束函数连接 程序应该使用字符串'hell'并将字符串'plus stuff'连接到它.我希望该函数能够接收任何长度的字符串(我也打算使用“天堂"这个词)并将字符串“加号"连接到它. 目前,当我在 Visual S ..
发布时间:2022-01-14 09:55:45 其他开发

在fortran中使用数组成员作为do循环的控制变量

我很惊讶你不能像这样把一个数组成员作为循环的控制变量: 程序测试整数,维度(2)::我i(1) = 1, 3做 i(2) = 1, 3!什么都在这里写(*,*)我结束做结束做结束程序 我的问题是为什么不允许这样做? 编辑:还是允许但我做错了? ifort v 11.1 的错误信息是: test.f90(4): error #5082: Syntax error, found ID ..
发布时间:2022-01-14 09:53:37 其他开发

在 Fortran 90 中将字符串转换为整数

我知道 IACHAR(s) 在字符串 s 的第一个字符位置返回 ASCII 字符的代码,但我需要将整个字符串转换为整数.我还有一些字符串(大约 30 个字符串,每个最多包含 20 个字符).有没有办法将它们中的每一个转换为 Fortran 90 中的唯一整数? 解决方案 你可以读一个字符串到一个整型变量中: 模块 str2int_mod包含基本子程序 str2int(str,int,st ..
发布时间:2022-01-14 09:52:23 其他开发

在 Fortran90 中从文本文件中跳过一行

我正在用 fortran (90) 编写.我的程序必须读取 file1,对它的每一行执行一些操作并将结果写入 file2.但问题是 - file1 在第一行有一些不需要的信息. 如何使用 Fortran 从输入文件中跳过一行? 代码: open (18, file='m3dv.dat')打开(19,文件='m3dv2.dat')做读取(18,*)xtmp = sqrt(x**2 + ..
发布时间:2022-01-14 09:49:19 其他开发

复数的 fortran 格式说明符

我可以在 fortran 中为复数指定格式说明符吗?我有一个简单的程序. 程序 complx1隐式无复杂 :: var1var1 = (10,20)写 (*,*) var1写 (*,'(F0.0)') var1写 (*,'(F0.0,A,F0.0)') 实数(var1), ' + i' , aimag(var1)结束程序 complx1 输出: ( 10.0000000 , 20.0000 ..
发布时间:2022-01-14 09:47:56 其他开发

Fortran 90 编译问题:对 <modulename> 的未定义引用

我在尝试编译使用同一目录中的模块的简单 fortran 程序时遇到问题.我有 2 个文件:包含程序的 test1.f90 和包含模块的 modtest.f90. 这是test1.f90: 程序测试使用模组测试隐式无打印*,a结束程序测试 这是 modtest.f90: 模块模块测试隐式无保存整数 :: a = 1结束模块 modtest 两个文件都在同一个目录中.我像这样编译 mod ..
发布时间:2022-01-14 09:45:15 其他开发

gfortran 如何判断我是在编译 f90 还是 f95 代码?

我知道 gfortran 可以编译 f90 或 f95 吗?它怎么知道它正在编译哪一个?它也可以编译f77代码吗?ubuntu 已经有 fortran 编译器还是需要下载 gfortran? 解决方案 gfortran 可以从文件扩展名中猜出某些东西;如果文件具有 .f、.f90、f95、.f03 或 .f08 的扩展名,它将采用具有适当标准的固定 (.f) 或自由格式.但是您可以使用选项 ..
发布时间:2022-01-14 09:43:37 其他开发

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

如何在 Fortran 中读取和写入标准输入、输出和错误流 stdin、stdout 和 stderr?我听说写给 stderr,例如,used 是 write(5, fmt=...),用 5 stderr的单位,我知道写入stdout的方法是使用write(*, fmt=...). 如何使用 ifort 编译器读取和写入标准输入和输出单元? 编译器版本: 英特尔(R) Fort ..
发布时间:2022-01-14 09:43:01 其他开发

在 Fortran 中使用全局变量时的错误结果

我正在学习 Fortran 的基础知识.我创建了一个初始化矩阵的简单子程序: 程序测试整数,参数 :: n = 1024实数 :: a(n, n)调用 init(a)写 (*, *) a(1, 1)结束程序子程序初始化(一)实数 :: a(n, n)a(:, :) = 3.0结束子程序 那么输出是 0.0 而不是预期的 3.0.除此之外,valgrind 说: ==7006== 条件跳转或移 ..
发布时间:2022-01-14 09:42:24 其他开发