fortran90相关内容

Fortran 90 模块的神秘本质

Fortran 90 模块是渐逝的生物.我使用了一段时间的(单一)模块并取得了一些成功(使用 Intel Visual Fortran 和 Visual Studio 2010 编译).然后我写了另一个模块并尝试在另一个函数中使用它,然后收到此错误: 错误 #7002:打开编译的模块文件时出错.检查包含路径. 所以我删除了违规模块.但是现在我在尝试访问我的原始模块后收到同样的错误! 我 ..

您为 GFORTRAN 调试器/编译器设置了哪些标志来捕获错误代码?

我想我不会在任何教科书中找到它,因为回答这个需要经验.我目前正处于测试/验证我的代码/寻找错误以使其进入生产状态的阶段,任何错误都会导致许多人遭受痛苦,例如阴暗面. 当您为 Fortran 编译程序以进行调试时,您设置了哪些标志? 您为生产系统设置了哪些标志? 在部署之前你会做什么? 生产版本使用 ifort 作为编译器,但我使用 gfortran 进行测试.我做错了吗? ..
发布时间:2021-12-14 08:32:24 其他开发

Fortran中模块、子程序和函数的正确使用

我最近在向 Fortran 程序添加函数时了解了接口块.一切正常,但现在我想在接口块中添加第二个功能. 这是我的接口块: 接口函数正确NeighLabel (A,i,j,k)整数::正确NeighLabel整数,意图(输入):: i,j,k整数,维度(:,:,:),意图(输入)::A结束函数函数正确NeighArray(B,d,e,f)字符::正确NeighArray整数,意图(输入):: ..
发布时间:2021-12-07 23:08:22 其他开发

具有假定形状虚拟参数的过程必须具有显式接口

我对 Fortran 90 完全陌生,我正在尝试了解如何将数组传递给函数.我在网上查了一下,我找不到任何足够清晰和简单的例子,所以我决定在这里发布. 我希望函数能够处理任意长度的数组(数组的长度不应该是函数的参数之一). 我试着写一个简单的例子,一个返回数组元素总和的函数: 函数 mysum(arr)隐式无真实,维度(:),意图(输入):: arr真的 :: mysum整数 :: i ..
发布时间:2021-12-07 23:04:41 其他开发

在 Fortran 中返回数组的函数

据我了解,您可以从 Fortran 中的函数返回一个数组,但由于某种原因,我的代码仅返回我要求它返回的数组中的第一个值.这是功能: 函数 polynomialMult(npts,x,y)整数 npt双精度 x(npts), 结果 (npts + 1), y(npts,npts)polynomialMult = x(1:npts) + 1结束函数 这就是我所说的 C(1:numPoints) ..
发布时间:2021-11-18 05:06:47 其他开发

在 Fortran 90 中编写动态数组

我有具有动态维度的数组(dimx、dim),我需要一种方法通过 Write 在文件中写入此类数组指令,问题是直到现在我还不能以自动方式生成这样的文件,我的意思是直到现在我必须手动更改 Write 指令中数组的维数,然后我需要一种根据尺寸dimx 和dim 来改变尺寸的方法: 整数 :: dimx, dim复杂的,可分配的 :: matA(:,:), vectB(:)分配(matA(dimx,di ..
发布时间:2021-11-18 04:38:31 其他开发

如何将字符数组传递给字符串

我想知道如何从一个字符数组转换为多个字符串.事实上,我有一个包含 17 个文件路径的字符数组.让我们说: 字符,维度(29,17):: FILE_SIM_all字符,长度(29):: FILE_SIM!声明结束FILE_SIM_all(1:29,1) = "/Users/toto/Documents/toto.nc"FILE_SIM_all(1:29,2) = 等等... 我想将 FILE_S ..
发布时间:2021-11-18 04:38:09 其他开发

如何检查 Fortran 数组是否包含值?

我已经看到这要求使用其他语言,但刚刚发现 Fortran 可以很好地处理数组,我认为可能有一种简单的方法可以在没有循环的情况下做到这一点. 目前我正在搜索一个 3D 数组,查看“最近的邻居"以查看它们是否包含字母“n",并且每当它找到这个值时,我希望它执行一些 clusterLabel 分配(这不相关对于这个问题) 我想使用 if(lastNeighArray.eq."n") then ..
发布时间:2021-11-18 04:05:23 其他开发

Fortran 子程序返回错误值

嘿,我正在开发一个 Fortran 程序,但遇到了一个奇怪的问题.当我尝试在调用特定子例程之前直接输出数组的某些值时,我得到了正确的值.然后我尝试在我启动子程序时输出相同数组的一些值,它们是 0.我最终在子程序之后输出数组的值,这些值回到预期值.谁能帮我理解为什么?我的代码如下: 首先,在主函数中调用子程序,我想在write语句中输出值: if (iter .eq. 5) thenwrit ..
发布时间:2021-11-18 02:50:05 其他开发

如何在 Fortran 中即时增加数组大小?

我的程序通过 3D 数组运行,标记它找到的“集群",然后进行一些检查以查看是否有任何相邻集群的标签高于当前集群.还有第二个数组保存“正确的"集群标签.如果发现第 n 个相邻簇被正确标记,则将该元素分配给 0,否则将其分配给正确的标签(例如,如果第 n 个站点的标签为 2,而邻居的标签为 3,则该元素的第 3 个元素labelArray 设置为 2).老实说,我有充分的理由这样做! 我想要的是 ..
发布时间:2021-11-18 02:42:57 其他开发

定义一个返回数组的函数

我有以下代码: 程序 function_as_an_array隐式无整数::我整数,参数:: N=10实数*8:: x(N),y(N),f(N)做我= 1,Nx(i)=浮点数(i)结束做调用 func(f,N,x)打开(单位=20,文件=“test.dat")做我= 1,Ny(i)=f(i)写(20,*) x(i),y(i)结束做关闭(20)停止结束程序 function_as_an_arra ..
发布时间:2021-11-18 02:21:23 其他开发

指针数组

我正在尝试实现一个指针数组,以便我可以遍历元素.但是我不确定如何正确执行此操作: TYPE(domain),POINTER :: d01,d02,d03类型(域),尺寸(:),指针:: dom...dom(1) =>d01dom(2) =>d02dom(3) =>d03... 然后: ...如果(关联(dom(2),d02))那么... 编译器(x86-64 Linux -tp istan ..
发布时间:2021-11-18 02:15:40 其他开发

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

这两种声明假定大小数组的方法有什么区别吗? 例如 real, 维度(:) :: arr 和 real :: arr(*) 解决方案 表格 real, 维度(:) :: arr 声明一个假定形状数组,而形式 real :: arr(*) 声明一个 假定大小 数组. 而且,是的,它们的用法存在差异.之所以出现差异,是因为编译器大约“知道"假定形状数组的形状,但不知道假定大 ..
发布时间:2021-11-18 01:54:31 其他开发

如何在 Fortran 中初始化二维数组

在 C 中,如果我没记错的话,您可以使用花括号语法轻松地初始化数组: int* a = new int[] { 1, 2, 3, 4 }; 当您希望使用特定的测试值初始化矩阵以用于数学目的时,如何在 Fortran 中为二维数组执行相同的操作?(不必在单独的语句中对每个元素进行双重索引) 数组由 定义 real,dimension(3, 3) :: a 或 real,dimens ..
发布时间:2021-11-18 01:53:18 其他开发

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

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

如何格式化整数以使其仅具有所需的大小?

我一直在试验以下代码: 程序你好写(*,“(i9)")10结束程序你好 并改变格式字符串,试图使写入输出的字符串大小正好代表整数,但到目前为止我无法管理它.如何在 Fortran 中编写“适合"整数? 解决方案 I0 编辑描述符是输出具有正确宽度的整数的正确方法.这是在 Fortran 95 中引入的.所有当前的 Fortran 编译器(即 Fortran 90 编译器)都已在 95 ..
发布时间:2021-08-31 18:38:19 其他开发

指针分配期间的 fortran 90 预期边界规范

我是 Fortran 新手.我正在 Fortran 90 中编写一个程序来获取数组的非零元素并使用指针函数将它们放入一个新数组中,如下所示: 程序编隐式无整数,目标 :: a(5)整数 :: i整数,指针 :: nz(:)a(1) = 1a(2) = 0a(3) = 0a(4) = 2a(5) = 3nz =>非零(一)做我= 1,大小(nz)写(*,*) nz(i)结束做包含函数 non_ze ..
发布时间:2021-06-18 19:59:54 其他开发

Fortran计算浮点数总和未获得精确的精度

我是Fortran90的新手,我编写了一个简单的程序来添加两个浮点数,如下所示: 程序编号_sum隐式无REAL ::总和总和= 1.6 + 2print *,"Sum =",sum结尾 我得到的答案是 Sum = 3.5999999 为什么没有得到 3.6 .我如何使该程序获得确切答案?任何帮助将不胜感激. 解决方案 无法在以2为底的有限数字中编写3.6.它是 2 +1 + ..
发布时间:2021-05-09 19:21:13 其他开发