一维fdtd模拟程序C语言_第1页
一维fdtd模拟程序C语言_第2页
一维fdtd模拟程序C语言_第3页
一维fdtd模拟程序C语言_第4页
一维fdtd模拟程序C语言_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include <stdio.h> H-.88  #include <stdlib.h> j5>3Td.  #include <math.h> ww"HV;i  PKM8MY vo  #define NUM_of_ZAXIS 400 nE3'm)  2U;ImC1g  float gauss_pulse(float T,float t0,float spread); IZkQmA=  L: ;L/  int file_save(float* data,c

2、har* filename); m:7$"oq|  ,!s;o6|*y  sSMcF2I  WU -_Y  void main() _8CE|<Cn   (hn+hc      float exNUM_of_ZAXIS,hyNUM_of_ZAXIS; O!D0 hW4      float obj_parametersNUM_of_ZAXIS4;  /*模型参数设置 */ ng,qEI;<x  

3、    float CANUM_of_ZAXIS,CBNUM_of_ZAXIS,CPNUM_of_ZAXIS,CQNUM_of_ZAXIS; F$V H%V      float ca,cb,cp,cq;        /*真空时的参数*/ ;oQ*gd      float var_ca,var_cb,var_cp,var_cq;    

4、;    /* */ L)cy&"L|      float var_border,ex_low_m1,ex_low_m2,ex_high_m1,ex_high_m2,    ex_low_s1,ex_low_s2,ex_high_s1,ex_high_s2;    /*边界吸收参数*/ y-TS?5Dr      float Epsilon,Mu,Pi,C;

5、          /*介电系数 Epsilon 0,磁导系数 Mu 0*/ #mNM5(o      float rel_epsz,rel_mu;   /*相对介电系数,磁导系数*/ e'Ol$3U9=      float e_sigma,h_sigma;   /*电导率,磁导率*/ .&A S-">Z  

6、60;    ?X1vU0 c      float dt,ddz; %8)GuxG*      float source,T; 4|ryt4B      int pos_driv_source; P| o_/BS      int i,n,Nsteps; <|_/i/H      int e_low,e_hig

7、h; ZqHh$QBD 9  HG2iy  Vu DSjh  4+t9"SD      FILE* fp; #:Bd8PS       4#$gTc       NGD?. (G      /*初始化各个变量 */ 83dwr;-      Pi=3.14159; / c1=OJ   &#

8、160;  Epsilon=8.85e-12; =U sl      Mu=4*Pi*1e-7; NPws  uFDJRQJ<      C=pow( (float)(1/(Epsilon*Mu),(float)(0.5); SomAy+ERn  wu5S)?*      ddz=0.01; 1$Rua      dt=ddz/(2*C); eR kv

9、NI      T=0; ,Ez+:Es                     8tk3$ Y                      / 采用

10、葛德彪书中 一维FDTD公式中的参数 hqW4.|&c      e_sigma=0; l+BJh1      h_sigma=0; z1t YD      var_ca=0.5*e_sigma*dt/Epsilon; w=.w*?>      var_cb=dt/Epsilon; lP*_dt9      var_cp=0.5*h_

11、sigma*dt/Mu; okfGd= &      var_cq=dt/Mu; :_;9&H9ha  hsIC5s3      ca=(1-var_ca)/(1+var_ca); 4.|-?qG      cb=var_cb/(1+var_ca); sWw      cp=(1-var_cp)/(1+var_cp); #9aB3C    &

12、#160; cq=var_cq/(1+var_cp); 07WZ w1(;  4.)hCb      var_border=(C*dt-ddz)/(C*dt+ddz); /i;/$  o< bukl&  fw$KVZ1!w                     / 边界处 用来存数据的临时变量 _HPw

13、OCG7      ex_low_m1=0; 5MsE oLg      ex_low_m2=0; 16"eyt>      ex_high_m1=0; :7&#ej6      ex_high_m2=0; .a._WZF      ex_low_s1=0; =ML6"jr    &#

14、160; ex_low_s2=0; 4naL2 Y!      ex_high_s1=0; z(14250      ex_high_s2=0; 6.? Ke8iC  8z&7wO                      / 上 ,下 边界位置 S#+Dfa8

15、X      e_low=20; p%) 1(R8qM      e_high=380; RRh0G>*  k.nq,      pos_driv_source=200; FHpS?htRy  i'hCa $  +92/0      for(i=0;i<NUM_of_ZAXIS;i+) sE87Lz     

16、  pyA;%vJn          ex=0; tr8a_CV          hy=0; pv<$ o          obj_parameters0=1; ETk4I "          obj_pa

17、rameters1=1; <SeK3Gi          obj_parameters2=0; hM9pO          obj_parameters3=0; (V2txMh          CA=ca; E.V#Bk=         

18、; CB=cb; mQUt ;          CP=cp; olc7&R          CQ=cq; X|!Vt O       eUP.:(E  J3Ipk-'lx       *?sdWRbul  tkT:5O6     

19、 / 开始主循环 gaFOm9y.e  -/ 5" Py      Nsteps=1; fmqHWu*wG  F%vZrKR      while(Nsteps>0) "u#,#z_       /2 V          printf("Nsteps->"); nPlg5&a

20、mp;E          scanf("%d",&Nsteps); fc,LFvZ  +5AWX,9,-          for(n=0;n<Nsteps;n+) jL3/0"o           .W;,.l      

21、;        T+=1; d v8q&_                           P*=M?:Jb,             

22、 / 计算 Ex Fa |Y              for(i=e_low+1;i<e_high;i+) iXtL:,i               x:wv#Wh:l7             &#

23、160;                                                 &#

24、160;   / 采用葛德彪书中的一维FDTD 公式 TR7j?                  ex=CA*ex-CB*(hy-hyi-1)/ddz; 5t=7-               7XM:4whw       $

25、kAal26z              if(T<200) b8FSVV 7  obzdH:S              expos_driv_source+=gauss_pulse(T,40,12); K;L6<a A#        

26、0;          $K12Wcp-               Xtk3  b)(si/               TxA%0         

27、0;    /Mur 边界吸收 OCN:               52P0<Wq              ex_low_m2=ex_low_m1; #Fkn-/nL           &

28、#160;  ex_low_m1=exe_low; q;Rhx"x>T               7X$>+S              ex_low_s2=ex_low_s1; Q$)z_jai         &

29、#160;    ex_low_s1=exe_low+1; 0Qr|!B:+9)  36QZV*P              ex_high_m2=ex_high_m1; 1$n! Lj=5              ex_high_m1=exe_high; n2N:rP  &#

30、160;            &BOG&ot              ex_high_s2=ex_high_s1; ,<O|#?"G              ex_high_s1=exe_hi

31、gh-1; 0RF<:9x2  fq(3uEnC             2 #_ i_j                               exe_low=ex_low_s

32、2+var_border*(exe_low+1-ex_low_m2); HV*=Qi                               exe_high=ex_high_s2+var_border*(exe_high-1-ex_high_m2); -TgA*_5  MTkrv(G 

33、0;                                          /       

34、60;        行波时延法 mNQ*YCq.          /    exe_high=0.5*(ex_high_m2+ex_high_s2); P"s7cl          /    exe_low=0.5*(ex_low_m2+ex_

35、low_s2); (iB+c  +"3K)9H              / 计算 Hy t+z r3  |D8"D6              for(i=e_low;i<e_high;i+) 2 X5YN;        

36、;       e$4$G<8;y                  hy=CP*hy-CQ*(exi+1-ex)/ddz; GmXZi               tS sDW!M  QmY1Bn?s  

37、0;        Ky)*  Ir$:e*E>          / 存储数据 95-ptO1  (6 e$j          fp=fopen("Ex","w"); V38v2LI          for(i=0;i<NUM_of_ZAXIS;i+) xYD.j           (7?jjH4          

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论