登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
fortran编写的3D的PML程序铁出来,大家都看看
发帖
回复
1
2
5043
阅读
13
回复
[
资料共享
]
fortran编写的3D的PML程序铁出来,大家都看看
离线
wq_463
UID :20925
注册:
2008-11-06
登录:
2021-04-22
发帖:
227
等级:
仿真三级
0楼
发表于: 2008-12-06 20:43:36
!***********************************************************************
SB3=5"q
! 3-D FDTD code with CPML absorbing boundary conditions
sMikTwR/^
!***********************************************************************
>nnjLrI
!
W?B(Jsv
! Program author: Jamesina J. Simpson, Ph.D. Graduate Student
{MaFv
! National Science Foundation Fellow
ca!=D $
! NU Computational Electromagnetics Laboratory
+&p}iZp
! Director: Allen Taflove
-q-/0d<l
! Department of Electrical Engineering and
i{$h]D_fD
! Computer Science
h6Vm;{~
! Northwestern University
dK=<%)N
! 2145 Sheridan Road
guC7!P^
! Evanston, IL 60208
,VM)ZK=Tr
! [url=mailto:j-simpson@northwestern.edu]j-simpson@northwestern.edu[/url]
JrkjfoN
!
UW%.G
! Copyright 2005
:gNTQZR
!
%!>~2=Q2*
! This FORTRAN 90 code implements the finite-difference time-domain
b(Ev :
! solution of Maxwell's curl equations over a three-dimensional
#''q :^EQ
! Cartesian space lattice. The grid is terminated by CPML absorbing
+[DL]e]@U
! boundary conditions. However, in a straightforward manner it can
f#W5Nu'*!
! be altered to have PEC planes at any of the outer grid boundaries.
VTQxg5P c
! Also, the number of grid cells as well as the thickness of
H$/r{gfg^
! the PML in each Cartesian direction can be varied independently.
]757oAXl
!
l-N4RCt h
! For illustrative purposes, the code supplied here models the PML
&!kr&g#]
! numerical experiment described in Section 7.11.2. Three output
>+ZD 6l/
! files are generated having the following data:
}5)sS}C
!
gD\ =
! (1) Ez at the source for each time step;
G\?q{
! (2) Ey at the probe point for each time step; and
{[&_)AW6m%
! (3) The plane of Ez values 1 mm above the source in the k-
>9S@:?^&q>
! direction recorded at the time step, "record_grid". This
E!eBQ[@
! data can be viewed in Matlab using the following commands:
XU}|Ud562
!
<u"h'e/oW_
! >> load view_grid.dat
cN{-&\ 6L
! >> for j = 1:Jmax
(v\Cv)OS
! >> image(1:Imax,j) = view_grid(1+(j-1)*Imax:j*Imax);
~$zodrS9
! >> end
f8DF>]WW
! >> pcolor(image'); shading flat
+P&;cCV`S3
!
-cjwa-9 ~
! The relative error (equation 7.135) graphed in Fig. 7.6 on
r`THOj\cM
! page 318 can be reproduced by comparing the output file
|^ao,3h#
! "probe.dat" with that of a much larger benchmark grid having
[,F5GW{x
! Imax, Jmax, and Kmax increased to the values mentioned in the text.
=DhzV D
!
_l`s}yC
! This code has been tested using the Intel Fortran Compiler 8.0 for
J:YFy-[w(
! Linux. The executable can be created by typing
zLs[vg.(
! "ifort fdtd3D_CPML.f90" at the command prompt.
4}~zVT0'~
!
0wzq{~\{=_
! This program is not guaranteed to be free of defects or bugs.
u,d@oF(=
! Please report any bugs that may exist to:
I#]$H#}Av
! [url=mailto:j-simpson@northwestern.edu]j-simpson@northwestern.edu[/url]
4gTD HQP
!
6tE<`"P!
!
9*@K l`\
!***********************************************************************
t^=6czk
Ng6(2Wt0e
PROGRAM fdtd3D_CPML
QDRgVP
IMPLICIT NONE
' Vp6=,P
! ..................................
N|,6<|
! Input Fundamental Constants (MKS units)
[S}o[v\
REAL, PARAMETER :: &
\gh`PS-B
pi = 3.14159265358979, C = 2.99792458E8, &
(L)tC*Qjc
muO = 4.0 * pi * 1.0E-7, epsO = 1.0/(C*C*muO)
zk[%YG&
! ..................................
6[h3pb/m
! Specify Material Relative Permittivity and Conductivity
[>'P
REAL, PARAMETER:: &
NC*h7
epsR = 1.0, sigM1 = 0.0 ! free space
]Y3|*t(\
! ..................................
WCbv5)uTUs
! Specify Number of Time Steps and Grid Size Parameters
*N0R3da
INTEGER, PARAMETER :: &
2EeWcTBU}.
nmax = 2100, & ! total number of time steps
0aMw
Imax = 51, Jmax = 126, Kmax = 26 ! grid size corresponding to the
0@9.h{s@
! number of Ez field components
Lmy ^/P%
! ..................................
#K3A{ jb,
! Specify Grid Cell Size in Each Direction and Calculate the
{I!sXj
! Resulting Courant-Stable Time Step
g2=5IU<
REAL, PARAMETER :: &
!,*#e
dx = 1.0E-3, dy = 1.0E-3, dz = 1.0E-3, & ! cell size in each direction
M~/%V NX
dt = 0.99 / (C*(1.0/dx**2+1.0/dy**2+1.0/dz**2)**0.5)
}NMkL l]J
! time step increment
0YsC@r47wL
! ..................................
V 4RtH
! Specify the Impulsive Source (See Equation 7.134)
K#=)]qIk
REAL, PARAMETER :: &
%}U-g"I
tw = 53.0E-12, tO = 4.0*tw
k-LB %\p
! ..................................
3q=A35*LT>
! Specify the Time Step at which the Grid is Recorded for Visualization
:eK;:pN
INTEGER, PARAMETER :: &
MSmvQ
record_grid = 300
yTDlDOmV!
! ..................................
p7"o:YSQ
! Specify the PEC Plate Boundaries and the Source/Recording Points
\ORNOX:
INTEGER, PARAMETER :: &
silTL_$
istart = (Imax-1)/2-11, iend = istart+24, jstart = istart, &
eD0Rv0BV^
jend = jstart + 99, kstart = Kmax/2, kend = kstart, &
]_S&8F}|
isource = istart, jsource = jstart, ksource = kend+1, &
*pMgjr
irecv1 = iend, jrecv1 = jend+1, krecv1 = kend ! Ey at probe point
9w -t9X>X
! ..................................
lc%2Pi[X
! Specify the CPML Thickness in Each Direction (Value of Zero
x}G["ZU}v]
! Corresponds to No PML, and the Grid is Terminated with a PEC)
"YlN_U
INTEGER, PARAMETER :: &
'[]V%^F
! PML thickness in each direction
Nb[z+V{=
nxPML_1 = 11, nxPML_2 = nxPML_1, nyPML_1 = nxPML_1, &
T4`.rnzyRb
nyPML_2 = nxPML_1, nzPML_1 = nxPML_1, nzPML_2 = nxPML_2
xzFV]
! ..................................
.[1"Med J
! Specify the CPML Order and Other Parameters
cH()Ze-B
INTEGER, PARAMETER :: &
<;d?E%`
m = 3, ma = 1
djeax
REAL, PARAMETER :: &
=Tf uwhV
sig_x_max = 0.75 * (0.8*(m+1)/(dx*(muO/epsO*epsR)**0.5)), &
Efsfuv
sig_y_max = 0.75 * (0.8*(m+1)/(dy*(muO/epsO*epsR)**0.5)), &
1.]Py" @:
sig_z_max = 0.75 * (0.8*(m+1)/(dz*(muO/epsO*epsR)**0.5)), &
&v+8RY^F=
alpha_x_max = 0.24, &
V4GcW|P4y
alpha_y_max = alpha_x_max, alpha_z_max = alpha_x_max, &
(hefpqpi
kappa_x_max = 15.0, &
/@5X0m
kappa_y_max = kappa_x_max, kappa_z_max = kappa_x_max
)#9R()n!
INTEGER :: &
`Jh> 1l
i,j,ii,jj,k,kk,n
g?ID}E~<
REAL :: &
E3#}:6m
source, P1, P2
3S-n sMs.
! TM components
A L#"j62
REAL,DIMENSION(Imax, Jmax, Kmax) :: &
@0q%&v0
Ez, CA, CB, sig, eps
FAVw80?5k
REAL,DIMENSION(Imax-1, Jmax, Kmax) :: &
&L,zh{Mp
Hy
S1pikwB
REAL,DIMENSION(Imax,Jmax-1, Kmax) :: &
J9^RP~>bs
Hx
+Io[o6*
REAL :: &
,z1X{
DA, DB
~_P,z?
! TE components
dZ&/Iz
REAL,DIMENSION(Imax-1, Jmax-1, Kmax-1) :: &
8CxC`*L(
Hz
qb y!
REAL,DIMENSION(Imax-1, Jmax, Kmax-1) :: &
NZ`( d
Ex
&eQF[8 ,
REAL,DIMENSION(Imax,Jmax-1, Kmax-1) :: &
317Lv \[
Ey
?d1H]f<M
! PML
~Dw.3P:-
REAL ,DIMENSION(nxPML_1,Jmax,Kmax) :: &
?]}1FP
psi_Ezx_1
oB:tio4DE
REAL ,DIMENSION(nxPML_2,Jmax,Kmax) :: &
@x">e][B
psi_Ezx_2
2G8f4vsC[
REAL ,DIMENSION(nxPML_1-1,Jmax,Kmax) :: &
7p&%0'BO1z
psi_Hyx_1
I\O<XJO)_
REAL ,DIMENSION(nxPML_2-1,Jmax,Kmax) :: &
7WG"_A~V
psi_Hyx_2
V.kUFTCvf
REAL ,DIMENSION(Imax,nyPML_1,Kmax) :: &
B*A{@)_
psi_Ezy_1
Ti }Ljp^O
REAL ,DIMENSION(Imax,nyPML_2,Kmax) :: &
oc,a
psi_Ezy_2
qZlb?b"
REAL ,DIMENSION(Imax,nyPML_1-1,Kmax) :: &
"Y9 *rL
psi_Hxy_1
*5iNw_&
REAL ,DIMENSION(Imax,nyPML_2-1,Kmax) :: &
f)\ =LV
psi_Hxy_2
4r!8_$fN?G
REAL ,DIMENSION(Imax,Jmax-1,nzPML_1-1) :: &
A-vK0l+
psi_Hxz_1
X8Px
REAL ,DIMENSION(Imax,Jmax-1,nzPML_2-1) :: &
_eAZ_@
psi_Hxz_2
v;X'4/M
REAL ,DIMENSION(Imax-1,Jmax,nzPML_1-1) :: &
ajuwP1I
psi_Hyz_1
&[}T41
REAL ,DIMENSION(Imax-1,Jmax,nzPML_2-1) :: &
h Ns<Ae
psi_Hyz_2
k#TonT
REAL ,DIMENSION(Imax-1,Jmax,nzPML_1) :: &
N^A&DrMF
psi_Exz_1
>ZKE
REAL ,DIMENSION(Imax-1,Jmax,nzPML_2) :: &
%N@454enH
psi_Exz_2
fr8:L!9
REAL ,DIMENSION(Imax,Jmax-1,nzPML_1) :: &
le%_[/_I|
psi_Eyz_1
@cNX\$J
REAL ,DIMENSION(Imax,Jmax-1,nzPML_2) :: &
X#<#7.
psi_Eyz_2
Dh0`t@
REAL ,DIMENSION(nxPML_1-1,Jmax-1,Kmax-1) :: &
]sJWiIe.
psi_Hzx_1
0[g8
REAL ,DIMENSION(nxPML_1,Jmax-1,Kmax-1) :: &
<4,>`#NEo
psi_Eyx_1
t%<nS=u
REAL ,DIMENSION(nxPML_2-1,Jmax-1,Kmax-1) :: &
zFh JLH*C
psi_Hzx_2
|HXI4MU"
REAL ,DIMENSION(nxPML_2,Jmax-1,Kmax-1) :: &
&Ib8xwb:
psi_Eyx_2
/"+n{*9
REAL ,DIMENSION(Imax-1,nyPML_1-1,Kmax-1) :: &
{w.rcObIw+
psi_Hzy_1
pS vDH-
REAL ,DIMENSION(Imax-1,nyPML_1,Kmax-1) :: &
,{A-<=6t
psi_Exy_1
-crKBy
REAL ,DIMENSION(Imax-1,nyPML_2-1,Kmax-1) :: &
S+A'\{f
psi_Hzy_2
LbDhPG`u
REAL ,DIMENSION(Imax-1,nyPML_2,Kmax-1) :: &
`/JJ\`Pu
psi_Exy_2
G<,@|6"w
REAL ,DIMENSION(nxPML_1) :: &
dL'hC#!h
be_x_1, ce_x_1, alphae_x_PML_1, sige_x_PML_1, kappae_x_PML_1
IB:Wh;_x
REAL ,DIMENSION(nxPML_1-1) :: &
#*;(%\q}
bh_x_1, ch_x_1, alphah_x_PML_1, sigh_x_PML_1, kappah_x_PML_1
IC>OxYg*
REAL ,DIMENSION(nxPML_2) :: &
k2l(!0o|;
be_x_2, ce_x_2, alphae_x_PML_2, sige_x_PML_2, kappae_x_PML_2
`6`NuZ*6g
REAL ,DIMENSION(nxPML_2-1) :: &
k6-Q3W[+a
bh_x_2, ch_x_2, alphah_x_PML_2, sigh_x_PML_2, kappah_x_PML_2
1 ry:Z2
REAL ,DIMENSION(nyPML_1) :: &
J')Dt]/9
be_y_1, ce_y_1, alphae_y_PML_1, sige_y_PML_1, kappae_y_PML_1
4lH$BIAW
REAL ,DIMENSION(nyPML_1-1) :: &
P&C,E E$
bh_y_1, ch_y_1, alphah_y_PML_1, sigh_y_PML_1, kappah_y_PML_1
WK]SHiHD
REAL ,DIMENSION(nyPML_2) :: &
TjGe8L:
be_y_2, ce_y_2, alphae_y_PML_2, sige_y_PML_2, kappae_y_PML_2
<#JJS}TLk
REAL ,DIMENSION(nyPML_2-1) :: &
~sk ;6e)(2
bh_y_2, ch_y_2, alphah_y_PML_2, sigh_y_PML_2, kappah_y_PML_2
\"c;MK{
REAL ,DIMENSION(nzPML_1) :: &
vbzeabm
be_z_1, ce_z_1, alphae_z_PML_1, sige_z_PML_1, kappae_z_PML_1
1SeDrzLA
REAL ,DIMENSION(nzPML_1-1) :: &
9:CJl6~N)#
bh_z_1, ch_z_1, alphah_z_PML_1, sigh_z_PML_1, kappah_z_PML_1
- XIjol(
REAL ,DIMENSION(nzPML_2) :: &
d paZ6g
be_z_2, ce_z_2, alphae_z_PML_2, sige_z_PML_2, kappae_z_PML_2
2>0[^ .;"
REAL ,DIMENSION(nzPML_2-1) :: &
e&?o
bh_z_2, ch_z_2, alphah_z_PML_2, sigh_z_PML_2, kappah_z_PML_2
KHKf+^u u
! denominators for the update equations
,# rl"
REAL,DIMENSION(Imax-1) :: &
P0,) Gw
den_ex, den_hx
%>}6>nT#
REAL,DIMENSION(Jmax-1) :: &
mV0F^5
den_ey, den_hy
h=umt<&D
REAL,DIMENSION(Kmax-1) :: &
f m.-*`ax
den_ez, den_hz
>l{<p(
9*2A}dH
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|&WeXVH E
! OPEN OUTPUT FILES
.P.TqT@)r
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;|e {J$
OPEN (UNIT = 30, FILE = "source.dat")
B\A2Vm`&
OPEN (UNIT = 31, FILE = "probe.dat")
jftoqK- p
OPEN (UNIT = 33, FILE = "view_grid.dat")
EAp6IhW{
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7(lR$,bE;=
! INITIALIZE VARIABLES
I{AteL
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
d9h"Q
P1 = 0.0
rVq=,>M9
P2 = 0.0
Z{7lyEzBg
Ez(:,:,:) = 0.0
*_}|EuY
Hz(:,:,:) = 0.0
[_Y\TdR
Ex(:,:,:) = 0.0
C"_f3[Z
Hx(:,:,:) = 0.0
VYI%U'9Q
Ey(:,:,:) = 0.0
7$'%*|C.
Hy(:,:,:) = 0.0
'CsD[<
sig(:,:,:) = sigM1
&Al9%W
eps(:,:,:) = epsR*epsO
O{rgx~lLJt
psi_Exy_1(:,:,:) = 0.0
'm9f:iTr
psi_Exy_2(:,:,:) = 0.0
Dp!3uR']p
psi_Exz_1(:,:,:) = 0.0
F@4XORO;
psi_Exz_2(:,:,:) = 0.0
H[?~u+
psi_Eyx_1(:,:,:) = 0.0
9B")/Hz_
psi_Eyx_2(:,:,:) = 0.0
Z W` Ur>
psi_Eyz_1(:,:,:) = 0.0
=wHHR1e
psi_Eyz_2(:,:,:) = 0.0
Rq~\Yf+Pm
psi_Ezy_1(:,:,:) = 0.0
&-W5T?Sl
psi_Ezy_2(:,:,:) = 0.0
saQA:W;
psi_Ezx_1(:,:,:) = 0.0
W@v@|D@
psi_Ezx_2(:,:,:) = 0.0
Y%:FawR
psi_Hxy_1(:,:,:) = 0.0
2j8^Z
psi_Hxy_2(:,:,:) = 0.0
QPjmIO
psi_Hxz_1(:,:,:) = 0.0
^:W.R7|
psi_Hxz_2(:,:,:) = 0.0
Fv=7~6~
psi_Hyx_1(:,:,:) = 0.0
6rP[*0[
psi_Hyx_2(:,:,:) = 0.0
@gc lks/M
psi_Hyz_1(:,:,:) = 0.0
@@K@;Jox
psi_Hyz_2(:,:,:) = 0.0
[RG&1~
psi_Hzy_1(:,:,:) = 0.0
eW#U<x%P
psi_Hzy_2(:,:,:) = 0.0
3UgusH3
psi_Hzx_1(:,:,:) = 0.0
1$oVcDLl
psi_Hzx_2(:,:,:) = 0.0
YP{)jAK
write(*,*)"Imax: ", Imax
Vd^_4uqnV
write(*,*)"Jmax: ", Jmax
3 G/#OJ
write(*,*)"Kmax: ", Kmax
Bt4 X
write(*,*)"dt: ", dt
]C^D5(t/cd
write(*,*)"nmax: ", nmax
2GQq(_
write(*,*)"max time: ", nmax*dt
&x19]?D"+
write(*,*)"record grid after ", record_grid, "dt"
YUd*\_
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
FLdO
! SET CPML PARAMETERS IN EACH DIRECTION
yHkZInn
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
68?oV)fE
DO i = 1,nxPML_1
j%Mz;m4y
sige_x_PML_1(i) = sig_x_max * ( (nxPML_1 - i) / (nxPML_1 - 1.0) )**m
uZ][#[u
alphae_x_PML_1(i) = alpha_x_max*((i-1.0)/(nxPML_1-1.0))**ma
}c(".v#
kappae_x_PML_1(i) = 1.0+(kappa_x_max-1.0)* &
j J6Y z
((nxPML_1 - i) / (nxPML_1 - 1.0))**m
9.ZhkvR4A
be_x_1(i) = EXP(-(sige_x_PML_1(i) / kappae_x_PML_1(i) + &
J&%vBg^
alphae_x_PML_1(i))*dt/epsO)
2P`QS@v0a=
if ((sige_x_PML_1(i) == 0.0) .and. &
zq-"jpZG
(alphae_x_PML_1(i) == 0.0) .and. (i == nxPML_1)) then
BUB#\v#a
ce_x_1(i) = 0.0
[?$ZB),L8
else
itb0dF1G
ce_x_1(i) = sige_x_PML_1(i)*(be_x_1(i)-1.0)/ &
[b-27\b
(sige_x_PML_1(i)+kappae_x_PML_1(i)*alphae_x_PML_1(i)) &
;mH1J'.(a
/ kappae_x_PML_1(i)
-Qx:-,.a
endif
]bCeJE.+)
ENDDO
iaO;i1K5U
DO i = 1,nxPML_1-1
uP/PVoKQ
sigh_x_PML_1(i) = sig_x_max * ( (nxPML_1 - i - 0.5)/(nxPML_1-1.0))**m
Vzf{gr?
alphah_x_PML_1(i) = alpha_x_max*((i-0.5)/(nxPML_1-1.0))**ma
=ZM #_uW
kappah_x_PML_1(i) = 1.0+(kappa_x_max-1.0)* &
hWpn~q
((nxPML_1 - i - 0.5) / (nxPML_1 - 1.0))**m
QxCZ<|
bh_x_1(i) = EXP(-(sigh_x_PML_1(i) / kappah_x_PML_1(i) + &
T0n=nC}<
alphah_x_PML_1(i))*dt/epsO)
o8\@R
ch_x_1(i) = sigh_x_PML_1(i)*(bh_x_1(i)-1.0)/ &
aCzdYv\} &
(sigh_x_PML_1(i)+kappah_x_PML_1(i)*alphah_x_PML_1(i)) &
1><\3+8
/ kappah_x_PML_1(i)
bA\TuB
ENDDO
G%~=hEK0
DO i = 1,nxPML_2
+cv7]
sige_x_PML_2(i) = sig_x_max * ( (nxPML_2 - i) / (nxPML_2 - 1.0) )**m
X||Z>w}v
alphae_x_PML_2(i) = alpha_x_max*((i-1.0)/(nxPML_2-1.0))**ma
rks+\e}^Z
kappae_x_PML_2(i) = 1.0+(kappa_x_max-1.0)* &
5g ,u\`
((nxPML_2 - i) / (nxPML_2 - 1.0))**m
~8~B VwZ_
be_x_2(i) = EXP(-(sige_x_PML_2(i) / kappae_x_PML_2(i) + &
Dt?O_Bdv[
alphae_x_PML_2(i))*dt/epsO)
.QOQqU*2I
if ((sige_x_PML_2(i) == 0.0) .and. &
3?I^D /K^
(alphae_x_PML_2(i) == 0.0) .and. (i == nxPML_2)) then
%0T/>:1[E
ce_x_2(i) = 0.0
xExy?5H7
else
[ C d"@!yA
ce_x_2(i) = sige_x_PML_2(i)*(be_x_2(i)-1.0)/ &
>ijFQ667>j
(sige_x_PML_2(i)+kappae_x_PML_2(i)*alphae_x_PML_2(i)) &
'SF+P)Kmz
/ kappae_x_PML_2(i)
Wh[+cH"M
endif
FSv')`}
ENDDO
32jOs|<\
DO i = 1,nxPML_2-1
CBdSgHA3>
sigh_x_PML_2(i) = sig_x_max * ( (nxPML_2 - i - 0.5)/(nxPML_2-1.0))**m
Vt{C80n&N
alphah_x_PML_2(i) = alpha_x_max*((i-0.5)/(nxPML_2-1.0))**ma
^c{}G<U^
kappah_x_PML_2(i) = 1.0+(kappa_x_max-1.0)* &
R_J=x
((nxPML_2 - i - 0.5) / (nxPML_2 - 1.0))**m
I7b(fc-r
bh_x_2(i) = EXP(-(sigh_x_PML_2(i) / kappah_x_PML_2(i) + &
=1t#$JG
alphah_x_PML_2(i))*dt/epsO)
cC w,b]
ch_x_2(i) = sigh_x_PML_2(i)*(bh_x_2(i)-1.0)/ &
j-|YE?AA
(sigh_x_PML_2(i)+kappah_x_PML_2(i)*alphah_x_PML_2(i)) &
dq~p]h~,H
/ kappah_x_PML_2(i)
'Y3>+7bI
ENDDO
)BNm~sP
DO j = 1,nyPML_1
;hR!j!3}
sige_y_PML_1(j) = sig_y_max * ( (nyPML_1 - j ) / (nyPML_1 - 1.0) )**m
d{+H|$L`
alphae_y_PML_1(j) = alpha_y_max*((j-1)/(nyPML_1-1.0))**ma
"Q9S<O8)
kappae_y_PML_1(j) = 1.0+(kappa_y_max-1.0)* &
|sz`w^#
((nyPML_1 - j) / (nyPML_1 - 1.0))**m
WL-+;h@VQ
be_y_1(j) = EXP(-(sige_y_PML_1(j) / kappae_y_PML_1(j) + &
Ge$cV}
alphae_y_PML_1(j))*dt/epsO)
@ fm\ H
if ((sige_y_PML_1(j) == 0.0) .and. &
jQ.]m
(alphae_y_PML_1(j) == 0.0) .and. (j == nyPML_1)) then
*9e T#dH
ce_y_1(j) = 0.0
f"Yj'`6
else
EB jiSQw
ce_y_1(j) = sige_y_PML_1(j)*(be_y_1(j)-1.0)/ &
):?ype>
(sige_y_PML_1(j)+kappae_y_PML_1(j)*alphae_y_PML_1(j)) &
tVQfR*=
/ kappae_y_PML_1(j)
vco/h
endif
)l*H$8
ENDDO
o>#<c @
DO j = 1,nyPML_1-1
?^P#P0
sigh_y_PML_1(j) = sig_y_max * ( (nyPML_1 - j - 0.5)/(nyPML_1-1.0))**m
s`Fv!
alphah_y_PML_1(j) = alpha_y_max*((j-0.5)/(nyPML_1-1.0))**ma
)%%RI_JT
kappah_y_PML_1(j) = 1.0+(kappa_y_max-1.0)* &
_`Ey),c _
((nyPML_1 - j - 0.5) / (nyPML_1 - 1.0))**m
6"Q/Y[y
bh_y_1(j) = EXP(-(sigh_y_PML_1(j) / kappah_y_PML_1(j) + &
Pi::cf>3
alphah_y_PML_1(j))*dt/epsO)
?cdSZ'49[
ch_y_1(j) = sigh_y_PML_1(j)*(bh_y_1(j)-1.0)/ &
KTxdZt
(sigh_y_PML_1(j)+kappah_y_PML_1(j)*alphah_y_PML_1(j)) &
06*R)siC
/ kappah_y_PML_1(j)
0?l|A1I%
ENDDO
_H^Ij
DO j = 1,nyPML_2
^qqP):0y1V
sige_y_PML_2(j) = sig_y_max * ( (nyPML_2 - j ) / (nyPML_2 - 1.0) )**m
d_#\^!9
alphae_y_PML_2(j) = alpha_y_max*((j-1)/(nyPML_2-1.0))**ma
:Bp{yUgi@
kappae_y_PML_2(j) = 1.0+(kappa_y_max-1.0)* &
%lNWaA
((nyPML_2 - j) / (nyPML_2 - 1.0))**m
D4'"GaCv
be_y_2(j) = EXP(-(sige_y_PML_2(j) / kappae_y_PML_2(j) + &
0$l=ME(
alphae_y_PML_2(j))*dt/epsO)
!3Fj`Oh
if ((sige_y_PML_2(j) == 0.0) .and. &
Malt7M
(alphae_y_PML_2(j) == 0.0) .and. (j == nyPML_2)) then
GyJp! xFB
ce_y_2(j) = 0.0
B#o(21s
else
e3YZ-w^W~h
ce_y_2(j) = sige_y_PML_2(j)*(be_y_2(j)-1.0)/ &
Ne*I$T 5
(sige_y_PML_2(j)+kappae_y_PML_2(j)*alphae_y_PML_2(j)) &
~jAOGo/&6
/ kappae_y_PML_2(j)
ie^:PcU
endif
yAtM|:qq
ENDDO
=:`1!W0I
DO j = 1,nyPML_2-1
:xZ/c\
sigh_y_PML_2(j) = sig_y_max * ( (nyPML_2 - j - 0.5)/(nyPML_2-1.0))**m
65AXUTg
alphah_y_PML_2(j) = alpha_y_max*((j-0.5)/(nyPML_2-1.0))**ma
AoyU1MR(
kappah_y_PML_2(j) = 1.0+(kappa_y_max-1.0)* &
USu/Y29
((nyPML_2 - j - 0.5) / (nyPML_2 - 1.0))**m
A@*P4E`xp
bh_y_2(j) = EXP(-(sigh_y_PML_2(j) / kappah_y_PML_2(j) + &
D.)$\Caq
alphah_y_PML_2(j))*dt/epsO)
W]5kM~Q@
ch_y_2(j) = sigh_y_PML_2(j)*(bh_y_2(j)-1.0)/ &
m s\:^a
(sigh_y_PML_2(j)+kappah_y_PML_2(j)*alphah_y_PML_2(j)) &
#G{}Rd|!
/ kappah_y_PML_2(j)
ZmO/6_nU?
ENDDO
#{7=
DO k = 1,nzPML_1
q:#,b0|bv
sige_z_PML_1(k) = sig_z_max * ( (nzPML_1 - k ) / (nzPML_1 - 1.0) )**m
JGt4B
alphae_z_PML_1(k) = alpha_z_max*((k-1)/(nzPML_1-1.0))**ma
nk9hQRP? 8
kappae_z_PML_1(k) = 1.0+(kappa_z_max-1.0)* &
hZI9*=`,"
((nzPML_1 - k) / (nzPML_1 - 1.0))**m
OTd=(dwh
be_z_1(k) = EXP(-(sige_z_PML_1(k) / kappae_z_PML_1(k) + &
<