日常积累——Fortran

逻辑运算

数学符号关系运算符
> (大于).GT.
≥ (大于或等于).GE.
< (小于).LT.
≤ (小于或等于).LE.
= (等于).EQ.
≠ (不等于).NE.
含义逻辑运算符
.AND.
.OR.
.NOT.

数组

  • 数组的保存规则
    不管数组有几维,在计算机内存中都存成一个连续模块。
    从低维到高维(左到右)存放,与C语言相反。
    注意:维数越小使用越内层的循环可以提高运行效率!
do i=1,5
    do j=1,5
         do k=1,5
             write(*,*)  a(k,j,i)
         end do
    end do
end do 
  • 可变大小的数组
    声明:allocatable 如integer, allocatable :: a(:,:)
    数组的大小不用在声明时给出,可以等到程序运行到可知数组大小的那一步之后再给出。但是必须分配完内存空间才可以使用,否则计算机不知道要分给它多大地方。分配完内存空间的可变大小数组就跟普通数组没什么区别了。
    使用:allocate 如allocate(a(5,5))
    释放空间:deallocate 如deallocate(a)

  • 其他

  1. 可以在allocate命令中加stat来得知内存配置是否成功。
  2. allocated函数返回一个逻辑值,用于检查可变大小的数组是否已经配置内存。

文件

  • 基本概念

  • 读取文件的操作:
    顺序读取(一步步读取)、直接读取(跳到任何一个位置读写)

  • 保存格式:
    文本文件(好处:易懂)、二进制文件(好处:读取速度快、省空间)

  • 文件基本操作

  • 打开/创建文件:
    open(unit=文件编号,file=‘文件名称’)
    例:open(unit=10,file='hello.txt')
    open的其他参数:
    form=‘FORMATTED’(文本文件,默认)/ ‘UNFORMATTED’(二进制文件)
    status=‘NEW’(第一次打开的文件)/ ‘OLD’(原本已经存在的文件)/ ‘SCRATCH’(打开一个暂存盘,在程序结束后自动删除)/ ‘REPLACE’ (若文件不存在则新建一个文件,若已经存在则覆盖原文件,通常编译器的默认状态)
    access=‘SEQUENTIAL’(顺序读取,默认)/ ‘DIRECT’(直接读取)
    recl=长度(顺序读取:一次可以读写多大容量的数据;直接读取:每一个模块单元的分区长度)
    err=label(当文件打开错误时,程序跳跃到label所指代码处继续执行程序)
    iostat=一个整型变量var(var>0 读取发生错误,var=0正常,var<0文件终了)
    position=‘ASIS’(文件打开时的读取位置,通常是开头,默认)/ ‘REWIND’(文件打开时的读取位置移到开头)/ ‘APPEND’(读取位置移到结尾)
    ACTION=‘READWRITE’(可读可写,默认)/ ‘READ’(只读)/ ‘WRITE’(只写)
    PAD=‘YES’ (格式化输入时,前面不足的字段会以空格填满,默认)/ ‘NO’(不会)
    DELIM=‘NONE’ (纯输出字符串内容)/ ‘QUOTE’(前后加双引号)/ ‘APOSTROPHE’(前后加单引号)

  • 写入:write(文件编号,*) 默认命令完成后自动向下移一行
    例:write(10,*) "Hello" 把Hello写入10号文件中

  • 读取:read(文件编号,*)

  • 输出到屏幕:print *, 要输出的量

  • 读取文件
    ACCESS=‘APPEND’ 表示文件读取位置在文件的尾部
    READ 命令每读一次会自动把读取位置移动到下一行。


函数

  • 数值函数
函数名说明
ABS (A)绝对值
CONJG (Z)求共轭复数
DBLE (A)转换为双精度实数类型
  • FFT函数
    三种常用的谱空间与物理空间转换的FFT函数:
fftw_execute_dft(const fftw_plan p, fftw_complex *in, fftw_complex *out)  
fftw_execute_dft_r2c(const fftw_plan p,double *in, fftw_complex *out)
fftw_execute_dft_c2r(const fftw_plan p,fftw_complex *in, double *out)

三个变量:plan,输入,输出

FFTW使用手册:
http://www.fftw.org/fftw3_doc/FFTW-Reference.html#FFTW-Reference


MODULE

作用:封装,调用之后不用在子程序里再一次声明了
调用:use 模块名
可以封装:
a) 变量:默认为局部变量,加save变为全局变量 (如 integer,save::a)
b) 类型:自己定义type,类似C语言中的struct
c) 函数:封装在同一个module里函数会自动互相认识,不需要经过声明;函数也可以直接使用同一个module里所声明的变量。


其他

Fortran 不区分大小写

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值