Citation
openPMD (Open Standard for Particle-Mesh Data Files) is a community project with many people contributing to it. If you use openPMD and/or openPMD related software in your work, please credit it when publishing and/or presenting work performed with it in order to give back to the community.
openPMD-standard
The central definition of openPMD is the meta data schema defined in openPMD/openPMD-standard. The most general reference to openPMD is:
Tip
Axel Huebl, Remi Lehe, Jean-Luc Vay, David P. Grote, Ivo F. Sbalzarini, Stephan Kuschel, David Sagan, Christopher Mayes, Frederic Perez, Fabian Koller, Franz Poeschel, Carsten Fortmann-Grote, Angel Ferran Pousa, Juncheng E, Maxence Thevenet and Michael Bussmann. “openPMD: A meta data standard for particle and mesh based data,” DOI:10.5281/zenodo.591699 (2015)
The equivalent BibTeX code is:
@misc{openPMDstandard,
author = {Huebl, Axel and
Lehe, R{\'e}mi and
Vay, Jean-Luc and
Grote, David P. and
Sbalzarini, Ivo and
Kuschel, Stephan and
Sagan, David and
Mayes, Christopher and
P{\'e}rez, Fr{\'e}d{\'e}ric and
Koller, Fabian and
Poeschel, Franz and
Fortmann-Grote, Carsten and
Ferran Pousa, Angel and
E, Juncheng and
Th{\'e}venet, Maxence and
Bussmann, Michael},
title = {{openPMD: A meta data standard for particle and mesh based data}},
year = 2015,
publisher = {Zenodo},
doi = {10.5281/zenodo.591699},
url = {https://www.openPMD.org},
howpublished = {https://github.com/openPMD}
}
Since the openPMD-standard is an actively evolving meta data schema, a specific version of the openPMD standard might be used in your work. You can select a version-specific DOI from the release page and add the version number to the cited title, e.g.
Note
[author list as above] … “openPMD 1.1.0: A meta data standard for particle and mesh based data,” DOI:10.5281/zenodo.1167843 (2018)
openPMD-api
openPMD-api is a software library that provides a reference implementation of the openPMD-standard for popular data formats. It targets both desktop as well as high-performance computing environments.
It is good scientific practice to document all used software, including transient dependencies, with versions in, e.g. a methods section of a publication. As a software citation, you almost always want to refer to a specific version of openPMD-api in your work, as illustrated for version 0.14.3:
Tip
Axel Huebl, Franz Poeschel, Fabian Koller, Junmin Gu, Michael Bussmann, Jean-Luc Vay and Kesheng Wu. “openPMD-api 0.14.3: C++ & Python API for Scientific I/O with openPMD,” DOI:10.14278/rodare.1234 (2021)
A list of all releases and DOIs can be found on the release page.
We also provide a DOI that refers to all releases of openPMD-api:
Note
Axel Huebl, Franz Poeschel, Fabian Koller, Junmin Gu, Michael Bussmann, Jean-Luc Vay and Kesheng Wu. “openPMD-api: C++ & Python API for Scientific I/O with openPMD” DOI:10.14278/rodare.27 (2018)
The equivalent BibTeX code is:
@misc{openPMDapi,
author = {Huebl, Axel and
Poeschel, Franz and
Koller, Fabian and
Gu, Junmin and
Bussmann, Michael and
Vay, Jean-Luc and
Wu, Kesheng},
title = {{openPMD-api: C++ \& Python API for Scientific I/O with openPMD}},
month = june,
year = 2018,
doi = {10.14278/rodare.27},
url = {https://github.com/openPMD/openPMD-api}
}
Dependent Software
The good way to control complex software environments is to install software through a package manager (see installation). Furthermore, openPMD-api provides functionality to simplify the documentation of its version and enabled backends:
C++17
#include <openPMD/openPMD.hpp>
#include <iostream>
namespace io = openPMD;
// ...
std::cout << "openPMD-api: "
<< io::getVersion() << std::endl;
std::cout << "openPMD-standard: "
<< io::getStandard() << std::endl;
std::cout << "openPMD-api backend variants: " << std::endl;
for( auto const & v : io::getVariants() )
std::cout << " " << v.first << ": "
<< v.second << std::endl;
Python
import openpmd_api as io
print("openPMD-api: {}"
.format(io.__version__))
print("openPMD-api backend variants: {}"
.format(io.variants))