Fortran中的time子程序比较

本文介绍了Fortran中用于获取时间的三个内置子程序:CPU_TIME、ITIME和DATE_AND_TIME。通过示例代码展示了它们的用法和返回值,其中CPU_TIME提供CPU运行时间,ITIME和DATE_AND_TIME则提供实际时间,后者在处理长时间计算时更为方便。在并行计算中,CPU_TIME可能不准确。文章还给出了itime的有效计算范围和system_clock在长时计算中的优势。
摘要由CSDN通过智能技术生成
下面对Fortran中的几种调用时间的子程序(CPU_TIME,SYSTEM_CLOCK,DATA_AND_TIME,DATA_AND_TIME)进行对比研究。


CPU_TIME——Returns a REAL value representing the elapsed CPU time in seconds. (详细信息见 https://gcc.gnu.org/onlinedocs/gfortran/CPU_005fTIME.html)

语法: CALL CPU_TIME(TIME)。TIME的类型是实数型。


SYSTEM_CLOCK——(详细信息见 https://gcc.gnu.org/onlinedocs/gfortran/SYSTEM_005fCLOCK.html)

语法: CALL SYSTEM_CLOCK([COUNT, COUNT_RATE, COUNT_MAX])。COUNT,COUNT_RATE和COUNT_MAX是整数类型。当参数count的kind不同时,count的单位也会不一样。count是INTEGER(4)类型的话,返回的时间是毫秒,count的类型是INTEGER(8)类型,那么返回的时间是纳秒。所以在计算时间的时候为了得到时间的单位为秒,需要使用COUNT/COUNT_RATE。


DATA_AND_TIME————(详细信息见https://gcc.gnu.org/onlinedocs/gfortran/ITIME.html)


语法: DATE_AND_TIME(DATE, TIME, ZONE, VALUES)。DATA,

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的ABAQUS磨损子程序FORTRAN代码示例: ``` SUBROUTINE SLIDEWEAR(WTIME, COORDS, VEL, SAREA, TANGF, DTANF, NORMAL, DP, SLIP, CRIT, PARM, VAR1, VAR2, VAR3, VAR4, VAR5, VAR6, VAR7, VAR8, VAR9, VAR10, SLIDEFORCE, HEATGEN) IMPLICIT NONE INTEGER, INTENT(IN) :: WTIME REAL*8, DIMENSION(:,:), INTENT(IN) :: COORDS REAL*8, DIMENSION(:,:), INTENT(IN) :: VEL REAL*8, DIMENSION(:), INTENT(IN) :: SAREA REAL*8, DIMENSION(:), INTENT(IN) :: TANGF REAL*8, DIMENSION(:), INTENT(IN) :: DTANF REAL*8, DIMENSION(:), INTENT(IN) :: NORMAL REAL*8, DIMENSION(:), INTENT(IN) :: DP REAL*8, DIMENSION(:), INTENT(IN) :: SLIP REAL*8, INTENT(IN) :: CRIT REAL*8, DIMENSION(:), INTENT(IN) :: PARM REAL*8, INTENT(OUT) :: VAR1 REAL*8, INTENT(OUT) :: VAR2 REAL*8, INTENT(OUT) :: VAR3 REAL*8, INTENT(OUT) :: VAR4 REAL*8, INTENT(OUT) :: VAR5 REAL*8, INTENT(OUT) :: VAR6 REAL*8, INTENT(OUT) :: VAR7 REAL*8, INTENT(OUT) :: VAR8 REAL*8, INTENT(OUT) :: VAR9 REAL*8, INTENT(OUT) :: VAR10 REAL*8, INTENT(OUT) :: SLIDEFORCE REAL*8, INTENT(OUT) :: HEATGEN ! Local variables REAL*8 :: MU, NORMALVEL, DELTAVEL, DELTASLIP, NORMALFORCE, TANGFORCE, TANGVEL, & SHEARSTRESS, SLIDEFORCEOLD, NORMALFORCEOLD, SLOPE, DHEATGEN ! Set initial values VAR1 = 0.0D0 VAR2 = 0.0D0 VAR3 = 0.0D0 VAR4 = 0.0D0 VAR5 = 0.0D0 VAR6 = 0.0D0 VAR7 = 0.0D0 VAR8 = 0.0D0 VAR9 = 0.0D0 VAR10 = 0.0D0 ! Compute friction coefficient MU = PARM(1) ! Compute normal velocity and force NORMALVEL = DOT_PRODUCT(VEL,WTIME,NORMAL) NORMALFORCE = SAREA*DP ! Compute tangential force and velocity TANGFORCE = TANGF TANGVEL = VEL - NORMALVEL*NORMAL ! Compute shear stress SHEARSTRESS = DOT_PRODUCT(TANGFORCE,TANGVEL) ! Compute sliding friction force SLOPE = DTANF IF (ABS(TANGVEL) .LT. CRIT) THEN SLIDEFORCE = -MU*NORMALFORCE ELSE SLIDEFORCEOLD = SLIDEFORCE DELTAVEL = TANGVEL - SLOPE*SLIDEFORCEOLD DELTASLIP = DELTAVEL/(SLOPE + MU) SLIDEFORCE = SLIDEFORCEOLD + DELTASLIP END IF ! Compute heat generation NORMALFORCEOLD = SAREA*DP DHEATGEN = ABS(SLIDEFORCE - SLIDEFORCEOLD)*SHEARSTRESS*PARM(2) HEATGEN = DHEATGEN + NORMALFORCEOLD*NORMALVEL*PARM(3) RETURN END SUBROUTINE SLIDEWEAR ``` 这只是一个简单的示例代码,具体实现可能需要根据你的特定要求进行调整。此外,还需要将此代码编译为ABAQUS可执行的格式,并将其添加到ABAQUS输入文件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值