diff --git a/src/cooling/grackle/cooling.h b/src/cooling/grackle/cooling.h index 5b968d4fbed9a6a17c1b66bd36fc9ff85d95b681..9760499bee73c91147d0a863eee440bcb066efcc 100644 --- a/src/cooling/grackle/cooling.h +++ b/src/cooling/grackle/cooling.h @@ -314,7 +314,13 @@ __attribute__((always_inline)) INLINE static void cooling_print_backend( cooling_copy_field_to_grackle(data, xp, rho, HeIII); \ cooling_copy_field_to_grackle(data, xp, rho, e); #else -#define cooling_copy_to_grackle1(data, p, xp, rho) +#define cooling_copy_to_grackle1(data, p, xp, rho) \ + data.HI_density = NULL; \ + data.HII_density = NULL; \ + data.HeI_density = NULL; \ + data.HeII_density = NULL; \ + data.HeIII_density = NULL; \ + data.e_density = NULL; #endif /** @@ -334,7 +340,10 @@ __attribute__((always_inline)) INLINE static void cooling_print_backend( cooling_copy_field_to_grackle(data, xp, rho, H2I); \ cooling_copy_field_to_grackle(data, xp, rho, H2II); #else -#define cooling_copy_to_grackle2(data, p, xp, rho) +#define cooling_copy_to_grackle2(data, p, xp, rho) \ + data.HM_density = NULL; \ + data.H2I_density = NULL; \ + data.H2II_density = NULL; #endif /** @@ -354,7 +363,10 @@ __attribute__((always_inline)) INLINE static void cooling_print_backend( cooling_copy_field_to_grackle(data, xp, rho, DII); \ cooling_copy_field_to_grackle(data, xp, rho, HDI); #else -#define cooling_copy_to_grackle3(data, p, xp, rho) +#define cooling_copy_to_grackle3(data, p, xp, rho) \ + data.DI_density = NULL; \ + data.DII_density = NULL; \ + data.HDI_density = NULL; #endif /** @@ -427,6 +439,13 @@ __attribute__((always_inline)) INLINE static void cooling_print_backend( cooling_copy_to_grackle1(data, p, xp, rho); \ cooling_copy_to_grackle2(data, p, xp, rho); \ cooling_copy_to_grackle3(data, p, xp, rho); \ + data.volumetric_heating_rate = NULL; \ + data.specific_heating_rate = NULL; \ + data.RT_heating_rate = NULL; \ + data.RT_HI_ionization_rate = NULL; \ + data.RT_HeI_ionization_rate = NULL; \ + data.RT_HeII_ionization_rate = NULL; \ + data.RT_H2_dissociation_rate = NULL; \ gr_float metal_density = chemistry_metal_mass_fraction(p, xp) * rho; \ data.metal_density = &metal_density; @@ -481,6 +500,7 @@ __attribute__((always_inline)) INLINE static gr_float cooling_rate( int grid_start[GRACKLE_RANK] = {0, 0, 0}; int grid_end[GRACKLE_RANK] = {GRACKLE_NPART - 1, 0, 0}; + data.grid_dx = 0.; data.grid_rank = GRACKLE_RANK; data.grid_dimension = grid_dimension; data.grid_start = grid_start; @@ -506,9 +526,29 @@ __attribute__((always_inline)) INLINE static gr_float cooling_rate( cooling_copy_to_grackle(data, p, xp, density); /* solve chemistry with table */ - if (solve_chemistry(&units, &data, dt) == 0) { - error("Error in solve_chemistry."); - } + + + chemistry_data chemistry_grackle = cooling->chemistry; + chemistry_data_storage my_rates = grackle_rates; + _solve_chemistry(&chemistry_grackle, + &my_rates, + &units, dt, data.grid_dx, + data.grid_rank, data.grid_dimension, + data.grid_start, data.grid_end, + data.density, data.internal_energy, + data.x_velocity, data.y_velocity, data.z_velocity, + data.HI_density, data.HII_density, data.HM_density, + data.HeI_density, data.HeII_density, data.HeIII_density, + data.H2I_density, data.H2II_density, + data.DI_density, data.DII_density, data.HDI_density, + data.e_density, data.metal_density, + data.volumetric_heating_rate, data.specific_heating_rate, + data.RT_heating_rate, data.RT_HI_ionization_rate, data.RT_HeI_ionization_rate, + data.RT_HeII_ionization_rate, data.RT_H2_dissociation_rate, + NULL); + //if (solve_chemistry(&units, &data, dt) == 0) { + // error("Error in solve_chemistry."); + //} /* copy from grackle data to particle */ cooling_copy_from_grackle(data, p, xp, density);