Skip to content
Patr1ck2005Public

About

Interactive electromagnetic-wave exploration in the browser, with documented Falstad upstream attribution.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Latest commit

 

History

117 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EM-Flow · ElectromagneticFlow

An interactive, browser-based wave sandbox built on Paul Falstad's Ripple/RippleGL.

中文 · Open the public app · Screenshot gallery · Build notes

Two-source interference in the deployed EM-Flow application, with its real controls visible

Real screenshot of the public application: Two-Source, Waves = Sound, scalar TM mode. The palette shows signed wave amplitude, rather than energy density. Captured 2026-10-17; provenance and settings.

Explore waves directly

Choose a preset, watch it evolve, and change sources or media to test an intuition.

Explore What to look for
Two sources Alternating constructive and destructive interference
Single slit The transmitted wave spreading beyond the aperture
Refraction A change in wavefront direction and wavelength across a medium boundary
Editable scenes Sources, obstacles and media controlled through the browser interface

The source contains a WebGL scalar-wave update and a separate TE field-update shader. The UI exposes scalar TM/TE choices and a Rigorous FDTD -TE choice. These are implementation modes, not a claim of general 3D Maxwell validation. Spatial resolution, boundaries, damping and the selected equation affect the result.

Single-Slit preset in the deployed applicationRefraction preset with two media in the deployed application
Single-Slit · visible-light setting · scalar TM mode.Refraction · visible-light setting · scalar TM mode.

All three images are unmodified browser captures of the deployed app. They are qualitative demonstrations, with UI slider values recorded in the manifest. They are not calibrated measurements, convergence studies or screenshots of a freshly built local checkout.

Run the application

The verified entry is the public browser app. It requires a WebGL-capable browser. Select a preset from the top-right list; Stopped pauses the evolution, and Clear Waves clears the current field.

The source checkout is a legacy Java + GWT + WebGL project. It includes war/Ripple.html and shader/JavaScript assets, but does not include the generated war/ripple/ripple.nocache.js entry or a pinned command-line build setup. Serving war/ before GWT compilation is insufficient.

Build notes preserve the original Eclipse/GWT workflow, expected output structure, conditional static-serving command and Electron packaging route. A one-command source build has not been verified.

How a scene becomes a frame

flowchart LR
    A["Preset or edited sources and media"] --> B["Java / GWT scene controls"]
    B --> C["WebGL textures: fields and material parameters"]
    C --> D["Selected wave / TE update shader"]
    D --> E["Signed-amplitude display shader"]
    E --> F["Interactive browser canvas"]
    F --> B
Loading

Source entry points:

This repository is Patr1ck2005/EM-Flow, default branch master. Related ripplegl or ElectromagneticFlow forks can have different code and build layouts. The deployed page is not pinned to the source commit used for these notes; its preset list differs from the checked-in list.

Versions and verification

Item Evidence
Source snapshot inspected 29c3279efb1e77ace959126b9f6e797b04b2f07f
In-source Ripple version string 1.4
GWT module DTD 2.7.0 reference; this does not pin the installed SDK
Bundled matrix library glMatrix 0.9.5
Electron wrapper package 0.0.1; manifest declares Electron ≥9.3.1 (legacy route)
Verified here Public app loads; Two-Source, Single-Slit and Refraction presets render
Remaining build gap No generated GWT entry, pinned SDK or verified automated source build

No benchmark or quantitative solver-accuracy claim is made by these screenshots. Gallery and evidence.

Origin and license

This project builds on Paul Falstad's Ripple/RippleGL, with acknowledgements to the original project and the Electron-wrapper work credited to Immortalin in the earlier README.

The inherited Java source headers state GNU GPL version 2 or later (GPL-2.0-or-later), including the original copyright and warranty notice. Preserve those notices and the applicable GPL terms when redistributing or modifying the program. This documentation does not relicense the inherited code.

About

Interactive electromagnetic-wave exploration in the browser, with documented Falstad upstream attribution.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages