diff --git a/Src/Extern/openPMD-api/AMReX_ParticlesOPENPMD.H b/Src/Extern/openPMD-api/AMReX_ParticlesOPENPMD.H index ba2371e33c3..c2966b89605 100644 --- a/Src/Extern/openPMD-api/AMReX_ParticlesOPENPMD.H +++ b/Src/Extern/openPMD-api/AMReX_ParticlesOPENPMD.H @@ -55,7 +55,7 @@ void CountParticles() for (auto currentLevel = 0; currentLevel <= this->finestLevel(); currentLevel++) { // numParticles in this processor - auto numParticles = static_cast(this->NumberOfParticlesAtLevel(currentLevel, false, false)); + auto numParticles = static_cast(this->NumberOfParticlesAtLevel(currentLevel, true, true)); unsigned long long offset=0; // offset of this level unsigned long long sum=0; // numParticles in this level (sum from all processors) diff --git a/Src/Extern/openPMD-api/AMReX_PlotFileOPENPMD.cpp b/Src/Extern/openPMD-api/AMReX_PlotFileOPENPMD.cpp index fa0862f8734..621dbe8d87e 100644 --- a/Src/Extern/openPMD-api/AMReX_PlotFileOPENPMD.cpp +++ b/Src/Extern/openPMD-api/AMReX_PlotFileOPENPMD.cpp @@ -271,6 +271,20 @@ namespace amrex::openpmd_api { } // CreateWriter() + void AMReX_openPMDHandler::SetWriter(amrex::openpmd_api::AMReX_openPMDWriter* w) + { + BL_ASSERT ( w != nullptr ); + + // assuer that input key/values are inherited + // so the openpmd filepath assigned from input file is still in use + w->m_openPMDPrefix = m_Writer->m_openPMDPrefix; + w->m_openPMDEncoding = m_Writer->m_openPMDEncoding; + w->m_openPMDFileType = m_Writer->m_openPMDFileType; + w->m_openPMDSeriesOptions = m_Writer->m_openPMDSeriesOptions; + + m_Writer.reset(w); + } + //////////////////////////////////////// // // Class AMReX_openPMDWriter diff --git a/Src/Extern/openPMD-api/AMReX_PlotFileUtilOPENPMD.H b/Src/Extern/openPMD-api/AMReX_PlotFileUtilOPENPMD.H index ea4b511c9dc..4ce0efe852e 100644 --- a/Src/Extern/openPMD-api/AMReX_PlotFileUtilOPENPMD.H +++ b/Src/Extern/openPMD-api/AMReX_PlotFileUtilOPENPMD.H @@ -418,6 +418,7 @@ namespace amrex::openpmd_api std::unique_ptr m_Writer; + void SetWriter(amrex::openpmd_api::AMReX_openPMDWriter* w); private: void CreateWriter(const std::string& prefix = std::string()); diff --git a/Src/Extern/openPMD-api/AMReX_PlotFileUtilOPENPMD.cpp b/Src/Extern/openPMD-api/AMReX_PlotFileUtilOPENPMD.cpp index c5fa8cba4ea..0e020b9ae0f 100644 --- a/Src/Extern/openPMD-api/AMReX_PlotFileUtilOPENPMD.cpp +++ b/Src/Extern/openPMD-api/AMReX_PlotFileUtilOPENPMD.cpp @@ -68,9 +68,7 @@ namespace amrex::openpmd_api BL_ASSERT ( m_OpenPMDHandler != nullptr ); BL_ASSERT ( w != nullptr ); - // so the openpmd filepath assigned from input file is still in use - w->m_openPMDPrefix = m_OpenPMDHandler->m_Writer->m_openPMDPrefix; - m_OpenPMDHandler->m_Writer.reset(w); + m_OpenPMDHandler->SetWriter(w); } void CloseHandler()