Skip to content

Simulate the polarization of a laser beam

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

zmitchell/polarization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Polarization

Documentation Crates.io Licenses

Have you ever wondered what would happen if you passed a linearly polarized beam through a quarter-wave plate at 46 degrees rather than 45 degrees relative to the fast axis of a quarter-wave plate? Who am I kidding, of course you have! This library lets you pass a beam through several optical elements and see what comes out the other side.

The canonical methods for simulating the polarization of a beam are Jones calculus and Mueller calculus, but only Jones calculus is implemented at this point.

Currently there are several standard optical elements implemented, with support for reflections from surfaces (dielectric and metallic) coming in the near future.

  • Linear polarizer
  • Polarization rotator
  • Quarter-wave plate
  • Half-wave plate
  • Retarder

There is support for linearly polarized, circularly polarized, and arbitrarily (elliptically) polarized beams.

For more details, check out the documentation.

Example

let beam = Beam::linear(Angle::Degrees(0.0));
let pol = OpticalElement::Polarizer(Polarizer::new(Angle::Degrees(45.0)));
let system = OpticalSystem::new()
    .with_beam(beam)
    .with_element(pol);
let final_beam: Result<Beam> = system.propagate();
let final_intensity: Result<f64> = final_beam.intensity();

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

Simulate the polarization of a laser beam

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages