aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gyro_cavity_modematch_demo.m64
1 files changed, 64 insertions, 0 deletions
diff --git a/gyro_cavity_modematch_demo.m b/gyro_cavity_modematch_demo.m
new file mode 100644
index 0000000..789a623
--- /dev/null
+++ b/gyro_cavity_modematch_demo.m
@@ -0,0 +1,64 @@
+%Permute all possible lens combinations out of set of lenses
+% keep this list short - computation time goes as factorial of lens set size
+%lens_set = [.125, 0.20, 0.75 ]; %Given lenses of unique focal lengths
+lens_set = [0.025, 0.035, 0.05, .075, 0.10, .125, 0.150, 0.20, 0.25, 0.300, 0.50, 0.75, -.05, -0.10 ]; %Given lenses of unique focal lengths
+lens_permutations = pick(lens_set,3,'or'); %3 lens solutions
+
+%Pre-defined Constants
+lambda= .795e-6 ; %Wavelength of beam
+extra_space = 0.05; % to allow lens holder placement
+
+
+Ltot=0.63+0.055+0.09 ; %Length of optical system
+
+%% Fiber output parameters
+r0= 1.0E+100 ; %Initial radius of curvature
+w0= 5.65e-4 ; %Initial waist
+x0= 0 ; %Starting position of beam
+q0 = wr2q(w0, r0, lambda);
+
+%% this will be used to propagate beam in free space
+dummy_lens.abcd = abcd_lens(inf);
+dummy_lens.x = 10000;
+dummy_optic = {dummy_lens};
+
+%% Cavity parameters calculated by cavity_design_demo.m
+Lcav = 0.8025;
+zc = 0.5062; % with respect to front mirror
+% cavity waist
+wc=2.6732e-04;
+rc=Inf;
+% however this inside of the cavity so we need to propagate it to the front mirror
+dist = Lcav - zc;
+% calculate beam parameter at the front mirror
+% watch out that indeed there is only free space
+qf = gbeam_propagation ( dist, wr2q(wc, rc, lambda), 0, dummy_optic );
+
+%% some parameters for visualizer and solution search
+lens_width = .03; %Lens width
+show_lens_width = 1; %Set to 1 to enable display of lens width on solution propagation plot
+show_lens_position = 1; %Set to 1 to enable display of position of center of lens on solution propagation plot
+display_prop = [show_lens_width, show_lens_position];
+n_truncate = 3; %number of digits in truncated solution
+n_visualizations = 5; %number of best solutions to visualize
+n_hist = 1000; %number of sample points in histogram
+stability_max = 1; %max stability (y-axis) shown on energy vs. stability graph
+self_flag = 0; %Set to 1 to use Self's gaussian beam propagation, otherwise set to 0
+%End list
+
+%q0=wr2q(w0,r0,lambda); %Calculate intial q
+%qf=wr2q(wf,rf,lambda); %Calculate final q
+
+%Mode match
+[ possible_lens_placement, initial_lens_placement, possible_lens_set, possible_sample_energy] = mode_match( q0, qf, Ltot, lambda, lens_permutations, lens_width, self_flag );
+
+%Remove similar solutions
+[ possible_lens_placement_uniq, possible_lens_placement, possible_sample_energy, possible_lens_set, index ] = remove_similar_soln( possible_sample_energy, possible_lens_placement, possible_lens_set, n_truncate );
+
+
+%Visualize solutions
+pick_visualization( possible_sample_energy, possible_lens_placement_uniq, possible_lens_placement, possible_lens_set, index, n_visualizations, q0, qf, Ltot, lambda, lens_width, display_prop );
+
+%Plot energy vs. stability for each solution
+[stability] = stability_visualization( possible_lens_placement_uniq, q0, qf, Ltot, possible_lens_placement, possible_lens_set, lambda, n_visualizations, n_hist, index, self_flag );
+energy_vs_stability( possible_sample_energy, stability, index, stability_max)