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

📄 fd3d.c

📁 FDTD 模拟 天线 包含 近场-远场 外推程序(时谐场)
💻 C
字号:
/*------------------------------------------
  
  This program is to solve the 3-D problem 

       Field Value
---------------------------------------------

*/

# include "fd3d.h"

void FDTD_3D(MODULE *pModule,char *pFileName)
{
  int time;
  int J_1,N_C_1;
  int N_V_Start_1,N_V_End_1;
  
  int NExx,NExy,NExz,NHxx,NHxy,NHxz;
  int NEyx,NEyy,NEyz,NHyx,NHyy,NHyz;
  int NEzx,NEzy,NEzz,NHzx,NHzy,NHzz;

  
  double *V_1_R, *V_1_I;  

  double ***pABC_LEX, ***pABC_LEZ, ***pABC_LH;
  double ***pABC_REX, ***pABC_REZ, ***pABC_RH;

 
  double ****Ex, ****Ey, ****Ez;
  double ****Hx, ****Hy, ****Hz;

    
  NExx=Nx;   NExy=Ny+1; NExz=Nz+1;  
  NEyx=Nx+1; NEyy=Ny;   NEyz=Nz+1;
  NEzx=Nx+1; NEzy=Ny+1; NEzz=Nz;
  NHxx=Nx+1; NHxy=Ny;   NHxz=Nz;
  NHyx=Nx;   NHyy=Ny+1; NHyz=Nz;
  NHzx=Nx;   NHzy=Ny;   NHzz=Nz+1;


  Ex=dmalloc_4(2,NExx,NExy,NExz);  Ey=dmalloc_4(2,NEyx,NEyy,NEyz);
  Ez=dmalloc_4(2,NEzx,NEzy,NEzz);  Hx=dmalloc_4(2,NHxx,NHxy,NHxz);
  Hy=dmalloc_4(2,NHyx,NHyy,NHyz);  Hz=dmalloc_4(2,NHzx,NHzy,NHzz);


  
/* E.x.   Ex[0][Nx][Ny][Nz]  --  the Value of Ex in the last time step 

          Ex[1][Nx][Ny][Nz]  --  the Value of Ex in the current time step   
*/

/* 
   pABC_LE[3][i][k] --- pABC_LEX[0][i][k]  Y=Ym    t=n-2 
                        pABC_LEX[1][i][k]  Y=Ym-1  t=n-2
                        pABC_LEX[2][i][k]  Y=Ym-2  t=n-2
*/


  V_1_R=dmalloc_1(N_NT); V_1_I=dmalloc_1(N_NT);

   pABC_LEX=dmalloc_3(3,NExx,NExz); pABC_LEZ=dmalloc_3(3,NEzx,NEzz);
   pABC_LH=dmalloc_3(3,NHyx,NHyz);  pABC_RH=dmalloc_3(3,NHyx,NHyz);
   pABC_REX=dmalloc_3(3,NExx,NExz); pABC_REZ=dmalloc_3(3,NEzx,NEzz);


  J_1=pModule->pPort.nLocation; 

  N_C_1=(pModule->pPort.nFw_start+pModule->pPort.nFw_end)/2;
  
  N_V_Start_1=pModule->pPort.nFl_start; N_V_End_1=pModule->pPort.nFl_end;


  for(time=0;time<N_NT;time++)
   {

      Save_B_Ex(pModule,Ex,pABC_LEX,pABC_REX);
      Save_B_Ez(pModule,Ez,pABC_LEZ,pABC_REZ);
      Save_B_Hy(pModule,Hy,pABC_LH,pABC_RH); 


      E_Excite_Iter(pModule,time,Ez);

      H_Inner_Iter(pModule,Ex,Ey,Ez,Hx,Hy,Hz);
      H_Surface_Iter(pModule,Ex,Ey,Hz);

      H_Up_Iter(pModule,Hz);
      H_Down_Iter(pModule,Hz);


      H_Left_Iter(pModule,Hy,pABC_LH);
      H_Right_Iter(pModule,Hy,pABC_RH);


      H_Front_Iter(pModule,Hx);
      H_Back_Iter(pModule,Hx); 


      E_Inner_Iter(pModule,Ex,Ey,Ez,Hx,Hy,Hz,time); 
      E_Surface_Iter(pModule,Ex,Ey,Hx,Hy,Hz);

      E_Down_Iter(pModule,Ex,Ey);
      E_Up_Iter(pModule,Ex,Ey);


      E_Left_Iter(pModule,Ex,Ez,pABC_LEX,pABC_LEZ);
      E_Right_Iter(pModule,Ex,Ez,pABC_REX,pABC_REZ);  


      E_Front_Iter(pModule,Ey,Ez);
      E_Back_Iter(pModule,Ey,Ez);

      DFT_Volt(Ez,time,N_C_1,J_1,N_V_Start_1,N_V_End_1,V_1_R,V_1_I); 

      Display_Data(pModule,time,Ez);       

       Exchange_Value(Ex,Ey,Ez,Hx,Hy,Hz);


   }


    dfree_4(Ex,2,NExx,NExy);  dfree_4(Ey,2,NEyx,NEyy);
    dfree_4(Ez,2,NEzx,NEzy);  dfree_4(Hx,2,NHxx,NHxy);
    dfree_4(Hy,2,NHyx,NHyy);  dfree_4(Hz,2,NHzx,NHzy);

    dfree_3(pABC_LEX,3,NExx); dfree_3(pABC_REX,3,NExx);
    dfree_3(pABC_LH,3,NHyx);  dfree_3(pABC_RH,3,NHyx);
    dfree_3(pABC_LEZ,3,NEzx); dfree_3(pABC_REZ,3,NEzx);

    Cal_3D_Para(pModule,pFileName,V_1_R,V_1_I);  

    dfree_1(V_1_R); dfree_1(V_1_I); 

}


  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -