diff options
author | 2019-06-03 13:09:06 -0700 | |
---|---|---|
committer | 2019-06-03 13:09:06 -0700 | |
commit | 50eb97ac0f075159fd8e3bd906fa0042c9013d05 (patch) | |
tree | 000330b2f95913285ab01b09b4f9d7560cf2d144 /Source | |
parent | f2e61f1ec6ed4c479594aa08b1bf632889aefb24 (diff) | |
parent | 1adca2edc7f284927cf2b977ca7d3e4f5f78d0f2 (diff) | |
download | WarpX-50eb97ac0f075159fd8e3bd906fa0042c9013d05.tar.gz WarpX-50eb97ac0f075159fd8e3bd906fa0042c9013d05.tar.zst WarpX-50eb97ac0f075159fd8e3bd906fa0042c9013d05.zip |
Merge pull request #169 from ECP-WarpX/rigid_injected_restart
Rigid injected restart
Diffstat (limited to 'Source')
-rw-r--r-- | Source/Diagnostics/ParticleIO.cpp | 47 | ||||
-rw-r--r-- | Source/Particles/RigidInjectedParticleContainer.H | 4 | ||||
-rw-r--r-- | Source/Particles/RigidInjectedParticleContainer.cpp | 1 | ||||
-rw-r--r-- | Source/Particles/WarpXParticleContainer.H | 4 |
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){}; |