Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dirac_solver-0.1.0.tar.gz (62.0 MB view details)

Uploaded Source

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

Hashes for dirac_solver-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4fb9f3d635b27abf40417c2339204df9d7e539e59d55d02d4e6daf522103f4c5
MD5 d6f8ca042f4ab86b20cb1170049e086b
BLAKE2b-256 1ce7b0e86cf962423575d8009c722dcf1c46b7b8801936188086a252459ad569

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page