1#ifndef FEEDBACK_HINCLUDED
2#define FEEDBACK_HINCLUDED
7#include "starlifetime.h"
25 FBEffects() : dEnergy(0), dMassLoss(0), dMetals(0), dMIron(0), dMOxygen(0) { }
26 FBEffects(
double dEnergy,
double dMassLoss,
double dMetals,
double dMIron,
double dMOxygen) :
27 dEnergy(dEnergy), dMassLoss(dMassLoss), dMetals(dMetals), dMIron(dMIron), dMOxygen(dMOxygen) { }
43 double rgdHMStars[24];
44 SFEvent(
double mass,
double tform,
double mets,
double fefrac,
double oxfrac,
double lownorm,
double *hmstars) :
45 dMass(mass), dTimeForm(tform), dMetals(mets), dMFracIron(fefrac), dMFracOxygen(oxfrac), dLowNorm(lownorm) {
46 for(
int i=0;i<24;i++) rgdHMStars[i]=hmstars[i];
49 double rgdHMStars[12];
50 SFEvent(
double mass,
double tform,
double mets,
double fefrac,
double oxfrac,
double lownorm,
double *hmstars) :
51 dMass(mass), dTimeForm(tform), dMetals(mets), dMFracIron(fefrac), dMFracOxygen(oxfrac), dLowNorm(lownorm) {
52 for(
int i=0;i<12;i++) rgdHMStars[i]=hmstars[i];
56 SFEvent() : dMass(0), dTimeForm(0), dMetals(0), dMFracIron(0), dMFracOxygen(0) { }
57 SFEvent(
double mass,
double tform,
double mets,
double fefrac,
double oxfrac) :
58 dMass(mass), dTimeForm(tform), dMetals(mets), dMFracIron(fefrac), dMFracOxygen(oxfrac) { }
71 double dDeltaStarForm;
78 int bSNTurnOffCooling;
80 int bShortCoolShutoff;
82 double dExtraCoolShutoff;
84 double dTimePreFactor;
86 double dMaxCoolShutoff;
87 double dEarlyFeedbackFrac;
88 double dFBInitialMassLoad;
89 double dMultiPhaseMinTemp;
90 double dMultiPhaseMaxTime;
98 Fdbk& operator=(
const Fdbk& fb);
99 void CalcWindFeedback(
SFEvent *sfEvent,
double dTime,
100 double dDelta,
FBEffects *fbEffects)
const;
101 void CalcUVFeedback(
SFEvent *sfEvent,
double dTime,
double dDelta,
103#ifdef COOLING_MOLECULARH
104 double CalcLWFeedback(
SFEvent *sfEvent,
double dTime,
double dDelta, LWDATA *LWData)
const;
111 void NullFeedback() { imf =
new Kroupa01(); }
114 double NSNIa (
double dMassT1,
double dMassT2);
117 Fdbk(
const Fdbk& fb);
121 inline void pup(PUP::er &p);
126 imf = fb.imf->
clone();
129inline void Fdbk::pup(PUP::er &p) {
143 p | bSNTurnOffCooling;
145 p | bShortCoolShutoff;
147 p | dExtraCoolShutoff;
152 p | dEarlyFeedbackFrac;
153 p | dFBInitialMassLoad;
154 p | dMultiPhaseMinTemp;
155 p | dMultiPhaseMaxTime;
168#include "smoothparams.h"
175class AGORApreCheckSmoothParams :
public SmoothParams
177 double dTime, dDelta, H, a, gamma, etaCourant, timeToSF, dMsolUnit, dErgPerGmUnit;
190 AGORApreCheckSmoothParams() {}
191 AGORApreCheckSmoothParams(
int _iType,
int am, CSM csm,
double _dTime,
double _dDelta,
192 double _gamma,
double _etaCourant,
double _timeToSF,
Fdbk *feedback,
193 double _dMsolUnit,
double _dErgPerGmUnit) :
199 etaCourant = _etaCourant;
200 timeToSF = _timeToSF;
201 dMsolUnit = _dMsolUnit;
202 dErgPerGmUnit = _dErgPerGmUnit;
206 H = csmTime2Hub(csm,dTime);
207 a = csmTime2Exp(csm,dTime);
214 PUPable_decl(AGORApreCheckSmoothParams);
215 AGORApreCheckSmoothParams(CkMigrateMessage *m) : SmoothParams(m) {}
216 virtual void pup(PUP::er &p) {
236class DistStellarFeedbackSmoothParams :
public SmoothParams
238 double dTime, H, a, gamma;
251 DistStellarFeedbackSmoothParams() {}
252 DistStellarFeedbackSmoothParams(
int _iType,
int am, CSM csm,
double _dTime,
253 double _gamma,
Fdbk *feedback) :
261 H = csmTime2Hub(csm,dTime);
262 a = csmTime2Exp(csm,dTime);
272 PUPable_decl(DistStellarFeedbackSmoothParams);
273 DistStellarFeedbackSmoothParams(CkMigrateMessage *m) : SmoothParams(m) {}
274 virtual void pup(PUP::er &p) {
virtual void pup(PUP::er &p)
required method for remote entry call.
Definition feedback.h:216
virtual void pup(PUP::er &p)
required method for remote entry call.
Definition feedback.h:274
Class for cross processor data needed for smooth operations.
Definition GravityParticle.h:649
Class to return feedback effects.
Definition feedback.h:15
Stellar/Supernova feedback parameters and routines.
Definition feedback.h:62
void DoFeedback(GravityParticle *p, double dTime, double dDeltaYr, FBEffects *fbTotals, LWDATA *LWData, Rand &rndGen) const
Fdbk main method.
Definition feedback.cpp:447
void AddParams(PRM prm)
initialize parameters for star formation
Definition feedback.cpp:25
void CheckParams(PRM prm, struct parameters ¶m)
Definition feedback.cpp:107
Fundamental type for a particle.
Definition GravityParticle.h:364
Interface class for initial mass function.
Definition imf.h:21
virtual IMF * clone() const =0
copy IMF object
Implement IMF from Kroupa 2001.
Definition imf.h:149
routines to calculate stellar lifetimes as a function of mass and metalicity.
Definition starlifetime.h:27
basic random number generator This is implemented as an object so that it can easily be used in threa...
Definition rand.h:9
Methods for calculating the number and feedback effects of supernova.
Definition supernova.h:13
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