!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