fortran相关内容

Fortran 中的星号: (1) 处参数列表中的语法错误

在下面的fortran77代码中,有这个子程序定义 子程序 MSIRNS ( D , NOBST , N , X , R , RR , SURFT ,, INOBSI , ISUR , IDELTS , IRELPS ,, RNOBSI , RSUR , RDELTS , RRELPS ,, OBSD , * , * ) 最后两个参数,星号是什么意思? 我该如何调用该函数? 我尝 ..
发布时间:2021-11-30 13:13:17 其他开发

在 Fortran 重载赋值中检查自赋值

我正在尝试使用 fortran 2003 实现一个多项式类,其中包含重载的算术运算和赋值.派生类型维护术语定义和系数的可分配列表,如下所示 类型多项式私人的类型(单项式)、维度(:)、可分配的 :: 项双精度,维度(:),可分配的 :: coef整数 :: nterms=0包含...结束类型多项式接口分配(=)模块过程:: polynomial_assignment终端接口...包含基本子程序 ..
发布时间:2021-11-30 12:33:16 其他开发

非连续数组部分的源分配

关于最近的帖子关于如何简明地声明数组形状,我尝试了以下三种模式,即(A)自动重新分配,(B)源分配,以及(C)具有假定形状的分配.然后,在源分配的情况下,gfortran 似乎为 b(:,:) 提供了不正确的结果.在这里,我做错了什么,还是仅仅是因为 gfortran 尚未完全支持它?虽然后者似乎很可能,但我不太确定我的 gcc5 和 6 的安装或使用是否正确(我使用的是 Linux x86_64 ..
发布时间:2021-11-27 08:14:00 其他开发

将大小作为参数传递 VS 在 Fortran 过程中假设形状

我正在尝试决定这两个选项中的哪一个是最好的: 子程序 sqtrace( Msize, Matrix, Value )整数,意图(输入):: Msize实数*8,意图(输入):: 矩阵(Msize,Msize)真实*8,意图(输出):: 值[指示...]结束子程序 sqtrace VS 子程序 sqtrace( Matrix, Value )实数*8,意图(输入)::矩阵(:,:)真实*8,意 ..
发布时间:2021-11-27 08:10:32 其他开发

本地可分配数组和自动数组的区别

我对以下摘录中 alloc_array 和 automatic_array 之间的区别很感兴趣: 子程序 mysub(n)整数,意图(输入):: n整数::automatic_array(n)整数,可分配 :: alloc_array(:)分配(alloc_array(n))...[代码]... 我非常熟悉分配的基础(对高级技术不太了解)知道分配允许您在代码中间更改数组的大小(如所指出的在这个 ..
发布时间:2021-11-27 08:10:22 其他开发

如何在 Fortran 中为函数名称设置别名

不知道标题写得好不好.欢迎提出建议. 这就是我想要做的.检查条件,然后决定在循环中使用哪个函数.例如: if (a 然后我可以在编写循环时使用 loop_func 作为指针.这两个函数采用完全相同的输入,并且是基于 a 的值解决问题的不同方法.这将允许我只有一个代码块,而不是两个几乎相同的块.这也适用于子程序. 有什么想法可以实现吗? 谢谢. 解决方案 是的,For ..
发布时间:2021-11-26 23:57:28 其他开发

是否有可能实现一个“抽象"?Fortran 2003 中类型中的变量?

我想写一个抽象类型 类型,抽象 :: 车辆真实的,维度(:),可分配的::轮子包含程序(Compute_Weight),延迟 :: VehicleWeight终端类型 车辆 也就是说,我希望在数组的抽象类型中有一个占位符,这样它就可以在扩展类型中用类似的东西覆盖或重新定义 type, extends(Vehicle) :: Bike分配(轮子(2))包含程序::车辆重量=>自行车重量端型自行 ..
发布时间:2021-11-25 09:49:56 C#

从 64 位进程调用 32 位代码

我有一个应用程序,我们正尝试从 32 位迁移到 64 位.它是 .NET,使用 x64 标志编译.但是,我们有大量用 FORTRAN 90 编写的 DLL 编译为 32 位.FORTRAN DLL 中的函数相当简单:你放入数据,你取出数据;没有任何状态.我们也没有在那里花很多时间,总共可能有 3%,但它执行的计算逻辑是无价的. 我可以以某种方式从 64 位代码调用 32 位 DLL 吗?MS ..
发布时间:2021-11-25 04:57:13 C#

gfortran:在 64 位系统中编译 32 位可执行文件

我在 AMD Athlon(tm) 64 X2 双核处理器 5200+ ×2 上运行 Ubuntu 12.10(64 位),Linux 内核 3.5.0-51-generic.我有 GNU Fortran (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2. 我正在尝试将一些代码编译成 32 位可执行文件.我已经检查过我的系统上是否安装了所有需要的库(我在之前在 32 ..
发布时间:2021-11-25 00:08:48 C#

将动态二维数组从 C++ 传递到 Fortran 并返回

在 C++ 和 Fortran 之间传递一个固定的 2D 数组可以正常工作,但我编写的将 2D 动态数组从 C++ 传递到 Fortran 的程序则不然. C++ 端 extern "C" {void array2d_(double **, int *, int *);}使用命名空间标准;int main(){双**数组;int nx=3;int ny=2;int i,j;cout ..
发布时间:2021-11-24 22:05:41 C#

如何在 Fortran 中访问数组中的最后一项?

在 Matlab 中,end 索引让我可以访问最后一个项目. >数组 = [1 2 3 4 5 6 7];>数组(结束)答案 = 7 如何在 Fortran 中执行相同的操作? 程序你好整数数组(7)数组 = (/1, 2, 3, 4, 5, 6, 7/)!print *, 数组(结束)!1!Error: Legacy Extension: REAL array index at (1)!打 ..
发布时间:2021-11-18 05:10:53 其他开发

在 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 中,按行将数组写入文本文件的好方法是什么?

我是 Fortran 的新手,我希望能够以行方式(列之间的空格,每一行单独一行)将二维数组写入文本文件.我尝试了以下方法,它似乎适用于以下简单示例: PROGRAM test3隐式无整数 :: i, j, k, numrows, numcols整数,维度(:,:),可分配::a行数=5001数字=762分配(a(numrows,numcols))k=1做 i=1,SIZE(a,1)做 j=1,S ..
发布时间:2021-11-18 04:56:07 其他开发

在 Fortran 中使用序列初始化数组

我目前正在翻译一些遗留的 Fortran 代码,但我很难理解代码中的特定行.编译器似乎也发现这一行很奇怪并抛出一个错误.据我所知,它试图通过以 1 为增量对 1 到 9 进行排序并用此序列以列主要形式填充数组矩阵来初始化数组. 程序arrayProginteger :: matrix(3,3), i , j !二维实数数组矩阵 = reshape((/1:9:1/), (/3,3/))结束程序a ..
发布时间:2021-11-18 04:40:21 其他开发

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

解除分配后数组的大小

我创建了一个可分配的数组.我分配元素,然后打印数组的大小.我觉得奇怪的是,释放后大小保持不变. 整数,可分配的 :: fred(:)分配 (fred(3))写 (*,*) "fred:", Size (fred)解除分配(弗雷德)写 (*,*) "fred:", Size (fred) 解决方案 这是一个迫切需要规范的问题,真的.为了在缺席的情况下回答你的具体问题(据我所知,但我最终可能会 ..
发布时间:2021-11-18 04:37:39 其他开发

在 Fortran 中访问返回数组的元素

如何访问从函数返回的数组元素?例如,shape() 返回一个整数数组.如何将该数组的元素与整数进行比较?以下内容无法编译: 整数 :: a整数,维度(5):: b一 = 5if (a .eq. shape(b)) 那么打印 *, '相等'万一 错误是: if (a .eq. shape(c)) then1错误:(1) 处的 IF 子句需要标量 LOGICAL 表达式 我知道这是因为 sha ..
发布时间:2021-11-18 04:35:56 其他开发

Fortran 接口调用返回指向数组的指针的 C 函数

经过多次搜索,我发现我认为最接近我的问题的答案是Fortran 接口调用返回指针的 C 函数,(近 10 年前发布!) 我引用这个是因为使用那个例子可以保持代码简单并且仍然可以说明我的问题. 我想返回一个已在 C++ 中创建/分配的内存的数组,并能够在 Fortran 中分析答案,因为这是该应用程序的大部分代码所在.我的应用程序进入 C++ 以生成整数数组答案,并通过 C 接口将其返回 ..
发布时间:2021-11-18 04:32:21 其他开发