LAMMPS

For this specific format, the minimum required files are:

  • A user defined input file.

  • A data file with the initial atomic cooordinates and cell dimensions, used with the read_data command.

  • The output file generated by LAMMPS, named log.lammps by default.

  • A (g)zipped file with all the generated trajectories, or in its absence, a single file with all the trajectories in it, created with the dump command.

Note

LAMMPS allows to run the read_data command multiple times to compose the final atoms of the system. ioChem-BD only supports one data file to be uploaded to the platform. Additionals files used to compose the final geometry with the commands read_restart and create_atoms are currently not supported.

Almost all of the atom_styles are supported except hybrid and tdpd.

All units parameter values are supported and the report will display units accordingly.

The platform will render the trajectory files in the HTML report and also keep them inside the platform for its later download. Additionally will derive from them a file called multistep.cif holding all the steps in CIF format.

General Info

LAMMPS - General Info - Main fields

Field

Source

Sample value

Title

Set on Browse calculation publication

Sample calculation

Browse Item

URL pointing Browse published item

https://iochem-bd.iciq.es/browse/handle/100/5672

Program

program.header template

LAMMPS 29 Oct 2020

Author

Username fullname

Doe, John

Calculation type

Custom logic 1 2

Molecular Dynamics (NPT) (T=Nose-Hoover, P=Nose-Hoover)

../_images/LAMMPS_header.png

Settings

This section captures initialization settings like units used, potentials, boundaries style, time, timestep used, etc.

Data source: <module cmlx:templateRef=’setup’>

../_images/LAMMPS_settings.png

Atomic coordinates

After settings, our HTML resume will output cell dimensions and an xyz coordinates table with current molecule atoms.

For every atom, we will output it’s serial number, atom type, coordinates in angstroms in cartesian and fractional types.

Information its read from read_data structure file and parsed based on the atom_style defined.

../_images/LAMMPS_geometry.png

Modules

Step resume

Data source: <module cmlx:templateRef=’steps’>

This section is composed of a summary table with the energies for every timestep along with the thermodyamic conditions (pressure and temperature) and cell dimension evolution (length and angles).

Next to it a dynamic graph will display those table values, grouping them by type.

../_images/LAMMPS_module_energies.png ../_images/LAMMPS_module_energies_2.png

Molecular dynamics

Data source: Trajectory steps extracted from the original LAMMPS trajectory file.

The provided steps are uncompressed, converted into CIF format and concatenated into a single file called *multistep.cif*.

To render it, users will select the desired clip and click the Play button to load it.

The number of rendered images per clip will be based on the size of the contained molecule. On large molecules (+1000 atoms), the animation will render 50 steps per clip, otherwise there will be 200 steps per clip.

../_images/LAMMPS_module_md.png

Timing

Data sources:

  • <module cmlx:templateRef=’mpi’>

  • <module cmlx:templateRef=’walltime’>

  • <module cmlx:templateRef=’performance’>

../_images/LAMMPS_module_timing.png
1

string l:getMethod string setup

 1    $setup          Refers to all defined setup parameters from <module cmlx:templateRef="setup">
 2
 3    <xsl:variable name="l:npt.regex">.*\s+npt.*</xsl:variable>
 4    <xsl:variable name="l:nvt.regex">.*\s+(nvt.*|langevin.*|temp/.*)\s+.*</xsl:variable>
 5    <xsl:variable name="l:nvt.pairstyle.regex">.*\s+(dpd/tstat.*)\s+.*</xsl:variable>
 6    <xsl:variable name="l:nph.regex">.*\s+nph\s+.*</xsl:variable>
 7    <xsl:variable name="l:nve.regex">.*\s+nve\s*.*</xsl:variable>
 8
 9    <xsl:variable name="l:minimize">Geometry optimization</xsl:variable>
10    <xsl:variable name="l:md">Molecular Dynamics</xsl:variable>
11    <xsl:variable name="l:npt">NPT</xsl:variable>
12    <xsl:variable name="l:nvt">NVT</xsl:variable>
13    <xsl:variable name="l:nph">NPH</xsl:variable>
14    <xsl:variable name="l:nve">NVE</xsl:variable>
15
16    <xsl:function name="l:getMethod">
17            <xsl:param name="setup"  />
18            <xsl:variable name="methods">
19                    <xsl:if test="exists(l:getParameter($setup, 'minimize'))">
20                        <xsl:value-of select="$l:minimize"/><xsl:value-of select="'|'"/>
21                    </xsl:if>
22
23                    <xsl:for-each select="l:getParameter($setup, 'pair_style')">
24                        <xsl:if test="matches(.,$l:nvt.pairstyle.regex)">
25                            <xsl:value-of select="$l:nvt"/><xsl:value-of select="'|'"/>
26                        </xsl:if>
27                   </xsl:for-each>
28
29                    <xsl:for-each select="l:getParameter($setup, 'fix')">
30                        <xsl:choose>
31                            <xsl:when test="matches(., $l:npt.regex)"><xsl:value-of select="$l:npt"/><xsl:value-of select="'|'"/></xsl:when>
32                            <xsl:when test="matches(., $l:nvt.regex)"><xsl:value-of select="$l:nvt"/><xsl:value-of select="'|'"/></xsl:when>
33                            <xsl:when test="matches(., $l:nph.regex)"><xsl:value-of select="$l:nph"/><xsl:value-of select="'|'"/></xsl:when>
34                            <xsl:when test="matches(., $l:nve.regex)"><xsl:value-of select="$l:nve"/><xsl:value-of select="'|'"/></xsl:when>
35                        </xsl:choose>
36                    </xsl:for-each>
37
38            </xsl:variable>
39
40            <xsl:value-of select="distinct-values(tokenize(substring($methods, 1, string-length($methods)-1), '\|'))"/>
41    </xsl:function>
2

string l:getCouplingMethods string setup

 1    $setup          Refers to all defined setup parameters from <module cmlx:templateRef="setup">
 2
 3
 4    <!-- thermostat / barostat types -->
 5    <xsl:variable name="l:thermostat.nosehoover">Nose-Hoover</xsl:variable>
 6    <xsl:variable name="l:thermostat.langevin">Langevin</xsl:variable>
 7    <xsl:variable name="l:thermostat.berendsen">Berendsen</xsl:variable>
 8    <xsl:variable name="l:thermostat.hd">Hamiltonian dynamics</xsl:variable>
 9    <xsl:variable name="l:thermostat.ld">Langevin dynamics</xsl:variable>
10    <xsl:variable name="l:thermostat.rescaling">Rescaling</xsl:variable>
11    <xsl:variable name="l:thermostat.dpd">Dissipative particle dynamics</xsl:variable>
12
13    <xsl:variable name="l:barostat.nosehoover">Nose-Hoover</xsl:variable>
14    <xsl:variable name="l:barostat.berendsen">Berendsen</xsl:variable>
15
16    <!-- nvt parameters -->
17    <xsl:variable name="l:nvt.nosehoover.regex">.*\s+nvt.*</xsl:variable>
18    <xsl:variable name="l:nvt.langevin.regex">.*\s+langevin.*</xsl:variable>
19    <xsl:variable name="l:nvt.berendsen.regex">.*\s+temp/berendsen.*</xsl:variable>
20    <xsl:variable name="l:nvt.hd.regex">.*\s+temp/csvr.*</xsl:variable>
21    <xsl:variable name="l:nvt.ld.regex">.*\s+temp/csld.*</xsl:variable>
22    <xsl:variable name="l:nvt.rescaling.regex">.*\s+temp/rescale.*</xsl:variable>
23    <xsl:variable name="l:nvt.dpd.regex">.*\s+dpd/tstat.*</xsl:variable>
24
25    <!-- npt parameters -->
26    <xsl:variable name="l:npt.nosehoover.regex">.*\s+npt.*</xsl:variable>
27
28    <!-- nph parameters -->
29    <xsl:variable name="l:nph.nosehoover.regex">.*\s+nph.*</xsl:variable>
30    <xsl:variable name="l:nph.berendsen.regex">.*\s+press/berendsen.*</xsl:variable>
31
32    <xsl:function name="l:getCouplingMethods">
33        <xsl:param name="setup"  />
34        <xsl:variable name="cmethods">
35            <xsl:for-each select="l:getParameter($setup, 'pair_style')">
36                <xsl:if test="matches(.,$l:nvt.pairstyle.regex)">
37                    <xsl:value-of select="concat('(T=', $l:thermostat.dpd,')|')"/>
38                </xsl:if>
39            </xsl:for-each>
40
41            <xsl:for-each select="l:getParameter($setup, 'fix')">
42                <!-- nvt -->
43                <xsl:if test="matches(., $l:nvt.nosehoover.regex)"><xsl:value-of select="concat('(T=', $l:thermostat.nosehoover,')|')"/></xsl:if>
44                <xsl:if test="matches(., $l:nvt.langevin.regex)"><xsl:value-of select="concat('(T=', $l:thermostat.langevin,')|')"/></xsl:if>
45                <xsl:if test="matches(., $l:nvt.berendsen.regex)"><xsl:value-of select="concat('T=', $l:thermostat.berendsen,')|')"/></xsl:if>
46                <xsl:if test="matches(., $l:nvt.hd.regex)"><xsl:value-of select="concat('(T=', $l:thermostat.hd,')|')"/></xsl:if>
47                <xsl:if test="matches(., $l:nvt.ld.regex)"><xsl:value-of select="concat('(T=', $l:thermostat.ld,')|')"/></xsl:if>
48                <xsl:if test="matches(., $l:nvt.rescaling.regex)"><xsl:value-of select="concat('(T=', $l:thermostat.rescaling,')|')"/></xsl:if>
49                <xsl:if test="matches(., $l:nvt.dpd.regex)"><xsl:value-of select="concat('(T=', $l:thermostat.dpd,')|')"/></xsl:if>
50                <!-- npt -->
51                <xsl:if test="matches(., $l:npt.nosehoover.regex)"><xsl:value-of select="concat('(T=', $l:thermostat.nosehoover,', P=', $l:barostat.nosehoover,')|')"/></xsl:if>
52                <!-- nph -->
53                <xsl:if test="matches(., $l:nph.nosehoover.regex)"><xsl:value-of select="concat('(P=', $l:barostat.nosehoover,')|')"/></xsl:if>
54                <xsl:if test="matches(., $l:nph.berendsen.regex)"><xsl:value-of select="concat('(P=', $l:barostat.berendsen,')|')"/></xsl:if>
55            </xsl:for-each>
56        </xsl:variable>
57
58        <xsl:value-of select="distinct-values(tokenize(substring($cmethods, 1, string-length($cmethods)-1), '\|'))"/>
59    </xsl:function>