fortran90相关内容
我注意到父模块使用的(子)模块中的变量只能通过父模块在主程序中访问。这是一个在C / C ++中明确区分Fortran中 include 语句的概念。以下程序清楚地说明了这一概念。 a.f90 模块a_mod 使用b_mod 隐式无 整数:: a 结束模块 b.f90 模块b_mod 使用c_mod 隐式无 整数:: b 结束模块
..
我已经看到这要求其他语言,但刚刚发现Fortran可以很好地处理数组,我想可能有一种简单的方法来做这个没有循环。 目前我在搜索“最近邻居”的3D数组,看它们是否包含字母“n”,每当找到这个值时,我希望它执行一些clusterLabel赋值(这不是与此问题相关) 我想使用 if(lastNeighArray.eq。“n”)然后... 但由于显而易见的原因,它不喜欢根据值检查
..
我有一个Fortran库,我必须通过一个非常特定的格式来传递函数。然后图书馆正在对我的功能进行一些操作。这个函数是由用户编写的(像我一样),并且该库是理所当然的。 不幸的是,为了计算我的函数,我需要一些值(其中一些值可以被初始化一劳永逸),我想避免使用 common 或 save 。 我读过我可以使用单例模式,但我对模板并不熟练,而且有些人批评它的用法。所以, 如何在函数内部传递我的
..
我试图在我的程序中将一个整数转换为Fortran 90中的字符。 这是我的代码: Write(Array(i,j),'(I5)')Myarray(i,j) Array 是一个整数数组,而 Myarray 是一个字符数组,而'(I5 )',我不知道它是什么,之前只是为我工作! 错误是: “单元未打开,未预先连接” 有时
..
我想轻松地在一个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 我开始使
..
我想对一个实数的数组做一些算术运算,后来我必须把它作为字符变量的输入来读取。我使用了read语句,但仍然出现错误: $ b 单元规范必须是整数或字符变量。 我也验证了格式描述符。这是我的一段代码 real :: la(10),sl integer :: i 字符(len = 5):: lat 字符(len = 7)::站点 sl = 11.25 do i
..
我尝试实现一个读取数字n的代码,创建一个存储n个双精度数字的向量,读取此数字,调用子程序printminmax()以查找最小值和最大值。我的代码适用于正常数字(整数,实数等),但是当我有科学记数法(0.3412E + 01)时,为什么?我认为与*阅读所有格式。谢谢 隐式无 整型,维(:),allocatable :: x 整数:: n 打开(单位= 77,文件='input2.d
..
在Fortran中,实际的阅读方式是: A 1. 2. 3. 如果第一个字符是“A”,但不读取: Z 如果第一个字符是一个“Z”的例子。 如果我尝试读整行: read(1,*)char,number1,number2,number3 然后如果数字缺失,则会发生错误。因此,我需要一种方式来读取该行上的“A”,
..
子程序foo(bar) 使用在Fortran 90中有以下子程序:垃圾邮件 !维n在模块中定义垃圾 隐含无 真* 8 bar(n) .... 结尾子程序foo $ b由于数组维 n 是在模块中定义的,所以 code> spam ,我在编译C包装函数(由 f2py 生成)时收到错误,如 $ b $ 错误:'n'未声明(在此函数中首次使用) 由于C包装
..
我正在尝试编写一段基本的代码来打印名为'arr'的50 * 50数组。不幸的是,到目前为止,它只打印数组的第一行,尽管该行的格式是正确的。我附上了下面的代码,并想知道是否有人可以指出我哪里出错了? 程序测试 隐式无 integer :: i,j 整数,维(1:50,1:50):: arr arr = 1 do i = 1,50 打开(unit = 6,file
..
一个简单的问题。还有一个类似的问题,但我没有找到确切的问题。 我只是在fortran 90中检查实际数据类型的限制(使用ifort编译器),理由是我的实际代码可能会达到此限制。为了测试,我只给了一个参数 mval1 (见代码)并乘以2.在ifort手册中,它表示它可以采用的最大值是10E38,我的值比这个小得多。但在打印时,它会随机输出数字(输出在底部给出)。任何人都可以帮助我解决这个问题
..
我在使用OpenMP和Fortran 90时相对比较新。我知道使用并行do循环时,调用子例程中的局部变量是自动私有的。对于从并行do循环中调用的函数是否也是如此?主程序中定义的外部函数和函数之间是否有区别? 我假设外部函数的行为与子程序相同,但我特别好奇主程序中的函数。谢谢! 解决方案 如果过程是过程,则OpenMP并行区域中调用的过程(函数或子例程)的局部变量是私有的如果变量不是 s
..
我在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
..
我试图在两个内部通信器之间的Fortran中实现一个 MPI_intercomm ,其中一个具有前两个进程,另一个具有其余的。 我需要在新创建的通信器之间执行send,recv操作。 代码: 包含'mpif.h' 整数标记,ierr,等级,numtasks,颜色,new_comm,inter1,inter2 tag = 22 call MPI_Init(ierr) cal
..
是否可能有一个从数组中删除所有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
..
我需要在我的Macbook Pro上使用Fortran90代码,这是多年前在Microsoft Developer Tools上编写的。作为一个免费的选项,我在我的Macbook上安装了 gfortran 来编译它。原始代码包含& 长字符串的连续字符,但我无法使用它。没有& 字符,一切正常。可能是什么问题?我是否需要激活某些功能才能使用& 字符? 例如,我认为应该这样: x = 1
..
program foo type bar real,dimension( 2):: vector 结束类型 类型(bar),dimension(3):: bararray 调用doSomething(bararray%vector) 结束程序 子程序doSomething(v) 实数,维(3,2),意图(inout):: v ... 结束子程序 现在这给我一
..
是否可以直接在函数的返回值上使用索引?就像这样: readStr()(2:5) 其中 readStr()是一个返回字符串的函数。在其他许多语言中,这很可能,但Fortran呢?我的例子中的语法当然不会编译。是否还有其他语法可用? 解决方案 不,这在Fortran中不可行。然而,你可以改变你的函数来获取一个额外的索引数组,以确定返回哪些元素。这个例子说明了这种可能性,
..
我在F90程序中使用了一些F77固定格式代码。我试图在我的主程序中包含这两种代码。以下是我如何安排我的代码: 头文件: 文件名:include.inc include'module_variables.F90' include'message.F90' include'module_common_functions.f90' include'module_input_gdf.
..
我对Fortran很新,而且我正在玩功能。 我在一个非常简单的程序中发现了一个非常奇怪的行为,我无法以任何方式证明它的合理性。这里是简单的代码: $ pre $ code $ Real $ 8函数gamma(v) 隐含无 实数* 8 :: v gamma = 1.0_8 / Sqrt(1.0_8 - v ** 2) 结束函数gamma 程序test_gamma 隐含无 R
..