fortran90相关内容

Fortran中模块使用的模块的变量范围

我注意到父模块使用的(子)模块中的变量只能通过父模块在主程序中访问。这是一个在C / C ++中明确区分Fortran中 include 语句的概念。以下程序清楚地说明了这一概念。 a.f90 模块a_mod 使用b_mod 隐式无 整数:: a 结束模块 b.f90 模块b_mod 使用c_mod 隐式无 整数:: b 结束模块 ..
发布时间:2018-08-02 10:28:32 其他开发

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

我已经看到这要求其他语言,但刚刚发现Fortran可以很好地处理数组,我想可能有一种简单的方法来做这个没有循环。 目前我在搜索“最近邻居”的3D数组,看它们是否包含字母“n”,每当找到这个值时,我希望它执行一些clusterLabel赋值(这不是与此问题相关) 我想使用 if(lastNeighArray.eq。“n”)然后... 但由于显而易见的原因,它不喜欢根据值检查 ..
发布时间:2018-07-17 08:50:30 其他开发

如何避免Fortran 90或更高版本中的全局变量?

我有一个Fortran库,我必须通过一个非常特定的格式来传递函数。然后图书馆正在对我的功能进行一些操作。这个函数是由用户编写的(像我一样),并且该库是理所当然的。 不幸的是,为了计算我的函数,我需要一些值(其中一些值可以被初始化一劳永逸),我想避免使用 common 或 save 。 我读过我可以使用单例模式,但我对模板并不熟练,而且有些人批评它的用法。所以, 如何在函数内部传递我的 ..
发布时间:2018-05-02 10:51:16 其他开发

在Fortran90中将整数转换为字符

我试图在我的程序中将一个整数转换为Fortran 90中的字符。 这是我的代码: Write(Array(i,j),'(I5)')Myarray(i,j) Array 是一个整数数组,而 Myarray 是一个字符数组,而'(I5 )',我不知道它是什么,之前只是为我工作! 错误是: “单元未打开,未预先连接” 有时 ..
发布时间:2018-03-16 17:42:58 其他开发

带数组的MPI结构数据类型

我想轻松地在一个MPI_SEND / RECV调用中发送一个 someObject (mpi)。 > type someObject integer :: foo real :: bar,baz double precision :: a,b,c double precision,dimension(someParam):: x,y end type someObject 我开始使 ..
发布时间:2018-03-16 17:42:52 其他开发

如何以字符的形式读取实数

我想对一个实数的数组做一些算术运算,后来我必须把它作为字符变量的输入来读取。我使用了read语句,但仍然出现错误: $ b 单元规范必须是整数或字符变量。 我也验证了格式描述符。这是我的一段代码 real :: la(10),sl integer :: i 字符(len = 5):: lat 字符(len = 7)::站点 sl = 11.25 do i ..
发布时间:2018-03-16 17:42:43 其他开发

用子程序输入数组文件(.dat)的最小值和最大值

我尝试实现一个读取数字n的代码,创建一个存储n个双精度数字的向量,读取此数字,调用子程序printminmax()以查找最小值和最大值。我的代码适用于正常数字(整数,实数等),但是当我有科学记数法(0.3412E + 01)时,为什么?我认为与*阅读所有格式。谢谢 隐式无 整型,维(:),allocatable :: x 整数:: n 打开(单位= 77,文件='input2.d ..
发布时间:2018-03-16 17:42:14 其他开发

读取内容取决于第一个字符的行

在Fortran中,实际的阅读方式是: A 1. 2. 3. 如果第一个字符是“A”,但不读取: Z 如果第一个字符是一个“Z”的例子。 如果我尝试读整行: read(1,*)char,number1,number2,number3 然后如果数字缺失,则会发生错误。因此,我需要一种方式来读取该行上的“A”, ..
发布时间:2018-03-16 17:41:57 其他开发

f2py复杂因素参数数组维度在模块/通用块中定义

子程序foo(bar) 使用在Fortran 90中有以下子程序:垃圾邮件 !维n在模块中定义垃圾 隐含无 真* 8 bar(n) .... 结尾子程序foo $ b由于数组维 n 是在模块中定义的,所以 code> spam ,我在编译C包装函数(由 f2py 生成)时收到错误,如 $ b $ 错误:'n'未声明(在此函数中首次使用) 由于C包装 ..
发布时间:2018-03-16 17:41:21 其他开发

无法将后续的数组行列入文件

我正在尝试编写一段基本的代码来打印名为'arr'的50 * 50数组。不幸的是,到目前为止,它只打印数组的第一行,尽管该行的格式是正确的。我附上了下面的代码,并想知道是否有人可以指出我哪里出错了? 程序测试 隐式无 integer :: i,j 整数,维(1:50,1:50):: arr arr = 1 do i = 1,50 打开(unit = 6,file ..
发布时间:2018-03-16 17:41:09 其他开发

真实的数据类型fortran 90

一个简单的问题。还有一个类似的问题,但我没有找到确切的问题。 我只是在fortran 90中检查实际数据类型的限制(使用ifort编译器),理由是我的实际代码可能会达到此限制。为了测试,我只给了一个参数 mval1 (见代码)并乘以2.在ifort手册中,它表示它可以采用的最大值是10E38,我的值比这个小得多。但在打印时,它会随机输出数字(输出在底部给出)。任何人都可以帮助我解决这个问题 ..
发布时间:2018-03-16 17:41:06 其他开发

在使用OpenMP时,程序中的局部变量是否自动保密?

我在使用OpenMP和Fortran 90时相对比较新。我知道使用并行do循环时,调用子例程中的局部变量是自动私有的。对于从并行do循环中调用的函数是否也是如此?主程序中定义的外部函数和函数之间是否有区别? 我假设外部函数的行为与子程序相同,但我特别好奇主程序中的函数。谢谢! 解决方案 如果过程是过程,则OpenMP并行区域中调用的过程(函数或子例程)的局部变量是私有的如果变量不是 s ..
发布时间:2018-03-16 17:40:50 其他开发

在Fortran 90中从文件中读取函数

我在Fortran 90中有一个优化求解器。所以,如果我想改变目标函数 ,我必须修改主文件并用这种方式编写目标函数: 子程序fobj(n,x,f) 隐式无 整数:: n 实数(8):: f real(8):: x(n) intent(in):: n,x intent(out):: f !目标函数 f = x(1)** 2-x(2)+ 2 * x(3) 结束子程序fobj ..
发布时间:2018-03-16 17:40:31 其他开发

无法实现MPI_Intercomm_create

我试图在两个内部通信器之间的Fortran中实现一个 MPI_intercomm ,其中一个具有前两个进程,另一个具有其余的。 我需要在新创建的通信器之间执行send,recv操作。 代码: 包含'mpif.h' 整数标记,ierr,等级,numtasks,颜色,new_comm,inter1,inter2 tag = 22 call MPI_Init(ierr) cal ..
发布时间:2018-03-16 17:39:59 其他开发

在Fortran中删除二维数组中的重复元素

是否可能有一个从数组中删除所有2D重复节点的函数? A(xy,1)= 1,2,4,5,5,5,5,5, A(xy,2)= / 5,2,5, 6 ,7,6,6,3,7,6 ,6 / 之后 A(xy,1)= / 1,2,4,5,5,5,9 ,6,8,2,4 / A(xy,2)= / 5,2,5,6 / 7,6,6 ,6,3,7,6 / 当我尝试执行@ HighPerforman ..
发布时间:2018-03-16 17:39:11 其他开发

继续在gfortran 5.2.0

我需要在我的Macbook Pro上使用Fortran90代码,这是多年前在Microsoft Developer Tools上编写的。作为一个免费的选项,我在我的Macbook上安装了 gfortran 来编译它。原始代码包含& 长字符串的连续字符,但我无法使用它。没有& 字符,一切正常。可能是什么问题?我是否需要激活某些功能才能使用& 字符? 例如,我认为应该这样: x = 1 ..
发布时间:2018-03-16 17:38:29 其他开发

直接索引fortran函数返回值

是否可以直接在函数的返回值上使用索引?就像这样: readStr()(2:5) 其中 readStr()是一个返回字符串的函数。在其他许多语言中,这很可能,但Fortran呢?我的例子中的语法当然不会编译。是否还有其他语法可用? 解决方案 不,这在Fortran中不可行。然而,你可以改变你的函数来获取一个额外的索引数组,以确定返回哪些元素。这个例子说明了这种可能性, ..
发布时间:2018-03-16 17:37:29 其他开发

奇怪的函数调用行为

我对Fortran很新,而且我正在玩功能。 我在一个非常简单的程序中发现了一个非常奇怪的行为,我无法以任何方式证明它的合理性。这里是简单的代码: $ pre $ code $ Real $ 8函数gamma(v) 隐含无 实数* 8 :: v gamma = 1.0_8 / Sqrt(1.0_8 - v ** 2) 结束函数gamma 程序test_gamma 隐含无 R ..
发布时间:2018-03-16 17:36:28 其他开发