Skip to main content

Attosecond Ray Tracing core calculation package

Project description

ART - Attosecond Ray Tracing - is a free python code written by Stefan Haessler, André Kalouguine, and Anthony Guillaume of Laboratoire d'Optique Appliquée (LOA), CNRS, Institut Polytechnique de Paris, France and Charles Bourassin-Bouchet Laboratoire Charles Fabry (LCF)), Institut d’Optique, CNRS, Université Paris-Saclay, France.

It does ray tracing calculations with a specific focus on ultrashort (femto- and attosecond) laser pulses. Therefore the code currently focuses on reflective optics, freely arrangeable including grazing incidence configurations.

Ten years ago, Charles made geometric optics calculations that demonstrated how sensitive attosecond pulses are to spatio-temporal distortions and how easily such distortions are picked up in the reflective grazing-incidence optical setups required to transport and refocus them [C. Bourassin-Bouchet et al. “How to focus an attosecond pulse”. Opt. Express 21, 2506 (2013); C. Bourassin-Bouchet et al. “Spatiotemporal distortions of attosecond pulses”. JOSA A 27, 1395 (2010)]. ART now makes these calculations avaible to the ultrafast optics community in a free and (hopefully) easily accessible python code.

A publication of simulations of the beam transport and focusing of high-numerical-aperture XUV attosecond pulses is in preparation and will become the reference that we ask you to cite if you have used this code in your work.

The detailed documentaion can be found here.

A quickstart documentation will very soon (promised ;-) be added in the following.

Dependencies

The code requires Python 3.6 or newer and depends on the libraries NumPy, Numpy-Quaternion, matplotlib, and for 3D-rendering of optical configurations and rays, PyVista.

Using pip

If installing using pip, we recommend installing the dependencies in a virtual environment, for instance using

python -m venv <new_virtual_environment_folder>

This lets you install and use the software without interfering with the system installation of Python.

As for the installation of the dependencies:

pip install numpy numpy-quaternion matplotlib pyvista scipy colorcet

Using Anaconda

Just as with pip, we recommend using a separate virtual environment to install and use ART. The dependencies are all available in the conda-forge repository.

Installation

You can just download the code as a zip file from here. Or if you are using the git version control software, ou can clone the repository like so:

git clone https://github.com/mightymightys/AttosecondRaytracing.git

You are welcome to fork the code and contribute to its further development

Running ART

To run ART, you run the appropriately named ARTmain.py in the console, supplying a configuration-file as an argument, like so:

python ARTmain.py CONFIG_xxxx.py

The configuration file is itself written in python, and the user is responsible for enuring that it doesn’t contain any harmful code. A template for such a configuration file is given by CONFIG_template.py and a number of example configurations files are provided to be tried, explored and adapted.

Alternatively, the user may use the configuration file as a launch script, and run the main program as indicated at the end of the template and example configuration files. This is practicle, e.g., when writing the configuration file in an IDE like Spyder, which features an IPython-console and let the user run the configuration directly.

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

attosecondraytracing_core-0.9.tar.gz (47.8 kB view hashes)

Uploaded Source

Built Distribution

AttosecondRayTracing_core-0.9-py3-none-any.whl (52.0 kB view hashes)

Uploaded Python 3

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