Version: SMASH-3.1
deformednucleus.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014-2022
3  * SMASH Team
4  *
5  * GNU General Public License (GPLv3 or later)
6  */
7 #ifndef SRC_INCLUDE_SMASH_DEFORMEDNUCLEUS_H_
8 #define SRC_INCLUDE_SMASH_DEFORMEDNUCLEUS_H_
9 
10 #include <map>
11 
12 #include "angles.h"
13 #include "configuration.h"
14 #include "forwarddeclarations.h"
15 #include "nucleus.h"
16 #include "threevector.h"
17 
18 namespace smash {
19 
29 double y_l_m(int l, int m, double cosx, double phi);
30 
38 class DeformedNucleus : public Nucleus {
39  public:
46  DeformedNucleus(const std::map<PdgCode, int> &particle_list, int nTest);
56  DeformedNucleus(Configuration &config, int nTest, bool auto_deformation);
64 
76 
85 
91  void set_orientation_from_config(Configuration &orientation_config);
96  void rotate() override;
97 
102  inline double get_saturation_density() const { return saturation_density_; }
112  double nucleon_density(double r, double cosx, double phi) const override;
122  double nucleon_density_unnormalized(double r, double cosx,
123  double phi) const override;
131  double integrant_nucleon_density_phi(double r, double cosx) const;
140  double calculate_saturation_density() const override;
145  inline void set_beta_2(double b2) { beta2_ = b2; }
150  inline void set_gamma(double ga) { gamma_ = ga; }
155  inline void set_beta_3(double b3) { beta3_ = b3; }
160  inline void set_beta_4(double b4) { beta4_ = b4; }
165  inline void set_polar_angle(double theta) {
167  }
172  inline void set_azimuthal_angle(double phi) {
174  }
179  inline void set_angle_psi(double psi) { nuclear_orientation_.set_psi(psi); }
183  inline double get_beta2() { return beta2_; }
187  inline double get_beta3() { return beta3_; }
191  inline double get_beta4() { return beta4_; }
192 
193  private:
195  double beta2_ = 0.0;
197  double gamma_ = 0.0;
199  double beta3_ = 0.0;
201  double beta4_ = 0.0;
210  bool random_rotation_ = false;
211 };
212 
213 } // namespace smash
214 
215 #endif // SRC_INCLUDE_SMASH_DEFORMEDNUCLEUS_H_
Angles provides a common interface for generating directions: i.e., two angles that should be interpr...
Definition: angles.h:59
void set_phi(const double phi)
Sets the azimuthal angle.
Definition: angles.h:205
void set_theta(const double theta)
Set the polar angle.
Definition: angles.h:237
void set_psi(const double psi)
Sets the euler angle psi.
Definition: angles.h:213
Interface to the SMASH configuration files.
DeformedNucleus: Child of nucleus for deformed nuclei.
double get_beta3()
return the beta3 value.
void set_orientation_from_config(Configuration &orientation_config)
Set angles for orientation of nucleus from config file.
double get_saturation_density() const
void set_gamma(double ga)
Set the triaxiality coefficient gamma for Y_2_0 and Y_2_2.
double get_beta2()
return the beta2 value.
bool random_rotation_
Whether the nuclei should be rotated randomly.
void set_beta_3(double b3)
Set deformation coefficient for Y_3_0.
ThreeVector distribute_nucleon() override
Deformed Woods-Saxon sampling routine.
double nucleon_density_unnormalized(double r, double cosx, double phi) const override
Return the unnormalized deformed Woods-Saxon distribution for the given position.
void set_angle_psi(double psi)
Set the angle psi.
double get_beta4()
return the beta4 value.
double integrant_nucleon_density_phi(double r, double cosx) const
Return the integral over the azimuthal angle phi.
void set_polar_angle(double theta)
Set the nucleus polar angle.
void rotate() override
Rotates the nucleus according to members nucleus_polar_angle_ and nucleus_azimuthal_angle_ and update...
double beta4_
Deformation parameter for angular momentum l=4.
double gamma_
Triaxiality parameter for angular momentum l=2.
void set_deformation_parameters_from_config(Configuration &config)
Set parameters for spherical deformation of the nucleus from the values specified in the configuratio...
void set_beta_2(double b2)
Set deformation coefficient for Y_2_0.
Angles nuclear_orientation_
Nucleus orientation (initial profile in xz plane) in terms of a pair of angles (theta,...
double beta3_
Deformation parameter for angular momentum l=3.
double nucleon_density(double r, double cosx, double phi) const override
Return the deformed Woods-Saxon probability density for the given position.
DeformedNucleus(const std::map< PdgCode, int > &particle_list, int nTest)
Constructor for DeformedNucles which takes a particle list and the number of testparticles.
void set_beta_4(double b4)
Set deformation coefficient for Y_4_0.
void set_azimuthal_angle(double phi)
Set the nucleus azimuthal angle.
double beta2_
Deformation parameter for angular momentum l=2.
double calculate_saturation_density() const override
void set_deformation_parameters_automatic()
Sets the deformation parameters of the radius according to the current mass number.
A nucleus is a collection of particles that are initialized, before the beginning of the simulation a...
Definition: nucleus.h:27
double saturation_density_
Saturation density of this nucleus.
Definition: nucleus.h:292
The ThreeVector class represents a physical three-vector with the components .
Definition: threevector.h:31
Definition: action.h:24
double y_l_m(int l, int m, double cosx, double phi)
Spherical harmonics Y_2_0, Y_2_2, Y_3_0 and Y_4_0.