aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Remi Lehe <remi.lehe@normalesup.org> 2019-06-03 13:09:06 -0700
committerGravatar GitHub <noreply@github.com> 2019-06-03 13:09:06 -0700
commit50eb97ac0f075159fd8e3bd906fa0042c9013d05 (patch)
tree000330b2f95913285ab01b09b4f9d7560cf2d144
parentf2e61f1ec6ed4c479594aa08b1bf632889aefb24 (diff)
parent1adca2edc7f284927cf2b977ca7d3e4f5f78d0f2 (diff)
downloadWarpX-50eb97ac0f075159fd8e3bd906fa0042c9013d05.tar.gz
WarpX-50eb97ac0f075159fd8e3bd906fa0042c9013d05.tar.zst
WarpX-50eb97ac0f075159fd8e3bd906fa0042c9013d05.zip
Merge pull request #169 from ECP-WarpX/rigid_injected_restart
Rigid injected restart
-rw-r--r--Source/Diagnostics/ParticleIO.cpp47
-rw-r--r--Source/Particles/RigidInjectedParticleContainer.H4
-rw-r--r--Source/Particles/RigidInjectedParticleContainer.cpp1
-rw-r--r--Source/Particles/WarpXParticleContainer.H4
4 files changed, 53 insertions, 3 deletions
diff --git a/Source/Diagnostics/ParticleIO.cpp b/Source/Diagnostics/ParticleIO.cpp
index ba413dcae..0f6246715 100644
--- a/Source/Diagnostics/ParticleIO.cpp
+++ b/Source/Diagnostics/ParticleIO.cpp
@@ -5,6 +5,53 @@
using namespace amrex;
void
+RigidInjectedParticleContainer::ReadHeader (std::istream& is)
+{
+ is >> charge >> mass;
+ WarpX::GotoNextLine(is);
+
+ int nlevs;
+ is >> nlevs;
+ WarpX::GotoNextLine(is);
+
+ AMREX_ASSERT(zinject_plane_levels.size() == 0);
+ AMREX_ASSERT(done_injecting.size() == 0);
+
+ for (int i = 0; i < nlevs; ++i)
+ {
+ int zinject_plane_tmp;
+ is >> zinject_plane_tmp;
+ zinject_plane_levels.push_back(zinject_plane_tmp);
+ WarpX::GotoNextLine(is);
+ }
+
+ for (int i = 0; i < nlevs; ++i)
+ {
+ int done_injecting_tmp;
+ is >> done_injecting_tmp;
+ done_injecting.push_back(done_injecting_tmp);
+ WarpX::GotoNextLine(is);
+ }
+}
+
+void
+RigidInjectedParticleContainer::WriteHeader (std::ostream& os) const
+{
+ // no need to write species_id
+ os << charge << " " << mass << "\n";
+ int nlevs = zinject_plane_levels.size();
+ os << nlevs << "\n";
+ for (int i = 0; i < nlevs; ++i)
+ {
+ os << zinject_plane_levels[i] << "\n";
+ }
+ for (int i = 0; i < nlevs; ++i)
+ {
+ os << done_injecting[i] << "\n";
+ }
+}
+
+void
WarpXParticleContainer::ReadHeader (std::istream& is)
{
is >> charge >> mass;
diff --git a/Source/Particles/RigidInjectedParticleContainer.H b/Source/Particles/RigidInjectedParticleContainer.H
index d3a69f5b0..0b27a2f2f 100644
--- a/Source/Particles/RigidInjectedParticleContainer.H
+++ b/Source/Particles/RigidInjectedParticleContainer.H
@@ -57,6 +57,10 @@ public:
const amrex::MultiFab& By,
const amrex::MultiFab& Bz) override;
+ virtual void ReadHeader (std::istream& is) override;
+
+ virtual void WriteHeader (std::ostream& os) const override;
+
private:
// User input quantities
diff --git a/Source/Particles/RigidInjectedParticleContainer.cpp b/Source/Particles/RigidInjectedParticleContainer.cpp
index fd1b2dfb5..2a3e8dd0d 100644
--- a/Source/Particles/RigidInjectedParticleContainer.cpp
+++ b/Source/Particles/RigidInjectedParticleContainer.cpp
@@ -77,7 +77,6 @@ RigidInjectedParticleContainer::RemapParticles()
for (WarpXParIter pti(*this, lev); pti.isValid(); ++pti)
{
-
auto& attribs = pti.GetAttribs();
auto& uxp = attribs[PIdx::ux];
auto& uyp = attribs[PIdx::uy];
diff --git a/Source/Particles/WarpXParticleContainer.H b/Source/Particles/WarpXParticleContainer.H
index c24a6a3dc..b24e14e9f 100644
--- a/Source/Particles/WarpXParticleContainer.H
+++ b/Source/Particles/WarpXParticleContainer.H
@@ -225,9 +225,9 @@ public:
amrex::Real x, amrex::Real y, amrex::Real z,
std::array<amrex::Real,PIdx::nattribs>& attribs);
- void ReadHeader (std::istream& is);
+ virtual void ReadHeader (std::istream& is);
- void WriteHeader (std::ostream& os) const;
+ virtual void WriteHeader (std::ostream& os) const;
virtual void ConvertUnits (ConvertDirection convert_dir){};