fortran宫殿

Reading time: 5 minutes and 10 seconds with 1139 words. 本文总阅读量

任何语言应该都可以有类似宫殿的想法,在纵横交错的街道中,能过找到进口和出口, 并可以使用很多条道路完成你想去的地方,而不是拘泥于一条道路。Fortran也是如此。 诞生于1951年左右的第一个面向对象的高级语言Fortran 语言,也已经65岁左右了,它以其 快速有效的科学数值计算,一直运用于科学研究领域中。 浅显针对fortran的理解—-宫殿式的介绍.

宫殿

宫殿蕴含着纵横交错,阡陌交通,但是确实零落有序,复合规律。通过宫殿群来认识这门科学语言。

宫殿

fortran

fortran包含以下主要几个部分

  1. 进口(初始化)
  2. 数组
  3. 过程定义(子程序和函数)
  4. 模块
  5. 出口
  6. 文件组合

进口

程序在开始设计的时候,需要变量初始化,也就是进行进口的布置。

input

数组arrays and allocatable

有时候我们发现一条街到应该相同的样式,于是我们采用数组把具有相同的 数据形成放进一个一个的房屋。arrays fortran的dimension是相当常见的形式,因为他就是数组的体现。 一般房屋的建造都是需要allocatable的属性,也就是政府指定的可用地,利用allocate建房,使用完,废弃了,就deallocate。zhengdi

subroutine and function

房屋一多我们发现没法管理,于是我们就把很多的房屋放在对应的街道中去,也就是 subroutine或者function当中。

街道

另外有时候有一些已经在外建的subroutine和function一定得把他们的头和参数类型和end部分提交到program(政府)当中的INTERFACE当中,这样才能确定这块地的合法性等。 这也是为什么fortran中有时会有额外的子程序的定义(和主文件不在同一个文件夹当中),为了让主文件能够识别,使用INTERFACE把它嵌入进来(后来引入module减少了interface的作用)。

interface

升级版的module

为了管理和维护房间(arrays)和街道(subs),于是我们把他们放在一个一个区域当中。module

出口

当我们绕过了整个宫殿后,还需要布置一个或多个的出口。 ![output][5]

然而我们发现我们需要更大的进口说明

有时候我们进一步组装多个输入文件,而为了方便,我们把他们组装成一个更大的进口装置,放置在最前面。

square

后续

无论模块化,还是函数化,亦或者模式化,都是基于原先大的过程式变成的改成, 只不过是为了减少冗余、重复,同时简化和方便阅读,另外还有就是方便拓展。 从现在开始可以建立你自己的fortranlibrary modal (一个不错的建议)

fortran2003出来了个type这个数据结构的创建,方便的把多个变量或者数组组合成为一种数据类型,这就有点像3D打印的功能:

  type creat_a
    real :: a
    integer :: b
    real,allocatable :: c(:)
  end type creat_a
  
  type(creat_a) :: creat_b,creat_c
  
  creat_b%a = 1.0
  creat_b%b = 2
  allocate (creat_b%c(3))
  creat_b%c = 6.0
  
  creat_c = creat_b
  creat_c%b = 8

type的作用类似Hashkell的data的作用,没有行为只有数据类型。 先开个头……

Avatar
Ye Zhaoliang
Engineer of offshore wind turbine technique research

My research interests include distributed energy, wind turbine power generation technique , Computational fluid dynamic and programmable matter.

Related

本站访问量: