An open API service indexing awesome lists of open source software.

https://github.com/jagot/42s-atomic

HP42s routines for Atomic Physics and Ultrafast Optics
https://github.com/jagot/42s-atomic

atomic-physics hp42s ultrafast-optics

Last synced: about 1 month ago
JSON representation

HP42s routines for Atomic Physics and Ultrafast Optics

Awesome Lists containing this project

README

          

#+TITLE: 42s-atomic
#+AUTHOR: Stefanos Carlström
#+EMAIL: stefanos.carlstrom@gmail.com

A small library of routines for calculating interesting quantities
useful in Atomic Physics and Ultrafast Optics.

* Build instructions
The HP42s =raw= files are generated by typing
#+BEGIN_SRC sh
rake
#+END_SRC
in a command line near you. Requires [[http://ruby-lang.org][Ruby]] and [[https://www.perl.org][Perl]] to work. The
=raw= files are created in the subfolder =build/raw/=. For
convenience, they are all concatenated together into a bundled =raw=
file called =build/42s-atomic.raw=, which, when loaded, imports all
the routines in one fell swoop.

To translate from text format to =raw= files, the [[file:./txt2raw.pl][txt2raw.pl]] by
Vini Matangrano is used.

* Routines
- =LELEV= :: Load [[file:./data/eVs.txt][first ionization energies]] (in eV) into a matrix
named =ELEV=. (Data source: [[https://www.nist.gov/pml/atomic-spectra-database][NIST]])
- =LCONST= :: Load constants useful for atomic units, etc. See
[[file:./data/constants.yaml][constants.yaml]] for which constants are defined.
- =OMEGAU= :: Given a wavelength λ in SI units, calculate the
angular frequency ω = 2πc₀/λ, storing the result in
atomic units in the variable =OMEGAU= and in
electronvolts in =OMEGAEV=.
- =ATOMIP= :: Given an atomic number Z, store the ionization
potential Iₚ (in atomic units) in the variable
=ATOMIP=.
- =UP= :: Calculate the [[https://en.wikipedia.org/wiki/Ponderomotive_energy][ponderomotive potential]] Uₚ = I/4ω² from the
field intensity I and the angular frequency ω (all in
atomic units; uses the subroutine =OMEGAU=).
- =HHGCUT= :: Calculate the classical [[https://en.wikipedia.org/wiki/High_harmonic_generation#Semi-classical_approach][cut-off in HHG]], Wₖ₋ₘₐₓ =
3.17Uₚ + Iₚ given an intensity, a wavelength and an
atomic number, and store the result as
* =CUTOFF= :: atomic units,
* =CUTOEV= :: electronvolts,
* =CUTOFQ= :: harmonic orders (i.e. Wₖ₋ₘₐₓ/ω).
(uses the subroutines =ATOMIP= and =UP=).
- =HHGEXC= :: Calculate the typical excursion of an electron in HHG,
given by = E/ω², where the electric field
amplitude E = √I. The result is stored in the
variables =EXCAU= and =EXCSI= in Bohr radii and
metres, respectively (uses the subroutine =UP=).
- =KELDYSH= :: Calculate the [[https://en.wikipedia.org/wiki/Tunnel_ionization#Analytical_formula_for_the_rate_of_MPI][Keldysh parameter]] γ = √(Iₚ/2Uₚ) and
stores the result in the variable =GAMMA= (uses the
subroutines =ATOMIP= and =UP=).
* Caveats
These routines are only tested using [[http://thomasokken.com/free42/][Free42]], as I don't own a real
HP42s device.