⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pmlu.h

📁 二维FDTD算法
💻 H
📖 第 1 页 / 共 2 页
字号:
		{
             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 + -