📄 timeupdate.c
字号:
{
Ex[cisize][j][k]=Ex[cisize-1][j][k];
Ey[cisize][j][k]=0.0;
Ez[cisize][j][k]=0.0;
}
}
if(xparity==-1)
{
for(j=1;j<pjsize;j++)
for(k=1;k<pksize;k++)
Ex[cisize][j][k]=-Ex[cisize-1][j][k];
}
if(yparity==1)
{
for(k=1;k<pksize;k++)
for(i=1;i<pisize;i++)
{
Ey[i][cjsize][k]=Ey[i][cjsize-1][k];
Ex[i][cjsize][k]=0.0;
Ez[i][cjsize][k]=0.0;
}
}
if(yparity==-1)
{
for(k=1;k<pksize;k++)
for(i=1;i<pisize;i++)
Ey[i][cjsize][k]=-Ey[i][cjsize-1][k];
}
if(zparity==1)
{
for(i=1;i<pisize;i++)
for(j=1;j<pjsize;j++)
{
Ez[i][j][cksize]=Ez[i][j][cksize-1];
Ex[i][j][cksize]=0.0;
Ey[i][j][cksize]=0.0;
}
}
if(zparity==-1)
{
for(i=1;i<pisize;i++)
for(j=1;j<pjsize;j++)
Ez[i][j][cksize]=-Ez[i][j][cksize-1];
}
}
void Ez_parity_iboundary_update()
{
int i,j,k;
if(xparity==1) //xparity is for Hz_parity
{
for(j=1;j<pjsize;j++)
for(k=1;k<pksize;k++)
{
iEx[cisize][j][k]=iEx[cisize-1][j][k];
iEy[cisize][j][k]=0.0;
iEz[cisize][j][k]=0.0;
}
}
if(xparity==-1)
{
for(j=1;j<pjsize;j++)
for(k=1;k<pksize;k++)
iEx[cisize][j][k]=-iEx[cisize-1][j][k];
}
if(yparity==1)
{
for(k=1;k<pksize;k++)
for(i=1;i<pisize;i++)
{
iEy[i][cjsize][k]=iEy[i][cjsize-1][k];
iEx[i][cjsize][k]=0.0;
iEz[i][cjsize][k]=0.0;
}
}
if(yparity==-1)
{
for(k=1;k<pksize;k++)
for(i=1;i<pisize;i++)
iEy[i][cjsize][k]=-iEy[i][cjsize-1][k];
}
if(zparity==1)
{
for(i=1;i<pisize;i++)
for(j=1;j<pjsize;j++)
{
iEz[i][j][cksize]=iEz[i][j][cksize-1];
iEx[i][j][cksize]=0.0;
iEy[i][j][cksize]=0.0;
}
}
if(zparity==-1)
{
for(i=1;i<pisize;i++)
for(j=1;j<pjsize;j++)
iEz[i][j][cksize]=-iEz[i][j][cksize-1];
}
}
void Hz_parity_boundary_update()
{
int i,j,k;
if(xparity==1)
{
for(j=1;j<pjsize;j++)
for(k=1;k<pksize;k++)
{
Hy[cisize][j][k]=Hy[cisize-1][j][k];
Hz[cisize][j][k]=Hz[cisize-1][j][k];
Hx[cisize][j][k]=0.0;
}
}
if(xparity==-1)
{
for(j=1;j<pjsize;j++)
for(k=1;k<pksize;k++)
{
Hy[cisize][j][k]=-Hy[cisize-1][j][k];
Hz[cisize][j][k]=-Hz[cisize-1][j][k];
}
}
if(yparity==1)
{
for(k=1;k<pksize;k++)
for(i=1;i<pisize;i++)
{
Hz[i][cjsize][k]=Hz[i][cjsize-1][k];
Hx[i][cjsize][k]=Hx[i][cjsize-1][k];
Hy[i][cjsize][k]=0.0;
}
}
if(yparity==-1)
{
for(k=1;k<pksize;k++)
for(i=1;i<pisize;i++)
{
Hz[i][cjsize][k]=-Hz[i][cjsize-1][k];
Hx[i][cjsize][k]=-Hx[i][cjsize-1][k];
}
}
if(zparity==1)
{
for(i=1;i<pisize;i++)
for(j=1;j<pjsize;j++)
{
Hx[i][j][cksize]=Hx[i][j][cksize-1];
Hy[i][j][cksize]=Hy[i][j][cksize-1];
Hz[i][j][cksize]=0.0;
}
}
if(zparity==-1)
{
for(i=1;i<pisize;i++)
for(j=1;j<pjsize;j++)
{
Hx[i][j][cksize]=-Hx[i][j][cksize-1];
Hy[i][j][cksize]=-Hy[i][j][cksize-1];
}
}
}
void Hz_parity_iboundary_update()
{
int i,j,k;
if(xparity==1)
{
for(j=1;j<pjsize;j++)
for(k=1;k<pksize;k++)
{
iHy[cisize][j][k]=iHy[cisize-1][j][k];
iHz[cisize][j][k]=iHz[cisize-1][j][k];
iHx[cisize][j][k]=0.0;
}
}
if(xparity==-1)
{
for(j=1;j<pjsize;j++)
for(k=1;k<pksize;k++)
{
iHy[cisize][j][k]=-iHy[cisize-1][j][k];
iHz[cisize][j][k]=-iHz[cisize-1][j][k];
}
}
if(yparity==1)
{
for(k=1;k<pksize;k++)
for(i=1;i<pisize;i++)
{
iHz[i][cjsize][k]=iHz[i][cjsize-1][k];
iHx[i][cjsize][k]=iHx[i][cjsize-1][k];
iHy[i][cjsize][k]=0.0;
}
}
if(yparity==-1)
{
for(k=1;k<pksize;k++)
for(i=1;i<pisize;i++)
{
iHz[i][cjsize][k]=-iHz[i][cjsize-1][k];
iHx[i][cjsize][k]=-iHx[i][cjsize-1][k];
}
}
if(zparity==1)
{
for(i=1;i<pisize;i++)
for(j=1;j<pjsize;j++)
{
iHx[i][j][cksize]=iHx[i][j][cksize-1];
iHy[i][j][cksize]=iHy[i][j][cksize-1];
iHz[i][j][cksize]=0.0;
}
}
if(zparity==-1)
{
for(i=1;i<pisize;i++)
for(j=1;j<pjsize;j++)
{
iHx[i][j][cksize]=-iHx[i][j][cksize-1];
iHy[i][j][cksize]=-iHy[i][j][cksize-1];
}
}
}
void E_field_periodic_boundary_update_x()
{
int j,k;
for(j=1;j<pjsize;j++)
for(k=1;k<pksize;k++)
{
Ex[0][j][k]=Ex[isize][j][k]*cos(wave_vector_x*2*pi)+iEx[isize][j][k]*sin(wave_vector_x*2*pi);
Ey[isize+1][j][k]=Ey[1][j][k]*cos(wave_vector_x*2*pi)-iEy[1][j][k]*sin(wave_vector_x*2*pi);
Ez[isize+1][j][k]=Ez[1][j][k]*cos(wave_vector_x*2*pi)-iEz[1][j][k]*sin(wave_vector_x*2*pi);
iEx[0][j][k]=-Ex[isize][j][k]*sin(wave_vector_x*2*pi)+iEx[isize][j][k]*cos(wave_vector_x*2*pi);
iEy[isize+1][j][k]=Ey[1][j][k]*sin(wave_vector_x*2*pi)+iEy[1][j][k]*cos(wave_vector_x*2*pi);
iEz[isize+1][j][k]=Ez[1][j][k]*sin(wave_vector_x*2*pi)+iEz[1][j][k]*cos(wave_vector_x*2*pi);
}
}
void E_field_periodic_boundary_update_y()
{
int i,k;
for(i=1;i<pisize;i++)
for(k=1;k<pksize;k++)
{
Ey[i][0][k]=Ey[i][jsize][k]*cos(wave_vector_y*2*pi)+iEy[i][jsize][k]*sin(wave_vector_y*2*pi);
Ex[i][jsize+1][k]=Ex[i][1][k]*cos(wave_vector_y*2*pi)-iEx[i][1][k]*sin(wave_vector_y*2*pi);
Ez[i][jsize+1][k]=Ez[i][1][k]*cos(wave_vector_y*2*pi)-iEz[i][1][k]*sin(wave_vector_y*2*pi);
iEy[i][0][k]=-Ey[i][jsize][k]*sin(wave_vector_y*2*pi)+iEy[i][jsize][k]*cos(wave_vector_y*2*pi);
iEx[i][jsize+1][k]=Ex[i][1][k]*sin(wave_vector_y*2*pi)+iEx[i][1][k]*cos(wave_vector_y*2*pi);
iEz[i][jsize+1][k]=Ez[i][1][k]*sin(wave_vector_y*2*pi)+iEz[i][1][k]*cos(wave_vector_y*2*pi);
}
}
void H_field_periodic_boundary_update_x()
{
int j,k;
for(j=1;j<pjsize;j++)
for(k=1;k<pksize;k++)
{
Hx[isize+1][j][k]=Hx[1][j][k]*cos(wave_vector_x*2*pi)-iHx[1][j][k]*sin(wave_vector_x*2*pi);
Hy[0][j][k]=Hy[isize][j][k]*cos(wave_vector_x*2*pi)+iHy[isize][j][k]*sin(wave_vector_x*2*pi);
Hz[0][j][k]=Hz[isize][j][k]*cos(wave_vector_x*2*pi)+iHz[isize][j][k]*sin(wave_vector_x*2*pi);
iHx[isize+1][j][k]=Hx[1][j][k]*sin(wave_vector_x*2*pi)+iHx[1][j][k]*cos(wave_vector_x*2*pi);
iHy[0][j][k]=-Hy[isize][j][k]*sin(wave_vector_x*2*pi)+iHy[isize][j][k]*cos(wave_vector_x*2*pi);
iHz[0][j][k]=-Hz[isize][j][k]*sin(wave_vector_x*2*pi)+iHz[isize][j][k]*cos(wave_vector_x*2*pi);
}
}
void H_field_periodic_boundary_update_y()
{
int i,k;
for(i=1;i<pisize;i++)
for(k=1;k<pksize;k++)
{
Hy[i][jsize+1][k]=Hy[i][1][k]*cos(wave_vector_y*2*pi)-iHy[i][1][k]*sin(wave_vector_y*2*pi);
Hx[i][0][k]=Hx[i][jsize][k]*cos(wave_vector_y*2*pi)+iHx[i][jsize][k]*sin(wave_vector_y*2*pi);
Hz[i][0][k]=Hz[i][jsize][k]*cos(wave_vector_y*2*pi)+iHz[i][jsize][k]*sin(wave_vector_y*2*pi);
iHy[i][jsize+1][k]=Hy[i][1][k]*sin(wave_vector_y*2*pi)+iHy[i][1][k]*cos(wave_vector_y*2*pi);
iHx[i][0][k]=-Hx[i][jsize][k]*sin(wave_vector_y*2*pi)+iHx[i][jsize][k]*cos(wave_vector_y*2*pi);
iHz[i][0][k]=-Hz[i][jsize][k]*sin(wave_vector_y*2*pi)+iHz[i][jsize][k]*cos(wave_vector_y*2*pi);
}
}
void E_field_Gamma_boundary_update_x()
{
int j,k;
for(j=1;j<pjsize;j++)
for(k=1;k<pksize;k++)
{
Ex[0][j][k]=Ex[isize][j][k];
Ey[isize+1][j][k]=Ey[1][j][k];
Ez[isize+1][j][k]=Ez[1][j][k];
}
}
void E_field_Gamma_boundary_update_y()
{
int i,k;
for(i=1;i<pisize;i++)
for(k=1;k<pksize;k++)
{
Ey[i][0][k]=Ey[i][jsize][k];
Ex[i][jsize+1][k]=Ex[i][1][k];
Ez[i][jsize+1][k]=Ez[i][1][k];
}
}
void H_field_Gamma_boundary_update_x()
{
int j,k;
for(j=1;j<pjsize;j++)
for(k=1;k<pksize;k++)
{
Hx[isize+1][j][k]=Hx[1][j][k];
Hy[0][j][k]=Hy[isize][j][k];
Hz[0][j][k]=Hz[isize][j][k];
}
}
void H_field_Gamma_boundary_update_y()
{
int i,k;
for(i=1;i<pisize;i++)
for(k=1;k<pksize;k++)
{
Hy[i][jsize+1][k]=Hy[i][1][k];
Hx[i][0][k]=Hx[i][jsize][k];
Hz[i][0][k]=Hz[i][jsize][k];
}
}
void field_initialization()
{
field_zero(Ex); field_zero(Ey); field_zero(Ez);
field_zero(Jx); field_zero(Jy); field_zero(Jz);
field_zero(Hx); field_zero(Hy); field_zero(Hz);
field_zero(Dx); field_zero(Dy); field_zero(Dz);
field_zero(Bx); field_zero(By); field_zero(Bz);
if((use_periodic_x == 1 || use_periodic_y == 1) && (wave_vector_x!=0.0 || wave_vector_y!=0.0))
{
field_zero(iEx); field_zero(iEy); field_zero(iEz);
field_zero(iJx); field_zero(iJy); field_zero(iJz);
field_zero(iHx); field_zero(iHy); field_zero(iHz);
field_zero(iDx); field_zero(iDy); field_zero(iDz);
field_zero(iBx); field_zero(iBy); field_zero(iBz);
}
}
void field_zero(float ***name)
{
int i,j,k;
for(i=0;i<misize;i++)
for(j=0;j<mjsize;j++)
for(k=0;k<mksize;k++)
name[i][j][k]=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -