diff options
Diffstat (limited to 'gbeam_propagation_froward_only.m')
-rw-r--r-- | gbeam_propagation_froward_only.m | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gbeam_propagation_froward_only.m b/gbeam_propagation_froward_only.m index afc1316..8a14cf5 100644 --- a/gbeam_propagation_froward_only.m +++ b/gbeam_propagation_froward_only.m @@ -1,4 +1,4 @@ -function q = gbeam_propagation_froward_only(x_pos, q_in, x_in, optics_elements) +function [q, q_lens] = gbeam_propagation_froward_only(x_pos, q_in, x_in, optics_elements) % calculate the 'q' parameter of the Gaussian beam propagating through optical % 'optics_elements' only in the positive direction along 'x' axis at points 'x_pos' % takes the gaussian beam with initial q_in parameter at x_in @@ -8,6 +8,10 @@ function q = gbeam_propagation_froward_only(x_pos, q_in, x_in, optics_elements) % % all x_pos must be to the right of x_in % x_pos must be monotonic! + + %Initialize q_lens (q at position of lens) + q_lens = zeros(1,size(optics_elements,2)); + if (any(x_pos < x_in)) error('all beam positions must be to the right of the x_in'); end @@ -35,6 +39,7 @@ function q = gbeam_propagation_froward_only(x_pos, q_in, x_in, optics_elements) end %propagate beam up to the lens q_at_lens = q_after_free_space(q_last_calc,elx - x_last_calc); + q_lens(k) = q_at_lens; %Applying lens transformation q_last_calc=q_after_abcd(q_at_lens,el.abcd); x_last_calc = elx; @@ -45,8 +50,7 @@ function q = gbeam_propagation_froward_only(x_pos, q_in, x_in, optics_elements) index = (x_last_calc <= x_pos); x=x_pos(index); q(index)= q_after_free_space(q_last_calc,x-x_last_calc); - - + end |