SEVN
Loading...
Searching...
No Matches
Circularisation.h
Go to the documentation of this file.
1//
2// Created by iorio on 7/22/22.
3//
4
5#ifndef SEVN_CIRCULARISATION_H
6#define SEVN_CIRCULARISATION_H
7
8#include <Processes.h>
9
10//Forward declaration
11class Star;
12class Binstar;
13
19class Circularisation : public Process {
20public:
21 Circularisation(_UNUSED IO *_io= nullptr, bool reg = true) {
22 if (reg) {
23 //First register to include this Property in static array
24 Register(this, &ID, name());
25 }
26 }
27 virtual ~Circularisation(){};
28
29 static size_t ID;
31 inline std::string name() override { return "Circularisation"; }
32
33 Circularisation *Instance(_UNUSED IO *_io) override;
34 virtual Circularisation *instance() {return nullptr;}
35
36protected:
37 //this a prototype for the future refactoring of the whole Process classes
38 static std::map<std::string, Circularisation *> & GetStaticMap(){
39 static std::map<std::string, Circularisation *> _locmap;
40 return _locmap;
41 }
42 static std::vector<int> & GetUsed(){
43 static std::vector<int> _used;
44 return _used;
45 }
47 GetStaticMap().insert(std::make_pair(ptr->name(), ptr));
48 GetUsed().resize(GetStaticMap().size());
49 GetUsed()[GetUsed().size()-1] = 0;
50 }
51
52
53};
54
55
56
57
63
64public:
65
66 CircularisationDisabled(_UNUSED IO *_io= nullptr, bool reg = true) : Circularisation(nullptr, false) {
67 if(reg) {
68 //Second register to handle the different options
70 }
71 }
72
73 inline std::string name() override { return "disabled"; }
76 return (new CircularisationDisabled(nullptr,false));
77 }
78 int evolve(_UNUSED Binstar *binstar) override;
79};
80
85
86public:
87 StandardCircularisation(_UNUSED IO *_io= nullptr, bool _UNUSED = true) : Circularisation(nullptr, false) {}
88
95 int evolve(_UNUSED Binstar *binstar) override;
96
97
103 int special_evolve(_UNUSED Binstar *binstar) override;
104
105protected:
106
107 bool check_condition=false;
116 virtual int circularise(_UNUSED Binstar *binstar) = 0;
117
123 virtual bool check_activation(Binstar *binstar) const;
124
125
126 //Log message
134 virtual std::string log_message_circ(Binstar *binstar, double a_new, double e_new) const;
135
136};
137
148
149public:
150
151 CircularisationPeriastron(_UNUSED IO *_io= nullptr, bool reg = true) : StandardCircularisation(nullptr, false) {
152 if(reg) {
153 //Second register to handle the different options
154 Register_specific(this);
155 }
156 }
157
158 inline std::string name() override { return "periastron"; }
161 return (new CircularisationPeriastron(nullptr,false));
162 }
163
164protected:
165
166 int circularise(_UNUSED Binstar *binstar) override;
167
168};
169
180
181public:
182
183 CircularisationPeriastronFull(_UNUSED IO *_io= nullptr, bool reg = true) : CircularisationPeriastron(nullptr, false) {
184 if(reg) {
185 //Second register to handle the different options
186 Register_specific(this);
187 }
188 }
189
190 inline std::string name() override { return "periastron_full"; }
193 return (new CircularisationPeriastronFull(nullptr,false));
194 }
195
196protected:
197
205 bool check_activation(Binstar *binstar) const override;
206
207};
208
215
216public:
217
218 CircularisationAngMom(_UNUSED IO *_io= nullptr, bool reg = true) : StandardCircularisation(nullptr, false) {
219 if(reg) {
220 //Second register to handle the different options
221 Register_specific(this);
222 }
223 }
224
225 inline std::string name() override { return "angmom"; }
228 return (new CircularisationAngMom(nullptr,false));
229 }
230
231protected:
232
233 int circularise(_UNUSED Binstar *binstar) override;
234
235};
236
246
247public:
248
249 CircularisationSemimajor(_UNUSED IO *_io= nullptr, bool reg = true) : StandardCircularisation(nullptr, false) {
250 if(reg) {
251 //Second register to handle the different options
252 Register_specific(this);
253 }
254 }
255
256 inline std::string name() override { return "semimajor"; }
259 return (new CircularisationSemimajor(nullptr,false));
260 }
261
262protected:
263
264 int circularise(_UNUSED Binstar *binstar) override;
265
266};
267
268
269
270
271#endif //SEVN_CIRCULARISATION_H
#define _UNUSED
Definition: BinaryProperty.h:20
Definition: binstar.h:26
Definition: Circularisation.h:214
CircularisationAngMom(_UNUSED IO *_io=nullptr, bool reg=true)
Definition: Circularisation.h:218
static CircularisationAngMom _circularisationangmom
Definition: Circularisation.h:226
std::string name() override
Definition: Circularisation.h:225
CircularisationAngMom * instance() override
Definition: Circularisation.h:227
int circularise(_UNUSED Binstar *binstar) override
Circularisation Angmom.
Definition: Circularisation.cpp:159
Definition: Circularisation.h:62
static CircularisationDisabled _circularisationdisabled
Definition: Circularisation.h:74
CircularisationDisabled(_UNUSED IO *_io=nullptr, bool reg=true)
Definition: Circularisation.h:66
CircularisationDisabled * instance() override
Definition: Circularisation.h:75
std::string name() override
Definition: Circularisation.h:73
int evolve(_UNUSED Binstar *binstar) override
Definition: Circularisation.cpp:35
Definition: Circularisation.h:19
static std::map< std::string, Circularisation * > & GetStaticMap()
Definition: Circularisation.h:38
static void Register_specific(Circularisation *ptr)
Definition: Circularisation.h:46
Circularisation(_UNUSED IO *_io=nullptr, bool reg=true)
Definition: Circularisation.h:21
virtual ~Circularisation()
Definition: Circularisation.h:27
Circularisation * Instance(_UNUSED IO *_io) override
Definition: Circularisation.cpp:10
static std::vector< int > & GetUsed()
Definition: Circularisation.h:42
std::string name() override
Definition: Circularisation.h:31
static size_t ID
Definition: Circularisation.h:29
static Circularisation _circularisation
Definition: Circularisation.h:30
virtual Circularisation * instance()
Definition: Circularisation.h:34
Definition: Circularisation.h:179
static CircularisationPeriastronFull _circularisationperiastronfull
Definition: Circularisation.h:191
std::string name() override
Definition: Circularisation.h:190
CircularisationPeriastronFull(_UNUSED IO *_io=nullptr, bool reg=true)
Definition: Circularisation.h:183
CircularisationPeriastronFull * instance() override
Definition: Circularisation.h:192
bool check_activation(Binstar *binstar) const override
Circularisation PeriastronFull.
Definition: Circularisation.cpp:130
Definition: Circularisation.h:147
std::string name() override
Definition: Circularisation.h:158
int circularise(_UNUSED Binstar *binstar) override
Circularisation Periastron.
Definition: Circularisation.cpp:105
CircularisationPeriastron * instance() override
Definition: Circularisation.h:160
CircularisationPeriastron(_UNUSED IO *_io=nullptr, bool reg=true)
Definition: Circularisation.h:151
static CircularisationPeriastron _circularisationperiastron
Definition: Circularisation.h:159
Definition: Circularisation.h:245
std::string name() override
Definition: Circularisation.h:256
CircularisationSemimajor(_UNUSED IO *_io=nullptr, bool reg=true)
Definition: Circularisation.h:249
int circularise(_UNUSED Binstar *binstar) override
Definition: Circularisation.cpp:181
CircularisationSemimajor * instance() override
Definition: Circularisation.h:258
static CircularisationSemimajor _circularisationsemimajor
Definition: Circularisation.h:257
Definition: IO.h:53
Definition: Processes.h:43
void Register(Process *_p, size_t *id, const std::string &_name)
Definition: Processes.h:159
static size_t size
Definition: Processes.h:140
Definition: Circularisation.h:84
virtual int circularise(_UNUSED Binstar *binstar)=0
int special_evolve(_UNUSED Binstar *binstar) override
Definition: Circularisation.cpp:72
StandardCircularisation(_UNUSED IO *_io=nullptr, bool _UNUSED=true)
Definition: Circularisation.h:87
virtual std::string log_message_circ(Binstar *binstar, double a_new, double e_new) const
Definition: Circularisation.cpp:85
bool check_condition
Definition: Circularisation.h:107
virtual bool check_activation(Binstar *binstar) const
Definition: Circularisation.cpp:94
int evolve(_UNUSED Binstar *binstar) override
Definition: Circularisation.cpp:41
Definition: star.h:39