dirac_solver 0.0.1
A Dirac ecuation Solver
Cargando...
Buscando...
Nada coincide
CoulombPotential.h
Ir a la documentación de este archivo.
1#pragma once
2
3#include "Potential.h"
4#include <cmath>
5#include <numeric>
6
31public:
42 CoulombPotential(double Z, double epsilon = 1e-6)
43 : Z_(Z), epsilon_(epsilon) {}
44
58 double evaluate(const std::vector<double>& r) const override {
59 double r_norm = 0.0;
60 for (double val : r) {
61 r_norm += val * val;
62 }
63 r_norm = std::sqrt(r_norm);
64
65 // Regularizar el potencial en r=0
66 return -Z_ / (r_norm + epsilon_);
67 }
68
76 std::string get_name() const override {
77 return "CoulombPotential";
78 }
79
80private:
86 double Z_;
87
93 double epsilon_;
94};
Implementación concreta de un potencial de Coulomb regularizado.
Definition CoulombPotential.h:30
std::string get_name() const override
Devuelve el nombre simbólico del potencial.
Definition CoulombPotential.h:76
CoulombPotential(double Z, double epsilon=1e-6)
Constructor principal del potencial de Coulomb.
Definition CoulombPotential.h:42
double evaluate(const std::vector< double > &r) const override
Evalúa el potencial en un punto espacial.
Definition CoulombPotential.h:58
Clase base abstracta para todos los potenciales escalares (patrón Template).
Definition Potential.h:15