fortran90相关内容

在 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 其他开发

Fortran90 未分类语句 While 循环

我正在尝试在 Fortran90 中运行一小段代码,但我收到了一个带有 while 语句的未分类语句错误.我在网上查看并找不到为什么会在 while 语句中发生这种情况.这是我收到的错误: Test.f90:11.4:而 (R ..
发布时间:2021-09-24 20:20:11 其他开发

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

我一直在试验以下代码: 程序你好写(*,“(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 其他开发

如何在Fortran中读取内容不以空格分隔的2D文件

我在文件(number.txt)中存储了一个矩阵,如下所示: 123234565425431176534522 我如何在Fortran中读取此类矩阵,所以结果将是: 1 2 3 2 3 4 5 65 4 2 5 4 3 1 17 6 5 3 4 5 2 2 使用awk分隔这些列并在Fortran中读取它非常容易.但是,我想知道是否可以仅使用Fortran来完成所有这些工作.完成后, ..
发布时间:2021-05-09 19:19:03 其他开发

Fortran读取混合文字和数字

我正在使用Fortran 90读取包含以下格式数据的文件 数字#125 var1 = 2 var2 = 1 var3:4....数字#234 var1 = 3 var2 = 5 var3:1 我尝试了以下命令,并且运行正常 读取(2,*)tempstr,my_param(1),tempstr,my_param(2),tempstr,my_param(3) 问题是当数字变大并且字符串和数 ..
发布时间:2021-05-09 19:17:26 其他开发

为什么我们需要1,2,4,8个字节将逻辑变量存储在fortran中?

我不明白,因为逻辑类型仅具有两种情况: true 和 false ,因此为什么我们需要逻辑(1),逻辑(2),逻辑(4),逻辑(8)在Fortran中? 我们只需要 1位. 有人可以解释吗? 解决方案 首先,Fortran 不是说我们有逻辑类型,每个逻辑类型分别占用1、2、4和8个字节,它们当然不是 logical(1), logical(2), logical(4)和 log ..
发布时间:2021-05-09 19:17:13 其他开发

在fortran中生成序列数组

Fortran中是否有一个内在函数生成一个包含从a到b的数字序列的数组,类似于python的 range() >>>范围(1,5)[1、2、3、4]>>>范围(6,10)[6、7、8、9] ? 解决方案 不,没有. 但是,您可以使用具有相同功能的构造函数初始化数组, 程序数组隐式无整数::我实数:: a(10)=(/(i,i = 2,20,2)/)打印*,一个结束程序arra ..
发布时间:2021-05-09 19:17:02 其他开发

评估在Fortran90中派生类型中定义的字符串的特定字母

我想评估变量 myline 的第三个字母是否为'C'. 我尝试: 程序主要隐式无打字线整数::计数= 5字符(len = 48):: list ='ABCDE'终端类型类型(线):: myline字符(len = 1)::字母='C'写(*,*)myline%count,myline%listif(myline%list(3)== letter)然后write(*,*)'TRUE'别的wr ..
发布时间:2021-05-09 19:16:56 其他开发