aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/MultiParticleContainer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Particles/MultiParticleContainer.cpp')
-rw-r--r--Source/Particles/MultiParticleContainer.cpp59
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