lammps.data ​
Implementation level ​
Type | Status |
---|---|
CML extraction template | |
HTML5 representation |
Template attributes ​
Attribute | Value |
---|---|
source | LAMMPS data file |
id | lammps.data |
name | LAMMPS data file |
xml:base | topTemplate.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>{E,l:xlo}{E,l:xhi}xlo\s+xhi</record> <record>{E,l:ylo}{E,l:yhi}ylo\s+yhi</record> <record>{E,l:zlo}{E,l:zhi}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>{E,l:xyTilt}{E,l:xzTilt}{E,l:yzTilt}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+){4,}.*" endPattern=".*\S+\s*$\s*" endPattern2="~" endOffset="2"> <record repeat="2" /> <templateList> <template id="atoms" pattern="\s*([^#\s]+\s+){10}([^#\s]+\s*)(#.*)?" endPattern=".*" repeat="*"> <record id="records">{I,x:serial}\s{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}(\s*#.*)?</record>
</template> <template id="atoms" pattern="\s*([^#\s]+\s+){9}([^#\s]+\s*)(#.*)?" endPattern=".*" repeat="*"> <record id="records">{I,x:serial}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}(\s*#.*)?</record>
</template> <template id="atoms" pattern="\s*([^#\s]+\s+){8}([^#\s]+\s*)(#.*)?" endPattern=".*" repeat="*"> <record id="records">{I,x:serial}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}(\s*#.*)?</record>
</template> <template id="atoms" pattern="\s*([^#\s]+\s+){7}([^#\s]+\s*)(#.*)?" endPattern=".*" repeat="*"> <record id="records">{I,x:serial}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}(\s*#.*)?</record>
</template> <template id="atoms" pattern="\s*([^#\s]+\s+){6}([^#\s]+\s*)(#.*)?" endPattern=".*" repeat="*"> <record id="records">{I,x:serial}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}(\s*#.*)?</record>
</template> <template id="atoms" pattern="\s*([^#\s]+\s+){5}([^#\s]+\s*)(#.*)?" endPattern=".*" repeat="*"> <record id="records">{I,x:serial}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}(\s*#.*)?</record>
</template> <template id="atoms" pattern="\s*([^#\s]+\s+){4}([^#\s]+\s*)(#.*)?" endPattern=".*" repeat="*"> <record id="records">{I,x:serial}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}\s+{E,x:field}(\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="*">{I,x:serial}{E,cc:atomicmass}#{A,cc:elementType}.*</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]" />