numerics
Loading...
Searching...
No Matches
tdse_solver.cpp File Reference

Implementation of TDSESolver – 2-D TDSE via Strang splitting + Thomas algorithm. More...

#include "tdse_solver.hpp"
#include "linalg/eigen/lanczos.hpp"
#include "analysis/roots.hpp"
#include "core/util/math.hpp"
#include <chrono>
#include <stdexcept>
#include <cmath>

Go to the source code of this file.

Namespaces

namespace  tdse
 

Typedefs

using tdse::cplx = std::complex< double >
 

Detailed Description

Implementation of TDSESolver – 2-D TDSE via Strang splitting + Thomas algorithm.

Algorithm chain per step():

  1. kick_V(dt/2) – diagonal phase multiplication
  2. sweep_x(dt/2) – Crank-Nicolson in x (Thomas per column fiber)
  3. sweep_y(dt) – Crank-Nicolson in y (Thomas per row fiber)
  4. sweep_x(dt/2) – again
  5. kick_V(dt/2) – again

Eigenstates: num::lanczos on the real N^2xN^2 Hamiltonian (matrix-free matvec). Bessel zeros: num::brent on J_m(x) for exact CircularWell eigenvalues.

Definition in file tdse_solver.cpp.