Skip to main content

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

Run In Colab

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

twiss-0.2.6.tar.gz (622.8 kB view details)

Uploaded Source

Built Distribution

twiss-0.2.6-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

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

Hashes for twiss-0.2.6.tar.gz
Algorithm Hash digest
SHA256 8542b8bb44fa04fc24b5f6a06fb0ec7d65d83dfc5eac5dcbe957570c2380aacd
MD5 cae12a9caf465c941c707343530e4fb1
BLAKE2b-256 7feddef5c6380722460d644efe59cf7f9045d25c23706880796a0e710b16acf5

See more details on using hashes here.

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

Hashes for twiss-0.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 ccdb689b78498d09e962aea5009f0c85dd65f8f3065512dfcbb53f873588f302
MD5 42db2fce34c8cf13a638302946a979c8
BLAKE2b-256 950b8753110f70ad33adbe733e22b4bc0e5390ba3b0e5c38c40a5349b6f54ae1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page