aboutsummaryrefslogtreecommitdiff
path: root/Source/Particles/Collision/CollisionHandler.cpp
diff options
context:
space:
mode:
authorGravatar David Grote <grote1@llnl.gov> 2021-01-03 14:10:24 -0800
committerGravatar GitHub <noreply@github.com> 2021-01-03 14:10:24 -0800
commit2fe64fb007abd3b55b320ba1acf2f285345248ae (patch)
treec9bac6b32c296889717598445917e8704b8c485e /Source/Particles/Collision/CollisionHandler.cpp
parent4a62e7c9c62f3ffee3f61902139fd302fefba521 (diff)
downloadWarpX-2fe64fb007abd3b55b320ba1acf2f285345248ae.tar.gz
WarpX-2fe64fb007abd3b55b320ba1acf2f285345248ae.tar.zst
WarpX-2fe64fb007abd3b55b320ba1acf2f285345248ae.zip
Reconfigured the collision classes to allow for generalization (#1583)
* Reconfigured the collision classes to allow for generalization * Added literals to PairWiseCoulombCollision * Minor cleanup of PairWiseCoulombCollision.cpp, removing query of ndt * Add boilerplate to CollisionBase class * Fixed white space in CollisionBase.H Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
Diffstat (limited to 'Source/Particles/Collision/CollisionHandler.cpp')
-rw-r--r--Source/Particles/Collision/CollisionHandler.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/Source/Particles/Collision/CollisionHandler.cpp b/Source/Particles/Collision/CollisionHandler.cpp
new file mode 100644
index 000000000..588e8d008
--- /dev/null
+++ b/Source/Particles/Collision/CollisionHandler.cpp
@@ -0,0 +1,52 @@
+/* Copyright 2020 David Grote
+ *
+ * This file is part of WarpX.
+ *
+ * License: BSD-3-Clause-LBNL
+ */
+#include "CollisionHandler.H"
+#include "PairWiseCoulombCollision.H"
+#include <AMReX_ParmParse.H>
+
+CollisionHandler::CollisionHandler()
+{
+
+ // Read in collision input
+ amrex::ParmParse pp_collisions("collisions");
+ pp_collisions.queryarr("collision_names", collision_names);
+
+ // Create instances based on the collision type
+ auto const ncollisions = collision_names.size();
+ collision_types.resize(ncollisions);
+ allcollisions.resize(ncollisions);
+ for (int i = 0; i < static_cast<int>(ncollisions); ++i) {
+ amrex::ParmParse pp_collision_name(collision_names[i]);
+
+ // For legacy, pairwisecoulomb is the default
+ std::string type = "pairwisecoulomb";
+
+ pp_collision_name.query("type", type);
+ collision_types[i] = type;
+
+ if (type == "pairwisecoulomb") {
+ allcollisions[i] = std::make_unique<PairWiseCoulombCollision>(collision_names[i]);
+ }
+
+ }
+
+}
+
+/** Perform all collisions
+ *
+ * @param cur_time Current time
+ * @param mypc MultiParticleContainer calling this method
+ *
+ */
+void CollisionHandler::doCollisions ( amrex::Real cur_time, MultiParticleContainer* mypc)
+{
+
+ for (auto& collision : allcollisions) {
+ collision->doCollisions( cur_time, mypc);
+ }
+
+}