![]() |
dirac_solver 0.0.1
A Dirac ecuation Solver
|
Implementación concreta de TimeIntegrator mediante el esquema FDTD de salto de rana (Leapfrog). Más...
#include <TimeIntegrator.h>
Diagrama de herencia de FDTDLeapfrogIntegrator
Diagrama de colaboración de FDTDLeapfrogIntegrator:Métodos públicos | |
| FDTDLeapfrogIntegrator (py::array_t< std::complex< double >, py::array::c_style|py::array::forcecast > initial_psi, const Grid &grid, std::shared_ptr< Potential > potential, std::shared_ptr< BoundaryCondition > boundary_condition, double dt, double mass) | |
| Constructor principal del integrador Leapfrog. | |
| void | step () override |
| Avanza un paso de tiempo completo según el esquema FDTD Leapfrog. | |
| std::string | get_name () const override |
| Devuelve el nombre del integrador. | |
| py::array_t< std::complex< double > > | get_psi () const |
| Devuelve la función de onda actual en formato NumPy. | |
Métodos públicos heredados de TimeIntegrator | |
| virtual | ~TimeIntegrator ()=default |
Implementación concreta de TimeIntegrator mediante el esquema FDTD de salto de rana (Leapfrog).
Este integrador emplea el método Finite-Difference Time-Domain (FDTD) con un esquema temporal tipo "leapfrog", ampliamente usado para ecuaciones de onda relativistas como la ecuación de Dirac.
El algoritmo alterna entre los estados ψ(t - Δt), ψ(t) y ψ(t + Δt) para avanzar la solución sin necesidad de almacenar todas las configuraciones temporales.
Potential.BoundaryCondition.
|
inline |
Constructor principal del integrador Leapfrog.
Inicializa la función de onda y los buffers de tiempo (ψ_prev, ψ_curr, ψ_next), validando dimensiones y preparando los parámetros del algoritmo.
| initial_psi | Estado inicial del campo espinorial, como array NumPy de forma (N, 4). |
| grid | Objeto de tipo Grid que define la geometría de la simulación. |
| potential | Potencial escalar aplicado a la partícula. |
| boundary_condition | Condición de frontera a aplicar (e.g. periódica, absorbente). |
| dt | Paso temporal. |
| mass | Masa de la partícula. |
| std::runtime_error | Si la forma del array de entrada no es (N, 4) o si el número de puntos no coincide con la malla. |
|
inlineoverridevirtual |
Devuelve el nombre del integrador.
"FDTDLeapfrogIntegrator". Implementa TimeIntegrator.
|
inline |
Devuelve la función de onda actual en formato NumPy.
Convierte internamente el vector de spinors psi_curr_ a un array bidimensional compatible con Python, de forma (N, 4).
py::array_t<std::complex<double>> con la función de onda actual.
|
inlineoverridevirtual |
Avanza un paso de tiempo completo según el esquema FDTD Leapfrog.
Calcula el operador espacial y el término local del Hamiltoniano para cada punto de la malla, aplicando las matrices de Dirac correspondientes a cada dimensión. Luego, actualiza ψ(t+Δt) a partir de ψ(t) y ψ(t-Δt).
También aplica la condición de frontera definida por boundary_condition_.
Implementa TimeIntegrator.