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
- Host: GitHub
- URL: https://github.com/jagot/42s-atomic
- Owner: jagot
- Created: 2017-12-26T16:46:00.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-12-27T12:06:34.000Z (over 8 years ago)
- Last Synced: 2025-01-16T07:13:56.818Z (over 1 year ago)
- Topics: atomic-physics, hp42s, ultrafast-optics
- Language: Perl
- Size: 18.6 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.org
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.