你已经派生过 tem3dfdtd-open
镜像自地址
https://gitee.com/sunhf/tem3dfdtd-open.git
已同步 2025-08-03 03:16:53 +08:00
52 行
1.7 KiB
Fortran
52 行
1.7 KiB
Fortran
!Copyright (c) 2013 by tdem.org under guide of Xiu Li(lixiu@chd.edu.cn)
|
|
!written by Huaifeng Sun(sunhuaifeng@gmail.com) and Xushan Lu(luxushan@gmail.com)
|
|
!Code distribution @ tdem.org or sunhuaifeng.com
|
|
|
|
SUBROUTINE TIXING_SOURCE
|
|
USE CONSTANTPARAMETERS
|
|
USE ELECTROMAGNETIC_VARIABLES
|
|
USE RES_MODEL_PARAMETER
|
|
USE TIME_PARAMETER
|
|
USE OMP_LIB
|
|
IMPLICIT NONE
|
|
integer i,j,k
|
|
CTIME(1)=0.0D0 !RAISESTEP !RAISETIME/STEP !1.13*MU0*DELX*DELX/RES(1,1,1)
|
|
DELT(1)=RAISESTEP !RAISETIME/STEP
|
|
DELT(0)=DELT(1)
|
|
SOURCE(1)=AMP*CTIME(1)/RAISETIME
|
|
DO I=2,NSTOP
|
|
CTIME(I)=CTIME(I-1)+DELT(I-1)
|
|
IF(CTIME(I) .LT. RAISETIME)THEN
|
|
DELT(I)=RAISESTEP
|
|
SOURCE(I)=AMP*CTIME(I)/RAISETIME
|
|
ELSEIF(CTIME(I) .GE. RAISETIME .AND. CTIME(I) .LT. RAISETIME+WAVE-1.0D-6)THEN
|
|
DELT(I)=DELT(I-1)*1.10D0
|
|
IF(DELT(I) .GE. WAVESTEP)THEN
|
|
DELT(I)=WAVESTEP
|
|
ENDIF
|
|
SOURCE(I)=AMP !1.0D0
|
|
ELSEIF(CTIME(I) .GE. RAISETIME+WAVE-1.0D-6 .AND. CTIME(I) .LT. RAISETIME+WAVE)THEN
|
|
DELT(I)=DELT(I-1)*0.90D0
|
|
IF(DELT(I) .LE. RAMPSTEP)THEN
|
|
DELT(I)=RAMPSTEP
|
|
ENDIF
|
|
SOURCE(I)=AMP
|
|
ELSEIF(CTIME(I) .GE. RAISETIME+WAVE .AND. CTIME(I) .LT. RAISETIME+WAVE+RAMP)THEN
|
|
DELT(I)=RAMPSTEP
|
|
SOURCE(I)=-AMP*CTIME(I)/RAMP+AMP*(RAISETIME+WAVE+RAMP)/RAMP
|
|
ELSE
|
|
DELT(I)=0.1*GridSize*SQRT(MU0*SIGMA_MIN*(CTIME(I)-RAISETIME-WAVE-RAMP)/6)
|
|
SOURCE(I)=0.0D0
|
|
IF(DELT(I) .GT. 4.0D-7)THEN
|
|
DELT(I)=4.0D-7
|
|
ENDIF
|
|
ENDIF
|
|
ENDDO
|
|
OPEN(9,FILE='CTIME_TIXING.DAT',STATUS='UNKNOWN')
|
|
DO I=1,NSTOP
|
|
WRITE(9,'(3E24.16E3)')CTIME(I),DELT(I),SOURCE(I)
|
|
ENDDO
|
|
CLOSE(9)
|
|
WRITE(10005,*)'梯形波发射波形时间序列已经写入文件CTIME_TIXING.DAT'
|
|
RETURN
|
|
ENDSUBROUTINE TIXING_SOURCE |