A high-performance C++ numerical solver using the Non-Crossing Approximation (NCA) method to solve the dynamics of a fermionic impurity model in the presence of arbitrary Markovian dissipation.
This solver handles the dynamics of an Anderson-like impurity coupled to a reservoir under Lindblad master equations. It utilizes the Liouville space representation (Tilde-expansion) to transform super-operators into matrix forms manageable by the Armadillo library.
- NCA Self-Consistent Integration: Iterative resolution of the self-energy equations.
-
Dissipation Channels:
- Standard Dephasing (Up, Down, Spin, Total Charge, Doublon).
- Two-Body Lossy mechanisms.
- Bath Models: Support for both Flat Band and Semi-elliptic (gapless) fermionic reservoirs.
-
Observables: Real-time calculation of:
- Impurity occupation
$n(t)$ and spin magnetization$\sigma_z(t)$ . - Retarded Green's Functions
$G^R(t)$ for Steady State analysis.
- Impurity occupation
- Compiler:
g++(C++11 or later). - Library: Armadillo (Linear algebra).
- Dependencies: BLAS, LAPACK, ARPACK, and OpenBLAS.
- For local testing with Armadillo installed:
g++ -O3 main.cpp -o nca_solver -larmadilloFor deployment on a computation cluster, use the following optimized command to bypass wrappers and link directly against high-performance math libraries:
g++ -O3 -march=native -DNDEBUG -DARMA_DONT_USE_WRAPPER -DARMA_USE_BLAS -DARMA_USE_LAPACK main.cpp -o main -lopenblas -llapack -larpack -lpthread -lm-
-O3 -march=native
Enables hardware-specific optimizations. -
-DNDEBUG
Disables runtime assertions. -
-DARMA_DONT_USE_WRAPPER
Forces direct linking against external BLAS/LAPACK implementations (recommended on clusters).
-
Construction_Matrix()
Initializes impurity operators in both Hilbert and Liouville (tilde) spaces. -
Local_Lindbladian()
Constructs the dissipative super-operator associated with the Lindblad terms. -
runDyn_NcaRK2_V2()
Core solver implementing a second-order Runge–Kutta scheme for self-consistent NCA dynamics. -
Retarded_GreenFunction()
Computes steady-state retarded Green’s functions.
The solver generates .txt output files containing:
-
TraceRho
Time evolution of the density matrix trace. -
RetardedGreenFunction
Real and imaginary parts of ( G^R ) for spin-up and spin-down channels. -
nt / Sigmaz
Time evolution of impurity occupation and spin magnetization. -
RhoPolariser
Full density matrix dynamics for polarized initial states.
⚠️ Warning:
Before execution, ensure that theSavePathvariable inmain.cpppoints to a valid output directory on your system.
If you use this solver in your research or project, please cite it as follows:
BibTeX:
@article{Vanhoecke_2025,
title={Kondo-Zeno crossover in the dynamics of a monitored quantum dot},
volume={16},
ISSN={2041-1723},
url={http://dx.doi.org/10.1038/s41467-025-61287-y},
DOI={10.1038/s41467-025-61287-y},
number={1},
journal={Nature Communications},
publisher={Springer Science and Business Media LLC},
author={Vanhoecke, Matthieu and Schirò, Marco},
year={2025},
month=jul
}Author: Matthieu Vanhoecke