Skip to content

Latest commit

 

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cold Atom Lab

An interactive virtual laboratory for exploring Bose–Einstein condensate (BEC) expansion and matter-wave interference.

Experiment dashboard with navigation and an experiment library

Run locally

Requires uv and Python 3.11 or newer. From this repository:

uv sync
uv run python -m coldatomlab.server

Open http://127.0.0.1:8765. Stop the server with Ctrl+C. Use --port 8766 if the default port is already occupied. The application runs locally without an account, API key, frontend build, or remote assets.

Try an experiment

The home page is an Experiments dashboard. Search six templates or switch between grid and list views. 3D expansion & interferometry opens its own experiment and preparation controls. Quantum coherence opens inside the dashboard at /#quantum, retaining its sidebar and current experiment state across dashboard navigation. The Cold Atom Lab logo returns to the experiment library from every entry page. The original Set up expansion / interference / sequence cards stage the experiment type in the 2D workspace; review the settings and click Prepare experiment to apply them. Open workspace resumes the 2D experiment without changing settings.

The left navigation opens the workspace, measurements, virtual camera and reference guides. On narrow screens, use the menu button. Navigation within the dashboard keeps the current solver session, pending settings and pinned run/image comparisons; the original workspaces do not pause on navigation, while leaving Vortex Lab pauses it after its current batch. Reloading still starts a new session and clears pinned records. Template diagrams are labeled illustrations, while workspace plots come from the numerical state. Direct links to /#workspace, /#measurements and /#camera-lab are supported.

Expansion: the initial screen prepares a trapped condensate. Click Release trap, then Run. Watch the density spread and the RMS widths grow. Pause holds the state after the current batch finishes; Step advances one numerical step. Reset returns to the prepared initial state and restores its settings.

Interference: select Two-cloud interference, set interaction strength to 0, and click Prepare experiment. These packets start released. Run to approximately t = 2, then pause. Prepare again with Opposite · π and compare the central density dip to the in-phase case. Try separation or interaction changes to explore different dynamics.

Dynamic splitting: select Split / hold / release and prepare. Run raises a Gaussian barrier to divide the original condensate, applies the selected bias during Hold, then releases the in-plane trap and stops after expansion. The timeline follows the actual simulation; pause or single-step at any stage. Positive bias raises the right well. Try a faster split or reverse the hold bias, then compare the result.

Turn on Potential contours to see the changing trap over the density/phase field. The sequence adds a central potential plot and population history. Measurements include left/right fractions, a mirror-weighted phase, and fringe spacing/profile contrast when the pattern is resolved. Energy changes while the external potential is being driven.

Compare runs: pause or finish a run and click Pin reference. Change settings and prepare the next run. The saved reference remains fixed while density profiles, widths, and measurements are compared on common axes. Compare settings exposes both configurations; the caption always shows each snapshot's time. Clear reference returns to a single run. References live in the current page and are cleared on reload.

Use Density / Phase to switch the observation view. Parameter edits remain pending until Prepare experiment is clicked; preparation replaces the current run. Grid, domain size, and time step are under Numerical resolution. Numerical warnings stop playback before the cloud significantly reaches the periodic boundary region.

The English interface provides density and masked phase maps, central density profiles, RMS width histories, norm, energy, and boundary population. It adapts to desktop and narrow mobile layouts.

Automatic interacting vortex experiment (v0.18)

Open Vortex Lab (Interacting vortex is selected by default), set Hold / ms and Time of flight / ms, then press Run experiment. It prepares the stationary interacting state, evolves the hold, releases all confinement at the rounded physical step, expands, calculates the applicable paper reference, and captures an absorption image. Stop retains a partial evolved run; stopping during preparation retains the previous verified state. Compare runs shows the latest three saved runs, core/cloud curves and JSON exports. Reload clears this in-page history.

N, scattering length and radial/axial trap frequencies determine g. Editing the advanced g field updates its equivalent scattering length. The interacting recipe uses the dimensionless paper coupling Na/a₀=20 in an isotropic trap; the selected Rb-87 scale is a parameter mapping, not an apparatus calibration. The independent reference implements the radial-plus-Gaussian approximation of Lundh, Pethick & Smith (1998). Solid lines are full 3D state measurements; dashed lines are the reduced-model calculation through ωt=2. Differences between those models are reported separately from grid/time/box errors.

Manual preparation and step-by-step controls remain in collapsed sections. Standalone state and camera exports still work there. Sequence exports can be checked with uv run python -m coldatomlab.replay path/to/coldatomlab-run-1.json. See stationary preparation, protocol, paper model and validation.

Manual vortex experiments

At /#vortex, choose a recipe, expand Manual preparation and Manual controls, then use Prepare experiment → Run. Inspect a prepared positive/negative vortex or a vortex-free cloud, then try Stir a cloud to create circulation through a moving repulsive beam. The full 3D WebGPU field drives the rotatable density surface, central density/phase, current arrows, contour winding, circulation and angular momentum.

Run/pause/step/reset, immutable pins and full-state JSON/CSV exports work in both the local dashboard and static ZIP. Leaving this experiment pauses it and retains its state. Hardware-accelerated Chrome/Edge on HTTPS or localhost is required; there is no CPU fallback inside this page. The independent Python reference can replay exports with uv run python -m coldatomlab.replay path/to/coldatomlab-vortex.json. The trap stays on until Release trap removes both trap and beam; interactions remain active. No damping, finite-temperature noise or real-time renormalization is applied. Winding-crossing counts depend on grid and masking. See vortex units, preparations, Madison reference and validation.

Vortex imaging: choose Release & photograph → Prepare experiment → Release trap → Run. At the endpoint, scroll to Can the camera see the core? → Capture image. Compare ideal optics with Try 3 μm resolution, capture again, and turn on photon/read noise. Pin an exposure to compare its image and radial profile. The recipe uses N=1000, g=0 and 6.366 ms of full 3D time of flight; it is an analytic teaching reference, not a reproduction of the Madison experiment. Side views remain available, but a core measurement requires an unstirred axial vortex viewed along z. A density dip is not proof of quantized circulation.

Images freeze the source field and never advance the solver. Export image JSON includes the full protocol, field, camera settings, raw frames and measurements; verify it with uv run python -m coldatomlab.replay path/to/coldatomlab-vortex-image.json. Export profile CSV saves the current model/camera radial profiles. Captures and pins persist across reset, re-preparation and dashboard navigation until reload. See TOF, optical assumptions, core estimator and validation. Earlier experiments retain their existing export-format versions for compatibility.

Phase precision benchmark (v0.15)

Open Quantum coherence → Precision benchmark ↓ → Run precision benchmark. Repeat full scans with fresh counts, comparing baseline, more atoms and more shots. Inspect phase-error histograms, circular bias/scatter, reported uncertainty and RMSE. The default compares N=20/80 and 64/256 shots across 100 scans.

Try Precise but biased to see why more measurements do not remove pulse bias, or No identifiable phase to inspect unresolved outcomes. Pause/cancel retains completed paired repetitions. Applied settings, model states, count histograms and estimates export to independently replayable JSON; CSV summarizes each trial. This works inside the dashboard and static ZIP without a GPU. See precision statistics, resource scaling and validation.

Phase readout (v0.14)

Open Quantum coherence → Phase readout ↓ → Run phase readout. Compare direct atom counting, ideal π/2 mixing and a finite readout pulse. Scan the reference phase and reconstruct a fringe from repeated ideal number measurements. The phase estimator uses counts alone; model truth and pulse bias are shown separately.

Start with Read a coherent phase, then Try a biased pulse or Try a fixed-number state. Inspect each setting's count histogram, uncertainty and fit residuals. An optional hold/ideal echo connects this readout to earlier experiments. Unresolved phase is marked unavailable; partial scans are not fitted. Pause/cancel, JSON/CSV, independent Python replay and the static ZIP are supported. See readout conventions, statistics, literature and validation.

Finite tunnelling pulses (v0.13)

Open Quantum coherence → Finite pulse comparison ↓ → Run finite-pulse comparison. Compare no pulse, instantaneous exchange, and short/nominal/long rectangular tunnelling pulses using the same preparations and total elapsed time. Bias and interactions remain active during the finite pulse.

Start with Watch population transfer to see atoms move between wells during the pulse. Pulse midpoint, the timeline and Zoom around the pulse expose the evolving population and phase. The nominal resonant pulse transfers all atoms in the ideal noninteracting, unbiased example; a ±20% duration error leaves about 9.55% in the starting well. Then Compare echo recovery shows the effect of static bias; Keep interactions during pulse retains the nonlinear dynamics. Edits and presets remain pending until Run.

The final table separates ensemble coherence from phase-invariant fidelity to the paired ideal-swap state. Preparation selection, pause/resume/cancel, completed-prefix JSON/CSV and independent Python replay are included. Other panels and pins are preserved; the static ZIP supports this experiment without a GPU. This is a prescribed two-mode J(t), not a simulated barrier ramp or electromagnetic pulse. See finite-pulse calibration, timing, papers and validation.

Spin echo comparison (v0.12)

Open Quantum coherence → Spin echo comparison ↓ → Run comparison. Both arms use identical seeded phase and static-bias offsets. One evolves freely; the other swaps the left/right modes halfway through. Use Play timeline, the slider and Before pulse / After pulse to inspect the actual coherence vectors and their ensemble averages.

The default fixed-bias example returns echo coherence to 1 at 500 ms while no-echo coherence is about 0.2925 for its 64 draws. Keep initial phase spread shows that pre-existing phase differences remain; Keep interactions shows that a π swap does not reverse interaction dynamics. Presets stage settings until Run comparison. Pause/cancel retains completed pairs, and JSON/CSV exports preserve applied settings. Existing experiments and pins stay intact.

This is an ideal instantaneous spatial L/R swap with J=0 during the holds, not a microwave or finite-pulse simulation. It runs locally and in the static ZIP without a GPU. See echo formulas, classic papers, independent replay and validation.

Preparation variation (v0.11)

Open Quantum coherence at http://127.0.0.1:8765/#quantum, scroll to What if each preparation is slightly different?, then click Run preparations. Each run draws independent uniform initial-phase and constant-bias offsets. Compare individual coherence with the magnitude of their averaged signal, inspect the count-probability mixture, and separate within-preparation quantum variance from variation of preparation means.

The default 64-preparation example keeps individual coherence at 1 while ensemble coherence falls to about 0.0153 after 500 ms. The count distribution stays unchanged. Set both variation ranges to zero to recover the ideal reference, or try Add interactions. Pause/resume/cancel retains finished preparations; JSON and CSV exports include applied settings. Manual states and pins are preserved. This also works in the static ZIP without a GPU.

These are declared teaching distributions, not calibrated experimental noise. See preparation model, analytic guide, paper provenance and verification. Independently verify exported states and statistics with uv run python -m coldatomlab.replay path/to/coldatomlab-preparations.json.

Two-mode quantum coherence (v0.10)

Open Quantum coherence from the dashboard/sidebar, or visit http://127.0.0.1:8765/#quantum. Old quantum.html links redirect to this dashboard route. This small fixed-N many-body model runs entirely in browser float64; it needs neither WebGPU nor a simulation API. The static WebGPU ZIP includes the same page, an experiment library and a link from its 3D lab. Returning to the library and reopening Quantum coherence preserves its state and pinned reference. Reloading the page starts a fresh experiment.

Start with Watch atoms tunnel → Prepare experiment → Run. Compare the mean left/right populations with the probability distribution of individual atom counts. Pause and Sample atom counts to draw repeated, seeded ideal measurements from independent copies of that state. This is intrinsic number uncertainty, without camera noise or continuous measurement collapse.

Next select Let coherence evolve → Prepare → Run → Pin this run, then Narrow the number spread → Prepare → Run. The pinned coherent state and the prescribed Gaussian number-narrow state share an isolated interacting hold. Their count distributions stay fixed while coherence collapses and revives at different rates. Exactly half in each well demonstrates a fixed-count state with zero first-order coherence. A narrow count distribution alone is not an entanglement certificate.

Controls include pause/step/reset, immutable comparison, ideal shot count/seed, history CSV and complete JSON export. Edits and recipe selections stay pending until Prepare. JSON contains both final complex occupation states, history, physical conventions and seeded counts; verify it with uv run python -m coldatomlab.replay path/to/coldatomlab-quantum.json. Python independently diagonalizes the Hamiltonian and checks the saved amplitudes and observables.

This is a separate two-mode approximation, with illustrative J/U/bias values in Hz and time in ms. Its spatial modes are fixed; it is not connected to the 3D GPE, absorption camera or an apparatus calibration. See two-mode formulas, primary papers, validation and limits.

Automated phase scans (v0.9)

In the 3D lab, open Measure a phase curve and click Run scan. Start with Known pair phase · calibration to compare input phase with image-only measurements. Then try Interacting split · hold bias or Interacting split · hold time. Every parameter point gets a fresh WebGPU evolution; repeated exposures measure detector-noise scatter on its frozen field. The manual experiment is preserved.

Choose points, exposure count and optics; pause/resume or cancel while keeping finished results. Plots show circular phase means, detector scatter, ideal-image fits and wrapped differences, including unavailable points and failure rates. Compare 64³ / 128³ adds separate field-width/norm and ideal-image phase sensitivity tables. Two grids do not establish convergence, and these detector repeats do not model condensate phase fluctuations.

Export CSV saves the summary; Export reproducible data saves compact JSON with the recipes, final projections, timing, raw camera frames and statistics. The existing replay command independently evolves the CPU fields and verifies projected observables, camera regeneration and statistics. Compact scans omit full complex wavefunctions; verification scope and all tolerances are documented in 3D scan methods, paper provenance and measured evidence. Both 3D entry pages and the static WebGPU package include scans; no site is published automatically.

3D virtual camera (v0.8)

Open the 3D lab, choose Camera-friendly pair · 2,000 atoms, then Load settings → Prepare 3D experiment → Run. In What would the camera see?, capture ideal optics, pin the image, then try FWHM 4 or 8 µm, photon/read noise, or a different viewing axis. Compare reconstructed density, ROI atoms and image-only fringe phase/period/contrast with the independently fitted ideal projection. Unresolved measurements remain unavailable.

Both CPU and WebGPU experiments support the camera; the standalone GPU package performs acquisition without simulation API calls. Capture preserves the numerical state. Export saves complete source and camera frames/settings, including pinned comparisons, for independent replay. The top Experiment / Compute engine / Reference example controls stay in place across 3D modes; dashboard cards distinguish 2D CPU and 3D WebGPU.

See the three-axis imaging model, classic papers, limits and verification. This remains an idealized virtual measurement, with explicit recoil, optical-depth and resolution warnings; it is not a calibrated apparatus or reproduction of a published image.

3D interferometer (v0.7)

Open the browser GPU lab, choose 3D split / hold / release, click Load settings, Prepare 3D experiment, then Run. The barrier splits one condensate, a hold bias controls its phase, and all axes release automatically. The timeline follows actual solver steps. Inspect the axial density, applied potential, left/right populations, mirror phase/coherence and resolved fringe estimates. Pause or finish, Pin this run, load 3D sequence · reversed bias, prepare and run again to compare profiles on shared physical axes. Export comparison saves both complete records for replay.

For the analytic control, compare Coherent pair · in phase and Coherent pair · π phase. These noninteracting packets start released. The experiment selector distinguishes single-cloud expansion, coherent pair and dynamic sequence; edits take effect on Prepare. Both GPU and CPU backends implement the same protocols. The GPU static bundle includes the interferometer without a simulation server.

These are teaching protocols inspired by Shin et al. (2004), with Rb-87 and a declared 3D mean-field potential. They do not reconstruct that sodium apparatus or its camera. Read formulas, measurement limits, provenance and verification. Unresolved fringes and weak-coherence phase estimates remain unavailable.

Laboratory units (v0.3)

Choose Laboratory · μm / ms / Hz, then open Atomic parameters & confinement. Select Rb-87 or a custom bosonic mass, set N, scattering length, reference frequency and axial confinement. Interaction g is derived automatically. Trap frequencies, barrier energies V/h, lengths and times now use laboratory units. The prepared state's axes and measurements update only after Prepare. The applicability panel reports conservative scale checks, including axial excitation and diluteness estimates; it does not certify a physical realization or finite-temperature validity.

For a guided comparison, open Guided experiments, choose Symmetric reference, click Load settings, Prepare, Run, then Pin reference. Repeat with Positive bias, Reverse bias, or Longer hold. The examples have actual physical scales and tested numerical behavior, but are teaching settings rather than reconstructions of a published apparatus.

See laboratory formulas, thresholds and the reference map, also available through Equations, thresholds & papers in the app. The foundation is Dalfovo et al.'s BEC review, Petrov et al.'s quasi-2D theory, Hadzibabic–Dalibard's 2D-gas review, and Shin et al.'s double-well interferometer. Each reference is linked to the assumption or behavior it informs.

Virtual absorption camera (v0.4)

Prepare a physical Rb-87 run and pause or finish it. In Virtual camera, use Ideal optics · noise off, then Capture image to compare model truth with density reconstructed from atom/reference/dark exposures. Pin image, change optical FWHM, object pixel size or noise, and capture the same cloud again. The ROI count, RMS widths and strip fringe estimates show the measurement bias directly. No source-state evolution occurs during capture.

For a resolution example, complete the Positive bias guided sequence, capture ideal optics, then try FWHM 2, 4 and 8 μm without noise. At 8 μm this example's fringes become unavailable under the stated estimator criteria. Enable photon noise, vary pulse duration or noise seed, and inspect raw-count profiles. Nonpositive counts are masked; low-signal or unresolved measurements are marked unavailable. A pinned exposure survives source changes with its original time/settings.

The camera uses an ideal resonant Rb-87 D2 transition, saturation-corrected absorption, Gaussian intensity blur and pixel integration. Recoil and motion during the pulse are not simulated. See the imaging model and classic papers, also linked from the camera panel, for exact conventions, estimator limits and the role of Ketterle–Durfee–Stamper-Kurn and Reinaudi et al.

Virtual camera comparison

Compare with a paper

Open Paper benchmark in the sidebar, or visit http://127.0.0.1:8765/#benchmark. This separate calculation compares Shin et al.'s Fig. 2 reported fringe spacing with free expansion of a noninteracting Na-23 Gaussian pair at the reported 13 µm separation and 30 ms expansion time. It does not change the current workspace or use its Rb-87 camera.

The numerical fit gives 40.0574 µm, compared with the published 41.5 µm (−3.476%, using the measurement as denominator). The page separates the fit, exact finite-width formula, rounded-input point-source formula and the paper's quoted prediction. This is a one-observable comparison, not experimental validation: the initial width is a surrogate, interactions and 3D preparation are omitted, and the paper supplies no raw numerical profile or period uncertainty. See reference audit and limitations and benchmark method.

Export benchmark downloads inputs, provenance, computed/fitted profiles, discrepancies, numerical refinement checks and width sensitivity. Recalculate the report and render a standalone scientific figure with:

uv run python -m coldatomlab.benchmark
uv run python -m scripts.benchmark_figure

Both write to ignored artifacts/. The report has its own coldatomlab-shin-benchmark-v1 schema; reproduce it with the benchmark command rather than the experiment replay command.

Interacting 3D expansion (v0.5)

v0.6 adds WebGPU acceleration. The 3D page now defaults to WebGPU · browser GPU · float32; select CPU reference · float64 to use the original local solver. On the measured RTX 5070 Ti, fresh interacting 64³ preparation fell from about 28 s to 0.4–0.5 s, with matching-case width differences below 0.0015%. Precision and stopping tolerances differ; see GPU performance, accuracy and limits. Hardware Chrome and Edge were tested; an embedded browser may not expose WebGPU.

For a browser-only, shareable version, open http://127.0.0.1:8765/gpu.html. All 3D preparation/evolution runs in the browser without simulation API calls. uv run python -m scripts.package_webgpu creates artifacts/coldatomlab-webgpu.zip for an ordinary static HTTPS host. Its index page is an experiment library linking to 04 (3D) and 05 (quantum); experiments 01–03 require the full Python application. No site is published automatically. WebGPU supports 32³/64³/128³; loading its TF preset explicitly uses 128³ instead of the CPU preset's 96³.

Open 3D lab in the sidebar, or visit http://127.0.0.1:8765/#lab3d. Choose a reference example, Load settings, then Prepare 3D experiment. Preparation can take tens of seconds or several minutes on the largest grids. Release all axes, then Run. Pause, Step, and Reset act on this independent 3D session; navigation preserves both it and the original 2D workspace.

Drag the numerical density surface or use arrow keys to rotate it. Zoom and isodensity change only the view. Switch between Central slices (atoms/µm³) and Column density (atoms/µm²); all three planes use the full solver grid, while the surface states its rendering-grid coarsening. These panels show ideal projections; the separate 3D camera below them models optical acquisition.

The Noninteracting analytic check compares widths with the exact Gaussian result. Interacting cloud demonstrates finite-interaction expansion. Thomas–Fermi expansion uses 150,000 Rb-87 atoms on a 96³ grid and compares all three widths against Castin–Dum scaling, including shape inversion. The absolute TF prediction and scaling anchored to numerical initial widths are shown separately. Finite kinetic energy prevents exact TF agreement; this is a theory benchmark, not a reproduction of measured experimental data.

The panels report norm, energy per atom, aspect ratios, boundary population, preparation residual and measured performance. Advanced controls support time/preparation-step, grid and domain refinement up to 128³. Export 3D run saves the full complex field; the same replay command below verifies it. The four-session 3D server limit bounds retained memory; re-preparing an existing page reuses its session.

See 3D conventions and measured checks and the Castin–Dum / Dalfovo source audit. Reproduce the extended numerical comparisons with uv run python -m scripts.validate_3d (about 15–20 minutes for all refinement cases on the measured machine; writes ignored artifacts/3d-validation.json). Then uv run python -m scripts.three_figure renders the widths, aspect ratios and numerical checks as a standalone figure.

Save and reproduce

Pause and click Export run to download a JSON record containing parameters, preparation metadata, the release protocol, diagnostics, and the final complex wavefunction.

uv run python -m coldatomlab.replay "path/to/coldatomlab-single-100.json"

Replay computes the experiment again. Full float64 GPE field exports use a maximum wavefunction difference of 1e-8; GPU, camera, compact scan and two-mode exports use their separately documented verification scopes and tolerances.

Export image saves the source simulation, full camera settings, seed, raw frames and measurements. With an image pinned it exports both acquisitions. The same replay command verifies source evolution and camera regeneration, including noise. The 3D browser camera uses independent numerical comparison with documented tolerances.

With a reference pinned, Export comparison saves both complete experiments. The same replay command verifies both records. Sequence timing and bias are included; no manual release action needs to be recreated.

Validate

The test suite also requires Node.js on PATH for Python/browser-JavaScript parity and scan lifecycle checks. The application itself does not require Node or a frontend build.

uv run pytest -q
uv run ruff check .
uv run ruff format --check .

With the server running in another terminal:

uv run playwright install chromium
uv run python -X utf8 -m scripts.browser_check
uv run python -X utf8 -m scripts.sequence_browser_check
uv run python -X utf8 -m scripts.physical_browser_check
uv run python -X utf8 -m scripts.camera_browser_check
uv run python -X utf8 -m scripts.dashboard_browser_check
uv run python -X utf8 -m scripts.benchmark_browser_check
uv run python -X utf8 -m scripts.three_browser_check
uv run python -X utf8 -m scripts.three_tf_browser_check
uv run python -X utf8 -m scripts.webgpu_check
uv run python -X utf8 -m scripts.scan3d_browser_check --url http://127.0.0.1:8765/gpu.html --refine --verify

Browser checks exercise the actual controls, download and replay a run, compare interference phases, verify invalid-setting recovery and boundary stopping, and capture desktop/mobile screenshots. Reports and generated experiment files go to ignored artifacts/. See validation evidence for tested cases and limits.

The WebGPU check requires installed Chrome with a hardware adapter. GPU exports use a separate schema; the replay command performs a toleranced CPU reference comparison rather than claiming exact float32 GPU replay. The GPU norm-drift guard is 0.1%, with no real-time renormalization.

The two-mode browser check requires installed Chrome and manages temporary loopback servers itself, closing them on exit. It tests both the local app and the extracted static bundle, including downloads with independent replay:

uv run python -m scripts.package_webgpu
uv run python -m scripts.twomode_browser_check
uv run python -m scripts.navigation_browser_check

Model scope

The original workspace uses an effective two-dimensional Gross–Pitaevskii model of an already prepared, dilute, weakly interacting condensate. In-plane release retains tight transverse confinement. The two-cloud initial state is an ideal coherent Gaussian pair. Dimensionless mode leaves physical scales unspecified. Laboratory mode derives coupling from physical parameters and reports conservative frozen-axial applicability checks. The separate v0.5 single-cloud experiment evolves a genuine 3D field with complete trap release and its own coupling convention.

The v0.7 extension supplies interacting 3D splitting/interference; v0.8/v0.9 add three-axis synthetic imaging and parameter scans. Laser cooling, condensation formation, a thermal component, and full optical/atomic imaging dynamics remain outside this release. The density/phase views are model diagnostics; both camera panels produce explicitly simplified synthetic images. Numerical accuracy depends on the chosen grid, step, and domain; passing reference cases does not validate every parameter combination.

The separate v0.10 two-mode page includes finite-N occupation superpositions and ideal number measurements beyond mean-field GPE. It retains only two fixed orbitals, with no temperature, loss or spatial dynamics. Agreement with analytic and independent numerical references verifies the chosen Hamiltonian, not a full experiment.

See the model and conventions, implementation plan, and agent guidance.

References

About

Interactive cold-atom experiments: condensate expansion and interference.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages