📄 xiangyang24.cpp
字号:
}
} /*给z向电场赋初值,并加激励源*/
for(loop1=0;loop1<Nx+1;loop1++)
{ for(loop2=0;loop2<Ny;loop2++)
{for(loop3=0;loop3<Nz;loop3++)
{Hxy[loop1][loop2][loop3]=0;
Hxz[loop1][loop2][loop3]=0;
}
}
} /*给x向磁场赋初值*/
for(loop1=0;loop1<Nx;loop1++)
{ for(loop2=0;loop2<Ny+1;loop2++)
{for(loop3=0;loop3<Nz;loop3++)
{Hyx[loop1][loop2][loop3]=0;
Hyz[loop1][loop2][loop3]=0;
}
}
} /*给y向磁场赋初值*/
for(loop1=0;loop1<Nx;loop1++)
{ for(loop2=0;loop2<Ny;loop2++)
{for(loop3=0;loop3<Nz+1;loop3++)
{ Hzx[loop1][loop2][loop3]=0;
Hzy[loop1][loop2][loop3]=0;
}
}
} /*给z向磁场赋初值*/
for(loop1=0;loop1<NN/2;loop1++)
{
pp1[loop1].shi=0;pp1[loop1].xu=0;
pp2[loop1].shi=0;pp2[loop1].xu=0;
zk[loop1].shi=0;zk[loop1].xu=0;
}
fxhs1.sita.shi=0;fxhs1.sita.xu=0;
fxhs1.fai.shi=0;fxhs1.fai.xu=0;
for(loop2=0;loop2<180;loop2++)
{fxhs[loop2].shi=0;fxhs[loop2].xu=0;}
for(loop1=0;loop1<180;loop1++)
{si[loop1]=sin(loop1/180.0*Pi);co[loop1]=cos(loop1/180.0*Pi);}
for(loop1=0;loop1<Nx-2*NNN-2*DDD;loop1++)
for(loop2=0;loop2<Ny-2*NNN-2*DDD+1;loop2++)
{
Jxu[loop1][loop2].zhengfu=0; Jxu[loop1][loop2].xiangwei=0;
Jxd[loop1][loop2].zhengfu=0; Jxd[loop1][loop2].xiangwei=0;
Jmxu[loop1][loop2].zhengfu=0; Jmxu[loop1][loop2].xiangwei=0;
Jmxd[loop1][loop2].zhengfu=0; Jmxd[loop1][loop2].xiangwei=0;
}
for(loop1=0;loop1<Nx-2*NNN-2*DDD;loop1++)
for(loop2=0;loop2<Nz-2*NNN-2*DDD+1;loop2++)
{
Jmxl[loop1][loop2].zhengfu=0; Jmxl[loop1][loop2].xiangwei=0;
Jmxr[loop1][loop2].zhengfu=0; Jmxr[loop1][loop2].xiangwei=0;
Jxl[loop1][loop2].zhengfu=0; Jxl[loop1][loop2].xiangwei=0;
Jxr[loop1][loop2].zhengfu=0; Jxr[loop1][loop2].xiangwei=0;
}
for(loop1=0;loop1<Nx-2*NNN-2*DDD;loop1++)
for(loop2=0;loop2<Nz-2*NNN-2*DDD+1;loop2++)
{
Jzl[loop1][loop2].zhengfu=0; Jzl[loop1][loop2].xiangwei=0;
Jzr[loop1][loop2].zhengfu=0; Jzr[loop1][loop2].xiangwei=0;
Jmzl[loop1][loop2].zhengfu=0; Jmzl[loop1][loop2].xiangwei=0;
Jmzr[loop1][loop2].zhengfu=0; Jmzr[loop1][loop2].xiangwei=0;
}
for(loop1=0;loop1<Nx-2*NNN-2*DDD+1;loop1++)
for(loop2=0;loop2<Ny-2*NNN-2*DDD;loop2++)
{
Jyu[loop1][loop2].zhengfu=0; Jyu[loop1][loop2].xiangwei=0;
Jyd[loop1][loop2].zhengfu=0; Jyd[loop1][loop2].xiangwei=0;
Jmyu[loop1][loop2].zhengfu=0; Jmyu[loop1][loop2].xiangwei=0;
Jmyd[loop1][loop2].zhengfu=0; Jmyd[loop1][loop2].xiangwei=0;
}
for(loop1=0;loop1<Ny-2*NNN-2*DDD+1;loop1++)
for(loop2=0;loop2<Nz-2*NNN-2*DDD;loop2++)
{
Jyf[loop1][loop2].zhengfu=0; Jyf[loop1][loop2].xiangwei=0;
Jyb[loop1][loop2].zhengfu=0; Jyb[loop1][loop2].xiangwei=0;
Jmyf[loop1][loop2].zhengfu=0; Jmyf[loop1][loop2].xiangwei=0;
Jmyb[loop1][loop2].zhengfu=0; Jmyb[loop1][loop2].xiangwei=0;
}
for(loop1=0;loop1<Ny-2*NNN-2*DDD+1;loop1++)
for(loop2=0;loop2<Nz-2*NNN-2*DDD;loop2++)
{
Jzf[loop1][loop2].zhengfu=0; Jzf[loop1][loop2].xiangwei=0;
Jzb[loop1][loop2].zhengfu=0; Jzb[loop1][loop2].xiangwei=0;
Jmzf[loop1][loop2].zhengfu=0; Jmzf[loop1][loop2].xiangwei=0;
Jmzb[loop1][loop2].zhengfu=0; Jmzb[loop1][loop2].xiangwei=0;
}
}
/***************************************************************************************************************************************/
/*x向电场*/
int chuanbo1(int M) /*设置波动源,向前波动1个周期,并实现前时刻和后一时刻值的传递。M为时间点,需要返回的参数以便进行调试*/
{int loop1,loop2,loop3;
for(loop1=0;loop1<Nx;loop1++)
{for(loop2=1;loop2<Ny;loop2++)
{for(loop3=1;loop3<Nz;loop3++)
//if(loop1==N-NNN-5&&loop2==N-NNN-5&&loop3==N-NNN-5)
/* if(loop1==Nx/2-DD/2+kx&&loop2==Ny/2-DD/2+ky&&loop3>=NNN+5&&loop3<NNN+5+5) //前一个5是预留网格,后一个5是介质厚度
{
Exy[loop1][loop2][loop3]=((2*e*er-sig*dt)/(2*e*er+sig*dt))*Exy[loop1][loop2][loop3]+(2*dt)/(2*e*er+sig*dt)*((Hzx[loop1][loop2][loop3]+Hzy[loop1][loop2][loop3]-Hzx[loop1][loop2-1][loop3]-Hzy[loop1][loop2-1][loop3])/dy)-sin(2*Pi*M*dt*f);
Exz[loop1][loop2][loop3]=((2*e*er-sig*dt)/(2*e*er+sig*dt))*Exz[loop1][loop2][loop3]-(2*dt)/(2*e*er+sig*dt)*((Hyx[loop1][loop2][loop3]+Hyz[loop1][loop2][loop3]-Hyz[loop1][loop2][loop3-1]-Hyx[loop1][loop2][loop3-1])/dz);
}*/
{ if(loop1>NNN-1&&loop1<Nx-NNN&&loop2>NNN-1&&loop2<Ny-NNN&&loop3>NNN-1&&loop3<Nz-NNN)
{
/* if((loop1>=15&&loop1<45)&&(loop2>=15&&loop2<=45)&&(loop3>=NNN+5&&loop3<NNN+5+4)) //介质层
{
e=e*er;
sgmx=sig;sgmy=sig;sgmz=sig;
sgmmx=0;sgmmy=0;sgmmz=0;
}
else if((loop1>=15&&loop1<45)&&(loop2>=15&&loop2<=45)&&loop3==NNN+5+4)
{
e=e*er/2.0;
sgmx=sig/2.0;sgmy=sig/2.0;sgmz=sig/2.0;
sgmmx=0;sgmmy=0;sgmmz=0;
}
else*/
{ sgmx=0;sgmy=0;sgmz=0;sgmmx=0;sgmmy=0;sgmmz=0;}
}
else
{
if(loop1>=0&&loop1<=NNN-1)
{ sgmx=sgmmax*(NNN-loop1-1)/NNN*(NNN-loop1-1)/NNN;
sgmmx=sgmx*142122.3034;
}
else if(loop1>=Nx-NNN&&loop1<Nx)
{ sgmx=sgmmax*(NNN+loop1-Nx)/NNN*(NNN+loop1-Nx)/NNN;
sgmmx=sgmx*142122.3034;
}
else
{sgmx=0;sgmmx=0;}
if(loop2>=0&&loop2<=NNN-1)
{ sgmy=sgmmax*(NNN-loop2-1)/NNN*(NNN-loop2-1)/NNN;
sgmmy=sgmy*142122.3034;
}
else if(loop2>=Ny-NNN&&loop2<Ny)
{ sgmy=sgmmax*(NNN+loop2-Ny)/NNN*(NNN+loop2-Ny)/NNN;
sgmmy=sgmy*142122.3034;
}
else
{sgmy=0;sgmmy=0;}
if(loop3>=0&&loop3<=NNN-1)
{ sgmz=7.6347*(NNN-loop3-1)/NNN*(NNN-loop3-1)/NNN;
sgmmz=sgmz*142122.3034;
}
else if(loop3>=Nz-NNN&&loop3<Nz)
{ sgmz=7.6347*(NNN+loop3-Nz)/NNN*(NNN+loop3-Nz)/NNN;
sgmmz=sgmz*142122.3034;
}
else
{sgmz=0;sgmmz=0;}
}
/* if(loop1>=Nx/2-DD/2&&loop1<Nx/2+DD/2&&loop2>=Ny/2-DD/2&&loop2<=Ny/2+DD/2&&loop3==NNN+5+4)
{ Exy[loop1][loop2][loop3]=0;
Exz[loop1][loop2][loop3]=0;
}
else if((loop1>=15&&loop1<45)&&(loop2>=15&&loop2<=45)&&(loop3==NNN+5)/*&&(loop1!=Nx/2-DD/2+kx||(loop2!=Ny/2-DD/2+ky-1&&loop2!=Ny/2-DD/2+ky)*///)
/* { Exy[loop1][loop2][loop3]=0;
Exz[loop1][loop2][loop3]=0;
}
else*/
{
Exy[loop1][loop2][loop3]=((2*e-sgmy*dt)/(2*e+sgmy*dt))*Exy[loop1][loop2][loop3]+(2*dt)/(2*e+sgmy*dt)*((Hzx[loop1][loop2][loop3]+Hzy[loop1][loop2][loop3]-Hzx[loop1][loop2-1][loop3]-Hzy[loop1][loop2-1][loop3])/dy);
Exz[loop1][loop2][loop3]=((2*e-sgmz*dt)/(2*e+sgmz*dt))*Exz[loop1][loop2][loop3]-(2*dt)/(2*e+sgmz*dt)*((Hyx[loop1][loop2][loop3]+Hyz[loop1][loop2][loop3]-Hyz[loop1][loop2][loop3-1]-Hyx[loop1][loop2][loop3-1])/dz);
}
if(loop1>NNN-1&&loop1<Nx-NNN&&loop2>NNN-1&&loop2<Ny-NNN&&loop3>NNN-1&&loop3<Nz-NNN)
{ Exy[loop1][loop2][loop3]+= Exz[loop1][loop2][loop3];
Exz[loop1][loop2][loop3]=0;
}
e=ee;
}
}
}
/***********************************************************************************************************************************************************************************************************************************/
/*y向电场*/
for(loop1=1;loop1<Nx;loop1++)
{for(loop2=0;loop2<Ny;loop2++)
{for(loop3=1;loop3<Nz;loop3++)
/* if(loop1==N/2&&loop2==N/2&&loop3==N/2)
{ Eyz[loop1][loop2][loop3]=((2*e-sgmz*dt)/(2*e+sgmz*dt))*Eyz[loop1][loop2][loop3]+(2*dt)/(2*e+sgmz*dt)*((Hxy[loop1][loop2][loop3]+Hxz[loop1][loop2][loop3]-Hxy[loop1][loop2][loop3-1]-Hxz[loop1][loop2][loop3-1])/dz)-sin(2*Pi*f*dt*(M-0.5));
Eyx[loop1][loop2][loop3]=((2*e-sgmx*dt)/(2*e+sgmx*dt))*Eyx[loop1][loop2][loop3]-(2*dt)/(2*e+sgmx*dt)*((Hzx[loop1][loop2][loop3]+Hzy[loop1][loop2][loop3]-Hzx[loop1-1][loop2][loop3]-Hzy[loop1-1][loop2][loop3])/dx);
}
else
*/
{ if(loop1>NNN-1&&loop1<Nx-NNN&&loop2>NNN-1&&loop2<Ny-NNN&&loop3>NNN-1&&loop3<Nz-NNN)
{
/*if((loop1>=15&&loop1<=45)&&(loop2>=15&&loop2<45)&&(loop3>=NNN+5&&loop3<NNN+5+4))
{
e=e*er;
sgmx=sig;sgmy=sig;sgmz=sig;
sgmmx=0;sgmmy=0;sgmmz=0;
}
else if((loop1>=15&&loop1<=45)&&(loop2>=15&&loop2<45)&&loop3==NNN+5+4)
{
e=e*er/2.0;
sgmx=sig/2.0;sgmy=sig/2.0;sgmz=sig/2.0;
sgmmx=0;sgmmy=0;sgmmz=0;
}
else*/
{ sgmx=0;sgmy=0;sgmz=0;sgmmx=0;sgmmy=0;sgmmz=0;}
}
else
{
if(loop1>=0&&loop1<=NNN-1)
{ sgmx=sgmmax*(NNN-loop1-1)/NNN*(NNN-loop1-1)/NNN;
sgmmx=sgmx*142122.3034;
}
else if(loop1>=Nx-NNN&&loop1<Nx)
{ sgmx=sgmmax*(NNN+loop1-Nx)/NNN*(NNN+loop1-Nx)/NNN;
sgmmx=sgmx*142122.3034;
}
else
{sgmx=0;sgmmx=0;}
if(loop2>=0&&loop2<=NNN-1)
{ sgmy=sgmmax*(NNN-loop2-1)/NNN*(NNN-loop2-1)/NNN;
sgmmy=sgmy*142122.3034;
}
else if(loop2>=Ny-NNN&&loop2<Ny)
{ sgmy=sgmmax*(NNN+loop2-Ny)/NNN*(NNN+loop2-Ny)/NNN;
sgmmy=sgmy*142122.3034;
}
else
{sgmy=0;sgmmy=0;}
if(loop3>=0&&loop3<=NNN-1)
{ sgmz=7.6347*(NNN-loop3-1)/NNN*(NNN-loop3-1)/NNN;
sgmmz=sgmz*142122.3034;
}
else if(loop3>=Nz-NNN&&loop3<Nz)
{ sgmz=7.6347*(NNN+loop3-Nz)/NNN*(NNN+loop3-Nz)/NNN;
sgmmz=sgmz*142122.3034;
}
else
{sgmz=0;sgmmz=0;}
}
/*if(loop1>=Nx/2-DD/2&&loop1<=Nx/2+DD/2&&loop2>=Ny/2-DD/2&&loop2<Ny/2+DD/2&&loop3==NNN+5+4)
{ Eyz[loop1][loop2][loop3]=0;
Eyx[loop1][loop2][loop3]=0;
}
else if((loop1>=15&&loop1<=45)&&(loop2>=15&&loop2<45)&&loop3==NNN+5/*&&((loop1!=Nx/2-DD/2+kx&&loop1!=Nx/2-DD/2+kx-1)||loop2!=Ny/2-DD/2+ky)*///)
/* { Eyz[loop1][loop2][loop3]=0;
Eyx[loop1][loop2][loop3]=0;
}
else*/
{ Eyz[loop1][loop2][loop3]=((2*e-sgmz*dt)/(2*e+sgmz*dt))*Eyz[loop1][loop2][loop3]+(2*dt)/(2*e+sgmz*dt)*((Hxy[loop1][loop2][loop3]+Hxz[loop1][loop2][loop3]-Hxy[loop1][loop2][loop3-1]-Hxz[loop1][loop2][loop3-1])/dz);
Eyx[loop1][loop2][loop3]=((2*e-sgmx*dt)/(2*e+sgmx*dt))*Eyx[loop1][loop2][loop3]-(2*dt)/(2*e+sgmx*dt)*((Hzx[loop1][loop2][loop3]+Hzy[loop1][loop2][loop3]-Hzx[loop1-1][loop2][loop3]-Hzy[loop1-1][loop2][loop3])/dx);
}
if(loop1>NNN-1&&loop1<Nx-NNN&&loop2>NNN-1&&loop2<Ny-NNN&&loop3>NNN-1&&loop3<Nz-NNN)
{Eyz[loop1][loop2][loop3]+= Eyx[loop1][loop2][loop3];
Eyx[loop1][loop2][loop3]=0;}
e=ee;
}
}
}
/****************************************************************************************************************************************************************************************************************************************/
/*z向电场*/
for(loop1=0;loop1<Nx+1;loop1++)
{for(loop2=0;loop2<Ny+1;loop2++)
{for(loop3=0;loop3<Nz;loop3++)
/* if(loop1==Nx/2-DD/2+kx&&loop2==Ny/2-DD/2+ky&&loop3>=NNN+5&&loop3<NNN+5+1) //前一个5是预留网格,后一个5是介质厚度
{
//Ezx[loop1][loop2][loop3]=((2*e*er-sig*dt)/(2*e*er+sig*dt))*Ezx[loop1][loop2][loop3]+(2*dt)/(2*e*er+sig*dt)*((Hyz[loop1][loop2][loop3]+Hyx[loop1][loop2][loop3]-Hyz[loop1-1][loop2][loop3]-Hyx[loop1-1][loop2][loop3])/dx)-exp(-(M*dt-100*dt)*(M*dt-100*dt)/(dt*dt*1000))*sin(2*Pi*f*(M*dt-100*dt));
Ezx[loop1][loop2][loop3]=((2*e*er-sig*dt)/(2*e*er+sig*dt))*Ezx[loop1][loop2][loop3]+(2*dt)/(2*e*er+sig*dt)*((Hyz[loop1][loop2][loop3]+Hyx[loop1][loop2][loop3]-Hyz[loop1-1][loop2][loop3]-Hyx[loop1-1][loop2][loop3])/dx)-sin(2*Pi*(M-0.5)*f*dt);
// Ezx[loop1][loop2][loop3]=((2*e*er-sig*dt)/(2*e*er+sig*dt))*Ezx[loop1][loop2][loop3]+(2*dt)/(2*e*er+sig*dt)*((Hyz[loop1][loop2][loop3]+Hyx[loop1][loop2][loop3]-Hyz[loop1-1][loop2][loop3]-Hyx[loop1-1][loop2][loop3])/dx)-(sin(2*Pi*(M-0.5)*f*dt)+sin(2*Pi*(M-0.5)*(f+20000000)*dt)+sin(2*Pi*(M-0.5)*(f+40000000)*dt)+sin(2*Pi*(M-0.5)*(f+60000000)*dt)+sin(2*Pi*(M-0.5)*(f+80000000)*dt)+sin(2*Pi*(M-0.5)*(f+100000000)*dt)+sin(2*Pi*(M-0.5)*(f+120000000)*dt)+sin(2*Pi*(M-0.5)*(f+140000000)*dt)+sin(2*Pi*(M-0.5)*(f+160000000)*dt)+sin(2*Pi*(M-0.5)*(f+180000000)*dt)+sin(2*Pi*(M-0.5)*(f+200000000)*dt)+sin(2*Pi*(M-0.5)*(f+220000000)*dt)+sin(2*Pi*(M-0.5)*(f+240000000)*dt)+sin(2*Pi*(M-0.5)*(f+260000000)*dt)+sin(2*Pi*(M-0.5)*(f+280000000)*dt)+sin(2*Pi*(M-0.5)*(f+300000000)*dt));
Ezy[loop1][loop2][loop3]=((2*e*er-sig*dt)/(2*e*er+sig*dt))*Ezy[loop1][loop2][loop3]-(2*dt)/(2*e*er+sig*dt)*((Hxy[loop1][loop2][loop3]+Hxz[loop1][loop2][loop3]-Hxy[loop1][loop2-1][loop3]-Hxz[loop1][loop2-1][loop3])/dy);
}*/
if(loop1==Nx/2&&loop2==Ny/2&&loop3==Nz/2) //前一个5是预留网格,后一个5是介质厚度
{
//Ezx[loop1][loop2][loop3]=((2*e*er-sig*dt)/(2*e*er+sig*dt))*Ezx[loop1][loop2][loop3]+(2*dt)/(2*e*er+sig*dt)*((Hyz[loop1][loop2][loop3]+Hyx[loop1][loop2][loop3]-Hyz[loop1-1][loop2][loop3]-Hyx[loop1-1][loop2][loop3])/dx)-exp(-(M*dt-100*dt)*(M*dt-100*dt)/(dt*dt*1000))*sin(2*Pi*f*(M*dt-100*dt));
Ezx[loop1][loop2][loop3]=((2*e*er-sig*dt)/(2*e*er+sig*dt))*Ezx[loop1][loop2][loop3]+(2*dt)/(2*e*er+sig*dt)*((Hyz[loop1][loop2][loop3]+Hyx[loop1][loop2][loop3]-Hyz[loop1-1][loop2][loop3]-Hyx[loop1-1][loop2][loop3])/dx)-sin(2*Pi*(M-0.5)*f*dt);
// Ezx[loop1][loop2][loop3]=((2*e*er-sig*dt)/(2*e*er+sig*dt))*Ezx[loop1][loop2][loop3]+(2*dt)/(2*e*er+sig*dt)*((Hyz[loop1][loop2][loop3]+Hyx[loop1][loop2][loop3]-Hyz[loop1-1][loop2][loop3]-Hyx[loop1-1][loop2][loop3])/dx)-(sin(2*Pi*(M-0.5)*f*dt)+sin(2*Pi*(M-0.5)*(f+20000000)*dt)+sin(2*Pi*(M-0.5)*(f+40000000)*dt)+sin(2*Pi*(M-0.5)*(f+60000000)*dt)+sin(2*Pi*(M-0.5)*(f+80000000)*dt)+sin(2*Pi*(M-0.5)*(f+100000000)*dt)+sin(2*Pi*(M-0.5)*(f+120000000)*dt)+sin(2*Pi*(M-0.5)*(f+140000000)*dt)+sin(2*Pi*(M-0.5)*(f+160000000)*dt)+sin(2*Pi*(M-0.5)*(f+180000000)*dt)+sin(2*Pi*(M-0.5)*(f+200000000)*dt)+sin(2*Pi*(M-0.5)*(f+220000000)*dt)+sin(2*Pi*(M-0.5)*(f+240000000)*dt)+sin(2*Pi*(M-0.5)*(f+260000000)*dt)+sin(2*Pi*(M-0.5)*(f+280000000)*dt)+sin(2*Pi*(M-0.5)*(f+300000000)*dt));
Ezy[loop1][loop2][loop3]=((2*e*er-sig*dt)/(2*e*er+sig*dt))*Ezy[loop1][loop2][loop3]-(2*dt)/(2*e*er+sig*dt)*((Hxy[loop1][loop2][loop3]+Hxz[loop1][loop2][loop3]-Hxy[loop1][loop2-1][loop3]-Hxz[loop1][loop2-1][loop3])/dy);
}
else
{
if(loop1>NNN-1&&loop1<Nx-NNN&&loop2>NNN-1&&loop2<Ny-NNN&&loop3>NNN-1&&loop3<Nz-NNN)
{
/* if((loop1>15&&loop1<45)&&(loop2>15&&loop2<45)&&(loop3>=NNN+5&&loop3<NNN+5+4))
{
e=e*er;
sgmx=sig;sgmy=sig;sgmz=sig;
sgmmx=0;sgmmy=0;sgmmz=0;
}
else if((loop1==15||loop1==45)&&(loop2==15||loop2==45)&&(loop3>=NNN+5&&loop3<NNN+5+4))
{
e=e*er/2.0;
sgmx=sig/2.0;sgmy=sig/2.0;sgmz=sig/2.0;
sgmmx=0;sgmmy=0;sgmmz=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -