WarpX
Public Member Functions | Private Member Functions | Private Attributes | List of all members
WarpXOpenPMDPlot Class Reference

#include <WarpXOpenPMD.H>

Public Member Functions

 WarpXOpenPMDPlot (bool oneFilePerTS, std::string filetype, std::vector< bool > fieldPMLdirections)
 
 ~WarpXOpenPMDPlot ()
 
void SetStep (int ts, const std::string &filePrefix)
 
void CloseStep ()
 
void WriteOpenPMDParticles (const amrex::Vector< ParticleDiag > &particle_diags)
 
void WriteOpenPMDFields (const std::vector< std::string > &varnames, const amrex::MultiFab &mf, const amrex::Geometry &geom, const int iteration, const double time) const
 

Private Member Functions

void Init (openPMD::Access access, const std::string &filePrefix)
 
void SetupPos (WarpXParticleContainer *pc, openPMD::ParticleSpecies &currSpecies, const unsigned long long &np) const
 
void SetupRealProperties (openPMD::ParticleSpecies &currSpecies, const amrex::Vector< int > &write_real_comp, const amrex::Vector< std::string > &real_comp_names, unsigned long long np) const
 
void SaveRealProperty (WarpXParIter &pti, openPMD::ParticleSpecies &currSpecies, unsigned long long offset, const amrex::Vector< int > &write_real_comp, const amrex::Vector< std::string > &real_comp_names) const
 
void DumpToFile (WarpXParticleContainer *pc, const std::string &name, int iteration, const amrex::Vector< int > &write_real_comp, const amrex::Vector< int > &write_int_comp, const amrex::Vector< std::string > &real_comp_names, const amrex::Vector< std::string > &int_comp_names) const
 
void GetFileName (std::string &filename)
 

Private Attributes

std::unique_ptr< openPMD::Series > m_Series
 
int m_MPIRank = 0
 
int m_MPISize = 1
 
int m_NumSoARealAttributes = PIdx::nattribs
 
int m_NumAoSRealAttributes = 0
 WarpX' addition particle attributes in SoA. More...
 
bool m_OneFilePerTS = true
 WarpX definition: no additional attributes in particle AoS. More...
 
std::string m_OpenPMDFileType = "bp"
 write in openPMD fileBased manner for individual time steps More...
 
int m_CurrentStep = -1
 MPI-parallel openPMD backend: bp or h5. More...
 
std::vector< bool > m_fieldPMLdirections
 

Detailed Description

Writer logic for openPMD particles and fields

Constructor & Destructor Documentation

◆ WarpXOpenPMDPlot()

WarpXOpenPMDPlot::WarpXOpenPMDPlot ( bool  oneFilePerTS,
std::string  filetype,
std::vector< bool >  fieldPMLdirections 
)

Initialize openPMD I/O routines

Parameters
oneFilePerTSwrite one file per timestep
filetypefile backend, e.g. "bp" or "h5"
fieldPMLdirectionsPML field solver,
See also
WarpX::getPMLdirections()

◆ ~WarpXOpenPMDPlot()

WarpXOpenPMDPlot::~WarpXOpenPMDPlot ( )

Member Function Documentation

◆ CloseStep()

void WarpXOpenPMDPlot::CloseStep ( )

Close the step

Signal that no further updates will be written for the step.

◆ DumpToFile()

void WarpXOpenPMDPlot::DumpToFile ( WarpXParticleContainer pc,
const std::string &  name,
int  iteration,
const amrex::Vector< int > &  write_real_comp,
const amrex::Vector< int > &  write_int_comp,
const amrex::Vector< std::string > &  real_comp_names,
const amrex::Vector< std::string > &  int_comp_names 
) const
private

This function saves the plot file

Parameters
[in]pcWarpX particle container
[in]namespecies name
[in]iterationtimestep
[in]write_real_compThe real attribute ids, from WarpX
[in]real_comp_namesThe real attribute names, from WarpX
[in]write_int_compThe int attribute ids, from WarpX
[in]int_comp_namesThe int attribute names, from WarpX

◆ GetFileName()

void WarpXOpenPMDPlot::GetFileName ( std::string &  filename)
private

◆ Init()

void WarpXOpenPMDPlot::Init ( openPMD::Access  access,
const std::string &  filePrefix 
)
private

◆ SaveRealProperty()

void WarpXOpenPMDPlot::SaveRealProperty ( WarpXParIter pti,
openPMD::ParticleSpecies &  currSpecies,
unsigned long long  offset,
const amrex::Vector< int > &  write_real_comp,
const amrex::Vector< std::string > &  real_comp_names 
) const
private

This function saves the values of the entries for particle properties

Parameters
[in]ptiWarpX particle iterator
[in]currSpeciesThe openPMD species to save to
[in]offsetoffset to start saving the particle iterator contents
[in]write_real_compThe real attribute ids, from WarpX
[in]real_comp_namesThe real attribute names, from WarpX

◆ SetStep()

void WarpXOpenPMDPlot::SetStep ( int  ts,
const std::string &  filePrefix 
)

Set Iteration Step for the series

Note
If an iteration has been written, then it will give a warning

◆ SetupPos()

void WarpXOpenPMDPlot::SetupPos ( WarpXParticleContainer pc,
openPMD::ParticleSpecies &  currSpecies,
const unsigned long long &  np 
) const
private

This function sets up the entries for storing the particle positions, global IDs, and constant records (charge, mass)

Parameters
[in]pcWarpX particle container
[in]currSpeciesCorresponding openPMD species
[in]npNumber of particles

◆ SetupRealProperties()

void WarpXOpenPMDPlot::SetupRealProperties ( openPMD::ParticleSpecies &  currSpecies,
const amrex::Vector< int > &  write_real_comp,
const amrex::Vector< std::string > &  real_comp_names,
unsigned long long  np 
) const
private

This function sets up the entries for particle properties

Parameters
[in]currSpeciesThe openPMD species
[in]write_real_compThe real attribute ids, from WarpX
[in]real_comp_namesThe real attribute names, from WarpX
[in]npNumber of particles

◆ WriteOpenPMDFields()

void WarpXOpenPMDPlot::WriteOpenPMDFields ( const std::vector< std::string > &  varnames,
const amrex::MultiFab &  mf,
const amrex::Geometry &  geom,
const int  iteration,
const double  time 
) const

◆ WriteOpenPMDParticles()

void WarpXOpenPMDPlot::WriteOpenPMDParticles ( const amrex::Vector< ParticleDiag > &  particle_diags)

Member Data Documentation

◆ m_CurrentStep

int WarpXOpenPMDPlot::m_CurrentStep = -1
private

MPI-parallel openPMD backend: bp or h5.

◆ m_fieldPMLdirections

std::vector< bool > WarpXOpenPMDPlot::m_fieldPMLdirections
private

◆ m_MPIRank

int WarpXOpenPMDPlot::m_MPIRank = 0
private

◆ m_MPISize

int WarpXOpenPMDPlot::m_MPISize = 1
private

◆ m_NumAoSRealAttributes

int WarpXOpenPMDPlot::m_NumAoSRealAttributes = 0
private

WarpX' addition particle attributes in SoA.

◆ m_NumSoARealAttributes

int WarpXOpenPMDPlot::m_NumSoARealAttributes = PIdx::nattribs
private

◆ m_OneFilePerTS

bool WarpXOpenPMDPlot::m_OneFilePerTS = true
private

WarpX definition: no additional attributes in particle AoS.

◆ m_OpenPMDFileType

std::string WarpXOpenPMDPlot::m_OpenPMDFileType = "bp"
private

write in openPMD fileBased manner for individual time steps

◆ m_Series

std::unique_ptr<openPMD::Series> WarpXOpenPMDPlot::m_Series
private

The documentation for this class was generated from the following files: