dirac_solver 0.0.1
A Dirac ecuation Solver
Cargando...
Buscando...
Nada coincide
AbsorbingBoundary.h
Ir a la documentación de este archivo.
1#pragma once
2
3#include "BoundaryCondition.h"
4#include <vector>
5#include "../DiracMatrices.h"
6
25public:
31 AbsorbingBoundary(double strength) : strength_(strength) {}
32
44 void apply(std::vector<Dirac::Spinor>& psi, const Grid& grid) const override {
45 if (grid.get_dim() != 1) {
46 throw std::runtime_error("AbsorbingBoundary solo está implementado para mallas 1D por el momento.");
47 }
48
49 size_t n_points = grid.get_total_points();
50 if (n_points < 2) return;
51
52 // Aplicar amortiguamiento a los puntos primero y último
53 psi[0] = Dirac::complex(1.0 - strength_, 0.0) * psi[0];
54 psi[n_points - 1] = Dirac::complex(1.0 - strength_, 0.0) * psi[n_points - 1];
55 }
56
61 std::string get_name() const override {
62 return "AbsorbingBoundary";
63 }
64
65private:
69 double strength_;
70};
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