Welcome to BeamBench

Screenshot of the BeamBench Optical Simulator

Original Author: Hussein-Tofaili | Source Code: GitHub Repository

About the Simulator

BeamBench is an interactive, browser-based 3D sandbox tool for designing and simulating optical systems. It provides real-time visualization of Gaussian beam propagation and polarization effects, making it ideal for students, educators, and researchers to prototype and understand optical setups.

Core Principles

The simulation is built on two fundamental methods used in optical physics: the ABCD matrix formalism for Gaussian beams and Jones calculus for polarization.

ABCD Matrix Formalism: This powerful technique describes the propagation of a Gaussian beam through an optical system. The state of the beam at any point is captured by a single complex number, the complex beam parameter $q$. This parameter encodes both the beam's spot size, $w(z)$, and the radius of curvature of its wavefront, $R(z)$. Each optical element (like a lens, mirror, or even free space) is represented by a 2x2 "ABCD" matrix. By multiplying these matrices together, we can accurately trace the evolution of the beam's properties throughout the entire system.

Jones Calculus: To model polarization, BeamBench uses Jones calculus. The polarization state of a light beam is represented by a 2-element column vector, the Jones vector, which describes the amplitude and phase of the electric field's horizontal and vertical components. Optical elements that affect polarization, such as polarizers and waveplates, are represented by 2x2 Jones matrices. Applying an element's matrix to an incoming beam's vector precisely calculates the output polarization state.

By combining these methods, BeamBench offers a physically accurate and quantitative simulation of complex optical phenomena directly in your browser.

Key Features Overview

BeamBench runs entirely in your browser using WebGL and Three.js, with no installation required. Launch the simulator using the button above.

This web application is still in its beta phase, and we welcome your help in making it better. If you encounter any issues or have suggestions for improvement, please report them on our GitHub Issues page.

Comments & Discussion

Discussions for BeamBench can be found on its GitHub repository, or you can leave comments here.