1#ifndef COOLING_PLANET_HINCLUDED
2#define COOLING_PLANET_HINCLUDED
18#define CL_Rgascode 8.2494e7
19#define CL_Eerg_gm_degK CL_Rgascode
20#define CL_Eerg_gm_degK3_2 1.5*CL_Eerg_gm_degK
21#define CL_NMAXBYTETABLE 56000
52 double dComovingGmPerCcUnit;
55 double dErgPerGmPerSecUnit;
56 double diErgPerGmUnit;
64 double dStarCenterOfMass[4];
66 clDerivsData *DerivsData;
75void CoolFinalize( COOL *cl );
77clDerivsData *CoolDerivsInit(COOL *cl);
79void CoolDerivsFinalize(clDerivsData *cld ) ;
81void clInitConstants( COOL *cl,
double dGMPerCcunit,
82 double dComovingGmPerCcUnit,
double dErgPerGmUnit,
83 double dSecUnit,
double dKpcUnit, COOLPARAM CoolParam);
86void CoolInitRatesTable( COOL *cl, COOLPARAM CoolParam);
88double clThermalEnergy(
double Y_Total,
double T );
90double clTemperature(
double Y_Total,
double E );
92void CoolAddParams( COOLPARAM *CoolParam, PRM );
95void CoolSetStarCM(COOL *cl,
double dCenterOfMass[4]);
98#define COOL_ARRAY0_EXT "Y_Total"
99double COOL_ARRAY0(COOL *cl_, COOLPARTICLE *cp,
double aa);
100#define COOL_ARRAY0( cl_, cp, aa ) ((cp)->Y_Total)
101double COOL_SET_ARRAY0(COOL *cl_, COOLPARTICLE *cp,
double aa,
double bb_val);
102#define COOL_SET_ARRAY0( cl_, cp, aa, bb_val ) ((cp)->Y_Total = (bb_val))
104#define COOL_ARRAY1_EXT "NA"
105double COOL_ARRAY1(COOL *cl_, COOLPARTICLE *cp,
double aa);
106#define COOL_ARRAY1( cl_, cp, aa ) (0)
107double COOL_SET_ARRAY1(COOL *cl_, COOLPARTICLE *cp,
double aa,
double bb_val);
108#define COOL_SET_ARRAY1( cl_, cp, aa, bb_val ) (0)
110#define COOL_ARRAY2_EXT "NA"
111double COOL_ARRAY2(COOL *cl_, COOLPARTICLE *cp,
double aa);
112#define COOL_ARRAY2( cl_, cp, aa ) (0)
113double COOL_SET_ARRAY2(COOL *cl_, COOLPARTICLE *cp,
double aa,
double bb_val);
114#define COOL_SET_ARRAY2( cl_, cp, aa, bb_val ) (0)
116#define COOL_ARRAY3_EXT "H2"
117double COOL_ARRAY3(COOL *cl, COOLPARTICLE *cp,
double ZMetal);
118#define COOL_ARRAY3(cl_, cp, aa ) (0)
119double COOL_SET_ARRAY3(COOL *cl_, COOLPARTICLE *cp,
double aa,
double bb_val);
120#define COOL_SET_ARRAY3( cl_, cp, aa, bb_val ) (0)
123double COOL_EDOT( COOL *cl_, COOLPARTICLE *cp_,
double ECode_,
double rhoCode_,
124 double ZMetal_,
double *posCode_ );
125#define COOL_EDOT( cl_, cp_, ECode_, rhoCode_, ZMetal_, posCode_) (0)
128double COOL_COOLING( COOL *cl_, COOLPARTICLE *cp_,
double ECode_,
129 double rhoCode_,
double ZMetal_,
double *posCode_ );
130#define COOL_COOLING( cl_, cp_, ECode_, rhoCode_, ZMetal_, posCode_) (0)
132void CoolPARTICLEtoPERBARYON(COOL *cl_,
PERBARYON *Y, COOLPARTICLE *cp,
133 double HTotal,
double HeTotal);
135#define CoolPARTICLEtoPERBARYON(cl_, Y, cp) { \
136 (Y)->Total = (cp)->Y_Total; }
138double CoolCodeEnergyToTemperature( COOL *Cool, COOLPARTICLE *cp,
double E,
143void CoolSetTime( COOL *Cool,
double dTime,
double z );
147double CoolCodeTimeToSeconds( COOL *Cool,
double dCodeTime );
149#define CoolCodeTimeToSeconds( Cool, dCodeTime ) ((Cool)->dSecUnit*(dCodeTime))
151double CoolSecondsToCodeTime( COOL *Cool,
double dTime );
153#define CoolSecondsToCodeTime( Cool, dTime ) ((dTime)/(Cool)->dSecUnit)
155double CoolCodeEnergyToErgPerGm( COOL *Cool,
double dCodeEnergy );
157#define CoolCodeEnergyToErgPerGm( Cool, dCodeEnergy ) \
158 ((Cool)->dErgPerGmUnit*(dCodeEnergy))
160double CoolErgPerGmToCodeEnergy( COOL *Cool,
double dEnergy );
162#define CoolErgPerGmToCodeEnergy( Cool, dEnergy ) \
163 ((Cool)->diErgPerGmUnit*(dEnergy))
165double CoolCodeWorkToErgPerGmPerSec( COOL *Cool,
double dCodeWork );
167#define CoolCodeWorkToErgPerGmPerSec( Cool, dCodeWork ) \
168 ((Cool)->dErgPerGmPerSecUnit*(dCodeWork))
170double CoolErgPerGmPerSecToCodeWork( COOL *Cool,
double dWork );
172#define CoolErgPerGmPerSecToCodeWork( Cool, dWork ) \
173 ((dWork)/(Cool)->dErgPerGmPerSecUnit)
175double CodeDensityToComovingGmPerCc( COOL *Cool,
double dCodeDensity );
177#define CodeDensityToComovingGmPerCc( Cool, dCodeDensity ) \
178 ((Cool)->dComovingGmPerCcUnit*(dCodeDensity))
180void CoolIntegrateEnergyCode(COOL *cl, clDerivsData *cData, COOLPARTICLE *cp,
181 double *E,
double PdV,
double rho,
double ZMetal,
182 double *r,
double tStep );
184void CoolDefaultParticleData( COOLPARTICLE *cp );
186void CoolInitEnergyAndParticleData( COOL *cl, COOLPARTICLE *cp,
double *E,
187 double dDensity,
double dTemp,
double fMetal);
190double CoolEdotInstantCode(COOL *cl, COOLPARTICLE *cp,
double ECode,
191 double rhoCode,
double ZMetal,
double *posCode );
193void CoolCodePressureOnDensitySoundSpeed( COOL *cl, COOLPARTICLE *cp,
194 double uPred,
double fDensity,
double gamma,
double gammam1,
195 double *PoverRho,
double *c );
196#define CoolCodePressureOnDensitySoundSpeed( cl__, cp__, uPred__, fDensity__, \
197 gamma__, gammam1__, PoverRho__, c__ ) { \
198 *(PoverRho__) = ((gammam1__)*(uPred__)); \
199 *(c__) = sqrt((gamma__)*(*(PoverRho__))); }
202void CoolTableReadInfo( COOLPARAM *CoolParam,
int cntTable,
int *nTableColumns,
206void CoolTableRead( COOL *Cool,
int nData,
void *vData);
Heating/Cooling context: parameters and tables.
Definition cooling_boley.h:83
per-particle cooling data
Definition cooling_boley.h:68
abundance of various species in particles/baryon
Definition cooling_boley.h:75
context for calculating cooling derivatives
Definition cooling_boley.h:108