基础语言介绍
DIMENSION 用于定义数组
DIMENSION
& HO(NG) !定义名为HO的一维数组,数组的个数是NG
&符号代表这一行没有写完换行继续写。 !符号代表注释 ,C也是注释
REAL 浮点数型
REAL*2 MACH_REL(NG),MACH_ABS(NG) !定义了浮点数组 *2代表在double的类型上的字节进行加倍扩展
CHARACTER*10 字符串类型,长度是10
CHARACTER*10
& IFSAME_RAD, IF_RDES, IFHUB !定义了三个名为,,,的字符串,每个字符串变量可存储的字节长度是10
OPEN(commision,location)打开指定文件
OPEN(UNIT=10, FILE= 'meangen.out') !打开exe文件目录下的meagen.out文件,并命为10,方便调用
OPEN(UNIT=5, FILE= '/dev/tty') !打开(路径)/dev/tty文件,并命名为2.
WRITE(name,form) 往指定的文件中写,每使用一次write代表写入一行 。FORMAT()格式设计,很多不展开
WRITE(6,*) ' WELCOME TO MEANGEN ' !名为6的文件中写入字符串welcome to meangen,“*"代表写入不限格式
WRITE(10,106) IFHUB
106 FORMAT(A1,T25, ' CHOICE OF DESIGN POINT RADIUS, HUB, MID or TIP') !在名为6的文件中写入变量IFHUB的值,按照106行的格式。106代表行标识
READ(name,form) 读取文件数据,注意一个read读取文件的一行
READ(5,*) ANSIN !读取5号文件中的一行,不限定类型 赋值给ANSIN变量
!如果不给变量,代表读空一行,(并不是所有行都有数据)
判断符号 变量是否相等,是否A>B
IF(FLO_TYP.EQ.'AXI') THEN !字符变量FLO_TYP中的值与'AXI'字符是否相等,注意前后的两个“.”
.LE. 代表≤
.GE. 代表≥
.LT. 代表<
.GT. 代表>
逻辑判断符号 与和或
逻辑与 .AND.
逻辑或 .OR.
CALL 命令符 代表调用子程序,后面加程序名
CALL SMOOTH2(1,NSS,NSMOOTH,SFAC,XMEAN,RMEAN) !调用名为SMOOTH2的子程序,()里面的代表形参
SUBROUTIME 命令符创建一个子程序
SUBROUTINE SMOOTH2(N1,N2,NSMOOTH,FSMOOTH,XVAL,RVAL)
PARAMETER(NG=99, NST=20, NSC= 11)
DIMENSION XVAL(NG),RVAL(NG),TEMPX(NG),TEMPR(NG)
DO 10 ITS = 1,NSMOOTH !执行行标为10的那一行(此注释的正确性有带考究)
DO N = N1,N2
TEMPX(N) = XVAL(N)
TEMPR(N) = RVAL(N)
END DO
DO N = N1, N2-2
XVEC = TEMPX(N+2) - TEMPX(N)
RVEC = TEMPR(N+2) - TEMPR(N)
SVEC = SQRT(XVEC*XVEC + RVEC*RVEC)
XVEC = XVEC/SVEC
RVEC = RVEC/SVEC
XDIF = TEMPX(N+1) - TEMPX(N)
RDIF = TEMPR(N+1) - TEMPR(N)
PROJ = XVEC*XDIF + RVEC*RDIF
XNORM = XDIF - PROJ*XVEC
RNORM = RDIF - PROJ*RVEC
XVAL(N+1) = TEMPX(N+1) - FSMOOTH*XNORM
RVAL(N+1) = TEMPR(N+1) - FSMOOTH*RNORM
END DO
10 CONTINUE !没有意义,从这里继续执行
RETURN
END
FUNCTION 命令符创建一个函数
FUNCTION PLANCK(LAMB,T) RESULT(F)
IMPLICIT NONE
REAK*8 :: LAMB,T,F
REAL*8 :: PI,NIUT,TT,X0
PI=2.0D0*DASIN(1.0D0)
NIUT=852/LAMB
TT=T/168800
X0=NIUT/TT
F=(15.0/Pi**4.0)*(EXP(-X0)*(X0**3.0)+3.0*X0**2.0+6.0) !PI**4.0代表PI的四次方
RETURN
END FUNCTION PLANCK
数学函数 TAN()->tan(); SIN()->sin(); COS()->cos();ASIN()->arcsin();注意的是()内的参数必须是弧度,如果有角度值,必须转换成弧度。ABS()->求绝对值;
PITCH_ANGL(1) = ASIN( (RMEAN(2)-RMEAN(1))/(SDIST(2)-SDIST(1)) )
结构语句IF DO
DO N = 1,NSS
FBLOCK(N)= FBLOCK_LE(NSTG)+DBLOCK_DS*(SDIST(N)-SDIST(NLE1))
END DO
IF(NSTG.EQ.1.AND.TURBO_TYP.EQ.'C') THEN
PHI_REF = PHI_STG1*VMRAT(NLE1)/VMRAT(NLE2)*RMEAN(NLE2)/RMEAN(NLE1)
ELSE
PHI_REF = PHI_STG1
END IF
PROGRAM 主程序命令符
PROGRAM MIAN
!code
END MAIN
Author:yongqing