4#include "../global/global.h"
9typedef Real (*Rate_Function_T)(Real, Real);
15 Real density_conversion;
16 Real energy_conversion;
18 Real runtime_chemistry_step;
29 Real dens_number_conv;
51 Real *cool_reHeII_1_d;
52 Real *cool_reHeII_2_d;
61 Real *k_coll_i_HeII_d;
62 Real *k_coll_i_HI_HI_d;
63 Real *k_coll_i_HI_HeI_d;
66 Real *k_recomb_HeII_d;
67 Real *k_recomb_HeIII_d;
71 int n_uvb_rates_samples;
72 float *uvb_rates_redshift_d;
73 float *photo_ion_HI_rate_d;
74 float *photo_ion_HeI_rate_d;
75 float *photo_ion_HeII_rate_d;
76 float *photo_heat_HI_rate_d;
77 float *photo_heat_HeI_rate_d;
78 float *photo_heat_HeII_rate_d;
82 float temperature_floor;
94 bool use_case_B_recombination;
96 Real scale_factor_UVB_on;
98 float *cosmo_params_h;
99 float *cosmo_params_d;
101 int n_uvb_rates_samples;
103 float *Heat_rates_HI_h;
104 float *Heat_rates_HeI_h;
105 float *Heat_rates_HeII_h;
106 float *Ion_rates_HI_h;
107 float *Ion_rates_HeI_h;
108 float *Ion_rates_HeII_h;
111 float *Heat_rates_HI_d;
112 float *Heat_rates_HeI_d;
113 float *Heat_rates_HeII_d;
114 float *Ion_rates_HI_d;
115 float *Ion_rates_HeI_d;
116 float *Ion_rates_HeII_d;
124 void Allocate_Array_GPU_Real(Real **array_dev,
int size);
125 void Copy_Real_Array_to_Device(
int size, Real *array_h, Real *array_d);
126 void Free_Array_GPU_Real(Real *array_dev);
127 void Allocate_Array_GPU_float(
float **array_dev,
int size);
128 void Copy_Float_Array_to_Device(
int size,
float *array_h,
float *array_d);
129 void Free_Array_GPU_float(
float *array_dev);
133 void Generate_Reaction_Rate_Table(Real **rate_table_array_d, Rate_Function_T rate_function, Real units);
135 void Initialize_Cooling_Rates();
137 void Initialize_Reaction_Rates();
139 void Initialize_UVB_Ionization_and_Heating_Rates(
struct Parameters *P);
141 void Load_UVB_Ionization_and_Heating_Rates(
struct Parameters *P);
143 void Copy_UVB_Rates_to_GPU();
147 #ifdef TEXTURES_UVB_INTERPOLATION
148 void Bind_GPU_Textures(
int size,
float *H_HI_h,
float *H_HeI_h,
float *H_HeII_h,
float *I_HI_h,
float *I_HeI_h,
158void Do_Chemistry_Update(Real *dev_conserved,
int nx,
int ny,
int nz,
int n_ghost,
int n_fields, Real dt,