19 use_skyrme_(conf.has_value({
"Skyrme"})),
20 use_symmetry_(conf.has_value({
"Symmetry"})) {
73 skyrme_a_ = conf.take({
"Skyrme",
"Skyrme_A"});
74 skyrme_b_ = conf.take({
"Skyrme",
"Skyrme_B"});
75 skyrme_tau_ = conf.take({
"Skyrme",
"Skyrme_Tau"});
90 symmetry_s_ = conf.take({
"Symmetry",
"S_Pot"});
100 const int sgn = tmp > 0 ? 1 : -1;
102 return 1.0e-3 * sgn *
113 double total_potential = 0.0;
114 const bool compute_gradient =
false;
115 const bool smearing =
true;
119 return total_potential;
125 total_potential += scale.first *
skyrme_pot(rho_eck);
128 const double rho_iso = std::get<0>(
130 compute_gradient, smearing));
132 total_potential += scale.second * sym_pot;
134 return total_potential;
138 double skyrme_scale = data.
is_baryon() ? 1.0 : 0.0;
141 skyrme_scale = 1. / 3.;
145 skyrme_scale = 2. / 3.;
150 return std::make_pair(skyrme_scale, symmetry_scale);
156 const double MeV_to_GeV = 1.0e-3;
157 ThreeVector E_component(0.0, 0.0, 0.0), B_component(0.0, 0.0, 0.0);
159 const double dV_drho =
163 E_component -= dV_drho * (grad_rho + dj_dt);
164 B_component += dV_drho * rot_j;
166 return std::make_pair(E_component, B_component);
172 const double MeV_to_GeV = 1.0e-3;
173 ThreeVector E_component(0.0, 0.0, 0.0), B_component(0.0, 0.0, 0.0);
176 E_component -= dV_drho * (grad_rho + dj_dt);
177 B_component += dV_drho * rot_j;
179 return std::make_pair(E_component, B_component);
182 std::tuple<ThreeVector, ThreeVector, ThreeVector, ThreeVector>
184 const bool compute_gradient =
true;
185 const bool smearing =
true;
194 const double rho = std::get<0>(density_and_gradient);
195 const ThreeVector grad_rho = std::get<2>(density_and_gradient);
196 const ThreeVector dj_dt = std::get<3>(density_and_gradient);
197 const ThreeVector rot_j = std::get<4>(density_and_gradient);
202 const auto density_and_gradient =
204 compute_gradient, smearing);
205 const ThreeVector grad_rho = std::get<2>(density_and_gradient);
206 const ThreeVector dj_dt = std::get<3>(density_and_gradient);
207 const ThreeVector rot_j = std::get<4>(density_and_gradient);
211 return std::make_tuple(F_skyrme.first, F_skyrme.second, F_symmetry.first,
The ThreeVector class represents a physical three-vector with the components .
double skyrme_pot(const double baryon_density) const
Evaluates skyrme potential given a baryon density.
double skyrme_a_
Parameter of skyrme potentials: the coefficient in front of in GeV.
bool use_symmetry_
Symmetry potential on/off.
~Potentials()
Standard destructor.
Collection of useful constants that are known at compile time.
int baryon_number() const
double symmetry_s_
coefficent in front of the symmetry term.
Potentials(Configuration conf, const DensityParameters ¶meters)
Potentials constructor.
virtual std::tuple< ThreeVector, ThreeVector, ThreeVector, ThreeVector > all_forces(const ThreeVector &r, const ParticleList &plist) const
Evaluates the electrical and magnetic components of the forces at point r.
Particle type contains the static properties of a particle species.
const DensityParameters param_
Struct that contains the gaussian smearing width , the distance cutoff and the testparticle number n...
bool use_skyrme_
Skyrme potential on/off.
double skyrme_b_
Parameters of skyrme potentials: the coefficient in front of in GeV.
std::pair< ThreeVector, ThreeVector > symmetry_force(const ThreeVector grad_rho, const ThreeVector dj_dt, const ThreeVector rot_j) const
Evaluates the electrical and magnetic components of the symmetry force.
double potential(const ThreeVector &r, const ParticleList &plist, const ParticleType &acts_on) const
Evaluates potential at point r.
std::tuple< double, FourVector, ThreeVector, ThreeVector, ThreeVector > current_eckart(const ThreeVector &r, const ParticleList &plist, const DensityParameters &par, DensityType dens_type, bool compute_gradient, bool smearing)
Calculates Eckart rest frame density and 4-current of a given density type and optionally the gradien...
std::pair< double, int > force_scale(const ParticleType &data) const
Evaluates the scaling factor of the forces acting on the particles.
double skyrme_tau_
Parameters of skyrme potentials: the power index.
constexpr double nuclear_density
Ground state density of symmetric nuclear matter [fm^-3].
std::pair< ThreeVector, ThreeVector > skyrme_force(const double density, const ThreeVector grad_rho, const ThreeVector dj_dt, const ThreeVector rot_j) const
Evaluates the electrical and magnetic components of the skyrme force.
double isospin3_rel() const
int sgn(T val)
Signum function.
double symmetry_pot(const double baryon_isospin_density) const
Evaluates symmetry potential given baryon isospin density.