Librería diseñada para la solución numérica de la ecuación de Dirac.
Project description
Dirac-Solver: Solucionador numérico de la Ecuación de Dirac
Este proyecto implementa un solucionador numérico para la ecuación de Dirac en 1D, 2D y 3D. El núcleo computacional está escrito en C++ y expuesto a Python mediante pybind11, permitiendo simulaciones eficientes junto con una interfaz simple y flexible.
La ecuación resuelta es:
\[ (i\gamma^\mu \partial_\mu - m)\psi = 0 \]
en unidades naturales, donde el bispinor \(\psi \in \mathbb{C}^4\) es un vector columna complejo. El proyecto implementa métodos explícitos tipo FDTD (Leapfrog), potenciales personalizables, condiciones de frontera modulares y manejo de datos en HDF5.
Características principales
- Implementación explícita del esquema Leapfrog (FDTD).
- Mallas 1D/2D/3D mediante la clase
Grid. - Interfaz C++ ↔ Python mediante pybind11.
- Potenciales configurables: Coulomb, pozo, Yukawa, y potenciales definidos por el usuario.
- Condiciones de frontera intercambiables.
- Módulo Python para estados iniciales, observables, geometría y almacenamiento.
- Ejemplos en Jupyter listos para ejecutar.
- Documentación generada con Doxygen.
Estructura del proyecto
dirac_solver/ ├── cpp_src/ # Código fuente C++ (núcleo numérico) ├── dirac_solver/ # API Python ├── examples/ # Notebooks de ejemplos ├── docs/ # Documentación Doxygen (HTML y LaTeX) ├── tests/ # Pruebas unitarias ├── save_data/ # Resultados de simulaciones (HDF5) ├── planning/ # Diseño, requisitos, notas técnicas └── pyproject.toml # Configuración del paquete Python
Instalación
Instalación local editable
pip install -e .
Compilación del núcleo C++
mkdir -p cpp_build
cd cpp_build
cmake ../cpp_src
make -j
Uso básico
Ejemplo mínimo en Python:
from dirac_solver import core, potentials, initial_state, observables
grid = core.Grid(shape=(200,), spacing=0.05)
V = potentials.Coulomb(Z=1)
psi0 = initial_state.gaussian(grid)
solver = core.TimeIntegrator(grid, V)
psi_t = solver.evolve(psi0, dt=0.001, steps=1000)
obs = observables.Observables(psi_t)
density = obs.probability_density()
Documentación
Para compilar la documentación, en el directorio principal ejecutar:
doxygen
La salida se genera en:
docs/html/index.html
docs/latex/
Ejemplos
En el directorio examples/ encontrarás notebooks que cubren:
- Partícula libre
- Pozo cuadrado
- Potencial Coulomb
- Potencial Yukawa
- Ondas gaussianas
Contribuir
Las contribuciones son bienvenidas.
- Revisar
CONTRIBUTING.md - Mantener consistencia en el estilo del código
- Agregar pruebas unitarias si se añaden características nuevas
- Actualizar la documentación cuando corresponda
Licencia
Este proyecto se distribuye bajo la licencia MIT. Ver LICENSE para más detalles.
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
File details
Details for the file dirac_solver-0.1.0.tar.gz.
File metadata
- Download URL: dirac_solver-0.1.0.tar.gz
- Upload date:
- Size: 62.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4fb9f3d635b27abf40417c2339204df9d7e539e59d55d02d4e6daf522103f4c5
|
|
| MD5 |
d6f8ca042f4ab86b20cb1170049e086b
|
|
| BLAKE2b-256 |
1ce7b0e86cf962423575d8009c722dcf1c46b7b8801936188086a252459ad569
|