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

📄 fdtd3d.c

📁 matlab编写的三维FDTD程序 pml边界条件 实现电磁波传播数值模拟和仿真
💻 C
📖 第 1 页 / 共 5 页
字号:
                    hmulx[z]=fd1.dt*0.00079577471546/(fd1.dx*fd1.zur);
                    hmuly[z]=fd1.dt*0.00079577471546/(fd1.dy*fd1.zur);
                    hmulz[z]=fd1.dt*0.00079577471546/(fd1.dz*fd1.zur);

         }
      }
      enmulz[z]=fd1.dt/(permez[z]*eonan*(1.0+sigez[z]*fd1.dt/(2.*permez[z]*eonan)));
      enmulzx[z]=enmulz[z]*dxi;
      enmulzy[z]=enmulz[z]*dyi;
      eoldmulz[z]=(1.0-(sigez[z]*fd1.dt/(2.0*permez[z]*eonan)))/(1.0+(sigez[z]*fd1.dt/(2.0*permez[z]*eonan)));

      fmulozx[z]= (0.3*fd1.dt/pow(permez[z]*ur[z],0.5)-fd1.dx)/(0.3*fd1.dt/pow(permez[z]*ur[z],0.5)+fd1.dx);
      fmulozy[z]= (0.3*fd1.dt/pow(permez[z]*ur[z],0.5)-fd1.dy)/(0.3*fd1.dt/pow(permez[z]*ur[z],0.5)+fd1.dy);
      fmulozxb[z]= (0.3*fd1.dt/pow(permez[z]*ur[z],0.5)-1.41*fd1.dx)/(0.3*fd1.dt/pow(permez[z]*ur[z],0.5)+1.41*fd1.dx);
      fmulozyb[z]= (0.3*fd1.dt/pow(permez[z]*ur[z],0.5)-1.41*fd1.dy)/(0.3*fd1.dt/pow(permez[z]*ur[z],0.5)+1.41*fd1.dy);
      fmulo2zx[z]=2.0*fd1.dx/(0.3*fd1.dt/pow(permez[z]*ur[z],0.5)+fd1.dx);
      fmulo2zy[z]=2.0*fd1.dy/(0.3*fd1.dt/pow(permez[z]*ur[z],0.5)+fd1.dy);
 
      eoldmulx[z]=(1.0-(sige[z]*fd1.dt/(2.0*perme[z]*eonan)))/(1.0+(sige[z]*fd1.dt/(2.0*perme[z]*eonan)));
      eoldmuly[z]=(1.0-(sige[z]*fd1.dt/(2.0*perme[z]*eonan)))/(1.0+(sige[z]*fd1.dt/(2.0*perme[z]*eonan)));
      enmulx[z]=fd1.dt/(perme[z]*eonan*(1.0+sige[z]*fd1.dt/(2.*perme[z]*eonan)));
      enmuly[z]=fd1.dt/(perme[z]*eonan*(1.0+sige[z]*fd1.dt/(2.*perme[z]*eonan)));
      enmulxy[z]=enmulx[z]*dyi;
      enmulxz[z]=enmulx[z]*dzi;
      enmulyx[z]=enmuly[z]*dxi;
      enmulyz[z]=enmuly[z]*dzi;

      fmuloxz[z]= (0.3*fd1.dt/pow(perme[z]*ur[z],0.5)-fd1.dz)/(0.3*fd1.dt/pow(perme[z]*ur[z],0.5)+fd1.dz);
      fmuloyz[z]= (0.3*fd1.dt/pow(perme[z]*ur[z],0.5)-fd1.dz)/(0.3*fd1.dt/pow(perme[z]*ur[z],0.5)+fd1.dz);
      fmuloxy[z]= (0.3*fd1.dt/pow(perme[z]*ur[z],0.5)-fd1.dy)/(0.3*fd1.dt/pow(perme[z]*ur[z],0.5)+fd1.dy);
      fmuloyx[z]= (0.3*fd1.dt/pow(perme[z]*ur[z],0.5)-fd1.dx)/(0.3*fd1.dt/pow(perme[z]*ur[z],0.5)+fd1.dx);
      fmuloxzb[z]= (0.3*fd1.dt/pow(perme[z]*ur[z],0.5)-1.41*fd1.dz)/(0.3*fd1.dt/pow(perme[z]*ur[z],0.5)+1.41*fd1.dz);
      fmuloyzb[z]= (0.3*fd1.dt/pow(perme[z]*ur[z],0.5)-1.41*fd1.dz)/(0.3*fd1.dt/pow(perme[z]*ur[z],0.5)+1.41*fd1.dz);
      fmuloxyb[z]= (0.3*fd1.dt/pow(perme[z]*ur[z],0.5)-1.41*fd1.dy)/(0.3*fd1.dt/pow(perme[z]*ur[z],0.5)+1.41*fd1.dy);
      fmuloyxb[z]= (0.3*fd1.dt/pow(perme[z]*ur[z],0.5)-1.41*fd1.dx)/(0.3*fd1.dt/pow(perme[z]*ur[z],0.5)+1.41*fd1.dx);
      fmulo2yx[z]=2.0*fd1.dy/(0.3*fd1.dt/pow(perme[z]*ur[z],0.5)+fd1.dy);
      fmulo2xy[z]=2.0*fd1.dx/(0.3*fd1.dt/pow(perme[z]*ur[z],0.5)+fd1.dx);
      fmulo2yz[z]=2.0*fd1.dz/(0.3*fd1.dt/pow(perme[z]*ur[z],0.5)+fd1.dz);
      fmulo2xz[z]=2.0*fd1.dz/(0.3*fd1.dt/pow(perme[z]*ur[z],0.5)+fd1.dz);

      fmulo3xx[z]=pow(0.3*fd1.dt,2.0)/(perme[z]*ur[z]*2.0*fd1.dx*(0.3*fd1.dt/pow(perme[z]*ur[z],0.5)+fd1.dx));   
      fmulo3xy[z]=pow(0.3*fd1.dt,2.0)/(perme[z]*ur[z]*2.0*fd1.dy*(0.3*fd1.dt/pow(perme[z]*ur[z],0.5)+fd1.dy));   
      fmulo3xz[z]=pow(0.3*fd1.dt,2.0)/(perme[z]*ur[z]*2.0*fd1.dz*(0.3*fd1.dt/pow(perme[z]*ur[z],0.5)+fd1.dz));   
      fmulo3yx[z]=pow(0.3*fd1.dt,2.0)/(perme[z]*ur[z]*2.0*fd1.dx*(0.3*fd1.dt/pow(perme[z]*ur[z],0.5)+fd1.dx));   
      fmulo3yy[z]=pow(0.3*fd1.dt,2.0)/(perme[z]*ur[z]*2.0*fd1.dy*(0.3*fd1.dt/pow(perme[z]*ur[z],0.5)+fd1.dy));   
      fmulo3yz[z]=pow(0.3*fd1.dt,2.0)/(perme[z]*ur[z]*2.0*fd1.dz*(0.3*fd1.dt/pow(perme[z]*ur[z],0.5)+fd1.dz));   
      fmulo3zx[z]=pow(0.3*fd1.dt,2.0)/(permez[z]*ur[z]*2.0*fd1.dx*(0.3*fd1.dt/pow(permez[z]*ur[z],0.5)+fd1.dx));   
      fmulo3zy[z]=pow(0.3*fd1.dt,2.0)/(permez[z]*ur[z]*2.0*fd1.dy*(0.3*fd1.dt/pow(permez[z]*ur[z],0.5)+fd1.dy));   
      fmulo3zz[z]=pow(0.3*fd1.dt,2.0)/(permez[z]*ur[z]*2.0*fd1.dz*(0.3*fd1.dt/pow(permez[z]*ur[z],0.5)+fd1.dz));   
         
      rho[z]=0.3*fd1.dt/(fd1.dz*pow(perme[z]*ur[z],0.5));
      rhoz[z]=0.3*fd1.dt/(fd1.dz*pow(permez[z]*ur[z],0.5));
   }

/* =========================================================================

   ASSIGN ELECTRICAL PROPERTIES TO OTHER FINITE SIZE OBJECTS IN GRID

   ========================================================================= */

   /* FOR ANTENNA TERMINALS - with no coax attached (i.e. assuming load is at terminals */

      eoldmult=(1.0-(termcon*fd1.dt/(2.0*eonan)))/(1.0+(termcon*fd1.dt/(2.0*eonan)));
      enmultx= fd1.dt/(1.*eonan*(1.0+termcon*fd1.dt/(2.*eonan)))*dxi; 
      enmulty= fd1.dt/(1.*eonan*(1.0+termcon*fd1.dt/(2.*eonan)))*dyi; 
      enmultz= fd1.dt/(1.*eonan*(1.0+termcon*fd1.dt/(2.*eonan)))*dzi; 
      eoldmulr=(1.0-(termrcon*fd1.dt/(2.0*eonan)))/(1.0+(termrcon*fd1.dt/(2.0*eonan)));
      enmulrx= fd1.dt/(1.*eonan*(1.0+termrcon*fd1.dt/(2.*eonan)))*dxi; 
      enmulry= fd1.dt/(1.*eonan*(1.0+termrcon*fd1.dt/(2.*eonan)))*dyi; 
      enmulrz= fd1.dt/(1.*eonan*(1.0+termrcon*fd1.dt/(2.*eonan)))*dzi; 

   /* FOR UNDERWATER PROBE */
      eoldmulpr=(1.0-(sigpr*fd1.dt/(2.0*eonan)))/(1.0+(sigpr*fd1.dt/(2.0*eonan)));
      enmulpr= fd1.dt/(1.*eonan*(1.0+sigpr*fd1.dt/(2.*eonan)))*dxi; 

   /* FOR BURIED DIELECTRIC PIPE */
      if(fd1.targperm<0.0001) {
	printf("fd1.targperm<0.0001, CHANGED TO 1.0\n");
	fd1.targperm=1.0;
      }
      pipeperm=fd1.targperm;
      pipecond=fd1.targcond;

   /* TANGENTIAL E CONTINUOUS ACROSS SURFACE OF TARGET (I.E. TAKE THE AVERAGE) */
      paveperm=(fd1.targperm+fd1.zperm)/2.;
      pavecond=(fd1.targcond+fd1.zcond)/2.;

      eoldmulps=(1.0-(pavecond*fd1.dt/(2.0*paveperm*eonan)))/(1.0+(pavecond*fd1.dt/(2.0*paveperm*eonan)));
      enmulpxs= fd1.dt/(1.*paveperm*eonan*(1.0+pavecond*fd1.dt/(2.*paveperm*eonan)))*dxi; 
      enmulpys= fd1.dt/(1.*paveperm*eonan*(1.0+pavecond*fd1.dt/(2.*paveperm*eonan)))*dyi; 
      enmulpzs= fd1.dt/(1.*paveperm*eonan*(1.0+pavecond*fd1.dt/(2.*paveperm*eonan)))*dzi; 

      eoldmulp=(1.0-(pipecond*fd1.dt/(2.0*pipeperm*eonan)))/(1.0+(pipecond*fd1.dt/(2.0*pipeperm*eonan)));
      enmulpx= fd1.dt/(1.*pipeperm*eonan*(1.0+pipecond*fd1.dt/(2.*pipeperm*eonan)))*dxi; 
      enmulpy= fd1.dt/(1.*pipeperm*eonan*(1.0+pipecond*fd1.dt/(2.*pipeperm*eonan)))*dyi; 
      enmulpz= fd1.dt/(1.*pipeperm*eonan*(1.0+pipecond*fd1.dt/(2.*pipeperm*eonan)))*dzi; 
   /* SPHERE OR CYLINDER OR PIPE (OPTION 8 FOR PIPE) */
   /* [0] = target interior
      [1] = surrounding medium
      [2] = target exterior - average of interior and ground values
   */
      eoldmulsp[0]=(1.0-(fd1.targcond*fd1.dt/(2.0*fd1.targperm*eonan)))
                         /(1.0+(fd1.targcond*fd1.dt/(2.0*fd1.targperm*eonan)));
      enmulspx[0]= fd1.dt/(1.*fd1.targperm*eonan*(1.0+fd1.targcond*fd1.dt/(2.*fd1.targperm*eonan)))*dxi; 
      enmulspy[0]= fd1.dt/(1.*fd1.targperm*eonan*(1.0+fd1.targcond*fd1.dt/(2.*fd1.targperm*eonan)))*dyi; 
      enmulspz[0]= fd1.dt/(1.*fd1.targperm*eonan*(1.0+fd1.targcond*fd1.dt/(2.*fd1.targperm*eonan)))*dzi; 
      eoldmulsp[1]=(1.0-(fd1.zcond*fd1.dt/(2.0*fd1.zperm*eonan)))/(1.0+(fd1.zcond*fd1.dt/(2.0*fd1.zperm*eonan)));
      enmulspx[1]= fd1.dt/(1.*fd1.zperm*eonan*(1.0+fd1.zcond*fd1.dt/(2.*fd1.zperm*eonan)))*dxi; 
      enmulspy[1]= fd1.dt/(1.*fd1.zperm*eonan*(1.0+fd1.zcond*fd1.dt/(2.*fd1.zperm*eonan)))*dyi; 
      enmulspz[1]= fd1.dt/(1.*fd1.zperm*eonan*(1.0+fd1.zcond*fd1.dt/(2.*fd1.zperm*eonan)))*dzi; 
      eoldmulsp[2]=(1.0-((fd1.targcond+fd1.zcond)/2.*fd1.dt/(2.0*(fd1.targperm+fd1.zperm)/2.*eonan)))
                   /(1.0+((fd1.targcond+fd1.zcond)/2.*fd1.dt/(2.0*(fd1.targperm+fd1.zperm)/2.*eonan)));
      enmulspx[2]= fd1.dt/(1.*(fd1.targperm+fd1.zperm)/2.*eonan*(1.0+(fd1.targcond+fd1.zcond)/2.
                   *fd1.dt/(2.*(fd1.targperm+fd1.zperm)/2.*eonan)))*dxi; 
      enmulspy[2]= fd1.dt/(1.*(fd1.targperm+fd1.zperm)/2.*eonan*(1.0+(fd1.targcond+fd1.zcond)/2.
                   *fd1.dt/(2.*(fd1.targperm+fd1.zperm)/2.*eonan)))*dyi; 
      enmulspz[2]= fd1.dt/(1.*(fd1.targperm+fd1.zperm)/2.*eonan*(1.0+(fd1.targcond+fd1.zcond)/2.
                   *fd1.dt/(2.*(fd1.targperm+fd1.zperm)/2.*eonan)))*dzi; 

   /* INTERIOR OF COAX */
      if(fd1.coaxert<0.001) {
         fprintf(fparms,"PERMITTIVITY OF TRANSMIT COAX INTERIOR TOO LOW (fd1.coaxert) - EXITING\n");
         fclose(fparms);
         exit();
      }
      eoldmulc=(1.0-(fd1.coaxst*fd1.dt/(2.0*fd1.coaxert*eonan)))/(1.0+(fd1.coaxst*fd1.dt/(2.0*fd1.coaxert*eonan)));
      enmulc= fd1.dt/(fd1.coaxert*eonan*(1.0+fd1.coaxst*fd1.dt/(2.*fd1.coaxert*eonan)))*dxi;
      fmuloc= (0.3*fd1.dt/pow(fd1.coaxert*fd1.coaxurt,0.5)-fd1.dx)/(0.3*fd1.dt/pow(fd1.coaxert*fd1.coaxurt,0.5)+fd1.dx);
      hmulc=fd1.dt*0.00079577471546/(fd1.dz*fd1.coaxurt);
      
   /* bottom OF transmit COAX */
   /*
      coaxcond=0.265;
      coaxperm=1.0;
      eoldmulcb=(1.0-(coaxcond*fd1.dt/(2.0*coaxperm*eonan)))/(1.0+(coaxcond*fd1.dt/(2.0*coaxperm*eonan)));
      enmulcb= fd1.dt/(coaxperm*eonan*(1.0+coaxcond*fd1.dt/(2.*coaxperm*eonan)))*dxi;
   */
   /* INTERIOR OF RECEIVE COAX */
      if(fd1.coaxerr<0.001) {
         fprintf(fparms,"PERMITTIVITY OF TRANSMIT COAX INTERIOR TOO LOW (fd1.coaxerr) - EXITING\n");
         fclose(fparms);
         exit();
      }
      reoldmulc=(1.0-(fd1.coaxsr*fd1.dt/(2.0*fd1.coaxerr*eonan)))/(1.0+(fd1.coaxsr*fd1.dt/(2.0*fd1.coaxerr*eonan)));
      renmulc= fd1.dt/(fd1.coaxerr*eonan*(1.0+fd1.coaxsr*fd1.dt/(2.*fd1.coaxerr*eonan)))*dxi;
      rfmuloc= (0.3*fd1.dt/pow(fd1.coaxerr*fd1.coaxurr,0.5)-fd1.dx)/(0.3*fd1.dt/pow(fd1.coaxerr*fd1.coaxurr,0.5)+fd1.dx);
      rhmulc=fd1.dt*0.00079577471546/(fd1.dz*fd1.coaxurr);
   /* bottom OF receive COAX - tangential E is continuous */
   /*
      coaxcond=0.0;
      coaxperm=1.0;
      reoldmulcb=(1.0-(coaxcond*fd1.dt/(2.0*coaxperm*eonan)))/(1.0+(coaxcond*fd1.dt/(2.0*coaxperm*eonan)));
      renmulcb= fd1.dt/(coaxperm*eonan*(1.0+coaxcond*fd1.dt/(2.*coaxperm*eonan)))*dxi;
   */
   /* ------------------ OSU ABSORBER ELECTRICAL PROPERTIES ----------------- */

    if(fd1.anttype>=25) {
       permabs[0]=6.23;condabs[0]=0.057;permabs[1]=6.23;condabs[1]=0.057;
       permabs[2]=12.0;condabs[2]=0.09392;permabs[3]=13.3;condabs[3]=0.110;
       permabs[4]=13.5;condabs[4]=0.113;permabs[5]=13.3;condabs[5]=0.1105;
       permabs[6]=12.0;condabs[6]=0.09392;permabs[7]=6.54;condabs[7]=0.059;
       permabs[8]=3.25;condabs[8]=0.02615;permabs[9]=1.42;condabs[9]=0.0;
       for(z=0;z<osudimz;z++) {
          if (fd1.absfreq==125) {
               eoldmosu[z]=(1.0-(condabs[z]*fd1.dt/(2.0*permabs[z]*eonan)))/(1.0+(condabs[z]*fd1.dt/(2.0*permabs[z]*eonan)));
               enmulosu[z]= fd1.dt/(permabs[z]*eonan*(1.0+condabs[z]*fd1.dt/(2.*permabs[z]*eonan)))*dxi;
          }
          else {
               condabs[z]=0.0;
               permabs[z]=1.0;
               eoldmosu[z]=(1.0-(condabs[z]*fd1.dt/(2.0*permabs[z]*eonan)))/(1.0+(condabs[z]*fd1.dt/(2.0*permabs[z]*eonan)));
               enmulosu[z]= fd1.dt/(permabs[z]*eonan*(1.0+condabs[z]*fd1.dt/(2.*permabs[z]*eonan)))*dxi;
          } 
       }
    }
    if(exitflag==1) {      
       fclose(fparms);
       exit();
    } 
    fprintf(fparms,"CONTENTS IN OUTPUT FILES:\n");
    fprintf(fparms,"%s -> Ey[xcere][ycere+1][zcere] -> for rec1flag==(-1)\n",filoutr); 
    fprintf(fparms,"%s -> Ey[xcere][ycere+1][zcere-5] -> for tra1flag+rec1flag==2\n",filoutr); 
    fprintf(fparms,"%s -> Ey[xcere][ycere+1][zcere] -> for tra1flag+rec1flag==1\n",filoutr); 
    fprintf(fparms,"%s -> Eyc[1][10]\n",filoutt);
    fprintf(fparms,"%s  -> v \n",filoutrx);
    fprintf(fparms,"%s  -> Iyt\n",filoutE);
    fprintf(fparms,"\n DATA IN COLUMNS BELOW: ");     
    if(tra1flag+rec1flag==2) fprintf(fparms,"t,Eyc1[1][10],Ey[xcere][ycere][prpt],Ey[xcere][ycere+1][zcere-5]\n");
    else if(tra1flag+tra2flag==2)fprintf(fparms,"t,Eyc1[1][10],Ey[xc1][yc1+1][prpt],Ey[xcere][ycere+1][zcere-5]\n"); 
    else if(tra1flag+rec1flag==1) fprintf(fparms,"t,Eyc1[1][10],Ey[xc1][yc1][prpt],Iyt,v\n"); 
    else if(tra1flag==0) fprintf(fparms,"t,Ey[xc1][yc1][zcent],Ey[xc1][yc1][prpt],Iyt,v\n");
    else if((rec1flag==(-1))&&(rec2flag==0)) fprintf(fparms,"t,Eyc1[1][10],Ey[xcere][ycere][prpt],Ey[xcere][ycere+1][zcere]\n");  
    else if((rec1flag==(-1))&&(rec2flag==(-1)))fprintf(fparms,"t,Eyc1[1][10],Ey[xcere][ycere][prpt],Ey[xcere][ycere+1][zcere],Ex[xcere+1][ycere][zcere]\n"); 

/* =========================================================================
   =========================================================================

   START OF OUTERMOST LOOP  
  
   =========================================================================
   ========================================================================= */
 
 for(loop=0;loop<fd1.numsteps;loop++) {

/* =========================================================================

   INITIALIZING ELECTRIC AND MAGNETIC FIELD VALUES THROUGHOUT THE GRID 

   ========================================================================= */

   tmcnt=1;

/* =========================================================================

   INITIALIZE BURIED OBJECT PARAMETERS 

   ========================================================================= */
   
   if(fd1.obj>0) {
      rad=fd1.rad/fd1.dz;
      if(fd1.obj==1) {
         fprintf(fparms,"SPHERE TARGET OPTION ACTIVATED\n");
         xo=(fd1.xpos+fd1.xinc*loop)/fd1.dx-rad-3;
         yo=(fd1.ypos+fd1.yinc*loop)/fd1.dy-rad-3;
         zo=interfac+(fd1.zpos+fd1.zinc*loop)/fd1.dz-3;
      }
      else if(fd1.obj==2) {      
         cyllen=fd1.objlen/fd1.dz;
         xo=(fd1.xpos+fd1.xinc*loop)/fd1.dx-SPHDIM/2;
         yo=(fd1.ypos+fd1.yinc*loop)/fd1.dy-SPHDIM/2;
         zo=interfac+(fd1.zpos+fd1.zinc*loop)/fd1.dz-(SPHDIM/2-rad);
      }
      else if(fd1.obj==3) {
        sidlen=fd1.objlen/fd1.dz;
         xo=(fd1.xpos+fd1.xinc*loop)/fd1.dx-sidlen/2;
         yo=(fd1.ypos+fd1.yinc*loop)/fd1.dy-sidlen/2;
         zo=interfac+(fd1.zpos+fd1.zinc*loop)/fd1.dz;
         fprintf(fparms,"LENGTH OF SIDE OF CUBE IN GRID CELLS = %d\n",sidlen);
      }
      else if(fd1.obj==4) {
        sidlen=fd1.objlen/fd1.dz;
         xo=(fd1.xpos+fd1.xinc*loop)/fd1.dx-sidlen/2;
         yo=(fd1.ypos+fd1.yinc*loop)/fd1.dy-sidlen/2;
         zo=interfac+(fd1.zpos+fd1.zinc*loop)/fd1.dz;
         fprintf(fparms,"LENGTH METALLIC SHEET IN GRID CELLS = %d\n",sidlen);
      }
     if ((fd1.obj==7)||(fd1.obj==8)) {
         xo=(fd1.xpos+fd1.xinc*loop)/fd1.dx-pipdimxy/2;
         yo=(fd1.ypos+fd1.yinc*loop)/fd1.dy-pipdimxy/2;
         zo=interfac+(fd1.zpos+fd1.zinc*loop)/fd1.dz; 
         fprintf(fparms,"PIPE OPTION ACTIVATED  object = %d\n",fd1.obj);
         fprintf(fparms,"TARGET CONDUCTIVITY: %f\n",fd1.targcond);
         fprintf(fparms,"TARGET PERMITTIVITY: %f\n",fd1.targperm);
     }
     if (fd1.obj==9) {
         rad=fd1.rad/fd1.dz;
         xo=(fd1.xpos+fd1.xinc*loop)/fd1.dx-pipdimxy/2;
         yo=(fd1.ypos+fd1.yinc*loop)/fd1.dy-pipdimxy/2;
         zo=interfac+(fd1.zpos+fd1.zinc*loop)/fd1.dz+rad/2; 
         fprintf(fparms,"THIN LAYER OPTION ACTIVATED  \n");
         fprintf(fparms,"LAYER CONDUCTIVITY: %f\n",fd1.targcond);
         fprintf(fparms,"LAYER PERMITTIVITY: %f\n",fd1.targperm);
     }
     fprintf(fparms,"xo = %d\n",xo);
     fprintf(fparms,"yo = %d\n",yo);
     fprintf(fparms,"zo = %d\n",zo);
     fprintf(fparms,"rad = %d\n",rad);
     if((xo>xm)||(yo>ym)||(zo>zm)||(xo<0)||(yo<0)||(zo<0)) {
        fprintf(fparms,"PROBLEMS WITH TARGET LOCATION - EXITING \n"); 
        fclose(fparms);       
        exit();
     }
   }
   
/* =========================================================================

   SIMULATING POINT DIPOLE

   ========================================================================= */  

  if(fd1.pdflag==1) {
     xpd=xcent;
     ypd=ycent;
     zpd=zcent;
     fprintf(fparms,"POINT DIPOLE FLAG ACTIVATED\n");
     fprintf(fparms,"LOCATION: (x,y,z) = (%d,%d,%d)\n",xpd,ypd,zpd);
  }

/*  ========================================================================

    ****************** START OF TIME LOOP ***********************   

⌨️ 快捷键说明

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