Idealized 1D quantum tunneling solver with two classic test cases
Project description
1d-qt-ideal-solver: 1D Quantum Tunneling Solver
High-performance 1D quantum tunneling solver with absorbing boundary conditions. Implements split-operator Fourier method with Numba acceleration.
Physics
Solves the time-dependent Schrödinger equation:
$$i\frac{\partial \psi}{\partial t} = \hat{H}\psi = \left[-\frac{1}{2}\nabla^2 + V(x,t)\right]\psi$$
Split-operator evolution with absorbing boundaries:
$$\psi(x, t+\delta t) = \mathcal{M}_{\text{abs}} \cdot e^{-iV\delta t/2} \cdot \mathcal{F}^{-1}\left[e^{-ik^2\delta t/2}\mathcal{F}[\psi]\right] \cdot e^{-iV\delta t/2}$$
Absorbing mask:
$$\mathcal{M}(x) = \begin{cases} 1 - s\left[1 - \cos^4\left(\frac{\pi i}{2n_b}\right)\right] & \text{left boundary} \ 1 & \text{safe zone} \ 1 - s\left[1 - \cos^4\left(\frac{\pi(N-i)}{2n_b}\right)\right] & \text{right boundary} \end{cases}$$
Observables:
- Transmission coefficient: $T$
- Reflection coefficient: $R$
- Absorbed probability: $A$
- Conservation: $T + R + A \approx 1$
Features
- Absorbing boundary conditions prevent spurious reflections
- Adaptive time stepping
- Numba JIT compilation
- Stochastic environments with noise and decoherence
- Visualization with zone highlighting
- NetCDF4 output
Installation
# From PyPI
pip install 1d-qt-ideal-solver
# From source
git clone https://github.com/sandyherho/1d-qt-ideal-solver.git
cd 1d-qt-ideal-solver
pip install -e .
Quick Start
Command line:
# Run single case
qt1d-simulate case1
# Run both cases
qt1d-simulate --all
# Custom parameters
qt1d-simulate case1 --boundary-width 3.0 --cores 8
Python API:
from qt1d_ideal import QuantumTunneling1D, GaussianWavePacket
# Initialize solver
solver = QuantumTunneling1D(
nx=2048,
x_min=-30.0,
x_max=30.0,
boundary_width=3.0,
boundary_strength=0.03
)
# Create initial wavepacket
psi0 = GaussianWavePacket(x0=-8.0, k0=4.0, sigma=0.8)(solver.x)
# Define barrier
V = solver.rectangular_barrier(height=4.5, width=1.0)
# Solve
result = solver.solve(psi0=psi0, V=V, t_final=6.0, n_snapshots=200)
# Results
T = result['transmission_coefficient']
R = result['reflection_coefficient']
A = result['absorbed_probability']
print(f"T = {T:.4f}, R = {R:.4f}, A = {A:.4f}, T+R+A = {T+R+A:.4f}")
Test Cases
| Case | Barrier Type | Height | Width | Domain |
|---|---|---|---|---|
| 1 | Rectangular | 4.5 eV | 1.0 nm | ±30 nm |
| 2 | Gaussian | 4.0 eV | 0.8 nm | ±30 nm |
Configuration
Key parameters (see configs/ for examples):
# Spatial grid
nx = 2048
x_min = -30.0
x_max = 30.0
# Time integration
t_final = 6.0
n_snapshots = 200
# Absorbing boundaries
boundary_width = 3.0
boundary_strength = 0.03
# Environment
noise_amplitude = 0.0
decoherence_rate = 0.0
Output
Generated files:
outputs/*.nc- NetCDF4 with wavefunction dataoutputs/*.gif- Animated visualizationlogs/*.log- Simulation diagnostics
Reading NetCDF data:
import netCDF4 as nc
data = nc.Dataset('outputs/case1_rectangular_barrier.nc')
x = data['x'][:]
t = data['t'][:]
psi_real = data['psi_real'][:, :]
psi_imag = data['psi_imag'][:, :]
probability = data['probability'][:, :]
potential = data['potential'][:]
T = data.transmission
R = data.reflection
A = data.absorbed
Citation
@software{qt1d_solver_2025,
author = {Herho, Sandy H. S. and Kaban, Siti N. and Anwar, Iwan P.
Prayogo, Sonny and Trilaksono, Nurjanna J.},
title = {{\texttt{1d-qt-ideal-solver}: 1D idealized quantum tunneling solver with absorbing boundaries}},
year = {2025},
version = {0.0.7},
url = {https://github.com/sandyherho/1d-qt-ideal-solver},
doi = {10.5281/zenodo.17299767},
license = {MIT}
}
Authors
- Sandy H. S. Herho (sandy.herho@email.ucr.edu)
- Siti N. Kaban
- Iwan P. Anwar
- Sonny Prayogo
- Nurjanna J. Trilaksono
License
MIT License - See LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file 1d_qt_ideal_solver-0.0.8.tar.gz.
File metadata
- Download URL: 1d_qt_ideal_solver-0.0.8.tar.gz
- Upload date:
- Size: 20.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.12.2 Linux/6.11.9-100.fc39.x86_64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3240e6524e5fd12ed293dff28b715bfbe334a72bc7919e27a4311e605de75153
|
|
| MD5 |
7fe8c5736f548950e4d11f0595099a1f
|
|
| BLAKE2b-256 |
f16d7cde4c5fbebc54668317adc83c9b80ce1ea07ecb1dfc7d82e82ca56e9f6b
|
File details
Details for the file 1d_qt_ideal_solver-0.0.8-py3-none-any.whl.
File metadata
- Download URL: 1d_qt_ideal_solver-0.0.8-py3-none-any.whl
- Upload date:
- Size: 24.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.12.2 Linux/6.11.9-100.fc39.x86_64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
293a10f214145f18f70f223a68357b0332bc46d16562e071450d4c9ba362848c
|
|
| MD5 |
945c15eb9f615618d17b8fc6cabf9273
|
|
| BLAKE2b-256 |
af993ced140849b3c3b853f0550dae53192eadf9da054c74a0ed63329c113f02
|