diff options
author | 2019-10-29 19:46:26 +0100 | |
---|---|---|
committer | 2019-10-29 19:46:26 +0100 | |
commit | dbf66f45b23f2e93dfcba09792ee0339e4a9cc55 (patch) | |
tree | f4d88cdefad91a08dc400e0e532fc91a29130796 | |
parent | 5ff549de3d8f9aad8c11ca49b6827d5e1cef184d (diff) | |
parent | 984ace2b6b93b6ba009ce8776bf547ea05563357 (diff) | |
download | WarpX-dbf66f45b23f2e93dfcba09792ee0339e4a9cc55.tar.gz WarpX-dbf66f45b23f2e93dfcba09792ee0339e4a9cc55.tar.zst WarpX-dbf66f45b23f2e93dfcba09792ee0339e4a9cc55.zip |
merged with bugfixing PR
-rw-r--r-- | Source/QED/BreitWheelerEngineInnards.H | 2 | ||||
-rw-r--r-- | Source/QED/BreitWheelerEngineWrapper.H | 68 | ||||
-rw-r--r-- | Source/QED/BreitWheelerEngineWrapper.cpp | 6 | ||||
-rw-r--r-- | Source/QED/QuantumSyncEngineWrapper.H | 64 |
4 files changed, 76 insertions, 64 deletions
diff --git a/Source/QED/BreitWheelerEngineInnards.H b/Source/QED/BreitWheelerEngineInnards.H index 6c5edcff6..2a7026989 100644 --- a/Source/QED/BreitWheelerEngineInnards.H +++ b/Source/QED/BreitWheelerEngineInnards.H @@ -19,7 +19,7 @@ struct BreitWheelerEngineInnards // Control parameters (a POD struct) picsar::multi_physics::breit_wheeler_engine_ctrl<amrex::Real> ctrl; - //Lookup table data (should stay on GPU) + //Lookup table data amrex::Gpu::ManagedVector<amrex::Real> TTfunc_coords; amrex::Gpu::ManagedVector<amrex::Real> TTfunc_data; diff --git a/Source/QED/BreitWheelerEngineWrapper.H b/Source/QED/BreitWheelerEngineWrapper.H index d2a04090e..e5dd63aed 100644 --- a/Source/QED/BreitWheelerEngineWrapper.H +++ b/Source/QED/BreitWheelerEngineWrapper.H @@ -72,22 +72,17 @@ class BreitWheelerEvolveOpticalDepth { public: /** - * Constructor acquires pointers to control parameters and + * Constructor acquires a reference to control parameters and * lookup tables data. * lookup_table uses non-owning vectors under the hood. So no new data * allocations should be triggered on GPU */ - BreitWheelerEvolveOpticalDepth( - const PicsarBreitWheelerCtrl t_ctrl, - size_t TTfunc_size, - amrex::Real* TTfunc_coords, - amrex::Real* TTfunc_data): - ctrl{t_ctrl}, - lookup_table{ - TTfunc_size, - TTfunc_coords, - TTfunc_data - }{}; + BreitWheelerEvolveOpticalDepth(BreitWheelerEngineInnards& r_innards): + ctrl{r_innards.ctrl}, + m_TTfunc_size{r_innards.TTfunc_coords.size()}, + m_p_TTfunc_coords{r_innards.TTfunc_coords.dataPtr()}, + m_p_TTfunc_data{r_innards.TTfunc_data.dataPtr()} + {}; /** * Evolves the optical depth. It can be used on GPU. @@ -120,7 +115,10 @@ public: dt, opt_depth, has_event_happend, unused_event_time, dummy_lambda, - lookup_table, + picsar::multi_physics::lookup_1d<amrex::Real>{ + m_TTfunc_size, + m_p_TTfunc_coords, + m_p_TTfunc_data}, ctrl); return has_event_happend; @@ -131,7 +129,11 @@ private: const amrex::Real dummy_lambda{1.0}; const PicsarBreitWheelerCtrl ctrl; - const picsar::multi_physics::lookup_1d<amrex::Real> lookup_table; + + //lookup table data + size_t m_TTfunc_size; + amrex::Real* m_p_TTfunc_coords; + amrex::Real* m_p_TTfunc_data; }; /** @@ -148,20 +150,14 @@ public: * allocations should be triggered on GPU */ BreitWheelerGeneratePairs( - const PicsarBreitWheelerCtrl t_ctrl, - size_t cum_distrib_coords_1_size, - size_t cum_distrib_coords_2_size, - amrex::Real* p_cum_distrib_coords_1, - amrex::Real* p_cum_distrib_coords_2, - amrex::Real* p_cum_distrib_data): - ctrl{t_ctrl}, - lookup_table{ - cum_distrib_coords_1_size, - p_cum_distrib_coords_1, - cum_distrib_coords_2_size, - p_cum_distrib_coords_2, - p_cum_distrib_data} - {}; + BreitWheelerEngineInnards& r_innards): + ctrl{r_innards.ctrl}, + m_cum_distrib_coords_1_size{r_innards.cum_distrib_coords_1.size()}, + m_cum_distrib_coords_2_size{r_innards.cum_distrib_coords_2.size()}, + m_p_distrib_coords_1{r_innards.cum_distrib_coords_1.data()}, + m_p_distrib_coords_2{r_innards.cum_distrib_coords_2.data()}, + m_p_cum_distrib_data{r_innards.cum_distrib_data.data() + }{}; /** * Generates sampling (template parameter) pairs according to Breit Wheeler process. @@ -201,7 +197,13 @@ public: p_px, p_py, p_pz, e_weight, p_weight, dummy_lambda, - lookup_table, + picsar::multi_physics::lookup_2d<amrex::Real>{ + m_cum_distrib_coords_1_size, + m_p_distrib_coords_1, + m_cum_distrib_coords_2_size, + m_p_distrib_coords_2, + m_p_cum_distrib_data + }, ctrl, rand_zero_one_minus_epsi.data()); } @@ -211,7 +213,13 @@ private: const amrex::Real dummy_lambda{1.0}; const PicsarBreitWheelerCtrl ctrl; - const picsar::multi_physics::lookup_2d<amrex::Real> lookup_table; + + //lookup table data + size_t m_cum_distrib_coords_1_size; + size_t m_cum_distrib_coords_2_size; + amrex::Real* m_p_distrib_coords_1; + amrex::Real* m_p_distrib_coords_2; + amrex::Real* m_p_cum_distrib_data; }; // Factory class ============================= diff --git a/Source/QED/BreitWheelerEngineWrapper.cpp b/Source/QED/BreitWheelerEngineWrapper.cpp index 78ad0f9de..7d4f5e854 100644 --- a/Source/QED/BreitWheelerEngineWrapper.cpp +++ b/Source/QED/BreitWheelerEngineWrapper.cpp @@ -26,11 +26,7 @@ BreitWheelerEngine::build_evolve_functor () { AMREX_ALWAYS_ASSERT(lookup_tables_initialized); - return BreitWheelerEvolveOpticalDepth( - innards.ctrl, - innards.TTfunc_coords.size(), - innards.TTfunc_coords.data(), - innards.TTfunc_data.data()); + return BreitWheelerEvolveOpticalDepth(innards); } BreitWheelerGeneratePairs diff --git a/Source/QED/QuantumSyncEngineWrapper.H b/Source/QED/QuantumSyncEngineWrapper.H index 7d6657988..6afcd9313 100644 --- a/Source/QED/QuantumSyncEngineWrapper.H +++ b/Source/QED/QuantumSyncEngineWrapper.H @@ -78,16 +78,12 @@ public: * allocations should be triggered on GPU */ QuantumSynchrotronEvolveOpticalDepth( - const PicsarQuantumSynchrotronCtrl t_ctrl, - size_t KKfunc_size, - amrex::Real* p_KKfunc_coords, - amrex::Real* p_KKfunc_data): - ctrl{t_ctrl}, - lookup_table{ - KKfunc_size, - p_KKfunc_coords, - p_KKfunc_data - }{}; + QuantumSynchrotronEngineInnards& r_innards): + ctrl{r_innards.ctrl}, + m_KKfunc_size{r_innards.KKfunc_coords.size()}, + m_p_KKfunc_coords{r_innards.KKfunc_coords.dataPtr()}, + m_p_KKfunc_data{r_innards.KKfunc_data.dataPtr()} + {}; /** * Evolves the optical depth. It can be used on GPU. @@ -120,7 +116,10 @@ public: dt, opt_depth, has_event_happend, unused_event_time, dummy_lambda, - lookup_table, + picsar::multi_physics::lookup_1d<amrex::Real>{ + m_KKfunc_size, + m_p_KKfunc_coords, + m_p_KKfunc_data}, ctrl); return has_event_happend; @@ -131,7 +130,11 @@ private: const amrex::Real dummy_lambda{1.0}; const PicsarQuantumSynchrotronCtrl ctrl; - const picsar::multi_physics::lookup_1d<amrex::Real> lookup_table; + + //lookup table data + size_t m_KKfunc_size; + amrex::Real* m_p_KKfunc_coords; + amrex::Real* m_p_KKfunc_data; }; /** @@ -148,20 +151,14 @@ public: * allocations should be triggered on GPU */ QuantumSynchrotronGeneratePhotonAndUpdateMomentum( - const PicsarQuantumSynchrotronCtrl t_ctrl, - size_t cum_distrib_coords_1_size, - size_t cum_distrib_coords_2_size, - amrex::Real* p_cum_distrib_coords_1, - amrex::Real* p_cum_distrib_coords_2, - amrex::Real* p_cum_distrib_data): - ctrl{t_ctrl}, - lookup_table{ - cum_distrib_coords_1_size, - p_cum_distrib_coords_1, - cum_distrib_coords_2_size, - p_cum_distrib_coords_2, - p_cum_distrib_data - }{}; + QuantumSynchrotronEngineInnards& r_innards): + ctrl{r_innards.ctrl}, + m_cum_distrib_coords_1_size{r_innards.cum_distrib_coords_1.size()}, + m_cum_distrib_coords_2_size{r_innards.cum_distrib_coords_2.size()}, + m_p_distrib_coords_1{r_innards.cum_distrib_coords_1.data()}, + m_p_distrib_coords_2{r_innards.cum_distrib_coords_2.data()}, + m_p_cum_distrib_data{r_innards.cum_distrib_data.data()} + {}; /** * Generates sampling (template parameter) photons according to Quantum Synchrotron process. @@ -198,7 +195,12 @@ public: g_px, g_py, g_pz, g_weight, dummy_lambda, - lookup_table, + picsar::multi_physics::lookup_2d<amrex::Real>{ + m_cum_distrib_coords_1_size, + m_p_distrib_coords_1, + m_cum_distrib_coords_2_size, + m_p_distrib_coords_2, + m_p_cum_distrib_data}, ctrl, rand_zero_one_minus_epsi.data()); } @@ -208,7 +210,13 @@ private: const amrex::Real dummy_lambda{1.0}; const PicsarQuantumSynchrotronCtrl ctrl; - const picsar::multi_physics::lookup_2d<amrex::Real> lookup_table; + + //lookup table data + size_t m_cum_distrib_coords_1_size; + size_t m_cum_distrib_coords_2_size; + amrex::Real* m_p_distrib_coords_1; + amrex::Real* m_p_distrib_coords_2; + amrex::Real* m_p_cum_distrib_data; }; // Factory class ============================= |