Official Resources
- Homepage: https://chinookpy.readthedocs.io/
- Documentation: https://chinookpy.readthedocs.io/en/latest/
- Repository: https://github.com/rpday/chinook
- License: MIT License
Overview
Chinook is a Python package specifically designed for calculating Angle-Resolved Photoemission Spectroscopy (ARPES) matrix elements and simulating spectra from tight-binding models. Unlike standard tight-binding codes that only output band structures, Chinook incorporates orbital projection effects, experimental geometry (photon polarization, detector angles), and spin-orbit coupling to simulate the actual intensity intensity maps measured in experiments.
Scientific domain: ARPES, Surface Science, Tight-Binding
Target user community: ARPES experimentalists and theorists analyzing band mapping data
Theoretical Methods
- Tight-Binding Construction: Support for arbitrary lattice bases (Slater-Koster or user-defined).
- ARPES Matrix Elements: Calculation of the transition probability $|\langle \psi_f | \mathbf{A} \cdot \mathbf{p} | \psi_i \rangle|^2$.
- Dipole approximation.
- Plane-wave final states.
- Spin-Orbit Coupling: Fully relativistic model Hamiltonians.
- Slab Calculation: Surface state projection for finite slabs.
Capabilities
- Simulations:
- ARPES Intensity Maps $I(E, k_x, k_y)$.
- Constant Energy Contours (Fermi surfaces with matrix element weighting).
- Spin-ARPES spectra.
- Experimental Factors:
- Linear/Circular polarization of incident light.
- Geometry of the scattering plane.
- Photon energy dependence ($k_z$ selection).
- Analysis:
- Projected Density of States (pDOS).
- Spin-texture plotting.
Key Strengths
- Experiment-Theory Link: Directly simulates what the machine measures, handling the crucial "matrix element effects" where bands disappear or change intensity based on symmetry and polarization.
- Python-Native: Fully integrated with NumPy/Matplotlib for seamless data analysis pipelines.
- Slab Generation: Easy tools to create slabs and study surface states and their decay.
Inputs & Outputs
- Inputs:
- Python scripts defining the orbital basis (quantum numbers $n, l, m$) and lattice.
- Experimental parameters (Photon energy $h\nu$, vector potential $\mathbf{A}$).
- Outputs:
- NumPy arrays of Intensity vs $(E, k)$.
- Matplotlib figures.
Interfaces & Ecosystem
- H_library: Built-in library of standard Hamiltonians (e.g., Kane-Mele, Rashba).
- Python: Can be used alongside
Pybinding or other tools if Hamiltonians are manually converted.
Performance Characteristics
- Speed: Efficient for model Hamiltonians; $O(N_{bands})$ for matrix elements.
- Scaling: Python-based, suitable for effective models (dozens of orbitals) rather than large-scale DFT inputs.
Comparison with Other Codes
- vs. Pybinding: Pybinding is faster for pure band structure/transport (KPM) of huge systems. Chinook is specialized for ARPES intensities and matrix elements, which Pybinding does not calculate.
- vs. Chinook (IDL): This is the modern Python successor to earlier IDL-based ARPES tools.
Application Areas
- Topological Materials: Identifying surface states and their spin texture in ARPES.
- Quantum Materials: Disentangling orbital character in multi-band superconductors (e.g., FeSe).
- Dichroism: Calculating circular dichroism in angular distributions (CD-ARPES).
Community and Support
- Development: UBC / Damascelli Group (Ryan Day).
- Source: GitHub.
Verification & Sources
- Website: https://chinookpy.readthedocs.io/
- Primary Publication: R. P. Day et al., npj Quant Mater 4, 62 (2019).
- Verification status: ✅ VERIFIED
- Active tool in the ARPES community.