State-resolved gamma calculations (python)
19/07/24
For calculations, making use of state-to-state \(\gamma\) and \(C\) parameters, some basic routines are available in :py:module:epsproc.geomCalc.gamma.
For basic use, working from pre-tabulated (legacy) gamma params, see the “legacy” notes.
In this notebook, computation of gamma params with python routines is demonstrated.
The C and gamma parameters and computations are defined as per Refs. [1,2], in particular Ref. [2], Sect 3.1:
This form allows for:
Angular momentum transfer between initial (\(_i\)) and final (\(_+\)) states, with transfer terms denoted by subscript \(t\).
Modulation by initial \(M\)-state distribution, expressed as a density matrix \(\boldsymbol{\rho}_{M_{i}M_{i}'}\).
Cf. aligned-frame case, which assumes a decoupled rotational wavepacket, and is derived from a sum over \(J,M\) states (see Ref. [3] for further details).
Refs:
Hockett, Paul. 2009. “Photoionization Dynamics of Polyatomic Molecules.” PhD Thesis, University of Nottingham. http://eprints.nottingham.ac.uk/10857/.
———. 2018. Quantum Metrology with Photoelectrons, Volume 1: Foundations. IOP Publishing. https://doi.org/10.1088/978-1-6817-4684-5.
Stolow, Albert, and Jonathan G. Underwood. 2008. “Time-Resolved Photoelectron Spectroscopy of Non-Adiabatic Dynamics in Polyatomic Molecules.” In Advances in Chemical Physics, edited by Stuart A. Rice, 139:497–584. Advances in Chemical Physics. Hoboken, NJ, USA: John Wiley & Sons, Inc. https://doi.org/10.1002/9780470259498.ch6.
Gamma calc demo
[2]:
# Load functions
from epsproc.geomFunc.gamma import gammaCalc
OMP: Info #276: omp_set_nested routine deprecated, please use omp_set_max_active_levels instead.
* sparse not found, sparse matrix forms not available.
* natsort not found, some sorting functions not available.
* Setting plotter defaults with epsproc.basicPlotters.setPlotters(). Run directly to modify, or change options in local env.
* Set Holoviews with bokeh.
* pyevtk not found, VTK export not available.
[3]:
# Compute for default case
gammaCalc.gammaCalc()
[3]:
| C2 | C1 | gamma | lPhase | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Ki | lam | lamp | Kt | mp | Mt | Kc | m | lp | l | p | ||||
| -2 | -4 | -4 | 3 | -4 | 3 | -1 | -4 | 4 | 4 | 1 | 0.015873 | 0.015873 | 0.003779+0.000000j | 1.0+0.0j |
| -3 | 2 | -1 | -3 | 4 | 4 | 1 | 0.011224 | 0.011224 | 0.001890+0.000000j | 1.0+0.0j | ||||
| 3 | -2 | -1 | 3 | 4 | 4 | -1 | 0.011224 | 0.011224 | 0.001890+0.000000j | 1.0+0.0j | ||||
| 4 | -3 | -1 | 4 | 4 | 4 | -1 | 0.015873 | 0.015873 | 0.003779+0.000000j | 1.0+0.0j | ||||
| -3 | 3 | -4 | 3 | -1 | -4 | 4 | 4 | 1 | -0.007937 | 0.015873 | -0.001890+0.000000j | 1.0+0.0j | ||
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2 | 4 | 3 | -3 | 4 | -3 | 1 | 4 | 4 | 4 | -1 | -0.007937 | 0.015873 | -0.001890+0.000000j | 1.0+0.0j |
| 4 | -3 | -4 | 3 | 1 | -4 | 4 | 4 | 1 | 0.015873 | 0.015873 | 0.003779+0.000000j | 1.0+0.0j | ||
| -3 | 2 | 1 | -3 | 4 | 4 | 1 | 0.011224 | 0.011224 | 0.001890+0.000000j | 1.0+0.0j | ||||
| 3 | -2 | 1 | 3 | 4 | 4 | -1 | 0.011224 | 0.011224 | 0.001890+0.000000j | 1.0+0.0j | ||||
| 4 | -3 | 1 | 4 | 4 | 4 | -1 | 0.015873 | 0.015873 | 0.003779+0.000000j | 1.0+0.0j |
3022 rows × 4 columns
[4]:
# Compute for specific channel = [Ni,Ki,Nc,Kc]
channel = [2,0,1,1]
gammaCalc.gammaCalc(channel)
[4]:
| C2 | C1 | gamma | lPhase | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| lam | lamp | Kt | mp | Mt | m | lp | l | p | ||||
| 0 | 0 | -1 | -2 | 2 | -2 | 2 | 2 | 0 | 0.013333 | 0.013333 | 0.002667+0.000000j | 1.0+0.0j |
| -1 | 0 | -1 | 1 | 1 | 1 | -0.011111 | -0.011111 | 0.001852+0.000000j | 1.0+0.0j | |||
| 1 | -1 | 1 | 1 | 0 | 0.025382 | 0.025382 | 0.007611+0.000000j | 1.0+0.0j | ||||
| 2 | -1 | 1 | 1 | -1 | 0.004783 | 0.004783 | 0.006000+0.000000j | 1.0+0.0j | ||||
| 2 | -1 | 0.016330 | -0.009428 | 0.000000-0.002309j | -0.0+1.0j | |||||||
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2 | 2 | -1 | 2 | -2 | 2 | 2 | 2 | 0 | -0.010887 | -0.010887 | 0.001778+0.000000j | 1.0+0.0j |
| -1 | 2 | 2 | 2 | -1 | 0.004783 | 0.004783 | 0.006000+0.000000j | 1.0+0.0j | ||||
| 3 | -1 | 0.016330 | -0.007776 | 0.000000-0.001905j | -0.0+1.0j | |||||||
| 3 | 2 | -1 | -0.007776 | 0.016330 | 0.000000+0.001905j | -0.0-1.0j | ||||||
| 3 | -2 | 3 | 3 | 3 | -1 | -0.013469 | -0.013469 | 0.002721+0.000000j | 1.0+0.0j |
184 rows × 4 columns
[5]:
# Compute for specific channel = [Ni,Ki,Nc,Kc]
# + include initial state density matrix
# NOTE: TODO, density matrix not yet implemented.
channel = [2,0,1,1]
gammaCalc.gammaCalc(channel, denMat=1)
*** Density matrix mult not yet implemented.
[5]:
| C2 | C1 | gamma | lPhase | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| lam | lamp | Kt | mp | Mt | m | lp | l | p | ||||
| 0 | 0 | -1 | -2 | 2 | -2 | 2 | 2 | 0 | 0.013333 | 0.013333 | 0.002667+0.000000j | 1.0+0.0j |
| -1 | 0 | -1 | 1 | 1 | 1 | -0.011111 | -0.011111 | 0.001852+0.000000j | 1.0+0.0j | |||
| 1 | -1 | 1 | 1 | 0 | 0.025382 | 0.025382 | 0.007611+0.000000j | 1.0+0.0j | ||||
| 2 | -1 | 1 | 1 | -1 | 0.004783 | 0.004783 | 0.006000+0.000000j | 1.0+0.0j | ||||
| 2 | -1 | 0.016330 | -0.009428 | 0.000000-0.002309j | -0.0+1.0j | |||||||
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2 | 2 | -1 | 2 | -2 | 2 | 2 | 2 | 0 | -0.010887 | -0.010887 | 0.001778+0.000000j | 1.0+0.0j |
| -1 | 2 | 2 | 2 | -1 | 0.004783 | 0.004783 | 0.006000+0.000000j | 1.0+0.0j | ||||
| 3 | -1 | 0.016330 | -0.007776 | 0.000000-0.001905j | -0.0+1.0j | |||||||
| 3 | 2 | -1 | -0.007776 | 0.016330 | 0.000000+0.001905j | -0.0-1.0j | ||||||
| 3 | -2 | 3 | 3 | 3 | -1 | -0.013469 | -0.013469 | 0.002721+0.000000j | 1.0+0.0j |
184 rows × 4 columns
Versions
[6]:
import scooby
scooby.Report(additional=['epsproc', 'holoviews', 'hvplot', 'xarray', 'matplotlib', 'bokeh'])
[6]:
| Fri Jul 19 17:18:18 2024 EDT | |||||||
| OS | Linux | CPU(s) | 64 | Machine | x86_64 | Architecture | 64bit |
| RAM | 62.8 GiB | Environment | Jupyter | File system | btrfs | ||
| Python 3.10.11 | packaged by conda-forge | (main, May 10 2023, 18:58:44) [GCC 11.3.0] | |||||||
| epsproc | 1.3.2-dev | holoviews | 1.16.2 | hvplot | 0.8.4 | xarray | 2022.3.0 |
| matplotlib | 3.5.3 | bokeh | 3.1.1 | numpy | 1.23.5 | scipy | 1.10.1 |
| IPython | 8.13.2 | scooby | 0.7.2 | ||||
[7]:
# Check current Git commit for local ePSproc version
import epsproc as ep
from pathlib import Path
!git -C {Path(ep.__file__).parent} branch
!git -C {Path(ep.__file__).parent} log --format="%H" -n 1
* 3d-AFPAD-dev
dev
master
b22bbbfda77b825b7af94527d2fe9244f09f7f3c
[8]:
# Check current remote commits
!git ls-remote --heads https://github.com/phockett/ePSproc
0b8506218730b856a229c0d844eff35cd74a473e refs/heads/3d-AFPAD-dev
18901ac6056324d6a2674396939fdcc373d35395 refs/heads/dependabot/pip/notes/envs/envs-versioned/idna-3.7
9d9eb4e1a20d4ff77d07af2ac782ba18c26e5dcc refs/heads/dependabot/pip/notes/envs/envs-versioned/jinja2-3.1.4
226759a58ebe96bf1a6df60ccd5efb0c449af3a7 refs/heads/dependabot/pip/notes/envs/envs-versioned/pillow-10.3.0
de0e271701949602ce7f170a9665e37b27d2401c refs/heads/dependabot/pip/notes/envs/envs-versioned/requests-2.32.0
4ff0ed84a1df2a3de4258ba7e49db1e47e6ac596 refs/heads/dependabot/pip/notes/envs/envs-versioned/scipy-1.11.1
120416a432b8da85b68912d0c424f47d77392434 refs/heads/dependabot/pip/notes/envs/envs-versioned/tornado-6.4.1
b50b0b946a1a7cb5b22c95d1e4cee120b22e6874 refs/heads/dependabot/pip/notes/envs/envs-versioned/tqdm-4.66.3
a96b411b4bbc911b35bf080b5e848dca655d0f1b refs/heads/dependabot/pip/notes/envs/envs-versioned/urllib3-1.26.19
fd9c621f0c91e05ffcb097f59e9d8d8b43c5fc23 refs/heads/dependabot/pip/scipy-1.11.1
7e4270370d66df44c334675ac487c87d702408da refs/heads/dev
1c0b8fd409648f07c85f4f20628b5ea7627e0c4e refs/heads/master
69cd89ce5bc0ad6d465a4bd8df6fba15d3fd1aee refs/heads/numba-tests
ea30878c842f09d525fbf39fa269fa2302a13b57 refs/heads/revert-9-master
baf0be0c962e8ab3c3df57c8f70f0e939f99cbd7 refs/heads/testDev
[ ]: