From 5149dd05a2d518c58f78612e676a588b8e9d232f Mon Sep 17 00:00:00 2001
From: Matthieu Schaller <schaller@strw.leidenuniv.nl>
Date: Sat, 16 Mar 2019 15:54:55 +0000
Subject: [PATCH] Make the EAGLE cooling model use the smoothed metal
 abundances and not the raw ones.

---
 src/cooling/EAGLE/cooling.c       | 15 ++++++---
 src/cooling/EAGLE/cooling_rates.h | 54 ++++++++++++++++++-------------
 2 files changed, 42 insertions(+), 27 deletions(-)

diff --git a/src/cooling/EAGLE/cooling.c b/src/cooling/EAGLE/cooling.c
index 87c12e73d9..95fe93cea8 100644
--- a/src/cooling/EAGLE/cooling.c
+++ b/src/cooling/EAGLE/cooling.c
@@ -209,7 +209,8 @@ INLINE static float newton_iter(
   const float log_table_bound_low = (cooling->Therm[0] + 0.05) / M_LOG10E;
 
   /* convert Hydrogen mass fraction in Hydrogen number density */
-  const float XH = p->chemistry_data.metal_mass_fraction[chemistry_element_H];
+  const float XH =
+      p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_H];
   const double n_H =
       hydro_get_physical_density(p, cosmo) * XH / phys_const->const_proton_mass;
   const double n_H_cgs = n_H * cooling->number_density_to_cgs;
@@ -501,8 +502,10 @@ void cooling_cool_part(const struct phys_const *phys_const,
   abundance_ratio_to_solar(p, cooling, abundance_ratio);
 
   /* Get the Hydrogen and Helium mass fractions */
-  const float XH = p->chemistry_data.metal_mass_fraction[chemistry_element_H];
-  const float XHe = p->chemistry_data.metal_mass_fraction[chemistry_element_He];
+  const float XH =
+      p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_H];
+  const float XHe =
+      p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_He];
 
   /* Get the Helium mass fraction. Note that this is He / (H + He), i.e. a
    * metal-free Helium mass fraction as per the Wiersma+08 definition */
@@ -719,8 +722,10 @@ float cooling_get_temperature(
   const double u_cgs = u * cooling->internal_energy_to_cgs;
 
   /* Get the Hydrogen and Helium mass fractions */
-  const float XH = p->chemistry_data.metal_mass_fraction[chemistry_element_H];
-  const float XHe = p->chemistry_data.metal_mass_fraction[chemistry_element_He];
+  const float XH =
+      p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_H];
+  const float XHe =
+      p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_He];
 
   /* Get the Helium mass fraction. Note that this is He / (H + He), i.e. a
    * metal-free Helium mass fraction as per the Wiersma+08 definition */
diff --git a/src/cooling/EAGLE/cooling_rates.h b/src/cooling/EAGLE/cooling_rates.h
index d315a5ba33..35a53b43fb 100644
--- a/src/cooling/EAGLE/cooling_rates.h
+++ b/src/cooling/EAGLE/cooling_rates.h
@@ -54,39 +54,49 @@ __attribute__((always_inline)) INLINE void abundance_ratio_to_solar(
     const struct part *p, const struct cooling_function_data *cooling,
     float ratio_solar[chemistry_element_count + 2]) {
 
-  ratio_solar[0] = p->chemistry_data.metal_mass_fraction[chemistry_element_H] *
-                   cooling->SolarAbundances_inv[0 /* H */];
+  ratio_solar[0] =
+      p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_H] *
+      cooling->SolarAbundances_inv[0 /* H */];
 
-  ratio_solar[1] = p->chemistry_data.metal_mass_fraction[chemistry_element_He] *
-                   cooling->SolarAbundances_inv[1 /* He */];
+  ratio_solar[1] =
+      p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_He] *
+      cooling->SolarAbundances_inv[1 /* He */];
 
-  ratio_solar[2] = p->chemistry_data.metal_mass_fraction[chemistry_element_C] *
-                   cooling->SolarAbundances_inv[2 /* C */];
+  ratio_solar[2] =
+      p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_C] *
+      cooling->SolarAbundances_inv[2 /* C */];
 
-  ratio_solar[3] = p->chemistry_data.metal_mass_fraction[chemistry_element_N] *
-                   cooling->SolarAbundances_inv[3 /* N */];
+  ratio_solar[3] =
+      p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_N] *
+      cooling->SolarAbundances_inv[3 /* N */];
 
-  ratio_solar[4] = p->chemistry_data.metal_mass_fraction[chemistry_element_O] *
-                   cooling->SolarAbundances_inv[4 /* O */];
+  ratio_solar[4] =
+      p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_O] *
+      cooling->SolarAbundances_inv[4 /* O */];
 
-  ratio_solar[5] = p->chemistry_data.metal_mass_fraction[chemistry_element_Ne] *
-                   cooling->SolarAbundances_inv[5 /* Ne */];
+  ratio_solar[5] =
+      p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_Ne] *
+      cooling->SolarAbundances_inv[5 /* Ne */];
 
-  ratio_solar[6] = p->chemistry_data.metal_mass_fraction[chemistry_element_Mg] *
-                   cooling->SolarAbundances_inv[6 /* Mg */];
+  ratio_solar[6] =
+      p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_Mg] *
+      cooling->SolarAbundances_inv[6 /* Mg */];
 
-  ratio_solar[7] = p->chemistry_data.metal_mass_fraction[chemistry_element_Si] *
-                   cooling->SolarAbundances_inv[7 /* Si */];
+  ratio_solar[7] =
+      p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_Si] *
+      cooling->SolarAbundances_inv[7 /* Si */];
 
   /* For S, we use the same ratio as Si */
-  ratio_solar[8] = p->chemistry_data.metal_mass_fraction[chemistry_element_Si] *
-                   cooling->SolarAbundances_inv[7 /* Si */] *
-                   cooling->S_over_Si_ratio_in_solar;
+  ratio_solar[8] =
+      p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_Si] *
+      cooling->SolarAbundances_inv[7 /* Si */] *
+      cooling->S_over_Si_ratio_in_solar;
 
   /* For Ca, we use the same ratio as Si */
-  ratio_solar[9] = p->chemistry_data.metal_mass_fraction[chemistry_element_Si] *
-                   cooling->SolarAbundances_inv[7 /* Si */] *
-                   cooling->Ca_over_Si_ratio_in_solar;
+  ratio_solar[9] =
+      p->chemistry_data.smoothed_metal_mass_fraction[chemistry_element_Si] *
+      cooling->SolarAbundances_inv[7 /* Si */] *
+      cooling->Ca_over_Si_ratio_in_solar;
 
   ratio_solar[10] =
       p->chemistry_data.metal_mass_fraction[chemistry_element_Fe] *
-- 
GitLab