Skip to content

Welcome to GOAD

Geometric Optics with Aperture Diffraction (GOAD) is a code for simulating light scattering from large particles. It approximates the near-field scattering for an incident plane wave for large particles, and then uses aperture diffraction theory to map the near-field to the far-field. It computes the Mueller matrix and integrated optical scattering parameters. The core is written in Rust, with bindings to Python.

Quickstart

To get started with an orientation averaging problem, see the Convergence class, which is the recommended way to run GOAD. Then head over to Settings for more config options, and then to Results for more information on the output.

When is GOAD applicable?

You can usually use GOAD when the following conditions are met:

  • The overall particle size d is much larger than the wavelength λ.
  • The field of interest is in the far-field zone, ie. at a distance r where r >> λ and r >> d.

Example

from goad import MultiProblem, Settings

# Setup and run a multi-orientation problem with default settings
mp = MultiProblem(Settings(geom_path="path/to/geometry.obj"))
mp.solve()
mp.save("my_results")  # Save results to disk for later analysis
fn main() {
    use goad::multiproblem::MultiProblem;
    use goad::settings;

    // Setup and run a multi-orientation problem with default settings
    let mut multiproblem = MultiProblem::new(None, settings::load_config().ok()).unwrap();
    multiproblem.solve();
}

Contents

User Guide