@@ -271,12 +271,13 @@ inline auto thermal_reflection(SYCLTargetSharedPtr sycl_target,
271271}
272272
273273template <size_t vdim>
274- inline auto ionise_reaction_amjuel (SYCLTargetSharedPtr sycl_target,
274+ inline auto ionise_reaction_amjuel (SYCLTargetSharedPtr sycl_target, double dens,
275+ double temp, double time, double vel,
275276 const Species &target_species,
276277 const Species &electron_species)
277278{
278- auto ionise_rate_data = AMJUEL::ionise_rate_data ();
279- auto ionise_energy_data = AMJUEL::ionise_energy_data ();
279+ auto ionise_rate_data = AMJUEL::ionise_rate_data (dens, temp, time );
280+ auto ionise_energy_data = AMJUEL::ionise_energy_data (dens, temp, time, vel );
280281
281282 auto ionise_reaction = std::make_shared<ElectronImpactIonisation<
282283 decltype (ionise_rate_data), decltype (ionise_energy_data), vdim>>(
@@ -305,19 +306,21 @@ inline auto ionise_reaction_fixed(SYCLTargetSharedPtr sycl_target,
305306template <size_t vdim>
306307inline auto cx_reaction_amjuel (
307308 SYCLTargetSharedPtr sycl_target,
308- std::shared_ptr<HostAtomicBlockKernelRNG<REAL>> rng_kernel,
309- const Species &parent_species, const Species &descendant_species)
309+ std::shared_ptr<HostAtomicBlockKernelRNG<REAL>> rng_kernel, double dens,
310+ double temp, double time, double vel, const Species &parent_species,
311+ const Species &descendant_species)
310312{
311313 auto parent_mass = parent_species.get_mass ();
312314 auto child_mass = descendant_species.get_mass ();
313315 auto reduced_mass = (parent_mass * child_mass) / (parent_mass + child_mass);
314- auto rate_data = AMJUEL::cx_rate_data (parent_mass, child_mass);
315- auto cross_section = AMJUEL::amjuel_fit_cross_section (reduced_mass);
316+ auto rate_data =
317+ AMJUEL::cx_rate_data (parent_mass, child_mass, dens, temp, time, vel);
318+ auto cross_section = AMJUEL::amjuel_fit_cross_section (reduced_mass, vel);
316319
317320 auto data_calc_sampler =
318321 FilteredMaxwellianSampler<vdim, decltype (cross_section)>(
319322 (constants::temp_SI * constants::k_B) /
320- (child_mass * norm::mass_amu_SI * norm:: vel * norm:: vel),
323+ (child_mass * norm::mass_amu_SI * vel * vel),
321324 cross_section, rng_kernel);
322325
323326 auto data_calculator =
@@ -346,7 +349,7 @@ inline auto cx_reaction_amjuel(
346349template <size_t vdim>
347350inline auto cx_reaction_fixed (
348351 SYCLTargetSharedPtr sycl_target,
349- std::shared_ptr<HostAtomicBlockKernelRNG<REAL>> rng_kernel,
352+ std::shared_ptr<HostAtomicBlockKernelRNG<REAL>> rng_kernel, double vel,
350353 const Species &parent_species, const Species &descendant_species, REAL rate,
351354 REAL sigma)
352355{
@@ -359,7 +362,7 @@ inline auto cx_reaction_fixed(
359362 auto data_calc_sampler =
360363 FilteredMaxwellianSampler<vdim, decltype (cross_section)>(
361364 (constants::temp_SI * constants::k_B) /
362- (child_mass * norm::mass_amu_SI * norm:: vel * norm:: vel),
365+ (child_mass * norm::mass_amu_SI * vel * vel),
363366 cross_section, rng_kernel);
364367
365368 auto data_calculator =
@@ -388,27 +391,29 @@ inline auto cx_reaction_fixed(
388391template <size_t vdim>
389392inline auto recombination_reaction_amjuel (
390393 SYCLTargetSharedPtr sycl_target,
391- std::shared_ptr<HostAtomicBlockKernelRNG<REAL>> rng_kernel,
392- const Species &marker_species, const Species &electron_species ,
393- const Species &neutral_species)
394+ std::shared_ptr<HostAtomicBlockKernelRNG<REAL>> rng_kernel, double dens,
395+ double temp, double time, double vel, const Species &marker_species ,
396+ const Species &electron_species, const Species & neutral_species)
394397{
395- auto recomb_data = AMJUEL::recomb_rate_data ();
396- auto recomb_energy_data = AMJUEL::recomb_energy_data ();
398+ auto recomb_data = AMJUEL::recomb_rate_data (dens, temp, time );
399+ auto recomb_energy_data = AMJUEL::recomb_energy_data (dens, temp, time, vel );
397400
398401 auto constant_rate_cross_section = ConstantRateCrossSection (1.0 );
399402 auto recomb_data_calc_sampler =
400403 FilteredMaxwellianSampler<vdim, decltype (constant_rate_cross_section)>(
401404 (constants::temp_SI * constants::k_B) /
402- (marker_species.get_mass () * norm::mass_amu_SI * norm::vel *
403- norm::vel),
405+ (marker_species.get_mass () * norm::mass_amu_SI * vel * vel),
404406 constant_rate_cross_section, rng_kernel);
405407 auto recomb_data_calc_obj =
406408 DataCalculator<decltype (recomb_energy_data),
407409 decltype (recomb_data_calc_sampler)>(
408410 recomb_energy_data, recomb_data_calc_sampler);
409411
412+ double potential_energy =
413+ 13.6 * constants::e / (norm::mass_amu_SI * vel * vel);
414+
410415 auto recomb_reaction_kernel = RecombReactionKernels<vdim>(
411- marker_species, electron_species, norm:: potential_energy);
416+ marker_species, electron_species, potential_energy);
412417
413418 const int out_state = neutral_species.get_id ();
414419 std::array<int , 1 > recomb_out_states = {out_state};
@@ -425,7 +430,7 @@ inline auto recombination_reaction_amjuel(
425430template <size_t vdim>
426431inline auto recombination_reaction_fixed (
427432 SYCLTargetSharedPtr sycl_target,
428- std::shared_ptr<HostAtomicBlockKernelRNG<REAL>> rng_kernel,
433+ std::shared_ptr<HostAtomicBlockKernelRNG<REAL>> rng_kernel, double vel,
429434 const Species &marker_species, const Species &electron_species,
430435 const Species &neutral_species, REAL rate, REAL energy_rate)
431436{
@@ -436,8 +441,7 @@ inline auto recombination_reaction_fixed(
436441 auto recomb_data_calc_sampler =
437442 FilteredMaxwellianSampler<vdim, decltype (constant_rate_cross_section)>(
438443 (constants::temp_SI * constants::k_B) /
439- (marker_species.get_mass () * norm::mass_amu_SI * norm::vel *
440- norm::vel),
444+ (marker_species.get_mass () * norm::mass_amu_SI * vel * vel),
441445 constant_rate_cross_section, rng_kernel);
442446 auto recomb_data_calc_obj =
443447 DataCalculator<decltype (recomb_energy_data),
0 commit comments