Skip to content

lammps.data ​

Implementation level ​

TypeStatus
CML extraction template
HTML5 representation

Template attributes ​

AttributeValue
sourceLAMMPS data file
idlammps.data
nameLAMMPS data file
xml:basetopTemplate.xml

Comment ​

Input ​

# UO2 8x8x8

    6144  atoms

       2  atom types

 0.00000000e+00  4.33627680e+01  xlo xhi
 0.00000000e+00  4.33627680e+01  ylo yhi
 0.00000000e+00  4.33627680e+01  zlo zhi
 0.0 0.0 0.0 xy xz yz

 Atoms

       1        1  2.710173e+00  0.000000e+00  0.000000e+00
       2        1  2.710173e+00  2.710173e+00  2.710173e+00
       3        1  0.000000e+00  0.000000e+00  2.710173e+00
       4        1  0.000000e+00  2.710173e+00  0.000000e+00
       5        2  1.355087e+00  4.065260e+00  4.065260e+00
       6        2  1.355087e+00  1.355087e+00  4.065260e+00
       7        2  1.355087e+00  1.355087e+00  1.355087e+00
       ...

 Velocities

       1  0.000000e+00  0.000000e+00  0.000000e+00
       2  0.000000e+00  0.000000e+00  0.000000e+00
       3  0.000000e+00  0.000000e+00  0.000000e+00
       4  0.000000e+00  0.000000e+00  0.000000e+00
       ...

 Masses

       1  2.380289e+02 # U
       2  1.599940e+01 # O

Output text ​

xml
<comment class="example.output" id="lammps.data">
        <module id="lammps.data">     
           <module cmlx:templateRef="box">
              <scalar dataType="xsd:double" dictRef="l:xlo">0.00000000e+00</scalar>
              <scalar dataType="xsd:double" dictRef="l:xhi">4.33627680e+01</scalar>
              <scalar dataType="xsd:double" dictRef="l:ylo">0.00000000e+00</scalar>
              <scalar dataType="xsd:double" dictRef="l:yhi">4.33627680e+01</scalar>
              <scalar dataType="xsd:double" dictRef="l:zlo">0.00000000e+00</scalar>
              <scalar dataType="xsd:double" dictRef="l:zhi">4.33627680e+01</scalar>
           </module>
           <module cmlx:templateRef="tilt">
              <scalar dataType="xsd:double" dictRef="l:xyTilt">0.0</scalar>
              <scalar dataType="xsd:double" dictRef="l:xzTilt">0.0</scalar>
              <scalar dataType="xsd:double" dictRef="l:yzTilt">0.0</scalar>
           </module>
           <module cmlx:templateRef="atoms">
              <list cmlx:templateRef="records">
                  <list>
                     <scalar dataType="xsd:integer" dictRef="x:serial">1</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">1</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">2.710173e+00</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">0.000000e+00</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">0.000000e+00</scalar>
                  </list>
                  <list>
                     <scalar dataType="xsd:integer" dictRef="x:serial">2</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">1</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">2.710173e+00</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">2.710173e+00</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">2.710173e+00</scalar>
                  </list>
                  <list>
                     <scalar dataType="xsd:integer" dictRef="x:serial">3</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">1</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">0.000000e+00</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">0.000000e+00</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">2.710173e+00</scalar>
                  </list>
                  <list>
                     <scalar dataType="xsd:integer" dictRef="x:serial">4</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">1</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">0.000000e+00</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">2.710173e+00</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">0.000000e+00</scalar>
                  </list>
                  <list>
                     <scalar dataType="xsd:integer" dictRef="x:serial">5</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">2</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">1.355087e+00</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">4.065260e+00</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">4.065260e+00</scalar>
                  </list>
                  <list>
                     <scalar dataType="xsd:integer" dictRef="x:serial">6</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">2</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">1.355087e+00</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">1.355087e+00</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">4.065260e+00</scalar>
                  </list>
                  <list>
                     <scalar dataType="xsd:integer" dictRef="x:serial">7</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">2</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">1.355087e+00</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">1.355087e+00</scalar>
                     <scalar dataType="xsd:double" dictRef="x:field">1.355087e+00</scalar>
                  </list>
              </list>
              <list dictRef="l:axis">
                 <array dictRef="cc:lattice">43.362768 0 0</array>
                 <array dictRef="cc:lattice">0 43.362768 0</array>
                 <array dictRef="cc:lattice">0 0 43.362768</array>
              </list>
           </module>
           <module cmlx:templateRef="masses">
              <list cmlx:templateRef="atomType">
                 <list>
                    <scalar dataType="xsd:integer" dictRef="x:serial">1</scalar>
                    <scalar dataType="xsd:double" dictRef="cc:atomicmass">2.380289e+02</scalar>
                    <scalar dictRef="cc:atomType">U</scalar>
                 </list>
                 <list>
                    <scalar dataType="xsd:integer" dictRef="x:serial">2</scalar>
                    <scalar dataType="xsd:double" dictRef="cc:atomicmass">1.599940e+01</scalar>
                    <scalar dictRef="cc:atomType">O</scalar>
                 </list>
              </list>
              <map id="atomTypeLabels">
                 <link from="1" to="U" />
                 <link from="2" to="O" />
              </map>
           </module>
        </module>         
    </comment>

Template definition ​

xml
<templateList>  <template id="box" name="box" pattern=".*xlo\s+xhi" endPattern=".*zlo\s+zhi" endOffset="1">    <record>&#123;E,l:xlo&#125;&#123;E,l:xhi&#125;xlo\s+xhi</record>    <record>&#123;E,l:ylo&#125;&#123;E,l:yhi&#125;ylo\s+yhi</record>    <record>&#123;E,l:zlo&#125;&#123;E,l:zhi&#125;zlo\s+zhi</record>    <transform process="pullup" xpath=".//cml:scalar" repeat="2" />    
        </template>  <template id="tilt" pattern=".*xy\s+xz\s+yz" endPattern=".*" endOffset="0">    <record>&#123;E,l:xyTilt&#125;&#123;E,l:xzTilt&#125;&#123;E,l:yzTilt&#125;xy\s+xz\s+yz</record>    <transform process="pullup" xpath=".//cml:scalar" repeat="2" />  
        </template>  <template id="atoms" pattern="\s*Atoms\s*(#.*)?$.*$\s*(\S+\s+)&#123;4,&#125;.*" endPattern=".*\S+\s*$\s*" endPattern2="~" endOffset="2">    <record repeat="2" />    <templateList>      <template id="atoms" pattern="\s*([^#\s]+\s+)&#123;10&#125;([^#\s]+\s*)(#.*)?" endPattern=".*" repeat="*">        <record id="records">&#123;I,x:serial&#125;\s&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;(\s*#.*)?</record>
                </template>      <template id="atoms" pattern="\s*([^#\s]+\s+)&#123;9&#125;([^#\s]+\s*)(#.*)?" endPattern=".*" repeat="*">        <record id="records">&#123;I,x:serial&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;(\s*#.*)?</record>
                </template>      <template id="atoms" pattern="\s*([^#\s]+\s+)&#123;8&#125;([^#\s]+\s*)(#.*)?" endPattern=".*" repeat="*">        <record id="records">&#123;I,x:serial&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;(\s*#.*)?</record>
                </template>      <template id="atoms" pattern="\s*([^#\s]+\s+)&#123;7&#125;([^#\s]+\s*)(#.*)?" endPattern=".*" repeat="*">        <record id="records">&#123;I,x:serial&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;(\s*#.*)?</record>
                </template>      <template id="atoms" pattern="\s*([^#\s]+\s+)&#123;6&#125;([^#\s]+\s*)(#.*)?" endPattern=".*" repeat="*">        <record id="records">&#123;I,x:serial&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;(\s*#.*)?</record>
                </template>      <template id="atoms" pattern="\s*([^#\s]+\s+)&#123;5&#125;([^#\s]+\s*)(#.*)?" endPattern=".*" repeat="*">        <record id="records">&#123;I,x:serial&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;(\s*#.*)?</record>
                </template>      <template id="atoms" pattern="\s*([^#\s]+\s+)&#123;4&#125;([^#\s]+\s*)(#.*)?" endPattern=".*" repeat="*">        <record id="records">&#123;I,x:serial&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;\s+&#123;E,x:field&#125;(\s*#.*)?</record>
                </template>
            </templateList>    <transform process="move" xpath="(.//cml:list[@cmlx:templateRef='records']/cml:list)[position() > 1]" to="(//cml:list[@cmlx:templateRef='records'])[position() = 1]" />    <transform process="pullup" xpath="(//cml:list[@cmlx:templateRef='records'])[position() = 1]" />    <transform process="delete" xpath="//cml:module[@cmlx:templateRef='atoms']/cml:module[@cmlx:templateRef='atoms']" />
        </template>  <template id="masses" pattern="\s*Masses\s*(#.*)?" endPattern="\s*[0-9].*$\s+" endPattern2="~" endOffset="1">    <record repeat="2" />    <record id="atomType" name="atomType" repeat="*">&#123;I,x:serial&#125;&#123;E,cc:atomicmass&#125;#&#123;A,cc:elementType&#125;.*</record>    <transform process="addChild" xpath=".//cml:list[@cmlx:templateRef='atomType']/cml:list" elementName="cml:scalar" dictRef="cc:atomType" />    <transform process="setValue" xpath=".//cml:list[@cmlx:templateRef='atomType']/cml:list/cml:scalar[@dictRef='cc:atomType']" value="$string(replace(preceding-sibling::cml:scalar[@dictRef='cc:elementType']/text(),'[0-9]+',''))" />    <transform process="addMap" xpath="." id="atomTypeLabels" from=".//cml:scalar[@dictRef='x:serial']" to=".//cml:scalar[@dictRef='cc:atomType']" />                      
        </template>
    </templateList>
<transform process="delete" xpath="//cml:list[count(*) = 0]" />
<transform process="delete" xpath="//cml:list[count(*) = 0]" />
<transform process="addChild" xpath="/cml:module/cml:module[@cmlx:templateRef='atoms']" elementName="cml:list" dictRef="l:axis" />
<transform process="addChild" xpath="/cml:module/cml:module[@cmlx:templateRef='atoms']/cml:list[@dictRef='l:axis']" elementName="cml:array" dictRef="x:lattice1" />
<transform process="setValue" xpath="/cml:module/cml:module[@cmlx:templateRef='atoms']/cml:list[@dictRef='l:axis']/cml:array[@dictRef='x:lattice1']" value="$string(         concat(           number(//cml:scalar[@dictRef='l:xhi'])-number(//cml:scalar[@dictRef='l:xlo']),           ' 0 0')         )" />
<transform process="addChild" xpath="/cml:module/cml:module[@cmlx:templateRef='atoms']/cml:list[@dictRef='l:axis']" elementName="cml:array" dictRef="x:lattice2" />
<transform process="setValue" xpath="/cml:module/cml:module[@cmlx:templateRef='atoms']/cml:list[@dictRef='l:axis']/cml:array[@dictRef='x:lattice2']" value="$string(         concat((           if(exists(//cml:scalar[@dictRef='l:xyTilt'])) then number(//cml:scalar[@dictRef='l:xyTilt']) else '0'),            ' ',            number(//cml:scalar[@dictRef='l:yhi'])-number(//cml:scalar[@dictRef='l:ylo']),           ' 0')         )" />
<transform process="addChild" xpath="/cml:module/cml:module[@cmlx:templateRef='atoms']/cml:list[@dictRef='l:axis']" elementName="cml:array" dictRef="x:lattice3" />
<transform process="setValue" xpath="/cml:module/cml:module[@cmlx:templateRef='atoms']/cml:list[@dictRef='l:axis']/cml:array[@dictRef='x:lattice3']" value="$string(          concat(             if(exists(//cml:scalar[@dictRef='l:xzTilt'])) then number(//cml:scalar[@dictRef='l:xzTilt']) else '0',                          ' ',                         if(exists(//cml:scalar[@dictRef='l:yzTilt'])) then number(//cml:scalar[@dictRef='l:yzTilt']) else '0',             ' ',             number(//cml:scalar[@dictRef='l:zhi'])-number(//cml:scalar[@dictRef='l:zlo']))            )" />
<transform process="addAttribute" xpath="/cml:module/cml:module[@cmlx:templateRef='atoms']/cml:list[@dictRef='l:axis']/cml:array" name="dictRef" value="cc:lattice" />
<transform process="delete" xpath="//cml:list[count(*) = 0]" />