MP-Gadget  5.0.1.dev1-76bc7d4726-dirty
metal_return.h
Go to the documentation of this file.
1 #ifndef METAL_RETURN_H
2 #define METAL_RETURN_H
3 
4 #include "forcetree.h"
5 #include "timestep.h"
6 #include "utils/paramset.h"
7 #include <gsl/gsl_interp2d.h>
8 #include <gsl/gsl_integration.h>
9 #include "slotsmanager.h"
10 
11 struct interps
12 {
13  gsl_interp2d * lifetime_interp;
14  gsl_interp2d * agb_mass_interp;
15  gsl_interp2d * agb_metallicity_interp;
16  gsl_interp2d * agb_metals_interp[NMETALS];
17  gsl_interp2d * snii_mass_interp;
18  gsl_interp2d * snii_metallicity_interp;
19  gsl_interp2d * snii_metals_interp[NMETALS];
20 };
21 
22 /* Build the interpolators for each yield table. We use bilinear interpolation
23  * so there is no extra memory allocation and we never free the tables*/
25 
27  gsl_integration_workspace ** gsl_work;
32  double imf_norm;
33  double hub;
34  /* Maximum of the new gas mass*/
35  double MaxGasMass;
38  struct interps interp;
39  struct SpinLocks * spin;
40 };
41 
42 void metal_return(const ActiveParticles * act, DomainDecomp * const ddecomp, Cosmology * CP, const double atime, const double AvgGasMass);
43 
45 
46 /* Initialise the metal private structure, finding mass return.*/
47 int64_t metal_return_init(const ActiveParticles * act, Cosmology * CP, struct MetalReturnPriv * priv, const double atime);
48 /* Free memory allocated in metal_return_init*/
49 void metal_return_priv_free(struct MetalReturnPriv * priv);
50 
51 /* Find stellar density, returning the total SPH Volume weights for each particle.*/
52 void stellar_density(const ActiveParticles * act, MyFloat * StarVolumeSPH, MyFloat * MassReturn, const ForceTree * const tree);
53 
54 /* Determines whether metal return runs for this star this timestep*/
55 int metals_haswork(int i, MyFloat * MassReturn);
56 #endif
Interp interp
int64_t metal_return_init(const ActiveParticles *act, Cosmology *CP, struct MetalReturnPriv *priv, const double atime)
Definition: metal_return.c:437
void setup_metal_table_interp(struct interps *interp)
Definition: metal_return.c:76
void metal_return_priv_free(struct MetalReturnPriv *priv)
Definition: metal_return.c:500
void metal_return(const ActiveParticles *act, DomainDecomp *const ddecomp, Cosmology *CP, const double atime, const double AvgGasMass)
Definition: metal_return.c:517
void set_metal_return_params(ParameterSet *ps)
Definition: metal_return.c:62
int metals_haswork(int i, MyFloat *MassReturn)
Definition: metal_return.c:708
void stellar_density(const ActiveParticles *act, MyFloat *StarVolumeSPH, MyFloat *MassReturn, const ForceTree *const tree)
Definition: metal_return.c:923
static Cosmology * CP
Definition: power.c:27
#define NMETALS
Definition: slotsmanager.h:60
gsl_integration_workspace ** gsl_work
Definition: metal_return.h:27
MyFloat * StarVolumeSPH
Definition: metal_return.h:37
MyFloat * HighDyingMass
Definition: metal_return.h:31
MyFloat * StellarAges
Definition: metal_return.h:28
Cosmology * CP
Definition: metal_return.h:36
struct interps interp
Definition: metal_return.h:38
MyFloat * MassReturn
Definition: metal_return.h:29
struct SpinLocks * spin
Definition: metal_return.h:39
MyFloat * LowDyingMass
Definition: metal_return.h:30
gsl_interp2d * snii_metals_interp[NMETALS]
Definition: metal_return.h:19
gsl_interp2d * agb_metallicity_interp
Definition: metal_return.h:15
gsl_interp2d * agb_metals_interp[NMETALS]
Definition: metal_return.h:16
gsl_interp2d * snii_metallicity_interp
Definition: metal_return.h:18
gsl_interp2d * agb_mass_interp
Definition: metal_return.h:14
gsl_interp2d * lifetime_interp
Definition: metal_return.h:13
gsl_interp2d * snii_mass_interp
Definition: metal_return.h:17
LOW_PRECISION MyFloat
Definition: types.h:19