!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 !The PML part follows the CPML scheme of Roden & Gedney (2000), integrated by the !author of the PML version (tem3dfdtd_第二版), with tuned parameters: !sig_x_max=1.0D2, alpha_x_max=1.0D-1, kappa_x_max=1.0 (RESTORED to the EXACT !values of the reference tem3dfdtd_第二版 which stays stable in the off phase; !alpha=1e-1 absorbs low-frequency diffusion fields much better than 1e-2 and !prevented the reflection feedback that made the CPML diverge) MODULE PML_PARAMETER INTEGER, PARAMETER :: ma = 3, mb = 1 REAL*8, PARAMETER ::sig_x_max = 1.0D2,sig_y_max =sig_x_max,sig_z_max = sig_x_max, & alpha_x_max = 1.0D-1,alpha_y_max = alpha_x_max, alpha_z_max = alpha_x_max, & kappa_x_max = 1.0,kappa_y_max = kappa_x_max, kappa_z_max = kappa_x_max REAL*8 ,DIMENSION(:),ALLOCATABLE :: b_e_x1,c_e_x1,alpha_PML_e_x1,sig_PML_e_x1,kappa_PML_e_x1 REAL*8 ,DIMENSION(:),ALLOCATABLE :: b_h_x1,c_h_x1,alpha_PML_h_x1,sig_PML_h_x1,kappa_PML_h_x1 REAL*8 ,DIMENSION(:),ALLOCATABLE :: b_e_x2,c_e_x2,alpha_PML_e_x2,sig_PML_e_x2,kappa_PML_e_x2 REAL*8 ,DIMENSION(:),ALLOCATABLE :: b_h_x2,c_h_x2,alpha_PML_h_x2,sig_PML_h_x2,kappa_PML_h_x2 REAL*8 ,DIMENSION(:),ALLOCATABLE :: b_e_y1,c_e_y1,alpha_PML_e_y1,sig_PML_e_y1,kappa_PML_e_y1 REAL*8 ,DIMENSION(:),ALLOCATABLE :: b_h_y1,c_h_y1,alpha_PML_h_y1,sig_PML_h_y1,kappa_PML_h_y1 REAL*8 ,DIMENSION(:),ALLOCATABLE :: b_e_y2,c_e_y2,alpha_PML_e_y2,sig_PML_e_y2,kappa_PML_e_y2 REAL*8 ,DIMENSION(:),ALLOCATABLE :: b_h_y2,c_h_y2,alpha_PML_h_y2,sig_PML_h_y2,kappa_PML_h_y2 REAL*8 ,DIMENSION(:),ALLOCATABLE :: b_e_z1,c_e_z1,alpha_PML_e_z1,sig_PML_e_z1,kappa_PML_e_z1 REAL*8 ,DIMENSION(:),ALLOCATABLE :: b_h_z1,c_h_z1,alpha_PML_h_z1,sig_PML_h_z1,kappa_PML_h_z1 REAL*8 ,DIMENSION(:),ALLOCATABLE :: b_e_z2,c_e_z2,alpha_PML_e_z2,sig_PML_e_z2,kappa_PML_e_z2 REAL*8 ,DIMENSION(:),ALLOCATABLE :: b_h_z2,c_h_z2,c_h_zz,alpha_PML_h_z2,sig_PML_h_z2,kappa_PML_h_z2 REAL*8 ,DIMENSION(:),ALLOCATABLE :: inv_hz_den !1/(den_hz+c_h_zz), precomputed per step for the Hz recursion REAL*8 ,DIMENSION(:),ALLOCATABLE :: den_ex,den_hx REAL*8 ,DIMENSION(:),ALLOCATABLE :: den_ey,den_hy REAL*8 ,DIMENSION(:),ALLOCATABLE :: den_ez,den_hz ENDMODULE PML_PARAMETER