Fortran
编译多个fortran的.f*文件
- 有两个Fortran程序fun.f90和main.f90,其中main.f90是主程序,fun.f90是在主程序中调用的子程序。现在需要同时编译这两个文件。
- 方法一:将这两个文件放到一个目录下,使用fortran编译命令,如Intel的ifort
ifort -o exe_name fun.f90 main.f90 或者ifort -o exe_name main.f90 fun.f90 - 方法二:在主程序main.f90中加入include'fun.f90'语句,然后在Linux下用fortran命令编译
ifort -o exe_name main.f90 - 方法三:分步骤编译
ifort -c main.f90 (执行该命令后,会在目录下产生一个main.o的文件) ifort -c fun.f90 (执行该命令后,会在目录下产生一个fun.o的文件) ifort -o exe_name fun.o main.o 或者ifort -o exe_name main.o fun.o
派生类型x%fs
- a的组件rho和sigma可以通过a%rho和a%sigma访问
- 这些组件可以在表达式中使用(例如a%rho*g),也可以是赋值的左侧(a%rho=1.)
数组下标
- 默认情况下,数组是从下标1开始索引的
- 但是可以在声明时改变开始索引的数字
- 如intger :: a(-3:3) 该数组大小为7,索引从-3到3
PAUSE产生的警告
- PAUSE的作用:在Fortran中,PAUSE语句用于暂停程序的执行,以便用户可以查看输出结果或等待程序的其他操作。
- 问题显示:warning:Deleted feature: PAUSE statement at (1)
- 原因:fortran2018开始,去掉了pause语句,新版本编译器可能会看到这个warning
- 解决方法:
- 不管这个警告,因为经过实际的验证,发现虽然会有警告,但是pause语句的正常使用并不受影响,输入go就会继续执行
- 使用其他方法来实现暂停程序的执行。例如,使用READ语句从标准输入读取一个临时变量,以等待用户输入。
character(len=1) temp write(*,*) 'Program paused. Press any key to continue...' read(*,*) temp 这将在屏幕上显示一条消息,提示用户按任意键继续程序的执行。