TraTT — transient formation of acoustic Bragg satellites
A travelling acoustic wave enters a perfect crystal. Its steady-state X-ray satellites are textbook material. This repository resolves how the satellites form while the wavefront crosses the crystal, using two-beam Takagi–Taupin theory, and records every step in a lab notebook.
KPS 2026 Fall Meeting, poster P2.17 (Jeju, 22 October 2026). Isaac Yong, Ouyoung Kwon, Hyunjung Kim — Center for Ultrafast Phase Transformation, Sogang University.
Results
| result | notebook | |
|---|---|---|
| Clock | Satellite n diffracts from the filled depth vst with coupling α|Jn(S)|. Laue reads sin²(παnt̃) and Bragg reads tanh²(παnt̃), with no fit parameter. Each order has its own clock, τn = ΛP/(vs|Jn(S)|). | Entries 1, 9, 24 |
| Memory | A satellite reads the last transit time of the drive, Θn = ∫Jn(S A(t−ζ)) dζ. An order that is forbidden at the final amplitude can be the brightest line during formation. | Entries 28, 30 |
| Validity | The independent-satellite picture is accurate to 5 % for R = Λac/ΛP ≲ 0.3. Past that, the channels couple through sidebands of the forward beam. | Entries 52–54 |
| Outlook | The Fourier weight of R(t) is the strain spectrum times a crystal transfer function H(ω), in closed form at first order. It holds inside the Darwin width, where the plane-wave perturbation of Sondhauss & Wark (2003) is off by ×3–8. | Entries 59, 64 |
Install
pip install tratt
The package is the solver (src/tratt). Notebooks, figure scripts and the poster build need a
clone of this repository.
Setup
uv sync --extra dev
uv run pytest -q # 54 tests: analytic limits, Floquet cross-check, formation law
uv run python explore/make_poster_figs.py # poster figures -> figures/poster/
uv run python poster/build.py # poster/poster.md -> poster/out/poster.pdf
Layout
src/tratt/ solver package
core.py Laue IVP and Bragg Riccati (RK4, vectorised over eta and time; Bragg absorption kappa)
drive.py travelling acoustic drive phi(zeta; t): front, rise, amplitude profile
floquet.py exact Floquet solver for a uniformly filled crystal (independent cross-check)
observe.py channel windows, formation time, peak width
cube.py rocking curve over time (I(eta, t) cubes)
sweep.py parameter grids
tests/ analytic ground truth as asserts
notes/ lab_notebook.md: every result, with its script and its caveats (Entries 0-64)
explore/nb/ one script per notebook entry (eNN_*.py), with small cached results
explore/ figure scripts; make_poster_figs.py draws the poster figures
poster/ poster.md (the only source of poster text), build.py (layout + checks), fonts
figures/ figures referenced by the notebook and the poster
DESIGN.md physics conventions, analytic limits, assumptions
Every item on the poster carries a tag pointing to a notebook entry. poster/build.py refuses to
pass if a tag points to an entry that does not exist.
Notebooks
explore/*.ipynb are tracked with nbstripout as a git filter (.gitattributes). Outputs are
removed at commit time and stay in your working copy. If you move the repository or rebuild the
venv, re-register the filter:
uv run nbstripout --install --attributes .gitattributes
Acknowledgement
This work was supported by the National Research Foundation of Korea, grant RS-2021-NR059920.
Metadata
Release files for tratt 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tratt-0.1.0.tar.gz | 29.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tratt-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 50.1 kB
Release files / tratt-0.1.0.tar.gz
| Download URL | tratt-0.1.0.tar.gz |
|---|---|
| Size | 29.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1c4899493c7c91732db1fa9809fb598b26d4c7fda439d74b821214d138b64477
|
|
BLAKE2b-256 checksum How to use checksums |
06d8077ee9c7a8a8883b586dac36c82a977150d219abb9baa23317db9c7dc0e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency logRelease files / tratt-0.1.0-py3-none-any.whl
| Download URL | tratt-0.1.0-py3-none-any.whl |
|---|---|
| Size | 20.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2eed37c4ab781a463250098920cba509f4218e1ebd5628e3040bb2ee57e13f25
|
|
BLAKE2b-256 checksum How to use checksums |
dc67741f1ba43ca52b0274439fbd8a3b050172e47ccbe1f4dca6ffa36b25abf6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency log