dirac_solver 0.0.1
A Dirac ecuation Solver
Cargando...
Buscando...
Nada coincide
Referencia de la clase AbsorbingBoundary

Implementación de una condición de frontera absorbente (ABC) para simulaciones 1D. Más...

#include <AbsorbingBoundary.h>

+ Diagrama de herencia de AbsorbingBoundary
+ Diagrama de colaboración de AbsorbingBoundary:

Métodos públicos

 AbsorbingBoundary (double strength)
 Constructor de la condición de frontera absorbente.
 
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.
 
std::string get_name () const override
 Devuelve el nombre de la condición de frontera.
 
- Métodos públicos heredados de BoundaryCondition
virtual ~BoundaryCondition ()=default
 

Descripción detallada

Implementación de una condición de frontera absorbente (ABC) para simulaciones 1D.

Esta clase aplica un amortiguamiento en los extremos del dominio espacial para minimizar reflexiones artificiales en la frontera. Se utiliza típicamente en simulaciones de la ecuación de Dirac o de Schrödinger cuando se desea emular un dominio abierto.

Actualmente, la clase sólo soporta dominios unidimensionales (1D).

Ejemplo de uso

AbsorbingBoundary abc(0.05); // Condición de frontera con fuerza 0.05
abc.apply(psi, grid); // Aplica el amortiguamiento a los extremos
Implementación de una condición de frontera absorbente (ABC) para simulaciones 1D.
Definition AbsorbingBoundary.h:24

Documentación de constructores y destructores

◆ AbsorbingBoundary()

AbsorbingBoundary::AbsorbingBoundary ( double  strength)
inline

Constructor de la condición de frontera absorbente.

Parámetros
strengthFactor de absorción (0 < strength < 1). Valores mayores implican una absorción más fuerte en los extremos.
31: strength_(strength) {}

Documentación de funciones miembro

◆ apply()

void AbsorbingBoundary::apply ( std::vector< Dirac::Spinor > &  psi,
const Grid grid 
) const
inlineoverridevirtual

Aplica la condición de frontera absorbente a la función de onda.

Multiplica los valores del spinor en los extremos de la malla por un factor complejo reductor de magnitud (1 - strength), lo que atenúa progresivamente la amplitud del campo.

Parámetros
psiVector de spinors de Dirac que representan el campo en la malla.
gridObjeto que define la malla espacial asociada a la simulación.
Excepciones
std::runtime_errorSi la malla no es unidimensional (dim ≠ 1).

Implementa BoundaryCondition.

44 {
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 }
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

◆ get_name()

std::string AbsorbingBoundary::get_name ( ) const
inlineoverridevirtual

Devuelve el nombre de la condición de frontera.

Devuelve
La cadena "AbsorbingBoundary".

Implementa BoundaryCondition.

61 {
62 return "AbsorbingBoundary";
63 }

La documentación de esta clase está generada del siguiente archivo: