`
chemingliang
  • 浏览: 134731 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

FORTRAN 90 程序典型示例

 
阅读更多

 

1 FORTRAN 90 程序示例代码

 

!------------------------------------------------------------------------------------!

! Code NAME: people.F90                                                                                     !

! Code DESC: This code contains module, structure(type),pointer                                !

! array,subroutine et al. usage.                                                                             ! 

!------------------------------------------------------------------------------------!

! IGSNRR of CAS  shuchangs@126.com                                                                   !

!------------------------------------------------------------------------------------!

 

MODULE peopleType

 

IMPLICIT NONE

!PRIVATE

 

TYPE,PUBLIC :: peopleT

  INTEGER,POINTER              :: idCard

  CHARACTER *10,POINTER    :: name

  CHARACTER *4,POINTER      :: sex

  INTEGER,POINTER              :: age

  INTEGER,POINTER              :: archiveYear(:)

  CHARACTER *50,POINTER    :: archiveHistory(:)

END TYPE peopleT

 

TYPE,PUBLIC :: studentT

  TYPE(peopleT)                 :: p

  INTEGER,POINTER             :: familyMembersNum 

  CHARACTER *10,POINTER   :: familyMembers(:)

END TYPE studentT

 

!----------------------------------------------------

! Declare single instance of peopleType

!----------------------------------------------------

TYPE(peopleT) , PUBLIC, TARGET, SAVE   :: people

TYPE(studentT), PUBLIC, TARGET, SAVE  :: student

 

PUBLIC :: peopleInit

PUBLIC :: peoplePrint

PUBLIC :: studentInit

PUBLIC :: studentPrint

 

CONTAINS

SUBROUTINE peopleInit()

  INTEGER,TARGET             :: NUMBER=001

  CHARACTER *10,TARGET   :: NAME='SHU Chang'

  INTEGER,TARGET             :: AGE=20

  CHARACTER *4,TARGET    :: SEX='Girl'

  INTEGER                        :: I

  people.idCard     => NUMBER

  people%name     => NAME

  people.sex         => SEX

  people.age        => AGE

  ALLOCATE(people.archiveYear(1:AGE))

  ALLOCATE(people.archiveHistory(1:AGE))

  !Assign values to pointer arrays:

  DO I=1,AGE

    people.archiveYear(I)=2000+I

    people.archiveHistory(I)='WELL'

  END DO

END SUBROUTINE peopleInit

 

SUBROUTINE peoplePrint()

  INTEGER :: i

  print *,'The People Information----------------------------------------'

  print *,'Basic Information:'

  print *,'ID-CARD:',people.idCard,'NAME:',people.name,'SEX:',people.sex,&

          'AGE:',people.age

  print *,'Archive Information:'

  DO i=1,people.age

     print *,'Archive Year:',people.archiveYear(i),'Archive History:',&

          people.archiveHistory(i)

  END DO

  print *,'---------------------------------------------------------------'

END SUBROUTINE peoplePrint

 

SUBROUTINE studentInit()

  INTEGER,TARGET     :: n=3

  student.familyMembersNum => n 

  ALLOCATE(student.familyMembers(1:n))

  student.familyMembers=(/'Father','Mother','Self'/)

  call peopleInit

END SUBROUTINE studentInit

 

SUBROUTINE studentPrint()

  INTEGER   :: i

  call peoplePrint

  print *,'The Student Information----------------------------------------'

  print *,'The family-members number is:',student.familyMembersNum

  print *,'They are respectively:'

  DO i=1,student.familyMembersNum

    print *,student.familyMembers(i)

  END DO

  print *,'---------------------------------------------------------------'

END SUBROUTINE studentPrint

END MODULE peopleType

 

!The main program begins here:

program main

  !Use the module of peopleType above.

  use peopleType 

  

  !Local pointer variables:

  integer,pointer                 :: numberL

  character(len=10),pointer  :: nameL

  character(len=4),pointer    :: sexL

  integer,pointer                 :: ageL  

  !Call the subroutine: peopleInit() to initialize the peopleT structure.

  print *,'The result is below when the subroutine is called:'

  call peopleInit

  call peoplePrint

  !Relate the free pointer and the target pointer

  numberL => people%idCard

  nameL    => people.name 

  sexL       => people.sex

  ageL       => people.age

  !Revalue them

  numberL  = 002

  nameL     = 'LIU Fei' 

  sexL        = 'Boy'

  ageL        = 22 

  print *,'The result is here after the values being assigned:'

  call peoplePrint  

  

  call studentInit

  !Revalue them

  numberL   = 003

  nameL      = 'CHEN Qing'

  sexL        = 'Girl'

  ageL        = 18

  print *,'The student Information is below:'

  call studentPrint

end program

 
2 运行结果
 
$ ifort people.F90
$ ./a.out 
 The result is below when the subroutine is called:
 The People Information----------------------------------------
 Basic Information:
 ID-CARD:           1 NAME:SHU Chang SEX:GirlAGE:          20
 Archive Information:
 Archive Year:        2001 Archive History:      WELL                                              
 Archive Year:        2002 Archive History:      WELL                                                  
 Archive Year:        2003 Archive History:      WELL                                                  
 Archive Year:        2004 Archive History:      WELL                                              
 Archive Year:        2005 Archive History:      WELL                                             
 Archive Year:        2006 Archive History:      WELL                                             
 Archive Year:        2007 Archive History:      WELL                                             
 Archive Year:        2008 Archive History:      WELL                                              
 Archive Year:        2009 Archive History:      WELL                                             
 Archive Year:        2010 Archive History:      WELL                                             
 Archive Year:        2011 Archive History:      WELL                                             
 Archive Year:        2012 Archive History:      WELL                                           
 Archive Year:        2013 Archive History:      WELL                                              
 Archive Year:        2014 Archive History:      WELL                                            
 Archive Year:        2015 Archive History:      WELL                                             
 Archive Year:        2016 Archive History:      WELL                                             
 Archive Year:        2017 Archive History:      WELL                                             
 Archive Year:        2018 Archive History:      WELL                                             
 Archive Year:        2019 Archive History:      WELL                                             
 Archive Year:        2020 Archive History:      WELL                                             
 ---------------------------------------------------------------
 The result is here after the values being assigned:
 The People Information----------------------------------------
 Basic Information:
 ID-CARD:           2 NAME:LIU Fei   SEX:Boy AGE:          22
 Archive Information:
 Archive Year:        2001 Archive History:      WELL                                              
 Archive Year:        2002 Archive History:      WELL                                             
 Archive Year:        2003 Archive History:      WELL                                              
 Archive Year:        2004 Archive History:      WELL                                              
 Archive Year:        2005 Archive History:      WELL                                              
 Archive Year:        2006 Archive History:      WELL                                              
 Archive Year:        2007 Archive History:      WELL                                             
 Archive Year:        2008 Archive History:      WELL                                             
 Archive Year:        2009 Archive History:      WELL                                            
 Archive Year:        2010 Archive History:      WELL                                             
 Archive Year:        2011 Archive History:      WELL 
 Archive Year:        2012 Archive History:      WELL                                            
 Archive Year:        2013 Archive History:      WELL                                              
 Archive Year:        2014 Archive History:      WELL                                             
 Archive Year:        2015 Archive History:      WELL                                            
 Archive Year:        2016 Archive History:      WELL                                             
 Archive Year:        2017 Archive History:      WELL                                             
 Archive Year:        2018 Archive History:      WELL                                             
 Archive Year:        2019 Archive History:      WELL                                             
 Archive Year:        2020 Archive History:      WELL                                        
 Archive Year:           0 Archive History:      1?
 Archive Year:           0 Archive History:
 
 ---------------------------------------------------------------
 The student Information is below:
 The People Information----------------------------------------
 Basic Information:
 ID-CARD:           3 NAME:CHEN Qing SEX:GirlAGE:          18
 Archive Information:
 Archive Year:        2001 Archive History:      WELL                                              
 Archive Year:        2002 Archive History:      WELL                                              
 Archive Year:        2003 Archive History:      WELL                                              
 Archive Year:        2004 Archive History:      WELL                                             
 Archive Year:        2005 Archive History:      WELL                                              
 Archive Year:        2006 Archive History:      WELL                                             
 Archive Year:        2007 Archive History:      WELL                                             
 Archive Year:        2008 Archive History:      WELL                                             
 Archive Year:        2009 Archive History:      WELL                                   
 Archive Year:        2010 Archive History:      WELL                                              
 Archive Year:        2011 Archive History:      WELL                                              
 Archive Year:        2012 Archive History:      WELL                                              
 Archive Year:        2013 Archive History:      WELL                                             
 Archive Year:        2014 Archive History:      WELL                                              
 Archive Year:        2015 Archive History:      WELL                                              
 Archive Year:        2016 Archive History:      WELL                                              
 Archive Year:        2017 Archive History:      WELL                                              
 Archive Year:        2018 Archive History:      WELL                                              
 ---------------------------------------------------------------
 The Student Information----------------------------------------
 The family-members number is:           3
 They are respectively:
 Father    
 Mother    
 Self      
 ---------------------------------------------------------------
 
3  使用Fortrain小结
(1)Fortran中使用指针(pointer)必须进行初始化(即指向Target 对象),否则会造成内存错误(segmentation fault)。
(2)Fortran中的指针数组相当于动态数组。
(3)结构体类型中调用成员函数可以使用‘%’或‘.’符。
(4)Fortran中变量定义永远在过程体(执行体)之前,比如
        integer :: r=5
         print *,'hellow world'
        不能为:
        print *,'hellow world'
        integer :: r=5
(5)Fortran不区分大小写。
(6)Fortran变量限定符大致有:变量类型符(integer,real,character...),public(private),target,pointer,save,parameter,dimiension等等。

 

分享到:
评论

相关推荐

    Fortran90 手册

    #### 一、Fortran程序设计基础 Fortran(Formula Translation)是一种广泛应用于科学计算、数值分析等领域的高级编程语言。Fortran90是Fortran语言的一个重要版本,引入了许多现代编程特性,极大地提高了程序的...

    大气科学常用FORTRAN程序

    标题中的“大气科学常用FORTRAN程序”表明了这个压缩包主要包含的是用于大气科学计算的FORTRAN语言编写的程序。FORTRAN(Formula Translation)是一种早期的高级编程语言,尤其适合处理数值计算和科学计算任务,因此...

    fortran小程序

    在给定的程序示例中,可以看到典型的Fortran程序结构: 1. **Program声明**:`program ex0003`表示程序的开始。 2. **隐式类型声明**:`implicit none`用于指定所有变量都必须明确声明其数据类型,这有助于避免因...

    Fortran 95

    一个典型的 Fortran 95 程序通常包含基本的结构元素,如声明部分、执行语句等。 ```fortran program Hello write (*,*) "Hello, World!" end program Hello ``` 这段代码展示了如何使用 `write` 语句输出文本。 ...

    fortran查错集.pdf

    它支持多种Fortran标准,包括Fortran 77、Fortran 90以及部分Fortran 95特性。该编译器旨在为Windows平台上的科学计算、工程分析等领域提供高效的编程工具。 #### 三、支持的操作系统 Compaq Visual Fortran 6.6...

    Abaqus用户子程序Fortran———Power Law 模型.zip

    本压缩包文件“Abaqus用户子程序Fortran———Power Law 模型.zip”提供了一个使用Fortran编写的示例,用于实现Power Law材料模型。在本文中,我们将详细讨论Power Law模型以及如何用Fortran编写Abaqus用户子程序。 ...

    Visual Fortran常用数值算法集配套源码1

    压缩包中的文件包括README.txt,它通常会包含重要的使用指南和说明,例如如何解压、如何运行示例程序、需要注意的细节等。其余的文件如C12、D11、D6、D12、Data、C11、D13、D5、C3,可能是按照算法或功能模块命名的...

    ABAQUS VUMAT初学者用户子程序小例子,abaqus用户子程序入门,Fortran源码.zip

    压缩包中的源码文件提供了实际的编程示例,初学者可以通过阅读这些代码了解如何在Fortran中编写VUMAT子程序。常见的步骤包括: - 初始化:设置初始状态变量。 - 应力更新:根据当前应变和历史信息计算应力。 - ...

    Fortran基础语法知识.doc

    ### Fortran基础语法知识点 #### 1. Fortran语言简介 - **定义与起源**:Fortran(FORmula TRANslation的缩写),意为...以上内容涵盖了Fortran语言的基础语法和几个典型示例,有助于理解该语言的基本结构和应用方式。

    MATLAB程序设计与典型应用(含源程序).rar

    源程序部分将提供具体的代码示例,通过阅读和理解这些代码,学习者能更直观地看到MATLAB语法的应用,并学习如何将理论知识转化为实际操作。这也是提高编程技能和解决问题能力的有效途径。 总之,“MATLAB程序设计与...

    ABAQUS FRIC 子程序模拟文件及子程序

    这些子程序通常以Fortran语言编写,然后在ABAQUS求解器中调用。通过FRIC子程序,用户可以实现更复杂的摩擦行为,如考虑速度、压力、温度、湿度等因素的影响。 **FRIC子程序的结构** 一个典型的FRIC子程序通常包含...

    Fortran 批量处理文件.docx

    在提供的代码中,可以看到一个Fortran程序,它用于读取工作目录下所有的`.txt`文件,并对这些文件进行某种计算操作。这段代码的关键知识点包括: 1. **循环结构**:`do i=1900, 1999` 是一个循环,虽然这里的`i`并...

    openMp的典型应用程序

    描述中提到"openMP经典实用例程,为众多程序员采用",意味着我们将讨论一些被广大开发者认可和使用的OpenMP程序示例。这可能包括一些基础和高级的并行编程技术,如并行循环、并行区域、任务并行以及同步机制等。此外...

    ABAQUS子程序[借鉴].pdf

    三、典型用户子程序详解 1. **SUBROUTINE DLOAD**:定义积分点荷载。参数包括荷载大小F、当前STEP和INCREMENT值(KSTEP、KINC)、时间、单元和积分点信息等。用户可以依据坐标、时间、单元编号和节点编号定义荷载,...

    Abaqus经典例题集3源文件,abaqus实例详解pdf,Fortran源码.zip

    这里提供的Fortran源码可能是为了帮助用户了解Abaqus内部的工作原理,或者提供自定义子程序的示例。用户可以通过阅读和分析源码,学习如何编写用户自定义的材料模型、单元类型或特殊求解器,进一步扩展Abaqus的功能...

    Visual Fortran调用Win32 API函数 (2008年)

    #### 典型示例 假设我们需要获取当前系统时间,可以参考以下示例代码: ```fortran PROGRAM Main USE KERNEL32 IMPLICIT NONE TYPE SYSTEMTIME INTEGER, DIMENSION(7) :: wYear, wMonth, wDayOfWeek, wDay, ...

    MATLAB程序设计与典型应用(源程序)

    Fortran语言MATLAB引擎... 310 10.4 Visual C++与MATLAB接口... 311 10.4.1 Visual C++调用MATLAB引擎... 312 10.4.2 Visual C++使用数学函数库... 312 10.4.3 Visual C++创建MAT文件... 314 10.4.4 应用COM实现...

    vc调用matlab的生成的sharelibrary示例1

    综上所述,这个示例是一个典型的跨平台计算案例,通过MATLAB Compiler将MATLAB的计算能力嵌入到VC6的C++程序中,利用DLL实现了代码的重用和跨语言调用。在实际应用中,这种技术可以帮助我们充分利用MATLAB的数值计算...

    流体模拟程序FLASH学习1

    例如,`GridupdateRefinementroutine` 子程序就是一个典型示例。 #### 四、安装与配置流程 1. **下载源码**: 从官方网站下载最新版本的FLASH源码压缩包 `FLASH4.6.tar.gz`。 2. **解压缩**: 解压压缩包后,在...

Global site tag (gtag.js) - Google Analytics