1 #ifndef FEEDBACK_HINCLUDED
2 #define FEEDBACK_HINCLUDED
4 #include "parameters.h"
7 #include "starlifetime.h"
23 FBEffects() : dEnergy(0), dMassLoss(0), dMetals(0), dMIron(0), dMOxygen(0) { }
24 FBEffects(
double dEnergy,
double dMassLoss,
double dMetals,
double dMIron,
double dMOxygen) :
25 dEnergy(dEnergy), dMassLoss(dMassLoss), dMetals(dMetals), dMIron(dMIron), dMOxygen(dMOxygen) { }
39 SFEvent() : dMass(0), dTimeForm(0), dMetals(0), dMFracIron(0), dMFracOxygen(0) { }
40 SFEvent(
double mass,
double tform,
double mets,
double fefrac,
double oxfrac) :
41 dMass(mass), dTimeForm(tform), dMetals(mets), dMFracIron(fefrac), dMFracOxygen(oxfrac) { }
45 class Fdbk :
public PUP::able {
48 void CalcWindFeedback(
SFEvent *sfEvent,
double dTime,
49 double dDelta,
FBEffects *fbEffects)
const;
50 void CalcUVFeedback(
SFEvent *sfEvent,
double dTime,
double dDelta,
52 #ifdef COOLING_MOLECULARH
53 double CalcLWFeedback(
SFEvent *sfEvent,
double dTime,
double dDelta)
const;
64 double dDeltaStarForm;
71 int bSNTurnOffCooling;
73 int bShortCoolShutoff;
75 double dExtraCoolShutoff;
77 double dTimePreFactor;
79 double dMaxCoolShutoff;
80 double dEarlyFeedbackFrac;
81 double dFBInitialMassLoad;
82 double dMultiPhaseMinTemp;
83 double dMultiPhaseMaxTime;
89 void NullFeedback() { imf =
new Kroupa01(); }
92 double NSNIa (
double dMassT1,
double dMassT2);
97 Fdbk(CkMigrateMessage *m) : PUP::able(m) {}
101 inline void pup(PUP::er &p);
105 inline Fdbk::Fdbk(
const Fdbk& fb) {
106 strcpy(achIMF, fb.achIMF);
107 dDeltaStarForm = fb.dDeltaStarForm;
108 dErgPerGmUnit = fb.dErgPerGmUnit;
109 dGmUnit = fb.dGmUnit;
110 dGmPerCcUnit = fb.dGmPerCcUnit;
111 dErgUnit = fb.dErgUnit;
112 dSecUnit = fb.dSecUnit;
113 dMaxGasMass = fb.dMaxGasMass;
115 dInitGasMass = fb.dInitGasMass;
117 bSNTurnOffCooling = fb.bSNTurnOffCooling;
118 bSmallSNSmooth = fb.bSmallSNSmooth;
119 bShortCoolShutoff = fb.bShortCoolShutoff;
120 bAGORAFeedback = fb.bAGORAFeedback;
121 dExtraCoolShutoff = fb.dExtraCoolShutoff;
122 dRadPreFactor = fb.dRadPreFactor;
123 dTimePreFactor = fb.dTimePreFactor;
124 nSmoothFeedback = fb.nSmoothFeedback;
125 dMaxCoolShutoff = fb.dMaxCoolShutoff;
126 dEarlyFeedbackFrac = fb.dEarlyFeedbackFrac;
127 dFBInitialMassLoad = fb.dFBInitialMassLoad;
128 dMultiPhaseMinTemp = fb.dMultiPhaseMinTemp;
129 dMultiPhaseMaxTime = fb.dMultiPhaseMaxTime;
130 dEarlyETotal = fb.dEarlyETotal;
133 imf = fb.imf->
clone();
136 inline void Fdbk::pup(PUP::er &p) {
148 p | bSNTurnOffCooling;
150 p | bShortCoolShutoff;
152 p | dExtraCoolShutoff;
157 p | dEarlyFeedbackFrac;
158 p | dFBInitialMassLoad;
159 p | dMultiPhaseMinTemp;
160 p | dMultiPhaseMaxTime;
175 #include "smoothparams.h"
184 double dTime, dDelta, H, a, gamma, etaCourant, timeToSF, dMsolUnit, dErgPerGmUnit;
199 double _gamma,
double _etaCourant,
double _timeToSF,
Fdbk *feedback,
200 double _dMsolUnit,
double _dErgPerGmUnit) :
206 etaCourant = _etaCourant;
207 timeToSF = _timeToSF;
208 dMsolUnit = _dMsolUnit;
209 dErgPerGmUnit = _dErgPerGmUnit;
213 H = csmTime2Hub(csm,dTime);
214 a = csmTime2Exp(csm,dTime);
223 virtual void pup(PUP::er &p) {
245 double dTime, H, a, gamma;
260 double _gamma,
Fdbk *feedback) :
268 H = csmTime2Hub(csm,dTime);
269 a = csmTime2Exp(csm,dTime);
281 virtual void pup(PUP::er &p) {
Class for cross processor data needed for smooth operations.
Definition: GravityParticle.h:568
void AddParams(PRM prm)
initialize parameters for star formation
Definition: feedback.cpp:26
Hold parameters of the run.
Definition: parameters.h:14
virtual void pup(PUP::er &p)
required method for remote entry call.
Definition: feedback.h:223
Definition: feedback.h:182
int bUseBallMax
Definition: smoothparams.h:14
Definition: feedback.h:243
Object containing the parameter information.
Definition: param.h:38
void CheckParams(PRM prm, struct parameters ¶m)
Definition: feedback.cpp:102
Interface class for initial mass function.
Definition: imf.h:15
Cosmological parameters.
Definition: cosmo.h:10
int iType
Particle type to smooth over; "TreeActive".
Definition: smoothparams.h:11
Object for priority queue entry.
Definition: smooth.h:12
void DoFeedback(GravityParticle *p, double dTime, double dDeltaYr, FBEffects *fbTotals) const
Fdbk main method.
Definition: feedback.cpp:420
virtual void pup(PUP::er &p)
required method for remote entry call.
Definition: smoothparams.h:45
virtual IMF * clone() const =0
copy IMF object
Stellar/Supernova feedback parameters and routines.
Definition: feedback.h:45
A base class from which parameters for all smooth operations can be derived.
Definition: smoothparams.h:8
Methods for calculating the number and feedback effects of supernova.
Definition: supernova.h:11
Definition: feedback.h:32
routines to calculate stellar lifetimes as a function of mass and metalicity.
Definition: starlifetime.h:27
virtual void pup(PUP::er &p)
required method for remote entry call.
Definition: feedback.h:281
Implement IMF from Kroupa 2001.
Definition: imf.h:125
int activeRung
Currently active rung.
Definition: smoothparams.h:12
Fundamental type for a particle.
Definition: GravityParticle.h:316
Class to return feedback effects.
Definition: feedback.h:13