/trunk/MSc_Matlab_Code/Misc/Toolboxes/OSCAR_V1.3/Calculate_Pcirc/CreateField.m

http://thesisyossim.googlecode.com/ · MATLAB · 100 lines · 52 code · 38 blank · 10 comment · 0 complexity · c29b5101f75426ee5f3d714b1bc8318f MD5 · raw file

  1. clear all
  2. global Grid
  3. global Laser
  4. global Mirror
  5. global ITM
  6. global ETM
  7. global Length;
  8. global Mat_propagation
  9. global Field
  10. %-----------------------------------------------------------------
  11. fprintf('\n*******************************************************\n ')
  12. fprintf(' OSCAR FFT code \n ')
  13. %--------------------- Parameters simulations --------------------
  14. Grid.Num_point = 128;
  15. Grid.Length = 0.30;
  16. % Parameters of the input laser beam
  17. Laser.lambda = 1064e-9;
  18. Laser.beam_radius = 0.0200;
  19. Laser.wavefront_radius = -2000;
  20. Laser.power = 1;
  21. Laser.amplitude = sqrt(Laser.power*2/(pi*Laser.beam_radius^2)); % Amplitude for TEM00 input beam
  22. %--------------------- Cavity parameters ---------------------------
  23. Length_cav = 1000;
  24. ITM.RofC = 2500;
  25. ETM.RofC = 2500;
  26. Mirror.Diam = 0.25;
  27. ITM.T = 0.005;
  28. ETM.T = 50E-6;
  29. ITM.L = 50E-6;
  30. ETM.L = 50E-6;
  31. ITM.R = 1 - ITM.T - ITM.L;
  32. ETM.R = 1 - ETM.T - ETM.L;
  33. ITM.r = sqrt(ITM.R);
  34. ETM.r= sqrt(ETM.R);
  35. ITM.t = sqrt(ITM.T);
  36. ETM.t= sqrt(ETM.T);
  37. Refrac_index = 1.45;
  38. % Variable
  39. Laser.k_prop = 2*pi/Laser.lambda;
  40. Grid.step = Grid.Length/Grid.Num_point;
  41. %--------------------- Create the scale for the grid -----------
  42. Grid.vector = 1:Grid.Num_point;
  43. Grid.axis = -Grid.Length/2 + Grid.step/2 + (Grid.vector-1)*Grid.step;
  44. Grid.axis_fft = -1/(2*Grid.step) + (Grid.vector-1)*1/(Grid.Num_point*Grid.step);
  45. %-------------------- Create mirror mask --------------------------
  46. [Grid.X,Grid.Y] = meshgrid(Grid.axis);
  47. [Grid.FFT_X,Grid.FFT_Y] = meshgrid(Grid.axis_fft);
  48. Grid.D2_square = Grid.X.^2 + Grid.Y.^2;
  49. Grid.D2 = sqrt(Grid.D2_square);
  50. Mirror.mask_index = find (Grid.D2 < (Mirror.Diam/2));
  51. Mirror.mask = zeros(Grid.Num_point,Grid.Num_point,'double');
  52. Mirror.mask(Mirror.mask_index) = 1;
  53. %-------------------- Create propagation matrix --------------------------
  54. Mat_propagation = complex(zeros(Grid.Num_point,Grid.Num_point,'double'));
  55. Mat_propagation = exp(i*(-Laser.k_prop*Length_cav + ...
  56. pi*Laser.lambda*(Grid.FFT_X.^2 + Grid.FFT_Y.^2)*Length_cav));
  57. %--------------------Create mirrors matrix -------------------------------
  58. CreateMirror;
  59. %------------------- Create input EM field ----------------------
  60. Field.Start = complex(zeros(Grid.Num_point,Grid.Num_point,'double'));
  61. Field.Start = Laser.amplitude .* exp(-Grid.D2_square/Laser.beam_radius^2).* ...
  62. exp(-i*Laser.k_prop.*Grid.D2_square./(2*Laser.wavefront_radius));