SEVN
Loading...
Searching...
No Matches
specialkicks.h
Go to the documentation of this file.
1/*
2 Created by iorio on 7/26/22.
3 it includes special "ad-hoc" kick models
4- Class CC15: Kicks as in model CC15 by Giacobbo&Mapelli2018 https://ui.adsabs.harvard.edu/abs/2018MNRAS.480.2011G/abstract
5- Class EC15CC265: Kicks as in models alpha in Giacobbo&Mapelli2018 https://ui.adsabs.harvard.edu/abs/2018MNRAS.480.2011G/abstract
6- Class ECUS30: Kicks similar to Broekgaarden+21 (https://arxiv.org/pdf/2103.02608.pdf)
7*/
8
9#ifndef SEVN_SPECIALKICKS_H
10#define SEVN_SPECIALKICKS_H
11
12#include <kicks.h>
13#include <hobbs.h>
14
15
21class CC15 : public Hobbs {
22
23public:
24
25 CC15(bool reg = true) : gaussian15(0,sigma){
26 if(reg) {
27 Register(this, name());
28 }
29 }
30
32 return (new CC15(false));
33 }
34
35 static CC15 _cc15;
36 void _apply(Star *s) override;
37 inline std::string name() override { return "cc15";}
38
39protected:
40
41 const double sigma=15.0;
42 std::normal_distribution<> gaussian15;
43};
44
45
51class EC15CC265 : public Hobbs{
52
54 if(reg) {
55 Register(this, name());
56 }
57 }
58
60
61 void _apply(Star *s) override;
62
63 //when I use the regist function I use the non trivial constructor of the Hermite6th class
65 return (new EC15CC265(false));
66 }
67
68 inline std::string name() override { return "ec15cc265"; }
69
70protected:
71
72 const double sigma_ecsn=15.0;
73 const double sigma_ccsn=256.0;
74 //Make them static? Maybe
75 std::normal_distribution<> gaussian_ecsn;
76 std::normal_distribution<> gaussian_ccsn;
77};
78
79
88class ECUS30 : public Kicks{
89
90 ECUS30(bool reg = true) {
91 if(reg) {
92 Register(this, name());
93 }
94 }
95
97
98 void _apply(Star *s) override;
99
100 //when I use the regist function I use the non trivial constructor of the Hermite6th class
102 return (new ECUS30(false));
103 }
104
105 inline std::string name() override { return "ecus30"; }
106
107protected:
108
109 const double sigma_ecsn=30.0;
110};
111
112
113#endif //SEVN_SPECIALKICKS_H
Definition: specialkicks.h:21
CC15(bool reg=true)
Definition: specialkicks.h:25
CC15 * instance()
Definition: specialkicks.h:31
std::string name() override
Definition: specialkicks.h:37
void _apply(Star *s) override
Definition: specialkicks.cpp:11
const double sigma
Definition: specialkicks.h:41
static CC15 _cc15
Definition: specialkicks.h:35
std::normal_distribution gaussian15
Definition: specialkicks.h:42
Definition: specialkicks.h:51
EC15CC265(bool reg=true)
Definition: specialkicks.h:53
EC15CC265 * instance()
Definition: specialkicks.h:64
static EC15CC265 _ec15cc265
Definition: specialkicks.h:59
std::string name() override
Definition: specialkicks.h:68
std::normal_distribution gaussian_ccsn
Definition: specialkicks.h:76
const double sigma_ecsn
Definition: specialkicks.h:72
std::normal_distribution gaussian_ecsn
Definition: specialkicks.h:75
const double sigma_ccsn
Definition: specialkicks.h:73
void _apply(Star *s) override
Definition: specialkicks.cpp:30
Definition: specialkicks.h:88
const double sigma_ecsn
Definition: specialkicks.h:109
static ECUS30 _ecus30
Definition: specialkicks.h:96
ECUS30 * instance()
Definition: specialkicks.h:101
ECUS30(bool reg=true)
Definition: specialkicks.h:90
void _apply(Star *s) override
Definition: specialkicks.cpp:58
std::string name() override
Definition: specialkicks.h:105
Definition: hobbs.h:38
Definition: kicks.h:24
void Register(Kicks *ptr, const std::string &_name)
Definition: kicks.h:56
Definition: star.h:39