包含基于射线追踪的任意复杂界面计算

这个提交包含在:
2026-08-14 08:00:47 +08:00
父节点 d1a709985d
当前提交 b4cf75ce78
修改 91 个文件,包含 1612224 行新增515 行删除
+40 -30
查看文件
@@ -2,34 +2,44 @@
!written by Huaifeng Sun(sunhuaifeng@gmail.com) and Xushan Lu(luxushan@gmail.com)
!Code distribution @ tdem.org or sunhuaifeng.com
!SUBROUTINE GET_SYS_TIMEDATA(OUTPUT)
! ! The original subroutien written by Huaifeng Sun can not work in PGI compiler, so I change it into what it looks like here.
! IMPLICIT NONE
! CHARACTER*4 TEMP1,TEMP2,TEMP3,TEMP4,TEMP5,TEMP6
! CHARACTER*20 OUTPUT
! integer*4 FortranDate(3),FortranTime(3)
! INTEGER(4) TMPDAY, TMPMONTH, TMPYEAR
! INTEGER(4) TMPHOUR, TMPMINUTE, TMPSECOND
! CALL idate(FortranDate)
! CALL itime(FortranTime)
! tmpday=FortranDate(2); tmpmonth=FortranDate(1); tmpyear=FortranDate(3)
! tmphour=FortranTime(1); tmpminute=FortranTime(2); tmpsecond=FortranTime(3)
! WRITE(TEMP1,'(I4)')TMPYEAR
! WRITE(TEMP2,'(I2)')TMPMONTH
! WRITE(TEMP3,'(I2)')TMPDAY
! WRITE(TEMP4,'(I4)')TMPHOUR
! WRITE(TEMP5,'(I4)')TMPMINUTE
! WRITE(TEMP6,'(I4)')TMPSECOND
! OUTPUT=TRIM(ADJUSTL(TEMP1))//'-'//TRIM(ADJUSTL(TEMP2))//'-'//TRIM(ADJUSTL(TEMP3))//' '//TRIM(ADJUSTL(TEMP4))//':'//TRIM(ADJUSTL(TEMP5))//':'//TRIM(ADJUSTL(TEMP6))
! OUTPUT=TRIM(ADJUSTL(OUTPUT))
! RETURN
! ENDSUBROUTINE GET_SYS_TIMEDATA
SUBROUTINE GET_SYS_TIMEDATA(OUTPUT)
! The original subroutien written by Huaifeng Sun can not work in PGI compiler, so I change it into what it looks like here.
IMPLICIT NONE
CHARACTER*4 TEMP1,TEMP2,TEMP3,TEMP4,TEMP5,TEMP6
CHARACTER*20 OUTPUT
integer*4 FortranDate(3),FortranTime(3)
INTEGER(4) TMPDAY, TMPMONTH, TMPYEAR
INTEGER(4) TMPHOUR, TMPMINUTE, TMPSECOND
!the following code is optimized by hfsun@2017-5-29 to modify an warning on the use of idate
!I also replace the function idate with idate4 to get a 4 digital year.
!But I received errors when use CALL idate4(FortranDate), so I use the temp solution idate4(tmpmonth,tmpday,tmpyear)
!CALL idate4(FortranDate)
CALL itime(FortranTime)
!tmpday=FortranDate(2); tmpmonth=FortranDate(1); tmpyear=FortranDate(3)
tmphour=FortranTime(1); tmpminute=FortranTime(2); tmpsecond=FortranTime(3)
CALL idate4(tmpmonth,tmpday,tmpyear)
!CALL itime(tmphour,tmpminute,tmpsecond)
!tmpday=FortranDate(2); tmpmonth=FortranDate(1); tmpyear=FortranDate(3)
!tmphour=FortranTime(1); tmpminute=FortranTime(2); tmpsecond=FortranTime(3)
WRITE(TEMP1,'(I4)')TMPYEAR
WRITE(TEMP2,'(I2)')TMPMONTH
WRITE(TEMP3,'(I2)')TMPDAY
WRITE(TEMP4,'(I4)')TMPHOUR
WRITE(TEMP5,'(I4)')TMPMINUTE
WRITE(TEMP6,'(I4)')TMPSECOND
OUTPUT=TRIM(ADJUSTL(TEMP1))//'-'//TRIM(ADJUSTL(TEMP2))//'-'//TRIM(ADJUSTL(TEMP3))//' '//TRIM(ADJUSTL(TEMP4))//':'//TRIM(ADJUSTL(TEMP5))//':'//TRIM(ADJUSTL(TEMP6))
OUTPUT=TRIM(ADJUSTL(OUTPUT))
RETURN
ENDSUBROUTINE GET_SYS_TIMEDATA
IMPLICIT NONE
CHARACTER(LEN=20) :: OUTPUT
CHARACTER(LEN=8) :: DATE
CHARACTER(LEN=10) :: TIME
CALL DATE_AND_TIME(DATE,TIME)
OUTPUT = DATE(1:4)//'-'// &
DATE(5:6)//'-'// &
DATE(7:8)//' '// &
TIME(1:2)//':'// &
TIME(3:4)//':'// &
TIME(5:6)
END SUBROUTINE GET_SYS_TIMEDATA