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

📄 fd2d.c

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

      Incidence Electric Field  
   Phase Constant  Characteristic Impedance 

---------------------------------------------

*/

# include "fd2d.h"

void FDTD_2D(MODULE *pModule, char *pFileName)
{
  int time;
  int J_1,J_2,N_C,N_V_Start,N_V_End;

  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, *V_2_R, *V_2_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);

/* 
   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
*/ 
  

  
/* 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   */


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

  V_2_R=dmalloc_1(N_NT); V_2_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; J_2=J_1+N_2D_Reference;

   N_C=(pModule->Excite.nFw_start+pModule->Excite.nFw_end)/2;
  
   N_V_Start=pModule->Excite.nFl_start; N_V_End=pModule->Excite.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_2_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);


/*      HMur_Left_Iter(pModule,Hy);
      HMur_Right_Iter(pModule,Hy);   
*/

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

      E_Inner_Iter(pModule,Ex,Ey,Ez,Hx,Hy,Hz,time); 
      E_2_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);  
 

/*      EMur_Left_Iter(pModule,Ex,Ez);
      EMur_Right_Iter(pModule,Ex,Ez);        
*/

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

      DFT_Volt(Ez,time,N_C,J_1,N_V_Start,N_V_End,V_1_R,V_1_I); 
      DFT_Volt(Ez,time,N_C,J_2,N_V_Start,N_V_End,V_2_R,V_2_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_2D_Para(pModule,pFileName,V_1_R,V_1_I,V_2_R,V_2_I);  

    dfree_1(V_1_R); dfree_1(V_1_I); 
    dfree_1(V_2_R); dfree_1(V_2_I); 

}

 

         




   

⌨️ 快捷键说明

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