Gaussian Beam Calculator

copyright 2002

David Thomson
Original Code Consulting

    This program is intended for calculating the propagation of Gaussian beams (laser beams) through thin lenses.  It is based on a simple approach developed by Self in S.A. Self, "Focusing of Spherical Gaussian Beams", Appl. Opt. 22, no.5 (March 1983); 658.  This approach is also described in the Melles Griot optics catalog (
        To use the program, begin by entering the wavelength, initial waist size (radius), initial position of the waist, and M2. (M2 = 1 for a perfect Gaussian beam, >1 for real beams.)  Note that in this program, the world begins at z = 0 and extends as far as the last valid lens or the last waist image.  Then begin entering positions and focal lengths of lenses.  Focal lengths can be positive or negative.  When the program recognizes a valid lens (non-zero focal length, position greater than 0 and greater than the position of the previous lens), then it will calculate the beam parameters and display them.  It will also display the lens and the propagated beam in the graph near the bottom of the screen.  If there is a list of lenses, the calculations and display will only continue as long as the each lens meets the above criteria.  Additional entries past that point will not be calculated or displayed.
    To the left of the lens table are two rows of buttons.  Use these buttons to edit the table by row: either to delete the adjacent row or to insert a new row before the adjacent row.  Up to eleven rows of lenses can be displayed at once.  However, there is no hard limit to the number of lenses that can be entered.  Whenever 10 or more lenses are displayed, a scroll bar appears at the right of the table that allows one to scroll the table display up and down to view the additional lenses.
    A description can be entered as a note of what optical layout is being modeled.  This description is saved when the data is saved and will be displayed if a previously saved file is read into the program.
    The calculated parameters are:
Object Distance Distance of the lens from the previous lens
Object Position Absolute position of the lens
Image Distance Distance of the waist image from the lens
Image Position Absolute position of the waist image
Magnification Ratio of the image waist to the object waist
Rayleigh Range Measure of the divergence of the beam
Waist Beam radius

    Once the beam is displayed on the graph, the graph axis and cursors can be manipulated to further study the beam.  The X and Y scales are automatically adjusted, but can be manually changed to zoom in on certain features.  The magnifying glass tool can also be used to zoom the graph, and the hand tool can be used to pan the graph.  Two cursors are available which can be used to display the beam radius at any point.  Each cursor can be dragged with the mouse.  Also, the cursor most recently dragged can be moved one point at a time with the diamond-shaped directional pallette.  Cursor X and Y positions are displayed after the cursor names "Beam Size 1" and "Beam Size 2" in the cursor pallette.
    Commands available in the menus are:
     New      Clear all lens data and reset initial parameters to defaults.
     Open      Read a previously saved file and load initial parameters and lenses.  Note that if there are currently lenses in the table, the program will provide the option of whether to delete them or to append the new lenses after the current ones.
     Save      Save the initial parameters and lenses to a file.
     Export      Save the initial parameters, lenses, and calculated results to a tab-delimited file for use in other programs.
     Exit      Quit the program
     Wavelength      Select the units of the wavelength as  nanometers or Angstroms from this sub-menu.
     Positions      Select millimeters, centimeters, or inches from this sub-menu.  These units are used for lens positions, focal lengths, the calculated parameters positions, and the x axis of the graph.
     Help      Display this file.
     About      Display program information.

    The files saved and read with the Open and Save commands are text files that can be viewed and edited with any simple text editor.  Note that the calculated results are not saved in these files, but are recalculated after the file is loaded.  Also, all lens data are saved, even if there are invalid lenses in the table (such as ones with a focal length of 0).
    The Export command saves not only the initial parameters and the lens data, but also the calculated results.  Note, however, that only valid lenses are written to this file, and that there is no mechanism for reading this file format back into the program.
    Version 1.2 fixed a minor bug in the Units menu.
    Note that both an executable (compiled) version and a LabVIEW source code version of this program are available.  The executable version requires version 6.0 of the LabVIEW Run-Time-Engine.  This is available as a free download from National Instruments.  (Under Download Software, look for "All Software Versions", the LabVIEW, then your platform, then Run-Time-Engine, and finally 6.0.2.)  However, the current version (7.0) of the Run-Time-Engine will not work with this program.  You must download version 6.0.2.

Please direct any questions, comments, or suggestions to: