📄 pmlu.h
字号:
{
CP=(1/DELTAT-PMLArrayH[DOMAINY-j-2]/(2*EPSILON0))/(1/DELTAT+PMLArrayH[DOMAINY-j-2]/(2*EPSILON0));
CQ=Z0*1/(1/DELTAT+PMLArrayH[DOMAINY-j-2]/(2*EPSILON0))/(V*DELTAT);
C3=1/MIU0;
C4=1/MIU0;
Bx[i][j]=CP*Bx[i][j]+CQ*Coefficient1*(Ez[i][j]-Ez[i][j+1]);
Hx[i][j]=Hx[i][j]+C3*Bx[i][j]-C4*iBx[i][j];
iBx[i][j]=Bx[i][j];
}
}
/**************************Y平行方向*****************************/
PMLBeginy=NPML;
PMLEndy=DOMAINY-NPML-1;
//前--观察方向沿Y轴正向
PMLBeginx=0;
PMLEndx=NPML+1;
for ( i=PMLBeginx; i<PMLEndx; i++)
{
for ( j=PMLBeginy; j<PMLEndy; j++)
{
CP=1.0;
CQ=Z0/V;
C3=(1+DELTAT*PMLArrayH[i]/(2*EPSILON0))/MIU0;
C4=(1-DELTAT*PMLArrayH[i]/(2*EPSILON0))/MIU0;
Bx[i][j]=CP*Bx[i][j]+CQ*Coefficient1*(Ez[i][j]-Ez[i][j+1]);
Hx[i][j]=Hx[i][j]+C3*Bx[i][j]-C4*iBx[i][j];
iBx[i][j]=Bx[i][j];
}
}
//后--观察方向沿Y轴正向
PMLBeginx=DOMAINX-NPML-1;
PMLEndx=DOMAINX-1;
for ( i=PMLBeginx; i<PMLEndx; i++)
{
for ( j=PMLBeginy; j<PMLEndy; j++)
{
CP=1.0;
CQ=Z0/V;
C3=(1+DELTAT*PMLArrayH[DOMAINX-i-1]/(2*EPSILON0))/MIU0;
C4=(1-DELTAT*PMLArrayH[DOMAINX-i-1]/(2*EPSILON0))/MIU0;
Bx[i][j]=CP*Bx[i][j]+CQ*Coefficient1*(Ez[i][j]-Ez[i][j+1]);
Hx[i][j]=Hx[i][j]+C3*Bx[i][j]-C4*iBx[i][j];
iBx[i][j]=Bx[i][j];
}
}
//角区1
PMLBeginx=0;
PMLEndx=NPML+1;
PMLBeginy=1;
PMLEndy=NPML;
for ( i=PMLBeginx; i<PMLEndx; i++)
{
for ( j=PMLBeginy; j<PMLEndy; j++)
{
CP=(1/DELTAT-PMLArrayH[j]/(2*EPSILON0))/(1/DELTAT+PMLArrayH[j]/(2*EPSILON0));
CQ=Z0*1/(1/DELTAT+PMLArrayH[j]/(2*EPSILON0))/(V*DELTAT);
C3=(1+DELTAT*PMLArrayH[i]/(2*EPSILON0))/MIU0;
C4=(1-DELTAT*PMLArrayH[i]/(2*EPSILON0))/MIU0;
Bx[i][j]=CP*Bx[i][j]+CQ*Coefficient1*(Ez[i][j]-Ez[i][j+1]);
Hx[i][j]=Hx[i][j]+C3*Bx[i][j]-C4*iBx[i][j];
iBx[i][j]=Bx[i][j];
}
}
//角区2
PMLBeginx=0;
PMLEndx=NPML+1;
PMLBeginy=DOMAINY-NPML-1;
PMLEndy=DOMAINY-1;
for ( i=PMLBeginx; i<PMLEndx; i++)
{
for ( j=PMLBeginy; j<PMLEndy; j++)
{
CP=(1/DELTAT-PMLArrayH[DOMAINY-j-2]/(2*EPSILON0))/(1/DELTAT+PMLArrayH[DOMAINY-j-2]/(2*EPSILON0));
CQ=Z0*1/(1/DELTAT+PMLArrayH[DOMAINY-j-2]/(2*EPSILON0))/(V*DELTAT);
C3=(1+DELTAT*PMLArrayH[i]/(2*EPSILON0))/MIU0;
C4=(1-DELTAT*PMLArrayH[i]/(2*EPSILON0))/MIU0;
Bx[i][j]=CP*Bx[i][j]+CQ*Coefficient1*(Ez[i][j]-Ez[i][j+1]);
Hx[i][j]=Hx[i][j]+C3*Bx[i][j]-C4*iBx[i][j];
iBx[i][j]=Bx[i][j];
}
}
//角区3
PMLBeginx=DOMAINX-NPML-1;
PMLEndx=DOMAINX-1;
PMLBeginy=DOMAINY-NPML-1;
PMLEndy=DOMAINY-1;
for ( i=PMLBeginx; i<PMLEndx; i++)
{
for ( j=PMLBeginy; j<PMLEndy; j++)
{
CP=(1/DELTAT-PMLArrayH[DOMAINY-j-2]/(2*EPSILON0))/(1/DELTAT+PMLArrayH[DOMAINY-j-2]/(2*EPSILON0));
CQ=Z0*1/(1/DELTAT+PMLArrayH[DOMAINY-j-2]/(2*EPSILON0))/(V*DELTAT);
C3=(1+DELTAT*PMLArrayH[DOMAINX-i-1]/(2*EPSILON0))/MIU0;
C4=(1-DELTAT*PMLArrayH[DOMAINX-i-1]/(2*EPSILON0))/MIU0;
Bx[i][j]=CP*Bx[i][j]+CQ*Coefficient1*(Ez[i][j]-Ez[i][j+1]);
Hx[i][j]=Hx[i][j]+C3*Bx[i][j]-C4*iBx[i][j];
iBx[i][j]=Bx[i][j];
}
}
//角区4
PMLBeginx=DOMAINX-NPML-1;
PMLEndx=DOMAINX-1;
PMLBeginy=1;
PMLEndy=NPML;
for ( i=PMLBeginx; i<PMLEndx; i++)
{
for ( j=PMLBeginy; j<PMLEndy; j++)
{
CP=(1/DELTAT-PMLArrayH[j]/(2*EPSILON0))/(1/DELTAT+PMLArrayH[j]/(2*EPSILON0));
CQ=Z0*1/(1/DELTAT+PMLArrayH[j]/(2*EPSILON0))/(V*DELTAT);
C3=(1+DELTAT*PMLArrayH[DOMAINX-i-1]/(2*EPSILON0))/MIU0;
C4=(1-DELTAT*PMLArrayH[DOMAINX-i-1]/(2*EPSILON0))/MIU0;
Bx[i][j]=CP*Bx[i][j]+CQ*Coefficient1*(Ez[i][j]-Ez[i][j+1]);
Hx[i][j]=Hx[i][j]+C3*Bx[i][j]-C4*iBx[i][j];
iBx[i][j]=Bx[i][j];
}
}
}
/**********************************************************************/
//2.Ez推导场By;By推导Hy
void PMLHy(double Coefficient1)
{
int i,j; //循环变量
/**************************X平行方向******************************/
PMLBeginx=NPML;
PMLEndx=DOMAINX-NPML-1;
//前--观察方向沿X轴正向
PMLBeginy=0;
PMLEndy=NPML+1;
for ( i=PMLBeginx; i<PMLEndx; i++)
{
for ( j=PMLBeginy; j<PMLEndy; j++)
{
CP=1.0;
CQ=Z0/V;
C3=(1+DELTAT*PMLArrayH[j]/(2*EPSILON0))/MIU0;
C4=(1-DELTAT*PMLArrayH[j]/(2*EPSILON0))/MIU0;
By[i][j]=CP*By[i][j]+CQ*Coefficient1*(Ez[i+1][j]-Ez[i][j]);
Hy[i][j]=Hy[i][j]+C3*By[i][j]-C4*iBy[i][j];
iBy[i][j]=By[i][j];
}
}
//后--观察方向沿X轴正向
PMLBeginy=DOMAINY-NPML-1;
PMLEndy=DOMAINY-1;
for ( i=PMLBeginx; i<PMLEndx; i++)
{
for ( j=PMLBeginy; j<PMLEndy; j++)
{
CP=1.0;
CQ=Z0/V;
C3=(1+DELTAT*PMLArrayH[DOMAINY-j-1]/(2*EPSILON0))/MIU0;
C4=(1-DELTAT*PMLArrayH[DOMAINY-j-1]/(2*EPSILON0))/MIU0;
By[i][j]=CP*By[i][j]+CQ*Coefficient1*(Ez[i+1][j]-Ez[i][j]);
Hy[i][j]=Hy[i][j]+C3*By[i][j]-C4*iBy[i][j];
iBy[i][j]=By[i][j];
}
}
/**************************Y平行方向*****************************/
PMLBeginy=NPML+1;
PMLEndy=DOMAINY-NPML-1;
//前--观察方向沿Y轴正向
PMLBeginx=1;
PMLEndx=NPML;
for ( i=PMLBeginx; i<PMLEndx; i++)
{
for ( j=PMLBeginy; j<PMLEndy; j++)
{
CP=(1/DELTAT-PMLArrayH[i]/(2*EPSILON0))/(1/DELTAT+PMLArrayH[i]/(2*EPSILON0));
CQ=Z0*1/(1/DELTAT+PMLArrayH[i]/(2*EPSILON0))/(V*DELTAT);
C3=1/MIU0;
C4=1/MIU0;
By[i][j]=CP*By[i][j]+CQ*Coefficient1*(Ez[i+1][j]-Ez[i][j]);
Hy[i][j]=Hy[i][j]+C3*By[i][j]-C4*iBy[i][j];
iBy[i][j]=By[i][j];
}
}
//后--观察方向沿Y轴正向
PMLBeginx=DOMAINX-NPML-1;
PMLEndx=DOMAINX-1;
for ( i=PMLBeginx; i<PMLEndx; i++)
{
for ( j=PMLBeginy; j<PMLEndy; j++)
{
CP=(1/DELTAT-PMLArrayH[DOMAINX-i-2]/(2*EPSILON0))/(1/DELTAT+PMLArrayH[DOMAINX-i-2]/(2*EPSILON0));
CQ=Z0*1/(1/DELTAT+PMLArrayH[DOMAINX-i-2]/(2*EPSILON0))/(V*DELTAT);
C3=1/MIU0;
C4=1/MIU0;
By[i][j]=CP*By[i][j]+CQ*Coefficient1*(Ez[i+1][j]-Ez[i][j]);
Hy[i][j]=Hy[i][j]+C3*By[i][j]-C4*iBy[i][j];
iBy[i][j]=By[i][j];
}
}
//角区1
PMLBeginx=1;
PMLEndx=NPML;
PMLBeginy=0;
PMLEndy=NPML+1;
for ( i=PMLBeginx; i<PMLEndx; i++)
{
for ( j=PMLBeginy; j<PMLEndy; j++)
{
CP=(1/DELTAT-PMLArrayH[i]/(2*EPSILON0))/(1/DELTAT+PMLArrayH[i]/(2*EPSILON0));
CQ=Z0*1/(1/DELTAT+PMLArrayH[i]/(2*EPSILON0))/(V*DELTAT);
C3=(1+DELTAT*PMLArrayH[j]/(2*EPSILON0))/MIU0;
C4=(1-DELTAT*PMLArrayH[j]/(2*EPSILON0))/MIU0;
By[i][j]=CP*By[i][j]+CQ*Coefficient1*(Ez[i+1][j]-Ez[i][j]);
Hy[i][j]=Hy[i][j]+C3*By[i][j]-C4*iBy[i][j];
iBy[i][j]=By[i][j];
}
}
//角区2
PMLBeginx=1;
PMLEndx=NPML;
PMLBeginy=DOMAINY-NPML-1;
PMLEndy=DOMAINY-1;
for ( i=PMLBeginx; i<PMLEndx; i++)
{
for ( j=PMLBeginy; j<PMLEndy; j++)
{
CP=(1/DELTAT-PMLArrayH[i]/(2*EPSILON0))/(1/DELTAT+PMLArrayH[i]/(2*EPSILON0));
CQ=Z0*1/(1/DELTAT+PMLArrayH[i]/(2*EPSILON0))/(V*DELTAT);
C3=(1+DELTAT*PMLArrayH[DOMAINY-j-1]/(2*EPSILON0))/MIU0;
C4=(1-DELTAT*PMLArrayH[DOMAINY-j-1]/(2*EPSILON0))/MIU0;
By[i][j]=CP*By[i][j]+CQ*Coefficient1*(Ez[i+1][j]-Ez[i][j]);
Hy[i][j]=Hy[i][j]+C3*By[i][j]-C4*iBy[i][j];
iBy[i][j]=By[i][j];
}
}
//角区3
PMLBeginx=DOMAINX-NPML-1;
PMLEndx=DOMAINX-1;
PMLBeginy=DOMAINY-NPML-1;
PMLEndy=DOMAINY-1;
for ( i=PMLBeginx; i<PMLEndx; i++)
{
for ( j=PMLBeginy; j<PMLEndy; j++)
{
CP=(1/DELTAT-PMLArrayH[DOMAINX-i-2]/(2*EPSILON0))/(1/DELTAT+PMLArrayH[DOMAINX-i-2]/(2*EPSILON0));
CQ=Z0*1/(1/DELTAT+PMLArrayH[DOMAINX-i-2]/(2*EPSILON0))/(V*DELTAT);
C3=(1+DELTAT*PMLArrayH[DOMAINY-j-1]/(2*EPSILON0))/MIU0;
C4=(1-DELTAT*PMLArrayH[DOMAINY-j-1]/(2*EPSILON0))/MIU0;
By[i][j]=CP*By[i][j]+CQ*Coefficient1*(Ez[i+1][j]-Ez[i][j]);
Hy[i][j]=Hy[i][j]+C3*By[i][j]-C4*iBy[i][j];
iBy[i][j]=By[i][j];
}
}
//角区4
PMLBeginx=DOMAINX-NPML-1;
PMLEndx=DOMAINX-1;
PMLBeginy=0;
PMLEndy=NPML+1;
for ( i=PMLBeginx; i<PMLEndx; i++)
{
for ( j=PMLBeginy; j<PMLEndy; j++)
{
CP=(1/DELTAT-PMLArrayH[DOMAINX-i-2]/(2*EPSILON0))/(1/DELTAT+PMLArrayH[DOMAINX-i-2]/(2*EPSILON0));
CQ=Z0*1/(1/DELTAT+PMLArrayH[DOMAINX-i-2]/(2*EPSILON0))/(V*DELTAT);
C3=(1+DELTAT*PMLArrayH[j]/(2*EPSILON0))/MIU0;
C4=(1-DELTAT*PMLArrayH[j]/(2*EPSILON0))/MIU0;
By[i][j]=CP*By[i][j]+CQ*Coefficient1*(Ez[i+1][j]-Ez[i][j]);
Hy[i][j]=Hy[i][j]+C3*By[i][j]-C4*iBy[i][j];
iBy[i][j]=By[i][j];
}
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -