我不了解FORtran 90 中CONTAINS语句的重要性
例如
PROGRAM BLABLA
IMPLICIT NONE
INTEGER :: i,j,k
i = 1; j = 1;k =1
PRINT *, i,j,k
CALL ABC(i,j,k)
PRINT *, i,j,k
CONTAINS
SUBROUTINE ABC(r,s,t)
IMPLICIT NONE
INTEGER, INTENT(IN) :: r,s
INTEGER, INTENT(OUT) :: t
t = r + s
END SUBROUTINE ABC
END PROGRAM BLABLA
Run Code Online (Sandbox Code Playgroud)
一种是通过在主程序之外定义子例程。我知道对于函数来说,需要指定函数的类型,但是对于子例程则不需要。我有兴趣了解这样做是否还有其他警告?
PROGRAM BLABLA
IMPLICIT NONE
INTEGER :: i,j,k
i = 1; j = 1;k =1
PRINT *, i,j,k
CALL ABC(i,j,k)
PRINT *, i,j,k
END PROGRAM BLABLA
SUBROUTINE ABC(r,s,t) …Run Code Online (Sandbox Code Playgroud) 我正在尝试编译一组行并执行它们并将输出附加到文本文件.我没有写同样的东西,而是使用python脚本在后台编译和执行.
import subprocess
subprocess.call(["ifort","-openmp","mod1.f90","mod2.f90","pgm.f90","-o","op.o"])
subprocess.call(["nohup","./op.o",">","myout.txt","&"])
Run Code Online (Sandbox Code Playgroud)
该程序pgm.f90正在使用ifort编译器进行编译,但是没有附加输出myout.txt.相反,它是附加输出,即使在python脚本中指定后nohup.out,程序也不在后台运行"&".
我在这里犯了什么明显的错误?
提前致谢
我想知道列表中是否有等效语句来执行以下操作.在MATLAB中,我会做以下事情
fid = fopen('inc.txt','w')
init =1;inc = 5; final=51;
a = init:inc:final
l = length(a)
for i = 1:l
fprintf(fid,'%d\n',a(i));
end
fclose(fid);
Run Code Online (Sandbox Code Playgroud)
简而言之,我有一个初始值,一个最终值和一个增量.我需要创建一个数组(我读它相当于python中的列表)并打印到文件.
我正在尝试使用python脚本在我们学院的集群中提交作业.
compile_cmd = 'ifort -openmp ran_numbers.f90 ' + fname \
+ ' ompscmf.f90 -o scmf.o'
subprocess.Popen(compile_cmd, shell=True)
Popen('qsub launcher',shell=True)
Run Code Online (Sandbox Code Playgroud)
问题是,系统在这一点上悬而未决.上述脚本中有任何明显错误吗?代码中提到的所有文件都可以在该目录中找到(我已经交叉检查过了).qsub是用于向我们的集群提交作业的命令.fname是我在流程中创建的文件的名称.