From 91949465d49fb23fa07cfa18435f455dc005bbf0 Mon Sep 17 00:00:00 2001 From: Toon Verstraelen Date: Sun, 6 Sep 2026 10:57:01 +0200 Subject: [PATCH 1/2] Correctly parse fchk files without whitespace between values --- iodata/formats/fchk.py | 19 +- iodata/test/data/psi4_hcch.fchk | 1203 +++++++++++++++++++++++++++++++ iodata/test/test_fchk.py | 41 ++ tools/stripfchk.py | 467 ++++++++++++ 4 files changed, 1729 insertions(+), 1 deletion(-) create mode 100644 iodata/test/data/psi4_hcch.fchk create mode 100755 tools/stripfchk.py diff --git a/iodata/formats/fchk.py b/iodata/formats/fchk.py index 7ec6e49ee..dbbeeb1ab 100644 --- a/iodata/formats/fchk.py +++ b/iodata/formats/fchk.py @@ -18,6 +18,7 @@ # -- """Gaussian FCHK file format.""" +import re from collections.abc import Iterator from fnmatch import fnmatch from typing import TextIO @@ -40,6 +41,13 @@ PATTERNS = ["*.fchk", "*.fch"] +# Regular expression for a single floating point number in an FCHK file. +# This is used instead of a simple split on whitespace, because some programs +# write floating point numbers without any whitespace in between, +# e.g. when the exponent has three digits: "1.13086932e+00-3.46281773e-118". +FLOAT_PATTERN = re.compile(r"[-+]?(?:\d+\.?\d*|\.\d+)(?:[EeDd][-+]?\d+)?") + + CONVENTIONS = { (9, "p"): HORTON2_CONVENTIONS[(9, "p")], (8, "p"): HORTON2_CONVENTIONS[(8, "p")], @@ -521,7 +529,16 @@ def _load_fchk_field(lit: LineIterator, label_patterns: list[str]) -> tuple[str, words = [] while counter < length: if not words: - words = next(lit).split() + line = next(lit) + if datatype is float: + # Floating point numbers are not always separated by whitespace, + # e.g. when the exponent has three digits, so they cannot be + # extracted with a simple split. + words = FLOAT_PATTERN.findall(line) + if not words and line.strip(): + raise LoadError(f"Expected floating point numbers: {line.strip()}", lit) + else: + words = line.split() word = words.pop(0) try: value[counter] = datatype(word) diff --git a/iodata/test/data/psi4_hcch.fchk b/iodata/test/data/psi4_hcch.fchk new file mode 100644 index 000000000..195d2ea6f --- /dev/null +++ b/iodata/test/data/psi4_hcch.fchk @@ -0,0 +1,1203 @@ +Generated by Psi4 + SP RHF DEF2-TZVP +Number of atoms I 4 +Charge I 0 +Multiplicity I 1 +Number of electrons I 14 +Number of alpha electrons I 7 +Number of beta electrons I 7 +Number of basis functions I 74 +Number of independent functions I 74 +Atomic numbers I N= 4 + 1 6 6 1 +Nuclear charges R N= 4 + 1.00000000e+00 6.00000000e+00 6.00000000e+00 1.00000000e+00 +Current cartesian coordinates R N= 12 +-1.48851795e-117 0.00000000e+00 3.13915557e+00 5.68635506e-118 0.00000000e+00 + 1.13086932e+00-3.46281773e-118 0.00000000e+00 -1.13086932e+00-1.15900985e-117 + 0.00000000e+00 -3.13915557e+00 +Integer atomic weights I N= 4 + 1 12 12 1 +Real atomic weights R N= 4 + 1.00782503e+00 1.20000000e+01 1.20000000e+01 1.00782503e+00 +Number of primitive shells I 52 +Number of contracted shells I 30 +Pure/Cartesian d shells I 0 +Pure/Cartesian f shells I 0 +Highest angular momentum I 3 +Largest degree of contraction I 6 +Shell types I N= 30 + 0 0 0 1 0 0 + 0 0 0 1 1 1 + -2 -2 -3 0 0 0 + 0 0 1 1 1 -2 + -2 -3 0 0 0 1 +Number of primitives per shell I N= 30 + 3 1 1 1 6 2 + 1 1 1 4 1 1 + 1 1 1 6 2 1 + 1 1 4 1 1 1 + 1 1 3 1 1 1 +Shell to atom map I N= 30 + 1 1 1 1 2 2 + 2 2 2 2 2 2 + 2 2 2 3 3 3 + 3 3 3 3 3 3 + 3 3 4 4 4 4 +Primitive exponents R N= 52 + 3.40613410e+01 5.12357460e+00 1.16466260e+00 3.27230410e-01 1.03072410e-01 + 8.00000000e-01 1.35753497e+04 2.03523337e+03 4.63225624e+02 1.31200196e+02 + 4.28530159e+01 1.55841858e+01 6.20671385e+00 2.57648965e+00 5.76963394e-01 + 2.29728314e-01 9.51644400e-02 3.46972322e+01 7.95826228e+00 2.37808269e+00 + 8.14332082e-01 2.88875473e-01 1.00568237e-01 1.09700000e+00 3.18000000e-01 + 7.61000000e-01 1.35753497e+04 2.03523337e+03 4.63225624e+02 1.31200196e+02 + 4.28530159e+01 1.55841858e+01 6.20671385e+00 2.57648965e+00 5.76963394e-01 + 2.29728314e-01 9.51644400e-02 3.46972322e+01 7.95826228e+00 2.37808269e+00 + 8.14332082e-01 2.88875473e-01 1.00568237e-01 1.09700000e+00 3.18000000e-01 + 7.61000000e-01 3.40613410e+01 5.12357460e+00 1.16466260e+00 3.27230410e-01 + 1.03072410e-01 8.00000000e-01 +Contraction coefficients R N= 52 + 2.54393072e-02 1.90085949e-01 8.52441130e-01 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 6.06455036e-04 4.69790889e-03 2.43324776e-02 9.73999683e-02 + 3.01955843e-01 6.62336091e-01 6.55953085e-01 3.75856333e-01 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.13272200e-02 7.61696592e-02 3.01922522e-01 + 7.27850273e-01 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 6.06455036e-04 4.69790889e-03 2.43324776e-02 9.73999683e-02 + 3.01955843e-01 6.62336091e-01 6.55953085e-01 3.75856333e-01 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 1.13272200e-02 7.61696592e-02 3.01922522e-01 + 7.27850273e-01 1.00000000e+00 1.00000000e+00 1.00000000e+00 1.00000000e+00 + 1.00000000e+00 2.54393072e-02 1.90085949e-01 8.52441130e-01 1.00000000e+00 + 1.00000000e+00 1.00000000e+00 +Coordinates of each shell R N= 90 +-1.48851795e-117 0.00000000e+00 3.13915557e+00-1.48851795e-117 0.00000000e+00 + 3.13915557e+00-1.48851795e-117 0.00000000e+00 3.13915557e+00-1.48851795e-117 + 0.00000000e+00 3.13915557e+00 5.68635506e-118 0.00000000e+00 1.13086932e+00 + 5.68635506e-118 0.00000000e+00 1.13086932e+00 5.68635506e-118 0.00000000e+00 + 1.13086932e+00 5.68635506e-118 0.00000000e+00 1.13086932e+00 5.68635506e-118 + 0.00000000e+00 1.13086932e+00 5.68635506e-118 0.00000000e+00 1.13086932e+00 + 5.68635506e-118 0.00000000e+00 1.13086932e+00 5.68635506e-118 0.00000000e+00 + 1.13086932e+00 5.68635506e-118 0.00000000e+00 1.13086932e+00 5.68635506e-118 + 0.00000000e+00 1.13086932e+00 5.68635506e-118 0.00000000e+00 1.13086932e+00 +-3.46281773e-118 0.00000000e+00 -1.13086932e+00-3.46281773e-118 0.00000000e+00 + -1.13086932e+00-3.46281773e-118 0.00000000e+00 -1.13086932e+00-3.46281773e-118 + 0.00000000e+00 -1.13086932e+00-3.46281773e-118 0.00000000e+00 -1.13086932e+00 +-3.46281773e-118 0.00000000e+00 -1.13086932e+00-3.46281773e-118 0.00000000e+00 + -1.13086932e+00-3.46281773e-118 0.00000000e+00 -1.13086932e+00-3.46281773e-118 + 0.00000000e+00 -1.13086932e+00-3.46281773e-118 0.00000000e+00 -1.13086932e+00 +-3.46281773e-118 0.00000000e+00 -1.13086932e+00-1.15900985e-117 0.00000000e+00 + -3.13915557e+00-1.15900985e-117 0.00000000e+00 -3.13915557e+00-1.15900985e-117 + 0.00000000e+00 -3.13915557e+00-1.15900985e-117 0.00000000e+00 -3.13915557e+00 +Total Energy R -7.736452114876435e+01 +Alpha Orbital Energies R N= 74 + -1.01829056e+01 -1.01802809e+01 -7.58842333e-01 -5.73460418e-01 -5.04290129e-01 + -3.00511787e-01 -3.00511787e-01 2.16228636e-02 2.16228636e-02 5.91078631e-02 + 8.77599627e-02 1.29436844e-01 2.12202181e-01 2.12202181e-01 2.19435343e-01 + 3.21362647e-01 3.21362647e-01 3.51737182e-01 3.92163759e-01 5.45440061e-01 + 5.93997313e-01 5.93997329e-01 6.10011922e-01 7.21241188e-01 7.21241188e-01 + 8.91602330e-01 8.94655898e-01 8.94655919e-01 9.45181584e-01 1.05614750e+00 + 1.05614750e+00 1.19655556e+00 1.40925685e+00 1.40925685e+00 1.44229559e+00 + 1.55057507e+00 1.55057507e+00 1.58402573e+00 1.91456609e+00 1.97454358e+00 + 1.97454358e+00 2.00959568e+00 2.46692656e+00 2.46692660e+00 2.47057505e+00 + 2.47057505e+00 2.51868455e+00 2.52018724e+00 2.52018724e+00 2.62874337e+00 + 2.62874337e+00 2.74101218e+00 2.78628556e+00 2.93384829e+00 2.93629268e+00 + 2.93629268e+00 2.98114739e+00 2.98114781e+00 3.00406460e+00 3.00406460e+00 + 3.06009246e+00 3.06009301e+00 3.59277198e+00 3.59277209e+00 3.67879269e+00 + 3.85686846e+00 3.85686846e+00 4.59987112e+00 4.64731303e+00 4.64731303e+00 + 4.78945152e+00 5.42862678e+00 2.18922712e+01 2.27095744e+01 +Alpha MO coefficients R N= 5476 + -6.13703434e-05 5.18042331e-03 -2.95118701e-03 0.00000000e+00 0.00000000e+00 + 6.36721985e-04 3.29839571e-01 4.30336000e-01 3.07547585e-02 -1.76550844e-02 + 5.00082366e-03 0.00000000e+00 0.00000000e+00 -7.59836899e-04 0.00000000e+00 + 0.00000000e+00 1.15197982e-04 0.00000000e+00 0.00000000e+00 1.32815787e-03 + 1.24415027e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -6.08371417e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 6.45960214e-04 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 3.29839571e-01 4.30336000e-01 3.07547585e-02 + -1.76550844e-02 5.00082366e-03 0.00000000e+00 0.00000000e+00 7.59836899e-04 + 0.00000000e+00 0.00000000e+00 -1.15197982e-04 0.00000000e+00 0.00000000e+00 + -1.32815787e-03 1.24415027e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -6.08371417e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -6.45960214e-04 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -6.13703434e-05 5.18042331e-03 + -2.95118701e-03 0.00000000e+00 0.00000000e+00 -6.36721985e-04 4.41368290e-04 + 8.71327949e-03 6.60290854e-03 0.00000000e+00 0.00000000e+00 -2.00121021e-03 + -3.30103582e-01 -4.30338782e-01 -2.12704796e-02 -9.55515714e-02 4.17268997e-02 + 0.00000000e+00 0.00000000e+00 4.96701752e-04 0.00000000e+00 0.00000000e+00 + 6.10224637e-02 0.00000000e+00 0.00000000e+00 -2.23472826e-02 -2.38963124e-03 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.26932218e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.09845376e-03 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 3.30103582e-01 4.30338782e-01 2.12704796e-02 9.55515714e-02 + -4.17268997e-02 0.00000000e+00 0.00000000e+00 4.96701752e-04 0.00000000e+00 + 0.00000000e+00 6.10224637e-02 0.00000000e+00 0.00000000e+00 -2.23472826e-02 + 2.38963124e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 2.26932218e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 1.09845376e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -4.41368290e-04 -8.71327949e-03 -6.60290854e-03 + 0.00000000e+00 0.00000000e+00 -2.00121021e-03 4.53592502e-02 5.55732444e-02 + 5.47651677e-03 0.00000000e+00 0.00000000e+00 -8.74107304e-03 -8.38077232e-02 + -1.76646538e-01 2.90514554e-01 2.27863428e-01 4.57832198e-02 0.00000000e+00 + 0.00000000e+00 -1.26407533e-01 0.00000000e+00 0.00000000e+00 -4.50491520e-02 + 0.00000000e+00 0.00000000e+00 -6.68687714e-03 1.68717590e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 9.11281838e-04 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -7.12290386e-04 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -8.38077232e-02 -1.76646538e-01 2.90514554e-01 2.27863428e-01 4.57832198e-02 + 0.00000000e+00 0.00000000e+00 1.26407533e-01 0.00000000e+00 0.00000000e+00 + 4.50491520e-02 0.00000000e+00 0.00000000e+00 6.68687714e-03 1.68717590e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 9.11281838e-04 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 7.12290386e-04 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 4.53592502e-02 5.55732444e-02 5.47651677e-03 0.00000000e+00 + 0.00000000e+00 8.74107304e-03 1.34798753e-01 1.76966419e-01 2.71259428e-02 + 0.00000000e+00 0.00000000e+00 -1.72799213e-02 -5.46561439e-02 -1.16259493e-01 + 1.96821445e-01 3.59292718e-02 5.04595135e-02 0.00000000e+00 0.00000000e+00 + 1.52237645e-01 0.00000000e+00 0.00000000e+00 1.95019525e-01 0.00000000e+00 + 0.00000000e+00 4.86943988e-02 8.52775367e-03 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.68992750e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 5.63949520e-03 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 5.46561439e-02 + 1.16259493e-01 -1.96821445e-01 -3.59292718e-02 -5.04595135e-02 0.00000000e+00 + 0.00000000e+00 1.52237645e-01 0.00000000e+00 0.00000000e+00 1.95019525e-01 + 0.00000000e+00 0.00000000e+00 4.86943988e-02 -8.52775367e-03 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.68992750e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 5.63949520e-03 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -1.34798753e-01 -1.76966419e-01 -2.71259428e-02 0.00000000e+00 0.00000000e+00 + -1.72799213e-02 1.37365356e-01 1.79138823e-01 4.64842473e-02 0.00000000e+00 + 0.00000000e+00 -1.49851802e-02 -7.33890312e-04 -1.92649900e-03 -4.83095018e-03 + 4.81752497e-02 3.97967176e-02 0.00000000e+00 0.00000000e+00 3.00702584e-01 + 0.00000000e+00 0.00000000e+00 1.62851779e-01 0.00000000e+00 0.00000000e+00 + 6.32114226e-02 -2.15384983e-04 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 9.98505447e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 5.28063679e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -7.33890312e-04 -1.92649900e-03 + -4.83095018e-03 4.81752497e-02 3.97967176e-02 0.00000000e+00 0.00000000e+00 + -3.00702584e-01 0.00000000e+00 0.00000000e+00 -1.62851779e-01 0.00000000e+00 + 0.00000000e+00 -6.32114226e-02 -2.15384983e-04 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 9.98505447e-03 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -5.28063679e-03 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.37365356e-01 + 1.79138823e-01 4.64842473e-02 0.00000000e+00 0.00000000e+00 1.49851802e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.15390982e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 3.10160837e-01 0.00000000e+00 0.00000000e+00 + 2.52566299e-01 0.00000000e+00 0.00000000e+00 1.40906529e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -1.42494106e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -6.78272389e-03 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 8.55914911e-03 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 6.57494333e-09 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 3.10160837e-01 0.00000000e+00 + 0.00000000e+00 2.52566299e-01 0.00000000e+00 0.00000000e+00 1.40906529e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.42494106e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.78272389e-03 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 8.55914911e-03 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 6.57494333e-09 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.15390982e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.15390982e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 3.10160837e-01 0.00000000e+00 0.00000000e+00 2.52566299e-01 0.00000000e+00 + 0.00000000e+00 1.40906529e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -1.42494106e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -6.78272389e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 8.55914911e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 -6.57494400e-09 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 3.10160837e-01 0.00000000e+00 0.00000000e+00 2.52566299e-01 + 0.00000000e+00 0.00000000e+00 1.40906529e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 1.42494106e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 6.78272389e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 8.55914911e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -6.57494400e-09 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 1.15390982e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 2.80864610e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.87148807e-01 + 0.00000000e+00 0.00000000e+00 1.97376244e-01 0.00000000e+00 0.00000000e+00 + 7.94611701e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.90376963e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 7.93952911e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -4.78740130e-03 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -7.38999041e-09 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -2.87148807e-01 0.00000000e+00 0.00000000e+00 -1.97376244e-01 0.00000000e+00 + 0.00000000e+00 -7.94611701e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 1.90376963e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 7.93952911e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 4.78740130e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 7.38999041e-09 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.80864610e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 2.80864610e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.87148807e-01 + 0.00000000e+00 0.00000000e+00 1.97376244e-01 0.00000000e+00 0.00000000e+00 + 7.94611701e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.90376963e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 7.93952911e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -4.78740130e-03 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 7.38999009e-09 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -2.87148807e-01 0.00000000e+00 0.00000000e+00 -1.97376244e-01 0.00000000e+00 + 0.00000000e+00 -7.94611701e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 1.90376963e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 7.93952911e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 4.78740130e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 -7.38999009e-09 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.80864610e-02 + 0.00000000e+00 3.30754870e-02 3.20859870e-02 4.00387480e+00 0.00000000e+00 + 0.00000000e+00 4.45927814e-02 3.87797860e-02 8.50838418e-02 -1.30004594e-01 + -6.79275531e-01 9.43628955e+00 0.00000000e+00 0.00000000e+00 -7.11781358e-02 + 0.00000000e+00 0.00000000e+00 2.61525224e-01 0.00000000e+00 0.00000000e+00 + -6.44217296e+00 1.82154363e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -8.51665389e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 1.28481492e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -3.87797860e-02 -8.50838418e-02 + 1.30004594e-01 6.79275531e-01 -9.43628955e+00 0.00000000e+00 0.00000000e+00 + -7.11781358e-02 0.00000000e+00 0.00000000e+00 2.61525224e-01 0.00000000e+00 + 0.00000000e+00 -6.44217296e+00 -1.82154363e-03 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 8.51665389e-03 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.28481492e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -3.30754870e-02 + -3.20859870e-02 -4.00387480e+00 0.00000000e+00 0.00000000e+00 4.45927814e-02 + 2.36448305e-02 -2.94154655e-01 2.87766120e+00 0.00000000e+00 0.00000000e+00 + 6.57558701e-02 1.71654780e-02 3.69529240e-02 -9.60849990e-02 -2.28612287e-01 + -2.01171615e+00 0.00000000e+00 0.00000000e+00 -1.76604236e-01 0.00000000e+00 + 0.00000000e+00 1.08982765e-02 0.00000000e+00 0.00000000e+00 -1.42170086e+00 + 8.04914601e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 1.41365894e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 9.81489040e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.71654780e-02 3.69529240e-02 -9.60849990e-02 + -2.28612287e-01 -2.01171615e+00 0.00000000e+00 0.00000000e+00 1.76604236e-01 + 0.00000000e+00 0.00000000e+00 -1.08982765e-02 0.00000000e+00 0.00000000e+00 + 1.42170086e+00 8.04914601e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 1.41365894e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -9.81489040e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.36448305e-02 -2.94154655e-01 + 2.87766120e+00 0.00000000e+00 0.00000000e+00 -6.57558701e-02 6.01914543e-02 + 4.41990979e-01 6.95881219e-01 0.00000000e+00 0.00000000e+00 -1.54899119e-02 + -2.53697237e-02 -5.05741682e-02 6.93099933e-02 8.49898872e-01 -1.80186351e+00 + 0.00000000e+00 0.00000000e+00 -7.06076318e-02 0.00000000e+00 0.00000000e+00 + -4.98246444e-02 0.00000000e+00 0.00000000e+00 -3.85967440e-01 3.66160847e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.48534941e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.94937063e-03 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -2.53697237e-02 -5.05741682e-02 6.93099933e-02 8.49898872e-01 + -1.80186351e+00 0.00000000e+00 0.00000000e+00 7.06076318e-02 0.00000000e+00 + 0.00000000e+00 4.98246444e-02 0.00000000e+00 0.00000000e+00 3.85967440e-01 + 3.66160847e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -1.48534941e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -1.94937063e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 6.01914543e-02 4.41990979e-01 6.95881219e-01 + 0.00000000e+00 0.00000000e+00 1.54899119e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 1.09028875e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.75707837e-01 + 0.00000000e+00 0.00000000e+00 -4.64302218e-01 0.00000000e+00 0.00000000e+00 + 7.15122207e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.02487044e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.95093354e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.56754976e-03 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 5.84607991e-09 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -1.75707837e-01 0.00000000e+00 0.00000000e+00 -4.64302218e-01 0.00000000e+00 + 0.00000000e+00 7.15122207e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -1.02487044e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -2.95093354e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -2.56754976e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 5.84607991e-09 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.09028875e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 1.09028875e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.75707837e-01 + 0.00000000e+00 0.00000000e+00 -4.64302218e-01 0.00000000e+00 0.00000000e+00 + 7.15122207e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.02487044e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.95093354e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.56754976e-03 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -5.84607918e-09 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -1.75707837e-01 0.00000000e+00 0.00000000e+00 -4.64302218e-01 0.00000000e+00 + 0.00000000e+00 7.15122207e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -1.02487044e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -2.95093354e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -2.56754976e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 -5.84607918e-09 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.09028875e-02 + 0.00000000e+00 1.27486445e-01 2.52811615e-01 -2.95453042e+00 0.00000000e+00 + 0.00000000e+00 -1.27584717e-02 2.63189188e-02 6.17553490e-02 -4.16289210e-01 + 4.73776473e+00 -2.19252398e+01 0.00000000e+00 0.00000000e+00 6.12667265e-02 + 0.00000000e+00 0.00000000e+00 -2.58279044e+00 0.00000000e+00 0.00000000e+00 + 1.01938973e+01 5.48146662e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 7.93997995e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -4.21129424e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.63189188e-02 -6.17553490e-02 + 4.16289210e-01 -4.73776473e+00 2.19252398e+01 0.00000000e+00 0.00000000e+00 + 6.12667265e-02 0.00000000e+00 0.00000000e+00 -2.58279044e+00 0.00000000e+00 + 0.00000000e+00 1.01938973e+01 -5.48146662e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -7.93997995e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -4.21129424e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.27486445e-01 + -2.52811615e-01 2.95453042e+00 0.00000000e+00 0.00000000e+00 -1.27584717e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.85620592e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -2.71664333e-01 0.00000000e+00 0.00000000e+00 -6.63332759e-01 + 0.00000000e+00 0.00000000e+00 1.69054007e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 4.96514118e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -9.80569963e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -1.87212709e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 9.69691335e-09 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 2.71664333e-01 0.00000000e+00 0.00000000e+00 + 6.63332759e-01 0.00000000e+00 0.00000000e+00 -1.69054007e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 4.96514118e-03 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -9.80569963e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.87212709e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -9.69691335e-09 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -1.85620592e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.85620592e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -2.71664333e-01 0.00000000e+00 0.00000000e+00 -6.63332759e-01 + 0.00000000e+00 0.00000000e+00 1.69054007e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 4.96514118e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -9.80569963e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -1.87212709e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -9.69691318e-09 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 2.71664333e-01 0.00000000e+00 0.00000000e+00 + 6.63332759e-01 0.00000000e+00 0.00000000e+00 -1.69054007e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 4.96514118e-03 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -9.80569963e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.87212709e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 9.69691318e-09 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -1.85620592e-02 0.00000000e+00 8.24264975e-02 1.05638114e+00 + -7.04434434e+00 0.00000000e+00 0.00000000e+00 -8.40957198e-02 4.56462796e-02 + 8.97949497e-02 5.85810377e-01 -1.06954788e+01 -1.20364640e+01 0.00000000e+00 + 0.00000000e+00 -6.30688666e-02 0.00000000e+00 0.00000000e+00 4.20904753e+00 + 0.00000000e+00 0.00000000e+00 1.13677401e+01 -6.12377662e-03 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.75539736e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.10355301e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -4.56462796e-02 -8.97949497e-02 -5.85810377e-01 1.06954788e+01 1.20364640e+01 + 0.00000000e+00 0.00000000e+00 -6.30688666e-02 0.00000000e+00 0.00000000e+00 + 4.20904753e+00 0.00000000e+00 0.00000000e+00 1.13677401e+01 6.12377662e-03 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.75539736e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.10355301e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -8.24264975e-02 -1.05638114e+00 7.04434434e+00 0.00000000e+00 + 0.00000000e+00 -8.40957198e-02 9.00485547e-02 1.12854824e+00 -5.75811724e+00 + 0.00000000e+00 0.00000000e+00 -1.05727819e-01 1.43439479e-02 2.91493503e-02 + 1.59183158e-01 -6.53103387e-01 5.16513645e+00 0.00000000e+00 0.00000000e+00 + -2.07486070e-01 0.00000000e+00 0.00000000e+00 -9.14671892e-01 0.00000000e+00 + 0.00000000e+00 4.80827546e+00 1.69427639e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.97935496e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -3.76577503e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.43439479e-02 + 2.91493503e-02 1.59183158e-01 -6.53103387e-01 5.16513645e+00 0.00000000e+00 + 0.00000000e+00 2.07486070e-01 0.00000000e+00 0.00000000e+00 9.14671892e-01 + 0.00000000e+00 0.00000000e+00 -4.80827546e+00 1.69427639e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.97935496e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 3.76577503e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 9.00485547e-02 1.12854824e+00 -5.75811724e+00 0.00000000e+00 0.00000000e+00 + 1.05727819e-01 8.67345631e-02 1.40490491e+00 2.51502021e+00 0.00000000e+00 + 0.00000000e+00 -1.44175926e-02 2.52951105e-02 5.02596519e-02 1.06524756e-01 + -1.62330520e+00 -2.21692116e+00 0.00000000e+00 0.00000000e+00 -1.19027029e-01 + 0.00000000e+00 0.00000000e+00 -1.77556666e-01 0.00000000e+00 0.00000000e+00 + -3.72333633e+00 5.23561904e-04 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -5.28693937e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -1.25399143e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.52951105e-02 5.02596519e-02 + 1.06524756e-01 -1.62330520e+00 -2.21692116e+00 0.00000000e+00 0.00000000e+00 + 1.19027029e-01 0.00000000e+00 0.00000000e+00 1.77556666e-01 0.00000000e+00 + 0.00000000e+00 3.72333633e+00 5.23561904e-04 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -5.28693937e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.25399143e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 8.67345631e-02 + 1.40490491e+00 2.51502021e+00 0.00000000e+00 0.00000000e+00 1.44175926e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 4.17962191e-03 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -5.91905285e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -7.66827763e-03 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 4.17962191e-03 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -5.91905285e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 7.66827763e-03 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 4.17962465e-03 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -5.91905288e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -7.66828945e-03 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 4.17962465e-03 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -5.91905288e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 7.66828945e-03 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 8.75114713e-02 2.10687098e+00 + 9.03156034e+00 0.00000000e+00 0.00000000e+00 -6.27949043e-02 1.92164169e-02 + 3.82589382e-02 9.05690156e-01 -1.53772248e+01 6.21041316e+01 0.00000000e+00 + 0.00000000e+00 1.32968096e-01 0.00000000e+00 0.00000000e+00 7.91354352e+00 + 0.00000000e+00 0.00000000e+00 -3.17341190e+01 -2.30429528e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.54164531e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 9.10526006e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -1.92164169e-02 -3.82589382e-02 -9.05690156e-01 1.53772248e+01 -6.21041316e+01 + 0.00000000e+00 0.00000000e+00 1.32968096e-01 0.00000000e+00 0.00000000e+00 + 7.91354352e+00 0.00000000e+00 0.00000000e+00 -3.17341190e+01 2.30429528e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.54164531e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 9.10526006e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -8.75114713e-02 -2.10687098e+00 -9.03156034e+00 0.00000000e+00 + 0.00000000e+00 -6.27949043e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 1.00104876e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.61981697e-03 + 0.00000000e+00 0.00000000e+00 3.84843680e-01 0.00000000e+00 0.00000000e+00 + -1.93417034e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 4.44286496e-03 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.31480753e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 9.48355306e-03 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 5.58882539e-09 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -2.61981697e-03 0.00000000e+00 0.00000000e+00 3.84843680e-01 0.00000000e+00 + 0.00000000e+00 -1.93417034e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -4.44286496e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -6.31480753e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 9.48355306e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 5.58882539e-09 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00104876e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00104876e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.61981697e-03 0.00000000e+00 0.00000000e+00 + 3.84843680e-01 0.00000000e+00 0.00000000e+00 -1.93417034e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 4.44286496e-03 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 6.31480753e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 9.48355306e-03 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -5.58882395e-09 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.61981697e-03 0.00000000e+00 + 0.00000000e+00 3.84843680e-01 0.00000000e+00 0.00000000e+00 -1.93417034e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -4.44286496e-03 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -6.31480753e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 9.48355306e-03 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -5.58882395e-09 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.00104876e-01 0.00000000e+00 0.00000000e+00 + 1.24839876e-02 3.40913164e+00 2.95203767e+00 0.00000000e+00 0.00000000e+00 + -1.51887775e-01 -2.22688417e-02 -5.39237156e-02 7.37459858e-01 -1.01238810e+01 + 2.60697602e+01 0.00000000e+00 0.00000000e+00 -4.05912743e-01 0.00000000e+00 + 0.00000000e+00 3.56332563e+00 0.00000000e+00 0.00000000e+00 -1.31104741e+01 + -3.63688364e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -2.64165379e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -3.82225476e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 2.22688417e-02 5.39237156e-02 -7.37459858e-01 + 1.01238810e+01 -2.60697602e+01 0.00000000e+00 0.00000000e+00 -4.05912743e-01 + 0.00000000e+00 0.00000000e+00 3.56332563e+00 0.00000000e+00 0.00000000e+00 + -1.31104741e+01 3.63688364e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 2.64165379e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -3.82225476e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.24839876e-02 -3.40913164e+00 + -2.95203767e+00 0.00000000e+00 0.00000000e+00 -1.51887775e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.51110517e-12 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 2.17360635e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -9.63394146e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 2.21371065e-03 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -1.51110517e-12 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.17360635e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 9.63394146e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.21371065e-03 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 2.17360564e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -9.63394124e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 2.21367490e-03 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.17360564e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 9.63394124e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.21367490e-03 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 9.30400394e-02 -2.04779327e+00 2.50789915e+00 + 0.00000000e+00 0.00000000e+00 1.65684109e-01 -4.83775714e-02 -1.26618565e-01 + 2.10240296e-01 -7.02684043e-01 -1.04259566e+00 0.00000000e+00 0.00000000e+00 + -3.04810304e-02 0.00000000e+00 0.00000000e+00 1.14591146e+00 0.00000000e+00 + 0.00000000e+00 -2.46627798e+00 1.28128505e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.54948194e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 3.42489241e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -4.83775714e-02 + -1.26618565e-01 2.10240296e-01 -7.02684043e-01 -1.04259566e+00 0.00000000e+00 + 0.00000000e+00 3.04810304e-02 0.00000000e+00 0.00000000e+00 -1.14591146e+00 + 0.00000000e+00 0.00000000e+00 2.46627798e+00 1.28128505e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.54948194e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -3.42489241e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 9.30400394e-02 -2.04779327e+00 2.50789915e+00 0.00000000e+00 0.00000000e+00 + -1.65684109e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.53836203e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.68850940e-01 0.00000000e+00 0.00000000e+00 + -1.45659301e+00 0.00000000e+00 0.00000000e+00 -8.25444577e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -1.42905574e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.86321712e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -1.36462736e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -7.42742037e-09 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.68850940e-01 0.00000000e+00 + 0.00000000e+00 1.45659301e+00 0.00000000e+00 0.00000000e+00 8.25444577e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.42905574e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.86321712e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.36462736e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 7.42742037e-09 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -1.53836203e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.53836203e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.68850940e-01 0.00000000e+00 0.00000000e+00 + -1.45659301e+00 0.00000000e+00 0.00000000e+00 -8.25444577e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -1.42905574e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.86321712e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -1.36462736e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 7.42742230e-09 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.68850940e-01 0.00000000e+00 + 0.00000000e+00 1.45659301e+00 0.00000000e+00 0.00000000e+00 8.25444577e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.42905574e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.86321712e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.36462736e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -7.42742230e-09 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -1.53836203e-01 0.00000000e+00 1.86171311e-02 + -4.47026558e+00 4.13397344e+00 0.00000000e+00 0.00000000e+00 3.80872746e-01 + 6.53759690e-02 2.02001640e-01 -4.39689475e+00 5.37608375e+01 -5.13118420e+00 + 0.00000000e+00 0.00000000e+00 -1.72628477e-01 0.00000000e+00 0.00000000e+00 + -2.64663813e+01 0.00000000e+00 0.00000000e+00 -3.09958242e+00 1.15190294e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.01355992e+01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.02333132e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -6.53759690e-02 -2.02001640e-01 4.39689475e+00 -5.37608375e+01 + 5.13118420e+00 0.00000000e+00 0.00000000e+00 -1.72628477e-01 0.00000000e+00 + 0.00000000e+00 -2.64663813e+01 0.00000000e+00 0.00000000e+00 -3.09958242e+00 + -1.15190294e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -1.01355992e+01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -2.02333132e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -1.86171311e-02 4.47026558e+00 -4.13397344e+00 + 0.00000000e+00 0.00000000e+00 3.80872746e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 5.13471674e-03 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 8.71423470e-01 0.00000000e+00 0.00000000e+00 -1.04195599e+00 0.00000000e+00 + 0.00000000e+00 4.37162896e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -1.72001228e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 1.63188645e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 7.16776290e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 7.73602856e-08 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 8.71423470e-01 0.00000000e+00 0.00000000e+00 -1.04195599e+00 + 0.00000000e+00 0.00000000e+00 4.37162896e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 1.72001228e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -1.63188645e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 7.16776290e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 7.73602856e-08 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 5.13471674e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 5.13471674e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 8.71423470e-01 0.00000000e+00 + 0.00000000e+00 -1.04195599e+00 0.00000000e+00 0.00000000e+00 4.37162896e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.72001228e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.63188645e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 7.16776290e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -7.73602861e-08 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 8.71423470e-01 + 0.00000000e+00 0.00000000e+00 -1.04195599e+00 0.00000000e+00 0.00000000e+00 + 4.37162896e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.72001228e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.63188645e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 7.16776290e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -7.73602861e-08 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 5.13471674e-03 0.00000000e+00 + 0.00000000e+00 1.09971146e-01 -2.98636395e+00 2.94593730e+00 0.00000000e+00 + 0.00000000e+00 4.63726355e-01 6.23175809e-02 1.95099824e-01 -2.01532406e+00 + 3.55707539e+00 -2.94021216e+00 0.00000000e+00 0.00000000e+00 -5.60117410e-01 + 0.00000000e+00 0.00000000e+00 2.33824603e+00 0.00000000e+00 0.00000000e+00 + -2.27586851e+00 6.99704035e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 1.20500515e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 9.87099523e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.23175809e-02 1.95099824e-01 + -2.01532406e+00 3.55707539e+00 -2.94021216e+00 0.00000000e+00 0.00000000e+00 + 5.60117410e-01 0.00000000e+00 0.00000000e+00 -2.33824603e+00 0.00000000e+00 + 0.00000000e+00 2.27586851e+00 6.99704035e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.20500515e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -9.87099523e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.09971146e-01 + -2.98636395e+00 2.94593730e+00 0.00000000e+00 0.00000000e+00 -4.63726355e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.38808201e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 8.43833893e-01 0.00000000e+00 0.00000000e+00 + -2.39106528e+00 0.00000000e+00 0.00000000e+00 7.14777609e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 5.60164578e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 7.82367609e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.05412702e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 8.81950299e-08 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -8.43833893e-01 0.00000000e+00 + 0.00000000e+00 2.39106528e+00 0.00000000e+00 0.00000000e+00 -7.14777609e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 5.60164578e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 7.82367609e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.05412702e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -8.81950299e-08 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.38808201e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 2.38808201e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 8.43833893e-01 0.00000000e+00 0.00000000e+00 -2.39106528e+00 0.00000000e+00 + 0.00000000e+00 7.14777609e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 5.60164578e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 7.82367609e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -2.05412702e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 -8.81950324e-08 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -8.43833893e-01 0.00000000e+00 0.00000000e+00 2.39106528e+00 + 0.00000000e+00 0.00000000e+00 -7.14777609e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 5.60164578e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 7.82367609e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 2.05412702e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 8.81950324e-08 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -2.38808201e-01 0.00000000e+00 0.00000000e+00 1.99595071e-01 -3.11641817e+00 + -2.38211054e-01 0.00000000e+00 0.00000000e+00 4.06756370e-01 -6.07912472e-02 + -1.57396713e-01 5.14738953e-01 4.33538885e+00 -5.43720851e+00 0.00000000e+00 + 0.00000000e+00 -5.97155500e-01 0.00000000e+00 0.00000000e+00 -1.08030563e-01 + 0.00000000e+00 0.00000000e+00 2.79630840e+00 -1.57579046e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.06331489e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.72290936e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 6.07912472e-02 1.57396713e-01 -5.14738953e-01 -4.33538885e+00 5.43720851e+00 + 0.00000000e+00 0.00000000e+00 -5.97155500e-01 0.00000000e+00 0.00000000e+00 + -1.08030563e-01 0.00000000e+00 0.00000000e+00 2.79630840e+00 1.57579046e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.06331489e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.72290936e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -1.99595071e-01 3.11641817e+00 2.38211054e-01 0.00000000e+00 + 0.00000000e+00 4.06756370e-01 5.26582365e-01 -1.51594503e+00 -8.28849268e-01 + 0.00000000e+00 0.00000000e+00 4.16190826e-02 3.88416854e-02 1.14345150e-01 + -1.15679770e+00 1.49633308e+00 8.94376716e-01 0.00000000e+00 0.00000000e+00 + 4.22505452e-01 0.00000000e+00 0.00000000e+00 -4.10742140e-01 0.00000000e+00 + 0.00000000e+00 1.61875347e+00 5.64220567e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 6.17887738e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 2.61170348e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 3.88416854e-02 + 1.14345150e-01 -1.15679770e+00 1.49633308e+00 8.94376716e-01 0.00000000e+00 + 0.00000000e+00 -4.22505452e-01 0.00000000e+00 0.00000000e+00 4.10742140e-01 + 0.00000000e+00 0.00000000e+00 -1.61875347e+00 5.64220567e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.17887738e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.61170348e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 5.26582365e-01 -1.51594503e+00 -8.28849268e-01 0.00000000e+00 0.00000000e+00 + -4.16190826e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 8.61592050e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -6.10875306e-02 0.00000000e+00 + 0.00000000e+00 -4.39671842e-01 0.00000000e+00 0.00000000e+00 8.58481468e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -6.78762929e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -5.24079714e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 4.42474255e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -3.26888355e-08 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -6.10875306e-02 + 0.00000000e+00 0.00000000e+00 -4.39671842e-01 0.00000000e+00 0.00000000e+00 + 8.58481468e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.78762929e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 5.24079714e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 4.42474255e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -3.26888355e-08 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 8.61592050e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 8.61592050e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -6.10875306e-02 0.00000000e+00 0.00000000e+00 -4.39671841e-01 + 0.00000000e+00 0.00000000e+00 8.58481468e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -6.78762929e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -5.24079714e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 4.42474255e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 3.26888333e-08 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -6.10875306e-02 0.00000000e+00 0.00000000e+00 + -4.39671841e-01 0.00000000e+00 0.00000000e+00 8.58481468e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 6.78762929e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 5.24079714e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 4.42474255e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 3.26888333e-08 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 8.61592050e-01 0.00000000e+00 0.00000000e+00 2.18195638e-01 + -2.52831676e+00 -9.86072115e-01 0.00000000e+00 0.00000000e+00 -2.74899823e-01 + -4.22358341e-02 -1.33317662e-01 -2.60032038e+00 6.78694448e+01 -2.04391538e+01 + 0.00000000e+00 0.00000000e+00 4.96923361e-01 0.00000000e+00 0.00000000e+00 + -4.10098754e+01 0.00000000e+00 0.00000000e+00 7.56737220e+00 2.58623310e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.28185149e+01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -5.11746493e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 4.22358341e-02 1.33317662e-01 2.60032038e+00 -6.78694448e+01 + 2.04391538e+01 0.00000000e+00 0.00000000e+00 4.96923361e-01 0.00000000e+00 + 0.00000000e+00 -4.10098754e+01 0.00000000e+00 0.00000000e+00 7.56737220e+00 + -2.58623310e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -1.28185149e+01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -5.11746493e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.18195638e-01 2.52831676e+00 9.86072115e-01 + 0.00000000e+00 0.00000000e+00 -2.74899823e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 2.65325184e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.19922609e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -5.55089437e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.65325184e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.19922609e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 5.55089437e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 2.65324939e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -2.19922519e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -5.55089515e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 2.65324939e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -2.19922519e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 5.55089515e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.06754401e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.18189199e-01 0.00000000e+00 0.00000000e+00 + 2.36023516e+00 0.00000000e+00 0.00000000e+00 2.64800939e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 4.84294720e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.67388224e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 8.79717591e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 1.94207374e-07 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.18189199e-01 0.00000000e+00 + 0.00000000e+00 -2.36023516e+00 0.00000000e+00 0.00000000e+00 -2.64800939e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 4.84294720e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.67388224e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -8.79717591e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -1.94207374e-07 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -1.06754401e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.06754401e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.18189199e-01 0.00000000e+00 0.00000000e+00 + 2.36023516e+00 0.00000000e+00 0.00000000e+00 2.64800939e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 4.84294720e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.67388224e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 8.79717591e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -1.94207379e-07 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.18189199e-01 0.00000000e+00 + 0.00000000e+00 -2.36023516e+00 0.00000000e+00 0.00000000e+00 -2.64800939e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 4.84294720e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.67388224e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -8.79717591e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.94207379e-07 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -1.06754401e+00 0.00000000e+00 4.16198421e-01 + -2.79669035e+00 1.08704440e+00 0.00000000e+00 0.00000000e+00 1.27003461e+00 + -3.21386653e-02 -1.39363315e-01 9.22963250e-01 1.12237510e+00 -7.14601835e-01 + 0.00000000e+00 0.00000000e+00 -6.56904366e-02 0.00000000e+00 0.00000000e+00 + 1.92624815e+00 0.00000000e+00 0.00000000e+00 -5.36589372e-01 -4.16362460e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 3.68560616e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.92842812e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -3.21386653e-02 -1.39363315e-01 9.22963250e-01 1.12237510e+00 + -7.14601835e-01 0.00000000e+00 0.00000000e+00 6.56904366e-02 0.00000000e+00 + 0.00000000e+00 -1.92624815e+00 0.00000000e+00 0.00000000e+00 5.36589372e-01 + -4.16362460e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 3.68560616e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -2.92842812e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 4.16198421e-01 -2.79669035e+00 1.08704440e+00 + 0.00000000e+00 0.00000000e+00 -1.27003461e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -9.27791217e-08 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -1.61153880e-07 0.00000000e+00 0.00000000e+00 2.91942919e-07 0.00000000e+00 + 0.00000000e+00 -8.96744197e-08 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -5.73324646e-07 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 4.23967737e-07 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -2.04711282e-08 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.61459444e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -1.61153880e-07 0.00000000e+00 0.00000000e+00 2.91942919e-07 + 0.00000000e+00 0.00000000e+00 -8.96744197e-08 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 5.73324646e-07 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -4.23967737e-07 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -2.04711282e-08 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 6.61459444e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -9.27791217e-08 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 9.27791127e-08 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.61153876e-07 0.00000000e+00 + 0.00000000e+00 -2.91942908e-07 0.00000000e+00 0.00000000e+00 8.96744173e-08 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 5.73324618e-07 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -4.23967715e-07 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.04711350e-08 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 6.61459444e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.61153876e-07 + 0.00000000e+00 0.00000000e+00 -2.91942908e-07 0.00000000e+00 0.00000000e+00 + 8.96744173e-08 0.00000000e+00 0.00000000e+00 0.00000000e+00 -5.73324618e-07 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 4.23967715e-07 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.04711350e-08 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.61459444e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 9.27791127e-08 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.89170088e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.41657911e-01 0.00000000e+00 0.00000000e+00 + -3.32298071e-01 0.00000000e+00 0.00000000e+00 7.14954733e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 7.12524427e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -6.28916812e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -1.52945537e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -4.67395505e-07 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.41657911e-01 0.00000000e+00 + 0.00000000e+00 -3.32298071e-01 0.00000000e+00 0.00000000e+00 7.14954733e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -7.12524427e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.28916812e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.52945537e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -4.67395505e-07 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 2.89170088e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.89170088e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.41657911e-01 0.00000000e+00 0.00000000e+00 + -3.32298071e-01 0.00000000e+00 0.00000000e+00 7.14954733e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 7.12524427e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -6.28916812e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -1.52945537e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 4.67395531e-07 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.41657911e-01 0.00000000e+00 + 0.00000000e+00 -3.32298071e-01 0.00000000e+00 0.00000000e+00 7.14954733e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -7.12524427e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.28916812e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.52945537e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 4.67395531e-07 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 2.89170088e-01 0.00000000e+00 9.12899180e-01 + -5.80912571e-01 -4.58985819e+00 0.00000000e+00 0.00000000e+00 7.51214054e-01 + 2.21345779e-02 5.04559201e-02 1.69499824e+00 -4.43921219e+01 -1.97885471e+01 + 0.00000000e+00 0.00000000e+00 4.18128605e-01 0.00000000e+00 0.00000000e+00 + 2.69695602e+01 0.00000000e+00 0.00000000e+00 1.30707335e+01 -6.26673640e-03 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -8.91981068e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.57508142e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -2.21345779e-02 -5.04559201e-02 -1.69499824e+00 4.43921219e+01 + 1.97885471e+01 0.00000000e+00 0.00000000e+00 4.18128605e-01 0.00000000e+00 + 0.00000000e+00 2.69695602e+01 0.00000000e+00 0.00000000e+00 1.30707335e+01 + 6.26673640e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 8.91981068e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 6.57508142e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -9.12899180e-01 5.80912571e-01 4.58985819e+00 + 0.00000000e+00 0.00000000e+00 7.51214054e-01 6.22882060e-01 1.98910022e+00 + -1.73343407e+00 0.00000000e+00 0.00000000e+00 -2.99820068e-01 -2.50155385e-02 + -1.15233572e-01 2.86408739e+00 -2.09095519e+00 1.03695639e+00 0.00000000e+00 + 0.00000000e+00 -4.54943387e-01 0.00000000e+00 0.00000000e+00 -4.82990864e-01 + 0.00000000e+00 0.00000000e+00 1.95700344e+00 6.07472599e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -3.05572158e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 8.56257007e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -2.50155385e-02 -1.15233572e-01 2.86408739e+00 -2.09095519e+00 1.03695639e+00 + 0.00000000e+00 0.00000000e+00 4.54943387e-01 0.00000000e+00 0.00000000e+00 + 4.82990864e-01 0.00000000e+00 0.00000000e+00 -1.95700344e+00 6.07472599e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -3.05572158e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -8.56257007e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 6.22882060e-01 1.98910022e+00 -1.73343407e+00 0.00000000e+00 + 0.00000000e+00 2.99820068e-01 4.23006376e-01 4.83040745e+00 -2.31671555e+00 + 0.00000000e+00 0.00000000e+00 -1.45927473e+00 3.03486183e-02 8.02425063e-02 + 1.46003293e+00 -3.41039576e+01 1.40097069e+00 0.00000000e+00 0.00000000e+00 + -4.48868439e-01 0.00000000e+00 0.00000000e+00 1.55032280e+01 0.00000000e+00 + 0.00000000e+00 2.01871415e+00 1.63760275e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -7.73066000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 5.80874651e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -3.03486183e-02 + -8.02425063e-02 -1.46003293e+00 3.41039576e+01 -1.40097069e+00 0.00000000e+00 + 0.00000000e+00 -4.48868439e-01 0.00000000e+00 0.00000000e+00 1.55032280e+01 + 0.00000000e+00 0.00000000e+00 2.01871415e+00 -1.63760275e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 7.73066000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 5.80874651e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -4.23006376e-01 -4.83040745e+00 2.31671555e+00 0.00000000e+00 0.00000000e+00 + -1.45927473e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 6.70346618e-07 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -3.88106501e-07 0.00000000e+00 + 0.00000000e+00 -4.11802381e-06 0.00000000e+00 0.00000000e+00 -7.87853067e-07 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.15226815e-06 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 3.78385055e-06 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.42646935e-06 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 7.63729339e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 3.88106501e-07 + 0.00000000e+00 0.00000000e+00 4.11802381e-06 0.00000000e+00 0.00000000e+00 + 7.87853067e-07 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.15226815e-06 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 3.78385055e-06 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.42646935e-06 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -7.63729339e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -6.70346618e-07 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -6.70346608e-07 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 3.88106503e-07 0.00000000e+00 0.00000000e+00 4.11802380e-06 + 0.00000000e+00 0.00000000e+00 7.87853069e-07 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 1.15226815e-06 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -3.78385055e-06 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 2.42646934e-06 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 7.63729339e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -3.88106503e-07 0.00000000e+00 0.00000000e+00 + -4.11802380e-06 0.00000000e+00 0.00000000e+00 -7.87853069e-07 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.15226815e-06 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -3.78385055e-06 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.42646934e-06 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -7.63729339e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 6.70346608e-07 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 7.83018933e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -3.23716462e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 2.48562143e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 7.83018933e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -3.23716462e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.48562143e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 7.83018850e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -3.23716395e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 2.48562317e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 7.83018850e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -3.23716395e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.48562317e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 1.56207242e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -8.44405342e-02 0.00000000e+00 + 0.00000000e+00 -1.82586523e+00 0.00000000e+00 0.00000000e+00 -2.90776297e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -4.24677539e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.67188734e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -9.03258075e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 2.08837998e-06 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 8.44405342e-02 + 0.00000000e+00 0.00000000e+00 1.82586523e+00 0.00000000e+00 0.00000000e+00 + 2.90776297e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 -4.24677539e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.67188734e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 9.03258075e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.08837998e-06 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.56207242e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 1.56207242e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -8.44405342e-02 0.00000000e+00 + 0.00000000e+00 -1.82586523e+00 0.00000000e+00 0.00000000e+00 -2.90776297e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -4.24677539e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.67188734e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -9.03258075e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.08837999e-06 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 8.44405342e-02 + 0.00000000e+00 0.00000000e+00 1.82586523e+00 0.00000000e+00 0.00000000e+00 + 2.90776297e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 -4.24677539e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.67188734e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 9.03258075e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.08837999e-06 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.56207242e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 7.93999540e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -6.81023374e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 3.35496682e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -7.93999540e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.81023374e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 3.35496682e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 7.93999753e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -6.81023230e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 3.35496046e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -7.93999753e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.81023230e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 3.35496046e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -3.71399981e-12 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.04719149e-12 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 3.30259369e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 2.55870014e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -9.91348025e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 3.71399981e-12 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 2.04719149e-12 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -3.30259369e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.55870014e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -9.91348025e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 3.30258859e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 2.55870479e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -9.91348241e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -3.30258859e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.55870479e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -9.91348241e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 6.05121842e-01 2.63595340e+00 -1.28128989e+00 0.00000000e+00 + 0.00000000e+00 -1.32226856e+00 -3.41596282e-03 -2.83728320e-02 1.16650124e+00 + -2.75721693e+00 1.18778211e+00 0.00000000e+00 0.00000000e+00 -5.29136808e-01 + 0.00000000e+00 0.00000000e+00 -1.58576352e+00 0.00000000e+00 0.00000000e+00 + 9.70339870e-01 -7.01110185e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -1.34022891e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -2.76500853e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -3.41596282e-03 -2.83728320e-02 + 1.16650124e+00 -2.75721693e+00 1.18778211e+00 0.00000000e+00 0.00000000e+00 + 5.29136808e-01 0.00000000e+00 0.00000000e+00 1.58576352e+00 0.00000000e+00 + 0.00000000e+00 -9.70339870e-01 -7.01110185e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -1.34022891e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 2.76500853e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.05121842e-01 + 2.63595340e+00 -1.28128989e+00 0.00000000e+00 0.00000000e+00 1.32226856e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 4.85943393e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 3.34546233e-01 0.00000000e+00 0.00000000e+00 + -2.28561008e-01 0.00000000e+00 0.00000000e+00 8.11714993e-03 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -4.73941653e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 8.54275229e-02 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -8.42774165e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -9.58785782e-08 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 3.34546233e-01 0.00000000e+00 + 0.00000000e+00 -2.28561008e-01 0.00000000e+00 0.00000000e+00 8.11714993e-03 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 4.73941653e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -8.54275229e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -8.42774165e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -9.58785782e-08 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 4.85943393e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 4.85943393e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 3.34546233e-01 0.00000000e+00 0.00000000e+00 -2.28561008e-01 0.00000000e+00 + 0.00000000e+00 8.11714993e-03 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -4.73941653e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 8.54275229e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -8.42774165e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 9.58785785e-08 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 3.34546233e-01 0.00000000e+00 0.00000000e+00 -2.28561008e-01 + 0.00000000e+00 0.00000000e+00 8.11714993e-03 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 4.73941653e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -8.54275229e-02 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -8.42774165e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 9.58785785e-08 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 4.85943393e-01 0.00000000e+00 0.00000000e+00 4.36932328e-01 1.56051469e+00 + 5.90518968e-02 0.00000000e+00 0.00000000e+00 -1.03185008e+00 6.10596133e-02 + 1.27238373e-01 -3.55290753e-01 2.26339277e+00 4.65145560e+00 0.00000000e+00 + 0.00000000e+00 2.06587595e-01 0.00000000e+00 0.00000000e+00 -3.63889772e+00 + 0.00000000e+00 0.00000000e+00 -1.88071550e+00 -1.19271736e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 4.85382467e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -3.21810212e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -6.10596133e-02 -1.27238373e-01 3.55290753e-01 -2.26339277e+00 -4.65145560e+00 + 0.00000000e+00 0.00000000e+00 2.06587595e-01 0.00000000e+00 0.00000000e+00 + -3.63889772e+00 0.00000000e+00 0.00000000e+00 -1.88071550e+00 1.19271736e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -4.85382467e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -3.21810212e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -4.36932328e-01 -1.56051469e+00 -5.90518968e-02 0.00000000e+00 + 0.00000000e+00 -1.03185008e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 2.93224934e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.29545336e-01 + 0.00000000e+00 0.00000000e+00 -1.86610739e+00 0.00000000e+00 0.00000000e+00 + 2.28477912e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.07708463e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 8.86871128e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.30246730e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.21755263e-09 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 2.29545336e-01 0.00000000e+00 0.00000000e+00 1.86610739e+00 0.00000000e+00 + 0.00000000e+00 -2.28477912e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 1.07708463e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 8.86871128e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 1.30246730e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.21755263e-09 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -2.93224934e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.93224934e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.29545336e-01 0.00000000e+00 0.00000000e+00 + -1.86610739e+00 0.00000000e+00 0.00000000e+00 2.28477912e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.07708463e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 8.86871128e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -1.30246730e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 2.21755344e-09 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.29545336e-01 0.00000000e+00 + 0.00000000e+00 1.86610739e+00 0.00000000e+00 0.00000000e+00 -2.28477912e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.07708463e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 8.86871128e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.30246730e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.21755344e-09 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.93224934e-01 0.00000000e+00 0.00000000e+00 + 9.26668903e-01 -7.54389521e-02 -1.42299923e+00 0.00000000e+00 0.00000000e+00 + -4.85245723e-01 -3.20458639e-02 -1.46276995e-01 5.50877933e-01 2.48659376e+01 + -1.14110141e+01 0.00000000e+00 0.00000000e+00 -7.45910039e-01 0.00000000e+00 + 0.00000000e+00 -1.72621480e+01 0.00000000e+00 0.00000000e+00 5.28862461e+00 + 7.12385492e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 4.48525846e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -1.62292798e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 3.20458639e-02 1.46276995e-01 -5.50877933e-01 + -2.48659376e+01 1.14110141e+01 0.00000000e+00 0.00000000e+00 -7.45910039e-01 + 0.00000000e+00 0.00000000e+00 -1.72621480e+01 0.00000000e+00 0.00000000e+00 + 5.28862461e+00 -7.12385492e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -4.48525846e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 -1.62292798e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -9.26668903e-01 7.54389521e-02 + 1.42299923e+00 0.00000000e+00 0.00000000e+00 -4.85245723e-01 8.58275532e-01 + 2.54578222e-01 -1.18748381e+00 0.00000000e+00 0.00000000e+00 -6.48502920e-01 + 3.21398263e-02 1.52260928e-01 -3.28171920e+00 1.00195609e+00 1.25004635e+00 + 0.00000000e+00 0.00000000e+00 1.25674431e+00 0.00000000e+00 0.00000000e+00 + -2.84267370e+00 0.00000000e+00 0.00000000e+00 1.31909131e+00 -3.37045080e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.38127212e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.49082216e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 3.21398263e-02 1.52260928e-01 -3.28171920e+00 1.00195609e+00 + 1.25004635e+00 0.00000000e+00 0.00000000e+00 -1.25674431e+00 0.00000000e+00 + 0.00000000e+00 2.84267370e+00 0.00000000e+00 0.00000000e+00 -1.31909131e+00 + -3.37045080e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 1.38127212e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 1.49082216e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 8.58275532e-01 2.54578222e-01 -1.18748381e+00 + 0.00000000e+00 0.00000000e+00 6.48502920e-01 5.40938365e-02 -3.61059724e-01 + 1.18399779e-01 0.00000000e+00 0.00000000e+00 -1.11869601e-01 -9.82346711e-01 + 1.23404224e+00 -1.81673275e+00 1.24981646e+00 -2.19771870e-01 0.00000000e+00 + 0.00000000e+00 1.77102276e-01 0.00000000e+00 0.00000000e+00 -2.86256157e-01 + 0.00000000e+00 0.00000000e+00 -3.64286740e-03 -7.57059267e-02 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.30406623e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 -1.84686584e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -9.82346711e-01 1.23404224e+00 -1.81673275e+00 1.24981646e+00 -2.19771870e-01 + 0.00000000e+00 0.00000000e+00 -1.77102276e-01 0.00000000e+00 0.00000000e+00 + 2.86256157e-01 0.00000000e+00 0.00000000e+00 3.64286740e-03 -7.57059267e-02 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.30406623e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.84686584e-01 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 5.40938365e-02 -3.61059724e-01 1.18399779e-01 0.00000000e+00 + 0.00000000e+00 1.11869601e-01 1.39199435e-02 8.53571986e-01 4.43479289e-01 + 0.00000000e+00 0.00000000e+00 -1.98620260e-01 -9.90540975e-01 1.28828722e+00 + -7.85741692e-01 -1.04953849e+01 3.95420081e+00 0.00000000e+00 0.00000000e+00 + 1.33946752e-01 0.00000000e+00 0.00000000e+00 6.37665281e+00 0.00000000e+00 + 0.00000000e+00 -1.86959329e+00 -2.97273582e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 -2.30410042e+00 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 1.96149956e-01 0.00000000e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 9.90540975e-01 + -1.28828722e+00 7.85741692e-01 1.04953849e+01 -3.95420081e+00 0.00000000e+00 + 0.00000000e+00 1.33946752e-01 0.00000000e+00 0.00000000e+00 6.37665281e+00 + 0.00000000e+00 0.00000000e+00 -1.86959329e+00 2.97273582e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.30410042e+00 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.96149956e-01 0.00000000e+00 + 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 + -1.39199435e-02 -8.53571986e-01 -4.43479289e-01 0.00000000e+00 0.00000000e+00 + -1.98620260e-01 diff --git a/iodata/test/test_fchk.py b/iodata/test/test_fchk.py index c5f2dde6f..ca31071b7 100644 --- a/iodata/test/test_fchk.py +++ b/iodata/test/test_fchk.py @@ -209,6 +209,47 @@ def test_load_fchk_water_sto3g_hf_qchem(): assert_allclose(mol.one_rdms["scf"], compute_1rdm(mol)) +def test_load_fchk_psi4_hcch(): + # Test FCHK file generated by Psi4, in which some floating point numbers are + # not separated by whitespace, because their exponent has three digits. + mol = load_fchk_helper("psi4_hcch.fchk") + assert mol.title == "Generated by Psi4" + assert mol.run_type == "energy" + assert mol.lot == "rhf" + assert mol.obasis_name == "def2-tzvp" + assert_equal(mol.atnums, [1, 6, 6, 1]) + assert_equal(mol.atcorenums, [1.0, 6.0, 6.0, 1.0]) + # In the file, the x-components of the last two atoms are not separated + # from the preceding number by whitespace. + assert_allclose( + mol.atcoords, + [ + [-1.48851795e-117, 0.00000000e00, 3.13915557e00], + [5.68635506e-118, 0.00000000e00, 1.13086932e00], + [-3.46281773e-118, 0.00000000e00, -1.13086932e00], + [-1.15900985e-117, 0.00000000e00, -3.13915557e00], + ], + ) + assert_allclose(mol.energy, -7.736452114876435e01) + assert len(mol.obasis.shells) == 30 + assert mol.obasis.nbasis == 74 + assert_allclose(mol.obasis.shells[0].exponents, [34.061341, 5.1235746, 1.1646626]) + assert_equal(mol.mo.occs[:7], 2.0) + assert_equal(mol.mo.occs[7:], 0.0) + assert_allclose(mol.mo.energies[0], -1.01829056e01, atol=1.0e-7) + assert_allclose(mol.mo.energies[6], -3.00511787e-01, atol=1.0e-7) + assert_allclose(mol.mo.energies[7], 2.16228636e-02, atol=1.0e-7) + assert_allclose(mol.mo.energies[-1], 2.27095744e01, atol=1.0e-7) + assert_allclose(mol.mo.coeffs[0, 0], -6.13703434e-05, atol=1.0e-7) + assert_allclose(mol.mo.coeffs[-1, -1], -1.98620260e-01, atol=1.0e-7) + # Check molecular orbitals are orthonormal, which is only possible when the + # atomic coordinates and the basis set are loaded correctly. + olp = compute_overlap(mol.obasis, mol.atcoords) + check_orthonormal(mol.mo.coeffs, olp) + # The SCF density was stripped from the file to keep it below the size limit. + assert mol.one_rdms == {} + + def test_load_fchk_lih_321g_hf(): mol = load_fchk_helper("li_h_3-21G_hf_g09.fchk") assert len(mol.obasis.shells) == 5 diff --git a/tools/stripfchk.py b/tools/stripfchk.py new file mode 100755 index 000000000..5f2428c64 --- /dev/null +++ b/tools/stripfchk.py @@ -0,0 +1,467 @@ +#!/usr/bin/env python3 +# IODATA is an input and output module for quantum chemistry. +# Copyright (C) 2011-2019 The IODATA Development Team +# +# This file is part of IODATA. +# +# IODATA is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 3 +# of the License, or (at your option) any later version. +# +# IODATA is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see +# -- +"""Remove irrelevant fields from an FCHK file, to make it suitable as a test file. + +FCHK files written by quantum chemistry codes are much larger than what a unit test needs. +(Our pre-commit configuration rejects new files larger than 100 kB.) +This script removes complete fields and copies everything it keeps verbatim. +Nothing is parsed into numbers and written back out, +so the formatting quirks that are often the reason for adding a test file are preserved. + +The decision to keep or to drop a field is made as follows, in order of decreasing precedence: + +1. Fields whose label matches a ``--drop`` pattern are removed. + This is also useful to construct files for testing error handling. +2. Fields whose label matches a ``--keep`` pattern are retained. + This is the escape hatch for large fields that a test does need, + e.g. ``--keep 'Cartesian Force Constants'`` for the Hessian. +3. Fields without which ``iodata.formats.fchk.load_one`` cannot load the file, + listed in ``REQUIRED_LABELS`` below, are retained. + These set the lower bound on the size of the stripped file. +4. Fields with more than ``--max-values`` numbers are removed. + This gets rid of density matrices, Hessians and trajectories, which dominate the file size. +5. Everything else is retained, including fields that IOData never reads, + because dropping those saves little and makes the file harder to recognize. + +Rules 3 to 5 are applied to groups of linked fields, see ``LINKED_GROUPS`` below, +because some fields are only meaningful together, +e.g. the beta orbital energies without the beta MO coefficients. +The size in rule 4 is the total of such a group, +and a ``--keep`` pattern matching one field of a group also retains its companions. + +Without an output file, only the inventory of the input file is printed, +which is the easiest way to decide which ``--keep`` patterns you need. +When writing a file, the dropped fields that IOData would have read are listed as well, +i.e. the data your test can no longer rely on. +The labels IOData reads are taken from the source code of ``iodata/formats/fchk.py``, +so they cannot go stale. +""" + +import argparse +import ast +import re +import sys +from fnmatch import fnmatch +from pathlib import Path + +import attrs + +# Labels that iodata.formats.fchk.load_one accesses unconditionally. +# Without these, the stripped file cannot be loaded at all. +REQUIRED_LABELS = [ + "Number of alpha electrons", + "Number of beta electrons", + "Number of basis functions", + "Atomic numbers", + "Nuclear charges", + "Current cartesian coordinates", + "Shell types", + "Number of primitives per shell", + "Shell to atom map", + "Primitive exponents", + "Contraction coefficients", + "Alpha Orbital Energies", + "Alpha MO coefficients", +] + +# Label patterns of fields that are only meaningful as a whole and are kept or dropped together. +LINKED_GROUPS = [ + # Beta orbitals without alpha ones, or coefficients without energies, make no sense. + ( + "Alpha Orbital Energies", + "Alpha MO coefficients", + "Beta Orbital Energies", + "Beta MO coefficients", + ), + # The orbital basis set is defined by all of these fields together. + ( + "Shell types", + "Number of primitives per shell", + "Shell to atom map", + "Primitive exponents", + "Contraction coefficients", + "P(S=P) Contraction coefficients", + ), + # The connectivity is spread over four fields. + ("MxBond", "NBond", "IBond", "RBond"), + # A trajectory: all points and the field with the number of geometries per point. + ("IRC Number of geometries", "IRC point *"), + ("Optimization Number of geometries", "Optimization Reference Energy", "Opt point *"), +] + +# The column of the type character on a header line, as in iodata/formats/fchk.py. +TYPE_COL = 43 + +# Same regular expression as in iodata/formats/fchk.py, needed here to count the values of a real +# array, because they are not always separated by whitespace. +FLOAT_PATTERN = re.compile(r"[-+]?(?:\d+\.?\d*|\.\d+)(?:[EeDd][-+]?\d+)?") + +KEEP = "keep" +DROP = "drop" + + +@attrs.define +class Field: + """One field of an FCHK file, i.e. a header line and the data lines that follow.""" + + label: str = attrs.field() + """The label of the field, i.e. the start of the header line.""" + + ftype: str = attrs.field() + """The type character of the field: I, R, C, L or H.""" + + nvalue: int | None = attrs.field() + """The number of values of an array field, or None for a scalar field.""" + + lines: list[str] = attrs.field() + """The lines of the field, verbatim, including the header line.""" + + group: str = attrs.field(default="") + """The name of the group of linked fields this field belongs to.""" + + decision: str = attrs.field(default="") + """Whether the field is kept or dropped, i.e. KEEP or DROP.""" + + reason: str = attrs.field(default="") + """The rule behind the decision, shown in the inventory.""" + + explicit: bool = attrs.field(default=False) + """Whether the decision was made by a --keep or --drop pattern.""" + + known: bool = attrs.field(default=True) + """Whether IOData reads this field.""" + + @property + def nbyte(self) -> int: + """The number of bytes taken up by this field in the file.""" + return sum(len(line) for line in self.lines) + + +def main() -> int: + """Strip an FCHK file, print an inventory and return an exit code.""" + args = parse_args() + if args.output is not None and Path(args.output) == Path(args.input): + print("The output file must differ from the input file.", file=sys.stderr) + return 1 + + header, fields = parse_fchk(Path(args.input).read_text()) + mark_known(fields) + assign_groups(fields) + decide(fields, args.keep, args.drop, args.max_values) + print_inventory(args.input, header, fields) + + if args.output is None: + print("No output file given, so nothing was written.") + return 0 + write_fchk(args.output, header, [fld for fld in fields if fld.decision == KEEP]) + print(f"Wrote {args.output}") + print_losses(fields) + return 0 + + +def parse_args() -> argparse.Namespace: + """Parse command-line arguments.""" + parser = argparse.ArgumentParser( + prog="stripfchk", + description="Remove irrelevant fields from an FCHK file to shrink it for testing.", + epilog=( + "examples: " + "`stripfchk.py big.fchk` only prints the inventory; " + "`stripfchk.py big.fchk small.fchk -k 'Cartesian Force Constants'` keeps the Hessian; " + "`stripfchk.py big.fchk small.fchk -k 'Opt point*'` keeps the trajectory." + ), + ) + parser.add_argument("input", help="The FCHK file to strip.") + parser.add_argument( + "output", + nargs="?", + help="The stripped FCHK file. Without it, only the inventory is printed.", + ) + parser.add_argument( + "-k", + "--keep", + action="append", + default=[], + metavar="PATTERN", + help="Always keep fields whose label matches this wildcard pattern. Repeatable.", + ) + parser.add_argument( + "-d", + "--drop", + action="append", + default=[], + metavar="PATTERN", + help="Always drop fields whose label matches this wildcard pattern, even required " + "ones. Repeatable and takes precedence over --keep.", + ) + parser.add_argument( + "-m", + "--max-values", + type=int, + default=100, + help="Drop arrays with more than this many values, unless kept by another rule. " + "For linked fields, the total of the group is used. (default: %(default)s)", + ) + return parser.parse_args() + + +def parse_header(line: str) -> tuple[str, str, int | None] | None: + """Interpret a line as the header of a field. + + Parameters + ---------- + line + The line to interpret. + + Returns + ------- + A tuple with the label, the type character and the number of values, + or None when the line is not a field header. + The number of values is None for a scalar field. + + """ + label = line[:TYPE_COL].strip() + words = line[TYPE_COL:].split() + if not label or len(words) < 2 or words[0] not in ["I", "R", "C", "L", "H"]: + return None + if words[1] == "N=" and len(words) > 2: + try: + return label, words[0], int(words[2]) + except ValueError: + return None + return label, words[0], None + + +def parse_fchk(text: str) -> tuple[list[str], list[Field]]: + """Split the contents of an FCHK file into the two-line header and a list of fields. + + Parameters + ---------- + text + The complete contents of the FCHK file. + + Returns + ------- + header + The first two lines, with the title and the command, level of theory and basis. + fields + The fields, each holding its own lines verbatim. + + """ + lines = text.splitlines(keepends=True) + if len(lines) < 3: + raise ValueError("An FCHK file has two header lines followed by fields.") + + fields = [] + iline = 2 + while iline < len(lines): + if not lines[iline].strip(): + # Blank lines, e.g. at the end of the file, are not copied to the output. + iline += 1 + continue + parsed = parse_header(lines[iline]) + if parsed is None: + # Data lines are always preceded by their header, so this can only be junk. + raise ValueError(f"Line {iline + 1} is not a field header: {lines[iline].strip()}") + label, ftype, nvalue = parsed + begin = iline + iline += 1 + if nvalue is not None: + iline = skip_data(lines, iline, ftype, nvalue, label) + fields.append(Field(label, ftype, nvalue, lines[begin:iline])) + return lines[:2], fields + + +def skip_data(lines: list[str], iline: int, ftype: str, nvalue: int, label: str) -> int: + """Return the number of the line just after the data lines of an array field. + + Parameters + ---------- + lines + All lines of the FCHK file. + iline + The number of the first data line. + ftype + The type character of the field. + nvalue + The number of values in the array. + label + The label of the field, only used for error messages. + + """ + if ftype not in ["I", "R"]: + # The layout of character and logical arrays varies between programs, + # so their data lines are taken to run up to the next header line. + # This is unambiguous because a header line has its type character at a fixed column, + # where data lines only have digits, signs and separators. + while iline < len(lines) and parse_header(lines[iline]) is None: + iline += 1 + return iline + # Integers and floats are counted, which does not rely on the number of values per line. + # Floats are not always separated by whitespace, e.g. when the exponent has three digits, + # so they are counted with the same regular expression as the FCHK reader in IOData. + counter = 0 + while counter < nvalue: + if iline == len(lines): + raise ValueError(f"File ends in the middle of the field {label}.") + line = lines[iline] + counter += len(FLOAT_PATTERN.findall(line) if ftype == "R" else line.split()) + iline += 1 + if counter > nvalue: + raise ValueError(f"Found {counter} instead of {nvalue} values in the field {label}.") + return iline + + +def mark_known(fields: list[Field]): + """Mark the fields that IOData reads. + + The labels are taken from the calls to ``_load_fchk_low`` in the source code of the FCHK + format module, without importing it, so that this script cannot disagree with the reader. + When they cannot be found, all fields keep their default mark. + """ + path_py = Path(__file__).parent.parent / "iodata/formats/fchk.py" + patterns = [] + if path_py.is_file(): + for node in ast.walk(ast.parse(path_py.read_text())): + if isinstance(node, ast.Call) and getattr(node.func, "id", None) == "_load_fchk_low": + for arg in node.args[1:]: + if isinstance(arg, ast.List): + patterns.extend(el.value for el in arg.elts if isinstance(el, ast.Constant)) + if not patterns: + print(f"Found no labels in {path_py}, so all fields are treated as read by IOData.") + return + for fld in fields: + fld.known = any(fnmatch(fld.label, pattern) for pattern in patterns) + + +def assign_groups(fields: list[Field]): + """Assign each field to a group of linked fields, or to a group of its own.""" + for fld in fields: + fld.group = fld.label + for igroup, patterns in enumerate(LINKED_GROUPS): + if any(fnmatch(fld.label, pattern) for pattern in patterns): + fld.group = f"linked group {igroup}" + break + + +def decide(fields: list[Field], keep: list[str], drop: list[str], max_values: int): + """Decide for each field whether it is kept or dropped. + + Parameters + ---------- + fields + The fields of the FCHK file. Their decision and reason are assigned in place. + keep + Label patterns of fields to keep in any case. + drop + Label patterns of fields to drop in any case. + max_values + The maximum number of values in a group of fields that is kept by default. + + """ + # Explicit patterns are applied to individual fields and win over all other rules. + for fld in fields: + if any(fnmatch(fld.label, pattern) for pattern in drop): + fld.decision, fld.reason, fld.explicit = DROP, "matches --drop", True + elif any(fnmatch(fld.label, pattern) for pattern in keep): + fld.decision, fld.reason, fld.explicit = KEEP, "matches --keep", True + + # The other rules are applied to groups of linked fields. + groups = {} + for fld in fields: + groups.setdefault(fld.group, []).append(fld) + for group in groups.values(): + rest = [fld for fld in group if not fld.explicit] + if not rest: + continue + linked = len(group) > 1 + if any(fld.explicit and fld.decision == KEEP for fld in group): + set_decision(rest, KEEP, "linked to a field matching --keep") + elif any(fld.label in REQUIRED_LABELS for fld in group): + set_decision(rest, KEEP, "linked to a required field" if linked else "required") + else: + # Fields matching --drop are excluded from the size of the group. + nvalue = sum(fld.nvalue or 0 for fld in group if fld.decision != DROP) + what = "linked fields" if linked else "field" + if nvalue > max_values: + set_decision(rest, DROP, f"large {what} ({nvalue} values)") + elif nvalue > 0: + set_decision(rest, KEEP, f"small {what} ({nvalue} values)") + else: + set_decision(rest, KEEP, "scalars" if linked else "scalar") + + +def set_decision(fields: list[Field], decision: str, reason: str): + """Assign the same decision and reason to a list of fields.""" + for fld in fields: + fld.decision = decision + fld.reason = reason + + +def write_fchk(path: str, header: list[str], fields: list[Field]): + """Write the header lines and the lines of the given fields verbatim.""" + lines = header + [line for fld in fields for line in fld.lines] + if not lines[-1].endswith("\n"): + lines[-1] += "\n" + Path(path).write_text("".join(lines)) + + +def format_size(nbyte: int) -> str: + """Format a number of bytes for the inventory.""" + return f"{nbyte / 1024:.1f} kB" if nbyte >= 1024 else f"{nbyte} B" + + +def print_inventory(path: str, header: list[str], fields: list[Field]): + """Print a table with all fields, their size and what happens to them.""" + print(f"Inventory of {path}") + print(f"{'label':43s} {'type':4s} {'values':>9s} {'size':>9s} what reason") + print("-" * 100) + for fld in fields: + nvalue = "-" if fld.nvalue is None else str(fld.nvalue) + size = format_size(fld.nbyte) + reason = fld.reason if fld.known else f"{fld.reason}, ignored by IOData" + print( + f"{fld.label:43s} {fld.ftype:4s} {nvalue:>9s} {size:>9s} {fld.decision:4s} {reason}" + ) + print("-" * 100) + nbyte = sum(len(line) for line in header) + kept = [fld for fld in fields if fld.decision == KEEP] + nbyte_kept = nbyte + sum(fld.nbyte for fld in kept) + nbyte_all = nbyte + sum(fld.nbyte for fld in fields) + print( + f"Keeping {len(kept)} of {len(fields)} fields: " + f"{format_size(nbyte_kept)} of {format_size(nbyte_all)} " + f"({100 * nbyte_kept / nbyte_all:.0f}%)" + ) + + +def print_losses(fields: list[Field]): + """Print the dropped fields that IOData would have read.""" + lost = [fld.label for fld in fields if fld.decision == DROP and fld.known] + if not lost: + return + print("Dropped fields that IOData does read, i.e. data your test can no longer use:") + for label in lost: + print(f" {label}") + print("Add -k 'LABEL' for the ones you need and run again.") + + +if __name__ == "__main__": + sys.exit(main()) From 5c926269d5a511ee6c7cd18fbc07fa1708dd28a1 Mon Sep 17 00:00:00 2001 From: Toon Verstraelen Date: Sun, 6 Sep 2026 11:16:40 +0200 Subject: [PATCH 2/2] Fix another FCHK bug (found by copilot) and add unit test --- iodata/formats/fchk.py | 34 ++++++++++++++++++++++++---------- iodata/test/test_fchk.py | 16 ++++++++++++++++ 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/iodata/formats/fchk.py b/iodata/formats/fchk.py index dbbeeb1ab..1b690d65b 100644 --- a/iodata/formats/fchk.py +++ b/iodata/formats/fchk.py @@ -516,11 +516,8 @@ def _load_fchk_field(lit: LineIterator, label_patterns: list[str]) -> tuple[str, ): continue if len(words) == 2: - try: - return label, datatype(words[1]) - except ValueError as exc: - raise LoadError(f"Could not interpret as {datatype}: {words[1]}", lit) from exc - elif len(words) == 3: + return label, _convert_word(words[1], datatype, lit) + if len(words) == 3: if words[1] != "N=": raise LoadError("Expected N= not found.", lit) length = int(words[2]) @@ -539,15 +536,32 @@ def _load_fchk_field(lit: LineIterator, label_patterns: list[str]) -> tuple[str, raise LoadError(f"Expected floating point numbers: {line.strip()}", lit) else: words = line.split() - word = words.pop(0) - try: - value[counter] = datatype(word) - except (ValueError, OverflowError) as exc: - raise LoadError(f"Could not interpret as {datatype}: {word}", lit) from exc + value[counter] = _convert_word(words.pop(0), datatype, lit) counter += 1 return label, value +def _convert_word(word: str, datatype: type, lit: LineIterator) -> int | float: + """Convert a word from an FCHK file into an integer or a floating point number. + + Parameters + ---------- + word + The word to convert. + datatype + The type to convert to: int or float. + lit + The line iterator, only used for error reporting. + + """ + # Some programs write Fortran-style exponents, which float() does not accept. + clean = word.replace("D", "E").replace("d", "e") if datatype is float else word + try: + return datatype(clean) + except (ValueError, OverflowError) as exc: + raise LoadError(f"Could not interpret as {datatype}: {word}", lit) from exc + + def _load_connectivity(fchk: dict, natoms: int, lit: LineIterator) -> NDArray[int] | None: """Load connectivity (bond) information from FCHK data. diff --git a/iodata/test/test_fchk.py b/iodata/test/test_fchk.py index ca31071b7..a17eed3e1 100644 --- a/iodata/test/test_fchk.py +++ b/iodata/test/test_fchk.py @@ -19,6 +19,7 @@ """Test iodata.formats.fchk module.""" import os +import re from importlib.resources import as_file, files import numpy as np @@ -209,6 +210,21 @@ def test_load_fchk_water_sto3g_hf_qchem(): assert_allclose(mol.one_rdms["scf"], compute_1rdm(mol)) +def test_load_fchk_fortran_exponent(tmp_path): + # Some programs write floating point numbers with a Fortran-style D exponent, + # which is accepted by the FCHK reader and must give the same result as E. + with as_file(files("iodata.test.data").joinpath("h_sto3g.fchk")) as fn: + text = fn.read_text() + # Only exponents are rewritten, i.e. not the letters in the labels. + text_d = re.sub(r"(?<=\d)E(?=[-+]\d)", "D", text) + assert text_d != text + path_d = tmp_path / "h_sto3g_d.fchk" + path_d.write_text(text_d) + mol_d = load_one(path_d) + assert_allclose(mol_d.energy, -4.665818503844346e-01) + compare_mols(load_fchk_helper("h_sto3g.fchk"), mol_d) + + def test_load_fchk_psi4_hcch(): # Test FCHK file generated by Psi4, in which some floating point numbers are # not separated by whitespace, because their exponent has three digits.