changa 3.5
Loading...
Searching...
No Matches
sinks.h
1#ifndef SINKS_HINCLUDED
2#define SINKS_HINCLUDED
3
4class Sinks
5{
6 //
7 // Sink parameters
8 //
9 public:
10 int bDoSinks;
11 int bBHSink;
12 int bSmallBHSmooth;
13 int bBHTurnOffCooling;
14 int bDoBHKick;
15 double dDeltaStarForm;
16 double dKmPerSecUnit;
17 double dBHSinkEddEff;
18 double dBHSinkFeedbackEff;
19 double dBHSinkAlpha;
20 double dBHSinkEddFactor;
21 double dBHSinkFeedbackFactor;
22 int bBHMindv;
23 int bBHAccreteAll;
24 int bDoSinksAtStart;
25 int bSinkThermal;
26 double dSinkRadius;
27 double dSinkBoundOrbitRadius;
28 double dSinkMustAccreteRadius;
29 double dDeltaSink;
30 double dSinkCurrentDelta;
31 double dSinkMassMin;
32 int iSinkRung;
33 int iSinkCurrentRung;
34 int bSinkForm;
35 int nJeans;
36 double dJeansConstant;
37 int bSinkFormJeans;
38 int bSinkFormDivV;
39 double dSinkFormDivVCoeff;
40 int bSinkFormDivAcc;
41 double dSinkFormDivAccCoeff;
42 int bSinkFormDV;
43 int bSinkFormPotMin;
44 double dSinkFormDensity;
45 double dSinkTimeEligible;
46 int bSinkFormSimple;
47 int nSinkFormMin;
48 public:
49 void AddParams(PRM prm, struct parameters &param);
50 void CheckParams(PRM prm, struct parameters &param);
51 inline void pup(PUP::er &p);
52 };
53
54inline void Sinks::pup(PUP::er &p) {
55 p|bDoSinks;
56 p|bBHSink;
57 p|bSmallBHSmooth;
58 p|bBHTurnOffCooling;
59 p|bDoBHKick;
60 p|dDeltaStarForm;
61 p|dKmPerSecUnit;
62 p|dBHSinkEddEff;
63 p|dBHSinkFeedbackEff;
64 p|dBHSinkAlpha;
65 p|dBHSinkEddFactor;
66 p|dBHSinkFeedbackFactor;
67 p|bBHMindv;
68 p|bBHAccreteAll;
69 p|bDoSinksAtStart;
70 p|bSinkThermal;
71 p|dSinkRadius;
72 p|dSinkBoundOrbitRadius;
73 p|dSinkMustAccreteRadius;
74 p|dDeltaSink;
75 p|dSinkCurrentDelta;
76 p|dSinkMassMin;
77 p|iSinkRung;
78 p|iSinkCurrentRung;
79 p|bSinkForm;
80 p|nJeans;
81 p|dJeansConstant;
82 p|bSinkFormJeans;
83 p|bSinkFormDivV;
84 p|dSinkFormDivVCoeff;
85 p|bSinkFormDivAcc;
86 p|dSinkFormDivAccCoeff;
87 p|bSinkFormDV;
88 p|bSinkFormPotMin;
89 p|dSinkFormDensity;
90 p|dSinkTimeEligible;
91 p|bSinkFormSimple;
92 p|nSinkFormMin;
93 }
94
95class SinkFormTestSmoothParams : public SmoothParams
96{
97 protected:
98 Sinks s;
99
100 virtual void fcnSmooth(GravityParticle *p, int nSmooth,
101 pqSmoothNode *nList);
102 virtual int isSmoothActive(GravityParticle *p);
106 virtual void initSmoothCache(GravityParticle *p);
107 virtual void combSmoothCache(GravityParticle *p1,
109 public:
111 SinkFormTestSmoothParams(int _iType, int am, Sinks _s) {
112 iType = _iType;
113 activeRung = am;
114 s = _s;
115 bUseBallMax = 0;
116 }
117 PUPable_decl(SinkFormTestSmoothParams);
118 SinkFormTestSmoothParams(CkMigrateMessage *m) : SmoothParams(m) {}
119 virtual void pup(PUP::er &p) {
120 SmoothParams::pup(p);//Call base class
121 p|s;
122 }
123 };
124
125class SinkFormSmoothParams : public SmoothParams
126{
127 protected:
128 double dTime;
129 double a, H; // Cosmological parameters
130 Sinks s;
131
132 virtual void fcnSmooth(GravityParticle *p, int nSmooth,
133 pqSmoothNode *nList);
134 virtual int isSmoothActive(GravityParticle *p);
139 virtual void combSmoothCache(GravityParticle *p1,
141 public:
143 SinkFormSmoothParams(int _iType, int am, CSM csm, double _dTime,
144 Sinks _s) {
145 iType = _iType;
146 activeRung = am;
147 dTime = _dTime;
148 if(csm->bComove) {
149 H = csmTime2Hub(csm,dTime);
150 a = csmTime2Exp(csm,dTime);
151 }
152 else {
153 H = 0.0;
154 a = 1.0;
155 }
156 s = _s;
157 bUseBallMax = 0;
158 }
159 PUPable_decl(SinkFormSmoothParams);
160 SinkFormSmoothParams(CkMigrateMessage *m) : SmoothParams(m) {}
161 virtual void pup(PUP::er &p) {
162 SmoothParams::pup(p);//Call base class
163 p|dTime;
164 p|a;
165 p|H;
166 p|s;
167 }
168 };
169
170class BHDensitySmoothParams : public SmoothParams
171{
172 protected:
173 double dTime;
174 double dDelta;
175 double a, H; // Cosmological parameters
176 Sinks s;
177
178 virtual void fcnSmooth(GravityParticle *p, int nSmooth,
179 pqSmoothNode *nList);
180 virtual int isSmoothActive(GravityParticle *p);
181 virtual void initTreeParticle(GravityParticle *p);
184 virtual void initSmoothCache(GravityParticle *p);
185 virtual void combSmoothCache(GravityParticle *p1,
187 public:
189 BHDensitySmoothParams(int _iType, int am, CSM csm, double _dTime,
190 double _dDelta, Sinks _s) {
191 iType = _iType;
192 activeRung = am;
193 dTime = _dTime;
194 dDelta = _dDelta;
195 if(csm->bComove) {
196 H = csmTime2Hub(csm,dTime);
197 a = csmTime2Exp(csm,dTime);
198 }
199 else {
200 H = 0.0;
201 a = 1.0;
202 }
203 s = _s;
204 }
205 PUPable_decl(BHDensitySmoothParams);
206 BHDensitySmoothParams(CkMigrateMessage *m) : SmoothParams(m) {}
207 virtual void pup(PUP::er &p) {
208 SmoothParams::pup(p);//Call base class
209 p|dTime;
210 p|dDelta;
211 p|a;
212 p|H;
213 p|s;
214 }
215 };
216
217class BHAccreteSmoothParams : public SmoothParams
218{
219 protected:
220 double a, H; // Cosmological parameters
221 double dTime;
223 double dDelta;
224 Sinks s;
225 double gamma; // Adiabatic index for pressure
226 double dMinGasMass;
227
228 virtual void fcnSmooth(GravityParticle *p, int nSmooth,
229 pqSmoothNode *nList);
230 virtual int isSmoothActive(GravityParticle *p);
231 virtual void initTreeParticle(GravityParticle *p);
232 virtual void postTreeParticle(GravityParticle *p);
234 virtual void initSmoothCache(GravityParticle *p);
235 virtual void combSmoothCache(GravityParticle *p1,
237 public:
239 BHAccreteSmoothParams(int _iType, int am, CSM csm, double _dTime,
240 double _dDelta, Sinks _s, double _gamma,
241 double _dMinGasMass) {
242 iType = _iType;
243 activeRung = am;
244 dTime = _dTime;
245 dDelta = _dDelta;
246 if(csm->bComove) {
247 H = csmTime2Hub(csm,dTime);
248 a = csmTime2Exp(csm,dTime);
249 }
250 else {
251 H = 0.0;
252 a = 1.0;
253 }
254 s = _s;
255 gamma = _gamma;
256 dMinGasMass = _dMinGasMass;
257 }
258 PUPable_decl(BHAccreteSmoothParams);
259 BHAccreteSmoothParams(CkMigrateMessage *m) : SmoothParams(m) {}
260 virtual void pup(PUP::er &p) {
261 SmoothParams::pup(p);//Call base class
262 p|a;
263 p|H;
264 p|dTime;
265 p|dDelta;
266 p|s;
267 p|gamma;
268 p|dMinGasMass;
269 }
270 };
271
272class BHIdentifySmoothParams : public SmoothParams
273{
274 protected:
275 double a, H; // Cosmological parameters
276
277 virtual void fcnSmooth(GravityParticle *p, int nSmooth,
278 pqSmoothNode *nList);
279 virtual int isSmoothActive(GravityParticle *p);
283 virtual void initSmoothCache(GravityParticle *p);
284 virtual void combSmoothCache(GravityParticle *p1,
286 public:
288 BHIdentifySmoothParams(int _iType, int am, CSM csm, double dTime,
289 Sinks _s) {
290 iType = _iType;
291 activeRung = am;
292 if(csm->bComove) {
293 H = csmTime2Hub(csm,dTime);
294 a = csmTime2Exp(csm,dTime);
295 }
296 else {
297 H = 0.0;
298 a = 1.0;
299 }
300 }
301 PUPable_decl(BHIdentifySmoothParams);
302 BHIdentifySmoothParams(CkMigrateMessage *m) : SmoothParams(m) {}
303 virtual void pup(PUP::er &p) {
304 SmoothParams::pup(p);//Call base class
305 p|a;
306 p|H;
307 }
308 };
309
310class BHSinkMergeSmoothParams : public SmoothParams
311{
312 protected:
313 double a, H; // Cosmological parameters
314 double dTime;
315 Sinks s;
316
317 virtual void fcnSmooth(GravityParticle *p, int nSmooth,
318 pqSmoothNode *nList);
319 virtual int isSmoothActive(GravityParticle *p);
324 virtual void combSmoothCache(GravityParticle *p1,
326
327 public:
329 BHSinkMergeSmoothParams(int _iType, int am, CSM csm, double _dTime,
330 Sinks _s, double _gamma) {
331 iType = _iType;
332 activeRung = am;
333 dTime = _dTime;
334 if(csm->bComove) {
335 H = csmTime2Hub(csm,dTime);
336 a = csmTime2Exp(csm,dTime);
337 }
338 else {
339 H = 0.0;
340 a = 1.0;
341 }
342 s = _s;
343 }
344 PUPable_decl(BHSinkMergeSmoothParams);
345 BHSinkMergeSmoothParams(CkMigrateMessage *m) : SmoothParams(m) {}
346 virtual void pup(PUP::er &p) {
347 SmoothParams::pup(p);//Call base class
348 p|a;
349 p|H;
350 p|dTime;
351 p|s;
352 }
353 };
354
355class SinkAccreteTestSmoothParams : public SmoothParams
356{
357 protected:
358 Sinks s;
359
360 virtual void fcnSmooth(GravityParticle *p, int nSmooth,
361 pqSmoothNode *nList);
362 virtual int isSmoothActive(GravityParticle *p);
366 virtual void initSmoothCache(GravityParticle *p);
367 virtual void combSmoothCache(GravityParticle *p1,
369 public:
371 SinkAccreteTestSmoothParams(int _iType, int am, double dTime,
372 Sinks _s) {
373 iType = _iType;
374 activeRung = am;
375 s = _s;
376 bUseBallMax = 0;
377 }
378 PUPable_decl(SinkAccreteTestSmoothParams);
379 SinkAccreteTestSmoothParams(CkMigrateMessage *m) : SmoothParams(m) {}
380 virtual void pup(PUP::er &p) {
381 SmoothParams::pup(p);//Call base class
382 p|s;
383 }
384 };
385
386class SinkingAverageSmoothParams : public SmoothParams
387{
388 protected:
389 Sinks s;
390
391 virtual void fcnSmooth(GravityParticle *p, int nSmooth,
392 pqSmoothNode *nList);
393 virtual int isSmoothActive(GravityParticle *p);
400 public:
402 SinkingAverageSmoothParams(int _iType, int am, double dTime,
403 Sinks _s) {
404 iType = _iType;
405 activeRung = am;
406 s = _s;
407 }
408 PUPable_decl(SinkingAverageSmoothParams);
409 SinkingAverageSmoothParams(CkMigrateMessage *m) : SmoothParams(m) {}
410 virtual void pup(PUP::er &p) {
411 SmoothParams::pup(p);//Call base class
412 p|s;
413 }
414 };
415
416class SinkAccreteSmoothParams : public SmoothParams
417{
418 protected:
419 Sinks s;
420
421 virtual void fcnSmooth(GravityParticle *p, int nSmooth,
422 pqSmoothNode *nList);
423 virtual int isSmoothActive(GravityParticle *p);
427 virtual void initSmoothCache(GravityParticle *p);
428 virtual void combSmoothCache(GravityParticle *p1,
430 public:
432 SinkAccreteSmoothParams(int _iType, int am, double dTime,
433 Sinks _s) {
434 iType = _iType;
435 activeRung = am;
436 s = _s;
437 bUseBallMax = 0;
438 }
439 PUPable_decl(SinkAccreteSmoothParams);
440 SinkAccreteSmoothParams(CkMigrateMessage *m) : SmoothParams(m) {}
441 virtual void pup(PUP::er &p) {
442 SmoothParams::pup(p);//Call base class
443 p|s;
444 }
445 };
446#endif
Definition sinks.h:218
virtual void postTreeParticle(GravityParticle *p)
calculation on all tree particles after all walks are done
Definition sinks.cpp:1596
virtual void initSmoothCache(GravityParticle *p)
initialize particles as they come into the cache
Definition sinks.cpp:1239
virtual int isSmoothActive(GravityParticle *p)
Particle is doing a neighbor search.
Definition sinks.cpp:1221
virtual void fcnSmooth(GravityParticle *p, int nSmooth, pqSmoothNode *nList)
Function to apply to smooth particle and neighbors.
Definition sinks.cpp:1290
virtual void combSmoothCache(GravityParticle *p1, ExternalSmoothParticle *p2)
combine cache copy with home particle
Definition sinks.cpp:1251
virtual void pup(PUP::er &p)
required method for remote entry call.
Definition sinks.h:260
double dDelta
Big timestep to convert rungs into delta t.
Definition sinks.h:223
virtual void initTreeParticle(GravityParticle *p)
initialize particles in tree but not smoothed
Definition sinks.cpp:1228
virtual void initSmoothParticle(GravityParticle *p)
initialize particles to be smoothed
Definition sinks.h:233
Definition sinks.h:171
virtual void initTreeParticle(GravityParticle *p)
initialize particles in tree but not smoothed
Definition sinks.cpp:971
virtual void fcnSmooth(GravityParticle *p, int nSmooth, pqSmoothNode *nList)
Function to apply to smooth particle and neighbors.
Definition sinks.cpp:1011
virtual void initSmoothCache(GravityParticle *p)
initialize particles as they come into the cache
Definition sinks.cpp:979
virtual int isSmoothActive(GravityParticle *p)
Particle is doing a neighbor search.
Definition sinks.cpp:964
virtual void pup(PUP::er &p)
required method for remote entry call.
Definition sinks.h:207
virtual void initSmoothParticle(GravityParticle *p)
initialize particles to be smoothed
Definition sinks.h:183
virtual void combSmoothCache(GravityParticle *p1, ExternalSmoothParticle *p2)
combine cache copy with home particle
Definition sinks.cpp:989
virtual void postTreeParticle(GravityParticle *p)
calculation on all tree particles after all walks are done
Definition sinks.h:182
Definition sinks.h:273
virtual void combSmoothCache(GravityParticle *p1, ExternalSmoothParticle *p2)
combine cache copy with home particle
Definition sinks.cpp:1619
virtual void initSmoothCache(GravityParticle *p)
initialize particles as they come into the cache
Definition sinks.cpp:1614
virtual int isSmoothActive(GravityParticle *p)
Particle is doing a neighbor search.
Definition sinks.cpp:1607
virtual void fcnSmooth(GravityParticle *p, int nSmooth, pqSmoothNode *nList)
Function to apply to smooth particle and neighbors.
Definition sinks.cpp:1626
virtual void pup(PUP::er &p)
required method for remote entry call.
Definition sinks.h:303
virtual void initSmoothParticle(GravityParticle *p)
initialize particles to be smoothed
Definition sinks.h:282
virtual void postTreeParticle(GravityParticle *p)
calculation on all tree particles after all walks are done
Definition sinks.h:281
virtual void initTreeParticle(GravityParticle *p)
initialize particles in tree but not smoothed
Definition sinks.h:280
Definition sinks.h:311
virtual int isSmoothActive(GravityParticle *p)
Particle is doing a neighbor search.
Definition sinks.cpp:1674
virtual void initTreeParticle(GravityParticle *p)
initialize particles in tree but not smoothed
Definition sinks.h:320
virtual void initSmoothCache(GravityParticle *p)
initialize particles as they come into the cache
Definition sinks.h:323
virtual void fcnSmooth(GravityParticle *p, int nSmooth, pqSmoothNode *nList)
Function to apply to smooth particle and neighbors.
Definition sinks.cpp:1681
virtual void postTreeParticle(GravityParticle *p)
calculation on all tree particles after all walks are done
Definition sinks.h:321
virtual void pup(PUP::er &p)
required method for remote entry call.
Definition sinks.h:346
virtual void combSmoothCache(GravityParticle *p1, ExternalSmoothParticle *p2)
combine cache copy with home particle
Definition sinks.cpp:1782
virtual void initSmoothParticle(GravityParticle *p)
initialize particles to be smoothed
Definition sinks.h:322
Class for cross processor data needed for smooth operations.
Definition GravityParticle.h:649
Fundamental type for a particle.
Definition GravityParticle.h:364
Definition sinks.h:417
virtual void fcnSmooth(GravityParticle *p, int nSmooth, pqSmoothNode *nList)
Function to apply to smooth particle and neighbors.
Definition sinks.cpp:2009
virtual void initTreeParticle(GravityParticle *p)
initialize particles in tree but not smoothed
Definition sinks.h:424
virtual void pup(PUP::er &p)
required method for remote entry call.
Definition sinks.h:441
virtual void postTreeParticle(GravityParticle *p)
calculation on all tree particles after all walks are done
Definition sinks.h:425
virtual int isSmoothActive(GravityParticle *p)
Particle is doing a neighbor search.
Definition sinks.cpp:1928
virtual void initSmoothParticle(GravityParticle *p)
initialize particles to be smoothed
Definition sinks.h:426
virtual void initSmoothCache(GravityParticle *p)
initialize particles as they come into the cache
Definition sinks.cpp:1935
virtual void combSmoothCache(GravityParticle *p1, ExternalSmoothParticle *p2)
combine cache copy with home particle
Definition sinks.cpp:1944
Definition sinks.h:356
virtual void initTreeParticle(GravityParticle *p)
initialize particles in tree but not smoothed
Definition sinks.h:363
virtual int isSmoothActive(GravityParticle *p)
Particle is doing a neighbor search.
Definition sinks.cpp:1790
virtual void combSmoothCache(GravityParticle *p1, ExternalSmoothParticle *p2)
combine cache copy with home particle
Definition sinks.cpp:1815
virtual void pup(PUP::er &p)
required method for remote entry call.
Definition sinks.h:380
virtual void initSmoothCache(GravityParticle *p)
initialize particles as they come into the cache
Definition sinks.cpp:1804
virtual void postTreeParticle(GravityParticle *p)
calculation on all tree particles after all walks are done
Definition sinks.h:364
virtual void fcnSmooth(GravityParticle *p, int nSmooth, pqSmoothNode *nList)
Function to apply to smooth particle and neighbors.
Definition sinks.cpp:1837
virtual void initSmoothParticle(GravityParticle *p)
initialize particles to be smoothed
Definition sinks.h:365
Definition sinks.h:126
virtual void postTreeParticle(GravityParticle *p)
calculation on all tree particles after all walks are done
Definition sinks.h:136
virtual void initTreeParticle(GravityParticle *p)
initialize particles in tree but not smoothed
Definition sinks.h:135
virtual void initSmoothParticle(GravityParticle *p)
initialize particles to be smoothed
Definition sinks.h:137
virtual void initSmoothCache(GravityParticle *p)
initialize particles as they come into the cache
Definition sinks.h:138
virtual void fcnSmooth(GravityParticle *p, int nSmooth, pqSmoothNode *nList)
Function to apply to smooth particle and neighbors.
Definition sinks.cpp:578
virtual int isSmoothActive(GravityParticle *p)
Particle is doing a neighbor search.
Definition sinks.cpp:562
virtual void combSmoothCache(GravityParticle *p1, ExternalSmoothParticle *p2)
combine cache copy with home particle
Definition sinks.cpp:569
virtual void pup(PUP::er &p)
required method for remote entry call.
Definition sinks.h:161
Definition sinks.h:96
virtual void fcnSmooth(GravityParticle *p, int nSmooth, pqSmoothNode *nList)
Function to apply to smooth particle and neighbors.
Definition sinks.cpp:491
virtual void pup(PUP::er &p)
required method for remote entry call.
Definition sinks.h:119
virtual void postTreeParticle(GravityParticle *p)
calculation on all tree particles after all walks are done
Definition sinks.h:104
virtual void initTreeParticle(GravityParticle *p)
initialize particles in tree but not smoothed
Definition sinks.h:103
virtual void initSmoothCache(GravityParticle *p)
initialize particles as they come into the cache
Definition sinks.cpp:468
virtual void initSmoothParticle(GravityParticle *p)
initialize particles to be smoothed
Definition sinks.h:105
virtual void combSmoothCache(GravityParticle *p1, ExternalSmoothParticle *p2)
combine cache copy with home particle
Definition sinks.cpp:477
virtual int isSmoothActive(GravityParticle *p)
Particle is doing a neighbor search.
Definition sinks.cpp:456
Definition sinks.h:387
virtual void fcnSmooth(GravityParticle *p, int nSmooth, pqSmoothNode *nList)
Function to apply to smooth particle and neighbors.
Definition sinks.cpp:1898
virtual void combSmoothCache(GravityParticle *p1, ExternalSmoothParticle *p2)
combine cache copy with home particle
Definition sinks.h:398
virtual void initTreeParticle(GravityParticle *p)
initialize particles in tree but not smoothed
Definition sinks.h:394
virtual void pup(PUP::er &p)
required method for remote entry call.
Definition sinks.h:410
virtual void postTreeParticle(GravityParticle *p)
calculation on all tree particles after all walks are done
Definition sinks.h:395
virtual void initSmoothParticle(GravityParticle *p)
initialize particles to be smoothed
Definition sinks.h:396
virtual int isSmoothActive(GravityParticle *p)
Particle is doing a neighbor search.
Definition sinks.cpp:1893
virtual void initSmoothCache(GravityParticle *p)
initialize particles as they come into the cache
Definition sinks.h:397
Definition sinks.h:5
void AddParams(PRM prm, struct parameters &param)
initialize parameters for sinks
Definition sinks.cpp:28
void CheckParams(PRM prm, struct parameters &param)
check sink parameters
Definition sinks.cpp:161
int iType
Particle type to smooth over; "TreeActive".
Definition smoothparams.h:11
virtual void pup(PUP::er &p)
required method for remote entry call.
Definition smoothparams.h:45
int activeRung
Currently active rung.
Definition smoothparams.h:12
int bUseBallMax
Definition smoothparams.h:14
Object for priority queue entry.
Definition smooth.h:13
Hold parameters of the run.
Definition parameters.h:15