fortran相关内容

错误:如果 SELECT TYPE 中的选择器表达式不是命名变量,则 associate-name=>;会出现

我正在尝试在另一种类型中使用一种类型.但是,我就是不能让它编译.对我来说很奇怪:选择类型的东西在主程序中有效,但在类型的子程序中无效. 模块 ModBuffer隐式无私人的类型、抽象、公共 :: 缓冲区包含程序,公共 :: 构造函数endtype 缓冲区类型,扩展(缓冲区),公共 :: BufferR真实的(8),可分配的,公共的 :: BufData(:,:,:)端型缓冲器R类型,扩展(缓冲区 ..
发布时间:2022-01-14 10:15:04 其他开发

Fortran:整数太大了

我正在将一个整数设置为小于其最大值的值,但收到一个错误,指出它太大了,不合适.为什么是这样?这是一个示例程序. 程序 max_int整数,参数 :: i32 = selected_int_kind(32)整数(种类 = i32)::my_int!此类中最大的整数打印*,巨大的(my_int)!这行得通我的整数 = 100000! 这不会,并给出错误.!my_int = 1000000000000 ..
发布时间:2022-01-14 10:14:56 其他开发

以数组元素为参数的子程序

在我的程序子例程 stlstp 中,将 work(2,1) 作为参数传递给 stlfts(...) 子例程.work(2,1) 将是该索引处的双值,但子程序如何将其转换为一维数组 x(n)? 当我在 stlfts(...) 子程序中打印 x 值时,它正在打印 n 大小的元素,例如: STLFTS....X,,, 0.0000000000000000 1.4964418382246345E ..
发布时间:2022-01-14 10:14:49 其他开发

Fortran 公共变量,可分配数组

是否可以在子程序中分配公共数组的大小和值,然后在程序的其他子程序中使用它? 以下程序不起作用,但我想做这样的事情: main.f 程序主程序整数 n整数,可分配 :: co(:)共同的 n, co调用分配打印 *, co(1), co(2)解除分配(co)停止结束程序主 assign.f 子程序赋值整数 n整数,可分配 :: co(:)共同的 n, con = 2分配(co(n) ..
发布时间:2022-01-14 10:14:30 其他开发

OpenMP 在子程序中没有线程

我正在用 Fortran 编写一个矩阵乘法子程序.我正在使用英特尔 Fortran 编译器.我写了一个简单的静态调度并行do-loop.不幸的是,它只在一个线程上运行.代码如下: 子程序 MATMULT(A,B,C,L,M,N)真实*8 A,B,C整数 NCores、块、TID尺寸 A(L,N),B(L,M),C(M,N)参数(NCORS=8)块=(L/(NCORES+1))+1时间=0!$O ..
发布时间:2022-01-14 10:14:18 其他开发

Fortran 语句函数的使用

我读到了语句函数,比如例子: C(F) = 5.0*(F - 32.0)/9.0 这不就是: C = 5.0*(F - 32.0)/9.0 即没有功能部分,或者我错过了什么? 如果不相同,什么时候需要使用语句函数? 解决方案 C = 5.0*(F - 32.0)/9.0 只是赋值给一个变量C,它可以在任何地方,每次程序流到达它时都会计算一次. C(F) = 5.0*(F ..
发布时间:2022-01-14 10:14:11 其他开发

从其他数组继承大小的简洁表示法?

在我的代码中,我有一个子例程,它接受一个 5 阶数组作为参数并使用一个局部变量,这是一个共享前 4 个索引的 4 阶数组. 我正在尝试找到一种更简洁的方式来表达尺寸声明 子程序 mysub(动量)复杂,意图(in)::动量(:,:,:,:,:)复杂的 :: prefactor( &&大小(动量,1),大小(动量,2),大小(动量,4)和&大小(动量,5))...结束子程序 mysub 冗 ..
发布时间:2022-01-14 10:13:55 其他开发

为什么这种将指针从 C++ 传递到 Fortran 的尝试不起作用?

我需要将一个动态数组从 c++ 传递到 Fortran.我做了很多研究来整理一个我认为应该有效的例子,但事实并非如此.该程序应在 c++ 程序中创建一个数组,将该数组的指针传递给 Fortran 例程,将 C 指针转换为 Fortran 指针,然后在 Fortran 端打印该数组. 我的 c++ 主程序: 使用命名空间标准;外部“C"{无效 cinterface(int*,int*);}主 ..
发布时间:2022-01-14 10:13:35 C/C++开发

在fortran中读取具有未知界限的行中的整数序列

我想在 FORTRAN 中读取具有未知界限的行中的整数序列.我的问题与之前的帖子类似, 在 Fortran 中读取整数列表文件 但是我想在一行中读取一系列未知数的整数并将其保存在单独的数组中.连续的整数行应该保存到其他数组中 我的文件是这样的5 7 8 9 10 13 # 应该存储 f(1)(6) 个数组93 102 92 # c(1)(3)105 107 110 145 147 1 ..
发布时间:2022-01-14 10:13:25 其他开发

Fortran 相当于 numpy.where() 函数?

我想在 Fortran 中做这样的事情: 程序在哪里实数 :: a(6) = (/4, 5, 6, 7, 8, 9/)打印 *, a(a>7)结束程序 在 Python 我通常会使用 NumPy 像这样: import numpya = numpy.array([ 4, 5, 6, 7, 8, 9])打印一个[numpy.where(a>7)]#或者打印 a[a>7] 我玩过,但到目前为止 ..
发布时间:2022-01-14 10:13:19 Python

为什么 Fortran Standard 中的最大单行长度限制为 132 个字符?

是关于性能、干净的源代码、编译器……吗?我知道许多编译器允许更长的单行代码.但是,如果这个扩展是可能的,没有任何妥协,那么为什么 Fortran 标准严格遵守这个规则呢? 我知道这是一个非常笼统的问题(stackoverflow 警告我,考虑到它的标题,这个问题可能会被否决),但我找不到任何资源来解释现代 Fortran 标准中最大长度为 132 个字符背后的逻辑. 2019 年 10 ..
发布时间:2022-01-14 10:13:03 其他开发

使用 intel 11.1 编译器在 fortran 90 中获得双精度

我有一个非常大的代码,它设置并迭代求解一个非线性偏微分方程系统,用 fortran 编写.我需要所有变量都是双精度的.在我为代码编写的附加模块中,我将所有变量声明为双精度类型,但我的模块仍然使用旧源代码中声明为实数类型的变量.所以我的问题是,当单精度变量乘以 fortran 中的双精度变量时会发生什么?如果用于存储值的变量声明为双精度,结果是否为双精度?如果双精度值乘以最后没有“D0"的常数怎么办 ..
发布时间:2022-01-14 10:12:34 其他开发

保留内在分配中的分配界限

我在分配时使用自动分配来计算两个数组的差异,边界从 0 开始: 程序主程序隐式无整数,可分配 :: a(:), b(:), c(:)分配(一(0:10))分配(b(0:10))a = 1b = 2写 (*,*) lbound(a)写 (*,*) lbound(b)c = b - a写 (*,*) lbound(c)结束程序主 gfortran 和 ifort 都给出输出: 001 为什么 ..
发布时间:2022-01-14 10:12:28 其他开发

数组内的 Fortran 数组

我正在尝试在 Fortran 中创建一个类似于 MATLAB 中的单元格的数组. 基本上(例如)我正在尝试创建一个数组 X(10) 其中元素 X(1) 是一个维度为 (20,2) 的数组, X(2) 是一个维度为 (25,2) 等的数组 我该怎么做? 解决方案 使用包含单个组件的派生类型来实现特定情况的等价物.元胞数组对应于该派生类型的数组,位于元胞数组每个元素内的数组就是每个 ..
发布时间:2022-01-14 10:12:19 其他开发

数组和指针形状

谁能解释一下为什么下面的程序不起作用,以及如何使它起作用?在主程序中我分配了一个指针,在子程序 sub 中我查找数组的形状并得到错误的值. 程序测试实数,指针,维度(:,:,:) :: arr分配(arr(3,5,7))print *, "在测试中:",shape(arr)调用子(arr)print *, "返回测试:",shape(arr)结束程序测试子程序 sub(arr)实数,指针,维度 ..
发布时间:2022-01-14 10:11:47 其他开发

使用 Fortran 获取文件大小(以字节为单位)的好方法是什么?

有没有办法使用 Intel Fortran 在 Fortran 中获取文件大小? 我使用的是 stat,它在 gfortran 中效果很好,但在 ifort 中不可用. 解决方案 INQUIRE(FILE=filename, SIZE=file_size) filename 是一个字符标量,file_size 是一个整数标量,它将使用文件存储单元中的文件大小定义(ifort 上的“ ..
发布时间:2022-01-14 10:11:40 其他开发

如何构造一个包含 9 个较小矩阵的矩阵

我有九个矩阵,其维度为 (N x N)A1(i,j),A2(i,j),A3(i,j),A4(i,j),A5(i,j),A6(i,j),A7(i,j),A8(i,j),A9(i,j) 然后我想构造一个更大的矩阵(3N x 3N),包括这九个矩阵: A = [A1 A2 A3A4 A5 A6[A7 A8 A9] 在fortran中,我可以使用命令行吗 做 i=1,FN做 j=1,FMLA( ..
发布时间:2022-01-14 10:11:33 其他开发