5#include "../DiracMatrices.h"
44 void apply(std::vector<Dirac::Spinor>& psi,
const Grid& grid)
const override {
46 throw std::runtime_error(
"AbsorbingBoundary solo está implementado para mallas 1D por el momento.");
50 if (n_points < 2)
return;
54 psi[n_points - 1] =
Dirac::complex(1.0 - strength_, 0.0) * psi[n_points - 1];
62 return "AbsorbingBoundary";
Implementación de una condición de frontera absorbente (ABC) para simulaciones 1D.
Definition AbsorbingBoundary.h:24
void apply(std::vector< Dirac::Spinor > &psi, const Grid &grid) const override
Aplica la condición de frontera absorbente a la función de onda.
Definition AbsorbingBoundary.h:44
std::string get_name() const override
Devuelve el nombre de la condición de frontera.
Definition AbsorbingBoundary.h:61
AbsorbingBoundary(double strength)
Constructor de la condición de frontera absorbente.
Definition AbsorbingBoundary.h:31
Clase base abstracta para condiciones de borde (patrón Strategy).
Definition BoundaryCondition.h:17
Representa una malla espacial (1D, 2D o 3D) para la simulación.
Definition Grid.h:16
size_t get_dim() const
Definition Grid.h:39
size_t get_total_points() const
Calcula el número total de puntos en la malla.
Definition Grid.h:47
std::complex< double > complex
Definition DiracMatrices.h:9