aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles
diff options
context:
space:
mode:
authorGravatar Luca Fedeli <luca.fedeli@cea.fr> 2019-10-25 12:09:24 +0200
committerGravatar Luca Fedeli <luca.fedeli@cea.fr> 2019-10-25 12:09:24 +0200
commit06ff9be518f86d73b7fd8056676e9a6c49b83f08 (patch)
tree18302f92609a4d6101d9a8088312e08faa265a63 /Source/Particles
parente723d2f78b40dae713fabfebe15fdecbcd4e4296 (diff)
parentd37100ff5f6eafd30167c463ca107dff10dbd9f4 (diff)
downloadWarpX-06ff9be518f86d73b7fd8056676e9a6c49b83f08.tar.gz
WarpX-06ff9be518f86d73b7fd8056676e9a6c49b83f08.tar.zst
WarpX-06ff9be518f86d73b7fd8056676e9a6c49b83f08.zip
Merge branch 'qed_bw_qs_factory_class' into qed_evolve_optical_depth
Diffstat (limited to 'Source/Particles')
-rw-r--r--Source/Particles/MultiParticleContainer.H4
-rw-r--r--Source/Particles/MultiParticleContainer.cpp29
-rw-r--r--Source/Particles/PhotonParticleContainer.cpp5
3 files changed, 19 insertions, 19 deletions
diff --git a/Source/Particles/MultiParticleContainer.H b/Source/Particles/MultiParticleContainer.H
index c19e166b0..75dda58af 100644
--- a/Source/Particles/MultiParticleContainer.H
+++ b/Source/Particles/MultiParticleContainer.H
@@ -218,8 +218,8 @@ protected:
#ifdef WARPX_QED
// The QED engines
- BreitWheelerEngine bw_engine;
- QuantumSynchrotronEngine qs_engine;
+ std::shared_ptr<BreitWheelerEngine> shr_p_bw_engine;
+ std::shared_ptr<QuantumSynchrotronEngine> shr_p_qs_engine;
//_______________________________
/**
diff --git a/Source/Particles/MultiParticleContainer.cpp b/Source/Particles/MultiParticleContainer.cpp
index 566422a7a..54a4396c1 100644
--- a/Source/Particles/MultiParticleContainer.cpp
+++ b/Source/Particles/MultiParticleContainer.cpp
@@ -744,16 +744,17 @@ MultiParticleContainer::doFieldIonization ()
#ifdef WARPX_QED
void MultiParticleContainer::InitQED ()
{
+ shr_p_qs_engine = std::make_shared<QuantumSynchrotronEngine>();
+ shr_p_bw_engine = std::make_shared<BreitWheelerEngine>();
+
for (auto& pc : allcontainers) {
if(pc->has_quantum_sync()){
pc->set_quantum_sync_engine_ptr
- (std::make_shared<QuantumSynchrotronEngine>(qs_engine));
- someone_has_quantum_sync = true;
+ (shr_p_qs_engine);
}
if(pc->has_breit_wheeler()){
pc->set_breit_wheeler_engine_ptr
- (std::make_shared<BreitWheelerEngine>(bw_engine));
- someone_has_breit_wheeler = true;
+ (shr_p_bw_engine);
}
}
@@ -781,8 +782,8 @@ void MultiParticleContainer::InitQuantumSync ()
if(generate_table && ParallelDescriptor::IOProcessor()){
- qs_engine.compute_lookup_tables(ctrl);
- Vector<char> all_data = qs_engine.export_lookup_tables_data();
+ shr_p_qs_engine->compute_lookup_tables(ctrl);
+ Vector<char> all_data = shr_p_qs_engine->export_lookup_tables_data();
WarpXUtilIO::WriteBinaryDataOnFile(filename, all_data);
}
ParallelDescriptor::Barrier();
@@ -794,10 +795,10 @@ void MultiParticleContainer::InitQuantumSync ()
//No need to initialize from raw data for the processor that
//has just generated the table
if(!generate_table || !ParallelDescriptor::IOProcessor()){
- qs_engine.init_lookup_tables_from_raw_data(table_data);
+ shr_p_qs_engine->init_lookup_tables_from_raw_data(table_data);
}
- if(!qs_engine.are_lookup_tables_initialized())
+ if(!shr_p_qs_engine->are_lookup_tables_initialized())
amrex::Error("Table initialization has failed!\n");
}
@@ -816,8 +817,8 @@ void MultiParticleContainer::InitBreitWheeler ()
//_________________________________________________
if(generate_table && ParallelDescriptor::IOProcessor()){
- bw_engine.compute_lookup_tables(ctrl);
- Vector<char> all_data = bw_engine.export_lookup_tables_data();
+ shr_p_bw_engine->compute_lookup_tables(ctrl);
+ Vector<char> all_data =shr_p_bw_engine->export_lookup_tables_data();
WarpXUtilIO::WriteBinaryDataOnFile(filename, all_data);
}
ParallelDescriptor::Barrier();
@@ -829,10 +830,10 @@ void MultiParticleContainer::InitBreitWheeler ()
//No need to initialize from raw data for the processor that
//has just generated the table
if(!generate_table || !ParallelDescriptor::IOProcessor()){
- bw_engine.init_lookup_tables_from_raw_data(table_data);
+ shr_p_bw_engine->init_lookup_tables_from_raw_data(table_data);
}
- if(!bw_engine.are_lookup_tables_initialized())
+ if(!shr_p_bw_engine->are_lookup_tables_initialized())
amrex::Error("Table initialization has failed!\n");
}
@@ -840,7 +841,7 @@ std::tuple<bool,std::string,PicsarQuantumSynchrotronCtrl>
MultiParticleContainer::ParseQuantumSyncParams ()
{
PicsarQuantumSynchrotronCtrl ctrl =
- qs_engine.get_default_ctrl();
+ shr_p_qs_engine->get_default_ctrl();
bool generate_table{false};
std::string table_name;
@@ -898,7 +899,7 @@ std::tuple<bool,std::string,PicsarBreitWheelerCtrl>
MultiParticleContainer::ParseBreitWheelerParams ()
{
PicsarBreitWheelerCtrl ctrl =
- bw_engine.get_default_ctrl();
+ shr_p_bw_engine->get_default_ctrl();
bool generate_table{false};
std::string table_name;
diff --git a/Source/Particles/PhotonParticleContainer.cpp b/Source/Particles/PhotonParticleContainer.cpp
index 5bd7eb372..ea55e04c6 100644
--- a/Source/Particles/PhotonParticleContainer.cpp
+++ b/Source/Particles/PhotonParticleContainer.cpp
@@ -45,9 +45,8 @@ void PhotonParticleContainer::InitData()
{
AddParticles(0); // Note - add on level 0
- if (maxLevel() > 0) {
- Redistribute(); // We then redistribute
- }
+ Redistribute(); // We then redistribute
+
}
void