diff options
Diffstat (limited to 'Source/Particles/MultiParticleContainer.cpp')
-rw-r--r-- | Source/Particles/MultiParticleContainer.cpp | 59 |
1 files changed, 58 insertions, 1 deletions
diff --git a/Source/Particles/MultiParticleContainer.cpp b/Source/Particles/MultiParticleContainer.cpp index c860d21f5..bca2995e9 100644 --- a/Source/Particles/MultiParticleContainer.cpp +++ b/Source/Particles/MultiParticleContainer.cpp @@ -5,7 +5,6 @@ #include <limits> #include <algorithm> #include <string> -#include <memory> using namespace amrex; @@ -740,11 +739,69 @@ void MultiParticleContainer::InitQED () if(pc->has_quantum_sync()){ pc->set_quantum_sync_engine_ptr (std::make_shared<QuantumSynchrotronEngine>(qs_engine)); + someone_has_quantum_sync = true; } if(pc->has_breit_wheeler()){ pc->set_breit_wheeler_engine_ptr (std::make_shared<BreitWheelerEngine>(bw_engine)); + someone_has_breit_wheeler = true; } } + + if(someone_has_quantum_sync) + InitQuantumSync(); + + if(someone_has_breit_wheeler) + InitBreitWheeler(); + +} + +void MultiParticleContainer::InitQuantumSync () +{ + bool is_custom; + WarpXQuantumSynchrotronWrapperCtrl ctrl; + std::string filename; + std::tie(is_custom, filename, ctrl) = ParseQuantumSyncParams(); + + if(ParallelDescriptor::IOProcessor()){ + qs_engine.compute_lookup_tables_default(); + qs_engine.write_lookup_tables("qed_qs_lookup.bin"); + } + amrex::ParallelDescriptor::Barrier(); + qs_engine.read_lookup_tables("qed_qs_lookup.bin"); +} + +void MultiParticleContainer::InitBreitWheeler () +{ + bool is_custom; + WarpXBreitWheelerWrapperCtrl ctrl; + std::string filename; + std::tie(is_custom, filename, ctrl) = ParseBreitWheelerParams(); + + if(ParallelDescriptor::IOProcessor()){ + bw_engine.compute_lookup_tables_default(); + bw_engine.write_lookup_tables("qed_bw_lookup.bin"); + } + amrex::ParallelDescriptor::Barrier(); + bw_engine.read_lookup_tables("qed_bw_lookup.bin"); + +} + +std::tuple<bool,std::string,WarpXQuantumSynchrotronWrapperCtrl> +MultiParticleContainer::ParseQuantumSyncParams () +{ + WarpXQuantumSynchrotronWrapperCtrl ctrl; + bool is_custom{false}; + + return std::make_tuple(is_custom, std::string(""), ctrl); +} + +std::tuple<bool,std::string,WarpXBreitWheelerWrapperCtrl> +MultiParticleContainer::ParseBreitWheelerParams () +{ + WarpXBreitWheelerWrapperCtrl ctrl; + bool is_custom{false}; + + return std::make_tuple(is_custom, std::string(""), ctrl); } #endif |