Merge pull request #134 from gpetretto/develop

bader charges and updates for phonons
This commit is contained in:
gmatteo 2017-11-21 16:07:40 +01:00 committed by GitHub
commit b6597dabe2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 1007 additions and 106 deletions

View File

@ -78,6 +78,9 @@ install:
- cp abipy/data/managers/travis_manager.yml ${HOME}/.abinit/abipy/manager.yml
- ./dev_scripts/pyclean.py .
# Install bader (http://theory.cm.utexas.edu/henkelman/code/bader/) from matsci
- conda install -c matsci bader
before_script:
# This to run tests requiring a graphical user e.g. mayavi
# https://docs.travis-ci.com/user/gui-and-headless-browsers/#Using-xvfb-to-Run-Tests-That-Require-a-GUI

View File

@ -5,6 +5,7 @@ from __future__ import print_function, division, unicode_literals, absolute_impo
import numpy as np
import collections
import pymatgen.core.units as pmgu
import os
from collections import OrderedDict
from monty.collections import AttrDict
@ -14,6 +15,7 @@ from monty.termcolor import cprint
from monty.inspect import all_subclasses
from pymatgen.io.vasp.inputs import Poscar
from pymatgen.io.vasp.outputs import Chgcar
from pymatgen.core.units import bohr_to_angstrom
from abipy.core.structure import Structure
from abipy.core.mesh3d import Mesh3D
from abipy.core.func1d import Function1D
@ -105,7 +107,7 @@ class _Field(Has_Structure):
"""Perform consistency check and return datar values."""
if not isinstance(other, _Field):
try:
return float(other)
return self.__class__, float(other)
except:
raise TypeError('object of class %s is not an instance of _Field and cannot be converted to float' % other.__class__)
@ -113,47 +115,53 @@ class _Field(Has_Structure):
self.structure != other.structure, self.mesh != other.mesh]):
raise ValueError('Incompatible scalar fields')
return other.datar
new_cls = self.__class__ if isinstance(other, self.__class__) else _Field
return new_cls, other.datar
def __add__(self, other):
"""self + other"""
return _Field(nspinor=self.nspinor, nsppol=self.nsppol, nspden=self.nspden,
datar=self.datar + self._check_and_get_datar(other),
structure=self.structure, iorder="c")
new_cls, datar = self._check_and_get_datar(other)
return new_cls(nspinor=self.nspinor, nsppol=self.nsppol, nspden=self.nspden,
datar=self.datar + datar,
structure=self.structure, iorder="c")
def __sub__(self, other):
"""self - other"""
return _Field(nspinor=self.nspinor, nsppol=self.nsppol, nspden=self.nspden,
datar=self.datar - self._check_and_get_datar(other),
structure=self.structure, iorder="c")
new_cls, datar = self._check_and_get_datar(other)
return new_cls(nspinor=self.nspinor, nsppol=self.nsppol, nspden=self.nspden,
datar=self.datar - datar,
structure=self.structure, iorder="c")
def __mul__(self, other):
"""self * other"""
return _Field(nspinor=self.nspinor, nsppol=self.nsppol, nspden=self.nspden,
datar=self.datar * self._check_and_get_datar(other),
structure=self.structure, iorder="c")
new_cls, datar = self._check_and_get_datar(other)
return new_cls(nspinor=self.nspinor, nsppol=self.nsppol, nspden=self.nspden,
datar=self.datar * datar,
structure=self.structure, iorder="c")
__rmul__ = __mul__
def __truediv__(self, other):
"""self / other"""
return _Field(nspinor=self.nspinor, nsppol=self.nsppol, nspden=self.nspden,
datar=self.datar / self._check_and_get_datar(other),
structure=self.structure, iorder="c")
new_cls, datar = self._check_and_get_datar(other)
return new_cls(nspinor=self.nspinor, nsppol=self.nsppol, nspden=self.nspden,
datar=self.datar / datar,
structure=self.structure, iorder="c")
__div__ = __truediv__
def __neg__(self):
"""-self"""
return _Field(nspinor=self.nspinor, nsppol=self.nsppol, nspden=self.nspden,
datar=-self.datar,
structure=self.structure, iorder="c")
return self.__class__(nspinor=self.nspinor, nsppol=self.nsppol, nspden=self.nspden,
datar=-self.datar,
structure=self.structure, iorder="c")
def __abs__(self):
"""abs(self)"""
return _Field(nspinor=self.nspinor, nsppol=self.nsppol, nspden=self.nspden,
datar=np.abs(self.datar),
structure=self.structure, iorder="c")
return self.__class__(nspinor=self.nspinor, nsppol=self.nsppol, nspden=self.nspden,
datar=np.abs(self.datar),
structure=self.structure, iorder="c")
@property
def structure(self):
@ -514,6 +522,35 @@ class _DensityField(_Field):
"""Base class for density-like fields."""
def core_density_from_file(filepath):
"""
Parses a file and extracts two numpy array, containing radii and the core densities, respectively.
Can be used to provide the core densities to Density.ae_core_density_on_mesh
Supported file types: fc, rhoc
"""
ext = os.path.splitext(filepath)[1]
if ext == '.fc':
with open(filepath, 'r') as f:
lines = f.readlines()
r, rho = [], []
for l in lines[1:]:
if not l.strip():
continue
if l.startswith('<JSON>'):
break
l = l.split()
r.append(float(l[0]))
rho.append(float(l[1]))
return np.array(r) * bohr_to_angstrom, np.array(rho) / (4.0*np.pi) / (bohr_to_angstrom ** 3)
elif ext == '.rhoc':
rhoc = np.loadtxt(filepath)
return rhoc[:, 0] * bohr_to_angstrom, rhoc[:,1] / (4.0*np.pi) / (bohr_to_angstrom ** 3)
else:
raise ValueError('Exension not supported: {}'.format(ext))
class Density(_DensityField):
"""
Electronic density.
@ -526,39 +563,64 @@ class Density(_DensityField):
latex_label = "Density [$e/A^3$]"
@classmethod
def ae_core_density_on_mesh(cls, valence_density, structure, rhoc_files, maxr=2.0, nelec=None,
method='mesh3d_dist_gridpoints', small_dist_mesh=(8, 8, 8), small_dist_factor=1.5):
def ae_core_density_on_mesh(cls, valence_density, structure, rhoc, maxr=2.0, nelec=None, tol=0.01,
method='get_sites_in_sphere', small_dist_mesh=(8, 8, 8), small_dist_factor=1.5):
"""
Initialize the all electron core density of the structure from the pseudopotentials *rhoc* files
Note that these *rhoc* files contain one column with the radii in Bohrs and one column with the density
in #/Bohr^3 multiplied by a factor 4pi.
Initialize the all electron core density of the structure from the pseudopotentials *rhoc* files.
For points close to the atoms, the value at the grid point would be defined as the average on a finer grid
in the neghibourhood of the point.
Args:
valence_density: a Density object representing the valence charge density
structure: the structure for which the total core density will be calculated
rhoc: *rhoc* files for the elements in structure. Can be a list with len=len(structure) or a
dictionary {element: rhoc}. Distances should be in Angstrom and densities in e/A^3.
maxr: maximum radius for the distance between grid points and atoms.
nelec: if given a check will be perfomed to verify that the integrated density will be within 1% error
with respect to nelec. The total density will also be rescaled to fit exactly the given number.
tol: tolerance above which the system will raise an exception if the integrated density doesn't sum up
to the value specified in nelec. Default 0.01 (1% error).
method: different methods to perform the calculation
get_sites_in_sphere: based on Structure.get_sites_in_sphere.
mesh3d_dist_gridpoints: based on Mesh3D.dist_gridpoints_in_spheres. Generally faster than
get_sites_in_sphere, but tests can be made for specific cases.
get_sites_in_sphere_legacy: as get_sites_in_sphere, but part of the procedure is not vectorized
mesh3d_dist_gridpoints_legacy: as mesh3d_dist_gridpoints, but part of the procedure is not vectorized
small_dist_mesh: defines the finer mesh.
small_dist_factor: defines the maximum distance for which a point should be considered close enough to
switch to the finer grid method. Note that this is a factor, the distance is defined with respect
to the size of the cell.
"""
rhoc_atom_splines = [None]*len(structure)
if isinstance(rhoc_files, (list, tuple)):
if len(structure) != len(rhoc_files):
raise ValueError('Number of rhoc_files should be equal to the number of sites in the structure')
for ifname, fname in rhoc_files:
rad_rho = np.fromfile(fname, sep=' ')
rad_rho = rad_rho.reshape((len(rad_rho)/2, 2))
radii = rad_rho[:, 0] * pmgu.bohr_to_angstrom
rho = rad_rho[:, 1] / (4.0*np.pi) / (pmgu.bohr_to_angstrom ** 3)
func1d = Function1D(radii, rho)
rhoc_atom_splines[ifname] = func1d.spline
elif isinstance(rhoc_files, collections.Mapping):
if isinstance(rhoc, (list, tuple)):
if len(structure) != len(rhoc):
raise ValueError('Number of rhoc files should be equal to the number of sites in the structure')
elif isinstance(rhoc, collections.Mapping):
atoms_symbols = [elmt.symbol for elmt in structure.composition]
if not np.all([atom in rhoc_files for atom in atoms_symbols]):
raise ValueError('The rhoc_files should be provided for all the atoms in the structure')
splines = {}
for symbol, fname in rhoc_files.items():
rad_rho = np.fromfile(fname, sep=' ')
rad_rho = rad_rho.reshape((len(rad_rho)/2, 2))
radii = rad_rho[:, 0] * pmgu.bohr_to_angstrom
rho = rad_rho[:, 1] / (4.0*np.pi) / (pmgu.bohr_to_angstrom ** 3)
func1d = Function1D(radii, rho)
splines[symbol] = func1d.spline
for isite, site in enumerate(structure):
rhoc_atom_splines[isite] = splines[site.specie.symbol]
if not np.all([atom in rhoc for atom in atoms_symbols]):
raise ValueError('The rhoc files should be provided for all the atoms in the structure')
rhoc = [rhoc[site.specie.symbol] for site in structure]
else:
raise ValueError('Unsuported format for rhoc')
for ir, r in enumerate(rhoc):
func1d = Function1D(r[0], r[1])
rhoc_atom_splines[ir] = func1d.spline
# if maxr is negative find the minimum radius so that for all elements the density is zero.
if maxr < 0:
abs_max = abs(maxr)
for r in rhoc:
try:
ind = np.min(np.where(r[1]==0))
except:
ind = -1
if r[0][ind] > maxr:
maxr = r[0][ind]
if maxr > abs_max:
maxr = abs_max
break
core_den = np.zeros_like(valence_density.datar)
dvx = valence_density.mesh.dvx
@ -570,7 +632,9 @@ class Density(_DensityField):
np.linalg.norm(dvx-dvy-dvz)])
smallradius = small_dist_factor*maxdiag
if method == 'get_sites_in_sphere':
# The vectorized methods are faster. Keep the older methods for cross checks of the implementation for the
# time being
if method == 'get_sites_in_sphere_legacy':
for ix in range(valence_density.mesh.nx):
for iy in range(valence_density.mesh.ny):
for iz in range(valence_density.mesh.nz):
@ -598,7 +662,7 @@ class Density(_DensityField):
total /= (nnx*nny*nnz)
core_den[0, ix, iy, iz] += total
elif method == 'mesh3d_dist_gridpoints':
elif method == 'mesh3d_dist_gridpoints_legacy':
site_coords = [site.coords for site in structure]
dist_gridpoints_sites = valence_density.mesh.dist_gridpoints_in_spheres(points=site_coords, radius=maxr)
for isite, dist_gridpoints_site in enumerate(dist_gridpoints_sites):
@ -623,17 +687,68 @@ class Density(_DensityField):
total += rhoc_atom_splines[isite](dist2)
total /= (nnx*nny*nnz)
core_den[0, igp_uc[0], igp_uc[1], igp_uc[2]] += total
elif method == 'mesh3d_dist_gridpoints':
import time
site_coords = [site.coords for site in structure]
start = time.time()
dist_gridpoints_sites = valence_density.mesh.dist_gridpoints_in_spheres(points=site_coords, radius=maxr)
nnx, nny, nnz = small_dist_mesh
meshgrid = np.meshgrid(np.linspace(-0.5, 0.5, nnx, endpoint=False)+0.5/nnx,
np.linspace(-0.5, 0.5, nny, endpoint=False) + 0.5/nny,
np.linspace(-0.5, 0.5, nnz, endpoint=False) + 0.5/nnz)
coords_grid = np.outer(meshgrid[0], dvx) + np.outer(meshgrid[1], dvy) + np.outer(meshgrid[2], dvz)
for isite, dist_gridpoints_site in enumerate(dist_gridpoints_sites):
for igp_uc, dist, igp in dist_gridpoints_site:
if dist > smallradius:
core_den[0, igp_uc[0], igp_uc[1], igp_uc[2]] += rhoc_atom_splines[isite](dist)
# For small distances, integrate over the small volume dv around the point as the core density
# is extremely high close to the atom
else:
total = 0.0
rpoint = valence_density.mesh.rpoint(ix=igp[0], iy=igp[1], iz=igp[2])
grid_loc = rpoint + coords_grid
distances = np.linalg.norm(grid_loc-site_coords[isite], axis=1)
total = np.sum(rhoc_atom_splines[isite](distances))
total /= (nnx*nny*nnz)
core_den[0, igp_uc[0], igp_uc[1], igp_uc[2]] += total
elif method == 'get_sites_in_sphere':
nnx, nny, nnz = small_dist_mesh
meshgrid = np.meshgrid(np.linspace(-0.5, 0.5, nnx, endpoint=False) + 0.5 / nnx,
np.linspace(-0.5, 0.5, nny, endpoint=False) + 0.5 / nny,
np.linspace(-0.5, 0.5, nnz, endpoint=False) + 0.5 / nnz)
coords_grid = np.outer(meshgrid[0], dvx) + np.outer(meshgrid[1], dvy) + np.outer(meshgrid[2], dvz)
for ix in range(valence_density.mesh.nx):
for iy in range(valence_density.mesh.ny):
for iz in range(valence_density.mesh.nz):
rpoint = valence_density.mesh.rpoint(ix=ix, iy=iy, iz=iz)
sites = structure.get_sites_in_sphere(pt=rpoint, r=maxr, include_index=True)
for site, dist, site_index in sites:
if dist > smallradius:
core_den[0, ix, iy, iz] += rhoc_atom_splines[site_index](dist)
# For small distances, integrate over the small volume dv around the point as the core
# density is extremely high close to the atom
else:
total = 0.0
grid_loc = rpoint + coords_grid
distances = np.linalg.norm(grid_loc - site.coords, axis=1)
total = np.sum(rhoc_atom_splines[site_index](distances))
total /= (nnx * nny * nnz)
core_den[0, ix, iy, iz] += total
else:
raise ValueError('Method "{}" is not allowed'.format(method))
if nelec is not None:
sum_elec = np.sum(core_den) * valence_density.mesh.dv
if np.abs(sum_elec-nelec) / nelec > 0.01:
diff = np.abs(sum_elec-nelec) / nelec
if diff > tol:
raise ValueError('Summed electrons is different from the actual number of electrons by '
'more than 1% ...')
'more than {:.2f}% : {:.2f}%'.format(tol*100, diff*100))
core_den = core_den / sum_elec * nelec
return cls(nspinor=1, nsppol=1, nspden=1, datar=core_den, structure=structure, iorder='c')
return cls(nspinor=valence_density.nspinor, nsppol=valence_density.nsppol, nspden=valence_density.nspden,
datar=core_den, structure=structure, iorder='c')
def get_nelect(self, spin=None):
"""

View File

@ -334,8 +334,13 @@ class Mesh3D(object):
nx, ny, nz = self.nx, self.ny, self.nz
rpoints = np.empty((self.size, 3))
for ifft, p1_fft in enumerate(iproduct(range(nx), range(ny), range(nz))):
rpoints[ifft,:] = p1_fft[0]/nx, p1_fft[1]/ny, p1_fft[2]/nz
grid_points = np.meshgrid(np.linspace(0, 1, nx, endpoint=False),
np.linspace(0, 1, ny, endpoint=False),
np.linspace(0, 1, nz, endpoint=False))
rpoints[:, 0] = grid_points[0].ravel()
rpoints[:, 1] = grid_points[1].ravel()
rpoints[:, 2] = grid_points[2].ravel()
return rpoints

View File

@ -3,11 +3,13 @@
from __future__ import print_function, division, absolute_import, unicode_literals
import numpy as np
import os
import pymatgen.core.units as pmgu
import abipy.data as abidata
from pymatgen.core.units import bohr_to_angstrom
from abipy.core.fields import _Field, FieldReader, Density, VxcPotential, VhartreePotential, VhxcPotential
from abipy.core.fields import core_density_from_file
from abipy.core.testing import AbipyTest
from abipy.iotools import *
@ -160,9 +162,18 @@ class TestScalarField(AbipyTest):
assert total_den.structure == si_den.structure
assert abs(total_den.get_nelect().sum() - ne) < 1e-3
# TODO@DW
#den.ae_core_density_on_mesh(cls, valence_density, structure, rhoc_files, maxr=2.0, nelec=None,
# method='mesh3d_dist_gridpoints', small_dist_mesh=(8, 8, 8), small_dist_factor=1.5):
# Test creation of AE core density. Use low parameters to reduce time
rhoc = {"Si": core_density_from_file(os.path.join(abidata.pseudo_dir, "Si.fc"))}
core_den_1 = Density.ae_core_density_on_mesh(si_den, si_den.structure, rhoc, maxr=1.5,
method='get_sites_in_sphere', small_dist_mesh=(6, 6, 6))
core_den_2 = Density.ae_core_density_on_mesh(si_den, si_den.structure, rhoc, maxr=1.5,
method='mesh3d_dist_gridpoints', small_dist_mesh=(6, 6, 6))
self.assertAlmostEquals(np.sum(core_den_1.datar) * si_den.mesh.dv, 20, delta=0.5)
self.assertArrayAlmostEqual(core_den_1.datar, core_den_2.datar)
with self.assertRaises(ValueError):
Density.ae_core_density_on_mesh(si_den, si_den.structure, rhoc, maxr=1, nelec=20, tol=0.001,
method='get_sites_in_sphere', small_dist_mesh=(2,2,2))
def test_ni_density(self):
"""Testing density object (spin polarized, collinear)."""

616
abipy/data/pseudos/Si.fc Normal file
View File

@ -0,0 +1,616 @@
600 0.0 Si 14 4.0 # nr, dummy, symbol, Z, Z_val
0.00000000000000E+00 2.29563022534430E+04 -6.78795840036687E+05 2.04107488126996E+07
1.00000000000000E-02 1.71014554017640E+04 -4.98311480124755E+05 1.56861231696867E+07
2.00000000000000E-02 1.28363618392200E+04 -3.65073376642952E+05 1.09614975266739E+07
3.00000000000000E-02 9.67495914158910E+03 -2.71653768576391E+05 7.72242408663830E+06
4.00000000000000E-02 7.31179187052770E+03 -2.03429055655752E+05 5.92251849748937E+06
5.00000000000000E-02 5.53985192117030E+03 -1.53203398626603E+05 4.12261290834045E+06
6.00000000000000E-02 4.20910261318680E+03 -1.15850077664466E+05 3.34805128408708E+06
7.00000000000000E-02 3.20875295348490E+03 -8.62423729448617E+04 2.57348965983371E+06
8.00000000000000E-02 2.45634849875380E+03 -6.43802844677915E+04 1.79892803558034E+06
9.00000000000000E-02 1.89025885425240E+03 -4.85462256214990E+04 1.36788373367815E+06
1.00000000000000E-01 1.46428812168040E+03 -3.70226097942284E+04 9.36839431775967E+05
1.10000000000000E-01 1.14373878423080E+03 -2.83909407894409E+04 7.89494369181538E+05
1.20000000000000E-01 9.02510031780020E+02 -2.12327224105976E+04 6.42149306587109E+05
1.30000000000000E-01 7.20946050665450E+02 -1.55479546576987E+04 4.94804243992680E+05
1.40000000000000E-01 5.84233593456330E+02 -1.13366375307440E+04 3.47459181398251E+05
1.50000000000000E-01 4.81204495759280E+02 -8.59877102973365E+03 2.00114118803823E+05
1.60000000000000E-01 4.03438190151320E+02 -6.75536388577950E+03 1.68567309987006E+05
1.70000000000000E-01 3.44587349238630E+02 -5.22742482999352E+03 1.37020501170190E+05
1.80000000000000E-01 2.99870068186250E+02 -4.01495386237570E+03 1.05473692353374E+05
1.90000000000000E-01 2.65686792722710E+02 -3.11795098292605E+03 7.39268835365572E+04
2.00000000000000E-01 2.39331055398590E+02 -2.43822503940319E+03 6.20183051680149E+04
2.10000000000000E-01 2.18771011638780E+02 -1.87758487956575E+03 5.01097267994727E+04
2.20000000000000E-01 2.02484498480520E+02 -1.43603050341374E+03 3.82011484309304E+04
2.30000000000000E-01 1.89334506946230E+02 -1.11356191094714E+03 2.62925700623881E+04
2.40000000000000E-01 1.78475079720730E+02 -9.10179102165973E+02 1.43839916938459E+04
2.50000000000000E-01 1.69280054332770E+02 -7.81142054344245E+02 1.14234178704998E+04
2.60000000000000E-01 1.61288963287010E+02 -6.81710744755977E+02 8.46284404715375E+03
2.70000000000000E-01 1.54165880886930E+02 -6.11885173401170E+02 5.50227022380769E+03
2.80000000000000E-01 1.47668115674900E+02 -5.71665340279823E+02 2.54169640046163E+03
2.90000000000000E-01 1.41622435116710E+02 -5.61051245391937E+02 -4.18877422884405E+02
3.00000000000000E-01 1.35907060385160E+02 -5.63858278375384E+02 -1.42529173804960E+02
3.10000000000000E-01 1.30438071519250E+02 -5.63901828868036E+02 1.33819075274484E+02
3.20000000000000E-01 1.25159172832970E+02 -5.61181896869894E+02 4.10167324353929E+02
3.30000000000000E-01 1.20034011842130E+02 -5.55698482380958E+02 6.86515573433374E+02
3.40000000000000E-01 1.15040435422940E+02 -5.47451585401227E+02 9.62863822512818E+02
3.50000000000000E-01 1.10166214040850E+02 -5.36441205930701E+02 1.23921207159226E+03
3.60000000000000E-01 1.05405877370840E+02 -5.22667343969381E+02 1.51556032067171E+03
3.70000000000000E-01 1.00758390131710E+02 -5.06129999517267E+02 1.79190856975115E+03
3.80000000000000E-01 9.62254618511000E+01 -4.86829172574358E+02 2.06825681883060E+03
3.90000000000000E-01 9.18103335542870E+01 -4.66399407046536E+02 2.01769628673383E+03
4.00000000000000E-01 8.75169218614880E+01 -4.46475246839682E+02 1.96713575463707E+03
4.10000000000000E-01 8.33492295574900E+01 -4.27056691953795E+02 1.91657522254030E+03
4.20000000000000E-01 7.93109535173360E+01 -4.08143742388876E+02 1.86601469044354E+03
4.30000000000000E-01 7.54052375518670E+01 -3.89736398144924E+02 1.81545415834678E+03
4.40000000000000E-01 7.16345304934420E+01 -3.71834659221940E+02 1.76489362625001E+03
4.50000000000000E-01 6.80005195979040E+01 -3.54438525619924E+02 1.71433309415325E+03
4.60000000000000E-01 6.45041167952790E+01 -3.37547997338875E+02 1.66377256205648E+03
4.70000000000000E-01 6.11454810142130E+01 -3.21163074378794E+02 1.61321202995972E+03
4.80000000000000E-01 5.79240641438730E+01 -3.05283756739681E+02 1.56265149786295E+03
4.90000000000000E-01 5.48386714965790E+01 -2.89910044421535E+02 1.51209096576619E+03
5.00000000000000E-01 5.18875301362740E+01 -2.75041937424357E+02 1.46153043366943E+03
5.10000000000000E-01 4.90683603281660E+01 -2.60679435748147E+02 1.41096990157266E+03
5.20000000000000E-01 4.63784467867080E+01 -2.46822539392904E+02 1.36040936947590E+03
5.30000000000000E-01 4.38147074620550E+01 -2.33471248358629E+02 1.30984883737913E+03
5.40000000000000E-01 4.13737583940980E+01 -2.20625562645321E+02 1.25928830528237E+03
5.50000000000000E-01 3.90519737444670E+01 -2.08285482252981E+02 1.20872777318560E+03
5.60000000000000E-01 3.68455405384140E+01 -1.96451007181609E+02 1.15816724108884E+03
5.70000000000000E-01 3.47505079510730E+01 -1.85122137431205E+02 1.10760670899208E+03
5.80000000000000E-01 3.27628311843460E+01 -1.74298873001768E+02 1.05704617689531E+03
5.90000000000000E-01 3.08784101246990E+01 -1.63981213893298E+02 1.00648564479855E+03
6.00000000000000E-01 2.90931230660420E+01 -1.54169160105797E+02 9.55925112701784E+02
6.10000000000000E-01 2.74028558384230E+01 -1.44862711639263E+02 9.05364580605020E+02
6.20000000000000E-01 2.58035267128540E+01 -1.36061868493696E+02 8.54804048508256E+02
6.30000000000000E-01 2.42911074627620E+01 -1.27766630669097E+02 8.04243516411492E+02
6.40000000000000E-01 2.28616409590850E+01 -1.19976998165466E+02 7.53682984314728E+02
6.50000000000000E-01 2.15112556632200E+01 -1.12692970982803E+02 7.03122452217963E+02
6.60000000000000E-01 2.02361773631060E+01 -1.05914549121107E+02 6.52561920121199E+02
6.70000000000000E-01 1.90327384752510E+01 -9.96417325803789E+01 6.02001388024435E+02
6.80000000000000E-01 1.78973852108130E+01 -9.38745213606184E+01 5.51440855927671E+02
6.90000000000000E-01 1.68266828786910E+01 -8.86129154618256E+01 5.00880323830907E+02
7.00000000000000E-01 1.58173195732790E+01 -8.38569148840003E+01 4.50319791734143E+02
7.10000000000000E-01 1.48661084711070E+01 -7.96065196271427E+01 3.99759259637379E+02
7.20000000000000E-01 1.39699889361940E+01 -7.58617296912527E+01 3.49198727540615E+02
7.30000000000000E-01 1.31260266124360E+01 -7.26225450763304E+01 2.98638195443850E+02
7.40000000000000E-01 1.23314126630980E+01 -6.98889657823757E+01 2.48077663347086E+02
7.50000000000000E-01 1.15834622970120E+01 -6.76609918093887E+01 1.97517131250322E+02
7.60000000000000E-01 1.08796127041740E+01 -6.56994839815199E+01 1.94784434323424E+02
7.70000000000000E-01 1.02174205100180E+01 -6.37653031229202E+01 1.92051737396527E+02
7.80000000000000E-01 9.59455884205080E+00 -6.18584492335894E+01 1.89319040469629E+02
7.90000000000000E-01 9.00881409101240E+00 -5.99789223135276E+01 1.86586343542732E+02
8.00000000000000E-01 8.45808243753390E+00 -5.81267223627348E+01 1.83853646615834E+02
8.10000000000000E-01 7.94036620543740E+00 -5.63018493812109E+01 1.81120949688937E+02
8.20000000000000E-01 7.45377009413780E+00 -5.45043033689561E+01 1.78388252762039E+02
8.30000000000000E-01 6.99649733491670E+00 -5.27340843259702E+01 1.75655555835141E+02
8.40000000000000E-01 6.56684580907430E+00 -5.09911922522532E+01 1.72922858908244E+02
8.50000000000000E-01 6.16320416003500E+00 -4.92756271478053E+01 1.70190161981346E+02
8.60000000000000E-01 5.78404792629080E+00 -4.75873890126263E+01 1.67457465054449E+02
8.70000000000000E-01 5.42793571754170E+00 -4.59264778467163E+01 1.64724768127551E+02
8.80000000000000E-01 5.09350545245770E+00 -4.42928936500753E+01 1.61992071200654E+02
8.90000000000000E-01 4.77947067307790E+00 -4.26866364227032E+01 1.59259374273756E+02
9.00000000000000E-01 4.48461694791110E+00 -4.11077061646001E+01 1.56526677346858E+02
9.10000000000000E-01 4.20779837326250E+00 -3.95561028757660E+01 1.53793980419961E+02
9.20000000000000E-01 3.94793418012220E+00 -3.80318265562009E+01 1.51061283493063E+02
9.30000000000000E-01 3.70400545207800E+00 -3.65348772059048E+01 1.48328586566166E+02
9.40000000000000E-01 3.47505195810880E+00 -3.50652548248776E+01 1.45595889639268E+02
9.50000000000000E-01 3.26016910274350E+00 -3.36229594131194E+01 1.42863192712371E+02
9.60000000000000E-01 3.05850499490870E+00 -3.22079909706302E+01 1.40130495785473E+02
9.70000000000000E-01 2.86925763579610E+00 -3.08203494974100E+01 1.37397798858576E+02
9.80000000000000E-01 2.69167222523860E+00 -2.94600349934587E+01 1.34665101931678E+02
9.90000000000000E-01 2.52503858539920E+00 -2.81270474587764E+01 1.31932405004780E+02
1.00000000000000E+00 2.36868869996450E+00 -2.68213868933631E+01 1.29199708077883E+02
1.01000000000000E+00 2.22199436656220E+00 -2.55430532972187E+01 1.26467011150985E+02
1.02000000000000E+00 2.08436495972290E+00 -2.42920466703434E+01 1.23734314224088E+02
1.03000000000000E+00 1.95524530138400E+00 -2.30683670127370E+01 1.21001617297190E+02
1.04000000000000E+00 1.83411363568740E+00 -2.18720143243996E+01 1.18268920370293E+02
1.05000000000000E+00 1.72047970464420E+00 -2.07029886053311E+01 1.15536223443395E+02
1.06000000000000E+00 1.61388292111270E+00 -1.95612898555317E+01 1.12803526516498E+02
1.07000000000000E+00 1.51389063546930E+00 -1.84469180750012E+01 1.10070829589600E+02
1.08000000000000E+00 1.42009649233860E+00 -1.73598732637397E+01 1.07338132662702E+02
1.09000000000000E+00 1.33211887378240E+00 -1.63001554217471E+01 1.04605435735805E+02
1.10000000000000E+00 1.24959942541890E+00 -1.52677645490236E+01 1.01872738808907E+02
1.11000000000000E+00 1.17220166204730E+00 -1.42627006455690E+01 9.91400418820097E+01
1.12000000000000E+00 1.09960964950590E+00 -1.32849637113834E+01 9.64073449551122E+01
1.13000000000000E+00 1.03152675964300E+00 -1.23345537464667E+01 9.36746480282146E+01
1.14000000000000E+00 9.67674495447570E-01 -1.14114707508191E+01 9.09419511013171E+01
1.15000000000000E+00 9.07791383530550E-01 -1.05157147244404E+01 8.82092541744195E+01
1.16000000000000E+00 8.51631931327990E-01 -9.64728566733070E+00 8.54765572475220E+01
1.17000000000000E+00 7.98965646472860E-01 -8.80618357948996E+00 8.27438603206244E+01
1.18000000000000E+00 7.49576115849950E-01 -7.99240846091820E+00 8.00111633937268E+01
1.19000000000000E+00 7.03260141891740E-01 -7.20596031161542E+00 7.72784664668293E+01
1.20000000000000E+00 6.59826933610410E-01 -6.44683913158162E+00 7.45457695399317E+01
1.21000000000000E+00 6.19097349751410E-01 -5.71504492081679E+00 7.18130726130342E+01
1.22000000000000E+00 5.80903191419890E-01 -5.01057767932093E+00 6.90803756861366E+01
1.23000000000000E+00 5.45086541281050E-01 -4.33343740709405E+00 6.63476787592390E+01
1.24000000000000E+00 5.11499146362270E-01 -3.68362410413615E+00 6.36149818323415E+01
1.25000000000000E+00 4.80001841408680E-01 -3.06113777044722E+00 6.08822849054439E+01
1.26000000000000E+00 4.50464009592950E-01 -2.46597840602727E+00 5.81495879785463E+01
1.27000000000000E+00 4.22763077523810E-01 -1.89814601087630E+00 5.54168910516488E+01
1.28000000000000E+00 3.96784041518990E-01 -1.35764058499430E+00 5.26841941247512E+01
1.29000000000000E+00 3.72419022224720E-01 -8.44462128381270E-01 4.99514971978536E+01
1.30000000000000E+00 3.49566845154400E-01 -3.58610641037222E-01 4.72188002709561E+01
1.31000000000000E+00 3.28132644682300E-01 9.99138770378506E-02 4.44861033440585E+01
1.32000000000000E+00 3.08027489551870E-01 5.31111425843950E-01 4.17534064171610E+01
1.33000000000000E+00 2.89168028418980E-01 9.34982005381072E-01 3.90207094902634E+01
1.34000000000000E+00 2.71476153812360E-01 1.31152561564922E+00 3.62880125633658E+01
1.35000000000000E+00 2.54878683681300E-01 1.66074225664839E+00 3.35553156364683E+01
1.36000000000000E+00 2.39307059630060E-01 1.98263192837858E+00 3.08226187095707E+01
1.37000000000000E+00 2.24697061061090E-01 2.27719463083980E+00 2.80899217826731E+01
1.38000000000000E+00 2.10988534829430E-01 2.54443036403204E+00 2.53572248557757E+01
1.39000000000000E+00 1.98125139777320E-01 2.78433912795531E+00 2.26245279288781E+01
1.40000000000000E+00 1.86054105766480E-01 2.99692092260960E+00 1.98918310019805E+01
1.41000000000000E+00 1.74726006668020E-01 3.18217574799492E+00 1.71591340750830E+01
1.42000000000000E+00 1.64094546879520E-01 3.34010360411126E+00 1.44264371481854E+01
1.43000000000000E+00 1.54116360791740E-01 3.47070449095863E+00 1.16937402212878E+01
1.44000000000000E+00 1.44750824686040E-01 3.57397840853702E+00 8.96104329439028E+00
1.45000000000000E+00 1.35959880473080E-01 3.64992535684643E+00 6.22834636749271E+00
1.46000000000000E+00 1.27707870671770E-01 3.69854533588687E+00 3.49564944059515E+00
1.47000000000000E+00 1.19961384029040E-01 3.71983834565834E+00 7.62952513697588E-01
1.48000000000000E+00 1.12689111169270E-01 3.71380438616083E+00 -1.96974441319998E+00
1.49000000000000E+00 1.05861709671710E-01 3.68044345739434E+00 -4.70244134009754E+00
1.50000000000000E+00 9.94516779828250E-02 3.61975555935888E+00 -7.43513826699510E+00
1.51000000000000E+00 9.34332376396480E-02 3.54570720086685E+00 -7.37453343140918E+00
1.52000000000000E+00 8.77822231774790E-02 3.47226489073069E+00 -7.31392859582327E+00
1.53000000000000E+00 8.24759793395920E-02 3.39942862895039E+00 -7.25332376023735E+00
1.54000000000000E+00 7.74932649393050E-02 3.32719841552595E+00 -7.19271892465143E+00
1.55000000000000E+00 7.28141630982270E-02 3.25557425045736E+00 -7.13211408906551E+00
1.56000000000000E+00 6.84199972690620E-02 3.18455613374463E+00 -7.07150925347960E+00
1.57000000000000E+00 6.42932527804090E-02 3.11414406538777E+00 -7.01090441789368E+00
1.58000000000000E+00 6.04175034361360E-02 3.04433804538676E+00 -6.95029958230776E+00
1.59000000000000E+00 5.67773428833550E-02 2.97513807374161E+00 -6.88969474672185E+00
1.60000000000000E+00 5.33583204071120E-02 2.90654415045232E+00 -6.82908991113593E+00
1.61000000000000E+00 5.01468808428990E-02 2.83855627551889E+00 -6.76848507555001E+00
1.62000000000000E+00 4.71303083713840E-02 2.77117444894132E+00 -6.70788023996410E+00
1.63000000000000E+00 4.42966738734480E-02 2.70439867071961E+00 -6.64727540437818E+00
1.64000000000000E+00 4.16347856926620E-02 2.63822894085376E+00 -6.58667056879226E+00
1.65000000000000E+00 3.91341434820210E-02 2.57266525934377E+00 -6.52606573320635E+00
1.66000000000000E+00 3.67848950424720E-02 2.50770762618963E+00 -6.46546089762043E+00
1.67000000000000E+00 3.45777958393150E-02 2.44335604139136E+00 -6.40485606203451E+00
1.68000000000000E+00 3.25041711454410E-02 2.37961050494894E+00 -6.34425122644860E+00
1.69000000000000E+00 3.05558805151320E-02 2.31647101686239E+00 -6.28364639086268E+00
1.70000000000000E+00 2.87252845634750E-02 2.25393757713169E+00 -6.22304155527676E+00
1.71000000000000E+00 2.70052137790560E-02 2.19201018575685E+00 -6.16243671969085E+00
1.72000000000000E+00 2.53889393588670E-02 2.13068884273787E+00 -6.10183188410493E+00
1.73000000000000E+00 2.38701458218280E-02 2.06997354807475E+00 -6.04122704851901E+00
1.74000000000000E+00 2.24429053937600E-02 2.00986430176749E+00 -5.98062221293310E+00
1.75000000000000E+00 2.11016539528900E-02 1.95036110381609E+00 -5.92001737734718E+00
1.76000000000000E+00 1.98411685241780E-02 1.89146395422055E+00 -5.85941254176126E+00
1.77000000000000E+00 1.86565461477090E-02 1.83317285298087E+00 -5.79880770617534E+00
1.78000000000000E+00 1.75431840975480E-02 1.77548780009704E+00 -5.73820287058943E+00
1.79000000000000E+00 1.64967613155890E-02 1.71840879556908E+00 -5.67759803500351E+00
1.80000000000000E+00 1.55132210185860E-02 1.66193583939697E+00 -5.61699319941759E+00
1.81000000000000E+00 1.45887543847670E-02 1.60606893158073E+00 -5.55638836383168E+00
1.82000000000000E+00 1.37197852549160E-02 1.55080807212034E+00 -5.49578352824576E+00
1.83000000000000E+00 1.29029557978070E-02 1.49615326101581E+00 -5.43517869265984E+00
1.84000000000000E+00 1.21351130481530E-02 1.44210449826714E+00 -5.37457385707393E+00
1.85000000000000E+00 1.14132963104660E-02 1.38866178387433E+00 -5.31396902148801E+00
1.86000000000000E+00 1.07347253091360E-02 1.33582511783738E+00 -5.25336418590209E+00
1.87000000000000E+00 1.00967891183710E-02 1.28359450015629E+00 -5.19275935031618E+00
1.88000000000000E+00 9.49703573306330E-03 1.23196993083106E+00 -5.13215451473026E+00
1.89000000000000E+00 8.93316232890900E-03 1.18095140986169E+00 -5.07154967914434E+00
1.90000000000000E+00 8.40300609292040E-03 1.13053893724817E+00 -5.01094484355843E+00
1.91000000000000E+00 7.90453564422250E-03 1.08073251299052E+00 -4.95034000797251E+00
1.92000000000000E+00 7.43584297573590E-03 1.03153213708872E+00 -4.88973517238659E+00
1.93000000000000E+00 6.99513589251180E-03 9.82937809542784E-01 -4.82913033680068E+00
1.94000000000000E+00 6.58073093122700E-03 9.34949530352707E-01 -4.76852550121476E+00
1.95000000000000E+00 6.19104669265100E-03 8.87567299518489E-01 -4.70792066562884E+00
1.96000000000000E+00 5.82459761864280E-03 8.40791117040131E-01 -4.64731583004293E+00
1.97000000000000E+00 5.47998811818340E-03 7.94620982917631E-01 -4.58671099445701E+00
1.98000000000000E+00 5.15590708442100E-03 7.49056897150991E-01 -4.52610615887109E+00
1.99000000000000E+00 4.85112273243880E-03 7.04098859740209E-01 -4.46550132328517E+00
2.00000000000000E+00 4.56447775915190E-03 6.59746870685287E-01 -4.40489648769926E+00
2.01000000000000E+00 4.29488480928880E-03 6.16000929986224E-01 -4.34429165211334E+00
2.02000000000000E+00 4.04132220165460E-03 5.72861037643020E-01 -4.28368681652742E+00
2.03000000000000E+00 3.80282994324000E-03 5.30327193655676E-01 -4.22308198094151E+00
2.04000000000000E+00 3.57850596305040E-03 4.88399398024190E-01 -4.16247714535559E+00
2.05000000000000E+00 3.36750259490110E-03 4.47077650748564E-01 -4.10187230976967E+00
2.06000000000000E+00 3.16902327016120E-03 4.06361951828796E-01 -4.04126747418376E+00
2.07000000000000E+00 2.98231940658940E-03 3.66252301264889E-01 -3.98066263859784E+00
2.08000000000000E+00 2.80668750504070E-03 3.26748699056839E-01 -3.92005780301192E+00
2.09000000000000E+00 2.64146640209220E-03 2.87851145204650E-01 -3.85945296742601E+00
2.10000000000000E+00 2.48603470928640E-03 2.49559639708319E-01 -3.79884813184009E+00
2.11000000000000E+00 2.33980839988330E-03 2.11874182567849E-01 -3.73824329625417E+00
2.12000000000000E+00 2.20223854085840E-03 1.74794773783236E-01 -3.67763846066826E+00
2.13000000000000E+00 2.07280917608030E-03 1.38321413354483E-01 -3.61703362508234E+00
2.14000000000000E+00 1.95103532110030E-03 1.02454101281589E-01 -3.55642878949642E+00
2.15000000000000E+00 1.83646109531660E-03 6.71928375645547E-02 -3.49582395391050E+00
2.16000000000000E+00 1.72865796141520E-03 3.25376222033785E-02 -3.43521911832459E+00
2.17000000000000E+00 1.62722306826190E-03 -1.51154480193698E-03 -3.37461428273867E+00
2.18000000000000E+00 1.53177770788030E-03 -3.49546634513948E-02 -3.31400944715275E+00
2.19000000000000E+00 1.44196584988180E-03 -6.77917337449922E-02 -3.25340461156684E+00
2.20000000000000E+00 1.35745277672160E-03 -1.00022755682732E-01 -3.19279977598092E+00
2.21000000000000E+00 1.27792379987860E-03 -1.31647729264611E-01 -3.13219494039500E+00
2.22000000000000E+00 1.20308304755010E-03 -1.62666654490632E-01 -3.07159010480909E+00
2.23000000000000E+00 1.13265233689210E-03 -1.93079531360793E-01 -3.01098526922317E+00
2.24000000000000E+00 1.06637010515680E-03 -2.22886359875095E-01 -2.95038043363725E+00
2.25000000000000E+00 1.00399040857090E-03 -2.52087140033537E-01 -2.88977559805134E+00
2.26000000000000E+00 9.45281987535480E-04 -2.80681871836121E-01 -2.82917076246542E+00
2.27000000000000E+00 8.90027378204200E-04 -3.08670555282846E-01 -2.76856592687950E+00
2.28000000000000E+00 8.38022086330030E-04 -3.36053190373711E-01 -2.70796109129359E+00
2.29000000000000E+00 7.89073808978030E-04 -3.62829777108718E-01 -2.64735625570767E+00
2.30000000000000E+00 7.43001699070860E-04 -3.89000315487864E-01 -2.58675142012175E+00
2.31000000000000E+00 6.99635682014230E-04 -4.14564805511153E-01 -2.52614658453584E+00
2.32000000000000E+00 6.58815807503790E-04 -4.39523247178581E-01 -2.46554174894992E+00
2.33000000000000E+00 6.20391640871230E-04 -4.63875640490151E-01 -2.40493691336400E+00
2.34000000000000E+00 5.84221697464740E-04 -4.87621985445861E-01 -2.34433207777809E+00
2.35000000000000E+00 5.50172902414600E-04 -5.10762282045713E-01 -2.28372724219217E+00
2.36000000000000E+00 5.18120087966320E-04 -5.33296530289705E-01 -2.22312240660625E+00
2.37000000000000E+00 4.87945522935780E-04 -5.55224730177838E-01 -2.16251757102033E+00
2.38000000000000E+00 4.59538464486320E-04 -5.76546881710112E-01 -2.10191273543442E+00
2.39000000000000E+00 4.32794741970060E-04 -5.97262984886527E-01 -2.04130789984850E+00
2.40000000000000E+00 4.07616365247540E-04 -6.17373039707081E-01 -1.98070306426258E+00
2.41000000000000E+00 3.83911153032240E-04 -6.36877046171778E-01 -1.92009822867667E+00
2.42000000000000E+00 3.61592388078170E-04 -6.55775004280615E-01 -1.85949339309075E+00
2.43000000000000E+00 3.40578491091400E-04 -6.74066914033593E-01 -1.79888855750483E+00
2.44000000000000E+00 3.20792712506090E-04 -6.91752775430711E-01 -1.73828372191892E+00
2.45000000000000E+00 3.02162846641720E-04 -7.08832588471972E-01 -1.67767888633300E+00
2.46000000000000E+00 2.84620960217270E-04 -7.25306353157371E-01 -1.61707405074708E+00
2.47000000000000E+00 2.68103136643160E-04 -7.41174069486913E-01 -1.55646921516116E+00
2.48000000000000E+00 2.52549238938140E-04 -7.56435737460595E-01 -1.49586437957525E+00
2.49000000000000E+00 2.37902683739730E-04 -7.71091357078418E-01 -1.43525954398933E+00
2.50000000000000E+00 2.24110229059530E-04 -7.85140928340382E-01 -1.37465470840342E+00
2.51000000000000E+00 2.11121777533430E-04 -7.98584451246485E-01 -1.31404987281750E+00
2.52000000000000E+00 1.98890188366680E-04 -8.11421925796731E-01 -1.25344503723158E+00
2.53000000000000E+00 1.87371101055440E-04 -8.23653351991118E-01 -1.19284020164567E+00
2.54000000000000E+00 1.76522772010600E-04 -8.35278729829645E-01 -1.13223536605975E+00
2.55000000000000E+00 1.66305918151210E-04 -8.46298059312313E-01 -1.07163053047383E+00
2.56000000000000E+00 1.56683570388790E-04 -8.56711340439121E-01 -1.01102569488791E+00
2.57000000000000E+00 1.47620937871130E-04 -8.66518573210071E-01 -9.50420859301998E-01
2.58000000000000E+00 1.39085277994480E-04 -8.75719757625161E-01 -8.89816023716080E-01
2.59000000000000E+00 1.31045774520650E-04 -8.84314893684393E-01 -8.29211188130165E-01
2.60000000000000E+00 1.23473424679960E-04 -8.92303981387765E-01 -7.68606352544247E-01
2.61000000000000E+00 1.16340931249150E-04 -8.99687020735277E-01 -7.08001516958331E-01
2.62000000000000E+00 1.09622601060940E-04 -9.06464011726931E-01 -6.47396681372413E-01
2.63000000000000E+00 1.03294251024800E-04 -9.12634954362726E-01 -5.86791845786498E-01
2.64000000000000E+00 9.73331186432290E-05 -9.18199848642661E-01 -5.26187010200579E-01
2.65000000000000E+00 9.17177774109080E-05 -9.23158694566738E-01 -4.65582174614664E-01
2.66000000000000E+00 8.64280584906120E-05 -9.27511492134954E-01 -4.04977339028745E-01
2.67000000000000E+00 8.14449766392100E-05 -9.31258241347312E-01 -3.44372503442830E-01
2.68000000000000E+00 7.67506596054190E-05 -9.34398942203811E-01 -2.83767667856911E-01
2.69000000000000E+00 7.23282827625640E-05 -9.36933594704450E-01 -2.23162832270996E-01
2.70000000000000E+00 6.81620079069400E-05 -9.38862198849231E-01 -1.62557996685078E-01
2.71000000000000E+00 6.42369242716970E-05 -9.40184754638152E-01 -1.01953161099162E-01
2.72000000000000E+00 6.05389938895800E-05 -9.40901262071214E-01 -4.13483255132441E-02
2.73000000000000E+00 5.70550011271280E-05 -9.41011721148417E-01 1.92565100726716E-02
2.74000000000000E+00 5.37725033013850E-05 -9.40516131869761E-01 7.98613456585899E-02
2.75000000000000E+00 5.06797852114460E-05 -9.39414494235245E-01 1.40466181244505E-01
2.76000000000000E+00 4.77658170569500E-05 -9.37706808244871E-01 2.01071016830421E-01
2.77000000000000E+00 4.50202135849920E-05 -9.35393073898637E-01 2.61675852416339E-01
2.78000000000000E+00 4.24331960530600E-05 -9.32473291196544E-01 3.22280688002255E-01
2.79000000000000E+00 3.99955569750650E-05 -9.28947460138592E-01 3.82885523588173E-01
2.80000000000000E+00 3.76986265642300E-05 -9.24815580724780E-01 4.43490359174088E-01
2.81000000000000E+00 3.55342407990390E-05 -9.20077652955110E-01 5.04095194760007E-01
2.82000000000000E+00 3.34947118246090E-05 -9.14733676829580E-01 5.64700030345922E-01
2.83000000000000E+00 3.15728004893620E-05 -9.08783652348191E-01 6.25304865931841E-01
2.84000000000000E+00 2.97616894650090E-05 -9.02227579510944E-01 6.85909701517756E-01
2.85000000000000E+00 2.80549585183030E-05 -8.95065458317836E-01 7.46514537103674E-01
2.86000000000000E+00 2.64465617372370E-05 -8.87297288768870E-01 8.07119372689590E-01
2.87000000000000E+00 2.49308052180790E-05 -8.78923070864044E-01 8.67724208275508E-01
2.88000000000000E+00 2.35023263799030E-05 -8.69942804603360E-01 9.28329043861424E-01
2.89000000000000E+00 2.21560747490760E-05 -8.60356489986816E-01 9.88933879447342E-01
2.90000000000000E+00 2.08872938190160E-05 -8.50164127014413E-01 1.04953871503326E+00
2.91000000000000E+00 1.96915035633130E-05 -8.39365715686151E-01 1.11014355061918E+00
2.92000000000000E+00 1.85644842311780E-05 -8.27961256002030E-01 1.17074838620509E+00
2.93000000000000E+00 1.75022615944050E-05 -8.15950747962049E-01 1.23135322179101E+00
2.94000000000000E+00 1.65010921751040E-05 -8.03334191566210E-01 1.29195805737692E+00
2.95000000000000E+00 1.55574497942220E-05 -7.90111586814510E-01 1.35256289296284E+00
2.96000000000000E+00 1.46680130335800E-05 -7.76282933706953E-01 1.41316772854876E+00
2.97000000000000E+00 1.38296533307790E-05 -7.61848232243535E-01 1.47377256413468E+00
2.98000000000000E+00 1.30394235347880E-05 -7.46807482424259E-01 1.53437739972059E+00
2.99000000000000E+00 1.22945472928650E-05 -7.31160684249123E-01 1.59498223530651E+00
3.00000000000000E+00 1.15924094317060E-05 -7.14907837718129E-01 1.65558707089243E+00
3.01000000000000E+00 1.09305462583490E-05 -6.98413897363290E-01 1.64320100007538E+00
3.02000000000000E+00 1.03066367534910E-05 -6.82043817716621E-01 1.63081492925834E+00
3.03000000000000E+00 9.71849433009180E-06 -6.65797598778124E-01 1.61842885844130E+00
3.04000000000000E+00 9.16405911388640E-06 -6.49675240547795E-01 1.60604278762425E+00
3.05000000000000E+00 8.64139038026970E-06 -6.33676743025638E-01 1.59365671680721E+00
3.06000000000000E+00 8.14865961908100E-06 -6.17802106211651E-01 1.58127064599017E+00
3.07000000000000E+00 7.68414419796410E-06 -6.02051330105835E-01 1.56888457517313E+00
3.08000000000000E+00 7.24622108513290E-06 -5.86424414708188E-01 1.55649850435608E+00
3.09000000000000E+00 6.83336102574100E-06 -5.70921360018713E-01 1.54411243353904E+00
3.10000000000000E+00 6.44412306852140E-06 -5.55542166037408E-01 1.53172636272200E+00
3.11000000000000E+00 6.07714965171280E-06 -5.40286832764273E-01 1.51934029190495E+00
3.12000000000000E+00 5.73116154215070E-06 -5.25155360199309E-01 1.50695422108791E+00
3.13000000000000E+00 5.40495332302340E-06 -5.10147748342515E-01 1.49456815027087E+00
3.14000000000000E+00 5.09738915192550E-06 -4.95263997193891E-01 1.48218207945382E+00
3.15000000000000E+00 4.80739879096550E-06 -4.80504106753439E-01 1.46979600863678E+00
3.16000000000000E+00 4.53397368377560E-06 -4.65868077021155E-01 1.45740993781974E+00
3.17000000000000E+00 4.27616338394530E-06 -4.51355907997044E-01 1.44502386700270E+00
3.18000000000000E+00 4.03307228181060E-06 -4.36967599681102E-01 1.43263779618565E+00
3.19000000000000E+00 3.80385639415240E-06 -4.22703152073330E-01 1.42025172536861E+00
3.20000000000000E+00 3.58772032792070E-06 -4.08562565173729E-01 1.40786565455157E+00
3.21000000000000E+00 3.38391445127450E-06 -3.94545838982299E-01 1.39547958373452E+00
3.22000000000000E+00 3.19173236578360E-06 -3.80652973499039E-01 1.38309351291748E+00
3.23000000000000E+00 3.01050831301400E-06 -3.66883968723949E-01 1.37070744210044E+00
3.24000000000000E+00 2.83961482461000E-06 -3.53238824657030E-01 1.35832137128340E+00
3.25000000000000E+00 2.67846048113060E-06 -3.39717541298282E-01 1.34593530046635E+00
3.26000000000000E+00 2.52648795685810E-06 -3.26320118647704E-01 1.33354922964931E+00
3.27000000000000E+00 2.38317192966870E-06 -3.13046556705295E-01 1.32116315883227E+00
3.28000000000000E+00 2.24801725732860E-06 -2.99896855471058E-01 1.30877708801522E+00
3.29000000000000E+00 2.12055721579010E-06 -2.86871014944991E-01 1.29639101719818E+00
3.30000000000000E+00 2.00035195685930E-06 -2.73969035127095E-01 1.28400494638114E+00
3.31000000000000E+00 1.88698685603750E-06 -2.61190916017368E-01 1.27161887556409E+00
3.32000000000000E+00 1.78007108027230E-06 -2.48536657615812E-01 1.25923280474705E+00
3.33000000000000E+00 1.67923620671380E-06 -2.36006259922427E-01 1.24684673393001E+00
3.34000000000000E+00 1.58413500229290E-06 -2.23599722937212E-01 1.23446066311297E+00
3.35000000000000E+00 1.49444012309170E-06 -2.11317046660168E-01 1.22207459229592E+00
3.36000000000000E+00 1.40984298620780E-06 -1.99158231091294E-01 1.20968852147888E+00
3.37000000000000E+00 1.33005268314800E-06 -1.87123276230590E-01 1.19730245066184E+00
3.38000000000000E+00 1.25479502020210E-06 -1.75212182078057E-01 1.18491637984479E+00
3.39000000000000E+00 1.18381149036040E-06 -1.63424948633694E-01 1.17253030902775E+00
3.40000000000000E+00 1.11685838617230E-06 -1.51761575897502E-01 1.16014423821071E+00
3.41000000000000E+00 1.05370594034000E-06 -1.40222063869480E-01 1.14775816739366E+00
3.42000000000000E+00 9.94137577443140E-07 -1.28806412549629E-01 1.13537209657662E+00
3.43000000000000E+00 9.37949097051560E-07 -1.17514621937948E-01 1.12298602575958E+00
3.44000000000000E+00 8.84947977664100E-07 -1.06346692034437E-01 1.11059995494254E+00
3.45000000000000E+00 8.34952692573970E-07 -9.53026228390968E-02 1.09821388412549E+00
3.46000000000000E+00 7.87792132563740E-07 -8.43824143519275E-02 1.08582781330845E+00
3.47000000000000E+00 7.43304952867860E-07 -7.35860665729277E-02 1.07344174249141E+00
3.48000000000000E+00 7.01339027374680E-07 -6.29135795020991E-02 1.06105567167436E+00
3.49000000000000E+00 6.61750906015890E-07 -5.23649531394406E-02 1.04866960085732E+00
3.50000000000000E+00 6.24405363032930E-07 -4.19401874849527E-02 1.03628353004028E+00
3.51000000000000E+00 5.89174883633310E-07 -3.16392825386352E-02 1.02389745922324E+00
3.52000000000000E+00 5.55939229922060E-07 -2.14622383004880E-02 1.01151138840619E+00
3.53000000000000E+00 5.24585015344160E-07 -1.14090547705114E-02 9.99125317589149E-01
3.54000000000000E+00 4.95005341560260E-07 -1.47973194870501E-03 9.86739246772106E-01
3.55000000000000E+00 4.67099406505220E-07 8.32573016493062E-03 9.74353175955063E-01
3.56000000000000E+00 4.40772152397040E-07 1.80073315703964E-02 9.61967105138020E-01
3.57000000000000E+00 4.15933934166540E-07 2.75650722676912E-02 9.49581034320977E-01
3.58000000000000E+00 3.92500223903220E-07 3.69989522568158E-02 9.37194963503934E-01
3.59000000000000E+00 3.70391317343230E-07 4.63089715377697E-02 9.24808892686892E-01
3.60000000000000E+00 3.49532045182180E-07 5.54951301105536E-02 9.12422821869848E-01
3.61000000000000E+00 3.29851516236800E-07 6.45574279751668E-02 9.00036751052806E-01
3.62000000000000E+00 3.11282873696790E-07 7.34958651316098E-02 8.87650680235762E-01
3.63000000000000E+00 2.93763080628730E-07 8.23104415798820E-02 8.75264609418720E-01
3.64000000000000E+00 2.77232680735130E-07 9.10011573199842E-02 8.62878538601676E-01
3.65000000000000E+00 2.61635599982710E-07 9.95680123519156E-02 8.50492467784634E-01
3.66000000000000E+00 2.46918946628220E-07 1.08011006675677E-01 8.38106396967590E-01
3.67000000000000E+00 2.33032852071280E-07 1.16330140291268E-01 8.25720326150548E-01
3.68000000000000E+00 2.19930278046210E-07 1.24525413198688E-01 8.13334255333505E-01
3.69000000000000E+00 2.07566858884090E-07 1.32596825397938E-01 8.00948184516462E-01
3.70000000000000E+00 1.95900746179940E-07 1.40544376889017E-01 7.88562113699419E-01
3.71000000000000E+00 1.84892473842870E-07 1.48368067671926E-01 7.76176042882376E-01
3.72000000000000E+00 1.74504821322060E-07 1.56067897746665E-01 7.63789972065333E-01
3.73000000000000E+00 1.64702678511480E-07 1.63643867113233E-01 7.51403901248290E-01
3.74000000000000E+00 1.55452927687790E-07 1.71095975771630E-01 7.39017830431247E-01
3.75000000000000E+00 1.46724327088000E-07 1.78424223721857E-01 7.26631759614204E-01
3.76000000000000E+00 1.38487418313200E-07 1.85628610963914E-01 7.14245688797161E-01
3.77000000000000E+00 1.30714409645690E-07 1.92709137497801E-01 7.01859617980118E-01
3.78000000000000E+00 1.23379085408210E-07 1.99665803323516E-01 6.89473547163075E-01
3.79000000000000E+00 1.16456713492260E-07 2.06498608441062E-01 6.77087476346032E-01
3.80000000000000E+00 1.09923968382200E-07 2.13207552850437E-01 6.64701405528989E-01
3.81000000000000E+00 1.03758848165390E-07 2.19792636551642E-01 6.52315334711946E-01
3.82000000000000E+00 9.79405958553470E-08 2.26253859544676E-01 6.39929263894903E-01
3.83000000000000E+00 9.24496299278930E-08 2.32591221829540E-01 6.27543193077860E-01
3.84000000000000E+00 8.72674750428910E-08 2.38804723406233E-01 6.15157122260817E-01
3.85000000000000E+00 8.23767096132300E-08 2.44894364274756E-01 6.02771051443774E-01
3.86000000000000E+00 7.77608951584510E-08 2.50860144435109E-01 5.90384980626731E-01
3.87000000000000E+00 7.34045234829940E-08 2.56702063887291E-01 5.77998909809688E-01
3.88000000000000E+00 6.92929623439230E-08 2.62420122631303E-01 5.65612838992645E-01
3.89000000000000E+00 6.54124090181950E-08 2.68014320667144E-01 5.53226768175602E-01
3.90000000000000E+00 6.17498438933480E-08 2.73484657994815E-01 5.40840697358560E-01
3.91000000000000E+00 5.82929820129240E-08 2.78831134614315E-01 5.28454626541516E-01
3.92000000000000E+00 5.50302328615690E-08 2.84053750525645E-01 5.16068555724474E-01
3.93000000000000E+00 5.19506589177950E-08 2.89152505728805E-01 5.03682484907430E-01
3.94000000000000E+00 4.90439450365130E-08 2.94127400223794E-01 4.91296414090388E-01
3.95000000000000E+00 4.63003580011100E-08 2.98978434010613E-01 4.78910343273344E-01
3.96000000000000E+00 4.37107139003290E-08 3.03705607089261E-01 4.66524272456302E-01
3.97000000000000E+00 4.12663471454550E-08 3.08308919459738E-01 4.54138201639258E-01
3.98000000000000E+00 3.89590801448850E-08 3.12788371122046E-01 4.41752130822216E-01
3.99000000000000E+00 3.67812008561590E-08 3.17143962076183E-01 4.29366060005172E-01
4.00000000000000E+00 3.47254307936970E-08 3.21375692322149E-01 4.16979989188130E-01
4.01000000000000E+00 3.27849021105670E-08 3.25483561859945E-01 4.04593918371087E-01
4.02000000000000E+00 3.09531337220230E-08 3.29467570689571E-01 3.92207847554044E-01
4.03000000000000E+00 2.92240103636130E-08 3.33327718811026E-01 3.79821776737001E-01
4.04000000000000E+00 2.75917635739160E-08 3.37064006224311E-01 3.67435705919958E-01
4.05000000000000E+00 2.60509490541100E-08 3.40676432929425E-01 3.55049635102915E-01
4.06000000000000E+00 2.45964293335930E-08 3.44164998926369E-01 3.42663564285873E-01
4.07000000000000E+00 2.32233556608590E-08 3.47529704215143E-01 3.30277493468829E-01
4.08000000000000E+00 2.19271535218670E-08 3.50770548795746E-01 3.17891422651786E-01
4.09000000000000E+00 2.07035068946880E-08 3.53887532668179E-01 3.05505351834743E-01
4.10000000000000E+00 1.95483421973860E-08 3.56880655832441E-01 2.93119281017700E-01
4.11000000000000E+00 1.84578151855000E-08 3.59749918288533E-01 2.80733210200657E-01
4.12000000000000E+00 1.74282972474080E-08 3.62495320036454E-01 2.68347139383614E-01
4.13000000000000E+00 1.64563653072490E-08 3.65116861076205E-01 2.55961068566571E-01
4.14000000000000E+00 1.55387891254810E-08 3.67614541407785E-01 2.43574997749529E-01
4.15000000000000E+00 1.46725198126900E-08 3.69988361031196E-01 2.31188926932485E-01
4.16000000000000E+00 1.38546799521540E-08 3.72238319946435E-01 2.18802856115442E-01
4.17000000000000E+00 1.30825532596260E-08 3.74364418153504E-01 2.06416785298399E-01
4.18000000000000E+00 1.23535774244920E-08 3.76366655652403E-01 1.94030714481357E-01
4.19000000000000E+00 1.16653341594010E-08 3.78245032443131E-01 1.81644643664313E-01
4.20000000000000E+00 1.10155408378200E-08 3.79999548525689E-01 1.69258572847270E-01
4.21000000000000E+00 1.04020430814850E-08 3.81630203900077E-01 1.56872502030227E-01
4.22000000000000E+00 9.82280698966430E-09 3.83136998566294E-01 1.44486431213185E-01
4.23000000000000E+00 9.27591392492420E-09 3.84519932524341E-01 1.32100360396141E-01
4.24000000000000E+00 8.75955297263590E-09 3.85779005774217E-01 1.19714289579098E-01
4.25000000000000E+00 8.27201469467500E-09 3.86914218315922E-01 1.07328218762056E-01
4.26000000000000E+00 7.81168560217070E-09 3.87925570149458E-01 9.49421479450130E-02
4.27000000000000E+00 7.37704234648150E-09 3.88813061274823E-01 8.25560771279701E-02
4.28000000000000E+00 6.96664777544840E-09 3.89576691692017E-01 7.01700063109264E-02
4.29000000000000E+00 6.57914545135330E-09 3.90216461401041E-01 5.77839354938837E-02
4.30000000000000E+00 6.21325482960500E-09 3.90732370401895E-01 4.53978646768410E-02
4.31000000000000E+00 5.86776717195890E-09 3.91124418694578E-01 3.30117938597982E-02
4.32000000000000E+00 5.54154123426370E-09 3.91392606279091E-01 2.06257230427545E-02
4.33000000000000E+00 5.23350014299240E-09 3.91536933155433E-01 8.23965222571188E-03
4.34000000000000E+00 4.94262762919410E-09 3.91557399323605E-01 -4.14641859133102E-03
4.35000000000000E+00 4.66796416768010E-09 3.91454004783607E-01 -1.65324894083736E-02
4.36000000000000E+00 4.40860398758930E-09 3.91226749535438E-01 -2.89185602254173E-02
4.37000000000000E+00 4.16369190058130E-09 3.90875633579098E-01 -4.13046310424600E-02
4.38000000000000E+00 3.93242070455700E-09 3.90400656914588E-01 -5.36907018595028E-02
4.39000000000000E+00 3.71402881164330E-09 3.89801819541908E-01 -6.60767726765455E-02
4.40000000000000E+00 3.50779704437180E-09 3.89079121461057E-01 -7.84628434935893E-02
4.41000000000000E+00 3.31304647772640E-09 3.88232562672036E-01 -9.08489143106320E-02
4.42000000000000E+00 3.12913613364220E-09 3.87262143174845E-01 -1.03234985127675E-01
4.43000000000000E+00 2.95546072977880E-09 3.86167862969483E-01 -1.15621055944717E-01
4.44000000000000E+00 2.79144940462340E-09 3.84949722055950E-01 -1.28007126761761E-01
4.45000000000000E+00 2.63656298090190E-09 3.83607720434248E-01 -1.40393197578804E-01
4.46000000000000E+00 2.49029243216630E-09 3.82141858104374E-01 -1.52779268395847E-01
4.47000000000000E+00 2.35215718983760E-09 3.80552135066331E-01 -1.65165339212889E-01
4.48000000000000E+00 2.22170334145580E-09 3.78838551320117E-01 -1.77551410029933E-01
4.49000000000000E+00 2.09850276610370E-09 3.77001106865732E-01 -1.89937480846976E-01
4.50000000000000E+00 1.98215117082070E-09 3.75039801703177E-01 -2.02323551664019E-01
4.51000000000000E+00 1.87226681199990E-09 3.72954635832452E-01 -2.14709622481061E-01
4.52000000000000E+00 1.76848926882640E-09 3.70745609253556E-01 -2.27095693298104E-01
4.53000000000000E+00 1.67047815429410E-09 3.68412721966489E-01 -2.39481764115148E-01
4.54000000000000E+00 1.57791219270320E-09 3.65955973971253E-01 -2.51867834932190E-01
4.55000000000000E+00 1.49048819681610E-09 3.63375365267846E-01 -2.64253905749233E-01
4.56000000000000E+00 1.40791980549380E-09 3.60670895856268E-01 -2.76639976566276E-01
4.57000000000000E+00 1.32993663888420E-09 3.57842565736520E-01 -2.89026047383320E-01
4.58000000000000E+00 1.25628339689570E-09 3.54890374908602E-01 -3.01412118200362E-01
4.59000000000000E+00 1.18671888870180E-09 3.51814323372513E-01 -3.13798189017405E-01
4.60000000000000E+00 1.12101570223620E-09 3.48614411128254E-01 -3.26184259834448E-01
4.61000000000000E+00 1.05895897258620E-09 3.45290638175824E-01 -3.38570330651492E-01
4.62000000000000E+00 1.00034581623300E-09 3.41843004515224E-01 -3.50956401468534E-01
4.63000000000000E+00 9.44984659947410E-10 3.38271510146453E-01 -3.63342472285577E-01
4.64000000000000E+00 8.92694540431830E-10 3.34576155069512E-01 -3.75728543102619E-01
4.65000000000000E+00 8.43304673631950E-10 3.30756939284401E-01 -3.88114613919663E-01
4.66000000000000E+00 7.96653857298790E-10 3.26813862791119E-01 -4.00500684736706E-01
4.67000000000000E+00 7.52589817525610E-10 3.22746925589667E-01 -4.12886755553749E-01
4.68000000000000E+00 7.10968762328450E-10 3.18556127680044E-01 -4.25272826370792E-01
4.69000000000000E+00 6.71654907522940E-10 3.14241469062251E-01 -4.37658897187835E-01
4.70000000000000E+00 6.34519935740900E-10 3.09802949736287E-01 -4.50044968004878E-01
4.71000000000000E+00 5.99442881088850E-10 3.05240569702153E-01 -4.62431038821921E-01
4.72000000000000E+00 5.66309428672480E-10 3.00554328959849E-01 -4.74817109638964E-01
4.73000000000000E+00 5.35011624696290E-10 2.95744227509374E-01 -4.87203180456007E-01
4.74000000000000E+00 5.05447522302760E-10 2.90810265350729E-01 -4.99589251273050E-01
4.75000000000000E+00 4.77520818812390E-10 2.85752442483913E-01 -5.11975322090093E-01
4.76000000000000E+00 4.51140579772880E-10 2.80570758908927E-01 -5.24361392907135E-01
4.77000000000000E+00 4.26221013054190E-10 2.75265214625771E-01 -5.36747463724178E-01
4.78000000000000E+00 4.02681051793750E-10 2.69835809634443E-01 -5.49133534541222E-01
4.79000000000000E+00 3.80444136524450E-10 2.64282543934946E-01 -5.61519605358265E-01
4.80000000000000E+00 3.59437963538180E-10 2.58605417527278E-01 -5.73905676175307E-01
4.81000000000000E+00 3.39594208245940E-10 2.52804430411440E-01 -5.86291746992350E-01
4.82000000000000E+00 3.20848409370940E-10 2.46879582587431E-01 -5.98677817809394E-01
4.83000000000000E+00 3.03139696930440E-10 2.40830874055252E-01 -6.11063888626437E-01
4.84000000000000E+00 2.86410563567740E-10 2.34658304814902E-01 -6.23449959443479E-01
4.85000000000000E+00 2.70606696160390E-10 2.28361874866382E-01 -6.35836030260522E-01
4.86000000000000E+00 2.55676797779150E-10 2.21941584209692E-01 -6.48222101077566E-01
4.87000000000000E+00 2.41572378659210E-10 2.15397432844831E-01 -6.60608171894608E-01
4.88000000000000E+00 2.28247726834840E-10 2.08729420771800E-01 -6.72994242711651E-01
4.89000000000000E+00 2.15659640975860E-10 2.01937547990598E-01 -6.85380313528694E-01
4.90000000000000E+00 2.03767313052550E-10 1.95021814501226E-01 -6.97766384345738E-01
4.91000000000000E+00 1.92532199488590E-10 1.87982220303683E-01 -7.10152455162780E-01
4.92000000000000E+00 1.81917892845010E-10 1.80818765397970E-01 -7.22538525979823E-01
4.93000000000000E+00 1.71889976928350E-10 1.73531449784087E-01 -7.34924596796866E-01
4.94000000000000E+00 1.62416015790730E-10 1.66120273462033E-01 -7.47310667613909E-01
4.95000000000000E+00 1.53465341586690E-10 1.58585236431809E-01 -7.59696738430952E-01
4.96000000000000E+00 1.45008987115920E-10 1.50926338693414E-01 -7.72082809247995E-01
4.97000000000000E+00 1.37019591047390E-10 1.43143580246849E-01 -7.84468880065038E-01
4.98000000000000E+00 1.29471304140830E-10 1.35236961092113E-01 -7.96854950882081E-01
4.99000000000000E+00 1.22339696266170E-10 1.27206481229207E-01 -8.09241021699124E-01
5.00000000000000E+00 1.15601738053680E-10 1.19052140658131E-01 -8.21627092516167E-01
5.01000000000000E+00 1.09235654632270E-10 1.10773939378884E-01 -8.34013163333210E-01
5.02000000000000E+00 1.03220877498330E-10 1.02371877391467E-01 -8.46399234150252E-01
5.03000000000000E+00 9.75379773548080E-11 9.38459546958785E-02 -8.58785304967296E-01
5.04000000000000E+00 9.21685968145590E-11 8.51961712921205E-02 -8.71171375784339E-01
5.05000000000000E+00 8.70953862825330E-11 7.64225271801919E-02 -8.83557446601381E-01
5.06000000000000E+00 8.23019911179980E-11 6.75250223600932E-02 -8.95943517418424E-01
5.07000000000000E+00 7.77729459368820E-11 5.85036568318231E-02 -9.08329588235468E-01
5.08000000000000E+00 7.34936413908420E-11 4.93584305953835E-02 -9.20715659052511E-01
5.09000000000000E+00 6.94502765502250E-11 4.00893436507733E-02 -9.33101729869553E-01
5.10000000000000E+00 6.56298117245230E-11 3.06963959979929E-02 -9.45487800686596E-01
5.11000000000000E+00 6.20199195423300E-11 2.11795876370409E-02 -9.57873871503640E-01
5.12000000000000E+00 5.86089830933690E-11 1.15389185679196E-02 -9.70259942320683E-01
5.13000000000000E+00 5.53860149651530E-11 1.77438879062775E-03 -9.82646013137725E-01
5.14000000000000E+00 5.23406353873680E-11 -8.11400169483445E-03 -9.95032083954768E-01
5.15000000000000E+00 4.94630384537170E-11 -1.81262528884679E-02 -1.00741815477181E+00
5.16000000000000E+00 4.67439600446670E-11 -2.82623647902711E-02 -1.01980422558885E+00
5.17000000000000E+00 4.41746364988580E-11 -3.85223374002448E-02 -1.03219029640590E+00
5.18000000000000E+00 4.17468146706030E-11 -4.89061707183888E-02 -1.04457636722294E+00
5.19000000000000E+00 3.94526862560380E-11 -5.94138647447041E-02 -1.05696243803998E+00
5.20000000000000E+00 3.72848744168170E-11 -7.00454194791889E-02 -1.06934850885703E+00
5.21000000000000E+00 3.52364098062120E-11 -8.08008349218441E-02 -1.08173457967407E+00
5.22000000000000E+00 3.33007079887070E-11 -9.16801110726698E-02 -1.09412065049111E+00
5.23000000000000E+00 3.14715402358290E-11 -1.02683247931667E-01 -1.10650672130816E+00
5.24000000000000E+00 2.97430372029670E-11 -1.13810245498833E-01 -1.11889279212520E+00
5.25000000000000E+00 2.81096499370040E-11 -1.25061103774170E-01 -1.13127886294224E+00
5.26000000000000E+00 2.65661342842110E-11 -1.36435822757678E-01 -1.14366493375928E+00
5.27000000000000E+00 2.51075355350940E-11 -1.47934402449356E-01 -1.15605100457633E+00
5.28000000000000E+00 2.37291723887640E-11 -1.59556842849205E-01 -1.16843707539337E+00
5.29000000000000E+00 2.24266177154130E-11 -1.71303143957223E-01 -1.18082314621041E+00
5.30000000000000E+00 2.11956942940110E-11 -1.83173305773413E-01 -1.19320921702746E+00
5.31000000000000E+00 2.00324585108130E-11 -1.95167328297772E-01 -1.20559528784450E+00
5.32000000000000E+00 1.89331812972370E-11 -2.07285211530303E-01 -1.21798135866154E+00
5.33000000000000E+00 1.78943392440350E-11 -2.19526955471004E-01 -1.23036742947858E+00
5.34000000000000E+00 1.69126032072570E-11 -2.31892560119874E-01 -1.24275350029563E+00
5.35000000000000E+00 1.59848263391330E-11 -2.44382025476916E-01 -1.25513957111267E+00
5.36000000000000E+00 1.51080336341490E-11 -2.56995351542128E-01 -1.26752564192971E+00
5.37000000000000E+00 1.42794221471760E-11 -2.69732538315510E-01 -1.27991171274676E+00
5.38000000000000E+00 1.34963394564810E-11 -2.82593585797063E-01 -1.29229778356380E+00
5.39000000000000E+00 1.27562793146610E-11 -2.95578493986786E-01 -1.30468385438084E+00
5.40000000000000E+00 1.20568735483630E-11 -3.08687262884680E-01 -1.31706992519789E+00
5.41000000000000E+00 1.13958844291370E-11 -3.21919892490744E-01 -1.32945599601493E+00
5.42000000000000E+00 1.07711941608120E-11 -3.35276382804978E-01 -1.34184206683197E+00
5.43000000000000E+00 1.01808078797850E-11 -3.48756733827383E-01 -1.35422813764901E+00
5.44000000000000E+00 9.62283928716170E-12 -3.62360945557959E-01 -1.36661420846606E+00
5.45000000000000E+00 9.09550519036420E-12 -3.76089017996705E-01 -1.37900027928310E+00
5.46000000000000E+00 8.59712056398870E-12 -3.89940951143621E-01 -1.39138635010014E+00
5.47000000000000E+00 8.12609312268130E-12 -4.03916744998707E-01 -1.40377242091719E+00
5.48000000000000E+00 7.68091723456890E-12 -4.18016399561965E-01 -1.41615849173423E+00
5.49000000000000E+00 7.26017005069800E-12 -4.32239914833392E-01 -1.42854456255127E+00
5.50000000000000E+00 6.86251072432630E-12 -4.46587290812990E-01 -1.44093063336832E+00
5.51000000000000E+00 6.48667019018090E-12 -4.61058527500758E-01 -1.45331670418536E+00
5.52000000000000E+00 6.13144920021680E-12 -4.75653624896697E-01 -1.46570277500240E+00
5.53000000000000E+00 5.79571446089160E-12 -4.90372583000807E-01 -1.47808884581944E+00
5.54000000000000E+00 5.47839499520700E-12 -5.05215401813086E-01 -1.49047491663649E+00
5.55000000000000E+00 5.17847700341950E-12 -5.20182081333536E-01 -1.50286098745353E+00
5.56000000000000E+00 4.89500545552500E-12 -5.35272621562156E-01 -1.51524705827057E+00
5.57000000000000E+00 4.62707756825460E-12 -5.50487022498948E-01 -1.52763312908762E+00
5.58000000000000E+00 4.37383961401190E-12 -5.65825284143909E-01 -1.54001919990466E+00
5.59000000000000E+00 4.13448478597990E-12 -5.81287406497041E-01 -1.55240527072170E+00
5.60000000000000E+00 3.90825060715230E-12 -5.96873389558342E-01 -1.56479134153874E+00
5.61000000000000E+00 3.69441633926060E-12 -6.12583233327816E-01 -1.57717741235579E+00
5.62000000000000E+00 3.49229959697100E-12 -6.28416937805459E-01 -1.58956348317283E+00
5.63000000000000E+00 3.30125867411270E-12 -6.44374502991272E-01 -1.60194955398987E+00
5.64000000000000E+00 3.12068566499370E-12 -6.60455928885256E-01 -1.61433562480692E+00
5.65000000000000E+00 2.95000605547940E-12 -6.76661215487411E-01 -1.62672169562396E+00
5.66000000000000E+00 2.78867687678260E-12 -6.92990362797736E-01 -1.63910776644100E+00
5.67000000000000E+00 2.63618496659290E-12 -7.09443370816230E-01 -1.65149383725805E+00
5.68000000000000E+00 2.49204487227030E-12 -7.26020239542896E-01 -1.66387990807509E+00
5.69000000000000E+00 2.35579793312310E-12 -7.42720968977733E-01 -1.67626597889213E+00
5.70000000000000E+00 2.22701199933790E-12 -7.59545559120739E-01 -1.68865204970917E+00
5.71000000000000E+00 2.10527787131620E-12 -7.76494009971916E-01 -1.70103812052622E+00
5.72000000000000E+00 1.99020880537480E-12 -7.93566321531263E-01 -1.71342419134326E+00
5.73000000000000E+00 1.88143927388450E-12 -8.10762493798782E-01 -1.72581026216030E+00
5.74000000000000E+00 1.77862379759420E-12 -8.28082526774470E-01 -1.73819633297735E+00
5.75000000000000E+00 1.68143533011780E-12 -8.45526420458328E-01 -1.75058240379439E+00
5.76000000000000E+00 1.58956541804990E-12 -8.63094174850357E-01 -1.76296847461143E+00
5.77000000000000E+00 1.50272297004410E-12 -8.80785789950556E-01 -1.77535454542847E+00
5.78000000000000E+00 1.42063245428180E-12 -8.98601265758927E-01 -1.78774061624552E+00
5.79000000000000E+00 1.34303344607120E-12 -9.16540602275467E-01 -1.80012668706256E+00
5.80000000000000E+00 1.26967979471350E-12 -9.34603799500178E-01 -1.81251275787960E+00
5.81000000000000E+00 1.20033883892270E-12 -9.52790857433059E-01 -1.82489882869665E+00
5.82000000000000E+00 1.13479021641520E-12 -9.71101776074111E-01 -1.83728489951369E+00
5.83000000000000E+00 1.07282634867990E-12 -9.89536555423333E-01 -1.84967097033073E+00
5.84000000000000E+00 1.01425113376120E-12 -1.00809519548072E+00 -1.86205704114778E+00
5.85000000000000E+00 9.58878987321210E-13 -1.02677769624629E+00 -1.87444311196482E+00
5.86000000000000E+00 9.06534491824470E-13 -1.04558405772002E+00 -1.88682918278186E+00
5.87000000000000E+00 8.57051836372560E-13 -1.06451427990193E+00 -1.89921525359890E+00
5.88000000000000E+00 8.10274289207320E-13 -1.08356836279200E+00 -1.91160132441595E+00
5.89000000000000E+00 7.66053359024370E-13 -1.10274630639024E+00 -1.92398739523299E+00
5.90000000000000E+00 7.24249238518420E-13 -1.12204811069666E+00 -1.93637346605003E+00
5.91000000000000E+00 6.84729812154690E-13 -1.14147377571125E+00 -1.94875953686708E+00
5.92000000000000E+00 6.47370042645600E-13 -1.16102330143400E+00 -1.96114560768412E+00
5.93000000000000E+00 6.12051737079960E-13 -1.18069668786493E+00 -1.97353167850116E+00
5.94000000000000E+00 5.78663170059560E-13 -1.20049393500403E+00 -1.98591774931821E+00
5.95000000000000E+00 5.47098728822540E-13 -1.22041504285129E+00 -1.99830382013525E+00
5.96000000000000E+00 5.17258351886270E-13 -1.24046001140673E+00 -2.01068989095229E+00
5.97000000000000E+00 4.89047786099470E-13 -1.26062884067034E+00 -2.02307596176933E+00
5.98000000000000E+00 4.62378027969750E-13 -1.28092153064212E+00 -2.03546203258638E+00
5.99000000000000E+00 4.37164809568180E-13 -1.30133808132207E+00 -2.04784810340342E+00
<JSON>
{
"aeval_integral": 3.9532896101875514,
"l_max": 2,
"Z_val": 4.0,
"symbol": "Si",
"aeden_integral": 13.954654497009505,
"psval_integral": 3.9532830516415545,
"Z": 14,
"aecore_integral": 10.001364886821953,
"md5": "45c393525680abc7b25445b8ec62bf83"
}
</JSON>

View File

@ -24,7 +24,9 @@ from abipy.core.kpoints import Kpoint, KpointList
from abipy.iotools import ETSF_Reader
from abipy.tools import gaussian, duck
from abipy.tools.plotting import add_fig_kwargs, get_ax_fig_plt, set_axlims
from pymatgen.phonon.bandstructure import PhononBandStructureSymmLine
from pymatgen.phonon.dos import CompletePhononDos as PmgCompletePhononDos
from pymatgen.phonon.dos import PhononDos as PmgPhononDos
__all__ = [
"PhononBands",
@ -789,7 +791,7 @@ class PhononBands(object):
elif highsym_qpts_mode == 'split':
data["highsym_qpts"] = split_non_collinear(qpoints)
elif highsym_qpts_mode == 'std':
data["highsym_qpts"] = list(six.zip(self._make_ticks_and_labels(None)))
data["highsym_qpts"] = list(six.moves.zip(*self._make_ticks_and_labels(None)))
else:
data["highsym_qpts"] = highsym_qpts
@ -810,21 +812,14 @@ class PhononBands(object):
vectors = []
for i, (qpts, phdispl_sublist) in enumerate(zip(self.split_qpoints, self.split_phdispl_cart)):
# the eigenvectors are needed (the mass factor is removed)
vect = get_dyn_mat_eigenvec(phdispl_sublist, self.structure, amu=self.amu)
# since phononwebsite will multiply again by exp(2*pi*q.r) this factor should be removed,
# because in abinit convention it is included in the eigenvectors.
for iqpt in range(len(qpts)):
q = self.qpoints[iqpt].frac_coords
for ai in range(self.num_atoms):
vect[iqpt, :, 3*ai:3*(ai + 1)] = vect[iqpt, :, 3*ai:3*(ai + 1)] * \
np.exp(-2*np.pi*1j*np.dot(self.structure[ai].frac_coords, q))
vect = np.array(phdispl_sublist)
if match_bands:
vect = vect[np.arange(vect.shape[0])[:, None, None],
self.split_matched_indices[i][...,None],
np.arange(vect.shape[2])[None, None,:]]
v = vect.reshape((len(vect), self.num_branches,self.num_atoms, 3))
v /= np.linalg.norm(v[0,0,0])
v = np.stack([v.real, v.imag], axis=-1)
vectors.extend(v.tolist())
@ -1465,11 +1460,10 @@ class PhononBands(object):
qpts.append(q)
displ.append(d)
ph_freqs = np.transpose(ph_freqs)
ph_freqs = np.transpose(ph_freqs) * abu.eV_to_THz
qpts = np.array(qpts)
displ = np.transpose(displ, (1, 0, 2, 3))
from pymatgen.phonon.bandstructure import PhononBandStructureSymmLine
return PhononBandStructureSymmLine(qpoints=qpts, frequencies=ph_freqs,
lattice=self.structure.reciprocal_lattice,
has_nac=self.non_anal_ph is not None, eigendisplacements=displ,
@ -1809,7 +1803,7 @@ class PhononDos(Function1D):
wd2kt = w / (2 * abu.kb_eVK * temp)
vals[it] = np.trapz(w * coth(wd2kt) * gw, x=w)
return Function1D(tmesh, 0.5 * vals + self.zero_point_energy)
return Function1D(tmesh, 0.5 * vals)
def get_entropy(self, tstart=5, tstop=300, num=50):
"""
@ -1926,6 +1920,14 @@ class PhononDos(Function1D):
fig.tight_layout()
return fig
def to_pymatgen(self):
"""
Creates a pymatgen PhononDos object
"""
factor = factor_ev2units("thz")
return PmgPhononDos(self.mesh*factor, self.values)
class PhdosReader(ETSF_Reader):
"""
@ -2153,10 +2155,9 @@ class PhdosFile(AbinitNcFile, Has_Structure, NotebookWriter):
set_axlims(ax, xlims, "x")
set_axlims(ax, ylims, "y")
if idir in (0, 2):
ax.set_ylabel(r'PJDOS along $L_{%d}$' % idir)
if idir == 2:
ax.set_xlabel('Frequency %s' % unit_tag(units))
ax.set_ylabel(r'PJDOS along $L_{%d}$' % idir)
if idir == 2:
ax.set_xlabel('Frequency %s' % unit_tag(units))
# Plot Type projected DOSes along reduced direction idir
cumulative = np.zeros(len(self.wmesh))
@ -2277,6 +2278,21 @@ class PhdosFile(AbinitNcFile, Has_Structure, NotebookWriter):
return self._write_nb_nbpath(nb, nbpath)
def to_pymatgen(self):
"""
Creates a pymatgen CompletePhononDos object
"""
total_dos = self.phdos.to_pymatgen()
# [natom, three, nomega] array with PH-DOS projected over atoms and reduced directions"""
pjdos_atdir = self.reader.read_pjdos_atdir()
summed_pjdos = np.sum(pjdos_atdir, axis=1)
pdoss = {site: pdos for site, pdos in zip(self.structure, summed_pjdos)}
return PmgCompletePhononDos(self.structure, total_dos, pdoss)
# FIXME: Remove. Use PhononBandsPlotter API.
@add_fig_kwargs

View File

@ -268,6 +268,8 @@ class PhononDosTest(AbipyTest):
same_phdos = PhononDos.as_phdos(tmp_path)
same_phdos == phdos
phdos.to_pymatgen()
def test_from_phdosfile(self):
"""Testing PHDOS from netcdf file."""
ncfile = PhdosFile(abidata.ref_file("trf2_5.out_PHDOS.nc"))
@ -293,8 +295,8 @@ class PhononDosTest(AbipyTest):
self.assert_almost_equal(phdos.zero_point_energy.to("Ha"), 0.0030872835637731303)
u = phdos.get_internal_energy()
self.assert_almost_equal(u.values[0], 0.16801859138305908)
self.assert_almost_equal(u.values[-1], 0.25671036732970359)
self.assert_almost_equal(u.values[0], 0.084009326574073395)
self.assert_almost_equal(u.values[-1], 0.17270110252071791)
s = phdos.get_entropy()
self.assert_almost_equal(s.values[0], 1.6270193052583423e-08)
@ -307,6 +309,8 @@ class PhononDosTest(AbipyTest):
f = phdos.get_free_energy()
self.assert_almost_equal(f.values, (u - s.mesh * s.values).values)
ncfile.to_pymatgen()
if self.has_matplotlib():
assert ncfile.plot_pjdos_type(show=False)
assert ncfile.plot_pjdos_type(units="cm-1", stacked=False, colormap="viridis", show=False)

View File

@ -3,29 +3,76 @@
from __future__ import print_function, division, unicode_literals, absolute_import
from abipy.core.mixins import Has_Structure
from abipy.core.fields import Density
from abipy.electrons.denpot import DensityFortranFile
from pymatgen.command_line.bader_caller import BaderAnalysis
from pymatgen.io.abinit.pseudos import Pseudo
from pymatgen.core.units import bohr_to_angstrom
from monty.dev import requires
from monty.os.path import which
import numpy as np
import os
import tempfile
import logging
logger = logging.getLogger(__name__)
__all__ = [
"HirshfeldCharges",
"BaderCharges"
]
class HirshfeldCharges(Has_Structure):
class Charges(Has_Structure):
"""
Base charges class, describing the atomic chrages in a DFT calculation.
The charges refer to the total charges for each atom (i.e. Z-n_electrons).
An eccess of electron has a negative charge
"""
def __init__(self, charges, structure):
self.charges = charges
def __init__(self, electron_charges, structure, reference_charges=None):
"""
Args:
electron_charges: Charges coming from the electron for each element of the structure (with negative sign)
structure: The crystal structure
reference_charges: Reference charges associated to each atom of the structure, considered as isolated
(with negative sign). Should represent either all the electrons or just the valence, depending on the
charge density used to perform the analysis.
"""
self.electron_charges = np.array(electron_charges)
self._structure = structure
self.reference_charges = np.array(reference_charges)
@property
def structure(self):
return self._structure
@property
def net_charges(self):
"""
List of net charges for each atom of the structure.
"""
if self.reference_charges is None:
raise ValueError("reference charges are required to calculate the net transfer")
return self.electron_charges - self.reference_charges
class HirshfeldCharges(Charges):
"""
Class representing the charges obtained from the Hirshfeld analysis.
The charges refer to the total charges for each atom (i.e. Z-n_electrons).
An eccess of electron has a negative charge
"""
@classmethod
def from_cut3d_outfile(cls, filepath, structure):
charges = []
"""
Generates a HirshfeldCharges object from the outputfile of cut3d and a structure.
"""
electron_charges = []
reference_charges = []
with open(filepath, 'rt') as f:
while True:
l = f.readline()
@ -40,6 +87,89 @@ class HirshfeldCharges(Has_Structure):
for i in range(len(structure)):
l = f.readline()
charges.append(float(l.split()[2]))
electron_charges.append(float(l.split()[1]))
reference_charges.append(-float(l.split()[0]))
return cls(charges, structure)
class BaderCharges(Charges):
"""
Class representing the charges obtained from the Bader analysis.
TThe charges refer to the total charges for each atom (i.e. Z-n_electrons).
An eccess of electron has a negative charge
"""
@classmethod
@requires(which("bader") or which("bader.exe"),
"BaderCharges.from_files requires the executable bader to be in the path.")
def from_files(cls, density_path, pseudopotential_paths, with_core=True, workdir=None, **kwargs):
"""
Uses the abinit density files and the bader executable from Henkelmann et al. to calculate
the bader charges of the system. If pseudopotentials are given, the atomic charges will be
extracted as well.
The extraction of the core charges may be a time consuming calculation, depending on the
size of the system. A tuning of the parameters may be required (see Density.ae_core_density_on_mesh).
Args:
density_path: Path to the abinit density file. Can be a fortran _DEN or a netCDF DEN.nc file.
In case of fortran file, requires cut3d (version >= 8.6.1) for the convertion.
pseudopotential_paths: Dictionary {element: pseudopotential path} for all the elements present
in the system.
with_core: Core charges will be extracted from the pseudopotentials with the
Density.ae_core_density_on_mesh method. Requires pseudopotential_paths.
workdir: Working directory. If None, a temporary directory is created.
**kwargs: arguments passed to the method Density.ae_core_density_on_mesh
Returns:
An instance of BaderCharges
"""
# read the valence density
# if density is not a netcdf file, convert with cut3d
if not density_path.endswith('.nc'):
dff = DensityFortranFile.from_file(density_path)
density = dff.get_density()
else:
density = Density.from_file(density_path)
structure = density.structure
atomic_charges = None
if with_core:
if not pseudopotential_paths:
raise ValueError("pseudopotentials should be provided to extract the core densities")
try:
from pseudo_dojo.ppcodes.oncvpsp import psp8_get_densities
except ImportError as exc:
print("PseudoDojo package required to extract core densities. "
"Please install it with `pip install pseudo_dojo`")
raise exc
# extract core charge from pseudopotentials on a radial grid in the correct units
rhoc = {}
for specie, ppath in pseudopotential_paths.items():
r = psp8_get_densities(ppath)
rhoc[specie] = [r.rmesh * bohr_to_angstrom, r.aecore / (4.0 * np.pi) / (bohr_to_angstrom ** 3)]
workdir = tempfile.mkdtemp() if workdir is None else workdir
# extrapolate the core density on the density grid
core_density = Density.ae_core_density_on_mesh(density, structure, rhoc, **kwargs)
density += core_density
atomic_charges = [s.specie.Z for s in structure]
elif pseudopotential_paths:
pseudos = {k: Pseudo.from_file(p) for k, p in pseudopotential_paths.items()}
atomic_charges = [pseudos[s.specie.name].Z_val for s in structure]
chgcar_path = os.path.join(workdir, 'CHGCAR')
density.to_chgcar(chgcar_path)
ba = BaderAnalysis(chgcar_path)
charges = [ba.get_charge(i) for i in range(len(structure))]
return cls(charges, structure, atomic_charges)

View File

@ -388,7 +388,7 @@ class DensityFortranFile(AbinitFortranFile):
Args:
workdir: directory in which cut3d is executed.
"""
workdir = tempfile.mkdtemp() if workdir is None else workdir
workdir = os.path.abspath(tempfile.mkdtemp() if workdir is None else workdir)
output_filepath = os.path.join(workdir, "field_CUT3DDENPOT.nc")
# FIXME Converters with nspden > 1 won't work since cut3d asks for the ispden index.
cut3d_input = Cut3DInput(infile_path=self.filepath, output_filepath=output_filepath,

View File

@ -8,7 +8,7 @@ import numpy as np
import abipy.data as data
from abipy.core.testing import AbipyTest
from abipy.core.fields import Density
from abipy.core.fields import Density, core_density_from_file
from abipy.core.mesh3d import Mesh3D
#filepath = data.ref_file("si_DEN-etsf.nc")
@ -28,27 +28,28 @@ from abipy.core.mesh3d import Mesh3D
#
#
# for maxr in [0.01, 0.1, 0.3, 0.5, 1.0, 8.0]:
class TestCubeUtils(AbipyTest):
@unittest.skip("Si.in.rhoc file is missing!")
def test_aecore_density(self):
"""Testing ae_core_density_on_mesh."""
maxr = 8.0
ae_density_new = Density.ae_core_density_on_mesh(valence_density=density, structure=density.structure,
rhoc_files={'Si': 'Si.in.rhoc'}, maxr=maxr,
method='mesh3d_dist_gridpoints', small_dist_factor=5.0,
small_dist_mesh=(20, 20, 20))
ae_density = Density.ae_core_density_on_mesh(valence_density=density, structure=density.structure,
rhoc_files={'Si': 'Si.in.rhoc'}, maxr=maxr,
method='get_sites_in_sphere', small_dist_factor=5.0,
small_dist_mesh=(20, 20, 20))
print(ae_density_new.nelect_updown)
print(ae_density.nelect_updown)
#
#
# class TestCubeUtils(AbipyTest):
#
# @unittest.skip("Si.in.rhoc file is missing!")
# def test_aecore_density(self):
# """Testing ae_core_density_on_mesh."""
# maxr = 8.0
# rhoc = {'Si': core_density_from_file('Si.in.rhoc')}
# ae_density_new = Density.ae_core_density_on_mesh(valence_density=density, structure=density.structure,
# rhoc=rhoc, maxr=maxr,
# method='mesh3d_dist_gridpoints', small_dist_factor=5.0,
# small_dist_mesh=(20, 20, 20))
#
# ae_density = Density.ae_core_density_on_mesh(valence_density=density, structure=density.structure,
# rhoc=rhoc, maxr=maxr,
# method='get_sites_in_sphere', small_dist_factor=5.0,
# small_dist_mesh=(20, 20, 20))
#
# print(ae_density_new.nelect_updown)
# print(ae_density.nelect_updown)
#
# for maxr in [0.9]:
# print('maxr', maxr)
# ae_density_new = Density.ae_core_density_on_mesh(valence_density=density, structure=density.structure,