From bd6198d26441398cd2abd8681cde94740d65066f Mon Sep 17 00:00:00 2001 From: Oleg Peil Date: Fri, 13 Feb 2015 22:24:48 +0100 Subject: [PATCH] * Restructured the directory structure * Added some half-day long development including tests --- python/converters/vasp/EIGENVAL | 74 - python/converters/vasp/IBZKPT | 2457 ----------------- python/converters/vasp/POSCAR | 29 - python/converters/vasp/POSCAR.cart | 29 - python/converters/vasp/POSCAR.direct | 28 - .../vasp/{ => c}/plocar_io/.gitignore | 1 + .../vasp/{ => c}/plocar_io/__init__.py | 0 .../vasp/{ => c}/plocar_io/c_plocar_io.c | 0 .../vasp/{ => c}/plocar_io/makefile.darwin | 1 - .../vasp/c/plocar_io/makefile.linux | 8 + .../converters/vasp/{ => python}/.gitignore | 0 .../vasp/{pyconf.py => python/inpconf.py} | 134 +- .../converters/vasp/{ => python}/plotools.py | 0 python/converters/vasp/{ => python}/vaspio.py | 0 python/converters/vasp/test.cfg | 13 - python/converters/vasp/test/adv_example.cfg | 20 + .../converters/vasp/test/inpconf/.gitignore | 1 + .../converters/vasp/test/inpconf/runtest.sh | 1 + python/converters/vasp/test/inpconf/test1.cfg | 12 + python/converters/vasp/test/inpconf/test2.cfg | 4 + python/converters/vasp/test/inpconf/test3.cfg | 5 + python/converters/vasp/test/inpconf/test4.cfg | 7 + python/converters/vasp/test/inpconf/test5.cfg | 17 + .../vasp/test/inpconf/test_inpconf.py | 252 ++ 24 files changed, 424 insertions(+), 2669 deletions(-) delete mode 100644 python/converters/vasp/EIGENVAL delete mode 100644 python/converters/vasp/IBZKPT delete mode 100644 python/converters/vasp/POSCAR delete mode 100644 python/converters/vasp/POSCAR.cart delete mode 100644 python/converters/vasp/POSCAR.direct rename python/converters/vasp/{ => c}/plocar_io/.gitignore (72%) rename python/converters/vasp/{ => c}/plocar_io/__init__.py (100%) rename python/converters/vasp/{ => c}/plocar_io/c_plocar_io.c (100%) rename python/converters/vasp/{ => c}/plocar_io/makefile.darwin (97%) create mode 100644 python/converters/vasp/c/plocar_io/makefile.linux rename python/converters/vasp/{ => python}/.gitignore (100%) rename python/converters/vasp/{pyconf.py => python/inpconf.py} (73%) rename python/converters/vasp/{ => python}/plotools.py (100%) rename python/converters/vasp/{ => python}/vaspio.py (100%) delete mode 100644 python/converters/vasp/test.cfg create mode 100644 python/converters/vasp/test/adv_example.cfg create mode 100644 python/converters/vasp/test/inpconf/.gitignore create mode 100644 python/converters/vasp/test/inpconf/runtest.sh create mode 100644 python/converters/vasp/test/inpconf/test1.cfg create mode 100644 python/converters/vasp/test/inpconf/test2.cfg create mode 100644 python/converters/vasp/test/inpconf/test3.cfg create mode 100644 python/converters/vasp/test/inpconf/test4.cfg create mode 100644 python/converters/vasp/test/inpconf/test5.cfg create mode 100644 python/converters/vasp/test/inpconf/test_inpconf.py diff --git a/python/converters/vasp/EIGENVAL b/python/converters/vasp/EIGENVAL deleted file mode 100644 index 61fdf71f..00000000 --- a/python/converters/vasp/EIGENVAL +++ /dev/null @@ -1,74 +0,0 @@ - 2 2 1 2 - 0.1333597E+02 0.2987800E-09 0.2987800E-09 0.2987800E-09 0.5000000E-15 - 1.000000000000000E-004 - CAR - V - 22 4 15 - - 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.3703704E-01 - 1 -31.708596 -31.708596 - 2 -31.708596 -31.708596 - 3 -31.708596 -31.708596 - 4 -31.061475 -31.061475 - 5 -31.061475 -31.061475 - 6 -31.061475 -31.061475 - 7 -0.811953 -0.811953 - 8 2.607665 2.607665 - 9 2.607665 2.607665 - 10 6.002735 6.002735 - 11 6.002735 6.002735 - 12 6.002735 6.002735 - 13 8.013630 8.013630 - 14 8.013630 8.013630 - 15 9.361252 9.361252 - - 0.3333333E+00 0.0000000E+00 0.0000000E+00 0.2222222E+00 - 1 -31.682851 -31.682851 - 2 -31.539793 -31.539793 - 3 -31.539793 -31.539793 - 4 -31.363786 -31.363786 - 5 -31.215960 -31.215960 - 6 -31.215960 -31.215960 - 7 1.216017 1.216017 - 8 3.394994 3.394994 - 9 3.771669 3.771669 - 10 6.050595 6.050595 - 11 6.050595 6.050595 - 12 6.457025 6.457025 - 13 6.771661 6.771661 - 14 7.383619 7.383619 - 15 7.383620 7.383620 - - 0.3333333E+00 0.3333333E+00 0.0000000E+00 0.4444444E+00 - 1 -31.935665 -31.935665 - 2 -31.782518 -31.782518 - 3 -31.447103 -31.447103 - 4 -31.284953 -31.284953 - 5 -31.234384 -31.234384 - 6 -31.067231 -31.067231 - 7 2.201004 2.201004 - 8 3.123182 3.123182 - 9 4.809697 4.809697 - 10 5.123957 5.123957 - 11 5.357025 5.357025 - 12 5.853431 5.853431 - 13 7.260017 7.260017 - 14 7.862532 7.862532 - 15 8.230907 8.230907 - - 0.3333333E+00 0.3333333E+00 0.3333333E+00 0.2962963E+00 - 1 -31.808727 -31.808727 - 2 -31.713049 -31.713049 - 3 -31.713049 -31.713049 - 4 -31.278227 -31.278227 - 5 -31.278227 -31.278227 - 6 -31.179331 -31.179331 - 7 3.831291 3.831291 - 8 3.998572 3.998572 - 9 4.466211 4.466211 - 10 4.466211 4.466211 - 11 4.724276 4.724276 - 12 4.724276 4.724276 - 13 8.230309 8.230309 - 14 8.253908 8.253831 - 15 8.292606 8.292606 diff --git a/python/converters/vasp/IBZKPT b/python/converters/vasp/IBZKPT deleted file mode 100644 index 348ae81d..00000000 --- a/python/converters/vasp/IBZKPT +++ /dev/null @@ -1,2457 +0,0 @@ -Automatically generated mesh - 352 -Reciprocal lattice - 0.00000000000000 0.00000000000000 0.00000000000000 1 - 0.10000000000000 0.00000000000000 0.00000000000000 2 - 0.20000000000000 0.00000000000000 0.00000000000000 2 - 0.30000000000000 0.00000000000000 0.00000000000000 2 - 0.40000000000000 0.00000000000000 0.00000000000000 2 - 0.50000000000000 0.00000000000000 0.00000000000000 1 - 0.00000000000000 0.10000000000000 0.00000000000000 2 - 0.10000000000000 0.10000000000000 0.00000000000000 2 - 0.20000000000000 0.10000000000000 0.00000000000000 2 - 0.30000000000000 0.10000000000000 0.00000000000000 2 - 0.40000000000000 0.10000000000000 0.00000000000000 2 - 0.50000000000000 0.10000000000000 0.00000000000000 2 - -0.40000000000000 0.10000000000000 0.00000000000000 2 - -0.30000000000000 0.10000000000000 0.00000000000000 2 - -0.20000000000000 0.10000000000000 0.00000000000000 2 - -0.10000000000000 0.10000000000000 0.00000000000000 2 - 0.00000000000000 0.20000000000000 0.00000000000000 2 - 0.10000000000000 0.20000000000000 0.00000000000000 2 - 0.20000000000000 0.20000000000000 0.00000000000000 2 - 0.30000000000000 0.20000000000000 0.00000000000000 2 - 0.40000000000000 0.20000000000000 0.00000000000000 2 - 0.50000000000000 0.20000000000000 0.00000000000000 2 - -0.40000000000000 0.20000000000000 0.00000000000000 2 - -0.30000000000000 0.20000000000000 0.00000000000000 2 - -0.20000000000000 0.20000000000000 0.00000000000000 2 - -0.10000000000000 0.20000000000000 0.00000000000000 2 - 0.00000000000000 0.30000000000000 0.00000000000000 2 - 0.10000000000000 0.30000000000000 0.00000000000000 2 - 0.20000000000000 0.30000000000000 0.00000000000000 2 - 0.30000000000000 0.30000000000000 0.00000000000000 2 - 0.40000000000000 0.30000000000000 0.00000000000000 2 - 0.50000000000000 0.30000000000000 0.00000000000000 2 - -0.40000000000000 0.30000000000000 0.00000000000000 2 - -0.30000000000000 0.30000000000000 0.00000000000000 2 - -0.20000000000000 0.30000000000000 0.00000000000000 2 - -0.10000000000000 0.30000000000000 0.00000000000000 2 - 0.00000000000000 0.40000000000000 0.00000000000000 2 - 0.10000000000000 0.40000000000000 0.00000000000000 2 - 0.20000000000000 0.40000000000000 0.00000000000000 2 - 0.30000000000000 0.40000000000000 0.00000000000000 2 - 0.40000000000000 0.40000000000000 0.00000000000000 2 - 0.50000000000000 0.40000000000000 0.00000000000000 2 - -0.40000000000000 0.40000000000000 0.00000000000000 2 - -0.30000000000000 0.40000000000000 0.00000000000000 2 - -0.20000000000000 0.40000000000000 0.00000000000000 2 - -0.10000000000000 0.40000000000000 0.00000000000000 2 - 0.00000000000000 0.50000000000000 0.00000000000000 1 - 0.10000000000000 0.50000000000000 0.00000000000000 2 - 0.20000000000000 0.50000000000000 0.00000000000000 2 - 0.30000000000000 0.50000000000000 0.00000000000000 2 - 0.40000000000000 0.50000000000000 0.00000000000000 2 - 0.50000000000000 0.50000000000000 0.00000000000000 1 - 0.00000000000000 0.00000000000000 0.14285714285714 2 - 0.10000000000000 0.00000000000000 0.14285714285714 2 - 0.20000000000000 0.00000000000000 0.14285714285714 2 - 0.30000000000000 0.00000000000000 0.14285714285714 2 - 0.40000000000000 0.00000000000000 0.14285714285714 2 - 0.50000000000000 0.00000000000000 0.14285714285714 2 - -0.40000000000000 0.00000000000000 0.14285714285714 2 - -0.30000000000000 0.00000000000000 0.14285714285714 2 - -0.20000000000000 0.00000000000000 0.14285714285714 2 - -0.10000000000000 0.00000000000000 0.14285714285714 2 - 0.00000000000000 0.10000000000000 0.14285714285714 2 - 0.10000000000000 0.10000000000000 0.14285714285714 2 - 0.20000000000000 0.10000000000000 0.14285714285714 2 - 0.30000000000000 0.10000000000000 0.14285714285714 2 - 0.40000000000000 0.10000000000000 0.14285714285714 2 - 0.50000000000000 0.10000000000000 0.14285714285714 2 - -0.40000000000000 0.10000000000000 0.14285714285714 2 - -0.30000000000000 0.10000000000000 0.14285714285714 2 - -0.20000000000000 0.10000000000000 0.14285714285714 2 - -0.10000000000000 0.10000000000000 0.14285714285714 2 - 0.00000000000000 0.20000000000000 0.14285714285714 2 - 0.10000000000000 0.20000000000000 0.14285714285714 2 - 0.20000000000000 0.20000000000000 0.14285714285714 2 - 0.30000000000000 0.20000000000000 0.14285714285714 2 - 0.40000000000000 0.20000000000000 0.14285714285714 2 - 0.50000000000000 0.20000000000000 0.14285714285714 2 - -0.40000000000000 0.20000000000000 0.14285714285714 2 - -0.30000000000000 0.20000000000000 0.14285714285714 2 - -0.20000000000000 0.20000000000000 0.14285714285714 2 - -0.10000000000000 0.20000000000000 0.14285714285714 2 - 0.00000000000000 0.30000000000000 0.14285714285714 2 - 0.10000000000000 0.30000000000000 0.14285714285714 2 - 0.20000000000000 0.30000000000000 0.14285714285714 2 - 0.30000000000000 0.30000000000000 0.14285714285714 2 - 0.40000000000000 0.30000000000000 0.14285714285714 2 - 0.50000000000000 0.30000000000000 0.14285714285714 2 - -0.40000000000000 0.30000000000000 0.14285714285714 2 - -0.30000000000000 0.30000000000000 0.14285714285714 2 - -0.20000000000000 0.30000000000000 0.14285714285714 2 - -0.10000000000000 0.30000000000000 0.14285714285714 2 - 0.00000000000000 0.40000000000000 0.14285714285714 2 - 0.10000000000000 0.40000000000000 0.14285714285714 2 - 0.20000000000000 0.40000000000000 0.14285714285714 2 - 0.30000000000000 0.40000000000000 0.14285714285714 2 - 0.40000000000000 0.40000000000000 0.14285714285714 2 - 0.50000000000000 0.40000000000000 0.14285714285714 2 - -0.40000000000000 0.40000000000000 0.14285714285714 2 - -0.30000000000000 0.40000000000000 0.14285714285714 2 - -0.20000000000000 0.40000000000000 0.14285714285714 2 - -0.10000000000000 0.40000000000000 0.14285714285714 2 - 0.00000000000000 0.50000000000000 0.14285714285714 2 - 0.10000000000000 0.50000000000000 0.14285714285714 2 - 0.20000000000000 0.50000000000000 0.14285714285714 2 - 0.30000000000000 0.50000000000000 0.14285714285714 2 - 0.40000000000000 0.50000000000000 0.14285714285714 2 - 0.50000000000000 0.50000000000000 0.14285714285714 2 - -0.40000000000000 0.50000000000000 0.14285714285714 2 - -0.30000000000000 0.50000000000000 0.14285714285714 2 - -0.20000000000000 0.50000000000000 0.14285714285714 2 - -0.10000000000000 0.50000000000000 0.14285714285714 2 - 0.00000000000000 -0.40000000000000 0.14285714285714 2 - 0.10000000000000 -0.40000000000000 0.14285714285714 2 - 0.20000000000000 -0.40000000000000 0.14285714285714 2 - 0.30000000000000 -0.40000000000000 0.14285714285714 2 - 0.40000000000000 -0.40000000000000 0.14285714285714 2 - 0.50000000000000 -0.40000000000000 0.14285714285714 2 - -0.40000000000000 -0.40000000000000 0.14285714285714 2 - -0.30000000000000 -0.40000000000000 0.14285714285714 2 - -0.20000000000000 -0.40000000000000 0.14285714285714 2 - -0.10000000000000 -0.40000000000000 0.14285714285714 2 - 0.00000000000000 -0.30000000000000 0.14285714285714 2 - 0.10000000000000 -0.30000000000000 0.14285714285714 2 - 0.20000000000000 -0.30000000000000 0.14285714285714 2 - 0.30000000000000 -0.30000000000000 0.14285714285714 2 - 0.40000000000000 -0.30000000000000 0.14285714285714 2 - 0.50000000000000 -0.30000000000000 0.14285714285714 2 - -0.40000000000000 -0.30000000000000 0.14285714285714 2 - -0.30000000000000 -0.30000000000000 0.14285714285714 2 - -0.20000000000000 -0.30000000000000 0.14285714285714 2 - -0.10000000000000 -0.30000000000000 0.14285714285714 2 - 0.00000000000000 -0.20000000000000 0.14285714285714 2 - 0.10000000000000 -0.20000000000000 0.14285714285714 2 - 0.20000000000000 -0.20000000000000 0.14285714285714 2 - 0.30000000000000 -0.20000000000000 0.14285714285714 2 - 0.40000000000000 -0.20000000000000 0.14285714285714 2 - 0.50000000000000 -0.20000000000000 0.14285714285714 2 - -0.40000000000000 -0.20000000000000 0.14285714285714 2 - -0.30000000000000 -0.20000000000000 0.14285714285714 2 - -0.20000000000000 -0.20000000000000 0.14285714285714 2 - -0.10000000000000 -0.20000000000000 0.14285714285714 2 - 0.00000000000000 -0.10000000000000 0.14285714285714 2 - 0.10000000000000 -0.10000000000000 0.14285714285714 2 - 0.20000000000000 -0.10000000000000 0.14285714285714 2 - 0.30000000000000 -0.10000000000000 0.14285714285714 2 - 0.40000000000000 -0.10000000000000 0.14285714285714 2 - 0.50000000000000 -0.10000000000000 0.14285714285714 2 - -0.40000000000000 -0.10000000000000 0.14285714285714 2 - -0.30000000000000 -0.10000000000000 0.14285714285714 2 - -0.20000000000000 -0.10000000000000 0.14285714285714 2 - -0.10000000000000 -0.10000000000000 0.14285714285714 2 - 0.00000000000000 0.00000000000000 0.28571428571429 2 - 0.10000000000000 0.00000000000000 0.28571428571429 2 - 0.20000000000000 0.00000000000000 0.28571428571429 2 - 0.30000000000000 0.00000000000000 0.28571428571429 2 - 0.40000000000000 0.00000000000000 0.28571428571429 2 - 0.50000000000000 0.00000000000000 0.28571428571429 2 - -0.40000000000000 0.00000000000000 0.28571428571429 2 - -0.30000000000000 0.00000000000000 0.28571428571429 2 - -0.20000000000000 0.00000000000000 0.28571428571429 2 - -0.10000000000000 0.00000000000000 0.28571428571429 2 - 0.00000000000000 0.10000000000000 0.28571428571429 2 - 0.10000000000000 0.10000000000000 0.28571428571429 2 - 0.20000000000000 0.10000000000000 0.28571428571429 2 - 0.30000000000000 0.10000000000000 0.28571428571429 2 - 0.40000000000000 0.10000000000000 0.28571428571429 2 - 0.50000000000000 0.10000000000000 0.28571428571429 2 - -0.40000000000000 0.10000000000000 0.28571428571429 2 - -0.30000000000000 0.10000000000000 0.28571428571429 2 - -0.20000000000000 0.10000000000000 0.28571428571429 2 - -0.10000000000000 0.10000000000000 0.28571428571429 2 - 0.00000000000000 0.20000000000000 0.28571428571429 2 - 0.10000000000000 0.20000000000000 0.28571428571429 2 - 0.20000000000000 0.20000000000000 0.28571428571429 2 - 0.30000000000000 0.20000000000000 0.28571428571429 2 - 0.40000000000000 0.20000000000000 0.28571428571429 2 - 0.50000000000000 0.20000000000000 0.28571428571429 2 - -0.40000000000000 0.20000000000000 0.28571428571429 2 - -0.30000000000000 0.20000000000000 0.28571428571429 2 - -0.20000000000000 0.20000000000000 0.28571428571429 2 - -0.10000000000000 0.20000000000000 0.28571428571429 2 - 0.00000000000000 0.30000000000000 0.28571428571429 2 - 0.10000000000000 0.30000000000000 0.28571428571429 2 - 0.20000000000000 0.30000000000000 0.28571428571429 2 - 0.30000000000000 0.30000000000000 0.28571428571429 2 - 0.40000000000000 0.30000000000000 0.28571428571429 2 - 0.50000000000000 0.30000000000000 0.28571428571429 2 - -0.40000000000000 0.30000000000000 0.28571428571429 2 - -0.30000000000000 0.30000000000000 0.28571428571429 2 - -0.20000000000000 0.30000000000000 0.28571428571429 2 - -0.10000000000000 0.30000000000000 0.28571428571429 2 - 0.00000000000000 0.40000000000000 0.28571428571429 2 - 0.10000000000000 0.40000000000000 0.28571428571429 2 - 0.20000000000000 0.40000000000000 0.28571428571429 2 - 0.30000000000000 0.40000000000000 0.28571428571429 2 - 0.40000000000000 0.40000000000000 0.28571428571429 2 - 0.50000000000000 0.40000000000000 0.28571428571429 2 - -0.40000000000000 0.40000000000000 0.28571428571429 2 - -0.30000000000000 0.40000000000000 0.28571428571429 2 - -0.20000000000000 0.40000000000000 0.28571428571429 2 - -0.10000000000000 0.40000000000000 0.28571428571429 2 - 0.00000000000000 0.50000000000000 0.28571428571429 2 - 0.10000000000000 0.50000000000000 0.28571428571429 2 - 0.20000000000000 0.50000000000000 0.28571428571429 2 - 0.30000000000000 0.50000000000000 0.28571428571429 2 - 0.40000000000000 0.50000000000000 0.28571428571429 2 - 0.50000000000000 0.50000000000000 0.28571428571429 2 - -0.40000000000000 0.50000000000000 0.28571428571429 2 - -0.30000000000000 0.50000000000000 0.28571428571429 2 - -0.20000000000000 0.50000000000000 0.28571428571429 2 - -0.10000000000000 0.50000000000000 0.28571428571429 2 - 0.00000000000000 -0.40000000000000 0.28571428571429 2 - 0.10000000000000 -0.40000000000000 0.28571428571429 2 - 0.20000000000000 -0.40000000000000 0.28571428571429 2 - 0.30000000000000 -0.40000000000000 0.28571428571429 2 - 0.40000000000000 -0.40000000000000 0.28571428571429 2 - 0.50000000000000 -0.40000000000000 0.28571428571429 2 - -0.40000000000000 -0.40000000000000 0.28571428571429 2 - -0.30000000000000 -0.40000000000000 0.28571428571429 2 - -0.20000000000000 -0.40000000000000 0.28571428571429 2 - -0.10000000000000 -0.40000000000000 0.28571428571429 2 - 0.00000000000000 -0.30000000000000 0.28571428571429 2 - 0.10000000000000 -0.30000000000000 0.28571428571429 2 - 0.20000000000000 -0.30000000000000 0.28571428571429 2 - 0.30000000000000 -0.30000000000000 0.28571428571429 2 - 0.40000000000000 -0.30000000000000 0.28571428571429 2 - 0.50000000000000 -0.30000000000000 0.28571428571429 2 - -0.40000000000000 -0.30000000000000 0.28571428571429 2 - -0.30000000000000 -0.30000000000000 0.28571428571429 2 - -0.20000000000000 -0.30000000000000 0.28571428571429 2 - -0.10000000000000 -0.30000000000000 0.28571428571429 2 - 0.00000000000000 -0.20000000000000 0.28571428571429 2 - 0.10000000000000 -0.20000000000000 0.28571428571429 2 - 0.20000000000000 -0.20000000000000 0.28571428571429 2 - 0.30000000000000 -0.20000000000000 0.28571428571429 2 - 0.40000000000000 -0.20000000000000 0.28571428571429 2 - 0.50000000000000 -0.20000000000000 0.28571428571429 2 - -0.40000000000000 -0.20000000000000 0.28571428571429 2 - -0.30000000000000 -0.20000000000000 0.28571428571429 2 - -0.20000000000000 -0.20000000000000 0.28571428571429 2 - -0.10000000000000 -0.20000000000000 0.28571428571429 2 - 0.00000000000000 -0.10000000000000 0.28571428571429 2 - 0.10000000000000 -0.10000000000000 0.28571428571429 2 - 0.20000000000000 -0.10000000000000 0.28571428571429 2 - 0.30000000000000 -0.10000000000000 0.28571428571429 2 - 0.40000000000000 -0.10000000000000 0.28571428571429 2 - 0.50000000000000 -0.10000000000000 0.28571428571429 2 - -0.40000000000000 -0.10000000000000 0.28571428571429 2 - -0.30000000000000 -0.10000000000000 0.28571428571429 2 - -0.20000000000000 -0.10000000000000 0.28571428571429 2 - -0.10000000000000 -0.10000000000000 0.28571428571429 2 - 0.00000000000000 0.00000000000000 0.42857142857143 2 - 0.10000000000000 0.00000000000000 0.42857142857143 2 - 0.20000000000000 0.00000000000000 0.42857142857143 2 - 0.30000000000000 0.00000000000000 0.42857142857143 2 - 0.40000000000000 0.00000000000000 0.42857142857143 2 - 0.50000000000000 0.00000000000000 0.42857142857143 2 - -0.40000000000000 0.00000000000000 0.42857142857143 2 - -0.30000000000000 0.00000000000000 0.42857142857143 2 - -0.20000000000000 0.00000000000000 0.42857142857143 2 - -0.10000000000000 0.00000000000000 0.42857142857143 2 - 0.00000000000000 0.10000000000000 0.42857142857143 2 - 0.10000000000000 0.10000000000000 0.42857142857143 2 - 0.20000000000000 0.10000000000000 0.42857142857143 2 - 0.30000000000000 0.10000000000000 0.42857142857143 2 - 0.40000000000000 0.10000000000000 0.42857142857143 2 - 0.50000000000000 0.10000000000000 0.42857142857143 2 - -0.40000000000000 0.10000000000000 0.42857142857143 2 - -0.30000000000000 0.10000000000000 0.42857142857143 2 - -0.20000000000000 0.10000000000000 0.42857142857143 2 - -0.10000000000000 0.10000000000000 0.42857142857143 2 - 0.00000000000000 0.20000000000000 0.42857142857143 2 - 0.10000000000000 0.20000000000000 0.42857142857143 2 - 0.20000000000000 0.20000000000000 0.42857142857143 2 - 0.30000000000000 0.20000000000000 0.42857142857143 2 - 0.40000000000000 0.20000000000000 0.42857142857143 2 - 0.50000000000000 0.20000000000000 0.42857142857143 2 - -0.40000000000000 0.20000000000000 0.42857142857143 2 - -0.30000000000000 0.20000000000000 0.42857142857143 2 - -0.20000000000000 0.20000000000000 0.42857142857143 2 - -0.10000000000000 0.20000000000000 0.42857142857143 2 - 0.00000000000000 0.30000000000000 0.42857142857143 2 - 0.10000000000000 0.30000000000000 0.42857142857143 2 - 0.20000000000000 0.30000000000000 0.42857142857143 2 - 0.30000000000000 0.30000000000000 0.42857142857143 2 - 0.40000000000000 0.30000000000000 0.42857142857143 2 - 0.50000000000000 0.30000000000000 0.42857142857143 2 - -0.40000000000000 0.30000000000000 0.42857142857143 2 - -0.30000000000000 0.30000000000000 0.42857142857143 2 - -0.20000000000000 0.30000000000000 0.42857142857143 2 - -0.10000000000000 0.30000000000000 0.42857142857143 2 - 0.00000000000000 0.40000000000000 0.42857142857143 2 - 0.10000000000000 0.40000000000000 0.42857142857143 2 - 0.20000000000000 0.40000000000000 0.42857142857143 2 - 0.30000000000000 0.40000000000000 0.42857142857143 2 - 0.40000000000000 0.40000000000000 0.42857142857143 2 - 0.50000000000000 0.40000000000000 0.42857142857143 2 - -0.40000000000000 0.40000000000000 0.42857142857143 2 - -0.30000000000000 0.40000000000000 0.42857142857143 2 - -0.20000000000000 0.40000000000000 0.42857142857143 2 - -0.10000000000000 0.40000000000000 0.42857142857143 2 - 0.00000000000000 0.50000000000000 0.42857142857143 2 - 0.10000000000000 0.50000000000000 0.42857142857143 2 - 0.20000000000000 0.50000000000000 0.42857142857143 2 - 0.30000000000000 0.50000000000000 0.42857142857143 2 - 0.40000000000000 0.50000000000000 0.42857142857143 2 - 0.50000000000000 0.50000000000000 0.42857142857143 2 - -0.40000000000000 0.50000000000000 0.42857142857143 2 - -0.30000000000000 0.50000000000000 0.42857142857143 2 - -0.20000000000000 0.50000000000000 0.42857142857143 2 - -0.10000000000000 0.50000000000000 0.42857142857143 2 - 0.00000000000000 -0.40000000000000 0.42857142857143 2 - 0.10000000000000 -0.40000000000000 0.42857142857143 2 - 0.20000000000000 -0.40000000000000 0.42857142857143 2 - 0.30000000000000 -0.40000000000000 0.42857142857143 2 - 0.40000000000000 -0.40000000000000 0.42857142857143 2 - 0.50000000000000 -0.40000000000000 0.42857142857143 2 - -0.40000000000000 -0.40000000000000 0.42857142857143 2 - -0.30000000000000 -0.40000000000000 0.42857142857143 2 - -0.20000000000000 -0.40000000000000 0.42857142857143 2 - -0.10000000000000 -0.40000000000000 0.42857142857143 2 - 0.00000000000000 -0.30000000000000 0.42857142857143 2 - 0.10000000000000 -0.30000000000000 0.42857142857143 2 - 0.20000000000000 -0.30000000000000 0.42857142857143 2 - 0.30000000000000 -0.30000000000000 0.42857142857143 2 - 0.40000000000000 -0.30000000000000 0.42857142857143 2 - 0.50000000000000 -0.30000000000000 0.42857142857143 2 - -0.40000000000000 -0.30000000000000 0.42857142857143 2 - -0.30000000000000 -0.30000000000000 0.42857142857143 2 - -0.20000000000000 -0.30000000000000 0.42857142857143 2 - -0.10000000000000 -0.30000000000000 0.42857142857143 2 - 0.00000000000000 -0.20000000000000 0.42857142857143 2 - 0.10000000000000 -0.20000000000000 0.42857142857143 2 - 0.20000000000000 -0.20000000000000 0.42857142857143 2 - 0.30000000000000 -0.20000000000000 0.42857142857143 2 - 0.40000000000000 -0.20000000000000 0.42857142857143 2 - 0.50000000000000 -0.20000000000000 0.42857142857143 2 - -0.40000000000000 -0.20000000000000 0.42857142857143 2 - -0.30000000000000 -0.20000000000000 0.42857142857143 2 - -0.20000000000000 -0.20000000000000 0.42857142857143 2 - -0.10000000000000 -0.20000000000000 0.42857142857143 2 - 0.00000000000000 -0.10000000000000 0.42857142857143 2 - 0.10000000000000 -0.10000000000000 0.42857142857143 2 - 0.20000000000000 -0.10000000000000 0.42857142857143 2 - 0.30000000000000 -0.10000000000000 0.42857142857143 2 - 0.40000000000000 -0.10000000000000 0.42857142857143 2 - 0.50000000000000 -0.10000000000000 0.42857142857143 2 - -0.40000000000000 -0.10000000000000 0.42857142857143 2 - -0.30000000000000 -0.10000000000000 0.42857142857143 2 - -0.20000000000000 -0.10000000000000 0.42857142857143 2 - -0.10000000000000 -0.10000000000000 0.42857142857143 2 -Tetrahedra - 2100 0.00023809523810 - 2 1 2 8 53 - 2 1 7 8 53 - 2 7 8 53 63 - 2 2 8 53 54 - 2 8 53 54 64 - 2 8 53 63 64 - 2 2 3 9 54 - 2 2 8 9 54 - 2 8 9 54 64 - 2 3 9 54 55 - 2 9 54 55 65 - 2 9 54 64 65 - 2 3 4 10 55 - 2 3 9 10 55 - 2 9 10 55 65 - 2 4 10 55 56 - 2 10 55 56 66 - 2 10 55 65 66 - 2 4 5 11 56 - 2 4 10 11 56 - 2 10 11 56 66 - 2 5 11 56 57 - 2 11 56 57 67 - 2 11 56 66 67 - 2 5 6 12 57 - 2 5 11 12 57 - 2 11 12 57 67 - 2 6 12 57 58 - 2 12 57 58 68 - 2 12 57 67 68 - 2 5 6 13 58 - 2 6 12 13 58 - 2 12 13 58 68 - 2 5 13 58 59 - 2 13 58 59 69 - 2 13 58 68 69 - 2 4 5 14 59 - 2 5 13 14 59 - 2 13 14 59 69 - 2 4 14 59 60 - 2 14 59 60 70 - 2 14 59 69 70 - 2 3 4 15 60 - 2 4 14 15 60 - 2 14 15 60 70 - 2 3 15 60 61 - 2 15 60 61 71 - 2 15 60 70 71 - 2 2 3 16 61 - 2 3 15 16 61 - 2 15 16 61 71 - 2 2 16 61 62 - 2 16 61 62 72 - 2 16 61 71 72 - 2 1 2 7 62 - 2 2 7 16 62 - 2 7 16 62 72 - 2 1 7 53 62 - 2 7 53 62 63 - 2 7 62 63 72 - 2 7 8 18 63 - 2 7 17 18 63 - 2 17 18 63 73 - 2 8 18 63 64 - 2 18 63 64 74 - 2 18 63 73 74 - 2 8 9 19 64 - 2 8 18 19 64 - 2 18 19 64 74 - 2 9 19 64 65 - 2 19 64 65 75 - 2 19 64 74 75 - 2 9 10 20 65 - 2 9 19 20 65 - 2 19 20 65 75 - 2 10 20 65 66 - 2 20 65 66 76 - 2 20 65 75 76 - 2 10 11 21 66 - 2 10 20 21 66 - 2 20 21 66 76 - 2 11 21 66 67 - 2 21 66 67 77 - 2 21 66 76 77 - 2 11 12 22 67 - 2 11 21 22 67 - 2 21 22 67 77 - 2 12 22 67 68 - 2 22 67 68 78 - 2 22 67 77 78 - 2 12 13 23 68 - 2 12 22 23 68 - 2 22 23 68 78 - 2 13 23 68 69 - 2 23 68 69 79 - 2 23 68 78 79 - 2 13 14 24 69 - 2 13 23 24 69 - 2 23 24 69 79 - 2 14 24 69 70 - 2 24 69 70 80 - 2 24 69 79 80 - 2 14 15 25 70 - 2 14 24 25 70 - 2 24 25 70 80 - 2 15 25 70 71 - 2 25 70 71 81 - 2 25 70 80 81 - 2 15 16 26 71 - 2 15 25 26 71 - 2 25 26 71 81 - 2 16 26 71 72 - 2 26 71 72 82 - 2 26 71 81 82 - 2 7 16 17 72 - 2 16 17 26 72 - 2 17 26 72 82 - 2 7 17 63 72 - 2 17 63 72 73 - 2 17 72 73 82 - 2 17 18 28 73 - 2 17 27 28 73 - 2 27 28 73 83 - 2 18 28 73 74 - 2 28 73 74 84 - 2 28 73 83 84 - 2 18 19 29 74 - 2 18 28 29 74 - 2 28 29 74 84 - 2 19 29 74 75 - 2 29 74 75 85 - 2 29 74 84 85 - 2 19 20 30 75 - 2 19 29 30 75 - 2 29 30 75 85 - 2 20 30 75 76 - 2 30 75 76 86 - 2 30 75 85 86 - 2 20 21 31 76 - 2 20 30 31 76 - 2 30 31 76 86 - 2 21 31 76 77 - 2 31 76 77 87 - 2 31 76 86 87 - 2 21 22 32 77 - 2 21 31 32 77 - 2 31 32 77 87 - 2 22 32 77 78 - 2 32 77 78 88 - 2 32 77 87 88 - 2 22 23 33 78 - 2 22 32 33 78 - 2 32 33 78 88 - 2 23 33 78 79 - 2 33 78 79 89 - 2 33 78 88 89 - 2 23 24 34 79 - 2 23 33 34 79 - 2 33 34 79 89 - 2 24 34 79 80 - 2 34 79 80 90 - 2 34 79 89 90 - 2 24 25 35 80 - 2 24 34 35 80 - 2 34 35 80 90 - 2 25 35 80 81 - 2 35 80 81 91 - 2 35 80 90 91 - 2 25 26 36 81 - 2 25 35 36 81 - 2 35 36 81 91 - 2 26 36 81 82 - 2 36 81 82 92 - 2 36 81 91 92 - 2 17 26 27 82 - 2 26 27 36 82 - 2 27 36 82 92 - 2 17 27 73 82 - 2 27 73 82 83 - 2 27 82 83 92 - 2 27 28 38 83 - 2 27 37 38 83 - 2 37 38 83 93 - 2 28 38 83 84 - 2 38 83 84 94 - 2 38 83 93 94 - 2 28 29 39 84 - 2 28 38 39 84 - 2 38 39 84 94 - 2 29 39 84 85 - 2 39 84 85 95 - 2 39 84 94 95 - 2 29 30 40 85 - 2 29 39 40 85 - 2 39 40 85 95 - 2 30 40 85 86 - 2 40 85 86 96 - 2 40 85 95 96 - 2 30 31 41 86 - 2 30 40 41 86 - 2 40 41 86 96 - 2 31 41 86 87 - 2 41 86 87 97 - 2 41 86 96 97 - 2 31 32 42 87 - 2 31 41 42 87 - 2 41 42 87 97 - 2 32 42 87 88 - 2 42 87 88 98 - 2 42 87 97 98 - 2 32 33 43 88 - 2 32 42 43 88 - 2 42 43 88 98 - 2 33 43 88 89 - 2 43 88 89 99 - 2 43 88 98 99 - 2 33 34 44 89 - 2 33 43 44 89 - 2 43 44 89 99 - 2 34 44 89 90 - 2 44 89 90 100 - 2 44 89 99 100 - 2 34 35 45 90 - 2 34 44 45 90 - 2 44 45 90 100 - 2 35 45 90 91 - 2 45 90 91 101 - 2 45 90 100 101 - 2 35 36 46 91 - 2 35 45 46 91 - 2 45 46 91 101 - 2 36 46 91 92 - 2 46 91 92 102 - 2 46 91 101 102 - 2 27 36 37 92 - 2 36 37 46 92 - 2 37 46 92 102 - 2 27 37 83 92 - 2 37 83 92 93 - 2 37 92 93 102 - 2 37 38 48 93 - 2 37 47 48 93 - 2 47 48 93 103 - 2 38 48 93 94 - 2 48 93 94 104 - 2 48 93 103 104 - 2 38 39 49 94 - 2 38 48 49 94 - 2 48 49 94 104 - 2 39 49 94 95 - 2 49 94 95 105 - 2 49 94 104 105 - 2 39 40 50 95 - 2 39 49 50 95 - 2 49 50 95 105 - 2 40 50 95 96 - 2 50 95 96 106 - 2 50 95 105 106 - 2 40 41 51 96 - 2 40 50 51 96 - 2 50 51 96 106 - 2 41 51 96 97 - 2 51 96 97 107 - 2 51 96 106 107 - 2 41 42 52 97 - 2 41 51 52 97 - 2 51 52 97 107 - 2 42 52 97 98 - 2 52 97 98 108 - 2 52 97 107 108 - 2 42 43 51 98 - 2 42 51 52 98 - 2 51 52 98 108 - 2 43 51 98 99 - 2 51 98 99 109 - 2 51 98 108 109 - 2 43 44 50 99 - 2 43 50 51 99 - 2 50 51 99 109 - 2 44 50 99 100 - 2 50 99 100 110 - 2 50 99 109 110 - 2 44 45 49 100 - 2 44 49 50 100 - 2 49 50 100 110 - 2 45 49 100 101 - 2 49 100 101 111 - 2 49 100 110 111 - 2 45 46 48 101 - 2 45 48 49 101 - 2 48 49 101 111 - 2 46 48 101 102 - 2 48 101 102 112 - 2 48 101 111 112 - 2 37 46 47 102 - 2 46 47 48 102 - 2 47 48 102 112 - 2 37 47 93 102 - 2 47 93 102 103 - 2 47 102 103 112 - 2 46 47 48 103 - 2 37 46 47 103 - 2 37 46 103 113 - 2 46 48 103 104 - 2 46 103 104 114 - 2 46 103 113 114 - 2 45 48 49 104 - 2 45 46 48 104 - 2 45 46 104 114 - 2 45 49 104 105 - 2 45 104 105 115 - 2 45 104 114 115 - 2 44 49 50 105 - 2 44 45 49 105 - 2 44 45 105 115 - 2 44 50 105 106 - 2 44 105 106 116 - 2 44 105 115 116 - 2 43 50 51 106 - 2 43 44 50 106 - 2 43 44 106 116 - 2 43 51 106 107 - 2 43 106 107 117 - 2 43 106 116 117 - 2 42 51 52 107 - 2 42 43 51 107 - 2 42 43 107 117 - 2 42 52 107 108 - 2 42 107 108 118 - 2 42 107 117 118 - 2 41 51 52 108 - 2 41 42 52 108 - 2 41 42 108 118 - 2 41 51 108 109 - 2 41 108 109 119 - 2 41 108 118 119 - 2 40 50 51 109 - 2 40 41 51 109 - 2 40 41 109 119 - 2 40 50 109 110 - 2 40 109 110 120 - 2 40 109 119 120 - 2 39 49 50 110 - 2 39 40 50 110 - 2 39 40 110 120 - 2 39 49 110 111 - 2 39 110 111 121 - 2 39 110 120 121 - 2 38 48 49 111 - 2 38 39 49 111 - 2 38 39 111 121 - 2 38 48 111 112 - 2 38 111 112 122 - 2 38 111 121 122 - 2 37 47 48 112 - 2 37 38 48 112 - 2 37 38 112 122 - 2 37 47 103 112 - 2 37 103 112 113 - 2 37 112 113 122 - 2 36 37 46 113 - 2 27 36 37 113 - 2 27 36 113 123 - 2 36 46 113 114 - 2 36 113 114 124 - 2 36 113 123 124 - 2 35 45 46 114 - 2 35 36 46 114 - 2 35 36 114 124 - 2 35 45 114 115 - 2 35 114 115 125 - 2 35 114 124 125 - 2 34 44 45 115 - 2 34 35 45 115 - 2 34 35 115 125 - 2 34 44 115 116 - 2 34 115 116 126 - 2 34 115 125 126 - 2 33 43 44 116 - 2 33 34 44 116 - 2 33 34 116 126 - 2 33 43 116 117 - 2 33 116 117 127 - 2 33 116 126 127 - 2 32 42 43 117 - 2 32 33 43 117 - 2 32 33 117 127 - 2 32 42 117 118 - 2 32 117 118 128 - 2 32 117 127 128 - 2 31 41 42 118 - 2 31 32 42 118 - 2 31 32 118 128 - 2 31 41 118 119 - 2 31 118 119 129 - 2 31 118 128 129 - 2 30 40 41 119 - 2 30 31 41 119 - 2 30 31 119 129 - 2 30 40 119 120 - 2 30 119 120 130 - 2 30 119 129 130 - 2 29 39 40 120 - 2 29 30 40 120 - 2 29 30 120 130 - 2 29 39 120 121 - 2 29 120 121 131 - 2 29 120 130 131 - 2 28 38 39 121 - 2 28 29 39 121 - 2 28 29 121 131 - 2 28 38 121 122 - 2 28 121 122 132 - 2 28 121 131 132 - 2 27 37 38 122 - 2 27 28 38 122 - 2 27 28 122 132 - 2 27 37 113 122 - 2 27 113 122 123 - 2 27 122 123 132 - 2 26 27 36 123 - 2 17 26 27 123 - 2 17 26 123 133 - 2 26 36 123 124 - 2 26 123 124 134 - 2 26 123 133 134 - 2 25 35 36 124 - 2 25 26 36 124 - 2 25 26 124 134 - 2 25 35 124 125 - 2 25 124 125 135 - 2 25 124 134 135 - 2 24 34 35 125 - 2 24 25 35 125 - 2 24 25 125 135 - 2 24 34 125 126 - 2 24 125 126 136 - 2 24 125 135 136 - 2 23 33 34 126 - 2 23 24 34 126 - 2 23 24 126 136 - 2 23 33 126 127 - 2 23 126 127 137 - 2 23 126 136 137 - 2 22 32 33 127 - 2 22 23 33 127 - 2 22 23 127 137 - 2 22 32 127 128 - 2 22 127 128 138 - 2 22 127 137 138 - 2 21 31 32 128 - 2 21 22 32 128 - 2 21 22 128 138 - 2 21 31 128 129 - 2 21 128 129 139 - 2 21 128 138 139 - 2 20 30 31 129 - 2 20 21 31 129 - 2 20 21 129 139 - 2 20 30 129 130 - 2 20 129 130 140 - 2 20 129 139 140 - 2 19 29 30 130 - 2 19 20 30 130 - 2 19 20 130 140 - 2 19 29 130 131 - 2 19 130 131 141 - 2 19 130 140 141 - 2 18 28 29 131 - 2 18 19 29 131 - 2 18 19 131 141 - 2 18 28 131 132 - 2 18 131 132 142 - 2 18 131 141 142 - 2 17 27 28 132 - 2 17 18 28 132 - 2 17 18 132 142 - 2 17 27 123 132 - 2 17 123 132 133 - 2 17 132 133 142 - 2 16 17 26 133 - 2 7 16 17 133 - 2 7 16 133 143 - 2 16 26 133 134 - 2 16 133 134 144 - 2 16 133 143 144 - 2 15 25 26 134 - 2 15 16 26 134 - 2 15 16 134 144 - 2 15 25 134 135 - 2 15 134 135 145 - 2 15 134 144 145 - 2 14 24 25 135 - 2 14 15 25 135 - 2 14 15 135 145 - 2 14 24 135 136 - 2 14 135 136 146 - 2 14 135 145 146 - 2 13 23 24 136 - 2 13 14 24 136 - 2 13 14 136 146 - 2 13 23 136 137 - 2 13 136 137 147 - 2 13 136 146 147 - 2 12 22 23 137 - 2 12 13 23 137 - 2 12 13 137 147 - 2 12 22 137 138 - 2 12 137 138 148 - 2 12 137 147 148 - 2 11 21 22 138 - 2 11 12 22 138 - 2 11 12 138 148 - 2 11 21 138 139 - 2 11 138 139 149 - 2 11 138 148 149 - 2 10 20 21 139 - 2 10 11 21 139 - 2 10 11 139 149 - 2 10 20 139 140 - 2 10 139 140 150 - 2 10 139 149 150 - 2 9 19 20 140 - 2 9 10 20 140 - 2 9 10 140 150 - 2 9 19 140 141 - 2 9 140 141 151 - 2 9 140 150 151 - 2 8 18 19 141 - 2 8 9 19 141 - 2 8 9 141 151 - 2 8 18 141 142 - 2 8 141 142 152 - 2 8 141 151 152 - 2 7 17 18 142 - 2 7 8 18 142 - 2 7 8 142 152 - 2 7 17 133 142 - 2 7 133 142 143 - 2 7 142 143 152 - 2 2 7 16 143 - 2 1 2 7 143 - 2 1 2 53 143 - 2 2 16 143 144 - 2 2 54 143 144 - 2 2 53 54 143 - 2 3 15 16 144 - 2 2 3 16 144 - 2 2 3 54 144 - 2 3 15 144 145 - 2 3 55 144 145 - 2 3 54 55 144 - 2 4 14 15 145 - 2 3 4 15 145 - 2 3 4 55 145 - 2 4 14 145 146 - 2 4 56 145 146 - 2 4 55 56 145 - 2 5 13 14 146 - 2 4 5 14 146 - 2 4 5 56 146 - 2 5 13 146 147 - 2 5 57 146 147 - 2 5 56 57 146 - 2 6 12 13 147 - 2 5 6 13 147 - 2 5 6 57 147 - 2 6 12 147 148 - 2 6 58 147 148 - 2 6 57 58 147 - 2 5 11 12 148 - 2 5 6 12 148 - 2 5 6 58 148 - 2 5 11 148 149 - 2 5 59 148 149 - 2 5 58 59 148 - 2 4 10 11 149 - 2 4 5 11 149 - 2 4 5 59 149 - 2 4 10 149 150 - 2 4 60 149 150 - 2 4 59 60 149 - 2 3 9 10 150 - 2 3 4 10 150 - 2 3 4 60 150 - 2 3 9 150 151 - 2 3 61 150 151 - 2 3 60 61 150 - 2 2 8 9 151 - 2 2 3 9 151 - 2 2 3 61 151 - 2 2 8 151 152 - 2 2 62 151 152 - 2 2 61 62 151 - 2 1 7 8 152 - 2 1 2 8 152 - 2 1 2 62 152 - 2 1 7 143 152 - 2 1 53 143 152 - 2 1 53 62 152 - 2 53 54 64 153 - 2 53 63 64 153 - 2 63 64 153 163 - 2 54 64 153 154 - 2 64 153 154 164 - 2 64 153 163 164 - 2 54 55 65 154 - 2 54 64 65 154 - 2 64 65 154 164 - 2 55 65 154 155 - 2 65 154 155 165 - 2 65 154 164 165 - 2 55 56 66 155 - 2 55 65 66 155 - 2 65 66 155 165 - 2 56 66 155 156 - 2 66 155 156 166 - 2 66 155 165 166 - 2 56 57 67 156 - 2 56 66 67 156 - 2 66 67 156 166 - 2 57 67 156 157 - 2 67 156 157 167 - 2 67 156 166 167 - 2 57 58 68 157 - 2 57 67 68 157 - 2 67 68 157 167 - 2 58 68 157 158 - 2 68 157 158 168 - 2 68 157 167 168 - 2 58 59 69 158 - 2 58 68 69 158 - 2 68 69 158 168 - 2 59 69 158 159 - 2 69 158 159 169 - 2 69 158 168 169 - 2 59 60 70 159 - 2 59 69 70 159 - 2 69 70 159 169 - 2 60 70 159 160 - 2 70 159 160 170 - 2 70 159 169 170 - 2 60 61 71 160 - 2 60 70 71 160 - 2 70 71 160 170 - 2 61 71 160 161 - 2 71 160 161 171 - 2 71 160 170 171 - 2 61 62 72 161 - 2 61 71 72 161 - 2 71 72 161 171 - 2 62 72 161 162 - 2 72 161 162 172 - 2 72 161 171 172 - 2 53 62 63 162 - 2 62 63 72 162 - 2 63 72 162 172 - 2 53 63 153 162 - 2 63 153 162 163 - 2 63 162 163 172 - 2 63 64 74 163 - 2 63 73 74 163 - 2 73 74 163 173 - 2 64 74 163 164 - 2 74 163 164 174 - 2 74 163 173 174 - 2 64 65 75 164 - 2 64 74 75 164 - 2 74 75 164 174 - 2 65 75 164 165 - 2 75 164 165 175 - 2 75 164 174 175 - 2 65 66 76 165 - 2 65 75 76 165 - 2 75 76 165 175 - 2 66 76 165 166 - 2 76 165 166 176 - 2 76 165 175 176 - 2 66 67 77 166 - 2 66 76 77 166 - 2 76 77 166 176 - 2 67 77 166 167 - 2 77 166 167 177 - 2 77 166 176 177 - 2 67 68 78 167 - 2 67 77 78 167 - 2 77 78 167 177 - 2 68 78 167 168 - 2 78 167 168 178 - 2 78 167 177 178 - 2 68 69 79 168 - 2 68 78 79 168 - 2 78 79 168 178 - 2 69 79 168 169 - 2 79 168 169 179 - 2 79 168 178 179 - 2 69 70 80 169 - 2 69 79 80 169 - 2 79 80 169 179 - 2 70 80 169 170 - 2 80 169 170 180 - 2 80 169 179 180 - 2 70 71 81 170 - 2 70 80 81 170 - 2 80 81 170 180 - 2 71 81 170 171 - 2 81 170 171 181 - 2 81 170 180 181 - 2 71 72 82 171 - 2 71 81 82 171 - 2 81 82 171 181 - 2 72 82 171 172 - 2 82 171 172 182 - 2 82 171 181 182 - 2 63 72 73 172 - 2 72 73 82 172 - 2 73 82 172 182 - 2 63 73 163 172 - 2 73 163 172 173 - 2 73 172 173 182 - 2 73 74 84 173 - 2 73 83 84 173 - 2 83 84 173 183 - 2 74 84 173 174 - 2 84 173 174 184 - 2 84 173 183 184 - 2 74 75 85 174 - 2 74 84 85 174 - 2 84 85 174 184 - 2 75 85 174 175 - 2 85 174 175 185 - 2 85 174 184 185 - 2 75 76 86 175 - 2 75 85 86 175 - 2 85 86 175 185 - 2 76 86 175 176 - 2 86 175 176 186 - 2 86 175 185 186 - 2 76 77 87 176 - 2 76 86 87 176 - 2 86 87 176 186 - 2 77 87 176 177 - 2 87 176 177 187 - 2 87 176 186 187 - 2 77 78 88 177 - 2 77 87 88 177 - 2 87 88 177 187 - 2 78 88 177 178 - 2 88 177 178 188 - 2 88 177 187 188 - 2 78 79 89 178 - 2 78 88 89 178 - 2 88 89 178 188 - 2 79 89 178 179 - 2 89 178 179 189 - 2 89 178 188 189 - 2 79 80 90 179 - 2 79 89 90 179 - 2 89 90 179 189 - 2 80 90 179 180 - 2 90 179 180 190 - 2 90 179 189 190 - 2 80 81 91 180 - 2 80 90 91 180 - 2 90 91 180 190 - 2 81 91 180 181 - 2 91 180 181 191 - 2 91 180 190 191 - 2 81 82 92 181 - 2 81 91 92 181 - 2 91 92 181 191 - 2 82 92 181 182 - 2 92 181 182 192 - 2 92 181 191 192 - 2 73 82 83 182 - 2 82 83 92 182 - 2 83 92 182 192 - 2 73 83 173 182 - 2 83 173 182 183 - 2 83 182 183 192 - 2 83 84 94 183 - 2 83 93 94 183 - 2 93 94 183 193 - 2 84 94 183 184 - 2 94 183 184 194 - 2 94 183 193 194 - 2 84 85 95 184 - 2 84 94 95 184 - 2 94 95 184 194 - 2 85 95 184 185 - 2 95 184 185 195 - 2 95 184 194 195 - 2 85 86 96 185 - 2 85 95 96 185 - 2 95 96 185 195 - 2 86 96 185 186 - 2 96 185 186 196 - 2 96 185 195 196 - 2 86 87 97 186 - 2 86 96 97 186 - 2 96 97 186 196 - 2 87 97 186 187 - 2 97 186 187 197 - 2 97 186 196 197 - 2 87 88 98 187 - 2 87 97 98 187 - 2 97 98 187 197 - 2 88 98 187 188 - 2 98 187 188 198 - 2 98 187 197 198 - 2 88 89 99 188 - 2 88 98 99 188 - 2 98 99 188 198 - 2 89 99 188 189 - 2 99 188 189 199 - 2 99 188 198 199 - 2 89 90 100 189 - 2 89 99 100 189 - 2 99 100 189 199 - 2 90 100 189 190 - 2 100 189 190 200 - 2 100 189 199 200 - 2 90 91 101 190 - 2 90 100 101 190 - 2 100 101 190 200 - 2 91 101 190 191 - 2 101 190 191 201 - 2 101 190 200 201 - 2 91 92 102 191 - 2 91 101 102 191 - 2 101 102 191 201 - 2 92 102 191 192 - 2 102 191 192 202 - 2 102 191 201 202 - 2 83 92 93 192 - 2 92 93 102 192 - 2 93 102 192 202 - 2 83 93 183 192 - 2 93 183 192 193 - 2 93 192 193 202 - 2 93 94 104 193 - 2 93 103 104 193 - 2 103 104 193 203 - 2 94 104 193 194 - 2 104 193 194 204 - 2 104 193 203 204 - 2 94 95 105 194 - 2 94 104 105 194 - 2 104 105 194 204 - 2 95 105 194 195 - 2 105 194 195 205 - 2 105 194 204 205 - 2 95 96 106 195 - 2 95 105 106 195 - 2 105 106 195 205 - 2 96 106 195 196 - 2 106 195 196 206 - 2 106 195 205 206 - 2 96 97 107 196 - 2 96 106 107 196 - 2 106 107 196 206 - 2 97 107 196 197 - 2 107 196 197 207 - 2 107 196 206 207 - 2 97 98 108 197 - 2 97 107 108 197 - 2 107 108 197 207 - 2 98 108 197 198 - 2 108 197 198 208 - 2 108 197 207 208 - 2 98 99 109 198 - 2 98 108 109 198 - 2 108 109 198 208 - 2 99 109 198 199 - 2 109 198 199 209 - 2 109 198 208 209 - 2 99 100 110 199 - 2 99 109 110 199 - 2 109 110 199 209 - 2 100 110 199 200 - 2 110 199 200 210 - 2 110 199 209 210 - 2 100 101 111 200 - 2 100 110 111 200 - 2 110 111 200 210 - 2 101 111 200 201 - 2 111 200 201 211 - 2 111 200 210 211 - 2 101 102 112 201 - 2 101 111 112 201 - 2 111 112 201 211 - 2 102 112 201 202 - 2 112 201 202 212 - 2 112 201 211 212 - 2 93 102 103 202 - 2 102 103 112 202 - 2 103 112 202 212 - 2 93 103 193 202 - 2 103 193 202 203 - 2 103 202 203 212 - 2 103 104 114 203 - 2 103 113 114 203 - 2 113 114 203 213 - 2 104 114 203 204 - 2 114 203 204 214 - 2 114 203 213 214 - 2 104 105 115 204 - 2 104 114 115 204 - 2 114 115 204 214 - 2 105 115 204 205 - 2 115 204 205 215 - 2 115 204 214 215 - 2 105 106 116 205 - 2 105 115 116 205 - 2 115 116 205 215 - 2 106 116 205 206 - 2 116 205 206 216 - 2 116 205 215 216 - 2 106 107 117 206 - 2 106 116 117 206 - 2 116 117 206 216 - 2 107 117 206 207 - 2 117 206 207 217 - 2 117 206 216 217 - 2 107 108 118 207 - 2 107 117 118 207 - 2 117 118 207 217 - 2 108 118 207 208 - 2 118 207 208 218 - 2 118 207 217 218 - 2 108 109 119 208 - 2 108 118 119 208 - 2 118 119 208 218 - 2 109 119 208 209 - 2 119 208 209 219 - 2 119 208 218 219 - 2 109 110 120 209 - 2 109 119 120 209 - 2 119 120 209 219 - 2 110 120 209 210 - 2 120 209 210 220 - 2 120 209 219 220 - 2 110 111 121 210 - 2 110 120 121 210 - 2 120 121 210 220 - 2 111 121 210 211 - 2 121 210 211 221 - 2 121 210 220 221 - 2 111 112 122 211 - 2 111 121 122 211 - 2 121 122 211 221 - 2 112 122 211 212 - 2 122 211 212 222 - 2 122 211 221 222 - 2 103 112 113 212 - 2 112 113 122 212 - 2 113 122 212 222 - 2 103 113 203 212 - 2 113 203 212 213 - 2 113 212 213 222 - 2 113 114 124 213 - 2 113 123 124 213 - 2 123 124 213 223 - 2 114 124 213 214 - 2 124 213 214 224 - 2 124 213 223 224 - 2 114 115 125 214 - 2 114 124 125 214 - 2 124 125 214 224 - 2 115 125 214 215 - 2 125 214 215 225 - 2 125 214 224 225 - 2 115 116 126 215 - 2 115 125 126 215 - 2 125 126 215 225 - 2 116 126 215 216 - 2 126 215 216 226 - 2 126 215 225 226 - 2 116 117 127 216 - 2 116 126 127 216 - 2 126 127 216 226 - 2 117 127 216 217 - 2 127 216 217 227 - 2 127 216 226 227 - 2 117 118 128 217 - 2 117 127 128 217 - 2 127 128 217 227 - 2 118 128 217 218 - 2 128 217 218 228 - 2 128 217 227 228 - 2 118 119 129 218 - 2 118 128 129 218 - 2 128 129 218 228 - 2 119 129 218 219 - 2 129 218 219 229 - 2 129 218 228 229 - 2 119 120 130 219 - 2 119 129 130 219 - 2 129 130 219 229 - 2 120 130 219 220 - 2 130 219 220 230 - 2 130 219 229 230 - 2 120 121 131 220 - 2 120 130 131 220 - 2 130 131 220 230 - 2 121 131 220 221 - 2 131 220 221 231 - 2 131 220 230 231 - 2 121 122 132 221 - 2 121 131 132 221 - 2 131 132 221 231 - 2 122 132 221 222 - 2 132 221 222 232 - 2 132 221 231 232 - 2 113 122 123 222 - 2 122 123 132 222 - 2 123 132 222 232 - 2 113 123 213 222 - 2 123 213 222 223 - 2 123 222 223 232 - 2 123 124 134 223 - 2 123 133 134 223 - 2 133 134 223 233 - 2 124 134 223 224 - 2 134 223 224 234 - 2 134 223 233 234 - 2 124 125 135 224 - 2 124 134 135 224 - 2 134 135 224 234 - 2 125 135 224 225 - 2 135 224 225 235 - 2 135 224 234 235 - 2 125 126 136 225 - 2 125 135 136 225 - 2 135 136 225 235 - 2 126 136 225 226 - 2 136 225 226 236 - 2 136 225 235 236 - 2 126 127 137 226 - 2 126 136 137 226 - 2 136 137 226 236 - 2 127 137 226 227 - 2 137 226 227 237 - 2 137 226 236 237 - 2 127 128 138 227 - 2 127 137 138 227 - 2 137 138 227 237 - 2 128 138 227 228 - 2 138 227 228 238 - 2 138 227 237 238 - 2 128 129 139 228 - 2 128 138 139 228 - 2 138 139 228 238 - 2 129 139 228 229 - 2 139 228 229 239 - 2 139 228 238 239 - 2 129 130 140 229 - 2 129 139 140 229 - 2 139 140 229 239 - 2 130 140 229 230 - 2 140 229 230 240 - 2 140 229 239 240 - 2 130 131 141 230 - 2 130 140 141 230 - 2 140 141 230 240 - 2 131 141 230 231 - 2 141 230 231 241 - 2 141 230 240 241 - 2 131 132 142 231 - 2 131 141 142 231 - 2 141 142 231 241 - 2 132 142 231 232 - 2 142 231 232 242 - 2 142 231 241 242 - 2 123 132 133 232 - 2 132 133 142 232 - 2 133 142 232 242 - 2 123 133 223 232 - 2 133 223 232 233 - 2 133 232 233 242 - 2 133 134 144 233 - 2 133 143 144 233 - 2 143 144 233 243 - 2 134 144 233 234 - 2 144 233 234 244 - 2 144 233 243 244 - 2 134 135 145 234 - 2 134 144 145 234 - 2 144 145 234 244 - 2 135 145 234 235 - 2 145 234 235 245 - 2 145 234 244 245 - 2 135 136 146 235 - 2 135 145 146 235 - 2 145 146 235 245 - 2 136 146 235 236 - 2 146 235 236 246 - 2 146 235 245 246 - 2 136 137 147 236 - 2 136 146 147 236 - 2 146 147 236 246 - 2 137 147 236 237 - 2 147 236 237 247 - 2 147 236 246 247 - 2 137 138 148 237 - 2 137 147 148 237 - 2 147 148 237 247 - 2 138 148 237 238 - 2 148 237 238 248 - 2 148 237 247 248 - 2 138 139 149 238 - 2 138 148 149 238 - 2 148 149 238 248 - 2 139 149 238 239 - 2 149 238 239 249 - 2 149 238 248 249 - 2 139 140 150 239 - 2 139 149 150 239 - 2 149 150 239 249 - 2 140 150 239 240 - 2 150 239 240 250 - 2 150 239 249 250 - 2 140 141 151 240 - 2 140 150 151 240 - 2 150 151 240 250 - 2 141 151 240 241 - 2 151 240 241 251 - 2 151 240 250 251 - 2 141 142 152 241 - 2 141 151 152 241 - 2 151 152 241 251 - 2 142 152 241 242 - 2 152 241 242 252 - 2 152 241 251 252 - 2 133 142 143 242 - 2 142 143 152 242 - 2 143 152 242 252 - 2 133 143 233 242 - 2 143 233 242 243 - 2 143 242 243 252 - 2 54 143 144 243 - 2 53 54 143 243 - 2 53 54 153 243 - 2 54 144 243 244 - 2 54 154 243 244 - 2 54 153 154 243 - 2 55 144 145 244 - 2 54 55 144 244 - 2 54 55 154 244 - 2 55 145 244 245 - 2 55 155 244 245 - 2 55 154 155 244 - 2 56 145 146 245 - 2 55 56 145 245 - 2 55 56 155 245 - 2 56 146 245 246 - 2 56 156 245 246 - 2 56 155 156 245 - 2 57 146 147 246 - 2 56 57 146 246 - 2 56 57 156 246 - 2 57 147 246 247 - 2 57 157 246 247 - 2 57 156 157 246 - 2 58 147 148 247 - 2 57 58 147 247 - 2 57 58 157 247 - 2 58 148 247 248 - 2 58 158 247 248 - 2 58 157 158 247 - 2 59 148 149 248 - 2 58 59 148 248 - 2 58 59 158 248 - 2 59 149 248 249 - 2 59 159 248 249 - 2 59 158 159 248 - 2 60 149 150 249 - 2 59 60 149 249 - 2 59 60 159 249 - 2 60 150 249 250 - 2 60 160 249 250 - 2 60 159 160 249 - 2 61 150 151 250 - 2 60 61 150 250 - 2 60 61 160 250 - 2 61 151 250 251 - 2 61 161 250 251 - 2 61 160 161 250 - 2 62 151 152 251 - 2 61 62 151 251 - 2 61 62 161 251 - 2 62 152 251 252 - 2 62 162 251 252 - 2 62 161 162 251 - 2 53 143 152 252 - 2 53 62 152 252 - 2 53 62 162 252 - 2 53 143 243 252 - 2 53 153 243 252 - 2 53 153 162 252 - 2 153 154 164 253 - 2 153 163 164 253 - 2 163 164 253 263 - 2 154 164 253 254 - 2 164 253 254 264 - 2 164 253 263 264 - 2 154 155 165 254 - 2 154 164 165 254 - 2 164 165 254 264 - 2 155 165 254 255 - 2 165 254 255 265 - 2 165 254 264 265 - 2 155 156 166 255 - 2 155 165 166 255 - 2 165 166 255 265 - 2 156 166 255 256 - 2 166 255 256 266 - 2 166 255 265 266 - 2 156 157 167 256 - 2 156 166 167 256 - 2 166 167 256 266 - 2 157 167 256 257 - 2 167 256 257 267 - 2 167 256 266 267 - 2 157 158 168 257 - 2 157 167 168 257 - 2 167 168 257 267 - 2 158 168 257 258 - 2 168 257 258 268 - 2 168 257 267 268 - 2 158 159 169 258 - 2 158 168 169 258 - 2 168 169 258 268 - 2 159 169 258 259 - 2 169 258 259 269 - 2 169 258 268 269 - 2 159 160 170 259 - 2 159 169 170 259 - 2 169 170 259 269 - 2 160 170 259 260 - 2 170 259 260 270 - 2 170 259 269 270 - 2 160 161 171 260 - 2 160 170 171 260 - 2 170 171 260 270 - 2 161 171 260 261 - 2 171 260 261 271 - 2 171 260 270 271 - 2 161 162 172 261 - 2 161 171 172 261 - 2 171 172 261 271 - 2 162 172 261 262 - 2 172 261 262 272 - 2 172 261 271 272 - 2 153 162 163 262 - 2 162 163 172 262 - 2 163 172 262 272 - 2 153 163 253 262 - 2 163 253 262 263 - 2 163 262 263 272 - 2 163 164 174 263 - 2 163 173 174 263 - 2 173 174 263 273 - 2 164 174 263 264 - 2 174 263 264 274 - 2 174 263 273 274 - 2 164 165 175 264 - 2 164 174 175 264 - 2 174 175 264 274 - 2 165 175 264 265 - 2 175 264 265 275 - 2 175 264 274 275 - 2 165 166 176 265 - 2 165 175 176 265 - 2 175 176 265 275 - 2 166 176 265 266 - 2 176 265 266 276 - 2 176 265 275 276 - 2 166 167 177 266 - 2 166 176 177 266 - 2 176 177 266 276 - 2 167 177 266 267 - 2 177 266 267 277 - 2 177 266 276 277 - 2 167 168 178 267 - 2 167 177 178 267 - 2 177 178 267 277 - 2 168 178 267 268 - 2 178 267 268 278 - 2 178 267 277 278 - 2 168 169 179 268 - 2 168 178 179 268 - 2 178 179 268 278 - 2 169 179 268 269 - 2 179 268 269 279 - 2 179 268 278 279 - 2 169 170 180 269 - 2 169 179 180 269 - 2 179 180 269 279 - 2 170 180 269 270 - 2 180 269 270 280 - 2 180 269 279 280 - 2 170 171 181 270 - 2 170 180 181 270 - 2 180 181 270 280 - 2 171 181 270 271 - 2 181 270 271 281 - 2 181 270 280 281 - 2 171 172 182 271 - 2 171 181 182 271 - 2 181 182 271 281 - 2 172 182 271 272 - 2 182 271 272 282 - 2 182 271 281 282 - 2 163 172 173 272 - 2 172 173 182 272 - 2 173 182 272 282 - 2 163 173 263 272 - 2 173 263 272 273 - 2 173 272 273 282 - 2 173 174 184 273 - 2 173 183 184 273 - 2 183 184 273 283 - 2 174 184 273 274 - 2 184 273 274 284 - 2 184 273 283 284 - 2 174 175 185 274 - 2 174 184 185 274 - 2 184 185 274 284 - 2 175 185 274 275 - 2 185 274 275 285 - 2 185 274 284 285 - 2 175 176 186 275 - 2 175 185 186 275 - 2 185 186 275 285 - 2 176 186 275 276 - 2 186 275 276 286 - 2 186 275 285 286 - 2 176 177 187 276 - 2 176 186 187 276 - 2 186 187 276 286 - 2 177 187 276 277 - 2 187 276 277 287 - 2 187 276 286 287 - 2 177 178 188 277 - 2 177 187 188 277 - 2 187 188 277 287 - 2 178 188 277 278 - 2 188 277 278 288 - 2 188 277 287 288 - 2 178 179 189 278 - 2 178 188 189 278 - 2 188 189 278 288 - 2 179 189 278 279 - 2 189 278 279 289 - 2 189 278 288 289 - 2 179 180 190 279 - 2 179 189 190 279 - 2 189 190 279 289 - 2 180 190 279 280 - 2 190 279 280 290 - 2 190 279 289 290 - 2 180 181 191 280 - 2 180 190 191 280 - 2 190 191 280 290 - 2 181 191 280 281 - 2 191 280 281 291 - 2 191 280 290 291 - 2 181 182 192 281 - 2 181 191 192 281 - 2 191 192 281 291 - 2 182 192 281 282 - 2 192 281 282 292 - 2 192 281 291 292 - 2 173 182 183 282 - 2 182 183 192 282 - 2 183 192 282 292 - 2 173 183 273 282 - 2 183 273 282 283 - 2 183 282 283 292 - 2 183 184 194 283 - 2 183 193 194 283 - 2 193 194 283 293 - 2 184 194 283 284 - 2 194 283 284 294 - 2 194 283 293 294 - 2 184 185 195 284 - 2 184 194 195 284 - 2 194 195 284 294 - 2 185 195 284 285 - 2 195 284 285 295 - 2 195 284 294 295 - 2 185 186 196 285 - 2 185 195 196 285 - 2 195 196 285 295 - 2 186 196 285 286 - 2 196 285 286 296 - 2 196 285 295 296 - 2 186 187 197 286 - 2 186 196 197 286 - 2 196 197 286 296 - 2 187 197 286 287 - 2 197 286 287 297 - 2 197 286 296 297 - 2 187 188 198 287 - 2 187 197 198 287 - 2 197 198 287 297 - 2 188 198 287 288 - 2 198 287 288 298 - 2 198 287 297 298 - 2 188 189 199 288 - 2 188 198 199 288 - 2 198 199 288 298 - 2 189 199 288 289 - 2 199 288 289 299 - 2 199 288 298 299 - 2 189 190 200 289 - 2 189 199 200 289 - 2 199 200 289 299 - 2 190 200 289 290 - 2 200 289 290 300 - 2 200 289 299 300 - 2 190 191 201 290 - 2 190 200 201 290 - 2 200 201 290 300 - 2 191 201 290 291 - 2 201 290 291 301 - 2 201 290 300 301 - 2 191 192 202 291 - 2 191 201 202 291 - 2 201 202 291 301 - 2 192 202 291 292 - 2 202 291 292 302 - 2 202 291 301 302 - 2 183 192 193 292 - 2 192 193 202 292 - 2 193 202 292 302 - 2 183 193 283 292 - 2 193 283 292 293 - 2 193 292 293 302 - 2 193 194 204 293 - 2 193 203 204 293 - 2 203 204 293 303 - 2 194 204 293 294 - 2 204 293 294 304 - 2 204 293 303 304 - 2 194 195 205 294 - 2 194 204 205 294 - 2 204 205 294 304 - 2 195 205 294 295 - 2 205 294 295 305 - 2 205 294 304 305 - 2 195 196 206 295 - 2 195 205 206 295 - 2 205 206 295 305 - 2 196 206 295 296 - 2 206 295 296 306 - 2 206 295 305 306 - 2 196 197 207 296 - 2 196 206 207 296 - 2 206 207 296 306 - 2 197 207 296 297 - 2 207 296 297 307 - 2 207 296 306 307 - 2 197 198 208 297 - 2 197 207 208 297 - 2 207 208 297 307 - 2 198 208 297 298 - 2 208 297 298 308 - 2 208 297 307 308 - 2 198 199 209 298 - 2 198 208 209 298 - 2 208 209 298 308 - 2 199 209 298 299 - 2 209 298 299 309 - 2 209 298 308 309 - 2 199 200 210 299 - 2 199 209 210 299 - 2 209 210 299 309 - 2 200 210 299 300 - 2 210 299 300 310 - 2 210 299 309 310 - 2 200 201 211 300 - 2 200 210 211 300 - 2 210 211 300 310 - 2 201 211 300 301 - 2 211 300 301 311 - 2 211 300 310 311 - 2 201 202 212 301 - 2 201 211 212 301 - 2 211 212 301 311 - 2 202 212 301 302 - 2 212 301 302 312 - 2 212 301 311 312 - 2 193 202 203 302 - 2 202 203 212 302 - 2 203 212 302 312 - 2 193 203 293 302 - 2 203 293 302 303 - 2 203 302 303 312 - 2 203 204 214 303 - 2 203 213 214 303 - 2 213 214 303 313 - 2 204 214 303 304 - 2 214 303 304 314 - 2 214 303 313 314 - 2 204 205 215 304 - 2 204 214 215 304 - 2 214 215 304 314 - 2 205 215 304 305 - 2 215 304 305 315 - 2 215 304 314 315 - 2 205 206 216 305 - 2 205 215 216 305 - 2 215 216 305 315 - 2 206 216 305 306 - 2 216 305 306 316 - 2 216 305 315 316 - 2 206 207 217 306 - 2 206 216 217 306 - 2 216 217 306 316 - 2 207 217 306 307 - 2 217 306 307 317 - 2 217 306 316 317 - 2 207 208 218 307 - 2 207 217 218 307 - 2 217 218 307 317 - 2 208 218 307 308 - 2 218 307 308 318 - 2 218 307 317 318 - 2 208 209 219 308 - 2 208 218 219 308 - 2 218 219 308 318 - 2 209 219 308 309 - 2 219 308 309 319 - 2 219 308 318 319 - 2 209 210 220 309 - 2 209 219 220 309 - 2 219 220 309 319 - 2 210 220 309 310 - 2 220 309 310 320 - 2 220 309 319 320 - 2 210 211 221 310 - 2 210 220 221 310 - 2 220 221 310 320 - 2 211 221 310 311 - 2 221 310 311 321 - 2 221 310 320 321 - 2 211 212 222 311 - 2 211 221 222 311 - 2 221 222 311 321 - 2 212 222 311 312 - 2 222 311 312 322 - 2 222 311 321 322 - 2 203 212 213 312 - 2 212 213 222 312 - 2 213 222 312 322 - 2 203 213 303 312 - 2 213 303 312 313 - 2 213 312 313 322 - 2 213 214 224 313 - 2 213 223 224 313 - 2 223 224 313 323 - 2 214 224 313 314 - 2 224 313 314 324 - 2 224 313 323 324 - 2 214 215 225 314 - 2 214 224 225 314 - 2 224 225 314 324 - 2 215 225 314 315 - 2 225 314 315 325 - 2 225 314 324 325 - 2 215 216 226 315 - 2 215 225 226 315 - 2 225 226 315 325 - 2 216 226 315 316 - 2 226 315 316 326 - 2 226 315 325 326 - 2 216 217 227 316 - 2 216 226 227 316 - 2 226 227 316 326 - 2 217 227 316 317 - 2 227 316 317 327 - 2 227 316 326 327 - 2 217 218 228 317 - 2 217 227 228 317 - 2 227 228 317 327 - 2 218 228 317 318 - 2 228 317 318 328 - 2 228 317 327 328 - 2 218 219 229 318 - 2 218 228 229 318 - 2 228 229 318 328 - 2 219 229 318 319 - 2 229 318 319 329 - 2 229 318 328 329 - 2 219 220 230 319 - 2 219 229 230 319 - 2 229 230 319 329 - 2 220 230 319 320 - 2 230 319 320 330 - 2 230 319 329 330 - 2 220 221 231 320 - 2 220 230 231 320 - 2 230 231 320 330 - 2 221 231 320 321 - 2 231 320 321 331 - 2 231 320 330 331 - 2 221 222 232 321 - 2 221 231 232 321 - 2 231 232 321 331 - 2 222 232 321 322 - 2 232 321 322 332 - 2 232 321 331 332 - 2 213 222 223 322 - 2 222 223 232 322 - 2 223 232 322 332 - 2 213 223 313 322 - 2 223 313 322 323 - 2 223 322 323 332 - 2 223 224 234 323 - 2 223 233 234 323 - 2 233 234 323 333 - 2 224 234 323 324 - 2 234 323 324 334 - 2 234 323 333 334 - 2 224 225 235 324 - 2 224 234 235 324 - 2 234 235 324 334 - 2 225 235 324 325 - 2 235 324 325 335 - 2 235 324 334 335 - 2 225 226 236 325 - 2 225 235 236 325 - 2 235 236 325 335 - 2 226 236 325 326 - 2 236 325 326 336 - 2 236 325 335 336 - 2 226 227 237 326 - 2 226 236 237 326 - 2 236 237 326 336 - 2 227 237 326 327 - 2 237 326 327 337 - 2 237 326 336 337 - 2 227 228 238 327 - 2 227 237 238 327 - 2 237 238 327 337 - 2 228 238 327 328 - 2 238 327 328 338 - 2 238 327 337 338 - 2 228 229 239 328 - 2 228 238 239 328 - 2 238 239 328 338 - 2 229 239 328 329 - 2 239 328 329 339 - 2 239 328 338 339 - 2 229 230 240 329 - 2 229 239 240 329 - 2 239 240 329 339 - 2 230 240 329 330 - 2 240 329 330 340 - 2 240 329 339 340 - 2 230 231 241 330 - 2 230 240 241 330 - 2 240 241 330 340 - 2 231 241 330 331 - 2 241 330 331 341 - 2 241 330 340 341 - 2 231 232 242 331 - 2 231 241 242 331 - 2 241 242 331 341 - 2 232 242 331 332 - 2 242 331 332 342 - 2 242 331 341 342 - 2 223 232 233 332 - 2 232 233 242 332 - 2 233 242 332 342 - 2 223 233 323 332 - 2 233 323 332 333 - 2 233 332 333 342 - 2 233 234 244 333 - 2 233 243 244 333 - 2 243 244 333 343 - 2 234 244 333 334 - 2 244 333 334 344 - 2 244 333 343 344 - 2 234 235 245 334 - 2 234 244 245 334 - 2 244 245 334 344 - 2 235 245 334 335 - 2 245 334 335 345 - 2 245 334 344 345 - 2 235 236 246 335 - 2 235 245 246 335 - 2 245 246 335 345 - 2 236 246 335 336 - 2 246 335 336 346 - 2 246 335 345 346 - 2 236 237 247 336 - 2 236 246 247 336 - 2 246 247 336 346 - 2 237 247 336 337 - 2 247 336 337 347 - 2 247 336 346 347 - 2 237 238 248 337 - 2 237 247 248 337 - 2 247 248 337 347 - 2 238 248 337 338 - 2 248 337 338 348 - 2 248 337 347 348 - 2 238 239 249 338 - 2 238 248 249 338 - 2 248 249 338 348 - 2 239 249 338 339 - 2 249 338 339 349 - 2 249 338 348 349 - 2 239 240 250 339 - 2 239 249 250 339 - 2 249 250 339 349 - 2 240 250 339 340 - 2 250 339 340 350 - 2 250 339 349 350 - 2 240 241 251 340 - 2 240 250 251 340 - 2 250 251 340 350 - 2 241 251 340 341 - 2 251 340 341 351 - 2 251 340 350 351 - 2 241 242 252 341 - 2 241 251 252 341 - 2 251 252 341 351 - 2 242 252 341 342 - 2 252 341 342 352 - 2 252 341 351 352 - 2 233 242 243 342 - 2 242 243 252 342 - 2 243 252 342 352 - 2 233 243 333 342 - 2 243 333 342 343 - 2 243 342 343 352 - 2 154 243 244 343 - 2 153 154 243 343 - 2 153 154 253 343 - 2 154 244 343 344 - 2 154 254 343 344 - 2 154 253 254 343 - 2 155 244 245 344 - 2 154 155 244 344 - 2 154 155 254 344 - 2 155 245 344 345 - 2 155 255 344 345 - 2 155 254 255 344 - 2 156 245 246 345 - 2 155 156 245 345 - 2 155 156 255 345 - 2 156 246 345 346 - 2 156 256 345 346 - 2 156 255 256 345 - 2 157 246 247 346 - 2 156 157 246 346 - 2 156 157 256 346 - 2 157 247 346 347 - 2 157 257 346 347 - 2 157 256 257 346 - 2 158 247 248 347 - 2 157 158 247 347 - 2 157 158 257 347 - 2 158 248 347 348 - 2 158 258 347 348 - 2 158 257 258 347 - 2 159 248 249 348 - 2 158 159 248 348 - 2 158 159 258 348 - 2 159 249 348 349 - 2 159 259 348 349 - 2 159 258 259 348 - 2 160 249 250 349 - 2 159 160 249 349 - 2 159 160 259 349 - 2 160 250 349 350 - 2 160 260 349 350 - 2 160 259 260 349 - 2 161 250 251 350 - 2 160 161 250 350 - 2 160 161 260 350 - 2 161 251 350 351 - 2 161 261 350 351 - 2 161 260 261 350 - 2 162 251 252 351 - 2 161 162 251 351 - 2 161 162 261 351 - 2 162 252 351 352 - 2 162 262 351 352 - 2 162 261 262 351 - 2 153 243 252 352 - 2 153 162 252 352 - 2 153 162 262 352 - 2 153 243 343 352 - 2 153 253 343 352 - 2 153 253 262 352 - 2 253 253 254 264 - 2 253 253 263 264 - 2 253 263 264 343 - 2 253 254 262 264 - 2 253 262 264 352 - 2 253 264 343 352 - 2 254 255 262 265 - 2 254 262 264 265 - 2 262 264 265 352 - 2 255 261 262 265 - 2 261 262 265 351 - 2 262 265 351 352 - 2 255 256 261 266 - 2 255 261 265 266 - 2 261 265 266 351 - 2 256 260 261 266 - 2 260 261 266 350 - 2 261 266 350 351 - 2 256 257 260 267 - 2 256 260 266 267 - 2 260 266 267 350 - 2 257 259 260 267 - 2 259 260 267 349 - 2 260 267 349 350 - 2 257 258 259 268 - 2 257 259 267 268 - 2 259 267 268 349 - 2 258 258 259 268 - 2 258 259 268 348 - 2 259 268 348 349 - 2 258 258 259 269 - 2 258 258 268 269 - 2 258 268 269 348 - 2 257 258 259 269 - 2 257 258 269 347 - 2 258 269 347 348 - 2 257 259 260 270 - 2 257 259 269 270 - 2 257 269 270 347 - 2 256 257 260 270 - 2 256 257 270 346 - 2 257 270 346 347 - 2 256 260 261 271 - 2 256 260 270 271 - 2 256 270 271 346 - 2 255 256 261 271 - 2 255 256 271 345 - 2 256 271 345 346 - 2 255 261 262 272 - 2 255 261 271 272 - 2 255 271 272 345 - 2 254 255 262 272 - 2 254 255 272 344 - 2 255 272 344 345 - 2 253 254 262 263 - 2 254 262 263 272 - 2 254 263 272 344 - 2 253 253 254 263 - 2 253 254 263 343 - 2 254 263 343 344 - 2 263 264 274 343 - 2 263 273 274 343 - 2 273 274 333 343 - 2 264 274 343 352 - 2 274 342 343 352 - 2 274 333 342 343 - 2 264 265 275 352 - 2 264 274 275 352 - 2 274 275 342 352 - 2 265 275 351 352 - 2 275 341 351 352 - 2 275 341 342 352 - 2 265 266 276 351 - 2 265 275 276 351 - 2 275 276 341 351 - 2 266 276 350 351 - 2 276 340 350 351 - 2 276 340 341 351 - 2 266 267 277 350 - 2 266 276 277 350 - 2 276 277 340 350 - 2 267 277 349 350 - 2 277 339 349 350 - 2 277 339 340 350 - 2 267 268 278 349 - 2 267 277 278 349 - 2 277 278 339 349 - 2 268 278 348 349 - 2 278 338 348 349 - 2 278 338 339 349 - 2 268 269 279 348 - 2 268 278 279 348 - 2 278 279 338 348 - 2 269 279 347 348 - 2 279 337 347 348 - 2 279 337 338 348 - 2 269 270 280 347 - 2 269 279 280 347 - 2 279 280 337 347 - 2 270 280 346 347 - 2 280 336 346 347 - 2 280 336 337 347 - 2 270 271 281 346 - 2 270 280 281 346 - 2 280 281 336 346 - 2 271 281 345 346 - 2 281 335 345 346 - 2 281 335 336 346 - 2 271 272 282 345 - 2 271 281 282 345 - 2 281 282 335 345 - 2 272 282 344 345 - 2 282 334 344 345 - 2 282 334 335 345 - 2 263 272 273 344 - 2 272 273 282 344 - 2 273 282 334 344 - 2 263 273 343 344 - 2 273 333 343 344 - 2 273 333 334 344 - 2 273 274 284 333 - 2 273 283 284 333 - 2 283 284 323 333 - 2 274 284 333 342 - 2 284 332 333 342 - 2 284 323 332 333 - 2 274 275 285 342 - 2 274 284 285 342 - 2 284 285 332 342 - 2 275 285 341 342 - 2 285 331 341 342 - 2 285 331 332 342 - 2 275 276 286 341 - 2 275 285 286 341 - 2 285 286 331 341 - 2 276 286 340 341 - 2 286 330 340 341 - 2 286 330 331 341 - 2 276 277 287 340 - 2 276 286 287 340 - 2 286 287 330 340 - 2 277 287 339 340 - 2 287 329 339 340 - 2 287 329 330 340 - 2 277 278 288 339 - 2 277 287 288 339 - 2 287 288 329 339 - 2 278 288 338 339 - 2 288 328 338 339 - 2 288 328 329 339 - 2 278 279 289 338 - 2 278 288 289 338 - 2 288 289 328 338 - 2 279 289 337 338 - 2 289 327 337 338 - 2 289 327 328 338 - 2 279 280 290 337 - 2 279 289 290 337 - 2 289 290 327 337 - 2 280 290 336 337 - 2 290 326 336 337 - 2 290 326 327 337 - 2 280 281 291 336 - 2 280 290 291 336 - 2 290 291 326 336 - 2 281 291 335 336 - 2 291 325 335 336 - 2 291 325 326 336 - 2 281 282 292 335 - 2 281 291 292 335 - 2 291 292 325 335 - 2 282 292 334 335 - 2 292 324 334 335 - 2 292 324 325 335 - 2 273 282 283 334 - 2 282 283 292 334 - 2 283 292 324 334 - 2 273 283 333 334 - 2 283 323 333 334 - 2 283 323 324 334 - 2 283 284 294 323 - 2 283 293 294 323 - 2 293 294 313 323 - 2 284 294 323 332 - 2 294 322 323 332 - 2 294 313 322 323 - 2 284 285 295 332 - 2 284 294 295 332 - 2 294 295 322 332 - 2 285 295 331 332 - 2 295 321 331 332 - 2 295 321 322 332 - 2 285 286 296 331 - 2 285 295 296 331 - 2 295 296 321 331 - 2 286 296 330 331 - 2 296 320 330 331 - 2 296 320 321 331 - 2 286 287 297 330 - 2 286 296 297 330 - 2 296 297 320 330 - 2 287 297 329 330 - 2 297 319 329 330 - 2 297 319 320 330 - 2 287 288 298 329 - 2 287 297 298 329 - 2 297 298 319 329 - 2 288 298 328 329 - 2 298 318 328 329 - 2 298 318 319 329 - 2 288 289 299 328 - 2 288 298 299 328 - 2 298 299 318 328 - 2 289 299 327 328 - 2 299 317 327 328 - 2 299 317 318 328 - 2 289 290 300 327 - 2 289 299 300 327 - 2 299 300 317 327 - 2 290 300 326 327 - 2 300 316 326 327 - 2 300 316 317 327 - 2 290 291 301 326 - 2 290 300 301 326 - 2 300 301 316 326 - 2 291 301 325 326 - 2 301 315 325 326 - 2 301 315 316 326 - 2 291 292 302 325 - 2 291 301 302 325 - 2 301 302 315 325 - 2 292 302 324 325 - 2 302 314 324 325 - 2 302 314 315 325 - 2 283 292 293 324 - 2 292 293 302 324 - 2 293 302 314 324 - 2 283 293 323 324 - 2 293 313 323 324 - 2 293 313 314 324 - 2 293 294 304 313 - 2 293 303 304 313 - 2 303 303 304 313 - 2 294 304 313 322 - 2 304 312 313 322 - 2 303 304 312 313 - 2 294 295 305 322 - 2 294 304 305 322 - 2 304 305 312 322 - 2 295 305 321 322 - 2 305 311 321 322 - 2 305 311 312 322 - 2 295 296 306 321 - 2 295 305 306 321 - 2 305 306 311 321 - 2 296 306 320 321 - 2 306 310 320 321 - 2 306 310 311 321 - 2 296 297 307 320 - 2 296 306 307 320 - 2 306 307 310 320 - 2 297 307 319 320 - 2 307 309 319 320 - 2 307 309 310 320 - 2 297 298 308 319 - 2 297 307 308 319 - 2 307 308 309 319 - 2 298 308 318 319 - 2 308 308 318 319 - 2 308 308 309 319 - 2 298 299 309 318 - 2 298 308 309 318 - 2 308 308 309 318 - 2 299 309 317 318 - 2 307 309 317 318 - 2 307 308 309 318 - 2 299 300 310 317 - 2 299 309 310 317 - 2 307 309 310 317 - 2 300 310 316 317 - 2 306 310 316 317 - 2 306 307 310 317 - 2 300 301 311 316 - 2 300 310 311 316 - 2 306 310 311 316 - 2 301 311 315 316 - 2 305 311 315 316 - 2 305 306 311 316 - 2 301 302 312 315 - 2 301 311 312 315 - 2 305 311 312 315 - 2 302 312 314 315 - 2 304 312 314 315 - 2 304 305 312 315 - 2 293 302 303 314 - 2 302 303 312 314 - 2 303 304 312 314 - 2 293 303 313 314 - 2 303 303 313 314 - 2 303 303 304 314 diff --git a/python/converters/vasp/POSCAR b/python/converters/vasp/POSCAR deleted file mode 100644 index d87d9349..00000000 --- a/python/converters/vasp/POSCAR +++ /dev/null @@ -1,29 +0,0 @@ -LuNiO3, low-T, P2_1/n -1.0 - 5.1234998703 0.0000000000 0.0000000000 - 0.0000000000 5.5089001656 0.0000000000 - -0.0166880521 0.0000000000 7.3551808822 - Lu Ni O - 4 4 12 -Cartesian - 5.00246185 0.42418531 1.86086070 - 0.10434997 5.08471473 5.49431996 - 2.67444393 3.17863552 1.81672974 - 2.43236789 2.33026481 5.53845136 - 2.56174994 0.00000000 0.00000000 - -0.00834403 2.75445008 3.67759044 - 2.55340591 0.00000000 3.67759044 - 0.00000000 2.75445008 0.00000000 - 0.56002379 2.54896816 1.79539968 - 4.54678788 2.95993201 5.55978141 - 1.99338212 5.30341824 1.88219076 - 3.11342985 0.20548193 5.47298991 - 3.55122302 1.72814193 0.39644425 - 1.55558880 3.78075840 6.95873661 - 4.12568276 4.48259185 3.28114617 - 0.98112906 1.02630815 4.07403471 - 0.93260966 1.11059427 6.94181952 - 4.17420208 4.39830581 0.41336136 - 1.60410812 3.86504444 4.09095181 - 3.50270370 1.64385573 3.26422908 - diff --git a/python/converters/vasp/POSCAR.cart b/python/converters/vasp/POSCAR.cart deleted file mode 100644 index a9de6f86..00000000 --- a/python/converters/vasp/POSCAR.cart +++ /dev/null @@ -1,29 +0,0 @@ -LuNiO3, low-T, P2_1/n -1.0 - 5.1234998703 0.0000000000 0.0000000000 - 0.0000000000 5.5089001656 0.0000000000 - -0.0166880521 0.0000000000 7.3551808822 - Lu Ni O - 4 4 12 -Kartesian - 5.00246185 0.42418531 1.86086070 - 0.10434997 5.08471473 5.49431996 - 2.67444393 3.17863552 1.81672974 - 2.43236789 2.33026481 5.53845136 - 2.56174994 0.00000000 0.00000000 - -0.00834403 2.75445008 3.67759044 - 2.55340591 0.00000000 3.67759044 - 0.00000000 2.75445008 0.00000000 - 0.56002379 2.54896816 1.79539968 - 4.54678788 2.95993201 5.55978141 - 1.99338212 5.30341824 1.88219076 - 3.11342985 0.20548193 5.47298991 - 3.55122302 1.72814193 0.39644425 - 1.55558880 3.78075840 6.95873661 - 4.12568276 4.48259185 3.28114617 - 0.98112906 1.02630815 4.07403471 - 0.93260966 1.11059427 6.94181952 - 4.17420208 4.39830581 0.41336136 - 1.60410812 3.86504444 4.09095181 - 3.50270370 1.64385573 3.26422908 - diff --git a/python/converters/vasp/POSCAR.direct b/python/converters/vasp/POSCAR.direct deleted file mode 100644 index 0ed61cab..00000000 --- a/python/converters/vasp/POSCAR.direct +++ /dev/null @@ -1,28 +0,0 @@ -LuNiO3, low-T, P2_1/n -1.0 - 5.1234998703 0.0000000000 0.0000000000 - 0.0000000000 5.5089001656 0.0000000000 - -0.0166880521 0.0000000000 7.3551808822 - Lu Ni O - 4 4 12 -Direct - 0.977199972 0.077000000 0.252999991 - 0.022800028 0.922999978 0.746999979 - 0.522800028 0.577000022 0.247000009 - 0.477199972 0.423000008 0.753000021 - 0.500000000 0.000000000 0.000000000 - 0.000000000 0.500000000 0.500000000 - 0.500000000 0.000000000 0.500000000 - 0.000000000 0.500000000 0.000000000 - 0.110100001 0.462700009 0.244100004 - 0.889899969 0.537299991 0.755900025 - 0.389899999 0.962700009 0.255899996 - 0.610100031 0.037299991 0.744099975 - 0.693300009 0.313699991 0.053900000 - 0.306699991 0.686300039 0.946099997 - 0.806699991 0.813699961 0.446099997 - 0.193300009 0.186300009 0.553900003 - 0.185100004 0.201600000 0.943799973 - 0.814899981 0.798399985 0.056200027 - 0.314899981 0.701600015 0.556200027 - 0.685100019 0.298399985 0.443799973 diff --git a/python/converters/vasp/plocar_io/.gitignore b/python/converters/vasp/c/plocar_io/.gitignore similarity index 72% rename from python/converters/vasp/plocar_io/.gitignore rename to python/converters/vasp/c/plocar_io/.gitignore index f0ad8e09..675673c3 100644 --- a/python/converters/vasp/plocar_io/.gitignore +++ b/python/converters/vasp/c/plocar_io/.gitignore @@ -1,4 +1,5 @@ makefile +Makefile *.so *.o *.pyc diff --git a/python/converters/vasp/plocar_io/__init__.py b/python/converters/vasp/c/plocar_io/__init__.py similarity index 100% rename from python/converters/vasp/plocar_io/__init__.py rename to python/converters/vasp/c/plocar_io/__init__.py diff --git a/python/converters/vasp/plocar_io/c_plocar_io.c b/python/converters/vasp/c/plocar_io/c_plocar_io.c similarity index 100% rename from python/converters/vasp/plocar_io/c_plocar_io.c rename to python/converters/vasp/c/plocar_io/c_plocar_io.c diff --git a/python/converters/vasp/plocar_io/makefile.darwin b/python/converters/vasp/c/plocar_io/makefile.darwin similarity index 97% rename from python/converters/vasp/plocar_io/makefile.darwin rename to python/converters/vasp/c/plocar_io/makefile.darwin index 10491743..b2d8a5e5 100644 --- a/python/converters/vasp/plocar_io/makefile.darwin +++ b/python/converters/vasp/c/plocar_io/makefile.darwin @@ -5,5 +5,4 @@ LIB_FLAGS=-L/opt/local/Library/Frameworks/Python.framework/Versions/Current/lib/ c_plocar_io.so: c_plocar_io.c $(CC) $< -fPIC -shared -o $@ $(INC_FLAGS) $(LIB_FLAGS) -lpython2.7 - cp $@ .. diff --git a/python/converters/vasp/c/plocar_io/makefile.linux b/python/converters/vasp/c/plocar_io/makefile.linux new file mode 100644 index 00000000..c4450516 --- /dev/null +++ b/python/converters/vasp/c/plocar_io/makefile.linux @@ -0,0 +1,8 @@ + +CC=gcc +INC_FLAGS=-I/usr/include/python2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include/numpy +LIB_FLAGS=-L/usr/lib/python2.7 + +c_plocar_io.so: c_plocar_io.c + $(CC) $< -fPIC -shared -o $@ $(INC_FLAGS) $(LIB_FLAGS) -lpython2.7 + diff --git a/python/converters/vasp/.gitignore b/python/converters/vasp/python/.gitignore similarity index 100% rename from python/converters/vasp/.gitignore rename to python/converters/vasp/python/.gitignore diff --git a/python/converters/vasp/pyconf.py b/python/converters/vasp/python/inpconf.py similarity index 73% rename from python/converters/vasp/pyconf.py rename to python/converters/vasp/python/inpconf.py index 0dc2fe7e..42e8ba62 100644 --- a/python/converters/vasp/pyconf.py +++ b/python/converters/vasp/python/inpconf.py @@ -1,8 +1,12 @@ +r""" + Module for parsing and checking an input config-file. +""" import ConfigParser import numpy as np import re import sys +import itertools as it import vaspio def issue_warning(message): @@ -12,6 +16,7 @@ def issue_warning(message): print print " !!! WARNING !!!: " + message print + ################################################################################ ################################################################################ # @@ -34,23 +39,6 @@ class ConfigParameters: 1. internal name of a parameter 2. function used to convert an input string into data for a given parameter """ - self.sh_required = { - 'ions': ('ion_list', self.parse_ion_list), - 'lshell': ('lshell', int)} - - self.sh_optional = { - 'rtransform': ('tmatrix', lambda s: self.parse_tmatrix(s, real=True)), - 'ctransform': ('tmatrix', lambda s: self.parse_tmatrix(s, real=False))} - - self.gr_required = { - 'emin': ('emin', float), - 'emax': ('emax', float)} - - self.gr_optional = { - 'normalize' : ('normalize', self.parse_logical), - 'normion' : ('normion', self.parse_logical)} - - ################################################################################ # # __init__() @@ -58,10 +46,29 @@ class ConfigParameters: ################################################################################ def __init__(self, input_filename, verbosity=1): self.verbosity = verbosity - self.cp = ConfigParser.ConfigParser() + self.cp = ConfigParser.SafeConfigParser() self.cp.readfp(open(input_filename, 'r')) - self.conf_pars = {} + self.parameters = {} + + self.sh_required = { + 'ions': ('ion_list', self.parse_string_ion_list), + 'lshell': ('lshell', int)} + + self.sh_optional = { + 'rtransform': ('tmatrix', lambda s: self.parse_string_tmatrix(s, real=True)), + 'ctransform': ('tmatrix', lambda s: self.parse_string_tmatrix(s, real=False))} + + self.gr_required = { + 'shells': ('shells', lambda s: map(int, s.split())), + 'emin': ('emin', float), + 'emax': ('emax', float)} + + self.gr_optional = { + 'normalize' : ('normalize', self.parse_string_logical), + 'normion' : ('normion', self.parse_string_logical)} + + # # Special parsers @@ -75,19 +82,34 @@ class ConfigParameters: """ The ion list accepts two formats: 1). A list of ion indices according to POSCAR. + The list can be defined as a range '9..20'. 2). An element name, in which case all ions with this name are included. The second option requires an input from POSCAR file. """ - try: - l_tmp = map(int, par_str.split()) +# First check if a range is given + patt = '([0-9]+)\.\.([0-9]+)' + match = re.match(patt, par_str) + if match: + i1, i2 = tuple(map(int, match.groups()[:2])) + mess = "First index of the range must be smaller or equal to the second" + assert i1 <= i2, mess + ion_list = np.array(range(i1 - 1, i2)) + else: +# Check if a set of indices is given + try: + l_tmp = map(int, par_str.split()) + l_tmp.sort() # Subtract 1 so that VASP indices (starting with 1) are converted # to Python indices (starting with 0) - ion_list = np.array(l_tmp) - 1 - except ValueError: - err_msg = "Only an option with a list of ion indices is implemented" - raise NotImplementedError(err_msg) + ion_list = np.array(l_tmp) - 1 + except ValueError: + err_msg = "Only an option with a list of ion indices is implemented" + raise NotImplementedError(err_msg) + + err_mess = "Lowest ion index is smaller than 1 in '%s'"%(par_str) + assert np.all(ion_list >= 0), err_mess return ion_list @@ -102,8 +124,44 @@ class ConfigParameters: (case does not matter). In fact, only the first symbol matters so that one can write 'T' or 'F'. """ - assert par_str[0] in 'tf', "Logical parameters should be given by either 'True' or 'False'" - return par_str[0] == 't' + first_char = par_str[0].lower() + assert first_char in 'tf', "Logical parameters should be given by either 'True' or 'False'" + return first_char == 't' + +################################################################################ +# +# parse_string_tmatrix() +# +################################################################################ + def parse_string_tmatrix(self, par_str, real): + """ + Transformation matrix is defined as a set of rows separated + by a new line symbol. + """ + str_rows = par_str.split('\n') + try: + rows = [map(float, s.split()) for s in str_rows] + except ValueError: + err_mess = "Cannot parse a matrix string:\n%s"%(par_str) + raise ValueError(err_mess) + + nr = len(rows) + nm = len(rows[0]) + + err_mess = "Number of columns must be the same:\n%s"%(par_str) + for row in rows: + assert len(row) == nm, err_mess + + if real: + mat = np.array(rows) + else: + err_mess = "Complex matrix must contain 2*M values:\n%s"%(par_str) + assert 2 * (nm / 2) == nm, err_mess + + tmp = np.array(rows, dtype=np.complex128) + mat = tmp[:, 0::2] + 1.0j * tmp[:, 1::2] + + return mat ################################################################################ # @@ -122,7 +180,7 @@ class ConfigParameters: except ConfigParser.NoOptionError: if exception: message = "Required parameter '%s' not found in section [%s]"%(par, section) - raise ConfigParser.NoOptionError(message) + raise Exception(message) else: continue @@ -149,9 +207,8 @@ class ConfigParameters: # (note that ConfigParser transforms all names to lower case) sections = self.cp.sections() - sh_patt = 'shell *([0-9]*)' - ismatch = lambda s: not re.match(sh_patt, s) is None - sec_shells = filter(ismatch, sections) + sh_patt1 = re.compile('shell +.*', re.IGNORECASE) + sec_shells = filter(sh_patt1.match, sections) self.nshells = len(sec_shells) assert self.nshells > 0, "No projected shells found in the input file" @@ -164,15 +221,17 @@ class ConfigParameters: print " Found 1 projected shell" # Get shell indices - get_ind = lambda s: int(re.match(sh_patt, s).groups()[0]) + sh_patt2 = re.compile('shell +([0-9]*)$', re.IGNORECASE) try: + get_ind = lambda s: int(sh_patt2.match(s).groups()[0]) sh_inds = map(get_ind, sec_shells) - except ValueError: + except (ValueError, AttributeError): raise ValueError("Failed to extract shell indices from a list: %s"%(sec_shells)) - self.sh_sections = {ind: sec for ind, sec in sh_inds, sec_shells} + self.sh_sections = {ind: sec for ind, sec in it.izip(sh_inds, sec_shells)} # Check that all indices are unique +# In principle redundant because the list of sections will contain only unique names assert len(sh_inds) == len(set(sh_inds)), "There must be no shell with the same index!" # Ideally, indices should run from 1 to @@ -180,7 +239,7 @@ class ConfigParameters: sh_inds.sort() if sh_inds != range(1, len(sh_inds) + 1): issue_warning("Shell indices are not uniform or not starting from 1. " - "This might be an indication of a incorrect setup." + "This might be an indication of a incorrect setup.") # Parse shell parameters self.shells = {} @@ -230,9 +289,8 @@ class ConfigParameters: # Find group sections sections = self.cp.sections() - gr_patt = 'group *([0-9]*)' - ismatch = lambda s: not re.match(gr_patt, s) is None - sec_groups = filter(ismatch, sections) + gr_patt = re.compile('group *([0-9]*)') + sec_groups = filter(gr_patt.match, sections) self.ngroups = len(sec_groups) diff --git a/python/converters/vasp/plotools.py b/python/converters/vasp/python/plotools.py similarity index 100% rename from python/converters/vasp/plotools.py rename to python/converters/vasp/python/plotools.py diff --git a/python/converters/vasp/vaspio.py b/python/converters/vasp/python/vaspio.py similarity index 100% rename from python/converters/vasp/vaspio.py rename to python/converters/vasp/python/vaspio.py diff --git a/python/converters/vasp/test.cfg b/python/converters/vasp/test.cfg deleted file mode 100644 index 7640037e..00000000 --- a/python/converters/vasp/test.cfg +++ /dev/null @@ -1,13 +0,0 @@ -[General] - -[PLO Group 1] - -IONS = 5 6 7 8 -#IONS = Ni -EMIN = -0.6 -EMAX = 2.7 -LSHELL = 2 -RTRANSFORM = - 0.0 0.0 0.0 0.0 1.0 - 0.0 0.0 1.0 0.0 0.0 - diff --git a/python/converters/vasp/test/adv_example.cfg b/python/converters/vasp/test/adv_example.cfg new file mode 100644 index 00000000..a02179c1 --- /dev/null +++ b/python/converters/vasp/test/adv_example.cfg @@ -0,0 +1,20 @@ +[General] +EFERMI = -0.6 + +[Group 1] +SHELLS = 1 2 +EMIN = -7.6 +EMAX = 2.7 + +[Shell 1] +# Ni shell +IONS = 5 6 7 8 +LSHELL = 2 +RTRANSFORM = + 0.0 0.0 0.0 0.0 1.0 + 0.0 0.0 1.0 0.0 0.0 + +[Shell 2] +# Oxygen shell +IONS = 9..20 +LSHELL = 1 diff --git a/python/converters/vasp/test/inpconf/.gitignore b/python/converters/vasp/test/inpconf/.gitignore new file mode 100644 index 00000000..0d20b648 --- /dev/null +++ b/python/converters/vasp/test/inpconf/.gitignore @@ -0,0 +1 @@ +*.pyc diff --git a/python/converters/vasp/test/inpconf/runtest.sh b/python/converters/vasp/test/inpconf/runtest.sh new file mode 100644 index 00000000..9b7bd8ca --- /dev/null +++ b/python/converters/vasp/test/inpconf/runtest.sh @@ -0,0 +1 @@ +PYTHONPATH=../../python:../../c:$PYTHONPATH python $1 diff --git a/python/converters/vasp/test/inpconf/test1.cfg b/python/converters/vasp/test/inpconf/test1.cfg new file mode 100644 index 00000000..dec4cc4a --- /dev/null +++ b/python/converters/vasp/test/inpconf/test1.cfg @@ -0,0 +1,12 @@ +[General] +EFERMI = 0.7 + +[Group 1] +SHELLS = 1 + +[Shell 1] +LSHELL = 2 + +[Shell 2] +IONS = 9..20 +LSHELL = 1 diff --git a/python/converters/vasp/test/inpconf/test2.cfg b/python/converters/vasp/test/inpconf/test2.cfg new file mode 100644 index 00000000..6e0ff671 --- /dev/null +++ b/python/converters/vasp/test/inpconf/test2.cfg @@ -0,0 +1,4 @@ +[General] + +[Group 1] + diff --git a/python/converters/vasp/test/inpconf/test3.cfg b/python/converters/vasp/test/inpconf/test3.cfg new file mode 100644 index 00000000..17a54e8b --- /dev/null +++ b/python/converters/vasp/test/inpconf/test3.cfg @@ -0,0 +1,5 @@ +[General] + +[Group 1] + +[Shell x] diff --git a/python/converters/vasp/test/inpconf/test4.cfg b/python/converters/vasp/test/inpconf/test4.cfg new file mode 100644 index 00000000..ac479733 --- /dev/null +++ b/python/converters/vasp/test/inpconf/test4.cfg @@ -0,0 +1,7 @@ +[General] + +[Group 1] + +[Shell 1] +LSHELL = 2 + diff --git a/python/converters/vasp/test/inpconf/test5.cfg b/python/converters/vasp/test/inpconf/test5.cfg new file mode 100644 index 00000000..d8d32970 --- /dev/null +++ b/python/converters/vasp/test/inpconf/test5.cfg @@ -0,0 +1,17 @@ +[General] + +[Group 1] +SHELLS = 1 2 + +[Shell 1] +LSHELL = 2 +IONS = 5..8 + +[Shell 2] +LSHELL = 1 +IONS = 1..4 + +RTRANSFORM = 0.0 1.0 0.0 + 1.0 0.0 0.0 + 0.0 0.0 1.0 + diff --git a/python/converters/vasp/test/inpconf/test_inpconf.py b/python/converters/vasp/test/inpconf/test_inpconf.py new file mode 100644 index 00000000..58af01a9 --- /dev/null +++ b/python/converters/vasp/test/inpconf/test_inpconf.py @@ -0,0 +1,252 @@ +r""" +Test suite for module `inpconf.py`. +""" + +import unittest +import numpy as np +from inpconf import ConfigParameters +import ConfigParser + +class TestSpecialParsers(unittest.TestCase): + """ + Tests of special parsers. + """ + def __init__(self, *args, **kwargs): + """ + Initializes a custom equality function for comparing numpy arrays. + """ + super(TestSpecialParsers, self).__init__(*args, **kwargs) + self.addTypeEqualityFunc(np.ndarray, self.is_arrays_equal) + + def is_arrays_equal(self, arr1, arr2, msg=None): + """ + Raises self.failureException is arrays arr1 and arr2 + are not equal. + """ + if not np.allclose(arr1, arr2): + raise self.failureException(msg) + + def setUp(self): + """ + """ + pass + +################################################################################ +# +# test_parse_string_logical() +# +################################################################################ + def test_parse_string_logical(self): + """ + Function: + + def parse_string_logical(self, par_str) + + Scenarios: + + - **if** par_str == 'True' **return** True + - **if** par_str == 'False' **return** False + - **if** par_str == '0' **raise** assertion + """ + conf_pars = ConfigParameters('test1.cfg') + +# Scenario 1 + res = conf_pars.parse_string_logical('True') + self.assertEqual(res, True) + +# Scenario 2 + res = conf_pars.parse_string_logical('False') + self.assertEqual(res, False) + +# Scenario 3 + with self.assertRaises(AssertionError): + conf_pars.parse_string_logical('0') + +################################################################################ +# +# test_parse_string_ion_list() +# +################################################################################ + def test_parse_string_ion_list(self): + """ + Function: + + def parse_string_ion_list(self, par_str) + + Scenarios: + + - **if** par_str == '5 6 7 8' **return** array([4, 5, 6, 7]) + - **if** par_str == 'Ni' **raise** NotImplementedError + - **if** par_str == '0 1' **raise** AssertionError + - **if** par_str == '5..8' **return** array([4, 5, 6, 7]) + - **if** par_str == '8..5' **raise** AssertionError + """ + conf_pars = ConfigParameters('test1.cfg') + +# Scenario 1 + expected = np.array([4, 5, 6, 7]) + res = conf_pars.parse_string_ion_list('5 6 7 8') + self.assertEqual(res, expected) + +# Scenario 2 + with self.assertRaises(NotImplementedError): + conf_pars.parse_string_ion_list('Ni') + +# Scenario 3 + with self.assertRaises(AssertionError): + conf_pars.parse_string_ion_list('0 1') + +# Scenario 4 + res = conf_pars.parse_string_ion_list('5..8') + self.assertEqual(res, expected) + +# Scenario 5 + err_mess = "First index of the range" + with self.assertRaisesRegexp(AssertionError, err_mess): + conf_pars.parse_string_ion_list('8..5') + + +################################################################################ +# +# test_parse_string_tmatrix() +# +################################################################################ + def test_parse_string_tmatrix(self): + """ + Function: + + def parse_string_tmatrix(self, par_str) + + Parses a matrix defined as a set of rows in the conf-file. + + Scenarios: + + - **if** number of columns is not the same **raise** AssertionError + - **if** complex matrix is read and the number of columns is odd + **raise** AssertionError + - **if** a correct matrix is given **return** an array + + """ + conf_pars = ConfigParameters('test1.cfg') +# Scenario 1 + par_str = "1.0 0.0\n1.0" + err_mess = "Number of columns" + with self.assertRaisesRegexp(AssertionError, err_mess): + conf_pars.parse_string_tmatrix(par_str, real=True) + +# Scenario 2 + par_str = "1.0 0.0 2.0 1.0 0.0\n0.0 1.0 2.0 3.0 -1.0" + err_mess = "Complex matrix must" + with self.assertRaisesRegexp(AssertionError, err_mess): + conf_pars.parse_string_tmatrix(par_str, real=False) + +# Scenario 3 + par_str = "1.0 0.0 2.0 -3.0\n0.0 1.0 -1.0 1.0" + res = conf_pars.parse_string_tmatrix(par_str, real=False) + expected = np.array([[1.0, 2.0 - 3.0j], [1.0j, -1.0 + 1.0j]]) + self.assertEqual(res, expected) + + +################################################################################ +# +# test_parse_parameter_set() +# +################################################################################ + def test_parse_parameter_set(self): + """ + Function: + + def parse_parameter_set(self, section, param_set, excpetion=False) + + Scenarios: + + - **if** config-file section [Shell 1] contains 'LSHELL = 2' **and** + 'lshell' and 'ions' are in `param_set` **return** a dictionary {'lshell': 2} + + - **if** config-file section [Shell 1] contains 'LSHELL = 2' **and** + 'lshell' and 'ions' are in `param_set` and + exception=True **raise** Exception + """ + conf_pars = ConfigParameters('test1.cfg') + param_set = conf_pars.sh_required # contains 'lshell' and 'ions' + +# Scenario 1 + res = conf_pars.parse_parameter_set('Shell 1', param_set) + expected = {'lshell': 2} + self.assertDictEqual(res, expected) + +# Scenario 2 + section = 'Shell 1' + err_mess = "Required parameter" # .* in section [%s]"%(section) + with self.assertRaisesRegexp(Exception, err_mess): + conf_pars.parse_parameter_set(section, param_set, exception=True) + +################################################################################ +# +# test_parse_shells() +# +################################################################################ + def test_parse_shells(self): + """ + Function: + + def parse_shells(self) + + Scenarios: + + - **if** config-file does not contain a valid [Shell] section + **raise** AssertionError + - **if** a [Shell] section does not contain a valid index + **raise** ValueError + - **if** a [Shell] section does not contain all required parameters + **raise** Exception + - **if** two correct [Shell] sections are defined + **return** a dictionary of shell parameters + """ +# Scenario 1 + conf_pars = ConfigParameters('test2.cfg') + err_mess = "No projected shells" + with self.assertRaisesRegexp(AssertionError, err_mess): + conf_pars.parse_shells() + +# Scenario 2 + conf_pars = ConfigParameters('test3.cfg') + err_mess = "Failed to extract shell indices" + with self.assertRaisesRegexp(ValueError, err_mess): + conf_pars.parse_shells() + +# Scenario 3 + conf_pars = ConfigParameters('test4.cfg') + err_mess = "Required parameter" + with self.assertRaisesRegexp(Exception, err_mess): + conf_pars.parse_shells() + +# Scenario 4 + conf_pars = ConfigParameters('test5.cfg') + conf_pars.parse_shells() + res = conf_pars.shells + expected = {1: {'lshell': 2, 'ion_list': np.array([4, 5, 6, 7])}, + 2: {'lshell': 1, 'ion_list': np.array([0, 1, 2, 3]), + 'tmatrix': np.array([[ 0., 1., 0.], [ 1., 0., 0.], [ 0., 0., 1.]])}} + self.assertSetEqual(set(res.keys()), set(expected.keys())) + + arr = res[1].pop('ion_list') + arr_exp = expected[1].pop('ion_list') + self.assertEqual(arr, arr_exp) + + arr = res[2].pop('ion_list') + arr_exp = expected[2].pop('ion_list') + self.assertEqual(arr, arr_exp) + + arr = res[2].pop('tmatrix') + arr_exp = expected[2].pop('tmatrix') + self.assertEqual(arr, arr_exp) + + self.assertDictEqual(res, expected) + + +if __name__ == '__main__': + suite = unittest.TestLoader().loadTestsFromTestCase(TestSpecialParsers) +# unittest.TextTestRunner(verbosity=2, buffer=False).run(suite) + unittest.TextTestRunner(verbosity=2, buffer=True).run(suite) +