Git Product home page Git Product logo

extxyz's Introduction

Extended XYZ specification and parsing tools

This repository contains a specification of the extended XYZ (extxyz) file format, and tools for reading and writing to it from programs written in C, Fortran, Python and Julia.

Installation

Python

The latest development version can be installed via

pip install git+https://github.com/libAtoms/extxyz

This requires Python 3.6+ and a working C compiler, plus the PCRE2 and libcleri libraries. libcleri is included here as a submodule and will be compiled automatically, but you may need to install PCRE2 with something similar to one of the following commands.

brew install pcre2 # Mac OS, with homebrew
sudo apt-get install libpcre2-dev # Ubuntu

Binary wheels for Linux and MacOS which do not require PCRE2 or libcleri are built in the GitHub CI for each tagged release.

Stable releases are made to PyPI, so you can install with

pip install extxyz

libextxyz C library

The underlying parser is written in C. The C code is compiled automatically when you build the Python package, but you can also compile it as shared library libextxyz.so as follows

make -C libextxyz
make -C libextxyz install

The Makefile respects the usual environment variables CC, CFLAGS, LDFLAGS, etc, plus prefix (default /usr/local).

Fortran bindings

To build the fextxyz exectuable demonstrating the Fortran bindings, you first need to download and compile QUIP -- see the CI for an example of how to do that automatically. Then, set QUIP_ROOT and QUIP_ARCH

export QUIP_ARCH=linux_x86_64_gfortran
export QUIP_ROOT=/path/to/QUIP
make -C libextxyz fextxyz

The Fortran bindings will later be moved to QUIP, since they are tied to QUIP's Dictionary and Atoms types.

Julia bindings

Julia bindings are distributed in a separate package, named ExtXYZ.jl. See its documentation for further details.

Usage

Usage of the Python package is similar to the ase.io.read() and ase.io.write() functions, e.g:

from extxyz import read, iread, write, ExtXYZTrajectoryWriter
from ase.build import bulk
from ase.optimize import BFGS
from ase.calculators.emt import EMT

atoms = bulk("Cu") * 3
frames = [atoms.copy() for frame in range(3)]
for frame in frames:
    frame.rattle()
    
write("filename.xyz", frames)

frames = read("filename.xyz") # all frames in file
atoms = read("filename.xyz", index=0) # first frame in file
write("newfile.xyz", frames)

traj = ExtXYZTrajectoryWriter("traj.xyz", atoms=atoms)
atoms.calc = EMT()
opt = BFGS(atoms, trajectory=traj)
opt.run(fmax=1e-3)

There is also an extxyz command line tool for testing purposes, see extxyz -h for help. This can alternatively be invoked via python -m extxyz.

Remaining issues

  1. make treatement of 9 elem old-1d consistent: now extxyz.py always reshapes (not just Lattice) to 3x3, but extxyz.c does not.
  2. Since we're using python regexp/PCRE, we could make per-atom strings be more complex, e.g. bare or quoted strings from key-value pairs. Should we?
  3. Decide what to do about unparseable comment lines. Just assume an old fashioned xyz with an arbitrary line, or fail? I don't think we really want every parsing breaking typo to result in plain xyz.
  4. Used to be able to quote with {}. Do we want to support this?

Extended XYZ specifcation

General formatting

  • Allowed characters: printable subset of ASCII, single byte
  • Allowed whitespace: plain space and tab (no fancy unicode nonbreaking space, etc)
  • Allowed end-of line (EOL) characters set by implementation + OS
    • pure python: whatever is used to return lines by file object iterator
    • low level c: fgets()
  • Blank lines: allowed only as 2nd line of each frame (for plain xyz) and at end of file

General definitions

  • regex: PCRE/python regular expression
  • Whitespace: regex \s, i.e. space and tab

Primitive Data Types

String

Sequence of one or more allowed characters, optionally quoted, but must be quoted in some circumstances.

  • Allowed characters - all except newline
  • Entire string may be surrounded by double quotes, as first and last characters (must match). Quotes inside string that are same as containing quotes must be escaped with backslash. Outermost double quotes are not considered part of string value.
  • Strings that contain any of the following characters must be quoted (not just backslash escaped)
    • whitespace (regex \s)
    • equals =
    • double quote ", must be represented by \"
    • comma ,
    • open or close square bracket [ ] or curly brackets { }
    • backslash, must be represented by double backslash \\
    • newline, must be represented by \n
  • Backslash \: only present in quoted strings, only used for escaping next character. All backslash escaped characters are the following character itself except \n, which encodes a newline.
  • Must conform to one of the following regex
    • quoted string: (")(?:(?=(\\?))\2.)*?\1
    • bare (unquoted) string: (?:[^\s=",}{\]\[\\]|(?:\\[\s=",}{\]\[\\]))+
  • only used in comment line key-value pairs, not per-atom data

Simple string

Sequence of one or more allowed characters, unquoted (so even outermost quotes are part of string), and without whitespace

  • allowed characters - regex \S, i.e. all except newline and whitespace
  • regex \S+
  • only used in per-atom data, not comment line key-value pairs

Logical/boolean

  • T or F or [tT]rue or [fF]alse or TRUE or FALSE
  • regex
    • true: (?:[tT]rue|TRUE|T)\b
    • false: (?:[fF]alse|FALSE|F)\b

Integer number

string of one or more decimal digits, optionally preceded by sign

  • regex [+-]?+(?:0|[1-9][0-9]*)+\b

Floating point number

  • optional leading sign [+-], decimal number including optional decimal point ., optional [dDeE] folllowed by exponent consisting of optional sign followed by string of one or more digits
  • regex
    • integer without leading sign bare_int = '(?:0|[1-9][0-9]*)'
    • optional sign opt_sign = '[+-]?'
    • floating number with decimal point float_dec = '(?:' + bare_int + '\.|\.)[0-9]*'
    • exponent exp = '(?:[dDeE]'+opt_sign+'[0-9]+)?'
    • end of number num_end = '(?:\b|(?=\W)|$)'
    • combined float regexp opt_sign + '(?:' + float_dec + exp + '|' + bare_int + exp + '|' + bare_int + ')' + num_end

Order for identifying primitive data types, accept first one that matches

  • int
  • float
  • bool
  • bare string (containing no whitespace or special characters)
  • quoted string (starting and ending with double quote and containing only allowed characters)

one dimensional array (vector)

sequence of one or more of the same primitive type

  • new style: opens with [, one or more of the same primitive type separated by commas and optional whitespace, ends with ]
  • backward compatible: opens with " or {, one or more of the same primitive types (all types allowed in {}, all except string in "") separated by whitespace, ends with matching " or }. For backward compatibility, a single element backward compatible array is interpreted as a scalar of the same type.
  • primitive data type is determined by same priority as single primitive item, but must be satisfied by entire list simultaneously. E.g. all integers will result in an integer array, but a mix of integer and float will result in a float array, and a mix of integer and valid strings will results in a string array.

two dimensional array (matrix)

sequence of one or more new style one dimensional arrays of the same length and type

  • opens with [, one or more new style one dimensional arrays separated by commas, ends with ]
  • all contained one dimensional arrays in a single two dimensional array must have same number and primitive data type elements, and will be promoted to other possible types if necessary to parse entire array. E.g. a row of integers followed by a row of strings will be promoted to a 2-d string array.

XYZ file

A concatenation of 1 or more FRAMES (below), with optional blank lines at the end (but not between frames)

FRAME

  • Line 1: a single integer <N> preceded and followed by optional whitespace
  • Line 2: zero or more per-config key=value pairs (see key-value pairs below)
  • Lines 3..N+2: per-atom data lines with M columns each (see Properties and Per-Atom Data below)

key=value pairs on second ("comment") line

Associates per-configuration value with key. Spaces are allowed around = sign, which do not become part of the key or value.

Key: bare or quoted string

Value: primitive type, 1-D array, or 2-D array. Type is determined from context according to order specified above.

Special key "Properties”: defines the columns in the subsequent lines in the frame.

  • Value is a string with the format of a series of triplets, separated by “:”, each triplet having the format: “<name>:<T>:<m>”.
    • The <name> (string) names the column(s), <T> is a one of “S”, “I”, “R”, “L”, and indicates the type in the column, “string”, “integer”, “real”, “logical”, respectively. <m> is an integer > 0 specifying how many consecutive columns are being referred to.
    • The sum of the counts "m" must equal number of per-atom columns M (as defined in FRAME)
  • If after full parsing the key “Properties” is missing, the format is retroactively assumed to be plain xyz (4 columns, Z/species x y z), the entire second line is stored as a per-config “comment” property, and columns beyond the 4th are not read.

Per-atom data lines

Each column contains a sequence of primitive types, except string, which is replaced with simple string, separated by one or more whitespace characters, ending with EOL (optional for last line). The total number of columns in each row must be equal to the M and to the sum of the counts "m" in the "Properties" value string.

READING ase.atoms.Atoms FROM THIS FORMAT

Specific keys indicate special values, with specific order for overriding

Key-value pairs:

  • Lattice -> Atoms.cell, optional [do we want to accept "cell" also?]
    • 3x3 matrix - rows are cell vectors [preferred]
    • 9-vector - 3 cell vectors concatenated [only for backward compat]
    • 3-vector - diagonal entries of cell matrix [?]
  • pbc -> Atoms.pbc, optional
    • 3-vector of bool
    • default [False]*3 if no Lattice, otherwise [True]*3
  • Calculator results, used to set SinglePointCalculator.results dict
    • all per-config properties in ase.calculator.all_properties, with same name
    • scalars, vectors - directly stored
    • stress
      • 6-vector Voigt
      • 9-vector, 3x3 matrix, stored as stress Voigt-6, fail if not symmetric
    • virial -> stress (to convert multiply by -1/cell_vol), same format as stress [warn/fail if stress also present, perhaps only if inconsistent?]

Properties keys (all types are per-atom), types are simple

  • Atoms
    • Z -> numbers
    • species -> numbers, fail if not valid chemical symbol [warn/fail if conflict with Z?]
    • pos -> positions
    • mass -> masses
    • velo -> momenta (get mass from atomic number if missing)
    • same name: initial_charges, initial_magmoms
  • Calculator.results
    • local_energy -> energies
    • forces -> forces [also support “force”? What about overriding, complain if inconsistent?]
    • same name: magmoms (scalar or 3-vector), charges

WRITING ase.atoms.Atoms TO THIS FORMAT

General considerations

  • platform-appropriate EOL
  • [require some specific whitespace convention?]
  • scalars
    • all strings are quoted
    • otherwise stored unquoted
  • arrays
    • use {} [or []?] container marks, comma separated (not backward compatible " and space separated forms)
  • Definitely store (naming as described below)
    • all "first-class" Atoms properties (cell, pbc, numbers, masses, positions, momenta [any others?])
    • all info keys that are scalar, 1-D, 2-D array of prim type
    • all arrays that are scalar (Natoms x 1) or 1-D array( Natoms x (m > 1)) of prim type, shape[1] mapped to number of columns and space separated, not using regular array notation
    • [optionally warn about un-representable quantities?]
  • all Calculator.results key-value pairs, per-config same as info, per-atom same as arrays
  • Perhaps store
    • all info keys, per-config calculator results that are not representable (i.e. not prim type scalar, 1-D, or 2-D for per-config only) but can be mapped to JSON, as string starting with "_JSON "
    • same for arrays [?]
  • In general, keep ASE data type/dimension, invert mapping of names for reading. For quantities that have multiple possible names, use:
    • Lattice, not cell, 3x3 matrix
    • velo, not momenta
    • stress, not virial, as 3x3 matrix [are we OK with this?]

extxyz's People

Contributors

bernstei avatar jameskermode avatar stenczelt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

extxyz's Issues

refactor code so that it can be used to parse standalone lines

The original fortran libAtoms extxyz comment line parser was the same as the fortran command line parser. It would be nice to restore this compatibility by making the new extxyz comment line parser usable for the command line passed to a (fortran, but anything, really) program. This requires refactoring the new extxyz code so that the part that parses the comment line can be called with a string. independently of the rest of it, just returning a dict like info.

Incorrect parsing of badly formatted lattice with 8 entries

As reported at libAtoms/ExtXYZ.jl#12, this file contains a typo in the Lattice and should give an error:

[essswb@mnf144 ExtXYZ]$ cat test.xyz
8
Lattice="5.44 0.0 0.0 0.0 5.44 0.0 0.0 0.05.44" Properties=species:S:1:pos:R:3 Time=0.0
Si        0.00000000      0.00000000      0.00000000
Si        1.36000000      1.36000000      1.36000000
Si        2.72000000      2.72000000      0.00000000
Si        4.08000000      4.08000000      1.36000000
Si        2.72000000      0.00000000      2.72000000
Si        4.08000000      1.36000000      4.08000000
Si        0.00000000      2.72000000      2.72000000
Si        1.36000000      4.08000000      4.08000000

However, it is read successfully but gives a strange cell:

[essswb@mnf144 ExtXYZ]$ python3
Python 3.7.4 (default, Mar 26 2020, 11:57:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import extxyz
>>> extxyz.read("test.xyz")
Atoms(symbols='Si8', pbc=True, cell=[[5.44, 0.0, 0.0], [0.0, 5.44, 0.0], [0.0, 0.05, 0.44]])

For this to be the case there must be an error in the parser, or even in the grammar.

Install on conda distrubution

Hello,

For some reason, I am unable to install extxyz by simply
pip install extxyz
I get the error:

ERROR: Could not find a version that satisfies the requirement extxyz (from versions: none)
ERROR: No matching distribution found for extxyz

I then tried to pip install git+https://github.com/libAtoms/extxyz
but this subsequently fails looking for the ftp server for ftp.pcre.org. This also seems to be the case when I try to use the setup.py from the source code.

Is anyone else having this issue or knows how to resolve it? My pip is perfectly fine as I installed packages just before it, the only added item I can give is I am on WSL2.

C executable build failure on ARM Mac

I've tried to make and run the C executable on an ARM Mac, and got the following errors:

make: Entering directory '/Users/tks32/[..path..]/extxyz/libextxyz'
cc -I/opt/homebrew/Cellar/pcre2/10.44/include -I/opt/homebrew/Cellar/pcre2/10.44/include -I../libcleri/inc -g -c test_C_main.c -o test_C_main.o
test_C_main.c:17:70: error: too few arguments to function call, expected 7, have 5
    int success = extxyz_read_ll(kv_grammar, fp, &nat, &info, &arrays);
                  ~~~~~~~~~~~~~~                                     ^
./extxyz.h:71:5: note: 'extxyz_read_ll' declared here
int extxyz_read_ll(cleri_grammar_t *kv_grammar, FILE *fp, int *nat, DictEntry **info, DictEntry **arrays, char *comment, char *error_message);
    ^
1 error generated.
make: *** [Makefile:49: test_C_main.o] Error 1
make: Leaving directory '/Users/tks32/[..path..]/extxyz/libextxyz'

Prior to this, I've installed pcre2 with brew and built the library itself with make -C libextxyz install_libcleri install.

Ambiguity in the grammar between quoted strings and backward compatible arrays

For example how should software interpret the value in key="a b c"? It could be either a string containing multiple spaces a b c or a backward compatible array of three strings (["a", "b", "c"]).

I think the easiest resolution of this ambiguity is to limit quoted arrays to only integer/real/boolean values, the same way '{' arrays are limited to string values. All the extxyz files I've seen in the wild use arrays in this way, so backward compatibility should be preserved. Do you agree @jameskermode?

C example reads the whole 2nd line as a comment

Building the C example (ARM Mac, clang15, #19 resolved with hard-coding local paths) compiles, but reads the 2nd line of a file entirely as the comment key of the info dict. I'd expect it to read the Lattice and other keys separately.

example.xyz:

1
Lattice="0.012380693021800743 1.714399199949794 1.714399199949794 1.7192339837072965 0.0075459092642982985 1.7192339837072965 1.7090956692585484 1.7090956692585484 0.017684223713046465" Properties=species:S:1:pos:R:3 generated_from_mp_id=mp-111 data_gen_compression_percent=50.0 data_gen_shear="1.0 0.0006564438167393784 0.00659231380053108 0.0006564438167393784 1.0 0.0037616018582884514 0.00659231380053108 0.0037616018582884514 1.0" data_gen_timestamp=2024-05-05T14:23:15.005747 pbc="T T T"
Ne      -0.00623274       0.00041326      -0.02325031

running ./cextxyz example.xyz T

parsed success 1
nat 1
info
key 'comment' type 4 shape 0 0
arrays
key 'species' type 4 shape 0 1
key 'pos' type 2 shape 1 3
1
comment="Lattice=\"0.012380693021800743 1.714399199949794 1.714399199949794 1.7192339837072965 0.0075459092642982985 1.7192339837072965 1.7090956692585484 1.7090956692585484 0.017684223713046465\" Properties=species:S:1:pos:R:3 generated_from_mp_id=mp-111 data_gen_compression_percent=50.0 data_gen_shear=\"1.0 0.0006564438167393784 0.00659231380053108 0.0006564438167393784 1.0 0.0037616018582884514 0.00659231380053108 0.0037616018582884514 1.0\" data_gen_timestamp=2024-05-05T14:23:15.005747 pbc=\"T T T\"" Properties=species:S:1:pos:R:3
Ne        -0.00623274       0.00041326      -0.02325031
written err_stat 0

lammps

Add this code to LAMMPS, to allow an extxyz dump style! I think it would be absolutely great to allow for dumping for a more powerful variant, similar to the custom dump style there, but formatting it according to this extended xyz format.

Comparison between this and `ase.io.read`/`write`

Hello,

Superficially, it seems like this should be a drop-in replacement for ase.io.read/write that just moves the parsing into C for speed (which is great!). Are there any pitfalls or other considerations, however, to be aware of when replacing ase.io.read/write with libextxyz?

Thanks!

Round-tripping string values that look like backward compatible arrays

I realized I was not very clear in my last email, so here is a separate issue, hopefully clearer.

I'm wondering about the possibility to round-trip string values, i.e. store some data in extended XYZ and then be able to read it again.

In particular, there is some ambiguity here between string values and backward compatible arrays. If the user asks to store the string 1 3 4 5 (with spaces inside) with the string key in an extended XYZ comment line, simply writing it as a key="1 3 4 5" is not enough, since that will be read later as an array of 4 integers. It is possible to use a single element {} array instead, i.e. write this as key={"1 3 4 5"}, which will then be read as intended by the parser. The example from my email was about a string containing a single number or boolean value (True/...) which can not be written directly as key="3", but the same applies for string that would look like arrays.

This means that any extended XYZ writer must check all string values to ensure they would parse back as string, and otherwise use the {} array trick to make sure the type of the value is preserved in the extended XYZ comment line.

Do you agree with my reading of the spec and is this the intended behaviour?

I fear it will make writing to extended XYZ a bit more complex, since now every software that needs to write to this format also needs to implement a (partial) parser for it; but I also understand this is allowed for backward compatibility reasons.

How can I add 272.06(sum 272.06 to the energy value in the properties) to energy in the top line by simple one line code to large clusture

55
Lattice="20.0 0.0 0.0 0.0 20.0 0.0 0.0 0.0 20.0" Properties=species:S:1:pos:R:3:forces:R:3:energies:R:1 Energy=-47.004771 eV=T energy=-272.0659427345163 free_energy=-272.0659427345163 pbc="F F F"
Na 0.86364636 1.57812167 -2.18684227 -0.00109982 -0.00089096 0.00315033 -3.41207940
Na 2.02204820 2.25161453 0.29239011 -0.00883164 0.00056004 0.00687033 -4.67235435
Na 2.16881205 2.05651489 -0.81436795 -0.00250120 0.00091068 -0.00663141 -4.67237035
Na 1.18067198 2.24384074 -1.33712900 0.00517875 0.00717914 0.00100301 -4.67237169
Na -0.63997632 2.19533722 -0.63110435 0.00200118 -0.00425127 0.00164094 -3.41209255
Na 0.90890203 1.20186707 -1.16572989 -0.00280419 0.00532541 -0.00654315 -7.06116635
Na 2.69216839 1.40404231 -0.04962184 0.02173881 0.00016219 0.00286750 -4.67236183
Na -0.64627451 1.14204885 -1.02669889 0.01855016 0.01686871 0.01851100 -4.67239222
Na 1.19011066 0.52321876 -1.97155977 0.00057942 0.00548648 -0.01021530 -4.67228224
Na 0.10550238 1.89459571 -1.41814906 0.00084719 -0.00381055 -0.00281982 -4.67242921
Na 0.43842073 -0.22926985 -1.57994659 0.00136771 0.00126323 0.00160386 -4.67245124
Na -0.79301085 1.33727705 0.08019330 0.00692566 -0.00353563 -0.00279138 -4.67236207
Na -0.78718413 0.27385028 -0.31190345 -0.00434216 -0.00472311 0.00442282 -4.67232279
Na 0.99614157 0.47588599 0.80426980 0.00019905 0.01540941 0.00171245 -7.06121974
Na -0.27303877 1.34206056 1.08733340 0.00011782 0.00070267 0.00378639 -4.67238746
Na -0.62847218 0.08430324 -1.40948095 -0.00059519 0.00054557 0.00147847 -3.41204690
Na 0.17064184 1.50495764 -0.40181675 -0.02848364 -0.00564580 -0.01621290 -7.06161847
Na 0.67740403 1.50956084 0.57977885 -0.00763431 0.01305644 0.01640567 -7.06141632
Na 0.99604557 0.47591205 0.80418967 0.00878027 0.03677974 0.06941770 -7.06246103
Na 1.85103404 1.39634308 -1.67913266 -0.00013937 -0.00009266 -0.00405013 -4.67241176
Na 1.73446106 0.17291627 0.04041680 0.00407331 -0.00153765 -0.00918292 -7.06143340
Na 1.51301737 -0.52693701 -1.72959828 0.00029979 -0.00546992 -0.00314927 -3.41200768
Na 0.05401403 0.28155283 1.31769487 -0.00648140 0.00116106 0.00139537 -4.67236738
Na 0.99604557 0.47591205 0.80418967 0.00878027 0.03677974 0.06941770 -7.06246103
Na 1.46670008 1.90706004 1.21850229 -0.00046936 0.00623599 -0.00085697 -4.67233006
Na 2.55126113 0.53571217 0.66509619 -0.00194351 -0.00112889 -0.00035625 -4.67233183
Na 2.69806295 0.34062512 -0.44170481 -0.00222511 0.00079260 0.00057867 -4.67245435
Na -0.13199336 2.21030780 0.37268317 -0.00197369 0.00137359 0.00265287 -4.67240398
Na 0.99604557 0.47591205 0.80418967 0.00878027 0.03677974 0.06941770 -7.06246103
Na 2.03710096 -0.53243071 -0.73411187 0.00308901 -0.00101167 -0.00197997 -4.67237459
Na 0.39215155 2.20489941 1.36824523 0.00233747 -0.01435696 -0.01509974 -3.41209379
Na 0.41064598 -1.21075591 0.10874498 -0.00059049 -0.00707510 -0.00140736 -3.41206480
Na 1.21863339 1.84535196 -0.32287808 0.00031406 0.00484534 0.00528004 -7.06146548
Na 0.68643432 -0.16747765 -0.03850597 0.01088705 -0.00341485 -0.02240005 -7.06136267
Na 1.48177959 -0.87697301 0.19194542 0.00001972 0.00601112 0.00498680 -4.67240254
Na -0.26370256 -0.37863296 0.45295167 -0.01210330 0.00305186 -0.00073641 -4.67233353
Na -0.91995426 0.47176629 0.78762275 -0.00108466 -0.00392258 0.00166890 -3.41202944
Na 1.22777494 0.16830542 -0.94130290 -0.01755172 -0.00132628 0.03000281 -7.06133514
Na 0.99604557 0.47591205 0.80418967 0.00878027 0.03677974 0.06941770 -7.06246103
Na 0.71498841 1.15459891 1.61011524 -0.00153051 0.00379268 -0.00248538 -4.67243012
Na 1.49442213 2.88866871 -0.47018824 -0.00203612 -0.00370912 -0.00044805 -3.41206033
Na 0.03311784 0.65862137 0.29478301 0.00008574 0.00592482 -0.00750927 -7.06126391
Na 2.82504435 1.20618186 -1.14914117 -0.00122458 0.00115514 0.00215139 -3.41205329
Na 2.17819019 0.33587935 -1.44884275 0.00165523 -0.00278371 -0.00227842 -4.67227211
Na 1.79948754 -0.21677863 1.05671318 0.00569022 -0.00770154 0.00119627 -4.67233000
Na 2.54504085 -0.51749742 0.26957793 -0.00135083 -0.00039188 0.00475624 -3.41205969
Na 1.72886749 1.20942942 0.42253480 -0.01076587 -0.00776722 0.00696611 -7.06121271
Na 0.11133938 0.83115916 -1.81027222 -0.00334590 0.00268621 -0.00499022 -4.67238720
Na 2.53357612 1.59342018 1.04800222 0.00179006 0.00255676 -0.00217301 -3.41204576
Na 0.95253667 0.83891963 -0.18072666 0.00811409 -0.00728716 -0.00617682 -6.21355010
Na 1.04131731 0.09970361 1.82535307 0.00720225 -0.00216297 0.00583532 -3.41205920
Na 1.87195690 1.01925127 -0.65624703 -0.00789099 -0.00466256 0.00291142 -7.06132955
Na 0.17619642 0.46848003 -0.78401879 0.01095855 -0.00974251 -0.00279974 -7.06146824
Na -0.11686489 -0.57373666 -0.65387766 -0.00248716 0.00224791 0.00120585 -4.67241161
Na 0.72423665 -0.56610410 0.97576557 0.00810947 0.00213273 -0.00448133 -4.67222230
55
Lattice="20.0 0.0 0.0 0.0 20.0 0.0 0.0 0.0 20.0" Properties=species:S:1:pos:R:3:forces:R:3:energies:R:1 Energy=-47.004771 eV=T energy=-272.026088560666 free_energy=-272.026088560666 pbc="F F F"
Na 0.78669323 1.58866331 -2.17455167 0.14525328 -0.26323980 -0.53509492 -3.41153556
Na 1.96775066 2.29270488 0.28134106 0.23203043 0.11697440 -0.22520116 -4.67415016
Na 2.09980751 2.11436975 -0.83234348 -0.12663029 -0.02846175 0.21360804 -4.66948157
Na 1.09238146 2.25999617 -1.32966918 0.11990219 0.04967243 0.18642523 -4.67612462
Na -0.70879535 2.12870396 -0.58736342 0.47523876 -0.02729661 0.04000884 -3.41490069
Na 0.86741328 1.20523291 -1.16076135 0.65743020 -0.16400327 -0.38760378 -7.04877510
Na 2.66590582 1.47747609 -0.08398019 0.37144034 0.24076884 0.37390236 -4.66882075
Na -0.67762131 1.08063709 -0.98844817 0.21077886 -0.60214528 -0.34838786 -4.67341911
Na 1.16461436 0.54406974 -1.97805046 -0.12490173 0.18628366 0.01732160 -4.66994289
Na 0.03320618 1.86713581 -1.39430123 -0.37790960 0.08785564 0.44290907 -4.66549855
Na 0.45704322 -0.24258270 -1.57630188 -0.23074308 0.23292616 0.03820999 -4.67446578
Na -0.80509270 1.26026096 0.11863514 -0.16046802 -0.16671038 0.12600800 -4.67613880
Na -0.76185776 0.19792946 -0.27818617 -0.37661530 -0.05045995 -0.18124428 -4.66498469
Na 1.03176978 0.47313142 0.79828897 0.42936625 -0.59953863 0.86801110 -7.05840531
Na -0.26643122 1.28054299 1.11374839 0.15111135 -0.10112576 0.27637930 -4.67293423
Na -0.62214908 0.02244676 -1.38020420 0.18250135 0.23446373 -0.00492988 -3.40972231
Na 0.13996784 1.47079343 -0.38358558 -0.75364635 0.55362283 0.38385177 -7.06367629
Na 0.66571148 1.49058474 0.58871714 -0.09464102 0.28874267 0.28487129 -7.06473947
Na 1.03136324 0.47331886 0.80023193 -0.58049383 -0.18814020 0.02105895 -7.06620063
Na 1.79008947 1.44030011 -1.68897404 0.05408873 0.44037550 -0.61661771 -4.67506940
Na 1.76713335 0.20658867 0.01792710 0.60766287 -0.60414512 0.45439722 -7.06511305
Na 1.54156613 -0.49300167 -1.74930769 -0.17569654 0.14501354 -0.14377541 -3.41178739
Na 0.11401990 0.23344465 1.33227977 -0.50440219 0.04179712 -0.28540159 -4.67101363
Na 1.03136324 0.47331886 0.80023193 -0.58049383 -0.18814020 0.02105895 -7.06620063
Na 1.44943142 1.91930248 1.21531700 0.16422419 -0.05086797 0.07437307 -4.67459336
Na 2.57799928 0.60165339 0.63368126 0.10460672 -0.34344286 -0.48837510 -4.67091392
Na 2.71217768 0.41926999 -0.48171960 0.07538365 0.21090761 -0.02493230 -4.66939086
Na -0.17575664 2.15490466 0.40407241 -0.18951972 0.36840817 -0.03687982 -4.67900513
Na 1.03136324 0.47331886 0.80023193 -0.58049383 -0.18814020 0.02105895 -7.06620063
Na 2.08462218 -0.48279420 -0.76779231 -0.04282637 0.24460212 0.36494813 -4.67209369
Na 0.36952494 2.17255732 1.38713542 -0.27578881 -0.39873625 0.09373478 -3.41458670
Na 0.50877444 -1.23303462 0.10458067 -0.18021722 -0.47769330 0.03061016 -3.41086705
Na 1.17059364 1.85551927 -0.32056598 0.26273633 0.72167845 -0.22455212 -7.07952180
Na 0.73565630 -0.18094597 -0.04222959 -0.46658964 0.27420808 0.64549027 -7.05236325
Na 1.56560740 -0.85726101 0.16632592 0.18193261 0.35085082 0.10294217 -4.67056838
Na -0.19535898 -0.43887467 0.47358532 0.34380069 0.67976830 -0.39815443 -4.67398078
Na -0.88239923 0.38386095 0.82020040 0.28001300 0.02544567 0.37392773 -3.41070586
Na 1.24179548 0.18680315 -0.95238548 -0.09687608 -0.58722261 -0.22018695 -7.05487123
Na 1.03136324 0.47331886 0.80023193 -0.58049383 -0.18814020 0.02105895 -7.06620063
Na 0.73976995 1.13392214 1.61707980 -0.07603502 -0.05203417 -0.14990068 -4.67402042
Na 1.39965937 2.91614673 -0.46723412 -0.23368506 -0.75711097 0.21514987 -3.41364790
Na 0.05187468 0.61515568 0.31111577 0.12095950 -0.46196103 0.32941639 -7.06298182
Na 2.78757999 1.29976676 -1.19081473 -0.37575702 -0.51421468 0.52787089 -3.40764008
Na 2.17351519 0.39700805 -1.47517034 0.06587412 0.08896647 -0.26164672 -4.66924391
Na 1.86855527 -0.18716900 1.03316586 0.29972424 0.11081265 -0.65549061 -4.67654114
Na 2.61257596 -0.44782900 0.22703075 -0.19726235 0.04991793 0.05378465 -3.41276894
Na 1.72400118 1.23914939 0.40927329 0.03534089 -0.17611916 0.00285107 -7.06347753
Na 0.07385242 0.80564361 -1.79285504 0.15225202 -0.17599590 0.23038656 -4.66869186
Na 2.52676754 1.65300821 1.02250611 -0.31539357 0.09077124 -0.33581985 -3.41173405
Na 0.95254864 0.83598418 -0.18192774 0.17437302 1.21421287 0.02517219 -6.18746713
Na 1.11675385 0.09169651 1.81653746 -0.12353138 0.05972797 0.07762995 -3.41501403
Na 1.85389631 1.06352319 -0.67405063 -0.46830067 -0.24431420 0.17143995 -7.05387822
Na 0.17855180 0.43787725 -0.76983030 0.21143603 0.17126417 -0.58574639 -7.05360607
Na -0.06289080 -0.61430894 -0.64085958 -0.27195765 -0.46142548 0.03431828 -4.66934292
Na 0.81390639 -0.58382768 0.96874382 -0.20537012 0.29906370 0.04117513 -4.67518401
55
Lattice="20.0 0.0 0.0 0.0 20.0 0.0 0.0 0.0 20.0" Properties=species:S:1:pos:R:3:forces:R:3:energies:R:1 Energy=-47.004771 eV=T energy=-271.98434756440173 free_energy=-271.98434756440173 pbc="F F F"
Na 0.60847616 1.57304948 -2.15918216 0.02935884 0.30340471 -0.25957587 -3.40994230
Na 1.89991629 2.35951528 0.22405544 0.11250853 -0.24481932 -0.32304378 -4.66765922
Na 1.96588683 2.18495313 -0.90339487 -0.19576868 0.07920588 0.61714325 -4.67410599
Na 0.92447482 2.26601855 -1.32973974 0.10888343 0.34867097 0.00811991 -4.66756261
Na -0.81181131 2.01931325 -0.46538743 0.22159921 -0.35128421 -0.15320891 -3.41458461
Na 0.78824536 1.20245959 -1.15353993 -0.70052683 -0.52755489 0.63153939 -7.06207408
Na 2.62478684 1.59817841 -0.19056969 -0.20844618 -0.44072679 -0.69044790 -4.67003865
Na -0.74048564 0.97498645 -0.87837089 0.13809326 -0.24202702 -0.05930543 -4.66416486
Na 1.06647430 0.55912709 -1.98701768 -0.13603725 0.52210378 -0.91367765 -4.66656296
Na -0.10677917 1.80400299 -1.31985548 -0.22960041 -0.14150310 -0.17685501 -4.67707867
Na 0.43826267 -0.26656094 -1.54968001 -0.69044126 0.14634622 0.79195783 -4.67920458
Na -0.80714831 1.14323152 0.23937454 0.25755978 -0.35187070 0.10566544 -4.68055648
Na -0.72523260 0.08685913 -0.16686708 0.29510130 0.29609157 -0.16667535 -4.66367449
Na 1.12058986 0.47461001 0.79238455 0.23696402 1.04611935 -0.31433345 -7.06281949
Na -0.20666358 1.19679581 1.19710994 0.00210472 -0.12550409 -0.07459660 -4.67330017
Na -0.63884914 -0.07352586 -1.27852405 -0.05127966 0.16214707 -0.11806696 -3.41092431
Na 0.08828136 1.41517922 -0.32147109 -0.67119495 0.37188578 -0.20021281 -7.04843513
Na 0.67237505 1.47073375 0.61257934 0.66134312 -0.96660613 0.25063859 -7.05525650
Na 1.11052683 0.47594710 0.79367167 0.34030300 0.24895047 -0.40285535 -7.05521028
Na 1.65271028 1.49678429 -1.75074444 -0.19729721 0.04013173 0.85107778 -4.66801344
Na 1.81842622 0.26039029 -0.03977207 0.02293193 -0.75620097 0.03139671 -7.05704330
Na 1.51475232 -0.45096467 -1.79737753 0.59535151 0.25025368 0.16778921 -3.41204603
Na 0.25524702 0.18411036 1.38328189 -0.31684392 -0.78464817 -0.00239194 -4.66779575
Na 1.11052683 0.47594710 0.79367167 0.34030300 0.24895047 -0.40285535 -7.05521028
Na 1.46599359 1.94546967 1.18491977 0.25059955 0.13396091 0.33917376 -4.67478985
Na 2.64478930 0.70970390 0.50722566 0.00451595 -0.44010325 1.10305591 -4.66232040
Na 2.71229051 0.53591937 -0.60097928 0.32400496 0.23134169 -0.37257811 -4.66380864
Na -0.21696107 2.07917502 0.48615698 -0.82263103 0.22440801 0.15039530 -4.67200769
Na 1.11052683 0.47594710 0.79367167 0.34030300 0.24895047 -0.40285535 -7.05521028
Na 2.12913230 -0.40396129 -0.85231918 -0.44790965 0.21976042 0.32276202 -4.67432247
Na 0.37958826 2.12233087 1.43427268 0.50059533 0.25412397 0.02400734 -3.41117011
Na 0.66735724 -1.25750850 0.12008622 -0.49962068 -0.15754300 -0.14743100 -3.41093434
Na 1.09612972 1.87067650 -0.32711102 0.26542052 -0.42846187 -0.45893057 -7.04909263
Na 0.81135864 -0.19006284 -0.03202584 0.25742727 -0.10321832 -0.48671705 -7.06866884
Na 1.69340005 -0.81334217 0.11564879 0.34877529 0.42421479 0.06767719 -4.66666652
Na -0.06493816 -0.50965082 0.53465462 0.16951974 0.22882839 0.14100081 -4.67029268
Na -0.77653641 0.25947503 0.94118512 0.14591877 0.33294935 -0.05774587 -3.41405224
Na 1.23231196 0.20903579 -0.97402726 -0.56761611 -1.05974927 0.89797812 -7.06780503
Na 1.11052683 0.47594710 0.79367167 0.34030300 0.24895047 -0.40285535 -7.05521028
Na 0.84083990 1.11520906 1.63308020 -0.04790713 0.34717494 -0.55538747 -4.67334946
Na 1.24245082 2.93806950 -0.48037824 -0.19960752 -0.10617856 -0.31059143 -3.40925727
Na 0.10500983 0.55532775 0.37042221 -0.71660815 0.10207928 0.18345487 -7.07219715
Na 2.67726364 1.42305078 -1.30328197 0.45085254 -0.81123478 0.18210368 -3.41117032
Na 2.11099536 0.47815777 -1.55732216 0.17752619 0.17052152 -0.36277891 -4.67051296
Na 2.00984299 -0.12662671 0.96230942 0.64815331 0.06444889 -0.40253589 -4.66557325
Na 2.71419551 -0.34272434 0.10464735 -0.12982016 0.35412542 0.29306130 -3.40982302
Na 1.73575154 1.28717371 0.35995898 -0.31739298 0.46188997 -0.06168128 -7.05106164
Na -0.02300870 0.75225478 -1.73267236 0.12206459 -0.28228719 0.90652009 -4.67757455
Na 2.54497349 1.75489867 0.91918582 -0.10517761 -0.10822104 0.07110485 -3.40899046
Na 0.95477965 0.84175609 -0.18043685 -0.74679836 -1.45754823 0.28473031 -6.21745934
Na 1.29632366 0.10557380 1.80327640 0.03430427 -0.38441775 -0.35275957 -3.40803217
Na 1.80348303 1.11754672 -0.73042923 0.35638234 1.69498188 -0.66427745 -7.05846262
Na 0.16667010 0.39266637 -0.71477904 1.25191492 0.19520477 -1.62862904 -7.07367483
Na 0.00696135 -0.67327142 -0.58461978 0.17868496 -0.74310706 0.22434805 -4.66893633
Na 0.97611882 -0.58985602 0.97102927 0.14715717 0.10323691 -0.00524228 -4.66635841

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.