Differentiable Wolski twiss matrices computation for arbitrary dimension stable symplectic matrices
Project description
twiss, 2022-2024
Coupled twiss parameters (Wolski twiss matrices) computation for arbitrary even dimension.
Install & build
$ pip install git+https://github.com/i-a-morozov/twiss.git@main
or
$ pip install twiss -U
Documentation
https://i-a-morozov.github.io/twiss/
Twiss
Compute tunes, normalization matrix and twiss matrices.
>>> from math import pi
>>> import torch
>>> from twiss.matrix import rotation
>>> from twiss.wolski import twiss
>>> m = rotation(2*pi*torch.tensor(0.88, dtype=torch.float64))
>>> t, n, w = twiss(m)
>>> t
tensor([0.8800], dtype=torch.float64)
>>> n
tensor([[1.0000, 0.0000],
[0.0000, 1.0000]], dtype=torch.float64)
>>> w
tensor([[[1.0000, 0.0000],
[0.0000, 1.0000]]], dtype=torch.float64)
Input matrices can have arbitrary even dimension.
>>> from math import pi
>>> import torch
>>> from twiss.matrix import rotation
>>> from twiss.wolski import twiss
>>> m = rotation(*(2*pi*torch.linspace(0.1, 0.9, 9, dtype=torch.float64)))
>>> t, n, w = twiss(m)
>>> t
tensor([0.1000, 0.2000, 0.3000, 0.4000, 0.5000, 0.6000, 0.7000, 0.8000, 0.9000],
dtype=torch.float64)
Can be mapped over a batch of input matrices.
>>> from math import pi
>>> import torch
>>> from twiss.matrix import rotation
>>> from twiss.wolski import twiss
>>> m = torch.func.vmap(rotation)(2*pi*torch.linspace(0.1, 0.9, 9, dtype=torch.float64))
>>> t, n, w = torch.func.vmap(twiss)(m)
>>> t
tensor([[0.1000],
[0.2000],
[0.3000],
[0.4000],
[0.5000],
[0.6000],
[0.7000],
[0.8000],
[0.9000]], dtype=torch.float64)
Can be used to compute derivatives of observables.
>>> from math import pi
>>> import torch
>>> from twiss.matrix import rotation
>>> from twiss.wolski import twiss
>>> def fn(k):
... m = rotation(2*pi*torch.tensor(0.88, dtype=torch.float64))
... i = torch.ones_like(k)
... o = torch.zeros_like(k)
... m = m @ torch.stack([i, k, o, i]).reshape(m.shape)
... t, *_ = twiss(m)
... return t
>>> k = torch.tensor(0.0, dtype=torch.float64)
>>> fn(k)
tensor([0.8800], dtype=torch.float64)
>>> torch.func.jacfwd(fn)(k)
tensor([0.0796], dtype=torch.float64)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file twiss-0.2.6.tar.gz.
File metadata
- Download URL: twiss-0.2.6.tar.gz
- Upload date:
- Size: 622.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8542b8bb44fa04fc24b5f6a06fb0ec7d65d83dfc5eac5dcbe957570c2380aacd
|
|
| MD5 |
cae12a9caf465c941c707343530e4fb1
|
|
| BLAKE2b-256 |
7feddef5c6380722460d644efe59cf7f9045d25c23706880796a0e710b16acf5
|
File details
Details for the file twiss-0.2.6-py3-none-any.whl.
File metadata
- Download URL: twiss-0.2.6-py3-none-any.whl
- Upload date:
- Size: 13.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ccdb689b78498d09e962aea5009f0c85dd65f8f3065512dfcbb53f873588f302
|
|
| MD5 |
42db2fce34c8cf13a638302946a979c8
|
|
| BLAKE2b-256 |
950b8753110f70ad33adbe733e22b4bc0e5390ba3b0e5c38c40a5349b6f54ae1
|