Skip to content

MatthieuVanhoecke27/Dissipative-Anderson-Impurity-NCA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NCA Solver Dissipation

C++ Library

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.

Table of Contents

Overview

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.

Physics Features

  • 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.

Prerequisites

  • Compiler: g++ (C++11 or later).
  • Library: Armadillo (Linear algebra).
  • Dependencies: BLAS, LAPACK, ARPACK, and OpenBLAS.

Compilation

Standard Build

  • For local testing with Armadillo installed:
g++ -O3 main.cpp -o nca_solver -larmadillo

High-Performance Cluster (HPC) Build

For 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

Compilation notes

  • -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).

Code Structure

  • 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.

Outputs

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 the SavePath variable in main.cpp points to a valid output directory on your system.


Citation

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

About

An NCA-based solver for the dissipative Anderson impurity model, with applications to nonequilibrium and open quantum impurity problems.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages