\(\renewcommand{\AA}{\text{Å}}\)
4.13.4. Citation management for contributed features
LAMMPS provides a built-in mechanism to remind users to cite publications
that describe the implementation of contributed features. This is
implemented through the CiteMe class.
Overview
When users use specific features in LAMMPS, a citation reminder can be configured in the contributed source code to remind users which publications they should cite. Citations are output in three ways:
To the screen (with configurable verbosity)
To the log file (with configurable verbosity)
To an optional BibTeX file for easy integration with bibliography managers
The system automatically deduplicates citations, so each publication is listed only once even if multiple features reference it or they are used multiple times.
Adding a citation reminder to contributed code
If you are contributing a new feature to LAMMPS you can add a reminder for citing a publication describing the implementation of that feature. This is a simple two-step process:
Step 1: Define the citation string
At the top of your implementation file (typically a .cpp file),
define a static string containing the citation in BibTeX format. The
string should start with a single line description including a DOI URL,
followed by a complete BibTeX entry. Example:
static const char cite_my_feature[] =
"my_feature command: https://doi.org/10.1234/example.doi\n\n"
"@Article{AuthorYear,\n"
" author = {First Author and Second Author},\n"
" title = {Title of the Paper},\n"
" journal = {Journal Name},\n"
" year = 2024,\n"
" volume = 100,\n"
" pages = {1-10}\n"
"}\n\n";
Step 2: Register the citation
In your style’s constructor, add a call to register the citation. Always
check that the citeme pointer instance in the LAMMPS is available
before calling, since the pointer will be NULL when citation tracking is
disabled via a command line option:
MyStyle::MyStyle(LAMMPS *lmp) : Parent(lmp)
{
if (lmp->citeme) lmp->citeme->add(cite_my_feature);
// ... rest of constructor code
}
Output:
The example from above will produce by default the following output:
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Your simulation uses code contributions which should be cited:
- my_feature command: https://doi.org/10.1234/example.doi
The file log.cite lists these citations in BibTeX format.
CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE-CITE
Implementation details
The CiteMe class uses hash-based
deduplication to ensure each citation is shown only once, even if multiple
features in a simulation reference the same publication. Only MPI rank 0
performs citation output to avoid flooding the output in parallel runs.
Citations added with CiteMe::add() are:
Written immediately to the BibTeX file (if enabled)
Buffered for screen and log file output
Flushed to screen and log file at appropriate times (typically at the end of the run or when LAMMPS has reached the end of the input file).
For the complete API documentation see the class reference below:
-
class CiteMe : protected Pointers
The CiteMe class provides a mechanism for LAMMPS to remind users to cite relevant publications when they use specific contributed features. This ensures proper attribution for the scientific work underlying LAMMPS implementations.
Public Functions
-
CiteMe(class LAMMPS*, int, int, const char*)
Constructor for CiteMe class
- Parameters:
lmp – Pointer to the main LAMMPS object
_screen – Output mode for screen (VERBOSE or TERSE)
_logfile – Output mode for log file (VERBOSE or TERSE)
_file – Optional filename for BibTeX citation output file (can be NULL)
-
~CiteMe() override
Destructor flushes any remaining citations
-
void add(const std::string &reference)
Register a publication for citation output
Adds a citation to the set of publications to be cited. Each citation should contain a BibTeX entry and is output only once, even if add() is called multiple times with the same citation. The citation string should start with a brief description including a DOI, followed by a complete BibTeX entry.
This method should typically be called in the constructor of a style that implements a published method or algorithm.
\param reference String containing the citation in BibTeX format with DOI header
-
CiteMe(class LAMMPS*, int, int, const char*)