blob: 7cb41f7ea1dea13d9e1cafbec5011b905a7291f1 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
/* Copyright 2019 Luca Fedeli
*
* This file is part of WarpX.
*
* License: BSD-3-Clause-LBNL
*/
#include "BreitWheelerEngineTableBuilder.H"
//Include the full Breit Wheeler engine with table generation support
//(after some consistency tests). This requires to have a recent version
// of the Boost library.
#ifdef PXRMP_CORE_ONLY
#error The Table Builder is incompatible with PXRMP_CORE_ONLY
#endif
#ifdef __PICSAR_MULTIPHYSICS_BREIT_WHEELER_ENGINE__
#warning breit_wheeler_engine.hpp should not have been included before reaching this point.
#endif
#include <breit_wheeler_engine.hpp>
//_______________________________________________
//Some handy aliases
using PicsarBreitWheelerEngine = picsar::multi_physics::
breit_wheeler_engine<amrex::Real, QedUtils::DummyStruct>;
using PicsarBreitWheelerCtrl =
picsar::multi_physics::breit_wheeler_engine_ctrl<amrex::Real>;
//_______________________________________________
void
BreitWheelerEngineTableBuilder::compute_table
(PicsarBreitWheelerCtrl ctrl,
BreitWheelerEngineInnards& innards) const
{
PicsarBreitWheelerEngine bw_engine(
std::move(QedUtils::DummyStruct()), 1.0, ctrl);
bw_engine.compute_dN_dt_lookup_table();
bw_engine.compute_cumulative_pair_table();
auto bw_innards_picsar = bw_engine.export_innards();
//Copy data in a GPU-friendly data-structure
innards.ctrl = bw_innards_picsar.bw_ctrl;
innards.TTfunc_coords.assign(bw_innards_picsar.TTfunc_table_coords_ptr,
bw_innards_picsar.TTfunc_table_coords_ptr +
bw_innards_picsar.TTfunc_table_coords_how_many);
innards.TTfunc_data.assign(bw_innards_picsar.TTfunc_table_data_ptr,
bw_innards_picsar.TTfunc_table_data_ptr +
bw_innards_picsar.TTfunc_table_data_how_many);
innards.cum_distrib_coords_1.assign(
bw_innards_picsar.cum_distrib_table_coords_1_ptr,
bw_innards_picsar.cum_distrib_table_coords_1_ptr +
bw_innards_picsar.cum_distrib_table_coords_1_how_many);
innards.cum_distrib_coords_2.assign(
bw_innards_picsar.cum_distrib_table_coords_2_ptr,
bw_innards_picsar.cum_distrib_table_coords_2_ptr +
bw_innards_picsar.cum_distrib_table_coords_2_how_many);
innards.cum_distrib_data.assign(
bw_innards_picsar.cum_distrib_table_data_ptr,
bw_innards_picsar.cum_distrib_table_data_ptr +
bw_innards_picsar.cum_distrib_table_data_how_many);
//____
}
|