64 行
1.5 KiB
Fortran
64 行
1.5 KiB
Fortran
!Copyright (c) 2013 by https://git.em3d.cn/ under guide of Xiu Li(lixiu@chd.edu.cn)
|
|
!written by Huaifeng Sun(sunhuaifeng@email.sdu.edu.cn) and Xushan Lu(luxushan@gmail.com)
|
|
!Code distribution @ https://git.em3d.cn/
|
|
|
|
SUBROUTINE ZERO
|
|
USE CONSTANTPARAMETERS
|
|
USE ELECTROMAGNETIC_VARIABLES
|
|
USE RES_MODEL_PARAMETER
|
|
USE TIME_PARAMETER
|
|
USE PML_PARAMETER
|
|
USE OMP_LIB
|
|
!>This subroutine will initialize the array in the calculation by setting all its elements to zero.
|
|
IMPLICIT NONE
|
|
CCSIG=0.0D0
|
|
CCSIGX=0.0D0
|
|
CCSIGY=0.0D0
|
|
CCSIGZ=0.0D0
|
|
EX=0.0D0
|
|
EY=0.0D0
|
|
EZ=0.0D0
|
|
HX=0.0D0
|
|
HY=0.0D0
|
|
HZ=0.0D0
|
|
!>CPML arrays: den_* is always initialized to 1.0 (neutral value), so the
|
|
!! iteration loop can always multiply the curl terms by den_*; the scheme
|
|
!! degenerates exactly to the original version when Logic_PML=0.
|
|
den_ex=1.0D0
|
|
den_ey=1.0D0
|
|
den_ez=1.0D0
|
|
den_hx=1.0D0
|
|
den_hy=1.0D0
|
|
den_hz=1.0D0
|
|
c_h_zz=0.0D0
|
|
inv_hz_den=1.0D0
|
|
IF(Logic_PML==1)THEN
|
|
psi_Eyx_1=0.0D0
|
|
psi_Eyx_2=0.0D0
|
|
psi_Ezx_1=0.0D0
|
|
psi_Ezx_2=0.0D0
|
|
psi_Ezy_1=0.0D0
|
|
psi_Ezy_2=0.0D0
|
|
psi_Exy_1=0.0D0
|
|
psi_Exy_2=0.0D0
|
|
psi_Exz_1=0.0D0
|
|
psi_Exz_2=0.0D0
|
|
psi_Eyz_1=0.0D0
|
|
psi_Eyz_2=0.0D0
|
|
psi_Hyx_1=0.0D0
|
|
psi_Hyx_2=0.0D0
|
|
psi_Hzx_1=0.0D0
|
|
psi_Hzx_2=0.0D0
|
|
psi_Hxy_1=0.0D0
|
|
psi_Hxy_2=0.0D0
|
|
psi_Hzy_1=0.0D0
|
|
psi_Hzy_2=0.0D0
|
|
psi_Hxz_1=0.0D0
|
|
psi_Hxz_2=0.0D0
|
|
psi_Hyz_1=0.0D0
|
|
psi_Hyz_2=0.0D0
|
|
psi_Hzz_1=0.0D0
|
|
psi_Hzz_2=0.0D0
|
|
ENDIF
|
|
RETURN
|
|
ENDSUBROUTINE ZERO |