文件
tem3dfdtd-open/tem3dfdtd/lib/tixing-source.f90
2023-12-19 10:49:54 +08:00

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