diff --git a/packages/core.cmake b/packages/core.cmake index 1ea9572de..f127f6ae8 100644 --- a/packages/core.cmake +++ b/packages/core.cmake @@ -1,576 +1,577 @@ #=============================================================================== # @file core.cmake # # @author Guillaume Anciaux # @author Nicolas Richart # # @date creation: Mon Nov 21 2011 # @date last modification: Mon Jan 18 2016 # # @brief package description for core # # @section LICENSE # # Copyright (©) 2010-2012, 2014, 2015 EPFL (Ecole Polytechnique Fédérale de # Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des # Solides) # # Akantu is free software: you can redistribute it and/or modify it under the # terms of the GNU Lesser General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) any # later version. # # Akantu 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 Lesser General Public License for more # details. # # You should have received a copy of the GNU Lesser General Public License # along with Akantu. If not, see . # #=============================================================================== package_declare(core NOT_OPTIONAL DESCRIPTION "core package for Akantu" FEATURES_PUBLIC cxx_strong_enums cxx_defaulted_functions cxx_deleted_functions FEATURES_PRIVATE cxx_auto_type cxx_lambdas cxx_nullptr cxx_delegated_constructors cxx_range_for ) package_declare_sources(core common/aka_array.cc common/aka_array.hh common/aka_array_tmpl.hh common/aka_blas_lapack.hh common/aka_circular_array.hh common/aka_circular_array_inline_impl.cc common/aka_common.cc common/aka_common.hh common/aka_common_inline_impl.cc common/aka_csr.hh common/aka_element_classes_info_inline_impl.cc common/aka_error.cc common/aka_error.hh common/aka_event_handler_manager.hh common/aka_extern.cc common/aka_fwd.hh common/aka_grid_dynamic.hh common/aka_math.cc common/aka_math.hh common/aka_math_tmpl.hh common/aka_memory.cc common/aka_memory.hh common/aka_memory_inline_impl.cc common/aka_random_generator.hh common/aka_safe_enum.hh common/aka_static_memory.cc common/aka_static_memory.hh common/aka_static_memory_inline_impl.cc common/aka_static_memory_tmpl.hh common/aka_typelist.hh common/aka_types.hh common/aka_visitor.hh common/aka_voigthelper.hh common/aka_voigthelper_tmpl.hh common/aka_voigthelper.cc common/aka_warning.hh common/aka_warning_restore.hh fe_engine/element_class.cc fe_engine/element_class.hh fe_engine/element_class_tmpl.hh fe_engine/element_classes/element_class_hexahedron_8_inline_impl.cc fe_engine/element_classes/element_class_hexahedron_20_inline_impl.cc fe_engine/element_classes/element_class_pentahedron_6_inline_impl.cc fe_engine/element_classes/element_class_pentahedron_15_inline_impl.cc fe_engine/element_classes/element_class_point_1_inline_impl.cc fe_engine/element_classes/element_class_quadrangle_4_inline_impl.cc fe_engine/element_classes/element_class_quadrangle_8_inline_impl.cc fe_engine/element_classes/element_class_segment_2_inline_impl.cc fe_engine/element_classes/element_class_segment_3_inline_impl.cc fe_engine/element_classes/element_class_tetrahedron_10_inline_impl.cc fe_engine/element_classes/element_class_tetrahedron_4_inline_impl.cc fe_engine/element_classes/element_class_triangle_3_inline_impl.cc fe_engine/element_classes/element_class_triangle_6_inline_impl.cc fe_engine/fe_engine.cc fe_engine/fe_engine.hh fe_engine/fe_engine_inline_impl.cc fe_engine/fe_engine_template.hh fe_engine/fe_engine_template_tmpl.hh fe_engine/geometrical_element.cc fe_engine/gauss_integration.cc fe_engine/gauss_integration_tmpl.hh fe_engine/integrator.hh fe_engine/integrator_gauss.hh fe_engine/integrator_gauss_inline_impl.cc fe_engine/interpolation_element.cc fe_engine/interpolation_element_tmpl.hh fe_engine/integration_point.hh fe_engine/shape_functions.hh fe_engine/shape_functions_inline_impl.cc fe_engine/shape_lagrange.cc fe_engine/shape_lagrange.hh fe_engine/shape_lagrange_inline_impl.cc fe_engine/shape_linked.cc fe_engine/shape_linked.hh fe_engine/shape_linked_inline_impl.cc fe_engine/element.hh io/dumper/dumpable.hh io/dumper/dumpable.cc io/dumper/dumpable_dummy.hh io/dumper/dumpable_inline_impl.hh io/dumper/dumper_field.hh io/dumper/dumper_material_padders.hh io/dumper/dumper_filtered_connectivity.hh io/dumper/dumper_element_partition.hh io/mesh_io.cc io/mesh_io.hh io/mesh_io/mesh_io_abaqus.cc io/mesh_io/mesh_io_abaqus.hh io/mesh_io/mesh_io_diana.cc io/mesh_io/mesh_io_diana.hh io/mesh_io/mesh_io_msh.cc io/mesh_io/mesh_io_msh.hh io/model_io.cc io/model_io.hh io/parser/algebraic_parser.hh io/parser/input_file_parser.hh io/parser/parsable.cc io/parser/parsable.hh io/parser/parsable_tmpl.hh io/parser/parser.cc io/parser/parser_real.cc io/parser/parser_random.cc io/parser/parser_types.cc io/parser/parser_input_files.cc io/parser/parser.hh io/parser/parser_tmpl.hh io/parser/parser_grammar_tmpl.hh io/parser/cppargparse/cppargparse.hh io/parser/cppargparse/cppargparse.cc io/parser/cppargparse/cppargparse_tmpl.hh io/parser/parameter_registry.cc io/parser/parameter_registry.hh io/parser/parameter_registry_tmpl.hh mesh/element_group.cc mesh/element_group.hh mesh/element_group_inline_impl.cc mesh/element_type_map.hh mesh/element_type_map_tmpl.hh mesh/element_type_map_filter.hh mesh/group_manager.cc mesh/group_manager.hh mesh/group_manager_inline_impl.cc mesh/mesh.cc mesh/mesh.hh mesh/mesh_accessor.hh mesh/mesh_accessor.cc mesh/mesh_events.hh mesh/mesh_filter.hh mesh/mesh_data.cc mesh/mesh_data.hh mesh/mesh_data_tmpl.hh mesh/mesh_inline_impl.cc mesh/node_group.cc mesh/node_group.hh mesh/node_group_inline_impl.cc mesh_utils/mesh_partition.cc mesh_utils/mesh_partition.hh mesh_utils/mesh_partition/mesh_partition_mesh_data.cc mesh_utils/mesh_partition/mesh_partition_mesh_data.hh mesh_utils/mesh_partition/mesh_partition_scotch.hh mesh_utils/mesh_utils_pbc.cc mesh_utils/mesh_utils.cc mesh_utils/mesh_utils.hh mesh_utils/mesh_utils_distribution.cc mesh_utils/mesh_utils_distribution.hh mesh_utils/mesh_utils.hh mesh_utils/mesh_utils_inline_impl.cc mesh_utils/global_ids_updater.hh mesh_utils/global_ids_updater.cc mesh_utils/global_ids_updater_inline_impl.cc model/boundary_condition.hh model/boundary_condition_functor.hh model/boundary_condition_functor_inline_impl.cc model/boundary_condition_tmpl.hh model/dof_manager.cc model/dof_manager.hh model/dof_manager_default.cc model/dof_manager_default.hh model/dof_manager_default_inline_impl.cc model/dof_manager_inline_impl.cc model/model_solver.cc model/model_solver.hh model/model_solver_tmpl.hh model/non_linear_solver.cc model/non_linear_solver.hh model/non_linear_solver_default.hh model/non_linear_solver_lumped.cc model/non_linear_solver_lumped.hh model/solver_callback.hh model/solver_callback.cc model/time_step_solver.hh model/time_step_solvers/time_step_solver.cc model/time_step_solvers/time_step_solver_default.cc model/time_step_solvers/time_step_solver_default.hh model/time_step_solvers/time_step_solver_default_explicit.hh model/non_linear_solver_callback.hh model/time_step_solvers/time_step_solver_default_solver_callback.hh model/integration_scheme/generalized_trapezoidal.cc model/integration_scheme/generalized_trapezoidal.hh model/integration_scheme/integration_scheme.cc model/integration_scheme/integration_scheme.hh model/integration_scheme/integration_scheme_1st_order.cc model/integration_scheme/integration_scheme_1st_order.hh model/integration_scheme/integration_scheme_2nd_order.cc model/integration_scheme/integration_scheme_2nd_order.hh model/integration_scheme/newmark-beta.cc model/integration_scheme/newmark-beta.hh model/integration_scheme/pseudo_time.cc model/integration_scheme/pseudo_time.hh model/model.cc model/model.hh model/model_inline_impl.cc model/solid_mechanics/material.cc model/solid_mechanics/material.hh model/solid_mechanics/material_inline_impl.cc model/solid_mechanics/material_selector.hh model/solid_mechanics/material_selector_tmpl.hh model/solid_mechanics/materials/internal_field.hh model/solid_mechanics/materials/internal_field_tmpl.hh model/solid_mechanics/materials/random_internal_field.hh model/solid_mechanics/materials/random_internal_field_tmpl.hh model/solid_mechanics/solid_mechanics_model.cc model/solid_mechanics/solid_mechanics_model.hh model/solid_mechanics/solid_mechanics_model_inline_impl.cc model/solid_mechanics/solid_mechanics_model_mass.cc model/solid_mechanics/solid_mechanics_model_material.cc model/solid_mechanics/solid_mechanics_model_tmpl.hh model/solid_mechanics/solid_mechanics_model_event_handler.hh model/solid_mechanics/materials/plane_stress_toolbox.hh model/solid_mechanics/materials/plane_stress_toolbox_tmpl.hh model/solid_mechanics/materials/material_core_includes.hh model/solid_mechanics/materials/material_elastic.cc model/solid_mechanics/materials/material_elastic.hh model/solid_mechanics/materials/material_elastic_inline_impl.cc model/solid_mechanics/materials/material_thermal.cc model/solid_mechanics/materials/material_thermal.hh model/solid_mechanics/materials/material_elastic_linear_anisotropic.cc model/solid_mechanics/materials/material_elastic_linear_anisotropic.hh model/solid_mechanics/materials/material_elastic_orthotropic.cc model/solid_mechanics/materials/material_elastic_orthotropic.hh model/solid_mechanics/materials/material_damage/material_damage.hh model/solid_mechanics/materials/material_damage/material_damage_tmpl.hh model/solid_mechanics/materials/material_damage/material_marigo.cc model/solid_mechanics/materials/material_damage/material_marigo.hh model/solid_mechanics/materials/material_damage/material_marigo_inline_impl.cc model/solid_mechanics/materials/material_damage/material_mazars.cc model/solid_mechanics/materials/material_damage/material_mazars.hh model/solid_mechanics/materials/material_damage/material_mazars_inline_impl.cc model/solid_mechanics/materials/material_finite_deformation/material_neohookean.cc model/solid_mechanics/materials/material_finite_deformation/material_neohookean.hh model/solid_mechanics/materials/material_finite_deformation/material_neohookean_inline_impl.cc model/solid_mechanics/materials/material_plastic/material_plastic.cc model/solid_mechanics/materials/material_plastic/material_plastic.hh model/solid_mechanics/materials/material_plastic/material_plastic_inline_impl.cc model/solid_mechanics/materials/material_plastic/material_linear_isotropic_hardening.cc model/solid_mechanics/materials/material_plastic/material_linear_isotropic_hardening.hh model/solid_mechanics/materials/material_plastic/material_linear_isotropic_hardening_inline_impl.cc model/solid_mechanics/materials/material_viscoelastic/material_standard_linear_solid_deviatoric.cc model/solid_mechanics/materials/material_viscoelastic/material_standard_linear_solid_deviatoric.hh model/common/neighborhood_base.hh model/common/neighborhood_base.cc model/common/neighborhood_base_inline_impl.cc model/common/neighborhoods_criterion_evaluation/neighborhood_max_criterion.hh model/common/neighborhoods_criterion_evaluation/neighborhood_max_criterion.cc model/common/neighborhoods_criterion_evaluation/neighborhood_max_criterion_inline_impl.cc solver/sparse_solver.cc solver/sparse_solver.hh solver/sparse_solver_inline_impl.cc solver/sparse_matrix.cc solver/sparse_matrix.hh solver/sparse_matrix_inline_impl.cc solver/sparse_matrix_aij.cc solver/sparse_matrix_aij.hh solver/sparse_matrix_aij_inline_impl.cc + solver/terms_to_assemble.hh synchronizer/communication_descriptor_tmpl.hh synchronizer/communications_tmpl.hh synchronizer/communication_buffer.hh synchronizer/communication_buffer_inline_impl.cc synchronizer/communication_descriptor.hh synchronizer/communication_tag.hh synchronizer/communications.hh synchronizer/data_accessor.cc synchronizer/data_accessor.hh synchronizer/element_synchronizer.cc synchronizer/element_synchronizer.hh synchronizer/node_synchronizer.cc synchronizer/node_synchronizer.hh synchronizer/dof_synchronizer.cc synchronizer/dof_synchronizer.hh synchronizer/dof_synchronizer_inline_impl.cc synchronizer/element_info_per_processor.cc synchronizer/element_info_per_processor.hh synchronizer/element_info_per_processor_tmpl.hh synchronizer/filtered_synchronizer.cc synchronizer/filtered_synchronizer.hh synchronizer/grid_synchronizer.cc synchronizer/grid_synchronizer.hh synchronizer/master_element_info_per_processor.cc synchronizer/node_info_per_processor.cc synchronizer/node_info_per_processor.hh synchronizer/real_static_communicator.hh synchronizer/slave_element_info_per_processor.cc synchronizer/static_communicator.cc synchronizer/static_communicator.hh synchronizer/static_communicator_dummy.hh synchronizer/static_communicator_inline_impl.hh synchronizer/synchronizer.cc synchronizer/synchronizer.hh synchronizer/synchronizer_impl.hh synchronizer/synchronizer_impl_tmpl.hh synchronizer/synchronizer_registry.cc synchronizer/synchronizer_registry.hh synchronizer/synchronizer_tmpl.hh ) package_declare_elements(core ELEMENT_TYPES _point_1 _segment_2 _segment_3 _triangle_3 _triangle_6 _quadrangle_4 _quadrangle_8 _tetrahedron_4 _tetrahedron_10 _pentahedron_6 _pentahedron_15 _hexahedron_8 _hexahedron_20 KIND regular GEOMETRICAL_TYPES _gt_point _gt_segment_2 _gt_segment_3 _gt_triangle_3 _gt_triangle_6 _gt_quadrangle_4 _gt_quadrangle_8 _gt_tetrahedron_4 _gt_tetrahedron_10 _gt_hexahedron_8 _gt_hexahedron_20 _gt_pentahedron_6 _gt_pentahedron_15 INTERPOLATION_TYPES _itp_lagrange_point_1 _itp_lagrange_segment_2 _itp_lagrange_segment_3 _itp_lagrange_triangle_3 _itp_lagrange_triangle_6 _itp_lagrange_quadrangle_4 _itp_serendip_quadrangle_8 _itp_lagrange_tetrahedron_4 _itp_lagrange_tetrahedron_10 _itp_lagrange_hexahedron_8 _itp_serendip_hexahedron_20 _itp_lagrange_pentahedron_6 _itp_lagrange_pentahedron_15 GEOMETRICAL_SHAPES _gst_point _gst_triangle _gst_square _gst_prism GAUSS_INTEGRATION_TYPES _git_point _git_segment _git_triangle _git_tetrahedron _git_pentahedron INTERPOLATION_KIND _itk_lagrangian FE_ENGINE_LISTS gradient_on_integration_points interpolate_on_integration_points interpolate compute_normals_on_integration_points inverse_map contains compute_shapes compute_shapes_derivatives get_shapes_derivatives ) package_declare_material_infos(core LIST AKANTU_CORE_MATERIAL_LIST INCLUDE material_core_includes.hh ) package_declare_documentation_files(core manual.sty manual.cls manual.tex manual-macros.sty manual-titlepages.tex manual-introduction.tex manual-gettingstarted.tex manual-io.tex manual-feengine.tex manual-solidmechanicsmodel.tex manual-constitutive-laws.tex manual-lumping.tex manual-elements.tex manual-appendix-elements.tex manual-appendix-materials.tex manual-appendix-packages.tex manual-backmatter.tex manual-bibliography.bib manual-bibliographystyle.bst figures/bc_and_ic_example.pdf figures/boundary.pdf figures/boundary.svg figures/dirichlet.pdf figures/dirichlet.svg figures/doc_wheel.pdf figures/doc_wheel.svg figures/dynamic_analysis.png figures/explicit_dynamic.pdf figures/explicit_dynamic.svg figures/static.pdf figures/static.svg figures/hooke_law.pdf figures/hot-point-1.png figures/hot-point-2.png figures/implicit_dynamic.pdf figures/implicit_dynamic.svg figures/insertion.pdf figures/interpolate.pdf figures/interpolate.svg figures/problemDomain.pdf_tex figures/problemDomain.pdf figures/static_analysis.png figures/stress_strain_el.pdf figures/tangent.pdf figures/tangent.svg figures/vectors.pdf figures/vectors.svg figures/stress_strain_neo.pdf figures/visco_elastic_law.pdf figures/isotropic_hardening_plasticity.pdf figures/stress_strain_visco.pdf figures/elements/hexahedron_8.pdf figures/elements/hexahedron_8.svg figures/elements/quadrangle_4.pdf figures/elements/quadrangle_4.svg figures/elements/quadrangle_8.pdf figures/elements/quadrangle_8.svg figures/elements/segment_2.pdf figures/elements/segment_2.svg figures/elements/segment_3.pdf figures/elements/segment_3.svg figures/elements/tetrahedron_10.pdf figures/elements/tetrahedron_10.svg figures/elements/tetrahedron_4.pdf figures/elements/tetrahedron_4.svg figures/elements/triangle_3.pdf figures/elements/triangle_3.svg figures/elements/triangle_6.pdf figures/elements/triangle_6.svg figures/elements/xtemp.pdf ) package_declare_documentation(core "This package is the core engine of \\akantu. It depends on:" "\\begin{itemize}" "\\item A C++ compiler (\\href{http://gcc.gnu.org/}{GCC} >= 4, or \\href{https://software.intel.com/en-us/intel-compilers}{Intel})." "\\item The cross-platform, open-source \\href{http://www.cmake.org/}{CMake} build system." "\\item The \\href{http://www.boost.org/}{Boost} C++ portable libraries." "\\item The \\href{http://www.zlib.net/}{zlib} compression library." "\\end{itemize}" "" "Under Ubuntu (14.04 LTS) the installation can be performed using the commands:" "\\begin{command}" " > sudo apt-get install cmake libboost-dev zlib1g-dev g++" "\\end{command}" "" "Under Mac OS X the installation requires the following steps:" "\\begin{itemize}" "\\item Install Xcode" "\\item Install the command line tools." "\\item Install the MacPorts project which allows to automatically" "download and install opensource packages." "\\end{itemize}" "Then the following commands should be typed in a terminal:" "\\begin{command}" " > sudo port install cmake gcc48 boost" "\\end{command}" ) find_program(READLINK_COMMAND readlink) find_program(ADDR2LINE_COMMAND addr2line) find_program(PATCH_COMMAND patch) mark_as_advanced(READLINK_COMMAND) mark_as_advanced(ADDR2LINE_COMMAND) include(CheckFunctionExists) check_function_exists(clock_gettime _clock_gettime) include(CheckCXXSymbolExists) check_cxx_symbol_exists(strdup cstring AKANTU_HAS_STRDUP) if(NOT _clock_gettime) set(AKANTU_USE_OBSOLETE_GETTIMEOFDAY ON CACHE INTERNAL "" FORCE) else() set(AKANTU_USE_OBSOLETE_GETTIMEOFDAY OFF CACHE INTERNAL "" FORCE) endif() package_declare_extra_files_to_package(core SOURCES common/aka_element_classes_info.hh.in common/aka_config.hh.in model/solid_mechanics/material_list.hh.in ) if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.9)) package_set_compile_flags(core CXX "-Wno-undefined-var-template") endif() if(DEFINED AKANTU_CXX11_FLAGS) package_declare(core_cxx11 NOT_OPTIONAL DESCRIPTION "C++ 11 additions for Akantu core" COMPILE_FLAGS CXX "${AKANTU_CXX11_FLAGS}") if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.6") set(AKANTU_CORE_CXX11 OFF CACHE BOOL "C++ 11 additions for Akantu core - not supported by the selected compiler" FORCE) endif() endif() package_declare_documentation(core_cxx11 "This option activates some features of the C++11 standard. This is usable with GCC>=4.7 or Intel>=13.") else() if(CMAKE_VERSION VERSION_LESS 3.1) message(FATAL_ERROR "Since version 3.0 Akantu requires at least c++11 capable compiler") endif() endif() diff --git a/src/fe_engine/fe_engine.hh b/src/fe_engine/fe_engine.hh index b662f5305..046eab625 100644 --- a/src/fe_engine/fe_engine.hh +++ b/src/fe_engine/fe_engine.hh @@ -1,405 +1,385 @@ /** * @file fe_engine.hh * * @author Guillaume Anciaux * @author Nicolas Richart * * @date creation: Fri Jun 18 2010 * @date last modification: Thu Oct 22 2015 * * @brief FEM class * * @section LICENSE * * Copyright (©) 2010-2012, 2014, 2015 EPFL (Ecole Polytechnique Fédérale de * Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des * Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #ifndef __AKANTU_FE_ENGINE_HH__ #define __AKANTU_FE_ENGINE_HH__ /* -------------------------------------------------------------------------- */ #include "aka_memory.hh" -#include "mesh.hh" -#include "element_class.hh" -#include "integration_point.hh" - +#include "element_type_map.hh" /* -------------------------------------------------------------------------- */ + namespace akantu { - class Integrator; - class ShapeFunctions; - class DOFManager; +class Mesh; +class Integrator; +class ShapeFunctions; +class DOFManager; +class Element; } /* -------------------------------------------------------------------------- */ __BEGIN_AKANTU__ /* -------------------------------------------------------------------------- */ /** - * The generic FEEngine class derived in a FEEngineTemplate class containing the + * The generic FEEngine class derived in a FEEngineTemplate class + * containing the * shape functions and the integration method */ class FEEngine : protected Memory { /* ------------------------------------------------------------------------ */ /* Constructors/Destructors */ /* ------------------------------------------------------------------------ */ public: - - FEEngine(Mesh & mesh, UInt spatial_dimension = _all_dimensions, - ID id = "fem", MemoryID memory_id = 0); + FEEngine(Mesh & mesh, UInt spatial_dimension = _all_dimensions, ID id = "fem", + MemoryID memory_id = 0); virtual ~FEEngine(); /* ------------------------------------------------------------------------ */ /* Methods */ /* ------------------------------------------------------------------------ */ public: /// pre-compute all the shape functions, their derivatives and the jacobians - virtual void initShapeFunctions(const GhostType & ghost_type = _not_ghost) = 0; + virtual void + initShapeFunctions(const GhostType & ghost_type = _not_ghost) = 0; /// extract the nodal values and store them per element - template - static void extractNodalToElementField(const Mesh & mesh, - const Array & nodal_f, - Array & elemental_f, - const ElementType & type, - const GhostType & ghost_type = _not_ghost, - const Array & filter_elements = empty_filter); + template + static void extractNodalToElementField( + const Mesh & mesh, const Array & nodal_f, Array & elemental_f, + const ElementType & type, const GhostType & ghost_type = _not_ghost, + const Array & filter_elements = empty_filter); /// filter a field - template - static void filterElementalData(const Mesh & mesh, - const Array & quad_f, - Array & filtered_f, - const ElementType & type, - const GhostType & ghost_type = _not_ghost, - const Array & filter_elements = empty_filter); - - + template + static void + filterElementalData(const Mesh & mesh, const Array & quad_f, + Array & filtered_f, const ElementType & type, + const GhostType & ghost_type = _not_ghost, + const Array & filter_elements = empty_filter); /* ------------------------------------------------------------------------ */ /* Integration method bridges */ /* ------------------------------------------------------------------------ */ /// integrate f for all elements of type "type" - virtual void integrate(const Array & f, - Array &intf, - UInt nb_degree_of_freedom, - const ElementType & type, - const GhostType & ghost_type = _not_ghost, - const Array & filter_elements = empty_filter) const = 0; + virtual void + integrate(const Array & f, Array & intf, + UInt nb_degree_of_freedom, const ElementType & type, + const GhostType & ghost_type = _not_ghost, + const Array & filter_elements = empty_filter) const = 0; /// integrate a scalar value f on all elements of type "type" - virtual Real integrate(const Array & f, - const ElementType & type, - const GhostType & ghost_type = _not_ghost, - const Array & filter_elements = empty_filter) const = 0; - - /// integrate f for all integration points of type "type" but don't sum over all integration points - virtual void integrateOnIntegrationPoints(const Array & f, - Array &intf, - UInt nb_degree_of_freedom, - const ElementType & type, - const GhostType & ghost_type = _not_ghost, - const Array & filter_elements = empty_filter) const = 0; + virtual Real + integrate(const Array & f, const ElementType & type, + const GhostType & ghost_type = _not_ghost, + const Array & filter_elements = empty_filter) const = 0; + + /// integrate f for all integration points of type "type" but don't sum over + /// all integration points + virtual void integrateOnIntegrationPoints( + const Array & f, Array & intf, UInt nb_degree_of_freedom, + const ElementType & type, const GhostType & ghost_type = _not_ghost, + const Array & filter_elements = empty_filter) const = 0; /// integrate one element scalar value on all elements of type "type" - virtual Real integrate(const Vector & f, - const ElementType & type, - UInt index, const GhostType & ghost_type = _not_ghost) const = 0; - + virtual Real integrate(const Vector & f, const ElementType & type, + UInt index, + const GhostType & ghost_type = _not_ghost) const = 0; - /* ------------------------------------------------------------------------ */ - /* compatibility with old FEEngine fashion */ - /* ------------------------------------------------------------------------ */ +/* ------------------------------------------------------------------------ */ +/* compatibility with old FEEngine fashion */ +/* ------------------------------------------------------------------------ */ #ifndef SWIG /// get the number of integration points - virtual UInt getNbIntegrationPoints(const ElementType & type, - const GhostType & ghost_type = _not_ghost) const = 0; + virtual UInt + getNbIntegrationPoints(const ElementType & type, + const GhostType & ghost_type = _not_ghost) const = 0; /// get the precomputed shapes - const virtual Array & getShapes(const ElementType & type, - const GhostType & ghost_type = _not_ghost, - UInt id = 0) const = 0; + const virtual Array & + getShapes(const ElementType & type, const GhostType & ghost_type = _not_ghost, + UInt id = 0) const = 0; /// get the derivatives of shapes - const virtual Array & getShapesDerivatives(const ElementType & type, - const GhostType & ghost_type = _not_ghost, - UInt id = 0) const = 0; + const virtual Array & + getShapesDerivatives(const ElementType & type, + const GhostType & ghost_type = _not_ghost, + UInt id = 0) const = 0; /// get integration points - const virtual Matrix & getIntegrationPoints(const ElementType & type, - const GhostType & ghost_type = _not_ghost) const = 0; + const virtual Matrix & + getIntegrationPoints(const ElementType & type, + const GhostType & ghost_type = _not_ghost) const = 0; #endif /* ------------------------------------------------------------------------ */ /* Shape method bridges */ /* ------------------------------------------------------------------------ */ - /// Compute the gradient nablauq on the integration points of an element type from nodal values u - virtual - void gradientOnIntegrationPoints(const Array &u, - Array &nablauq, - const UInt nb_degree_of_freedom, - const ElementType & type, - const GhostType & ghost_type = _not_ghost, - const Array & filter_elements = empty_filter) const = 0; - - /// Interpolate a nodal field u at the integration points of an element type -> uq - virtual - void interpolateOnIntegrationPoints(const Array &u, - Array &uq, - UInt nb_degree_of_freedom, - const ElementType & type, - const GhostType & ghost_type = _not_ghost, - const Array & filter_elements = empty_filter) const = 0; - - /// Interpolate a nodal field u at the integration points of many element types -> uq - virtual - void interpolateOnIntegrationPoints(const Array & u, - ElementTypeMapArray & uq, - const ElementTypeMapArray * filter_elements = NULL) const = 0; - - /// Compute the interpolation point position in the global coordinates for many element types - virtual - void computeIntegrationPointsCoordinates(ElementTypeMapArray & integration_points_coordinates, - const ElementTypeMapArray * filter_elements = NULL) const = 0; - - /// Compute the interpolation point position in the global coordinates for an element type - virtual - void computeIntegrationPointsCoordinates(Array & integration_points_coordinates, - const ElementType & type, - const GhostType & ghost_type = _not_ghost, - const Array & filter_elements = empty_filter) const = 0; - - /// Build pre-computed matrices for interpolation of field form integration points at other given positions (interpolation_points) - virtual - void initElementalFieldInterpolationFromIntegrationPoints(const ElementTypeMapArray & interpolation_points_coordinates, - ElementTypeMapArray & interpolation_points_coordinates_matrices, - ElementTypeMapArray & integration_points_coordinates_inv_matrices, - const ElementTypeMapArray * element_filter) const = 0; - - /// interpolate field at given position (interpolation_points) from given values of this field at integration points (field) - virtual - void interpolateElementalFieldFromIntegrationPoints(const ElementTypeMapArray & field, - const ElementTypeMapArray & interpolation_points_coordinates, - ElementTypeMapArray & result, - const GhostType ghost_type, - const ElementTypeMapArray * element_filter) const = 0; - - /// Interpolate field at given position from given values of this field at integration points (field) - /// using matrices precomputed with initElementalFieldInterplationFromIntegrationPoints - virtual - void interpolateElementalFieldFromIntegrationPoints(const ElementTypeMapArray & field, - const ElementTypeMapArray & interpolation_points_coordinates_matrices, - const ElementTypeMapArray & integration_points_coordinates_inv_matrices, - ElementTypeMapArray & result, - const GhostType ghost_type, - const ElementTypeMapArray * element_filter) const = 0; + /// Compute the gradient nablauq on the integration points of an element type + /// from nodal values u + virtual void gradientOnIntegrationPoints( + const Array & u, Array & nablauq, + const UInt nb_degree_of_freedom, const ElementType & type, + const GhostType & ghost_type = _not_ghost, + const Array & filter_elements = empty_filter) const = 0; + + /// Interpolate a nodal field u at the integration points of an element type + /// -> uq + virtual void interpolateOnIntegrationPoints( + const Array & u, Array & uq, UInt nb_degree_of_freedom, + const ElementType & type, const GhostType & ghost_type = _not_ghost, + const Array & filter_elements = empty_filter) const = 0; + + /// Interpolate a nodal field u at the integration points of many element + /// types -> uq + virtual void interpolateOnIntegrationPoints( + const Array & u, ElementTypeMapArray & uq, + const ElementTypeMapArray * filter_elements = NULL) const = 0; + + /// Compute the interpolation point position in the global coordinates for + /// many element types + virtual void computeIntegrationPointsCoordinates( + ElementTypeMapArray & integration_points_coordinates, + const ElementTypeMapArray * filter_elements = NULL) const = 0; + + /// Compute the interpolation point position in the global coordinates for an + /// element type + virtual void computeIntegrationPointsCoordinates( + Array & integration_points_coordinates, const ElementType & type, + const GhostType & ghost_type = _not_ghost, + const Array & filter_elements = empty_filter) const = 0; + + /// Build pre-computed matrices for interpolation of field form integration + /// points at other given positions (interpolation_points) + virtual void initElementalFieldInterpolationFromIntegrationPoints( + const ElementTypeMapArray & interpolation_points_coordinates, + ElementTypeMapArray & interpolation_points_coordinates_matrices, + ElementTypeMapArray & integration_points_coordinates_inv_matrices, + const ElementTypeMapArray * element_filter) const = 0; + + /// interpolate field at given position (interpolation_points) from given + /// values of this field at integration points (field) + virtual void interpolateElementalFieldFromIntegrationPoints( + const ElementTypeMapArray & field, + const ElementTypeMapArray & interpolation_points_coordinates, + ElementTypeMapArray & result, const GhostType ghost_type, + const ElementTypeMapArray * element_filter) const = 0; + + /// Interpolate field at given position from given values of this field at + /// integration points (field) + /// using matrices precomputed with + /// initElementalFieldInterplationFromIntegrationPoints + virtual void interpolateElementalFieldFromIntegrationPoints( + const ElementTypeMapArray & field, + const ElementTypeMapArray & + interpolation_points_coordinates_matrices, + const ElementTypeMapArray & + integration_points_coordinates_inv_matrices, + ElementTypeMapArray & result, const GhostType ghost_type, + const ElementTypeMapArray * element_filter) const = 0; /// interpolate on a phyiscal point inside an element - virtual - void interpolate(const Vector & real_coords, - const Matrix & nodal_values, - Vector & interpolated, - const Element & element) const = 0; + virtual void interpolate(const Vector & real_coords, + const Matrix & nodal_values, + Vector & interpolated, + const Element & element) const = 0; /// compute the shape on a provided point - virtual - void computeShapes(const Vector & real_coords, - UInt elem, - const ElementType & type, - Vector & shapes, - const GhostType & ghost_type = _not_ghost) const = 0; + virtual void + computeShapes(const Vector & real_coords, UInt elem, + const ElementType & type, Vector & shapes, + const GhostType & ghost_type = _not_ghost) const = 0; /// compute the shape derivatives on a provided point - virtual - void computeShapeDerivatives(const Vector & real__coords, - UInt element, - const ElementType & type, - Matrix & shape_derivatives, - const GhostType & ghost_type = _not_ghost) const = 0; + virtual void + computeShapeDerivatives(const Vector & real__coords, UInt element, + const ElementType & type, + Matrix & shape_derivatives, + const GhostType & ghost_type = _not_ghost) const = 0; /* ------------------------------------------------------------------------ */ /* Other methods */ /* ------------------------------------------------------------------------ */ /// pre-compute normals on integration points - virtual void computeNormalsOnIntegrationPoints(const GhostType & ghost_type = _not_ghost) = 0; + virtual void computeNormalsOnIntegrationPoints( + const GhostType & ghost_type = _not_ghost) = 0; /// pre-compute normals on integration points - virtual void computeNormalsOnIntegrationPoints(__attribute__((unused)) const Array & field, - __attribute__((unused)) const GhostType & ghost_type = _not_ghost) { + virtual void computeNormalsOnIntegrationPoints( + __attribute__((unused)) const Array & field, + __attribute__((unused)) const GhostType & ghost_type = _not_ghost) { AKANTU_DEBUG_TO_IMPLEMENT(); } /// pre-compute normals on integration points - virtual void computeNormalsOnIntegrationPoints(__attribute__((unused)) const Array & field, - __attribute__((unused)) Array & normal, - __attribute__((unused)) const ElementType & type, - __attribute__((unused)) const GhostType & ghost_type = _not_ghost) const { + virtual void computeNormalsOnIntegrationPoints( + __attribute__((unused)) const Array & field, + __attribute__((unused)) Array & normal, + __attribute__((unused)) const ElementType & type, + __attribute__((unused)) const GhostType & ghost_type = _not_ghost) const { AKANTU_DEBUG_TO_IMPLEMENT(); } - - // /// assemble vectors - // void assembleArray(const Array & elementary_vect, - // Array & nodal_values, - // const Array & equation_number, - // UInt nb_degree_of_freedom, - // const ElementType & type, - // const GhostType & ghost_type = _not_ghost, - // const Array & filter_elements = empty_filter, - // Real scale_factor = 1) const; - - // /// assemble matrix in the complete sparse matrix - // void assembleMatrix(const Array & elementary_mat, - // SparseMatrix & matrix, - // UInt nb_degree_of_freedom, - // const ElementType & type, - // const GhostType & ghost_type = _not_ghost, - // const Array & filter_elements = empty_filter) const; - - /// assemble a field as a lumped matrix (ex. rho in lumped mass) - virtual void assembleFieldLumped(__attribute__ ((unused)) const Array & field, - __attribute__ ((unused)) const ID & lumped, - __attribute__ ((unused)) const ID & dof_id, - __attribute__ ((unused)) DOFManager & dof_manager, - __attribute__ ((unused)) ElementType type, - __attribute__ ((unused)) const GhostType & ghost_type) const { + virtual void assembleFieldLumped(__attribute__((unused)) + const Array & field, + __attribute__((unused)) const ID & lumped, + __attribute__((unused)) const ID & dof_id, + __attribute__((unused)) + DOFManager & dof_manager, + __attribute__((unused)) ElementType type, + __attribute__((unused)) + const GhostType & ghost_type) const { AKANTU_DEBUG_TO_IMPLEMENT(); }; - /// assemble a field as a matrix (ex. rho to mass matrix) - virtual void assembleFieldMatrix(__attribute__ ((unused)) const Array & field_1, - __attribute__ ((unused)) UInt nb_degree_of_freedom, - __attribute__ ((unused)) SparseMatrix & matrix, - __attribute__ ((unused)) ElementType type, - __attribute__ ((unused)) const GhostType & ghost_type) const { + virtual void + assembleFieldMatrix(__attribute__((unused)) const Array & field_1, + __attribute__((unused)) UInt nb_degree_of_freedom, + __attribute__((unused)) SparseMatrix & matrix, + __attribute__((unused)) ElementType type, + __attribute__((unused)) + const GhostType & ghost_type) const { AKANTU_DEBUG_TO_IMPLEMENT(); } - #ifdef AKANTU_STRUCTURAL_MECHANICS - /// assemble a field as a matrix for structural elements (ex. rho to mass matrix) - virtual void assembleFieldMatrix(__attribute__ ((unused)) const Array & field_1, - __attribute__ ((unused)) UInt nb_degree_of_freedom, - __attribute__ ((unused)) SparseMatrix & M, - __attribute__ ((unused)) Array * n, - __attribute__ ((unused)) ElementTypeMapArray & rotation_mat, - __attribute__ ((unused)) ElementType type, - __attribute__ ((unused)) const GhostType & ghost_type) const { - - AKANTU_DEBUG_TO_IMPLEMENT(); - } + /// assemble a field as a matrix for structural elements (ex. rho to mass + /// matrix) + virtual void assembleFieldMatrix( + __attribute__((unused)) const Array & field_1, + __attribute__((unused)) UInt nb_degree_of_freedom, + __attribute__((unused)) SparseMatrix & M, + __attribute__((unused)) Array * n, + __attribute__((unused)) ElementTypeMapArray & rotation_mat, + __attribute__((unused)) ElementType type, + __attribute__((unused)) const GhostType & ghost_type) const { + + AKANTU_DEBUG_TO_IMPLEMENT(); + } /// compute shapes function in a matrix for structural elements - virtual void computeShapesMatrix(__attribute__ ((unused))const ElementType & type, - __attribute__ ((unused))UInt nb_degree_of_freedom, - __attribute__ ((unused))UInt nb_nodes_per_element, - __attribute__ ((unused))Array * n, - __attribute__ ((unused))UInt id, - __attribute__ ((unused))UInt degree_to_interpolate, - __attribute__ ((unused))UInt degree_interpolated, - __attribute__ ((unused))const bool sign, - __attribute__ ((unused))const GhostType & ghost_type) const { + virtual void computeShapesMatrix( + __attribute__((unused)) const ElementType & type, + __attribute__((unused)) UInt nb_degree_of_freedom, + __attribute__((unused)) UInt nb_nodes_per_element, + __attribute__((unused)) Array * n, __attribute__((unused)) UInt id, + __attribute__((unused)) UInt degree_to_interpolate, + __attribute__((unused)) UInt degree_interpolated, + __attribute__((unused)) const bool sign, + __attribute__((unused)) const GhostType & ghost_type) const { AKANTU_DEBUG_TO_IMPLEMENT(); } #endif /// function to print the containt of the class virtual void printself(std::ostream & stream, int indent = 0) const; private: /// initialise the class void init(); /* ------------------------------------------------------------------------ */ /* Accessors */ /* ------------------------------------------------------------------------ */ public: /// get the dimension of the element handeled by this fe_engine object AKANTU_GET_MACRO(ElementDimension, element_dimension, UInt); /// get the mesh contained in the fem object AKANTU_GET_MACRO(Mesh, mesh, const Mesh &); /// get the mesh contained in the fem object AKANTU_GET_MACRO_NOT_CONST(Mesh, mesh, Mesh &); /// get the in-radius of an element - static inline Real getElementInradius(const Matrix & coord, const ElementType & type); + static inline Real getElementInradius(const Matrix & coord, + const ElementType & type); /// get the normals on integration points - AKANTU_GET_MACRO_BY_ELEMENT_TYPE_CONST(NormalsOnIntegrationPoints, normals_on_integration_points, Real); + AKANTU_GET_MACRO_BY_ELEMENT_TYPE_CONST(NormalsOnIntegrationPoints, + normals_on_integration_points, Real); /// get cohesive element type for a given facet type - static inline ElementType getCohesiveElementType(const ElementType & type_facet); + static inline ElementType + getCohesiveElementType(const ElementType & type_facet); /// get igfem element type for a given regular type - static inline Vector getIGFEMElementTypes(const ElementType & type); + static inline Vector + getIGFEMElementTypes(const ElementType & type); /// get the interpolation element associated to an element type - static inline InterpolationType getInterpolationType(const ElementType & el_type); + static inline InterpolationType + getInterpolationType(const ElementType & el_type); - /// get the shape function class (probably useless: see getShapeFunction in fe_engine_template.hh) + /// get the shape function class (probably useless: see getShapeFunction in + /// fe_engine_template.hh) virtual const ShapeFunctions & getShapeFunctionsInterface() const = 0; - /// get the integrator class (probably useless: see getIntegrator in fe_engine_template.hh) + /// get the integrator class (probably useless: see getIntegrator in + /// fe_engine_template.hh) virtual const Integrator & getIntegratorInterface() const = 0; /* ------------------------------------------------------------------------ */ /* Class Members */ /* ------------------------------------------------------------------------ */ protected: /// spatial dimension of the problem UInt element_dimension; /// the mesh on which all computation are made Mesh & mesh; /// normals at integration points ElementTypeMapArray normals_on_integration_points; - }; /* -------------------------------------------------------------------------- */ /* inline functions */ /* -------------------------------------------------------------------------- */ /// standard output stream operator -inline std::ostream & operator <<(std::ostream & stream, const FEEngine & _this) -{ - _this.printself(stream); - return stream; -} - - -/// standard output stream operator -inline std::ostream & operator <<(std::ostream & stream, const IntegrationPoint & _this) -{ +inline std::ostream & operator<<(std::ostream & stream, + const FEEngine & _this) { _this.printself(stream); return stream; } __END_AKANTU__ #include "fe_engine_inline_impl.cc" #include "fe_engine_template.hh" #endif /* __AKANTU_FE_ENGINE_HH__ */ diff --git a/src/fe_engine/fe_engine_inline_impl.cc b/src/fe_engine/fe_engine_inline_impl.cc index 671f5fc74..f44c2c0d9 100644 --- a/src/fe_engine/fe_engine_inline_impl.cc +++ b/src/fe_engine/fe_engine_inline_impl.cc @@ -1,209 +1,218 @@ /** * @file fe_engine_inline_impl.cc * * @author Guillaume Anciaux * @author Nicolas Richart * * @date creation: Tue Jul 20 2010 * @date last modification: Sat Sep 05 2015 * * @brief Implementation of the inline functions of the FEEngine Class * * @section LICENSE * * Copyright (©) 2010-2012, 2014, 2015 EPFL (Ecole Polytechnique Fédérale de * Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des * Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ - /* -------------------------------------------------------------------------- */ +#include "fe_engine.hh" +#include "mesh.hh" +#include "element_class.hh" +/* -------------------------------------------------------------------------- */ + +#ifndef __AKANTU_FE_ENGINE_INLINE_IMPL_CC__ +#define __AKANTU_FE_ENGINE_INLINE_IMPL_CC__ + __BEGIN_AKANTU__ /* -------------------------------------------------------------------------- */ inline Real FEEngine::getElementInradius(const Matrix & coord, const ElementType & type) { AKANTU_DEBUG_IN(); Real inradius = 0; #define GET_INRADIUS(type) inradius = ElementClass::getInradius(coord); AKANTU_BOOST_ALL_ELEMENT_SWITCH(GET_INRADIUS); #undef GET_INRADIUS AKANTU_DEBUG_OUT(); return inradius; } /* -------------------------------------------------------------------------- */ inline InterpolationType FEEngine::getInterpolationType(const ElementType & type) { AKANTU_DEBUG_IN(); InterpolationType itp_type = _itp_not_defined; #define GET_ITP(type) itp_type = ElementClassProperty::interpolation_type; AKANTU_BOOST_ALL_ELEMENT_SWITCH(GET_ITP); #undef GET_ITP AKANTU_DEBUG_OUT(); return itp_type; } /* -------------------------------------------------------------------------- */ /// @todo rewrite this function in order to get the cohesive element /// type directly from the facet #if defined(AKANTU_COHESIVE_ELEMENT) inline ElementType FEEngine::getCohesiveElementType(const ElementType & type_facet) { AKANTU_DEBUG_IN(); ElementType type_cohesive = _not_defined; if (type_facet == _point_1) type_cohesive = _cohesive_1d_2; else if (type_facet == _segment_2) type_cohesive = _cohesive_2d_4; else if (type_facet == _segment_3) type_cohesive = _cohesive_2d_6; else if (type_facet == _triangle_3) type_cohesive = _cohesive_3d_6; else if (type_facet == _triangle_6) type_cohesive = _cohesive_3d_12; else if (type_facet == _quadrangle_4) type_cohesive = _cohesive_3d_8; else if (type_facet == _quadrangle_8) type_cohesive = _cohesive_3d_16; AKANTU_DEBUG_OUT(); return type_cohesive; } #else inline ElementType FEEngine::getCohesiveElementType(__attribute__((unused)) const ElementType & type_facet) { return _not_defined; } #endif /* -------------------------------------------------------------------------- */ #if defined(AKANTU_IGFEM) __END_AKANTU__ #include "igfem_helper.hh" __BEGIN_AKANTU__ inline Vector FEEngine::getIGFEMElementTypes(const ElementType & type) { #define GET_IGFEM_ELEMENT_TYPES(type) \ return IGFEMHelper::getIGFEMElementTypes(); AKANTU_BOOST_REGULAR_ELEMENT_SWITCH(GET_IGFEM_ELEMENT_TYPES); #undef GET_IGFEM_ELEMENT_TYPES } #endif /* -------------------------------------------------------------------------- */ template void FEEngine::extractNodalToElementField(const Mesh & mesh, const Array & nodal_f, Array & elemental_f, const ElementType & type, const GhostType & ghost_type, const Array & filter_elements) { AKANTU_DEBUG_IN(); UInt nb_nodes_per_element = Mesh::getNbNodesPerElement(type); UInt nb_degree_of_freedom = nodal_f.getNbComponent(); UInt nb_element = mesh.getNbElement(type, ghost_type); UInt * conn_val = mesh.getConnectivity(type, ghost_type).storage(); if (filter_elements != empty_filter) { nb_element = filter_elements.getSize(); } elemental_f.resize(nb_element); T * nodal_f_val = nodal_f.storage(); T * f_val = elemental_f.storage(); UInt * el_conn; for (UInt el = 0; el < nb_element; ++el) { if (filter_elements != empty_filter) el_conn = conn_val + filter_elements(el) * nb_nodes_per_element; else el_conn = conn_val + el * nb_nodes_per_element; for (UInt n = 0; n < nb_nodes_per_element; ++n) { UInt node = *(el_conn + n); std::copy(nodal_f_val + node * nb_degree_of_freedom, nodal_f_val + (node + 1) * nb_degree_of_freedom, f_val); f_val += nb_degree_of_freedom; } } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template void FEEngine::filterElementalData(const Mesh & mesh, const Array & elem_f, Array & filtered_f, const ElementType & type, const GhostType & ghost_type, const Array & filter_elements) { AKANTU_DEBUG_IN(); UInt nb_element = mesh.getNbElement(type, ghost_type); if (nb_element == 0) { filtered_f.resize(0); return; } UInt nb_degree_of_freedom = elem_f.getNbComponent(); UInt nb_data_per_element = elem_f.getSize() / nb_element; if (filter_elements != empty_filter) { nb_element = filter_elements.getSize(); } filtered_f.resize(nb_element * nb_data_per_element); T * elem_f_val = elem_f.storage(); T * f_val = filtered_f.storage(); UInt el_offset; for (UInt el = 0; el < nb_element; ++el) { if (filter_elements != empty_filter) el_offset = filter_elements(el); else el_offset = el; std::copy(elem_f_val + el_offset * nb_data_per_element * nb_degree_of_freedom, elem_f_val + (el_offset + 1) * nb_data_per_element * nb_degree_of_freedom, f_val); f_val += nb_degree_of_freedom * nb_data_per_element; } AKANTU_DEBUG_OUT(); } __END_AKANTU__ + +#endif /* __AKANTU_FE_ENGINE_INLINE_IMPL_CC__ */ diff --git a/src/fe_engine/integration_point.hh b/src/fe_engine/integration_point.hh index eb9677fe0..58d3fbab9 100644 --- a/src/fe_engine/integration_point.hh +++ b/src/fe_engine/integration_point.hh @@ -1,157 +1,169 @@ /** * @file integration_point.hh * * @author Nicolas Richart * * @date creation: Wed Jun 17 2015 * @date last modification: Sun Nov 15 2015 * * @brief definition of the class IntegrationPoint * * @section LICENSE * * Copyright (©) 2015 EPFL (Ecole Polytechnique Fédérale de Lausanne) Laboratory * (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ +/* -------------------------------------------------------------------------- */ +#include "aka_types.hh" +#include "element.hh" +/* -------------------------------------------------------------------------- */ #ifndef AKANTU_QUADRATURE_POINT_H #define AKANTU_QUADRATURE_POINT_H + /* -------------------------------------------------------------------------- */ -#include "element.hh" -#include "aka_types.hh" -/* -------------------------------------------------------------------------- */ + __BEGIN_AKANTU__ + /* -------------------------------------------------------------------------- */ class IntegrationPoint; extern const IntegrationPoint IntegrationPointNull; /* -------------------------------------------------------------------------- */ class IntegrationPoint : public Element { /* ------------------------------------------------------------------------ */ /* Typedefs */ /* ------------------------------------------------------------------------ */ public: typedef Vector position_type; /* ------------------------------------------------------------------------ */ /* Constructors/Destructors */ /* ------------------------------------------------------------------------ */ public: - IntegrationPoint(const Element & element, UInt num_point = 0, UInt nb_quad_per_element = 0) : - Element(element), num_point(num_point), - global_num(element.element*nb_quad_per_element + num_point), - position((Real *)NULL, 0) { }; + IntegrationPoint(const Element & element, UInt num_point = 0, + UInt nb_quad_per_element = 0) + : Element(element), num_point(num_point), + global_num(element.element * nb_quad_per_element + num_point), + position((Real *)NULL, 0){}; IntegrationPoint(ElementType type = _not_defined, UInt element = 0, - UInt num_point = 0, GhostType ghost_type = _not_ghost) : - Element(type, element, ghost_type), num_point(num_point), global_num(0), - position((Real *)NULL, 0) { }; - - IntegrationPoint(UInt element, UInt num_point, - UInt global_num, - const position_type & position, - ElementType type, - GhostType ghost_type = _not_ghost) : - Element(type, element, ghost_type), num_point(num_point), global_num(global_num), - position((Real *)NULL, 0) { this->position.shallowCopy(position); }; - - IntegrationPoint(const IntegrationPoint & quad) : - Element(quad), num_point(quad.num_point), global_num(quad.global_num), position((Real *) NULL, 0) { + UInt num_point = 0, GhostType ghost_type = _not_ghost) + : Element(type, element, ghost_type), num_point(num_point), global_num(0), + position((Real *)NULL, 0){}; + + IntegrationPoint(UInt element, UInt num_point, UInt global_num, + const position_type & position, ElementType type, + GhostType ghost_type = _not_ghost) + : Element(type, element, ghost_type), num_point(num_point), + global_num(global_num), position((Real *)NULL, 0) { + this->position.shallowCopy(position); + }; + + IntegrationPoint(const IntegrationPoint & quad) + : Element(quad), num_point(quad.num_point), global_num(quad.global_num), + position((Real *)NULL, 0) { position.shallowCopy(quad.position); }; /* ------------------------------------------------------------------------ */ /* Methods */ /* ------------------------------------------------------------------------ */ inline bool operator==(const IntegrationPoint & quad) const { return Element::operator==(quad) && this->num_point == quad.num_point; } inline bool operator!=(const IntegrationPoint & quad) const { - return ((element != quad.element) - || (type != quad.type) - || (ghost_type != quad.ghost_type) - || (kind != quad.kind) - || (num_point != quad.num_point) - || (global_num != quad.global_num)); + return ((element != quad.element) || (type != quad.type) || + (ghost_type != quad.ghost_type) || (kind != quad.kind) || + (num_point != quad.num_point) || (global_num != quad.global_num)); } - bool operator<(const IntegrationPoint& rhs) const { - bool res = Element::operator<(rhs) || (Element::operator==(rhs) && this->num_point < rhs.num_point); + bool operator<(const IntegrationPoint & rhs) const { + bool res = Element::operator<(rhs) || + (Element::operator==(rhs) && this->num_point < rhs.num_point); return res; } inline IntegrationPoint & operator=(const IntegrationPoint & q) { - if(this != &q) { - element = q.element; - type = q.type; + if (this != &q) { + element = q.element; + type = q.type; ghost_type = q.ghost_type; - num_point = q.num_point; + num_point = q.num_point; global_num = q.global_num; position.shallowCopy(q.position); } return *this; } - + /// get the position of the integration point AKANTU_GET_MACRO(Position, position, const position_type &); /// set the position of the integration point void setPosition(const position_type & position) { this->position.shallowCopy(position); } /// deep copy of the position of the integration point void copyPosition(const position_type & position) { this->position.deepCopy(position); } /// function to print the containt of the class virtual void printself(std::ostream & stream, int indent = 0) const { std::string space; - for(Int i = 0; i < indent; i++, space += AKANTU_INDENT); + for (Int i = 0; i < indent; i++, space += AKANTU_INDENT) + ; stream << space << "IntegrationPoint ["; Element::printself(stream, 0); - stream << ", " << num_point << "(" << global_num << ")" << "]"; + stream << ", " << num_point << "(" << global_num << ")" + << "]"; } /* ------------------------------------------------------------------------ */ /* Class Members */ /* ------------------------------------------------------------------------ */ public: /// number of quadrature point in the element UInt num_point; /// global number of the quadrature point UInt global_num; // TODO might be temporary: however this class should be tought maybe... std::string material_id; -private: +private: /// position of the quadrature point position_type position; }; -__END_AKANTU__ +/// standard output stream operator +inline std::ostream & operator<<(std::ostream & stream, + const IntegrationPoint & _this) { + _this.printself(stream); + return stream; +} +__END_AKANTU__ #endif /* AKANTU_QUADRATURE_POINT_H */ diff --git a/src/model/boundary_condition_functor.hh b/src/model/boundary_condition_functor.hh index 5354a89b9..92aee20bc 100644 --- a/src/model/boundary_condition_functor.hh +++ b/src/model/boundary_condition_functor.hh @@ -1,194 +1,197 @@ /** * @file boundary_condition_functor.hh * * @author Dana Christen * @author David Simon Kammer * @author Nicolas Richart * * @date creation: Fri May 03 2013 * @date last modification: Thu Oct 15 2015 * * @brief Definitions of the functors to apply boundary conditions * * @section LICENSE * * Copyright (©) 2014, 2015 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ +#include "aka_common.hh" +#include "fe_engine.hh" +#include "integration_point.hh" +/* -------------------------------------------------------------------------- */ #ifndef __AKANTU_BOUNDARY_CONDITION_FUNCTOR_HH__ #define __AKANTU_BOUNDARY_CONDITION_FUNCTOR_HH__ -#include "aka_common.hh" -#include "fe_engine.hh" +/* -------------------------------------------------------------------------- */ __BEGIN_AKANTU__ /* -------------------------------------------------------------------------- */ namespace BC { typedef ::akantu::SpacialDirection Axis; struct Functor { enum Type { _dirichlet, _neumann }; }; /* ------------------------------------------------------------------------ */ /* Dirichlet */ /* ------------------------------------------------------------------------ */ namespace Dirichlet { /* ---------------------------------------------------------------------- */ class DirichletFunctor : public Functor { protected: DirichletFunctor() : axis(_x) {} - DirichletFunctor(Axis ax) : axis(ax) {} + explicit DirichletFunctor(Axis ax) : axis(ax) {} public: void operator()(__attribute__((unused)) UInt node, __attribute__((unused)) Vector & flags, __attribute__((unused)) Vector & primal, __attribute__((unused)) const Vector & coord) const { AKANTU_DEBUG_TO_IMPLEMENT(); } public: static const Type type = _dirichlet; protected: Axis axis; }; /* ---------------------------------------------------------------------- */ class FlagOnly : public DirichletFunctor { public: - FlagOnly(Axis ax = _x) : DirichletFunctor(ax) {} + explicit FlagOnly(Axis ax = _x) : DirichletFunctor(ax) {} public: inline void operator()(UInt node, Vector & flags, Vector & primal, const Vector & coord) const; }; /* ---------------------------------------------------------------------- */ class FreeBoundary : public DirichletFunctor { public: - FreeBoundary(Axis ax = _x) : DirichletFunctor(ax) {} + explicit FreeBoundary(Axis ax = _x) : DirichletFunctor(ax) {} public: inline void operator()(UInt node, Vector & flags, Vector & primal, const Vector & coord) const; }; /* ---------------------------------------------------------------------- */ class FixedValue : public DirichletFunctor { public: FixedValue(Real val, Axis ax = _x) : DirichletFunctor(ax), value(val) {} public: inline void operator()(UInt node, Vector & flags, Vector & primal, const Vector & coord) const; protected: Real value; }; /* ---------------------------------------------------------------------- */ class IncrementValue : public DirichletFunctor { public: IncrementValue(Real val, Axis ax = _x) : DirichletFunctor(ax), value(val) {} public: inline void operator()(UInt node, Vector & flags, Vector & primal, const Vector & coord) const; inline void setIncrement(Real val) { this->value = val; } protected: Real value; }; } // end namespace Dirichlet /* ------------------------------------------------------------------------ */ /* Neumann */ /* ------------------------------------------------------------------------ */ namespace Neumann { /* ---------------------------------------------------------------------- */ class NeumannFunctor : public Functor { protected: NeumannFunctor() {} public: virtual void operator()(const IntegrationPoint & quad_point, Vector & dual, const Vector & coord, const Vector & normals) const = 0; virtual ~NeumannFunctor() {} public: static const Type type = _neumann; }; /* ---------------------------------------------------------------------- */ class FromHigherDim : public NeumannFunctor { public: - FromHigherDim(const Matrix & mat) : bc_data(mat) {} + explicit FromHigherDim(const Matrix & mat) : bc_data(mat) {} virtual ~FromHigherDim() {} public: inline void operator()(const IntegrationPoint & quad_point, Vector & dual, const Vector & coord, const Vector & normals) const; protected: Matrix bc_data; }; /* ---------------------------------------------------------------------- */ class FromSameDim : public NeumannFunctor { public: - FromSameDim(const Vector & vec) : bc_data(vec) {} + explicit FromSameDim(const Vector & vec) : bc_data(vec) {} virtual ~FromSameDim() {} public: inline void operator()(const IntegrationPoint & quad_point, Vector & dual, const Vector & coord, const Vector & normals) const; protected: Vector bc_data; }; /* ---------------------------------------------------------------------- */ class FreeBoundary : public NeumannFunctor { public: inline void operator()(const IntegrationPoint & quad_point, Vector & dual, const Vector & coord, const Vector & normals) const; }; } // end namespace Neumann } // end namespace BC __END_AKANTU__ #include "boundary_condition_functor_inline_impl.cc" #endif /* __AKANTU_BOUNDARY_CONDITION_FUNCTOR_HH__ */ diff --git a/src/model/dof_manager.cc b/src/model/dof_manager.cc index 26770d970..9ffe16fbc 100644 --- a/src/model/dof_manager.cc +++ b/src/model/dof_manager.cc @@ -1,643 +1,646 @@ + /** * @file dof_manager.cc * * @author Nicolas Richart * * @date Wed Aug 12 09:52:30 2015 * * @brief Implementation of the common parts of the DOFManagers * * @section LICENSE * * Copyright (©) 2010-2011 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "dof_manager.hh" #include "element_group.hh" #include "mesh.hh" #include "mesh_utils.hh" #include "node_group.hh" #include "sparse_matrix.hh" #include "static_communicator.hh" +#include "non_linear_solver.hh" +#include "time_step_solver.hh" /* -------------------------------------------------------------------------- */ -__BEGIN_AKANTU__ +namespace akantu { /* -------------------------------------------------------------------------- */ DOFManager::DOFManager(const ID & id, const MemoryID & memory_id) : Memory(id, memory_id), mesh(NULL), local_system_size(0), pure_local_system_size(0), system_size(0) {} /* -------------------------------------------------------------------------- */ DOFManager::~DOFManager() { NodesToElements::scalar_iterator nte_it = this->nodes_to_elements.begin(); NodesToElements::scalar_iterator nte_end = this->nodes_to_elements.end(); for (; nte_it != nte_end; ++nte_it) delete *nte_it; DOFStorage::iterator ds_it = dofs.begin(); DOFStorage::iterator ds_end = dofs.end(); for (; ds_it != ds_end; ++ds_it) delete ds_it->second; SparseMatricesMap::iterator sm_it = matrices.begin(); SparseMatricesMap::iterator sm_end = matrices.end(); for (; sm_it != sm_end; ++sm_it) delete sm_it->second; NonLinearSolversMap::iterator nls_it = non_linear_solvers.begin(); NonLinearSolversMap::iterator nls_end = non_linear_solvers.end(); for (; nls_it != nls_end; ++nls_it) delete nls_it->second; TimeStepSolversMap::iterator tss_it = time_step_solvers.begin(); TimeStepSolversMap::iterator tss_end = time_step_solvers.end(); for (; tss_it != tss_end; ++tss_it) delete tss_it->second; } /* -------------------------------------------------------------------------- */ void DOFManager::getEquationsNumbers(const ID &, Array &) { AKANTU_DEBUG_TO_IMPLEMENT(); } /* -------------------------------------------------------------------------- */ std::vector DOFManager::getDOFIDs() const { std::vector keys; for (const auto & dof_data : this->dofs) keys.push_back(dof_data.first); return keys; } /* -------------------------------------------------------------------------- */ void DOFManager::assembleElementalArrayLocalArray( const Array & elementary_vect, Array & array_assembeled, const ElementType & type, const GhostType & ghost_type, Real scale_factor, const Array & filter_elements) { AKANTU_DEBUG_IN(); UInt nb_element; UInt nb_nodes_per_element = Mesh::getNbNodesPerElement(type); UInt nb_degree_of_freedom = elementary_vect.getNbComponent() / nb_nodes_per_element; UInt * filter_it = NULL; if (filter_elements != empty_filter) { nb_element = filter_elements.getSize(); filter_it = filter_elements.storage(); } else { nb_element = this->mesh->getNbElement(type, ghost_type); } AKANTU_DEBUG_ASSERT(elementary_vect.getSize() == nb_element, "The vector elementary_vect(" << elementary_vect.getID() << ") has not the good size."); const Array & connectivity = this->mesh->getConnectivity(type, ghost_type); // Array::const_vector_iterator conn_begin = // connectivity.begin(nb_nodes_per_element); // Array::const_vector_iterator conn_it = conn_begin; Array::const_matrix_iterator elem_it = elementary_vect.begin(nb_degree_of_freedom, nb_nodes_per_element); for (UInt el = 0; el < nb_element; ++el, ++elem_it) { UInt element = el; if (filter_it != NULL) { // conn_it = conn_begin + *filter_it; element = *filter_it; } // const Vector & conn = *conn_it; const Matrix & elemental_val = *elem_it; for (UInt n = 0; n < nb_nodes_per_element; ++n) { UInt offset_node = connectivity(element, n) * nb_degree_of_freedom; Vector assemble(array_assembeled.storage() + offset_node, nb_degree_of_freedom); Vector elem_val = elemental_val(n); assemble.aXplusY(elem_val, scale_factor); } if (filter_it != NULL) ++filter_it; // else // ++conn_it; } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void DOFManager::assembleElementalArrayToResidual( const ID & dof_id, const Array & elementary_vect, const ElementType & type, const GhostType & ghost_type, Real scale_factor, const Array & filter_elements) { AKANTU_DEBUG_IN(); UInt nb_nodes_per_element = Mesh::getNbNodesPerElement(type); UInt nb_degree_of_freedom = elementary_vect.getNbComponent() / nb_nodes_per_element; Array array_localy_assembeled(this->mesh->getNbNodes(), nb_degree_of_freedom); array_localy_assembeled.clear(); this->assembleElementalArrayLocalArray( elementary_vect, array_localy_assembeled, type, ghost_type, scale_factor, filter_elements); this->assembleToResidual(dof_id, array_localy_assembeled, 1); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void DOFManager::assembleElementalArrayToLumpedMatrix( const ID & dof_id, const Array & elementary_vect, const ID & lumped_mtx, const ElementType & type, const GhostType & ghost_type, Real scale_factor, const Array & filter_elements) { AKANTU_DEBUG_IN(); UInt nb_nodes_per_element = Mesh::getNbNodesPerElement(type); UInt nb_degree_of_freedom = elementary_vect.getNbComponent() / nb_nodes_per_element; Array array_localy_assembeled(this->mesh->getNbNodes(), nb_degree_of_freedom); array_localy_assembeled.clear(); this->assembleElementalArrayLocalArray( elementary_vect, array_localy_assembeled, type, ghost_type, scale_factor, filter_elements); this->assembleToLumpedMatrix(dof_id, array_localy_assembeled, lumped_mtx, 1); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void DOFManager::registerMesh(Mesh & mesh) { this->mesh = &mesh; this->mesh->registerEventHandler(*this, 20); UInt nb_nodes = this->mesh->getNbNodes(); this->nodes_to_elements.resize(nb_nodes); for (UInt n = 0; n < nb_nodes; ++n) { this->nodes_to_elements[n] = new std::set(); } } /* -------------------------------------------------------------------------- */ DOFManager::DOFData::DOFData(const ID & dof_id) : support_type(_dst_generic), group_support("mesh"), dof(NULL), blocked_dofs(NULL), increment(NULL), previous(NULL), solution(0, 1, dof_id + ":solution"), local_equation_number(0, 1, dof_id + ":local_equation_number") {} /* -------------------------------------------------------------------------- */ DOFManager::DOFData::~DOFData() {} /* -------------------------------------------------------------------------- */ DOFManager::DOFData & DOFManager::getNewDOFData(const ID & dof_id) { DOFStorage::iterator it = this->dofs.find(dof_id); if (it != this->dofs.end()) { AKANTU_EXCEPTION("This dof array has already been registered"); } DOFData * dofs_storage = new DOFData(dof_id); this->dofs[dof_id] = dofs_storage; return *dofs_storage; } /* -------------------------------------------------------------------------- */ void DOFManager::registerDOFsInternal(const ID & dof_id, Array & dofs_array) { DOFData & dofs_storage = this->getDOFData(dof_id); dofs_storage.dof = &dofs_array; UInt nb_local_dofs = 0; UInt nb_pure_local = 0; const DOFSupportType &support_type = dofs_storage.support_type; switch (support_type) { case _dst_nodal: { UInt nb_nodes = 0; const ID & group = dofs_storage.group_support; NodeGroup * node_group = NULL; if (group == "mesh") { nb_nodes = this->mesh->getNbNodes(); } else { node_group = &this->mesh->getElementGroup(group).getNodeGroup(); nb_nodes = node_group->getSize(); } nb_local_dofs = nb_nodes; AKANTU_DEBUG_ASSERT( dofs_array.getSize() == nb_local_dofs, "The array of dof is too shot to be associated to nodes."); for (UInt n = 0; n < nb_nodes; ++n) { UInt node = n; if (node_group) node = node_group->getNodes()(n); nb_pure_local += this->mesh->isLocalOrMasterNode(node) ? 1 : 0; } nb_pure_local *= dofs_array.getNbComponent(); nb_local_dofs *= dofs_array.getNbComponent(); break; } case _dst_generic: { nb_local_dofs = nb_pure_local = - dofs_array.getSize() * dofs_array.getNbComponent(); + dofs_array.getSize() * dofs_array.getNbComponent(); break; } default: { AKANTU_EXCEPTION("This type of dofs is not handled yet."); } } this->pure_local_system_size += nb_pure_local; this->local_system_size += nb_local_dofs; StaticCommunicator & comm = StaticCommunicator::getStaticCommunicator(); comm.allReduce(nb_pure_local, _so_sum); this->system_size += nb_pure_local; } /* -------------------------------------------------------------------------- */ void DOFManager::registerDOFs(const ID & dof_id, Array & dofs_array, const DOFSupportType & support_type) { DOFData & dofs_storage = this->getNewDOFData(dof_id); dofs_storage.support_type = support_type; this->registerDOFsInternal(dof_id, dofs_array); } /* -------------------------------------------------------------------------- */ void DOFManager::registerDOFs(const ID & dof_id, Array & dofs_array, const ID & support_group) { DOFData & dofs_storage = this->getNewDOFData(dof_id); dofs_storage.support_type = _dst_nodal; dofs_storage.group_support = support_group; this->registerDOFsInternal(dof_id, dofs_array); } /* -------------------------------------------------------------------------- */ void DOFManager::registerDOFsPrevious(const ID & dof_id, Array & array) { DOFData & dof = this->getDOFData(dof_id); if (dof.previous != NULL) { AKANTU_EXCEPTION("The previous dofs array for " << dof_id << " has already been registered"); } dof.previous = &array; } /* -------------------------------------------------------------------------- */ void DOFManager::registerDOFsIncrement(const ID & dof_id, Array & array) { DOFData & dof = this->getDOFData(dof_id); if (dof.increment != NULL) { AKANTU_EXCEPTION("The dofs increment array for " << dof_id << " has already been registered"); } dof.increment = &array; } /* -------------------------------------------------------------------------- */ void DOFManager::registerDOFsDerivative(const ID & dof_id, UInt order, Array & dofs_derivative) { DOFData & dof = this->getDOFData(dof_id); std::vector *> & derivatives = dof.dof_derivatives; if (derivatives.size() < order) { derivatives.resize(order, NULL); } else { if (derivatives[order - 1] != NULL) { AKANTU_EXCEPTION("The dof derivatives of order " << order << " already been registered for this dof (" << dof_id << ")"); } } derivatives[order - 1] = &dofs_derivative; } /* -------------------------------------------------------------------------- */ void DOFManager::registerBlockedDOFs(const ID & dof_id, Array & blocked_dofs) { DOFData & dof = this->getDOFData(dof_id); if (dof.blocked_dofs != NULL) { AKANTU_EXCEPTION("The blocked dofs array for " << dof_id << " has already been registered"); } dof.blocked_dofs = &blocked_dofs; } /* -------------------------------------------------------------------------- */ void DOFManager::splitSolutionPerDOFs() { DOFStorage::iterator it = this->dofs.begin(); DOFStorage::iterator end = this->dofs.end(); for (; it != end; ++it) { DOFData & dof_data = *it->second; dof_data.solution.resize(dof_data.dof->getSize() * dof_data.dof->getNbComponent()); this->getSolutionPerDOFs(it->first, dof_data.solution); } } /* -------------------------------------------------------------------------- */ void DOFManager::registerSparseMatrix(const ID & matrix_id, SparseMatrix & matrix) { SparseMatricesMap::const_iterator it = this->matrices.find(matrix_id); if (it != this->matrices.end()) { AKANTU_EXCEPTION("The matrix " << matrix_id << " already exists in " << this->id); } this->matrices[matrix_id] = &matrix; } /* -------------------------------------------------------------------------- */ /// Get an instance of a new SparseMatrix Array & DOFManager::getNewLumpedMatrix(const ID & id) { ID matrix_id = this->id + ":lumped_mtx:" + id; LumpedMatricesMap::const_iterator it = this->lumped_matrices.find(matrix_id); if (it != this->lumped_matrices.end()) { AKANTU_EXCEPTION("The lumped matrix " << matrix_id << " already exists in " << this->id); } Array & mtx = this->alloc(matrix_id, this->local_system_size, 1); this->lumped_matrices[matrix_id] = &mtx; return mtx; } /* -------------------------------------------------------------------------- */ void DOFManager::registerNonLinearSolver(const ID & non_linear_solver_id, NonLinearSolver & non_linear_solver) { NonLinearSolversMap::const_iterator it = this->non_linear_solvers.find(non_linear_solver_id); if (it != this->non_linear_solvers.end()) { AKANTU_EXCEPTION("The non linear solver " << non_linear_solver_id << " already exists in " << this->id); } this->non_linear_solvers[non_linear_solver_id] = &non_linear_solver; } /* -------------------------------------------------------------------------- */ void DOFManager::registerTimeStepSolver(const ID & time_step_solver_id, TimeStepSolver & time_step_solver) { TimeStepSolversMap::const_iterator it = this->time_step_solvers.find(time_step_solver_id); if (it != this->time_step_solvers.end()) { AKANTU_EXCEPTION("The non linear solver " << time_step_solver_id << " already exists in " << this->id); } this->time_step_solvers[time_step_solver_id] = &time_step_solver; } /* -------------------------------------------------------------------------- */ SparseMatrix & DOFManager::getMatrix(const ID & id) { ID matrix_id = this->id + ":mtx:" + id; SparseMatricesMap::const_iterator it = this->matrices.find(matrix_id); if (it == this->matrices.end()) { AKANTU_SILENT_EXCEPTION("The matrix " << matrix_id << " does not exists in " << this->id); } return *(it->second); } /* -------------------------------------------------------------------------- */ bool DOFManager::hasMatrix(const ID & id) const { ID mtx_id = this->id + ":mtx:" + id; SparseMatricesMap::const_iterator it = this->matrices.find(mtx_id); return it != this->matrices.end(); } /* -------------------------------------------------------------------------- */ Array & DOFManager::getLumpedMatrix(const ID & id) { ID matrix_id = this->id + ":lumped_mtx:" + id; LumpedMatricesMap::const_iterator it = this->lumped_matrices.find(matrix_id); if (it == this->lumped_matrices.end()) { AKANTU_SILENT_EXCEPTION("The lumped matrix " << matrix_id << " does not exists in " << this->id); } return *(it->second); } /* -------------------------------------------------------------------------- */ const Array & DOFManager::getLumpedMatrix(const ID & id) const { ID matrix_id = this->id + ":lumped_mtx:" + id; LumpedMatricesMap::const_iterator it = this->lumped_matrices.find(matrix_id); if (it == this->lumped_matrices.end()) { AKANTU_SILENT_EXCEPTION("The lumped matrix " << matrix_id << " does not exists in " << this->id); } return *(it->second); } /* -------------------------------------------------------------------------- */ bool DOFManager::hasLumpedMatrix(const ID & id) const { ID mtx_id = this->id + ":lumped_mtx:" + id; LumpedMatricesMap::const_iterator it = this->lumped_matrices.find(mtx_id); return it != this->lumped_matrices.end(); } /* -------------------------------------------------------------------------- */ NonLinearSolver & DOFManager::getNonLinearSolver(const ID & id) { ID non_linear_solver_id = this->id + ":nls:" + id; NonLinearSolversMap::const_iterator it = this->non_linear_solvers.find(non_linear_solver_id); if (it == this->non_linear_solvers.end()) { AKANTU_EXCEPTION("The non linear solver " << non_linear_solver_id << " does not exists in " << this->id); } return *(it->second); } /* -------------------------------------------------------------------------- */ bool DOFManager::hasNonLinearSolver(const ID & id) const { ID solver_id = this->id + ":nls:" + id; NonLinearSolversMap::const_iterator it = this->non_linear_solvers.find(solver_id); return it != this->non_linear_solvers.end(); } /* -------------------------------------------------------------------------- */ TimeStepSolver & DOFManager::getTimeStepSolver(const ID & id) { ID time_step_solver_id = this->id + ":tss:" + id; TimeStepSolversMap::const_iterator it = this->time_step_solvers.find(time_step_solver_id); if (it == this->time_step_solvers.end()) { AKANTU_EXCEPTION("The non linear solver " << time_step_solver_id << " does not exists in " << this->id); } return *(it->second); } /* -------------------------------------------------------------------------- */ bool DOFManager::hasTimeStepSolver(const ID & solver_id) const { ID time_step_solver_id = this->id + ":tss:" + solver_id; TimeStepSolversMap::const_iterator it = this->time_step_solvers.find(time_step_solver_id); return it != this->time_step_solvers.end(); } /* -------------------------------------------------------------------------- */ void DOFManager::fillNodesToElements() { UInt spatial_dimension = this->mesh->getSpatialDimension(); Element e; UInt nb_nodes = this->mesh->getNbNodes(); for (UInt n = 0; n < nb_nodes; ++n) { this->nodes_to_elements[n]->clear(); } for (ghost_type_t::iterator gt = ghost_type_t::begin(); gt != ghost_type_t::end(); ++gt) { Mesh::type_iterator first = this->mesh->firstType(spatial_dimension, *gt, _ek_not_defined); Mesh::type_iterator last = this->mesh->lastType(spatial_dimension, *gt, _ek_not_defined); e.ghost_type = *gt; for (; first != last; ++first) { ElementType type = *first; e.type = type; e.kind = Mesh::getKind(type); UInt nb_element = this->mesh->getNbElement(type, *gt); Array::const_iterator> conn_it = this->mesh->getConnectivity(type, *gt).begin( Mesh::getNbNodesPerElement(type)); for (UInt el = 0; el < nb_element; ++el, ++conn_it) { e.element = el; const Vector & conn = *conn_it; for (UInt n = 0; n < conn.size(); ++n) nodes_to_elements[conn(n)]->insert(e); } } } } /* -------------------------------------------------------------------------- */ void DOFManager::savePreviousDOFs(const ID & dofs_id) { this->getPreviousDOFs(dofs_id).copy(this->getDOFs(dofs_id)); } /* -------------------------------------------------------------------------- */ /* Mesh Events */ /* -------------------------------------------------------------------------- */ void DOFManager::onNodesAdded(const Array & nodes_list, __attribute__((unused)) const NewNodesEvent & event) { Array::const_scalar_iterator it = nodes_list.begin(); Array::const_scalar_iterator end = nodes_list.end(); UInt nb_nodes = this->mesh->getNbNodes(); this->nodes_to_elements.resize(nb_nodes); for (; it != end; ++it) { this->nodes_to_elements[*it] = new std::set(); } } /* -------------------------------------------------------------------------- */ void DOFManager::onNodesRemoved(const Array & nodes_list, const Array & new_numbering, __attribute__((unused)) const RemovedNodesEvent & event) { Array::const_scalar_iterator it = nodes_list.begin(); Array::const_scalar_iterator end = nodes_list.end(); for (; it != end; ++it) { delete this->nodes_to_elements[*it]; } this->mesh->removeNodesFromArray(this->nodes_to_elements, new_numbering); } /* -------------------------------------------------------------------------- */ void DOFManager::onElementsAdded(const Array & elements_list, __attribute__((unused)) const NewElementsEvent & event) { Array::const_scalar_iterator it = elements_list.begin(); Array::const_scalar_iterator end = elements_list.end(); for (; it != end; ++it) { const Element & elem = *it; if (this->mesh->getSpatialDimension(elem.type) != this->mesh->getSpatialDimension()) continue; const Array & conn = this->mesh->getConnectivity(elem.type, elem.ghost_type); UInt nb_nodes_per_elem = this->mesh->getNbNodesPerElement(elem.type); for (UInt n = 0; n < nb_nodes_per_elem; ++n) { nodes_to_elements[conn(elem.element, n)]->insert(elem); } } } /* -------------------------------------------------------------------------- */ void DOFManager::onElementsRemoved( __attribute__((unused)) const Array & elements_list, __attribute__((unused)) const ElementTypeMapArray & new_numbering, __attribute__((unused)) const RemovedElementsEvent & event) { this->fillNodesToElements(); } /* -------------------------------------------------------------------------- */ void DOFManager::onElementsChanged( __attribute__((unused)) const Array & old_elements_list, __attribute__((unused)) const Array & new_elements_list, __attribute__((unused)) const ElementTypeMapArray & new_numbering, __attribute__((unused)) const ChangedElementsEvent & event) { this->fillNodesToElements(); } /* -------------------------------------------------------------------------- */ -__END_AKANTU__ +} // akantu diff --git a/src/model/dof_manager.hh b/src/model/dof_manager.hh index a2a5ad576..c58a1a300 100644 --- a/src/model/dof_manager.hh +++ b/src/model/dof_manager.hh @@ -1,448 +1,454 @@ /** * @file dof_manager.hh * * @author Nicolas Richart * * @date Wed Jul 22 11:43:43 2015 * * @brief Class handling the different types of dofs * * @section LICENSE * * Copyright (©) 2010-2011 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "aka_memory.hh" #include "mesh.hh" -#include "non_linear_solver.hh" -#include "time_step_solver.hh" /* -------------------------------------------------------------------------- */ #include #include /* -------------------------------------------------------------------------- */ #ifndef __AKANTU_DOF_MANAGER_HH__ #define __AKANTU_DOF_MANAGER_HH__ -__BEGIN_AKANTU__ +namespace akantu { +class TermsToAssemble; +class NonLinearSolver; +class TimeStepSolver; +class SparseMatrix; +} + +namespace akantu { class DOFManager : protected Memory, protected MeshEventHandler { /* ------------------------------------------------------------------------ */ /* Constructors/Destructors */ /* ------------------------------------------------------------------------ */ public: DOFManager(const ID & id = "dof_manager", const MemoryID & memory_id = 0); virtual ~DOFManager(); /* ------------------------------------------------------------------------ */ /* Methods */ /* ------------------------------------------------------------------------ */ public: /// register a mesh for dof that have a support type on nodes virtual void registerMesh(Mesh & mesh); private: /// common function to help registering dofs void registerDOFsInternal(const ID & dof_id, Array & dofs_array); public: /// register an array of degree of freedom virtual void registerDOFs(const ID & dof_id, Array & dofs_array, const DOFSupportType & support_type); /// the dof as an implied type of _dst_nodal and is defined only on a subset /// of nodes virtual void registerDOFs(const ID & dof_id, Array & dofs_array, const ID & group_support); /// register an array of previous values of the degree of freedom virtual void registerDOFsPrevious(const ID & dof_id, Array & dofs_array); /// register an array of increment of degree of freedom virtual void registerDOFsIncrement(const ID & dof_id, Array & dofs_array); /// register an array of derivatives for a particular dof array virtual void registerDOFsDerivative(const ID & dof_id, UInt order, Array & dofs_derivative); /// register array representing the blocked degree of freedoms virtual void registerBlockedDOFs(const ID & dof_id, Array & blocked_dofs); /// Assemble an array to the global residual array virtual void assembleToResidual(const ID & dof_id, const Array & array_to_assemble, Real scale_factor = 1.) = 0; /// Assemble an array to the global lumped matrix array virtual void assembleToLumpedMatrix(const ID & dof_id, const Array & array_to_assemble, const ID & lumped_mtx, Real scale_factor = 1.) = 0; /** * Assemble elementary values to a local array of the size nb_nodes * * nb_dof_per_node. The dof number is implicitly considered as * conn(el, n) * nb_nodes_per_element + d. * With 0 < n < nb_nodes_per_element and 0 < d < nb_dof_per_node **/ virtual void assembleElementalArrayLocalArray( const Array & elementary_vect, Array & array_assembeled, const ElementType & type, const GhostType & ghost_type, Real scale_factor = 1., const Array & filter_elements = empty_filter); /** * Assemble elementary values to the global residual array. The dof number is * implicitly considered as conn(el, n) * nb_nodes_per_element + d. * With 0 < n < nb_nodes_per_element and 0 < d < nb_dof_per_node **/ virtual void assembleElementalArrayToResidual( const ID & dof_id, const Array & elementary_vect, const ElementType & type, const GhostType & ghost_type, Real scale_factor = 1., const Array & filter_elements = empty_filter); /** * Assemble elementary values to a global array corresponding to a lumped * matrix */ virtual void assembleElementalArrayToLumpedMatrix( const ID & dof_id, const Array & elementary_vect, const ID & lumped_mtx, const ElementType & type, const GhostType & ghost_type, Real scale_factor = 1., const Array & filter_elements = empty_filter); /** * Assemble elementary values to the global residual array. The dof number is * implicitly considered as conn(el, n) * nb_nodes_per_element + d. With 0 < * n < nb_nodes_per_element and 0 < d < nb_dof_per_node **/ virtual void assembleElementalMatricesToMatrix( const ID & matrix_id, const ID & dof_id, const Array & elementary_mat, const ElementType & type, const GhostType & ghost_type = _not_ghost, const MatrixType & elemental_matrix_type = _symmetric, const Array & filter_elements = empty_filter) = 0; /// multiply a vector by a matrix and assemble the result to the residual virtual void assembleMatMulVectToResidual(const ID & dof_id, const ID & A_id, const Array & x, Real scale_factor = 1) = 0; /// multiply a vector by a lumped matrix and assemble the result to the /// residual virtual void assembleLumpedMatMulVectToResidual(const ID & dof_id, const ID & A_id, const Array & x, Real scale_factor = 1) = 0; - /// notation fully defined yet... - // virtual void assemblePreassembledMatrix(const ID & matrix_id, - // const ID & dof_id_m, - // const ID & dof_id_n, - // const Matrix & matrix) = 0; + /// assemble coupling terms between to dofs + virtual void assemblePreassembledMatrix(const ID & dof_id_m, + const ID & dof_id_n, + const ID & matrix_id, + const TermsToAssemble & terms) = 0; /// sets the residual to 0 virtual void clearResidual() = 0; /// sets the matrix to 0 virtual void clearMatrix(const ID & mtx) = 0; /// sets the lumped matrix to 0 virtual void clearLumpedMatrix(const ID & mtx) = 0; /// splits the solution storage from a global view to the per dof storages void splitSolutionPerDOFs(); /// extract a lumped matrix part corresponding to a given dof virtual void getLumpedMatrixPerDOFs(const ID & dof_id, const ID & lumped_mtx, Array & lumped) = 0; protected: /// minimum functionality to implement per derived version of the DOFManager /// to allow the splitSolutionPerDOFs function to work virtual void getSolutionPerDOFs(const ID & dof_id, Array & solution_array) = 0; protected: /* ------------------------------------------------------------------------ */ /// register a matrix void registerSparseMatrix(const ID & matrix_id, SparseMatrix & matrix); /// register a non linear solver instantiated by a derived class void registerNonLinearSolver(const ID & non_linear_solver_id, NonLinearSolver & non_linear_solver); /// register a time step solver instantiated by a derived class void registerTimeStepSolver(const ID & time_step_solver_id, TimeStepSolver & time_step_solver); /* ------------------------------------------------------------------------ */ /* Accessors */ /* ------------------------------------------------------------------------ */ public: /// Get the equation numbers corresponding to a dof_id. This might be used to /// access the matrix. virtual void getEquationsNumbers(const ID & dof_id, Array & equation_numbers); /// Global number of dofs AKANTU_GET_MACRO(SystemSize, this->system_size, UInt); /// Local number of dofs AKANTU_GET_MACRO(LocalSystemSize, this->local_system_size, UInt); /// Retrieve all the registered DOFs std::vector getDOFIDs() const; /* ------------------------------------------------------------------------ */ /* DOFs and derivatives accessors */ /* ------------------------------------------------------------------------ */ /// Get a reference to the registered dof array for a given id inline Array & getDOFs(const ID & dofs_id); /// Get the support type of a given dof inline DOFSupportType getSupportType(const ID & dofs_id) const; /// are the dofs registered inline bool hasDOFs(const ID & dofs_id) const; /// Get a reference to the registered dof derivatives array for a given id inline Array & getDOFsDerivatives(const ID & dofs_id, UInt order); /// Does the dof has derivatives inline bool hasDOFsDerivatives(const ID & dofs_id, UInt order) const; /// Get a reference to the blocked dofs array registered for the given id inline const Array & getBlockedDOFs(const ID & dofs_id) const; /// Get a reference to the registered dof increment array for a given id inline Array & getDOFsIncrement(const ID & dofs_id); /// Does the dof has a increment array inline bool hasDOFsIncrement(const ID & dofs_id) const; /// Does the dof has a previous array inline Array & getPreviousDOFs(const ID & dofs_id); /// Get a reference to the registered dof array for previous step values a /// given id inline bool hasPreviousDOFs(const ID & dofs_id) const; /// saves the values from dofs to previous dofs virtual void savePreviousDOFs(const ID & dofs_id); /// Get a reference to the solution array registered for the given id inline const Array & getSolution(const ID & dofs_id) const; /* ------------------------------------------------------------------------ */ /* Matrices accessors */ /* ------------------------------------------------------------------------ */ /// Get an instance of a new SparseMatrix virtual SparseMatrix & getNewMatrix(const ID & matrix_id, const MatrixType & matrix_type) = 0; /// Get an instance of a new SparseMatrix as a copy of the SparseMatrix /// matrix_to_copy_id virtual SparseMatrix & getNewMatrix(const ID & matrix_id, const ID & matrix_to_copy_id) = 0; /// Get the reference of an existing matrix SparseMatrix & getMatrix(const ID & matrix_id); /// check if the given matrix exists bool hasMatrix(const ID & matrix_id) const; /// Get an instance of a new lumped matrix virtual Array & getNewLumpedMatrix(const ID & matrix_id); /// Get the lumped version of a given matrix const Array & getLumpedMatrix(const ID & matrix_id) const; /// Get the lumped version of a given matrix Array & getLumpedMatrix(const ID & matrix_id); /// check if the given matrix exists bool hasLumpedMatrix(const ID & matrix_id) const; /* ------------------------------------------------------------------------ */ /* Non linear system solver */ /* ------------------------------------------------------------------------ */ /// Get instance of a non linear solver virtual NonLinearSolver & getNewNonLinearSolver( const ID & nls_solver_id, const NonLinearSolverType & _non_linear_solver_type) = 0; /// get instance of a non linear solver virtual NonLinearSolver & getNonLinearSolver(const ID & nls_solver_id); /// check if the given solver exists bool hasNonLinearSolver(const ID & solver_id) const; /* ------------------------------------------------------------------------ */ /* Time-Step Solver */ /* ------------------------------------------------------------------------ */ /// Get instance of a time step solver virtual TimeStepSolver & getNewTimeStepSolver(const ID & time_step_solver_id, const TimeStepSolverType & type, NonLinearSolver & non_linear_solver) = 0; /// get instance of a time step solver virtual TimeStepSolver & getTimeStepSolver(const ID & time_step_solver_id); /// check if the given solver exists bool hasTimeStepSolver(const ID & solver_id) const; /* ------------------------------------------------------------------------ */ AKANTU_GET_MACRO(Mesh, *mesh, const Mesh &); /* ------------------------------------------------------------------------ */ /* MeshEventHandler interface */ /* ------------------------------------------------------------------------ */ private: /// fills the nodes_to_elements structure void fillNodesToElements(); public: /// function to implement to react on akantu::NewNodesEvent virtual void onNodesAdded(const Array & nodes_list, const NewNodesEvent & event); /// function to implement to react on akantu::RemovedNodesEvent virtual void onNodesRemoved(const Array & nodes_list, const Array & new_numbering, const RemovedNodesEvent & event); /// function to implement to react on akantu::NewElementsEvent virtual void onElementsAdded(const Array & elements_list, const NewElementsEvent & event); /// function to implement to react on akantu::RemovedElementsEvent virtual void onElementsRemoved(const Array & elements_list, const ElementTypeMapArray & new_numbering, const RemovedElementsEvent & event); /// function to implement to react on akantu::ChangedElementsEvent virtual void onElementsChanged(const Array & old_elements_list, const Array & new_elements_list, const ElementTypeMapArray & new_numbering, const ChangedElementsEvent & event); protected: struct DOFData; inline DOFData & getDOFData(const ID & dof_id); inline const DOFData & getDOFData(const ID & dof_id) const; template inline _DOFData & getDOFDataTyped(const ID & dof_id); template inline const _DOFData & getDOFDataTyped(const ID & dof_id) const; virtual DOFData & getNewDOFData(const ID & dof_id); /* ------------------------------------------------------------------------ */ /* Class Members */ /* ------------------------------------------------------------------------ */ protected: /// dof representations in the dof manager struct DOFData { - DOFData(const ID & dof_id); + DOFData() = delete; + explicit DOFData(const ID & dof_id); virtual ~DOFData(); /// DOF support type (nodal, general) this is needed to determine how the /// dof are shared among processors DOFSupportType support_type; ID group_support; /// Degree of freedom array Array * dof; /// Blocked degree of freedoms array Array * blocked_dofs; /// Degree of freedoms increment Array * increment; /// Degree of freedoms at previous step Array * previous; /// Solution associated to the dof Array solution; /// local numbering equation numbers Array local_equation_number; /* ---------------------------------------------------------------------- */ /* data for dynamic simulations */ /* ---------------------------------------------------------------------- */ /// Degree of freedom derivatives arrays std::vector *> dof_derivatives; }; typedef Array *> NodesToElements; /// This info is stored to simplify the dynamic changes NodesToElements nodes_to_elements; /// type to store dofs information typedef std::map DOFStorage; /// type to store all the matrices typedef std::map SparseMatricesMap; /// type to store all the lumped matrices typedef std::map *> LumpedMatricesMap; /// type to store all the non linear solver typedef std::map NonLinearSolversMap; /// type to store all the time step solver typedef std::map TimeStepSolversMap; /// store a reference to the dof arrays DOFStorage dofs; /// list of sparse matrices that where created SparseMatricesMap matrices; /// list of lumped matrices LumpedMatricesMap lumped_matrices; /// non linear solvers storage NonLinearSolversMap non_linear_solvers; /// time step solvers storage TimeStepSolversMap time_step_solvers; /// reference to the underlying mesh Mesh * mesh; /// Total number of degrees of freedom (size with the ghosts) UInt local_system_size; /// Number of purely local dofs (size without the ghosts) UInt pure_local_system_size; /// Total number of degrees of freedom UInt system_size; }; -__END_AKANTU__ +} // akantu #include "dof_manager_inline_impl.cc" #endif /* __AKANTU_DOF_MANAGER_HH__ */ diff --git a/src/model/dof_manager_default.cc b/src/model/dof_manager_default.cc index 0a0658957..02cebb37e 100644 --- a/src/model/dof_manager_default.cc +++ b/src/model/dof_manager_default.cc @@ -1,669 +1,688 @@ /** * @file dof_manager_default.cc * * @author Nicolas Richart * * @date Tue Aug 11 16:21:01 2015 * * @brief Implementation of the default DOFManager * * @section LICENSE * * Copyright (©) 2010-2011 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "dof_manager_default.hh" #include "dof_synchronizer.hh" #include "element_group.hh" #include "non_linear_solver_default.hh" #include "sparse_matrix_aij.hh" #include "static_communicator.hh" #include "time_step_solver_default.hh" +#include "terms_to_assemble.hh" /* -------------------------------------------------------------------------- */ #include /* -------------------------------------------------------------------------- */ __BEGIN_AKANTU__ /* -------------------------------------------------------------------------- */ inline void DOFManagerDefault::addSymmetricElementalMatrixToSymmetric( SparseMatrixAIJ & matrix, const Matrix & elementary_mat, const Vector & equation_numbers, UInt max_size) { for (UInt i = 0; i < elementary_mat.rows(); ++i) { UInt c_irn = equation_numbers(i); if (c_irn < max_size) { for (UInt j = i; j < elementary_mat.cols(); ++j) { UInt c_jcn = equation_numbers(j); if (c_jcn < max_size) { matrix(c_irn, c_jcn) += elementary_mat(i, j); } } } } } /* -------------------------------------------------------------------------- */ inline void DOFManagerDefault::addUnsymmetricElementalMatrixToSymmetric( SparseMatrixAIJ & matrix, const Matrix & elementary_mat, const Vector & equation_numbers, UInt max_size) { for (UInt i = 0; i < elementary_mat.rows(); ++i) { UInt c_irn = equation_numbers(i); if (c_irn < max_size) { for (UInt j = 0; j < elementary_mat.cols(); ++j) { UInt c_jcn = equation_numbers(j); if (c_jcn < max_size) { if (c_jcn >= c_irn) { matrix(c_irn, c_jcn) += elementary_mat(i, j); } } } } } } /* -------------------------------------------------------------------------- */ inline void DOFManagerDefault::addElementalMatrixToUnsymmetric( SparseMatrixAIJ & matrix, const Matrix & elementary_mat, const Vector & equation_numbers, UInt max_size) { for (UInt i = 0; i < elementary_mat.rows(); ++i) { UInt c_irn = equation_numbers(i); if (c_irn < max_size) { for (UInt j = 0; j < elementary_mat.cols(); ++j) { UInt c_jcn = equation_numbers(j); if (c_jcn < max_size) { matrix(c_irn, c_jcn) += elementary_mat(i, j); } } } } } /* -------------------------------------------------------------------------- */ DOFManagerDefault::DOFManagerDefault(const ID & id, const MemoryID & memory_id) : DOFManager(id, memory_id), residual(0, 1, std::string(id + ":residual")), global_solution(0, 1, std::string(id + ":global_solution")), global_blocked_dofs(0, 1, std::string(id + ":global_blocked_dofs")), previous_global_blocked_dofs( 0, 1, std::string(id + ":previous_global_blocked_dofs")), dofs_type(0, 1, std::string(id + ":dofs_type")), data_cache(0, 1, std::string(id + ":data_cache_array")), jacobian_release(0), global_equation_number(0, 1, "global_equation_number"), synchronizer(nullptr) {} /* -------------------------------------------------------------------------- */ DOFManagerDefault::~DOFManagerDefault() { delete synchronizer; } /* -------------------------------------------------------------------------- */ template void DOFManagerDefault::assembleToGlobalArray( const ID & dof_id, const Array & array_to_assemble, Array & global_array, T scale_factor) { AKANTU_DEBUG_IN(); const Array & equation_number = this->getLocalEquationNumbers(dof_id); UInt nb_degree_of_freedoms = array_to_assemble.getSize() * array_to_assemble.getNbComponent(); AKANTU_DEBUG_ASSERT(equation_number.getSize() == nb_degree_of_freedoms, "The array to assemble does not have a correct size." << " (" << array_to_assemble.getID() << ")"); typename Array::const_scalar_iterator arr_it = array_to_assemble.begin_reinterpret(nb_degree_of_freedoms); Array::const_scalar_iterator equ_it = equation_number.begin(); for (UInt d = 0; d < nb_degree_of_freedoms; ++d, ++arr_it, ++equ_it) { global_array(*equ_it) += scale_factor * (*arr_it); } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ DOFManagerDefault::DOFDataDefault::DOFDataDefault(const ID & dof_id) : DOFData(dof_id), associated_nodes(0, 1, dof_id + "associated_nodes") {} /* -------------------------------------------------------------------------- */ DOFManager::DOFData & DOFManagerDefault::getNewDOFData(const ID & dof_id) { DOFDataDefault * dofs_storage = new DOFDataDefault(dof_id); this->dofs[dof_id] = dofs_storage; return *dofs_storage; } /* -------------------------------------------------------------------------- */ void DOFManagerDefault::registerMesh(Mesh & mesh) { DOFManager::registerMesh(mesh); delete synchronizer; - synchronizer = new DOFSynchronizer(*this, this->id + ":dof_synchronizer", - this->memory_id, mesh.getCommunicator()); + if(mesh.isDistributed()) + synchronizer = new DOFSynchronizer(*this, this->id + ":dof_synchronizer", + this->memory_id, mesh.getCommunicator()); + else synchronizer = nullptr; } /* -------------------------------------------------------------------------- */ void DOFManagerDefault::registerDOFsInternal(const ID & dof_id, UInt nb_dofs, UInt nb_pure_local_dofs) { // Count the number of pure local dofs per proc - StaticCommunicator & comm = StaticCommunicator::getStaticCommunicator(); + StaticCommunicator & comm = mesh->getCommunicator(); UInt prank = comm.whoAmI(); UInt psize = comm.getNbProc(); Array nb_dofs_per_proc(psize); nb_dofs_per_proc(prank) = nb_pure_local_dofs; comm.allGather(nb_dofs_per_proc); UInt first_global_dofs_id = std::accumulate( nb_dofs_per_proc.begin(), nb_dofs_per_proc.begin() + prank, 0); DOFDataDefault & dof_data = this->getDOFDataTyped(dof_id); const DOFSupportType & support_type = dof_data.support_type; const ID & group = dof_data.group_support; dof_data.local_equation_number.resize(nb_dofs); this->global_equation_number.resize(this->local_system_size); - // set the equation numbers +// set the equation numbers UInt first_dof_id = this->local_system_size - nb_dofs; const Array * support_nodes = nullptr; if (group != "mesh") { support_nodes = - &this->mesh->getElementGroup(group).getNodeGroup().getNodes(); + &this->mesh->getElementGroup(group).getNodeGroup().getNodes(); } if (support_type == _dst_nodal) { dof_data.associated_nodes.resize(nb_dofs); } this->dofs_type.resize(local_system_size); for (UInt d = 0; d < nb_dofs; ++d) { UInt local_eq_num = first_dof_id + d; dof_data.local_equation_number(d) = local_eq_num; UInt global_eq_num = first_global_dofs_id + d; this->global_equation_number(local_eq_num) = global_eq_num; this->global_to_local_mapping[global_eq_num] = local_eq_num; switch (support_type) { case _dst_nodal: { UInt node = d / dof_data.dof->getNbComponent(); if (support_nodes) node = (*support_nodes)(node); this->dofs_type(local_eq_num) = this->mesh->getNodeType(node); dof_data.associated_nodes(d) = node; break; } case _dst_generic: { this->dofs_type(local_eq_num) = _nt_normal; break; } default: { AKANTU_EXCEPTION("This type of dofs is not handled yet."); } } } this->residual.resize(this->local_system_size); this->global_solution.resize(this->local_system_size); this->global_blocked_dofs.resize(this->local_system_size); if (this->synchronizer) this->synchronizer->registerDOFs(dof_id); } /* -------------------------------------------------------------------------- */ void DOFManagerDefault::registerDOFs(const ID & dof_id, Array & dofs_array, const DOFSupportType & support_type) { // stores the current numbers of dofs UInt nb_dofs_old = this->local_system_size; UInt nb_pure_local_dofs_old = this->pure_local_system_size; // update or create the dof_data DOFManager::registerDOFs(dof_id, dofs_array, support_type); UInt nb_dofs = this->local_system_size - nb_dofs_old; UInt nb_pure_local_dofs = this->pure_local_system_size - nb_pure_local_dofs_old; this->registerDOFsInternal(dof_id, nb_dofs, nb_pure_local_dofs); } /* -------------------------------------------------------------------------- */ void DOFManagerDefault::registerDOFs(const ID & dof_id, Array & dofs_array, const ID & group_support) { // stores the current numbers of dofs UInt nb_dofs_old = this->local_system_size; UInt nb_pure_local_dofs_old = this->pure_local_system_size; // update or create the dof_data DOFManager::registerDOFs(dof_id, dofs_array, group_support); UInt nb_dofs = this->local_system_size - nb_dofs_old; UInt nb_pure_local_dofs = this->pure_local_system_size - nb_pure_local_dofs_old; this->registerDOFsInternal(dof_id, nb_dofs, nb_pure_local_dofs); } /* -------------------------------------------------------------------------- */ SparseMatrix & DOFManagerDefault::getNewMatrix(const ID & id, const MatrixType & matrix_type) { ID matrix_id = this->id + ":mtx:" + id; SparseMatrix * sm = new SparseMatrixAIJ(*this, matrix_type, matrix_id); this->registerSparseMatrix(matrix_id, *sm); return *sm; } /* -------------------------------------------------------------------------- */ SparseMatrix & DOFManagerDefault::getNewMatrix(const ID & id, const ID & matrix_to_copy_id) { ID matrix_id = this->id + ":mtx:" + id; SparseMatrixAIJ & sm_to_copy = this->getMatrix(matrix_to_copy_id); SparseMatrix * sm = new SparseMatrixAIJ(sm_to_copy, matrix_id); this->registerSparseMatrix(matrix_id, *sm); return *sm; } /* -------------------------------------------------------------------------- */ SparseMatrixAIJ & DOFManagerDefault::getMatrix(const ID & id) { SparseMatrix & matrix = DOFManager::getMatrix(id); return dynamic_cast(matrix); } /* -------------------------------------------------------------------------- */ NonLinearSolver & DOFManagerDefault::getNewNonLinearSolver(const ID & id, const NonLinearSolverType & type) { ID non_linear_solver_id = this->id + ":nls:" + id; NonLinearSolver * nls = NULL; switch (type) { #if defined(AKANTU_IMPLICIT) case _nls_newton_raphson: case _nls_newton_raphson_modified: { nls = new NonLinearSolverNewtonRaphson(*this, type, non_linear_solver_id, this->memory_id); break; } case _nls_linear: { nls = new NonLinearSolverLinear(*this, type, non_linear_solver_id, this->memory_id); break; } #endif case _nls_lumped: { nls = new NonLinearSolverLumped(*this, type, non_linear_solver_id, this->memory_id); break; } default: AKANTU_EXCEPTION("The asked type of non linear solver is not supported by " "this dof manager"); } this->registerNonLinearSolver(non_linear_solver_id, *nls); return *nls; } /* -------------------------------------------------------------------------- */ TimeStepSolver & DOFManagerDefault::getNewTimeStepSolver(const ID & id, const TimeStepSolverType & type, NonLinearSolver & non_linear_solver) { ID time_step_solver_id = this->id + ":tss:" + id; TimeStepSolver * tss = new TimeStepSolverDefault( *this, type, non_linear_solver, time_step_solver_id, this->memory_id); this->registerTimeStepSolver(time_step_solver_id, *tss); return *tss; } /* -------------------------------------------------------------------------- */ void DOFManagerDefault::clearResidual() { this->residual.resize(this->local_system_size); this->residual.clear(); } /* -------------------------------------------------------------------------- */ void DOFManagerDefault::clearMatrix(const ID & mtx) { this->getMatrix(mtx).clear(); } /* -------------------------------------------------------------------------- */ void DOFManagerDefault::clearLumpedMatrix(const ID & mtx) { this->getLumpedMatrix(mtx).clear(); } /* -------------------------------------------------------------------------- */ void DOFManagerDefault::updateGlobalBlockedDofs() { DOFStorage::iterator it = this->dofs.begin(); DOFStorage::iterator end = this->dofs.end(); this->previous_global_blocked_dofs.copy(this->global_blocked_dofs); this->global_blocked_dofs.resize(this->local_system_size); this->global_blocked_dofs.clear(); for (; it != end; ++it) { DOFData & dof_data = *it->second; this->assembleToGlobalArray(it->first, *dof_data.blocked_dofs, this->global_blocked_dofs, true); } } /* -------------------------------------------------------------------------- */ template void DOFManagerDefault::getArrayPerDOFs(const ID & dof_id, const Array & global_array, Array & local_array) const { AKANTU_DEBUG_IN(); const Array & equation_number = this->getLocalEquationNumbers(dof_id); UInt nb_degree_of_freedoms = equation_number.getSize(); local_array.resize(nb_degree_of_freedoms / local_array.getNbComponent()); auto loc_it = local_array.begin_reinterpret(nb_degree_of_freedoms); auto equ_it = equation_number.begin(); for (UInt d = 0; d < nb_degree_of_freedoms; ++d, ++loc_it, ++equ_it) { (*loc_it) = global_array(*equ_it); } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void DOFManagerDefault::getEquationsNumbers(const ID & dof_id, Array & equation_numbers) { AKANTU_DEBUG_IN(); this->getArrayPerDOFs(dof_id, this->global_equation_number, equation_numbers); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void DOFManagerDefault::getSolutionPerDOFs(const ID & dof_id, Array & solution_array) { AKANTU_DEBUG_IN(); this->getArrayPerDOFs(dof_id, this->global_solution, solution_array); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void DOFManagerDefault::getLumpedMatrixPerDOFs(const ID & dof_id, const ID & lumped_mtx, Array & lumped) { AKANTU_DEBUG_IN(); this->getArrayPerDOFs(dof_id, this->getLumpedMatrix(lumped_mtx), lumped); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void DOFManagerDefault::assembleToResidual( const ID & dof_id, const Array & array_to_assemble, Real scale_factor) { AKANTU_DEBUG_IN(); this->assembleToGlobalArray(dof_id, array_to_assemble, this->residual, scale_factor); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void DOFManagerDefault::assembleToLumpedMatrix( const ID & dof_id, const Array & array_to_assemble, const ID & lumped_mtx, Real scale_factor) { AKANTU_DEBUG_IN(); Array & lumped = this->getLumpedMatrix(lumped_mtx); this->assembleToGlobalArray(dof_id, array_to_assemble, lumped, scale_factor); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void DOFManagerDefault::assembleMatMulVectToResidual(const ID & dof_id, const ID & A_id, const Array & x, Real scale_factor) { SparseMatrixAIJ & A = this->getMatrix(A_id); // Array data_cache(this->local_system_size, 1, 0.); this->data_cache.resize(this->local_system_size); this->data_cache.clear(); this->assembleToGlobalArray(dof_id, x, data_cache, 1.); A.matVecMul(data_cache, this->residual, scale_factor, 1.); } /* -------------------------------------------------------------------------- */ void DOFManagerDefault::assembleLumpedMatMulVectToResidual( const ID & dof_id, const ID & A_id, const Array & x, Real scale_factor) { const Array & A = this->getLumpedMatrix(A_id); // Array data_cache(this->local_system_size, 1, 0.); this->data_cache.resize(this->local_system_size); this->data_cache.clear(); this->assembleToGlobalArray(dof_id, x, data_cache, scale_factor); Array::const_scalar_iterator A_it = A.begin(); Array::const_scalar_iterator A_end = A.end(); Array::const_scalar_iterator x_it = data_cache.begin(); Array::scalar_iterator r_it = this->residual.begin(); for (; A_it != A_end; ++A_it, ++x_it, ++r_it) { *r_it += *A_it * *x_it; } } /* -------------------------------------------------------------------------- */ void DOFManagerDefault::assembleElementalMatricesToMatrix( const ID & matrix_id, const ID & dof_id, const Array & elementary_mat, const ElementType & type, const GhostType & ghost_type, const MatrixType & elemental_matrix_type, const Array & filter_elements) { AKANTU_DEBUG_IN(); this->addToProfile(matrix_id, dof_id, type, ghost_type); DOFData & dof_data = this->getDOFData(dof_id); const Array & equation_number = this->getLocalEquationNumbers(dof_id); SparseMatrixAIJ & A = this->getMatrix(matrix_id); UInt nb_element; if (ghost_type == _not_ghost) { nb_element = this->mesh->getNbElement(type); } else { AKANTU_DEBUG_TO_IMPLEMENT(); } UInt * filter_it = nullptr; if (filter_elements != empty_filter) { nb_element = filter_elements.getSize(); filter_it = filter_elements.storage(); } else { if (dof_data.group_support != "mesh") { const Array & group_elements = this->mesh->getElementGroup(dof_data.group_support).getElements(type, ghost_type); nb_element = group_elements.getSize(); filter_it = group_elements.storage(); } else { nb_element = this->mesh->getNbElement(type, ghost_type); } } AKANTU_DEBUG_ASSERT(elementary_mat.getSize() == nb_element, "The vector elementary_mat(" << elementary_mat.getID() << ") has not the good size."); UInt nb_nodes_per_element = Mesh::getNbNodesPerElement(type); UInt nb_degree_of_freedom = dof_data.dof->getNbComponent(); const Array & connectivity = this->mesh->getConnectivity(type, ghost_type); auto conn_begin = connectivity.begin(nb_nodes_per_element); auto conn_it = conn_begin; UInt size_mat = nb_nodes_per_element * nb_degree_of_freedom; Vector element_eq_nb(nb_degree_of_freedom * nb_nodes_per_element); Array::const_matrix_iterator el_mat_it = elementary_mat.begin(size_mat, size_mat); for (UInt e = 0; e < nb_element; ++e, ++el_mat_it) { if (filter_it) conn_it = conn_begin + *filter_it; this->extractElementEquationNumber(equation_number, *conn_it, nb_degree_of_freedom, element_eq_nb); this->localToGlobalEquationNumber(element_eq_nb); if (filter_it) ++filter_it; else ++conn_it; if (A.getMatrixType() == _symmetric) if (elemental_matrix_type == _symmetric) this->addSymmetricElementalMatrixToSymmetric( A, *el_mat_it, element_eq_nb, A.getSize()); else this->addUnsymmetricElementalMatrixToSymmetric( A, *el_mat_it, element_eq_nb, A.getSize()); else this->addElementalMatrixToUnsymmetric(A, *el_mat_it, element_eq_nb, A.getSize()); } AKANTU_DEBUG_OUT(); } +/* -------------------------------------------------------------------------- */ +void DOFManagerDefault::assemblePreassembledMatrix(const ID & dof_id_m, + const ID & dof_id_n, + const ID & matrix_id, + const TermsToAssemble & terms) { + const Array & equation_number_m = this->getLocalEquationNumbers(dof_id_m); + const Array & equation_number_n = this->getLocalEquationNumbers(dof_id_n); + SparseMatrixAIJ & A = this->getMatrix(matrix_id); + + for(const auto& term : terms) { + A.addToMatrix(equation_number_m(term.i()), + equation_number_n(term.j()), + term); + } +} + /* -------------------------------------------------------------------------- */ void DOFManagerDefault::addToProfile(const ID & matrix_id, const ID & dof_id, const ElementType & type, const GhostType & ghost_type) { AKANTU_DEBUG_IN(); const DOFData & dof_data = this->getDOFData(dof_id); if (dof_data.support_type != _dst_nodal) return; auto mat_dof = std::make_pair(matrix_id, dof_id); auto type_pair = std::make_pair(type, ghost_type); auto prof_it = this->matrix_profiled_dofs.find(mat_dof); if (prof_it != this->matrix_profiled_dofs.end() && std::find(prof_it->second.begin(), prof_it->second.end(), type_pair) != prof_it->second.end()) return; UInt nb_degree_of_freedom_per_node = dof_data.dof->getNbComponent(); const Array & equation_number = this->getLocalEquationNumbers(dof_id); SparseMatrixAIJ & A = this->getMatrix(matrix_id); UInt size = A.getSize(); UInt nb_nodes_per_element = Mesh::getNbNodesPerElement(type); const auto & connectivity = this->mesh->getConnectivity(type, ghost_type); auto cbegin = connectivity.begin(nb_nodes_per_element); auto cit = cbegin; UInt nb_elements = connectivity.getSize(); UInt * ge_it = nullptr; if (dof_data.group_support != "mesh") { const Array & group_elements = this->mesh->getElementGroup(dof_data.group_support) .getElements(type, ghost_type); ge_it = group_elements.storage(); nb_elements = group_elements.getSize(); } UInt size_mat = nb_nodes_per_element * nb_degree_of_freedom_per_node; Vector element_eq_nb(size_mat); for (UInt e = 0; e < nb_elements; ++e) { if (ge_it) cit = cbegin + *ge_it; this->extractElementEquationNumber( equation_number, *cit, nb_degree_of_freedom_per_node, element_eq_nb); this->localToGlobalEquationNumber(element_eq_nb); if (ge_it) ++ge_it; else ++cit; for (UInt i = 0; i < size_mat; ++i) { UInt c_irn = element_eq_nb(i); if (c_irn < size) { for (UInt j = 0; j < size_mat; ++j) { UInt c_jcn = element_eq_nb(j); if (c_jcn < size) { A.addToProfile(c_irn, c_jcn); } } } } } this->matrix_profiled_dofs[mat_dof].push_back(type_pair); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void DOFManagerDefault::applyBoundary() { this->updateGlobalBlockedDofs(); SparseMatrixAIJ & J = this->getMatrix("J"); if (this->jacobian_release == J.getValueRelease()) { Array::const_scalar_iterator it = global_blocked_dofs.begin(); Array::const_scalar_iterator end = global_blocked_dofs.end(); Array::const_scalar_iterator pit = previous_global_blocked_dofs.begin(); for (; it != end && *it == *pit; ++it, ++pit) ; if (it != end) J.applyBoundary(); } else { J.applyBoundary(); } this->jacobian_release = J.getValueRelease(); } /* -------------------------------------------------------------------------- */ __END_AKANTU__ diff --git a/src/model/dof_manager_default.hh b/src/model/dof_manager_default.hh index c41696d0a..63969e34f 100644 --- a/src/model/dof_manager_default.hh +++ b/src/model/dof_manager_default.hh @@ -1,306 +1,312 @@ /** * @file dof_manager_default.hh * * @author Nicolas Richart * * @date Tue Aug 11 14:06:18 2015 * * @brief Default implementation of the dof manager * * @section LICENSE * * Copyright (©) 2010-2011 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "dof_manager.hh" /* -------------------------------------------------------------------------- */ #ifndef __AKANTU_DOF_MANAGER_DEFAULT_HH__ #define __AKANTU_DOF_MANAGER_DEFAULT_HH__ namespace akantu { class SparseMatrixAIJ; class NonLinearSolverDefault; class TimeStepSolverDefault; class DOFSynchronizer; } namespace akantu { class DOFManagerDefault : public DOFManager { /* ------------------------------------------------------------------------ */ /* Constructors/Destructors */ /* ------------------------------------------------------------------------ */ public: DOFManagerDefault(const ID & id = "dof_manager_default", const MemoryID & memory_id = 0); virtual ~DOFManagerDefault(); /* ------------------------------------------------------------------------ */ /* Methods */ /* ------------------------------------------------------------------------ */ public: /// register a mesh for dof that have a support type on nodes virtual void registerMesh(Mesh & mesh); private: void registerDOFsInternal(const ID & dof_id, UInt nb_dofs, UInt nb_pure_local_dofs); public: /// register an array of degree of freedom virtual void registerDOFs(const ID & dof_id, Array & dofs_array, const DOFSupportType & support_type); /// the dof as an implied type of _dst_nodal and is defined only on a subset /// of nodes virtual void registerDOFs(const ID & dof_id, Array & dofs_array, const ID & group_support); /// Assemble an array to the global residual array virtual void assembleToResidual(const ID & dof_id, const Array & array_to_assemble, Real scale_factor = 1.); /// Assemble an array to the global lumped matrix array virtual void assembleToLumpedMatrix(const ID & dof_id, const Array & array_to_assemble, const ID & lumped_mtx, Real scale_factor = 1.); /** * Assemble elementary values to the global matrix. The dof number is * implicitly considered as conn(el, n) * nb_nodes_per_element + d. * With 0 < n < nb_nodes_per_element and 0 < d < nb_dof_per_node **/ virtual void assembleElementalMatricesToMatrix( const ID & matrix_id, const ID & dof_id, const Array & elementary_mat, const ElementType & type, const GhostType & ghost_type, const MatrixType & elemental_matrix_type, const Array & filter_elements); /// multiply a vector by a matrix and assemble the result to the residual virtual void assembleMatMulVectToResidual(const ID & dof_id, const ID & A_id, const Array & x, Real scale_factor = 1); /// multiply a vector by a lumped matrix and assemble the result to the /// residual virtual void assembleLumpedMatMulVectToResidual(const ID & dof_id, const ID & A_id, const Array & x, Real scale_factor = 1); + /// assemble coupling terms between to dofs + virtual void assemblePreassembledMatrix(const ID & dof_id_m, + const ID & dof_id_n, + const ID & matrix_id, + const TermsToAssemble & terms); + protected: /// Assemble an array to the global residual array template void assembleToGlobalArray(const ID & dof_id, const Array & array_to_assemble, Array & global_array, T scale_factor); public: /// clear the residual virtual void clearResidual(); /// sets the matrix to 0 virtual void clearMatrix(const ID & mtx); /// sets the lumped matrix to 0 virtual void clearLumpedMatrix(const ID & mtx); /// update the global dofs vector virtual void updateGlobalBlockedDofs(); /// apply boundary conditions to jacobian matrix virtual void applyBoundary(); virtual void getEquationsNumbers(const ID & dof_id, Array & equation_numbers); protected: /// Get local part of an array corresponding to a given dofdata template void getArrayPerDOFs(const ID & dof_id, const Array & global_array, Array & local_array) const; /// Get the part of the solution corresponding to the dof_id virtual void getSolutionPerDOFs(const ID & dof_id, Array & solution_array); /// fill a Vector with the equation numbers corresponding to the given /// connectivity inline void extractElementEquationNumber( const Array & equation_numbers, const Vector & connectivity, UInt nb_degree_of_freedom, Vector & local_equation_number); public: /// extract a lumped matrix part corresponding to a given dof virtual void getLumpedMatrixPerDOFs(const ID & dof_id, const ID & lumped_mtx, Array & lumped); private: /// Add a symmetric matrices to a symmetric sparse matrix void addSymmetricElementalMatrixToSymmetric( SparseMatrixAIJ & matrix, const Matrix & element_mat, const Vector & equation_numbers, UInt max_size); /// Add a unsymmetric matrices to a symmetric sparse matrix (i.e. cohesive /// elements) void addUnsymmetricElementalMatrixToSymmetric( SparseMatrixAIJ & matrix, const Matrix & element_mat, const Vector & equation_numbers, UInt max_size); /// Add a matrices to a unsymmetric sparse matrix void addElementalMatrixToUnsymmetric(SparseMatrixAIJ & matrix, const Matrix & element_mat, const Vector & equation_numbers, UInt max_size); void addToProfile(const ID & matrix_id, const ID & dof_id, const ElementType & type, const GhostType & ghost_type); /* ------------------------------------------------------------------------ */ /* Accessors */ /* ------------------------------------------------------------------------ */ public: /// Get an instance of a new SparseMatrix virtual SparseMatrix & getNewMatrix(const ID & matrix_id, const MatrixType & matrix_type); /// Get an instance of a new SparseMatrix as a copy of the SparseMatrix /// matrix_to_copy_id virtual SparseMatrix & getNewMatrix(const ID & matrix_id, const ID & matrix_to_copy_id); /// Get the reference of an existing matrix SparseMatrixAIJ & getMatrix(const ID & matrix_id); /* ------------------------------------------------------------------------ */ /* Non Linear Solver */ /* ------------------------------------------------------------------------ */ /// Get instance of a non linear solver virtual NonLinearSolver & getNewNonLinearSolver(const ID & nls_solver_id, const NonLinearSolverType & _non_linear_solver_type); /* ------------------------------------------------------------------------ */ /* Time-Step Solver */ /* ------------------------------------------------------------------------ */ /// Get instance of a time step solver TimeStepSolver & getNewTimeStepSolver(const ID & id, const TimeStepSolverType & type, NonLinearSolver & non_linear_solver); /* ------------------------------------------------------------------------ */ /// Get the solution array AKANTU_GET_MACRO_NOT_CONST(GlobalSolution, global_solution, Array &); /// Get the residual array AKANTU_GET_MACRO_NOT_CONST(Residual, residual, Array &); /// Get the blocked dofs array AKANTU_GET_MACRO(GlobalBlockedDOFs, global_blocked_dofs, const Array &); /// Get the blocked dofs array AKANTU_GET_MACRO(PreviousGlobalBlockedDOFs, previous_global_blocked_dofs, const Array &); /// Get the location type of a given dof inline bool isLocalOrMasterDOF(UInt dof_num); /// get the equation numbers (in local numbering) corresponding to a dof ID inline const Array & getLocalEquationNumbers(const ID & dof_id) const; /// return the local index of the global equation number inline UInt globalToLocalEquationNumber(UInt global) const; /// converts local equation numbers to global equation numbers; template inline void localToGlobalEquationNumber(S & inout); /// get the array of dof types (use only if you know what you do...) inline Int getDOFType(UInt local_id) const; /// get the array of dof types (use only if you know what you do...) inline const Array & getDOFsAssociatedNodes(const ID & dof_id) const; protected: virtual DOFData & getNewDOFData(const ID & dof_id); /* ------------------------------------------------------------------------ */ /* Class Members */ /* ------------------------------------------------------------------------ */ protected: struct DOFDataDefault : public DOFData { DOFDataDefault(const ID & dof_id); /// associated node for _dst_nodal dofs only Array associated_nodes; }; typedef std::map AIJMatrixMap; typedef std::map DefaultNonLinearSolversMap; typedef std::map DefaultTimeStepSolversMap; typedef std::map, std::vector>> DOFToMatrixProfile; /// contains the the dofs that where added to the profile of a given matrix. DOFToMatrixProfile matrix_profiled_dofs; /// rhs to the system of equation corresponding to the residual linked to the /// different dofs Array residual; /// solution of the system of equation corresponding to the different dofs Array global_solution; /// blocked degree of freedom in the system equation corresponding to the /// different dofs Array global_blocked_dofs; /// blocked degree of freedom in the system equation corresponding to the /// different dofs Array previous_global_blocked_dofs; /// define the dofs type, local, shared, ghost Array dofs_type; /// Map of the different matrices stored in the dof manager AIJMatrixMap aij_matrices; /// Map of the different time step solvers stored with there real type DefaultTimeStepSolversMap default_time_step_solver_map; /// Memory cache, this is an array to keep the temporary memory needed for /// some operations, it is meant to be resized or cleared when needed Array data_cache; /// Release at last apply boundary on jacobian UInt jacobian_release; /// equation number in global numbering Array global_equation_number; typedef unordered_map::type equation_numbers_map; /// dual information of global_equation_number equation_numbers_map global_to_local_mapping; /// synchronizer to maintain coherency in dof fields DOFSynchronizer * synchronizer; }; } // akantu #include "dof_manager_default_inline_impl.cc" #endif /* __AKANTU_DOF_MANAGER_DEFAULT_HH__ */ diff --git a/src/model/dof_manager_inline_impl.cc b/src/model/dof_manager_inline_impl.cc index c80ee58ad..7fa134ceb 100644 --- a/src/model/dof_manager_inline_impl.cc +++ b/src/model/dof_manager_inline_impl.cc @@ -1,142 +1,143 @@ /** * @file dof_manager_inline_impl.cc * * @author Nicolas Richart * * @date Wed Aug 12 11:07:01 2015 * * @brief * * @section LICENSE * * Copyright (©) 2010-2011 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "dof_manager.hh" /* -------------------------------------------------------------------------- */ #ifndef __AKANTU_DOF_MANAGER_INLINE_IMPL_CC__ #define __AKANTU_DOF_MANAGER_INLINE_IMPL_CC__ -__BEGIN_AKANTU__ +namespace akantu { /* -------------------------------------------------------------------------- */ inline bool DOFManager::hasDOFs(const ID & dof_id) const { DOFStorage::const_iterator it = this->dofs.find(dof_id); return it != this->dofs.end(); } /* -------------------------------------------------------------------------- */ inline DOFManager::DOFData & DOFManager::getDOFData(const ID & dof_id) { DOFStorage::iterator it = this->dofs.find(dof_id); if (it == this->dofs.end()) { AKANTU_EXCEPTION("The dof " << dof_id << " does not exists in " << this->id); } return *it->second; } /* -------------------------------------------------------------------------- */ const DOFManager::DOFData & DOFManager::getDOFData(const ID & dof_id) const { DOFStorage::const_iterator it = this->dofs.find(dof_id); if (it == this->dofs.end()) { AKANTU_EXCEPTION("The dof " << dof_id << " does not exists in " << this->id); } return *it->second; } /* -------------------------------------------------------------------------- */ template inline _DOFData & DOFManager::getDOFDataTyped(const ID & dof_id) { return dynamic_cast<_DOFData &>(this->getDOFData(dof_id)); } /* -------------------------------------------------------------------------- */ template inline const _DOFData & DOFManager::getDOFDataTyped(const ID & dof_id) const { return dynamic_cast(this->getDOFData(dof_id)); } /* -------------------------------------------------------------------------- */ inline Array & DOFManager::getDOFs(const ID & dofs_id) { return *(this->getDOFData(dofs_id).dof); } /* -------------------------------------------------------------------------- */ inline DOFSupportType DOFManager::getSupportType(const ID & dofs_id) const { return this->getDOFData(dofs_id).support_type; } /* -------------------------------------------------------------------------- */ inline Array & DOFManager::getPreviousDOFs(const ID & dofs_id) { return *(this->getDOFData(dofs_id).previous); } /* -------------------------------------------------------------------------- */ inline bool DOFManager::hasPreviousDOFs(const ID & dofs_id) const { return (this->getDOFData(dofs_id).previous != NULL); } /* -------------------------------------------------------------------------- */ inline Array & DOFManager::getDOFsIncrement(const ID & dofs_id) { return *(this->getDOFData(dofs_id).increment); } /* -------------------------------------------------------------------------- */ inline bool DOFManager::hasDOFsIncrement(const ID & dofs_id) const { return (this->getDOFData(dofs_id).increment != NULL); } /* -------------------------------------------------------------------------- */ inline Array & DOFManager::getDOFsDerivatives(const ID & dofs_id, UInt order) { std::vector *> & derivatives = this->getDOFData(dofs_id).dof_derivatives; if ((order > derivatives.size()) || (derivatives[order - 1] == NULL)) AKANTU_EXCEPTION("No derivatives of order " << order << " present in " << this->id << " for dof " << dofs_id); return *derivatives[order - 1]; } /* -------------------------------------------------------------------------- */ inline bool DOFManager::hasDOFsDerivatives(const ID & dofs_id, UInt order) const{ const std::vector *> & derivatives = this->getDOFData(dofs_id).dof_derivatives; return ((order < derivatives.size()) && (derivatives[order - 1] != NULL)); } /* -------------------------------------------------------------------------- */ inline const Array & DOFManager::getSolution(const ID & dofs_id) const { return this->getDOFData(dofs_id).solution; } /* -------------------------------------------------------------------------- */ inline const Array & DOFManager::getBlockedDOFs(const ID & dofs_id) const { return *(this->getDOFData(dofs_id).blocked_dofs); } /* -------------------------------------------------------------------------- */ -__END_AKANTU__ + +} // akantu #endif /* __AKANTU_DOF_MANAGER_INLINE_IMPL_CC__ */ diff --git a/src/model/model_solver.cc b/src/model/model_solver.cc index ca528ea4a..8ab03e3e0 100644 --- a/src/model/model_solver.cc +++ b/src/model/model_solver.cc @@ -1,671 +1,674 @@ /** * @file model_solver.cc * * @author Nicolas Richart * * @date Wed Aug 12 13:31:56 2015 * * @brief Implementation of ModelSolver * * @section LICENSE * * Copyright (©) 2010-2011 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "model_solver.hh" #include "dof_manager.hh" +#include "non_linear_solver.hh" +#include "time_step_solver.hh" + #include "mesh.hh" #if defined(AKANTU_USE_MPI) #include "mpi_type_wrapper.hh" #endif #include "dof_manager_default.hh" #if defined(AKANTU_USE_PETSC) #include "dof_manager_petsc.hh" #endif /* -------------------------------------------------------------------------- */ __BEGIN_AKANTU__ /* -------------------------------------------------------------------------- */ ModelSolver::ModelSolver(Mesh & mesh, const ID & id, UInt memory_id) : Parsable(_st_model_solver, id), SolverCallback(), parent_id(id), parent_memory_id(memory_id), mesh(mesh), dof_manager(NULL), default_solver_id("") {} /* -------------------------------------------------------------------------- */ ModelSolver::~ModelSolver() { delete this->dof_manager; } /* -------------------------------------------------------------------------- */ void ModelSolver::initDOFManager() { std::pair sub_sect = getStaticParser().getSubSections(_st_model_solver); // default without external solver activated at compilation same as mumps that // is the historical solver but with only the lumped solver ID solver_type = "explicit"; #if defined(AKANTU_USE_MUMPS) solver_type = "mumps"; #elif defined(AKANTU_USE_PETSC) solver_type = "petsc"; #endif const ParserSection * section = NULL; Parser::const_section_iterator it; for (it = sub_sect.first; it != sub_sect.second && section == NULL; ++it) { if (it->getName() == this->parent_id) { section = &(*it); solver_type = section->getOption(solver_type); } } if (section) { this->initDOFManager(*section, solver_type); } else { this->initDOFManager(solver_type); } } /* -------------------------------------------------------------------------- */ void ModelSolver::initDOFManager(const ID & solver_type) { if (solver_type == "explicit") { ID id = this->parent_id + ":dof_manager_default"; this->dof_manager = new DOFManagerDefault(id, this->parent_memory_id); } else if (solver_type == "petsc") { #if defined(AKANTU_USE_PETSC) ID id = this->parent_id + ":dof_manager_petsc"; this->dof_manager = new DOFManagerPETSc(id, this->parent_memory_id); #else AKANTU_EXCEPTION( "To use PETSc you have to activate it in the compilations options"); #endif } else if (solver_type == "mumps") { #if defined(AKANTU_USE_MUMPS) ID id = this->parent_id + ":dof_manager_default"; this->dof_manager = new DOFManagerDefault(id, this->parent_memory_id); #else AKANTU_EXCEPTION( "To use MUMPS you have to activate it in the compilations options"); #endif } else { AKANTU_EXCEPTION( "To use the solver " << solver_type << " you will have to code it. This is an unknown solver type."); } this->dof_manager->registerMesh(mesh); this->setDOFManager(*this->dof_manager); } /* -------------------------------------------------------------------------- */ template static T getOptionToType(const std::string & opt_str) { std::stringstream sstr(opt_str); T opt; sstr >> opt; return opt; } /* -------------------------------------------------------------------------- */ void ModelSolver::initDOFManager(const ParserSection & section, const ID & solver_type) { this->initDOFManager(solver_type); std::pair sub_sect = section.getSubSections(_st_time_step_solver); Parser::const_section_iterator it; for (it = sub_sect.first; it != sub_sect.second; ++it) { ID solver_id = it->getName(); std::string str = it->getOption(); TimeStepSolverType tss_type = it->getParameter("type", this->getDefaultSolverType()); ModelSolverOptions tss_options = this->getDefaultSolverOptions(tss_type); std::pair sub_solvers_sect = it->getSubSections(_st_non_linear_solver); Parser::const_section_iterator sub_it; UInt nb_non_linear_solver_section = it->getNbSubSections(_st_non_linear_solver); NonLinearSolverType nls_type = tss_options.non_linear_solver_type; if (nb_non_linear_solver_section == 1) { const ParserSection & nls_section = *(sub_solvers_sect.first); nls_type = getOptionToType(nls_section.getName()); } else if (nb_non_linear_solver_section > 0) { AKANTU_EXCEPTION("More than one non linear solver are provided for the " "time step solver " << solver_id); } this->getNewSolver(solver_id, tss_type, nls_type); if (nb_non_linear_solver_section == 1) { const ParserSection & nls_section = *(sub_solvers_sect.first); this->dof_manager->getNonLinearSolver(solver_id).parseSection( nls_section); } std::pair sub_integrator_sect = it->getSubSections(_st_integration_scheme); for (sub_it = sub_integrator_sect.first; sub_it != sub_integrator_sect.second; ++sub_it) { const ParserSection & is_section = *sub_it; const ID & dof_id = is_section.getName(); IntegrationSchemeType it_type = is_section.getParameter( "type", tss_options.integration_scheme_type[dof_id]); IntegrationScheme::SolutionType s_type = is_section.getParameter( "solution_type", tss_options.solution_type[dof_id]); this->setIntegrationScheme(solver_id, dof_id, it_type, s_type); } std::map::const_iterator it = tss_options.integration_scheme_type.begin(); std::map::const_iterator end = tss_options.integration_scheme_type.end(); for (; it != end; ++it) { if (!this->hasIntegrationScheme(solver_id, it->first)) { this->setIntegrationScheme(solver_id, it->first, it->second, tss_options.solution_type[it->first]); } } } if (section.hasParameter("default_solver")) { ID default_solver = section.getParameter("default_solver"); this->setDefaultSolver(default_solver); } } /* -------------------------------------------------------------------------- */ TimeStepSolver & ModelSolver::getSolver(const ID & solver_id) { ID tmp_solver_id = solver_id; if (tmp_solver_id == "") tmp_solver_id = this->default_solver_id; TimeStepSolver & tss = this->dof_manager->getTimeStepSolver(tmp_solver_id); return tss; } /* -------------------------------------------------------------------------- */ const TimeStepSolver & ModelSolver::getSolver(const ID & solver_id) const { ID tmp_solver_id = solver_id; if (solver_id == "") tmp_solver_id = this->default_solver_id; const TimeStepSolver & tss = this->dof_manager->getTimeStepSolver(tmp_solver_id); return tss; } /* -------------------------------------------------------------------------- */ TimeStepSolver & ModelSolver::getTimeStepSolver(const ID & solver_id) { return this->getSolver(solver_id); } /* -------------------------------------------------------------------------- */ const TimeStepSolver & ModelSolver::getTimeStepSolver(const ID & solver_id) const { return this->getSolver(solver_id); } /* -------------------------------------------------------------------------- */ NonLinearSolver & ModelSolver::getNonLinearSolver(const ID & solver_id) { return this->getSolver(solver_id).getNonLinearSolver(); } /* -------------------------------------------------------------------------- */ const NonLinearSolver & ModelSolver::getNonLinearSolver(const ID & solver_id) const { return this->getSolver(solver_id).getNonLinearSolver(); } /* -------------------------------------------------------------------------- */ bool ModelSolver::hasSolver(const ID & solver_id) const { ID tmp_solver_id = solver_id; if (solver_id == "") tmp_solver_id = this->default_solver_id; return this->dof_manager->hasTimeStepSolver(tmp_solver_id); } /* -------------------------------------------------------------------------- */ void ModelSolver::setDefaultSolver(const ID & solver_id) { AKANTU_DEBUG_ASSERT( this->hasSolver(solver_id), "Cannot set the default solver to a solver that does not exists"); this->default_solver_id = solver_id; } /* -------------------------------------------------------------------------- */ void ModelSolver::solveStep(const ID & solver_id) { AKANTU_DEBUG_IN(); TimeStepSolver & tss = this->getSolver(solver_id); // make one non linear solve tss.solveStep(*this); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void ModelSolver::getNewSolver(const ID & solver_id, TimeStepSolverType time_step_solver_type, NonLinearSolverType non_linear_solver_type) { if (this->default_solver_id == "") { this->default_solver_id = solver_id; } if (non_linear_solver_type == _nls_auto) { switch (time_step_solver_type) { case _tsst_dynamic: case _tsst_static: non_linear_solver_type = _nls_newton_raphson; break; case _tsst_dynamic_lumped: non_linear_solver_type = _nls_lumped; break; } } this->initSolver(time_step_solver_type, non_linear_solver_type); NonLinearSolver & nls = this->dof_manager->getNewNonLinearSolver( solver_id, non_linear_solver_type); this->dof_manager->getNewTimeStepSolver(solver_id, time_step_solver_type, nls); } /* -------------------------------------------------------------------------- */ Real ModelSolver::getTimeStep(const ID & solver_id) const { const TimeStepSolver & tss = this->getSolver(solver_id); return tss.getTimeStep(); } /* -------------------------------------------------------------------------- */ void ModelSolver::setTimeStep(Real time_step, const ID & solver_id) { TimeStepSolver & tss = this->getSolver(solver_id); return tss.setTimeStep(time_step); } /* -------------------------------------------------------------------------- */ void ModelSolver::setIntegrationScheme( const ID & solver_id, const ID & dof_id, const IntegrationSchemeType & integration_scheme_type, IntegrationScheme::SolutionType solution_type) { TimeStepSolver & tss = this->dof_manager->getTimeStepSolver(solver_id); tss.setIntegrationScheme(dof_id, integration_scheme_type, solution_type); } /* -------------------------------------------------------------------------- */ bool ModelSolver::hasDefaultSolver() const { return (this->default_solver_id != ""); } /* -------------------------------------------------------------------------- */ bool ModelSolver::hasIntegrationScheme(const ID & solver_id, const ID & dof_id) const { TimeStepSolver & tss = this->dof_manager->getTimeStepSolver(solver_id); return tss.hasIntegrationScheme(dof_id); } /* -------------------------------------------------------------------------- */ void ModelSolver::predictor() {} /* -------------------------------------------------------------------------- */ void ModelSolver::corrector() {} /* -------------------------------------------------------------------------- */ TimeStepSolverType ModelSolver::getDefaultSolverType() const { return _tsst_dynamic_lumped; } /* -------------------------------------------------------------------------- */ ModelSolverOptions ModelSolver::getDefaultSolverOptions(__attribute__((unused)) const TimeStepSolverType & type) const { ModelSolverOptions options; options.non_linear_solver_type = _nls_auto; return options; } /* -------------------------------------------------------------------------- */ // void ModelSolver::setIntegrationScheme( // const ID & solver_id, const ID & dof_id, // const IntegrationSchemeType & integration_scheme_type) {} /* -------------------------------------------------------------------------- */ // /* -------------------------------------------------------------------------- // */ // template // void SolidMechanicsModel::solve(Array &increment, Real block_val, // bool need_factorize, bool // has_profile_changed) { // if(has_profile_changed) { // this->initJacobianMatrix(); // need_factorize = true; // } // updateResidualInternal(); //doesn't do anything for static // if(need_factorize) { // Real c = 0.,d = 0.,e = 0.; // if(method == _static) { // AKANTU_DEBUG_INFO("Solving K inc = r"); // e = 1.; // } else { // AKANTU_DEBUG_INFO("Solving (c M + d C + e K) inc = r"); // NewmarkBeta * nmb_int = dynamic_cast(integrator); // c = nmb_int->getAccelerationCoefficient(time_step); // d = nmb_int->getVelocityCoefficient(time_step); // e = nmb_int->getDisplacementCoefficient(time_step); // } // jacobian_matrix->clear(); // // J = c M + d C + e K // if(stiffness_matrix) // jacobian_matrix->add(*stiffness_matrix, e); // if(mass_matrix) // jacobian_matrix->add(*mass_matrix, c); // #if !defined(AKANTU_NDEBUG) // if(mass_matrix && AKANTU_DEBUG_TEST(dblDump)) // mass_matrix->saveMatrix("M.mtx"); // #endif // if(velocity_damping_matrix) // jacobian_matrix->add(*velocity_damping_matrix, d); // jacobian_matrix->applyBoundary(*blocked_dofs, block_val); // #if !defined(AKANTU_NDEBUG) // if(AKANTU_DEBUG_TEST(dblDump)) // jacobian_matrix->saveMatrix("J.mtx"); // #endif // solver->factorize(); // } // // if (rhs.getSize() != 0) // // solver->setRHS(rhs); // // else // solver->setOperators(); // solver->setRHS(*residual); // // solve @f[ J \delta w = r @f] // solver->solve(increment); // UInt nb_nodes = displacement-> getSize(); // UInt nb_degree_of_freedom = displacement->getNbComponent() * nb_nodes; // bool * blocked_dofs_val = blocked_dofs->storage(); // Real * increment_val = increment.storage(); // for (UInt j = 0; j < nb_degree_of_freedom; // ++j,++increment_val, ++blocked_dofs_val) { // if ((*blocked_dofs_val)) // *increment_val = 0.0; // } // } // /* -------------------------------------------------------------------------- // */ // template // bool SolidMechanicsModel::solveStatic(Real tolerance, UInt max_iteration, // bool do_not_factorize) { // AKANTU_DEBUG_INFO("Solving Ku = f"); // AKANTU_DEBUG_ASSERT(stiffness_matrix != NULL, // "You should first initialize the implicit solver and // assemble the stiffness matrix by calling // initImplicit"); // AnalysisMethod analysis_method=method; // Real error = 0.; // method=_static; // bool converged = this->template solveStep(tolerance, // error, max_iteration, do_not_factorize); // method=analysis_method; // return converged; // } // /* -------------------------------------------------------------------------- // */ // template // bool SolidMechanicsModel::solveStep(Real tolerance, // UInt max_iteration) { // Real error = 0.; // return this->template solveStep(tolerance, // error, // max_iteration); // } // /* -------------------------------------------------------------------------- // */ // template // bool SolidMechanicsModel::solveStep(Real tolerance, Real & error, UInt // max_iteration, // bool do_not_factorize) { // EventManager::sendEvent(SolidMechanicsModelEvent::BeforeSolveStepEvent(method)); // this->implicitPred(); // this->updateResidual(); // AKANTU_DEBUG_ASSERT(stiffness_matrix != NULL, // "You should first initialize the implicit solver and // assemble the stiffness matrix"); // bool need_factorize = !do_not_factorize; // if (method==_implicit_dynamic) { // AKANTU_DEBUG_ASSERT(mass_matrix != NULL, // "You should first initialize the implicit solver and // assemble the mass matrix"); // } // switch (cmethod) { // case _scm_newton_raphson_tangent: // case _scm_newton_raphson_tangent_not_computed: // break; // case _scm_newton_raphson_tangent_modified: // this->assembleStiffnessMatrix(); // break; // default: // AKANTU_DEBUG_ERROR("The resolution method " << cmethod << " has not been // implemented!"); // } // this->n_iter = 0; // bool converged = false; // error = 0.; // if(criteria == _scc_residual) { // converged = this->testConvergence (tolerance, error); // if(converged) return converged; // } // do { // if (cmethod == _scm_newton_raphson_tangent) // this->assembleStiffnessMatrix(); // solve (*increment, 1., // need_factorize); // this->implicitCorr(); // if(criteria == _scc_residual) this->updateResidual(); // converged = this->testConvergence (tolerance, error); // if(criteria == _scc_increment && !converged) this->updateResidual(); // //this->dump(); // this->n_iter++; // AKANTU_DEBUG_INFO("[" << criteria << "] Convergence iteration " // << std::setw(std::log10(max_iteration)) << this->n_iter // << ": error " << error << (converged ? " < " : " > ") // << tolerance); // switch (cmethod) { // case _scm_newton_raphson_tangent: // need_factorize = true; // break; // case _scm_newton_raphson_tangent_not_computed: // case _scm_newton_raphson_tangent_modified: // need_factorize = false; // break; // default: // AKANTU_DEBUG_ERROR("The resolution method " << cmethod << " has not // been implemented!"); // } // } while (!converged && this->n_iter < max_iteration); // // this makes sure that you have correct strains and stresses after the // solveStep function (e.g., for dumping) // if(criteria == _scc_increment) this->updateResidual(); // if (converged) { // EventManager::sendEvent(SolidMechanicsModelEvent::AfterSolveStepEvent(method)); // } else if(this->n_iter == max_iteration) { // AKANTU_DEBUG_WARNING("[" << criteria << "] Convergence not reached after // " // << std::setw(std::log10(max_iteration)) << // this->n_iter << // " iteration" << (this->n_iter == 1 ? "" : "s") << // "!" << std::endl); // } // return converged; // } // void SolidMechanicsModel::updateResidualInternal() { // AKANTU_DEBUG_IN(); // AKANTU_DEBUG_INFO("Update the residual"); // // f = f_ext - f_int - Ma - Cv = r - Ma - Cv; // if(method != _static) { // // f -= Ma // if(mass_matrix) { // // if full mass_matrix // Array * Ma = new Array(*acceleration, true, "Ma"); // *Ma *= *mass_matrix; // /// \todo check unit conversion for implicit dynamics // // *Ma /= f_m2a // *residual -= *Ma; // delete Ma; // } else if (mass) { // // else lumped mass // UInt nb_nodes = acceleration->getSize(); // UInt nb_degree_of_freedom = acceleration->getNbComponent(); // Real * mass_val = mass->storage(); // Real * accel_val = acceleration->storage(); // Real * res_val = residual->storage(); // bool * blocked_dofs_val = blocked_dofs->storage(); // for (UInt n = 0; n < nb_nodes * nb_degree_of_freedom; ++n) { // if(!(*blocked_dofs_val)) { // *res_val -= *accel_val * *mass_val /f_m2a; // } // blocked_dofs_val++; // res_val++; // mass_val++; // accel_val++; // } // } else { // AKANTU_DEBUG_ERROR("No function called to assemble the mass matrix."); // } // // f -= Cv // if(velocity_damping_matrix) { // Array * Cv = new Array(*velocity); // *Cv *= *velocity_damping_matrix; // *residual -= *Cv; // delete Cv; // } // } // AKANTU_DEBUG_OUT(); // } // /* -------------------------------------------------------------------------- // */ // void SolidMechanicsModel::solveLumped(Array & x, // const Array & A, // const Array & b, // const Array & blocked_dofs, // Real alpha) { // Real * A_val = A.storage(); // Real * b_val = b.storage(); // Real * x_val = x.storage(); // bool * blocked_dofs_val = blocked_dofs.storage(); // UInt nb_degrees_of_freedom = x.getSize() * x.getNbComponent(); // for (UInt n = 0; n < nb_degrees_of_freedom; ++n) { // if(!(*blocked_dofs_val)) { // *x_val = alpha * (*b_val / *A_val); // } // x_val++; // A_val++; // b_val++; // blocked_dofs_val++; // } // } /* -------------------------------------------------------------------------- */ // void TimeStepSolverDefault::updateAcceleration() { // AKANTU_DEBUG_IN(); // updateResidualInternal(); // if (method == _explicit_lumped_mass) { // /* residual = residual_{n+1} - M * acceleration_n therefore // solution = increment acceleration not acceleration */ // solveLumped(*increment_acceleration, *mass, *residual, *blocked_dofs, // f_m2a); // } else if (method == _explicit_consistent_mass) { // solve(*increment_acceleration); // } // AKANTU_DEBUG_OUT(); // } __END_AKANTU__ diff --git a/src/model/solid_mechanics/material.cc b/src/model/solid_mechanics/material.cc index 581a039df..40713adec 100644 --- a/src/model/solid_mechanics/material.cc +++ b/src/model/solid_mechanics/material.cc @@ -1,1670 +1,1670 @@ + + /** * @file material.cc * * @author Aurelia Isabel Cuba Ramos * @author Daniel Pino Muñoz * @author Nicolas Richart * @author Marco Vocialta * * @date creation: Tue Jul 27 2010 * @date last modification: Tue Nov 24 2015 * * @brief Implementation of the common part of the material class * * @section LICENSE * * Copyright (©) 2010-2012, 2014, 2015 EPFL (Ecole Polytechnique Fédérale de * Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des * Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "material.hh" #include "solid_mechanics_model.hh" -#include "sparse_matrix.hh" -#include "dof_synchronizer.hh" /* -------------------------------------------------------------------------- */ __BEGIN_AKANTU__ /* -------------------------------------------------------------------------- */ Material::Material(SolidMechanicsModel & model, const ID & id) : Memory(id, model.getMemoryID()), Parsable(_st_material, id), is_init(false), fem(&(model.getFEEngine())), finite_deformation(false), name(""), model(&model), spatial_dimension(this->model->getSpatialDimension()), element_filter("element_filter", id, this->memory_id), stress("stress", *this), eigengradu("eigen_grad_u", *this), gradu("grad_u", *this), green_strain("green_strain", *this), piola_kirchhoff_2("piola_kirchhoff_2", *this), potential_energy("potential_energy", *this), is_non_local(false), use_previous_stress(false), use_previous_gradu(false), interpolation_inverse_coordinates("interpolation inverse coordinates", *this), interpolation_points_matrices("interpolation points matrices", *this) { AKANTU_DEBUG_IN(); /// for each connectivity types allocate the element filer array of the /// material model.getMesh().initElementTypeMapArray(element_filter, 1, spatial_dimension, false, _ek_regular); this->initialize(); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ Material::Material(SolidMechanicsModel & model, UInt dim, const Mesh & mesh, FEEngine & fe_engine, const ID & id) : Memory(id, model.getMemoryID()), Parsable(_st_material, id), is_init(false), fem(&(model.getFEEngine())), finite_deformation(false), name(""), model(&model), spatial_dimension(dim), element_filter("element_filter", id, this->memory_id), stress("stress", *this, dim, fe_engine, this->element_filter), eigengradu("eigen_grad_u", *this, dim, fe_engine, this->element_filter), gradu("gradu", *this, dim, fe_engine, this->element_filter), green_strain("green_strain", *this, dim, fe_engine, this->element_filter), piola_kirchhoff_2("poila_kirchhoff_2", *this, dim, fe_engine, this->element_filter), potential_energy("potential_energy", *this, dim, fe_engine, this->element_filter), is_non_local(false), use_previous_stress(false), use_previous_gradu(false), interpolation_inverse_coordinates("interpolation inverse_coordinates", *this, dim, fe_engine, this->element_filter), interpolation_points_matrices("interpolation points matrices", *this, dim, fe_engine, this->element_filter) { AKANTU_DEBUG_IN(); mesh.initElementTypeMapArray(element_filter, 1, spatial_dimension, false, _ek_regular); this->initialize(); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ Material::~Material() { AKANTU_DEBUG_IN(); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void Material::initialize() { registerParam("rho", rho, Real(0.), _pat_parsable | _pat_modifiable, "Density"); registerParam("name", name, std::string(), _pat_parsable | _pat_readable); registerParam("finite_deformation", finite_deformation, false, _pat_parsable | _pat_readable, "Is finite deformation"); registerParam("inelastic_deformation", inelastic_deformation, false, _pat_internal, "Is inelastic deformation"); /// allocate gradu stress for local elements eigengradu.initialize(spatial_dimension * spatial_dimension); gradu.initialize(spatial_dimension * spatial_dimension); stress.initialize(spatial_dimension * spatial_dimension); potential_energy.initialize(1); this->model->registerEventHandler(*this); } /* -------------------------------------------------------------------------- */ void Material::initMaterial() { AKANTU_DEBUG_IN(); if (finite_deformation) { this->piola_kirchhoff_2.initialize(spatial_dimension * spatial_dimension); if (use_previous_stress) this->piola_kirchhoff_2.initializeHistory(); this->green_strain.initialize(spatial_dimension * spatial_dimension); } if (use_previous_stress) this->stress.initializeHistory(); if (use_previous_gradu) this->gradu.initializeHistory(); for (std::map *>::iterator it = internal_vectors_real.begin(); it != internal_vectors_real.end(); ++it) it->second->resize(); for (std::map *>::iterator it = internal_vectors_uint.begin(); it != internal_vectors_uint.end(); ++it) it->second->resize(); for (std::map *>::iterator it = internal_vectors_bool.begin(); it != internal_vectors_bool.end(); ++it) it->second->resize(); is_init = true; AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void Material::savePreviousState() { AKANTU_DEBUG_IN(); for (std::map *>::iterator it = internal_vectors_real.begin(); it != internal_vectors_real.end(); ++it) { if (it->second->hasHistory()) it->second->saveCurrentValues(); } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ /** * Compute the residual by assembling @f$\int_{e} \sigma_e \frac{\partial * \varphi}{\partial X} dX @f$ * * @param[in] displacements nodes displacements * @param[in] ghost_type compute the residual for _ghost or _not_ghost element */ // void Material::updateResidual(GhostType ghost_type) { // AKANTU_DEBUG_IN(); // computeAllStresses(ghost_type); // assembleResidual(ghost_type); // AKANTU_DEBUG_OUT(); // } /* -------------------------------------------------------------------------- */ void Material::assembleInternalForces(GhostType ghost_type) { AKANTU_DEBUG_IN(); UInt spatial_dimension = model->getSpatialDimension(); if (!finite_deformation) { Array & internal_force = const_cast &>(model->getInternalForce()); Mesh & mesh = fem->getMesh(); Mesh::type_iterator it = element_filter.firstType(spatial_dimension, ghost_type); Mesh::type_iterator last_type = element_filter.lastType(spatial_dimension, ghost_type); for (; it != last_type; ++it) { Array & elem_filter = element_filter(*it, ghost_type); UInt nb_element = elem_filter.getSize(); if (nb_element) { const Array & shapes_derivatives = fem->getShapesDerivatives(*it, ghost_type); UInt size_of_shapes_derivatives = shapes_derivatives.getNbComponent(); UInt nb_nodes_per_element = Mesh::getNbNodesPerElement(*it); UInt nb_quadrature_points = fem->getNbIntegrationPoints(*it, ghost_type); /// compute @f$\sigma \frac{\partial \varphi}{\partial X}@f$ by /// @f$\mathbf{B}^t \mathbf{\sigma}_q@f$ Array * sigma_dphi_dx = new Array(nb_element * nb_quadrature_points, size_of_shapes_derivatives, "sigma_x_dphi_/_dX"); Array * shapesd_filtered = new Array(0, size_of_shapes_derivatives, "filtered shapesd"); FEEngine::filterElementalData(mesh, shapes_derivatives, *shapesd_filtered, *it, ghost_type, elem_filter); Array & stress_vect = this->stress(*it, ghost_type); Array::matrix_iterator sigma = stress_vect.begin(spatial_dimension, spatial_dimension); Array::matrix_iterator B = shapesd_filtered->begin(spatial_dimension, nb_nodes_per_element); Array::matrix_iterator Bt_sigma_it = sigma_dphi_dx->begin(spatial_dimension, nb_nodes_per_element); for (UInt q = 0; q < nb_element * nb_quadrature_points; ++q, ++sigma, ++B, ++Bt_sigma_it) Bt_sigma_it->mul(*sigma, *B); delete shapesd_filtered; /** * compute @f$\int \sigma * \frac{\partial \varphi}{\partial X}dX@f$ by * @f$ \sum_q \mathbf{B}^t * \mathbf{\sigma}_q \overline w_q J_q@f$ */ Array * int_sigma_dphi_dx = new Array( nb_element, nb_nodes_per_element * spatial_dimension, "int_sigma_x_dphi_/_dX"); fem->integrate(*sigma_dphi_dx, *int_sigma_dphi_dx, size_of_shapes_derivatives, *it, ghost_type, elem_filter); delete sigma_dphi_dx; /// assemble model->getDOFManager().assembleElementalArrayLocalArray(*int_sigma_dphi_dx, internal_force, *it, ghost_type, 1, elem_filter); delete int_sigma_dphi_dx; } } } else { switch (spatial_dimension) { case 1: this->assembleInternalForces<1>(ghost_type); break; case 2: this->assembleInternalForces<2>(ghost_type); break; case 3: this->assembleInternalForces<3>(ghost_type); break; } } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ /** * Compute the stress from the gradu * * @param[in] current_position nodes postition + displacements * @param[in] ghost_type compute the residual for _ghost or _not_ghost element */ void Material::computeAllStresses(GhostType ghost_type) { AKANTU_DEBUG_IN(); UInt spatial_dimension = model->getSpatialDimension(); Mesh::type_iterator it = fem->getMesh().firstType(spatial_dimension, ghost_type); Mesh::type_iterator last_type = fem->getMesh().lastType(spatial_dimension, ghost_type); for (; it != last_type; ++it) { Array & elem_filter = element_filter(*it, ghost_type); if (elem_filter.getSize() == 0) continue; Array & gradu_vect = gradu(*it, ghost_type); /// compute @f$\nabla u@f$ fem->gradientOnIntegrationPoints(model->getDisplacement(), gradu_vect, spatial_dimension, *it, ghost_type, elem_filter); gradu_vect -= eigengradu(*it, ghost_type); /// compute @f$\mathbf{\sigma}_q@f$ from @f$\nabla u@f$ computeStress(*it, ghost_type); } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void Material::computeAllCauchyStresses(GhostType ghost_type) { AKANTU_DEBUG_IN(); AKANTU_DEBUG_ASSERT(finite_deformation, "The Cauchy stress can only be " "computed if you are working in " "finite deformation."); // resizeInternalArray(stress); Mesh::type_iterator it = fem->getMesh().firstType(spatial_dimension, ghost_type); Mesh::type_iterator last_type = fem->getMesh().lastType(spatial_dimension, ghost_type); for (; it != last_type; ++it) switch (spatial_dimension) { case 1: this->computeCauchyStress<1>(*it, ghost_type); break; case 2: this->computeCauchyStress<2>(*it, ghost_type); break; case 3: this->computeCauchyStress<3>(*it, ghost_type); break; } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template void Material::computeCauchyStress(ElementType el_type, GhostType ghost_type) { AKANTU_DEBUG_IN(); Array::matrix_iterator gradu_it = this->gradu(el_type, ghost_type).begin(dim, dim); Array::matrix_iterator gradu_end = this->gradu(el_type, ghost_type).end(dim, dim); Array::matrix_iterator piola_it = this->piola_kirchhoff_2(el_type, ghost_type).begin(dim, dim); Array::matrix_iterator stress_it = this->stress(el_type, ghost_type).begin(dim, dim); Matrix F_tensor(dim, dim); for (; gradu_it != gradu_end; ++gradu_it, ++piola_it, ++stress_it) { Matrix & grad_u = *gradu_it; Matrix & piola = *piola_it; Matrix & sigma = *stress_it; gradUToF(grad_u, F_tensor); this->computeCauchyStressOnQuad(F_tensor, piola, sigma); } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void Material::setToSteadyState(GhostType ghost_type) { AKANTU_DEBUG_IN(); const Array & displacement = model->getDisplacement(); // resizeInternalArray(gradu); UInt spatial_dimension = model->getSpatialDimension(); Mesh::type_iterator it = fem->getMesh().firstType(spatial_dimension, ghost_type); Mesh::type_iterator last_type = fem->getMesh().lastType(spatial_dimension, ghost_type); for (; it != last_type; ++it) { Array & elem_filter = element_filter(*it, ghost_type); Array & gradu_vect = gradu(*it, ghost_type); /// compute @f$\nabla u@f$ fem->gradientOnIntegrationPoints(displacement, gradu_vect, spatial_dimension, *it, ghost_type, elem_filter); setToSteadyState(*it, ghost_type); } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ /** * Compute the stiffness matrix by assembling @f$\int_{\omega} B^t \times D * \times B d\omega @f$ * * @param[in] current_position nodes postition + displacements * @param[in] ghost_type compute the residual for _ghost or _not_ghost element */ void Material::assembleStiffnessMatrix(GhostType ghost_type) { AKANTU_DEBUG_IN(); UInt spatial_dimension = model->getSpatialDimension(); Mesh::type_iterator it = element_filter.firstType(spatial_dimension, ghost_type); Mesh::type_iterator last_type = element_filter.lastType(spatial_dimension, ghost_type); for (; it != last_type; ++it) { if (finite_deformation) { switch (spatial_dimension) { case 1: { assembleStiffnessMatrixNL<1>(*it, ghost_type); assembleStiffnessMatrixL2<1>(*it, ghost_type); break; } case 2: { assembleStiffnessMatrixNL<2>(*it, ghost_type); assembleStiffnessMatrixL2<2>(*it, ghost_type); break; } case 3: { assembleStiffnessMatrixNL<3>(*it, ghost_type); assembleStiffnessMatrixL2<3>(*it, ghost_type); break; } } } else { switch (spatial_dimension) { case 1: { assembleStiffnessMatrix<1>(*it, ghost_type); break; } case 2: { assembleStiffnessMatrix<2>(*it, ghost_type); break; } case 3: { assembleStiffnessMatrix<3>(*it, ghost_type); break; } } } } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template void Material::assembleStiffnessMatrix(const ElementType & type, GhostType ghost_type) { AKANTU_DEBUG_IN(); Array & elem_filter = element_filter(type, ghost_type); if (elem_filter.getSize()) { const Array & shapes_derivatives = fem->getShapesDerivatives(type, ghost_type); Array & gradu_vect = gradu(type, ghost_type); UInt nb_element = elem_filter.getSize(); UInt nb_nodes_per_element = Mesh::getNbNodesPerElement(type); UInt nb_quadrature_points = fem->getNbIntegrationPoints(type, ghost_type); gradu_vect.resize(nb_quadrature_points * nb_element); fem->gradientOnIntegrationPoints(model->getDisplacement(), gradu_vect, dim, type, ghost_type, elem_filter); UInt tangent_size = getTangentStiffnessVoigtSize(dim); Array * tangent_stiffness_matrix = new Array( nb_element * nb_quadrature_points, tangent_size * tangent_size, "tangent_stiffness_matrix"); tangent_stiffness_matrix->clear(); computeTangentModuli(type, *tangent_stiffness_matrix, ghost_type); Array * shapesd_filtered = new Array(nb_element, dim * nb_nodes_per_element, "filtered shapesd"); FEEngine::filterElementalData(fem->getMesh(), shapes_derivatives, *shapesd_filtered, type, ghost_type, elem_filter); /// compute @f$\mathbf{B}^t * \mathbf{D} * \mathbf{B}@f$ UInt bt_d_b_size = dim * nb_nodes_per_element; Array * bt_d_b = new Array(nb_element * nb_quadrature_points, bt_d_b_size * bt_d_b_size, "B^t*D*B"); Matrix B(tangent_size, dim * nb_nodes_per_element); Matrix Bt_D(dim * nb_nodes_per_element, tangent_size); Array::matrix_iterator shapes_derivatives_filtered_it = shapesd_filtered->begin(dim, nb_nodes_per_element); Array::matrix_iterator Bt_D_B_it = bt_d_b->begin(dim * nb_nodes_per_element, dim * nb_nodes_per_element); Array::matrix_iterator D_it = tangent_stiffness_matrix->begin(tangent_size, tangent_size); Array::matrix_iterator D_end = tangent_stiffness_matrix->end(tangent_size, tangent_size); for (; D_it != D_end; ++D_it, ++Bt_D_B_it, ++shapes_derivatives_filtered_it) { Matrix & D = *D_it; Matrix & Bt_D_B = *Bt_D_B_it; VoigtHelper::transferBMatrixToSymVoigtBMatrix( *shapes_derivatives_filtered_it, B, nb_nodes_per_element); Bt_D.mul(B, D); Bt_D_B.mul(Bt_D, B); } delete tangent_stiffness_matrix; delete shapesd_filtered; /// compute @f$ k_e = \int_e \mathbf{B}^t * \mathbf{D} * \mathbf{B}@f$ Array * K_e = new Array(nb_element, bt_d_b_size * bt_d_b_size, "K_e"); fem->integrate(*bt_d_b, *K_e, bt_d_b_size * bt_d_b_size, type, ghost_type, elem_filter); delete bt_d_b; model->getDOFManager().assembleElementalMatricesToMatrix("K", "displacement", *K_e, type, ghost_type, _symmetric, elem_filter); delete K_e; } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template void Material::assembleStiffnessMatrixNL(const ElementType & type, GhostType ghost_type) { AKANTU_DEBUG_IN(); const Array & shapes_derivatives = fem->getShapesDerivatives(type, ghost_type); Array & elem_filter = element_filter(type, ghost_type); // Array & gradu_vect = delta_gradu(type, ghost_type); UInt nb_element = elem_filter.getSize(); UInt nb_nodes_per_element = Mesh::getNbNodesPerElement(type); UInt nb_quadrature_points = fem->getNbIntegrationPoints(type, ghost_type); // gradu_vect.resize(nb_quadrature_points * nb_element); // fem->gradientOnIntegrationPoints(model->getIncrement(), gradu_vect, // dim, type, ghost_type, &elem_filter); Array * shapes_derivatives_filtered = new Array( nb_element * nb_quadrature_points, dim * nb_nodes_per_element, "shapes derivatives filtered"); Array::const_matrix_iterator shapes_derivatives_it = shapes_derivatives.begin(spatial_dimension, nb_nodes_per_element); Array::matrix_iterator shapes_derivatives_filtered_it = shapes_derivatives_filtered->begin(spatial_dimension, nb_nodes_per_element); UInt * elem_filter_val = elem_filter.storage(); for (UInt e = 0; e < nb_element; ++e, ++elem_filter_val) for (UInt q = 0; q < nb_quadrature_points; ++q, ++shapes_derivatives_filtered_it) *shapes_derivatives_filtered_it = shapes_derivatives_it[*elem_filter_val * nb_quadrature_points + q]; /// compute @f$\mathbf{B}^t * \mathbf{D} * \mathbf{B}@f$ UInt bt_s_b_size = dim * nb_nodes_per_element; Array * bt_s_b = new Array(nb_element * nb_quadrature_points, bt_s_b_size * bt_s_b_size, "B^t*D*B"); UInt piola_matrix_size = getCauchyStressMatrixSize(dim); Matrix B(piola_matrix_size, bt_s_b_size); Matrix Bt_S(bt_s_b_size, piola_matrix_size); Matrix S(piola_matrix_size, piola_matrix_size); shapes_derivatives_filtered_it = shapes_derivatives_filtered->begin( spatial_dimension, nb_nodes_per_element); Array::matrix_iterator Bt_S_B_it = bt_s_b->begin(bt_s_b_size, bt_s_b_size); Array::matrix_iterator Bt_S_B_end = bt_s_b->end(bt_s_b_size, bt_s_b_size); Array::matrix_iterator piola_it = piola_kirchhoff_2(type, ghost_type).begin(dim, dim); for (; Bt_S_B_it != Bt_S_B_end; ++Bt_S_B_it, ++shapes_derivatives_filtered_it, ++piola_it) { Matrix & Bt_S_B = *Bt_S_B_it; Matrix & Piola_kirchhoff_matrix = *piola_it; setCauchyStressMatrix(Piola_kirchhoff_matrix, S); VoigtHelper::transferBMatrixToBNL(*shapes_derivatives_filtered_it, B, nb_nodes_per_element); Bt_S.mul(B, S); Bt_S_B.mul(Bt_S, B); } delete shapes_derivatives_filtered; /// compute @f$ k_e = \int_e \mathbf{B}^t * \mathbf{D} * \mathbf{B}@f$ Array * K_e = new Array (nb_element, bt_s_b_size * bt_s_b_size, "K_e"); fem->integrate(*bt_s_b, *K_e, bt_s_b_size * bt_s_b_size, type, ghost_type, elem_filter); delete bt_s_b; model->getDOFManager().assembleElementalMatricesToMatrix("K", "displacement", *K_e, type, ghost_type, _symmetric, elem_filter); delete K_e; AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template void Material::assembleStiffnessMatrixL2(const ElementType & type, GhostType ghost_type) { AKANTU_DEBUG_IN(); const Array & shapes_derivatives = fem->getShapesDerivatives(type, ghost_type); Array & elem_filter = element_filter(type, ghost_type); Array & gradu_vect = gradu(type, ghost_type); UInt nb_element = elem_filter.getSize(); UInt nb_nodes_per_element = Mesh::getNbNodesPerElement(type); UInt nb_quadrature_points = fem->getNbIntegrationPoints(type, ghost_type); gradu_vect.resize(nb_quadrature_points * nb_element); fem->gradientOnIntegrationPoints(model->getDisplacement(), gradu_vect, dim, type, ghost_type, elem_filter); UInt tangent_size = getTangentStiffnessVoigtSize(dim); Array * tangent_stiffness_matrix = new Array(nb_element * nb_quadrature_points, tangent_size * tangent_size, "tangent_stiffness_matrix"); tangent_stiffness_matrix->clear(); computeTangentModuli(type, *tangent_stiffness_matrix, ghost_type); Array * shapes_derivatives_filtered = new Array( nb_element * nb_quadrature_points, dim * nb_nodes_per_element, "shapes derivatives filtered"); Array::const_matrix_iterator shapes_derivatives_it = shapes_derivatives.begin(spatial_dimension, nb_nodes_per_element); Array::matrix_iterator shapes_derivatives_filtered_it = shapes_derivatives_filtered->begin(spatial_dimension, nb_nodes_per_element); UInt * elem_filter_val = elem_filter.storage(); for (UInt e = 0; e < nb_element; ++e, ++elem_filter_val) for (UInt q = 0; q < nb_quadrature_points; ++q, ++shapes_derivatives_filtered_it) *shapes_derivatives_filtered_it = shapes_derivatives_it[*elem_filter_val * nb_quadrature_points + q]; /// compute @f$\mathbf{B}^t * \mathbf{D} * \mathbf{B}@f$ UInt bt_d_b_size = dim * nb_nodes_per_element; Array * bt_d_b = new Array(nb_element * nb_quadrature_points, bt_d_b_size * bt_d_b_size, "B^t*D*B"); Matrix B(tangent_size, dim * nb_nodes_per_element); Matrix B2(tangent_size, dim * nb_nodes_per_element); Matrix Bt_D(dim * nb_nodes_per_element, tangent_size); shapes_derivatives_filtered_it = shapes_derivatives_filtered->begin( spatial_dimension, nb_nodes_per_element); Array::matrix_iterator Bt_D_B_it = bt_d_b->begin(dim * nb_nodes_per_element, dim * nb_nodes_per_element); Array::matrix_iterator grad_u_it = gradu_vect.begin(dim, dim); Array::matrix_iterator D_it = tangent_stiffness_matrix->begin(tangent_size, tangent_size); Array::matrix_iterator D_end = tangent_stiffness_matrix->end(tangent_size, tangent_size); for (; D_it != D_end; ++D_it, ++Bt_D_B_it, ++shapes_derivatives_filtered_it, ++grad_u_it) { Matrix & grad_u = *grad_u_it; Matrix & D = *D_it; Matrix & Bt_D_B = *Bt_D_B_it; // transferBMatrixToBL1 (*shapes_derivatives_filtered_it, B, // nb_nodes_per_element); VoigtHelper::transferBMatrixToSymVoigtBMatrix( *shapes_derivatives_filtered_it, B, nb_nodes_per_element); VoigtHelper::transferBMatrixToBL2(*shapes_derivatives_filtered_it, grad_u, B2, nb_nodes_per_element); B += B2; Bt_D.mul(B, D); Bt_D_B.mul(Bt_D, B); } delete tangent_stiffness_matrix; delete shapes_derivatives_filtered; /// compute @f$ k_e = \int_e \mathbf{B}^t * \mathbf{D} * \mathbf{B}@f$ Array * K_e = new Array(nb_element, bt_d_b_size * bt_d_b_size, "K_e"); fem->integrate(*bt_d_b, *K_e, bt_d_b_size * bt_d_b_size, type, ghost_type, elem_filter); delete bt_d_b; model->getDOFManager().assembleElementalMatricesToMatrix("K", "displacement", *K_e, type, ghost_type, _symmetric, elem_filter); delete K_e; AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template void Material::assembleInternalForces(GhostType ghost_type) { AKANTU_DEBUG_IN(); Array & internal_force = model->getInternalForce(); Mesh & mesh = fem->getMesh(); Mesh::type_iterator it = element_filter.firstType(dim, ghost_type); Mesh::type_iterator last_type = element_filter.lastType(dim, ghost_type); for (; it != last_type; ++it) { const Array & shapes_derivatives = fem->getShapesDerivatives(*it, ghost_type); Array & elem_filter = element_filter(*it, ghost_type); if (elem_filter.getSize() == 0) continue; UInt size_of_shapes_derivatives = shapes_derivatives.getNbComponent(); UInt nb_element = elem_filter.getSize(); UInt nb_nodes_per_element = Mesh::getNbNodesPerElement(*it); UInt nb_quadrature_points = fem->getNbIntegrationPoints(*it, ghost_type); Array * shapesd_filtered = new Array(nb_element, size_of_shapes_derivatives, "filtered shapesd"); FEEngine::filterElementalData(mesh, shapes_derivatives, *shapesd_filtered, *it, ghost_type, elem_filter); Array::matrix_iterator shapes_derivatives_filtered_it = shapesd_filtered->begin(dim, nb_nodes_per_element); // Set stress vectors UInt stress_size = getTangentStiffnessVoigtSize(dim); // Set matrices B and BNL* UInt bt_s_size = dim * nb_nodes_per_element; Array * bt_s = new Array(nb_element * nb_quadrature_points, bt_s_size, "B^t*S"); Array::matrix_iterator grad_u_it = this->gradu(*it, ghost_type).begin(dim, dim); Array::matrix_iterator grad_u_end = this->gradu(*it, ghost_type).end(dim, dim); Array::matrix_iterator stress_it = this->piola_kirchhoff_2(*it, ghost_type).begin(dim, dim); shapes_derivatives_filtered_it = shapesd_filtered->begin(dim, nb_nodes_per_element); Array::matrix_iterator bt_s_it = bt_s->begin(bt_s_size, 1); Matrix S_vect(stress_size, 1); Matrix B_tensor(stress_size, bt_s_size); Matrix B2_tensor(stress_size, bt_s_size); for (; grad_u_it != grad_u_end; ++grad_u_it, ++stress_it, ++shapes_derivatives_filtered_it, ++bt_s_it) { Matrix & grad_u = *grad_u_it; Matrix & r_it = *bt_s_it; Matrix & S_it = *stress_it; setCauchyStressArray(S_it, S_vect); VoigtHelper::transferBMatrixToSymVoigtBMatrix( *shapes_derivatives_filtered_it, B_tensor, nb_nodes_per_element); VoigtHelper::transferBMatrixToBL2(*shapes_derivatives_filtered_it, grad_u, B2_tensor, nb_nodes_per_element); B_tensor += B2_tensor; r_it.mul(B_tensor, S_vect); } delete shapesd_filtered; /// compute @f$ k_e = \int_e \mathbf{B}^t * \mathbf{D} * \mathbf{B}@f$ Array * r_e = new Array(nb_element, bt_s_size, "r_e"); fem->integrate(*bt_s, *r_e, bt_s_size, *it, ghost_type, elem_filter); delete bt_s; model->getDOFManager().assembleElementalArrayLocalArray(*r_e, internal_force, *it, ghost_type, 1, elem_filter); delete r_e; } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void Material::computeAllStressesFromTangentModuli(GhostType ghost_type) { AKANTU_DEBUG_IN(); UInt spatial_dimension = model->getSpatialDimension(); Mesh::type_iterator it = element_filter.firstType(spatial_dimension, ghost_type); Mesh::type_iterator last_type = element_filter.lastType(spatial_dimension, ghost_type); for (; it != last_type; ++it) { switch (spatial_dimension) { case 1: { computeAllStressesFromTangentModuli<1>(*it, ghost_type); break; } case 2: { computeAllStressesFromTangentModuli<2>(*it, ghost_type); break; } case 3: { computeAllStressesFromTangentModuli<3>(*it, ghost_type); break; } } } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template void Material::computeAllStressesFromTangentModuli(const ElementType & type, GhostType ghost_type) { AKANTU_DEBUG_IN(); const Array & shapes_derivatives = fem->getShapesDerivatives(type, ghost_type); Array & elem_filter = element_filter(type, ghost_type); Array & gradu_vect = gradu(type, ghost_type); UInt nb_element = elem_filter.getSize(); if (nb_element) { UInt nb_nodes_per_element = Mesh::getNbNodesPerElement(type); UInt nb_quadrature_points = fem->getNbIntegrationPoints(type, ghost_type); gradu_vect.resize(nb_quadrature_points * nb_element); Array & disp = model->getDisplacement(); fem->gradientOnIntegrationPoints(disp, gradu_vect, dim, type, ghost_type, elem_filter); UInt tangent_moduli_size = getTangentStiffnessVoigtSize(dim); Array * tangent_moduli_tensors = new Array( nb_element * nb_quadrature_points, tangent_moduli_size * tangent_moduli_size, "tangent_moduli_tensors"); tangent_moduli_tensors->clear(); computeTangentModuli(type, *tangent_moduli_tensors, ghost_type); Array * shapesd_filtered = new Array(nb_element, dim * nb_nodes_per_element, "filtered shapesd"); FEEngine::filterElementalData(fem->getMesh(), shapes_derivatives, *shapesd_filtered, type, ghost_type, elem_filter); Array filtered_u(nb_element, nb_nodes_per_element * spatial_dimension); FEEngine::extractNodalToElementField(fem->getMesh(), disp, filtered_u, type, ghost_type, elem_filter); /// compute @f$\mathbf{D} \mathbf{B} \mathbf{u}@f$ Array::matrix_iterator shapes_derivatives_filtered_it = shapesd_filtered->begin(dim, nb_nodes_per_element); Array::matrix_iterator D_it = tangent_moduli_tensors->begin(tangent_moduli_size, tangent_moduli_size); Array::matrix_iterator sigma_it = stress(type, ghost_type).begin(spatial_dimension, spatial_dimension); Array::vector_iterator u_it = filtered_u.begin(spatial_dimension * nb_nodes_per_element); Matrix B(tangent_moduli_size, spatial_dimension * nb_nodes_per_element); Vector Bu(tangent_moduli_size); Vector DBu(tangent_moduli_size); for (UInt e = 0; e < nb_element; ++e, ++u_it) { for (UInt q = 0; q < nb_quadrature_points; ++q, ++D_it, ++shapes_derivatives_filtered_it, ++sigma_it) { Vector & u = *u_it; Matrix & sigma = *sigma_it; Matrix & D = *D_it; VoigtHelper::transferBMatrixToSymVoigtBMatrix( *shapes_derivatives_filtered_it, B, nb_nodes_per_element); Bu.mul(B, u); DBu.mul(D, Bu); // Voigt notation to full symmetric tensor for (UInt i = 0; i < dim; ++i) sigma(i, i) = DBu(i); if (dim == 2) { sigma(0, 1) = sigma(1, 0) = DBu(2); } else if (dim == 3) { sigma(1, 2) = sigma(2, 1) = DBu(3); sigma(0, 2) = sigma(2, 0) = DBu(4); sigma(0, 1) = sigma(1, 0) = DBu(5); } } } } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void Material::computePotentialEnergyByElements() { AKANTU_DEBUG_IN(); Mesh::type_iterator it = element_filter.firstType(spatial_dimension); Mesh::type_iterator last_type = element_filter.lastType(spatial_dimension); for (; it != last_type; ++it) { computePotentialEnergy(*it); } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void Material::computePotentialEnergy(__attribute__((unused)) ElementType el_type, __attribute__((unused)) GhostType ghost_type) { AKANTU_DEBUG_IN(); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ Real Material::getPotentialEnergy() { AKANTU_DEBUG_IN(); Real epot = 0.; computePotentialEnergyByElements(); /// integrate the potential energy for each type of elements Mesh::type_iterator it = element_filter.firstType(spatial_dimension); Mesh::type_iterator last_type = element_filter.lastType(spatial_dimension); for (; it != last_type; ++it) { epot += fem->integrate(potential_energy(*it, _not_ghost), *it, _not_ghost, element_filter(*it, _not_ghost)); } AKANTU_DEBUG_OUT(); return epot; } /* -------------------------------------------------------------------------- */ Real Material::getPotentialEnergy(ElementType & type, UInt index) { AKANTU_DEBUG_IN(); Real epot = 0.; Vector epot_on_quad_points(fem->getNbIntegrationPoints(type)); computePotentialEnergyByElement(type, index, epot_on_quad_points); epot = fem->integrate(epot_on_quad_points, type, element_filter(type)(index)); AKANTU_DEBUG_OUT(); return epot; } /* -------------------------------------------------------------------------- */ Real Material::getEnergy(std::string type) { AKANTU_DEBUG_IN(); if (type == "potential") return getPotentialEnergy(); AKANTU_DEBUG_OUT(); return 0.; } /* -------------------------------------------------------------------------- */ Real Material::getEnergy(std::string energy_id, ElementType type, UInt index) { AKANTU_DEBUG_IN(); if (energy_id == "potential") return getPotentialEnergy(type, index); AKANTU_DEBUG_OUT(); return 0.; } /* -------------------------------------------------------------------------- */ void Material::initElementalFieldInterpolation( const ElementTypeMapArray & interpolation_points_coordinates) { AKANTU_DEBUG_IN(); this->fem->initElementalFieldInterpolationFromIntegrationPoints( interpolation_points_coordinates, this->interpolation_points_matrices, this->interpolation_inverse_coordinates, &(this->element_filter)); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void Material::interpolateStress(ElementTypeMapArray & result, const GhostType ghost_type) { this->fem->interpolateElementalFieldFromIntegrationPoints( this->stress, this->interpolation_points_matrices, this->interpolation_inverse_coordinates, result, ghost_type, &(this->element_filter)); } /* -------------------------------------------------------------------------- */ void Material::interpolateStressOnFacets( ElementTypeMapArray & result, ElementTypeMapArray & by_elem_result, const GhostType ghost_type) { interpolateStress(by_elem_result, ghost_type); UInt stress_size = this->stress.getNbComponent(); const Mesh & mesh = this->model->getMesh(); const Mesh & mesh_facets = mesh.getMeshFacets(); Mesh::type_iterator it = this->element_filter.firstType(spatial_dimension, ghost_type); Mesh::type_iterator last = this->element_filter.lastType(spatial_dimension, ghost_type); for (; it != last; ++it) { ElementType type = *it; Array & elem_fil = element_filter(type, ghost_type); Array & by_elem_res = by_elem_result(type, ghost_type); UInt nb_element = elem_fil.getSize(); UInt nb_element_full = this->model->getMesh().getNbElement(type, ghost_type); UInt nb_interpolation_points_per_elem = by_elem_res.getSize() / nb_element_full; const Array & facet_to_element = mesh_facets.getSubelementToElement(type, ghost_type); ElementType type_facet = Mesh::getFacetType(type); UInt nb_facet_per_elem = facet_to_element.getNbComponent(); UInt nb_quad_per_facet = nb_interpolation_points_per_elem / nb_facet_per_elem; Element element_for_comparison(type, 0, ghost_type); const Array > * element_to_facet = NULL; GhostType current_ghost_type = _casper; Array * result_vec = NULL; Array::const_matrix_iterator result_it = by_elem_res.begin_reinterpret( stress_size, nb_interpolation_points_per_elem, nb_element_full); for (UInt el = 0; el < nb_element; ++el) { UInt global_el = elem_fil(el); element_for_comparison.element = global_el; for (UInt f = 0; f < nb_facet_per_elem; ++f) { Element facet_elem = facet_to_element(global_el, f); UInt global_facet = facet_elem.element; if (facet_elem.ghost_type != current_ghost_type) { current_ghost_type = facet_elem.ghost_type; element_to_facet = &mesh_facets.getElementToSubelement( type_facet, current_ghost_type); result_vec = &result(type_facet, current_ghost_type); } bool is_second_element = (*element_to_facet)(global_facet)[0] != element_for_comparison; for (UInt q = 0; q < nb_quad_per_facet; ++q) { Vector result_local(result_vec->storage() + (global_facet * nb_quad_per_facet + q) * result_vec->getNbComponent() + is_second_element * stress_size, stress_size); const Matrix & result_tmp(result_it[global_el]); result_local = result_tmp(f * nb_quad_per_facet + q); } } } } } /* -------------------------------------------------------------------------- */ template const Array & Material::getArray(__attribute__((unused)) const ID & vect_id, __attribute__((unused)) const ElementType & type, __attribute__((unused)) const GhostType & ghost_type) const { AKANTU_DEBUG_TO_IMPLEMENT(); return NULL; } /* -------------------------------------------------------------------------- */ template Array & Material::getArray(__attribute__((unused)) const ID & vect_id, __attribute__((unused)) const ElementType & type, __attribute__((unused)) const GhostType & ghost_type) { AKANTU_DEBUG_TO_IMPLEMENT(); return NULL; } /* -------------------------------------------------------------------------- */ template <> const Array & Material::getArray(const ID & vect_id, const ElementType & type, const GhostType & ghost_type) const { std::stringstream sstr; std::string ghost_id = ""; if (ghost_type == _ghost) ghost_id = ":ghost"; sstr << getID() << ":" << vect_id << ":" << type << ghost_id; ID fvect_id = sstr.str(); try { return Memory::getArray(fvect_id); } catch (debug::Exception & e) { AKANTU_SILENT_EXCEPTION("The material " << name << "(" << getID() << ") does not contain a vector " << vect_id << "(" << fvect_id << ") [" << e << "]"); } } /* -------------------------------------------------------------------------- */ template <> Array & Material::getArray(const ID & vect_id, const ElementType & type, const GhostType & ghost_type) { std::stringstream sstr; std::string ghost_id = ""; if (ghost_type == _ghost) ghost_id = ":ghost"; sstr << getID() << ":" << vect_id << ":" << type << ghost_id; ID fvect_id = sstr.str(); try { return Memory::getArray(fvect_id); } catch (debug::Exception & e) { AKANTU_SILENT_EXCEPTION("The material " << name << "(" << getID() << ") does not contain a vector " << vect_id << "(" << fvect_id << ") [" << e << "]"); } } /* -------------------------------------------------------------------------- */ template <> const Array & Material::getArray(const ID & vect_id, const ElementType & type, const GhostType & ghost_type) const { std::stringstream sstr; std::string ghost_id = ""; if (ghost_type == _ghost) ghost_id = ":ghost"; sstr << getID() << ":" << vect_id << ":" << type << ghost_id; ID fvect_id = sstr.str(); try { return Memory::getArray(fvect_id); } catch (debug::Exception & e) { AKANTU_SILENT_EXCEPTION("The material " << name << "(" << getID() << ") does not contain a vector " << vect_id << "(" << fvect_id << ") [" << e << "]"); } } /* -------------------------------------------------------------------------- */ template <> Array & Material::getArray(const ID & vect_id, const ElementType & type, const GhostType & ghost_type) { std::stringstream sstr; std::string ghost_id = ""; if (ghost_type == _ghost) ghost_id = ":ghost"; sstr << getID() << ":" << vect_id << ":" << type << ghost_id; ID fvect_id = sstr.str(); try { return Memory::getArray(fvect_id); } catch (debug::Exception & e) { AKANTU_SILENT_EXCEPTION("The material " << name << "(" << getID() << ") does not contain a vector " << vect_id << "(" << fvect_id << ") [" << e << "]"); } } /* -------------------------------------------------------------------------- */ template const InternalField & Material::getInternal(__attribute__((unused)) const ID & int_id) const { AKANTU_DEBUG_TO_IMPLEMENT(); return NULL; } /* -------------------------------------------------------------------------- */ template InternalField & Material::getInternal(__attribute__((unused)) const ID & int_id) { AKANTU_DEBUG_TO_IMPLEMENT(); return NULL; } /* -------------------------------------------------------------------------- */ template <> const InternalField & Material::getInternal(const ID & int_id) const { std::map *>::const_iterator it = internal_vectors_real.find(getID() + ":" + int_id); if (it == internal_vectors_real.end()) { AKANTU_SILENT_EXCEPTION("The material " << name << "(" << getID() << ") does not contain an internal " << int_id << " (" << (getID() + ":" + int_id) << ")"); } return *it->second; } /* -------------------------------------------------------------------------- */ template <> InternalField & Material::getInternal(const ID & int_id) { std::map *>::iterator it = internal_vectors_real.find(getID() + ":" + int_id); if (it == internal_vectors_real.end()) { AKANTU_SILENT_EXCEPTION("The material " << name << "(" << getID() << ") does not contain an internal " << int_id << " (" << (getID() + ":" + int_id) << ")"); } return *it->second; } /* -------------------------------------------------------------------------- */ template <> const InternalField & Material::getInternal(const ID & int_id) const { std::map *>::const_iterator it = internal_vectors_uint.find(getID() + ":" + int_id); if (it == internal_vectors_uint.end()) { AKANTU_SILENT_EXCEPTION("The material " << name << "(" << getID() << ") does not contain an internal " << int_id << " (" << (getID() + ":" + int_id) << ")"); } return *it->second; } /* -------------------------------------------------------------------------- */ template <> InternalField & Material::getInternal(const ID & int_id) { std::map *>::iterator it = internal_vectors_uint.find(getID() + ":" + int_id); if (it == internal_vectors_uint.end()) { AKANTU_SILENT_EXCEPTION("The material " << name << "(" << getID() << ") does not contain an internal " << int_id << " (" << (getID() + ":" + int_id) << ")"); } return *it->second; } /* -------------------------------------------------------------------------- */ void Material::addElements(const Array & elements_to_add) { AKANTU_DEBUG_IN(); UInt mat_id = model->getInternalIndexFromID(getID()); Array::const_iterator el_begin = elements_to_add.begin(); Array::const_iterator el_end = elements_to_add.end(); for (; el_begin != el_end; ++el_begin) { const Element & element = *el_begin; Array & mat_indexes = model->getMaterialByElement(element.type, element.ghost_type); Array & mat_loc_num = model->getMaterialLocalNumbering(element.type, element.ghost_type); UInt index = this->addElement(element.type, element.element, element.ghost_type); mat_indexes(element.element) = mat_id; mat_loc_num(element.element) = index; } this->resizeInternals(); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void Material::removeElements(const Array & elements_to_remove) { AKANTU_DEBUG_IN(); Array::const_iterator el_begin = elements_to_remove.begin(); Array::const_iterator el_end = elements_to_remove.end(); if (el_begin == el_end) return; ElementTypeMapArray material_local_new_numbering("remove mat filter elem", getID(), getMemoryID()); Element element; for (ghost_type_t::iterator gt = ghost_type_t::begin(); gt != ghost_type_t::end(); ++gt) { GhostType ghost_type = *gt; element.ghost_type = ghost_type; ElementTypeMapArray::type_iterator it = element_filter.firstType(_all_dimensions, ghost_type, _ek_not_defined); ElementTypeMapArray::type_iterator end = element_filter.lastType(_all_dimensions, ghost_type, _ek_not_defined); for (; it != end; ++it) { ElementType type = *it; element.type = type; Array & elem_filter = this->element_filter(type, ghost_type); Array & mat_loc_num = this->model->getMaterialLocalNumbering(type, ghost_type); if (!material_local_new_numbering.exists(type, ghost_type)) material_local_new_numbering.alloc(elem_filter.getSize(), 1, type, ghost_type); Array & mat_renumbering = material_local_new_numbering(type, ghost_type); UInt nb_element = elem_filter.getSize(); element.kind = (*el_begin).kind; Array elem_filter_tmp; UInt new_id = 0; for (UInt el = 0; el < nb_element; ++el) { element.element = elem_filter(el); if (std::find(el_begin, el_end, element) == el_end) { elem_filter_tmp.push_back(element.element); mat_renumbering(el) = new_id; mat_loc_num(element.element) = new_id; ++new_id; } else { mat_renumbering(el) = UInt(-1); } } elem_filter.resize(elem_filter_tmp.getSize()); elem_filter.copy(elem_filter_tmp); } } for (std::map *>::iterator it = internal_vectors_real.begin(); it != internal_vectors_real.end(); ++it) it->second->removeIntegrationPoints(material_local_new_numbering); for (std::map *>::iterator it = internal_vectors_uint.begin(); it != internal_vectors_uint.end(); ++it) it->second->removeIntegrationPoints(material_local_new_numbering); for (std::map *>::iterator it = internal_vectors_bool.begin(); it != internal_vectors_bool.end(); ++it) it->second->removeIntegrationPoints(material_local_new_numbering); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void Material::resizeInternals() { AKANTU_DEBUG_IN(); for (std::map *>::iterator it = internal_vectors_real.begin(); it != internal_vectors_real.end(); ++it) it->second->resize(); for (std::map *>::iterator it = internal_vectors_uint.begin(); it != internal_vectors_uint.end(); ++it) it->second->resize(); for (std::map *>::iterator it = internal_vectors_bool.begin(); it != internal_vectors_bool.end(); ++it) it->second->resize(); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void Material::onElementsAdded(__attribute__((unused)) const Array & element_list, __attribute__((unused)) const NewElementsEvent & event) { this->resizeInternals(); } /* -------------------------------------------------------------------------- */ void Material::onElementsRemoved( const Array & element_list, const ElementTypeMapArray & new_numbering, __attribute__((unused)) const RemovedElementsEvent & event) { UInt my_num = model->getInternalIndexFromID(getID()); ElementTypeMapArray material_local_new_numbering("remove mat filter elem", getID(), getMemoryID()); Array::const_iterator el_begin = element_list.begin(); Array::const_iterator el_end = element_list.end(); for (ghost_type_t::iterator g = ghost_type_t::begin(); g != ghost_type_t::end(); ++g) { GhostType gt = *g; ElementTypeMapArray::type_iterator it = new_numbering.firstType(_all_dimensions, gt, _ek_not_defined); ElementTypeMapArray::type_iterator end = new_numbering.lastType(_all_dimensions, gt, _ek_not_defined); for (; it != end; ++it) { ElementType type = *it; if (element_filter.exists(type, gt) && element_filter(type, gt).getSize()) { Array & elem_filter = element_filter(type, gt); Array & mat_indexes = this->model->getMaterialByElement(*it, gt); Array & mat_loc_num = this->model->getMaterialLocalNumbering(*it, gt); UInt nb_element = this->model->getMesh().getNbElement(type, gt); // all materials will resize of the same size... mat_indexes.resize(nb_element); mat_loc_num.resize(nb_element); if (!material_local_new_numbering.exists(type, gt)) material_local_new_numbering.alloc(elem_filter.getSize(), 1, type, gt); Array & mat_renumbering = material_local_new_numbering(type, gt); const Array & renumbering = new_numbering(type, gt); Array elem_filter_tmp; UInt ni = 0; Element el; el.type = type; el.ghost_type = gt; el.kind = Mesh::getKind(type); for (UInt i = 0; i < elem_filter.getSize(); ++i) { el.element = elem_filter(i); if (std::find(el_begin, el_end, el) == el_end) { UInt new_el = renumbering(el.element); AKANTU_DEBUG_ASSERT( new_el != UInt(-1), "A not removed element as been badly renumbered"); elem_filter_tmp.push_back(new_el); mat_renumbering(i) = ni; mat_indexes(new_el) = my_num; mat_loc_num(new_el) = ni; ++ni; } else { mat_renumbering(i) = UInt(-1); } } elem_filter.resize(elem_filter_tmp.getSize()); elem_filter.copy(elem_filter_tmp); } } } for (std::map *>::iterator it = internal_vectors_real.begin(); it != internal_vectors_real.end(); ++it) it->second->removeIntegrationPoints(material_local_new_numbering); for (std::map *>::iterator it = internal_vectors_uint.begin(); it != internal_vectors_uint.end(); ++it) it->second->removeIntegrationPoints(material_local_new_numbering); for (std::map *>::iterator it = internal_vectors_bool.begin(); it != internal_vectors_bool.end(); ++it) it->second->removeIntegrationPoints(material_local_new_numbering); } /* -------------------------------------------------------------------------- */ void Material::onBeginningSolveStep(__attribute__((unused)) const AnalysisMethod & method) { this->savePreviousState(); } /* -------------------------------------------------------------------------- */ void Material::onEndSolveStep(__attribute__((unused)) const AnalysisMethod & method) { ElementTypeMapArray::type_iterator it = this->element_filter.firstType( _all_dimensions, _not_ghost, _ek_not_defined); ElementTypeMapArray::type_iterator end = element_filter.lastType(_all_dimensions, _not_ghost, _ek_not_defined); for (; it != end; ++it) { this->updateEnergies(*it, _not_ghost); } } /* -------------------------------------------------------------------------- */ void Material::onDamageIteration() { this->savePreviousState(); } /* -------------------------------------------------------------------------- */ void Material::onDamageUpdate() { ElementTypeMapArray::type_iterator it = this->element_filter.firstType( _all_dimensions, _not_ghost, _ek_not_defined); ElementTypeMapArray::type_iterator end = element_filter.lastType(_all_dimensions, _not_ghost, _ek_not_defined); for (; it != end; ++it) { this->updateEnergiesAfterDamage(*it, _not_ghost); } } /* -------------------------------------------------------------------------- */ void Material::onDump() { if (this->isFiniteDeformation()) this->computeAllCauchyStresses(_not_ghost); } /* -------------------------------------------------------------------------- */ void Material::printself(std::ostream & stream, int indent) const { std::string space; for (Int i = 0; i < indent; i++, space += AKANTU_INDENT) ; std::string type = getID().substr(getID().find_last_of(":") + 1); stream << space << "Material " << type << " [" << std::endl; Parsable::printself(stream, indent); stream << space << "]" << std::endl; } /* -------------------------------------------------------------------------- */ /// extrapolate internal values void Material::extrapolateInternal(const ID & id, const Element & element, __attribute__((unused)) const Matrix & point, Matrix & extrapolated) { if (this->isInternal(id, element.kind)) { UInt nb_element = this->element_filter(element.type, element.ghost_type).getSize(); const ID name = this->getID() + ":" + id; UInt nb_quads = this->internal_vectors_real[name]->getFEEngine().getNbIntegrationPoints( element.type, element.ghost_type); const Array & internal = this->getArray(id, element.type, element.ghost_type); UInt nb_component = internal.getNbComponent(); Array::const_matrix_iterator internal_it = internal.begin_reinterpret(nb_component, nb_quads, nb_element); Element local_element = this->convertToLocalElement(element); /// instead of really extrapolating, here the value of the first GP /// is copied into the result vector. This works only for linear /// elements /// @todo extrapolate!!!! AKANTU_DEBUG_WARNING("This is a fix, values are not truly extrapolated"); const Matrix & values = internal_it[local_element.element]; UInt index = 0; Vector tmp(nb_component); for (UInt j = 0; j < values.cols(); ++j) { tmp = values(j); if (tmp.norm() > 0) { index = j; break; } } for (UInt i = 0; i < extrapolated.size(); ++i) { extrapolated(i) = values(index); } } else { Matrix default_values(extrapolated.rows(), extrapolated.cols(), 0.); extrapolated = default_values; } } /* -------------------------------------------------------------------------- */ void Material::applyEigenGradU(const Matrix & prescribed_eigen_grad_u, const GhostType ghost_type) { ElementTypeMapArray::type_iterator it = this->element_filter.firstType( _all_dimensions, _not_ghost, _ek_not_defined); ElementTypeMapArray::type_iterator end = element_filter.lastType(_all_dimensions, _not_ghost, _ek_not_defined); for (; it != end; ++it) { ElementType type = *it; if (!element_filter(type, ghost_type).getSize()) continue; Array::matrix_iterator eigen_it = this->eigengradu(type, ghost_type) .begin(spatial_dimension, spatial_dimension); Array::matrix_iterator eigen_end = this->eigengradu(type, ghost_type) .end(spatial_dimension, spatial_dimension); for (; eigen_it != eigen_end; ++eigen_it) { Matrix & current_eigengradu = *eigen_it; current_eigengradu = prescribed_eigen_grad_u; } } } __END_AKANTU__ diff --git a/src/model/solid_mechanics/material.hh b/src/model/solid_mechanics/material.hh index c64c887ae..dd3307b59 100644 --- a/src/model/solid_mechanics/material.hh +++ b/src/model/solid_mechanics/material.hh @@ -1,659 +1,664 @@ /** * @file material.hh * * @author Daniel Pino Muñoz * @author Nicolas Richart * @author Marco Vocialta * * @date creation: Fri Jun 18 2010 * @date last modification: Wed Nov 25 2015 * * @brief Mother class for all materials * * @section LICENSE * * Copyright (©) 2010-2012, 2014, 2015 EPFL (Ecole Polytechnique Fédérale de * Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des * Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "aka_common.hh" #include "aka_memory.hh" #include "aka_voigthelper.hh" #include "parser.hh" #include "parsable.hh" #include "data_accessor.hh" #include "integration_point.hh" /* -------------------------------------------------------------------------- */ #include "internal_field.hh" #include "random_internal_field.hh" /* -------------------------------------------------------------------------- */ #include "mesh_events.hh" #include "solid_mechanics_model_event_handler.hh" /* -------------------------------------------------------------------------- */ #ifndef __AKANTU_MATERIAL_HH__ #define __AKANTU_MATERIAL_HH__ /* -------------------------------------------------------------------------- */ namespace akantu { class Model; class SolidMechanicsModel; } __BEGIN_AKANTU__ /** * Interface of all materials * Prerequisites for a new material * - inherit from this class * - implement the following methods: * \code * virtual Real getStableTimeStep(Real h, const Element & element = * ElementNull); * * virtual void computeStress(ElementType el_type, * GhostType ghost_type = _not_ghost); * * virtual void computeTangentStiffness(const ElementType & el_type, * Array & tangent_matrix, * GhostType ghost_type = _not_ghost); * \endcode * */ class Material : public Memory, public DataAccessor, public Parsable, public MeshEventHandler, protected SolidMechanicsModelEventHandler { /* ------------------------------------------------------------------------ */ /* Constructors/Destructors */ /* ------------------------------------------------------------------------ */ public: #if __cplusplus > 199711L Material(const Material & mat) = delete; Material & operator=(const Material & mat) = delete; #endif /// Initialize material with defaults Material(SolidMechanicsModel & model, const ID & id = ""); /// Initialize material with custom mesh & fe_engine Material(SolidMechanicsModel & model, UInt dim, const Mesh & mesh, FEEngine & fe_engine, const ID & id = ""); /// Destructor virtual ~Material(); protected: void initialize(); /* ------------------------------------------------------------------------ */ /* Function that materials can/should reimplement */ /* ------------------------------------------------------------------------ */ protected: /// constitutive law virtual void computeStress(__attribute__((unused)) ElementType el_type, __attribute__((unused)) GhostType ghost_type = _not_ghost) { AKANTU_DEBUG_TO_IMPLEMENT(); } /// compute the tangent stiffness matrix virtual void computeTangentModuli(__attribute__((unused)) const ElementType & el_type, __attribute__((unused)) Array & tangent_matrix, __attribute__((unused)) GhostType ghost_type = _not_ghost) { AKANTU_DEBUG_TO_IMPLEMENT(); } /// compute the potential energy virtual void computePotentialEnergy(ElementType el_type, GhostType ghost_type = _not_ghost); /// compute the potential energy for an element virtual void computePotentialEnergyByElement(__attribute__((unused)) ElementType type, __attribute__((unused)) UInt index, __attribute__((unused)) Vector & epot_on_quad_points) { AKANTU_DEBUG_TO_IMPLEMENT(); } virtual void updateEnergies(__attribute__((unused)) ElementType el_type, __attribute__((unused)) GhostType ghost_type = _not_ghost) {} virtual void updateEnergiesAfterDamage(__attribute__((unused)) ElementType el_type, __attribute__((unused)) GhostType ghost_type = _not_ghost) {} /// set the material to steady state (to be implemented for materials that /// need it) virtual void setToSteadyState(__attribute__((unused)) ElementType el_type, __attribute__((unused)) GhostType ghost_type = _not_ghost) {} /// function called to update the internal parameters when the modifiable /// parameters are modified virtual void updateInternalParameters() {} public: /// extrapolate internal values virtual void extrapolateInternal(const ID & id, const Element & element, const Matrix & points, Matrix & extrapolated); /// compute the p-wave speed in the material virtual Real getPushWaveSpeed(__attribute__((unused)) const Element & element) const { AKANTU_DEBUG_TO_IMPLEMENT(); } /// compute the s-wave speed in the material virtual Real getShearWaveSpeed(__attribute__((unused)) const Element & element) const { AKANTU_DEBUG_TO_IMPLEMENT(); } /// get a material celerity to compute the stable time step (default: is the /// push wave speed) virtual Real getCelerity(const Element & element) const { return getPushWaveSpeed(element); } /* ------------------------------------------------------------------------ */ /* Methods */ /* ------------------------------------------------------------------------ */ public: template void registerInternal(__attribute__((unused)) InternalField & vect) { AKANTU_DEBUG_TO_IMPLEMENT(); } template void unregisterInternal(__attribute__((unused)) InternalField & vect) { AKANTU_DEBUG_TO_IMPLEMENT(); } /// initialize the material computed parameter virtual void initMaterial(); /// compute the residual for this material // virtual void updateResidual(GhostType ghost_type = _not_ghost); /// assemble the residual for this material virtual void assembleInternalForces(GhostType ghost_type); /// save the stress in the previous_stress if needed virtual void savePreviousState(); /// compute the stresses for this material virtual void computeAllStresses(GhostType ghost_type = _not_ghost); virtual void computeAllStressesFromTangentModuli(GhostType ghost_type = _not_ghost); virtual void computeAllCauchyStresses(GhostType ghost_type = _not_ghost); /// set material to steady state void setToSteadyState(GhostType ghost_type = _not_ghost); /// compute the stiffness matrix virtual void assembleStiffnessMatrix(GhostType ghost_type); /// add an element to the local mesh filter inline UInt addElement(const ElementType & type, UInt element, const GhostType & ghost_type); /// add many elements at once void addElements(const Array & elements_to_add); /// remove many element at once void removeElements(const Array & elements_to_remove); /// function to print the contain of the class virtual void printself(std::ostream & stream, int indent = 0) const; /** * interpolate stress on given positions for each element by means * of a geometrical interpolation on quadrature points */ void interpolateStress(ElementTypeMapArray & result, const GhostType ghost_type = _not_ghost); /** * interpolate stress on given positions for each element by means * of a geometrical interpolation on quadrature points and store the * results per facet */ void interpolateStressOnFacets(ElementTypeMapArray & result, ElementTypeMapArray & by_elem_result, const GhostType ghost_type = _not_ghost); /** * function to initialize the elemental field interpolation * function by inverting the quadrature points' coordinates */ void initElementalFieldInterpolation( const ElementTypeMapArray & interpolation_points_coordinates); /* ------------------------------------------------------------------------ */ /* Common part */ /* ------------------------------------------------------------------------ */ protected: /* ------------------------------------------------------------------------ */ inline UInt getTangentStiffnessVoigtSize(UInt spatial_dimension) const; /// compute the potential energy by element void computePotentialEnergyByElements(); /// resize the intenals arrays virtual void resizeInternals(); /* ------------------------------------------------------------------------ */ /* Finite deformation functions */ /* This functions area implementing what is described in the paper of Bathe */ /* et al, in IJNME, Finite Element Formulations For Large Deformation */ /* Dynamic Analysis, Vol 9, 353-386, 1975 */ /* ------------------------------------------------------------------------ */ protected: /// assemble the residual template void assembleInternalForces(GhostType ghost_type); /// Computation of Cauchy stress tensor in the case of finite deformation from /// the 2nd Piola-Kirchhoff for a given element type template void computeCauchyStress(__attribute__((unused)) ElementType el_type, __attribute__((unused)) GhostType ghost_type = _not_ghost); /// Computation the Cauchy stress the 2nd Piola-Kirchhoff and the deformation /// gradient template inline void computeCauchyStressOnQuad(const Matrix & F, const Matrix & S, Matrix & cauchy, const Real & C33 = 1.0) const; template void computeAllStressesFromTangentModuli(const ElementType & type, GhostType ghost_type); template void assembleStiffnessMatrix(const ElementType & type, GhostType ghost_type); /// assembling in finite deformation template void assembleStiffnessMatrixNL(const ElementType & type, GhostType ghost_type); template void assembleStiffnessMatrixL2(const ElementType & type, GhostType ghost_type); /// Size of the Stress matrix for the case of finite deformation see: Bathe et /// al, IJNME, Vol 9, 353-386, 1975 inline UInt getCauchyStressMatrixSize(UInt spatial_dimension) const; /// Sets the stress matrix according to Bathe et al, IJNME, Vol 9, 353-386, /// 1975 template inline void setCauchyStressMatrix(const Matrix & S_t, Matrix & sigma); /// write the stress tensor in the Voigt notation. template inline void setCauchyStressArray(const Matrix & S_t, Matrix & sigma_voight); /* ------------------------------------------------------------------------ */ /* Conversion functions */ /* ------------------------------------------------------------------------ */ public: template static inline void gradUToF(const Matrix & grad_u, Matrix & F); static inline void rightCauchy(const Matrix & F, Matrix & C); static inline void leftCauchy(const Matrix & F, Matrix & B); template static inline void gradUToEpsilon(const Matrix & grad_u, Matrix & epsilon); template static inline void gradUToGreenStrain(const Matrix & grad_u, Matrix & epsilon); static inline Real stressToVonMises(const Matrix & stress); protected: /// converts global element to local element inline Element convertToLocalElement(const Element & global_element) const; /// converts local element to global element inline Element convertToGlobalElement(const Element & local_element) const; /// converts global quadrature point to local quadrature point inline IntegrationPoint convertToLocalPoint(const IntegrationPoint & global_point) const; /// converts local quadrature point to global quadrature point inline IntegrationPoint convertToGlobalPoint(const IntegrationPoint & local_point) const; /* ------------------------------------------------------------------------ */ /* DataAccessor inherited members */ /* ------------------------------------------------------------------------ */ public: virtual inline UInt getNbData(const Array & elements, const SynchronizationTag & tag) const; virtual inline void packData(CommunicationBuffer & buffer, const Array & elements, const SynchronizationTag & tag) const; virtual inline void unpackData(CommunicationBuffer & buffer, const Array & elements, const SynchronizationTag & tag); template inline void packElementDataHelper(const ElementTypeMapArray & data_to_pack, CommunicationBuffer & buffer, const Array & elements, const ID & fem_id = ID()) const; template inline void unpackElementDataHelper(ElementTypeMapArray & data_to_unpack, CommunicationBuffer & buffer, const Array & elements, const ID & fem_id = ID()); /* ------------------------------------------------------------------------ */ /* MeshEventHandler inherited members */ /* ------------------------------------------------------------------------ */ public: /* ------------------------------------------------------------------------ */ virtual void onNodesAdded(__attribute__((unused)) const Array & nodes_list, __attribute__((unused)) const NewNodesEvent & event){}; virtual void onNodesRemoved(__attribute__((unused)) const Array & nodes_list, __attribute__((unused)) const Array & new_numbering, __attribute__((unused)) const RemovedNodesEvent & event){}; virtual void onElementsAdded(const Array & element_list, const NewElementsEvent & event); virtual void onElementsRemoved(const Array & element_list, const ElementTypeMapArray & new_numbering, const RemovedElementsEvent & event); virtual void onElementsChanged( __attribute__((unused)) const Array & old_elements_list, __attribute__((unused)) const Array & new_elements_list, __attribute__((unused)) const ElementTypeMapArray & new_numbering, __attribute__((unused)) const ChangedElementsEvent & event){}; /* ------------------------------------------------------------------------ */ /* SolidMechanicsModelEventHandler inherited members */ /* ------------------------------------------------------------------------ */ public: virtual void onBeginningSolveStep(const AnalysisMethod & method); virtual void onEndSolveStep(const AnalysisMethod & method); virtual void onDamageIteration(); virtual void onDamageUpdate(); virtual void onDump(); /* ------------------------------------------------------------------------ */ /* Accessors */ /* ------------------------------------------------------------------------ */ public: AKANTU_GET_MACRO(Name, name, const std::string &); AKANTU_GET_MACRO(Model, *model, const SolidMechanicsModel &) AKANTU_GET_MACRO(ID, Memory::getID(), const ID &); AKANTU_GET_MACRO(Rho, rho, Real); AKANTU_SET_MACRO(Rho, rho, Real); AKANTU_GET_MACRO(SpatialDimension, spatial_dimension, UInt); /// return the potential energy for the subset of elements contained by the /// material Real getPotentialEnergy(); /// return the potential energy for the provided element Real getPotentialEnergy(ElementType & type, UInt index); /// return the energy (identified by id) for the subset of elements contained /// by the material virtual Real getEnergy(std::string energy_id); /// return the energy (identified by id) for the provided element virtual Real getEnergy(std::string energy_id, ElementType type, UInt index); AKANTU_GET_MACRO_BY_ELEMENT_TYPE_CONST(ElementFilter, element_filter, UInt); AKANTU_GET_MACRO_BY_ELEMENT_TYPE_CONST(GradU, gradu, Real); AKANTU_GET_MACRO_BY_ELEMENT_TYPE_CONST(Stress, stress, Real); AKANTU_GET_MACRO_BY_ELEMENT_TYPE_CONST(PotentialEnergy, potential_energy, Real); AKANTU_GET_MACRO(GradU, gradu, const ElementTypeMapArray &); AKANTU_GET_MACRO(Stress, stress, const ElementTypeMapArray &); AKANTU_GET_MACRO(ElementFilter, element_filter, const ElementTypeMapArray &); AKANTU_GET_MACRO(FEEngine, *fem, FEEngine &); bool isNonLocal() const { return is_non_local; } template const Array & getArray(const ID & id, const ElementType & type, const GhostType & ghost_type = _not_ghost) const; template Array & getArray(const ID & id, const ElementType & type, const GhostType & ghost_type = _not_ghost); template const InternalField & getInternal(const ID & id) const; template InternalField & getInternal(const ID & id); template inline bool isInternal(const ID & id, const ElementKind & element_kind) const; template ElementTypeMap getInternalDataPerElem(const ID & id, const ElementKind & element_kind) const; bool isFiniteDeformation() const { return finite_deformation; } bool isInelasticDeformation() const { return inelastic_deformation; } template inline void setParam(const ID & param, T value); inline const Parameter & getParam(const ID & param) const; template void flattenInternal(const std::string & field_id, ElementTypeMapArray & internal_flat, const GhostType ghost_type = _not_ghost, ElementKind element_kind = _ek_not_defined) const; /// apply a constant eigengrad_u everywhere in the material virtual void applyEigenGradU(const Matrix & prescribed_eigen_grad_u, const GhostType = _not_ghost); + /// specify if the matrix need to be recomputed for this material + virtual bool hasStiffnessMatrixChanged() { + return true; + } + protected: bool isInit() const { return is_init; } /* ------------------------------------------------------------------------ */ /* Class Members */ /* ------------------------------------------------------------------------ */ protected: /// boolean to know if the material has been initialized bool is_init; std::map *> internal_vectors_real; std::map *> internal_vectors_uint; std::map *> internal_vectors_bool; protected: /// Link to the fem object in the model FEEngine * fem; /// Finite deformation bool finite_deformation; /// Finite deformation bool inelastic_deformation; /// material name std::string name; /// The model to witch the material belong SolidMechanicsModel * model; /// density : rho Real rho; /// spatial dimension UInt spatial_dimension; /// list of element handled by the material ElementTypeMapArray element_filter; /// stresses arrays ordered by element types InternalField stress; /// eigengrad_u arrays ordered by element types InternalField eigengradu; /// grad_u arrays ordered by element types InternalField gradu; /// Green Lagrange strain (Finite deformation) InternalField green_strain; /// Second Piola-Kirchhoff stress tensor arrays ordered by element types /// (Finite deformation) InternalField piola_kirchhoff_2; /// potential energy by element InternalField potential_energy; /// tell if using in non local mode or not bool is_non_local; /// tell if the material need the previous stress state bool use_previous_stress; /// tell if the material need the previous strain state bool use_previous_gradu; /// elemental field interpolation coordinates InternalField interpolation_inverse_coordinates; /// elemental field interpolation points InternalField interpolation_points_matrices; /// vector that contains the names of all the internals that need to /// be transferred when material interfaces move std::vector internals_to_transfer; }; /// standard output stream operator inline std::ostream & operator<<(std::ostream & stream, const Material & _this) { _this.printself(stream); return stream; } __END_AKANTU__ #include "material_inline_impl.cc" #include "internal_field_tmpl.hh" #include "random_internal_field_tmpl.hh" /* -------------------------------------------------------------------------- */ /* Auto loop */ /* -------------------------------------------------------------------------- */ /// This can be used to automatically write the loop on quadrature points in /// functions such as computeStress. This macro in addition to write the loop /// provides two tensors (matrices) sigma and grad_u #define MATERIAL_STRESS_QUADRATURE_POINT_LOOP_BEGIN(el_type, ghost_type) \ Array::matrix_iterator gradu_it = \ this->gradu(el_type, ghost_type) \ .begin(this->spatial_dimension, this->spatial_dimension); \ Array::matrix_iterator gradu_end = \ this->gradu(el_type, ghost_type) \ .end(this->spatial_dimension, this->spatial_dimension); \ \ this->stress(el_type, ghost_type) \ .resize(this->gradu(el_type, ghost_type).getSize()); \ \ Array::iterator > stress_it = \ this->stress(el_type, ghost_type) \ .begin(this->spatial_dimension, this->spatial_dimension); \ \ if (this->isFiniteDeformation()) { \ this->piola_kirchhoff_2(el_type, ghost_type) \ .resize(this->gradu(el_type, ghost_type).getSize()); \ stress_it = this->piola_kirchhoff_2(el_type, ghost_type) \ .begin(this->spatial_dimension, this->spatial_dimension); \ } \ \ for (; gradu_it != gradu_end; ++gradu_it, ++stress_it) { \ Matrix & __attribute__((unused)) grad_u = *gradu_it; \ Matrix & __attribute__((unused)) sigma = *stress_it #define MATERIAL_STRESS_QUADRATURE_POINT_LOOP_END } /// This can be used to automatically write the loop on quadrature points in /// functions such as computeTangentModuli. This macro in addition to write the /// loop provides two tensors (matrices) sigma_tensor, grad_u, and a matrix /// where the elemental tangent moduli should be stored in Voigt Notation #define MATERIAL_TANGENT_QUADRATURE_POINT_LOOP_BEGIN(tangent_mat) \ Array::matrix_iterator gradu_it = \ this->gradu(el_type, ghost_type) \ .begin(this->spatial_dimension, this->spatial_dimension); \ Array::matrix_iterator gradu_end = \ this->gradu(el_type, ghost_type) \ .end(this->spatial_dimension, this->spatial_dimension); \ Array::matrix_iterator sigma_it = \ this->stress(el_type, ghost_type) \ .begin(this->spatial_dimension, this->spatial_dimension); \ \ tangent_mat.resize(this->gradu(el_type, ghost_type).getSize()); \ \ UInt tangent_size = \ this->getTangentStiffnessVoigtSize(this->spatial_dimension); \ Array::matrix_iterator tangent_it = \ tangent_mat.begin(tangent_size, tangent_size); \ \ for (; gradu_it != gradu_end; ++gradu_it, ++sigma_it, ++tangent_it) { \ Matrix & __attribute__((unused)) grad_u = *gradu_it; \ Matrix & __attribute__((unused)) sigma_tensor = *sigma_it; \ Matrix & tangent = *tangent_it #define MATERIAL_TANGENT_QUADRATURE_POINT_LOOP_END } /* -------------------------------------------------------------------------- */ #define INSTANTIATE_MATERIAL(mat_name) \ template class mat_name<1>; \ template class mat_name<2>; \ template class mat_name<3> #endif /* __AKANTU_MATERIAL_HH__ */ // LocalWords: ElementNull diff --git a/src/model/solid_mechanics/materials/material_damage/material_damage.hh b/src/model/solid_mechanics/materials/material_damage/material_damage.hh index d7e0d76de..aace57a4c 100644 --- a/src/model/solid_mechanics/materials/material_damage/material_damage.hh +++ b/src/model/solid_mechanics/materials/material_damage/material_damage.hh @@ -1,113 +1,113 @@ /** * @file material_damage.hh * * @author Marion Estelle Chambart * @author Aurelia Isabel Cuba Ramos * @author Nicolas Richart * * @date creation: Fri Jun 18 2010 * @date last modification: Sat Jul 11 2015 * * @brief Material isotropic elastic * * @section LICENSE * * Copyright (©) 2010-2012, 2014, 2015 EPFL (Ecole Polytechnique Fédérale de * Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des * Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "aka_common.hh" #include "material_elastic.hh" /* -------------------------------------------------------------------------- */ #ifndef __AKANTU_MATERIAL_DAMAGE_HH__ #define __AKANTU_MATERIAL_DAMAGE_HH__ __BEGIN_AKANTU__ -template class Parent = MaterialElastic> +template class Parent = MaterialElastic> class MaterialDamage : public Parent { /* ------------------------------------------------------------------------ */ /* Constructors/Destructors */ /* ------------------------------------------------------------------------ */ public: - MaterialDamage(SolidMechanicsModel & model, const ID & id = ""); - virtual ~MaterialDamage() {}; + virtual ~MaterialDamage(){}; /* ------------------------------------------------------------------------ */ /* Methods */ /* ------------------------------------------------------------------------ */ public: - virtual void initMaterial(); /// compute the tangent stiffness matrix for an element type virtual void computeTangentModuli(const ElementType & el_type, - Array & tangent_matrix, - GhostType ghost_type = _not_ghost); + Array & tangent_matrix, + GhostType ghost_type = _not_ghost); + virtual bool hasStiffnessMatrixChanged() { return true; } protected: - /// update the dissipated energy, must be called after the stress have been computed + /// update the dissipated energy, must be called after the stress have been + /// computed virtual void updateEnergies(ElementType el_type, GhostType ghost_type); /// compute the tangent stiffness matrix for a given quadrature point inline void computeTangentModuliOnQuad(Matrix & tangent, Real & dam); /* ------------------------------------------------------------------------ */ /* DataAccessor inherited members */ /* ------------------------------------------------------------------------ */ public: - /* ------------------------------------------------------------------------ */ /* Accessors */ /* ------------------------------------------------------------------------ */ public: /// give the dissipated energy for the time step Real getDissipatedEnergy() const; virtual Real getEnergy(std::string type); virtual Real getEnergy(std::string energy_id, ElementType type, UInt index) { return Parent::getEnergy(energy_id, type, index); }; AKANTU_GET_MACRO_NOT_CONST(Damage, damage, ElementTypeMapArray &); AKANTU_GET_MACRO(Damage, damage, const ElementTypeMapArray &); AKANTU_GET_MACRO_BY_ELEMENT_TYPE_CONST(Damage, damage, Real) /* ------------------------------------------------------------------------ */ /* Class Members */ /* ------------------------------------------------------------------------ */ protected: /// damage internal variable InternalField damage; /// dissipated energy InternalField dissipated_energy; - /// contain the current value of @f$ \int_0^{\epsilon}\sigma(\omega)d\omega @f$ the dissipated energy + /// contain the current value of @f$ \int_0^{\epsilon}\sigma(\omega)d\omega + /// @f$ the dissipated energy InternalField int_sigma; - }; __END_AKANTU__ #include "material_damage_tmpl.hh" #endif /* __AKANTU_MATERIAL_DAMAGE_HH__ */ diff --git a/src/model/solid_mechanics/materials/material_elastic.cc b/src/model/solid_mechanics/materials/material_elastic.cc index a9207c40d..2f2474e5f 100644 --- a/src/model/solid_mechanics/materials/material_elastic.cc +++ b/src/model/solid_mechanics/materials/material_elastic.cc @@ -1,253 +1,259 @@ /** * @file material_elastic.cc * * @author Lucas Frerot * @author Daniel Pino Muñoz * @author Nicolas Richart * @author Marco Vocialta * * @date creation: Fri Jun 18 2010 * @date last modification: Thu Oct 15 2015 * * @brief Specialization of the material class for the elastic material * * @section LICENSE * * Copyright (©) 2010-2012, 2014, 2015 EPFL (Ecole Polytechnique Fédérale de * Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des * Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "material_elastic.hh" #include "solid_mechanics_model.hh" /* -------------------------------------------------------------------------- */ __BEGIN_AKANTU__ /* -------------------------------------------------------------------------- */ template MaterialElastic::MaterialElastic(SolidMechanicsModel & model, const ID & id) - : Material(model, id), Parent(model, id) { + : Material(model, id), Parent(model, id), was_stiffness_assembled(false) { AKANTU_DEBUG_IN(); this->initialize(); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template MaterialElastic::MaterialElastic(SolidMechanicsModel & model, __attribute__((unused)) UInt a_dim, const Mesh & mesh, FEEngine & fe_engine, const ID & id) : Material(model, dim, mesh, fe_engine, id), - Parent(model, dim, mesh, fe_engine, id) { + Parent(model, dim, mesh, fe_engine, id), was_stiffness_assembled(false) { AKANTU_DEBUG_IN(); this->initialize(); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template void MaterialElastic::initialize() { this->registerParam("lambda", lambda, _pat_readable, "First Lamé coefficient"); this->registerParam("mu", mu, _pat_readable, "Second Lamé coefficient"); this->registerParam("kapa", kpa, _pat_readable, "Bulk coefficient"); } /* -------------------------------------------------------------------------- */ template void MaterialElastic::initMaterial() { AKANTU_DEBUG_IN(); Parent::initMaterial(); if (dim == 1) this->nu = 0.; this->updateInternalParameters(); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template void MaterialElastic::updateInternalParameters() { MaterialThermal::updateInternalParameters(); this->lambda = this->nu * this->E / ((1 + this->nu) * (1 - 2 * this->nu)); this->mu = this->E / (2 * (1 + this->nu)); this->kpa = this->lambda + 2. / 3. * this->mu; + + this->was_stiffness_assembled = false; } /* -------------------------------------------------------------------------- */ template <> void MaterialElastic<2>::updateInternalParameters() { MaterialThermal<2>::updateInternalParameters(); this->lambda = this->nu * this->E / ((1 + this->nu) * (1 - 2 * this->nu)); this->mu = this->E / (2 * (1 + this->nu)); if (this->plane_stress) this->lambda = this->nu * this->E / ((1 + this->nu) * (1 - this->nu)); this->kpa = this->lambda + 2. / 3. * this->mu; + + this->was_stiffness_assembled = false; } /* -------------------------------------------------------------------------- */ template void MaterialElastic::computeStress(ElementType el_type, GhostType ghost_type) { AKANTU_DEBUG_IN(); Parent::computeStress(el_type, ghost_type); Array::const_scalar_iterator sigma_th_it = this->sigma_th(el_type, ghost_type).begin(); if (!this->finite_deformation) { MATERIAL_STRESS_QUADRATURE_POINT_LOOP_BEGIN(el_type, ghost_type); const Real & sigma_th = *sigma_th_it; this->computeStressOnQuad(grad_u, sigma, sigma_th); ++sigma_th_it; MATERIAL_STRESS_QUADRATURE_POINT_LOOP_END; } else { /// finite gradus Matrix E(spatial_dimension, spatial_dimension); MATERIAL_STRESS_QUADRATURE_POINT_LOOP_BEGIN(el_type, ghost_type); /// compute E this->template gradUToGreenStrain(grad_u, E); const Real & sigma_th = *sigma_th_it; /// compute second Piola-Kirchhoff stress tensor this->computeStressOnQuad(E, sigma, sigma_th); ++sigma_th_it; MATERIAL_STRESS_QUADRATURE_POINT_LOOP_END; } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template void MaterialElastic::computeTangentModuli( __attribute__((unused)) const ElementType & el_type, Array & tangent_matrix, __attribute__((unused)) GhostType ghost_type) { AKANTU_DEBUG_IN(); MATERIAL_TANGENT_QUADRATURE_POINT_LOOP_BEGIN(tangent_matrix); this->computeTangentModuliOnQuad(tangent); MATERIAL_TANGENT_QUADRATURE_POINT_LOOP_END; + this->was_stiffness_assembled = true; + AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template Real MaterialElastic::getPushWaveSpeed( __attribute__((unused)) const Element & element) const { return sqrt((lambda + 2 * mu) / this->rho); } /* -------------------------------------------------------------------------- */ template Real MaterialElastic::getShearWaveSpeed( __attribute__((unused)) const Element & element) const { return sqrt(mu / this->rho); } /* -------------------------------------------------------------------------- */ template void MaterialElastic::computePotentialEnergy( ElementType el_type, GhostType ghost_type) { AKANTU_DEBUG_IN(); MaterialThermal::computePotentialEnergy(el_type, ghost_type); if (ghost_type != _not_ghost) return; Array::scalar_iterator epot = this->potential_energy(el_type, ghost_type).begin(); if (!this->finite_deformation) { MATERIAL_STRESS_QUADRATURE_POINT_LOOP_BEGIN(el_type, ghost_type); this->computePotentialEnergyOnQuad(grad_u, sigma, *epot); ++epot; MATERIAL_STRESS_QUADRATURE_POINT_LOOP_END; } else { Matrix E(spatial_dimension, spatial_dimension); MATERIAL_STRESS_QUADRATURE_POINT_LOOP_BEGIN(el_type, ghost_type); this->template gradUToGreenStrain(grad_u, E); this->computePotentialEnergyOnQuad(E, sigma, *epot); ++epot; MATERIAL_STRESS_QUADRATURE_POINT_LOOP_END; } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template void MaterialElastic::computePotentialEnergyByElement( ElementType type, UInt index, Vector & epot_on_quad_points) { Array::matrix_iterator gradu_it = this->gradu(type).begin(spatial_dimension, spatial_dimension); Array::matrix_iterator gradu_end = this->gradu(type).begin(spatial_dimension, spatial_dimension); Array::matrix_iterator stress_it = this->stress(type).begin(spatial_dimension, spatial_dimension); if (this->finite_deformation) stress_it = this->piola_kirchhoff_2(type) .begin(spatial_dimension, spatial_dimension); UInt nb_quadrature_points = this->model->getFEEngine().getNbIntegrationPoints(type); gradu_it += index * nb_quadrature_points; gradu_end += (index + 1) * nb_quadrature_points; stress_it += index * nb_quadrature_points; Real * epot_quad = epot_on_quad_points.storage(); Matrix grad_u(spatial_dimension, spatial_dimension); for (; gradu_it != gradu_end; ++gradu_it, ++stress_it, ++epot_quad) { if (this->finite_deformation) this->template gradUToGreenStrain(*gradu_it, grad_u); else grad_u.copy(*gradu_it); this->computePotentialEnergyOnQuad(grad_u, *stress_it, *epot_quad); } } /* -------------------------------------------------------------------------- */ INSTANTIATE_MATERIAL(MaterialElastic); __END_AKANTU__ diff --git a/src/model/solid_mechanics/materials/material_elastic.hh b/src/model/solid_mechanics/materials/material_elastic.hh index 15214a1d3..fd011833f 100644 --- a/src/model/solid_mechanics/materials/material_elastic.hh +++ b/src/model/solid_mechanics/materials/material_elastic.hh @@ -1,153 +1,158 @@ /** * @file material_elastic.hh * * @author Lucas Frerot * @author Daniel Pino Muñoz * @author Nicolas Richart * * @date creation: Fri Jun 18 2010 * @date last modification: Sun Nov 15 2015 * * @brief Material isotropic elastic * * @section LICENSE * * Copyright (©) 2010-2012, 2014, 2015 EPFL (Ecole Polytechnique Fédérale de * Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des * Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "aka_common.hh" #include "material_thermal.hh" #include "plane_stress_toolbox.hh" /* -------------------------------------------------------------------------- */ #ifndef __AKANTU_MATERIAL_ELASTIC_HH__ #define __AKANTU_MATERIAL_ELASTIC_HH__ -__BEGIN_AKANTU__ +namespace akantu { /** * Material elastic isotropic * * parameters in the material files : * - E : Young's modulus (default: 0) * - nu : Poisson's ratio (default: 1/2) * - Plane_Stress : if 0: plane strain, else: plane stress (default: 0) */ -template -class MaterialElastic : public PlaneStressToolbox< spatial_dimension, - MaterialThermal > { +template +class MaterialElastic + : public PlaneStressToolbox> { /* ------------------------------------------------------------------------ */ /* Constructors/Destructors */ /* ------------------------------------------------------------------------ */ private: - typedef PlaneStressToolbox< spatial_dimension, - MaterialThermal > Parent; -public: + typedef PlaneStressToolbox> + Parent; +public: MaterialElastic(SolidMechanicsModel & model, const ID & id = ""); - MaterialElastic(SolidMechanicsModel & model, - UInt dim, - const Mesh & mesh, - FEEngine & fe_engine, - const ID & id = ""); + MaterialElastic(SolidMechanicsModel & model, UInt dim, const Mesh & mesh, + FEEngine & fe_engine, const ID & id = ""); virtual ~MaterialElastic() {} protected: void initialize(); /* ------------------------------------------------------------------------ */ /* Methods */ /* ------------------------------------------------------------------------ */ public: - virtual void initMaterial(); /// constitutive law for all element of a type - virtual void computeStress(ElementType el_type, GhostType ghost_type = _not_ghost); + virtual void computeStress(ElementType el_type, + GhostType ghost_type = _not_ghost); /// compute the tangent stiffness matrix for an element type virtual void computeTangentModuli(const ElementType & el_type, - Array & tangent_matrix, - GhostType ghost_type = _not_ghost); + Array & tangent_matrix, + GhostType ghost_type = _not_ghost); /// compute the elastic potential energy virtual void computePotentialEnergy(ElementType el_type, - GhostType ghost_type = _not_ghost); + GhostType ghost_type = _not_ghost); - virtual void computePotentialEnergyByElement(ElementType type, UInt index, - Vector & epot_on_quad_points); + virtual void + computePotentialEnergyByElement(ElementType type, UInt index, + Vector & epot_on_quad_points); /// compute the p-wave speed in the material virtual Real getPushWaveSpeed(const Element & element) const; /// compute the s-wave speed in the material virtual Real getShearWaveSpeed(const Element & element) const; protected: /// constitutive law for a given quadrature point inline void computeStressOnQuad(const Matrix & grad_u, - Matrix & sigma, - const Real sigma_th = 0) const; + Matrix & sigma, + const Real sigma_th = 0) const; /// compute the tangent stiffness matrix for an element inline void computeTangentModuliOnQuad(Matrix & tangent) const; /// recompute the lame coefficient if E or nu changes virtual void updateInternalParameters(); static inline void computePotentialEnergyOnQuad(const Matrix & grad_u, - const Matrix & sigma, - Real & epot); + const Matrix & sigma, + Real & epot); + + virtual bool hasStiffnessMatrixChanged() { + return (! was_stiffness_assembled); + } /* ------------------------------------------------------------------------ */ /* Accessors */ /* ------------------------------------------------------------------------ */ public: /// get first Lame constant AKANTU_GET_MACRO(Lambda, lambda, Real); /// get second Lame constant AKANTU_GET_MACRO(Mu, mu, Real); /// get bulk modulus AKANTU_GET_MACRO(Kappa, kpa, Real); /* ------------------------------------------------------------------------ */ /* Class Members */ /* ------------------------------------------------------------------------ */ protected: - /// First Lamé coefficient Real lambda; /// Second Lamé coefficient (shear modulus) Real mu; /// Bulk modulus Real kpa; + /// defines if the stiffness was computed + bool was_stiffness_assembled; }; -__END_AKANTU__ +} // akantu #include "material_elastic_inline_impl.cc" #endif /* __AKANTU_MATERIAL_ELASTIC_HH__ */ diff --git a/src/model/solid_mechanics/materials/material_elastic_linear_anisotropic.cc b/src/model/solid_mechanics/materials/material_elastic_linear_anisotropic.cc index 920508245..617bb1e6b 100644 --- a/src/model/solid_mechanics/materials/material_elastic_linear_anisotropic.cc +++ b/src/model/solid_mechanics/materials/material_elastic_linear_anisotropic.cc @@ -1,309 +1,313 @@ /** * @file material_elastic_linear_anisotropic.cc * * @author Till Junge * @author Nicolas Richart * * @date creation: Wed Sep 25 2013 * @date last modification: Thu Oct 15 2015 * * @brief Anisotropic elastic material * * @section LICENSE * * Copyright (©) 2014, 2015 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ #include "material_elastic_linear_anisotropic.hh" #include "solid_mechanics_model.hh" #include #include __BEGIN_AKANTU__ /* -------------------------------------------------------------------------- */ template MaterialElasticLinearAnisotropic::MaterialElasticLinearAnisotropic( SolidMechanicsModel & model, const ID & id, bool symmetric) : Material(model, id), rot_mat(dim, dim), Cprime(dim * dim, dim * dim), C(voigt_h::size, voigt_h::size), eigC(voigt_h::size), - symmetric(symmetric), alpha(0) { + symmetric(symmetric), alpha(0), was_stiffness_assembled(false) { AKANTU_DEBUG_IN(); this->dir_vecs.push_back(new Vector(dim)); (*this->dir_vecs.back())[0] = 1.; this->registerParam("n1", *(this->dir_vecs.back()), _pat_parsmod, "Direction of main material axis"); this->dir_vecs.push_back(new Vector(dim)); (*this->dir_vecs.back())[1] = 1.; this->registerParam("n2", *(this->dir_vecs.back()), _pat_parsmod, "Direction of secondary material axis"); if (dim > 2) { this->dir_vecs.push_back(new Vector(dim)); (*this->dir_vecs.back())[2] = 1.; this->registerParam("n3", *(this->dir_vecs.back()), _pat_parsmod, "Direction of tertiary material axis"); } for (UInt i = 0; i < voigt_h::size; ++i) { UInt start = 0; if (this->symmetric) { start = i; } for (UInt j = start; j < voigt_h::size; ++j) { std::stringstream param("C"); param << "C" << i + 1 << j + 1; this->registerParam(param.str(), this->Cprime(i, j), Real(0.), _pat_parsmod, "Coefficient " + param.str()); } } this->registerParam("alpha", this->alpha, _pat_parsmod, "Proportion of viscous stress"); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template MaterialElasticLinearAnisotropic::~MaterialElasticLinearAnisotropic() { for (UInt i = 0; i < dim; ++i) { delete this->dir_vecs[i]; } } /* -------------------------------------------------------------------------- */ template void MaterialElasticLinearAnisotropic::initMaterial() { AKANTU_DEBUG_IN(); Material::initMaterial(); updateInternalParameters(); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template void MaterialElasticLinearAnisotropic::updateInternalParameters() { Material::updateInternalParameters(); if (this->symmetric) { for (UInt i = 0; i < voigt_h::size; ++i) { for (UInt j = i + 1; j < voigt_h::size; ++j) { this->Cprime(j, i) = this->Cprime(i, j); } } } this->rotateCprime(); this->C.eig(this->eigC); + + this->was_stiffness_assembled = false; } /* -------------------------------------------------------------------------- */ template void MaterialElasticLinearAnisotropic::rotateCprime() { // start by filling the empty parts fo Cprime UInt diff = Dim * Dim - voigt_h::size; for (UInt i = voigt_h::size; i < Dim * Dim; ++i) { for (UInt j = 0; j < Dim * Dim; ++j) { this->Cprime(i, j) = this->Cprime(i - diff, j); } } for (UInt i = 0; i < Dim * Dim; ++i) { for (UInt j = voigt_h::size; j < Dim * Dim; ++j) { this->Cprime(i, j) = this->Cprime(i, j - diff); } } // construction of rotator tensor // normalise rotation matrix for (UInt j = 0; j < Dim; ++j) { Vector rot_vec = this->rot_mat(j); rot_vec = *this->dir_vecs[j]; rot_vec.normalize(); } // make sure the vectors form a right-handed base Vector test_axis(3); Vector v1(3), v2(3), v3(3); if (Dim == 2) { for (UInt i = 0; i < Dim; ++i) { v1[i] = this->rot_mat(0, i); v2[i] = this->rot_mat(1, i); v3[i] = 0.; } v3[2] = 1.; v1[2] = 0.; v2[2] = 0.; } else if (Dim == 3) { v1 = this->rot_mat(0); v2 = this->rot_mat(1); v3 = this->rot_mat(2); } test_axis.crossProduct(v1, v2); test_axis -= v3; if (test_axis.norm() > 8 * std::numeric_limits::epsilon()) { AKANTU_DEBUG_ERROR("The axis vectors do not form a right-handed coordinate " << "system. I. e., ||n1 x n2 - n3|| should be zero, but " << "it is " << test_axis.norm() << "."); } // create the rotator and the reverse rotator Matrix rotator(Dim * Dim, Dim * Dim); Matrix revrotor(Dim * Dim, Dim * Dim); for (UInt i = 0; i < Dim; ++i) { for (UInt j = 0; j < Dim; ++j) { for (UInt k = 0; k < Dim; ++k) { for (UInt l = 0; l < Dim; ++l) { UInt I = voigt_h::mat[i][j]; UInt J = voigt_h::mat[k][l]; rotator(I, J) = this->rot_mat(k, i) * this->rot_mat(l, j); revrotor(I, J) = this->rot_mat(i, k) * this->rot_mat(j, l); } } } } // create the full rotated matrix Matrix Cfull(Dim * Dim, Dim * Dim); Cfull = rotator * Cprime * revrotor; for (UInt i = 0; i < voigt_h::size; ++i) { for (UInt j = 0; j < voigt_h::size; ++j) { this->C(i, j) = Cfull(i, j); } } } /* -------------------------------------------------------------------------- */ template void MaterialElasticLinearAnisotropic::computeStress( ElementType el_type, GhostType ghost_type) { // Wikipedia convention: // 2*eps_ij (i!=j) = voigt_eps_I // http://en.wikipedia.org/wiki/Voigt_notation AKANTU_DEBUG_IN(); Array::iterator> gradu_it = this->gradu(el_type, ghost_type).begin(dim, dim); Array::iterator> gradu_end = this->gradu(el_type, ghost_type).end(dim, dim); UInt nb_quad_pts = gradu_end - gradu_it; // create array for strains and stresses of all dof of all gauss points // for efficient computation of stress Matrix voigt_strains(voigt_h::size, nb_quad_pts); Matrix voigt_stresses(voigt_h::size, nb_quad_pts); // copy strains Matrix strain(dim, dim); for (UInt q = 0; gradu_it != gradu_end; ++gradu_it, ++q) { Matrix & grad_u = *gradu_it; for (UInt I = 0; I < voigt_h::size; ++I) { Real voigt_factor = voigt_h::factors[I]; UInt i = voigt_h::vec[I][0]; UInt j = voigt_h::vec[I][1]; voigt_strains(I, q) = voigt_factor * (grad_u(i, j) + grad_u(j, i)) / 2.; } } // compute the strain rate proportional part if needed // bool viscous = this->alpha == 0.; // only works if default value bool viscous = false; if (viscous) { Array strain_rate(0, dim * dim, "strain_rate"); Array & velocity = this->model->getVelocity(); const Array & elem_filter = this->element_filter(el_type, ghost_type); this->model->getFEEngine().gradientOnIntegrationPoints( velocity, strain_rate, dim, el_type, ghost_type, elem_filter); Array::matrix_iterator gradu_dot_it = strain_rate.begin(dim, dim); Array::matrix_iterator gradu_dot_end = strain_rate.end(dim, dim); Matrix strain_dot(dim, dim); for (UInt q = 0; gradu_dot_it != gradu_dot_end; ++gradu_dot_it, ++q) { Matrix & grad_u_dot = *gradu_dot_it; for (UInt I = 0; I < voigt_h::size; ++I) { Real voigt_factor = voigt_h::factors[I]; UInt i = voigt_h::vec[I][0]; UInt j = voigt_h::vec[I][1]; voigt_strains(I, q) = this->alpha * voigt_factor * (grad_u_dot(i, j) + grad_u_dot(j, i)) / 2.; } } } // compute stresses voigt_stresses = this->C * voigt_strains; // copy stresses back Array::iterator> stress_it = this->stress(el_type, ghost_type).begin(dim, dim); Array::iterator> stress_end = this->stress(el_type, ghost_type).end(dim, dim); for (UInt q = 0; stress_it != stress_end; ++stress_it, ++q) { Matrix & stress = *stress_it; for (UInt I = 0; I < voigt_h::size; ++I) { UInt i = voigt_h::vec[I][0]; UInt j = voigt_h::vec[I][1]; stress(i, j) = stress(j, i) = voigt_stresses(I, q); } } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template void MaterialElasticLinearAnisotropic::computeTangentModuli( const ElementType & el_type, Array & tangent_matrix, GhostType ghost_type) { AKANTU_DEBUG_IN(); MATERIAL_TANGENT_QUADRATURE_POINT_LOOP_BEGIN(tangent_matrix); tangent.copy(this->C); MATERIAL_TANGENT_QUADRATURE_POINT_LOOP_END; + this->was_stiffness_assembled = true; + AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template Real MaterialElasticLinearAnisotropic::getCelerity( __attribute__((unused)) const Element & element) const { return std::sqrt(this->eigC(0) / rho); } /* -------------------------------------------------------------------------- */ INSTANTIATE_MATERIAL(MaterialElasticLinearAnisotropic); __END_AKANTU__ diff --git a/src/model/solid_mechanics/materials/material_elastic_linear_anisotropic.hh b/src/model/solid_mechanics/materials/material_elastic_linear_anisotropic.hh index 92eefd8f8..2b1b854ac 100644 --- a/src/model/solid_mechanics/materials/material_elastic_linear_anisotropic.hh +++ b/src/model/solid_mechanics/materials/material_elastic_linear_anisotropic.hh @@ -1,120 +1,128 @@ /** * @file material_elastic_linear_anisotropic.hh * * @author Till Junge * * @date creation: Fri Jun 18 2010 * @date last modification: Tue Aug 18 2015 * * @brief Orthotropic elastic material * * @section LICENSE * * Copyright (©) 2010-2012, 2014, 2015 EPFL (Ecole Polytechnique Fédérale de * Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des * Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ #include "aka_common.hh" #include "material.hh" #include "material_elastic.hh" #include /* -------------------------------------------------------------------------- */ #ifndef __AKANTU_MATERIAL_ELASTIC_LINEAR_ANISOTROPIC_HH__ #define __AKANTU_MATERIAL_ELASTIC_LINEAR_ANISOTROPIC_HH__ __BEGIN_AKANTU__ /** * General linear anisotropic elastic material * The only constraint on the elastic tensor is that it can be represented * as a symmetric 6x6 matrix (3D) or 3x3 (2D). * * parameters in the material files : * - rho : density (default: 0) * - C_ij : entry on the stiffness */ template class MaterialElasticLinearAnisotropic : public virtual Material { /* ------------------------------------------------------------------------ */ /* Constructors/Destructors */ /* ------------------------------------------------------------------------ */ public: MaterialElasticLinearAnisotropic(SolidMechanicsModel & model, const ID & id = "", bool symmetric = true); ~MaterialElasticLinearAnisotropic(); /* ------------------------------------------------------------------------ */ /* Methods */ /* ------------------------------------------------------------------------ */ public: virtual void initMaterial(); /// constitutive law for all element of a type virtual void computeStress(ElementType el_type, GhostType ghost_type = _not_ghost); /// compute the tangent stiffness matrix for an element type void computeTangentModuli(const ElementType & el_type, Array & tangent_matrix, GhostType ghost_type = _not_ghost); virtual void updateInternalParameters(); + virtual bool hasStiffnessMatrixChanged() { + return (! was_stiffness_assembled); + } + protected: // compute C from Cprime void rotateCprime(); /* ------------------------------------------------------------------------ */ /* Accessors */ /* ------------------------------------------------------------------------ */ public: /// compute max wave celerity virtual Real getCelerity(const Element & element) const; AKANTU_GET_MACRO(VoigtStiffness, C, Matrix); /* ------------------------------------------------------------------------ */ /* Class Members */ /* ------------------------------------------------------------------------ */ protected: typedef VoigtHelper voigt_h; /// direction matrix and vectors std::vector *> dir_vecs; Matrix rot_mat; /// Elastic stiffness tensor in material frame and full vectorised notation Matrix Cprime; /// Elastic stiffness tensor in voigt notation Matrix C; /// eigenvalues of stiffness tensor Vector eigC; + bool symmetric; /// viscous proportion Real alpha; + + /// defines if the stiffness was computed + bool was_stiffness_assembled; }; __END_AKANTU__ #endif /* __AKANTU_MATERIAL_ELASTIC_LINEAR_ANISOTROPIC_HH__ */ diff --git a/src/model/solid_mechanics/solid_mechanics_model.cc b/src/model/solid_mechanics/solid_mechanics_model.cc index e979c96cd..53258a5c2 100644 --- a/src/model/solid_mechanics/solid_mechanics_model.cc +++ b/src/model/solid_mechanics/solid_mechanics_model.cc @@ -1,1564 +1,1554 @@ /** * @file solid_mechanics_model.cc * * @author Ramin Aghababaei * @author Guillaume Anciaux * @author Aurelia Isabel Cuba Ramos * @author David Simon Kammer * @author Daniel Pino Muñoz * @author Nicolas Richart * @author Clement Roux * @author Marco Vocialta * * @date creation: Tue Jul 27 2010 * @date last modification: Tue Jan 19 2016 * * @brief Implementation of the SolidMechanicsModel class * * @section LICENSE * * Copyright (©) 2010-2012, 2014, 2015 EPFL (Ecole Polytechnique Fédérale de * Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des * Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "solid_mechanics_model.hh" #include "aka_common.hh" #include "aka_math.hh" #include "element_group.hh" #include "group_manager_inline_impl.cc" #include "static_communicator.hh" #include "element_synchronizer.hh" #include "synchronizer_registry.hh" #include "sparse_matrix.hh" #include "dumpable_inline_impl.hh" #ifdef AKANTU_USE_IOHELPER #include "dumper_element_partition.hh" #include "dumper_elemental_field.hh" #include "dumper_field.hh" #include "dumper_homogenizing_field.hh" #include "dumper_internal_material_field.hh" #include "dumper_iohelper.hh" #include "dumper_material_padders.hh" #include "dumper_paraview.hh" #endif #ifdef AKANTU_DAMAGE_NON_LOCAL #include "non_local_manager.hh" #endif /* -------------------------------------------------------------------------- */ #include /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ __BEGIN_AKANTU__ const SolidMechanicsModelOptions default_solid_mechanics_model_options(_explicit_lumped_mass, false); /* -------------------------------------------------------------------------- */ /** * A solid mechanics model need a mesh and a dimension to be created. the model * by it self can not do a lot, the good init functions should be called in * order to configure the model depending on what we want to do. * * @param mesh mesh representing the model we want to simulate * @param dim spatial dimension of the problem, if dim = 0 (default value) the * dimension of the problem is assumed to be the on of the mesh * @param id an id to identify the model */ SolidMechanicsModel::SolidMechanicsModel(Mesh & mesh, UInt dim, const ID & id, const MemoryID & memory_id) : Model(mesh, dim, id, memory_id), BoundaryCondition(), f_m2a(1.0), displacement(NULL), previous_displacement(NULL), displacement_increment(NULL), mass(NULL), velocity(NULL), acceleration(NULL), external_force(NULL), internal_force(NULL), blocked_dofs(NULL), current_position(NULL), mass_matrix(NULL), velocity_damping_matrix(NULL), stiffness_matrix(NULL), jacobian_matrix(NULL), material_index("material index", id, memory_id), material_local_numbering("material local numbering", id, memory_id), material_selector(new DefaultMaterialSelector(material_index)), is_default_material_selector(true), increment_flag(false), synch_parallel(NULL), are_materials_instantiated(false), non_local_manager(NULL) { //, pbc_synch(NULL) { AKANTU_DEBUG_IN(); this->registerFEEngineObject("SolidMechanicsFEEngine", mesh, spatial_dimension); this->mesh.registerEventHandler(*this); #if defined(AKANTU_USE_IOHELPER) this->mesh.registerDumper("paraview_all", id, true); this->mesh.addDumpMesh(mesh, spatial_dimension, _not_ghost, _ek_regular); #endif this->initDOFManager(); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ SolidMechanicsModel::~SolidMechanicsModel() { AKANTU_DEBUG_IN(); std::vector::iterator mat_it; for (mat_it = materials.begin(); mat_it != materials.end(); ++mat_it) { delete *mat_it; } materials.clear(); delete synch_parallel; if (is_default_material_selector) { delete material_selector; material_selector = NULL; } flatten_internal_map::iterator fl_it = this->registered_internals.begin(); flatten_internal_map::iterator fl_end = this->registered_internals.end(); for (; fl_it != fl_end; ++fl_it) { delete fl_it->second; } #ifdef AKANTU_DAMAGE_NON_LOCAL delete non_local_manager; non_local_manager = NULL; #endif // delete pbc_synch; AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::setTimeStep(Real time_step, const ID & solver_id) { Model::setTimeStep(time_step, solver_id); #if defined(AKANTU_USE_IOHELPER) this->mesh.getDumper().setTimeStep(time_step); #endif } /* -------------------------------------------------------------------------- */ /* Initialization */ /* -------------------------------------------------------------------------- */ /** * This function groups many of the initialization in on function. For most of * basics case the function should be enough. The functions initialize the * model, the internal vectors, set them to 0, and depending on the parameters * it also initialize the explicit or implicit solver. * * @param material_file the file containing the materials to use * @param method the analysis method wanted. See the akantu::AnalysisMethod for * the different possibilities */ void SolidMechanicsModel::initFull(const ModelOptions & options) { Model::initFull(options); const SolidMechanicsModelOptions & smm_options = dynamic_cast(options); this->method = smm_options.analysis_method; // initialize the vectors this->initArrays(); if (!this->hasDefaultSolver()) this->initNewSolver(this->method); // initialize pbc if (this->pbc_pair.size() != 0) this->initPBC(); #ifdef AKANTU_DAMAGE_NON_LOCAL /// create the non-local manager object for non-local damage computations std::stringstream nl_manager_name; nl_manager_name << "NLManager" << this->id; this->non_local_manager = new NonLocalManager(*this, nl_manager_name.str(), this->memory_id); #endif // initialize the materials if (this->parser->getLastParsedFile() != "") { this->instantiateMaterials(); } if (!smm_options.no_init_materials) { this->initMaterials(); } if (increment_flag) this->initBC(*this, *displacement, *displacement_increment, *external_force); else this->initBC(*this, *displacement, *external_force); } /* -------------------------------------------------------------------------- */ TimeStepSolverType SolidMechanicsModel::getDefaultSolverType() const { return _tsst_dynamic_lumped; } /* -------------------------------------------------------------------------- */ ModelSolverOptions SolidMechanicsModel::getDefaultSolverOptions( const TimeStepSolverType & type) const { ModelSolverOptions options; switch (type) { case _tsst_dynamic_lumped: { options.non_linear_solver_type = _nls_lumped; options.integration_scheme_type["displacement"] = _ist_central_difference; options.solution_type["displacement"] = IntegrationScheme::_acceleration; break; } case _tsst_static: { options.non_linear_solver_type = _nls_newton_raphson; options.integration_scheme_type["displacement"] = _ist_pseudo_time; options.solution_type["displacement"] = IntegrationScheme::_not_defined; break; } case _tsst_dynamic: { if (this->method == _explicit_consistent_mass) { options.non_linear_solver_type = _nls_newton_raphson; options.integration_scheme_type["displacement"] = _ist_central_difference; options.solution_type["displacement"] = IntegrationScheme::_acceleration; } else { options.non_linear_solver_type = _nls_newton_raphson; options.integration_scheme_type["displacement"] = _ist_trapezoidal_rule_2; options.solution_type["displacement"] = IntegrationScheme::_displacement; } break; } } return options; } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::initNewSolver(const AnalysisMethod & method) { ID solver_name; TimeStepSolverType tss_type; this->method = method; switch (this->method) { case _explicit_lumped_mass: { solver_name = "explicit_lumped"; tss_type = _tsst_dynamic_lumped; break; } case _explicit_consistent_mass: { solver_name = "explicit"; tss_type = _tsst_dynamic; break; } case _static: { solver_name = "static"; tss_type = _tsst_static; break; } case _implicit_dynamic: { solver_name = "implicit"; tss_type = _tsst_dynamic; break; } } if (!this->hasSolver(solver_name)) { ModelSolverOptions options = this->getDefaultSolverOptions(tss_type); this->getNewSolver(solver_name, tss_type, options.non_linear_solver_type); this->setIntegrationScheme(solver_name, "displacement", options.integration_scheme_type["displacement"], options.solution_type["displacement"]); this->setDefaultSolver(solver_name); } } /* -------------------------------------------------------------------------- */ template void SolidMechanicsModel::allocNodalField(Array *& array, __attribute__((unused)) UInt nb_component, const ID & name) { if (array == NULL) { UInt nb_nodes = mesh.getNbNodes(); std::stringstream sstr_disp; sstr_disp << id << ":" << name; array = &(alloc(sstr_disp.str(), nb_nodes, spatial_dimension, T())); } } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::initSolver( TimeStepSolverType time_step_solver_type, __attribute__((unused)) NonLinearSolverType non_linear_solver_type) { DOFManager & dof_manager = this->getDOFManager(); /* ------------------------------------------------------------------------ */ // for alloc type of solvers this->allocNodalField(this->displacement, spatial_dimension, "displacement"); this->allocNodalField(this->internal_force, spatial_dimension, "internal_force"); this->allocNodalField(this->external_force, spatial_dimension, "external_force"); this->allocNodalField(this->blocked_dofs, spatial_dimension, "blocked_dofs"); this->allocNodalField(this->current_position, spatial_dimension, "current_position"); /* ------------------------------------------------------------------------ */ if (!dof_manager.hasDOFs("displacement")) { dof_manager.registerDOFs("displacement", *this->displacement, _dst_nodal); dof_manager.registerBlockedDOFs("displacement", *this->blocked_dofs); } /* ------------------------------------------------------------------------ */ // for dynamic if (time_step_solver_type == _tsst_dynamic || time_step_solver_type == _tsst_dynamic_lumped) { this->allocNodalField(this->velocity, spatial_dimension, "velocity"); this->allocNodalField(this->acceleration, spatial_dimension, "acceleration"); if (!dof_manager.hasDOFsDerivatives("displacement", 1)) { dof_manager.registerDOFsDerivative("displacement", 1, *this->velocity); dof_manager.registerDOFsDerivative("displacement", 2, *this->acceleration); } } if (time_step_solver_type == _tsst_dynamic || time_step_solver_type == _tsst_static) { if (!dof_manager.hasMatrix("K")) { dof_manager.getNewMatrix("K", _symmetric); } if (!dof_manager.hasMatrix("J")) { dof_manager.getNewMatrix("J", "K"); } } } /* -------------------------------------------------------------------------- */ // void SolidMechanicsModel::initParallel(MeshPartition & partition, // DataAccessor * data_accessor) { // AKANTU_DEBUG_IN(); // if (data_accessor == NULL) // data_accessor = this; // synch_parallel = &createParallelSynch(partition, *data_accessor); // synch_registry->registerSynchronizer(*synch_parallel, _gst_material_id); // synch_registry->registerSynchronizer(*synch_parallel, _gst_smm_mass); // synch_registry->registerSynchronizer(*synch_parallel, _gst_smm_stress); // synch_registry->registerSynchronizer(*synch_parallel, _gst_smm_boundary); // synch_registry->registerSynchronizer(*synch_parallel, _gst_for_dump); // AKANTU_DEBUG_OUT(); // } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::initFEEngineBoundary() { FEEngine & fem_boundary = getFEEngineBoundary(); fem_boundary.initShapeFunctions(_not_ghost); fem_boundary.initShapeFunctions(_ghost); fem_boundary.computeNormalsOnIntegrationPoints(_not_ghost); fem_boundary.computeNormalsOnIntegrationPoints(_ghost); } -/* -------------------------------------------------------------------------- */ -// void SolidMechanicsModel::initExplicit(AnalysisMethod analysis_method) { -// AKANTU_DEBUG_IN(); - -// // in case of switch from implicit to explicit -// if (!this->isExplicit()) -// method = analysis_method; - -// // if (integrator) delete integrator; -// // integrator = new CentralDifference(); - -// UInt nb_nodes = acceleration->getSize(); -// UInt nb_degree_of_freedom = acceleration->getNbComponent(); - -// std::stringstream sstr; -// sstr << id << ":increment_acceleration"; -// increment_acceleration = -// &(alloc(sstr.str(), nb_nodes, nb_degree_of_freedom, Real())); - -// AKANTU_DEBUG_OUT(); -// } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::initArraysPreviousDisplacment() { AKANTU_DEBUG_IN(); this->setIncrementFlagOn(); if (not this->previous_displacement) { this->allocNodalField(this->previous_displacement, spatial_dimension, "previous_displacement"); this->getDOFManager().registerDOFsPrevious("displacement", *this->previous_displacement); } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ /** * Allocate all the needed vectors. By default their are not necessarily set to * 0 */ void SolidMechanicsModel::initArrays() { AKANTU_DEBUG_IN(); for (UInt g = _not_ghost; g <= _ghost; ++g) { GhostType gt = (GhostType)g; Mesh::type_iterator it = mesh.firstType(spatial_dimension, gt, _ek_not_defined); Mesh::type_iterator end = mesh.lastType(spatial_dimension, gt, _ek_not_defined); for (; it != end; ++it) { UInt nb_element = mesh.getNbElement(*it, gt); this->material_index.alloc(nb_element, 1, *it, gt); this->material_local_numbering.alloc(nb_element, 1, *it, gt); } } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ /** * Initialize the model,basically it pre-compute the shapes, shapes derivatives * and jacobian * */ void SolidMechanicsModel::initModel() { /// \todo add the current position as a parameter to initShapeFunctions for /// large deformation getFEEngine().initShapeFunctions(_not_ghost); getFEEngine().initShapeFunctions(_ghost); } /* -------------------------------------------------------------------------- */ // void SolidMechanicsModel::initPBC() { // Model::initPBC(); // registerPBCSynchronizer(); // // as long as there are ones on the diagonal of the matrix, we can put // // boudandary true for slaves // std::map::iterator it = pbc_pair.begin(); // std::map::iterator end = pbc_pair.end(); // UInt dim = mesh.getSpatialDimension(); // while (it != end) { // for (UInt i = 0; i < dim; ++i) // (*blocked_dofs)((*it).first, i) = true; // ++it; // } // } // /* -------------------------------------------------------------------------- */ // void SolidMechanicsModel::registerPBCSynchronizer() { // pbc_synch = new PBCSynchronizer(pbc_pair); // synch_registry->registerSynchronizer(*pbc_synch, _gst_smm_uv); // synch_registry->registerSynchronizer(*pbc_synch, _gst_smm_mass); // synch_registry->registerSynchronizer(*pbc_synch, _gst_smm_res); // synch_registry->registerSynchronizer(*pbc_synch, _gst_for_dump); // // changeLocalEquationNumberForPBC(pbc_pair, mesh.getSpatialDimension()); // } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::assembleResidual() { AKANTU_DEBUG_IN(); this->assembleInternalForces(); this->getDOFManager().assembleToResidual("displacement", *this->external_force, 1); this->getDOFManager().assembleToResidual("displacement", *this->internal_force, -1); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::assembleJacobian() { this->assembleStiffnessMatrix(); } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::predictor() {} /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::corrector() {} /* -------------------------------------------------------------------------- */ /** * This function computes the internal forces as F_{int} = \int_{\Omega} N * \sigma d\Omega@f$ */ void SolidMechanicsModel::assembleInternalForces() { AKANTU_DEBUG_IN(); AKANTU_DEBUG_INFO("Assemble the internal forces"); this->internal_force->clear(); AKANTU_DEBUG_INFO("Compute local stresses"); std::vector::iterator mat_it; for (mat_it = materials.begin(); mat_it != materials.end(); ++mat_it) { Material & mat = **mat_it; mat.computeAllStresses(_not_ghost); } #ifdef AKANTU_DAMAGE_NON_LOCAL /* ------------------------------------------------------------------------ */ /* Computation of the non local part */ this->non_local_manager->computeAllNonLocalStresses(); #endif /* ------------------------------------------------------------------------ */ /* assembling the forces internal */ // communicate the stress AKANTU_DEBUG_INFO("Send data for residual assembly"); this->asynchronousSynchronize(_gst_smm_stress); AKANTU_DEBUG_INFO("Assemble residual for local elements"); for (mat_it = materials.begin(); mat_it != materials.end(); ++mat_it) { Material & mat = **mat_it; mat.assembleInternalForces(_not_ghost); } AKANTU_DEBUG_INFO("Wait distant stresses"); // finalize communications this->waitEndSynchronize(_gst_smm_stress); AKANTU_DEBUG_INFO("Assemble residual for ghost elements"); for (mat_it = materials.begin(); mat_it != materials.end(); ++mat_it) { Material & mat = **mat_it; mat.assembleInternalForces(_ghost); } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::assembleStiffnessMatrix() { AKANTU_DEBUG_IN(); AKANTU_DEBUG_INFO("Assemble the new stiffness matrix."); - this->getDOFManager().getMatrix("K").clear(); + // Check if materials need to recompute the matrix + bool need_to_reassemble = false; - // call compute stiffness matrix on each local elements std::vector::iterator mat_it; for (mat_it = materials.begin(); mat_it != materials.end(); ++mat_it) { - (*mat_it)->assembleStiffnessMatrix(_not_ghost); + need_to_reassemble |= (*mat_it)->hasStiffnessMatrixChanged(); + } + + + if(need_to_reassemble) { + this->getDOFManager().getMatrix("K").clear(); + + // call compute stiffness matrix on each local elements + std::vector::iterator mat_it; + for (mat_it = materials.begin(); mat_it != materials.end(); ++mat_it) { + (*mat_it)->assembleStiffnessMatrix(_not_ghost); + } } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::updateCurrentPosition() { AKANTU_DEBUG_IN(); this->current_position->copy(this->mesh.getNodes()); Array::vector_iterator cpos_it = this->current_position->begin(spatial_dimension); Array::vector_iterator cpos_end = this->current_position->end(spatial_dimension); Array::const_vector_iterator disp_it = this->displacement->begin(spatial_dimension); for (; cpos_it != cpos_end; ++cpos_it, ++disp_it) { *cpos_it += *disp_it; } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ // void SolidMechanicsModel::initializeUpdateResidualData() { // AKANTU_DEBUG_IN(); // UInt nb_nodes = mesh.getNbNodes(); // internal_force->resize(nb_nodes); // /// copy the forces in residual for boundary conditions // this->getDOFManager().assembleToResidual("displacement", // *this->external_force); // // start synchronization // this->asynchronousSynchronize(_gst_smm_uv); // this->waitEndSynchronize(_gst_smm_uv); // this->updateCurrentPosition(); // AKANTU_DEBUG_OUT(); // } /* -------------------------------------------------------------------------- */ /* Explicit scheme */ /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ // void SolidMechanicsModel::computeStresses() { // if (isExplicit()) { // // start synchronization // this->asynchronousSynchronize(_gst_smm_uv); // this->waitEndSynchronize(_gst_smm_uv); // // compute stresses on all local elements for each materials // std::vector::iterator mat_it; // for (mat_it = materials.begin(); mat_it != materials.end(); ++mat_it) { // Material & mat = **mat_it; // mat.computeAllStresses(_not_ghost); // } // #ifdef AKANTU_DAMAGE_NON_LOCAL // /* Computation of the non local part */ // this->non_local_manager->computeAllNonLocalStresses(); // #endif // } else { // std::vector::iterator mat_it; // for (mat_it = materials.begin(); mat_it != materials.end(); ++mat_it) { // Material & mat = **mat_it; // mat.computeAllStressesFromTangentModuli(_not_ghost); // } // } // } /* -------------------------------------------------------------------------- */ /* Implicit scheme */ /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ // /** // * Initialize the solver and create the sparse matrices needed. // * // */ // void SolidMechanicsModel::initSolver(__attribute__((unused)) // SolverOptions & options) { // UInt nb_global_nodes = mesh.getNbGlobalNodes(); // jacobian_matrix = &(this->getDOFManager().getNewMatrix("jacobian", // _symmetric)); // // jacobian_matrix->buildProfile(mesh, *dof_synchronizer, // spatial_dimension); // if (!isExplicit()) { // delete stiffness_matrix; // std::stringstream sstr_sti; // sstr_sti << id << ":stiffness_matrix"; // stiffness_matrix = &(this->getDOFManager().getNewMatrix("stiffness", // _symmetric)); // } // if (solver) solver->initialize(options); // } // /* -------------------------------------------------------------------------- // */ // void SolidMechanicsModel::initJacobianMatrix() { // // @todo make it more flexible: this is an ugly patch to treat the case of // non // // fix profile of the K matrix // delete jacobian_matrix; // jacobian_matrix = &(this->getDOFManager().getNewMatrix("jacobian", // "stiffness")); // std::stringstream sstr_solv; sstr_solv << id << ":solver"; // delete solver; // solver = new SolverMumps(*jacobian_matrix, sstr_solv.str()); // if(solver) // solver->initialize(_solver_no_options); // } /* -------------------------------------------------------------------------- */ /** * Initialize the implicit solver, either for dynamic or static cases, * * @param dynamic */ // void SolidMechanicsModel::initImplicit(bool dynamic) { // AKANTU_DEBUG_IN(); // method = dynamic ? _implicit_dynamic : _static; // if (!increment) // setIncrementFlagOn(); // initSolver(); // // if(method == _implicit_dynamic) { // // if(integrator) delete integrator; // // integrator = new TrapezoidalRule2(); // // } // AKANTU_DEBUG_OUT(); // } /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ // SparseMatrix & SolidMechanicsModel::initVelocityDampingMatrix() { // return this->getDOFManager().getNewMatrix("velocity_damping", "jacobian"); // } // /* -------------------------------------------------------------------------- // */ // void SolidMechanicsModel::implicitPred() { // AKANTU_DEBUG_IN(); // if(previous_displacement) previous_displacement->copy(*displacement); // if(method == _implicit_dynamic) // integrator->integrationSchemePred(time_step, // *displacement, // *velocity, // *acceleration, // *blocked_dofs); // AKANTU_DEBUG_OUT(); // } // /* -------------------------------------------------------------------------- // */ // void SolidMechanicsModel::implicitCorr() { // AKANTU_DEBUG_IN(); // if(method == _implicit_dynamic) { // integrator->integrationSchemeCorrDispl(time_step, // *displacement, // *velocity, // *acceleration, // *blocked_dofs, // *increment); // } else { // UInt nb_nodes = displacement->getSize(); // UInt nb_degree_of_freedom = displacement->getNbComponent() * nb_nodes; // Real * incr_val = increment->storage(); // Real * disp_val = displacement->storage(); // bool * boun_val = blocked_dofs->storage(); // for (UInt j = 0; j < nb_degree_of_freedom; ++j, ++disp_val, ++incr_val, // ++boun_val){ // *incr_val *= (1. - *boun_val); // *disp_val += *incr_val; // } // } // AKANTU_DEBUG_OUT(); // } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::updateIncrement() { AKANTU_DEBUG_IN(); Array::vector_iterator incr_it = this->displacement_increment->begin(spatial_dimension); Array::vector_iterator incr_end = this->displacement_increment->end(spatial_dimension); Array::const_vector_iterator disp_it = this->displacement->begin(spatial_dimension); Array::const_vector_iterator prev_disp_it = this->previous_displacement->begin(spatial_dimension); for (; incr_it != incr_end; ++incr_it) { *incr_it = *disp_it; *incr_it -= *prev_disp_it; } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::updatePreviousDisplacement() { AKANTU_DEBUG_IN(); AKANTU_DEBUG_ASSERT( previous_displacement, "The previous displacement has to be initialized." << " Are you working with Finite or Ineslactic deformations?"); previous_displacement->copy(*displacement); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::updateDataForNonLocalCriterion( ElementTypeMapReal & criterion) { const ID field_name = criterion.getName(); for (UInt m = 0; m < this->getNbMaterials(); ++m) { const Material & material = this->getMaterial(m); if (material.isInternal(field_name, _ek_regular)) for (UInt g = _not_ghost; g <= _ghost; ++g) { GhostType ghost_type = (GhostType)g; material.flattenInternal(field_name, criterion, ghost_type, _ek_regular); } } } /* -------------------------------------------------------------------------- */ /* Information */ /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::synchronizeBoundaries() { AKANTU_DEBUG_IN(); this->synchronize(_gst_smm_boundary); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::synchronizeResidual() { AKANTU_DEBUG_IN(); this->synchronize(_gst_smm_res); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::setIncrementFlagOn() { AKANTU_DEBUG_IN(); if (!displacement_increment) { this->allocNodalField(displacement_increment, spatial_dimension, "displacement_increment"); this->getDOFManager().registerDOFsIncrement("displacement", *this->displacement_increment); } increment_flag = true; AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ Real SolidMechanicsModel::getStableTimeStep() { AKANTU_DEBUG_IN(); Real min_dt = getStableTimeStep(_not_ghost); /// reduction min over all processors StaticCommunicator::getStaticCommunicator().allReduce(min_dt, _so_min); AKANTU_DEBUG_OUT(); return min_dt; } /* -------------------------------------------------------------------------- */ Real SolidMechanicsModel::getStableTimeStep(const GhostType & ghost_type) { AKANTU_DEBUG_IN(); Material ** mat_val = &(materials.at(0)); Real min_dt = std::numeric_limits::max(); this->updateCurrentPosition(); Element elem; elem.ghost_type = ghost_type; elem.kind = _ek_regular; Mesh::type_iterator it = mesh.firstType(spatial_dimension, ghost_type, _ek_regular); Mesh::type_iterator end = mesh.lastType(spatial_dimension, ghost_type, _ek_regular); for (; it != end; ++it) { elem.type = *it; UInt nb_nodes_per_element = mesh.getNbNodesPerElement(*it); UInt nb_element = mesh.getNbElement(*it); Array::const_scalar_iterator mat_indexes = material_index(*it, ghost_type).begin(); Array::const_scalar_iterator mat_loc_num = material_local_numbering(*it, ghost_type).begin(); Array X(0, nb_nodes_per_element * spatial_dimension); FEEngine::extractNodalToElementField(mesh, *current_position, X, *it, _not_ghost); Array::matrix_iterator X_el = X.begin(spatial_dimension, nb_nodes_per_element); for (UInt el = 0; el < nb_element; ++el, ++X_el, ++mat_indexes, ++mat_loc_num) { elem.element = *mat_loc_num; Real el_h = getFEEngine().getElementInradius(*X_el, *it); Real el_c = mat_val[*mat_indexes]->getCelerity(elem); Real el_dt = el_h / el_c; min_dt = std::min(min_dt, el_dt); } } AKANTU_DEBUG_OUT(); return min_dt; } /* -------------------------------------------------------------------------- */ Real SolidMechanicsModel::getKineticEnergy() { AKANTU_DEBUG_IN(); Real ekin = 0.; UInt nb_nodes = mesh.getNbNodes(); if (this->getDOFManager().hasLumpedMatrix("M")) { const Array & M = this->getDOFManager().getLumpedMatrix("M"); Array::const_vector_iterator m_it = M.begin(spatial_dimension); Array::const_vector_iterator m_end = M.end(spatial_dimension); Array::const_vector_iterator v_it = this->velocity->begin(spatial_dimension); for (UInt n = 0; m_it != m_end; ++n, ++m_it, ++v_it) { Real mv2 = 0; bool is_local_node = mesh.isLocalOrMasterNode(n); bool is_not_pbc_slave_node = !isPBCSlaveNode(n); bool count_node = is_local_node && is_not_pbc_slave_node; if (count_node) { for (UInt i = 0; i < spatial_dimension; ++i) { Real v = (*v_it)(i); mv2 += v * v * (*m_it)(i); } } ekin += mv2; } } else if (this->getDOFManager().hasMatrix("M")) { Array Mv(nb_nodes, spatial_dimension); this->getDOFManager().getMatrix("M").matVecMul(*this->velocity, Mv); Array::const_vector_iterator mv_it = Mv.begin(spatial_dimension); Array::const_vector_iterator mv_end = Mv.end(spatial_dimension); Array::const_vector_iterator v_it = this->velocity->begin(spatial_dimension); for (; mv_it != mv_end; ++mv_it, ++v_it) { ekin += v_it->dot(*mv_it); } } else { AKANTU_DEBUG_ERROR("No function called to assemble the mass matrix."); } StaticCommunicator::getStaticCommunicator().allReduce(ekin, _so_sum); AKANTU_DEBUG_OUT(); return ekin * .5; } /* -------------------------------------------------------------------------- */ Real SolidMechanicsModel::getKineticEnergy(const ElementType & type, UInt index) { AKANTU_DEBUG_IN(); UInt nb_quadrature_points = getFEEngine().getNbIntegrationPoints(type); Array vel_on_quad(nb_quadrature_points, spatial_dimension); Array filter_element(1, 1, index); getFEEngine().interpolateOnIntegrationPoints(*velocity, vel_on_quad, spatial_dimension, type, _not_ghost, filter_element); Array::vector_iterator vit = vel_on_quad.begin(spatial_dimension); Array::vector_iterator vend = vel_on_quad.end(spatial_dimension); Vector rho_v2(nb_quadrature_points); Real rho = materials[material_index(type)(index)]->getRho(); for (UInt q = 0; vit != vend; ++vit, ++q) { rho_v2(q) = rho * vit->dot(*vit); } AKANTU_DEBUG_OUT(); return .5 * getFEEngine().integrate(rho_v2, type, index); } /* -------------------------------------------------------------------------- */ Real SolidMechanicsModel::getExternalWork() { AKANTU_DEBUG_IN(); Real * incr_or_velo = NULL; if (this->method == _static) { incr_or_velo = this->displacement_increment->storage(); } else { incr_or_velo = this->velocity->storage(); } Real * forc = external_force->storage(); Real * resi = internal_force->storage(); bool * boun = blocked_dofs->storage(); Real work = 0.; UInt nb_nodes = this->mesh.getNbNodes(); for (UInt n = 0; n < nb_nodes; ++n) { bool is_local_node = this->mesh.isLocalOrMasterNode(n); bool is_not_pbc_slave_node = !this->isPBCSlaveNode(n); bool count_node = is_local_node && is_not_pbc_slave_node; for (UInt i = 0; i < this->spatial_dimension; ++i) { if (count_node) { if (*boun) work -= *resi * *incr_or_velo; else work += *forc * *incr_or_velo; } ++incr_or_velo; ++forc; ++resi; ++boun; } } StaticCommunicator::getStaticCommunicator().allReduce(work, _so_sum); if (this->method != _static) work *= this->getTimeStep(); AKANTU_DEBUG_OUT(); return work; } /* -------------------------------------------------------------------------- */ Real SolidMechanicsModel::getEnergy(const std::string & energy_id) { AKANTU_DEBUG_IN(); if (energy_id == "kinetic") { return getKineticEnergy(); } else if (energy_id == "external work") { return getExternalWork(); } Real energy = 0.; std::vector::iterator mat_it; for (mat_it = materials.begin(); mat_it != materials.end(); ++mat_it) { energy += (*mat_it)->getEnergy(energy_id); } /// reduction sum over all processors StaticCommunicator::getStaticCommunicator().allReduce(energy, _so_sum); AKANTU_DEBUG_OUT(); return energy; } /* -------------------------------------------------------------------------- */ Real SolidMechanicsModel::getEnergy(const std::string & energy_id, const ElementType & type, UInt index) { AKANTU_DEBUG_IN(); if (energy_id == "kinetic") { return getKineticEnergy(type, index); } std::vector::iterator mat_it; UInt mat_index = this->material_index(type, _not_ghost)(index); UInt mat_loc_num = this->material_local_numbering(type, _not_ghost)(index); Real energy = this->materials[mat_index]->getEnergy(energy_id, type, mat_loc_num); AKANTU_DEBUG_OUT(); return energy; } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::onElementsAdded(const Array & element_list, const NewElementsEvent & event) { AKANTU_DEBUG_IN(); this->getFEEngine().initShapeFunctions(_not_ghost); this->getFEEngine().initShapeFunctions(_ghost); for (UInt g = _not_ghost; g <= _ghost; ++g) { GhostType gt = (GhostType)g; Mesh::type_iterator it = this->mesh.firstType(spatial_dimension, gt, _ek_not_defined); Mesh::type_iterator end = this->mesh.lastType(spatial_dimension, gt, _ek_not_defined); for (; it != end; ++it) { UInt nb_element = this->mesh.getNbElement(*it, gt); if (!material_index.exists(*it, gt)) { this->material_index.alloc(nb_element, 1, *it, gt); this->material_local_numbering.alloc(nb_element, 1, *it, gt); } else { this->material_index(*it, gt).resize(nb_element); this->material_local_numbering(*it, gt).resize(nb_element); } } } Array::const_iterator it = element_list.begin(); Array::const_iterator end = element_list.end(); ElementTypeMapArray filter("new_element_filter", this->getID(), this->getMemoryID()); for (UInt el = 0; it != end; ++it, ++el) { const Element & elem = *it; if (!filter.exists(elem.type, elem.ghost_type)) filter.alloc(0, 1, elem.type, elem.ghost_type); filter(elem.type, elem.ghost_type).push_back(elem.element); } this->assignMaterialToElements(&filter); std::vector::iterator mat_it; for (mat_it = materials.begin(); mat_it != materials.end(); ++mat_it) { (*mat_it)->onElementsAdded(element_list, event); } // if (method == _explicit_lumped_mass) // this->assembleMassLumped(); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::onElementsRemoved( __attribute__((unused)) const Array & element_list, const ElementTypeMapArray & new_numbering, const RemovedElementsEvent & event) { this->getFEEngine().initShapeFunctions(_not_ghost); this->getFEEngine().initShapeFunctions(_ghost); std::vector::iterator mat_it; for (mat_it = materials.begin(); mat_it != materials.end(); ++mat_it) { (*mat_it)->onElementsRemoved(element_list, new_numbering, event); } } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::onNodesAdded(const Array & nodes_list, __attribute__((unused)) const NewNodesEvent & event) { AKANTU_DEBUG_IN(); UInt nb_nodes = mesh.getNbNodes(); if (displacement) displacement->resize(nb_nodes, 0.); if (mass) mass->resize(nb_nodes, 0.); if (velocity) velocity->resize(nb_nodes, 0.); if (acceleration) acceleration->resize(nb_nodes, 0.); if (external_force) external_force->resize(nb_nodes, 0.); if (internal_force) internal_force->resize(nb_nodes, 0.); if (blocked_dofs) blocked_dofs->resize(nb_nodes, 0.); if (previous_displacement) previous_displacement->resize(nb_nodes, 0.); if (displacement_increment) displacement_increment->resize(nb_nodes, 0.); std::vector::iterator mat_it; for (mat_it = materials.begin(); mat_it != materials.end(); ++mat_it) { (*mat_it)->onNodesAdded(nodes_list, event); } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::onNodesRemoved(__attribute__((unused)) const Array & element_list, const Array & new_numbering, __attribute__((unused)) const RemovedNodesEvent & event) { if (displacement) mesh.removeNodesFromArray(*displacement, new_numbering); if (mass) mesh.removeNodesFromArray(*mass, new_numbering); if (velocity) mesh.removeNodesFromArray(*velocity, new_numbering); if (acceleration) mesh.removeNodesFromArray(*acceleration, new_numbering); if (internal_force) mesh.removeNodesFromArray(*internal_force, new_numbering); if (external_force) mesh.removeNodesFromArray(*external_force, new_numbering); if (blocked_dofs) mesh.removeNodesFromArray(*blocked_dofs, new_numbering); // if (increment_acceleration) // mesh.removeNodesFromArray(*increment_acceleration, new_numbering); if (displacement_increment) mesh.removeNodesFromArray(*displacement_increment, new_numbering); if (previous_displacement) mesh.removeNodesFromArray(*previous_displacement, new_numbering); // if (method != _explicit_lumped_mass) { // this->initSolver(); // } } /* -------------------------------------------------------------------------- */ bool SolidMechanicsModel::isInternal(const std::string & field_name, const ElementKind & element_kind) { bool is_internal = false; /// check if at least one material contains field_id as an internal for (UInt m = 0; m < materials.size() && !is_internal; ++m) { is_internal |= materials[m]->isInternal(field_name, element_kind); } return is_internal; } /* -------------------------------------------------------------------------- */ ElementTypeMap SolidMechanicsModel::getInternalDataPerElem(const std::string & field_name, const ElementKind & element_kind) { if (!(this->isInternal(field_name, element_kind))) AKANTU_EXCEPTION("unknown internal " << field_name); for (UInt m = 0; m < materials.size(); ++m) { if (materials[m]->isInternal(field_name, element_kind)) return materials[m]->getInternalDataPerElem(field_name, element_kind); } return ElementTypeMap(); } /* -------------------------------------------------------------------------- */ ElementTypeMapArray & SolidMechanicsModel::flattenInternal(const std::string & field_name, const ElementKind & kind, const GhostType ghost_type) { std::pair key(field_name, kind); if (this->registered_internals.count(key) == 0) { this->registered_internals[key] = new ElementTypeMapArray(field_name, this->id, this->memory_id); } ElementTypeMapArray * internal_flat = this->registered_internals[key]; typedef Mesh::type_iterator iterator; iterator tit = this->mesh.firstType(spatial_dimension, ghost_type, kind); iterator end = this->mesh.lastType(spatial_dimension, ghost_type, kind); for (; tit != end; ++tit) { ElementType type = *tit; if (internal_flat->exists(type, ghost_type)) { (*internal_flat)(type, ghost_type).clear(); (*internal_flat)(type, ghost_type).resize(0); } } for (UInt m = 0; m < materials.size(); ++m) { if (materials[m]->isInternal(field_name, kind)) materials[m]->flattenInternal(field_name, *internal_flat, ghost_type, kind); } return *internal_flat; } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::flattenAllRegisteredInternals( const ElementKind & kind) { typedef std::map, ElementTypeMapArray *>::iterator iterator; iterator it = this->registered_internals.begin(); iterator end = this->registered_internals.end(); while (it != end) { if (kind == it->first.second) this->flattenInternal(it->first.first, kind); ++it; } } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::onDump() { this->flattenAllRegisteredInternals(_ek_regular); } /* -------------------------------------------------------------------------- */ #ifdef AKANTU_USE_IOHELPER dumper::Field * SolidMechanicsModel::createElementalField( const std::string & field_name, const std::string & group_name, bool padding_flag, const UInt & spatial_dimension, const ElementKind & kind) { dumper::Field * field = NULL; if (field_name == "partitions") field = mesh.createElementalField( mesh.getConnectivities(), group_name, spatial_dimension, kind); else if (field_name == "material_index") field = mesh.createElementalField( material_index, group_name, spatial_dimension, kind); else { // this copy of field_name is used to compute derivated data such as // strain and von mises stress that are based on grad_u and stress std::string field_name_copy(field_name); if (field_name == "strain" || field_name == "Green strain" || field_name == "principal strain" || field_name == "principal Green strain") field_name_copy = "grad_u"; else if (field_name == "Von Mises stress") field_name_copy = "stress"; bool is_internal = this->isInternal(field_name_copy, kind); if (is_internal) { ElementTypeMap nb_data_per_elem = this->getInternalDataPerElem(field_name_copy, kind); ElementTypeMapArray & internal_flat = this->flattenInternal(field_name_copy, kind); field = mesh.createElementalField( internal_flat, group_name, spatial_dimension, kind, nb_data_per_elem); if (field_name == "strain") { dumper::ComputeStrain * foo = new dumper::ComputeStrain(*this); field = dumper::FieldComputeProxy::createFieldCompute(field, *foo); } else if (field_name == "Von Mises stress") { dumper::ComputeVonMisesStress * foo = new dumper::ComputeVonMisesStress(*this); field = dumper::FieldComputeProxy::createFieldCompute(field, *foo); } else if (field_name == "Green strain") { dumper::ComputeStrain * foo = new dumper::ComputeStrain(*this); field = dumper::FieldComputeProxy::createFieldCompute(field, *foo); } else if (field_name == "principal strain") { dumper::ComputePrincipalStrain * foo = new dumper::ComputePrincipalStrain(*this); field = dumper::FieldComputeProxy::createFieldCompute(field, *foo); } else if (field_name == "principal Green strain") { dumper::ComputePrincipalStrain * foo = new dumper::ComputePrincipalStrain(*this); field = dumper::FieldComputeProxy::createFieldCompute(field, *foo); } // treat the paddings if (padding_flag) { if (field_name == "stress") { if (spatial_dimension == 2) { dumper::StressPadder<2> * foo = new dumper::StressPadder<2>(*this); field = dumper::FieldComputeProxy::createFieldCompute(field, *foo); } } else if (field_name == "strain" || field_name == "Green strain") { if (spatial_dimension == 2) { dumper::StrainPadder<2> * foo = new dumper::StrainPadder<2>(*this); field = dumper::FieldComputeProxy::createFieldCompute(field, *foo); } } } // homogenize the field dumper::ComputeFunctorInterface * foo = dumper::HomogenizerProxy::createHomogenizer(*field); field = dumper::FieldComputeProxy::createFieldCompute(field, *foo); } } return field; } /* -------------------------------------------------------------------------- */ dumper::Field * SolidMechanicsModel::createNodalFieldReal(const std::string & field_name, const std::string & group_name, bool padding_flag) { std::map *> real_nodal_fields; real_nodal_fields["displacement"] = this->displacement; real_nodal_fields["mass"] = this->mass; real_nodal_fields["velocity"] = this->velocity; real_nodal_fields["acceleration"] = this->acceleration; real_nodal_fields["force"] = this->external_force; real_nodal_fields["internal_force"] = this->internal_force; real_nodal_fields["increment"] = this->displacement_increment; dumper::Field * field = NULL; if (padding_flag) field = this->mesh.createNodalField(real_nodal_fields[field_name], group_name, 3); else field = this->mesh.createNodalField(real_nodal_fields[field_name], group_name); return field; } /* -------------------------------------------------------------------------- */ dumper::Field * SolidMechanicsModel::createNodalFieldBool(const std::string & field_name, const std::string & group_name, __attribute__((unused)) bool padding_flag) { std::map *> uint_nodal_fields; uint_nodal_fields["blocked_dofs"] = blocked_dofs; dumper::Field * field = NULL; field = mesh.createNodalField(uint_nodal_fields[field_name], group_name); return field; } /* -------------------------------------------------------------------------- */ #else /* -------------------------------------------------------------------------- */ dumper::Field * SolidMechanicsModel::createElementalField( __attribute__((unused)) const std::string & field_name, __attribute__((unused)) const std::string & group_name, __attribute__((unused)) bool padding_flag, __attribute__((unused)) const UInt & spatial_dimension, __attribute__((unused)) const ElementKind & kind) { return NULL; } /* -------------------------------------------------------------------------- */ dumper::Field * SolidMechanicsModel::createNodalFieldReal( __attribute__((unused)) const std::string & field_name, __attribute__((unused)) const std::string & group_name, __attribute__((unused)) bool padding_flag) { return NULL; } /* -------------------------------------------------------------------------- */ dumper::Field * SolidMechanicsModel::createNodalFieldBool( __attribute__((unused)) const std::string & field_name, __attribute__((unused)) const std::string & group_name, __attribute__((unused)) bool padding_flag) { return NULL; } #endif /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::dump(const std::string & dumper_name) { this->onDump(); EventManager::sendEvent(SolidMechanicsModelEvent::BeforeDumpEvent()); mesh.dump(dumper_name); } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::dump(const std::string & dumper_name, UInt step) { this->onDump(); EventManager::sendEvent(SolidMechanicsModelEvent::BeforeDumpEvent()); mesh.dump(dumper_name, step); } /* ------------------------------------------------------------------------- */ void SolidMechanicsModel::dump(const std::string & dumper_name, Real time, UInt step) { this->onDump(); EventManager::sendEvent(SolidMechanicsModelEvent::BeforeDumpEvent()); mesh.dump(dumper_name, time, step); } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::dump() { this->onDump(); EventManager::sendEvent(SolidMechanicsModelEvent::BeforeDumpEvent()); mesh.dump(); } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::dump(UInt step) { this->onDump(); EventManager::sendEvent(SolidMechanicsModelEvent::BeforeDumpEvent()); mesh.dump(step); } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::dump(Real time, UInt step) { this->onDump(); EventManager::sendEvent(SolidMechanicsModelEvent::BeforeDumpEvent()); mesh.dump(time, step); } /* -------------------------------------------------------------------------- */ void SolidMechanicsModel::printself(std::ostream & stream, int indent) const { std::string space; for (Int i = 0; i < indent; i++, space += AKANTU_INDENT) ; stream << space << "Solid Mechanics Model [" << std::endl; stream << space << " + id : " << id << std::endl; stream << space << " + spatial dimension : " << spatial_dimension << std::endl; stream << space << " + fem [" << std::endl; getFEEngine().printself(stream, indent + 2); stream << space << AKANTU_INDENT << "]" << std::endl; stream << space << " + nodals information [" << std::endl; displacement->printself(stream, indent + 2); mass->printself(stream, indent + 2); velocity->printself(stream, indent + 2); acceleration->printself(stream, indent + 2); external_force->printself(stream, indent + 2); internal_force->printself(stream, indent + 2); blocked_dofs->printself(stream, indent + 2); stream << space << AKANTU_INDENT << "]" << std::endl; stream << space << " + material information [" << std::endl; material_index.printself(stream, indent + 2); stream << space << AKANTU_INDENT << "]" << std::endl; stream << space << " + materials [" << std::endl; std::vector::const_iterator mat_it; for (mat_it = materials.begin(); mat_it != materials.end(); ++mat_it) { const Material & mat = *(*mat_it); mat.printself(stream, indent + 1); } stream << space << AKANTU_INDENT << "]" << std::endl; stream << space << "]" << std::endl; } /* -------------------------------------------------------------------------- */ __END_AKANTU__ diff --git a/src/model/time_step_solvers/time_step_solver_default.cc b/src/model/time_step_solvers/time_step_solver_default.cc index ec8fbe41d..1eb2d5994 100644 --- a/src/model/time_step_solvers/time_step_solver_default.cc +++ b/src/model/time_step_solvers/time_step_solver_default.cc @@ -1,287 +1,289 @@ /** * @file time_step_solver_default.cc * * @author Nicolas Richart * * @date Wed Sep 16 10:20:55 2015 * * @brief Default implementation of the time step solver * * @section LICENSE * * Copyright (©) 2010-2011 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "time_step_solver_default.hh" -#include "mesh.hh" #include "dof_manager_default.hh" -#include "sparse_matrix_aij.hh" - -#include "pseudo_time.hh" #include "integration_scheme_1st_order.hh" #include "integration_scheme_2nd_order.hh" +#include "mesh.hh" +#include "non_linear_solver.hh" +#include "pseudo_time.hh" +#include "sparse_matrix_aij.hh" /* -------------------------------------------------------------------------- */ __BEGIN_AKANTU__ /* -------------------------------------------------------------------------- */ TimeStepSolverDefault::TimeStepSolverDefault( DOFManagerDefault & dof_manager, const TimeStepSolverType & type, NonLinearSolver & non_linear_solver, const ID & id, UInt memory_id) : TimeStepSolver(dof_manager, type, non_linear_solver, id, memory_id), dof_manager(dof_manager), is_mass_lumped(false) { switch (type) { case _tsst_dynamic: break; case _tsst_dynamic_lumped: this->is_mass_lumped = true; break; case _tsst_static: /// initialize a static time solver for allback dofs break; } } /* -------------------------------------------------------------------------- */ void TimeStepSolverDefault::setIntegrationScheme( const ID & dof_id, const IntegrationSchemeType & type, IntegrationScheme::SolutionType solution_type) { if (this->integration_schemes.find(dof_id) != this->integration_schemes.end()) { AKANTU_EXCEPTION("Their DOFs " << dof_id << " have already an integration scheme associated"); } IntegrationScheme * integration_scheme = NULL; if (this->is_mass_lumped) { switch (type) { case _ist_forward_euler: { integration_scheme = new ForwardEuler(dof_manager, dof_id); break; } case _ist_central_difference: { integration_scheme = new CentralDifference(dof_manager, dof_id); break; } default: AKANTU_EXCEPTION( "This integration scheme cannot be used in lumped dynamic"); } } else { switch (type) { case _ist_pseudo_time: { integration_scheme = new PseudoTime(dof_manager, dof_id); break; } case _ist_forward_euler: { integration_scheme = new ForwardEuler(dof_manager, dof_id); break; } case _ist_trapezoidal_rule_1: { integration_scheme = new TrapezoidalRule1(dof_manager, dof_id); break; } case _ist_backward_euler: { integration_scheme = new BackwardEuler(dof_manager, dof_id); break; } case _ist_central_difference: { integration_scheme = new CentralDifference(dof_manager, dof_id); break; } case _ist_fox_goodwin: { integration_scheme = new FoxGoodwin(dof_manager, dof_id); break; } case _ist_trapezoidal_rule_2: { integration_scheme = new TrapezoidalRule2(dof_manager, dof_id); break; } case _ist_linear_acceleration: { integration_scheme = new LinearAceleration(dof_manager, dof_id); break; } case _ist_generalized_trapezoidal: { integration_scheme = new GeneralizedTrapezoidal(dof_manager, dof_id); break; } case _ist_newmark_beta: integration_scheme = new NewmarkBeta(dof_manager, dof_id); break; } } + AKANTU_DEBUG_ASSERT(integration_scheme != nullptr, + "No integration scheme was found for the provided types"); this->integration_schemes[dof_id] = integration_scheme; this->solution_types[dof_id] = solution_type; this->integration_schemes_owner.insert(dof_id); } /* -------------------------------------------------------------------------- */ bool TimeStepSolverDefault::hasIntegrationScheme(const ID & dof_id) const { return this->integration_schemes.find(dof_id) != this->integration_schemes.end(); } /* -------------------------------------------------------------------------- */ TimeStepSolverDefault::~TimeStepSolverDefault() { DOFsIntegrationSchemesOwner::iterator it = this->integration_schemes_owner.begin(); DOFsIntegrationSchemesOwner::iterator end = this->integration_schemes_owner.end(); for (; it != end; ++it) { delete this->integration_schemes[*it]; } this->integration_schemes.clear(); } /* -------------------------------------------------------------------------- */ void TimeStepSolverDefault::solveStep(SolverCallback & solver_callback) { this->solver_callback = &solver_callback; this->non_linear_solver.solve(*this); this->solver_callback = NULL; } /* -------------------------------------------------------------------------- */ void TimeStepSolverDefault::predictor() { AKANTU_DEBUG_IN(); TimeStepSolver::predictor(); DOFsIntegrationSchemes::iterator integration_scheme_it = this->integration_schemes.begin(); DOFsIntegrationSchemes::iterator integration_scheme_end = this->integration_schemes.end(); for (; integration_scheme_it != integration_scheme_end; ++integration_scheme_it) { ID dof_id = integration_scheme_it->first; Array * previous = NULL; UInt dof_array_comp = this->dof_manager.getDOFs(dof_id).getNbComponent(); if (this->dof_manager.hasPreviousDOFs(dof_id)) { this->dof_manager.savePreviousDOFs(dof_id); } else { if (this->dof_manager.hasDOFsIncrement(dof_id)) { previous = new Array(this->dof_manager.getDOFs(dof_id)); } } /// integrator predictor integration_scheme_it->second->predictor(this->time_step); /// computing the increment of dof if needed if (this->dof_manager.hasDOFsIncrement(dof_id)) { Array & increment = this->dof_manager.getDOFsIncrement(dof_id); Array::vector_iterator incr_it = increment.begin(dof_array_comp); Array::vector_iterator incr_end = increment.end(dof_array_comp); Array::const_vector_iterator dof_it = this->dof_manager.getDOFs(dof_id).begin(dof_array_comp); Array::const_vector_iterator prev_dof_it; if (this->dof_manager.hasPreviousDOFs(dof_id)) { prev_dof_it = this->dof_manager.getPreviousDOFs(dof_id).begin(dof_array_comp); } else { prev_dof_it = previous->begin(dof_array_comp); } for (; incr_it != incr_end; ++incr_it) { *incr_it = *dof_it; *incr_it -= *prev_dof_it; } delete previous; } } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void TimeStepSolverDefault::corrector() { AKANTU_DEBUG_IN(); TimeStepSolver::corrector(); DOFsIntegrationSchemes::iterator integration_scheme_it = this->integration_schemes.begin(); DOFsIntegrationSchemes::iterator integration_scheme_end = this->integration_schemes.end(); for (; integration_scheme_it != integration_scheme_end; ++integration_scheme_it) { IntegrationScheme::SolutionType solution_type = this->solution_types[integration_scheme_it->first]; integration_scheme_it->second->corrector(solution_type, this->time_step); } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void TimeStepSolverDefault::assembleJacobian() { AKANTU_DEBUG_IN(); TimeStepSolver::assembleJacobian(); DOFsIntegrationSchemes::iterator integration_scheme_it = this->integration_schemes.begin(); DOFsIntegrationSchemes::iterator integration_scheme_end = this->integration_schemes.end(); for (; integration_scheme_it != integration_scheme_end; ++integration_scheme_it) { IntegrationScheme::SolutionType solution_type = this->solution_types[integration_scheme_it->first]; integration_scheme_it->second->assembleJacobian(solution_type, this->time_step); } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void TimeStepSolverDefault::assembleResidual() { AKANTU_DEBUG_IN(); TimeStepSolver::assembleResidual(); DOFsIntegrationSchemes::iterator integration_scheme_it = this->integration_schemes.begin(); DOFsIntegrationSchemes::iterator integration_scheme_end = this->integration_schemes.end(); for (; integration_scheme_it != integration_scheme_end; ++integration_scheme_it) { integration_scheme_it->second->assembleResidual(this->is_mass_lumped); } AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ __END_AKANTU__ diff --git a/src/solver/solver_mumps.cc b/src/solver/solver_mumps.cc index be406ad07..af26878e9 100644 --- a/src/solver/solver_mumps.cc +++ b/src/solver/solver_mumps.cc @@ -1,406 +1,406 @@ /** * @file sparse_solver_mumps.cc * * @author Nicolas Richart * * @date creation: Mon Dec 13 2010 * @date last modification: Tue Jan 19 2016 * * @brief implem of SparseSolverMumps class * * @section LICENSE * * Copyright (©) 2010-2012, 2014, 2015 EPFL (Ecole Polytechnique Fédérale de * Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des * Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * * @section DESCRIPTION * * @subsection Ctrl_param Control parameters * * ICNTL(1), * ICNTL(2), * ICNTL(3) : output streams for error, diagnostics, and global messages * * ICNTL(4) : verbose level : 0 no message - 4 all messages * * ICNTL(5) : type of matrix, 0 assembled, 1 elementary * * ICNTL(6) : control the permutation and scaling(default 7) see mumps doc for * more information * * ICNTL(7) : determine the pivot order (default 7) see mumps doc for more * information * * ICNTL(8) : describe the scaling method used * * ICNTL(9) : 1 solve A x = b, 0 solve At x = b * * ICNTL(10) : number of iterative refinement when NRHS = 1 * * ICNTL(11) : > 0 return statistics * * ICNTL(12) : only used for SYM = 2, ordering strategy * * ICNTL(13) : * * ICNTL(14) : percentage of increase of the estimated working space * * ICNTL(15-17) : not used * * ICNTL(18) : only used if ICNTL(5) = 0, 0 matrix centralized, 1 structure on * host and mumps give the mapping, 2 structure on host and distributed matrix * for facto, 3 distributed matrix * * ICNTL(19) : > 0, Shur complement returned * * ICNTL(20) : 0 rhs dense, 1 rhs sparse * * ICNTL(21) : 0 solution in rhs, 1 solution distributed in ISOL_loc and SOL_loc * allocated by user * * ICNTL(22) : 0 in-core, 1 out-of-core * * ICNTL(23) : maximum memory allocatable by mumps pre proc * * ICNTL(24) : controls the detection of "null pivot rows" * * ICNTL(25) : * * ICNTL(26) : * * ICNTL(27) : * * ICNTL(28) : 0 automatic choice, 1 sequential analysis, 2 parallel analysis * * ICNTL(29) : 0 automatic choice, 1 PT-Scotch, 2 ParMetis */ /* -------------------------------------------------------------------------- */ #include "aka_common.hh" #include "dof_manager_default.hh" #include "sparse_matrix_aij.hh" #if defined(AKANTU_USE_MPI) #include "static_communicator_mpi.hh" #include "mpi_type_wrapper.hh" #endif #include "solver_mumps.hh" #include "dof_synchronizer.hh" /* -------------------------------------------------------------------------- */ // static std::ostream & operator <<(std::ostream & stream, const DMUMPS_STRUC_C // & _this) { // stream << "DMUMPS Data [" << std::endl; // stream << " + job : " << _this.job << std::endl; // stream << " + par : " << _this.par << std::endl; // stream << " + sym : " << _this.sym << std::endl; // stream << " + comm_fortran : " << _this.comm_fortran << std::endl; // stream << " + nz : " << _this.nz << std::endl; // stream << " + irn : " << _this.irn << std::endl; // stream << " + jcn : " << _this.jcn << std::endl; // stream << " + nz_loc : " << _this.nz_loc << std::endl; // stream << " + irn_loc : " << _this.irn_loc << std::endl; // stream << " + jcn_loc : " << _this.jcn_loc << std::endl; // stream << "]"; // return stream; // } __BEGIN_AKANTU__ /* -------------------------------------------------------------------------- */ SparseSolverMumps::SparseSolverMumps(DOFManagerDefault & dof_manager, const ID & matrix_id, const ID & id, const MemoryID & memory_id) : SparseSolver(dof_manager, matrix_id, id, memory_id), dof_manager(dof_manager), matrix(dof_manager.getMatrix(matrix_id)), rhs(dof_manager.getResidual()), solution(dof_manager.getGlobalSolution()), master_rhs_solution(0, 1) { AKANTU_DEBUG_IN(); StaticCommunicator & communicator = - StaticCommunicator::getStaticCommunicator(); + StaticCommunicator::getStaticCommunicator(); this->prank = communicator.whoAmI(); #ifdef AKANTU_USE_MPI this->parallel_method = _fully_distributed; #else // AKANTU_USE_MPI this->parallel_method = _not_parallel; #endif // AKANTU_USE_MPI this->mumps_data.par = 1; // The host is part of computations switch (this->parallel_method) { case _not_parallel: break; case _master_slave_distributed: this->mumps_data.par = 0; // The host is not part of the computations case _fully_distributed: #ifdef AKANTU_USE_MPI const StaticCommunicatorMPI & mpi_st_comm = dynamic_cast( communicator.getRealStaticCommunicator()); this->mumps_data.comm_fortran = MPI_Comm_c2f(mpi_st_comm.getMPITypeWrapper().getMPICommunicator()); #else AKANTU_DEBUG_ERROR( "You cannot use parallel method to solve without activating MPI"); #endif break; } this->mumps_data.sym = 2 * (this->matrix.getMatrixType() == _symmetric); this->prank = communicator.whoAmI(); this->mumps_data.job = _smj_initialize; // initialize dmumps_c(&this->mumps_data); /* ------------------------------------------------------------------------ */ this->setOutputLevel(); if (AKANTU_DEBUG_TEST(dblDump)) { strcpy(this->mumps_data.write_problem, "mumps_matrix.mtx"); } this->last_profile_release = this->matrix.getProfileRelease() - 1; this->last_value_release = this->matrix.getValueRelease() - 1; AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ SparseSolverMumps::~SparseSolverMumps() { AKANTU_DEBUG_IN(); this->mumps_data.job = _smj_destroy; // destroy dmumps_c(&this->mumps_data); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SparseSolverMumps::setOutputLevel() { // Output setup icntl(1) = 0; // error output icntl(2) = 0; // dignostics output icntl(3) = 0; // informations icntl(4) = 0; #if !defined(AKANTU_NDEBUG) DebugLevel dbg_lvl = debug::debugger.getDebugLevel(); icntl(1) = (dbg_lvl >= dblWarning) ? 6 : 0; icntl(3) = (dbg_lvl >= dblInfo) ? 6 : 0; icntl(2) = (dbg_lvl >= dblTrace) ? 6 : 0; if (dbg_lvl >= dblDump) { icntl(4) = 4; } else if (dbg_lvl >= dblTrace) { icntl(4) = 3; } else if (dbg_lvl >= dblInfo) { icntl(4) = 2; } else if (dbg_lvl >= dblWarning) { icntl(4) = 1; } #endif } /* -------------------------------------------------------------------------- */ void SparseSolverMumps::initMumpsData() { // Default Scaling icntl(8) = 77; // Assembled matrix icntl(5) = 0; /// Default centralized dense second member icntl(20) = 0; icntl(21) = 0; // automatic choice for analysis icntl(28) = 0; UInt size = this->matrix.getSize(); if (prank == 0) { this->master_rhs_solution.resize(size); } this->mumps_data.nz_alloc = 0; this->mumps_data.n = size; switch (this->parallel_method) { case _fully_distributed: icntl(18) = 3; // fully distributed this->mumps_data.nz_loc = matrix.getNbNonZero(); this->mumps_data.irn_loc = matrix.getIRN().storage(); this->mumps_data.jcn_loc = matrix.getJCN().storage(); break; case _not_parallel: case _master_slave_distributed: icntl(18) = 0; // centralized if (prank == 0) { this->mumps_data.nz = matrix.getNbNonZero(); this->mumps_data.irn = matrix.getIRN().storage(); this->mumps_data.jcn = matrix.getJCN().storage(); } else { this->mumps_data.nz = 0; this->mumps_data.irn = NULL; this->mumps_data.jcn = NULL; } break; default: AKANTU_DEBUG_ERROR("This case should not happen!!"); } } /* -------------------------------------------------------------------------- */ void SparseSolverMumps::initialize() { AKANTU_DEBUG_IN(); this->analysis(); // icntl(14) = 80; AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SparseSolverMumps::analysis() { AKANTU_DEBUG_IN(); initMumpsData(); this->mumps_data.job = _smj_analyze; // analyze dmumps_c(&this->mumps_data); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SparseSolverMumps::factorize() { AKANTU_DEBUG_IN(); this->mumps_data.rhs = this->rhs.storage(); if (parallel_method == _fully_distributed) this->mumps_data.a_loc = this->matrix.getA().storage(); else { if (prank == 0) this->mumps_data.a = this->matrix.getA().storage(); } this->mumps_data.job = _smj_factorize; // factorize dmumps_c(&this->mumps_data); this->printError(); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SparseSolverMumps::solve() { AKANTU_DEBUG_IN(); this->setOutputLevel(); this->dof_manager.applyBoundary(); this->master_rhs_solution.copy(this->dof_manager.getResidual()); // if (prank == 0) { // matrix.getDOFSynchronizer().gather(this->rhs, 0, this->master_rhs_solution); // } else { // this->matrix.getDOFSynchronizer().gather(this->rhs, 0); // } if (this->last_profile_release != this->matrix.getProfileRelease()) { this->analysis(); this->last_profile_release = this->matrix.getProfileRelease(); } if (this->last_value_release != this->matrix.getValueRelease()) { this->factorize(); this->last_value_release = this->matrix.getValueRelease(); } if (prank == 0) { this->mumps_data.rhs = this->master_rhs_solution.storage(); } this->mumps_data.job = _smj_solve; // solve dmumps_c(&this->mumps_data); this->printError(); this->dof_manager.getGlobalSolution().copy(this->master_rhs_solution); // if (prank == 0) { // matrix.getDOFSynchronizer().scatter(this->solution, 0, this->master_rhs_solution); // } else { // this->matrix.getDOFSynchronizer().gather(this->solution, 0); // } this->dof_manager.splitSolutionPerDOFs(); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SparseSolverMumps::printError() { Vector _info_v(2); _info_v[0] = info(1); // to get errors _info_v[1] = -info(1); // to get warnings StaticCommunicator::getStaticCommunicator().allReduce(_info_v, _so_min); _info_v[1] = -_info_v[1]; if (_info_v[0] < 0) { // < 0 is an error switch (_info_v[0]) { case -10: AKANTU_DEBUG_ERROR("The matrix is singular"); break; case -9: { icntl(14) += 10; if (icntl(14) != 90) { // std::cout << "Dynamic memory increase of 10%" << std::endl; AKANTU_DEBUG_WARNING("MUMPS dynamic memory is insufficient it will be " "increased allowed to use 10% more"); // change releases to force a recompute this->last_value_release--; this->last_profile_release--; this->solve(); } else { AKANTU_DEBUG_ERROR("The MUMPS workarray is too small INFO(2)=" << info(2) << "No further increase possible"); break; } } default: AKANTU_DEBUG_ERROR("Error in mumps during solve process, check mumps " "user guide INFO(1) = " << _info_v[1]); } } else if (_info_v[1] > 0) { AKANTU_DEBUG_WARNING("Warning in mumps during solve process, check mumps " "user guide INFO(1) = " << _info_v[1]); } } __END_AKANTU__ diff --git a/src/solver/sparse_matrix.hh b/src/solver/sparse_matrix.hh index 5be2fa910..5391595ef 100644 --- a/src/solver/sparse_matrix.hh +++ b/src/solver/sparse_matrix.hh @@ -1,160 +1,162 @@ + /** * @file sparse_matrix.hh * * @author Nicolas Richart * * @date creation: Mon Dec 13 2010 * @date last modification: Fri Oct 16 2015 * * @brief sparse matrix storage class (distributed assembled matrix) * This is a COO format (Coordinate List) * * @section LICENSE * * Copyright (©) 2010-2012, 2014, 2015 EPFL (Ecole Polytechnique Fédérale de * Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des * Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "aka_common.hh" /* -------------------------------------------------------------------------- */ #ifndef __AKANTU_SPARSE_MATRIX_HH__ #define __AKANTU_SPARSE_MATRIX_HH__ /* -------------------------------------------------------------------------- */ namespace akantu { - class DOFManager; +class DOFManager; +class TermsToAssemble; } -__BEGIN_AKANTU__ +namespace akantu { class SparseMatrix { /* ------------------------------------------------------------------------ */ /* Constructors/Destructors */ /* ------------------------------------------------------------------------ */ public: SparseMatrix(DOFManager & dof_manager, const MatrixType & matrix_type, const ID & id = "sparse_matrix"); SparseMatrix(const SparseMatrix & matrix, const ID & id = "sparse_matrix"); virtual ~SparseMatrix(); /* ------------------------------------------------------------------------ */ /* Methods */ /* ------------------------------------------------------------------------ */ public: /// remove the existing profile virtual void clearProfile(); /// set the matrix to 0 virtual void clear() = 0; /// add a non-zero element to the profile virtual inline UInt addToProfile(UInt i, UInt j) = 0; /// assemble a local matrix in the sparse one virtual void addToMatrix(UInt i, UInt j, Real value) = 0; /// save the profil in a file using the MatrixMarket file format virtual void saveProfile(__attribute__((unused)) const std::string &) const { AKANTU_DEBUG_TO_IMPLEMENT(); } /// save the matrix in a file using the MatrixMarket file format virtual void saveMatrix(__attribute__((unused)) const std::string &) const { AKANTU_DEBUG_TO_IMPLEMENT(); }; /// multiply the matrix by a coefficient virtual void mul(Real alpha) = 0; /// add matrices virtual void add(const SparseMatrix & matrix, Real alpha = 1.); /// Equivalent of *gemv in blas virtual void matVecMul(const Array & x, Array & y, Real alpha = 1., Real beta = 0.) const = 0; /// modify the matrix to "remove" the blocked dof virtual void applyBoundary(Real block_val = 1.) = 0; /// operator *= SparseMatrix & operator*=(Real alpha) { this->mul(alpha); return *this; } protected: /// This is the revert of add B += \alpha * *this; virtual void addMeTo(SparseMatrix & B, Real alpha) const = 0; /* ------------------------------------------------------------------------ */ /* Accessors */ /* ------------------------------------------------------------------------ */ public: /// return the values at potition i, j virtual inline Real operator()(__attribute__((unused)) UInt i, __attribute__((unused)) UInt j) const { AKANTU_DEBUG_TO_IMPLEMENT(); } /// return the values at potition i, j virtual inline Real & operator()(__attribute__((unused)) UInt i, __attribute__((unused)) UInt j) { AKANTU_DEBUG_TO_IMPLEMENT(); } AKANTU_GET_MACRO(NbNonZero, nb_non_zero, UInt); AKANTU_GET_MACRO(Size, size, UInt); AKANTU_GET_MACRO(MatrixType, matrix_type, const MatrixType &); /* ------------------------------------------------------------------------ */ /* Class Members */ /* ------------------------------------------------------------------------ */ protected: ID id; /// Underlying dof manager DOFManager & _dof_manager; /// sparce matrix type MatrixType matrix_type; /// Size of the matrix UInt size; /// number of processors UInt nb_proc; /// number of non zero element UInt nb_non_zero; /// matrix definition release UInt matrix_release; }; Array & operator*=(Array & vect, const SparseMatrix & mat); -__END_AKANTU__ +} // akantu /* -------------------------------------------------------------------------- */ /* inline functions */ /* -------------------------------------------------------------------------- */ #include "sparse_matrix_inline_impl.cc" #endif /* __AKANTU_SPARSE_MATRIX_HH__ */ diff --git a/src/solver/sparse_matrix_aij.cc b/src/solver/sparse_matrix_aij.cc index dc9ae8f5b..c8e0e4e95 100644 --- a/src/solver/sparse_matrix_aij.cc +++ b/src/solver/sparse_matrix_aij.cc @@ -1,226 +1,227 @@ /** * @file sparse_matrix_aij.cc * * @author Nicolas Richart * * @date Tue Aug 18 16:31:23 2015 * * @brief Implementation of the AIJ sparse matrix * * @section LICENSE * * Copyright (©) 2010-2011 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "sparse_matrix_aij.hh" #include "dof_manager_default.hh" +#include "terms_to_assemble.hh" /* -------------------------------------------------------------------------- */ #include /* -------------------------------------------------------------------------- */ __BEGIN_AKANTU__ /* -------------------------------------------------------------------------- */ SparseMatrixAIJ::SparseMatrixAIJ(DOFManagerDefault & dof_manager, const MatrixType & matrix_type, const ID & id) : SparseMatrix(dof_manager, matrix_type, id), dof_manager(dof_manager), irn(0, 1, id + ":irn"), jcn(0, 1, id + ":jcn"), a(0, 1, id + ":a"), profile_release(0), value_release(0) {} /* -------------------------------------------------------------------------- */ SparseMatrixAIJ::SparseMatrixAIJ(const SparseMatrixAIJ & matrix, const ID & id) : SparseMatrix(matrix, id), dof_manager(matrix.dof_manager), irn(matrix.irn, true, id + ":irn"), jcn(matrix.jcn, true, id + ":jcn"), a(matrix.a, true, id + ":a"), profile_release(0), value_release(0) {} /* -------------------------------------------------------------------------- */ SparseMatrixAIJ::~SparseMatrixAIJ() {} /* -------------------------------------------------------------------------- */ void SparseMatrixAIJ::applyBoundary(Real block_val) { AKANTU_DEBUG_IN(); const Array & blocked_dofs = this->dof_manager.getGlobalBlockedDOFs(); Array::const_scalar_iterator irn_val = irn.begin(); Array::const_scalar_iterator jcn_val = jcn.begin(); Array::scalar_iterator a_val = a.begin(); for (UInt i = 0; i < nb_non_zero; ++i) { UInt ni = this->dof_manager.globalToLocalEquationNumber(*irn_val - 1); UInt nj = this->dof_manager.globalToLocalEquationNumber(*jcn_val - 1); if (blocked_dofs(ni) || blocked_dofs(nj)) { if (*irn_val != *jcn_val) { *a_val = 0; } else { if (this->dof_manager.isLocalOrMasterDOF(ni)) { *a_val = block_val; } else { *a_val = 0; } } } ++irn_val; ++jcn_val; ++a_val; } this->value_release++; AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SparseMatrixAIJ::saveProfile(const std::string & filename) const { AKANTU_DEBUG_IN(); std::ofstream outfile; outfile.open(filename.c_str()); outfile << "%%MatrixMarket matrix coordinate pattern"; if (this->matrix_type == _symmetric) outfile << " symmetric"; else outfile << " general"; outfile << std::endl; UInt m = this->size; outfile << m << " " << m << " " << this->nb_non_zero << std::endl; for (UInt i = 0; i < this->nb_non_zero; ++i) { outfile << this->irn.storage()[i] << " " << this->jcn.storage()[i] << " 1" << std::endl; } outfile.close(); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SparseMatrixAIJ::saveMatrix(const std::string & filename) const { AKANTU_DEBUG_IN(); std::ofstream outfile; outfile.precision(std::numeric_limits::digits10); outfile.open(filename.c_str()); outfile << "%%MatrixMarket matrix coordinate real"; if (this->matrix_type == _symmetric) outfile << " symmetric"; else outfile << " general"; outfile << std::endl; outfile << this->size << " " << this->size << " " << this->nb_non_zero << std::endl; for (UInt i = 0; i < this->nb_non_zero; ++i) { outfile << this->irn(i) << " " << this->jcn(i) << " " << this->a(i) << std::endl; } outfile.close(); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SparseMatrixAIJ::matVecMul(const Array & x, Array & y, Real alpha, Real beta) const { AKANTU_DEBUG_IN(); y *= beta; Array::const_scalar_iterator i_it = this->irn.storage(); Array::const_scalar_iterator j_it = this->jcn.storage(); Array::const_scalar_iterator a_it = this->a.storage(); Array::const_scalar_iterator x_it = x.storage(); Array::scalar_iterator y_it = y.storage(); for (UInt k = 0; k < this->nb_non_zero; ++k, ++i_it, ++j_it, ++a_it) { Int i = *i_it - 1; Int j = *j_it - 1; const Real & A = *a_it; y_it[i] += alpha * A * x_it[j]; if ((this->matrix_type == _symmetric) && (i != j)) y_it[j] += alpha * A * x_it[i]; } // if (dof_synchronizer) // dof_synchronizer->reduceSynchronize(vect); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ void SparseMatrixAIJ::copyContent(const SparseMatrix & matrix) { AKANTU_DEBUG_IN(); const SparseMatrixAIJ & mat = dynamic_cast(matrix); AKANTU_DEBUG_ASSERT(nb_non_zero == mat.getNbNonZero(), "The to matrix don't have the same profiles"); memcpy(a.storage(), mat.getA().storage(), nb_non_zero * sizeof(Real)); this->value_release++; AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template void SparseMatrixAIJ::addMeToTemplated(MatrixType & B, Real alpha) const { Array::const_scalar_iterator i_it = this->irn.begin(); Array::const_scalar_iterator j_it = this->jcn.begin(); Array::const_scalar_iterator a_it = this->a.begin(); for (UInt n = 0; n < this->nb_non_zero; ++n, ++a_it, ++i_it, ++j_it) { const Int & i = *i_it; const Int & j = *j_it; const Real & A_ij = *a_it; B.addToMatrix(i - 1, j - 1, alpha * A_ij); } } /* -------------------------------------------------------------------------- */ void SparseMatrixAIJ::addMeTo(SparseMatrix & B, Real alpha) const { if(SparseMatrixAIJ * B_aij = dynamic_cast(&B)) { this->addMeToTemplated(*B_aij, alpha); } else { // this->addMeToTemplated(*this, alpha); } } /* -------------------------------------------------------------------------- */ void SparseMatrixAIJ::mul(Real alpha) { this->a *= alpha; this->value_release++; } /* -------------------------------------------------------------------------- */ void SparseMatrixAIJ::clear() { a.set(0.); this->value_release++; } __END_AKANTU__ diff --git a/src/solver/sparse_matrix_aij.hh b/src/solver/sparse_matrix_aij.hh index 79c07d4bf..dcf3f1b0e 100644 --- a/src/solver/sparse_matrix_aij.hh +++ b/src/solver/sparse_matrix_aij.hh @@ -1,178 +1,179 @@ /** * @file sparse_matrix_aij.hh * * @author Nicolas Richart * * @date Mon Aug 17 21:22:57 2015 * * @brief AIJ implementation of the SparseMatrix (this the format used by Mumps) * * @section LICENSE * * Copyright (©) 2010-2011 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ -#include "aka_common.hh" #include "aka_array.hh" +#include "aka_common.hh" #include "sparse_matrix.hh" /* -------------------------------------------------------------------------- */ #ifndef __AKANTU_SPARSE_MATRIX_AIJ_HH__ #define __AKANTU_SPARSE_MATRIX_AIJ_HH__ namespace akantu { - class DOFManagerDefault; +class DOFManagerDefault; +class TermsToAssemble; } __BEGIN_AKANTU__ class SparseMatrixAIJ : public SparseMatrix { /* ------------------------------------------------------------------------ */ /* Constructors/Destructors */ /* ------------------------------------------------------------------------ */ public: SparseMatrixAIJ(DOFManagerDefault & dof_manager, const MatrixType & matrix_type, const ID & id = "sparse_matrix_aij"); SparseMatrixAIJ(const SparseMatrixAIJ & matrix, const ID & id = "sparse_matrix_aij"); virtual ~SparseMatrixAIJ(); /* ------------------------------------------------------------------------ */ /* Methods */ /* ------------------------------------------------------------------------ */ public: /// remove the existing profile inline void clearProfile(); /// add a non-zero element virtual UInt addToProfile(UInt i, UInt j); /// set the matrix to 0 virtual void clear(); /// assemble a local matrix in the sparse one inline void addToMatrix(UInt i, UInt j, Real value); /// set the size of the matrix void resize(UInt size) { this->size = size; } /// modify the matrix to "remove" the blocked dof virtual void applyBoundary(Real block_val = 1.); /// save the profil in a file using the MatrixMarket file format virtual void saveProfile(const std::string & filename) const; /// save the matrix in a file using the MatrixMarket file format virtual void saveMatrix(const std::string & filename) const; /// copy assuming the profile are the same virtual void copyContent(const SparseMatrix & matrix); /// multiply the matrix by a scalar void mul(Real alpha); /// add matrix *this += B - //virtual void add(const SparseMatrix & matrix, Real alpha); + // virtual void add(const SparseMatrix & matrix, Real alpha); /// Equivalent of *gemv in blas virtual void matVecMul(const Array & x, Array & y, Real alpha = 1., Real beta = 0.) const; /* ------------------------------------------------------------------------ */ /// accessor to A_{ij} - if (i, j) not present it returns 0 inline Real operator()(UInt i, UInt j) const; /// accessor to A_{ij} - if (i, j) not present it fails, (i, j) should be /// first added to the profile inline Real & operator()(UInt i, UInt j); protected: /// This is the revert of add B += \alpha * *this; virtual void addMeTo(SparseMatrix & B, Real alpha) const; private: /// This is just to inline the addToMatrix function - template + template void addMeToTemplated(MatrixType & B, Real alpha) const; /* ------------------------------------------------------------------------ */ /* Accessors */ /* ------------------------------------------------------------------------ */ public: AKANTU_GET_MACRO(IRN, irn, const Array &); AKANTU_GET_MACRO(JCN, jcn, const Array &); AKANTU_GET_MACRO(A, a, const Array &); /// The release changes at each call of a function that changes the profile, /// it in increasing but could overflow so it should be checked as /// (my_release != release) and not as (my_release < release) AKANTU_GET_MACRO(ProfileRelease, profile_release, UInt); AKANTU_GET_MACRO(ValueRelease, value_release, UInt); protected: typedef std::pair KeyCOO; typedef unordered_map::type coordinate_list_map; /// get the pair corresponding to (i, j) inline KeyCOO key(UInt i, UInt j) const { if (this->matrix_type == _symmetric && (i > j)) return std::make_pair(j, i); return std::make_pair(i, j); } /* ------------------------------------------------------------------------ */ /* Class Members */ /* ------------------------------------------------------------------------ */ private: DOFManagerDefault & dof_manager; /// row indexes Array irn; /// column indexes Array jcn; /// values : A[k] = Matrix[irn[k]][jcn[k]] Array a; /// Profile release UInt profile_release; /// Value release UInt value_release; /* * map for (i, j) -> k correspondence */ coordinate_list_map irn_jcn_k; }; __END_AKANTU__ /* -------------------------------------------------------------------------- */ /* inline functions */ /* -------------------------------------------------------------------------- */ #include "sparse_matrix_aij_inline_impl.cc" #endif /* __AKANTU_SPARSE_MATRIX_AIJ_HH__ */ diff --git a/src/solver/terms_to_assemble.hh b/src/solver/terms_to_assemble.hh new file mode 100644 index 000000000..2c6662781 --- /dev/null +++ b/src/solver/terms_to_assemble.hh @@ -0,0 +1,90 @@ +/** + * @file terms_to_assemble.hh + * + * @author Nicolas Richart + * + * @date creation Tue Dec 20 2016 + * + * @brief List of terms to assemble to a matrix + * + * @section LICENSE + * + * Copyright (©) 2010-2011 EPFL (Ecole Polytechnique Fédérale de Lausanne) + * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) + * + * Akantu is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) any + * later version. + * + * Akantu 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 Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Akantu. If not, see . + * + */ + +/* -------------------------------------------------------------------------- */ +#include "aka_common.hh" +/* -------------------------------------------------------------------------- */ +#include +/* -------------------------------------------------------------------------- */ + +#ifndef __AKANTU_TERMS_TO_ASSEMBLE_HH__ +#define __AKANTU_TERMS_TO_ASSEMBLE_HH__ + +namespace akantu { + +class TermsToAssemble { + /* ------------------------------------------------------------------------ */ + /* Constructors/Destructors */ + /* ------------------------------------------------------------------------ */ +public: + TermsToAssemble() {} + virtual ~TermsToAssemble() {} + + class TermToAssemble { + public: + TermToAssemble(UInt i, UInt j) : _i(i), _j(j) {} + inline void operator+=(Real val) { this->val = val; } + inline operator Real() const { return val; } + inline UInt i() const { return _i; } + inline UInt j() const { return _j; } + private: + UInt _i, _j; + Real val; + }; + + /* ------------------------------------------------------------------------ */ + /* Methods */ + /* ------------------------------------------------------------------------ */ +public: + inline TermToAssemble & operator()(UInt i, UInt j) { + terms.emplace_back(i, j); + return terms.back(); + } + + /* ------------------------------------------------------------------------ */ + /* Accessors */ + /* ------------------------------------------------------------------------ */ +private: + typedef std::vector TermsContainer; +public: + typedef TermsContainer::const_iterator const_terms_iterator; + + const_terms_iterator begin() const { return terms.begin(); } + const_terms_iterator end() const { return terms.end(); } + + /* ------------------------------------------------------------------------ */ + /* Class Members */ + /* ------------------------------------------------------------------------ */ +private: + TermsContainer terms; +}; + +} // akantu + +#endif /* __AKANTU_TERMS_TO_ASSEMBLE_HH__ */ diff --git a/src/synchronizer/grid_synchronizer.cc b/src/synchronizer/grid_synchronizer.cc index 965d1bef5..f06230e23 100644 --- a/src/synchronizer/grid_synchronizer.cc +++ b/src/synchronizer/grid_synchronizer.cc @@ -1,601 +1,602 @@ /** * @file grid_synchronizer.cc * * @author Aurelia Isabel Cuba Ramos * @author Nicolas Richart * * @date creation: Mon Oct 03 2011 * @date last modification: Fri Jan 22 2016 * * @brief implementation of the grid synchronizer * * @section LICENSE * * Copyright (©) 2010-2012, 2014, 2015 EPFL (Ecole Polytechnique Fédérale de * Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des * Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "grid_synchronizer.hh" #include "aka_grid_dynamic.hh" #include "mesh.hh" #include "fe_engine.hh" +#include "integration_point.hh" #include "static_communicator.hh" #include "mesh_io.hh" #include /* -------------------------------------------------------------------------- */ __BEGIN_AKANTU__ /* -------------------------------------------------------------------------- */ GridSynchronizer::GridSynchronizer(Mesh & mesh, const ID & id, MemoryID memory_id, const bool register_to_event_manager) : ElementSynchronizer(mesh, id, memory_id, register_to_event_manager) { AKANTU_DEBUG_IN(); AKANTU_DEBUG_OUT(); } /* -------------------------------------------------------------------------- */ template GridSynchronizer * GridSynchronizer::createGridSynchronizer( Mesh & mesh, const SpatialGrid & grid, SynchronizerID id, SynchronizerRegistry * synchronizer_registry, const std::set & tags_to_register, MemoryID memory_id, const bool register_to_event_manager) { AKANTU_DEBUG_IN(); StaticCommunicator & comm = StaticCommunicator::getStaticCommunicator(); UInt nb_proc = comm.getNbProc(); UInt my_rank = comm.whoAmI(); GridSynchronizer & communicator = *(new GridSynchronizer(mesh, id, memory_id, register_to_event_manager)); if (nb_proc == 1) return &communicator; UInt spatial_dimension = mesh.getSpatialDimension(); Vector bounding_boxes(2 * spatial_dimension * nb_proc); Vector my_bounding_box(bounding_boxes.storage() + 2 * spatial_dimension * my_rank, 2 * spatial_dimension); // mesh.getLocalLowerBounds(my_bounding_box); // mesh.getLocalUpperBounds(my_bounding_box + spatial_dimension); const Vector & lower = grid.getLowerBounds(); const Vector & upper = grid.getUpperBounds(); const Vector & spacing = grid.getSpacing(); for (UInt i = 0; i < spatial_dimension; ++i) { my_bounding_box[i] = lower(i) - spacing(i); my_bounding_box[spatial_dimension + i] = upper(i) + spacing(i); } AKANTU_DEBUG_INFO( "Exchange of bounding box to detect the overlapping regions."); comm.allGather(bounding_boxes); bool * intersects_proc = new bool[nb_proc]; std::fill_n(intersects_proc, nb_proc, true); Int * first_cells = new Int[3 * nb_proc]; Int * last_cells = new Int[3 * nb_proc]; std::fill_n(first_cells, 3 * nb_proc, 0); std::fill_n(first_cells, 3 * nb_proc, 0); ElementTypeMapArray ** element_per_proc = new ElementTypeMapArray * [nb_proc]; for (UInt p = 0; p < nb_proc; ++p) element_per_proc[p] = NULL; // check the overlapping between my box and the one from other processors for (UInt p = 0; p < nb_proc; ++p) { if (p == my_rank) continue; Real * proc_bounding_box = bounding_boxes.storage() + 2 * spatial_dimension * p; bool intersects = false; Int * first_cell_p = first_cells + p * spatial_dimension; Int * last_cell_p = last_cells + p * spatial_dimension; for (UInt s = 0; s < spatial_dimension; ++s) { // check overlapping of grid intersects = Math::intersects( my_bounding_box[s], my_bounding_box[spatial_dimension + s], proc_bounding_box[s], proc_bounding_box[spatial_dimension + s]); intersects_proc[p] &= intersects; if (intersects) { AKANTU_DEBUG_INFO("I intersects with processor " << p << " in direction " << s); // is point 1 of proc p in the dimension s in the range ? bool point1 = Math::is_in_range(proc_bounding_box[s], my_bounding_box[s], my_bounding_box[s + spatial_dimension]); // is point 2 of proc p in the dimension s in the range ? bool point2 = Math::is_in_range( proc_bounding_box[s + spatial_dimension], my_bounding_box[s], my_bounding_box[s + spatial_dimension]); Real start = 0.; Real end = 0.; if (point1 && !point2) { /* |-----------| my_bounding_box(i) * |-----------| proc_bounding_box(i) * 1 2 */ start = proc_bounding_box[s]; end = my_bounding_box[s + spatial_dimension]; AKANTU_DEBUG_INFO("Intersection scheme 1 in direction " << s << " with processor " << p << " [" << start << ", " << end << "]"); } else if (point1 && point2) { /* |-----------------| my_bounding_box(i) * |-----------| proc_bounding_box(i) * 1 2 */ start = proc_bounding_box[s]; end = proc_bounding_box[s + spatial_dimension]; AKANTU_DEBUG_INFO("Intersection scheme 2 in direction " << s << " with processor " << p << " [" << start << ", " << end << "]"); } else if (!point1 && point2) { /* |-----------| my_bounding_box(i) * |-----------| proc_bounding_box(i) * 1 2 */ start = my_bounding_box[s]; end = proc_bounding_box[s + spatial_dimension]; AKANTU_DEBUG_INFO("Intersection scheme 3 in direction " << s << " with processor " << p << " [" << start << ", " << end << "]"); } else { /* |-----------| my_bounding_box(i) * |-----------------| proc_bounding_box(i) * 1 2 */ start = my_bounding_box[s]; end = my_bounding_box[s + spatial_dimension]; AKANTU_DEBUG_INFO("Intersection scheme 4 in direction " << s << " with processor " << p << " [" << start << ", " << end << "]"); } first_cell_p[s] = grid.getCellID(start, s); last_cell_p[s] = grid.getCellID(end, s); } } // create the list of cells in the overlapping typedef typename SpatialGrid::CellID CellID; std::vector * cell_ids = new std::vector; if (intersects_proc[p]) { AKANTU_DEBUG_INFO("I intersects with processor " << p); CellID cell_id(spatial_dimension); // for (UInt i = 0; i < spatial_dimension; ++i) { // if(first_cell_p[i] != 0) --first_cell_p[i]; // if(last_cell_p[i] != 0) ++last_cell_p[i]; // } for (Int fd = first_cell_p[0]; fd <= last_cell_p[0]; ++fd) { cell_id.setID(0, fd); if (spatial_dimension == 1) { cell_ids->push_back(cell_id); } else { for (Int sd = first_cell_p[1]; sd <= last_cell_p[1]; ++sd) { cell_id.setID(1, sd); if (spatial_dimension == 2) { cell_ids->push_back(cell_id); } else { for (Int ld = first_cell_p[2]; ld <= last_cell_p[2]; ++ld) { cell_id.setID(2, ld); cell_ids->push_back(cell_id); } } } } } // get the list of elements in the cells of the overlapping typename std::vector::iterator cur_cell_id = cell_ids->begin(); typename std::vector::iterator last_cell_id = cell_ids->end(); std::set * to_send = new std::set(); for (; cur_cell_id != last_cell_id; ++cur_cell_id) { typename SpatialGrid::Cell::const_iterator cur_elem = grid.beginCell(*cur_cell_id); typename SpatialGrid::Cell::const_iterator last_elem = grid.endCell(*cur_cell_id); for (; cur_elem != last_elem; ++cur_elem) { to_send->insert(*cur_elem); } } AKANTU_DEBUG_INFO("I have prepared " << to_send->size() << " elements to send to processor " << p); auto & scheme = communicator.getCommunications().createSendScheme(p); std::stringstream sstr; sstr << "element_per_proc_" << p; element_per_proc[p] = new ElementTypeMapArray(sstr.str(), id, memory_id); ElementTypeMapArray & elempproc = *(element_per_proc[p]); typename std::set::iterator elem = to_send->begin(); typename std::set::iterator last_elem = to_send->end(); for (; elem != last_elem; ++elem) { ElementType type = elem->type; UInt nb_nodes_per_element = mesh.getNbNodesPerElement(type); // /!\ this part must be slow due to the access in the // ElementTypeMapArray if (!elempproc.exists(type, _not_ghost)) elempproc.alloc(0, nb_nodes_per_element, type, _not_ghost); Vector global_connect(nb_nodes_per_element); UInt * local_connect = mesh.getConnectivity(type).storage() + elem->element * nb_nodes_per_element; for (UInt i = 0; i < nb_nodes_per_element; ++i) { global_connect(i) = mesh.getNodeGlobalId(local_connect[i]); AKANTU_DEBUG_ASSERT( global_connect(i) < mesh.getNbGlobalNodes(), "This global node send in the connectivity does not seem correct " << global_connect(i) << " corresponding to " << local_connect[i] << " from element " << elem->element); } elempproc(type).push_back(global_connect); scheme.push_back(*elem); } delete to_send; } delete cell_ids; } delete[] first_cells; delete[] last_cells; AKANTU_DEBUG_INFO("I have finished to compute intersection," << " no it's time to communicate with my neighbors"); /** * Sending loop, sends the connectivity asynchronously to all concerned proc */ std::vector isend_requests; UInt * space = new UInt[2*nb_proc*_max_element_type]; UInt offset = 0; for (UInt p = 0; p < nb_proc; ++p) { if (p == my_rank) continue; if (intersects_proc[p]) { ElementTypeMapArray & elempproc = *(element_per_proc[p]); ElementTypeMapArray::type_iterator it_type = elempproc.firstType(_all_dimensions, _not_ghost); ElementTypeMapArray::type_iterator last_type = elempproc.lastType(_all_dimensions, _not_ghost); UInt count = 0; for (; it_type != last_type; ++it_type) { Array & conn = elempproc(*it_type, _not_ghost); Vector info(space + offset, 2); offset += 2; info[0] = (UInt)*it_type; info[1] = conn.getSize() * conn.getNbComponent(); AKANTU_DEBUG_INFO("I have " << conn.getSize() << " elements of type " << *it_type << " to send to processor " << p << " (communication tag : " << Tag::genTag(my_rank, count, DATA_TAG) << ")"); isend_requests.push_back( comm.asyncSend(info, p, Tag::genTag(my_rank, count, SIZE_TAG))); if (info[1] != 0) isend_requests.push_back( comm.asyncSend(conn, p, Tag::genTag(my_rank, count, DATA_TAG))); ++count; } Vector info(space + offset, 2); offset += 2; info[0] = (UInt)_not_defined; info[1] = 0; isend_requests.push_back( comm.asyncSend(info, p, Tag::genTag(my_rank, count, SIZE_TAG))); } } /** * Receives the connectivity and store them in the ghosts elements */ Array & global_nodes_ids = const_cast &>(mesh.getGlobalNodesIds()); Array & nodes_type = const_cast &>(const_cast(mesh).getNodesType()); std::vector isend_nodes_requests; Vector nb_nodes_to_recv(nb_proc); UInt nb_total_nodes_to_recv = 0; UInt nb_current_nodes = global_nodes_ids.getSize(); NewNodesEvent new_nodes; NewElementsEvent new_elements; Array * ask_nodes_per_proc = new Array[nb_proc]; for (UInt p = 0; p < nb_proc; ++p) { nb_nodes_to_recv(p) = 0; if (p == my_rank) continue; auto & scheme = communicator.getCommunications().createRecvScheme(p); Array & ask_nodes = ask_nodes_per_proc[p]; UInt count = 0; if (intersects_proc[p]) { ElementType type = _not_defined; do { Vector info(2); comm.receive(info, p, Tag::genTag(p, count, SIZE_TAG)); type = (ElementType)info[0]; if (type != _not_defined) { UInt nb_nodes_per_element = mesh.getNbNodesPerElement(type); ; UInt nb_element = info[1] / nb_nodes_per_element; Array tmp_conn(nb_element, nb_nodes_per_element); tmp_conn.clear(); if (info[1] != 0) comm.receive(tmp_conn, p, Tag::genTag(p, count, DATA_TAG)); AKANTU_DEBUG_INFO("I will receive " << nb_element << " elements of type " << ElementType(info[0]) << " from processor " << p << " (communication tag : " << Tag::genTag(p, count, DATA_TAG) << ")"); Array & ghost_connectivity = const_cast &>(mesh.getConnectivity(type, _ghost)); UInt nb_ghost_element = ghost_connectivity.getSize(); Element element(type, 0, _ghost); Vector conn(nb_nodes_per_element); for (UInt el = 0; el < nb_element; ++el) { UInt nb_node_to_ask_for_elem = 0; for (UInt n = 0; n < nb_nodes_per_element; ++n) { UInt gn = tmp_conn(el, n); UInt ln = global_nodes_ids.find(gn); AKANTU_DEBUG_ASSERT(gn < mesh.getNbGlobalNodes(), "This global node seems not correct " << gn << " from element " << el << " node " << n); if (ln == UInt(-1)) { global_nodes_ids.push_back(gn); nodes_type.push_back(_nt_pure_gost); // pure ghost node ln = nb_current_nodes; new_nodes.getList().push_back(ln); ++nb_current_nodes; ask_nodes.push_back(gn); ++nb_node_to_ask_for_elem; } conn[n] = ln; } // all the nodes are already known locally, the element should // already exists UInt c = UInt(-1); if (nb_node_to_ask_for_elem == 0) { c = ghost_connectivity.find(conn); element.element = c; } if (c == UInt(-1)) { element.element = nb_ghost_element; ++nb_ghost_element; ghost_connectivity.push_back(conn); new_elements.getList().push_back(element); } scheme.push_back(element); } } count++; } while (type != _not_defined); AKANTU_DEBUG_INFO("I have " << ask_nodes.getSize() << " missing nodes for elements coming from processor " << p << " (communication tag : " << Tag::genTag(my_rank, 0, ASK_NODES_TAG) << ")"); ask_nodes.push_back(UInt(-1)); isend_nodes_requests.push_back( comm.asyncSend(ask_nodes, p, Tag::genTag(my_rank, 0, ASK_NODES_TAG))); nb_nodes_to_recv(p) = ask_nodes.getSize() - 1; nb_total_nodes_to_recv += nb_nodes_to_recv(p); } } comm.waitAll(isend_requests); comm.freeCommunicationRequest(isend_requests); delete [] space; for (UInt p = 0; p < nb_proc; ++p) { if (element_per_proc[p]) delete element_per_proc[p]; } delete[] element_per_proc; /** * Sends requested nodes to proc */ Array & nodes = const_cast &>(mesh.getNodes()); UInt nb_nodes = nodes.getSize(); std::vector isend_coordinates_requests; Array * nodes_to_send_per_proc = new Array[nb_proc]; for (UInt p = 0; p < nb_proc; ++p) { if (p == my_rank || !intersects_proc[p]) continue; Array asked_nodes; CommunicationStatus status; AKANTU_DEBUG_INFO("Waiting list of nodes to send to processor " << p << "(communication tag : " << Tag::genTag(p, 0, ASK_NODES_TAG) << ")"); comm.probe(p, Tag::genTag(p, 0, ASK_NODES_TAG), status); UInt nb_nodes_to_send = status.getSize(); asked_nodes.resize(nb_nodes_to_send); AKANTU_DEBUG_INFO("I have " << nb_nodes_to_send - 1 << " nodes to send to processor " << p << " (communication tag : " << Tag::genTag(p, 0, ASK_NODES_TAG) << ")"); AKANTU_DEBUG_INFO("Getting list of nodes to send to processor " << p << " (communication tag : " << Tag::genTag(p, 0, ASK_NODES_TAG) << ")"); comm.receive(asked_nodes, p, Tag::genTag(p, 0, ASK_NODES_TAG)); nb_nodes_to_send--; asked_nodes.resize(nb_nodes_to_send); Array & nodes_to_send = nodes_to_send_per_proc[p]; nodes_to_send.extendComponentsInterlaced(spatial_dimension, 1); for (UInt n = 0; n < nb_nodes_to_send; ++n) { UInt ln = global_nodes_ids.find(asked_nodes(n)); AKANTU_DEBUG_ASSERT(ln != UInt(-1), "The node [" << asked_nodes(n) << "] requested by proc " << p << " was not found locally!"); nodes_to_send.push_back(nodes.storage() + ln * spatial_dimension); } if (nb_nodes_to_send != 0) { AKANTU_DEBUG_INFO("Sending the " << nb_nodes_to_send << " nodes to processor " << p << " (communication tag : " << Tag::genTag(p, 0, SEND_NODES_TAG) << ")"); isend_coordinates_requests.push_back(comm.asyncSend( nodes_to_send, p, Tag::genTag(my_rank, 0, SEND_NODES_TAG))); } #if not defined(AKANTU_NDEBUG) else { AKANTU_DEBUG_INFO("No nodes to send to processor " << p); } #endif } comm.waitAll(isend_nodes_requests); comm.freeCommunicationRequest(isend_nodes_requests); delete[] ask_nodes_per_proc; nodes.resize(nb_total_nodes_to_recv + nb_nodes); for (UInt p = 0; p < nb_proc; ++p) { if ((p != my_rank) && (nb_nodes_to_recv(p) > 0)) { AKANTU_DEBUG_INFO("Receiving the " << nb_nodes_to_recv(p) << " nodes from processor " << p << " (communication tag : " << Tag::genTag(p, 0, SEND_NODES_TAG) << ")"); Vector nodes_to_recv(nodes.storage() + nb_nodes * spatial_dimension, nb_nodes_to_recv(p) * spatial_dimension); comm.receive(nodes_to_recv, p, Tag::genTag(p, 0, SEND_NODES_TAG)); nb_nodes += nb_nodes_to_recv(p); } #if not defined(AKANTU_NDEBUG) else { if (p != my_rank) { AKANTU_DEBUG_INFO("No nodes to receive from processor " << p); } } #endif } comm.waitAll(isend_coordinates_requests); comm.freeCommunicationRequest(isend_coordinates_requests); delete[] nodes_to_send_per_proc; // Register the tags if any if (synchronizer_registry) { std::set::const_iterator it = tags_to_register.begin(); std::set::const_iterator end = tags_to_register.end(); for (; it != end; ++it) { synchronizer_registry->registerSynchronizer(communicator, *it); } } mesh.sendEvent(new_nodes); mesh.sendEvent(new_elements); delete[] intersects_proc; AKANTU_DEBUG_OUT(); return &communicator; } /* -------------------------------------------------------------------------- */ template GridSynchronizer * GridSynchronizer::createGridSynchronizer( Mesh & mesh, const SpatialGrid & grid, SynchronizerID id, SynchronizerRegistry * synchronizer_registry, const std::set & tags_to_register, MemoryID memory_id, const bool register_to_event_manager); template GridSynchronizer * GridSynchronizer::createGridSynchronizer( Mesh & mesh, const SpatialGrid & grid, SynchronizerID id, SynchronizerRegistry * synchronizer_registry, const std::set & tags_to_register, MemoryID memory_id, const bool register_to_event_manager); __END_AKANTU__ diff --git a/test/test_model/test_model_solver/test_dof_manager_default.cc b/test/test_model/test_model_solver/test_dof_manager_default.cc index 9006e9688..b9b678c7e 100644 --- a/test/test_model/test_model_solver/test_dof_manager_default.cc +++ b/test/test_model/test_model_solver/test_dof_manager_default.cc @@ -1,123 +1,125 @@ /** * @file test_dof_manager_default.cc * * @author Nicolas Richart * * @date Wed Feb 24 12:28:44 2016 * * @brief Test default dof manager * * @section LICENSE * * Copyright (©) 2010-2011 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "dof_manager_default.hh" +#include "solver_callback.hh" +#include "time_step_solver.hh" #include "sparse_matrix_aij.hh" using namespace akantu; /** * =\o-----o-----o-> F * | | * |---- L ----| */ class MySolverCallback : public SolverCallback { public: MySolverCallback(Real F, DOFManagerDefault & dof_manager, UInt nb_dofs = 3) : dof_manager(dof_manager), K(dynamic_cast( dof_manager.getNewMatrix("K", _symmetric))), dispacement(nb_dofs, 1, "disp"), blocked(nb_dofs, 1), forces(nb_dofs, 1), nb_dofs(nb_dofs) { dof_manager.registerDOFs("disp", dispacement, _dst_generic); dof_manager.registerBlockedDOFs("disp", blocked); dispacement.set(0.); forces.set(0.); blocked.set(false); forces(nb_dofs - 1, _x) = F; blocked(0, _x) = true; for (UInt i = 0; i < nb_dofs; ++i) K.addToProfile(i, i); for (UInt i = 0; i < nb_dofs - 1; ++i) K.addToProfile(i, i + 1); } void assembleJacobian() { for (UInt i = 1; i < nb_dofs - 1; ++i) K(i, i) = 2; for (UInt i = 0; i < nb_dofs - 1; ++i) K(i, i + 1) = -1; K(0, 0) = K(nb_dofs - 1, nb_dofs - 1) = 1; // K *= 1 / L_{el} K *= nb_dofs - 1; } void assembleResidual() { dof_manager.assembleToResidual("disp", forces); } void predictor() {} void corrector() {} DOFManagerDefault & dof_manager; SparseMatrixAIJ & K; Array dispacement; Array blocked; Array forces; UInt nb_dofs; }; int main(int argc, char * argv[]) { initialize(argc, argv); DOFManagerDefault dof_manager("test_dof_manager"); MySolverCallback callback(10., dof_manager, 11); dof_manager.getNewMatrix("J", "K"); NonLinearSolver & nls = dof_manager.getNewNonLinearSolver("my_nls", _nls_linear); TimeStepSolver & tss = dof_manager.getNewTimeStepSolver("my_tss", _tsst_static, nls); tss.setIntegrationScheme("disp", _ist_pseudo_time); tss.solveStep(callback); dof_manager.getMatrix("K").saveMatrix("K_dof_manager_default.mtx"); Array::const_scalar_iterator disp_it = callback.dispacement.begin(); Array::const_scalar_iterator force_it = callback.forces.begin(); Array::const_scalar_iterator blocked_it = callback.blocked.begin(); std::cout << std::setw(8) << "disp" << " " << std::setw(8) << "force" << " " << std::setw(8) << "blocked" << std::endl; for (; disp_it != callback.dispacement.end(); ++disp_it, ++force_it, ++blocked_it) { std::cout << std::setw(8) << *disp_it << " " << std::setw(8) << *force_it << " " << std::setw(8) << std::boolalpha << *blocked_it << std::endl; } finalize(); return EXIT_SUCCESS; } diff --git a/test/test_model/test_model_solver/test_model_solver_dynamic.cc b/test/test_model/test_model_solver/test_model_solver_dynamic.cc index c22986b0a..4587a5292 100644 --- a/test/test_model/test_model_solver/test_model_solver_dynamic.cc +++ b/test/test_model/test_model_solver/test_model_solver_dynamic.cc @@ -1,451 +1,453 @@ /** * @file test_dof_manager_default.cc * * @author Nicolas Richart * * @date Wed Feb 24 12:28:44 2016 * * @brief Test default dof manager * * @section LICENSE * * Copyright (©) 2010-2011 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "dof_manager.hh" #include "mesh.hh" #include "mesh_accessor.hh" #include "model_solver.hh" #include "sparse_matrix.hh" /* -------------------------------------------------------------------------- */ #include /* -------------------------------------------------------------------------- */ #ifndef EXPLICIT #define EXPLICIT true #endif using namespace akantu; class MyModel; static void genMesh(Mesh & mesh, UInt nb_nodes); /** * =\o-----o-----o-> F * | | * |---- L ----| */ class MyModel : public ModelSolver { public: MyModel(Real F, Mesh & mesh, bool lumped) : ModelSolver(mesh, "model_solver", 0), displacement(mesh.getNbNodes(), 1, "disp"), velocity(mesh.getNbNodes(), 1, "velo"), acceleration(mesh.getNbNodes(), 1, "accel"), blocked(mesh.getNbNodes(), 1, "blocked"), forces(mesh.getNbNodes(), 1, "force_ext"), internal_forces(mesh.getNbNodes(), 1, "force_int"), mesh(mesh), nb_dofs(mesh.getNbNodes()), E(1.), A(1.), rho(1.), lumped(lumped) { this->initDOFManager(); this->getDOFManager().registerDOFs("disp", displacement, _dst_nodal); this->getDOFManager().registerDOFsDerivative("disp", 1, velocity); this->getDOFManager().registerDOFsDerivative("disp", 2, acceleration); this->getDOFManager().registerBlockedDOFs("disp", blocked); this->getDOFManager().getNewMatrix("K", _symmetric); this->getDOFManager().getNewMatrix("M", "K"); this->getDOFManager().getNewMatrix("J", "K"); this->getDOFManager().getNewLumpedMatrix("M"); if (lumped) { this->assembleLumpedMass(); } else { this->assembleMass(); this->assembleStiffness(); } this->assembleJacobian(); displacement.set(0.); velocity.set(0.); acceleration.set(0.); forces.set(0.); blocked.set(false); forces(nb_dofs - 1, _x) = F; // displacement(nb_dofs - 1, _x) = .1; blocked(0, _x) = true; } void assembleLumpedMass() { Array & M = this->getDOFManager().getLumpedMatrix("M"); M.clear(); Array m_all_el(this->nb_dofs - 1, 2); Array::vector_iterator m_it = m_all_el.begin(2); Array::const_vector_iterator cit = this->mesh.getConnectivity(_segment_2).begin(2); Array::const_vector_iterator cend = this->mesh.getConnectivity(_segment_2).end(2); for (; cit != cend; ++cit, ++m_it) { const Vector & conn = *cit; UInt n1 = conn(0); UInt n2 = conn(1); Real p1 = this->mesh.getNodes()(n1, _x); Real p2 = this->mesh.getNodes()(n2, _x); Real L = std::abs(p2 - p1); Real M_n = rho * A * L / 2; (*m_it)(0) = (*m_it)(1) = M_n; } this->getDOFManager().assembleElementalArrayLocalArray( m_all_el, M, _segment_2, _not_ghost); } void assembleMass() { SparseMatrix & M = this->getDOFManager().getMatrix("M"); M.clear(); Array m_all_el(this->nb_dofs - 1, 4); Array::matrix_iterator m_it = m_all_el.begin(2, 2); Array::const_vector_iterator cit = this->mesh.getConnectivity(_segment_2).begin(2); Array::const_vector_iterator cend = this->mesh.getConnectivity(_segment_2).end(2); Matrix m(2, 2); m(0, 0) = m(1, 1) = 2; m(0, 1) = m(1, 0) = 1; // under integrated // m(0, 0) = m(1, 1) = 3./2.; // m(0, 1) = m(1, 0) = 3./2.; // lumping the mass matrix // m(0, 0) += m(0, 1); // m(1, 1) += m(1, 0); // m(0, 1) = m(1, 0) = 0; for (; cit != cend; ++cit, ++m_it) { const Vector & conn = *cit; UInt n1 = conn(0); UInt n2 = conn(1); Real p1 = this->mesh.getNodes()(n1, _x); Real p2 = this->mesh.getNodes()(n2, _x); Real L = std::abs(p2 - p1); Matrix & m_el = *m_it; m_el = m; m_el *= rho * A * L / 6.; } this->getDOFManager().assembleElementalMatricesToMatrix( "M", "disp", m_all_el, _segment_2); } void assembleJacobian() {} void assembleStiffness() { SparseMatrix & K = this->getDOFManager().getMatrix("K"); K.clear(); Matrix k(2, 2); k(0, 0) = k(1, 1) = 1; k(0, 1) = k(1, 0) = -1; Array k_all_el(this->nb_dofs - 1, 4); Array::matrix_iterator k_it = k_all_el.begin(2, 2); Array::const_vector_iterator cit = this->mesh.getConnectivity(_segment_2).begin(2); Array::const_vector_iterator cend = this->mesh.getConnectivity(_segment_2).end(2); for (; cit != cend; ++cit, ++k_it) { const Vector & conn = *cit; UInt n1 = conn(0); UInt n2 = conn(1); Real p1 = this->mesh.getNodes()(n1, _x); Real p2 = this->mesh.getNodes()(n2, _x); Real L = std::abs(p2 - p1); Matrix & k_el = *k_it; k_el = k; k_el *= E * A / L; } this->getDOFManager().assembleElementalMatricesToMatrix( "K", "disp", k_all_el, _segment_2); } void assembleResidual() { this->getDOFManager().assembleToResidual("disp", forces); Array forces_internal_el(this->nb_dofs - 1, 2); Array::vector_iterator f_it = forces_internal_el.begin(2); Array::const_vector_iterator cit = this->mesh.getConnectivity(_segment_2).begin(2); Array::const_vector_iterator cend = this->mesh.getConnectivity(_segment_2).end(2); for (; cit != cend; ++cit, ++f_it) { const Vector & conn = *cit; UInt n1 = conn(0); UInt n2 = conn(1); Real p1 = this->mesh.getNodes()(n1, _x); Real p2 = this->mesh.getNodes()(n2, _x); Real L = std::abs(p2 - p1); Real u1 = this->displacement(n1, _x); Real u2 = this->displacement(n2, _x); Real f_n = E * A / L * (u2 - u1); Vector & f = *f_it; f(0) = -f_n; f(1) = f_n; } internal_forces.clear(); this->getDOFManager().assembleElementalArrayLocalArray( forces_internal_el, internal_forces, _segment_2, _not_ghost); this->getDOFManager().assembleToResidual("disp", internal_forces, -1.); } Real getPotentialEnergy() { Real res = 0; if (!lumped) { res = this->mulVectMatVect(this->displacement, this->getDOFManager().getMatrix("K"), this->displacement); } else { Array::const_vector_iterator cit = this->mesh.getConnectivity(_segment_2).begin(2); Array::const_vector_iterator cend = this->mesh.getConnectivity(_segment_2).end(2); for (; cit != cend; ++cit) { const Vector & conn = *cit; UInt n1 = conn(0); UInt n2 = conn(1); Real p1 = this->mesh.getNodes()(n1, _x); Real p2 = this->mesh.getNodes()(n2, _x); Real L = std::abs(p2 - p1); Real u1 = this->displacement(n1, _x); Real u2 = this->displacement(n2, _x); Real strain = (u2 - u1) / L; res += strain * E * strain * A * L; } } return res / 2.; } Real getKineticEnergy() { Real res = 0; if (!lumped) { res = this->mulVectMatVect( this->velocity, this->getDOFManager().getMatrix("M"), this->velocity); } else { Array & m = this->getDOFManager().getLumpedMatrix("M"); Array::const_scalar_iterator it = velocity.begin(); Array::const_scalar_iterator end = velocity.end(); Array::const_scalar_iterator m_it = m.begin(); for (; it != end; ++it, ++m_it) { res += *m_it * *it * *it; } } return res / 2.; } Real mulVectMatVect(const Array & x, const SparseMatrix & A, const Array & y) { - Array Ay(this->nb_dofs); + Array Ay(this->nb_dofs, 1, 0.); A.matVecMul(y, Ay); Real res = 0.; Array::const_scalar_iterator it = Ay.begin(); Array::const_scalar_iterator end = Ay.end(); Array::const_scalar_iterator x_it = x.begin(); for (; it != end; ++it, ++x_it) { res += *x_it * *it; } return res; } void predictor() {} void corrector() {} Array displacement; Array velocity; Array acceleration; Array blocked; Array forces; Array internal_forces; private: Mesh & mesh; UInt nb_dofs; Real E, A, rho; bool lumped; }; /* -------------------------------------------------------------------------- */ int main(int argc, char * argv[]) { initialize(argc, argv); UInt nb_nodes = 201; UInt max_steps = 2000; Real time_step = 0.001; Mesh mesh(1); Real F = -9.81; bool _explicit = EXPLICIT; genMesh(mesh, nb_nodes); + mesh.distribute(); + MyModel model(F, mesh, _explicit); if (!_explicit) { model.getNewSolver("dynamic", _tsst_dynamic, _nls_newton_raphson); model.setIntegrationScheme("dynamic", "disp", _ist_trapezoidal_rule_2, IntegrationScheme::_displacement); } else { model.getNewSolver("dynamic", _tsst_dynamic_lumped, _nls_lumped); model.setIntegrationScheme("dynamic", "disp", _ist_central_difference, IntegrationScheme::_acceleration); } model.setTimeStep(time_step); const Array & disp = model.displacement; const Array & velo = model.velocity; const Array & reac = model.internal_forces; // #if EXPLICIT == true // std::ofstream output("output_dynamic_explicit.csv"); // #else // std::ofstream output("output_dynamic_implicit.csv"); // #endif std::cout << std::setw(8) << "time" << "," << std::setw(8) << "disp" << "," << std::setw(8) << "velo" << "," << std::setw(8) << "reac" << "," << std::setw(8) << "wext" << "," << std::setw(8) << "epot" << "," << std::setw(8) << "ekin" << "," << std::setw(8) << "total" << std::endl; Real wext = 0; model.assembleResidual(); Real epot = model.getPotentialEnergy(); Real ekin = model.getKineticEnergy(); Real einit = ekin + epot; std::cout << std::setw(8) << 0. << "," << std::setw(8) << disp(nb_nodes - 1, _x) << "," << std::setw(8) << velo(nb_nodes - 1, _x) << "," << std::setw(8) << (-reac(0, _x)) << "," << std::setw(8) << wext << "," << std::setw(8) << epot << "," << std::setw(8) << ekin << "," << std::setw(8) << (ekin + epot - wext - einit) << std::endl; #if EXPLICIT == false // NonLinearSolver & solver = // model.getDOFManager().getNonLinearSolver("dynamic"); #endif for (UInt i = 1; i < max_steps + 1; ++i) { model.solveStep(); // #if EXPLICIT == false // UInt nb_iter = solver.get("nb_iterations"); // Real error = solver.get("error"); // bool converged = solver.get("converged"); // std::cout << error << " " << nb_iter << " -> " << converged << std::endl; // #endif wext += F * velo(nb_nodes - 1, 0) * time_step; epot = model.getPotentialEnergy(); ekin = model.getKineticEnergy(); Real etot = ekin + epot - wext - einit; std::cout << std::setw(8) << time_step * i << "," << std::setw(8) << disp(nb_nodes - 1, _x) << "," << std::setw(8) << velo(nb_nodes - 1, _x) << "," << std::setw(8) << (-reac(0, _x)) << "," << std::setw(8) << wext << "," << std::setw(8) << epot << "," << std::setw(8) << ekin << "," << std::setw(8) << (etot) << std::endl; // if (std::abs(etot) > 1e-7) { // AKANTU_DEBUG_ERROR("The total energy of the system is not conserved!"); // } } // output.close(); finalize(); return EXIT_SUCCESS; } /* -------------------------------------------------------------------------- */ void genMesh(Mesh & mesh, UInt nb_nodes) { MeshAccessor mesh_accessor(mesh); Array & nodes = mesh_accessor.getNodes(); Array & conn = mesh_accessor.getConnectivity(_segment_2); nodes.resize(nb_nodes); for (UInt n = 0; n < nb_nodes; ++n) { nodes(n, _x) = n * (1. / (nb_nodes - 1)); } conn.resize(nb_nodes - 1); for (UInt n = 0; n < nb_nodes - 1; ++n) { conn(n, 0) = n; conn(n, 1) = n + 1; } } diff --git a/test/test_model/test_model_solver/test_model_solver_dynamic_explicit.verified b/test/test_model/test_model_solver/test_model_solver_dynamic_explicit.verified index 414d83773..79604763a 100644 --- a/test/test_model/test_model_solver/test_model_solver_dynamic_explicit.verified +++ b/test/test_model/test_model_solver/test_model_solver_dynamic_explicit.verified @@ -1,2001 +1,2002 @@ - time, disp, velo, reac, wext, epot, ekin - 0.001, 0, 1.962, -0, 0.0192472, 0, 0.0048118 - 0.002, 0.003924, 5.72904, -0, 0.0754491, 0.00153978, 0.0410428 - 0.003, 0.0114581, 9.04404, -0, 0.164171, 0.012774, 0.102604 - 0.004, 0.0220121, 11.6659, -0, 0.278614, 0.0452231, 0.172681 - 0.005, 0.0347899, 13.4355, -0, 0.410416, 0.106783, 0.235979 - 0.006, 0.0488831, 14.2928, -0, 0.550628, 0.196298, 0.284868 - 0.007, 0.0633755, 14.2811, -0, 0.690726, 0.302603, 0.321327 - 0.008, 0.0774452, 13.5374, -0, 0.823528, 0.408548, 0.354051 - 0.009, 0.0904504, 12.272, -0, 0.943916, 0.497889, 0.392622 - 0.01, 0.101989, 10.7378, -0, 1.04925, 0.561539, 0.442033 - 0.011, 0.111926, 9.19645, -0, 1.13947, 0.600169, 0.500411 - 0.012, 0.120382, 7.88413, -0, 1.21681, 0.622205, 0.560823 - 0.013, 0.127694, 6.98202, -0, 1.28531, 0.638742, 0.615775 - 0.014, 0.134346, 6.59599, -0, 1.35001, 0.658295, 0.661618 - 0.015, 0.140886, 6.74725, -0, 1.4162, 0.684108, 0.700376 - 0.016, 0.147841, 7.37528, -0, 1.48856, 0.715003, 0.738129 - 0.017, 0.155637, 8.35188, -0, 1.57049, 0.748646, 0.781148 - 0.018, 0.164544, 9.50425, -0, 1.66372, 0.784851, 0.832177 - 0.019, 0.174645, 10.6431, -0, 1.76813, 0.826726, 0.889014 - 0.02, 0.185831, 11.5916, -0, 1.88185, 0.878992, 0.94611 - 0.021, 0.197828, 12.2118, -0, 2.00164, 0.944612, 0.998052 - 0.022, 0.210254, 12.4226, -0, 2.12351, 1.02193, 1.04279 - 0.023, 0.222674, 12.2103, -0, 2.24329, 1.10422, 1.08269 - 0.024, 0.234675, 11.6269, -0, 2.35735, 1.18204, 1.12292 - 0.025, 0.245927, 10.7795, -0, 2.4631, 1.24722, 1.16823 - 0.026, 0.256234, 9.81192, -0, 2.55935, 1.29628, 1.2201 - 0.027, 0.265551, 8.88061, -0, 2.64647, 1.33144, 1.27601 - 0.028, 0.273995, 8.13048, -0, 2.72623, 1.3589, 1.33111 - 0.029, 0.281812, 7.67281, -0, 2.8015, 1.38543, 1.38119 - 0.03, 0.28934, 7.5693, -0, 2.87576, 1.4154, 1.42525 - 0.031, 0.296951, 7.82422, -0, 2.95251, 1.44968, 1.46595 - 0.032, 0.304989, 8.38568, -0, 3.03478, 1.48685, 1.50789 - 0.033, 0.313722, 9.15552, -0, 3.12459, 1.52568, 1.55476 - 0.034, 0.3233, 10.006, -0, 3.22275, 1.56703, 1.60718 - 0.035, 0.333734, 10.8007, -0, 3.32871, 1.6139, 1.66238 - 0.036, 0.344901, 11.4158, -0, 3.4407, 1.66964, 1.71597 - 0.037, 0.356566, 11.7594, -0, 3.55606, 1.73533, 1.76469 - 0.038, 0.36842, 11.7846, -0, 3.67166, 1.80821, 1.8083 - 0.039, 0.380135, 11.4961, -0, 3.78444, 1.88203, 1.84968 - 0.04, 0.391412, 10.9474, -0, 3.89183, 1.94957, 1.89297 - 0.041, 0.40203, 10.232, -0, 3.99221, 2.00563, 1.94106 - 0.042, 0.411876, 9.46688, -0, 4.08508, 2.04923, 1.99385 - 0.043, 0.420964, 8.77433, -0, 4.17116, 2.08358, 2.04838 - 0.044, 0.429425, 8.26213, -0, 4.25221, 2.11408, 2.10072 - 0.045, 0.437488, 8.00715, -0, 4.33076, 2.14557, 2.14835 - 0.046, 0.445439, 8.04396, -0, 4.40967, 2.18045, 2.19167 - 0.047, 0.453576, 8.3603, -0, 4.49168, 2.2185, 2.2337 - 0.048, 0.46216, 8.9001, -0, 4.57899, 2.25839, 2.27816 - 0.049, 0.471376, 9.57318, -0, 4.67291, 2.29969, 2.32723 - 0.05, 0.481306, 10.2702, -0, 4.77366, 2.34389, 2.38024 - 0.051, 0.491916, 10.8803, -0, 4.88039, 2.39385, 2.43412 - 0.052, 0.503067, 11.3084, -0, 4.99133, 2.45187, 2.48536 - 0.053, 0.514533, 11.4904, -0, 5.10405, 2.51768, 2.5321 - 0.054, 0.526047, 11.402, -0, 5.2159, 2.58767, 2.57527 - 0.055, 0.537337, 11.0624, -0, 5.32442, 2.65598, 2.61795 - 0.056, 0.548172, 10.5299, -0, 5.42772, 2.71686, 2.66346 - 0.057, 0.558397, 9.89248, -0, 5.52477, 2.76721, 2.71334 - 0.058, 0.567957, 9.25311, -0, 5.61554, 2.80769, 2.76644 - 0.059, 0.576903, 8.71322, -0, 5.70102, 2.84201, 2.81966 - 0.06, 0.585384, 8.35677, -0, 5.783, 2.87488, 2.8699 - 0.061, 0.593617, 8.23723, -0, 5.8638, 2.90973, 2.91591 - 0.062, 0.601858, 8.36965, -0, 5.94591, 2.94765, 2.95905 - 0.063, 0.610356, 8.72892, -0, 6.03154, 2.98787, 3.00239 - 0.064, 0.619316, 9.25438, -0, 6.12233, 3.02937, 3.04885 - 0.065, 0.628865, 9.85999, -0, 6.21905, 3.0724, 3.09939 - 0.066, 0.639036, 10.4484, -0, 6.32155, 3.11889, 3.15247 - 0.067, 0.649762, 10.9263, -0, 6.42874, 3.17138, 3.20502 - 0.068, 0.660888, 11.2197, -0, 6.5388, 3.23115, 3.25435 - 0.069, 0.672201, 11.2845, -0, 6.6495, 3.29683, 3.29977 - 0.07, 0.683457, 11.1139, -0, 6.75853, 3.36425, 3.34298 - 0.071, 0.694429, 10.7383, -0, 6.86387, 3.42802, 3.387 - 0.072, 0.704934, 10.2203, -0, 6.96413, 3.48378, 3.43434 - 0.073, 0.714869, 9.64421, -0, 7.05874, 3.53004, 3.48541 - 0.074, 0.724222, 9.10238, -0, 7.14804, 3.56864, 3.53836 - 0.075, 0.733074, 8.68045, -0, 7.23319, 3.60346, 3.59022 - 0.076, 0.741583, 8.44385, -0, 7.31603, 3.63843, 3.63872 - 0.077, 0.749962, 8.42775, -0, 7.3987, 3.67581, 3.68367 - 0.078, 0.758439, 8.63182, -0, 7.48338, 3.71579, 3.72704 - 0.079, 0.767225, 9.02077, -0, 7.57188, 3.7574, 3.77177 - 0.08, 0.77648, 9.53041, -0, 7.66537, 3.80006, 3.81989 - 0.081, 0.786286, 10.0782, -0, 7.76424, 3.84463, 3.87137 - 0.082, 0.796637, 10.5765, -0, 7.86799, 3.89324, 3.92411 - 0.083, 0.807439, 10.9468, -0, 7.97538, 3.94793, 3.97527 - 0.084, 0.81853, 11.1317, -0, 8.08458, 4.00901, 4.02302 - 0.085, 0.829703, 11.1039, -0, 8.19351, 4.07416, 4.06761 - 0.086, 0.840738, 10.8705, -0, 8.30015, 4.13897, 4.11125 - 0.087, 0.851444, 10.471, -0, 8.40287, 4.19867, 4.15668 - 0.088, 0.86168, 9.97079, -0, 8.50069, 4.25022, 4.20552 - 0.089, 0.871385, 9.45068, -0, 8.5934, 4.2935, 4.25729 - 0.09, 0.880581, 8.99361, -0, 8.68162, 4.33109, 4.30973 - 0.091, 0.889372, 8.67161, -0, 8.76669, 4.36678, 4.36019 - 0.092, 0.897925, 8.53443, -0, 8.85042, 4.40366, 4.40725 - 0.093, 0.906441, 8.60187, -0, 8.9348, 4.44301, 4.45161 - 0.094, 0.915128, 8.86099, -0, 9.02173, 4.48443, 4.49558 - 0.095, 0.924163, 9.2685, -0, 9.11265, 4.52701, 4.54171 - 0.096, 0.933665, 9.75797, -0, 9.20838, 4.57069, 4.59119 - 0.097, 0.943679, 10.2506, -0, 9.30893, 4.61681, 4.64315 - 0.098, 0.954167, 10.668, -0, 9.41359, 4.66746, 4.69522 - 0.099, 0.965015, 10.9445, -0, 9.52095, 4.72405, 4.74498 - 0.1, 0.976056, 11.0375, -0, 9.62923, 4.78596, 4.79145 - 0.101, 0.98709, 10.934, -0, 9.73649, 4.85015, 4.83567 - 0.102, 0.997924, 10.6524, -0, 9.84099, 4.9122, 4.88005 - 0.103, 1.0084, 10.2395, -0, 9.94144, 4.96816, 4.92687 - 0.104, 1.0184, 9.76205, -0, 10.0372, 5.01622, 4.9769 - 0.105, 1.02792, 9.29686, -0, 10.1284, 5.05737, 5.02894 - 0.106, 1.037, 8.91787, -0, 10.2159, 5.09464, 5.08057 - 0.107, 1.04575, 8.68459, -0, 10.3011, 5.13145, 5.12965 - 0.108, 1.05437, 8.63281, -0, 10.3858, 5.17004, 5.17562 - 0.109, 1.06302, 8.76909, -0, 10.4718, 5.21092, 5.21981 - 0.11, 1.0719, 9.07, -0, 10.5608, 5.25336, 5.26465 - 0.111, 1.08116, 9.48609, -0, 10.6538, 5.29671, 5.31214 - 0.112, 1.09088, 9.95006, -0, 10.7514, 5.34142, 5.36263 - 0.113, 1.10106, 10.3876, -0, 10.8534, 5.38915, 5.41465 - 0.114, 1.11165, 10.7292, -0, 10.9586, 5.44177, 5.4658 - 0.115, 1.12252, 10.9213, -0, 11.0657, 5.49994, 5.51423 - 0.116, 1.13349, 10.9346, -0, 11.173, 5.56217, 5.55977 - 0.117, 1.14439, 10.7686, -0, 11.2786, 5.62495, 5.60403 - 0.118, 1.15503, 10.4512, -0, 11.3812, 5.68412, 5.64937 - 0.119, 1.16529, 10.0342, -0, 11.4796, 5.73665, 5.69749 - 0.12, 1.1751, 9.58509, -0, 11.5736, 5.78188, 5.74837 - 0.121, 1.18446, 9.17553, -0, 11.6637, 5.82165, 5.80028 - 0.122, 1.19345, 8.87048, -0, 11.7507, 5.85911, 5.85091 - 0.123, 1.2022, 8.71771, -0, 11.8362, 5.89716, 5.89872 - 0.124, 1.21089, 8.74031, -0, 11.9219, 5.93726, 5.94393 - 0.125, 1.21968, 8.93325, -0, 12.0096, 5.9793, 5.98833 - 0.126, 1.22875, 9.26443, -0, 12.1005, 6.02249, 6.03422 - 0.127, 1.23821, 9.67996, -0, 12.1954, 6.06654, 6.08293 - 0.128, 1.24811, 10.113, -0, 12.2946, 6.11238, 6.13409 - 0.129, 1.25844, 10.4943, -0, 12.3976, 6.1618, 6.18581 - 0.13, 1.2691, 10.7635, -0, 12.5032, 6.21625, 6.23589 - 0.131, 1.27996, 10.8787, -0, 12.6099, 6.27562, 6.28313 - 0.132, 1.29086, 10.8226, -0, 12.7161, 6.33765, 6.3281 - 0.133, 1.30161, 10.6054, -0, 12.8201, 6.39862, 6.37274 - 0.134, 1.31207, 10.2631, -0, 12.9208, 6.45486, 6.41918 - 0.135, 1.32214, 9.85101, -0, 13.0174, 6.50431, 6.46844 - 0.136, 1.33177, 9.43548, -0, 13.11, 6.54734, 6.51979 - 0.137, 1.34101, 9.08272, -0, 13.1991, 6.58635, 6.57125 - 0.138, 1.34994, 8.84852, -0, 13.2859, 6.62438, 6.62076 - 0.139, 1.3587, 8.76934, -0, 13.3719, 6.66372, 6.66749 - 0.14, 1.36747, 8.85669, -0, 13.4588, 6.70509, 6.71231 - 0.141, 1.37642, 9.09546, -0, 13.548, 6.748, 6.75725 - 0.142, 1.38567, 9.44648, -0, 13.6407, 6.79177, 6.80425 - 0.143, 1.39531, 9.85302, -0, 13.7373, 6.83657, 6.85399 - 0.144, 1.40537, 10.2498, -0, 13.8379, 6.88368, 6.90545 - 0.145, 1.41581, 10.5738, -0, 13.9416, 6.93482, 6.95658 - 0.146, 1.42652, 10.7736, -0, 14.0473, 6.99091, 7.00552 - 0.147, 1.43736, 10.8184, -0, 14.1534, 7.05102, 7.0518 - 0.148, 1.44816, 10.7021, -0, 14.2584, 7.11235, 7.09656 - 0.149, 1.45876, 10.4442, -0, 14.3609, 7.17119, 7.14186 - 0.15, 1.46904, 10.0869, -0, 14.4598, 7.22453, 7.18943 - 0.151, 1.47893, 9.68785, -0, 14.5549, 7.27131, 7.23958 - 0.152, 1.48842, 9.31089, -0, 14.6462, 7.31275, 7.29106 - 0.153, 1.49756, 9.01602, -0, 14.7347, 7.35153, 7.3418 - 0.154, 1.50645, 8.84973, -0, 14.8215, 7.39039, 7.39019 - 0.155, 1.51526, 8.83771, -0, 14.9082, 7.43095, 7.43609 - 0.156, 1.52413, 8.98087, -0, 14.9963, 7.47335, 7.48087 - 0.157, 1.53322, 9.25538, -0, 15.0871, 7.51691, 7.52658 - 0.158, 1.54264, 9.61663, -0, 15.1814, 7.56121, 7.57469 - 0.159, 1.55245, 10.0064, -0, 15.2796, 7.60687, 7.62519 - 0.16, 1.56265, 10.3625, -0, 15.3812, 7.65538, 7.67661 - 0.161, 1.57318, 10.6281, -0, 15.4855, 7.70823, 7.72692 - 0.162, 1.58391, 10.7616, -0, 15.5911, 7.76566, 7.77478 - 0.163, 1.5947, 10.7424, -0, 15.6964, 7.82604, 7.82036 - 0.164, 1.60539, 10.5746, -0, 15.8002, 7.8862, 7.86524 - 0.165, 1.61585, 10.2858, -0, 15.9011, 7.94269, 7.9114 - 0.166, 1.62596, 9.92288, -0, 15.9984, 7.99328, 7.96004 - 0.167, 1.63569, 9.5441, -0, 16.0921, 8.03784, 8.01081 - 0.168, 1.64505, 9.21001, -0, 16.1824, 8.07824, 8.06208 - 0.169, 1.65411, 8.97364, -0, 16.2704, 8.11722, 8.11193 - 0.17, 1.663, 8.87213, -0, 16.3575, 8.15706, 8.15928 - 0.171, 1.67186, 8.92085, -0, 16.445, 8.19872, 8.20464 - 0.172, 1.68084, 9.11118, -0, 16.5344, 8.24192, 8.2497 - 0.173, 1.69008, 9.4119, -0, 16.6267, 8.28598, 8.29634 - 0.174, 1.69967, 9.77442, -0, 16.7226, 8.33085, 8.34545 - 0.175, 1.70963, 10.1405, -0, 16.8221, 8.37751, 8.39641 - 0.176, 1.71995, 10.4518, -0, 16.9246, 8.42754, 8.44748 - 0.177, 1.73053, 10.6589, -0, 17.0292, 8.48199, 8.49683 - 0.178, 1.74126, 10.7293, -0, 17.1344, 8.54041, 8.54373 - 0.179, 1.75199, 10.6527, -0, 17.2389, 8.60056, 8.58894 - 0.18, 1.76257, 10.442, -0, 17.3414, 8.65915, 8.63424 - 0.181, 1.77288, 10.1316, -0, 17.4408, 8.71317, 8.68137 - 0.182, 1.78283, 9.77159, -0, 17.5366, 8.76124, 8.73091 - 0.183, 1.79242, 9.4197, -0, 17.629, 8.80407, 8.78199 - 0.184, 1.80167, 9.13202, -0, 17.7186, 8.84395, 8.83278 - 0.185, 1.81068, 8.9541, -0, 17.8064, 8.88345, 8.88164 - 0.186, 1.81958, 8.91374, -0, 17.8939, 8.92431, 8.92814 - 0.187, 1.82851, 9.01665, -0, 17.9823, 8.96691, 8.97326 - 0.188, 1.83761, 9.24562, -0, 18.073, 9.01071, 9.01887 - 0.189, 1.847, 9.56345, -0, 18.1669, 9.05521, 9.06649 - 0.19, 1.85674, 9.91895, -0, 18.2642, 9.10074, 9.11642 - 0.191, 1.86684, 10.2552, -0, 18.3648, 9.14858, 9.16753 - 0.192, 1.87725, 10.5186, -0, 18.468, 9.20015, 9.21799 - 0.193, 1.88788, 10.6676, -0, 18.5726, 9.25601, 9.26636 - 0.194, 1.89859, 10.6789, -0, 18.6774, 9.31501, 9.3125 - 0.195, 1.90923, 10.5514, -0, 18.7809, 9.37447, 9.35764 - 0.196, 1.91969, 10.3063, -0, 18.882, 9.43115, 9.4036 - 0.197, 1.92985, 9.9832, -0, 18.9799, 9.4827, 9.4517 - 0.198, 1.93966, 9.63409, -0, 19.0744, 9.52858, 9.50195 - 0.199, 1.94912, 9.31483, -0, 19.1658, 9.57019, 9.55302 - 0.2, 1.95828, 9.07621, -0, 19.2548, 9.60997, 9.60311 - 0.201, 1.96727, 8.95592, 5.06637e-279, 19.3427, 9.65021, 9.651 - 0.202, 1.9762, 8.97255, 1.95055e-276, 19.4307, 9.69205, 9.69686 - 0.203, 1.98521, 9.12279, 3.7634e-274, 19.5202, 9.73541, 9.74207 - 0.204, 1.99444, 9.38199, 4.85178e-272, 19.6122, 9.77967, 9.78842 - 0.205, 2.00398, 9.70824, 4.70186e-270, 19.7075, 9.82461, 9.83699 - 0.206, 2.01386, 10.0491, 3.65352e-268, 19.8061, 9.87095, 9.88749 - 0.207, 2.02408, 10.3502, 2.37112e-266, 19.9076, 9.92009, 9.93845 - 0.208, 2.03456, 10.5636, 1.32199e-264, 20.0112, 9.9732, 9.98813 - 0.209, 2.0452, 10.6557, 6.46375e-263, 20.1158, 10.0302, 10.0356 - 0.21, 2.05587, 10.6123, 2.81554e-261, 20.2199, 10.0893, 10.0812 - 0.211, 2.06643, 10.441, 1.10625e-259, 20.3223, 10.1476, 10.1266 - 0.212, 2.07675, 10.1698, 3.96023e-258, 20.4221, 10.2022, 10.1733 - 0.213, 2.08677, 9.84248, 1.30246e-256, 20.5186, 10.2514, 10.2223 - 0.214, 2.09644, 9.51149, 3.96284e-255, 20.6119, 10.2955, 10.273 - 0.215, 2.10579, 9.22969, 1.12209e-253, 20.7025, 10.3363, 10.3238 - 0.216, 2.1149, 9.04186, 2.97194e-252, 20.7912, 10.3764, 10.3731 - 0.217, 2.12387, 8.97753, 7.3957e-251, 20.8792, 10.4175, 10.4201 - 0.218, 2.13285, 9.0464, 1.73597e-249, 20.968, 10.4602, 10.4656 - 0.219, 2.14197, 9.23687, 3.85685e-248, 21.0586, 10.5041, 10.5111 - 0.22, 2.15133, 9.51797, 8.13559e-247, 21.152, 10.5488, 10.5583 - 0.221, 2.161, 9.84442, 1.63386e-245, 21.2485, 10.5942, 10.6077 - 0.222, 2.17101, 10.1639, 3.13178e-244, 21.3482, 10.6415, 10.6585 - 0.223, 2.18133, 10.4254, 5.74257e-243, 21.4505, 10.6921, 10.7091 - 0.224, 2.19187, 10.5875, 1.00938e-241, 21.5544, 10.7466, 10.7579 - 0.225, 2.2025, 10.6248, 1.70393e-240, 21.6586, 10.8044, 10.8045 - 0.226, 2.21311, 10.5318, 2.76728e-239, 21.7619, 10.8632, 10.8499 - 0.227, 2.22357, 10.3239, 4.33065e-238, 21.8632, 10.92, 10.8958 - 0.228, 2.23376, 10.0349, 6.54018e-237, 21.9617, 10.9724, 10.9434 - 0.229, 2.24364, 9.71129, 9.54459e-236, 22.0569, 11.0194, 10.9932 - 0.23, 2.25319, 9.40483, 1.34774e-234, 22.1492, 11.0621, 11.044 - 0.231, 2.26245, 9.1644, 1.84355e-233, 22.2391, 11.1026, 11.0943 - 0.232, 2.27151, 9.02809, 2.44558e-232, 22.3276, 11.1432, 11.1427 - 0.233, 2.2805, 9.01723, 3.14945e-231, 22.4161, 11.1852, 11.189 - 0.234, 2.28955, 9.13299, 3.94127e-230, 22.5057, 11.2286, 11.2344 - 0.235, 2.29877, 9.35636, 4.79717e-229, 22.5975, 11.273, 11.2805 - 0.236, 2.30826, 9.65122, 5.68399e-228, 22.6922, 11.318, 11.3286 - 0.237, 2.31807, 9.97018, 6.56136e-227, 22.79, 11.3641, 11.3787 - 0.238, 2.3282, 10.2622, 7.3848e-226, 22.8906, 11.4126, 11.4295 - 0.239, 2.3386, 10.4808, 8.10968e-225, 22.9935, 11.4646, 11.4794 - 0.24, 2.34916, 10.5914, 8.69535e-224, 23.0974, 11.5203, 11.5273 - 0.241, 2.35978, 10.5767, 9.10904e-223, 23.2011, 11.5785, 11.5734 - 0.242, 2.37032, 10.4397, 9.32887e-222, 23.3035, 11.6365, 11.6188 - 0.243, 2.38066, 10.2027, 9.34571e-221, 23.4036, 11.6915, 11.6653 - 0.244, 2.39072, 9.9039, 9.16362e-220, 23.5008, 11.7417, 11.7138 - 0.245, 2.40047, 9.59137, 8.79885e-219, 23.5949, 11.7869, 11.7641 - 0.246, 2.4099, 9.31504, 8.27772e-218, 23.6863, 11.8287, 11.8149 - 0.247, 2.4191, 9.11887, 7.63368e-217, 23.7757, 11.8692, 11.8644 - 0.248, 2.42814, 9.03386, 6.90396e-216, 23.8643, 11.9105, 11.9119 - 0.249, 2.43716, 9.07314, 6.12631e-215, 23.9533, 11.9532, 11.9578 - 0.25, 2.44629, 9.22993, 5.33607e-214, 24.0439, 11.9973, 12.0034 - 0.251, 2.45562, 9.47873, 4.564e-213, 24.1369, 12.042, 12.0502 - 0.252, 2.46525, 9.77945, 3.83479e-212, 24.2328, 12.0875, 12.0992 - 0.253, 2.47518, 10.0838, 3.16647e-211, 24.3317, 12.1344, 12.1496 - 0.254, 2.48541, 10.3433, 2.57042e-210, 24.4332, 12.1841, 12.2002 - 0.255, 2.49587, 10.5166, 2.05202e-209, 24.5364, 12.2374, 12.2494 - 0.256, 2.50645, 10.5763, 1.61159e-208, 24.6401, 12.2941, 12.2965 - 0.257, 2.51702, 10.5135, 1.24556e-207, 24.7433, 12.3523, 12.3422 - 0.258, 2.52747, 10.3385, 9.47647e-207, 24.8447, 12.4091, 12.3879 - 0.259, 2.5377, 10.0798, 7.0996e-206, 24.9436, 12.4622, 12.4352 - 0.26, 2.54763, 9.77901, 5.23905e-205, 25.0395, 12.5103, 12.4845 - 0.261, 2.55726, 9.48433, 3.80912e-204, 25.1325, 12.554, 12.5351 - 0.262, 2.5666, 9.24279, 2.72942e-203, 25.2232, 12.5952, 12.5855 - 0.263, 2.57574, 9.09276, 1.92798e-202, 25.3124, 12.6361, 12.6342 - 0.264, 2.58479, 9.05785, 1.34287e-201, 25.4013, 12.6781, 12.681 - 0.265, 2.59386, 9.1432, 9.22512e-201, 25.491, 12.7216, 12.7266 - 0.266, 2.60307, 9.33473, 6.252e-200, 25.5825, 12.7661, 12.7726 - 0.267, 2.61253, 9.60144, 4.18096e-199, 25.6767, 12.8112, 12.8203 - 0.268, 2.62228, 9.90046, 2.75957e-198, 25.7738, 12.8571, 12.8699 - 0.269, 2.63233, 10.1839, 1.79808e-197, 25.8737, 12.905, 12.9206 - 0.27, 2.64265, 10.4066, 1.15684e-196, 25.9758, 12.956, 12.9707 - 0.271, 2.65314, 10.5332, 7.35056e-196, 26.0792, 13.0106, 13.019 - 0.272, 2.66371, 10.5438, 4.61358e-195, 26.1826, 13.0679, 13.0655 - 0.273, 2.67423, 10.4371, 2.86096e-194, 26.285, 13.1256, 13.1111 - 0.274, 2.68459, 10.2307, 1.75316e-193, 26.3854, 13.181, 13.1573 - 0.275, 2.69469, 9.95787, 1.06181e-192, 26.483, 13.2321, 13.2054 - 0.276, 2.7045, 9.66238, 6.35719e-192, 26.5778, 13.2783, 13.2553 - 0.277, 2.71402, 9.39155, 3.76316e-191, 26.67, 13.3209, 13.306 - 0.278, 2.72328, 9.18853, 2.20284e-190, 26.7601, 13.362, 13.3558 - 0.279, 2.73239, 9.0855, 1.27534e-189, 26.8492, 13.4034, 13.4037 - 0.28, 2.74146, 9.09856, 7.30383e-189, 26.9385, 13.4462, 13.4499 - 0.281, 2.75059, 9.22522, 4.13835e-188, 27.029, 13.4902, 13.4956 - 0.282, 2.75991, 9.44483, 2.32017e-187, 27.1216, 13.5351, 13.5422 - 0.283, 2.76948, 9.72199, 1.28734e-186, 27.217, 13.5805, 13.5907 - 0.284, 2.77935, 10.0122, 7.06982e-186, 27.3152, 13.6271, 13.6408 - 0.285, 2.7895, 10.2691, 3.84352e-185, 27.416, 13.6761, 13.6913 - 0.286, 2.79989, 10.4518, 2.06878e-184, 27.5185, 13.7284, 13.7408 - 0.287, 2.81041, 10.5313, 1.10261e-183, 27.6218, 13.7841, 13.7884 - 0.288, 2.82095, 10.4954, 5.81979e-183, 27.7248, 13.8416, 13.8344 - 0.289, 2.8314, 10.35, 3.04248e-182, 27.8263, 13.8984, 13.8801 - 0.29, 2.84165, 10.1189, 1.57557e-181, 27.9256, 13.9521, 13.9271 - 0.291, 2.85164, 9.8393, 8.08331e-181, 28.0221, 14.0012, 13.9759 - 0.292, 2.86133, 9.55594, 4.10899e-180, 28.1158, 14.0459, 14.0262 - 0.293, 2.87075, 9.31414, 2.06978e-179, 28.2072, 14.0878, 14.0766 - 0.294, 2.87996, 9.15237, 1.03325e-178, 28.297, 14.129, 14.1257 - 0.295, 2.88905, 9.0962, 5.11249e-178, 28.3862, 14.171, 14.1729 - 0.296, 2.89815, 9.15424, 2.50754e-177, 28.476, 14.2145, 14.2188 - 0.297, 2.90736, 9.31684, 1.21926e-176, 28.5674, 14.259, 14.2647 - 0.298, 2.91678, 9.55767, 5.87799e-176, 28.6612, 14.3042, 14.312 - 0.299, 2.92648, 9.838, 2.80987e-175, 28.7577, 14.35, 14.3613 - 0.3, 2.93646, 10.1129, 1.33202e-174, 28.8569, 14.3974, 14.4117 - 0.301, 2.9467, 10.3385, 6.26251e-174, 28.9583, 14.4476, 14.4619 - 0.302, 2.95714, 10.479, 2.92037e-173, 29.0611, 14.5012, 14.5106 - 0.303, 2.96766, 10.5121, 1.3509e-172, 29.1643, 14.5577, 14.5575 - 0.304, 2.97816, 10.4329, 6.19926e-172, 29.2666, 14.615, 14.6033 - 0.305, 2.98853, 10.2545, 2.82248e-171, 29.3672, 14.6706, 14.6494 - 0.306, 2.99867, 10.0057, 1.27507e-170, 29.4654, 14.7224, 14.6971 - 0.307, 3.00854, 9.72639, 5.71588e-170, 29.5608, 14.7697, 14.7466 - 0.308, 3.01812, 9.46138, 2.54285e-169, 29.6536, 14.8131, 14.7971 - 0.309, 3.02746, 9.25292, 1.12274e-168, 29.7444, 14.8547, 14.8471 - 0.31, 3.03663, 9.13413, 4.92035e-168, 29.834, 14.8962, 14.8954 - 0.311, 3.04573, 9.1237, 2.14045e-167, 29.9235, 14.939, 14.942 - 0.312, 3.05488, 9.22293, 9.24358e-167, 30.0139, 14.9831, 14.9878 - 0.313, 3.06418, 9.41564, 3.96311e-166, 30.1063, 15.028, 15.0341 - 0.314, 3.07371, 9.67073, 1.68704e-165, 30.2012, 15.0734, 15.0822 - 0.315, 3.08352, 9.94726, 7.13082e-165, 30.2988, 15.1198, 15.132 - 0.316, 3.0936, 10.201, 2.99303e-164, 30.3988, 15.1682, 15.1825 - 0.317, 3.10392, 10.3914, 1.24759e-163, 30.5008, 15.2196, 15.2322 - 0.318, 3.11438, 10.4884, 5.16475e-163, 30.6037, 15.2743, 15.2801 - 0.319, 3.1249, 10.4767, 2.12362e-162, 30.7064, 15.3312, 15.3265 - 0.32, 3.13534, 10.3585, 8.67326e-162, 30.8081, 15.3879, 15.3723 - 0.321, 3.14561, 10.1531, 3.51881e-161, 30.9077, 15.4421, 15.419 - 0.322, 3.15564, 9.89344, 1.41823e-160, 31.0047, 15.492, 15.4674 - 0.323, 3.1654, 9.6213, 5.67883e-160, 31.0991, 15.5376, 15.5174 - 0.324, 3.17489, 9.38015, 2.25925e-159, 31.1911, 15.5802, 15.5678 - 0.325, 3.18416, 9.20842, 8.93073e-159, 31.2815, 15.6217, 15.6172 - 0.326, 3.1933, 9.13333, 3.50797e-158, 31.3711, 15.6639, 15.6648 - 0.327, 3.20243, 9.16658, 1.36929e-157, 31.461, 15.7073, 15.711 - 0.328, 3.21164, 9.30252, 5.31169e-157, 31.5522, 15.7518, 15.7568 - 0.329, 3.22103, 9.51912, 2.04782e-156, 31.6456, 15.797, 15.8039 - 0.33, 3.23068, 9.78154, 7.84693e-156, 31.7416, 15.8428, 15.8527 - 0.331, 3.24059, 10.0477, 2.98867e-155, 31.8401, 15.8898, 15.9028 - 0.332, 3.25077, 10.2751, 1.1315e-154, 31.9409, 15.9393, 15.9531 - 0.333, 3.26114, 10.4275, 4.25841e-154, 32.0432, 15.992, 16.0022 - 0.334, 3.27163, 10.4808, 1.59325e-153, 32.1461, 16.0476, 16.0494 - 0.335, 3.28211, 10.4267, 5.92636e-153, 32.2483, 16.1045, 16.0954 - 0.336, 3.29248, 10.2743, 2.19169e-152, 32.3491, 16.1603, 16.1415 - 0.337, 3.30265, 10.0482, 8.05903e-152, 32.4477, 16.2128, 16.1888 - 0.338, 3.31258, 9.78462, 2.94658e-151, 32.5437, 16.2609, 16.238 - 0.339, 3.32222, 9.52593, 1.07129e-150, 32.6371, 16.3052, 16.2883 - 0.34, 3.33163, 9.31338, 3.87323e-150, 32.7285, 16.3473, 16.3383 - 0.341, 3.34085, 9.18081, 1.39263e-149, 32.8186, 16.389, 16.387 - 0.342, 3.34999, 9.14915, 4.97982e-149, 32.9083, 16.4318, 16.434 - 0.343, 3.35915, 9.22317, 1.77105e-148, 32.9988, 16.4758, 16.4799 - 0.344, 3.36844, 9.39074, 6.26475e-148, 33.0909, 16.5207, 16.5262 - 0.345, 3.37793, 9.62481, 2.20422e-147, 33.1853, 16.5662, 16.5739 - 0.346, 3.38768, 9.88779, 7.71441e-147, 33.2823, 16.6124, 16.6233 - 0.347, 3.39771, 10.1376, 2.68575e-146, 33.3818, 16.6603, 16.6736 - 0.348, 3.40796, 10.3343, 9.30173e-146, 33.4832, 16.7109, 16.7235 - 0.349, 3.41837, 10.4467, 3.2049e-145, 33.5857, 16.7647, 16.7719 - 0.35, 3.42885, 10.457, 1.09859e-144, 33.6882, 16.8209, 16.8185 - 0.351, 3.43929, 10.364, 3.7467e-144, 33.7899, 16.8775, 16.8644 - 0.352, 3.44958, 10.1826, 1.27136e-143, 33.8898, 16.932, 16.9109 - 0.353, 3.45965, 9.9423, 4.29253e-143, 33.9873, 16.9828, 16.959 - 0.354, 3.46947, 9.68149, 1.44211e-142, 34.0823, 17.0293, 17.0087 - 0.355, 3.47902, 9.44195, 4.82109e-142, 34.1749, 17.0726, 17.059 - 0.356, 3.48835, 9.2619, 1.60386e-141, 34.2658, 17.1144, 17.1086 - 0.357, 3.49754, 9.16993, 5.30985e-141, 34.3557, 17.1566, 17.1566 - 0.358, 3.50669, 9.18049, 1.74947e-140, 34.4458, 17.2, 17.203 - 0.359, 3.5159, 9.2916, 5.73662e-140, 34.537, 17.2445, 17.249 - 0.36, 3.52527, 9.48524, 1.87217e-139, 34.63, 17.2898, 17.2957 - 0.361, 3.53487, 9.73023, 6.08127e-139, 34.7255, 17.3355, 17.3442 - 0.362, 3.54473, 9.98729, 1.96614e-138, 34.8234, 17.3823, 17.3941 - 0.363, 3.55485, 10.2153, 6.32735e-138, 34.9237, 17.4311, 17.4443 - 0.364, 3.56516, 10.3779, 2.0269e-137, 35.0255, 17.4829, 17.4937 - 0.365, 3.5756, 10.4494, 6.46341e-137, 35.128, 17.5377, 17.5413 - 0.366, 3.58606, 10.4184, 2.05175e-136, 35.2302, 17.5942, 17.5875 - 0.367, 3.59644, 10.2904, 6.48384e-136, 35.3311, 17.65, 17.6336 - 0.368, 3.60664, 10.0859, 2.03987e-135, 35.4301, 17.7031, 17.6806 - 0.369, 3.61661, 9.83789, 6.38922e-135, 35.5266, 17.7521, 17.7294 - 0.37, 3.62632, 9.5861, 1.99243e-134, 35.6206, 17.7972, 17.7794 - 0.371, 3.63578, 9.37077, 6.18617e-134, 35.7125, 17.8398, 17.8296 - 0.372, 3.64506, 9.2262, 1.91239e-133, 35.803, 17.8818, 17.8786 - 0.373, 3.65424, 9.1753, 5.88659e-133, 35.8931, 17.9245, 17.9259 - 0.374, 3.66341, 9.22597, 1.80424e-132, 35.9836, 17.9685, 17.972 - 0.375, 3.67269, 9.36982, 5.50657e-132, 36.0755, 18.0134, 18.0182 - 0.376, 3.68215, 9.58363, 1.67355e-131, 36.1695, 18.0589, 18.0656 - 0.377, 3.69186, 9.83304, 5.06498e-131, 36.266, 18.105, 18.1147 - 0.378, 3.70182, 10.0781, 1.52656e-130, 36.3648, 18.1524, 18.1648 - 0.379, 3.71201, 10.2797, 4.582e-130, 36.4657, 18.2024, 18.2148 - 0.38, 3.72238, 10.4057, 1.36968e-129, 36.5678, 18.2554, 18.2635 - 0.381, 3.73282, 10.4362, 4.07769e-129, 36.6701, 18.3109, 18.3105 - 0.382, 3.74325, 10.3665, 1.20908e-128, 36.7718, 18.3672, 18.3566 - 0.383, 3.75356, 10.2081, 3.57067e-128, 36.872, 18.422, 18.4029 - 0.384, 3.76366, 9.98648, 1.0503e-127, 36.9699, 18.4735, 18.4506 - 0.385, 3.77353, 9.73725, 3.07722e-127, 37.0655, 18.5208, 18.5 - 0.386, 3.78314, 9.50029, 8.98037e-127, 37.1587, 18.5648, 18.5502 - 0.387, 3.79253, 9.31344, 2.61055e-126, 37.25, 18.6071, 18.6 - 0.388, 3.80177, 9.20642, 7.55934e-126, 37.3403, 18.6494, 18.6483 - 0.389, 3.81094, 9.19613, 2.18052e-125, 37.4305, 18.6927, 18.6951 - 0.39, 3.82016, 9.28397, 6.26575e-125, 37.5216, 18.7372, 18.7411 - 0.391, 3.82951, 9.45564, 1.79363e-124, 37.6144, 18.7824, 18.7877 - 0.392, 3.83907, 9.68349, 5.11504e-124, 37.7094, 18.8281, 18.8357 - 0.393, 3.84888, 9.93099, 1.45323e-123, 37.8068, 18.8747, 18.8853 - 0.394, 3.85893, 10.1585, 4.11337e-123, 37.9065, 18.923, 18.9355 - 0.395, 3.86919, 10.3298, 1.15998e-122, 38.0078, 18.9741, 18.9851 - 0.396, 3.87959, 10.4175, 3.25912e-122, 38.11, 19.0281, 19.0331 - 0.397, 3.89003, 10.408, 9.1235e-122, 38.2121, 19.084, 19.0796 - 0.398, 3.90041, 10.3029, 2.54473e-121, 38.3132, 19.1399, 19.1257 - 0.399, 3.91063, 10.1193, 7.07213e-121, 38.4124, 19.1934, 19.1725 - 0.4, 3.92065, 9.88676, 1.95839e-120, 38.5094, 19.2432, 19.2209 - 0.401, 3.93041, 9.64251, 5.40374e-120, 38.604, 19.2891, 19.2707 - 0.402, 3.93993, 9.42564, 1.48576e-119, 38.6965, 19.3323, 19.3208 - 0.403, 3.94926, 9.27074, 4.07073e-119, 38.7874, 19.3745, 19.3701 - 0.404, 3.95847, 9.20239, 1.1114e-118, 38.8777, 19.4172, 19.4178 - 0.405, 3.96766, 9.23132, 3.02383e-118, 38.9683, 19.4611, 19.4641 - 0.406, 3.97693, 9.35265, 8.19859e-118, 39.06, 19.506, 19.5103 - 0.407, 3.98637, 9.54677, 2.21526e-117, 39.1537, 19.5515, 19.5574 - 0.408, 3.99603, 9.78248, 5.9652e-117, 39.2496, 19.5975, 19.6061 - 0.409, 4.00593, 10.022, 1.60084e-116, 39.3479, 19.6446, 19.656 - 0.41, 4.01607, 10.2271, 4.28155e-116, 39.4483, 19.6939, 19.7061 - 0.411, 4.02639, 10.365, 1.14129e-115, 39.55, 19.7461, 19.7551 - 0.412, 4.0368, 10.4139, 3.03205e-115, 39.6521, 19.801, 19.8024 - 0.413, 4.04722, 10.3661, 8.02852e-115, 39.7538, 19.857, 19.8487 - 0.414, 4.05753, 10.2296, 2.11885e-114, 39.8542, 19.912, 19.8949 - 0.415, 4.06768, 10.0264, 5.57364e-114, 39.9525, 19.9641, 19.9423 - 0.416, 4.07759, 9.78906, 1.46137e-113, 40.0485, 20.0123, 19.9913 - 0.417, 4.08725, 9.55565, 3.81918e-113, 40.1423, 20.057, 20.0414 - 0.418, 4.0967, 9.36345, 9.94902e-113, 40.2341, 20.0997, 20.0913 - 0.419, 4.10598, 9.24307, 2.58343e-112, 40.3248, 20.142, 20.14 - 0.42, 4.11518, 9.21359, 6.68692e-112, 40.4152, 20.1853, 20.1871 - 0.421, 4.12441, 9.27949, 1.72536e-111, 40.5062, 20.2297, 20.2332 - 0.422, 4.13374, 9.43001, 4.43773e-111, 40.5987, 20.275, 20.2796 - 0.423, 4.14327, 9.64091, 1.13784e-110, 40.6933, 20.3207, 20.3274 - 0.424, 4.15303, 9.87834, 2.90835e-110, 40.7902, 20.3671, 20.3766 - 0.425, 4.16302, 10.1043, 7.4108e-110, 40.8894, 20.4149, 20.4268 - 0.426, 4.17323, 10.2827, 1.88254e-109, 40.9902, 20.4653, 20.4765 - 0.427, 4.18359, 10.3851, 4.76749e-109, 41.0921, 20.5186, 20.5248 - 0.428, 4.194, 10.3954, 1.20368e-108, 41.1941, 20.574, 20.5716 - 0.429, 4.20438, 10.3121, 3.0298e-108, 41.2952, 20.6297, 20.6177 - 0.43, 4.21463, 10.1487, 7.60339e-108, 41.3948, 20.6837, 20.6644 - 0.431, 4.22468, 9.93161, 1.90238e-107, 41.4922, 20.7342, 20.7124 - 0.432, 4.23449, 9.69558, 4.74558e-107, 41.5873, 20.7809, 20.762 - 0.433, 4.24407, 9.47839, 1.1803e-106, 41.6803, 20.8246, 20.8121 - 0.434, 4.25345, 9.31469, 2.92694e-106, 41.7717, 20.8671, 20.8616 - 0.435, 4.2627, 9.23053, 7.23701e-106, 41.8623, 20.9099, 20.9096 - 0.436, 4.27191, 9.23918, 1.78417e-105, 41.9529, 20.9537, 20.9562 - 0.437, 4.28118, 9.33903, 4.38581e-105, 42.0445, 20.9985, 21.0023 - 0.438, 4.29059, 9.51393, 1.075e-104, 42.1378, 21.044, 21.0492 - 0.439, 4.30021, 9.73575, 2.62735e-104, 42.2333, 21.09, 21.0976 - 0.44, 4.31006, 9.96893, 6.40301e-104, 42.3311, 21.1369, 21.1473 - 0.441, 4.32014, 10.1762, 1.55602e-103, 42.431, 21.1856, 21.1974 - 0.442, 4.33041, 10.3244, 3.77065e-103, 42.5323, 21.2371, 21.2466 - 0.443, 4.34079, 10.3901, 9.1116e-103, 42.6342, 21.2912, 21.2943 - 0.444, 4.35119, 10.363, 2.19561e-102, 42.7358, 21.3469, 21.3407 - 0.445, 4.36152, 10.2475, 5.27601e-102, 42.8364, 21.4021, 21.3869 - 0.446, 4.37169, 10.0623, 1.2643e-101, 42.9351, 21.4547, 21.4341 - 0.447, 4.38164, 9.83728, 3.02133e-101, 43.0316, 21.5037, 21.4828 - 0.448, 4.39136, 9.60836, 7.20034e-101, 43.1258, 21.5491, 21.5327 - 0.449, 4.40086, 9.41218, 1.71128e-100, 43.2182, 21.5922, 21.5826 - 0.45, 4.41019, 9.28003, 4.0561e-100, 43.3092, 21.6347, 21.6316 - 0.451, 4.41942, 9.23286, 9.58787e-100, 43.3998, 21.6779, 21.679 - 0.452, 4.42865, 9.27805, 2.2603e-99, 43.4908, 21.7223, 21.7253 - 0.453, 4.43798, 9.40816, 5.31432e-99, 43.5831, 21.7675, 21.7716 - 0.454, 4.44747, 9.6022, 1.24615e-98, 43.6773, 21.8132, 21.819 - 0.455, 4.45718, 9.82903, 2.91437e-98, 43.7737, 21.8594, 21.868 - 0.456, 4.46713, 10.0523, 6.79784e-98, 43.8723, 21.907, 21.918 - 0.457, 4.47728, 10.2364, 1.58146e-97, 43.9728, 21.9567, 21.9678 - 0.458, 4.4876, 10.3519, 3.66951e-97, 44.0743, 22.0092, 22.0165 - 0.459, 4.49799, 10.3806, 8.4924e-97, 44.1761, 22.0641, 22.0636 - 0.46, 4.50836, 10.318, 1.96033e-96, 44.2774, 22.1197, 22.1098 - 0.461, 4.51862, 10.1743, 4.51345e-96, 44.3772, 22.1739, 22.1563 - 0.462, 4.52871, 9.97273, 1.03651e-95, 44.475, 22.2251, 22.2041 - 0.463, 4.53857, 9.74559, 2.37429e-95, 44.5706, 22.2726, 22.2533 - 0.464, 4.5482, 9.52923, 5.42487e-95, 44.6641, 22.3169, 22.3033 - 0.465, 4.55763, 9.35822, 1.23637e-94, 44.7559, 22.3597, 22.353 - 0.466, 4.56692, 9.25978, 2.8107e-94, 44.8467, 22.4025, 22.4013 - 0.467, 4.57615, 9.24949, 6.37372e-94, 44.9375, 22.4462, 22.4482 - 0.468, 4.58541, 9.32882, 1.44175e-93, 45.029, 22.491, 22.4944 - 0.469, 4.59481, 9.48489, 3.25319e-93, 45.122, 22.5365, 22.5411 - 0.47, 4.60438, 9.69258, 7.32247e-93, 45.2171, 22.5824, 22.5891 - 0.471, 4.61419, 9.9186, 1.64414e-92, 45.3144, 22.6291, 22.6386 - 0.472, 4.62422, 10.1268, 3.68262e-92, 45.4138, 22.6774, 22.6886 - 0.473, 4.63444, 10.2839, 8.22844e-92, 45.5146, 22.7282, 22.7381 - 0.474, 4.64479, 10.3649, 1.83411e-91, 45.6163, 22.7817, 22.7861 - 0.475, 4.65517, 10.3571, 4.07837e-91, 45.7179, 22.8369, 22.8328 - 0.476, 4.6655, 10.2618, 9.047e-91, 45.8186, 22.8921, 22.879 - 0.477, 4.6757, 10.0945, 2.00209e-90, 45.9176, 22.9452, 22.9259 - 0.478, 4.68569, 9.88213, 4.42007e-90, 46.0146, 22.9949, 22.9743 - 0.479, 4.69546, 9.65863, 9.73523e-90, 46.1093, 23.041, 23.0239 - 0.48, 4.70501, 9.45979, 2.13914e-89, 46.2021, 23.0846, 23.0739 - 0.481, 4.71438, 9.31735, 4.68933e-89, 46.2935, 23.1273, 23.1231 - 0.482, 4.72364, 9.25394, 1.02557e-88, 46.3843, 23.1705, 23.1708 - 0.483, 4.73289, 9.27955, 2.23776e-88, 46.4753, 23.2148, 23.2173 - 0.484, 4.7422, 9.38989, 4.87138e-88, 46.5674, 23.2599, 23.2636 - 0.485, 4.75167, 9.56715, 1.05801e-87, 46.6613, 23.3056, 23.3108 - 0.486, 4.76134, 9.78286, 2.2926e-87, 46.7573, 23.3518, 23.3595 - 0.487, 4.77123, 10.0025, 4.95649e-87, 46.8554, 23.399, 23.4093 - 0.488, 4.78134, 10.1909, 1.06913e-86, 46.9554, 23.4482, 23.4592 - 0.489, 4.79162, 10.318, 2.30093e-86, 47.0566, 23.5, 23.5081 - 0.49, 4.80198, 10.3637, 4.94076e-86, 47.1583, 23.5543, 23.5555 - 0.491, 4.81234, 10.3207, 1.05854e-85, 47.2595, 23.6097, 23.6019 - 0.492, 4.82262, 10.1963, 2.26282e-85, 47.3595, 23.6642, 23.6483 - 0.493, 4.83274, 10.0103, 4.82642e-85, 47.4577, 23.7159, 23.6957 - 0.494, 4.84264, 9.79271, 1.02715e-84, 47.5538, 23.7642, 23.7447 - 0.495, 4.85232, 9.57832, 2.18115e-84, 47.6478, 23.8091, 23.7946 - 0.496, 4.8618, 9.40139, 4.62145e-84, 47.74, 23.8523, 23.8444 - 0.497, 4.87112, 9.29013, 9.77058e-84, 47.8311, 23.8951, 23.893 - 0.498, 4.88038, 9.26219, 2.06117e-83, 47.922, 23.9388, 23.9401 - 0.499, 4.88965, 9.32187, 4.33874e-83, 48.0134, 23.9835, 23.9865 - 0.5, 4.89902, 9.45946, 9.11324e-83, 48.1062, 24.0289, 24.033 - 0.501, 4.90857, 9.6528, 1.91005e-82, 48.2009, 24.0748, 24.0808 - 0.502, 4.91833, 9.87089, 3.99471e-82, 48.2978, 24.1214, 24.1299 - 0.503, 4.92831, 10.0788, 8.33676e-82, 48.3966, 24.1692, 24.1799 - 0.504, 4.93849, 10.2433, 1.73614e-81, 48.4971, 24.2194, 24.2295 - 0.505, 4.9488, 10.3383, 3.60786e-81, 48.5985, 24.2722, 24.2778 - 0.506, 4.95916, 10.3486, 7.48164e-81, 48.7001, 24.327, 24.3248 - 0.507, 4.96949, 10.2728, 1.54821e-80, 48.8008, 24.3822, 24.371 - 0.508, 4.97971, 10.1232, 3.19709e-80, 48.9001, 24.4357, 24.4178 - 0.509, 4.98974, 9.92378, 6.58828e-80, 48.9975, 24.4861, 24.4658 - 0.51, 4.99955, 9.70659, 1.35483e-79, 49.0927, 24.5329, 24.5152 - 0.511, 5.00915, 9.50636, 2.78036e-79, 49.186, 24.577, 24.5652 - 0.512, 5.01857, 9.35505, 5.69404e-79, 49.2777, 24.6199, 24.6146 - 0.513, 5.02786, 9.27677, 1.16372e-78, 49.3687, 24.6631, 24.6626 - 0.514, 5.03712, 9.28387, 2.37348e-78, 49.4598, 24.7072, 24.7094 - 0.515, 5.04643, 9.37506, 4.83102e-78, 49.5518, 24.7523, 24.7556 - 0.516, 5.05587, 9.5356, 9.81319e-78, 49.6453, 24.798, 24.8026 - 0.517, 5.0655, 9.73969, 1.98931e-77, 49.7409, 24.8442, 24.851 - 0.518, 5.07535, 9.95462, 4.02458e-77, 49.8385, 24.8911, 24.9005 - 0.519, 5.08541, 10.146, 8.1258e-77, 49.9381, 24.9398, 24.9505 - 0.52, 5.09564, 10.2833, 1.63736e-76, 50.0389, 24.991, 24.9996 - 0.521, 5.10598, 10.3447, 3.29273e-76, 50.1404, 25.0447, 25.0474 - 0.522, 5.11633, 10.3205, 6.60857e-76, 50.2417, 25.0997, 25.0939 - 0.523, 5.12662, 10.2148, 1.32373e-75, 50.3419, 25.1544, 25.1403 - 0.524, 5.13676, 10.0445, 2.64629e-75, 50.4404, 25.2067, 25.1875 - 0.525, 5.14671, 9.83707, 5.27987e-75, 50.5369, 25.2556, 25.2361 - 0.526, 5.15644, 9.62572, 1.05138e-74, 50.6313, 25.3012, 25.2859 - 0.527, 5.16596, 9.44422, 2.08954e-74, 50.724, 25.3448, 25.3357 - 0.528, 5.17532, 9.32153, 4.14476e-74, 50.8154, 25.3877, 25.3846 - 0.529, 5.1846, 9.27717, 8.20556e-74, 50.9064, 25.4313, 25.4321 - 0.53, 5.19388, 9.31806, 1.62137e-73, 50.9979, 25.4759, 25.4785 - 0.531, 5.20324, 9.43751, 3.19758e-73, 51.0904, 25.5213, 25.525 - 0.532, 5.21275, 9.61628, 6.29406e-73, 51.1848, 25.5672, 25.5724 - 0.533, 5.22247, 9.82568, 1.23655e-72, 51.2812, 25.6136, 25.6213 - 0.534, 5.23241, 10.0322, 2.42478e-72, 51.3796, 25.6612, 25.6712 - 0.535, 5.24254, 10.2028, 4.7458e-72, 51.4797, 25.7108, 25.7209 - 0.536, 5.25281, 10.3103, 9.27105e-72, 51.5808, 25.7629, 25.7695 - 0.537, 5.26316, 10.3376, 1.80773e-71, 51.6822, 25.8172, 25.8167 - 0.538, 5.27349, 10.2805, 3.51824e-71, 51.7831, 25.8723, 25.8631 - 0.539, 5.28372, 10.1483, 6.83453e-71, 51.8826, 25.9261, 25.9097 - 0.54, 5.29378, 9.96233, 1.32521e-70, 51.9804, 25.9771, 25.9574 - 0.541, 5.30364, 9.7523, 2.56482e-70, 52.076, 26.0246, 26.0066 - 0.542, 5.31329, 9.55189, 4.95484e-70, 52.1697, 26.0693, 26.0565 - 0.543, 5.32275, 9.3931, 9.55442e-70, 52.2619, 26.1125, 26.106 - 0.544, 5.33207, 9.30126, 1.83901e-69, 52.3531, 26.1557, 26.1543 - 0.545, 5.34135, 9.2909, 3.53322e-69, 52.4443, 26.1997, 26.2013 - 0.546, 5.35066, 9.36355, 6.77591e-69, 52.5361, 26.2447, 26.2477 - 0.547, 5.36008, 9.50743, 1.29712e-68, 52.6294, 26.2904, 26.2945 - 0.548, 5.36967, 9.69942, 2.47859e-68, 52.7246, 26.3365, 26.3425 - 0.549, 5.37947, 9.90873, 4.7277e-68, 52.8218, 26.3833, 26.3919 - 0.55, 5.38949, 10.1019, 9.00154e-68, 52.9209, 26.4315, 26.4418 - 0.551, 5.39968, 10.248, 1.71083e-67, 53.0214, 26.4821, 26.4911 - 0.552, 5.40998, 10.3239, 3.24582e-67, 53.1227, 26.5352, 26.5391 - 0.553, 5.42033, 10.3174, 6.14711e-67, 53.2239, 26.5899, 26.5859 - 0.554, 5.43062, 10.2299, 1.16212e-66, 53.3242, 26.6446, 26.6323 - 0.555, 5.44079, 10.0754, 2.19312e-66, 53.4231, 26.6974, 26.6793 - 0.556, 5.45077, 9.87874, 4.13154e-66, 53.52, 26.747, 26.7276 - 0.557, 5.46054, 9.67146, 7.76965e-66, 53.6149, 26.7932, 26.7772 - 0.558, 5.47011, 9.48669, 1.45859e-65, 53.7079, 26.8372, 26.827 - 0.559, 5.47952, 9.35393, 2.73344e-65, 53.7997, 26.8803, 26.8761 - 0.56, 5.48882, 9.29432, 5.11367e-65, 53.8909, 26.9238, 26.9239 - 0.561, 5.4981, 9.31726, 9.55006e-65, 53.9823, 26.9683, 26.9705 - 0.562, 5.50745, 9.41892, 1.78046e-64, 54.0747, 27.0137, 27.0169 - 0.563, 5.51694, 9.58292, 3.31368e-64, 54.1687, 27.0596, 27.0642 - 0.564, 5.52662, 9.78293, 6.1567e-64, 54.2646, 27.1059, 27.1128 - 0.565, 5.53651, 9.98691, 1.14194e-63, 54.3626, 27.1532, 27.1625 - 0.566, 5.54659, 10.1623, 2.11447e-63, 54.4623, 27.2022, 27.2122 - 0.567, 5.55683, 10.281, 3.90863e-63, 54.5632, 27.2538, 27.2611 - 0.568, 5.56716, 10.3242, 7.21295e-63, 54.6644, 27.3076, 27.3086 - 0.569, 5.57748, 10.2851, 1.32883e-62, 54.7653, 27.3624, 27.3551 - 0.57, 5.58773, 10.1702, 2.44399e-62, 54.8651, 27.4165, 27.4016 - 0.571, 5.59782, 9.99786, 4.48748e-62, 54.9632, 27.4681, 27.4491 - 0.572, 5.60772, 9.79581, 8.22585e-62, 55.0593, 27.5163, 27.498 - 0.573, 5.61741, 9.59638, 1.50535e-61, 55.1534, 27.5615, 27.5478 - 0.574, 5.62691, 9.43144, 2.75027e-61, 55.246, 27.605, 27.5974 - 0.575, 5.63628, 9.32731, 5.01643e-61, 55.3375, 27.6482, 27.646 - 0.576, 5.64557, 9.30053, 9.13481e-61, 55.4287, 27.6922, 27.6933 - 0.577, 5.65488, 9.35524, 1.6607e-60, 55.5205, 27.7371, 27.7397 - 0.578, 5.66428, 9.48255, 3.0142e-60, 55.6135, 27.7828, 27.7864 - 0.579, 5.67384, 9.66199, 5.46192e-60, 55.7083, 27.8288, 27.8341 - 0.58, 5.6836, 9.86479, 9.88126e-60, 55.805, 27.8754, 27.8832 - 0.581, 5.69357, 10.0585, 1.78474e-59, 55.9037, 27.9233, 27.933 - 0.582, 5.70372, 10.2121, 3.21837e-59, 56.0039, 27.9733, 27.9826 - 0.583, 5.714, 10.3012, 5.79424e-59, 56.105, 28.0258, 28.0309 - 0.584, 5.72432, 10.3116, 1.0415e-58, 56.2061, 28.0801, 28.0779 - 0.585, 5.73462, 10.2418, 1.86908e-58, 56.3066, 28.1348, 28.1243 - 0.586, 5.74481, 10.1031, 3.34889e-58, 56.4057, 28.188, 28.1711 - 0.587, 5.75483, 9.91776, 5.99079e-58, 56.503, 28.2382, 28.2192 - 0.588, 5.76464, 9.71552, 1.06998e-57, 56.5983, 28.2851, 28.2685 - 0.589, 5.77426, 9.52873, 1.90802e-57, 56.6918, 28.3296, 28.3183 - 0.59, 5.7837, 9.38723, 3.39707e-57, 56.7839, 28.3728, 28.3676 - 0.591, 5.79303, 9.31355, 6.03868e-57, 56.8752, 28.4163, 28.4157 - 0.592, 5.80233, 9.31936, 1.07176e-56, 56.9667, 28.4607, 28.4625 - 0.593, 5.81167, 9.4036, 1.89922e-56, 57.0589, 28.506, 28.5089 - 0.594, 5.82113, 9.55267, 3.36028e-56, 57.1526, 28.5519, 28.556 - 0.595, 5.83078, 9.74262, 5.93609e-56, 57.2482, 28.5981, 28.6043 - 0.596, 5.84062, 9.94303, 1.04701e-55, 57.3457, 28.6452, 28.6538 - 0.597, 5.85066, 10.1218, 1.84388e-55, 57.445, 28.6938, 28.7036 - 0.598, 5.86086, 10.2505, 3.24223e-55, 57.5456, 28.7448, 28.7527 - 0.599, 5.87116, 10.3085, 5.69228e-55, 57.6467, 28.798, 28.8004 - 0.6, 5.88148, 10.2867, 9.97847e-55, 57.7476, 28.8526, 28.8471 - 0.601, 5.89174, 10.1888, 1.74654e-54, 57.8476, 28.9068, 28.8936 - 0.602, 5.90186, 10.0304, 3.05232e-54, 57.946, 28.9589, 28.9409 - 0.603, 5.9118, 9.83711, 5.32626e-54, 58.0425, 29.0078, 28.9894 - 0.604, 5.92153, 9.63977, 9.28018e-54, 58.137, 29.0536, 29.0391 - 0.605, 5.93108, 9.46998, 1.61449e-53, 58.2299, 29.0975, 29.0888 - 0.606, 5.94047, 9.35482, 2.80451e-53, 58.3217, 29.1408, 29.1376 - 0.607, 5.94979, 9.31263, 4.86439e-53, 58.4131, 29.1846, 29.1852 - 0.608, 5.9591, 9.35002, 8.42458e-53, 58.5048, 29.2295, 29.2317 - 0.609, 5.96849, 9.46088, 1.45686e-52, 58.5976, 29.2751, 29.2783 - 0.61, 5.97802, 9.62738, 2.51561e-52, 58.692, 29.3211, 29.3258 - 0.611, 5.98774, 9.8228, 4.33732e-52, 58.7884, 29.3676, 29.3746 - 0.612, 5.99766, 10.0159, 7.46716e-52, 58.8867, 29.4152, 29.4243 - 0.613, 6.00777, 10.1757, 1.28365e-51, 58.9865, 29.4647, 29.474 - 0.614, 6.01802, 10.2768, 2.20344e-51, 59.0873, 29.5165, 29.5226 - 0.615, 6.02833, 10.3031, 3.77672e-51, 59.1884, 29.5704, 29.5698 - 0.616, 6.03862, 10.2505, 6.46385e-51, 59.2889, 29.625, 29.6163 - 0.617, 6.04883, 10.1276, 1.10467e-50, 59.3883, 29.6785, 29.663 - 0.618, 6.05888, 9.95414, 1.88513e-50, 59.4859, 29.7293, 29.7108 - 0.619, 6.06873, 9.75789, 3.21232e-50, 59.5817, 29.7769, 29.7599 - 0.62, 6.07839, 9.57028, 5.46595e-50, 59.6755, 29.8218, 29.8096 - 0.621, 6.08788, 9.42131, 9.28718e-50, 59.768, 29.8653, 29.8591 - 0.622, 6.09724, 9.33471, 1.57571e-49, 59.8595, 29.9088, 29.9074 - 0.623, 6.10654, 9.32424, 2.66957e-49, 59.951, 29.9531, 29.9545 - 0.624, 6.11588, 9.39145, 4.51632e-49, 60.0431, 29.9984, 30.0009 - 0.625, 6.12533, 9.52546, 7.62967e-49, 60.1366, 30.0442, 30.0478 - 0.626, 6.13493, 9.70475, 1.28708e-48, 60.2318, 30.0904, 30.0958 - 0.627, 6.14474, 9.90058, 2.16815e-48, 60.3289, 30.1373, 30.1451 - 0.628, 6.15474, 10.0816, 3.64715e-48, 60.4278, 30.1855, 30.1949 - 0.629, 6.1649, 10.2189, 6.12637e-48, 60.5281, 30.2359, 30.2442 - 0.63, 6.17517, 10.2907, 1.02763e-47, 60.629, 30.2886, 30.2922 - 0.631, 6.18548, 10.2854, 1.72132e-47, 60.7299, 30.3429, 30.3391 - 0.632, 6.19574, 10.2042, 2.87921e-47, 60.83, 30.3972, 30.3856 - 0.633, 6.20589, 10.0601, 4.80924e-47, 60.9287, 30.4497, 30.4326 - 0.634, 6.21586, 9.87618, 8.02179e-47, 61.0256, 30.4992, 30.4809 - 0.635, 6.22564, 9.68201, 1.33616e-46, 61.1206, 30.5457, 30.5304 - 0.636, 6.23523, 9.5086, 2.22251e-46, 61.2139, 30.5899, 30.5801 - 0.637, 6.24466, 9.38366, 3.69168e-46, 61.3059, 30.6333, 30.6292 - 0.638, 6.254, 9.32707, 6.12354e-46, 61.3974, 30.6771, 30.677 - 0.639, 6.26331, 9.34778, 1.01433e-45, 61.4891, 30.7218, 30.7237 - 0.64, 6.27269, 9.44236, 1.67788e-45, 61.5817, 30.7674, 30.7702 - 0.641, 6.2822, 9.59557, 2.77167e-45, 61.6759, 30.8134, 30.8175 - 0.642, 6.29188, 9.78282, 4.57222e-45, 61.7718, 30.8598, 30.8661 - 0.643, 6.30176, 9.97412, 7.53213e-45, 61.8697, 30.9071, 30.9157 - 0.644, 6.31183, 10.1389, 1.23913e-44, 61.9691, 30.9561, 30.9653 - 0.645, 6.32204, 10.2508, 2.03574e-44, 62.0697, 31.0074, 31.0142 - 0.646, 6.33233, 10.2921, 3.33993e-44, 62.1707, 31.0609, 31.0617 - 0.647, 6.34263, 10.2562, 5.47222e-44, 62.2713, 31.1153, 31.1083 - 0.648, 6.35285, 10.1491, 8.95369e-44, 62.3709, 31.169, 31.1549 - 0.649, 6.36292, 9.98789, 1.46303e-43, 62.4688, 31.2204, 31.2025 - 0.65, 6.37282, 9.7985, 2.38738e-43, 62.565, 31.2686, 31.2513 - 0.651, 6.38252, 9.61124, 3.89051e-43, 62.6592, 31.314, 31.3009 - 0.652, 6.39204, 9.45604, 6.33153e-43, 62.752, 31.3578, 31.3505 - 0.653, 6.40143, 9.35768, 1.02903e-42, 62.8438, 31.4013, 31.3991 - 0.654, 6.41076, 9.33178, 1.67021e-42, 62.9353, 31.4455, 31.4464 - 0.655, 6.4201, 9.38238, 2.70729e-42, 63.0274, 31.4907, 31.493 - 0.656, 6.42952, 9.50127, 4.38249e-42, 63.1206, 31.5365, 31.5397 - 0.657, 6.4391, 9.66934, 7.08486e-42, 63.2155, 31.5826, 31.5875 - 0.658, 6.44886, 9.85964, 1.14385e-41, 63.3122, 31.6294, 31.6365 - 0.659, 6.45882, 10.0417, 1.8443e-41, 63.4107, 31.6772, 31.6862 - 0.66, 6.46895, 10.1865, 2.96977e-41, 63.5106, 31.7271, 31.7356 - 0.661, 6.47919, 10.2708, 4.77578e-41, 63.6114, 31.7793, 31.784 - 0.662, 6.48949, 10.2814, 7.67002e-41, 63.7122, 31.8332, 31.8311 - 0.663, 6.49975, 10.2165, 1.23021e-40, 63.8125, 31.8875, 31.8776 - 0.664, 6.50992, 10.0868, 1.9706e-40, 63.9114, 31.9404, 31.9245 - 0.665, 6.51993, 9.91299, 3.15246e-40, 64.0087, 31.9905, 31.9725 - 0.666, 6.52975, 9.723, 5.03659e-40, 64.104, 32.0376, 32.0217 - 0.667, 6.53937, 9.5472, 8.0364e-40, 64.1977, 32.0822, 32.0715 - 0.668, 6.54884, 9.41368, 1.28063e-39, 64.29, 32.1258, 32.1207 - 0.669, 6.5582, 9.34372, 2.0381e-39, 64.3817, 32.1696, 32.1688 - 0.67, 6.56753, 9.34842, 3.23943e-39, 64.4734, 32.2142, 32.2157 - 0.671, 6.5769, 9.42691, 5.14224e-39, 64.5659, 32.2596, 32.2622 - 0.672, 6.58638, 9.56654, 8.15228e-39, 64.6597, 32.3056, 32.3093 - 0.673, 6.59603, 9.74488, 1.29077e-38, 64.7553, 32.352, 32.3576 - 0.674, 6.60587, 9.93337, 2.04111e-38, 64.8528, 32.3991, 32.407 - 0.675, 6.6159, 10.1019, 3.22351e-38, 64.9519, 32.4477, 32.4567 - 0.676, 6.62608, 10.2234, 5.08438e-38, 65.0522, 32.4984, 32.5057 - 0.677, 6.63635, 10.2787, 8.00934e-38, 65.153, 32.5514, 32.5536 - 0.678, 6.64663, 10.259, 1.2601e-37, 65.2536, 32.6056, 32.6003 - 0.679, 6.65686, 10.1675, 1.98e-37, 65.3534, 32.6594, 32.6469 - 0.68, 6.66697, 10.019, 3.10724e-37, 65.4517, 32.7113, 32.6942 - 0.681, 6.6769, 9.83728, 4.87012e-37, 65.5482, 32.7602, 32.7427 - 0.682, 6.68664, 9.65148, 7.62356e-37, 65.6429, 32.8062, 32.7923 - 0.683, 6.6962, 9.4913, 1.19188e-36, 65.736, 32.8503, 32.8419 - 0.684, 6.70563, 9.3823, 1.86106e-36, 65.828, 32.8938, 32.8907 - 0.685, 6.71497, 9.34185, 2.90234e-36, 65.9197, 32.9379, 32.9383 - 0.686, 6.72431, 9.37631, 4.52058e-36, 66.0116, 32.983, 32.985 - 0.687, 6.73372, 9.48005, 7.03233e-36, 66.1046, 33.0287, 33.0316 - 0.688, 6.74327, 9.6364, 1.09261e-35, 66.1992, 33.0749, 33.0791 - 0.689, 6.75299, 9.82028, 1.69548e-35, 66.2955, 33.1215, 33.1279 - 0.69, 6.76291, 10.0022, 2.62774e-35, 66.3936, 33.1691, 33.1775 - 0.691, 6.773, 10.1532, 4.06758e-35, 66.4932, 33.2184, 33.2271 - 0.692, 6.78322, 10.2491, 6.2886e-35, 66.5938, 33.2701, 33.2756 - 0.693, 6.7935, 10.2746, 9.71042e-35, 66.6946, 33.3236, 33.323 - 0.694, 6.80377, 10.2258, 1.49758e-34, 66.7949, 33.3778, 33.3696 - 0.695, 6.81395, 10.1106, 2.30678e-34, 66.8941, 33.431, 33.4163 - 0.696, 6.82399, 9.94751, 3.5489e-34, 66.9917, 33.4817, 33.4641 - 0.697, 6.83384, 9.76265, 5.45319e-34, 67.0874, 33.5294, 33.5131 - 0.698, 6.84351, 9.58563, 8.36907e-34, 67.1815, 33.5745, 33.5628 - 0.699, 6.85301, 9.44473, 1.28285e-33, 67.2741, 33.6183, 33.6122 - 0.7, 6.8624, 9.36244, 1.96403e-33, 67.366, 33.662, 33.6605 - 0.701, 6.87174, 9.35183, 3.00325e-33, 67.4577, 33.7065, 33.7077 - 0.702, 6.8811, 9.41448, 4.58681e-33, 67.5501, 33.7519, 33.7542 - 0.703, 6.89057, 9.54029, 6.9969e-33, 67.6436, 33.7979, 33.8011 - 0.704, 6.90019, 9.70904, 1.06605e-32, 67.7389, 33.8442, 33.8492 - 0.705, 6.90999, 9.89369, 1.62227e-32, 67.836, 33.8911, 33.8984 - 0.706, 6.91997, 10.0647, 2.46576e-32, 67.9347, 33.9393, 33.948 - 0.707, 6.93012, 10.1947, 3.7433e-32, 68.0347, 33.9896, 33.9973 - 0.708, 6.94036, 10.2631, 5.67597e-32, 68.1354, 34.042, 34.0453 - 0.709, 6.95064, 10.2589, 8.59619e-32, 68.236, 34.0959, 34.0923 - 0.71, 6.96088, 10.1829, 1.30033e-31, 68.3359, 34.1499, 34.1389 - 0.711, 6.97101, 10.0474, 1.96464e-31, 68.4345, 34.2022, 34.186 - 0.712, 6.98098, 9.87418, 2.96481e-31, 68.5313, 34.2516, 34.2343 - 0.713, 6.99076, 9.69091, 4.46884e-31, 68.6264, 34.2982, 34.2836 - 0.714, 7.00036, 9.52693, 6.72788e-31, 68.7199, 34.3426, 34.3333 - 0.715, 7.00981, 9.40844, 1.01169e-30, 68.8122, 34.3863, 34.3823 - 0.716, 7.01917, 9.35432, 1.51951e-30, 68.9039, 34.4304, 34.4301 - 0.717, 7.02852, 9.37314, 2.27954e-30, 68.9959, 34.4753, 34.4769 - 0.718, 7.03792, 9.46178, 3.4157e-30, 69.0887, 34.521, 34.5235 - 0.719, 7.04744, 9.60597, 5.11212e-30, 69.1829, 34.5671, 34.5709 - 0.72, 7.05713, 9.78259, 7.6421e-30, 69.2789, 34.6136, 34.6194 - 0.721, 7.06701, 9.96334, 1.14108e-29, 69.3766, 34.6609, 34.6689 - 0.722, 7.07706, 10.1193, 1.70181e-29, 69.4759, 34.7099, 34.7185 - 0.723, 7.08725, 10.2256, 2.53511e-29, 69.5762, 34.761, 34.7673 - 0.724, 7.09751, 10.2653, 3.77205e-29, 69.6769, 34.8141, 34.8149 - 0.725, 7.10778, 10.2322, 5.60599e-29, 69.7773, 34.8682, 34.8616 - 0.726, 7.11797, 10.1316, 8.32189e-29, 69.8767, 34.9216, 34.9082 - 0.727, 7.12804, 9.97968, 1.23392e-28, 69.9746, 34.9728, 34.9558 - 0.728, 7.13793, 9.80087, 1.82747e-28, 70.0707, 35.0211, 35.0045 - 0.729, 7.14764, 9.62376, 2.70339e-28, 70.1652, 35.0667, 35.0541 - 0.73, 7.15718, 9.47668, 3.99453e-28, 70.2581, 35.1107, 35.1036 - 0.731, 7.1666, 9.38309, 5.89552e-28, 70.3502, 35.1545, 35.1522 - 0.732, 7.17595, 9.35789, 8.69115e-28, 70.442, 35.1989, 35.1996 - 0.733, 7.18531, 9.40501, 1.27977e-27, 70.5342, 35.2442, 35.2462 - 0.734, 7.19476, 9.51682, 1.8823e-27, 70.6276, 35.2901, 35.293 - 0.735, 7.20434, 9.67536, 2.76533e-27, 70.7225, 35.3364, 35.3408 - 0.736, 7.21411, 9.85521, 4.05796e-27, 70.8192, 35.3832, 35.3897 - 0.737, 7.22406, 10.0276, 5.94801e-27, 70.9176, 35.431, 35.4394 - 0.738, 7.23416, 10.1649, 8.70841e-27, 71.0173, 35.4808, 35.4887 - 0.739, 7.24438, 10.2454, 1.27353e-26, 71.1178, 35.5327, 35.5371 - 0.74, 7.25465, 10.256, 1.86032e-26, 71.2184, 35.5863, 35.5842 - 0.741, 7.2649, 10.1954, 2.71438e-26, 71.3184, 35.6403, 35.6308 - 0.742, 7.27504, 10.0732, 3.95603e-26, 71.4172, 35.6929, 35.6778 - 0.743, 7.28504, 9.90912, 5.75912e-26, 71.5144, 35.743, 35.7258 - 0.744, 7.29486, 9.72938, 8.37453e-26, 71.6099, 35.7901, 35.775 - 0.745, 7.3045, 9.56278, 1.21639e-25, 71.7037, 35.835, 35.8246 - 0.746, 7.31399, 9.43593, 1.7648e-25, 71.7963, 35.8788, 35.8738 - 0.747, 7.32337, 9.36906, 2.55756e-25, 71.8882, 35.9228, 35.9219 - 0.748, 7.33273, 9.37279, 3.70227e-25, 71.9801, 35.9676, 35.9689 - 0.749, 7.34212, 9.44641, 5.35329e-25, 72.0728, 36.0132, 36.0155 - 0.75, 7.35162, 9.57808, 7.73189e-25, 72.1668, 36.0593, 36.0626 - 0.751, 7.36128, 9.74665, 1.11548e-24, 72.2624, 36.1057, 36.1109 - 0.752, 7.37111, 9.92513, 1.6075e-24, 72.3597, 36.1529, 36.1602 - 0.753, 7.38113, 10.085, 2.31396e-24, 72.4587, 36.2014, 36.2098 - 0.754, 7.39128, 10.2006, 3.32715e-24, 72.5587, 36.252, 36.2588 - 0.755, 7.40153, 10.2537, 4.77864e-24, 72.6593, 36.3047, 36.3067 - 0.756, 7.41179, 10.2357, 6.85569e-24, 72.7597, 36.3586, 36.3535 - 0.757, 7.422, 10.1497, 9.82458e-24, 72.8593, 36.4121, 36.4002 - 0.758, 7.43209, 10.0095, 1.40635e-23, 72.9575, 36.4638, 36.4475 - 0.759, 7.44202, 9.83755, 2.01089e-23, 73.054, 36.5127, 36.496 - 0.76, 7.45176, 9.66146, 2.87212e-23, 73.1488, 36.5588, 36.5455 - 0.761, 7.46134, 9.50934, 4.09765e-23, 73.2421, 36.6031, 36.595 - 0.762, 7.47078, 9.4055, 5.83962e-23, 73.3343, 36.6469, 36.6438 - 0.763, 7.48015, 9.36647, 8.31292e-23, 73.4262, 36.6913, 36.6914 - 0.764, 7.48952, 9.39842, 1.18207e-22, 73.5184, 36.7364, 36.7382 - 0.765, 7.49895, 9.49613, 1.679e-22, 73.6116, 36.7823, 36.7849 - 0.766, 7.50851, 9.6439, 2.38222e-22, 73.7062, 36.8286, 36.8324 - 0.767, 7.51824, 9.81804, 3.37623e-22, 73.8025, 36.8752, 36.8812 - 0.768, 7.52814, 9.99066, 4.77975e-22, 73.9005, 36.9228, 36.9307 - 0.769, 7.53822, 10.1342, 6.75927e-22, 73.9999, 36.9721, 36.9802 - 0.77, 7.54841, 10.2257, 9.54812e-22, 74.1002, 37.0236, 37.0287 - 0.771, 7.55867, 10.2506, 1.34728e-21, 74.2008, 37.0768, 37.0761 - 0.772, 7.56891, 10.205, 1.89899e-21, 74.3009, 37.1307, 37.1228 - 0.773, 7.57908, 10.0963, 2.67369e-21, 74.4, 37.1836, 37.1696 - 0.774, 7.58911, 9.94202, 3.76032e-21, 74.4975, 37.2342, 37.2174 - 0.775, 7.59896, 9.76679, 5.28278e-21, 74.5933, 37.282, 37.2664 - 0.776, 7.60864, 9.5987, 7.41355e-21, 74.6875, 37.3272, 37.316 - 0.777, 7.61816, 9.46461, 1.03924e-20, 74.7803, 37.3712, 37.3653 - 0.778, 7.62757, 9.38593, 1.45523e-20, 74.8724, 37.4152, 37.4136 - 0.779, 7.63693, 9.37515, 2.03552e-20, 74.9644, 37.4599, 37.4608 - 0.78, 7.64632, 9.43392, 2.8441e-20, 75.0569, 37.5054, 37.5075 - 0.781, 7.6558, 9.55275, 3.96956e-20, 75.1506, 37.5515, 37.5544 - 0.782, 7.66543, 9.71256, 5.53437e-20, 75.2459, 37.5979, 37.6025 - 0.783, 7.67523, 9.88775, 7.70767e-20, 75.3429, 37.6449, 37.6516 - 0.784, 7.6852, 10.0503, 1.07228e-19, 75.4415, 37.6931, 37.7012 - 0.785, 7.69533, 10.1742, 1.49011e-19, 75.5413, 37.7432, 37.7504 - 0.786, 7.70555, 10.2397, 2.06853e-19, 75.6417, 37.7954, 37.7985 - 0.787, 7.71581, 10.2364, 2.86836e-19, 75.7422, 37.849, 37.8455 - 0.788, 7.72602, 10.165, 3.97316e-19, 75.8419, 37.9026, 37.8921 - 0.789, 7.73613, 10.0368, 5.49756e-19, 75.9403, 37.9547, 37.9393 - 0.79, 7.7461, 9.8726, 7.59862e-19, 76.0372, 38.0042, 37.9875 - 0.791, 7.75588, 9.69857, 1.04913e-18, 76.1323, 38.0508, 38.0368 - 0.792, 7.76549, 9.54257, 1.44697e-18, 76.2259, 38.0955, 38.0864 - 0.793, 7.77497, 9.42953, 1.99352e-18, 76.3185, 38.1394, 38.1354 - 0.794, 7.78435, 9.37747, 2.74355e-18, 76.4104, 38.1836, 38.1833 - 0.795, 7.79372, 9.39464, 3.77171e-18, 76.5026, 38.2287, 38.2301 - 0.796, 7.80314, 9.4782, 5.17962e-18, 76.5956, 38.2745, 38.2768 - 0.797, 7.81268, 9.61472, 7.10543e-18, 76.6899, 38.3207, 38.3242 - 0.798, 7.82237, 9.78229, 9.73681e-18, 76.7859, 38.3673, 38.3727 - 0.799, 7.83224, 9.95408, 1.33284e-17, 76.8835, 38.4147, 38.4221 - 0.8, 7.84228, 10.1026, 1.82252e-17, 76.9826, 38.4636, 38.4716 - 0.801, 7.85245, 10.2042, 2.48944e-17, 77.0827, 38.5145, 38.5204 - 0.802, 7.86269, 10.2426, 3.39677e-17, 77.1832, 38.5674, 38.568 - 0.803, 7.87293, 10.2118, 4.62985e-17, 77.2834, 38.6211, 38.6148 - 0.804, 7.88311, 10.1168, 6.3038e-17, 77.3826, 38.6743, 38.6615 - 0.805, 7.89317, 9.9728, 8.5738e-17, 77.4805, 38.7254, 38.7091 - 0.806, 7.90306, 9.803, 1.16488e-16, 77.5766, 38.7737, 38.7578 - 0.807, 7.91277, 9.63453, 1.58097e-16, 77.6711, 38.8194, 38.8073 - 0.808, 7.92233, 9.49432, 2.14341e-16, 77.7643, 38.8637, 38.8567 - 0.809, 7.93176, 9.40477, 2.90283e-16, 77.8565, 38.9076, 38.9053 - 0.81, 7.94113, 9.38012, 3.92714e-16, 77.9486, 38.9522, 38.9527 - 0.811, 7.95052, 9.42424, 5.30722e-16, 78.041, 38.9976, 38.9994 - 0.812, 7.95998, 9.53, 7.16467e-16, 78.1345, 39.0437, 39.0463 - 0.813, 7.96958, 9.68039, 9.6619e-16, 78.2295, 39.09, 39.0941 - 0.814, 7.97934, 9.85133, 1.30157e-15, 78.3261, 39.1369, 39.143 - 0.815, 7.98928, 10.0154, 1.75149e-15, 78.4244, 39.1848, 39.1925 - 0.816, 7.99937, 10.1465, 2.35445e-15, 78.5239, 39.2344, 39.2419 - 0.817, 8.00958, 10.2236, 3.16161e-15, 78.6242, 39.2861, 39.2902 - 0.818, 8.01982, 10.2345, 4.24097e-15, 78.7246, 39.3395, 39.3374 - 0.819, 8.03004, 10.1774, 5.68279e-15, 78.8244, 39.3931, 39.3841 - 0.82, 8.04018, 10.0617, 7.60671e-15, 78.9231, 39.4456, 39.4311 - 0.821, 8.05017, 9.90591, 1.01712e-14, 79.0203, 39.4956, 39.4791 - 0.822, 8.05999, 9.73494, 1.35858e-14, 79.1158, 39.5428, 39.5282 - 0.823, 8.06964, 9.57618, 1.81274e-14, 79.2098, 39.5878, 39.5778 - 0.824, 8.07914, 9.45501, 2.41617e-14, 79.3025, 39.6318, 39.6269 - 0.825, 8.08855, 9.39074, 3.21706e-14, 79.3946, 39.676, 39.675 - 0.826, 8.09792, 9.39359, 4.27888e-14, 79.4868, 39.721, 39.7221 - 0.827, 8.10734, 9.46303, 5.68514e-14, 79.5796, 39.7667, 39.7688 - 0.828, 8.11685, 9.58786, 7.54556e-14, 79.6737, 39.8129, 39.8159 - 0.829, 8.12651, 9.74807, 1.00042e-13, 79.7693, 39.8594, 39.8642 - 0.83, 8.13634, 9.91798, 1.32499e-13, 79.8666, 39.9066, 39.9134 - 0.831, 8.14635, 10.0704, 1.753e-13, 79.9654, 39.9551, 39.963 - 0.832, 8.15649, 10.181, 2.31683e-13, 80.0653, 40.0056, 40.012 - 0.833, 8.16671, 10.2322, 3.05875e-13, 80.1656, 40.058, 40.0598 - 0.834, 8.17695, 10.2158, 4.03399e-13, 80.2659, 40.1116, 40.1067 - 0.835, 8.18714, 10.1345, 5.31455e-13, 80.3653, 40.1649, 40.1535 - 0.836, 8.19722, 10.0014, 6.9942e-13, 80.4634, 40.2164, 40.2008 - 0.837, 8.20714, 9.83789, 9.19496e-13, 80.5599, 40.2653, 40.2493 - 0.838, 8.21689, 9.6701, 1.20754e-12, 80.6548, 40.3115, 40.2987 - 0.839, 8.22648, 9.52488, 1.58414e-12, 80.7482, 40.356, 40.3482 - 0.84, 8.23594, 9.42543, 2.076e-12, 80.8407, 40.4001, 40.3969 - 0.841, 8.24533, 9.38759, 2.71769e-12, 80.9328, 40.4445, 40.4446 - 0.842, 8.25472, 9.41735, 3.55397e-12, 81.0251, 40.4899, 40.4914 - 0.843, 8.26417, 9.50985, 4.64266e-12, 81.1184, 40.5358, 40.5382 - 0.844, 8.27374, 9.65024, 6.05844e-12, 81.2131, 40.5822, 40.5857 - 0.845, 8.28347, 9.81601, 7.89759e-12, 81.3094, 40.6289, 40.6344 - 0.846, 8.29337, 9.98063, 1.02842e-11, 81.4073, 40.6765, 40.6839 - 0.847, 8.30343, 10.1178, 1.33777e-11, 81.5066, 40.7257, 40.7333 - 0.848, 8.31361, 10.2055, 1.73835e-11, 81.6067, 40.777, 40.7819 - 0.849, 8.32384, 10.2299, 2.25648e-11, 81.707, 40.83, 40.8293 - 0.85, 8.33407, 10.1872, 2.92593e-11, 81.807, 40.8836, 40.876 - 0.851, 8.34422, 10.0841, 3.78999e-11, 81.9059, 40.9363, 40.9229 - 0.852, 8.35424, 9.93739, 4.904e-11, 82.0034, 40.9869, 40.9707 - 0.853, 8.36409, 9.77045, 6.33874e-11, 82.0992, 41.0346, 41.0196 - 0.854, 8.37378, 9.61002, 8.18455e-11, 82.1935, 41.08, 41.0691 - 0.855, 8.38331, 9.48177, 1.05566e-10, 82.2865, 41.1243, 41.1184 - 0.856, 8.39274, 9.40615, 1.36018e-10, 82.3788, 41.1684, 41.1668 - 0.857, 8.40212, 9.3952, 1.75067e-10, 82.471, 41.2132, 41.214 - 0.858, 8.41153, 9.45059, 2.25088e-10, 82.5637, 41.2589, 41.2607 - 0.859, 8.42102, 9.56339, 2.89093e-10, 82.6575, 41.305, 41.3077 - 0.86, 8.43066, 9.71549, 3.70904e-10, 82.7528, 41.3515, 41.3558 - 0.861, 8.44046, 9.88253, 4.75362e-10, 82.8498, 41.3985, 41.4048 - 0.862, 8.45042, 10.0378, 6.0859e-10, 82.9482, 41.4467, 41.4544 - 0.863, 8.46053, 10.1564, 7.78328e-10, 83.0479, 41.4967, 41.5035 - 0.864, 8.47073, 10.2195, 9.94347e-10, 83.1481, 41.5487, 41.5516 - 0.865, 8.48097, 10.2171, 1.26897e-09, 83.2483, 41.6021, 41.5987 - 0.866, 8.49117, 10.1495, 1.61771e-09, 83.3479, 41.6555, 41.6454 - 0.867, 8.50127, 10.0278, 2.06009e-09, 83.4463, 41.7074, 41.6926 - 0.868, 8.51122, 9.87133, 2.62065e-09, 83.5431, 41.7568, 41.7408 - 0.869, 8.52101, 9.70526, 3.33019e-09, 83.6383, 41.8036, 41.79 - 0.87, 8.53063, 9.55613, 4.2273e-09, 83.7321, 41.8484, 41.8396 - 0.871, 8.54012, 9.44776, 5.36036e-09, 83.8248, 41.8925, 41.8885 - 0.872, 8.54953, 9.39745, 6.78984e-09, 83.9169, 41.9369, 41.9364 - 0.873, 8.55892, 9.41316, 8.59132e-09, 84.0093, 41.9821, 41.9833 - 0.874, 8.56836, 9.49232, 1.08591e-08, 84.1024, 42.028, 42.0301 - 0.875, 8.5779, 9.62218, 1.37108e-08, 84.1968, 42.0743, 42.0775 - 0.876, 8.5876, 9.78193, 1.72929e-08, 84.2928, 42.121, 42.1259 - 0.877, 8.59747, 9.94599, 2.17873e-08, 84.3903, 42.1684, 42.1753 - 0.878, 8.60749, 10.0881, 2.74203e-08, 84.4893, 42.2172, 42.2247 - 0.879, 8.61764, 10.1856, 3.44727e-08, 84.5892, 42.268, 42.2735 - 0.88, 8.62786, 10.2229, 4.32922e-08, 84.6895, 42.3206, 42.3212 - 0.881, 8.63809, 10.1942, 5.43095e-08, 84.7895, 42.3741, 42.368 - 0.882, 8.64825, 10.104, 6.80571e-08, 84.8886, 42.4271, 42.4148 - 0.883, 8.6583, 9.96694, 8.51925e-08, 84.9864, 42.478, 42.4624 - 0.884, 8.66819, 9.80493, 1.06527e-07, 85.0826, 42.5263, 42.5111 - 0.885, 8.67791, 9.64392, 1.33061e-07, 85.1772, 42.5722, 42.5605 - 0.886, 8.68747, 9.50964, 1.66023e-07, 85.2705, 42.6166, 42.6099 - 0.887, 8.69693, 9.42355, 2.06926e-07, 85.3629, 42.6608, 42.6584 - 0.888, 8.70632, 9.39936, 2.57626e-07, 85.4551, 42.7055, 42.7059 - 0.889, 8.71573, 9.44085, 3.20401e-07, 85.5478, 42.7511, 42.7527 - 0.89, 8.7252, 9.54134, 3.98038e-07, 85.6414, 42.7972, 42.7996 - 0.891, 8.73481, 9.68467, 4.93949e-07, 85.7364, 42.8436, 42.8474 - 0.892, 8.74457, 9.84788, 6.12302e-07, 85.833, 42.8905, 42.8962 - 0.893, 8.7545, 10.0048, 7.58185e-07, 85.9311, 42.9384, 42.9457 - 0.894, 8.76458, 10.1305, 9.37798e-07, 86.0305, 42.988, 42.995 - 0.895, 8.77476, 10.2047, 1.15869e-06, 86.1306, 43.0395, 43.0433 - 0.896, 8.78499, 10.2158, 1.43005e-06, 86.2308, 43.0926, 43.0906 - 0.897, 8.7952, 10.1619, 1.76301e-06, 86.3305, 43.146, 43.1373 - 0.898, 8.80532, 10.0518, 2.17112e-06, 86.4291, 43.1983, 43.1844 - 0.899, 8.8153, 9.90322, 2.67074e-06, 86.5263, 43.2482, 43.2324 - 0.9, 8.82512, 9.73985, 3.28173e-06, 86.6218, 43.2955, 43.2814 - 0.901, 8.83478, 9.58788, 4.02803e-06, 86.7159, 43.3407, 43.3309 - 0.902, 8.8443, 9.4716, 4.93859e-06, 86.8088, 43.3849, 43.3801 - 0.903, 8.85372, 9.40957, 6.04827e-06, 86.9011, 43.4292, 43.4282 - 0.904, 8.86312, 9.41163, 7.39908e-06, 86.9934, 43.4743, 43.4753 - 0.905, 8.87255, 9.4774, 9.04151e-06, 87.0864, 43.5202, 43.522 - 0.906, 8.88207, 9.59628, 1.10362e-05, 87.1805, 43.5664, 43.5692 - 0.907, 8.89174, 9.74921, 1.3456e-05, 87.2762, 43.613, 43.6175 - 0.908, 8.90157, 9.91169, 1.6388e-05, 87.3734, 43.6602, 43.6666 - 0.909, 8.91156, 10.0577, 1.99365e-05, 87.4721, 43.7087, 43.7161 - 0.91, 8.92169, 10.164, 2.42262e-05, 87.5718, 43.759, 43.7651 - 0.911, 8.93189, 10.2135, 2.94059e-05, 87.672, 43.8113, 43.813 - 0.912, 8.94211, 10.1985, 3.56527e-05, 87.772, 43.8646, 43.8599 - 0.913, 8.95229, 10.1213, 4.3178e-05, 87.8713, 43.9177, 43.9067 - 0.914, 8.96236, 9.99448, 5.22324e-05, 87.9694, 43.9691, 43.9541 - 0.915, 8.97228, 9.83826, 6.31141e-05, 88.0659, 44.018, 44.0026 - 0.916, 8.98203, 9.67769, 7.61763e-05, 88.1608, 44.0643, 44.0519 - 0.917, 8.99163, 9.53846, 9.18372e-05, 88.2544, 44.109, 44.1013 - 0.918, 9.00111, 9.4428, 0.000110592, 88.347, 44.1532, 44.1501 - 0.919, 9.01052, 9.40597, 0.000133024, 88.4393, 44.1978, 44.1977 - 0.92, 9.01992, 9.43379, 0.000159824, 88.5318, 44.2433, 44.2446 - 0.921, 9.02938, 9.52174, 0.000191802, 88.6253, 44.2893, 44.2914 - 0.922, 9.03896, 9.65569, 0.000229914, 88.72, 44.3357, 44.339 - 0.923, 9.0487, 9.81417, 0.000275281, 88.8162, 44.3825, 44.3877 - 0.924, 9.05859, 9.97181, 0.00032922, 88.9141, 44.4302, 44.4371 - 0.925, 9.06864, 10.1034, 0.000393271, 89.0132, 44.4793, 44.4864 - 0.926, 9.0788, 10.1879, 0.000469238, 89.1131, 44.5304, 44.535 - 0.927, 9.08902, 10.2119, 0.000559227, 89.2133, 44.5832, 44.5825 - 0.928, 9.09922, 10.1716, 0.000665697, 89.3131, 44.6366, 44.6293 - 0.929, 9.10936, 10.0736, 0.00079151, 89.4119, 44.6891, 44.6762 - 0.93, 9.11937, 9.93343, 0.000939996, 89.5094, 44.7395, 44.724 - 0.931, 9.12923, 9.77371, 0.00111502, 89.6052, 44.7873, 44.7729 - 0.932, 9.13892, 9.61997, 0.00132108, 89.6996, 44.8329, 44.8223 - 0.933, 9.14847, 9.49678, 0.00156337, 89.7928, 44.8773, 44.8716 - 0.934, 9.15791, 9.42381, 0.00184789, 89.8852, 44.9216, 44.9199 - 0.935, 9.16731, 9.41268, 0.00218159, 89.9776, 44.9666, 44.9672 - 0.936, 9.17674, 9.46509, 0.00257249, 90.0704, 45.0123, 45.014 - 0.937, 9.18624, 9.57261, 0.00302978, 90.1643, 45.0586, 45.061 - 0.938, 9.19588, 9.71797, 0.00356408, 90.2597, 45.1051, 45.109 - 0.939, 9.20568, 9.8779, 0.00418755, 90.3566, 45.1522, 45.158 - 0.94, 9.21564, 10.0268, 0.00491413, 90.4549, 45.2003, 45.2075 - 0.941, 9.22573, 10.1409, 0.00575978, 90.5544, 45.2502, 45.2566 - 0.942, 9.23592, 10.2019, 0.00674273, 90.6545, 45.302, 45.3047 - 0.943, 9.24614, 10.2002, 0.00788379, 90.7545, 45.3552, 45.3519 - 0.944, 9.25632, 10.1361, 0.00920665, 90.854, 45.4083, 45.3986 - 0.945, 9.26641, 10.0199, 0.0107382, 90.9523, 45.4601, 45.4459 - 0.946, 9.27636, 9.8703, 0.0125092, 91.0491, 45.5095, 45.4941 - 0.947, 9.28615, 9.71119, 0.0145541, 91.1444, 45.5563, 45.5433 - 0.948, 9.29578, 9.56805, 0.0169122, 91.2382, 45.6013, 45.5927 - 0.949, 9.30529, 9.46375, 0.0196278, 91.3311, 45.6456, 45.6416 - 0.95, 9.31471, 9.41493, 0.0227509, 91.4234, 45.6902, 45.6895 - 0.951, 9.32412, 9.42934, 0.0263378, 91.5159, 45.7355, 45.7365 - 0.952, 9.33357, 9.50461, 0.0304516, 91.6092, 45.7815, 45.7833 - 0.953, 9.34312, 9.62864, 0.0351633, 91.7036, 45.8278, 45.8307 - 0.954, 9.35283, 9.78154, 0.0405522, 91.7996, 45.8746, 45.8792 - 0.955, 9.36269, 9.93883, 0.0467071, 91.8971, 45.922, 45.9285 - 0.956, 9.3727, 10.0754, 0.053727, 91.9959, 45.9708, 45.9779 - 0.957, 9.38284, 10.1693, 0.0617221, 92.0957, 46.0214, 46.0266 - 0.958, 9.39304, 10.2057, 0.070815, 92.1958, 46.0739, 46.0743 - 0.959, 9.40325, 10.1788, 0.0811416, 92.2957, 46.1271, 46.1212 - 0.96, 9.4134, 10.0929, 0.0928522, 92.3947, 46.1799, 46.168 - 0.961, 9.42344, 9.96187, 0.106113, 92.4924, 46.2308, 46.2156 - 0.962, 9.43332, 9.8067, 0.121107, 92.5886, 46.2792, 46.2642 - 0.963, 9.44305, 9.65222, 0.138037, 92.6833, 46.3252, 46.3136 - 0.964, 9.45263, 9.52313, 0.157123, 92.7767, 46.3698, 46.3629 - 0.965, 9.4621, 9.44005, 0.178608, 92.8693, 46.4142, 46.4114 - 0.966, 9.47151, 9.41622, 0.202756, 92.9617, 46.4591, 46.4588 - 0.967, 9.48093, 9.45538, 0.229857, 93.0545, 46.5048, 46.5056 - 0.968, 9.49042, 9.55122, 0.260225, 93.1481, 46.551, 46.5525 - 0.969, 9.50003, 9.68834, 0.294201, 93.2432, 46.5977, 46.6002 - 0.97, 9.50979, 9.84477, 0.332153, 93.3398, 46.6447, 46.6489 - 0.971, 9.51972, 9.99549, 0.374482, 93.4378, 46.6928, 46.6981 - 0.972, 9.52979, 10.1164, 0.421615, 93.5371, 46.7425, 46.7471 - 0.973, 9.53995, 10.1882, 0.474014, 93.637, 46.7941, 46.7952 - 0.974, 9.55016, 10.1994, 0.532172, 93.7371, 46.8473, 46.8422 - 0.975, 9.56035, 10.1483, 0.596617, 93.8366, 46.9009, 46.8886 - 0.976, 9.57046, 10.0432, 0.667909, 93.9351, 46.9536, 46.9352 - 0.977, 9.58044, 9.90092, 0.746643, 94.0323, 47.0041, 46.9825 - 0.978, 9.59026, 9.74423, 0.833449, 94.1279, 47.0521, 47.0308 - 0.979, 9.59993, 9.59822, 0.928989, 94.222, 47.0984, 47.0793 - 0.98, 9.60946, 9.48622, 1.03396, 94.3151, 47.1439, 47.1273 - 0.981, 9.6189, 9.42612, 1.14909, 94.4076, 47.1898, 47.174 - 0.982, 9.62831, 9.42747, 1.27514, 94.5, 47.2366, 47.2195 - 0.983, 9.63775, 9.48999, 1.41289, 94.5931, 47.2845, 47.2643 - 0.984, 9.64729, 9.60362, 1.56316, 94.6873, 47.3333, 47.3091 - 0.985, 9.65696, 9.75014, 1.72678, 94.783, 47.3829, 47.3544 - 0.986, 9.66679, 9.90609, 1.90459, 94.8802, 47.4336, 47.4001 - 0.987, 9.67677, 10.0465, 2.09747, 94.9787, 47.4861, 47.4454 - 0.988, 9.68688, 10.149, 2.30628, 95.0783, 47.5412, 47.4894 - 0.989, 9.69707, 10.1971, 2.53189, 95.1783, 47.5991, 47.5315 - 0.99, 9.70728, 10.1833, 2.77517, 95.2782, 47.659, 47.5717 - 0.991, 9.71744, 10.1098, 3.03697, 95.3774, 47.72, 47.6105 - 0.992, 9.7275, 9.98844, 3.31811, 95.4754, 47.7806, 47.6486 - 0.993, 9.73741, 9.83866, 3.61939, 95.5719, 47.8404, 47.6861 - 0.994, 9.74717, 9.68445, 3.94155, 95.6669, 47.8995, 47.7227 - 0.995, 9.75678, 9.55047, 4.28529, 95.7606, 47.9589, 47.7574 - 0.996, 9.76627, 9.45813, 4.65123, 95.8534, 48.0201, 47.7893 - 0.997, 9.7757, 9.42215, 5.03991, 95.9458, 48.0842, 47.8177 - 0.998, 9.78512, 9.44824, 5.45177, 96.0385, 48.1517, 47.8425 - 0.999, 9.7946, 9.53215, 5.88717, 96.132, 48.2229, 47.8644 - 1, 9.80418, 9.66041, 6.34632, 96.2268, 48.2978, 47.8836 - 1.001, 9.81392, 9.81247, 6.82928, 96.323, 48.3766, 47.9002 - 1.002, 9.82381, 9.96398, 7.336, 96.4208, 48.4601, 47.9136 - 1.003, 9.83384, 10.0907, 7.86622, 96.5198, 48.5493, 47.9228 - 1.004, 9.84399, 10.1724, 8.41951, 96.6196, 48.6449, 47.9267 - 1.005, 9.85419, 10.1961, 8.99526, 96.7196, 48.7468, 47.9249 - 1.006, 9.86438, 10.158, 9.59262, 96.8192, 48.8544, 47.9173 - 1.007, 9.87451, 10.0643, 10.2106, 96.918, 48.9664, 47.9047 - 1.008, 9.88451, 9.93001, 10.8478, 97.0154, 49.0818, 47.8874 - 1.009, 9.89437, 9.77667, 11.5027, 97.1113, 49.2003, 47.8656 - 1.01, 9.90406, 9.62881, 12.1737, 97.2058, 49.3222, 47.8387 - 1.011, 9.91362, 9.51007, 12.8585, 97.299, 49.4487, 47.806 - 1.012, 9.92308, 9.43941, 13.5551, 97.3917, 49.5807, 47.7668 - 1.013, 9.9325, 9.42809, 14.2607, 97.4841, 49.7188, 47.7212 - 1.014, 9.94194, 9.47786, 14.9726, 97.5771, 49.8628, 47.6698 - 1.015, 9.95146, 9.58069, 15.6878, 97.6711, 50.0124, 47.6137 - 1.016, 9.9611, 9.7201, 16.4031, 97.7665, 50.1668, 47.5539 - 1.017, 9.9709, 9.87374, 17.1148, 97.8633, 50.3258, 47.491 - 1.018, 9.98085, 10.017, 17.8194, 97.9616, 50.4894, 47.4249 - 1.019, 9.99093, 10.1271, 18.5129, 98.0609, 50.6577, 47.3556 - 1.02, 10.0011, 10.1863, 19.1914, 98.1609, 50.8299, 47.2832 - 1.021, 10.0113, 10.1853, 19.8507, 98.2608, 51.005, 47.2083 - 1.022, 10.0215, 10.1243, 20.4867, 98.3601, 51.1809, 47.1323 - 1.023, 10.0316, 10.0131, 21.0951, 98.4583, 51.3553, 47.0568 - 1.024, 10.0415, 9.86946, 21.6717, 98.5551, 51.5265, 46.9832 - 1.025, 10.0513, 9.71649, 22.2124, 98.6505, 51.6936, 46.9122 - 1.026, 10.0609, 9.57864, 22.713, 98.7444, 51.8565, 46.8438 - 1.027, 10.0704, 9.47791, 23.1698, 98.8374, 52.0157, 46.778 - 1.028, 10.0799, 9.43039, 23.579, 98.9299, 52.1717, 46.7147 - 1.029, 10.0893, 9.44363, 23.9372, 99.0226, 52.3243, 46.6545 - 1.03, 10.0988, 9.51544, 24.2415, 99.1159, 52.4733, 46.5984 - 1.031, 10.1083, 9.6343, 24.4892, 99.2104, 52.6184, 46.5473 - 1.032, 10.118, 9.78113, 24.678, 99.3064, 52.7593, 46.5015 - 1.033, 10.1279, 9.93244, 24.8064, 99.4038, 52.8968, 46.4606 - 1.034, 10.1379, 10.064, 24.8732, 99.5025, 53.0318, 46.4237 - 1.035, 10.148, 10.1549, 24.8778, 99.6022, 53.1654, 46.3894 - 1.036, 10.1582, 10.1904, 24.8205, 99.7021, 53.298, 46.3566 - 1.037, 10.1684, 10.1652, 24.7021, 99.8018, 53.4297, 46.325 - 1.038, 10.1785, 10.0831, 24.524, 99.9008, 53.5599, 46.2942 - 1.039, 10.1886, 9.95745, 24.2886, 99.9984, 53.6883, 46.2642 - 1.04, 10.1985, 9.80833, 23.9987, 100.095, 53.815, 46.2343 - 1.041, 10.2082, 9.65963, 23.6582, 100.189, 53.9412, 46.2035 - 1.042, 10.2178, 9.53511, 23.2715, 100.283, 54.0685, 46.1702 - 1.043, 10.2273, 9.45468, 22.8435, 100.376, 54.1986, 46.133 - 1.044, 10.2367, 9.43115, 22.3802, 100.468, 54.3329, 46.0912 - 1.045, 10.2461, 9.46823, 21.8877, 100.561, 54.4718, 46.0449 - 1.046, 10.2556, 9.55993, 21.3729, 100.655, 54.6153, 45.9947 - 1.047, 10.2652, 9.69153, 20.843, 100.75, 54.7629, 45.9415 - 1.048, 10.275, 9.84196, 20.3058, 100.847, 54.9144, 45.8858 - 1.049, 10.2849, 9.98713, 19.7689, 100.944, 55.0697, 45.8278 - 1.05, 10.295, 10.1038, 19.2405, 101.044, 55.2288, 45.7673 - 1.051, 10.3051, 10.1734, 18.7284, 101.143, 55.3911, 45.7046 - 1.052, 10.3153, 10.1849, 18.2404, 101.243, 55.5553, 45.6406 - 1.053, 10.3255, 10.1363, 17.7843, 101.343, 55.7193, 45.5766 - 1.054, 10.3356, 10.0356, 17.3671, 101.441, 55.8807, 45.5142 - 1.055, 10.3456, 9.89895, 16.9955, 101.538, 56.0377, 45.4551 - 1.056, 10.3554, 9.74819, 16.6757, 101.634, 56.1893, 45.3999 - 1.057, 10.3651, 9.60745, 16.4127, 101.728, 56.3354, 45.3486 - 1.058, 10.3746, 9.49924, 16.2109, 101.821, 56.477, 45.3007 - 1.059, 10.3841, 9.44082, 16.0736, 101.914, 56.6149, 45.2555 - 1.06, 10.3935, 9.44151, 16.0031, 102.007, 56.7501, 45.2128 - 1.061, 10.403, 9.50112, 16.0005, 102.1, 56.883, 45.1726 - 1.062, 10.4125, 9.61008, 16.0656, 102.194, 57.0142, 45.1351 - 1.063, 10.4222, 9.75091, 16.1969, 102.29, 57.1443, 45.0998 - 1.064, 10.432, 9.90105, 16.3918, 102.387, 57.2746, 45.0658 - 1.065, 10.442, 10.0365, 16.6465, 102.485, 57.4068, 45.0314 - 1.066, 10.4521, 10.1356, 16.9558, 102.585, 57.5422, 44.9949 - 1.067, 10.4623, 10.1825, 17.3135, 102.685, 57.6819, 44.955 - 1.068, 10.4724, 10.1698, 17.7124, 102.784, 57.8257, 44.9112 - 1.069, 10.4826, 10.0996, 18.1442, 102.884, 57.9727, 44.8638 - 1.07, 10.4926, 9.98313, 18.6001, 102.981, 58.1218, 44.8133 - 1.071, 10.5026, 9.83908, 19.0706, 103.078, 58.2719, 44.7605 - 1.072, 10.5123, 9.69051, 19.5458, 103.173, 58.4226, 44.7056 - 1.073, 10.5219, 9.56119, 20.0155, 103.267, 58.5739, 44.6486 - 1.074, 10.5314, 9.47179, 20.4698, 103.36, 58.7261, 44.5897 - 1.075, 10.5409, 9.43655, 20.8987, 103.452, 58.879, 44.5295 - 1.076, 10.5503, 9.46107, 21.2929, 103.545, 59.0319, 44.4693 - 1.077, 10.5598, 9.54137, 21.6437, 103.639, 59.1837, 44.4107 - 1.078, 10.5694, 9.66456, 21.9434, 103.734, 59.3333, 44.3553 - 1.079, 10.5791, 9.81089, 22.1852, 103.83, 59.4801, 44.3039 - 1.08, 10.589, 9.95695, 22.3637, 103.927, 59.6243, 44.2566 - 1.081, 10.599, 10.0794, 22.4749, 104.026, 59.7666, 44.2127 - 1.082, 10.6092, 10.1586, 22.5165, 104.126, 59.9075, 44.1711 - 1.083, 10.6194, 10.182, 22.4876, 104.226, 60.0476, 44.1309 - 1.084, 10.6295, 10.1459, 22.3891, 104.325, 60.1866, 44.0917 - 1.085, 10.6397, 10.0561, 22.2236, 104.424, 60.3244, 44.0531 - 1.086, 10.6497, 9.92702, 21.9954, 104.521, 60.4606, 44.0149 - 1.087, 10.6595, 9.77936, 21.7104, 104.617, 60.5959, 43.9763 - 1.088, 10.6692, 9.63673, 21.3759, 104.712, 60.7314, 43.9358 - 1.089, 10.6788, 9.52194, 21.0005, 104.805, 60.8688, 43.8922 - 1.09, 10.6883, 9.45333, 20.594, 104.898, 61.0094, 43.8446 - 1.091, 10.6977, 9.44182, 20.167, 104.991, 61.1539, 43.7927 - 1.092, 10.7071, 9.4892, 19.7308, 105.084, 61.302, 43.7374 - 1.093, 10.7167, 9.58785, 19.2969, 105.178, 61.4529, 43.6801 - 1.094, 10.7263, 9.72193, 18.8769, 105.273, 61.6054, 43.6223 - 1.095, 10.7361, 9.86997, 18.482, 105.37, 61.7587, 43.5651 - 1.096, 10.7461, 10.0083, 18.123, 105.468, 61.9123, 43.5091 - 1.097, 10.7561, 10.1148, 17.8095, 105.567, 62.0657, 43.4544 - 1.098, 10.7663, 10.1724, 17.5501, 105.667, 62.2184, 43.4015 - 1.099, 10.7765, 10.172, 17.3519, 105.767, 62.3693, 43.3506 - 1.1, 10.7866, 10.1138, 17.2204, 105.866, 62.5169, 43.3026 - 1.101, 10.7967, 10.007, 17.159, 105.964, 62.6603, 43.258 - 1.102, 10.8066, 9.86876, 17.1693, 106.061, 62.7989, 43.2169 - 1.103, 10.8164, 9.72129, 17.2509, 106.157, 62.9335, 43.1783 - 1.104, 10.8261, 9.58813, 17.4011, 106.251, 63.0656, 43.1407 - 1.105, 10.8356, 9.49058, 17.6154, 106.344, 63.1974, 43.1022 - 1.106, 10.8451, 9.4442, 17.8871, 106.436, 63.331, 43.0614 - 1.107, 10.8545, 9.45637, 18.208, 106.529, 63.4676, 43.0173 - 1.108, 10.864, 9.52508, 18.5683, 106.623, 63.6078, 42.9702 - 1.109, 10.8736, 9.63929, 18.957, 106.717, 63.7515, 42.9204 - 1.11, 10.8833, 9.7807, 19.362, 106.813, 63.8985, 42.8687 - 1.111, 10.8931, 9.92667, 19.7708, 106.91, 64.0486, 42.8152 - 1.112, 10.9031, 10.0539, 20.1707, 107.009, 64.2017, 42.7602 - 1.113, 10.9132, 10.1419, 20.5491, 107.109, 64.3572, 42.7039 - 1.114, 10.9234, 10.1768, 20.8942, 107.208, 64.5139, 42.6471 - 1.115, 10.9336, 10.153, 21.1951, 107.308, 64.6699, 42.5911 - 1.116, 10.9437, 10.0744, 21.4423, 107.407, 64.8231, 42.5373 - 1.117, 10.9537, 9.95355, 21.6278, 107.505, 64.9717, 42.4871 - 1.118, 10.9636, 9.80985, 21.7459, 107.601, 65.1148, 42.4409 - 1.119, 10.9733, 9.66631, 21.793, 107.696, 65.2528, 42.3983 - 1.12, 10.9829, 9.54587, 21.7675, 107.789, 65.3872, 42.3579 - 1.121, 10.9924, 9.46778, 21.6706, 107.882, 65.52, 42.3182 - 1.122, 11.0019, 9.4445, 21.5057, 107.975, 65.653, 42.2778 - 1.123, 11.0113, 9.47969, 21.2786, 108.068, 65.7874, 42.236 - 1.124, 11.0208, 9.56767, 20.9971, 108.162, 65.9243, 42.1925 - 1.125, 11.0305, 9.69433, 20.6711, 108.257, 66.064, 42.1472 - 1.126, 11.0402, 9.83938, 20.3117, 108.353, 66.207, 42.0999 - 1.127, 11.0501, 9.9796, 19.9317, 108.451, 66.354, 42.0502 - 1.128, 11.0602, 10.0926, 19.5443, 108.55, 66.505, 41.9977 - 1.129, 11.0703, 10.1603, 19.1631, 108.65, 66.6595, 41.9427 - 1.13, 11.0805, 10.1719, 18.8015, 108.75, 66.8163, 41.8859 - 1.131, 11.0907, 10.1256, 18.4724, 108.849, 66.973, 41.829 - 1.132, 11.1008, 10.0289, 18.1874, 108.947, 67.1274, 41.7737 - 1.133, 11.1107, 9.89725, 17.9567, 109.044, 67.2773, 41.7216 - 1.134, 11.1206, 9.75178, 17.7885, 109.14, 67.4221, 41.6732 - 1.135, 11.1302, 9.61576, 17.6887, 109.234, 67.5619, 41.6282 - 1.136, 11.1398, 9.51092, 17.6608, 109.328, 67.6982, 41.5856 - 1.137, 11.1493, 9.45401, 17.7056, 109.42, 67.8326, 41.544 - 1.138, 11.1587, 9.45408, 17.8213, 109.513, 67.9667, 41.5025 - 1.139, 11.1682, 9.51107, 18.0034, 109.607, 68.1015, 41.4606 - 1.14, 11.1777, 9.61582, 18.2448, 109.701, 68.2379, 41.4178 - 1.141, 11.1874, 9.75153, 18.5363, 109.797, 68.3768, 41.3739 - 1.142, 11.1972, 9.89648, 18.8666, 109.894, 68.519, 41.328 - 1.143, 11.2072, 10.0275, 19.223, 109.992, 68.6652, 41.2795 - 1.144, 11.2173, 10.1236, 19.5917, 110.091, 68.8157, 41.228 - 1.145, 11.2274, 10.1694, 19.9585, 110.191, 68.97, 41.1734 - 1.146, 11.2376, 10.1578, 20.309, 110.291, 69.1263, 41.1171 - 1.147, 11.2477, 10.0905, 20.6297, 110.39, 69.2823, 41.0606 - 1.148, 11.2578, 9.97842, 20.908, 110.488, 69.4357, 41.0059 - 1.149, 11.2677, 9.83951, 21.133, 110.584, 69.5846, 40.9543 - 1.15, 11.2775, 9.69601, 21.2959, 110.679, 69.7285, 40.9061 - 1.151, 11.2871, 9.57085, 21.3904, 110.773, 69.868, 40.861 - 1.152, 11.2966, 9.48406, 21.4128, 110.866, 70.0044, 40.8178 - 1.153, 11.3061, 9.44946, 21.3625, 110.959, 70.1394, 40.7756 - 1.154, 11.3155, 9.47256, 21.2417, 111.052, 70.2742, 40.7334 - 1.155, 11.325, 9.54961, 21.0555, 111.145, 70.4099, 40.6909 - 1.156, 11.3346, 9.66823, 20.8117, 111.24, 70.5473, 40.6476 - 1.157, 11.3443, 9.80942, 20.5205, 111.337, 70.6873, 40.603 - 1.158, 11.3542, 9.95059, 20.1942, 111.434, 70.8309, 40.5564 - 1.159, 11.3642, 10.0691, 19.8465, 111.533, 70.9786, 40.5069 - 1.16, 11.3744, 10.1462, 19.4918, 111.632, 71.1304, 40.4544 - 1.161, 11.3845, 10.1693, 19.1453, 111.732, 71.2853, 40.3994 - 1.162, 11.3947, 10.135, 18.8215, 111.832, 71.4413, 40.3433 - 1.163, 11.4048, 10.0488, 18.5341, 111.93, 71.5959, 40.2879 - 1.164, 11.4148, 9.92439, 18.2954, 112.028, 71.7469, 40.235 - 1.165, 11.4247, 9.78183, 18.1153, 112.124, 71.8931, 40.1855 - 1.166, 11.4344, 9.6439, 18.0016, 112.218, 72.0344, 40.1394 - 1.167, 11.4439, 9.53265, 17.959, 112.312, 72.172, 40.0957 - 1.168, 11.4534, 9.46585, 17.9892, 112.405, 72.3074, 40.0532 - 1.169, 11.4629, 9.45415, 18.0905, 112.497, 72.4423, 40.0109 - 1.17, 11.4723, 9.49937, 18.2585, 112.59, 72.578, 39.9681 - 1.171, 11.4819, 9.59423, 18.4854, 112.685, 72.7153, 39.9243 - 1.172, 11.4915, 9.72352, 18.7612, 112.78, 72.855, 39.8792 - 1.173, 11.5013, 9.86653, 19.0733, 112.877, 72.9979, 39.8324 - 1.174, 11.5113, 10.0004, 19.4076, 112.975, 73.1445, 39.7833 - 1.175, 11.5213, 10.1037, 19.7492, 113.074, 73.295, 39.7315 - 1.176, 11.5315, 10.1599, 20.0825, 113.174, 73.4487, 39.6774 - 1.177, 11.5416, 10.1601, 20.3925, 113.273, 73.604, 39.622 - 1.178, 11.5518, 10.1043, 20.6651, 113.372, 73.7587, 39.5669 - 1.179, 11.5619, 10.0015, 20.8878, 113.471, 73.9104, 39.5141 - 1.18, 11.5718, 9.8682, 21.0507, 113.567, 74.0574, 39.4646 - 1.181, 11.5816, 9.72565, 21.1463, 113.663, 74.1993, 39.4187 - 1.182, 11.5912, 9.59672, 21.1704, 113.757, 74.3371, 39.3756 - 1.183, 11.6008, 9.50201, 21.1221, 113.85, 74.4724, 39.3337 - 1.184, 11.6102, 9.45663, 21.0037, 113.943, 74.6072, 39.2917 - 1.185, 11.6197, 9.46781, 20.8211, 114.036, 74.7431, 39.2485 - 1.186, 11.6292, 9.53371, 20.5831, 114.129, 74.8812, 39.2035 - 1.187, 11.6388, 9.64374, 20.3009, 114.224, 75.0219, 39.1567 - 1.188, 11.6485, 9.78027, 19.9883, 114.32, 75.1657, 39.1082 - 1.189, 11.6583, 9.92143, 19.6601, 114.417, 75.3126, 39.0579 - 1.19, 11.6683, 10.0447, 19.3321, 114.516, 75.4627, 39.0058 - 1.191, 11.6784, 10.1303, 19.0202, 114.615, 75.6155, 38.9522 - 1.192, 11.6886, 10.1646, 18.7394, 114.715, 75.7695, 38.8979 - 1.193, 11.6987, 10.1421, 18.5031, 114.814, 75.9231, 38.8442 - 1.194, 11.7089, 10.0666, 18.3229, 114.913, 76.0739, 38.7926 - 1.195, 11.7189, 9.95009, 18.2073, 115.011, 76.2205, 38.7443 - 1.196, 11.7288, 9.81127, 18.1618, 115.107, 76.3622, 38.6996 - 1.197, 11.7385, 9.67237, 18.1886, 115.202, 76.4997, 38.6574 - 1.198, 11.7481, 9.5556, 18.2861, 115.296, 76.635, 38.6163 - 1.199, 11.7576, 9.47961, 18.4493, 115.389, 76.7701, 38.5744 - 1.2, 11.7671, 9.45653, 18.6698, 115.481, 76.907, 38.5302 - 1.201, 11.7765, 9.48999, 18.9365, 115.574, 77.0467, 38.4833 - 1.202, 11.786, 9.57461, 19.236, 115.668, 77.1896, 38.4338 - 1.203, 11.7957, 9.69681, 19.5529, 115.763, 77.3354, 38.3826 - 1.204, 11.8054, 9.837, 19.8712, 115.86, 77.4835, 38.3303 - 1.205, 11.8153, 9.97276, 20.1748, 115.958, 77.6334, 38.2776 - 1.206, 11.8254, 10.0824, 20.4483, 116.057, 77.7846, 38.2249 - 1.207, 11.8355, 10.1483, 20.6776, 116.156, 77.9362, 38.1727 - 1.208, 11.8457, 10.1601, 20.8511, 116.256, 78.087, 38.1217 - 1.209, 11.8558, 10.1159, 20.9602, 116.355, 78.2355, 38.0729 - 1.21, 11.8659, 10.0228, 20.9991, 116.453, 78.3805, 38.0267 - 1.211, 11.8759, 9.89576, 20.9663, 116.551, 78.5216, 37.9833 - 1.212, 11.8857, 9.75508, 20.8634, 116.646, 78.6596, 37.9416 - 1.213, 11.8954, 9.6233, 20.6962, 116.741, 78.796, 37.9001 - 1.214, 11.9049, 9.52149, 20.4734, 116.834, 78.933, 37.8568 - 1.215, 11.9144, 9.46591, 20.2071, 116.927, 79.0723, 37.8105 - 1.216, 11.9239, 9.46541, 19.9113, 117.02, 79.2149, 37.7607 - 1.217, 11.9334, 9.52001, 19.6018, 117.113, 79.3605, 37.7081 - 1.218, 11.9429, 9.62096, 19.2951, 117.208, 79.5083, 37.6543 - 1.219, 11.9526, 9.75205, 19.0076, 117.303, 79.657, 37.6006 - 1.22, 11.9624, 9.8923, 18.7545, 117.4, 79.8056, 37.5483 - 1.221, 11.9724, 10.0193, 18.5495, 117.499, 79.9538, 37.4979 - 1.222, 11.9825, 10.1127, 18.4033, 117.598, 80.1011, 37.4494 - 1.223, 11.9926, 10.1576, 18.3239, 117.697, 80.2476, 37.4025 - 1.224, 12.0028, 10.1469, 18.3153, 117.797, 80.3927, 37.3571 - 1.225, 12.0129, 10.0823, 18.3777, 117.896, 80.5362, 37.3129 - 1.226, 12.0229, 9.97421, 18.5077, 117.994, 80.6779, 37.2696 - 1.227, 12.0329, 9.83996, 18.6979, 118.09, 80.8183, 37.2264 - 1.228, 12.0426, 9.70102, 18.9377, 118.185, 80.9584, 37.1821 - 1.229, 12.0523, 9.57962, 19.2138, 118.279, 81.0994, 37.1355 - 1.23, 12.0618, 9.49517, 19.5108, 118.373, 81.2425, 37.0858 - 1.231, 12.0712, 9.46114, 19.8122, 118.465, 81.3881, 37.0332 - 1.232, 12.0807, 9.48293, 20.1012, 118.558, 81.5354, 36.9787 - 1.233, 12.0902, 9.55702, 20.3617, 118.652, 81.6833, 36.9243 - 1.234, 12.0998, 9.6715, 20.5792, 118.747, 81.8302, 36.8717 - 1.235, 12.1096, 9.80805, 20.7415, 118.843, 81.9753, 36.8221 - 1.236, 12.1194, 9.94479, 20.8398, 118.941, 82.1186, 36.7756 - 1.237, 12.1294, 10.0599, 20.8685, 119.039, 82.2608, 36.7316 - 1.238, 12.1396, 10.1349, 20.8263, 119.139, 82.403, 36.6885 - 1.239, 12.1497, 10.1579, 20.7156, 119.239, 82.5459, 36.6452 - 1.24, 12.1599, 10.1252, 20.5431, 119.338, 82.69, 36.6007 - 1.241, 12.17, 10.0422, 20.3187, 119.436, 82.8351, 36.5546 - 1.242, 12.18, 9.92206, 20.0553, 119.534, 82.9807, 36.507 - 1.243, 12.1898, 9.78412, 19.7684, 119.63, 83.1266, 36.4578 - 1.244, 12.1995, 9.65043, 19.4744, 119.724, 83.2726, 36.4071 - 1.245, 12.2091, 9.54236, 19.1905, 119.818, 83.4188, 36.3549 - 1.246, 12.2186, 9.47719, 18.933, 119.911, 83.5651, 36.3019 - 1.247, 12.2281, 9.4653, 18.7169, 120.004, 83.7107, 36.2491 - 1.248, 12.2375, 9.50855, 18.5547, 120.097, 83.855, 36.1979 - 1.249, 12.2471, 9.59998, 18.4557, 120.191, 83.9973, 36.1493 - 1.25, 12.2567, 9.72492, 18.4257, 120.287, 84.1374, 36.1038 - 1.251, 12.2665, 9.86337, 18.4662, 120.383, 84.2763, 36.0609 - 1.252, 12.2765, 9.99318, 18.5746, 120.481, 84.4154, 36.0191 - 1.253, 12.2865, 10.0936, 18.7444, 120.58, 84.5566, 35.9764 - 1.254, 12.2967, 10.1486, 18.9653, 120.68, 84.7011, 35.9313 - 1.255, 12.3068, 10.1493, 19.2241, 120.78, 84.8492, 35.883 - 1.256, 12.317, 10.0958, 19.5051, 120.879, 84.9998, 35.8318 - 1.257, 12.327, 9.99667, 19.7916, 120.977, 85.1513, 35.7791 - 1.258, 12.3369, 9.86773, 20.0663, 121.073, 85.3018, 35.7261 - 1.259, 12.3467, 9.72965, 20.3128, 121.169, 85.4501, 35.674 - 1.26, 12.3564, 9.60454, 20.5161, 121.263, 85.5954, 35.6235 - 1.261, 12.366, 9.51239, 20.6641, 121.356, 85.738, 35.5746 - 1.262, 12.3754, 9.46791, 20.748, 121.449, 85.8783, 35.5272 - 1.263, 12.3849, 9.47817, 20.7628, 121.542, 86.017, 35.4813 - 1.264, 12.3944, 9.54151, 20.7078, 121.636, 86.1549, 35.4366 - 1.265, 12.404, 9.64773, 20.5865, 121.731, 86.2927, 35.3927 - 1.266, 12.4137, 9.77982, 20.4065, 121.827, 86.4316, 35.3489 - 1.267, 12.4235, 9.91664, 20.1791, 121.924, 86.5731, 35.3041 - 1.268, 12.4335, 10.0363, 19.9183, 122.022, 86.718, 35.257 - 1.269, 12.4436, 10.1197, 19.6404, 122.122, 86.867, 35.207 - 1.27, 12.4538, 10.1534, 19.3626, 122.221, 87.0193, 35.1544 - 1.271, 12.4639, 10.1322, 19.1022, 122.321, 87.1731, 35.1003 - 1.272, 12.474, 10.0595, 18.8753, 122.419, 87.326, 35.0467 - 1.273, 12.484, 9.94699, 18.696, 122.517, 87.4757, 34.9953 - 1.274, 12.4939, 9.81261, 18.5755, 122.613, 87.6209, 34.947 - 1.275, 12.5037, 9.67792, 18.5211, 122.708, 87.7616, 34.9018 - 1.276, 12.5133, 9.56446, 18.5362, 122.802, 87.8991, 34.8585 - 1.277, 12.5228, 9.49036, 18.6195, 122.895, 88.0353, 34.8156 - 1.278, 12.5322, 9.46744, 18.7657, 122.988, 88.1722, 34.7715 - 1.279, 12.5417, 9.49933, 18.9654, 123.081, 88.3111, 34.7255 - 1.28, 12.5512, 9.58088, 19.2056, 123.175, 88.4526, 34.6774 - 1.281, 12.5609, 9.69901, 19.4711, 123.27, 88.5969, 34.6277 - 1.282, 12.5706, 9.8348, 19.7449, 123.367, 88.7436, 34.5768 - 1.283, 12.5805, 9.96652, 20.0093, 123.464, 88.8924, 34.5252 - 1.284, 12.5906, 10.0731, 20.2475, 123.563, 89.0426, 34.4735 - 1.285, 12.6007, 10.1375, 20.4442, 123.663, 89.1933, 34.4221 - 1.286, 12.6109, 10.1495, 20.5868, 123.762, 89.3432, 34.3718 - 1.287, 12.621, 10.1072, 20.6663, 123.861, 89.4911, 34.3234 - 1.288, 12.6311, 10.0174, 20.6777, 123.96, 89.6359, 34.2774 - 1.289, 12.641, 9.89445, 20.6203, 124.057, 89.7775, 34.2336 - 1.29, 12.6509, 9.75812, 20.4981, 124.152, 89.9165, 34.1908 - 1.291, 12.6605, 9.63019, 20.3192, 124.247, 90.0547, 34.1475 - 1.292, 12.6701, 9.53113, 20.0954, 124.34, 90.194, 34.102 - 1.293, 12.6796, 9.47674, 19.8416, 124.433, 90.3358, 34.0534 - 1.294, 12.6891, 9.47569, 19.5743, 124.526, 90.4804, 34.0017 - 1.295, 12.6986, 9.52812, 19.3114, 124.62, 90.6271, 33.9482 - 1.296, 12.7081, 9.62559, 19.0699, 124.714, 90.7746, 33.8947 - 1.297, 12.7178, 9.75247, 18.866, 124.81, 90.9215, 33.8429 - 1.298, 12.7276, 9.88846, 18.713, 124.907, 91.067, 33.7936 - 1.299, 12.7376, 10.0118, 18.6209, 125.005, 91.2113, 33.747 - 1.3, 12.7477, 10.1028, 18.5957, 125.104, 91.3548, 33.7022 - 1.301, 12.7578, 10.1468, 18.639, 125.204, 91.4983, 33.658 - 1.302, 12.7679, 10.137, 18.7476, 125.303, 91.6424, 33.6135 - 1.303, 12.7781, 10.0749, 18.9143, 125.402, 91.7871, 33.5681 - 1.304, 12.7881, 9.97043, 19.1275, 125.5, 91.9322, 33.5214 - 1.305, 12.798, 9.8404, 19.3729, 125.596, 92.0775, 33.4733 - 1.306, 12.8078, 9.70562, 19.6339, 125.692, 92.223, 33.4237 - 1.307, 12.8174, 9.58763, 19.8927, 125.786, 92.3686, 33.3727 - 1.308, 12.827, 9.5053, 20.132, 125.879, 92.5142, 33.3206 - 1.309, 12.8364, 9.47176, 20.3354, 125.972, 92.6595, 33.2684 - 1.31, 12.8459, 9.49235, 20.4892, 126.065, 92.8037, 33.2172 - 1.311, 12.8554, 9.56373, 20.5831, 126.159, 92.9461, 33.1682 - 1.312, 12.865, 9.67444, 20.6109, 126.254, 93.0865, 33.122 - 1.313, 12.8748, 9.80675, 20.5707, 126.35, 93.2257, 33.0782 - 1.314, 12.8846, 9.93948, 20.4654, 126.447, 93.3651, 33.0356 - 1.315, 12.8946, 10.0514, 20.3025, 126.546, 93.5064, 32.9923 - 1.316, 12.9047, 10.1246, 20.0934, 126.645, 93.6512, 32.9466 - 1.317, 12.9149, 10.1475, 19.8524, 126.745, 93.7996, 32.8977 - 1.318, 12.925, 10.1163, 19.5965, 126.844, 93.9509, 32.8461 - 1.319, 12.9351, 10.0362, 19.3433, 126.943, 94.1031, 32.793 - 1.32, 12.9451, 9.91998, 19.1104, 127.04, 94.2539, 32.7401 - 1.321, 12.955, 9.78625, 18.914, 127.136, 94.4018, 32.689 - 1.322, 12.9647, 9.65641, 18.7677, 127.231, 94.546, 32.6401 - 1.323, 12.9743, 9.55124, 18.6815, 127.324, 94.6868, 32.5934 - 1.324, 12.9838, 9.48753, 18.6614, 127.417, 94.8254, 32.548 - 1.325, 12.9933, 9.47545, 18.7086, 127.51, 94.963, 32.5033 - 1.326, 13.0027, 9.51689, 18.8196, 127.604, 95.1009, 32.4583 - 1.327, 13.0123, 9.60517, 18.9865, 127.698, 95.2401, 32.4128 - 1.328, 13.0219, 9.72615, 19.1974, 127.793, 95.3815, 32.3661 - 1.329, 13.0317, 9.86045, 19.4373, 127.89, 95.5256, 32.3181 - 1.33, 13.0417, 9.98658, 19.6891, 127.988, 95.6727, 32.2684 - 1.331, 13.0517, 10.0844, 19.9349, 128.087, 95.8226, 32.2171 - 1.332, 13.0618, 10.1382, 20.1573, 128.186, 95.9743, 32.1648 - 1.333, 13.072, 10.1395, 20.3405, 128.286, 96.1261, 32.1126 - 1.334, 13.0821, 10.0881, 20.4714, 128.385, 96.2761, 32.062 - 1.335, 13.0922, 9.99227, 20.541, 128.483, 96.4227, 32.0141 - 1.336, 13.1021, 9.86734, 20.5443, 128.58, 96.5652, 31.9689 - 1.337, 13.1119, 9.73334, 20.4813, 128.675, 96.7044, 31.9258 - 1.338, 13.1216, 9.61171, 20.3565, 128.769, 96.842, 31.8829 - 1.339, 13.1311, 9.52187, 20.1793, 128.863, 96.9801, 31.8385 - 1.34, 13.1406, 9.47819, 19.9624, 128.956, 97.1205, 31.7912 - 1.341, 13.1501, 9.48761, 19.7216, 129.049, 97.2637, 31.7409 - 1.342, 13.1596, 9.54859, 19.4745, 129.143, 97.4095, 31.6884 - 1.343, 13.1692, 9.65133, 19.239, 129.237, 97.5566, 31.6355 - 1.344, 13.1789, 9.77937, 19.0321, 129.333, 97.7038, 31.5837 - 1.345, 13.1887, 9.91222, 18.8689, 129.43, 97.8501, 31.5339 - 1.346, 13.1987, 10.0286, 18.7612, 129.529, 97.9955, 31.4864 - 1.347, 13.2088, 10.11, 18.7167, 129.628, 98.1402, 31.4405 - 1.348, 13.2189, 10.1433, 18.7385, 129.727, 98.2846, 31.3955 - 1.349, 13.2291, 10.1233, 18.825, 129.827, 98.4291, 31.3506 - 1.35, 13.2392, 10.0531, 18.9695, 129.925, 98.5736, 31.3051 - 1.351, 13.2492, 9.9442, 19.1613, 130.023, 98.7182, 31.2587 - 1.352, 13.2591, 9.81387, 19.3862, 130.119, 98.8629, 31.2109 - 1.353, 13.2688, 9.68302, 19.6274, 130.214, 99.0077, 31.1617 - 1.354, 13.2784, 9.57258, 19.8672, 130.308, 99.1528, 31.111 - 1.355, 13.288, 9.50019, 20.0876, 130.401, 99.2982, 31.0591 - 1.356, 13.2974, 9.4774, 20.2724, 130.494, 99.4432, 31.0071 - 1.357, 13.3069, 9.50783, 20.408, 130.588, 99.5871, 30.9563 - 1.358, 13.3164, 9.58656, 20.4842, 130.682, 99.7292, 30.9078 - 1.359, 13.3261, 9.70098, 20.4957, 130.777, 99.8695, 30.862 - 1.36, 13.3358, 9.83275, 20.4415, 130.873, 100.009, 30.8183 - 1.361, 13.3457, 9.96078, 20.3261, 130.971, 100.149, 30.7752 - 1.362, 13.3558, 10.0646, 20.1581, 131.07, 100.291, 30.731 - 1.363, 13.3659, 10.1276, 19.9503, 131.169, 100.437, 30.6842 - 1.364, 13.376, 10.1398, 19.7185, 131.269, 100.587, 30.6342 - 1.365, 13.3862, 10.0992, 19.4801, 131.368, 100.739, 30.5819 - 1.366, 13.3962, 10.0124, 19.2533, 131.466, 100.891, 30.5289 - 1.367, 13.4062, 9.89329, 19.0551, 131.563, 101.04, 30.4769 - 1.368, 13.416, 9.76094, 18.9005, 131.659, 101.187, 30.4271 - 1.369, 13.4257, 9.63653, 18.8011, 131.753, 101.329, 30.3798 - 1.37, 13.4353, 9.53995, 18.7644, 131.847, 101.468, 30.3343 - 1.371, 13.4448, 9.48664, 18.793, 131.94, 101.606, 30.2897 - 1.372, 13.4543, 9.48509, 18.8847, 132.033, 101.744, 30.2448 - 1.373, 13.4638, 9.5355, 19.0321, 132.126, 101.883, 30.199 - 1.374, 13.4733, 9.62978, 19.224, 132.221, 102.024, 30.1518 - 1.375, 13.483, 9.75282, 19.4456, 132.317, 102.167, 30.1033 - 1.376, 13.4928, 9.88491, 19.6797, 132.414, 102.314, 30.0536 - 1.377, 13.5028, 10.0049, 19.9082, 132.512, 102.462, 30.0028 - 1.378, 13.5128, 10.0937, 20.1138, 132.611, 102.612, 29.9515 - 1.379, 13.523, 10.137, 20.2804, 132.71, 102.762, 29.9004 - 1.38, 13.5331, 10.128, 20.3953, 132.809, 102.912, 29.8504 - 1.381, 13.5432, 10.0681, 20.4498, 132.908, 103.059, 29.8024 - 1.382, 13.5533, 9.967, 20.4397, 133.006, 103.203, 29.7567 - 1.383, 13.5632, 9.84085, 20.366, 133.103, 103.344, 29.7127 - 1.384, 13.5729, 9.70986, 20.2346, 133.198, 103.484, 29.6691 - 1.385, 13.5826, 9.59498, 20.0557, 133.292, 103.623, 29.6243 - 1.386, 13.5921, 9.51458, 19.8436, 133.385, 103.764, 29.5768 - 1.387, 13.6016, 9.48148, 19.6148, 133.478, 103.908, 29.5264 - 1.388, 13.6111, 9.50095, 19.3872, 133.571, 104.053, 29.4738 - 1.389, 13.6206, 9.56984, 19.1787, 133.665, 104.2, 29.4208 - 1.39, 13.6302, 9.67709, 19.0057, 133.76, 104.346, 29.369 - 1.391, 13.64, 9.80552, 18.8816, 133.856, 104.491, 29.3199 - 1.392, 13.6498, 9.93457, 18.8161, 133.954, 104.634, 29.2736 - 1.393, 13.6598, 10.0436, 18.8143, 134.052, 104.776, 29.2292 - 1.394, 13.6699, 10.1152, 18.8761, 134.152, 104.919, 29.1853 - 1.395, 13.6801, 10.1379, 18.9965, 134.251, 105.063, 29.1404 - 1.396, 13.6902, 10.1082, 19.1659, 134.35, 105.21, 29.0936 - 1.397, 13.7003, 10.0308, 19.3706, 134.449, 105.357, 29.045 - 1.398, 13.7103, 9.91811, 19.5945, 134.546, 105.505, 28.9948 - 1.399, 13.7201, 9.78823, 19.8195, 134.642, 105.653, 28.944 - 1.4, 13.7298, 9.66193, 20.0279, 134.737, 105.799, 28.8931 - 1.401, 13.7394, 9.55939, 20.2029, 134.831, 105.944, 28.8427 - 1.402, 13.749, 9.49702, 20.3307, 134.924, 106.087, 28.7933 - 1.403, 13.7584, 9.48475, 20.4011, 135.017, 106.228, 28.7451 - 1.404, 13.7679, 9.5245, 20.4087, 135.11, 106.368, 28.6984 - 1.405, 13.7775, 9.6099, 20.3529, 135.205, 106.507, 28.653 - 1.406, 13.7871, 9.72724, 20.2384, 135.3, 106.646, 28.6084 - 1.407, 13.7969, 9.85773, 20.0746, 135.397, 106.787, 28.5635 - 1.408, 13.8069, 9.98049, 19.8747, 135.495, 106.931, 28.5171 - 1.409, 13.8169, 10.0759, 19.6549, 135.593, 107.078, 28.4682 - 1.41, 13.827, 10.1287, 19.4331, 135.693, 107.228, 28.417 - 1.411, 13.8372, 10.1305, 19.2273, 135.792, 107.381, 28.3643 - 1.412, 13.8473, 10.081, 19.054, 135.891, 107.532, 28.3119 - 1.413, 13.8573, 9.98826, 18.9273, 135.989, 107.682, 28.2614 - 1.414, 13.8673, 9.86703, 18.8574, 136.086, 107.827, 28.2139 - 1.415, 13.8771, 9.73676, 18.8498, 136.181, 107.967, 28.1691 - 1.416, 13.8867, 9.6183, 18.905, 136.276, 108.106, 28.1257 - 1.417, 13.8963, 9.53059, 19.0184, 136.369, 108.243, 28.0818 - 1.418, 13.9058, 9.48762, 19.1806, 136.462, 108.382, 28.036 - 1.419, 13.9153, 9.49625, 19.3782, 136.555, 108.524, 27.9875 - 1.42, 13.9248, 9.55506, 19.5949, 136.649, 108.668, 27.9367 - 1.421, 13.9344, 9.6546, 19.8129, 136.744, 108.814, 27.8848 - 1.422, 13.9441, 9.77892, 20.0143, 136.84, 108.961, 27.8331 - 1.423, 13.9539, 9.90813, 20.1825, 136.937, 109.108, 27.7829 - 1.424, 13.9639, 10.0216, 20.3038, 137.035, 109.254, 27.7344 - 1.425, 13.974, 10.1011, 20.3682, 137.134, 109.4, 27.6875 - 1.426, 13.9841, 10.134, 20.3705, 137.234, 109.545, 27.6417 - 1.427, 13.9942, 10.115, 20.3107, 137.333, 109.69, 27.5962 - 1.428, 14.0043, 10.0473, 20.1939, 137.432, 109.834, 27.5505 - 1.429, 14.0143, 9.94168, 20.0299, 137.529, 109.979, 27.5041 - 1.43, 14.0242, 9.81507, 19.8323, 137.625, 110.123, 27.4566 - 1.431, 14.034, 9.68774, 19.6178, 137.72, 110.268, 27.4077 - 1.432, 14.0436, 9.58005, 19.4042, 137.814, 110.413, 27.3573 - 1.433, 14.0531, 9.50922, 19.2094, 137.908, 110.558, 27.306 - 1.434, 14.0626, 9.48654, 19.0495, 138.001, 110.702, 27.2545 - 1.435, 14.0721, 9.51562, 18.9379, 138.094, 110.846, 27.2043 - 1.436, 14.0816, 9.59176, 18.8838, 138.188, 110.987, 27.1562 - 1.437, 14.0913, 9.70275, 18.8916, 138.283, 111.128, 27.1105 - 1.438, 14.1011, 9.83082, 18.9605, 138.38, 111.267, 27.0665 - 1.439, 14.1109, 9.95547, 19.0846, 138.478, 111.408, 27.0228 - 1.44, 14.121, 10.0568, 19.2534, 138.576, 111.551, 26.9774 - 1.441, 14.1311, 10.1185, 19.4525, 138.675, 111.699, 26.9294 - 1.442, 14.1412, 10.1309, 19.6651, 138.775, 111.849, 26.8785 - 1.443, 14.1513, 10.0919, 19.8731, 138.874, 112.001, 26.8259 - 1.444, 14.1614, 10.0079, 20.059, 138.972, 112.152, 26.7734 - 1.445, 14.1713, 9.89227, 20.2071, 139.069, 112.301, 26.7227 - 1.446, 14.1812, 9.76356, 20.3049, 139.165, 112.445, 26.6746 - 1.447, 14.1909, 9.64237, 20.3442, 139.259, 112.586, 26.629 - 1.448, 14.2005, 9.54808, 20.3218, 139.353, 112.724, 26.5847 - 1.449, 14.21, 9.49575, 20.2397, 139.446, 112.862, 26.5403 - 1.45, 14.2194, 9.49371, 20.1051, 139.539, 113.001, 26.4944 - 1.451, 14.229, 9.54226, 19.9295, 139.633, 113.142, 26.4465 - 1.452, 14.2385, 9.63361, 19.7281, 139.727, 113.285, 26.3969 - 1.453, 14.2482, 9.7531, 19.5181, 139.823, 113.431, 26.3463 - 1.454, 14.258, 9.88161, 19.3175, 139.92, 113.578, 26.2955 - 1.455, 14.268, 9.99858, 19.1435, 140.018, 113.726, 26.2451 - 1.456, 14.278, 10.0853, 19.011, 140.117, 113.874, 26.1957 - 1.457, 14.2882, 10.1279, 18.9313, 140.216, 114.022, 26.1475 - 1.458, 14.2983, 10.1197, 18.9112, 140.316, 114.168, 26.1005 - 1.459, 14.3084, 10.0619, 18.9521, 140.414, 114.313, 26.0546 - 1.46, 14.3184, 9.96388, 19.0506, 140.512, 114.457, 26.0093 - 1.461, 14.3283, 9.8413, 19.198, 140.609, 114.599, 25.9639 - 1.462, 14.3381, 9.7138, 19.3813, 140.704, 114.742, 25.9174 - 1.463, 14.3477, 9.60178, 19.5847, 140.798, 114.885, 25.8689 - 1.464, 14.3573, 9.52313, 19.7905, 140.892, 115.029, 25.8184 - 1.465, 14.3668, 9.49042, 19.9809, 140.985, 115.174, 25.7665 - 1.466, 14.3763, 9.50885, 20.1392, 141.078, 115.319, 25.7145 - 1.467, 14.3858, 9.57543, 20.2519, 141.172, 115.463, 25.6641 - 1.468, 14.3954, 9.67949, 20.3092, 141.267, 115.606, 25.6163 - 1.469, 14.4052, 9.80435, 20.3062, 141.363, 115.746, 25.5711 - 1.47, 14.415, 9.93003, 20.2433, 141.461, 115.887, 25.5274 - 1.471, 14.425, 10.0364, 20.1261, 141.559, 116.028, 25.4834 - 1.472, 14.4351, 10.1065, 19.965, 141.658, 116.173, 25.4375 - 1.473, 14.4452, 10.1292, 19.7743, 141.758, 116.321, 25.3888 - 1.474, 14.4554, 10.1007, 19.5706, 141.857, 116.472, 25.3376 - 1.475, 14.4654, 10.0258, 19.3719, 141.955, 116.623, 25.2852 - 1.476, 14.4754, 9.91643, 19.1956, 142.052, 116.773, 25.2334 - 1.477, 14.4853, 9.7901, 19.0573, 142.148, 116.92, 25.1836 - 1.478, 14.495, 9.66704, 18.969, 142.243, 117.062, 25.1361 - 1.479, 14.5046, 9.56692, 18.9383, 142.337, 117.202, 25.0905 - 1.48, 14.5141, 9.50576, 18.968, 142.43, 117.34, 25.0457 - 1.481, 14.5236, 9.4933, 19.0552, 142.523, 117.479, 25.0004 - 1.482, 14.5331, 9.5315, 19.1921, 142.617, 117.618, 24.9538 - 1.483, 14.5427, 9.61422, 19.3664, 142.711, 117.76, 24.9057 - 1.484, 14.5524, 9.7282, 19.5627, 142.807, 117.905, 24.8564 - 1.485, 14.5621, 9.85519, 19.7635, 142.903, 118.051, 24.8062 - 1.486, 14.5721, 9.97486, 19.9509, 143.001, 118.199, 24.7557 - 1.487, 14.5821, 10.0681, 20.1082, 143.1, 118.347, 24.7055 - 1.488, 14.5922, 10.12, 20.2216, 143.199, 118.496, 24.6561 - 1.489, 14.6023, 10.1222, 20.2809, 143.298, 118.644, 24.6078 - 1.49, 14.6124, 10.0746, 20.2811, 143.397, 118.79, 24.561 - 1.491, 14.6225, 9.9846, 20.2222, 143.495, 118.934, 24.5155 - 1.492, 14.6324, 9.86678, 20.1096, 143.592, 119.076, 24.4705 - 1.493, 14.6422, 9.73995, 19.9535, 143.688, 119.217, 24.425 - 1.494, 14.6519, 9.62441, 19.768, 143.782, 119.36, 24.3778 - 1.495, 14.6615, 9.53863, 19.5698, 143.876, 119.503, 24.3283 - 1.496, 14.671, 9.49632, 19.3767, 143.969, 119.648, 24.2769 - 1.497, 14.6805, 9.5042, 19.2061, 144.062, 119.793, 24.2247 - 1.498, 14.69, 9.56099, 19.0733, 144.156, 119.938, 24.1733 - 1.499, 14.6996, 9.65757, 18.9902, 144.251, 120.081, 24.1243 - 1.5, 14.7093, 9.77847, 18.9641, 144.346, 120.223, 24.0781 - 1.501, 14.7191, 9.90433, 18.9974, 144.444, 120.363, 24.0339 - 1.502, 14.7291, 10.015, 19.0869, 144.542, 120.505, 23.9901 - 1.503, 14.7392, 10.0928, 19.2243, 144.641, 120.648, 23.945 - 1.504, 14.7493, 10.1254, 19.3972, 144.74, 120.795, 23.8973 - 1.505, 14.7594, 10.1074, 19.5897, 144.839, 120.945, 23.8469 - 1.506, 14.7695, 10.0419, 19.7844, 144.938, 121.096, 23.795 - 1.507, 14.7795, 9.93939, 19.9636, 145.035, 121.246, 23.743 - 1.508, 14.7894, 9.81621, 20.111, 145.132, 121.394, 23.6926 - 1.509, 14.7991, 9.69212, 20.2132, 145.227, 121.538, 23.6444 - 1.51, 14.8088, 9.58697, 20.261, 145.321, 121.678, 23.5982 - 1.511, 14.8183, 9.51756, 20.2501, 145.414, 121.817, 23.5531 - 1.512, 14.8278, 9.49497, 20.1818, 145.507, 121.955, 23.5079 - 1.513, 14.8373, 9.52278, 20.0623, 145.601, 122.095, 23.4616 - 1.514, 14.8468, 9.59652, 19.9026, 145.695, 122.236, 23.4139 - 1.515, 14.8565, 9.70435, 19.7176, 145.79, 122.38, 23.3648 - 1.516, 14.8663, 9.82901, 19.5242, 145.886, 122.525, 23.3149 - 1.517, 14.8761, 9.95055, 19.3401, 145.984, 122.673, 23.2645 - 1.518, 14.8862, 10.0495, 19.1823, 146.083, 122.821, 23.2143 - 1.519, 14.8962, 10.1101, 19.0653, 146.182, 122.97, 23.1648 - 1.52, 14.9064, 10.1227, 18.9997, 146.281, 123.118, 23.1164 - 1.521, 14.9165, 10.0852, 18.9914, 146.38, 123.264, 23.0693 - 1.522, 14.9265, 10.0038, 19.0412, 146.478, 123.408, 23.0235 - 1.523, 14.9365, 9.89136, 19.1443, 146.575, 123.551, 22.9784 - 1.524, 14.9463, 9.76602, 19.291, 146.671, 123.693, 22.9328 - 1.525, 14.956, 9.6478, 19.4678, 146.766, 123.835, 22.8857 - 1.526, 14.9656, 9.5556, 19.6581, 146.859, 123.979, 22.8365 - 1.527, 14.9751, 9.50416, 19.8443, 146.953, 124.123, 22.7854 - 1.528, 14.9846, 9.50166, 20.0092, 147.046, 124.268, 22.7334 - 1.529, 14.9941, 9.54849, 20.1374, 147.14, 124.413, 22.6821 - 1.53, 15.0037, 9.63711, 20.2171, 147.234, 124.556, 22.633 - 1.531, 15.0134, 9.75333, 20.2411, 147.33, 124.698, 22.5866 - 1.532, 15.0232, 9.87854, 20.207, 147.427, 124.838, 22.5422 - 1.533, 15.0332, 9.9927, 20.1184, 147.525, 124.979, 22.4983 - 1.534, 15.0432, 10.0776, 19.9835, 147.624, 125.123, 22.4532 - 1.535, 15.0533, 10.1196, 19.815, 147.723, 125.27, 22.4054 - 1.536, 15.0635, 10.1121, 19.6288, 147.822, 125.42, 22.3551 - 1.537, 15.0736, 10.0562, 19.4423, 147.921, 125.571, 22.303 - 1.538, 15.0836, 9.96103, 19.273, 148.018, 125.721, 22.2511 - 1.539, 15.0935, 9.84175, 19.1368, 148.115, 125.869, 22.2008 - 1.54, 15.1033, 9.71747, 19.0462, 148.21, 126.013, 22.1528 - 1.541, 15.1129, 9.60808, 19.0099, 148.305, 126.153, 22.107 - 1.542, 15.1225, 9.53104, 19.031, 148.398, 126.292, 22.0621 - 1.543, 15.132, 9.49868, 19.1075, 148.491, 126.43, 22.017 - 1.544, 15.1415, 9.51614, 19.2321, 148.585, 126.57, 21.9704 - 1.545, 15.151, 9.58058, 19.3929, 148.679, 126.712, 21.9222 - 1.546, 15.1606, 9.68168, 19.5746, 148.774, 126.856, 21.8725 - 1.547, 15.1704, 9.80324, 19.7601, 148.87, 127.002, 21.8221 - 1.548, 15.1802, 9.9258, 19.9319, 148.967, 127.149, 21.7718 - 1.549, 15.1902, 10.0298, 20.0736, 149.065, 127.297, 21.7221 - 1.55, 15.2003, 10.0985, 20.1719, 149.165, 127.444, 21.6733 - 1.551, 15.2104, 10.1211, 20.2176, 149.264, 127.591, 21.6256 - 1.552, 15.2205, 10.0938, 20.2065, 149.363, 127.737, 21.579 - 1.553, 15.2306, 10.0212, 20.1397, 149.461, 127.882, 21.5331 - 1.554, 15.2406, 9.91491, 20.0237, 149.558, 128.025, 21.4874 - 1.555, 15.2504, 9.79186, 19.8696, 149.655, 128.168, 21.441 - 1.556, 15.2602, 9.67179, 19.6922, 149.749, 128.311, 21.3931 - 1.557, 15.2698, 9.5739, 19.5084, 149.843, 128.455, 21.3435 - 1.558, 15.2793, 9.51385, 19.3358, 149.937, 128.6, 21.2924 - 1.559, 15.2888, 9.5012, 19.1908, 150.03, 128.745, 21.241 - 1.56, 15.2983, 9.53795, 19.0872, 150.123, 128.888, 21.1906 - 1.561, 15.3079, 9.61819, 19.0349, 150.218, 129.031, 21.1422 - 1.562, 15.3176, 9.72906, 19.0388, 150.313, 129.171, 21.0963 - 1.563, 15.3273, 9.85281, 19.0983, 150.41, 129.312, 21.052 - 1.564, 15.3373, 9.96963, 19.2077, 150.508, 129.453, 21.0076 - 1.565, 15.3473, 10.0608, 19.3564, 150.606, 129.597, 20.9617 - 1.566, 15.3574, 10.1119, 19.53, 150.706, 129.745, 20.9131 - 1.567, 15.3675, 10.1146, 19.7118, 150.805, 129.896, 20.862 - 1.568, 15.3776, 10.0686, 19.8842, 150.904, 130.047, 20.8097 - 1.569, 15.3876, 9.98125, 20.0307, 151.001, 130.197, 20.7581 - 1.57, 15.3976, 9.86658, 20.1371, 151.098, 130.344, 20.7086 - 1.571, 15.4074, 9.74293, 20.1934, 151.194, 130.487, 20.6617 - 1.572, 15.4171, 9.63009, 20.1942, 151.288, 130.627, 20.6168 - 1.573, 15.4266, 9.5461, 20.1394, 151.382, 130.765, 20.5725 - 1.574, 15.4361, 9.50437, 20.0346, 151.475, 130.904, 20.527 - 1.575, 15.4456, 9.51155, 19.8899, 151.569, 131.045, 20.4796 - 1.576, 15.4552, 9.56647, 19.7195, 151.662, 131.188, 20.43 - 1.577, 15.4648, 9.6603, 19.5399, 151.757, 131.333, 20.3791 - 1.578, 15.4745, 9.77802, 19.3685, 151.853, 131.479, 20.3281 - 1.579, 15.4843, 9.90078, 19.2221, 151.95, 131.626, 20.2781 - 1.58, 15.4943, 10.0089, 19.1148, 152.048, 131.772, 20.2295 - 1.581, 15.5044, 10.0852, 19.0569, 152.147, 131.918, 20.1823 - 1.582, 15.5145, 10.1174, 19.054, 152.247, 132.063, 20.136 - 1.583, 15.5246, 10.1004, 19.1063, 152.346, 132.209, 20.09 - 1.584, 15.5347, 10.037, 19.2085, 152.444, 132.354, 20.0437 - 1.585, 15.5447, 9.9373, 19.3507, 152.542, 132.499, 19.9966 - 1.586, 15.5545, 9.8173, 19.5187, 152.638, 132.644, 19.9485 - 1.587, 15.5643, 9.69621, 19.6962, 152.733, 132.789, 19.8992 - 1.588, 15.5739, 9.5934, 19.8658, 152.827, 132.934, 19.849 - 1.589, 15.5835, 9.5253, 20.0108, 152.921, 133.078, 19.7985 - 1.59, 15.593, 9.50277, 20.1171, 153.014, 133.221, 19.7485 - 1.591, 15.6025, 9.52941, 20.1744, 153.107, 133.363, 19.6998 - 1.592, 15.612, 9.60091, 20.1771, 153.201, 133.504, 19.6528 - 1.593, 15.6217, 9.7058, 20.125, 153.297, 133.644, 19.6074 - 1.594, 15.6315, 9.8273, 20.0234, 153.393, 133.784, 19.5625 - 1.595, 15.6413, 9.94596, 19.8824, 153.491, 133.927, 19.5169 - 1.596, 15.6513, 10.0428, 19.7159, 153.589, 134.073, 19.4693 - 1.597, 15.6614, 10.1023, 19.5405, 153.688, 134.222, 19.4193 - 1.598, 15.6715, 10.1151, 19.3733, 153.787, 134.373, 19.3676 - 1.599, 15.6817, 10.079, 19.2309, 153.886, 134.524, 19.3157 - 1.6, 15.6917, 9.99994, 19.1274, 153.984, 134.673, 19.2653 - 1.601, 15.7017, 9.89054, 19.0729, 154.081, 134.818, 19.2175 - 1.602, 15.7115, 9.76833, 19.0726, 154.177, 134.96, 19.1722 - 1.603, 15.7212, 9.65286, 19.1266, 154.272, 135.099, 19.1281 - 1.604, 15.7308, 9.56259, 19.2293, 154.366, 135.238, 19.0835 - 1.605, 15.7403, 9.51196, 19.3705, 154.459, 135.378, 19.0368 - 1.606, 15.7498, 9.50902, 19.5361, 154.552, 135.521, 18.9874 - 1.607, 15.7593, 9.55423, 19.7096, 154.646, 135.665, 18.9361 - 1.608, 15.7689, 9.64033, 19.8737, 154.741, 135.811, 18.8842 - 1.609, 15.7786, 9.75351, 20.0121, 154.836, 135.957, 18.8335 - 1.61, 15.7884, 9.87565, 20.1111, 154.933, 136.102, 18.7848 - 1.611, 15.7984, 9.98722, 20.161, 155.031, 136.246, 18.7384 - 1.612, 15.8084, 10.0704, 20.1567, 155.13, 136.39, 18.6932 - 1.613, 15.8185, 10.1118, 20.0989, 155.229, 136.534, 18.6479 - 1.614, 15.8286, 10.105, 19.9934, 155.328, 136.68, 18.6016 - 1.615, 15.8387, 10.051, 19.8509, 155.427, 136.827, 18.5536 - 1.616, 15.8487, 9.95842, 19.6856, 155.525, 136.974, 18.5042 - 1.617, 15.8586, 9.8422, 19.5142, 155.621, 137.122, 18.454 - 1.618, 15.8684, 9.72091, 19.3539, 155.717, 137.268, 18.4037 - 1.619, 15.8781, 9.61394, 19.2207, 155.811, 137.412, 18.3541 - 1.62, 15.8876, 9.5384, 19.1279, 155.904, 137.555, 18.3055 - 1.621, 15.8972, 9.50635, 19.0847, 155.998, 137.696, 18.2579 - 1.622, 15.9067, 9.52288, 19.0954, 156.091, 137.836, 18.2112 - 1.623, 15.9162, 9.58533, 19.1589, 156.185, 137.975, 18.1651 - 1.624, 15.9258, 9.68368, 19.2686, 156.28, 138.116, 18.1189 - 1.625, 15.9356, 9.80217, 19.4134, 156.376, 138.258, 18.0721 - 1.626, 15.9454, 9.92185, 19.5786, 156.474, 138.403, 18.024 - 1.627, 15.9554, 10.0236, 19.7476, 156.572, 138.551, 17.9744 - 1.628, 15.9655, 10.091, 19.9032, 156.671, 138.7, 17.9237 - 1.629, 15.9756, 10.1135, 20.0299, 156.77, 138.85, 17.8728 - 1.63, 15.9857, 10.0875, 20.1148, 156.869, 138.999, 17.823 - 1.631, 15.9958, 10.017, 20.1494, 156.967, 139.146, 17.775 - 1.632, 16.0057, 9.91352, 20.1304, 157.065, 139.29, 17.7291 - 1.633, 16.0156, 9.79352, 20.0597, 157.161, 139.431, 17.6844 - 1.634, 16.0253, 9.67623, 19.9446, 157.256, 139.571, 17.6395 - 1.635, 16.0349, 9.5804, 19.7969, 157.35, 139.712, 17.5929 - 1.636, 16.0445, 9.52136, 19.6316, 157.443, 139.855, 17.5438 - 1.637, 16.054, 9.50853, 19.4656, 157.536, 140, 17.4925 - 1.638, 16.0635, 9.54392, 19.3157, 157.63, 140.145, 17.4405 - 1.639, 16.0731, 9.62185, 19.1971, 157.724, 140.29, 17.3894 - 1.64, 16.0828, 9.72983, 19.1219, 157.82, 140.434, 17.3407 - 1.641, 16.0925, 9.85057, 19.0976, 157.916, 140.576, 17.2946 - 1.642, 16.1025, 9.96474, 19.1266, 158.014, 140.717, 17.2502 - 1.643, 16.1125, 10.0541, 19.2059, 158.113, 140.86, 17.2057 - 1.644, 16.1226, 10.1043, 19.3273, 158.212, 141.005, 17.1596 - 1.645, 16.1327, 10.1075, 19.4782, 158.311, 141.153, 17.111 - 1.646, 16.1428, 10.063, 19.6433, 158.41, 141.303, 17.0603 - 1.647, 16.1528, 9.97816, 19.8055, 158.508, 141.453, 17.0087 - 1.648, 16.1627, 9.86642, 19.9484, 158.604, 141.601, 16.9578 - 1.649, 16.1725, 9.74573, 20.0572, 158.7, 141.746, 16.9087 - 1.65, 16.1822, 9.63539, 20.121, 158.795, 141.889, 16.8616 - 1.651, 16.1918, 9.55304, 20.1332, 158.888, 142.028, 16.8159 - 1.652, 16.2013, 9.51185, 20.0926, 158.982, 142.167, 16.7704 - 1.653, 16.2108, 9.51837, 20.0037, 159.075, 142.306, 16.7242 - 1.654, 16.2204, 9.57154, 19.8755, 159.169, 142.447, 16.6767 - 1.655, 16.23, 9.66281, 19.7214, 159.264, 142.591, 16.6277 - 1.656, 16.2397, 9.77757, 19.5572, 159.36, 142.736, 16.5779 - 1.657, 16.2495, 9.89745, 19.3999, 159.457, 142.883, 16.5278 - 1.658, 16.2595, 10.0033, 19.2657, 159.555, 143.03, 16.478 - 1.659, 16.2695, 10.0781, 19.1684, 159.654, 143.178, 16.4291 - 1.66, 16.2796, 10.11, 19.1179, 159.753, 143.325, 16.3812 - 1.661, 16.2898, 10.0939, 19.1194, 159.852, 143.471, 16.3343 - 1.662, 16.2998, 10.0324, 19.1726, 159.95, 143.616, 16.288 - 1.663, 16.3098, 9.93538, 19.272, 160.048, 143.76, 16.2419 - 1.664, 16.3197, 9.81834, 19.4071, 160.144, 143.903, 16.1953 - 1.665, 16.3295, 9.70004, 19.564, 160.239, 144.047, 16.1474 - 1.666, 16.3391, 9.59939, 19.7262, 160.333, 144.191, 16.098 - 1.667, 16.3487, 9.5325, 19.8771, 160.427, 144.335, 16.0474 - 1.668, 16.3582, 9.51003, 20.0008, 160.52, 144.48, 15.9965 - 1.669, 16.3677, 9.53555, 20.0848, 160.614, 144.623, 15.9466 - 1.67, 16.3772, 9.60496, 20.1202, 160.708, 144.765, 15.8985 - 1.671, 16.3869, 9.70713, 20.1036, 160.803, 144.905, 15.8525 - 1.672, 16.3967, 9.82568, 20.0366, 160.9, 145.046, 15.8077 - 1.673, 16.4065, 9.94166, 19.9265, 160.997, 145.188, 15.7627 - 1.674, 16.4165, 10.0365, 19.7847, 161.096, 145.332, 15.716 - 1.675, 16.4266, 10.0951, 19.6261, 161.195, 145.48, 15.6669 - 1.676, 16.4367, 10.108, 19.4673, 161.294, 145.631, 15.6157 - 1.677, 16.4468, 10.0733, 19.3248, 161.393, 145.782, 15.5638 - 1.678, 16.4569, 9.99642, 19.2134, 161.491, 145.932, 15.5129 - 1.679, 16.4668, 9.88982, 19.1448, 161.588, 146.078, 15.4644 - 1.68, 16.4767, 9.77051, 19.1261, 161.684, 146.22, 15.4183 - 1.681, 16.4864, 9.65759, 19.1591, 161.778, 146.36, 15.3739 - 1.682, 16.496, 9.56911, 19.2403, 161.872, 146.499, 15.3293 - 1.683, 16.5055, 9.51922, 19.3611, 161.966, 146.638, 15.2829 - 1.684, 16.515, 9.51587, 19.5087, 162.059, 146.78, 15.2341 - 1.685, 16.5245, 9.55957, 19.6676, 162.153, 146.925, 15.1832 - 1.686, 16.5341, 9.6433, 19.8212, 162.247, 147.071, 15.1316 - 1.687, 16.5438, 9.75364, 19.9532, 162.343, 147.217, 15.0809 - 1.688, 16.5536, 9.87294, 20.0499, 162.44, 147.362, 15.0321 - 1.689, 16.5636, 9.98209, 20.1011, 162.538, 147.506, 14.9854 - 1.69, 16.5736, 10.0637, 20.1016, 162.636, 147.65, 14.9399 - 1.691, 16.5837, 10.1046, 20.0514, 162.736, 147.794, 14.8945 - 1.692, 16.5938, 10.0984, 19.9559, 162.835, 147.94, 14.848 - 1.693, 16.6039, 10.0461, 19.8251, 162.933, 148.086, 14.8 - 1.694, 16.6139, 9.95601, 19.6731, 163.031, 148.234, 14.7506 - 1.695, 16.6238, 9.84265, 19.5158, 163.127, 148.381, 14.7005 - 1.696, 16.6336, 9.72414, 19.3699, 163.223, 148.528, 14.6504 - 1.697, 16.6432, 9.61942, 19.2508, 163.317, 148.672, 14.601 - 1.698, 16.6528, 9.54526, 19.171, 163.411, 148.814, 14.5526 - 1.699, 16.6623, 9.51348, 19.1389, 163.504, 148.955, 14.5053 - 1.7, 16.6718, 9.52915, 19.1579, 163.598, 149.095, 14.4587 - 1.701, 16.6814, 9.58974, 19.2257, 163.692, 149.235, 14.4124 - 1.702, 16.691, 9.68552, 19.3352, 163.787, 149.376, 14.3658 - 1.703, 16.7008, 9.80115, 19.4747, 163.883, 149.518, 14.3184 - 1.704, 16.7106, 9.91814, 19.6292, 163.98, 149.664, 14.2699 - 1.705, 16.7206, 10.0178, 19.7824, 164.078, 149.811, 14.2201 - 1.706, 16.7307, 10.0841, 19.918, 164.177, 149.961, 14.1697 - 1.707, 16.7408, 10.1065, 20.0215, 164.277, 150.11, 14.1195 - 1.708, 16.7509, 10.0815, 20.0821, 164.375, 150.258, 14.0704 - 1.709, 16.7609, 10.0131, 20.0934, 164.474, 150.404, 14.023 - 1.71, 16.7709, 9.91226, 20.0542, 164.571, 150.548, 13.9772 - 1.711, 16.7808, 9.7951, 19.9688, 164.667, 150.69, 13.9322 - 1.712, 16.7905, 9.68039, 19.8464, 164.762, 150.831, 13.8864 - 1.713, 16.8001, 9.58648, 19.7001, 164.856, 150.973, 13.8388 - 1.714, 16.8097, 9.52838, 19.5457, 164.949, 151.116, 13.789 - 1.715, 16.8192, 9.51535, 19.3995, 165.043, 151.261, 13.7376 - 1.716, 16.8287, 9.54947, 19.2773, 165.137, 151.406, 13.6861 - 1.717, 16.8383, 9.62524, 19.192, 165.231, 151.55, 13.6361 - 1.718, 16.8479, 9.73052, 19.1527, 165.326, 151.692, 13.5886 - 1.719, 16.8577, 9.84845, 19.1636, 165.423, 151.834, 13.5433 - 1.72, 16.8676, 9.96016, 19.2233, 165.521, 151.975, 13.4989 - 1.721, 16.8777, 10.0478, 19.3254, 165.619, 152.118, 13.4537 - 1.722, 16.8877, 10.0973, 19.4589, 165.718, 152.265, 13.4063 - 1.723, 16.8979, 10.1009, 19.6094, 165.817, 152.414, 13.3564 - 1.724, 16.9079, 10.0579, 19.7606, 165.916, 152.564, 13.3049 - 1.725, 16.918, 9.9753, 19.8964, 166.014, 152.714, 13.2533 - 1.726, 16.9279, 9.8663, 20.0022, 166.111, 152.862, 13.2034 - 1.727, 16.9377, 9.74836, 20.0666, 166.206, 153.006, 13.1557 - 1.728, 16.9474, 9.64035, 20.0827, 166.301, 153.146, 13.1101 - 1.729, 16.957, 9.55953, 20.049, 166.395, 153.285, 13.0652 - 1.73, 16.9665, 9.51883, 19.9691, 166.488, 153.424, 13.0196 - 1.731, 16.976, 9.52472, 19.8518, 166.582, 153.565, 12.9722 - 1.732, 16.9856, 9.57624, 19.7097, 166.675, 153.708, 12.9229 - 1.733, 16.9952, 9.66512, 19.5583, 166.77, 153.853, 12.8724 - 1.734, 17.0049, 9.77713, 19.4139, 166.866, 153.999, 12.8218 - 1.735, 17.0147, 9.89432, 19.2921, 166.963, 154.145, 12.772 - 1.736, 17.0247, 9.99797, 19.206, 167.061, 154.291, 12.7238 - 1.737, 17.0347, 10.0715, 19.165, 167.16, 154.436, 12.6768 - 1.738, 17.0448, 10.1031, 19.1732, 167.259, 154.582, 12.6306 - 1.739, 17.0549, 10.0879, 19.2299, 167.358, 154.727, 12.5843 - 1.74, 17.065, 10.0282, 19.3287, 167.457, 154.873, 12.5374 - 1.741, 17.075, 9.93362, 19.4589, 167.554, 155.018, 12.4895 - 1.742, 17.0849, 9.81934, 19.6062, 167.65, 155.164, 12.4407 - 1.743, 17.0946, 9.70363, 19.7547, 167.746, 155.31, 12.3911 - 1.744, 17.1043, 9.60501, 19.8882, 167.84, 155.454, 12.3412 - 1.745, 17.1138, 9.53923, 19.9923, 167.933, 155.598, 12.2916 - 1.746, 17.1233, 9.51679, 20.0557, 168.027, 155.74, 12.2429 - 1.747, 17.1329, 9.54128, 20.0715, 168.12, 155.881, 12.1953 - 1.748, 17.1424, 9.60873, 20.0381, 168.215, 156.021, 12.1488 - 1.749, 17.1521, 9.70833, 19.9593, 168.31, 156.161, 12.103 - 1.75, 17.1618, 9.82415, 19.8436, 168.406, 156.303, 12.0568 - 1.751, 17.1717, 9.93763, 19.7039, 168.504, 156.448, 12.0094 - 1.752, 17.1817, 10.0306, 19.5553, 168.602, 156.595, 11.9603 - 1.753, 17.1918, 10.0883, 19.4141, 168.701, 156.744, 11.9098 - 1.754, 17.2019, 10.1014, 19.2958, 168.8, 156.894, 11.8588 - 1.755, 17.212, 10.0679, 19.2131, 168.899, 157.044, 11.8086 - 1.756, 17.222, 9.99316, 19.1751, 168.997, 157.19, 11.7604 - 1.757, 17.232, 9.88916, 19.1858, 169.094, 157.334, 11.7143 - 1.758, 17.2418, 9.77257, 19.2441, 169.19, 157.475, 11.6694 - 1.759, 17.2515, 9.66202, 19.3433, 169.285, 157.615, 11.6244 - 1.76, 17.2611, 9.57521, 19.4727, 169.379, 157.756, 11.5776 - 1.761, 17.2707, 9.52601, 19.6179, 169.472, 157.899, 11.5284 - 1.762, 17.2802, 9.52225, 19.763, 169.565, 158.044, 11.4772 - 1.763, 17.2897, 9.56453, 19.8921, 169.659, 158.189, 11.4255 - 1.764, 17.2993, 9.64605, 19.991, 169.754, 158.334, 11.3749 - 1.765, 17.309, 9.75374, 20.049, 169.85, 158.477, 11.3267 - 1.766, 17.3188, 9.87037, 20.0597, 169.946, 158.619, 11.2809 - 1.767, 17.3288, 9.97728, 20.022, 170.044, 158.761, 11.2364 - 1.768, 17.3388, 10.0574, 19.9401, 170.143, 158.904, 11.1914 - 1.769, 17.3489, 10.0979, 19.8232, 170.242, 159.05, 11.1445 - 1.77, 17.359, 10.0923, 19.6842, 170.341, 159.199, 11.0951 - 1.771, 17.3691, 10.0415, 19.5384, 170.44, 159.349, 11.0441 - 1.772, 17.3791, 9.95379, 19.402, 170.537, 159.498, 10.9927 - 1.773, 17.389, 9.8431, 19.2899, 170.634, 159.646, 10.9425 - 1.774, 17.3987, 9.72717, 19.2145, 170.729, 159.79, 10.8944 - 1.775, 17.4084, 9.62456, 19.184, 170.824, 159.931, 10.8482 - 1.776, 17.418, 9.55168, 19.2017, 170.917, 160.07, 10.8029 - 1.777, 17.4275, 9.52015, 19.2657, 171.011, 160.209, 10.7572 - 1.778, 17.437, 9.535, 19.3687, 171.104, 160.35, 10.7101 - 1.779, 17.4466, 9.59383, 19.4992, 171.198, 160.492, 10.6613 - 1.78, 17.4562, 9.68721, 19.6429, 171.293, 160.637, 10.6113 - 1.781, 17.466, 9.80017, 19.7837, 171.389, 160.783, 10.561 - 1.782, 17.4758, 9.91465, 19.906, 171.487, 160.929, 10.5113 - 1.783, 17.4858, 10.0123, 19.9964, 171.585, 161.076, 10.4626 - 1.784, 17.4958, 10.0776, 20.0448, 171.684, 161.222, 10.4152 - 1.785, 17.5059, 10.1, 20.046, 171.783, 161.367, 10.3685 - 1.786, 17.516, 10.076, 19.9998, 171.882, 161.513, 10.3221 - 1.787, 17.5261, 10.0095, 19.9116, 171.98, 161.658, 10.2753 - 1.788, 17.5361, 9.9111, 19.7912, 172.077, 161.803, 10.2278 - 1.789, 17.5459, 9.7966, 19.6519, 172.173, 161.949, 10.1794 - 1.79, 17.5557, 9.6843, 19.5095, 172.268, 162.093, 10.13 - 1.791, 17.5653, 9.59217, 19.3796, 172.362, 162.238, 10.0801 - 1.792, 17.5748, 9.53494, 19.2768, 172.456, 162.381, 10.0303 - 1.793, 17.5844, 9.52173, 19.2125, 172.549, 162.524, 9.98131 - 1.794, 17.5939, 9.55465, 19.1937, 172.643, 162.665, 9.93353 - 1.795, 17.6035, 9.62839, 19.2226, 172.738, 162.806, 9.88703 - 1.796, 17.6131, 9.73114, 19.2957, 172.833, 162.946, 9.84125 - 1.797, 17.6229, 9.84644, 19.4048, 172.93, 163.088, 9.7952 - 1.798, 17.6328, 9.95586, 19.5377, 173.027, 163.233, 9.74789 - 1.799, 17.6428, 10.0419, 19.6796, 173.126, 163.38, 9.69878 - 1.8, 17.6529, 10.0908, 19.8145, 173.225, 163.529, 9.64817 - 1.801, 17.663, 10.0947, 19.9273, 173.324, 163.68, 9.59714 - 1.802, 17.6731, 10.0531, 20.0055, 173.422, 163.829, 9.54706 - 1.803, 17.6831, 9.97265, 20.0404, 173.52, 163.975, 9.49897 - 1.804, 17.6931, 9.86622, 20.0281, 173.617, 164.118, 9.45297 - 1.805, 17.7029, 9.75085, 19.9701, 173.713, 164.259, 9.40814 - 1.806, 17.7126, 9.64501, 19.8729, 173.807, 164.4, 9.36293 - 1.807, 17.7222, 9.56562, 19.7476, 173.901, 164.541, 9.31589 - 1.808, 17.7317, 9.52536, 19.6083, 173.995, 164.684, 9.26643 - 1.809, 17.7412, 9.53065, 19.4706, 174.088, 164.829, 9.21516 - 1.81, 17.7508, 9.58063, 19.3499, 174.182, 164.974, 9.16359 - 1.811, 17.7604, 9.66726, 19.2599, 174.277, 165.118, 9.1134 - 1.812, 17.7701, 9.77668, 19.2105, 174.373, 165.262, 9.06559 - 1.813, 17.7799, 9.89137, 19.2074, 174.47, 165.404, 9.02002 - 1.814, 17.7899, 9.99298, 19.2506, 174.568, 165.546, 8.97541 - 1.815, 17.7999, 10.0653, 19.3354, 174.667, 165.689, 8.93007 - 1.816, 17.81, 10.0967, 19.4521, 174.766, 165.836, 8.88267 - 1.817, 17.8201, 10.0822, 19.5874, 174.865, 165.985, 8.83296 - 1.818, 17.8302, 10.0242, 19.7261, 174.963, 166.135, 8.78177 - 1.819, 17.8401, 9.93199, 19.8525, 175.06, 166.284, 8.73063 - 1.82, 17.85, 9.8203, 19.9525, 175.157, 166.43, 8.68093 - 1.821, 17.8598, 9.70702, 20.0147, 175.252, 166.574, 8.63332 - 1.822, 17.8694, 9.61028, 20.0321, 175.346, 166.714, 8.58743 - 1.823, 17.879, 9.54553, 20.003, 175.44, 166.853, 8.5421 - 1.824, 17.8885, 9.52313, 19.9306, 175.533, 166.993, 8.49605 - 1.825, 17.8981, 9.54662, 19.8232, 175.627, 167.134, 8.44843 - 1.826, 17.9076, 9.61223, 19.693, 175.721, 167.277, 8.39918 - 1.827, 17.9173, 9.70944, 19.5549, 175.816, 167.422, 8.34896 - 1.828, 17.927, 9.82268, 19.4244, 175.913, 167.568, 8.29874 - 1.829, 17.9369, 9.93383, 19.3164, 176.01, 167.714, 8.24938 - 1.83, 17.9469, 10.0251, 19.243, 176.109, 167.86, 8.20126 - 1.831, 17.957, 10.0819, 19.2126, 176.207, 168.006, 8.15424 - 1.832, 17.9671, 10.0952, 19.2284, 176.307, 168.152, 8.10778 - 1.833, 17.9772, 10.0629, 19.2887, 176.405, 168.297, 8.06124 - 1.834, 17.9872, 9.99012, 19.3865, 176.503, 168.443, 8.0141 - 1.835, 17.9971, 9.88858, 19.5106, 176.6, 168.588, 7.96605 - 1.836, 18.007, 9.77452, 19.6469, 176.696, 168.734, 7.9171 - 1.837, 18.0167, 9.6662, 19.7798, 176.791, 168.879, 7.86751 - 1.838, 18.0263, 9.58094, 19.8943, 176.885, 169.023, 7.81779 - 1.839, 18.0359, 9.53237, 19.9773, 176.978, 169.166, 7.76849 - 1.84, 18.0454, 9.52823, 20.0195, 177.072, 169.308, 7.72014 - 1.841, 18.0549, 9.56916, 20.016, 177.166, 169.448, 7.67293 - 1.842, 18.0645, 9.6486, 19.9674, 177.26, 169.589, 7.62664 - 1.843, 18.0742, 9.75381, 19.8793, 177.356, 169.73, 7.58057 - 1.844, 18.084, 9.86795, 19.7618, 177.453, 169.873, 7.53381 - 1.845, 18.0939, 9.97276, 19.6283, 177.551, 170.018, 7.48565 - 1.846, 18.104, 10.0515, 19.4942, 177.649, 170.166, 7.43594 - 1.847, 18.1141, 10.0915, 19.3747, 177.748, 170.316, 7.38528 - 1.848, 18.1242, 10.0865, 19.2835, 177.847, 170.466, 7.33481 - 1.849, 18.1342, 10.0373, 19.231, 177.946, 170.614, 7.2857 - 1.85, 18.1442, 9.95172, 19.2231, 178.043, 170.759, 7.23855 - 1.851, 18.1541, 9.84354, 19.2606, 178.14, 170.901, 7.19303 - 1.852, 18.1639, 9.73004, 19.3392, 178.235, 171.042, 7.14797 - 1.853, 18.1736, 9.6294, 19.4498, 178.33, 171.183, 7.10186 - 1.854, 18.1832, 9.5577, 19.5797, 178.424, 171.326, 7.05365 - 1.855, 18.1927, 9.5264, 19.7139, 178.517, 171.469, 7.0033 - 1.856, 18.2022, 9.54047, 19.8371, 178.611, 171.614, 6.95183 - 1.857, 18.2118, 9.59766, 19.9351, 178.705, 171.759, 6.90089 - 1.858, 18.2214, 9.68877, 19.9967, 178.8, 171.903, 6.85189 - 1.859, 18.2312, 9.79923, 20.015, 178.896, 172.045, 6.8053 - 1.86, 18.241, 9.91135, 19.9878, 178.993, 172.186, 6.76038 - 1.861, 18.251, 10.0072, 19.9184, 179.091, 172.329, 6.71556 - 1.862, 18.261, 10.0715, 19.8148, 179.19, 172.474, 6.66922 - 1.863, 18.2711, 10.0939, 19.6891, 179.289, 172.622, 6.62049 - 1.864, 18.2812, 10.0708, 19.5556, 179.388, 172.771, 6.56971 - 1.865, 18.2913, 10.0061, 19.4298, 179.486, 172.922, 6.51823 - 1.866, 18.3012, 9.91004, 19.3262, 179.583, 173.07, 6.46769 - 1.867, 18.3111, 9.79803, 19.2567, 179.68, 173.215, 6.41924 - 1.868, 18.3208, 9.68799, 19.2292, 179.775, 173.357, 6.37294 - 1.869, 18.3305, 9.59752, 19.2468, 179.869, 173.496, 6.32783 - 1.87, 18.34, 9.54109, 19.3074, 179.962, 173.636, 6.28242 - 1.871, 18.3495, 9.52771, 19.404, 180.056, 173.776, 6.23545 - 1.872, 18.3591, 9.55948, 19.5254, 180.15, 173.918, 6.18649 - 1.873, 18.3687, 9.63131, 19.6574, 180.244, 174.063, 6.13608 - 1.874, 18.3783, 9.73169, 19.7848, 180.34, 174.209, 6.08538 - 1.875, 18.3881, 9.84453, 19.8929, 180.436, 174.355, 6.03558 - 1.876, 18.398, 9.95179, 19.9693, 180.534, 174.5, 5.98734 - 1.877, 18.408, 10.0363, 20.005, 180.632, 174.645, 5.94055 - 1.878, 18.4181, 10.0846, 19.9961, 180.731, 174.79, 5.8945 - 1.879, 18.4282, 10.0889, 19.9437, 180.83, 174.935, 5.84824 - 1.88, 18.4383, 10.0486, 19.8539, 180.929, 175.081, 5.80103 - 1.881, 18.4483, 9.97018, 19.7371, 181.026, 175.228, 5.75262 - 1.882, 18.4582, 9.86615, 19.607, 181.123, 175.374, 5.70327 - 1.883, 18.468, 9.7532, 19.4787, 181.219, 175.52, 5.65352 - 1.884, 18.4777, 9.64938, 19.367, 181.314, 175.665, 5.60401 - 1.885, 18.4873, 9.57132, 19.285, 181.407, 175.808, 5.55521 - 1.886, 18.4969, 9.53147, 19.242, 181.501, 175.949, 5.50731 - 1.887, 18.5064, 9.53618, 19.243, 181.595, 176.09, 5.46023 - 1.888, 18.5159, 9.58469, 19.2878, 181.689, 176.23, 5.41362 - 1.889, 18.5256, 9.66921, 19.3712, 181.783, 176.371, 5.36695 - 1.89, 18.5353, 9.7762, 19.4833, 181.879, 176.514, 5.31966 - 1.891, 18.5451, 9.88853, 19.6112, 181.976, 176.659, 5.27136 - 1.892, 18.5551, 9.98822, 19.7398, 182.074, 176.806, 5.222 - 1.893, 18.5651, 10.0594, 19.8542, 182.173, 176.954, 5.17199 - 1.894, 18.5752, 10.0905, 19.941, 182.272, 177.103, 5.12212 - 1.895, 18.5853, 10.0768, 19.9903, 182.371, 177.251, 5.07319 - 1.896, 18.5953, 10.0204, 19.9963, 182.469, 177.397, 5.02572 - 1.897, 18.6053, 9.93036, 19.9584, 182.567, 177.541, 4.97955 - 1.898, 18.6152, 9.82108, 19.8811, 182.663, 177.684, 4.93388 - 1.899, 18.625, 9.71006, 19.7735, 182.758, 177.826, 4.88755 - 1.9, 18.6346, 9.61505, 19.6481, 182.852, 177.968, 4.83961 - 1.901, 18.6442, 9.55124, 19.5197, 182.946, 178.112, 4.78984 - 1.902, 18.6537, 9.52881, 19.4033, 183.04, 178.256, 4.73892 - 1.903, 18.6632, 9.55133, 19.3124, 183.133, 178.401, 4.6882 - 1.904, 18.6728, 9.61516, 19.2578, 183.228, 178.544, 4.63898 - 1.905, 18.6825, 9.71006, 19.2456, 183.323, 178.686, 4.59192 - 1.906, 18.6922, 9.82083, 19.2772, 183.419, 178.827, 4.54657 - 1.907, 18.7021, 9.92973, 19.349, 183.517, 178.969, 4.50161 - 1.908, 18.7121, 10.0193, 19.4523, 183.615, 179.113, 4.45546 - 1.909, 18.7222, 10.0753, 19.5752, 183.714, 179.26, 4.40708 - 1.91, 18.7322, 10.0887, 19.703, 183.813, 179.409, 4.35657 - 1.911, 18.7423, 10.0573, 19.8208, 183.911, 179.56, 4.30509 - 1.912, 18.7524, 9.98627, 19.9148, 184.009, 179.709, 4.25432 - 1.913, 18.7623, 9.88689, 19.9741, 184.106, 179.855, 4.20559 - 1.914, 18.7721, 9.77505, 19.9916, 184.202, 179.998, 4.15922 - 1.915, 18.7819, 9.66863, 19.9655, 184.297, 180.138, 4.1143 - 1.916, 18.7915, 9.58461, 19.8988, 184.391, 180.277, 4.06924 - 1.917, 18.801, 9.53638, 19.7995, 184.485, 180.418, 4.02252 - 1.918, 18.8105, 9.5316, 19.6792, 184.578, 180.56, 3.97348 - 1.919, 18.8201, 9.57096, 19.5522, 184.672, 180.705, 3.92265 - 1.92, 18.8297, 9.64809, 19.4335, 184.767, 180.85, 3.87142 - 1.921, 18.8394, 9.75057, 19.3369, 184.862, 180.996, 3.82131 - 1.922, 18.8492, 9.86192, 19.2739, 184.959, 181.14, 3.77325 - 1.923, 18.8591, 9.96426, 19.2518, 185.057, 181.283, 3.7271 - 1.924, 18.8691, 10.0411, 19.2731, 185.155, 181.427, 3.68181 - 1.925, 18.8792, 10.0801, 19.3353, 185.254, 181.571, 3.63598 - 1.926, 18.8893, 10.075, 19.4309, 185.353, 181.718, 3.58857 - 1.927, 18.8993, 10.0264, 19.5487, 185.452, 181.866, 3.53938 - 1.928, 18.9093, 9.94194, 19.6747, 185.549, 182.014, 3.48904 - 1.929, 18.9192, 9.83508, 19.7939, 185.646, 182.161, 3.43866 - 1.93, 18.929, 9.72273, 19.8924, 185.741, 182.307, 3.38927 - 1.931, 18.9387, 9.62264, 19.9585, 185.835, 182.45, 3.34132 - 1.932, 18.9482, 9.55061, 19.9845, 185.929, 182.59, 3.29459 - 1.933, 18.9578, 9.5179, 19.9672, 186.022, 182.73, 3.24837 - 1.934, 18.9673, 9.52943, 19.909, 186.116, 182.87, 3.20181 - 1.935, 18.9768, 9.58304, 19.8166, 186.21, 183.011, 3.15432 - 1.936, 18.9864, 9.66978, 19.7012, 186.305, 183.154, 3.10576 - 1.937, 18.9962, 9.77537, 19.5763, 186.401, 183.298, 3.0564 - 1.938, 19.006, 9.88248, 19.4569, 186.498, 183.445, 3.00677 - 1.939, 19.0159, 9.9735, 19.357, 186.595, 183.591, 2.95744 - 1.94, 19.0259, 10.0333, 19.2885, 186.694, 183.738, 2.90883 - 1.941, 19.036, 10.0519, 19.2595, 186.792, 183.885, 2.8611 - 1.942, 19.046, 10.0255, 19.2733, 186.891, 184.03, 2.81414 - 1.943, 19.056, 9.95764, 19.3282, 186.988, 184.175, 2.76753 - 1.944, 19.066, 9.85847, 19.4177, 187.085, 184.319, 2.72073 - 1.945, 19.0758, 9.74292, 19.531, 187.181, 184.462, 2.67317 - 1.946, 19.0854, 9.6285, 19.6547, 187.275, 184.606, 2.62453 - 1.947, 19.095, 9.53239, 19.774, 187.369, 184.75, 2.57493 - 1.948, 19.1045, 9.46875, 19.8748, 187.462, 184.893, 2.52492 - 1.949, 19.114, 9.44638, 19.9451, 187.554, 185.035, 2.47535 - 1.95, 19.1234, 9.46737, 19.9765, 187.647, 185.176, 2.42696 - 1.951, 19.1329, 9.52669, 19.9655, 187.741, 185.316, 2.38003 - 1.952, 19.1425, 9.61302, 19.9133, 187.835, 185.456, 2.33413 - 1.953, 19.1521, 9.71056, 19.8263, 187.93, 185.596, 2.28828 - 1.954, 19.1619, 9.80151, 19.7149, 188.026, 185.739, 2.24135 - 1.955, 19.1717, 9.86892, 19.5924, 188.123, 185.884, 2.19267 - 1.956, 19.1816, 9.89938, 19.4734, 188.22, 186.032, 2.14241 - 1.957, 19.1915, 9.88516, 19.3721, 188.317, 186.18, 2.09157 - 1.958, 19.2014, 9.82537, 19.3006, 188.414, 186.327, 2.04153 - 1.959, 19.2112, 9.72613, 19.2674, 188.509, 186.471, 1.99336 - 1.96, 19.2208, 9.59955, 19.2763, 188.603, 186.612, 1.94721 - 1.961, 19.2304, 9.46174, 19.3263, 188.696, 186.75, 1.90224 - 1.962, 19.2398, 9.33022, 19.4113, 188.788, 186.888, 1.85694 - 1.963, 19.249, 9.22109, 19.5211, 188.878, 187.025, 1.80992 - 1.964, 19.2582, 9.14642, 19.6425, 188.968, 187.165, 1.76067 - 1.965, 19.2673, 9.11228, 19.7609, 189.057, 187.305, 1.70982 - 1.966, 19.2764, 9.11775, 19.8623, 189.147, 187.445, 1.65886 - 1.967, 19.2856, 9.15501, 19.9345, 189.236, 187.585, 1.6094 - 1.968, 19.2947, 9.21059, 19.9689, 189.327, 187.722, 1.5623 - 1.969, 19.304, 9.26744, 19.9615, 189.418, 187.857, 1.51727 - 1.97, 19.3133, 9.30767, 19.9131, 189.509, 187.993, 1.47299 - 1.971, 19.3226, 9.31532, 19.8297, 189.6, 188.129, 1.4278 - 1.972, 19.3319, 9.27886, 19.7212, 189.691, 188.268, 1.38059 - 1.973, 19.3412, 9.19304, 19.6009, 189.782, 188.408, 1.33134 - 1.974, 19.3503, 9.05961, 19.4831, 189.87, 188.548, 1.28113 - 1.975, 19.3593, 8.88701, 19.3819, 189.958, 188.685, 1.2316 - 1.976, 19.3681, 8.68895, 19.3095, 190.043, 188.819, 1.18406 - 1.977, 19.3767, 8.48217, 19.2746, 190.126, 188.949, 1.13891 - 1.978, 19.385, 8.2837, 19.2812, 190.207, 189.074, 1.09544 - 1.979, 19.3932, 8.10805, 19.3285, 190.287, 189.198, 1.05231 - 1.98, 19.4012, 7.96484, 19.4108, 190.365, 189.32, 1.00821 - 1.981, 19.4092, 7.85721, 19.5181, 190.442, 189.444, 0.962577 - 1.982, 19.417, 7.78124, 19.6375, 190.518, 189.567, 0.915838 - 1.983, 19.4247, 7.72652, 19.7545, 190.594, 189.69, 0.869141 - 1.984, 19.4324, 7.67774, 19.8551, 190.67, 189.811, 0.823786 - 1.985, 19.4401, 7.61707, 19.9273, 190.744, 189.929, 0.780614 - 1.986, 19.4476, 7.52698, 19.9622, 190.818, 190.044, 0.739686 - 1.987, 19.4551, 7.39293, 19.9559, 190.891, 190.157, 0.700374 - 1.988, 19.4624, 7.20564, 19.909, 190.961, 190.267, 0.661768 - 1.989, 19.4695, 6.96252, 19.8274, 191.03, 190.375, 0.623173 - 1.99, 19.4764, 6.66799, 19.7209, 191.095, 190.481, 0.584435 - 1.991, 19.4829, 6.33273, 19.6025, 191.157, 190.583, 0.545989 - 1.992, 19.489, 5.97188, 19.4863, 191.216, 190.681, 0.50864 - 1.993, 19.4948, 5.60259, 19.3866, 191.271, 190.774, 0.473228 - 1.994, 19.5002, 5.24119, 19.3152, 191.322, 190.86, 0.440353 - 1.995, 19.5053, 4.90052, 19.2808, 191.37, 190.939, 0.410241 - 1.996, 19.51, 4.58789, 19.2874, 191.415, 191.013, 0.382777 - 1.997, 19.5145, 4.30379, 19.3343, 191.457, 191.082, 0.357644 - 1.998, 19.5186, 4.04184, 19.4156, 191.497, 191.146, 0.334499 - 1.999, 19.5226, 3.78978, 19.5215, 191.534, 191.206, 0.313129 - 2, 19.5262, 3.53137, 19.6392, 191.569, 191.261, 0.293581 + time, disp, velo, reac, wext, epot, ekin, total + 0, 0, 0, -0, 0, 0, 0, 0 + 0.001, 0, -1.962, -0,0.0192472, 0,0.0048118,-0.0144354 + 0.002,-0.003924,-5.72904, -0,0.0754491,0.00153978,0.0410428,-0.0328666 + 0.003,-0.0114581,-9.04404, -0,0.164171,0.012774,0.102604,-0.0487932 + 0.004,-0.0220121,-11.6659, -0,0.278614,0.0452231,0.172681,-0.0607089 + 0.005,-0.0347899,-13.4355, -0,0.410416,0.106783,0.235979,-0.0676538 + 0.006,-0.0488831,-14.2928, -0,0.550628,0.196298,0.284868,-0.0694632 + 0.007,-0.0633755,-14.2811, -0,0.690726,0.302603,0.321327,-0.0667962 + 0.008,-0.0774452,-13.5374, -0,0.823528,0.408548,0.354051,-0.0609292 + 0.009,-0.0904504, -12.272, -0,0.943916,0.497889,0.392622,-0.0534054 + 0.01,-0.101989,-10.7378, -0, 1.04925,0.561539,0.442033,-0.0456807 + 0.011,-0.111926,-9.19645, -0, 1.13947,0.600169,0.500411,-0.0388906 + 0.012,-0.120382,-7.88413, -0, 1.21681,0.622205,0.560823,-0.0337852 + 0.013,-0.127694,-6.98202, -0, 1.28531,0.638742,0.615775,-0.0307905 + 0.014,-0.134346,-6.59599, -0, 1.35001,0.658295,0.661618,-0.030101 + 0.015,-0.140886,-6.74725, -0, 1.4162,0.684108,0.700376,-0.0317203 + 0.016,-0.147841,-7.37528, -0, 1.48856,0.715003,0.738129,-0.0354243 + 0.017,-0.155637,-8.35188, -0, 1.57049,0.748646,0.781148,-0.0406935 + 0.018,-0.164544,-9.50425, -0, 1.66372,0.784851,0.832177,-0.0466972 + 0.019,-0.174645,-10.6431, -0, 1.76813,0.826726,0.889014,-0.0523937 + 0.02,-0.185831,-11.5916, -0, 1.88185,0.878992, 0.94611,-0.0567458 + 0.021,-0.197828,-12.2118, -0, 2.00164,0.944612,0.998052,-0.0589804 + 0.022,-0.210254,-12.4226, -0, 2.12351, 1.02193, 1.04279,-0.0587893 + 0.023,-0.222674,-12.2103, -0, 2.24329, 1.10422, 1.08269,-0.0563845 + 0.024,-0.234675,-11.6269, -0, 2.35735, 1.18204, 1.12292,-0.0523941 + 0.025,-0.245927,-10.7795, -0, 2.4631, 1.24722, 1.16823,-0.0476515 + 0.026,-0.256234,-9.81192, -0, 2.55935, 1.29628, 1.2201,-0.0429745 + 0.027,-0.265551,-8.88061, -0, 2.64647, 1.33144, 1.27601,-0.0390177 + 0.028,-0.273995,-8.13048, -0, 2.72623, 1.3589, 1.33111,-0.036229 + 0.029,-0.281812,-7.67281, -0, 2.8015, 1.38543, 1.38119,-0.0348789 + 0.03,-0.28934, -7.5693, -0, 2.87576, 1.4154, 1.42525,-0.0351001 + 0.031,-0.296951,-7.82422, -0, 2.95251, 1.44968, 1.46595,-0.0368863 + 0.032,-0.304989,-8.38568, -0, 3.03478, 1.48685, 1.50789,-0.0400451 + 0.033,-0.313722,-9.15552, -0, 3.12459, 1.52568, 1.55476,-0.044148 + 0.034, -0.3233, -10.006, -0, 3.22275, 1.56703, 1.60718,-0.0485375 + 0.035,-0.333734,-10.8007, -0, 3.32871, 1.6139, 1.66238,-0.0524287 + 0.036,-0.344901,-11.4158, -0, 3.4407, 1.66964, 1.71597,-0.0550897 + 0.037,-0.356566,-11.7594, -0, 3.55606, 1.73533, 1.76469,-0.0560356 + 0.038,-0.36842,-11.7846, -0, 3.67166, 1.80821, 1.8083,-0.0551571 + 0.039,-0.380135,-11.4961, -0, 3.78444, 1.88203, 1.84968,-0.0527282 + 0.04,-0.391412,-10.9474, -0, 3.89183, 1.94957, 1.89297,-0.0492985 + 0.041,-0.40203, -10.232, -0, 3.99221, 2.00563, 1.94106,-0.0455222 + 0.042,-0.411876,-9.46688, -0, 4.08508, 2.04923, 1.99385,-0.0420011 + 0.043,-0.420964,-8.77433, -0, 4.17116, 2.08358, 2.04838,-0.0391959 + 0.044,-0.429425,-8.26213, -0, 4.25221, 2.11408, 2.10072,-0.0374136 + 0.045,-0.437488,-8.00715, -0, 4.33076, 2.14557, 2.14835,-0.0368368 + 0.046,-0.445439,-8.04396, -0, 4.40967, 2.18045, 2.19167,-0.0375424 + 0.047,-0.453576, -8.3603, -0, 4.49168, 2.2185, 2.2337,-0.0394826 + 0.048,-0.46216, -8.9001, -0, 4.57899, 2.25839, 2.27816,-0.0424378 + 0.049,-0.471376,-9.57318, -0, 4.67291, 2.29969, 2.32723,-0.0459849 + 0.05,-0.481306,-10.2702, -0, 4.77366, 2.34389, 2.38024,-0.0495292 + 0.051,-0.491916,-10.8803, -0, 4.88039, 2.39385, 2.43412,-0.0524161 + 0.052,-0.503067,-11.3084, -0, 4.99133, 2.45187, 2.48536,-0.0540936 + 0.053,-0.514533,-11.4904, -0, 5.10405, 2.51768, 2.5321,-0.0542631 + 0.054,-0.526047, -11.402, -0, 5.2159, 2.58767, 2.57527,-0.0529545 + 0.055,-0.537337,-11.0624, -0, 5.32442, 2.65598, 2.61795,-0.0504967 + 0.056,-0.548172,-10.5299, -0, 5.42772, 2.71686, 2.66346,-0.0474016 + 0.057,-0.558397,-9.89248, -0, 5.52477, 2.76721, 2.71334,-0.0442182 + 0.058,-0.567957,-9.25311, -0, 5.61554, 2.80769, 2.76644,-0.0414175 + 0.059,-0.576903,-8.71322, -0, 5.70102, 2.84201, 2.81966,-0.0393428 + 0.06,-0.585384,-8.35677, -0, 5.783, 2.87488, 2.8699,-0.0382159 + 0.061,-0.593617,-8.23723, -0, 5.8638, 2.90973, 2.91591,-0.0381619 + 0.062,-0.601858,-8.36965, -0, 5.94591, 2.94765, 2.95905,-0.0392134 + 0.063,-0.610356,-8.72892, -0, 6.03154, 2.98787, 3.00239,-0.04128 + 0.064,-0.619316,-9.25438, -0, 6.12233, 3.02937, 3.04885,-0.0441063 + 0.065,-0.628865,-9.85999, -0, 6.21905, 3.0724, 3.09939,-0.0472609 + 0.066,-0.639036,-10.4484, -0, 6.32155, 3.11889, 3.15247,-0.0501908 + 0.067,-0.649762,-10.9263, -0, 6.42874, 3.17138, 3.20502,-0.0523404 + 0.068,-0.660888,-11.2197, -0, 6.5388, 3.23115, 3.25435,-0.0532976 + 0.069,-0.672201,-11.2845, -0, 6.6495, 3.29683, 3.29977,-0.052907 + 0.07,-0.683457,-11.1139, -0, 6.75853, 3.36425, 3.34298,-0.0513024 + 0.071,-0.694429,-10.7383, -0, 6.86387, 3.42802, 3.387,-0.0488487 + 0.072,-0.704934,-10.2203, -0, 6.96413, 3.48378, 3.43434,-0.0460236 + 0.073,-0.714869,-9.64421, -0, 7.05874, 3.53004, 3.48541,-0.0432942 + 0.074,-0.724222,-9.10238, -0, 7.14804, 3.56864, 3.53836,-0.0410361 + 0.075,-0.733074,-8.68045, -0, 7.23319, 3.60346, 3.59022,-0.0395108 + 0.076,-0.741583,-8.44385, -0, 7.31603, 3.63843, 3.63872,-0.0388814 + 0.077,-0.749962,-8.42775, -0, 7.3987, 3.67581, 3.68367,-0.0392306 + 0.078,-0.758439,-8.63182, -0, 7.48338, 3.71579, 3.72704,-0.040551 + 0.079,-0.767225,-9.02077, -0, 7.57188, 3.7574, 3.77177,-0.0427094 + 0.08,-0.77648,-9.53041, -0, 7.66537, 3.80006, 3.81989,-0.0454148 + 0.081,-0.786286,-10.0782, -0, 7.76424, 3.84463, 3.87137,-0.0482288 + 0.082,-0.796637,-10.5765, -0, 7.86799, 3.89324, 3.92411,-0.0506382 + 0.083,-0.807439,-10.9468, -0, 7.97538, 3.94793, 3.97527,-0.0521781 + 0.084,-0.81853,-11.1317, -0, 8.08458, 4.00901, 4.02302,-0.0525576 + 0.085,-0.829703,-11.1039, -0, 8.19351, 4.07416, 4.06761,-0.0517388 + 0.086,-0.840738,-10.8705, -0, 8.30015, 4.13897, 4.11125,-0.049933 + 0.087,-0.851444, -10.471, -0, 8.40287, 4.19867, 4.15668,-0.0475231 + 0.088,-0.86168,-9.97079, -0, 8.50069, 4.25022, 4.20552,-0.0449491 + 0.089,-0.871385,-9.45068, -0, 8.5934, 4.2935, 4.25729,-0.0426074 + 0.09,-0.880581,-8.99361, -0, 8.68162, 4.33109, 4.30973,-0.0407987 + 0.091,-0.889372,-8.67161, -0, 8.76669, 4.36678, 4.36019,-0.0397235 + 0.092,-0.897925,-8.53443, -0, 8.85042, 4.40366, 4.40725,-0.0395019 + 0.093,-0.906441,-8.60187, -0, 8.9348, 4.44301, 4.45161,-0.0401808 + 0.094,-0.915128,-8.86099, -0, 9.02173, 4.48443, 4.49558,-0.0417138 + 0.095,-0.924163, -9.2685, -0, 9.11265, 4.52701, 4.54171,-0.0439257 + 0.096,-0.933665,-9.75797, -0, 9.20838, 4.57069, 4.59119,-0.0464937 + 0.097,-0.943679,-10.2506, -0, 9.30893, 4.61681, 4.64315,-0.0489787 + 0.098,-0.954167, -10.668, -0, 9.41359, 4.66746, 4.69522,-0.0509133 + 0.099,-0.965015,-10.9445, -0, 9.52095, 4.72405, 4.74498,-0.051921 + 0.1,-0.976056,-11.0375, -0, 9.62923, 4.78596, 4.79145,-0.0518209 + 0.101,-0.98709, -10.934, -0, 9.73649, 4.85015, 4.83567,-0.050672 + 0.102,-0.997924,-10.6524, -0, 9.84099, 4.9122, 4.88005,-0.0487411 + 0.103, -1.0084,-10.2395, -0, 9.94144, 4.96816, 4.92687,-0.0464135 + 0.104, -1.0184,-9.76205, -0, 10.0372, 5.01622, 4.9769,-0.0440872 + 0.105,-1.02792,-9.29686, -0, 10.1284, 5.05737, 5.02894,-0.0420956 + 0.106, -1.037,-8.91787, -0, 10.2159, 5.09464, 5.08057,-0.0406787 + 0.107,-1.04575,-8.68459, -0, 10.3011, 5.13145, 5.12965,-0.0399907 + 0.108,-1.05437,-8.63281, -0, 10.3858, 5.17004, 5.17562,-0.0401174 + 0.109,-1.06302,-8.76909, -0, 10.4718, 5.21092, 5.21981,-0.0410722 + 0.11, -1.0719, -9.07, -0, 10.5608, 5.25336, 5.26465,-0.0427698 + 0.111,-1.08116,-9.48609, -0, 10.6538, 5.29671, 5.31214,-0.0449942 + 0.112,-1.09088,-9.95006, -0, 10.7514, 5.34142, 5.36263,-0.0473974 + 0.113,-1.10106,-10.3876, -0, 10.8534, 5.38915, 5.41465,-0.0495496 + 0.114,-1.11165,-10.7292, -0, 10.9586, 5.44177, 5.4658,-0.0510365 + 0.115,-1.12252,-10.9213, -0, 11.0657, 5.49994, 5.51423,-0.0515704 + 0.116,-1.13349,-10.9346, -0, 11.173, 5.56217, 5.55977,-0.0510696 + 0.117,-1.14439,-10.7686, -0, 11.2786, 5.62495, 5.60403,-0.0496719 + 0.118,-1.15503,-10.4512, -0, 11.3812, 5.68412, 5.64937,-0.0476806 + 0.119,-1.16529,-10.0342, -0, 11.4796, 5.73665, 5.69749,-0.0454695 + 0.12, -1.1751,-9.58509, -0, 11.5736, 5.78188, 5.74837,-0.0433922 + 0.121,-1.18446,-9.17553, -0, 11.6637, 5.82165, 5.80028,-0.0417258 + 0.122,-1.19345,-8.87048, -0, 11.7507, 5.85911, 5.85091,-0.0406611 + 0.123, -1.2022,-8.71771, -0, 11.8362, 5.89716, 5.89872,-0.0403159 + 0.124,-1.21089,-8.74031, -0, 11.9219, 5.93726, 5.94393,-0.0407461 + 0.125,-1.21968,-8.93325, -0, 12.0096, 5.9793, 5.98833,-0.0419321 + 0.126,-1.22875,-9.26443, -0, 12.1005, 6.02249, 6.03422,-0.0437487 + 0.127,-1.23821,-9.67996, -0, 12.1954, 6.06654, 6.08293,-0.045943 + 0.128,-1.24811, -10.113, -0, 12.2946, 6.11238, 6.13409,-0.0481503 + 0.129,-1.25844,-10.4943, -0, 12.3976, 6.1618, 6.18581,-0.0499611 + 0.13, -1.2691,-10.7635, -0, 12.5032, 6.21625, 6.23589,-0.051022 + 0.131,-1.27996,-10.8787, -0, 12.6099, 6.27562, 6.28313,-0.0511332 + 0.132,-1.29086,-10.8226, -0, 12.7161, 6.33765, 6.3281,-0.0503015 + 0.133,-1.30161,-10.6054, -0, 12.8201, 6.39862, 6.37274,-0.0487263 + 0.134,-1.31207,-10.2631, -0, 12.9208, 6.45486, 6.41918,-0.0467298 + 0.135,-1.32214,-9.85101, -0, 13.0174, 6.50431, 6.46844,-0.0446644 + 0.136,-1.33177,-9.43548, -0, 13.11, 6.54734, 6.51979,-0.0428377 + 0.137,-1.34101,-9.08272, -0, 13.1991, 6.58635, 6.57125,-0.0414779 + 0.138,-1.34994,-8.84852, -0, 13.2859, 6.62438, 6.62076,-0.0407356 + 0.139, -1.3587,-8.76934, -0, 13.3719, 6.66372, 6.66749,-0.0406989 + 0.14,-1.36747,-8.85669, -0, 13.4588, 6.70509, 6.71231,-0.0413954 + 0.141,-1.37642,-9.09546, -0, 13.548, 6.748, 6.75725,-0.0427713 + 0.142,-1.38567,-9.44648, -0, 13.6407, 6.79177, 6.80425,-0.044662 + 0.143,-1.39531,-9.85302, -0, 13.7373, 6.83657, 6.85399,-0.046783 + 0.144,-1.40537,-10.2498, -0, 13.8379, 6.88368, 6.90545,-0.0487634 + 0.145,-1.41581,-10.5738, -0, 13.9416, 6.93482, 6.95658,-0.050225 + 0.146,-1.42652,-10.7736, -0, 14.0473, 6.99091, 7.00552,-0.050882 + 0.147,-1.43736,-10.8184, -0, 14.1534, 7.05102, 7.0518,-0.0506202 + 0.148,-1.44816,-10.7021, -0, 14.2584, 7.11235, 7.09656,-0.0495225 + 0.149,-1.45876,-10.4442, -0, 14.3609, 7.17119, 7.14186,-0.0478334 + 0.15,-1.46904,-10.0869, -0, 14.4598, 7.22453, 7.18943,-0.045879 + 0.151,-1.47893,-9.68785, -0, 14.5549, 7.27131, 7.23958,-0.0439826 + 0.152,-1.48842,-9.31089, -0, 14.6462, 7.31275, 7.29106,-0.0424072 + 0.153,-1.49756,-9.01602, -0, 14.7347, 7.35153, 7.3418,-0.0413385 + 0.154,-1.50645,-8.84973, -0, 14.8215, 7.39039, 7.39019,-0.0408945 + 0.155,-1.51526,-8.83771, -0, 14.9082, 7.43095, 7.43609,-0.0411374 + 0.156,-1.52413,-8.98087, -0, 14.9963, 7.47335, 7.48087,-0.0420663 + 0.157,-1.53322,-9.25538, -0, 15.0871, 7.51691, 7.52658,-0.0435916 + 0.158,-1.54264,-9.61663, -0, 15.1814, 7.56121, 7.57469,-0.0455115 + 0.159,-1.55245,-10.0064, -0, 15.2796, 7.60687, 7.62519,-0.0475167 + 0.16,-1.56265,-10.3625, -0, 15.3812, 7.65538, 7.67661,-0.0492416 + 0.161,-1.57318,-10.6281, -0, 15.4855, 7.70823, 7.72692,-0.0503505 + 0.162,-1.58391,-10.7616, -0, 15.5911, 7.76566, 7.77478,-0.0506295 + 0.163, -1.5947,-10.7424, -0, 15.6964, 7.82604, 7.82036,-0.0500446 + 0.164,-1.60539,-10.5746, -0, 15.8002, 7.8862, 7.86524,-0.0487425 + 0.165,-1.61585,-10.2858, -0, 15.9011, 7.94269, 7.9114,-0.0469961 + 0.166,-1.62596,-9.92288, -0, 15.9984, 7.99328, 7.96004,-0.0451235 + 0.167,-1.63569, -9.5441, -0, 16.0921, 8.03784, 8.01081,-0.0434139 + 0.168,-1.64505,-9.21001, -0, 16.1824, 8.07824, 8.06208,-0.0420887 + 0.169,-1.65411,-8.97364, -0, 16.2704, 8.11722, 8.11193,-0.0412974 + 0.17, -1.663,-8.87213, -0, 16.3575, 8.15706, 8.15928,-0.0411311 + 0.171,-1.67186,-8.92085, -0, 16.445, 8.19872, 8.20464,-0.0416273 + 0.172,-1.68084,-9.11118, -0, 16.5344, 8.24192, 8.2497,-0.0427554 + 0.173,-1.69008, -9.4119, -0, 16.6267, 8.28598, 8.29634,-0.0443893 + 0.174,-1.69967,-9.77442, -0, 16.7226, 8.33085, 8.34545,-0.0462931 + 0.175,-1.70963,-10.1405, -0, 16.8221, 8.37751, 8.39641,-0.0481423 + 0.176,-1.71995,-10.4518, -0, 16.9246, 8.42754, 8.44748,-0.0495882 + 0.177,-1.73053,-10.6589, -0, 17.0292, 8.48199, 8.49683,-0.0503469 + 0.178,-1.74126,-10.7293, -0, 17.1344, 8.54041, 8.54373,-0.0502784 + 0.179,-1.75199,-10.6527, -0, 17.2389, 8.60056, 8.58894,-0.0494216 + 0.18,-1.76257, -10.442, -0, 17.3414, 8.65915, 8.63424,-0.0479727 + 0.181,-1.77288,-10.1316, -0, 17.4408, 8.71317, 8.68137,-0.0462193 + 0.182,-1.78283,-9.77159, -0, 17.5366, 8.76124, 8.73091,-0.044461 + 0.183,-1.79242, -9.4197, -0, 17.629, 8.80407, 8.78199,-0.0429512 + 0.184,-1.80167,-9.13202, -0, 17.7186, 8.84395, 8.83278,-0.0418733 + 0.185,-1.81068, -8.9541, -0, 17.8064, 8.88345, 8.88164,-0.0413468 + 0.186,-1.81958,-8.91374, -0, 17.8939, 8.92431, 8.92814,-0.0414391 + 0.187,-1.82851,-9.01665, -0, 17.9823, 8.96691, 8.97326,-0.0421631 + 0.188,-1.83761,-9.24562, -0, 18.073, 9.01071, 9.01887,-0.0434564 + 0.189, -1.847,-9.56345, -0, 18.1669, 9.05521, 9.06649,-0.0451569 + 0.19,-1.85674,-9.91895, -0, 18.2642, 9.10074, 9.11642, -0.047 + 0.191,-1.86684,-10.2552, -0, 18.3648, 9.14858, 9.16753,-0.0486565 + 0.192,-1.87725,-10.5186, -0, 18.468, 9.20015, 9.21799,-0.0498062 + 0.193,-1.88788,-10.6676, -0, 18.5726, 9.25601, 9.26636,-0.0502245 + 0.194,-1.89859,-10.6789, -0, 18.6774, 9.31501, 9.3125,-0.0498438 + 0.195,-1.90923,-10.5514, -0, 18.7809, 9.37447, 9.35764,-0.0487668 + 0.196,-1.91969,-10.3063, -0, 18.882, 9.43115, 9.4036,-0.0472252 + 0.197,-1.92985, -9.9832, -0, 18.9799, 9.4827, 9.4517,-0.045508 + 0.198,-1.93966,-9.63409, -0, 19.0744, 9.52858, 9.50195,-0.0438901 + 0.199,-1.94912,-9.31483, -0, 19.1658, 9.57019, 9.55302,-0.0425885 + 0.2,-1.95828,-9.07621, -0, 19.2548, 9.60997, 9.60311,-0.0417538 + 0.201,-1.96727,-8.95592,-5.06637e-279, 19.3427, 9.65021, 9.651,-0.0414798 + 0.202, -1.9762,-8.97255,-1.95055e-276, 19.4307, 9.69205, 9.69686,-0.0418121 + 0.203,-1.98521,-9.12279,-3.7634e-274, 19.5202, 9.73541, 9.74207,-0.0427376 + 0.204,-1.99444,-9.38199,-4.85178e-272, 19.6122, 9.77967, 9.78842,-0.0441606 + 0.205,-2.00398,-9.70824,-4.70186e-270, 19.7075, 9.82461, 9.83699,-0.0458847 + 0.206,-2.01386,-10.0491,-3.65352e-268, 19.8061, 9.87095, 9.88749,-0.0476243 + 0.207,-2.02408,-10.3502,-2.37112e-266, 19.9076, 9.92009, 9.93845,-0.0490564 + 0.208,-2.03456,-10.5636,-1.32199e-264, 20.0112, 9.9732, 9.98813,-0.0499003 + 0.209, -2.0452,-10.6557,-6.46375e-263, 20.1158, 10.0302, 10.0356,-0.0499949 + 0.21,-2.05587,-10.6123,-2.81554e-261, 20.2199, 10.0893, 10.0812,-0.0493419 + 0.211,-2.06643, -10.441,-1.10625e-259, 20.3223, 10.1476, 10.1266,-0.048096 + 0.212,-2.07675,-10.1698,-3.96023e-258, 20.4221, 10.2022, 10.1733,-0.0465112 + 0.213,-2.08677,-9.84248,-1.30246e-256, 20.5186, 10.2514, 10.2223,-0.044867 + 0.214,-2.09644,-9.51149,-3.96284e-255, 20.6119, 10.2955, 10.273,-0.0434092 + 0.215,-2.10579,-9.22969,-1.12209e-253, 20.7025, 10.3363, 10.3238,-0.0423209 + 0.216, -2.1149,-9.04186,-2.97194e-252, 20.7912, 10.3764, 10.3731,-0.0417238 + 0.217,-2.12387,-8.97753,-7.3957e-251, 20.8792, 10.4175, 10.4201,-0.04169 + 0.218,-2.13285, -9.0464,-1.73597e-249, 20.968, 10.4602, 10.4656,-0.0422431 + 0.219,-2.14197,-9.23687,-3.85685e-248, 21.0586, 10.5041, 10.5111,-0.0433422 + 0.22,-2.15133,-9.51797,-8.13559e-247, 21.152, 10.5488, 10.5583,-0.0448574 + 0.221, -2.161,-9.84442,-1.63386e-245, 21.2485, 10.5942, 10.6077,-0.0465618 + 0.222,-2.17101,-10.1639,-3.13178e-244, 21.3482, 10.6415, 10.6585,-0.0481578 + 0.223,-2.18133,-10.4254,-5.74257e-243, 21.4505, 10.6921, 10.7091,-0.0493404 + 0.224,-2.19187,-10.5875,-1.00938e-241, 21.5544, 10.7466, 10.7579,-0.0498768 + 0.225, -2.2025,-10.6248,-1.70393e-240, 21.6586, 10.8044, 10.8045,-0.0496717 + 0.226,-2.21311,-10.5318,-2.76728e-239, 21.7619, 10.8632, 10.8499,-0.0487892 + 0.227,-2.22357,-10.3239,-4.33065e-238, 21.8632, 10.92, 10.8958,-0.0474244 + 0.228,-2.23376,-10.0349,-6.54018e-237, 21.9617, 10.9724, 10.9434,-0.0458405 + 0.229,-2.24364,-9.71129,-9.54459e-236, 22.0569, 11.0194, 10.9932,-0.0442998 + 0.23,-2.25319,-9.40483,-1.34774e-234, 22.1492, 11.0621, 11.044,-0.0430168 + 0.231,-2.26245, -9.1644,-1.84355e-233, 22.2391, 11.1026, 11.0943,-0.0421437 + 0.232,-2.27151,-9.02809,-2.44558e-232, 22.3276, 11.1432, 11.1427,-0.0417778 + 0.233, -2.2805,-9.01723,-3.14945e-231, 22.4161, 11.1852, 11.189,-0.0419712 + 0.234,-2.28955,-9.13299,-3.94127e-230, 22.5057, 11.2286, 11.2344,-0.0427246 + 0.235,-2.29877,-9.35636,-4.79717e-229, 22.5975, 11.273, 11.2805,-0.0439669 + 0.236,-2.30826,-9.65122,-5.68399e-228, 22.6922, 11.318, 11.3286,-0.0455349 + 0.237,-2.31807,-9.97018,-6.56136e-227, 22.79, 11.3641, 11.3787,-0.0471769 + 0.238, -2.3282,-10.2622,-7.3848e-226, 22.8906, 11.4126, 11.4295,-0.0485936 + 0.239, -2.3386,-10.4808,-8.10968e-225, 22.9935, 11.4646, 11.4794,-0.0495088 + 0.24,-2.34916,-10.5914,-8.69535e-224, 23.0974, 11.5203, 11.5273,-0.0497444 + 0.241,-2.35978,-10.5767,-9.10904e-223, 23.2011, 11.5785, 11.5734,-0.0492697 + 0.242,-2.37032,-10.4397,-9.32887e-222, 23.3035, 11.6365, 11.6188,-0.0482025 + 0.243,-2.38066,-10.2027,-9.34571e-221, 23.4036, 11.6915, 11.6653,-0.0467662 + 0.244,-2.39072, -9.9039,-9.16362e-220, 23.5008, 11.7417, 11.7138,-0.045222 + 0.245,-2.40047,-9.59137,-8.79885e-219, 23.5949, 11.7869, 11.7641,-0.043809 + 0.246, -2.4099,-9.31504,-8.27772e-218, 23.6863, 11.8287, 11.8149,-0.0427109 + 0.247, -2.4191,-9.11887,-7.63368e-217, 23.7757, 11.8692, 11.8644,-0.0420526 + 0.248,-2.42814,-9.03386,-6.90396e-216, 23.8643, 11.9105, 11.9119,-0.0419104 + 0.249,-2.43716,-9.07314,-6.12631e-215, 23.9533, 11.9532, 11.9578,-0.0423168 + 0.25,-2.44629,-9.22993,-5.33607e-214, 24.0439, 11.9973, 12.0034,-0.0432477 + 0.251,-2.45562,-9.47873,-4.564e-213, 24.1369, 12.042, 12.0502,-0.0446004 + 0.252,-2.46525,-9.77945,-3.83479e-212, 24.2328, 12.0875, 12.0992,-0.0461806 + 0.253,-2.47518,-10.0838,-3.16647e-211, 24.3317, 12.1344, 12.1496,-0.0477193 + 0.254,-2.48541,-10.3433,-2.57042e-210, 24.4332, 12.1841, 12.2002,-0.0489265 + 0.255,-2.49587,-10.5166,-2.05202e-209, 24.5364, 12.2374, 12.2494,-0.0495644 + 0.256,-2.50645,-10.5763,-1.61159e-208, 24.6401, 12.2941, 12.2965,-0.0495137 + 0.257,-2.51702,-10.5135,-1.24556e-207, 24.7433, 12.3523, 12.3422,-0.0488044 + 0.258,-2.52747,-10.3385,-9.47647e-207, 24.8447, 12.4091, 12.3879,-0.0475981 + 0.259, -2.5377,-10.0798,-7.0996e-206, 24.9436, 12.4622, 12.4352,-0.0461339 + 0.26,-2.54763,-9.77901,-5.23905e-205, 25.0395, 12.5103, 12.4845,-0.0446623 + 0.261,-2.55726,-9.48433,-3.80912e-204, 25.1325, 12.554, 12.5351,-0.0433958 + 0.262, -2.5666,-9.24279,-2.72942e-203, 25.2232, 12.5952, 12.5855,-0.0424892 + 0.263,-2.57574,-9.09276,-1.92798e-202, 25.3124, 12.6361, 12.6342,-0.0420435 + 0.264,-2.58479,-9.05785,-1.34287e-201, 25.4013, 12.6781, 12.681,-0.0421163 + 0.265,-2.59386, -9.1432,-9.22512e-201, 25.491, 12.7216, 12.7266,-0.0427197 + 0.266,-2.60307,-9.33473,-6.252e-200, 25.5825, 12.7661, 12.7726,-0.0438026 + 0.267,-2.61253,-9.60144,-4.18096e-199, 25.6767, 12.8112, 12.8203,-0.0452304 + 0.268,-2.62228,-9.90046,-2.75957e-198, 25.7738, 12.8571, 12.8699,-0.0467816 + 0.269,-2.63233,-10.1839,-1.79808e-197, 25.8737, 12.905, 12.9206,-0.0481794 + 0.27,-2.64265,-10.4066,-1.15684e-196, 25.9758, 12.956, 12.9707,-0.0491536 + 0.271,-2.65314,-10.5332,-7.35056e-196, 26.0792, 13.0106, 13.019,-0.0495126 + 0.272,-2.66371,-10.5438,-4.61358e-195, 26.1826, 13.0679, 13.0655,-0.0491974 + 0.273,-2.67423,-10.4371,-2.86096e-194, 26.285, 13.1256, 13.1111,-0.0482921 + 0.274,-2.68459,-10.2307,-1.75316e-193, 26.3854, 13.181, 13.1573,-0.0469912 + 0.275,-2.69469,-9.95787,-1.06181e-192, 26.483, 13.2321, 13.2054,-0.0455385 + 0.276, -2.7045,-9.66238,-6.35719e-192, 26.5778, 13.2783, 13.2553,-0.0441667 + 0.277,-2.71402,-9.39155,-3.76316e-191, 26.67, 13.3209, 13.306,-0.0430608 + 0.278,-2.72328,-9.18853,-2.20284e-190, 26.7601, 13.362, 13.3558,-0.0423491 + 0.279,-2.73239, -9.0855,-1.27534e-189, 26.8492, 13.4034, 13.4037,-0.0421122 + 0.28,-2.74146,-9.09856,-7.30383e-189, 26.9385, 13.4462, 13.4499,-0.0423897 + 0.281,-2.75059,-9.22522,-4.13835e-188, 27.029, 13.4902, 13.4956,-0.0431717 + 0.282,-2.75991,-9.44483,-2.32017e-187, 27.1216, 13.5351, 13.5422,-0.0443783 + 0.283,-2.76948,-9.72199,-1.28734e-186, 27.217, 13.5805, 13.5907,-0.0458436 + 0.284,-2.77935,-10.0122,-7.06982e-186, 27.3152, 13.6271, 13.6408,-0.0473257 + 0.285, -2.7895,-10.2691,-3.84352e-185, 27.416, 13.6761, 13.6913,-0.0485494 + 0.286,-2.79989,-10.4518,-2.06878e-184, 27.5185, 13.7284, 13.7408,-0.0492744 + 0.287,-2.81041,-10.5313,-1.10261e-183, 27.6218, 13.7841, 13.7884,-0.0493613 + 0.288,-2.82095,-10.4954,-5.81979e-183, 27.7248, 13.8416, 13.8344,-0.0488094 + 0.289, -2.8314, -10.35,-3.04248e-182, 27.8263, 13.8984, 13.8801,-0.047749 + 0.29,-2.84165,-10.1189,-1.57557e-181, 27.9256, 13.9521, 13.9271,-0.0463959 + 0.291,-2.85164, -9.8393,-8.08331e-181, 28.0221, 14.0012, 13.9759,-0.044989 + 0.292,-2.86133,-9.55594,-4.10899e-180, 28.1158, 14.0459, 14.0262,-0.043739 + 0.293,-2.87075,-9.31414,-2.06978e-179, 28.2072, 14.0878, 14.0766,-0.0428036 + 0.294,-2.87996,-9.15237,-1.03325e-178, 28.297, 14.129, 14.1257,-0.0422878 + 0.295,-2.88905, -9.0962,-5.11249e-178, 28.3862, 14.171, 14.1729,-0.0422543 + 0.296,-2.89815,-9.15424,-2.50754e-177, 28.476, 14.2145, 14.2188,-0.0427244 + 0.297,-2.90736,-9.31684,-1.21926e-176, 28.5674, 14.259, 14.2647,-0.0436639 + 0.298,-2.91678,-9.55767,-5.87799e-176, 28.6612, 14.3042, 14.312,-0.0449627 + 0.299,-2.92648, -9.838,-2.80987e-175, 28.7577, 14.35, 14.3613,-0.046427 + 0.3,-2.93646,-10.1129,-1.33202e-174, 28.8569, 14.3974, 14.4117,-0.0478015 + 0.301, -2.9467,-10.3385,-6.26251e-174, 28.9583, 14.4476, 14.4619,-0.0488235 + 0.302,-2.95714, -10.479,-2.92037e-173, 29.0611, 14.5012, 14.5106,-0.0492913 + 0.303,-2.96766,-10.5121,-1.3509e-172, 29.1643, 14.5577, 14.5575,-0.0491207 + 0.304,-2.97816,-10.4329,-6.19926e-172, 29.2666, 14.615, 14.6033,-0.0483648 + 0.305,-2.98853,-10.2545,-2.82248e-171, 29.3672, 14.6706, 14.6494,-0.0471906 + 0.306,-2.99867,-10.0057,-1.27507e-170, 29.4654, 14.7224, 14.6971,-0.0458244 + 0.307,-3.00854,-9.72639,-5.71588e-170, 29.5608, 14.7697, 14.7466,-0.0444927 + 0.308,-3.01812,-9.46138,-2.54285e-169, 29.6536, 14.8131, 14.7971,-0.0433815 + 0.309,-3.02746,-9.25292,-1.12274e-168, 29.7444, 14.8547, 14.8471,-0.0426231 + 0.31,-3.03663,-9.13413,-4.92035e-168, 29.834, 14.8962, 14.8954,-0.0423024 + 0.311,-3.04573, -9.1237,-2.14045e-167, 29.9235, 14.939, 14.942,-0.0424652 + 0.312,-3.05488,-9.22293,-9.24358e-167, 30.0139, 14.9831, 14.9878,-0.0431131 + 0.313,-3.06418,-9.41564,-3.96311e-166, 30.1063, 15.028, 15.0341,-0.0441858 + 0.314,-3.07371,-9.67073,-1.68704e-165, 30.2012, 15.0734, 15.0822,-0.0455429 + 0.315,-3.08352,-9.94726,-7.13082e-165, 30.2988, 15.1198, 15.132,-0.0469673 + 0.316, -3.0936, -10.201,-2.99303e-164, 30.3988, 15.1682, 15.1825,-0.0481994 + 0.317,-3.10392,-10.3914,-1.24759e-163, 30.5008, 15.2196, 15.2322,-0.0489989 + 0.318,-3.11438,-10.4884,-5.16475e-163, 30.6037, 15.2743, 15.2801,-0.0492095 + 0.319, -3.1249,-10.4767,-2.12362e-162, 30.7064, 15.3312, 15.3265,-0.0488026 + 0.32,-3.13534,-10.3585,-8.67326e-162, 30.8081, 15.3879, 15.3723,-0.0478789 + 0.321,-3.14561,-10.1531,-3.51881e-161, 30.9077, 15.4421, 15.419,-0.0466314 + 0.322,-3.15564,-9.89344,-1.41823e-160, 31.0047, 15.492, 15.4674,-0.0452873 + 0.323, -3.1654, -9.6213,-5.67883e-160, 31.0991, 15.5376, 15.5174,-0.044055 + 0.324,-3.17489,-9.38015,-2.25925e-159, 31.1911, 15.5802, 15.5678,-0.0430953 + 0.325,-3.18416,-9.20842,-8.93073e-159, 31.2815, 15.6217, 15.6172,-0.0425177 + 0.326, -3.1933,-9.13333,-3.50797e-158, 31.3711, 15.6639, 15.6648,-0.0423893 + 0.327,-3.20243,-9.16658,-1.36929e-157, 31.461, 15.7073, 15.711,-0.0427394 + 0.328,-3.21164,-9.30252,-5.31169e-157, 31.5522, 15.7518, 15.7568,-0.0435479 + 0.329,-3.22103,-9.51912,-2.04782e-156, 31.6456, 15.797, 15.8039,-0.0447262 + 0.33,-3.23068,-9.78154,-7.84693e-156, 31.7416, 15.8428, 15.8527,-0.0461057 + 0.331,-3.24059,-10.0477,-2.98867e-155, 31.8401, 15.8898, 15.9028,-0.0474522 + 0.332,-3.25077,-10.2751,-1.1315e-154, 31.9409, 15.9393, 15.9531,-0.0485117 + 0.333,-3.26114,-10.4275,-4.25841e-154, 32.0432, 15.992, 16.0022,-0.0490752 + 0.334,-3.27163,-10.4808,-1.59325e-153, 32.1461, 16.0476, 16.0494,-0.0490368 + 0.335,-3.28211,-10.4267,-5.92636e-153, 32.2483, 16.1045, 16.0954,-0.0484206 + 0.336,-3.29248,-10.2743,-2.19169e-152, 32.3491, 16.1603, 16.1415,-0.0473671 + 0.337,-3.30265,-10.0482,-8.05903e-152, 32.4477, 16.2128, 16.1888,-0.0460847 + 0.338,-3.31258,-9.78462,-2.94658e-151, 32.5437, 16.2609, 16.238,-0.0447934 + 0.339,-3.32222,-9.52593,-1.07129e-150, 32.6371, 16.3052, 16.2883,-0.0436799 + 0.34,-3.33163,-9.31338,-3.87323e-150, 32.7285, 16.3473, 16.3383,-0.0428808 + 0.341,-3.34085,-9.18081,-1.39263e-149, 32.8186, 16.389, 16.387,-0.0424854 + 0.342,-3.34999,-9.14915,-4.97982e-149, 32.9083, 16.4318, 16.434,-0.042545 + 0.343,-3.35915,-9.22317,-1.77105e-148, 32.9988, 16.4758, 16.4799,-0.0430709 + 0.344,-3.36844,-9.39074,-6.26475e-148, 33.0909, 16.5207, 16.5262,-0.0440193 + 0.345,-3.37793,-9.62481,-2.20422e-147, 33.1853, 16.5662, 16.5739,-0.0452729 + 0.346,-3.38768,-9.88779,-7.71441e-147, 33.2823, 16.6124, 16.6233,-0.0466378 + 0.347,-3.39771,-10.1376,-2.68575e-146, 33.3818, 16.6603, 16.6736,-0.0478707 + 0.348,-3.40796,-10.3343,-9.30173e-146, 33.4832, 16.7109, 16.7235,-0.0487332 + 0.349,-3.41837,-10.4467,-3.2049e-145, 33.5857, 16.7647, 16.7719,-0.0490552 + 0.35,-3.42885, -10.457,-1.09859e-144, 33.6882, 16.8209, 16.8185,-0.0487829 + 0.351,-3.43929, -10.364,-3.7467e-144, 33.7899, 16.8775, 16.8644,-0.0479891 + 0.352,-3.44958,-10.1826,-1.27136e-143, 33.8898, 16.932, 16.9109,-0.0468439 + 0.353,-3.45965, -9.9423,-4.29253e-143, 33.9873, 16.9828, 16.959,-0.0455621 + 0.354,-3.46947,-9.68149,-1.44211e-142, 34.0823, 17.0293, 17.0087,-0.0443495 + 0.355,-3.47902,-9.44195,-4.82109e-142, 34.1749, 17.0726, 17.059,-0.04337 + 0.356,-3.48835, -9.2619,-1.60386e-141, 34.2658, 17.1144, 17.1086,-0.0427375 + 0.357,-3.49754,-9.16993,-5.30985e-141, 34.3557, 17.1566, 17.1566,-0.0425239 + 0.358,-3.50669,-9.18049,-1.74947e-140, 34.4458, 17.2, 17.203,-0.0427649 + 0.359, -3.5159, -9.2916,-5.73662e-140, 34.537, 17.2445, 17.249,-0.0434526 + 0.36,-3.52527,-9.48524,-1.87217e-139, 34.63, 17.2898, 17.2957,-0.0445172 + 0.361,-3.53487,-9.73023,-6.08127e-139, 34.7255, 17.3355, 17.3442,-0.045813 + 0.362,-3.54473,-9.98729,-1.96614e-138, 34.8234, 17.3823, 17.3941,-0.0471264 + 0.363,-3.55485,-10.2153,-6.32735e-138, 34.9237, 17.4311, 17.4443,-0.0482137 + 0.364,-3.56516,-10.3779,-2.0269e-137, 35.0255, 17.4829, 17.4937,-0.0488613 + 0.365, -3.5756,-10.4494,-6.46341e-137, 35.128, 17.5377, 17.5413,-0.0489441 + 0.366,-3.58606,-10.4184,-2.05175e-136, 35.2302, 17.5942, 17.5875,-0.0484598 + 0.367,-3.59644,-10.2904,-6.48384e-136, 35.3311, 17.65, 17.6336,-0.0475225 + 0.368,-3.60664,-10.0859,-2.03987e-135, 35.4301, 17.7031, 17.6806,-0.0463229 + 0.369,-3.61661,-9.83789,-6.38922e-135, 35.5266, 17.7521, 17.7294,-0.0450732 + 0.37,-3.62632, -9.5861,-1.99243e-134, 35.6206, 17.7972, 17.7794,-0.0439609 + 0.371,-3.63578,-9.37077,-6.18617e-134, 35.7125, 17.8398, 17.8296,-0.0431265 + 0.372,-3.64506, -9.2262,-1.91239e-133, 35.803, 17.8818, 17.8786,-0.0426643 + 0.373,-3.65424, -9.1753,-5.88659e-133, 35.8931, 17.9245, 17.9259,-0.0426302 + 0.374,-3.66341,-9.22597,-1.80424e-132, 35.9836, 17.9685, 17.972,-0.0430441 + 0.375,-3.67269,-9.36982,-5.50657e-132, 36.0755, 18.0134, 18.0182,-0.0438763 + 0.376,-3.68215,-9.58363,-1.67355e-131, 36.1695, 18.0589, 18.0656,-0.0450299 + 0.377,-3.69186,-9.83304,-5.06498e-131, 36.266, 18.105, 18.1147,-0.0463333 + 0.378,-3.70182,-10.0781,-1.52656e-130, 36.3648, 18.1524, 18.1648,-0.0475595 + 0.379,-3.71201,-10.2797,-4.582e-130, 36.4657, 18.2024, 18.2148,-0.0484742 + 0.38,-3.72238,-10.4057,-1.36968e-129, 36.5678, 18.2554, 18.2635,-0.0488965 + 0.381,-3.73282,-10.4362,-4.07769e-129, 36.6701, 18.3109, 18.3105,-0.0487499 + 0.382,-3.74325,-10.3665,-1.20908e-128, 36.7718, 18.3672, 18.3566,-0.0480802 + 0.383,-3.75356,-10.2081,-3.57067e-128, 36.872, 18.422, 18.4029,-0.0470352 + 0.384,-3.76366,-9.98648,-1.0503e-127, 36.9699, 18.4735, 18.4506,-0.0458164 + 0.385,-3.77353,-9.73725,-3.07722e-127, 37.0655, 18.5208, 18.5,-0.0446263 + 0.386,-3.78314,-9.50029,-8.98037e-127, 37.1587, 18.5648, 18.5502,-0.0436313 + 0.387,-3.79253,-9.31344,-2.61055e-126, 37.25, 18.6071, 18.6,-0.0429502 + 0.388,-3.80177,-9.20642,-7.55934e-126, 37.3403, 18.6494, 18.6483,-0.0426597 + 0.389,-3.81094,-9.19613,-2.18052e-125, 37.4305, 18.6927, 18.6951,-0.042801 + 0.39,-3.82016,-9.28397,-6.26575e-125, 37.5216, 18.7372, 18.7411,-0.0433764 + 0.391,-3.82951,-9.45564,-1.79363e-124, 37.6144, 18.7824, 18.7877,-0.0443327 + 0.392,-3.83907,-9.68349,-5.11504e-124, 37.7094, 18.8281, 18.8357,-0.0455454 + 0.393,-3.84888,-9.93099,-1.45323e-123, 37.8068, 18.8747, 18.8853,-0.0468209 + 0.394,-3.85893,-10.1585,-4.11337e-123, 37.9065, 18.923, 18.9355,-0.047927 + 0.395,-3.86919,-10.3298,-1.15998e-122, 38.0078, 18.9741, 18.9851,-0.0486476 + 0.396,-3.87959,-10.4175,-3.25912e-122, 38.11, 19.0281, 19.0331,-0.0488419 + 0.397,-3.89003, -10.408,-9.1235e-122, 38.2121, 19.084, 19.0796,-0.0484823 + 0.398,-3.90041,-10.3029,-2.54473e-121, 38.3132, 19.1399, 19.1257,-0.047658 + 0.399,-3.91063,-10.1193,-7.07213e-121, 38.4124, 19.1934, 19.1725,-0.0465411 + 0.4,-3.92065,-9.88676,-1.95839e-120, 38.5094, 19.2432, 19.2209,-0.0453351 + 0.401,-3.93041,-9.64251,-5.40374e-120, 38.604, 19.2891, 19.2707,-0.0442275 + 0.402,-3.93993,-9.42564,-1.48576e-119, 38.6965, 19.3323, 19.3208,-0.0433632 + 0.403,-3.94926,-9.27074,-4.07073e-119, 38.7874, 19.3745, 19.3701,-0.0428409 + 0.404,-3.95847,-9.20239,-1.1114e-118, 38.8777, 19.4172, 19.4178,-0.0427216 + 0.405,-3.96766,-9.23132,-3.02383e-118, 38.9683, 19.4611, 19.4641,-0.0430319 + 0.406,-3.97693,-9.35265,-8.19859e-118, 39.06, 19.506, 19.5103,-0.0437547 + 0.407,-3.98637,-9.54677,-2.21526e-117, 39.1537, 19.5515, 19.5574,-0.0448113 + 0.408,-3.99603,-9.78248,-5.9652e-117, 39.2496, 19.5975, 19.6061,-0.0460509 + 0.409,-4.00593, -10.022,-1.60084e-116, 39.3479, 19.6446, 19.656,-0.0472634 + 0.41,-4.01607,-10.2271,-4.28155e-116, 39.4483, 19.6939, 19.7061,-0.0482202 + 0.411,-4.02639, -10.365,-1.14129e-115, 39.55, 19.7461, 19.7551,-0.0487324 + 0.412, -4.0368,-10.4139,-3.03205e-115, 39.6521, 19.801, 19.8024,-0.0487032 + 0.413,-4.04722,-10.3661,-8.02852e-115, 39.7538, 19.857, 19.8487,-0.048153 + 0.414,-4.05753,-10.2296,-2.11885e-114, 39.8542, 19.912, 19.8949,-0.047207 + 0.415,-4.06768,-10.0264,-5.57364e-114, 39.9525, 19.9641, 19.9423,-0.0460526 + 0.416,-4.07759,-9.78906,-1.46137e-113, 40.0485, 20.0123, 19.9913,-0.0448879 + 0.417,-4.08725,-9.55565,-3.81918e-113, 40.1423, 20.057, 20.0414,-0.0438819 + 0.418, -4.0967,-9.36345,-9.94902e-113, 40.2341, 20.0997, 20.0913,-0.043158 + 0.419,-4.10598,-9.24307,-2.58343e-112, 40.3248, 20.142, 20.14,-0.0427976 + 0.42,-4.11518,-9.21359,-6.68692e-112, 40.4152, 20.1853, 20.1871,-0.0428473 + 0.421,-4.12441,-9.27949,-1.72536e-111, 40.5062, 20.2297, 20.2332,-0.0433179 + 0.422,-4.13374,-9.43001,-4.43773e-111, 40.5987, 20.275, 20.2796,-0.0441708 + 0.423,-4.14327,-9.64091,-1.13784e-110, 40.6933, 20.3207, 20.3274,-0.0453007 + 0.424,-4.15303,-9.87834,-2.90835e-110, 40.7902, 20.3671, 20.3766,-0.0465335 + 0.425,-4.16302,-10.1043,-7.4108e-110, 40.8894, 20.4149, 20.4268,-0.0476497 + 0.426,-4.17323,-10.2827,-1.88254e-109, 40.9902, 20.4653, 20.4765,-0.0484332 + 0.427,-4.18359,-10.3851,-4.76749e-109, 41.0921, 20.5186, 20.5248,-0.0487296 + 0.428, -4.194,-10.3954,-1.20368e-108, 41.1941, 20.574, 20.5716,-0.0484886 + 0.429,-4.20438,-10.3121,-3.0298e-108, 41.2952, 20.6297, 20.6177,-0.0477746 + 0.43,-4.21463,-10.1487,-7.60339e-108, 41.3948, 20.6837, 20.6644,-0.0467407 + 0.431,-4.22468,-9.93161,-1.90238e-107, 41.4922, 20.7342, 20.7124,-0.0455811 + 0.432,-4.23449,-9.69558,-4.74558e-107, 41.5873, 20.7809, 20.762,-0.0444821 + 0.433,-4.24407,-9.47839,-1.1803e-106, 41.6803, 20.8246, 20.8121,-0.0435927 + 0.434,-4.25345,-9.31469,-2.92694e-106, 41.7717, 20.8671, 20.8616,-0.0430165 + 0.435, -4.2627,-9.23053,-7.23701e-106, 41.8623, 20.9099, 20.9096,-0.0428192 + 0.436,-4.27191,-9.23918,-1.78417e-105, 41.9529, 20.9537, 20.9562,-0.0430335 + 0.437,-4.28118,-9.33903,-4.38581e-105, 42.0445, 20.9985, 21.0023,-0.043653 + 0.438,-4.29059,-9.51393,-1.075e-104, 42.1378, 21.044, 21.0492,-0.0446151 + 0.439,-4.30021,-9.73575,-2.62735e-104, 42.2333, 21.09, 21.0976,-0.0457888 + 0.44,-4.31006,-9.96893,-6.40301e-104, 42.3311, 21.1369, 21.1473,-0.0469808 + 0.441,-4.32014,-10.1762,-1.55602e-103, 42.431, 21.1856, 21.1974,-0.0479702 + 0.442,-4.33041,-10.3244,-3.77065e-103, 42.5323, 21.2371, 21.2466,-0.0485625 + 0.443,-4.34079,-10.3901,-9.1116e-103, 42.6342, 21.2912, 21.2943,-0.0486429 + 0.444,-4.35119, -10.363,-2.19561e-102, 42.7358, 21.3469, 21.3407,-0.0482079 + 0.445,-4.36152,-10.2475,-5.27601e-102, 42.8364, 21.4021, 21.3869,-0.0473601 + 0.446,-4.37169,-10.0623,-1.2643e-101, 42.9351, 21.4547, 21.4341,-0.046272 + 0.447,-4.38164,-9.83728,-3.02133e-101, 43.0316, 21.5037, 21.4828,-0.0451362 + 0.448,-4.39136,-9.60836,-7.20034e-101, 43.1258, 21.5491, 21.5327,-0.0441235 + 0.449,-4.40086,-9.41218,-1.71128e-100, 43.2182, 21.5922, 21.5826,-0.0433623 + 0.45,-4.41019,-9.28003,-4.0561e-100, 43.3092, 21.6347, 21.6316,-0.0429384 + 0.451,-4.41942,-9.23286,-9.58787e-100, 43.3998, 21.6779, 21.679,-0.0429035 + 0.452,-4.42865,-9.27805,-2.2603e-99, 43.4908, 21.7223, 21.7253,-0.043276 + 0.453,-4.43798,-9.40816,-5.31432e-99, 43.5831, 21.7675, 21.7716,-0.0440297 + 0.454,-4.44747, -9.6022,-1.24615e-98, 43.6773, 21.8132, 21.819,-0.0450772 + 0.455,-4.45718,-9.82903,-2.91437e-98, 43.7737, 21.8594, 21.868,-0.046263 + 0.456,-4.46713,-10.0523,-6.79784e-98, 43.8723, 21.907, 21.918,-0.047381 + 0.457,-4.47728,-10.2364,-1.58146e-97, 43.9728, 21.9567, 21.9678,-0.0482176 + 0.458, -4.4876,-10.3519,-3.66951e-97, 44.0743, 22.0092, 22.0165,-0.0486072 + 0.459,-4.49799,-10.3806,-8.4924e-97, 44.1761, 22.0641, 22.0636,-0.0484787 + 0.46,-4.50836, -10.318,-1.96033e-96, 44.2774, 22.1197, 22.1098,-0.0478727 + 0.461,-4.51862,-10.1743,-4.51345e-96, 44.3772, 22.1739, 22.1563,-0.0469228 + 0.462,-4.52871,-9.97273,-1.03651e-95, 44.475, 22.2251, 22.2041,-0.0458124 + 0.463,-4.53857,-9.74559,-2.37429e-95, 44.5706, 22.2726, 22.2533,-0.0447261 + 0.464, -4.5482,-9.52923,-5.42487e-95, 44.6641, 22.3169, 22.3033,-0.0438164 + 0.465,-4.55763,-9.35822,-1.23637e-94, 44.7559, 22.3597, 22.353,-0.043192 + 0.466,-4.56692,-9.25978,-2.8107e-94, 44.8467, 22.4025, 22.4013,-0.0429231 + 0.467,-4.57615,-9.24949,-6.37372e-94, 44.9375, 22.4462, 22.4482,-0.0430482 + 0.468,-4.58541,-9.32882,-1.44175e-93, 45.029, 22.491, 22.4944,-0.0435696 + 0.469,-4.59481,-9.48489,-3.25319e-93, 45.122, 22.5365, 22.5411,-0.0444397 + 0.47,-4.60438,-9.69258,-7.32247e-93, 45.2171, 22.5824, 22.5891,-0.0455455 + 0.471,-4.61419, -9.9186,-1.64414e-92, 45.3144, 22.6291, 22.6386,-0.0467109 + 0.472,-4.62422,-10.1268,-3.68262e-92, 45.4138, 22.6774, 22.6886,-0.0477239 + 0.473,-4.63444,-10.2839,-8.22844e-92, 45.5146, 22.7282, 22.7381,-0.0483867 + 0.474,-4.64479,-10.3649,-1.83411e-91, 45.6163, 22.7817, 22.7861,-0.0485692 + 0.475,-4.65517,-10.3571,-4.07837e-91, 45.7179, 22.8369, 22.8328,-0.0482454 + 0.476, -4.6655,-10.2618,-9.047e-91, 45.8186, 22.8921, 22.879,-0.0474952 + 0.477, -4.6757,-10.0945,-2.00209e-90, 45.9176, 22.9452, 22.9259,-0.0464755 + 0.478,-4.68569,-9.88213,-4.42007e-90, 46.0146, 22.9949, 22.9743,-0.0453723 + 0.479,-4.69546,-9.65863,-9.73523e-90, 46.1093, 23.041, 23.0239,-0.0443574 + 0.48,-4.70501,-9.45979,-2.13914e-89, 46.2021, 23.0846, 23.0739,-0.0435638 + 0.481,-4.71438,-9.31735,-4.68933e-89, 46.2935, 23.1273, 23.1231,-0.0430823 + 0.482,-4.72364,-9.25394,-1.02557e-88, 46.3843, 23.1705, 23.1708,-0.0429693 + 0.483,-4.73289,-9.27955,-2.23776e-88, 46.4753, 23.2148, 23.2173,-0.0432496 + 0.484, -4.7422,-9.38989,-4.87138e-88, 46.5674, 23.2599, 23.2636,-0.0439081 + 0.485,-4.75167,-9.56715,-1.05801e-87, 46.6613, 23.3056, 23.3108,-0.0448734 + 0.486,-4.76134,-9.78286,-2.2926e-87, 46.7573, 23.3518, 23.3595,-0.0460083 + 0.487,-4.77123,-10.0025,-4.95649e-87, 46.8554, 23.399, 23.4093,-0.0471206 + 0.488,-4.78134,-10.1909,-1.06913e-86, 46.9554, 23.4482, 23.4592,-0.0480007 + 0.489,-4.79162, -10.318,-2.30093e-86, 47.0566, 23.5, 23.5081,-0.0484749 + 0.49,-4.80198,-10.3637,-4.94076e-86, 47.1583, 23.5543, 23.5555,-0.0484532 + 0.491,-4.81234,-10.3207,-1.05854e-85, 47.2595, 23.6097, 23.6019,-0.0479529 + 0.492,-4.82262,-10.1963,-2.26282e-85, 47.3595, 23.6642, 23.6483,-0.047088 + 0.493,-4.83274,-10.0103,-4.82642e-85, 47.4577, 23.7159, 23.6957,-0.04603 + 0.494,-4.84264,-9.79271,-1.02715e-84, 47.5538, 23.7642, 23.7447,-0.0449605 + 0.495,-4.85232,-9.57832,-2.18115e-84, 47.6478, 23.8091, 23.7946,-0.0440351 + 0.496, -4.8618,-9.40139,-4.62145e-84, 47.74, 23.8523, 23.8444,-0.0433678 + 0.497,-4.87112,-9.29013,-9.77058e-84, 47.8311, 23.8951, 23.893,-0.0430333 + 0.498,-4.88038,-9.26219,-2.06117e-83, 47.922, 23.9388, 23.9401,-0.0430751 + 0.499,-4.88965,-9.32187,-4.33874e-83, 48.0134, 23.9835, 23.9865,-0.0435037 + 0.5,-4.89902,-9.45946,-9.11324e-83, 48.1062, 24.0289, 24.033,-0.044284 + 0.501,-4.90857, -9.6528,-1.91005e-82, 48.2009, 24.0748, 24.0808,-0.0453203 + 0.502,-4.91833,-9.87089,-3.99471e-82, 48.2978, 24.1214, 24.1299,-0.0464531 + 0.503,-4.92831,-10.0788,-8.33676e-82, 48.3966, 24.1692, 24.1799,-0.0474811 + 0.504,-4.93849,-10.2433,-1.73614e-81, 48.4971, 24.2194, 24.2295,-0.0482052 + 0.505, -4.9488,-10.3383,-3.60786e-81, 48.5985, 24.2722, 24.2778,-0.0484826 + 0.506,-4.95916,-10.3486,-7.48164e-81, 48.7001, 24.327, 24.3248,-0.0482657 + 0.507,-4.96949,-10.2728,-1.54821e-80, 48.8008, 24.3822, 24.371,-0.0476127 + 0.508,-4.97971,-10.1232,-3.19709e-80, 48.9001, 24.4357, 24.4178,-0.0466637 + 0.509,-4.98974,-9.92378,-6.58828e-80, 48.9975, 24.4861, 24.4658,-0.0455969 + 0.51,-4.99955,-9.70659,-1.35483e-79, 49.0927, 24.5329, 24.5152,-0.0445843 + 0.511,-5.00915,-9.50636,-2.78036e-79, 49.186, 24.577, 24.5652,-0.0437632 + 0.512,-5.01857,-9.35505,-5.69404e-79, 49.2777, 24.6199, 24.6146,-0.0432296 + 0.513,-5.02786,-9.27677,-1.16372e-78, 49.3687, 24.6631, 24.6626,-0.0430442 + 0.514,-5.03712,-9.28387,-2.37348e-78, 49.4598, 24.7072, 24.7094,-0.0432379 + 0.515,-5.04643,-9.37506,-4.83102e-78, 49.5518, 24.7523, 24.7556,-0.0438049 + 0.516,-5.05587, -9.5356,-9.81319e-78, 49.6453, 24.798, 24.8026,-0.0446886 + 0.517, -5.0655,-9.73969,-1.98931e-77, 49.7409, 24.8442, 24.851,-0.0457689 + 0.518,-5.07535,-9.95462,-4.02458e-77, 49.8385, 24.8911, 24.9005,-0.0468682 + 0.519,-5.08541, -10.146,-8.1258e-77, 49.9381, 24.9398, 24.9505,-0.047783 + 0.52,-5.09564,-10.2833,-1.63736e-76, 50.0389, 24.991, 24.9996,-0.0483333 + 0.521,-5.10598,-10.3447,-3.29273e-76, 50.1404, 25.0447, 25.0474,-0.0484123 + 0.522,-5.11633,-10.3205,-6.60857e-76, 50.2417, 25.0997, 25.0939,-0.0480156 + 0.523,-5.12662,-10.2148,-1.32373e-75, 50.3419, 25.1544, 25.1403,-0.0472367 + 0.524,-5.13676,-10.0445,-2.64629e-75, 50.4404, 25.2067, 25.1875,-0.0462342 + 0.525,-5.14671,-9.83707,-5.27987e-75, 50.5369, 25.2556, 25.2361,-0.0451859 + 0.526,-5.15644,-9.62572,-1.05138e-74, 50.6313, 25.3012, 25.2859,-0.0442496 + 0.527,-5.16596,-9.44422,-2.08954e-74, 50.724, 25.3448, 25.3357,-0.0435442 + 0.528,-5.17532,-9.32153,-4.14476e-74, 50.8154, 25.3877, 25.3846,-0.0431496 + 0.529, -5.1846,-9.27717,-8.20556e-74, 50.9064, 25.4313, 25.4321,-0.0431137 + 0.53,-5.19388,-9.31806,-1.62137e-73, 50.9979, 25.4759, 25.4785,-0.043454 + 0.531,-5.20324,-9.43751,-3.19758e-73, 51.0904, 25.5213, 25.525,-0.0441469 + 0.532,-5.21275,-9.61628,-6.29406e-73, 51.1848, 25.5672, 25.5724,-0.0451123 + 0.533,-5.22247,-9.82568,-1.23655e-72, 51.2812, 25.6136, 25.6213,-0.0462074 + 0.534,-5.23241,-10.0322,-2.42478e-72, 51.3796, 25.6612, 25.6712,-0.0472421 + 0.535,-5.24254,-10.2028,-4.7458e-72, 51.4797, 25.7108, 25.7209,-0.0480187 + 0.536,-5.25281,-10.3103,-9.27105e-72, 51.5808, 25.7629, 25.7695,-0.0483834 + 0.537,-5.26316,-10.3376,-1.80773e-71, 51.6822, 25.8172, 25.8167,-0.0482694 + 0.538,-5.27349,-10.2805,-3.51824e-71, 51.7831, 25.8723, 25.8631,-0.047713 + 0.539,-5.28372,-10.1483,-6.83453e-71, 51.8826, 25.9261, 25.9097,-0.0468369 + 0.54,-5.29378,-9.96233,-1.32521e-70, 51.9804, 25.9771, 25.9574,-0.0458105 + 0.541,-5.30364, -9.7523,-2.56482e-70, 52.076, 26.0246, 26.0066,-0.0448047 + 0.542,-5.31329,-9.55189,-4.95484e-70, 52.1697, 26.0693, 26.0565,-0.0439608 + 0.543,-5.32275, -9.3931,-9.55442e-70, 52.2619, 26.1125, 26.106,-0.04338 + 0.544,-5.33207,-9.30126,-1.83901e-69, 52.3531, 26.1557, 26.1543,-0.0431278 + 0.545,-5.34135, -9.2909,-3.53322e-69, 52.4443, 26.1997, 26.2013,-0.0432398 + 0.546,-5.35066,-9.36355,-6.77591e-69, 52.5361, 26.2447, 26.2477,-0.0437191 + 0.547,-5.36008,-9.50743,-1.29712e-68, 52.6294, 26.2904, 26.2945,-0.0445219 + 0.548,-5.36967,-9.69942,-2.47859e-68, 52.7246, 26.3365, 26.3425,-0.0455444 + 0.549,-5.37947,-9.90873,-4.7277e-68, 52.8218, 26.3833, 26.3919,-0.0466241 + 0.55,-5.38949,-10.1019,-9.00154e-68, 52.9209, 26.4315, 26.4418,-0.0475648 + 0.551,-5.39968, -10.248,-1.71083e-67, 53.0214, 26.4821, 26.4911,-0.0481828 + 0.552,-5.40998,-10.3239,-3.24582e-67, 53.1227, 26.5352, 26.5391,-0.0483567 + 0.553,-5.42033,-10.3174,-6.14711e-67, 53.2239, 26.5899, 26.5859,-0.048061 + 0.554,-5.43062,-10.2299,-1.16212e-66, 53.3242, 26.6446, 26.6323,-0.047369 + 0.555,-5.44079,-10.0754,-2.19312e-66, 53.4231, 26.6974, 26.6793,-0.0464254 + 0.556,-5.45077,-9.87874,-4.13154e-66, 53.52, 26.747, 26.7276,-0.0454025 + 0.557,-5.46054,-9.67146,-7.76965e-66, 53.6149, 26.7932, 26.7772,-0.0444599 + 0.558,-5.47011,-9.48669,-1.45859e-65, 53.7079, 26.8372, 26.827,-0.0437214 + 0.559,-5.47952,-9.35393,-2.73344e-65, 53.7997, 26.8803, 26.8761,-0.0432717 + 0.56,-5.48882,-9.29432,-5.11367e-65, 53.8909, 26.9238, 26.9239,-0.0431633 + 0.561, -5.4981,-9.31726,-9.55006e-65, 53.9823, 26.9683, 26.9705,-0.0434197 + 0.562,-5.50745,-9.41892,-1.78046e-64, 54.0747, 27.0137, 27.0169,-0.0440275 + 0.563,-5.51694,-9.58292,-3.31368e-64, 54.1687, 27.0596, 27.0642,-0.0449211 + 0.564,-5.52662,-9.78293,-6.1567e-64, 54.2646, 27.1059, 27.1128,-0.0459737 + 0.565,-5.53651,-9.98691,-1.14194e-63, 54.3626, 27.1532, 27.1625,-0.0470074 + 0.566,-5.54659,-10.1623,-2.11447e-63, 54.4623, 27.2022, 27.2122,-0.0478277 + 0.567,-5.55683, -10.281,-3.90863e-63, 54.5632, 27.2538, 27.2611,-0.0482723 + 0.568,-5.56716,-10.3242,-7.21295e-63, 54.6644, 27.3076, 27.3086,-0.0482568 + 0.569,-5.57748,-10.2851,-1.32883e-62, 54.7653, 27.3624, 27.3551,-0.0477962 + 0.57,-5.58773,-10.1702,-2.44399e-62, 54.8651, 27.4165, 27.4016,-0.0469953 + 0.571,-5.59782,-9.99786,-4.48748e-62, 54.9632, 27.4681, 27.4491,-0.0460132 + 0.572,-5.60772,-9.79581,-8.22585e-62, 55.0593, 27.5163, 27.498,-0.0450187 + 0.573,-5.61741,-9.59638,-1.50535e-61, 55.1534, 27.5615, 27.5478,-0.0441568 + 0.574,-5.62691,-9.43144,-2.75027e-61, 55.246, 27.605, 27.5974,-0.0435337 + 0.575,-5.63628,-9.32731,-5.01643e-61, 55.3375, 27.6482, 27.646,-0.0432195 + 0.576,-5.64557,-9.30053,-9.13481e-61, 55.4287, 27.6922, 27.6933,-0.0432548 + 0.577,-5.65488,-9.35524,-1.6607e-60, 55.5205, 27.7371, 27.7397,-0.0436498 + 0.578,-5.66428,-9.48255,-3.0142e-60, 55.6135, 27.7828, 27.7864,-0.0443725 + 0.579,-5.67384,-9.66199,-5.46192e-60, 55.7083, 27.8288, 27.8341,-0.0453347 + 0.58, -5.6836,-9.86479,-9.88126e-60, 55.805, 27.8754, 27.8832,-0.0463885 + 0.581,-5.69357,-10.0585,-1.78474e-59, 55.9037, 27.9233, 27.933,-0.0473468 + 0.582,-5.70372,-10.2121,-3.21837e-59, 56.0039, 27.9733, 27.9826,-0.0480242 + 0.583, -5.714,-10.3012,-5.79424e-59, 56.105, 28.0258, 28.0309,-0.0482869 + 0.584,-5.72432,-10.3116,-1.0415e-58, 56.2061, 28.0801, 28.0779,-0.0480895 + 0.585,-5.73462,-10.2418,-1.86908e-58, 56.3066, 28.1348, 28.1243,-0.0474852 + 0.586,-5.74481,-10.1031,-3.34889e-58, 56.4057, 28.188, 28.1711,-0.0466036 + 0.587,-5.75483,-9.91776,-5.99079e-58, 56.503, 28.2382, 28.2192,-0.0456106 + 0.588,-5.76464,-9.71552,-1.06998e-57, 56.5983, 28.2851, 28.2685,-0.0446663 + 0.589,-5.77426,-9.52873,-1.90802e-57, 56.6918, 28.3296, 28.3183,-0.0438993 + 0.59, -5.7837,-9.38723,-3.39707e-57, 56.7839, 28.3728, 28.3676,-0.0433992 + 0.591,-5.79303,-9.31355,-6.03868e-57, 56.8752, 28.4163, 28.4157,-0.0432232 + 0.592,-5.80233,-9.31936,-1.07176e-56, 56.9667, 28.4607, 28.4625, -0.0434 + 0.593,-5.81167, -9.4036,-1.89922e-56, 57.0589, 28.506, 28.5089,-0.0439251 + 0.594,-5.82113,-9.55267,-3.36028e-56, 57.1526, 28.5519, 28.556,-0.0447462 + 0.595,-5.83078,-9.74262,-5.93609e-56, 57.2482, 28.5981, 28.6043,-0.045752 + 0.596,-5.84062,-9.94303,-1.04701e-55, 57.3457, 28.6452, 28.6538,-0.0467775 + 0.597,-5.85066,-10.1218,-1.84388e-55, 57.445, 28.6938, 28.7036,-0.047633 + 0.598,-5.86086,-10.2505,-3.24223e-55, 57.5456, 28.7448, 28.7527,-0.0481502 + 0.599,-5.87116,-10.3085,-5.69228e-55, 57.6467, 28.798, 28.8004,-0.0482285 + 0.6,-5.88148,-10.2867,-9.97847e-55, 57.7476, 28.8526, 28.8471,-0.0478626 + 0.601,-5.89174,-10.1888,-1.74654e-54, 57.8476, 28.9068, 28.8936,-0.0471389 + 0.602,-5.90186,-10.0304,-3.05232e-54, 57.946, 28.9589, 28.9409,-0.046205 + 0.603, -5.9118,-9.83711,-5.32626e-54, 58.0425, 29.0078, 28.9894,-0.0452265 + 0.604,-5.92153,-9.63977,-9.28018e-54, 58.137, 29.0536, 29.0391,-0.0443511 + 0.605,-5.93108,-9.46998,-1.61449e-53, 58.2299, 29.0975, 29.0888,-0.0436903 + 0.606,-5.94047,-9.35482,-2.80451e-53, 58.3217, 29.1408, 29.1376,-0.0433188 + 0.607,-5.94979,-9.31263,-4.86439e-53, 58.4131, 29.1846, 29.1852,-0.0432819 + 0.608, -5.9591,-9.35002,-8.42458e-53, 58.5048, 29.2295, 29.2317,-0.0435961 + 0.609,-5.96849,-9.46088,-1.45686e-52, 58.5976, 29.2751, 29.2783,-0.04424 + 0.61,-5.97802,-9.62738,-2.51561e-52, 58.692, 29.3211, 29.3258,-0.0451395 + 0.611,-5.98774, -9.8228,-4.33732e-52, 58.7884, 29.3676, 29.3746,-0.0461619 + 0.612,-5.99766,-10.0159,-7.46716e-52, 58.8867, 29.4152, 29.4243,-0.0471298 + 0.613,-6.00777,-10.1757,-1.28365e-51, 58.9865, 29.4647, 29.474,-0.0478585 + 0.614,-6.01802,-10.2768,-2.20344e-51, 59.0873, 29.5165, 29.5226,-0.0482035 + 0.615,-6.02833,-10.3031,-3.77672e-51, 59.1884, 29.5704, 29.5698,-0.0481015 + 0.616,-6.03862,-10.2505,-6.46385e-51, 59.2889, 29.625, 29.6163,-0.0475852 + 0.617,-6.04883,-10.1276,-1.10467e-50, 59.3883, 29.6785, 29.663,-0.0467687 + 0.618,-6.05888,-9.95414,-1.88513e-50, 59.4859, 29.7293, 29.7108,-0.0458099 + 0.619,-6.06873,-9.75789,-3.21232e-50, 59.5817, 29.7769, 29.7599,-0.0448687 + 0.62,-6.07839,-9.57028,-5.46595e-50, 59.6755, 29.8218, 29.8096,-0.0440777 + 0.621,-6.08788,-9.42131,-9.28718e-50, 59.768, 29.8653, 29.8591,-0.0435319 + 0.622,-6.09724,-9.33471,-1.57571e-49, 59.8595, 29.9088, 29.9074,-0.0432927 + 0.623,-6.10654,-9.32424,-2.66957e-49, 59.951, 29.9531, 29.9545,-0.0433941 + 0.624,-6.11588,-9.39145,-4.51632e-49, 60.0431, 29.9984, 30.0009,-0.043839 + 0.625,-6.12533,-9.52546,-7.62967e-49, 60.1366, 30.0442, 30.0478,-0.0445873 + 0.626,-6.13493,-9.70475,-1.28708e-48, 60.2318, 30.0904, 30.0958,-0.0455426 + 0.627,-6.14474,-9.90058,-2.16815e-48, 60.3289, 30.1373, 30.1451,-0.0465531 + 0.628,-6.15474,-10.0816,-3.64715e-48, 60.4278, 30.1855, 30.1949,-0.0474356 + 0.629, -6.1649,-10.2189,-6.12637e-48, 60.5281, 30.2359, 30.2442,-0.0480177 + 0.63,-6.17517,-10.2907,-1.02763e-47, 60.629, 30.2886, 30.2922,-0.048185 + 0.631,-6.18548,-10.2854,-1.72132e-47, 60.7299, 30.3429, 30.3391,-0.0479124 + 0.632,-6.19574,-10.2042,-2.87921e-47, 60.83, 30.3972, 30.3856,-0.0472677 + 0.633,-6.20589,-10.0601,-4.80924e-47, 60.9287, 30.4497, 30.4326,-0.0463857 + 0.634,-6.21586,-9.87618,-8.02179e-47, 61.0256, 30.4992, 30.4809,-0.0454278 + 0.635,-6.22564,-9.68201,-1.33616e-46, 61.1206, 30.5457, 30.5304,-0.0445437 + 0.636,-6.23523, -9.5086,-2.22251e-46, 61.2139, 30.5899, 30.5801,-0.0438496 + 0.637,-6.24466,-9.38366,-3.69168e-46, 61.3059, 30.6333, 30.6292,-0.0434253 + 0.638, -6.254,-9.32707,-6.12354e-46, 61.3974, 30.6771, 30.677,-0.0433205 + 0.639,-6.26331,-9.34778,-1.01433e-45, 61.4891, 30.7218, 30.7237,-0.0435573 + 0.64,-6.27269,-9.44236,-1.67788e-45, 61.5817, 30.7674, 30.7702,-0.0441237 + 0.641, -6.2822,-9.59557,-2.77167e-45, 61.6759, 30.8134, 30.8175,-0.0449589 + 0.642,-6.29188,-9.78282,-4.57222e-45, 61.7718, 30.8598, 30.8661,-0.0459447 + 0.643,-6.30176,-9.97412,-7.53213e-45, 61.8697, 30.9071, 30.9157,-0.0469147 + 0.644,-6.31183,-10.1389,-1.23913e-44, 61.9691, 30.9561, 30.9653,-0.0476865 + 0.645,-6.32204,-10.2508,-2.03574e-44, 62.0697, 31.0074, 31.0142,-0.0481075 + 0.646,-6.33233,-10.2921,-3.33993e-44, 62.1707, 31.0609, 31.0617,-0.0480973 + 0.647,-6.34263,-10.2562,-5.47222e-44, 62.2713, 31.1153, 31.1083,-0.0476692 + 0.648,-6.35285,-10.1491,-8.95369e-44, 62.3709, 31.169, 31.1549,-0.0469207 + 0.649,-6.36292,-9.98789,-1.46303e-43, 62.4688, 31.2204, 31.2025,-0.0460004 + 0.65,-6.37282, -9.7985,-2.38738e-43, 62.565, 31.2686, 31.2513,-0.0450669 + 0.651,-6.38252,-9.61124,-3.89051e-43, 62.6592, 31.314, 31.3009,-0.0442565 + 0.652,-6.39204,-9.45604,-6.33153e-43, 62.752, 31.3578, 31.3505,-0.0436693 + 0.653,-6.40143,-9.35768,-1.02903e-42, 62.8438, 31.4013, 31.3991,-0.0433713 + 0.654,-6.41076,-9.33178,-1.67021e-42, 62.9353, 31.4455, 31.4464,-0.0434011 + 0.655, -6.4201,-9.38238,-2.70729e-42, 63.0274, 31.4907, 31.493,-0.0437685 + 0.656,-6.42952,-9.50127,-4.38249e-42, 63.1206, 31.5365, 31.5397,-0.0444441 + 0.657, -6.4391,-9.66934,-7.08486e-42, 63.2155, 31.5826, 31.5875,-0.0453456 + 0.658,-6.44886,-9.85964,-1.14385e-41, 63.3122, 31.6294, 31.6365,-0.0463349 + 0.659,-6.45882,-10.0417,-1.8443e-41, 63.4107, 31.6772, 31.6862,-0.0472365 + 0.66,-6.46895,-10.1865,-2.96977e-41, 63.5106, 31.7271, 31.7356,-0.0478759 + 0.661,-6.47919,-10.2708,-4.77578e-41, 63.6114, 31.7793, 31.784,-0.0481269 + 0.662,-6.48949,-10.2814,-7.67002e-41, 63.7122, 31.8332, 31.8311,-0.0479458 + 0.663,-6.49975,-10.2165,-1.23021e-40, 63.8125, 31.8875, 31.8776,-0.0473814 + 0.664,-6.50992,-10.0868,-1.9706e-40, 63.9114, 31.9404, 31.9245,-0.0465551 + 0.665,-6.51993,-9.91299,-3.15246e-40, 64.0087, 31.9905, 31.9725,-0.0456225 + 0.666,-6.52975, -9.723,-5.03659e-40, 64.104, 32.0376, 32.0217,-0.0447342 + 0.667,-6.53937, -9.5472,-8.0364e-40, 64.1977, 32.0822, 32.0715,-0.0440112 + 0.668,-6.54884,-9.41368,-1.28063e-39, 64.29, 32.1258, 32.1207,-0.0435385 + 0.669, -6.5582,-9.34372,-2.0381e-39, 64.3817, 32.1696, 32.1688,-0.0433698 + 0.67,-6.56753,-9.34842,-3.23943e-39, 64.4734, 32.2142, 32.2157,-0.0435327 + 0.671, -6.5769,-9.42691,-5.14224e-39, 64.5659, 32.2596, 32.2622,-0.0440232 + 0.672,-6.58638,-9.56654,-8.15228e-39, 64.6597, 32.3056, 32.3093,-0.0447928 + 0.673,-6.59603,-9.74488,-1.29077e-38, 64.7553, 32.352, 32.3576,-0.0457374 + 0.674,-6.60587,-9.93337,-2.04111e-38, 64.8528, 32.3991, 32.407,-0.0467023 + 0.675, -6.6159,-10.1019,-3.22351e-38, 64.9519, 32.4477, 32.4567,-0.0475093 + 0.676,-6.62608,-10.2234,-5.08438e-38, 65.0522, 32.4984, 32.5057,-0.0479995 + 0.677,-6.63635,-10.2787,-8.00934e-38, 65.153, 32.5514, 32.5536,-0.0480775 + 0.678,-6.64663, -10.259,-1.2601e-37, 65.2536, 32.6056, 32.6003,-0.0477372 + 0.679,-6.65686,-10.1675,-1.98e-37, 65.3534, 32.6594, 32.6469,-0.0470592 + 0.68,-6.66697, -10.019,-3.10724e-37, 65.4517, 32.7113, 32.6942,-0.0461816 + 0.681, -6.6769,-9.83728,-4.87012e-37, 65.5482, 32.7602, 32.7427,-0.0452606 + 0.682,-6.68664,-9.65148,-7.62356e-37, 65.6429, 32.8062, 32.7923,-0.0444353 + 0.683, -6.6962, -9.4913,-1.19188e-36, 65.736, 32.8503, 32.8419,-0.043811 + 0.684,-6.70563, -9.3823,-1.86106e-36, 65.828, 32.8938, 32.8907,-0.0434584 + 0.685,-6.71497,-9.34185,-2.90234e-36, 65.9197, 32.9379, 32.9383,-0.0434203 + 0.686,-6.72431,-9.37631,-4.52058e-36, 66.0116, 32.983, 32.985,-0.0437129 + 0.687,-6.73372,-9.48005,-7.03233e-36, 66.1046, 33.0287, 33.0316,-0.0443162 + 0.688,-6.74327, -9.6364,-1.09261e-35, 66.1992, 33.0749, 33.0791,-0.0451613 + 0.689,-6.75299,-9.82028,-1.69548e-35, 66.2955, 33.1215, 33.1279,-0.0461236 + 0.69,-6.76291,-10.0022,-2.62774e-35, 66.3936, 33.1691, 33.1775,-0.0470365 + 0.691, -6.773,-10.1532,-4.06758e-35, 66.4932, 33.2184, 33.2271,-0.0477258 + 0.692,-6.78322,-10.2491,-6.2886e-35, 66.5938, 33.2701, 33.2756,-0.0480549 + 0.693, -6.7935,-10.2746,-9.71042e-35, 66.6946, 33.3236, 33.323,-0.047963 + 0.694,-6.80377,-10.2258,-1.49758e-34, 66.7949, 33.3778, 33.3696,-0.0474802 + 0.695,-6.81395,-10.1106,-2.30678e-34, 66.8941, 33.431, 33.4163,-0.046713 + 0.696,-6.82399,-9.94751,-3.5489e-34, 66.9917, 33.4817, 33.4641,-0.0458101 + 0.697,-6.83384,-9.76265,-5.45319e-34, 67.0874, 33.5294, 33.5131,-0.0449223 + 0.698,-6.84351,-9.58563,-8.36907e-34, 67.1815, 33.5745, 33.5628,-0.0441749 + 0.699,-6.85301,-9.44473,-1.28285e-33, 67.2741, 33.6183, 33.6122,-0.0436578 + 0.7, -6.8624,-9.36244,-1.96403e-33, 67.366, 33.662, 33.6605,-0.0434293 + 0.701,-6.87174,-9.35183,-3.00325e-33, 67.4577, 33.7065, 33.7077,-0.0435216 + 0.702, -6.8811,-9.41448,-4.58681e-33, 67.5501, 33.7519, 33.7542,-0.0439379 + 0.703,-6.89057,-9.54029,-6.9969e-33, 67.6436, 33.7979, 33.8011,-0.044641 + 0.704,-6.90019,-9.70904,-1.06605e-32, 67.7389, 33.8442, 33.8492,-0.0455404 + 0.705,-6.90999,-9.89369,-1.62227e-32, 67.836, 33.8911, 33.8984,-0.0464936 + 0.706,-6.91997,-10.0647,-2.46576e-32, 67.9347, 33.9393, 33.948,-0.047328 + 0.707,-6.93012,-10.1947,-3.7433e-32, 68.0347, 33.9896, 33.9973,-0.0478805 + 0.708,-6.94036,-10.2631,-5.67597e-32, 68.1354, 34.042, 34.0453,-0.0480425 + 0.709,-6.95064,-10.2589,-8.59619e-32, 68.236, 34.0959, 34.0923,-0.0477893 + 0.71,-6.96088,-10.1829,-1.30033e-31, 68.3359, 34.1499, 34.1389,-0.047184 + 0.711,-6.97101,-10.0474,-1.96464e-31, 68.4345, 34.2022, 34.186,-0.0463534 + 0.712,-6.98098,-9.87418,-2.96481e-31, 68.5313, 34.2516, 34.2343,-0.0454495 + 0.713,-6.99076,-9.69091,-4.46884e-31, 68.6264, 34.2982, 34.2836,-0.0446138 + 0.714,-7.00036,-9.52693,-6.72788e-31, 68.7199, 34.3426, 34.3333,-0.0439566 + 0.715,-7.00981,-9.40844,-1.01169e-30, 68.8122, 34.3863, 34.3823,-0.0435533 + 0.716,-7.01917,-9.35432,-1.51951e-30, 68.9039, 34.4304, 34.4301,-0.0434512 + 0.717,-7.02852,-9.37314,-2.27954e-30, 68.9959, 34.4753, 34.4769,-0.0436715 + 0.718,-7.03792,-9.46178,-3.4157e-30, 69.0887, 34.521, 34.5235,-0.0442033 + 0.719,-7.04744,-9.60597,-5.11212e-30, 69.1829, 34.5671, 34.5709,-0.0449898 + 0.72,-7.05713,-9.78259,-7.6421e-30, 69.2789, 34.6136, 34.6194,-0.0459199 + 0.721,-7.06701,-9.96334,-1.14108e-29, 69.3766, 34.6609, 34.6689,-0.0468369 + 0.722,-7.07706,-10.1193,-1.70181e-29, 69.4759, 34.7099, 34.7185,-0.0475684 + 0.723,-7.08725,-10.2256,-2.53511e-29, 69.5762, 34.761, 34.7673,-0.0479699 + 0.724,-7.09751,-10.2653,-3.77205e-29, 69.6769, 34.8141, 34.8149,-0.0479645 + 0.725,-7.10778,-10.2322,-5.60599e-29, 69.7773, 34.8682, 34.8616,-0.0475637 + 0.726,-7.11797,-10.1316,-8.32189e-29, 69.8767, 34.9216, 34.9082,-0.0468589 + 0.727,-7.12804,-9.97968,-1.23392e-28, 69.9746, 34.9728, 34.9558,-0.0459903 + 0.728,-7.13793,-9.80087,-1.82747e-28, 70.0707, 35.0211, 35.0045,-0.0451077 + 0.729,-7.14764,-9.62376,-2.70339e-28, 70.1652, 35.0667, 35.0541,-0.0443402 + 0.73,-7.15718,-9.47668,-3.99453e-28, 70.2581, 35.1107, 35.1036,-0.0437828 + 0.731, -7.1666,-9.38309,-5.89552e-28, 70.3502, 35.1545, 35.1522,-0.0434983 + 0.732,-7.17595,-9.35789,-8.69115e-28, 70.442, 35.1989, 35.1996,-0.0435232 + 0.733,-7.18531,-9.40501,-1.27977e-27, 70.5342, 35.2442, 35.2462,-0.0438674 + 0.734,-7.19476,-9.51682,-1.8823e-27, 70.6276, 35.2901, 35.293,-0.0445034 + 0.735,-7.20434,-9.67536,-2.76533e-27, 70.7225, 35.3364, 35.3408,-0.0453541 + 0.736,-7.21411,-9.85521,-4.05796e-27, 70.8192, 35.3832, 35.3897,-0.0462894 + 0.737,-7.22406,-10.0276,-5.94801e-27, 70.9176, 35.431, 35.4394,-0.0471436 + 0.738,-7.23416,-10.1649,-8.70841e-27, 71.0173, 35.4808, 35.4887,-0.0477515 + 0.739,-7.24438,-10.2454,-1.27353e-26, 71.1178, 35.5327, 35.5371,-0.0479929 + 0.74,-7.25465, -10.256,-1.86032e-26, 71.2184, 35.5863, 35.5842,-0.0478256 + 0.741, -7.2649,-10.1954,-2.71438e-26, 71.3184, 35.6403, 35.6308,-0.047295 + 0.742,-7.27504,-10.0732,-3.95603e-26, 71.4172, 35.6929, 35.6778,-0.0465151 + 0.743,-7.28504,-9.90912,-5.75912e-26, 71.5144, 35.743, 35.7258,-0.0456331 + 0.744,-7.29486,-9.72938,-8.37453e-26, 71.6099, 35.7901, 35.775,-0.0447916 + 0.745, -7.3045,-9.56278,-1.21639e-25, 71.7037, 35.835, 35.8246,-0.0441056 + 0.746,-7.31399,-9.43593,-1.7648e-25, 71.7963, 35.8788, 35.8738,-0.0436556 + 0.747,-7.32337,-9.36906,-2.55756e-25, 71.8882, 35.9228, 35.9219,-0.0434929 + 0.748,-7.33273,-9.37279,-3.70227e-25, 71.9801, 35.9676, 35.9689,-0.0436439 + 0.749,-7.34212,-9.44641,-5.35329e-25, 72.0728, 36.0132, 36.0155,-0.0441052 + 0.75,-7.35162,-9.57808,-7.73189e-25, 72.1668, 36.0593, 36.0626,-0.0448313 + 0.751,-7.36128,-9.74665,-1.11548e-24, 72.2624, 36.1057, 36.1109,-0.0457244 + 0.752,-7.37111,-9.92513,-1.6075e-24, 72.3597, 36.1529, 36.1602,-0.0466386 + 0.753,-7.38113, -10.085,-2.31396e-24, 72.4587, 36.2014, 36.2098,-0.0474049 + 0.754,-7.39128,-10.2006,-3.32715e-24, 72.5587, 36.252, 36.2588,-0.0478726 + 0.755,-7.40153,-10.2537,-4.77864e-24, 72.6593, 36.3047, 36.3067,-0.0479506 + 0.756,-7.41179,-10.2357,-6.85569e-24, 72.7597, 36.3586, 36.3535,-0.0476321 + 0.757, -7.422,-10.1497,-9.82458e-24, 72.8593, 36.4121, 36.4002,-0.0469926 + 0.758,-7.43209,-10.0095,-1.40635e-23, 72.9575, 36.4638, 36.4475,-0.0461626 + 0.759,-7.44202,-9.83755,-2.01089e-23, 73.054, 36.5127, 36.496,-0.0452899 + 0.76,-7.45176,-9.66146,-2.87212e-23, 73.1488, 36.5588, 36.5455,-0.0445067 + 0.761,-7.46134,-9.50934,-4.09765e-23, 73.2421, 36.6031, 36.595,-0.0439129 + 0.762,-7.47078, -9.4055,-5.83962e-23, 73.3343, 36.6469, 36.6438,-0.0435761 + 0.763,-7.48015,-9.36647,-8.31292e-23, 73.4262, 36.6913, 36.6914,-0.0435369 + 0.764,-7.48952,-9.39842,-1.18207e-22, 73.5184, 36.7364, 36.7382,-0.043811 + 0.765,-7.49895,-9.49613,-1.679e-22, 73.6116, 36.7823, 36.7849,-0.04438 + 0.766,-7.50851, -9.6439,-2.38222e-22, 73.7062, 36.8286, 36.8324,-0.0451791 + 0.767,-7.51824,-9.81804,-3.37623e-22, 73.8025, 36.8752, 36.8812,-0.0460907 + 0.768,-7.52814,-9.99066,-4.77975e-22, 73.9005, 36.9228, 36.9307,-0.0469573 + 0.769,-7.53822,-10.1342,-6.75927e-22, 73.9999, 36.9721, 36.9802,-0.0476135 + 0.77,-7.54841,-10.2257,-9.54812e-22, 74.1002, 37.0236, 37.0287,-0.0479294 + 0.771,-7.55867,-10.2506,-1.34728e-21, 74.2008, 37.0768, 37.0761,-0.0478463 + 0.772,-7.56891, -10.205,-1.89899e-21, 74.3009, 37.1307, 37.1228,-0.0473918 + 0.773,-7.57908,-10.0963,-2.67369e-21, 74.4, 37.1836, 37.1696,-0.0466665 + 0.774,-7.58911,-9.94202,-3.76032e-21, 74.4975, 37.2342, 37.2174,-0.0458108 + 0.775,-7.59896,-9.76679,-5.28278e-21, 74.5933, 37.282, 37.2664,-0.0449682 + 0.776,-7.60864, -9.5987,-7.41355e-21, 74.6875, 37.3272, 37.316,-0.0442575 + 0.777,-7.61816,-9.46461,-1.03924e-20, 74.7803, 37.3712, 37.3653,-0.0437646 + 0.778,-7.62757,-9.38593,-1.45523e-20, 74.8724, 37.4152, 37.4136,-0.0435449 + 0.779,-7.63693,-9.37515,-2.03552e-20, 74.9644, 37.4599, 37.4608,-0.0436293 + 0.78,-7.64632,-9.43392,-2.8441e-20, 75.0569, 37.5054, 37.5075,-0.0440213 + 0.781, -7.6558,-9.55275,-3.96956e-20, 75.1506, 37.5515, 37.5544,-0.0446858 + 0.782,-7.66543,-9.71256,-5.53437e-20, 75.2459, 37.5979, 37.6025,-0.0455379 + 0.783,-7.67523,-9.88775,-7.70767e-20, 75.3429, 37.6449, 37.6516,-0.0464427 + 0.784, -7.6852,-10.0503,-1.07228e-19, 75.4415, 37.6931, 37.7012,-0.0472363 + 0.785,-7.69533,-10.1742,-1.49011e-19, 75.5413, 37.7432, 37.7504,-0.047764 + 0.786,-7.70555,-10.2397,-2.06853e-19, 75.6417, 37.7954, 37.7985,-0.0479217 + 0.787,-7.71581,-10.2364,-2.86836e-19, 75.7422, 37.849, 37.8455,-0.0476853 + 0.788,-7.72602, -10.165,-3.97316e-19, 75.8419, 37.9026, 37.8921,-0.0471136 + 0.789,-7.73613,-10.0368,-5.49756e-19, 75.9403, 37.9547, 37.9393,-0.0463265 + 0.79, -7.7461, -9.8726,-7.59862e-19, 76.0372, 38.0042, 37.9875,-0.0454684 + 0.791,-7.75588,-9.69857,-1.04913e-18, 76.1323, 38.0508, 38.0368,-0.0446738 + 0.792,-7.76549,-9.54257,-1.44697e-18, 76.2259, 38.0955, 38.0864,-0.0440477 + 0.793,-7.77497,-9.42953,-1.99352e-18, 76.3185, 38.1394, 38.1354,-0.0436621 + 0.794,-7.78435,-9.37747,-2.74355e-18, 76.4104, 38.1836, 38.1833,-0.0435621 + 0.795,-7.79372,-9.39464,-3.77171e-18, 76.5026, 38.2287, 38.2301,-0.0437683 + 0.796,-7.80314, -9.4782,-5.17962e-18, 76.5956, 38.2745, 38.2768,-0.0442706 + 0.797,-7.81268,-9.61472,-7.10543e-18, 76.6899, 38.3207, 38.3242,-0.0450155 + 0.798,-7.82237,-9.78229,-9.73681e-18, 76.7859, 38.3673, 38.3727,-0.0458982 + 0.799,-7.83224,-9.95408,-1.33284e-17, 76.8835, 38.4147, 38.4221,-0.0467702 + 0.8,-7.84228,-10.1026,-1.82252e-17, 76.9826, 38.4636, 38.4716,-0.0474677 + 0.801,-7.85245,-10.2042,-2.48944e-17, 77.0827, 38.5145, 38.5204,-0.0478528 + 0.802,-7.86269,-10.2426,-3.39677e-17, 77.1832, 38.5674, 38.568,-0.0478516 + 0.803,-7.87293,-10.2118,-4.62985e-17, 77.2834, 38.6211, 38.6148,-0.0474743 + 0.804,-7.88311,-10.1168,-6.3038e-17, 77.3826, 38.6743, 38.6615,-0.0468069 + 0.805,-7.89317, -9.9728,-8.5738e-17, 77.4805, 38.7254, 38.7091,-0.0459823 + 0.806,-7.90306, -9.803,-1.16488e-16, 77.5766, 38.7737, 38.7578,-0.045143 + 0.807,-7.91277,-9.63453,-1.58097e-16, 77.6711, 38.8194, 38.8073,-0.0444119 + 0.808,-7.92233,-9.49432,-2.14341e-16, 77.7643, 38.8637, 38.8567,-0.0438798 + 0.809,-7.93176,-9.40477,-2.90283e-16, 77.8565, 38.9076, 38.9053,-0.0436065 + 0.81,-7.94113,-9.38012,-3.92714e-16, 77.9486, 38.9522, 38.9527,-0.0436272 + 0.811,-7.95052,-9.42424,-5.30722e-16, 78.041, 38.9976, 38.9994,-0.0439513 + 0.812,-7.95998, -9.53,-7.16467e-16, 78.1345, 39.0437, 39.0463,-0.0445535 + 0.813,-7.96958,-9.68039,-9.6619e-16, 78.2295, 39.09, 39.0941,-0.0453609 + 0.814,-7.97934,-9.85133,-1.30157e-15, 78.3261, 39.1369, 39.143,-0.0462501 + 0.815,-7.98928,-10.0154,-1.75149e-15, 78.4244, 39.1848, 39.1925,-0.0470639 + 0.816,-7.99937,-10.1465,-2.35445e-15, 78.5239, 39.2344, 39.2419,-0.0476451 + 0.817,-8.00958,-10.2236,-3.16161e-15, 78.6242, 39.2861, 39.2902,-0.0478785 + 0.818,-8.01982,-10.2345,-4.24097e-15, 78.7246, 39.3395, 39.3374,-0.0477232 + 0.819,-8.03004,-10.1774,-5.68279e-15, 78.8244, 39.3931, 39.3841,-0.0472215 + 0.82,-8.04018,-10.0617,-7.60671e-15, 78.9231, 39.4456, 39.4311,-0.0464815 + 0.821,-8.05017,-9.90591,-1.01712e-14, 79.0203, 39.4956, 39.4791,-0.0456426 + 0.822,-8.05999,-9.73494,-1.35858e-14, 79.1158, 39.5428, 39.5282,-0.0448411 + 0.823,-8.06964,-9.57618,-1.81274e-14, 79.2098, 39.5878, 39.5778,-0.0441865 + 0.824,-8.07914,-9.45501,-2.41617e-14, 79.3025, 39.6318, 39.6269,-0.0437558 + 0.825,-8.08855,-9.39074,-3.21706e-14, 79.3946, 39.676, 39.675,-0.0435981 + 0.826,-8.09792,-9.39359,-4.27888e-14, 79.4868, 39.721, 39.7221,-0.0437388 + 0.827,-8.10734,-9.46303,-5.68514e-14, 79.5796, 39.7667, 39.7688,-0.0441749 + 0.828,-8.11685,-9.58786,-7.54556e-14, 79.6737, 39.8129, 39.8159,-0.0448638 + 0.829,-8.12651,-9.74807,-1.00042e-13, 79.7693, 39.8594, 39.8642,-0.0457129 + 0.83,-8.13634,-9.91798,-1.32499e-13, 79.8666, 39.9066, 39.9134,-0.0465836 + 0.831,-8.14635,-10.0704,-1.753e-13, 79.9654, 39.9551, 39.963,-0.0473152 + 0.832,-8.15649, -10.181,-2.31683e-13, 80.0653, 40.0056, 40.012,-0.0477638 + 0.833,-8.16671,-10.2322,-3.05875e-13, 80.1656, 40.058, 40.0598,-0.047842 + 0.834,-8.17695,-10.2158,-4.03399e-13, 80.2659, 40.1116, 40.1067,-0.0475423 + 0.835,-8.18714,-10.1345,-5.31455e-13, 80.3653, 40.1649, 40.1535,-0.046936 + 0.836,-8.19722,-10.0014,-6.9942e-13, 80.4634, 40.2164, 40.2008,-0.0461468 + 0.837,-8.20714,-9.83789,-9.19496e-13, 80.5599, 40.2653, 40.2493,-0.0453155 + 0.838,-8.21689, -9.6701,-1.20754e-12, 80.6548, 40.3115, 40.2987,-0.0445683 + 0.839,-8.22648,-9.52488,-1.58414e-12, 80.7482, 40.356, 40.3482,-0.0440006 + 0.84,-8.23594,-9.42543,-2.076e-12, 80.8407, 40.4001, 40.3969,-0.0436771 + 0.841,-8.24533,-9.38759,-2.71769e-12, 80.9328, 40.4445, 40.4446,-0.0436369 + 0.842,-8.25472,-9.41735,-3.55397e-12, 81.0251, 40.4899, 40.4914,-0.0438949 + 0.843,-8.26417,-9.50985,-4.64266e-12, 81.1184, 40.5358, 40.5382,-0.0444344 + 0.844,-8.27374,-9.65024,-6.05844e-12, 81.2131, 40.5822, 40.5857,-0.0451938 + 0.845,-8.28347,-9.81601,-7.89759e-12, 81.3094, 40.6289, 40.6344,-0.046062 + 0.846,-8.29337,-9.98063,-1.02842e-11, 81.4073, 40.6765, 40.6839,-0.0468888 + 0.847,-8.30343,-10.1178,-1.33777e-11, 81.5066, 40.7257, 40.7333,-0.0475169 + 0.848,-8.31361,-10.2055,-1.73835e-11, 81.6067, 40.777, 40.7819,-0.0478215 + 0.849,-8.32384,-10.2299,-2.25648e-11, 81.707, 40.83, 40.8293,-0.0477462 + 0.85,-8.33407,-10.1872,-2.92593e-11, 81.807, 40.8836, 40.876,-0.0473162 + 0.851,-8.34422,-10.0841,-3.78999e-11, 81.9059, 40.9363, 40.9229,-0.0466269 + 0.852,-8.35424,-9.93739,-4.904e-11, 82.0034, 40.9869, 40.9707,-0.045812 + 0.853,-8.36409,-9.77045,-6.33874e-11, 82.0992, 41.0346, 41.0196,-0.045008 + 0.854,-8.37378,-9.61002,-8.18455e-11, 82.1935, 41.08, 41.0691,-0.0443289 + 0.855,-8.38331,-9.48177,-1.05566e-10, 82.2865, 41.1243, 41.1184,-0.0438566 + 0.856,-8.39274,-9.40615,-1.36018e-10, 82.3788, 41.1684, 41.1668,-0.0436444 + 0.857,-8.40212, -9.3952,-1.75067e-10, 82.471, 41.2132, 41.214,-0.0437219 + 0.858,-8.41153,-9.45059,-2.25088e-10, 82.5637, 41.2589, 41.2607,-0.0440927 + 0.859,-8.42102,-9.56339,-2.89093e-10, 82.6575, 41.305, 41.3077,-0.0447241 + 0.86,-8.43066,-9.71549,-3.70904e-10, 82.7528, 41.3515, 41.3558,-0.0455353 + 0.861,-8.44046,-9.88253,-4.75362e-10, 82.8498, 41.3985, 41.4048,-0.0463983 + 0.862,-8.45042,-10.0378,-6.0859e-10, 82.9482, 41.4467, 41.4544,-0.0471571 + 0.863,-8.46053,-10.1564,-7.78328e-10, 83.0479, 41.4967, 41.5035,-0.0476635 + 0.864,-8.47073,-10.2195,-9.94347e-10, 83.1481, 41.5487, 41.5516,-0.0478177 + 0.865,-8.48097,-10.2171,-1.26897e-09, 83.2483, 41.6021, 41.5987,-0.0475958 + 0.866,-8.49117,-10.1495,-1.61771e-09, 83.3479, 41.6555, 41.6454,-0.0470532 + 0.867,-8.50127,-10.0278,-2.06009e-09, 83.4463, 41.7074, 41.6926,-0.0463038 + 0.868,-8.51122,-9.87133,-2.62065e-09, 83.5431, 41.7568, 41.7408,-0.0454852 + 0.869,-8.52101,-9.70526,-3.33019e-09, 83.6383, 41.8036, 41.79,-0.044726 + 0.87,-8.53063,-9.55613,-4.2273e-09, 83.7321, 41.8484, 41.8396,-0.0441265 + 0.871,-8.54012,-9.44776,-5.36036e-09, 83.8248, 41.8925, 41.8885,-0.0437561 + 0.872,-8.54953,-9.39745,-6.78984e-09, 83.9169, 41.9369, 41.9364,-0.0436578 + 0.873,-8.55892,-9.41316,-8.59132e-09, 84.0093, 41.9821, 41.9833,-0.0438516 + 0.874,-8.56836,-9.49232,-1.08591e-08, 84.1024, 42.028, 42.0301,-0.0443282 + 0.875, -8.5779,-9.62218,-1.37108e-08, 84.1968, 42.0743, 42.0775,-0.0450373 + 0.876, -8.5876,-9.78193,-1.72929e-08, 84.2928, 42.121, 42.1259,-0.0458791 + 0.877,-8.59747,-9.94599,-2.17873e-08, 84.3903, 42.1684, 42.1753,-0.0467123 + 0.878,-8.60749,-10.0881,-2.74203e-08, 84.4893, 42.2172, 42.2247,-0.0473804 + 0.879,-8.61764,-10.1856,-3.44727e-08, 84.5892, 42.268, 42.2735,-0.0477515 + 0.88,-8.62786,-10.2229,-4.32922e-08, 84.6895, 42.3206, 42.3212,-0.0477542 + 0.881,-8.63809,-10.1942,-5.43095e-08, 84.7895, 42.3741, 42.368,-0.0473973 + 0.882,-8.64825, -10.104,-6.80571e-08, 84.8886, 42.4271, 42.4148,-0.0467623 + 0.883, -8.6583,-9.96694,-8.51925e-08, 84.9864, 42.478, 42.4624,-0.0459758 + 0.884,-8.66819,-9.80493,-1.06527e-07, 85.0826, 42.5263, 42.5111,-0.0451739 + 0.885,-8.67791,-9.64392,-1.33061e-07, 85.1772, 42.5722, 42.5605,-0.0444743 + 0.886,-8.68747,-9.50964,-1.66023e-07, 85.2705, 42.6166, 42.6099,-0.0439639 + 0.887,-8.69693,-9.42355,-2.06926e-07, 85.3629, 42.6608, 42.6584,-0.0437002 + 0.888,-8.70632,-9.39936,-2.57626e-07, 85.4551, 42.7055, 42.7059,-0.043717 + 0.889,-8.71573,-9.44085,-3.20401e-07, 85.5478, 42.7511, 42.7527,-0.0440238 + 0.89, -8.7252,-9.54134,-3.98038e-07, 85.6414, 42.7972, 42.7996,-0.0445966 + 0.891,-8.73481,-9.68467,-4.93949e-07, 85.7364, 42.8436, 42.8474,-0.0453662 + 0.892,-8.74457,-9.84788,-6.12302e-07, 85.833, 42.8905, 42.8962,-0.0462156 + 0.893, -8.7545,-10.0048,-7.58185e-07, 85.9311, 42.9384, 42.9457,-0.0469946 + 0.894,-8.76458,-10.1305,-9.37798e-07, 86.0305, 42.988, 42.995,-0.0475526 + 0.895,-8.77476,-10.2047,-1.15869e-06, 86.1306, 43.0395, 43.0433,-0.0477793 + 0.896,-8.78499,-10.2158,-1.43005e-06, 86.2308, 43.0926, 43.0906,-0.0476347 + 0.897, -8.7952,-10.1619,-1.76301e-06, 86.3305, 43.146, 43.1373,-0.0471582 + 0.898,-8.80532,-10.0518,-2.17112e-06, 86.4291, 43.1983, 43.1844,-0.0464527 + 0.899, -8.8153,-9.90322,-2.67074e-06, 86.5263, 43.2482, 43.2324,-0.0456514 + 0.9,-8.82512,-9.73985,-3.28173e-06, 86.6218, 43.2955, 43.2814,-0.0448844 + 0.901,-8.83478,-9.58788,-4.02803e-06, 86.7159, 43.3407, 43.3309,-0.044257 + 0.902, -8.8443, -9.4716,-4.93859e-06, 86.8088, 43.3849, 43.3801,-0.0438429 + 0.903,-8.85372,-9.40957,-6.04827e-06, 86.9011, 43.4292, 43.4282,-0.0436894 + 0.904,-8.86312,-9.41163,-7.39908e-06, 86.9934, 43.4743, 43.4753,-0.0438209 + 0.905,-8.87255, -9.4774,-9.04151e-06, 87.0864, 43.5202, 43.522,-0.0442351 + 0.906,-8.88207,-9.59628,-1.10362e-05, 87.1805, 43.5664, 43.5692,-0.0448916 + 0.907,-8.89174,-9.74921,-1.3456e-05, 87.2762, 43.613, 43.6175,-0.0457024 + 0.908,-8.90157,-9.91169,-1.6388e-05, 87.3734, 43.6602, 43.6666,-0.0465353 + 0.909,-8.91156,-10.0577,-1.99365e-05, 87.4721, 43.7087, 43.7161,-0.0472369 + 0.91,-8.92169, -10.164,-2.42262e-05, 87.5718, 43.759, 43.7651,-0.0476692 + 0.911,-8.93189,-10.2135,-2.94059e-05, 87.672, 43.8113, 43.813,-0.0477477 + 0.912,-8.94211,-10.1985,-3.56527e-05, 87.772, 43.8646, 43.8599,-0.0474645 + 0.913,-8.95229,-10.1213,-4.3178e-05, 87.8713, 43.9177, 43.9067,-0.0468871 + 0.914,-8.96236,-9.99448,-5.22324e-05, 87.9694, 43.9691, 43.9541,-0.0461335 + 0.915,-8.97228,-9.83826,-6.31141e-05, 88.0659, 44.018, 44.0026,-0.0453382 + 0.916,-8.98203,-9.67769,-7.61763e-05, 88.1608, 44.0643, 44.0519,-0.0446222 + 0.917,-8.99163,-9.53846,-9.18372e-05, 88.2544, 44.109, 44.1013,-0.0440771 + 0.918,-9.00111, -9.4428,-0.000110592, 88.347, 44.1532, 44.1501,-0.0437651 + 0.919,-9.01052,-9.40597,-0.000133024, 88.4393, 44.1978, 44.1977,-0.0437238 + 0.92,-9.01992,-9.43379,-0.000159824, 88.5318, 44.2433, 44.2446,-0.0439678 + 0.921,-9.02938,-9.52174,-0.000191802, 88.6253, 44.2893, 44.2914,-0.0444813 + 0.922,-9.03896,-9.65569,-0.000229914, 88.72, 44.3357, 44.339,-0.0452063 + 0.923, -9.0487,-9.81417,-0.000275281, 88.8162, 44.3825, 44.3877,-0.0460365 + 0.924,-9.05859,-9.97181,-0.00032922, 88.9141, 44.4302, 44.4371,-0.0468289 + 0.925,-9.06864,-10.1034,-0.000393271, 89.0132, 44.4793, 44.4864,-0.0474324 + 0.926, -9.0788,-10.1879,-0.000469238, 89.1131, 44.5304, 44.535,-0.0477274 + 0.927,-9.08902,-10.2119,-0.000559227, 89.2133, 44.5832, 44.5825,-0.047659 + 0.928,-9.09922,-10.1716,-0.000665697, 89.3131, 44.6366, 44.6293,-0.0472506 + 0.929,-9.10936,-10.0736,-0.00079151, 89.4119, 44.6891, 44.6762,-0.0465928 + 0.93,-9.11937,-9.93343,-0.000939996, 89.5094, 44.7395, 44.724,-0.0458133 + 0.931,-9.12923,-9.77371,-0.00111502, 89.6052, 44.7873, 44.7729,-0.0450431 + 0.932,-9.13892,-9.61997,-0.00132108, 89.6996, 44.8329, 44.8223,-0.0443914 + 0.933,-9.14847,-9.49678,-0.00156337, 89.7928, 44.8773, 44.8716,-0.043937 + 0.934,-9.15791,-9.42381,-0.00184789, 89.8852, 44.9216, 44.9199,-0.0437312 + 0.935,-9.16731,-9.41268,-0.00218159, 89.9776, 44.9666, 44.9672,-0.0438025 + 0.936,-9.17674,-9.46509,-0.00257249, 90.0704, 45.0123, 45.014,-0.0441548 + 0.937,-9.18624,-9.57261,-0.00302978, 90.1643, 45.0586, 45.061,-0.0447571 + 0.938,-9.19588,-9.71797,-0.00356408, 90.2597, 45.1051, 45.109,-0.0455326 + 0.939,-9.20568, -9.8779,-0.00418755, 90.3566, 45.1522, 45.158,-0.0463592 + 0.94,-9.21564,-10.0268,-0.00491413, 90.4549, 45.2003, 45.2075,-0.0470875 + 0.941,-9.22573,-10.1409,-0.00575978, 90.5544, 45.2502, 45.2566,-0.0475755 + 0.942,-9.23592,-10.2019,-0.00674273, 90.6545, 45.302, 45.3047,-0.0477269 + 0.943,-9.24614,-10.2002,-0.00788379, 90.7545, 45.3552, 45.3519,-0.0475178 + 0.944,-9.25632,-10.1361,-0.00920665, 90.854, 45.4083, 45.3986,-0.0470008 + 0.945,-9.26641,-10.0199,-0.0107382, 90.9523, 45.4601, 45.4459,-0.0462843 + 0.946,-9.27636, -9.8703,-0.0125092, 91.0491, 45.5095, 45.4941,-0.0455003 + 0.947,-9.28615,-9.71119,-0.0145541, 91.1444, 45.5563, 45.5433,-0.0447719 + 0.948,-9.29578,-9.56805,-0.0169122, 91.2382, 45.6013, 45.5927,-0.0441957 + 0.949,-9.30529,-9.46375,-0.0196278, 91.3311, 45.6456, 45.6416,-0.0438384 + 0.95,-9.31471,-9.41493,-0.0227509, 91.4234, 45.6902, 45.6895,-0.0437415 + 0.951,-9.32412,-9.42934,-0.0263378, 91.5159, 45.7355, 45.7365,-0.0439243 + 0.952,-9.33357,-9.50461,-0.0304516, 91.6092, 45.7815, 45.7833,-0.0443785 + 0.953,-9.34312,-9.62864,-0.0351633, 91.7036, 45.8278, 45.8307,-0.045056 + 0.954,-9.35283,-9.78154,-0.0405522, 91.7996, 45.8746, 45.8792,-0.045862 + 0.955,-9.36269,-9.93883,-0.0467071, 91.8971, 45.922, 45.9285,-0.0466612 + 0.956, -9.3727,-10.0754,-0.053727, 91.9959, 45.9708, 45.9779,-0.0473038 + 0.957,-9.38284,-10.1693,-0.0617221, 92.0957, 46.0214, 46.0266,-0.0476628 + 0.958,-9.39304,-10.2057,-0.070815, 92.1958, 46.0739, 46.0743,-0.0476691 + 0.959,-9.40325,-10.1788,-0.0811416, 92.2957, 46.1271, 46.1212,-0.0473302 + 0.96, -9.4134,-10.0929,-0.0928522, 92.3947, 46.1799, 46.168,-0.0467238 + 0.961,-9.42344,-9.96187,-0.106113, 92.4924, 46.2308, 46.2156,-0.0459707 + 0.962,-9.43332, -9.8067,-0.121107, 92.5886, 46.2792, 46.2642,-0.0452017 + 0.963,-9.44305,-9.65222,-0.138037, 92.6833, 46.3252, 46.3136,-0.0445297 + 0.964,-9.45263,-9.52313,-0.157123, 92.7767, 46.3698, 46.3629,-0.0440383 + 0.965, -9.4621,-9.44005,-0.178608, 92.8693, 46.4142, 46.4114,-0.0437831 + 0.966,-9.47151,-9.41622,-0.202756, 92.9617, 46.4591, 46.4588,-0.0437966 + 0.967,-9.48093,-9.45538,-0.229857, 93.0545, 46.5048, 46.5056,-0.0440882 + 0.968,-9.49042,-9.55122,-0.260225, 93.1481, 46.551, 46.5525,-0.0446353 + 0.969,-9.50003,-9.68834,-0.294201, 93.2432, 46.5977, 46.6002,-0.0453723 + 0.97,-9.50979,-9.84477,-0.332153, 93.3398, 46.6447, 46.6489,-0.0461871 + 0.971,-9.51972,-9.99549,-0.374482, 93.4378, 46.6928, 46.6981,-0.046936 + 0.972,-9.52979,-10.1164,-0.421615, 93.5371, 46.7425, 46.7471,-0.0474746 + 0.973,-9.53995,-10.1882,-0.474014, 93.637, 46.7941, 46.7952,-0.0476963 + 0.974,-9.55016,-10.1994,-0.532172, 93.7371, 46.8473, 46.8422,-0.047562 + 0.975,-9.56035,-10.1483,-0.596617, 93.8366, 46.9009, 46.8886,-0.0471089 + 0.976,-9.57046,-10.0432,-0.667909, 93.9351, 46.9536, 46.9352,-0.046435 + 0.977,-9.58044,-9.90092,-0.746643, 94.0323, 47.0041, 46.9825,-0.0456681 + 0.978,-9.59026,-9.74423,-0.833449, 94.1279, 47.0521, 47.0308,-0.0449334 + 0.979,-9.59993,-9.59822,-0.928989, 94.222, 47.0984, 47.0793,-0.0443318 + 0.98,-9.60946,-9.48622,-1.03396, 94.3151, 47.1439, 47.1273,-0.0439348 + 0.981, -9.6189,-9.42612,-1.14909, 94.4076, 47.1898, 47.174,-0.0437878 + 0.982,-9.62831,-9.42747,-1.27514, 94.5, 47.2366, 47.2195,-0.0439146 + 0.983,-9.63775,-9.48999,-1.41289, 94.5931, 47.2845, 47.2643,-0.0443133 + 0.984,-9.64729,-9.60362,-1.56316, 94.6873, 47.3333, 47.3091,-0.0449458 + 0.985,-9.65696,-9.75014,-1.72678, 94.783, 47.3829, 47.3544,-0.0457281 + 0.986,-9.66679,-9.90609,-1.90459, 94.8802, 47.4336, 47.4001,-0.0465339 + 0.987,-9.67677,-10.0465,-2.09747, 94.9787, 47.4861, 47.4454,-0.047216 + 0.988,-9.68688, -10.149,-2.30628, 95.0783, 47.5412, 47.4894,-0.0476416 + 0.989,-9.69707,-10.1971,-2.53189, 95.1783, 47.5991, 47.5315,-0.0477291 + 0.99,-9.70728,-10.1833,-2.77517, 95.2782, 47.659, 47.5717,-0.0474703 + 0.991,-9.71744,-10.1098,-3.03697, 95.3774, 47.72, 47.6105,-0.0469291 + 0.992, -9.7275,-9.98844,-3.31811, 95.4754, 47.7806, 47.6486,-0.0462185 + 0.993,-9.73741,-9.83866,-3.61939, 95.5719, 47.8404, 47.6861,-0.0454677 + 0.994,-9.74717,-9.68445,-3.94155, 95.6669, 47.8995, 47.7227,-0.044793 + 0.995,-9.75678,-9.55047,-4.28529, 95.7606, 47.9589, 47.7574,-0.0442828 + 0.996,-9.76627,-9.45813,-4.65123, 95.8534, 48.0201, 47.7893,-0.0439967 + 0.997, -9.7757,-9.42215,-5.03991, 95.9458, 48.0842, 47.8177,-0.0439712 + 0.998,-9.78512,-9.44824,-5.45177, 96.0385, 48.1517, 47.8425,-0.0442204 + 0.999, -9.7946,-9.53215,-5.88717, 96.132, 48.2229, 47.8644,-0.0447294 + 1,-9.80418,-9.66041,-6.34632, 96.2268, 48.2978, 47.8836,-0.0454425 + 1.001,-9.81392,-9.81247,-6.82928, 96.323, 48.3766, 47.9002,-0.0462581 + 1.002,-9.82381,-9.96398, -7.336, 96.4208, 48.4601, 47.9136,-0.0470388 + 1.003,-9.83384,-10.0907,-7.86622, 96.5198, 48.5493, 47.9228,-0.0476389 + 1.004,-9.84399,-10.1724,-8.41951, 96.6196, 48.6449, 47.9267,-0.0479427 + 1.005,-9.85419,-10.1961,-8.99526, 96.7196, 48.7468, 47.9249,-0.0478963 + 1.006,-9.86438, -10.158,-9.59262, 96.8192, 48.8544, 47.9173,-0.0475208 + 1.007,-9.87451,-10.0643,-10.2106, 96.918, 48.9664, 47.9047,-0.0469023 + 1.008,-9.88451,-9.93001,-10.8478, 97.0154, 49.0818, 47.8874,-0.0461627 + 1.009,-9.89437,-9.77667,-11.5027, 97.1113, 49.2003, 47.8656,-0.0454273 + 1.01,-9.90406,-9.62881,-12.1737, 97.2058, 49.3222, 47.8387,-0.0448008 + 1.011,-9.91362,-9.51007,-12.8585, 97.299, 49.4487, 47.806,-0.0443588 + 1.012,-9.92308,-9.43941,-13.5551, 97.3917, 49.5807, 47.7668,-0.0441504 + 1.013, -9.9325,-9.42809,-14.2607, 97.4841, 49.7188, 47.7212,-0.0442029 + 1.014,-9.94194,-9.47786,-14.9726, 97.5771, 49.8628, 47.6698,-0.0445201 + 1.015,-9.95146,-9.58069,-15.6878, 97.6711, 50.0124, 47.6137,-0.0450726 + 1.016, -9.9611, -9.7201,-16.4031, 97.7665, 50.1668, 47.5539,-0.0457872 + 1.017, -9.9709,-9.87374,-17.1148, 97.8633, 50.3258, 47.491,-0.046547 + 1.018,-9.98085, -10.017,-17.8194, 97.9616, 50.4894, 47.4249,-0.0472092 + 1.019,-9.99093,-10.1271,-18.5129, 98.0609, 50.6577, 47.3556,-0.0476376 + 1.02,-10.0011,-10.1863,-19.1914, 98.1609, 50.8299, 47.2832,-0.0477399 + 1.021,-10.0113,-10.1853,-19.8507, 98.2608, 51.005, 47.2083,-0.0474934 + 1.022,-10.0215,-10.1243,-20.4867, 98.3601, 51.1809, 47.1323,-0.0469489 + 1.023,-10.0316,-10.0131,-21.0951, 98.4583, 51.3553, 47.0568,-0.0462117 + 1.024,-10.0415,-9.86946,-21.6717, 98.5551, 51.5265, 46.9832,-0.0454099 + 1.025,-10.0513,-9.71649,-22.2124, 98.6505, 51.6936, 46.9122,-0.0446637 + 1.026,-10.0609,-9.57864, -22.713, 98.7444, 51.8565, 46.8438,-0.0440678 + 1.027,-10.0704,-9.47791,-23.1698, 98.8374, 52.0157, 46.778,-0.0436878 + 1.028,-10.0799,-9.43039, -23.579, 98.9299, 52.1717, 46.7147,-0.0435655 + 1.029,-10.0893,-9.44363,-23.9372, 99.0226, 52.3243, 46.6545,-0.0437208 + 1.03,-10.0988,-9.51544,-24.2415, 99.1159, 52.4733, 46.5984,-0.0441469 + 1.031,-10.1083, -9.6343,-24.4892, 99.2104, 52.6184, 46.5473,-0.0447988 + 1.032, -10.118,-9.78113, -24.678, 99.3064, 52.7593, 46.5015,-0.045586 + 1.033,-10.1279,-9.93244,-24.8064, 99.4038, 52.8968, 46.4606,-0.0463785 + 1.034,-10.1379, -10.064,-24.8732, 99.5025, 53.0318, 46.4237,-0.0470316 + 1.035, -10.148,-10.1549,-24.8778, 99.6022, 53.1654, 46.3894,-0.0474215 + 1.036,-10.1582,-10.1904,-24.8205, 99.7021, 53.298, 46.3566,-0.0474796 + 1.037,-10.1684,-10.1652,-24.7021, 99.8018, 53.4297, 46.325,-0.0472104 + 1.038,-10.1785,-10.0831, -24.524, 99.9008, 53.5599, 46.2942,-0.0466856 + 1.039,-10.1886,-9.95745,-24.2886, 99.9984, 53.6883, 46.2642,-0.0460186 + 1.04,-10.1985,-9.80833,-23.9987, 100.095, 53.815, 46.2343,-0.0453323 + 1.041,-10.2082,-9.65963,-23.6582, 100.189, 53.9412, 46.2035,-0.0447331 + 1.042,-10.2178,-9.53511,-23.2715, 100.283, 54.0685, 46.1702,-0.044299 + 1.043,-10.2273,-9.45468,-22.8435, 100.376, 54.1986, 46.133,-0.0440814 + 1.044,-10.2367,-9.43115,-22.3802, 100.468, 54.3329, 46.0912,-0.0441101 + 1.045,-10.2461,-9.46823,-21.8877, 100.561, 54.4718, 46.0449,-0.044393 + 1.046,-10.2556,-9.55993,-21.3729, 100.655, 54.6153, 45.9947,-0.0449083 + 1.047,-10.2652,-9.69153, -20.843, 100.75, 54.7629, 45.9415,-0.0455935 + 1.048, -10.275,-9.84196,-20.3058, 100.847, 54.9144, 45.8858,-0.0463422 + 1.049,-10.2849,-9.98713,-19.7689, 100.944, 55.0697, 45.8278,-0.0470181 + 1.05, -10.295,-10.1038,-19.2405, 101.044, 55.2288, 45.7673,-0.0474846 + 1.051,-10.3051,-10.1734,-18.7284, 101.143, 55.3911, 45.7046,-0.0476417 + 1.052,-10.3153,-10.1849,-18.2404, 101.243, 55.5553, 45.6406,-0.0474545 + 1.053,-10.3255,-10.1363,-17.7843, 101.343, 55.7193, 45.5766,-0.046962 + 1.054,-10.3356,-10.0356,-17.3671, 101.441, 55.8807, 45.5142,-0.0462616 + 1.055,-10.3456,-9.89895,-16.9955, 101.538, 56.0377, 45.4551,-0.0454797 + 1.056,-10.3554,-9.74819,-16.6757, 101.634, 56.1893, 45.3999,-0.0447397 + 1.057,-10.3651,-9.60745,-16.4127, 101.728, 56.3354, 45.3486,-0.0441415 + 1.058,-10.3746,-9.49924,-16.2109, 101.821, 56.477, 45.3007,-0.0437553 + 1.059,-10.3841,-9.44082,-16.0736, 101.914, 56.6149, 45.2555,-0.0436252 + 1.06,-10.3935,-9.44151,-16.0031, 102.007, 56.7501, 45.2128,-0.0437732 + 1.061, -10.403,-9.50112,-16.0005, 102.1, 56.883, 45.1726,-0.0441959 + 1.062,-10.4125,-9.61008,-16.0656, 102.194, 57.0142, 45.1351,-0.0448537 + 1.063,-10.4222,-9.75091,-16.1969, 102.29, 57.1443, 45.0998,-0.0456622 + 1.064, -10.432,-9.90105,-16.3918, 102.387, 57.2746, 45.0658,-0.0464957 + 1.065, -10.442,-10.0365,-16.6465, 102.485, 57.4068, 45.0314,-0.0472074 + 1.066,-10.4521,-10.1356,-16.9558, 102.585, 57.5422, 44.9949,-0.0476647 + 1.067,-10.4623,-10.1825,-17.3135, 102.685, 57.6819, 44.955,-0.0477839 + 1.068,-10.4724,-10.1698,-17.7124, 102.784, 57.8257, 44.9112,-0.047553 + 1.069,-10.4826,-10.0996,-18.1442, 102.884, 57.9727, 44.8638,-0.0470307 + 1.07,-10.4926,-9.98313,-18.6001, 102.981, 58.1218, 44.8133,-0.0463248 + 1.071,-10.5026,-9.83908,-19.0706, 103.078, 58.2719, 44.7605,-0.0455602 + 1.072,-10.5123,-9.69051,-19.5458, 103.173, 58.4226, 44.7056,-0.0448514 + 1.073,-10.5219,-9.56119,-20.0155, 103.267, 58.5739, 44.6486,-0.0442875 + 1.074,-10.5314,-9.47179,-20.4698, 103.36, 58.7261, 44.5897,-0.0439309 + 1.075,-10.5409,-9.43655,-20.8987, 103.452, 58.879, 44.5295,-0.0438225 + 1.076,-10.5503,-9.46107,-21.2929, 103.545, 59.0319, 44.4693,-0.043982 + 1.077,-10.5598,-9.54137,-21.6437, 103.639, 59.1837, 44.4107,-0.044401 + 1.078,-10.5694,-9.66456,-21.9434, 103.734, 59.3333, 44.3553,-0.0450314 + 1.079,-10.5791,-9.81089,-22.1852, 103.83, 59.4801, 44.3039,-0.0457793 + 1.08, -10.589,-9.95695,-22.3637, 103.927, 59.6243, 44.2566,-0.0465149 + 1.081, -10.599,-10.0794,-22.4749, 104.026, 59.7666, 44.2127,-0.0470985 + 1.082,-10.6092,-10.1586,-22.5165, 104.126, 59.9075, 44.1711,-0.0474167 + 1.083,-10.6194, -10.182,-22.4876, 104.226, 60.0476, 44.1309,-0.0474136 + 1.084,-10.6295,-10.1459,-22.3891, 104.325, 60.1866, 44.0917,-0.0471045 + 1.085,-10.6397,-10.0561,-22.2236, 104.424, 60.3244, 44.0531,-0.046566 + 1.086,-10.6497,-9.92702,-21.9954, 104.521, 60.4606, 44.0149,-0.0459094 + 1.087,-10.6595,-9.77936,-21.7104, 104.617, 60.5959, 43.9763,-0.0452497 + 1.088,-10.6692,-9.63673,-21.3759, 104.712, 60.7314, 43.9358,-0.0446831 + 1.089,-10.6788,-9.52194,-21.0005, 104.805, 60.8688, 43.8922,-0.0442787 + 1.09,-10.6883,-9.45333, -20.594, 104.898, 61.0094, 43.8446,-0.0440825 + 1.091,-10.6977,-9.44182, -20.167, 104.991, 61.1539, 43.7927,-0.044121 + 1.092,-10.7071, -9.4892,-19.7308, 105.084, 61.302, 43.7374,-0.0444007 + 1.093,-10.7167,-9.58785,-19.2969, 105.178, 61.4529, 43.6801,-0.0448977 + 1.094,-10.7263,-9.72193,-18.8769, 105.273, 61.6054, 43.6223,-0.0455479 + 1.095,-10.7361,-9.86997, -18.482, 105.37, 61.7587, 43.5651,-0.046246 + 1.096,-10.7461,-10.0083, -18.123, 105.468, 61.9123, 43.5091,-0.0468611 + 1.097,-10.7561,-10.1148,-17.8095, 105.567, 62.0657, 43.4544,-0.047268 + 1.098,-10.7663,-10.1724,-17.5501, 105.667, 62.2184, 43.4015,-0.0473822 + 1.099,-10.7765, -10.172,-17.3519, 105.767, 62.3693, 43.3506,-0.0471839 + 1.1,-10.7866,-10.1138,-17.2204, 105.866, 62.5169, 43.3026,-0.0467216 + 1.101,-10.7967, -10.007, -17.159, 105.964, 62.6603, 43.258,-0.046094 + 1.102,-10.8066,-9.86876,-17.1693, 106.061, 62.7989, 43.2169,-0.0454193 + 1.103,-10.8164,-9.72129,-17.2509, 106.157, 62.9335, 43.1783,-0.0448064 + 1.104,-10.8261,-9.58813,-17.4011, 106.251, 63.0656, 43.1407,-0.044338 + 1.105,-10.8356,-9.49058,-17.6154, 106.344, 63.1974, 43.1022,-0.0440682 + 1.106,-10.8451, -9.4442,-17.8871, 106.436, 63.331, 43.0614,-0.0440281 + 1.107,-10.8545,-9.45637, -18.208, 106.529, 63.4676, 43.0173,-0.0442297 + 1.108, -10.864,-9.52508,-18.5683, 106.623, 63.6078, 42.9702,-0.044661 + 1.109,-10.8736,-9.63929, -18.957, 106.717, 63.7515, 42.9204,-0.0452766 + 1.11,-10.8833, -9.7807, -19.362, 106.813, 63.8985, 42.8687,-0.0459902 + 1.111,-10.8931,-9.92667,-19.7708, 106.91, 64.0486, 42.8152,-0.0466811 + 1.112,-10.9031,-10.0539,-20.1707, 107.009, 64.2017, 42.7602,-0.0472164 + 1.113,-10.9132,-10.1419,-20.5491, 107.109, 64.3572, 42.7039,-0.0474854 + 1.114,-10.9234,-10.1768,-20.8942, 107.208, 64.5139, 42.6471,-0.0474317 + 1.115,-10.9336, -10.153,-21.1951, 107.308, 64.6699, 42.5911,-0.0470692 + 1.116,-10.9437,-10.0744,-21.4423, 107.407, 64.8231, 42.5373,-0.0464755 + 1.117,-10.9537,-9.95355,-21.6278, 107.505, 64.9717, 42.4871,-0.0457671 + 1.118,-10.9636,-9.80985,-21.7459, 107.601, 65.1148, 42.4409,-0.0450668 + 1.119,-10.9733,-9.66631, -21.793, 107.696, 65.2528, 42.3983,-0.0444782 + 1.12,-10.9829,-9.54587,-21.7675, 107.789, 65.3872, 42.3579,-0.0440748 + 1.121,-10.9924,-9.46778,-21.6706, 107.882, 65.52, 42.3182,-0.0439011 + 1.122,-11.0019, -9.4445,-21.5057, 107.975, 65.653, 42.2778,-0.0439787 + 1.123,-11.0113,-9.47969,-21.2786, 108.068, 65.7874, 42.236,-0.0443075 + 1.124,-11.0208,-9.56767,-20.9971, 108.162, 65.9243, 42.1925,-0.0448587 + 1.125,-11.0305,-9.69433,-20.6711, 108.257, 66.064, 42.1472,-0.0455655 + 1.126,-11.0402,-9.83938,-20.3117, 108.353, 66.207, 42.0999,-0.0463211 + 1.127,-11.0501, -9.9796,-19.9317, 108.451, 66.354, 42.0502,-0.0469924 + 1.128,-11.0602,-10.0926,-19.5443, 108.55, 66.505, 41.9977,-0.0474483 + 1.129,-11.0703,-10.1603,-19.1631, 108.65, 66.6595, 41.9427,-0.0475955 + 1.13,-11.0805,-10.1719,-18.8015, 108.75, 66.8163, 41.8859,-0.0474053 + 1.131,-11.0907,-10.1256,-18.4724, 108.849, 66.973, 41.829,-0.0469207 + 1.132,-11.1008,-10.0289,-18.1874, 108.947, 67.1274, 41.7737,-0.0462415 + 1.133,-11.1107,-9.89725,-17.9567, 109.044, 67.2773, 41.7216,-0.0454942 + 1.134,-11.1206,-9.75178,-17.7885, 109.14, 67.4221, 41.6732, -0.0448 + 1.135,-11.1302,-9.61576,-17.6887, 109.234, 67.5619, 41.6282,-0.0442549 + 1.136,-11.1398,-9.51092,-17.6608, 109.328, 67.6982, 41.5856,-0.043923 + 1.137,-11.1493,-9.45401,-17.7056, 109.42, 67.8326, 41.544,-0.0438407 + 1.138,-11.1587,-9.45408,-17.8213, 109.513, 67.9667, 41.5025,-0.0440214 + 1.139,-11.1682,-9.51107,-18.0034, 109.607, 68.1015, 41.4606,-0.0444534 + 1.14,-11.1777,-9.61582,-18.2448, 109.701, 68.2379, 41.4178,-0.0450914 + 1.141,-11.1874,-9.75153,-18.5363, 109.797, 68.3768, 41.3739,-0.0458496 + 1.142,-11.1972,-9.89648,-18.8666, 109.894, 68.519, 41.328,-0.0466054 + 1.143,-11.2072,-10.0275, -19.223, 109.992, 68.6652, 41.2795,-0.04722 + 1.144,-11.2173,-10.1236,-19.5917, 110.091, 68.8157, 41.228,-0.0475718 + 1.145,-11.2274,-10.1694,-19.9585, 110.191, 68.97, 41.1734,-0.04759 + 1.146,-11.2376,-10.1578, -20.309, 110.291, 69.1263, 41.1171,-0.0472749 + 1.147,-11.2477,-10.0905,-20.6297, 110.39, 69.2823, 41.0606,-0.0466957 + 1.148,-11.2578,-9.97842, -20.908, 110.488, 69.4357, 41.0059,-0.0459678 + 1.149,-11.2677,-9.83951, -21.133, 110.584, 69.5846, 40.9543,-0.0452206 + 1.15,-11.2775,-9.69601,-21.2959, 110.679, 69.7285, 40.9061,-0.0445684 + 1.151,-11.2871,-9.57085,-21.3904, 110.773, 69.868, 40.861,-0.0440957 + 1.152,-11.2966,-9.48406,-21.4128, 110.866, 70.0044, 40.8178,-0.0438557 + 1.153,-11.3061,-9.44946,-21.3625, 110.959, 70.1394, 40.7756,-0.0438755 + 1.154,-11.3155,-9.47256,-21.2417, 111.052, 70.2742, 40.7334,-0.0441586 + 1.155, -11.325,-9.54961,-21.0555, 111.145, 70.4099, 40.6909,-0.0446801 + 1.156,-11.3346,-9.66823,-20.8117, 111.24, 70.5473, 40.6476,-0.045378 + 1.157,-11.3443,-9.80942,-20.5205, 111.337, 70.6873, 40.603,-0.0461499 + 1.158,-11.3542,-9.95059,-20.1942, 111.434, 70.8309, 40.5564,-0.0468632 + 1.159,-11.3642,-10.0691,-19.8465, 111.533, 70.9786, 40.5069,-0.0473823 + 1.16,-11.3744,-10.1462,-19.4918, 111.632, 71.1304, 40.4544,-0.0476033 + 1.161,-11.3845,-10.1693,-19.1453, 111.732, 71.2853, 40.3994,-0.0474835 + 1.162,-11.3947, -10.135,-18.8215, 111.832, 71.4413, 40.3433,-0.0470532 + 1.163,-11.4048,-10.0488,-18.5341, 111.93, 71.5959, 40.2879,-0.0464042 + 1.164,-11.4148,-9.92439,-18.2954, 112.028, 71.7469, 40.235,-0.0456614 + 1.165,-11.4247,-9.78183,-18.1153, 112.124, 71.8931, 40.1855,-0.0449502 + 1.166,-11.4344, -9.6439,-18.0016, 112.218, 72.0344, 40.1394,-0.0443728 + 1.167,-11.4439,-9.53265, -17.959, 112.312, 72.172, 40.0957,-0.043999 + 1.168,-11.4534,-9.46585,-17.9892, 112.405, 72.3074, 40.0532,-0.0438687 + 1.169,-11.4629,-9.45415,-18.0905, 112.497, 72.4423, 40.0109,-0.0439976 + 1.17,-11.4723,-9.49937,-18.2585, 112.59, 72.578, 39.9681,-0.0443773 + 1.171,-11.4819,-9.59423,-18.4854, 112.685, 72.7153, 39.9243,-0.0449687 + 1.172,-11.4915,-9.72352,-18.7612, 112.78, 72.855, 39.8792,-0.045694 + 1.173,-11.5013,-9.86653,-19.0733, 112.877, 72.9979, 39.8324,-0.0464389 + 1.174,-11.5113,-10.0004,-19.4076, 112.975, 73.1445, 39.7833,-0.0470691 + 1.175,-11.5213,-10.1037,-19.7492, 113.074, 73.295, 39.7315,-0.0474613 + 1.176,-11.5315,-10.1599,-20.0825, 113.174, 73.4487, 39.6774,-0.0475369 + 1.177,-11.5416,-10.1601,-20.3925, 113.273, 73.604, 39.622,-0.0472849 + 1.178,-11.5518,-10.1043,-20.6651, 113.372, 73.7587, 39.5669,-0.0467637 + 1.179,-11.5619,-10.0015,-20.8878, 113.471, 73.9104, 39.5141,-0.0460812 + 1.18,-11.5718, -9.8682,-21.0507, 113.567, 74.0574, 39.4646,-0.0453634 + 1.181,-11.5816,-9.72565,-21.1463, 113.663, 74.1993, 39.4187,-0.0447244 + 1.182,-11.5912,-9.59672,-21.1704, 113.757, 74.3371, 39.3756,-0.0442485 + 1.183,-11.6008,-9.50201,-21.1221, 113.85, 74.4724, 39.3337,-0.0439879 + 1.184,-11.6102,-9.45663,-21.0037, 113.943, 74.6072, 39.2917,-0.0439683 + 1.185,-11.6197,-9.46781,-20.8211, 114.036, 74.7431, 39.2485,-0.044194 + 1.186,-11.6292,-9.53371,-20.5831, 114.129, 74.8812, 39.2035,-0.0446452 + 1.187,-11.6388,-9.64374,-20.3009, 114.224, 75.0219, 39.1567,-0.0452706 + 1.188,-11.6485,-9.78027,-19.9883, 114.32, 75.1657, 39.1082,-0.0459819 + 1.189,-11.6583,-9.92143,-19.6601, 114.417, 75.3126, 39.0579,-0.0466606 + 1.19,-11.6683,-10.0447,-19.3321, 114.516, 75.4627, 39.0058,-0.0471795 + 1.191,-11.6784,-10.1303,-19.0202, 114.615, 75.6155, 38.9522,-0.0474357 + 1.192,-11.6886,-10.1646,-18.7394, 114.715, 75.7695, 38.8979,-0.0473796 + 1.193,-11.6987,-10.1421,-18.5031, 114.814, 75.9231, 38.8442,-0.0470295 + 1.194,-11.7089,-10.0666,-18.3229, 114.913, 76.0739, 38.7926,-0.0464638 + 1.195,-11.7189,-9.95009,-18.2073, 115.011, 76.2205, 38.7443,-0.0457957 + 1.196,-11.7288,-9.81127,-18.1618, 115.107, 76.3622, 38.6996,-0.0451417 + 1.197,-11.7385,-9.67237,-18.1886, 115.202, 76.4997, 38.6574,-0.0445966 + 1.198,-11.7481, -9.5556,-18.2861, 115.296, 76.635, 38.6163,-0.0442244 + 1.199,-11.7576,-9.47961,-18.4493, 115.389, 76.7701, 38.5744,-0.0440608 + 1.2,-11.7671,-9.45653,-18.6698, 115.481, 76.907, 38.5302,-0.0441216 + 1.201,-11.7765,-9.48999,-18.9365, 115.574, 77.0467, 38.4833,-0.0444045 + 1.202, -11.786,-9.57461, -19.236, 115.668, 77.1896, 38.4338,-0.0448847 + 1.203,-11.7957,-9.69681,-19.5529, 115.763, 77.3354, 38.3826,-0.0455051 + 1.204,-11.8054, -9.837,-19.8712, 115.86, 77.4835, 38.3303,-0.0461739 + 1.205,-11.8153,-9.97276,-20.1748, 115.958, 77.6334, 38.2776,-0.0467747 + 1.206,-11.8254,-10.0824,-20.4483, 116.057, 77.7846, 38.2249,-0.0471926 + 1.207,-11.8355,-10.1483,-20.6776, 116.156, 77.9362, 38.1727,-0.0473449 + 1.208,-11.8457,-10.1601,-20.8511, 116.256, 78.087, 38.1217,-0.0472058 + 1.209,-11.8558,-10.1159,-20.9602, 116.355, 78.2355, 38.0729,-0.0468121 + 1.21,-11.8659,-10.0228,-20.9991, 116.453, 78.3805, 38.0267,-0.0462494 + 1.211,-11.8759,-9.89576,-20.9663, 116.551, 78.5216, 37.9833,-0.045624 + 1.212,-11.8857,-9.75508,-20.8634, 116.646, 78.6596, 37.9416,-0.0450355 + 1.213,-11.8954, -9.6233,-20.6962, 116.741, 78.796, 37.9001,-0.0445599 + 1.214,-11.9049,-9.52149,-20.4734, 116.834, 78.933, 37.8568,-0.0442472 + 1.215,-11.9144,-9.46591,-20.2071, 116.927, 79.0723, 37.8105,-0.044128 + 1.216,-11.9239,-9.46541,-19.9113, 117.02, 79.2149, 37.7607,-0.0442194 + 1.217,-11.9334,-9.52001,-19.6018, 117.113, 79.3605, 37.7081,-0.0445229 + 1.218,-11.9429,-9.62096,-19.2951, 117.208, 79.5083, 37.6543,-0.0450146 + 1.219,-11.9526,-9.75205,-19.0076, 117.303, 79.657, 37.6006,-0.0456343 + 1.22,-11.9624, -9.8923,-18.7545, 117.4, 79.8056, 37.5483,-0.0462857 + 1.221,-11.9724,-10.0193,-18.5495, 117.499, 79.9538, 37.4979,-0.046851 + 1.222,-11.9825,-10.1127,-18.4033, 117.598, 80.1011, 37.4494,-0.0472201 + 1.223,-11.9926,-10.1576,-18.3239, 117.697, 80.2476, 37.4025,-0.0473209 + 1.224,-12.0028,-10.1469,-18.3153, 117.797, 80.3927, 37.3571,-0.0471396 + 1.225,-12.0129,-10.0823,-18.3777, 117.896, 80.5362, 37.3129,-0.0467208 + 1.226,-12.0229,-9.97421,-18.5077, 117.994, 80.6779, 37.2696,-0.04615 + 1.227,-12.0329,-9.83996,-18.6979, 118.09, 80.8183, 37.2264,-0.0455269 + 1.228,-12.0426,-9.70102,-18.9377, 118.185, 80.9584, 37.1821,-0.0449426 + 1.229,-12.0523,-9.57962,-19.2138, 118.279, 81.0994, 37.1355,-0.0444691 + 1.23,-12.0618,-9.49517,-19.5108, 118.373, 81.2425, 37.0858,-0.0441599 + 1.231,-12.0712,-9.46114,-19.8122, 118.465, 81.3881, 37.0332,-0.0440551 + 1.232,-12.0807,-9.48293,-20.1012, 118.558, 81.5354, 36.9787,-0.0441812 + 1.233,-12.0902,-9.55702,-20.3617, 118.652, 81.6833, 36.9243,-0.0445424 + 1.234,-12.0998, -9.6715,-20.5792, 118.747, 81.8302, 36.8717,-0.0451065 + 1.235,-12.1096,-9.80805,-20.7415, 118.843, 81.9753, 36.8221,-0.045796 + 1.236,-12.1194,-9.94479,-20.8398, 118.941, 82.1186, 36.7756,-0.0464941 + 1.237,-12.1294,-10.0599,-20.8685, 119.039, 82.2608, 36.7316,-0.047068 + 1.238,-12.1396,-10.1349,-20.8263, 119.139, 82.403, 36.6885,-0.0474028 + 1.239,-12.1497,-10.1579,-20.7156, 119.239, 82.5459, 36.6452,-0.0474331 + 1.24,-12.1599,-10.1252,-20.5431, 119.338, 82.69, 36.6007,-0.0471592 + 1.241, -12.17,-10.0422,-20.3187, 119.436, 82.8351, 36.5546,-0.0466419 + 1.242, -12.18,-9.92206,-20.0553, 119.534, 82.9807, 36.507,-0.0459807 + 1.243,-12.1898,-9.78412,-19.7684, 119.63, 83.1266, 36.4578,-0.0452866 + 1.244,-12.1995,-9.65043,-19.4744, 119.724, 83.2726, 36.4071,-0.0446609 + 1.245,-12.2091,-9.54236,-19.1905, 119.818, 83.4188, 36.3549,-0.0441856 + 1.246,-12.2186,-9.47719, -18.933, 119.911, 83.5651, 36.3019,-0.043923 + 1.247,-12.2281, -9.4653,-18.7169, 120.004, 83.7107, 36.2491,-0.0439158 + 1.248,-12.2375,-9.50855,-18.5547, 120.097, 83.855, 36.1979,-0.0441822 + 1.249,-12.2471,-9.59998,-18.4557, 120.191, 83.9973, 36.1493,-0.0447034 + 1.25,-12.2567,-9.72492,-18.4257, 120.287, 84.1374, 36.1038,-0.0454133 + 1.251,-12.2665,-9.86337,-18.4662, 120.383, 84.2763, 36.0609,-0.0461976 + 1.252,-12.2765,-9.99318,-18.5746, 120.481, 84.4154, 36.0191,-0.0469116 + 1.253,-12.2865,-10.0936,-18.7444, 120.58, 84.5566, 35.9764,-0.0474134 + 1.254,-12.2967,-10.1486,-18.9653, 120.68, 84.7011, 35.9313,-0.0476011 + 1.255,-12.3068,-10.1493,-19.2241, 120.78, 84.8492, 35.883,-0.047441 + 1.256, -12.317,-10.0958,-19.5051, 120.879, 84.9998, 35.8318,-0.0469738 + 1.257, -12.327,-9.99667,-19.7916, 120.977, 85.1513, 35.7791,-0.0462987 + 1.258,-12.3369,-9.86773,-20.0663, 121.073, 85.3018, 35.7261,-0.0455436 + 1.259,-12.3467,-9.72965,-20.3128, 121.169, 85.4501, 35.674,-0.044834 + 1.26,-12.3564,-9.60454,-20.5161, 121.263, 85.5954, 35.6235,-0.0442724 + 1.261, -12.366,-9.51239,-20.6641, 121.356, 85.738, 35.5746,-0.0439308 + 1.262,-12.3754,-9.46791, -20.748, 121.449, 85.8783, 35.5272,-0.0438517 + 1.263,-12.3849,-9.47817,-20.7628, 121.542, 86.017, 35.4813,-0.0440494 + 1.264,-12.3944,-9.54151,-20.7078, 121.636, 86.1549, 35.4366,-0.044506 + 1.265, -12.404,-9.64773,-20.5865, 121.731, 86.2927, 35.3927,-0.0451643 + 1.266,-12.4137,-9.77982,-20.4065, 121.827, 86.4316, 35.3489,-0.0459251 + 1.267,-12.4235,-9.91664,-20.1791, 121.924, 86.5731, 35.3041,-0.0466566 + 1.268,-12.4335,-10.0363,-19.9183, 122.022, 86.718, 35.257,-0.0472202 + 1.269,-12.4436,-10.1197,-19.6404, 122.122, 86.867, 35.207,-0.0475044 + 1.27,-12.4538,-10.1534,-19.3626, 122.221, 87.0193, 35.1544,-0.0474563 + 1.271,-12.4639,-10.1322,-19.1022, 122.321, 87.1731, 35.1003,-0.0470958 + 1.272, -12.474,-10.0595,-18.8753, 122.419, 87.326, 35.0467,-0.046507 + 1.273, -12.484,-9.94699, -18.696, 122.517, 87.4757, 34.9953,-0.0458113 + 1.274,-12.4939,-9.81261,-18.5755, 122.613, 87.6209, 34.947,-0.0451331 + 1.275,-12.5037,-9.67792,-18.5211, 122.708, 87.7616, 34.9018,-0.0445739 + 1.276,-12.5133,-9.56446,-18.5362, 122.802, 87.8991, 34.8585,-0.0441999 + 1.277,-12.5228,-9.49036,-18.6195, 122.895, 88.0353, 34.8156,-0.0440454 + 1.278,-12.5322,-9.46744,-18.7657, 122.988, 88.1722, 34.7715,-0.0441204 + 1.279,-12.5417,-9.49933,-18.9654, 123.081, 88.3111, 34.7255,-0.0444157 + 1.28,-12.5512,-9.58088,-19.2056, 123.175, 88.4526, 34.6774,-0.0449003 + 1.281,-12.5609,-9.69901,-19.4711, 123.27, 88.5969, 34.6277,-0.0455141 + 1.282,-12.5706, -9.8348,-19.7449, 123.367, 88.7436, 34.5768,-0.0461669 + 1.283,-12.5805,-9.96652,-20.0093, 123.464, 88.8924, 34.5252,-0.046748 + 1.284,-12.5906,-10.0731,-20.2475, 123.563, 89.0426, 34.4735,-0.0471501 + 1.285,-12.6007,-10.1375,-20.4442, 123.663, 89.1933, 34.4221,-0.0472976 + 1.286,-12.6109,-10.1495,-20.5868, 123.762, 89.3432, 34.3718,-0.0471682 + 1.287, -12.621,-10.1072,-20.6663, 123.861, 89.4911, 34.3234,-0.0467978 + 1.288,-12.6311,-10.0174,-20.6777, 123.96, 89.6359, 34.2774,-0.0462662 + 1.289, -12.641,-9.89445,-20.6203, 124.057, 89.7775, 34.2336,-0.0456712 + 1.29,-12.6509,-9.75812,-20.4981, 124.152, 89.9165, 34.1908,-0.0451037 + 1.291,-12.6605,-9.63019,-20.3192, 124.247, 90.0547, 34.1475,-0.0446328 + 1.292,-12.6701,-9.53113,-20.0954, 124.34, 90.194, 34.102,-0.0443061 + 1.293,-12.6796,-9.47674,-19.8416, 124.433, 90.3358, 34.0534,-0.0441563 + 1.294,-12.6891,-9.47569,-19.5743, 124.526, 90.4804, 34.0017,-0.0442075 + 1.295,-12.6986,-9.52812,-19.3114, 124.62, 90.6271, 33.9482,-0.044471 + 1.296,-12.7081,-9.62559,-19.0699, 124.714, 90.7746, 33.8947,-0.0449336 + 1.297,-12.7178,-9.75247, -18.866, 124.81, 90.9215, 33.8429,-0.045544 + 1.298,-12.7276,-9.88846, -18.713, 124.907, 91.067, 33.7936,-0.0462098 + 1.299,-12.7376,-10.0118,-18.6209, 125.005, 91.2113, 33.747,-0.0468115 + 1.3,-12.7477,-10.1028,-18.5957, 125.104, 91.3548, 33.7022,-0.0472306 + 1.301,-12.7578,-10.1468, -18.639, 125.204, 91.4983, 33.658,-0.047382 + 1.302,-12.7679, -10.137,-18.7476, 125.303, 91.6424, 33.6135,-0.0472371 + 1.303,-12.7781,-10.0749,-18.9143, 125.402, 91.7871, 33.5681,-0.046829 + 1.304,-12.7881,-9.97043,-19.1275, 125.5, 91.9322, 33.5214,-0.0462378 + 1.305, -12.798, -9.8404,-19.3729, 125.596, 92.0775, 33.4733,-0.0455668 + 1.306,-12.8078,-9.70562,-19.6339, 125.692, 92.223, 33.4237,-0.0449193 + 1.307,-12.8174,-9.58763,-19.8927, 125.786, 92.3686, 33.3727,-0.0443847 + 1.308, -12.827, -9.5053, -20.132, 125.879, 92.5142, 33.3206,-0.0440348 + 1.309,-12.8364,-9.47176,-20.3354, 125.972, 92.6595, 33.2684,-0.0439228 + 1.31,-12.8459,-9.49235,-20.4892, 126.065, 92.8037, 33.2172,-0.0440797 + 1.311,-12.8554,-9.56373,-20.5831, 126.159, 92.9461, 33.1682,-0.0445034 + 1.312, -12.865,-9.67444,-20.6109, 126.254, 93.0865, 33.122,-0.0451463 + 1.313,-12.8748,-9.80675,-20.5707, 126.35, 93.2257, 33.0782,-0.04591 + 1.314,-12.8846,-9.93948,-20.4654, 126.447, 93.3651, 33.0356,-0.046657 + 1.315,-12.8946,-10.0514,-20.3025, 126.546, 93.5064, 32.9923,-0.0472391 + 1.316,-12.9047,-10.1246,-20.0934, 126.645, 93.6512, 32.9466,-0.047536 + 1.317,-12.9149,-10.1475,-19.8524, 126.745, 93.7996, 32.8977,-0.0474891 + 1.318, -12.925,-10.1163,-19.5965, 126.844, 93.9509, 32.8461,-0.0471158 + 1.319,-12.9351,-10.0362,-19.3433, 126.943, 94.1031, 32.793,-0.0465016 + 1.32,-12.9451,-9.91998,-19.1104, 127.04, 94.2539, 32.7401,-0.0457721 + 1.321, -12.955,-9.78625, -18.914, 127.136, 94.4018, 32.689,-0.0450588 + 1.322,-12.9647,-9.65641,-18.7677, 127.231, 94.546, 32.6401,-0.0444722 + 1.323,-12.9743,-9.55124,-18.6815, 127.324, 94.6868, 32.5934,-0.0440888 + 1.324,-12.9838,-9.48753,-18.6614, 127.417, 94.8254, 32.548,-0.0439507 + 1.325,-12.9933,-9.47545,-18.7086, 127.51, 94.963, 32.5033,-0.0440702 + 1.326,-13.0027,-9.51689,-18.8196, 127.604, 95.1009, 32.4583,-0.0444321 + 1.327,-13.0123,-9.60517,-18.9865, 127.698, 95.2401, 32.4128,-0.0449905 + 1.328,-13.0219,-9.72615,-19.1974, 127.793, 95.3815, 32.3661,-0.0456661 + 1.329,-13.0317,-9.86045,-19.4373, 127.89, 95.5256, 32.3181,-0.0463497 + 1.33,-13.0417,-9.98658,-19.6891, 127.988, 95.6727, 32.2684,-0.0469196 + 1.331,-13.0517,-10.0844,-19.9349, 128.087, 95.8226, 32.2171,-0.047269 + 1.332,-13.0618,-10.1382,-20.1573, 128.186, 95.9743, 32.1648,-0.0473349 + 1.333, -13.072,-10.1395,-20.3405, 128.286, 96.1261, 32.1126,-0.0471153 + 1.334,-13.0821,-10.0881,-20.4714, 128.385, 96.2761, 32.062,-0.0466676 + 1.335,-13.0922,-9.99227, -20.541, 128.483, 96.4227, 32.0141,-0.0460881 + 1.336,-13.1021,-9.86734,-20.5443, 128.58, 96.5652, 31.9689,-0.0454826 + 1.337,-13.1119,-9.73334,-20.4813, 128.675, 96.7044, 31.9258,-0.0449404 + 1.338,-13.1216,-9.61171,-20.3565, 128.769, 96.842, 31.8829,-0.0445229 + 1.339,-13.1311,-9.52187,-20.1793, 128.863, 96.9801, 31.8385,-0.0442659 + 1.34,-13.1406,-9.47819,-19.9624, 128.956, 97.1205, 31.7912,-0.0441901 + 1.341,-13.1501,-9.48761,-19.7216, 129.049, 97.2637, 31.7409,-0.0443078 + 1.342,-13.1596,-9.54859,-19.4745, 129.143, 97.4095, 31.6884,-0.0446203 + 1.343,-13.1692,-9.65133, -19.239, 129.237, 97.5566, 31.6355,-0.045106 + 1.344,-13.1789,-9.77937,-19.0321, 129.333, 97.7038, 31.5837,-0.045709 + 1.345,-13.1887,-9.91222,-18.8689, 129.43, 97.8501, 31.5339,-0.0463377 + 1.346,-13.1987,-10.0286,-18.7612, 129.529, 97.9955, 31.4864,-0.0468794 + 1.347,-13.2088, -10.11,-18.7167, 129.628, 98.1402, 31.4405,-0.0472281 + 1.348,-13.2189,-10.1433,-18.7385, 129.727, 98.2846, 31.3955,-0.0473133 + 1.349,-13.2291,-10.1233, -18.825, 129.827, 98.4291, 31.3506,-0.0471192 + 1.35,-13.2392,-10.0531,-18.9695, 129.925, 98.5736, 31.3051,-0.0466862 + 1.351,-13.2492, -9.9442,-19.1613, 130.023, 98.7182, 31.2587,-0.046095 + 1.352,-13.2591,-9.81387,-19.3862, 130.119, 98.8629, 31.2109,-0.0454442 + 1.353,-13.2688,-9.68302,-19.6274, 130.214, 99.0077, 31.1617,-0.0448302 + 1.354,-13.2784,-9.57258,-19.8672, 130.308, 99.1528, 31.111,-0.044337 + 1.355, -13.288,-9.50019,-20.0876, 130.401, 99.2982, 31.0591,-0.0440325 + 1.356,-13.2974, -9.4774,-20.2724, 130.494, 99.4432, 31.0071,-0.0439682 + 1.357,-13.3069,-9.50783, -20.408, 130.588, 99.5871, 30.9563,-0.0441717 + 1.358,-13.3164,-9.58656,-20.4842, 130.682, 99.7292, 30.9078,-0.0446348 + 1.359,-13.3261,-9.70098,-20.4957, 130.777, 99.8695, 30.862,-0.0453006 + 1.36,-13.3358,-9.83275,-20.4415, 130.873, 100.009, 30.8183,-0.0460619 + 1.361,-13.3457,-9.96078,-20.3261, 130.971, 100.149, 30.7752,-0.0467762 + 1.362,-13.3558,-10.0646,-20.1581, 131.07, 100.291, 30.731,-0.0472983 + 1.363,-13.3659,-10.1276,-19.9503, 131.169, 100.437, 30.6842,-0.0475191 + 1.364, -13.376,-10.1398,-19.7185, 131.269, 100.587, 30.6342,-0.0473966 + 1.365,-13.3862,-10.0992,-19.4801, 131.368, 100.739, 30.5819,-0.0469657 + 1.366,-13.3962,-10.0124,-19.2533, 131.466, 100.891, 30.5289,-0.0463248 + 1.367,-13.4062,-9.89329,-19.0551, 131.563, 101.04, 30.4769,-0.0456041 + 1.368, -13.416,-9.76094,-18.9005, 131.659, 101.187, 30.4271,-0.0449315 + 1.369,-13.4257,-9.63653,-18.8011, 131.753, 101.329, 30.3798,-0.0444077 + 1.37,-13.4353,-9.53995,-18.7644, 131.847, 101.468, 30.3343,-0.044096 + 1.371,-13.4448,-9.48664, -18.793, 131.94, 101.606, 30.2897,-0.0440251 + 1.372,-13.4543,-9.48509,-18.8847, 132.033, 101.744, 30.2448,-0.0441959 + 1.373,-13.4638, -9.5355,-19.0321, 132.126, 101.883, 30.199,-0.0445847 + 1.374,-13.4733,-9.62978, -19.224, 132.221, 102.024, 30.1518,-0.0451411 + 1.375, -13.483,-9.75282,-19.4456, 132.317, 102.167, 30.1033,-0.0457859 + 1.376,-13.4928,-9.88491,-19.6797, 132.414, 102.314, 30.0536,-0.0464164 + 1.377,-13.5028,-10.0049,-19.9082, 132.512, 102.462, 30.0028,-0.0469226 + 1.378,-13.5128,-10.0937,-20.1138, 132.611, 102.612, 29.9515,-0.047213 + 1.379, -13.523, -10.137,-20.2804, 132.71, 102.762, 29.9004,-0.0472388 + 1.38,-13.5331, -10.128,-20.3953, 132.809, 102.912, 29.8504,-0.0470067 + 1.381,-13.5432,-10.0681,-20.4498, 132.908, 103.059, 29.8024,-0.0465736 + 1.382,-13.5533, -9.967,-20.4397, 133.006, 103.203, 29.7567,-0.0460265 + 1.383,-13.5632,-9.84085, -20.366, 133.103, 103.344, 29.7127,-0.0454564 + 1.384,-13.5729,-9.70986,-20.2346, 133.198, 103.484, 29.6691,-0.0449391 + 1.385,-13.5826,-9.59498,-20.0557, 133.292, 103.623, 29.6243,-0.0445289 + 1.386,-13.5921,-9.51458,-19.8436, 133.385, 103.764, 29.5768,-0.0442644 + 1.387,-13.6016,-9.48148,-19.6148, 133.478, 103.908, 29.5264,-0.0441769 + 1.388,-13.6111,-9.50095,-19.3872, 133.571, 104.053, 29.4738,-0.0442917 + 1.389,-13.6206,-9.56984,-19.1787, 133.665, 104.2, 29.4208,-0.0446194 + 1.39,-13.6302,-9.67709,-19.0057, 133.76, 104.346, 29.369,-0.0451391 + 1.391, -13.64,-9.80552,-18.8816, 133.856, 104.491, 29.3199,-0.0457859 + 1.392,-13.6498,-9.93457,-18.8161, 133.954, 104.634, 29.2736,-0.0464531 + 1.393,-13.6598,-10.0436,-18.8143, 134.052, 104.776, 29.2292,-0.047012 + 1.394,-13.6699,-10.1152,-18.8761, 134.152, 104.919, 29.1853,-0.0473458 + 1.395,-13.6801,-10.1379,-18.9965, 134.251, 105.063, 29.1404,-0.0473823 + 1.396,-13.6902,-10.1082,-19.1659, 134.35, 105.21, 29.0936,-0.0471135 + 1.397,-13.7003,-10.0308,-19.3706, 134.449, 105.357, 29.045,-0.0465952 + 1.398,-13.7103,-9.91811,-19.5945, 134.546, 105.505, 28.9948,-0.0459279 + 1.399,-13.7201,-9.78823,-19.8195, 134.642, 105.653, 28.944,-0.0452294 + 1.4,-13.7298,-9.66193,-20.0279, 134.737, 105.799, 28.8931,-0.0446115 + 1.401,-13.7394,-9.55939,-20.2029, 134.831, 105.944, 28.8427,-0.0441643 + 1.402, -13.749,-9.49702,-20.3307, 134.924, 106.087, 28.7933,-0.0439515 + 1.403,-13.7584,-9.48475,-20.4011, 135.017, 106.228, 28.7451,-0.0440075 + 1.404,-13.7679, -9.5245,-20.4087, 135.11, 106.368, 28.6984,-0.0443333 + 1.405,-13.7775, -9.6099,-20.3529, 135.205, 106.507, 28.653,-0.0448894 + 1.406,-13.7871,-9.72724,-20.2384, 135.3, 106.646, 28.6084,-0.0455918 + 1.407,-13.7969,-9.85773,-20.0746, 135.397, 106.787, 28.5635,-0.0463191 + 1.408,-13.8069,-9.98049,-19.8747, 135.495, 106.931, 28.5171,-0.0469336 + 1.409,-13.8169,-10.0759,-19.6549, 135.593, 107.078, 28.4682,-0.0473144 + 1.41, -13.827,-10.1287,-19.4331, 135.693, 107.228, 28.417,-0.0473902 + 1.411,-13.8372,-10.1305,-19.2273, 135.792, 107.381, 28.3643,-0.0471582 + 1.412,-13.8473, -10.081, -19.054, 135.891, 107.532, 28.3119,-0.0466827 + 1.413,-13.8573,-9.98826,-18.9273, 135.989, 107.682, 28.2614,-0.0460713 + 1.414,-13.8673,-9.86703,-18.8574, 136.086, 107.827, 28.2139,-0.0454417 + 1.415,-13.8771,-9.73676,-18.8498, 136.181, 107.967, 28.1691,-0.0448923 + 1.416,-13.8867, -9.6183, -18.905, 136.276, 108.106, 28.1257,-0.0444869 + 1.417,-13.8963,-9.53059,-19.0184, 136.369, 108.243, 28.0818,-0.0442575 + 1.418,-13.9058,-9.48762,-19.1806, 136.462, 108.382, 28.036,-0.0442151 + 1.419,-13.9153,-9.49625,-19.3782, 136.555, 108.524, 27.9875,-0.0443606 + 1.42,-13.9248,-9.55506,-19.5949, 136.649, 108.668, 27.9367,-0.0446857 + 1.421,-13.9344, -9.6546,-19.8129, 136.744, 108.814, 27.8848,-0.0451642 + 1.422,-13.9441,-9.77892,-20.0143, 136.84, 108.961, 27.8331,-0.0457424 + 1.423,-13.9539,-9.90813,-20.1825, 136.937, 109.108, 27.7829,-0.0463366 + 1.424,-13.9639,-10.0216,-20.3038, 137.035, 109.254, 27.7344,-0.0468445 + 1.425, -13.974,-10.1011,-20.3682, 137.134, 109.4, 27.6875,-0.0471696 + 1.426,-13.9841, -10.134,-20.3705, 137.234, 109.545, 27.6417,-0.0472472 + 1.427,-13.9942, -10.115,-20.3107, 137.333, 109.69, 27.5962,-0.0470616 + 1.428,-14.0043,-10.0473,-20.1939, 137.432, 109.834, 27.5505,-0.0466486 + 1.429,-14.0143,-9.94168,-20.0299, 137.529, 109.979, 27.5041,-0.0460821 + 1.43,-14.0242,-9.81507,-19.8323, 137.625, 110.123, 27.4566,-0.0454541 + 1.431, -14.034,-9.68774,-19.6178, 137.72, 110.268, 27.4077,-0.0448569 + 1.432,-14.0436,-9.58005,-19.4042, 137.814, 110.413, 27.3573,-0.0443735 + 1.433,-14.0531,-9.50922,-19.2094, 137.908, 110.558, 27.306,-0.0440734 + 1.434,-14.0626,-9.48654,-19.0495, 138.001, 110.702, 27.2545,-0.04401 + 1.435,-14.0721,-9.51562,-18.9379, 138.094, 110.846, 27.2043,-0.0442122 + 1.436,-14.0816,-9.59176,-18.8838, 138.188, 110.987, 27.1562,-0.0446711 + 1.437,-14.0913,-9.70275,-18.8916, 138.283, 111.128, 27.1105,-0.0453281 + 1.438,-14.1011,-9.83082,-18.9605, 138.38, 111.267, 27.0665,-0.0460739 + 1.439,-14.1109,-9.95547,-19.0846, 138.478, 111.408, 27.0228,-0.0467658 + 1.44, -14.121,-10.0568,-19.2534, 138.576, 111.551, 26.9774,-0.047261 + 1.441,-14.1311,-10.1185,-19.4525, 138.675, 111.699, 26.9294,-0.0474561 + 1.442,-14.1412,-10.1309,-19.6651, 138.775, 111.849, 26.8785,-0.0473162 + 1.443,-14.1513,-10.0919,-19.8731, 138.874, 112.001, 26.8259,-0.0468835 + 1.444,-14.1614,-10.0079, -20.059, 138.972, 112.152, 26.7734,-0.0462604 + 1.445,-14.1713,-9.89227,-20.2071, 139.069, 112.301, 26.7227,-0.0455765 + 1.446,-14.1812,-9.76356,-20.3049, 139.165, 112.445, 26.6746,-0.0449533 + 1.447,-14.1909,-9.64237,-20.3442, 139.259, 112.586, 26.629,-0.0444798 + 1.448,-14.2005,-9.54808,-20.3218, 139.353, 112.724, 26.5847,-0.0442055 + 1.449, -14.21,-9.49575,-20.2397, 139.446, 112.862, 26.5403,-0.0441473 + 1.45,-14.2194,-9.49371,-20.1051, 139.539, 113.001, 26.4944,-0.0442994 + 1.451, -14.229,-9.54226,-19.9295, 139.633, 113.142, 26.4465,-0.0446405 + 1.452,-14.2385,-9.63361,-19.7281, 139.727, 113.285, 26.3969,-0.0451313 + 1.453,-14.2482, -9.7531,-19.5181, 139.823, 113.431, 26.3463,-0.0457105 + 1.454, -14.258,-9.88161,-19.3175, 139.92, 113.578, 26.2955,-0.0462945 + 1.455, -14.268,-9.99858,-19.1435, 140.018, 113.726, 26.2451,-0.0467881 + 1.456, -14.278,-10.0853, -19.011, 140.117, 113.874, 26.1957,-0.0471045 + 1.457,-14.2882,-10.1279,-18.9313, 140.216, 114.022, 26.1475,-0.0471877 + 1.458,-14.2983,-10.1197,-18.9112, 140.316, 114.168, 26.1005,-0.0470268 + 1.459,-14.3084,-10.0619,-18.9521, 140.414, 114.313, 26.0546,-0.0466562 + 1.46,-14.3184,-9.96388,-19.0506, 140.512, 114.457, 26.0093,-0.046143 + 1.461,-14.3283, -9.8413, -19.198, 140.609, 114.599, 25.9639,-0.0455676 + 1.462,-14.3381, -9.7138,-19.3813, 140.704, 114.742, 25.9174,-0.0450083 + 1.463,-14.3477,-9.60178,-19.5847, 140.798, 114.885, 25.8689,-0.0445346 + 1.464,-14.3573,-9.52313,-19.7905, 140.892, 115.029, 25.8184,-0.0442076 + 1.465,-14.3668,-9.49042,-19.9809, 140.985, 115.174, 25.7665,-0.0440809 + 1.466,-14.3763,-9.50885,-20.1392, 141.078, 115.319, 25.7145,-0.0441941 + 1.467,-14.3858,-9.57543,-20.2519, 141.172, 115.463, 25.6641,-0.0445587 + 1.468,-14.3954,-9.67949,-20.3092, 141.267, 115.606, 25.6163,-0.045141 + 1.469,-14.4052,-9.80435,-20.3062, 141.363, 115.746, 25.5711,-0.0458535 + 1.47, -14.415,-9.93003,-20.2433, 141.461, 115.887, 25.5274,-0.046565 + 1.471, -14.425,-10.0364,-20.1261, 141.559, 116.028, 25.4834,-0.0471287 + 1.472,-14.4351,-10.1065, -19.965, 141.658, 116.173, 25.4375,-0.0474225 + 1.473,-14.4452,-10.1292,-19.7743, 141.758, 116.321, 25.3888,-0.0473848 + 1.474,-14.4554,-10.1007,-19.5706, 141.857, 116.472, 25.3376,-0.047031 + 1.475,-14.4654,-10.0258,-19.3719, 141.955, 116.623, 25.2852,-0.0464459 + 1.476,-14.4754,-9.91643,-19.1956, 142.052, 116.773, 25.2334,-0.0457551 + 1.477,-14.4853, -9.7901,-19.0573, 142.148, 116.92, 25.1836,-0.0450892 + 1.478, -14.495,-9.66704, -18.969, 142.243, 117.062, 25.1361,-0.044554 + 1.479,-14.5046,-9.56692,-18.9383, 142.337, 117.202, 25.0905,-0.0442168 + 1.48,-14.5141,-9.50576, -18.968, 142.43, 117.34, 25.0457,-0.0441074 + 1.481,-14.5236, -9.4933,-19.0552, 142.523, 117.479, 25.0004,-0.0442258 + 1.482,-14.5331, -9.5315,-19.1921, 142.617, 117.618, 24.9538,-0.0445499 + 1.483,-14.5427,-9.61422,-19.3664, 142.711, 117.76, 24.9057,-0.0450367 + 1.484,-14.5524, -9.7282,-19.5627, 142.807, 117.905, 24.8564,-0.0456208 + 1.485,-14.5621,-9.85519,-19.7635, 142.903, 118.051, 24.8062,-0.0462163 + 1.486,-14.5721,-9.97486,-19.9509, 143.001, 118.199, 24.7557,-0.046727 + 1.487,-14.5821,-10.0681,-20.1082, 143.1, 118.347, 24.7055,-0.0470654 + 1.488,-14.5922, -10.12,-20.2216, 143.199, 118.496, 24.6561,-0.0471748 + 1.489,-14.6023,-10.1222,-20.2809, 143.298, 118.644, 24.6078,-0.0470424 + 1.49,-14.6124,-10.0746,-20.2811, 143.397, 118.79, 24.561,-0.0467011 + 1.491,-14.6225, -9.9846,-20.2222, 143.495, 118.934, 24.5155,-0.0462154 + 1.492,-14.6324,-9.86678,-20.1096, 143.592, 119.076, 24.4705,-0.0456629 + 1.493,-14.6422,-9.73995,-19.9535, 143.688, 119.217, 24.425,-0.0451179 + 1.494,-14.6519,-9.62441, -19.768, 143.782, 119.36, 24.3778,-0.0446447 + 1.495,-14.6615,-9.53863,-19.5698, 143.876, 119.503, 24.3283,-0.0442991 + 1.496, -14.671,-9.49632,-19.3767, 143.969, 119.648, 24.2769,-0.0441324 + 1.497,-14.6805, -9.5042,-19.2061, 144.062, 119.793, 24.2247,-0.0441873 + 1.498, -14.69,-9.56099,-19.0733, 144.156, 119.938, 24.1733,-0.0444855 + 1.499,-14.6996,-9.65757,-18.9902, 144.251, 120.081, 24.1243,-0.0450087 + 1.5,-14.7093,-9.77847,-18.9641, 144.346, 120.223, 24.0781,-0.0456864 + 1.501,-14.7191,-9.90433,-18.9974, 144.444, 120.363, 24.0339,-0.0463986 + 1.502,-14.7291, -10.015,-19.0869, 144.542, 120.505, 23.9901,-0.0470008 + 1.503,-14.7392,-10.0928,-19.2243, 144.641, 120.648, 23.945,-0.047362 + 1.504,-14.7493,-10.1254,-19.3972, 144.74, 120.795, 23.8973,-0.0474031 + 1.505,-14.7594,-10.1074,-19.5897, 144.839, 120.945, 23.8469,-0.0471201 + 1.506,-14.7695,-10.0419,-19.7844, 144.938, 121.096, 23.795,-0.0465821 + 1.507,-14.7795,-9.93939,-19.9636, 145.035, 121.246, 23.743,-0.0459077 + 1.508,-14.7894,-9.81621, -20.111, 145.132, 121.394, 23.6926,-0.045229 + 1.509,-14.7991,-9.69212,-20.2132, 145.227, 121.538, 23.6444,-0.04466 + 1.51,-14.8088,-9.58697, -20.261, 145.321, 121.678, 23.5982,-0.0442779 + 1.511,-14.8183,-9.51756,-20.2501, 145.414, 121.817, 23.5531,-0.0441204 + 1.512,-14.8278,-9.49497,-20.1818, 145.507, 121.955, 23.5079,-0.0441932 + 1.513,-14.8373,-9.52278,-20.0623, 145.601, 122.095, 23.4616,-0.0444774 + 1.514,-14.8468,-9.59652,-19.9026, 145.695, 122.236, 23.4139,-0.0449332 + 1.515,-14.8565,-9.70435,-19.7176, 145.79, 122.38, 23.3648,-0.0454995 + 1.516,-14.8663,-9.82901,-19.5242, 145.886, 122.525, 23.3149,-0.0460943 + 1.517,-14.8761,-9.95055,-19.3401, 145.984, 122.673, 23.2645,-0.0466238 + 1.518,-14.8862,-10.0495,-19.1823, 146.083, 122.821, 23.2143,-0.0469991 + 1.519,-14.8962,-10.1101,-19.0653, 146.182, 122.97, 23.1648,-0.0471571 + 1.52,-14.9064,-10.1227,-18.9997, 146.281, 123.118, 23.1164,-0.0470759 + 1.521,-14.9165,-10.0852,-18.9914, 146.38, 123.264, 23.0693,-0.0467786 + 1.522,-14.9265,-10.0038,-19.0412, 146.478, 123.408, 23.0235,-0.0463225 + 1.523,-14.9365,-9.89136,-19.1443, 146.575, 123.551, 22.9784,-0.0457822 + 1.524,-14.9463,-9.76602, -19.291, 146.671, 123.693, 22.9328,-0.0452319 + 1.525, -14.956, -9.6478,-19.4678, 146.766, 123.835, 22.8857,-0.0447384 + 1.526,-14.9656, -9.5556,-19.6581, 146.859, 123.979, 22.8365,-0.0443604 + 1.527,-14.9751,-9.50416,-19.8443, 146.953, 124.123, 22.7854,-0.0441519 + 1.528,-14.9846,-9.50166,-20.0092, 147.046, 124.268, 22.7334,-0.04416 + 1.529,-14.9941,-9.54849,-20.1374, 147.14, 124.413, 22.6821,-0.0444121 + 1.53,-15.0037,-9.63711,-20.2171, 147.234, 124.556, 22.633,-0.044898 + 1.531,-15.0134,-9.75333,-20.2411, 147.33, 124.698, 22.5866,-0.0455554 + 1.532,-15.0232,-9.87854, -20.207, 147.427, 124.838, 22.5422,-0.0462704 + 1.533,-15.0332, -9.9927,-20.1184, 147.525, 124.979, 22.4983,-0.0468995 + 1.534,-15.0432,-10.0776,-19.9835, 147.624, 125.123, 22.4532,-0.0473063 + 1.535,-15.0533,-10.1196, -19.815, 147.723, 125.27, 22.4054,-0.0474016 + 1.536,-15.0635,-10.1121,-19.6288, 147.822, 125.42, 22.3551,-0.0471702 + 1.537,-15.0736,-10.0562,-19.4423, 147.921, 125.571, 22.303,-0.046672 + 1.538,-15.0836,-9.96103, -19.273, 148.018, 125.721, 22.2511,-0.0460211 + 1.539,-15.0935,-9.84175,-19.1368, 148.115, 125.869, 22.2008,-0.0453492 + 1.54,-15.1033,-9.71747,-19.0462, 148.21, 126.013, 22.1528,-0.0447723 + 1.541,-15.1129,-9.60808,-19.0099, 148.305, 126.153, 22.107,-0.0443692 + 1.542,-15.1225,-9.53104, -19.031, 148.398, 126.292, 22.0621,-0.0441786 + 1.543, -15.132,-9.49868,-19.1075, 148.491, 126.43, 22.017,-0.0442068 + 1.544,-15.1415,-9.51614,-19.2321, 148.585, 126.57, 21.9704,-0.044438 + 1.545, -15.151,-9.58058,-19.3929, 148.679, 126.712, 21.9222,-0.0448401 + 1.546,-15.1606,-9.68168,-19.5746, 148.774, 126.856, 21.8725,-0.0453634 + 1.547,-15.1704,-9.80324,-19.7601, 148.87, 127.002, 21.8221,-0.0459383 + 1.548,-15.1802, -9.9258,-19.9319, 148.967, 127.149, 21.7718,-0.0464795 + 1.549,-15.1902,-10.0298,-20.0736, 149.065, 127.297, 21.7221,-0.0468984 + 1.55,-15.2003,-10.0985,-20.1719, 149.165, 127.444, 21.6733,-0.0471229 + 1.551,-15.2104,-10.1211,-20.2176, 149.264, 127.591, 21.6256,-0.047115 + 1.552,-15.2205,-10.0938,-20.2065, 149.363, 127.737, 21.579,-0.0468797 + 1.553,-15.2306,-10.0212,-20.1397, 149.461, 127.882, 21.5331,-0.0464607 + 1.554,-15.2406,-9.91491,-20.0237, 149.558, 128.025, 21.4874,-0.0459267 + 1.555,-15.2504,-9.79186,-19.8696, 149.655, 128.168, 21.441,-0.0453552 + 1.556,-15.2602,-9.67179,-19.6922, 149.749, 128.311, 21.3931,-0.0448221 + 1.557,-15.2698, -9.5739,-19.5084, 149.843, 128.455, 21.3435,-0.0443973 + 1.558,-15.2793,-9.51385,-19.3358, 149.937, 128.6, 21.2924,-0.044144 + 1.559,-15.2888, -9.5012,-19.1908, 150.03, 128.745, 21.241,-0.0441147 + 1.56,-15.2983,-9.53795,-19.0872, 150.123, 128.888, 21.1906,-0.0443392 + 1.561,-15.3079,-9.61819,-19.0349, 150.218, 129.031, 21.1422,-0.0448078 + 1.562,-15.3176,-9.72906,-19.0388, 150.313, 129.171, 21.0963,-0.0454581 + 1.563,-15.3273,-9.85281,-19.0983, 150.41, 129.312, 21.052,-0.0461767 + 1.564,-15.3373,-9.96963,-19.2077, 150.508, 129.453, 21.0076,-0.0468197 + 1.565,-15.3473,-10.0608,-19.3564, 150.606, 129.597, 20.9617,-0.04725 + 1.566,-15.3574,-10.1119, -19.53, 150.706, 129.745, 20.9131,-0.0473763 + 1.567,-15.3675,-10.1146,-19.7118, 150.805, 129.896, 20.862,-0.0471804 + 1.568,-15.3776,-10.0686,-19.8842, 150.904, 130.047, 20.8097,-0.0467192 + 1.569,-15.3876,-9.98125,-20.0307, 151.001, 130.197, 20.7581,-0.0461032 + 1.57,-15.3976,-9.86658,-20.1371, 151.098, 130.344, 20.7086,-0.04546 + 1.571,-15.4074,-9.74293,-20.1934, 151.194, 130.487, 20.6617,-0.0448998 + 1.572,-15.4171,-9.63009,-20.1942, 151.288, 130.627, 20.6168,-0.0444951 + 1.573,-15.4266, -9.5461,-20.1394, 151.382, 130.765, 20.5725,-0.0442789 + 1.574,-15.4361,-9.50437,-20.0346, 151.475, 130.904, 20.527,-0.0442559 + 1.575,-15.4456,-9.51155,-19.8899, 151.569, 131.045, 20.4796,-0.0444166 + 1.576,-15.4552,-9.56647,-19.7195, 151.662, 131.188, 20.43,-0.0447427 + 1.577,-15.4648, -9.6603,-19.5399, 151.757, 131.333, 20.3791,-0.0452039 + 1.578,-15.4745,-9.77802,-19.3685, 151.853, 131.479, 20.3281,-0.0457498 + 1.579,-15.4843,-9.90078,-19.2221, 151.95, 131.626, 20.2781,-0.0463062 + 1.58,-15.4943,-10.0089,-19.1148, 152.048, 131.772, 20.2295,-0.0467829 + 1.581,-15.5044,-10.0852,-19.0569, 152.147, 131.918, 20.1823,-0.0470925 + 1.582,-15.5145,-10.1174, -19.054, 152.247, 132.063, 20.136,-0.0471733 + 1.583,-15.5246,-10.1004,-19.1063, 152.346, 132.209, 20.09,-0.0470057 + 1.584,-15.5347, -10.037,-19.2085, 152.444, 132.354, 20.0437,-0.0466173 + 1.585,-15.5447, -9.9373,-19.3507, 152.542, 132.499, 19.9966,-0.0460738 + 1.586,-15.5545, -9.8173,-19.5187, 152.638, 132.644, 19.9485,-0.0454627 + 1.587,-15.5643,-9.69621,-19.6962, 152.733, 132.789, 19.8992,-0.0448775 + 1.588,-15.5739, -9.5934,-19.8658, 152.827, 132.934, 19.849,-0.0444054 + 1.589,-15.5835, -9.5253,-20.0108, 152.921, 133.078, 19.7985,-0.0441204 + 1.59, -15.593,-9.50277,-20.1171, 153.014, 133.221, 19.7485,-0.044076 + 1.591,-15.6025,-9.52941,-20.1744, 153.107, 133.363, 19.6998,-0.0442957 + 1.592, -15.612,-9.60091,-20.1771, 153.201, 133.504, 19.6528,-0.0447604 + 1.593,-15.6217, -9.7058, -20.125, 153.297, 133.644, 19.6074,-0.0454016 + 1.594,-15.6315, -9.8273,-20.0234, 153.393, 133.784, 19.5625,-0.0461056 + 1.595,-15.6413,-9.94596,-19.8824, 153.491, 133.927, 19.5169,-0.0467347 + 1.596,-15.6513,-10.0428,-19.7159, 153.589, 134.073, 19.4693,-0.0471609 + 1.597,-15.6614,-10.1023,-19.5405, 153.688, 134.222, 19.4193,-0.0473017 + 1.598,-15.6715,-10.1151,-19.3733, 153.787, 134.373, 19.3676,-0.0471423 + 1.599,-15.6817, -10.079,-19.2309, 153.886, 134.524, 19.3157,-0.0467362 + 1.6,-15.6917,-9.99994,-19.1274, 153.984, 134.673, 19.2653,-0.0461837 + 1.601,-15.7017,-9.89054,-19.0729, 154.081, 134.818, 19.2175,-0.0455973 + 1.602,-15.7115,-9.76833,-19.0726, 154.177, 134.96, 19.1722,-0.0450712 + 1.603,-15.7212,-9.65286,-19.1266, 154.272, 135.099, 19.1281,-0.044665 + 1.604,-15.7308,-9.56259,-19.2293, 154.366, 135.238, 19.0835,-0.0444068 + 1.605,-15.7403,-9.51196,-19.3705, 154.459, 135.378, 19.0368,-0.0443071 + 1.606,-15.7498,-9.50902,-19.5361, 154.552, 135.521, 18.9874,-0.0443727 + 1.607,-15.7593,-9.55423,-19.7096, 154.646, 135.665, 18.9361,-0.0446091 + 1.608,-15.7689,-9.64033,-19.8737, 154.741, 135.811, 18.8842,-0.0450109 + 1.609,-15.7786,-9.75351,-20.0121, 154.836, 135.957, 18.8335,-0.0455451 + 1.61,-15.7884,-9.87565,-20.1111, 154.933, 136.102, 18.7848,-0.0461413 + 1.611,-15.7984,-9.98722, -20.161, 155.031, 136.246, 18.7384,-0.0466974 + 1.612,-15.8084,-10.0704,-20.1567, 155.13, 136.39, 18.6932,-0.0471012 + 1.613,-15.8185,-10.1118,-20.0989, 155.229, 136.534, 18.6479,-0.0472623 + 1.614,-15.8286, -10.105,-19.9934, 155.328, 136.68, 18.6016,-0.0471392 + 1.615,-15.8387, -10.051,-19.8509, 155.427, 136.827, 18.5536,-0.046752 + 1.616,-15.8487,-9.95842,-19.6856, 155.525, 136.974, 18.5042,-0.0461752 + 1.617,-15.8586, -9.8422,-19.5142, 155.621, 137.122, 18.454,-0.0455169 + 1.618,-15.8684,-9.72091,-19.3539, 155.717, 137.268, 18.4037,-0.0448926 + 1.619,-15.8781,-9.61394,-19.2207, 155.811, 137.412, 18.3541,-0.0444038 + 1.62,-15.8876, -9.5384,-19.1279, 155.904, 137.555, 18.3055,-0.0441243 + 1.621,-15.8972,-9.50635,-19.0847, 155.998, 137.696, 18.2579,-0.0440949 + 1.622,-15.9067,-9.52288,-19.0954, 156.091, 137.836, 18.2112,-0.0443202 + 1.623,-15.9162,-9.58533,-19.1589, 156.185, 137.975, 18.1651,-0.0447667 + 1.624,-15.9258,-9.68368,-19.2686, 156.28, 138.116, 18.1189,-0.045364 + 1.625,-15.9356,-9.80217,-19.4134, 156.376, 138.258, 18.0721,-0.0460104 + 1.626,-15.9454,-9.92185,-19.5786, 156.474, 138.403, 18.024,-0.0465907 + 1.627,-15.9554,-10.0236,-19.7476, 156.572, 138.551, 17.9744,-0.0469999 + 1.628,-15.9655, -10.091,-19.9032, 156.671, 138.7, 17.9237,-0.0471692 + 1.629,-15.9756,-10.1135,-20.0299, 156.77, 138.85, 17.8728,-0.0470823 + 1.63,-15.9857,-10.0875,-20.1148, 156.869, 138.999, 17.823,-0.0467751 + 1.631,-15.9958, -10.017,-20.1494, 156.967, 139.146, 17.775,-0.0463202 + 1.632,-16.0057,-9.91352,-20.1304, 157.065, 139.29, 17.7291,-0.0458013 + 1.633,-16.0156,-9.79352,-20.0597, 157.161, 139.431, 17.6844,-0.0452921 + 1.634,-16.0253,-9.67623,-19.9446, 157.256, 139.571, 17.6395,-0.0448468 + 1.635,-16.0349, -9.5804,-19.7969, 157.35, 139.712, 17.5929,-0.0445041 + 1.636,-16.0445,-9.52136,-19.6316, 157.443, 139.855, 17.5438,-0.0442982 + 1.637, -16.054,-9.50853,-19.4656, 157.536, 140, 17.4925,-0.044265 + 1.638,-16.0635,-9.54392,-19.3157, 157.63, 140.145, 17.4405,-0.0444364 + 1.639,-16.0731,-9.62185,-19.1971, 157.724, 140.29, 17.3894,-0.0448218 + 1.64,-16.0828,-9.72983,-19.1219, 157.82, 140.434, 17.3407,-0.0453885 + 1.641,-16.0925,-9.85057,-19.0976, 157.916, 140.576, 17.2946,-0.0460511 + 1.642,-16.1025,-9.96474,-19.1266, 158.014, 140.717, 17.2502,-0.0466833 + 1.643,-16.1125,-10.0541,-19.2059, 158.113, 140.86, 17.2057,-0.047148 + 1.644,-16.1226,-10.1043,-19.3273, 158.212, 141.005, 17.1596,-0.0473382 + 1.645,-16.1327,-10.1075,-19.4782, 158.311, 141.153, 17.111,-0.04721 + 1.646,-16.1428, -10.063,-19.6433, 158.41, 141.303, 17.0603,-0.0467957 + 1.647,-16.1528,-9.97816,-19.8055, 158.508, 141.453, 17.0087,-0.0461911 + 1.648,-16.1627,-9.86642,-19.9484, 158.604, 141.601, 16.9578,-0.0455238 + 1.649,-16.1725,-9.74573,-20.0572, 158.7, 141.746, 16.9087,-0.0449184 + 1.65,-16.1822,-9.63539, -20.121, 158.795, 141.889, 16.8616,-0.0444684 + 1.651,-16.1918,-9.55304,-20.1332, 158.888, 142.028, 16.8159,-0.0442267 + 1.652,-16.2013,-9.51185,-20.0926, 158.982, 142.167, 16.7704,-0.0442079 + 1.653,-16.2108,-9.51837,-20.0037, 159.075, 142.306, 16.7242,-0.044399 + 1.654,-16.2204,-9.57154,-19.8755, 159.169, 142.447, 16.6767,-0.0447672 + 1.655, -16.23,-9.66281,-19.7214, 159.264, 142.591, 16.6277,-0.0452625 + 1.656,-16.2397,-9.77757,-19.5572, 159.36, 142.736, 16.5779,-0.0458186 + 1.657,-16.2495,-9.89745,-19.3999, 159.457, 142.883, 16.5278,-0.0463554 + 1.658,-16.2595,-10.0033,-19.2657, 159.555, 143.03, 16.478,-0.0467892 + 1.659,-16.2695,-10.0781,-19.1684, 159.654, 143.178, 16.4291,-0.0470485 + 1.66,-16.2796, -10.11,-19.1179, 159.753, 143.325, 16.3812,-0.0470905 + 1.661,-16.2898,-10.0939,-19.1194, 159.852, 143.471, 16.3343,-0.0469105 + 1.662,-16.2998,-10.0324,-19.1726, 159.95, 143.616, 16.288,-0.0465407 + 1.663,-16.3098,-9.93538, -19.272, 160.048, 143.76, 16.2419,-0.0460405 + 1.664,-16.3197,-9.81834,-19.4071, 160.144, 143.903, 16.1953,-0.0454826 + 1.665,-16.3295,-9.70004, -19.564, 160.239, 144.047, 16.1474,-0.0449429 + 1.666,-16.3391,-9.59939,-19.7262, 160.333, 144.191, 16.098,-0.0444948 + 1.667,-16.3487, -9.5325,-19.8771, 160.427, 144.335, 16.0474,-0.0442064 + 1.668,-16.3582,-9.51003,-20.0008, 160.52, 144.48, 15.9965,-0.044135 + 1.669,-16.3677,-9.53555,-20.0848, 160.614, 144.623, 15.9466,-0.0443149 + 1.67,-16.3772,-9.60496,-20.1202, 160.708, 144.765, 15.8985,-0.0447409 + 1.671,-16.3869,-9.70713,-20.1036, 160.803, 144.905, 15.8525,-0.0453557 + 1.672,-16.3967,-9.82568,-20.0366, 160.9, 145.046, 15.8077,-0.0460512 + 1.673,-16.4065,-9.94166,-19.9265, 160.997, 145.188, 15.7627,-0.0466881 + 1.674,-16.4165,-10.0365,-19.7847, 161.096, 145.332, 15.716,-0.047132 + 1.675,-16.4266,-10.0951,-19.6261, 161.195, 145.48, 15.6669,-0.0472915 + 1.676,-16.4367, -10.108,-19.4673, 161.294, 145.631, 15.6157,-0.0471449 + 1.677,-16.4468,-10.0733,-19.3248, 161.393, 145.782, 15.5638,-0.046743 + 1.678,-16.4569,-9.99642,-19.2134, 161.491, 145.932, 15.5129,-0.0461876 + 1.679,-16.4668,-9.88982,-19.1448, 161.588, 146.078, 15.4644,-0.0455965 + 1.68,-16.4767,-9.77051,-19.1261, 161.684, 146.22, 15.4183,-0.0450689 + 1.681,-16.4864,-9.65759,-19.1591, 161.778, 146.36, 15.3739,-0.0446678 + 1.682, -16.496,-9.56911,-19.2403, 161.872, 146.499, 15.3293,-0.0444203 + 1.683,-16.5055,-9.51922,-19.3611, 161.966, 146.638, 15.2829,-0.044333 + 1.684, -16.515,-9.51587,-19.5087, 162.059, 146.78, 15.2341,-0.0444069 + 1.685,-16.5245,-9.55957,-19.6676, 162.153, 146.925, 15.1832,-0.0446432 + 1.686,-16.5341, -9.6433,-19.8212, 162.247, 147.071, 15.1316,-0.0450348 + 1.687,-16.5438,-9.75364,-19.9532, 162.343, 147.217, 15.0809,-0.0455512 + 1.688,-16.5536,-9.87294,-20.0499, 162.44, 147.362, 15.0321,-0.0461273 + 1.689,-16.5636,-9.98209,-20.1011, 162.538, 147.506, 14.9854,-0.0466665 + 1.69,-16.5736,-10.0637,-20.1016, 162.636, 147.65, 14.9399,-0.0470609 + 1.691,-16.5837,-10.1046,-20.0514, 162.736, 147.794, 14.8945,-0.0472217 + 1.692,-16.5938,-10.0984,-19.9559, 162.835, 147.94, 14.848,-0.0471057 + 1.693,-16.6039,-10.0461,-19.8251, 162.933, 148.086, 14.8,-0.0467301 + 1.694,-16.6139,-9.95601,-19.6731, 163.031, 148.234, 14.7506,-0.0461664 + 1.695,-16.6238,-9.84265,-19.5158, 163.127, 148.381, 14.7005,-0.0455211 + 1.696,-16.6336,-9.72414,-19.3699, 163.223, 148.528, 14.6504,-0.0449093 + 1.697,-16.6432,-9.61942,-19.2508, 163.317, 148.672, 14.601,-0.0444324 + 1.698,-16.6528,-9.54526, -19.171, 163.411, 148.814, 14.5526,-0.0441632 + 1.699,-16.6623,-9.51348,-19.1389, 163.504, 148.955, 14.5053,-0.0441398 + 1.7,-16.6718,-9.52915,-19.1579, 163.598, 149.095, 14.4587,-0.0443634 + 1.701,-16.6814,-9.58974,-19.2257, 163.692, 149.235, 14.4124,-0.0447982 + 1.702, -16.691,-9.68552,-19.3352, 163.787, 149.376, 14.3658,-0.0453738 + 1.703,-16.7008,-9.80115,-19.4747, 163.883, 149.518, 14.3184,-0.0459928 + 1.704,-16.7106,-9.91814,-19.6292, 163.98, 149.664, 14.2699,-0.0465472 + 1.705,-16.7206,-10.0178,-19.7824, 164.078, 149.811, 14.2201,-0.0469405 + 1.706,-16.7307,-10.0841, -19.918, 164.177, 149.961, 14.1697,-0.0471098 + 1.707,-16.7408,-10.1065,-20.0215, 164.277, 150.11, 14.1195,-0.0470394 + 1.708,-16.7509,-10.0815,-20.0821, 164.375, 150.258, 14.0704,-0.0467604 + 1.709,-16.7609,-10.0131,-20.0934, 164.474, 150.404, 14.023,-0.0463356 + 1.71,-16.7709,-9.91226,-20.0542, 164.571, 150.548, 13.9772,-0.0458387 + 1.711,-16.7808, -9.7951,-19.9688, 164.667, 150.69, 13.9322,-0.0453365 + 1.712,-16.7905,-9.68039,-19.8464, 164.762, 150.831, 13.8864,-0.0448824 + 1.713,-16.8001,-9.58648,-19.7001, 164.856, 150.973, 13.8388,-0.0445208 + 1.714,-16.8097,-9.52838,-19.5457, 164.949, 151.116, 13.789,-0.0442955 + 1.715,-16.8192,-9.51535,-19.3995, 165.043, 151.261, 13.7376,-0.0442515 + 1.716,-16.8287,-9.54947,-19.2773, 165.137, 151.406, 13.6861,-0.0444255 + 1.717,-16.8383,-9.62524, -19.192, 165.231, 151.55, 13.6361,-0.0448249 + 1.718,-16.8479,-9.73052,-19.1527, 165.326, 151.692, 13.5886,-0.0454088 + 1.719,-16.8577,-9.84845,-19.1636, 165.423, 151.834, 13.5433,-0.0460814 + 1.72,-16.8676,-9.96016,-19.2233, 165.521, 151.975, 13.4989,-0.0467082 + 1.721,-16.8777,-10.0478,-19.3254, 165.619, 152.118, 13.4537,-0.0471503 + 1.722,-16.8877,-10.0973,-19.4589, 165.718, 152.265, 13.4063,-0.0473072 + 1.723,-16.8979,-10.1009,-19.6094, 165.817, 152.414, 13.3564,-0.0471478 + 1.724,-16.9079,-10.0579,-19.7606, 165.916, 152.564, 13.3049,-0.0467183 + 1.725, -16.918, -9.9753,-19.8964, 166.014, 152.714, 13.2533,-0.0461238 + 1.726,-16.9279, -9.8663,-20.0022, 166.111, 152.862, 13.2034,-0.0454926 + 1.727,-16.9377,-9.74836,-20.0666, 166.206, 153.006, 13.1557,-0.044939 + 1.728,-16.9474,-9.64035,-20.0827, 166.301, 153.146, 13.1101,-0.0445395 + 1.729, -16.957,-9.55953, -20.049, 166.395, 153.285, 13.0652,-0.0443284 + 1.73,-16.9665,-9.51883,-19.9691, 166.488, 153.424, 13.0196,-0.0443081 + 1.731, -16.976,-9.52472,-19.8518, 166.582, 153.565, 12.9722,-0.0444645 + 1.732,-16.9856,-9.57624,-19.7097, 166.675, 153.708, 12.9229,-0.0447763 + 1.733,-16.9952,-9.66512,-19.5583, 166.77, 153.853, 12.8724,-0.0452138 + 1.734,-17.0049,-9.77713,-19.4139, 166.866, 153.999, 12.8218,-0.0457314 + 1.735,-17.0147,-9.89432,-19.2921, 166.963, 154.145, 12.772,-0.0462627 + 1.736,-17.0247,-9.99797, -19.206, 167.061, 154.291, 12.7238,-0.0467247 + 1.737,-17.0347,-10.0715, -19.165, 167.16, 154.436, 12.6768,-0.0470333 + 1.738,-17.0448,-10.1031,-19.1732, 167.259, 154.582, 12.6306,-0.0471244 + 1.739,-17.0549,-10.0879,-19.2299, 167.358, 154.727, 12.5843,-0.0469726 + 1.74, -17.065,-10.0282,-19.3287, 167.457, 154.873, 12.5374,-0.0465989 + 1.741, -17.075,-9.93362,-19.4589, 167.554, 155.018, 12.4895,-0.0460654 + 1.742,-17.0849,-9.81934,-19.6062, 167.65, 155.164, 12.4407,-0.0454614 + 1.743,-17.0946,-9.70363,-19.7547, 167.746, 155.31, 12.3911,-0.0448851 + 1.744,-17.1043,-9.60501,-19.8882, 167.84, 155.454, 12.3412,-0.0444292 + 1.745,-17.1138,-9.53923,-19.9923, 167.933, 155.598, 12.2916,-0.0441686 + 1.746,-17.1233,-9.51679,-20.0557, 168.027, 155.74, 12.2429,-0.0441509 + 1.747,-17.1329,-9.54128,-20.0715, 168.12, 155.881, 12.1953,-0.0443881 + 1.748,-17.1424,-9.60873,-20.0381, 168.215, 156.021, 12.1488,-0.0448489 + 1.749,-17.1521,-9.70833,-19.9593, 168.31, 156.161, 12.103,-0.0454576 + 1.75,-17.1618,-9.82415,-19.8436, 168.406, 156.303, 12.0568,-0.0461038 + 1.751,-17.1717,-9.93763,-19.7039, 168.504, 156.448, 12.0094,-0.0466645 + 1.752,-17.1817,-10.0306,-19.5553, 168.602, 156.595, 11.9603,-0.0470338 + 1.753,-17.1918,-10.0883,-19.4141, 168.701, 156.744, 11.9098,-0.0471498 + 1.754,-17.2019,-10.1014,-19.2958, 168.8, 156.894, 11.8588,-0.0470096 + 1.755, -17.212,-10.0679,-19.2131, 168.899, 157.044, 11.8086,-0.0466633 + 1.756, -17.222,-9.99316,-19.1751, 168.997, 157.19, 11.7604,-0.0461925 + 1.757, -17.232,-9.88916,-19.1858, 169.094, 157.334, 11.7143,-0.0456828 + 1.758,-17.2418,-9.77257,-19.2441, 169.19, 157.475, 11.6694,-0.0452028 + 1.759,-17.2515,-9.66202,-19.3433, 169.285, 157.615, 11.6244,-0.0447979 + 1.76,-17.2611,-9.57521,-19.4727, 169.379, 157.756, 11.5776,-0.0444986 + 1.761,-17.2707,-9.52601,-19.6179, 169.472, 157.899, 11.5284,-0.0443338 + 1.762,-17.2802,-9.52225, -19.763, 169.565, 158.044, 11.4772,-0.0443371 + 1.763,-17.2897,-9.56453,-19.8921, 169.659, 158.189, 11.4255,-0.0445383 + 1.764,-17.2993,-9.64605, -19.991, 169.754, 158.334, 11.3749,-0.0449436 + 1.765, -17.309,-9.75374, -20.049, 169.85, 158.477, 11.3267,-0.0455147 + 1.766,-17.3188,-9.87037,-20.0597, 169.946, 158.619, 11.2809,-0.0461605 + 1.767,-17.3288,-9.97728, -20.022, 170.044, 158.761, 11.2364,-0.0467523 + 1.768,-17.3388,-10.0574,-19.9401, 170.143, 158.904, 11.1914,-0.0471571 + 1.769,-17.3489,-10.0979,-19.8232, 170.242, 159.05, 11.1445,-0.0472792 + 1.77, -17.359,-10.0923,-19.6842, 170.341, 159.199, 11.0951,-0.0470909 + 1.771,-17.3691,-10.0415,-19.5384, 170.44, 159.349, 11.0441,-0.0466404 + 1.772,-17.3791,-9.95379, -19.402, 170.537, 159.498, 10.9927,-0.0460333 + 1.773, -17.389, -9.8431,-19.2899, 170.634, 159.646, 10.9425,-0.0453986 + 1.774,-17.3987,-9.72717,-19.2145, 170.729, 159.79, 10.8944,-0.0448515 + 1.775,-17.4084,-9.62456, -19.184, 170.824, 159.931, 10.8482,-0.0444704 + 1.776, -17.418,-9.55168,-19.2017, 170.917, 160.07, 10.8029,-0.0442905 + 1.777,-17.4275,-9.52015,-19.2657, 171.011, 160.209, 10.7572,-0.044313 + 1.778, -17.437, -9.535,-19.3687, 171.104, 160.35, 10.7101,-0.0445183 + 1.779,-17.4466,-9.59383,-19.4992, 171.198, 160.492, 10.6613,-0.0448754 + 1.78,-17.4562,-9.68721,-19.6429, 171.293, 160.637, 10.6113,-0.0453429 + 1.781, -17.466,-9.80017,-19.7837, 171.389, 160.783, 10.561,-0.0458657 + 1.782,-17.4758,-9.91465, -19.906, 171.487, 160.929, 10.5113,-0.0463736 + 1.783,-17.4858,-10.0123,-19.9964, 171.585, 161.076, 10.4626,-0.0467877 + 1.784,-17.4958,-10.0776,-20.0448, 171.684, 161.222, 10.4152,-0.0470356 + 1.785,-17.5059, -10.1, -20.046, 171.783, 161.367, 10.3685,-0.047068 + 1.786, -17.516, -10.076,-19.9998, 171.882, 161.513, 10.3221,-0.0468731 + 1.787,-17.5261,-10.0095,-19.9116, 171.98, 161.658, 10.2753,-0.0464791 + 1.788,-17.5361, -9.9111,-19.7912, 172.077, 161.803, 10.2278,-0.0459485 + 1.789,-17.5459, -9.7966,-19.6519, 172.173, 161.949, 10.1794,-0.0453651 + 1.79,-17.5557, -9.6843,-19.5095, 172.268, 162.093, 10.13,-0.0448197 + 1.791,-17.5653,-9.59217,-19.3796, 172.362, 162.238, 10.0801,-0.0443989 + 1.792,-17.5748,-9.53494,-19.2768, 172.456, 162.381, 10.0303,-0.0441741 + 1.793,-17.5844,-9.52173,-19.2125, 172.549, 162.524, 9.98131,-0.0441917 + 1.794,-17.5939,-9.55465,-19.1937, 172.643, 162.665, 9.93353,-0.0444616 + 1.795,-17.6035,-9.62839,-19.2226, 172.738, 162.806, 9.88703,-0.0449485 + 1.796,-17.6131,-9.73114,-19.2957, 172.833, 162.946, 9.84125,-0.0455706 + 1.797,-17.6229,-9.84644,-19.4048, 172.93, 163.088, 9.7952,-0.0462117 + 1.798,-17.6328,-9.95586,-19.5377, 173.027, 163.233, 9.74789,-0.0467464 + 1.799,-17.6428,-10.0419,-19.6796, 173.126, 163.38, 9.69878,-0.0470723 + 1.8,-17.6529,-10.0908,-19.8145, 173.225, 163.529, 9.64817,-0.0471368 + 1.801, -17.663,-10.0947,-19.9273, 173.324, 163.68, 9.59714,-0.0469483 + 1.802,-17.6731,-10.0531,-20.0055, 173.422, 163.829, 9.54706,-0.0465675 + 1.803,-17.6831,-9.97265,-20.0404, 173.52, 163.975, 9.49897,-0.0460816 + 1.804,-17.6931,-9.86622,-20.0281, 173.617, 164.118, 9.45297,-0.0455762 + 1.805,-17.7029,-9.75085,-19.9701, 173.713, 164.259, 9.40814,-0.0451151 + 1.806,-17.7126,-9.64501,-19.8729, 173.807, 164.4, 9.36293,-0.0447383 + 1.807,-17.7222,-9.56562,-19.7476, 173.901, 164.541, 9.31589,-0.0444719 + 1.808,-17.7317,-9.52536,-19.6083, 173.995, 164.684, 9.26643,-0.0443429 + 1.809,-17.7412,-9.53065,-19.4706, 174.088, 164.829, 9.21516,-0.0443833 + 1.81,-17.7508,-9.58063,-19.3499, 174.182, 164.974, 9.16359,-0.04462 + 1.811,-17.7604,-9.66726,-19.2599, 174.277, 165.118, 9.1134,-0.0450534 + 1.812,-17.7701,-9.77668,-19.2105, 174.373, 165.262, 9.06559,-0.0456371 + 1.813,-17.7799,-9.89137,-19.2074, 174.47, 165.404, 9.02002,-0.0462736 + 1.814,-17.7899,-9.99298,-19.2506, 174.568, 165.546, 8.97541,-0.0468317 + 1.815,-17.7999,-10.0653,-19.3354, 174.667, 165.689, 8.93007,-0.0471837 + 1.816, -17.81,-10.0967,-19.4521, 174.766, 165.836, 8.88267,-0.0472451 + 1.817,-17.8201,-10.0822,-19.5874, 174.865, 165.985, 8.83296,-0.0470028 + 1.818,-17.8302,-10.0242,-19.7261, 174.963, 166.135, 8.78177,-0.046518 + 1.819,-17.8401,-9.93199,-19.8525, 175.06, 166.284, 8.73063,-0.0459032 + 1.82, -17.85, -9.8203,-19.9525, 175.157, 166.43, 8.68093,-0.0452864 + 1.821,-17.8598,-9.70702,-20.0147, 175.252, 166.574, 8.63332,-0.0447759 + 1.822,-17.8694,-9.61028,-20.0321, 175.346, 166.714, 8.58743,-0.0444396 + 1.823, -17.879,-9.54553, -20.003, 175.44, 166.853, 8.5421,-0.0443033 + 1.824,-17.8885,-9.52313,-19.9306, 175.533, 166.993, 8.49605,-0.0443616 + 1.825,-17.8981,-9.54662,-19.8232, 175.627, 167.134, 8.44843,-0.0445923 + 1.826,-17.9076,-9.61223, -19.693, 175.721, 167.277, 8.39918,-0.0449641 + 1.827,-17.9173,-9.70944,-19.5549, 175.816, 167.422, 8.34896,-0.0454363 + 1.828, -17.927,-9.82268,-19.4244, 175.913, 167.568, 8.29874,-0.0459539 + 1.829,-17.9369,-9.93383,-19.3164, 176.01, 167.714, 8.24938,-0.0464465 + 1.83,-17.9469,-10.0251, -19.243, 176.109, 167.86, 8.20126,-0.0468355 + 1.831, -17.957,-10.0819,-19.2126, 176.207, 168.006, 8.15424,-0.0470496 + 1.832,-17.9671,-10.0952,-19.2284, 176.307, 168.152, 8.10778,-0.0470431 + 1.833,-17.9772,-10.0629,-19.2887, 176.405, 168.297, 8.06124,-0.046809 + 1.834,-17.9872,-9.99012,-19.3865, 176.503, 168.443, 8.0141,-0.046382 + 1.835,-17.9971,-9.88858,-19.5106, 176.6, 168.588, 7.96605,-0.045831 + 1.836, -18.007,-9.77452,-19.6469, 176.696, 168.734, 7.9171,-0.0452456 + 1.837,-18.0167, -9.6662,-19.7798, 176.791, 168.879, 7.86751,-0.0447201 + 1.838,-18.0263,-9.58094,-19.8943, 176.885, 169.023, 7.81779,-0.0443404 + 1.839,-18.0359,-9.53237,-19.9773, 176.978, 169.166, 7.76849,-0.0441724 + 1.84,-18.0454,-9.52823,-20.0195, 177.072, 169.308, 7.72014,-0.0442517 + 1.841,-18.0549,-9.56916, -20.016, 177.166, 169.448, 7.67293,-0.0445743 + 1.842,-18.0645, -9.6486,-19.9674, 177.26, 169.589, 7.62664,-0.0450909 + 1.843,-18.0742,-9.75381,-19.8793, 177.356, 169.73, 7.58057,-0.0457113 + 1.844, -18.084,-9.86795,-19.7618, 177.453, 169.873, 7.53381,-0.0463191 + 1.845,-18.0939,-9.97276,-19.6283, 177.551, 170.018, 7.48565,-0.0467985 + 1.846, -18.104,-10.0515,-19.4942, 177.649, 170.166, 7.43594,-0.0470629 + 1.847,-18.1141,-10.0915,-19.3747, 177.748, 170.316, 7.38528,-0.0470767 + 1.848,-18.1242,-10.0865,-19.2835, 177.847, 170.466, 7.33481,-0.0468597 + 1.849,-18.1342,-10.0373, -19.231, 177.946, 170.614, 7.2857,-0.0464744 + 1.85,-18.1442,-9.95172,-19.2231, 178.043, 170.759, 7.23855,-0.046001 + 1.851,-18.1541,-9.84354,-19.2606, 178.14, 170.901, 7.19303,-0.0455132 + 1.852,-18.1639,-9.73004,-19.3392, 178.235, 171.042, 7.14797,-0.0450658 + 1.853,-18.1736, -9.6294,-19.4498, 178.33, 171.183, 7.10186,-0.0446962 + 1.854,-18.1832, -9.5577,-19.5797, 178.424, 171.326, 7.05365,-0.0444367 + 1.855,-18.1927, -9.5264,-19.7139, 178.517, 171.469, 7.0033,-0.0443239 + 1.856,-18.2022,-9.54047,-19.8371, 178.611, 171.614, 6.95183,-0.0443971 + 1.857,-18.2118,-9.59766,-19.9351, 178.705, 171.759, 6.90089,-0.0446813 + 1.858,-18.2214,-9.68877,-19.9967, 178.8, 171.903, 6.85189,-0.0451647 + 1.859,-18.2312,-9.79923, -20.015, 178.896, 172.045, 6.8053,-0.0457821 + 1.86, -18.241,-9.91135,-19.9878, 178.993, 172.186, 6.76038,-0.0464186 + 1.861, -18.251,-10.0072,-19.9184, 179.091, 172.329, 6.71556,-0.0469362 + 1.862, -18.261,-10.0715,-19.8148, 179.19, 172.474, 6.66922,-0.0472147 + 1.863,-18.2711,-10.0939,-19.6891, 179.289, 172.622, 6.62049,-0.0471905 + 1.864,-18.2812,-10.0708,-19.5556, 179.388, 172.771, 6.56971,-0.0468767 + 1.865,-18.2913,-10.0061,-19.4298, 179.486, 172.922, 6.51823,-0.0463555 + 1.866,-18.3012,-9.91004,-19.3262, 179.583, 173.07, 6.46769,-0.0457484 + 1.867,-18.3111,-9.79803,-19.2567, 179.68, 173.215, 6.41924,-0.0451764 + 1.868,-18.3208,-9.68799,-19.2292, 179.775, 173.357, 6.37294,-0.0447294 + 1.869,-18.3305,-9.59752,-19.2468, 179.869, 173.496, 6.32783,-0.0444536 + 1.87, -18.34,-9.54109,-19.3074, 179.962, 173.636, 6.28242,-0.0443587 + 1.871,-18.3495,-9.52771, -19.404, 180.056, 173.776, 6.23545,-0.0444338 + 1.872,-18.3591,-9.55948,-19.5254, 180.15, 173.918, 6.18649,-0.0446623 + 1.873,-18.3687,-9.63131,-19.6574, 180.244, 174.063, 6.13608,-0.0450244 + 1.874,-18.3783,-9.73169,-19.7848, 180.34, 174.209, 6.08538,-0.0454902 + 1.875,-18.3881,-9.84453,-19.8929, 180.436, 174.355, 6.03558,-0.046009 + 1.876, -18.398,-9.95179,-19.9693, 180.534, 174.5, 5.98734,-0.0465066 + 1.877, -18.408,-10.0363, -20.005, 180.632, 174.645, 5.94055,-0.0468946 + 1.878,-18.4181,-10.0846,-19.9961, 180.731, 174.79, 5.8945,-0.0470918 + 1.879,-18.4282,-10.0889,-19.9437, 180.83, 174.935, 5.84824,-0.0470479 + 1.88,-18.4383,-10.0486,-19.8539, 180.929, 175.081, 5.80103,-0.0467602 + 1.881,-18.4483,-9.97018,-19.7371, 181.026, 175.228, 5.75262,-0.0462771 + 1.882,-18.4582,-9.86615, -19.607, 181.123, 175.374, 5.70327,-0.0456855 + 1.883, -18.468, -9.7532,-19.4787, 181.219, 175.52, 5.65352,-0.0450911 + 1.884,-18.4777,-9.64938, -19.367, 181.314, 175.665, 5.60401,-0.0445961 + 1.885,-18.4873,-9.57132, -19.285, 181.407, 175.808, 5.55521,-0.044282 + 1.886,-18.4969,-9.53147, -19.242, 181.501, 175.949, 5.50731,-0.0441983 + 1.887,-18.5064,-9.53618, -19.243, 181.595, 176.09, 5.46023,-0.0443569 + 1.888,-18.5159,-9.58469,-19.2878, 181.689, 176.23, 5.41362,-0.0447308 + 1.889,-18.5256,-9.66921,-19.3712, 181.783, 176.371, 5.36695,-0.0452565 + 1.89,-18.5353, -9.7762,-19.4833, 181.879, 176.514, 5.31966,-0.0458431 + 1.891,-18.5451,-9.88853,-19.6112, 181.976, 176.659, 5.27136,-0.0463882 + 1.892,-18.5551,-9.98822,-19.7398, 182.074, 176.806, 5.222,-0.0467983 + 1.893,-18.5651,-10.0594,-19.8542, 182.173, 176.954, 5.17199,-0.0470092 + 1.894,-18.5752,-10.0905, -19.941, 182.272, 177.103, 5.12212,-0.0469985 + 1.895,-18.5853,-10.0768,-19.9903, 182.371, 177.251, 5.07319,-0.0467857 + 1.896,-18.5953,-10.0204,-19.9963, 182.469, 177.397, 5.02572,-0.0464203 + 1.897,-18.6053,-9.93036,-19.9584, 182.567, 177.541, 4.97955,-0.0459644 + 1.898,-18.6152,-9.82108,-19.8811, 182.663, 177.684, 4.93388,-0.0454784 + 1.899, -18.625,-9.71006,-19.7735, 182.758, 177.826, 4.88755,-0.0450156 + 1.9,-18.6346,-9.61505,-19.6481, 182.852, 177.968, 4.83961,-0.0446256 + 1.901,-18.6442,-9.55124,-19.5197, 182.946, 178.112, 4.78984,-0.04436 + 1.902,-18.6537,-9.52881,-19.4033, 183.04, 178.256, 4.73892,-0.0442719 + 1.903,-18.6632,-9.55133,-19.3124, 183.133, 178.401, 4.6882,-0.0444038 + 1.904,-18.6728,-9.61516,-19.2578, 183.228, 178.544, 4.63898,-0.0447664 + 1.905,-18.6825,-9.71006,-19.2456, 183.323, 178.686, 4.59192,-0.04532 + 1.906,-18.6922,-9.82083,-19.2772, 183.419, 178.827, 4.54657,-0.0459697 + 1.907,-18.7021,-9.92973, -19.349, 183.517, 178.969, 4.50161,-0.0465826 + 1.908,-18.7121,-10.0193,-19.4523, 183.615, 179.113, 4.45546,-0.0470233 + 1.909,-18.7222,-10.0753,-19.5752, 183.714, 179.26, 4.40708,-0.0471954 + 1.91,-18.7322,-10.0887, -19.703, 183.813, 179.409, 4.35657,-0.0470714 + 1.911,-18.7423,-10.0573,-19.8208, 183.911, 179.56, 4.30509,-0.0466974 + 1.912,-18.7524,-9.98627,-19.9148, 184.009, 179.709, 4.25432,-0.0461728 + 1.913,-18.7623,-9.88689,-19.9741, 184.106, 179.855, 4.20559,-0.045613 + 1.914,-18.7721,-9.77505,-19.9916, 184.202, 179.998, 4.15922,-0.0451147 + 1.915,-18.7819,-9.66863,-19.9655, 184.297, 180.138, 4.1143,-0.0447361 + 1.916,-18.7915,-9.58461,-19.8988, 184.391, 180.277, 4.06924,-0.0444994 + 1.917, -18.801,-9.53638,-19.7995, 184.485, 180.418, 4.02252,-0.0444073 + 1.918,-18.8105, -9.5316,-19.6792, 184.578, 180.56, 3.97348,-0.0444608 + 1.919,-18.8201,-9.57096,-19.5522, 184.672, 180.705, 3.92265,-0.0446653 + 1.92,-18.8297,-9.64809,-19.4335, 184.767, 180.85, 3.87142,-0.0450217 + 1.921,-18.8394,-9.75057,-19.3369, 184.862, 180.996, 3.82131,-0.0455077 + 1.922,-18.8492,-9.86192,-19.2739, 184.959, 181.14, 3.77325,-0.0460631 + 1.923,-18.8591,-9.96426,-19.2518, 185.057, 181.283, 3.7271,-0.0465916 + 1.924,-18.8691,-10.0411,-19.2731, 185.155, 181.427, 3.68181,-0.0469809 + 1.925,-18.8792,-10.0801,-19.3353, 185.254, 181.571, 3.63598,-0.0471364 + 1.926,-18.8893, -10.075,-19.4309, 185.353, 181.718, 3.58857,-0.0470126 + 1.927,-18.8993,-10.0264,-19.5487, 185.452, 181.866, 3.53938,-0.0466295 + 1.928,-18.9093,-9.94194,-19.6747, 185.549, 182.014, 3.48904,-0.0460668 + 1.929,-18.9192,-9.83508,-19.7939, 185.646, 182.161, 3.43866,-0.0454397 + 1.93, -18.929,-9.72273,-19.8924, 185.741, 182.307, 3.38927,-0.044867 + 1.931,-18.9387,-9.62264,-19.9585, 185.835, 182.45, 3.34132,-0.0444433 + 1.932,-18.9482,-9.55061,-19.9845, 185.929, 182.59, 3.29459,-0.0442244 + 1.933,-18.9578, -9.5179,-19.9672, 186.022, 182.73, 3.24837,-0.0442262 + 1.934,-18.9673,-9.52943, -19.909, 186.116, 182.87, 3.20181,-0.0444314 + 1.935,-18.9768,-9.58304,-19.8166, 186.21, 183.011, 3.15432,-0.0447994 + 1.936,-18.9864,-9.66978,-19.7012, 186.305, 183.154, 3.10576,-0.0452725 + 1.937,-18.9962,-9.77537,-19.5763, 186.401, 183.298, 3.0564,-0.0457816 + 1.938, -19.006,-9.88248,-19.4569, 186.498, 183.445, 3.00677,-0.0462516 + 1.939,-19.0159, -9.9735, -19.357, 186.595, 183.591, 2.95744,-0.0466106 + 1.94,-19.0259,-10.0333,-19.2885, 186.694, 183.738, 2.90883,-0.0468008 + 1.941, -19.036,-10.0519,-19.2595, 186.792, 183.885, 2.8611,-0.0467896 + 1.942, -19.046,-10.0255,-19.2733, 186.891, 184.03, 2.81414,-0.0465754 + 1.943, -19.056,-9.95764,-19.3282, 186.988, 184.175, 2.76753,-0.0461865 + 1.944, -19.066,-9.85847,-19.4177, 187.085, 184.319, 2.72073,-0.0456757 + 1.945,-19.0758,-9.74292, -19.531, 187.181, 184.462, 2.67317,-0.045111 + 1.946,-19.0854, -9.6285,-19.6547, 187.275, 184.606, 2.62453,-0.0445685 + 1.947, -19.095,-9.53239, -19.774, 187.369, 184.75, 2.57493,-0.0441253 + 1.948,-19.1045,-9.46875,-19.8748, 187.462, 184.893, 2.52492,-0.0438519 + 1.949, -19.114,-9.44638,-19.9451, 187.554, 185.035, 2.47535,-0.0438002 + 1.95,-19.1234,-9.46737,-19.9765, 187.647, 185.176, 2.42696,-0.0439888 + 1.951,-19.1329,-9.52669,-19.9655, 187.741, 185.316, 2.38003,-0.0443907 + 1.952,-19.1425,-9.61302,-19.9133, 187.835, 185.456, 2.33413,-0.0449287 + 1.953,-19.1521,-9.71056,-19.8263, 187.93, 185.596, 2.28828,-0.0454878 + 1.954,-19.1619,-9.80151,-19.7149, 188.026, 185.739, 2.24135,-0.0459412 + 1.955,-19.1717,-9.86892,-19.5924, 188.123, 185.884, 2.19267,-0.0461843 + 1.956,-19.1816,-9.89938,-19.4734, 188.22, 186.032, 2.14241,-0.0461633 + 1.957,-19.1915,-9.88516,-19.3721, 188.317, 186.18, 2.09157,-0.0458862 + 1.958,-19.2014,-9.82537,-19.3006, 188.414, 186.327, 2.04153,-0.045413 + 1.959,-19.2112,-9.72613,-19.2674, 188.509, 186.471, 1.99336,-0.0448292 + 1.96,-19.2208,-9.59955,-19.2763, 188.603, 186.612, 1.94721,-0.0442169 + 1.961,-19.2304,-9.46174,-19.3263, 188.696, 186.75, 1.90224,-0.0436352 + 1.962,-19.2398,-9.33022,-19.4113, 188.788, 186.888, 1.85694,-0.0431192 + 1.963, -19.249,-9.22109,-19.5211, 188.878, 187.025, 1.80992,-0.0426922 + 1.964,-19.2582,-9.14642,-19.6425, 188.968, 187.165, 1.76067,-0.04238 + 1.965,-19.2673,-9.11228,-19.7609, 189.057, 187.305, 1.70982,-0.0422154 + 1.966,-19.2764,-9.11775,-19.8623, 189.147, 187.445, 1.65886,-0.0422269 + 1.967,-19.2856,-9.15501,-19.9345, 189.236, 187.585, 1.6094,-0.0424154 + 1.968,-19.2947,-9.21059,-19.9689, 189.327, 187.722, 1.5623,-0.0427335 + 1.969, -19.304,-9.26744,-19.9615, 189.418, 187.857, 1.51727,-0.0430817 + 1.97,-19.3133,-9.30767,-19.9131, 189.509, 187.993, 1.47299,-0.0433271 + 1.971,-19.3226,-9.31532,-19.8297, 189.6, 188.129, 1.4278,-0.0433422 + 1.972,-19.3319,-9.27886,-19.7212, 189.691, 188.268, 1.38059,-0.0430454 + 1.973,-19.3412,-9.19304,-19.6009, 189.782, 188.408, 1.33134,-0.0424282 + 1.974,-19.3503,-9.05961,-19.4831, 189.87, 188.548, 1.28113,-0.0415551 + 1.975,-19.3593,-8.88701,-19.3819, 189.958, 188.685, 1.2316,-0.0405381 + 1.976,-19.3681,-8.68895,-19.3095, 190.043, 188.819, 1.18406,-0.0394983 + 1.977,-19.3767,-8.48217,-19.2746, 190.126, 188.949, 1.13891,-0.0385314 + 1.978, -19.385, -8.2837,-19.2812, 190.207, 189.074, 1.09544,-0.0376897 + 1.979,-19.3932,-8.10805,-19.3285, 190.287, 189.198, 1.05231,-0.0369859 + 1.98,-19.4012,-7.96484,-19.4108, 190.365, 189.32, 1.00821,-0.0364085 + 1.981,-19.4092,-7.85721,-19.5181, 190.442, 189.444,0.962577,-0.0359391 + 1.982, -19.417,-7.78124,-19.6375, 190.518, 189.567,0.915838,-0.0355579 + 1.983,-19.4247,-7.72652,-19.7545, 190.594, 189.69,0.869141,-0.0352389 + 1.984,-19.4324,-7.67774,-19.8551, 190.67, 189.811,0.823786,-0.0349378 + 1.985,-19.4401,-7.61707,-19.9273, 190.744, 189.929,0.780614,-0.0345855 + 1.986,-19.4476,-7.52698,-19.9622, 190.818, 190.044,0.739686,-0.0340938 + 1.987,-19.4551,-7.39293,-19.9559, 190.891, 190.157,0.700374,-0.0333742 + 1.988,-19.4624,-7.20564, -19.909, 190.961, 190.267,0.661768,-0.0323638 + 1.989,-19.4695,-6.96252,-19.8274, 191.03, 190.375,0.623173,-0.0310453 + 1.99,-19.4764,-6.66799,-19.7209, 191.095, 190.481,0.584435,-0.0294552 + 1.991,-19.4829,-6.33273,-19.6025, 191.157, 190.583,0.545989,-0.0276743 + 1.992, -19.489,-5.97188,-19.4863, 191.216, 190.681, 0.50864,-0.0258073 + 1.993,-19.4948,-5.60259,-19.3866, 191.271, 190.774,0.473228,-0.0239582 + 1.994,-19.5002,-5.24119,-19.3152, 191.322, 190.86,0.440353,-0.0222097 + 1.995,-19.5053,-4.90052,-19.2808, 191.37, 190.939,0.410241,-0.0206108 + 1.996, -19.51,-4.58789,-19.2874, 191.415, 191.013,0.382777,-0.0191723 + 1.997,-19.5145,-4.30379,-19.3343, 191.457, 191.082,0.357644,-0.0178678 + 1.998,-19.5186,-4.04184,-19.4156, 191.497, 191.146,0.334499,-0.0166396 + 1.999,-19.5226,-3.78978,-19.5215, 191.534, 191.206,0.313129,-0.0154069 + 2,-19.5262,-3.53137,-19.6392, 191.569, 191.261,0.293581,-0.0140795 diff --git a/test/test_model/test_model_solver/test_model_solver_dynamic_implicit.verified b/test/test_model/test_model_solver/test_model_solver_dynamic_implicit.verified index 5f3cf45e8..daa6188c9 100644 --- a/test/test_model/test_model_solver/test_model_solver_dynamic_implicit.verified +++ b/test/test_model/test_model_solver/test_model_solver_dynamic_implicit.verified @@ -1,2001 +1,2002 @@ - time, disp, velo, reac, wext, epot, ekin - 0.001, 0.00160554, 3.21108, -4.63166e-124, 0.0315007, 0.000421884, 0.00745328 - 0.002, 0.00768365, 8.94514, 3.6274e-122, 0.119252, 0.00923947, 0.0582619 - 0.003, 0.0185743, 12.8361, -1.34272e-120, 0.245175, 0.0500032, 0.124335 - 0.004, 0.0321491, 14.3135, 3.11136e-119, 0.38559, 0.133399, 0.174109 - 0.005, 0.0460795, 13.5474, -5.0335e-118, 0.51849, 0.234717, 0.209449 - 0.006, 0.0585263, 11.346, 5.99258e-117, 0.629795, 0.314663, 0.251605 - 0.007, 0.0686193, 8.84008, -5.37549e-116, 0.716516, 0.357329, 0.307951 - 0.008, 0.0765765, 7.07424, 3.63579e-115, 0.785914, 0.378845, 0.364495 - 0.009, 0.0834428, 6.65839, -1.79972e-114, 0.851233, 0.40172, 0.408979 - 0.01, 0.0905724, 7.60083, 5.86967e-114, 0.925797, 0.432547, 0.448093 - 0.011, 0.0990598, 9.37405, -7.11294e-114, 1.01776, 0.468325, 0.495577 - 0.012, 0.109333, 11.1731, -4.0046e-113, 1.12737, 0.51311, 0.551576 - 0.013, 0.121048, 12.2569, 2.41002e-112, 1.24761, 0.575866, 0.603745 - 0.014, 0.133295, 12.2362, -3.99743e-112, 1.36764, 0.653347, 0.646402 - 0.015, 0.145014, 11.2016, -1.24726e-111, 1.47753, 0.726379, 0.688333 - 0.016, 0.155441, 9.65182, 7.09978e-111, 1.57222, 0.778231, 0.738766 - 0.017, 0.164398, 8.26361, -4.7108e-111, 1.65328, 0.811156, 0.793717 - 0.018, 0.172332, 7.60461, -5.27675e-110, 1.72788, 0.839967, 0.84274 - 0.019, 0.180089, 7.90767, 1.29433e-109, 1.80546, 0.873971, 0.884823 - 0.02, 0.18854, 8.99423, 2.35216e-109, 1.89369, 0.912349, 0.929349 - 0.021, 0.198222, 10.37, -1.30016e-108, 1.99542, 0.955119, 0.981561 - 0.022, 0.209129, 11.4454, -3.86934e-109, 2.1077, 1.00872, 1.03496 - 0.023, 0.220744, 11.7838, 9.79393e-108, 2.2233, 1.07604, 1.08158 - 0.024, 0.232274, 11.2763, -4.37506e-108, 2.33392, 1.14676, 1.12397 - 0.025, 0.242998, 10.1718, -6.46089e-107, 2.43371, 1.20504, 1.1709 - 0.026, 0.252563, 8.95862, 5.79402e-107, 2.52159, 1.2458, 1.22397 - 0.027, 0.261118, 8.15093, 4.01703e-106, 2.60155, 1.27819, 1.2755 - 0.028, 0.26923, 8.07318, -4.50952e-106, 2.68075, 1.31285, 1.32042 - 0.029, 0.277633, 8.73153, -2.44714e-105, 2.7664, 1.35192, 1.36378 - 0.03, 0.28691, 9.82286, 2.74261e-105, 2.86277, 1.39391, 1.4128 - 0.031, 0.297258, 10.8726, 1.47916e-104, 2.96943, 1.44229, 1.46593 - 0.032, 0.308413, 11.4394, -1.33837e-104, 3.08165, 1.50218, 1.51548 - 0.033, 0.319783, 11.2995, -8.79512e-104, 3.19249, 1.56979, 1.55941 - 0.034, 0.3307, 10.5338, 4.59906e-104, 3.29583, 1.63209, 1.6042 - 0.035, 0.340709, 9.48422, 5.03226e-103, 3.38887, 1.67962, 1.65485 - 0.036, 0.349752, 8.60241, -1.37042e-104, 3.47326, 1.71582, 1.70737 - 0.037, 0.358181, 8.25632, -2.68965e-102, 3.55426, 1.75083, 1.75506 - 0.038, 0.366598, 8.57758, -1.51455e-102, 3.6384, 1.78976, 1.7987 - 0.039, 0.375593, 9.41252, 1.29199e-101, 3.73074, 1.83153, 1.84517 - 0.04, 0.385497, 10.3946, 1.67395e-101, 3.83271, 1.87697, 1.89688 - 0.041, 0.396246, 11.1043, -5.2315e-101, 3.94164, 1.93103, 1.94827 - 0.042, 0.407423, 11.2481, -1.24553e-100, 4.05199, 1.99454, 1.9944 - 0.043, 0.418436, 10.7786, 1.50696e-100, 4.15773, 2.05858, 2.0384 - 0.044, 0.42878, 9.90922, 7.3403e-100, 4.25493, 2.1119, 2.08655 - 0.045, 0.438243, 9.01742, -3.78046e-101, 4.3434, 2.15258, 2.13871 - 0.046, 0.446993, 8.48169, -3.48984e-99, 4.4266, 2.18846, 2.18867 - 0.047, 0.455494, 8.52131, -3.32365e-99, 4.5102, 2.22684, 2.23368 - 0.048, 0.464308, 9.10711, 1.25884e-98, 4.59954, 2.26842, 2.27857 - 0.049, 0.473852, 9.97915, 2.86088e-98, 4.69743, 2.31239, 2.32822 - 0.05, 0.484222, 10.7616, -2.49741e-98, 4.803, 2.36212, 2.38022 - 0.051, 0.495165, 11.1243, -1.55653e-97, 4.91213, 2.42106, 2.42863 - 0.052, 0.506188, 10.9216, -7.16369e-98, 5.01927, 2.48474, 2.47309 - 0.053, 0.516774, 10.2506, 5.92819e-97, 5.11983, 2.54247, 2.51921 - 0.054, 0.526602, 9.40501, 1.03429e-96, 5.21209, 2.58809, 2.57 - 0.055, 0.535678, 8.74716, -1.24183e-96, 5.2979, 2.62581, 2.62131 - 0.056, 0.544328, 8.55297, -5.96421e-96, 5.38181, 2.66369, 2.6683 - 0.057, 0.553053, 8.89658, -2.54062e-96, 5.46908, 2.70482, 2.71275 - 0.058, 0.562312, 9.62248, 2.14463e-95, 5.56348, 2.74813, 2.76028 - 0.059, 0.572331, 10.4156, 3.93491e-95, 5.66566, 2.79497, 2.81172 - 0.06, 0.583008, 10.9378, -3.38442e-95, 5.77296, 2.84946, 2.86197 - 0.061, 0.593963, 10.9717, -2.06568e-94, 5.88059, 2.9111, 2.9078 - 0.062, 0.604704, 10.5109, -1.5513e-94, 5.9837, 2.9715, 2.95277 - 0.063, 0.614839, 9.75937, 6.02342e-94, 6.07944, 3.02203, 3.00166 - 0.064, 0.624239, 9.04132, 1.48669e-93, 6.16814, 3.06267, 3.05325 - 0.065, 0.633091, 8.66153, -1.84984e-94, 6.25311, 3.10053, 3.10221 - 0.066, 0.64181, 8.77627, -6.07104e-93, 6.3392, 3.14097, 3.14731 - 0.067, 0.650862, 9.32919, -8.40388e-93, 6.43072, 3.18389, 3.19319 - 0.068, 0.660566, 10.0785, 1.05626e-92, 6.52959, 3.22904, 3.24324 - 0.069, 0.670957, 10.7025, 4.82761e-92, 6.63458, 3.27975, 3.29446 - 0.07, 0.681777, 10.9376, 3.48409e-92, 6.74188, 3.33823, 3.34212 - 0.071, 0.69259, 10.6892, -1.27106e-91, 6.84674, 3.39947, 3.38697 - 0.072, 0.70297, 10.0701, -3.3112e-91, 6.94553, 3.45425, 3.43401 - 0.073, 0.712679, 9.34876, -5.60841e-92, 7.03724, 3.49865, 3.48486 - 0.074, 0.721771, 8.83373, 1.13138e-90, 7.1239, 3.53739, 3.53531 - 0.075, 0.730558, 8.7414, 2.0407e-90, 7.20965, 3.57708, 3.58182 - 0.076, 0.739481, 9.10542, -7.85047e-91, 7.29898, 3.61955, 3.62689 - 0.077, 0.748917, 9.76475, -8.6823e-90, 7.39477, 3.66382, 3.67517 - 0.078, 0.759016, 10.4348, -1.15871e-89, 7.49713, 3.7117, 3.72637 - 0.079, 0.769649, 10.8301, 1.16887e-89, 7.60338, 3.76661, 3.77577 - 0.08, 0.780457, 10.7858, 6.08899e-89, 7.70919, 3.82697, 3.82144 - 0.081, 0.791013, 10.3263, 6.18627e-89, 7.81049, 3.88481, 3.86715 - 0.082, 0.801002, 9.65253, -1.0858e-88, 7.90518, 3.93339, 3.91657 - 0.083, 0.810356, 9.05402, -4.0269e-88, 7.994, 3.97405, 3.96766 - 0.084, 0.819275, 8.78487, -3.17809e-88, 8.08018, 4.01332, 4.01589 - 0.085, 0.828145, 8.9558, 8.40766e-88, 8.16803, 4.05512, 4.06112 - 0.086, 0.837368, 9.48877, 2.56208e-87, 8.26112, 4.09892, 4.10778 - 0.087, 0.847188, 10.1525, 1.62284e-87, 8.36071, 4.14497, 4.15808 - 0.088, 0.857596, 10.6626, -5.8573e-87, 8.46531, 4.19649, 4.20865 - 0.089, 0.868329, 10.8034, -1.58934e-86, 8.5713, 4.25467, 4.25576 - 0.09, 0.87899, 10.5192, -8.61031e-87, 8.67449, 4.31404, 4.30098 - 0.091, 0.889218, 9.93585, 3.78662e-86, 8.77196, 4.36661, 4.34874 - 0.092, 0.898838, 9.3052, 9.69294e-86, 8.86324, 4.41017, 4.39956 - 0.093, 0.907939, 8.89663, 4.96045e-86, 8.95052, 4.44972, 4.44929 - 0.094, 0.916828, 8.8819, -2.30243e-85, 9.03765, 4.49072, 4.49549 - 0.095, 0.925901, 9.26307, -5.83404e-85, 9.12852, 4.5341, 4.54112 - 0.096, 0.935469, 9.87346, -3.15268e-85, 9.22538, 4.5791, 4.58997 - 0.097, 0.945631, 10.4504, 1.32154e-84, 9.3279, 4.62787, 4.6409 - 0.098, 0.95623, 10.7483, 3.4646e-84, 9.43334, 4.68315, 4.6896 - 0.099, 0.966926, 10.643, 2.15642e-84, 9.53775, 4.74246, 4.73521 - 0.1, 0.977339, 10.1835, -7.12871e-84, 9.63765, 4.79824, 4.78158 - 0.101, 0.987216, 9.56921, -2.02251e-83, 9.73152, 4.84535, 4.83136 - 0.102, 0.996532, 9.06376, -1.51933e-83, 9.82044, 4.88612, 4.88199 - 0.103, 1.0055, 8.88158, 3.56281e-83, 9.90757, 4.9265, 4.92963 - 0.104, 1.01449, 9.09722, 1.15301e-82, 9.99681, 4.96927, 4.97504 - 0.105, 1.02385, 9.61486, 1.06218e-82, 10.0911, 5.01373, 5.02237 - 0.106, 1.03376, 10.2108, -1.5972e-82, 10.1913, 5.06054, 5.0728 - 0.107, 1.04418, 10.6302, -6.36183e-82, 10.2956, 5.11279, 5.12278 - 0.108, 1.05485, 10.6957, -7.19553e-82, 10.4005, 5.17069, 5.16947 - 0.109, 1.06539, 10.3827, 5.91215e-82, 10.5024, 5.22847, 5.21508 - 0.11, 1.07549, 9.82818, 3.35773e-81, 10.5988, 5.27925, 5.26344 - 0.111, 1.08504, 9.27098, 4.65849e-81, 10.6897, 5.32222, 5.31415 - 0.112, 1.09415, 8.94881, -1.27343e-81, 10.7775, 5.36249, 5.36325 - 0.113, 1.10312, 8.99703, -1.66822e-80, 10.8658, 5.40451, 5.40925 - 0.114, 1.11232, 9.39175, -2.85655e-80, 10.9579, 5.44855, 5.45541 - 0.115, 1.12199, 9.96151, -5.16655e-81, 11.0556, 5.49418, 5.50471 - 0.116, 1.13221, 10.4617, 7.60896e-80, 11.1583, 5.54374, 5.55532 - 0.117, 1.14278, 10.6794, 1.64596e-79, 11.263, 5.59933, 5.60343 - 0.118, 1.15338, 10.5242, 9.53052e-80, 11.3663, 5.65769, 5.64908 - 0.119, 1.16367, 10.0654, -3.03688e-79, 11.465, 5.71171, 5.69605 - 0.12, 1.17346, 9.50155, -8.82604e-79, 11.5582, 5.75765, 5.74608 - 0.121, 1.18274, 9.07402, -8.45059e-79, 11.6472, 5.79861, 5.79623 - 0.122, 1.19176, 8.96418, 9.3237e-79, 11.7352, 5.83992, 5.8434 - 0.123, 1.20085, 9.21632, 4.33913e-78, 11.8256, 5.88344, 5.88906 - 0.124, 1.21032, 9.71984, 5.89976e-78, 11.9209, 5.92841, 5.93697 - 0.125, 1.22031, 10.2578, -9.22181e-79, 12.0216, 5.97594, 5.98743 - 0.126, 1.23074, 10.6003, -1.90356e-77, 12.1256, 6.02883, 6.03685 - 0.127, 1.24134, 10.6026, -3.54316e-77, 12.2296, 6.08643, 6.08325 - 0.128, 1.25178, 10.2666, -1.59614e-77, 12.3303, 6.14277, 6.12928 - 0.129, 1.26178, 9.73819, 7.0172e-77, 12.4258, 6.19205, 6.17812 - 0.13, 1.27127, 9.24456, 1.87197e-76, 12.5165, 6.23463, 6.22865 - 0.131, 1.28039, 8.99617, 1.76361e-76, 12.6048, 6.27557, 6.27718 - 0.132, 1.28944, 9.09717, -1.78754e-76, 12.694, 6.3184, 6.32309 - 0.133, 1.29874, 9.50179, -8.6437e-76, 12.7872, 6.36295, 6.36977 - 0.134, 1.3085, 10.035, -1.2447e-75, 12.8856, 6.40915, 6.41941 - 0.135, 1.31876, 10.4681, -7.97835e-77, 12.9883, 6.45946, 6.46966 - 0.136, 1.3293, 10.617, 3.35221e-75, 13.0925, 6.51527, 6.51728 - 0.137, 1.33982, 10.4202, 7.05442e-75, 13.1947, 6.5727, 6.56304 - 0.138, 1.35001, 9.96419, 4.98646e-75, 13.2925, 6.62516, 6.61055 - 0.139, 1.35971, 9.44566, -9.55045e-75, 13.3851, 6.67019, 6.66073 - 0.14, 1.36898, 9.08647, -3.34611e-74, 13.4743, 6.71141, 6.71041 - 0.141, 1.37804, 9.03885, -4.20176e-74, 13.5629, 6.75351, 6.75721 - 0.142, 1.38722, 9.32093, 6.57437e-75, 13.6544, 6.79762, 6.80316 - 0.143, 1.39679, 9.80992, 1.29744e-73, 13.7506, 6.84304, 6.85158 - 0.144, 1.40684, 10.2955, 2.48944e-73, 13.8516, 6.89125, 6.90198 - 0.145, 1.41727, 10.5704, 1.56268e-73, 13.9553, 6.9447, 6.95088 - 0.146, 1.42782, 10.5185, -3.60298e-73, 14.0585, 7.00193, 6.99709 - 0.147, 1.43816, 10.1644, -1.1721e-72, 14.1582, 7.05693, 7.04354 - 0.148, 1.44807, 9.6613, -1.44269e-72, 14.253, 7.10494, 7.09278 - 0.149, 1.45752, 9.22511, 1.99374e-73, 14.3435, 7.14729, 7.14307 - 0.15, 1.46665, 9.0417, 4.32776e-72, 14.4322, 7.18886, 7.1911 - 0.151, 1.47576, 9.18772, 8.44961e-72, 14.5223, 7.23236, 7.23701 - 0.152, 1.48516, 9.59861, 5.89235e-72, 14.6165, 7.27733, 7.28419 - 0.153, 1.49501, 10.0971, -1.04743e-71, 14.7155, 7.32407, 7.33405 - 0.154, 1.50529, 10.4697, -3.76499e-71, 14.8182, 7.37508, 7.38393 - 0.155, 1.5158, 10.558, -5.05193e-71, 14.9218, 7.43102, 7.43113 - 0.156, 1.52624, 10.3262, -4.9895e-72, 15.0231, 7.48751, 7.47707 - 0.157, 1.53635, 9.87533, 1.24133e-70, 15.12, 7.53858, 7.52509 - 0.158, 1.54598, 9.39942, 2.73127e-70, 15.2122, 7.5829, 7.57531 - 0.159, 1.55523, 9.10194, 2.43408e-70, 15.3015, 7.62444, 7.62452 - 0.16, 1.56434, 9.10886, -2.11394e-70, 15.3908, 7.66723, 7.67105 - 0.161, 1.5736, 9.41532, -1.08576e-69, 15.4832, 7.7118, 7.71735 - 0.162, 1.58325, 9.8885, -1.72622e-69, 15.5802, 7.75764, 7.76619 - 0.163, 1.59336, 10.3252, -7.83048e-70, 15.6815, 7.80652, 7.81646 - 0.164, 1.60379, 10.5391, 2.86931e-69, 15.7849, 7.86046, 7.86486 - 0.165, 1.61428, 10.4402, 8.09323e-69, 15.8873, 7.91724, 7.91098 - 0.166, 1.62454, 10.0725, 9.60204e-69, 15.9861, 7.97097, 7.95787 - 0.167, 1.63437, 9.59491, -7.53522e-70, 16.0802, 8.0179, 8.00741 - 0.168, 1.64377, 9.21208, -2.64859e-68, 16.1706, 8.06015, 8.05741 - 0.169, 1.65292, 9.08704, -5.40838e-68, 16.2598, 8.10232, 8.105 - 0.17, 1.6621, 9.27169, -4.6174e-68, 16.3507, 8.14637, 8.151 - 0.171, 1.67158, 9.68529, 4.13774e-68, 16.4457, 8.1917, 8.19865 - 0.172, 1.6815, 10.1498, 2.06347e-67, 16.5453, 8.23898, 8.24866 - 0.173, 1.69181, 10.4664, 3.31972e-67, 16.648, 8.29064, 8.29812 - 0.174, 1.70229, 10.5006, 1.77673e-67, 16.751, 8.34661, 8.34499 - 0.175, 1.71266, 10.2395, -4.69048e-67, 16.8514, 8.40214, 8.39119 - 0.176, 1.72268, 9.79634, -1.45013e-66, 16.9475, 8.45196, 8.43965 - 0.177, 1.73226, 9.36153, -1.89659e-66, 17.0394, 8.49574, 8.48983 - 0.178, 1.7415, 9.12085, -3.67202e-67, 17.1288, 8.53765, 8.53858 - 0.179, 1.75065, 9.17607, 4.01158e-66, 17.2189, 8.58104, 8.58494 - 0.18, 1.75999, 9.50192, 9.48648e-66, 17.3121, 8.62599, 8.6316 - 0.181, 1.76972, 9.95764, 1.01606e-65, 17.4098, 8.67225, 8.6808 - 0.182, 1.77987, 10.3477, -2.11283e-66, 17.5113, 8.72178, 8.73086 - 0.183, 1.7903, 10.5058, -2.99801e-65, 17.6143, 8.77611, 8.77882 - 0.184, 1.80073, 10.3657, -5.88666e-65, 17.716, 8.83238, 8.82493 - 0.185, 1.81091, 9.98874, -5.12347e-65, 17.814, 8.88488, 8.87226 - 0.186, 1.82067, 9.53745, 3.6802e-65, 17.9076, 8.93091, 8.92201 - 0.187, 1.83004, 9.20508, 2.06201e-64, 17.9979, 8.97318, 8.97167 - 0.188, 1.83921, 9.13307, 3.51101e-64, 18.0875, 9.01591, 9.01889 - 0.189, 1.84845, 9.3508, 2.4346e-64, 18.1792, 9.06041, 9.06505 - 0.19, 1.85801, 9.76367, -3.43998e-64, 18.275, 9.10607, 9.11315 - 0.191, 1.86799, 10.1942, -1.33918e-63, 18.375, 9.15391, 9.16321 - 0.192, 1.87832, 10.4582, -2.03385e-63, 18.4776, 9.20616, 9.21225 - 0.193, 1.88877, 10.4438, -1.08979e-63, 18.58, 9.26206, 9.25888 - 0.194, 1.89907, 10.1585, 2.63467e-63, 18.6797, 9.31662, 9.30537 - 0.195, 1.90901, 9.72567, 8.33848e-63, 18.7751, 9.3653, 9.35422 - 0.196, 1.91854, 9.33115, 1.15447e-62, 18.8666, 9.40871, 9.40429 - 0.197, 1.92778, 9.14336, 4.59661e-63, 18.9563, 9.45102, 9.4526 - 0.198, 1.93697, 9.24151, -1.81289e-62, 19.047, 9.49493, 9.49886 - 0.199, 1.94638, 9.5822, -5.02769e-62, 19.141, 9.5402, 9.54592 - 0.2, 1.95618, 10.0186, -6.47133e-62, 19.2393, 9.58687, 9.59539 - 0.201, 1.96637, 10.3636, -1.84087e-62, 19.3409, 9.63705, 9.64519 - 0.202, 1.97679, 10.4702, 1.16182e-61, 19.4437, 9.69167, 9.69276 - 0.203, 1.98717, 10.294, 2.95567e-61, 19.5446, 9.74734, 9.73894 - 0.204, 1.99727, 9.9118, 3.6061e-61, 19.6419, 9.79868, 9.7867 - 0.205, 2.00697, 9.4879, 7.23805e-62, 19.735, 9.84396, 9.83658 - 0.206, 2.01632, 9.20378, -7.05738e-61, 19.8252, 9.88635, 9.88587 - 0.207, 2.02551, 9.18023, -1.70199e-60, 19.9153, 9.9296, 9.93279 - 0.208, 2.03482, 9.42606, -2.00794e-60, 20.0078, 9.97448, 9.97918 - 0.209, 2.04445, 9.83487, -3.06901e-61, 20.1043, 10.0205, 10.0277 - 0.21, 2.05448, 10.2311, 4.10056e-60, 20.2046, 10.0689, 10.0777 - 0.211, 2.06482, 10.4454, 9.62759e-60, 20.3071, 10.1217, 10.1263 - 0.212, 2.07523, 10.387, 1.1208e-59, 20.409, 10.1774, 10.1728 - 0.213, 2.08547, 10.0821, 1.62034e-60, 20.5079, 10.2309, 10.2196 - 0.214, 2.09534, 9.66238, -2.28875e-59, 20.6027, 10.2786, 10.2688 - 0.215, 2.10482, 9.3077, -5.35689e-59, 20.694, 10.3218, 10.3187 - 0.216, 2.11406, 9.16945, -6.2772e-59, 20.7839, 10.3645, 10.3666 - 0.217, 2.1233, 9.30574, -1.10376e-59, 20.8752, 10.4089, 10.4128 - 0.218, 2.13278, 9.65703, 1.22812e-58, 20.97, 10.4544, 10.4603 - 0.219, 2.14265, 10.0721, 2.93166e-58, 21.0688, 10.5015, 10.51 - 0.22, 2.15287, 10.3732, 3.52277e-58, 21.1705, 10.5523, 10.5595 - 0.221, 2.16327, 10.4321, 8.54475e-59, 21.2729, 10.6071, 10.6067 - 0.222, 2.1736, 10.2247, -6.31937e-58, 21.3732, 10.6621, 10.653 - 0.223, 2.18363, 9.8409, -1.57591e-57, 21.4697, 10.7124, 10.7012 - 0.224, 2.19328, 9.4456, -1.97455e-57, 21.5624, 10.7571, 10.7511 - 0.225, 2.2026, 9.20789, -6.67073e-58, 21.6527, 10.7997, 10.8 - 0.226, 2.21182, 9.22872, 3.09804e-57, 21.7432, 10.8434, 10.8467 - 0.227, 2.22119, 9.49804, 8.29914e-57, 21.8364, 10.8886, 10.8934 - 0.228, 2.23088, 9.89959, 1.10032e-56, 21.9335, 10.9349, 10.9422 - 0.229, 2.24096, 10.2611, 4.99463e-57, 22.0342, 10.9839, 10.9921 - 0.23, 2.25131, 10.4281, -1.42885e-56, 22.1365, 11.0371, 11.0404 - 0.231, 2.26169, 10.33, -4.2651e-56, 22.2378, 11.0925, 11.0867 - 0.232, 2.27186, 10.01, -6.06346e-56, 22.336, 11.1451, 11.1339 - 0.233, 2.28167, 9.60584, -3.54131e-56, 22.4303, 11.1919, 11.1834 - 0.234, 2.29111, 9.29072, 6.04723e-56, 22.5214, 11.235, 11.233 - 0.235, 2.30036, 9.19904, 2.12751e-55, 22.6116, 11.2781, 11.2805 - 0.236, 2.30964, 9.36904, 3.28546e-55, 22.7036, 11.3229, 11.3269 - 0.237, 2.31919, 9.72691, 2.37711e-55, 22.799, 11.3687, 11.3747 - 0.238, 2.32911, 10.1188, -2.219e-55, 22.8982, 11.4162, 11.4245 - 0.239, 2.33936, 10.377, -1.02235e-54, 23, 11.4676, 11.4737 - 0.24, 2.34975, 10.3916, -1.74012e-54, 23.102, 11.5225, 11.5206 - 0.241, 2.36002, 10.1574, -1.51449e-54, 23.2016, 11.5768, 11.5672 - 0.242, 2.36999, 9.77558, 5.86863e-55, 23.2975, 11.626, 11.6157 - 0.243, 2.37958, 9.41007, 4.68126e-54, 23.3898, 11.6702, 11.6656 - 0.244, 2.38889, 9.21712, 8.95277e-54, 23.4803, 11.7131, 11.7141 - 0.245, 2.39814, 9.27854, 9.17922e-54, 23.5713, 11.7572, 11.7607 - 0.246, 2.40756, 9.56702, 1.69257e-55, 23.6651, 11.8027, 11.8076 - 0.247, 2.41733, 9.95826, -2.00706e-53, 23.7628, 11.8493, 11.8568 - 0.248, 2.42745, 10.2845, -4.44293e-53, 23.8637, 11.8989, 11.9065 - 0.249, 2.43779, 10.4065, -5.29828e-53, 23.9658, 11.9525, 11.9544 - 0.25, 2.44813, 10.2728, -1.78661e-53, 24.0666, 12.0076, 12.0007 - 0.251, 2.45824, 9.94175, 7.80075e-53, 24.1641, 12.0592, 12.0483 - 0.252, 2.46799, 9.55564, 2.10828e-52, 24.2578, 12.1052, 12.0979 - 0.253, 2.47741, 9.27987, 2.91119e-52, 24.3489, 12.1482, 12.1473 - 0.254, 2.48666, 9.23194, 1.75368e-52, 24.4394, 12.1918, 12.1945 - 0.255, 2.49599, 9.43146, -2.54766e-52, 24.532, 12.2369, 12.241 - 0.256, 2.50561, 9.79212, -9.45092e-52, 24.628, 12.2829, 12.2892 - 0.257, 2.51558, 10.159, -1.51937e-51, 24.7277, 12.331, 12.339 - 0.258, 2.52585, 10.3752, -1.27234e-51, 24.8295, 12.3829, 12.3878 - 0.259, 2.53621, 10.3488, 5.22379e-52, 24.931, 12.4378, 12.4346 - 0.26, 2.54643, 10.092, 3.92563e-51, 25.03, 12.4913, 12.4813 - 0.261, 2.55634, 9.71556, 7.49836e-51, 25.1253, 12.5396, 12.5302 - 0.262, 2.56588, 9.38098, 7.95866e-51, 25.2173, 12.5835, 12.58 - 0.263, 2.57519, 9.2312, 1.22594e-51, 25.3079, 12.6266, 12.6282 - 0.264, 2.58447, 9.32958, -1.45643e-50, 25.3994, 12.6711, 12.6746 - 0.265, 2.59395, 9.6331, -3.47164e-50, 25.4939, 12.7168, 12.7219 - 0.266, 2.60377, 10.0112, -4.49376e-50, 25.5921, 12.7638, 12.7713 - 0.267, 2.61393, 10.3017, -2.39871e-50, 25.6932, 12.814, 12.8208 - 0.268, 2.62427, 10.3809, 4.40645e-50, 25.795, 12.8679, 12.8683 - 0.269, 2.63457, 10.2155, 1.48695e-49, 25.8952, 12.9225, 12.9148 - 0.27, 2.64462, 9.87728, 2.32821e-49, 25.9921, 12.9731, 12.9627 - 0.271, 2.65431, 9.51153, 1.93741e-49, 26.0854, 13.0185, 13.0124 - 0.272, 2.6637, 9.27481, -7.2153e-50, 26.1764, 13.0616, 13.0615 - 0.273, 2.67297, 9.26792, -5.73652e-49, 26.2673, 13.1056, 13.1084 - 0.274, 2.68236, 9.49295, -1.11004e-48, 26.3605, 13.1509, 13.1551 - 0.275, 2.69203, 9.8528, -1.22243e-48, 26.4571, 13.1972, 13.2037 - 0.276, 2.70205, 10.193, -3.29208e-49, 26.5571, 13.2458, 13.2535 - 0.277, 2.71233, 10.3682, 1.8754e-48, 26.6588, 13.2982, 13.3019 - 0.278, 2.72267, 10.3039, 4.83431e-48, 26.7599, 13.353, 13.3485 - 0.279, 2.73283, 10.0285, 6.6805e-48, 26.8583, 13.4056, 13.3956 - 0.28, 2.74268, 9.66069, 4.48937e-48, 26.9531, 13.4531, 13.4447 - 0.281, 2.75219, 9.35803, -4.23283e-48, 27.0449, 13.4967, 13.4944 - 0.282, 2.76149, 9.24982, -1.88203e-47, 27.1356, 13.5402, 13.5422 - 0.283, 2.77081, 9.38164, -3.25837e-47, 27.2276, 13.5851, 13.5886 - 0.284, 2.78035, 9.69627, -3.22303e-47, 27.3228, 13.631, 13.6363 - 0.285, 2.79022, 10.0584, -2.55876e-48, 27.4214, 13.6784, 13.6858 - 0.286, 2.80041, 10.3131, 6.20613e-47, 27.5226, 13.7291, 13.7351 - 0.287, 2.81074, 10.3516, 1.42304e-46, 27.6242, 13.7832, 13.7823 - 0.288, 2.821, 10.1582, 1.84004e-46, 27.7238, 13.8372, 13.8289 - 0.289, 2.83098, 9.81658, 1.0837e-46, 27.8201, 13.8869, 13.8772 - 0.29, 2.84063, 9.4733, -1.45217e-46, 27.913, 13.9318, 13.9269 - 0.291, 2.85, 9.27527, -5.46573e-46, 28.004, 13.9751, 13.9756 - 0.292, 2.85929, 9.30669, -9.03879e-46, 28.0953, 14.0194, 14.0224 - 0.293, 2.86872, 9.55335, -8.58112e-46, 28.189, 14.065, 14.0693 - 0.294, 2.87846, 9.90898, -1.64746e-47, 28.2863, 14.1116, 14.1182 - 0.295, 2.88852, 10.221, 1.74387e-45, 28.3865, 14.1607, 14.1679 - 0.296, 2.89881, 10.3562, 3.88403e-45, 28.4881, 14.2135, 14.216 - 0.297, 2.90912, 10.2572, 4.96718e-45, 28.5887, 14.268, 14.2625 - 0.298, 2.91923, 9.96718, 2.94217e-45, 28.6865, 14.3198, 14.3099 - 0.299, 2.92902, 9.6109, -3.75248e-45, 28.7808, 14.3665, 14.3593 - 0.3, 2.93849, 9.341, -1.43481e-44, 28.8724, 14.4101, 14.4087 - 0.301, 2.9478, 9.27267, -2.39613e-44, 28.9634, 14.4539, 14.4562 - 0.302, 2.95715, 9.43448, -2.34279e-44, 29.0559, 14.4991, 14.5027 - 0.303, 2.96675, 9.75642, -2.56357e-45, 29.1517, 14.5452, 14.5507 - 0.304, 2.97668, 10.1002, 4.23519e-44, 29.2507, 14.593, 14.6003 - 0.305, 2.98689, 10.3187, 9.87784e-44, 29.352, 14.6442, 14.6493 - 0.306, 2.99721, 10.3188, 1.31588e-43, 29.4532, 14.6984, 14.6963 - 0.307, 3.00742, 10.1012, 8.89928e-44, 29.5523, 14.7518, 14.7431 - 0.308, 3.01735, 9.7597, -7.16911e-44, 29.648, 14.8006, 14.7917 - 0.309, 3.02695, 9.44082, -3.39511e-43, 29.7406, 14.8451, 14.8413 - 0.31, 3.03631, 9.28094, -6.04118e-43, 29.8317, 14.8886, 14.8897 - 0.311, 3.04562, 9.34795, -6.44983e-43, 29.9234, 14.9333, 14.9364 - 0.312, 3.0551, 9.61246, -1.99617e-43, 30.0177, 14.9791, 14.9836 - 0.313, 3.06489, 9.96064, 8.65228e-43, 30.1154, 15.026, 15.0327 - 0.314, 3.07499, 10.2433, 2.31482e-42, 30.2159, 15.0756, 15.0822 - 0.315, 3.08528, 10.3396, 3.36544e-42, 30.3173, 15.1288, 15.13 - 0.316, 3.09556, 10.209, 2.76434e-42, 30.4175, 15.183, 15.1765 - 0.317, 3.10561, 9.90808, -6.73739e-43, 30.5147, 15.2339, 15.2243 - 0.318, 3.11535, 9.56615, -7.04974e-42, 30.6085, 15.28, 15.2738 - 0.319, 3.1248, 9.32965, -1.42179e-41, 30.7, 15.3235, 15.3229 - 0.32, 3.13411, 9.29943, -1.72582e-41, 30.7913, 15.3676, 15.3701 - 0.321, 3.14351, 9.48778, -9.62593e-42, 30.8843, 15.4131, 15.4168 - 0.322, 3.15316, 9.81343, 1.32809e-41, 30.9806, 15.4595, 15.4652 - 0.323, 3.16313, 10.1366, 4.85761e-41, 31.0801, 15.5077, 15.5148 - 0.324, 3.17336, 10.319, 8.07785e-41, 31.1813, 15.5594, 15.5634 - 0.325, 3.18366, 10.283, 8.15645e-41, 31.2822, 15.6136, 15.6103 - 0.326, 3.19383, 10.0448, 1.92973e-41, 31.3807, 15.6663, 15.6573 - 0.327, 3.2037, 9.70675, -1.1959e-40, 31.4759, 15.7143, 15.7061 - 0.328, 3.21326, 9.41395, -3.02456e-40, 31.5683, 15.7585, 15.7557 - 0.329, 3.22261, 9.29153, -4.3076e-40, 31.6594, 15.8022, 15.8038 - 0.33, 3.23196, 9.39135, -3.52116e-40, 31.7516, 15.8472, 15.8504 - 0.331, 3.24149, 9.67002, 7.47056e-41, 31.8464, 15.8932, 15.8979 - 0.332, 3.25133, 10.0077, 8.60827e-40, 31.9446, 15.9404, 15.9472 - 0.333, 3.26146, 10.2598, 1.75355e-39, 32.0452, 15.9905, 15.9965 - 0.334, 3.27175, 10.3187, 2.17542e-39, 32.1465, 16.044, 16.044 - 0.335, 3.28199, 10.1596, 1.35145e-39, 32.2461, 16.0978, 16.0906 - 0.336, 3.29199, 9.85147, -1.29332e-39, 32.3428, 16.1479, 16.1387 - 0.337, 3.30168, 9.52646, -5.50973e-39, 32.4362, 16.1934, 16.1882 - 0.338, 3.31111, 9.32376, -9.62858e-39, 32.5277, 16.237, 16.2371 - 0.339, 3.32043, 9.32974, -1.04655e-38, 32.6192, 16.2815, 16.2841 - 0.34, 3.32987, 9.54123, -4.26712e-39, 32.7128, 16.3272, 16.331 - 0.341, 3.33957, 9.86712, 1.103e-38, 32.8096, 16.3737, 16.3796 - 0.342, 3.34959, 10.1676, 3.26777e-38, 32.9094, 16.4224, 16.4292 - 0.343, 3.35983, 10.3142, 5.06357e-38, 33.0105, 16.4746, 16.4775 - 0.344, 3.37011, 10.2446, 4.8154e-38, 33.111, 16.5287, 16.5243 - 0.345, 3.38023, 9.98916, 7.83036e-39, 33.209, 16.5806, 16.5715 - 0.346, 3.39005, 9.65784, -7.62356e-38, 33.3038, 16.6279, 16.6206 - 0.347, 3.39958, 9.39259, -1.83445e-37, 33.3959, 16.6719, 16.6701 - 0.348, 3.40893, 9.30674, -2.57159e-37, 33.4872, 16.7159, 16.7178 - 0.349, 3.4183, 9.43652, -2.12545e-37, 33.5798, 16.7612, 16.7644 - 0.35, 3.42788, 9.72576, 2.7962e-38, 33.6752, 16.8074, 16.8123 - 0.351, 3.43777, 10.0502, 4.71962e-37, 33.7738, 16.8549, 16.8617 - 0.352, 3.44793, 10.271, 9.87442e-37, 33.8746, 16.9056, 16.9107 - 0.353, 3.45821, 10.2938, 1.2698e-36, 33.9755, 16.9592, 16.958 - 0.354, 3.46841, 10.1095, 9.02293e-37, 34.0747, 17.0125, 17.0048 - 0.355, 3.47837, 9.79756, -4.4868e-37, 34.1708, 17.0618, 17.0531 - 0.356, 3.48801, 9.49182, -2.72084e-36, 34.2639, 17.1068, 17.1027 - 0.357, 3.49742, 9.32311, -5.1416e-36, 34.3554, 17.1505, 17.1512 - 0.358, 3.50676, 9.36325, -6.13252e-36, 34.4473, 17.1953, 17.1981 - 0.359, 3.51624, 9.59448, -3.6957e-36, 34.5414, 17.2412, 17.2452 - 0.36, 3.526, 9.9173, 3.5593e-36, 34.6387, 17.288, 17.2941 - 0.361, 3.53605, 10.1933, 1.48965e-35, 34.7387, 17.3372, 17.3436 - 0.362, 3.5463, 10.3045, 2.60657e-35, 34.8397, 17.3897, 17.3916 - 0.363, 3.55655, 10.2037, 2.91273e-35, 34.9398, 17.4436, 17.4383 - 0.364, 3.56662, 9.93474, 1.46817e-35, 35.0373, 17.4948, 17.4859 - 0.365, 3.5764, 9.6131, -2.29191e-35, 35.1316, 17.5414, 17.5351 - 0.366, 3.58589, 9.37661, -7.83509e-35, 35.2236, 17.5854, 17.5844 - 0.367, 3.59524, 9.32625, -1.29291e-34, 35.3151, 17.6296, 17.6318 - 0.368, 3.60465, 9.48307, -1.36757e-34, 35.4081, 17.6752, 17.6785 - 0.369, 3.61428, 9.77939, -5.71348e-35, 35.504, 17.7216, 17.7267 - 0.37, 3.62421, 10.088, 1.32133e-34, 35.603, 17.7695, 17.7762 - 0.371, 3.6344, 10.2768, 3.98797e-34, 35.7038, 17.8206, 17.8249 - 0.372, 3.64467, 10.2653, 6.29861e-34, 35.8045, 17.8743, 17.872 - 0.373, 3.65483, 10.059, 6.37723e-34, 35.9032, 17.9271, 17.9189 - 0.374, 3.66473, 9.74661, 2.21881e-34, 35.9988, 17.9756, 17.9676 - 0.375, 3.67434, 9.46223, -7.07482e-34, 36.0916, 18.0203, 18.0171 - 0.376, 3.68373, 9.32746, -1.97374e-33, 36.1832, 18.0642, 18.0654 - 0.377, 3.69309, 9.39958, -3.02233e-33, 36.2754, 18.1093, 18.1121 - 0.378, 3.70262, 9.64717, -2.9655e-33, 36.37, 18.1553, 18.1595 - 0.379, 3.71242, 9.9638, -8.86394e-34, 36.4677, 18.2024, 18.2086 - 0.38, 3.72251, 10.2138, 3.57861e-33, 36.5679, 18.252, 18.2579 - 0.381, 3.73276, 10.2903, 9.52801e-33, 36.6689, 18.3049, 18.3056 - 0.382, 3.74299, 10.161, 1.43128e-32, 36.7686, 18.3585, 18.3523 - 0.383, 3.75301, 9.88183, 1.37926e-32, 36.8655, 18.409, 18.4002 - 0.384, 3.76274, 9.57266, 3.78446e-33, 36.9594, 18.455, 18.4496 - 0.385, 3.77221, 9.36588, -1.72439e-32, 37.0513, 18.4989, 18.4986 - 0.386, 3.78157, 9.34973, -4.49443e-32, 37.143, 18.5435, 18.5458 - 0.387, 3.79101, 9.53063, -6.69706e-32, 37.2365, 18.5892, 18.5927 - 0.388, 3.80069, 9.83064, -6.42665e-32, 37.3329, 18.6358, 18.6411 - 0.389, 3.81066, 10.121, -1.77523e-32, 37.4322, 18.6841, 18.6906 - 0.39, 3.82086, 10.2776, 7.94217e-32, 37.5331, 18.7357, 18.7391 - 0.391, 3.83112, 10.2336, 2.07312e-31, 37.6335, 18.7894, 18.786 - 0.392, 3.84124, 10.0084, 3.09715e-31, 37.7316, 18.8415, 18.8332 - 0.393, 3.85109, 9.69884, 3.00014e-31, 37.8268, 18.8893, 18.8821 - 0.394, 3.86066, 9.43768, 9.1159e-32, 37.9194, 18.9337, 18.9315 - 0.395, 3.87005, 9.33655, -3.49489e-31, 38.011, 18.9779, 18.9794 - 0.396, 3.87943, 9.43833, -9.34851e-31, 38.1035, 19.0232, 19.0262 - 0.397, 3.889, 9.69894, -1.41498e-30, 38.1987, 19.0694, 19.0738 - 0.398, 3.89886, 10.0064, -1.40115e-30, 38.2969, 19.1168, 19.1231 - 0.399, 3.90897, 10.2291, -4.96419e-31, 38.3972, 19.1669, 19.1722 - 0.4, 3.91922, 10.2718, 1.46292e-30, 38.498, 19.2201, 19.2197 - 0.401, 3.92942, 10.1167, 4.11621e-30, 38.5972, 19.2733, 19.2664 - 0.402, 3.93939, 9.83075, 6.37855e-30, 38.6937, 19.3229, 19.3146 - 0.403, 3.94908, 9.53662, 6.52892e-30, 38.7872, 19.3685, 19.3641 - 0.404, 3.95852, 9.36024, 2.76189e-30, 38.879, 19.4125, 19.4128 - 0.405, 3.96789, 9.37682, -5.76761e-30, 38.971, 19.4573, 19.4598 - 0.406, 3.97737, 9.57877, -1.76562e-29, 39.065, 19.5033, 19.5069 - 0.407, 3.9871, 9.87921, -2.83168e-29, 39.1619, 19.55, 19.5555 - 0.408, 3.99711, 10.1493, -3.02449e-29, 39.2615, 19.5988, 19.605 - 0.409, 4.00732, 10.2735, -1.52739e-29, 39.3622, 19.6508, 19.6532 - 0.41, 4.01756, 10.199, 2.0989e-29, 39.4623, 19.7044, 19.7 - 0.411, 4.02764, 9.95813, 7.35183e-29, 39.56, 19.7558, 19.7474 - 0.412, 4.03745, 9.65449, 1.23481e-28, 39.6547, 19.8029, 19.7965 - 0.413, 4.04698, 9.41815, 1.38723e-28, 39.7471, 19.8472, 19.8458 - 0.414, 4.05637, 9.35012, 8.26367e-29, 39.8388, 19.8916, 19.8935 - 0.415, 4.06578, 9.47911, -6.73985e-29, 39.9318, 19.9372, 19.9402 - 0.416, 4.0754, 9.74943, -2.95585e-28, 40.0274, 19.9836, 19.9882 - 0.417, 4.08529, 10.045, -5.27215e-28, 40.126, 20.0313, 20.0375 - 0.418, 4.09543, 10.2393, -6.27306e-28, 40.2264, 20.0819, 20.0864 - 0.419, 4.10568, 10.2494, -4.33872e-28, 40.327, 20.1352, 20.1337 - 0.42, 4.11584, 10.0713, 1.67256e-28, 40.4258, 20.1879, 20.1806 - 0.421, 4.12577, 9.78182, 1.13834e-27, 40.5217, 20.2368, 20.229 - 0.422, 4.13541, 9.50508, 2.19518e-27, 40.615, 20.282, 20.2785 - 0.423, 4.14484, 9.35953, 2.78462e-27, 40.7068, 20.3261, 20.3269 - 0.424, 4.15422, 9.40715, 2.20204e-27, 40.7991, 20.3712, 20.3738 - 0.425, 4.16374, 9.62711, -1.13786e-28, 40.8935, 20.4173, 20.4211 - 0.426, 4.17352, 9.92484, -4.14563e-27, 40.9909, 20.4643, 20.47 - 0.427, 4.18357, 10.1727, -8.86893e-27, 41.0907, 20.5136, 20.5194 - 0.428, 4.19379, 10.2647, -1.20813e-26, 41.1914, 20.5659, 20.5673 - 0.429, 4.204, 10.1619, -1.07822e-26, 41.2911, 20.6193, 20.6141 - 0.43, 4.21403, 9.90863, -2.29513e-27, 41.3883, 20.67, 20.6618 - 0.431, 4.2238, 9.61375, 1.39553e-26, 41.4826, 20.7166, 20.711 - 0.432, 4.2333, 9.40357, 3.45419e-26, 41.5748, 20.7608, 20.7601 - 0.433, 4.24269, 9.36785, 5.09966e-26, 41.6667, 20.8054, 20.8075 - 0.434, 4.25213, 9.5215, 5.08651e-26, 41.7601, 20.8512, 20.8544 - 0.435, 4.26179, 9.79829, 2.17996e-26, 41.8563, 20.8978, 20.9026 - 0.436, 4.27173, 10.0795, -4.13872e-26, 41.9551, 20.9458, 20.952 - 0.437, 4.2819, 10.2446, -1.28507e-25, 42.0556, 20.9969, 21.0006 - 0.438, 4.29213, 10.2234, -2.0838e-25, 42.1559, 21.0502, 21.0477 - 0.439, 4.30225, 10.0252, -2.30868e-25, 42.2543, 21.1024, 21.0948 - 0.44, 4.31213, 9.73535, -1.4098e-25, 42.3498, 21.1507, 21.1435 - 0.441, 4.32174, 9.47812, 9.40478e-26, 42.4428, 21.1955, 21.1929 - 0.442, 4.33116, 9.36355, 4.50318e-25, 42.5346, 21.2398, 21.241 - 0.443, 4.34056, 9.44036, 8.19285e-25, 42.6272, 21.2852, 21.2879 - 0.444, 4.35012, 9.67524, 1.00629e-24, 42.7221, 21.3314, 21.3354 - 0.445, 4.35994, 9.96728, 7.75463e-25, 42.8199, 21.3787, 21.3845 - 0.446, 4.37002, 10.1913, -5.03845e-26, 42.9199, 21.4284, 21.4337 - 0.447, 4.38024, 10.2516, -1.45043e-24, 43.0205, 21.481, 21.4813 - 0.448, 4.39043, 10.1227, -3.075e-24, 43.1198, 21.5341, 21.5281 - 0.449, 4.40042, 9.86025, -4.2005e-24, 43.2165, 21.5841, 21.5761 - 0.45, 4.41014, 9.57684, -3.85563e-24, 43.3104, 21.6301, 21.6255 - 0.451, 4.41963, 9.39386, -1.17126e-24, 43.4026, 21.6744, 21.6743 - 0.452, 4.42902, 9.38945, 4.07715e-24, 43.4947, 21.7193, 21.7215 - 0.453, 4.43849, 9.56508, 1.08915e-23, 43.5885, 21.7652, 21.7685 - 0.454, 4.4482, 9.84517, 1.67236e-23, 43.6851, 21.812, 21.817 - 0.455, 4.45818, 10.1096, 1.77476e-23, 43.7843, 21.8604, 21.8664 - 0.456, 4.46835, 10.2452, 1.00082e-23, 43.8848, 21.9119, 21.9148 - 0.457, 4.47857, 10.1942, -8.56245e-24, 43.9848, 21.9652, 21.9617 - 0.458, 4.48866, 9.97879, -3.57241e-23, 44.0827, 22.0169, 22.009 - 0.459, 4.4985, 9.69163, -6.31115e-23, 44.1778, 22.0644, 22.0579 - 0.46, 4.50807, 9.45577, -7.63969e-23, 44.2705, 22.1091, 22.1072 - 0.461, 4.51748, 9.37208, -5.87092e-23, 44.3625, 22.1535, 22.1551 - 0.462, 4.52691, 9.47604, 2.25244e-24, 44.4554, 22.1991, 22.2019 - 0.463, 4.53651, 9.72275, 1.04612e-22, 44.5508, 22.2456, 22.2497 - 0.464, 4.54637, 10.0063, 2.23542e-22, 44.649, 22.2931, 22.2989 - 0.465, 4.55648, 10.2052, 3.08457e-22, 44.7491, 22.3432, 22.3479 - 0.466, 4.5667, 10.2345, 2.91702e-22, 44.8495, 22.3961, 22.3953 - 0.467, 4.57686, 10.082, 1.11999e-22, 44.9484, 22.4488, 22.4423 - 0.468, 4.5868, 9.81336, -2.49504e-22, 45.0447, 22.4981, 22.4905 - 0.469, 4.59648, 9.5439, -7.30695e-22, 45.1383, 22.5437, 22.5399 - 0.47, 4.60595, 9.38893, -1.16563e-21, 45.2304, 22.588, 22.5885 - 0.471, 4.61535, 9.41457, -1.2996e-21, 45.3228, 22.6332, 22.6355 - 0.472, 4.62486, 9.60944, -8.59683e-22, 45.417, 22.6793, 22.6827 - 0.473, 4.63461, 9.88976, 3.18158e-22, 45.514, 22.7262, 22.7314 - 0.474, 4.64462, 10.1353, 2.13262e-21, 45.6135, 22.7751, 22.7808 - 0.475, 4.65481, 10.2411, 4.09126e-21, 45.7139, 22.827, 22.8289 - 0.476, 4.66501, 10.1621, 5.29927e-21, 45.8136, 22.8802, 22.8758 - 0.477, 4.67506, 9.9325, 4.64398e-21, 45.9111, 22.9312, 22.9233 - 0.478, 4.68485, 9.65094, 1.21083e-21, 46.0057, 22.9781, 22.9724 - 0.479, 4.6944, 9.43806, -5.1264e-21, 46.0983, 23.0226, 23.0215 - 0.48, 4.70381, 9.38487, -1.3123e-20, 46.1904, 23.0673, 23.0692 - 0.481, 4.71326, 9.51379, -1.98842e-20, 46.2837, 23.1132, 23.116 - 0.482, 4.7229, 9.76927, -2.12265e-20, 46.3796, 23.1597, 23.1641 - 0.483, 4.7328, 10.0417, -1.29133e-20, 46.4781, 23.2076, 23.2134 - 0.484, 4.74293, 10.2143, 7.27999e-21, 46.5783, 23.2582, 23.2621 - 0.485, 4.75315, 10.2135, 3.71598e-20, 46.6785, 23.3111, 23.3094 - 0.486, 4.76327, 10.0399, 6.83323e-20, 46.777, 23.3634, 23.3564 - 0.487, 4.77318, 9.7683, 8.63229e-20, 46.8728, 23.4121, 23.4049 - 0.488, 4.78282, 9.51507, 7.37526e-20, 46.9661, 23.4573, 23.4543 - 0.489, 4.79227, 9.38864, 1.6967e-20, 47.0582, 23.5017, 23.5026 - 0.49, 4.80169, 9.44286, -8.49212e-20, 47.1509, 23.5471, 23.5496 - 0.491, 4.81124, 9.65416, -2.11444e-19, 47.2456, 23.5934, 23.597 - 0.492, 4.82103, 9.93175, -3.17096e-19, 47.343, 23.6405, 23.6459 - 0.493, 4.83107, 10.1567, -3.37437e-19, 47.4426, 23.6898, 23.6951 - 0.494, 4.84127, 10.2327, -2.0817e-19, 47.543, 23.742, 23.7429 - 0.495, 4.85145, 10.1276, 1.03845e-19, 47.6424, 23.795, 23.7898 - 0.496, 4.86145, 9.88674, 5.65064e-19, 47.7394, 23.8453, 23.8376 - 0.497, 4.8712, 9.61352, 1.04943e-18, 47.8337, 23.8918, 23.8869 - 0.498, 4.88072, 9.42497, 1.34057e-18, 47.9261, 23.9362, 23.9358 - 0.499, 4.89014, 9.40165, 1.17835e-18, 48.0184, 23.9812, 23.9832 - 0.5, 4.89961, 9.55321, 3.55056e-19, 48.1121, 24.0272, 24.0302 - 0.501, 4.9093, 9.81441, -1.15377e-18, 48.2084, 24.0739, 24.0785 - 0.502, 4.91924, 10.0732, -3.06433e-18, 48.3072, 24.1221, 24.1278 - 0.503, 4.92939, 10.2188, -4.72782e-18, 48.4074, 24.1731, 24.1763 - 0.504, 4.93959, 10.1891, -5.21043e-18, 48.5074, 24.2261, 24.2234 - 0.505, 4.94969, 9.9971, -3.55551e-18, 48.6054, 24.2779, 24.2706 - 0.506, 4.95955, 9.72541, 7.83741e-19, 48.7009, 24.3259, 24.3194 - 0.507, 4.96915, 9.49047, 7.43954e-18, 48.794, 24.3709, 24.3687 - 0.508, 4.9786, 9.39281, 1.4744e-17, 48.8861, 24.4154, 24.4167 - 0.509, 4.98803, 9.47395, 1.97129e-17, 48.979, 24.4611, 24.4636 - 0.51, 4.99762, 9.69882, 1.86281e-17, 49.0742, 24.5075, 24.5113 - 0.511, 5.00745, 9.97085, 8.30767e-18, 49.172, 24.5549, 24.5603 - 0.512, 5.01752, 10.1735, -1.211e-17, 49.2718, 24.6046, 24.6094 - 0.513, 5.02772, 10.2201, -3.93806e-17, 49.3721, 24.6571, 24.657 - 0.514, 5.03788, 10.091, -6.51821e-17, 49.4711, 24.7097, 24.7039 - 0.515, 5.04784, 9.84188, -7.68821e-17, 49.5676, 24.7594, 24.752 - 0.516, 5.05755, 9.57958, -6.07177e-17, 49.6616, 24.8054, 24.8013 - 0.517, 5.06705, 9.41644, -7.36434e-18, 49.754, 24.8499, 24.85 - 0.518, 5.07647, 9.42213, 8.12283e-17, 49.8464, 24.8951, 24.8972 - 0.519, 5.08598, 9.59387, 1.86077e-16, 49.9405, 24.9412, 24.9443 - 0.52, 5.0957, 9.85782, 2.69704e-16, 50.0372, 24.9881, 24.9929 - 0.521, 5.10568, 10.1008, 2.82115e-16, 50.1363, 25.0367, 25.0422 - 0.522, 5.11584, 10.2188, 1.75857e-16, 50.2365, 25.0881, 25.0905 - 0.523, 5.12603, 10.1615, -7.13424e-17, 50.3362, 25.1411, 25.1374 - 0.524, 5.13609, 9.95387, -4.32066e-16, 50.4339, 25.1923, 25.1849 - 0.525, 5.14591, 9.685, -8.12644e-16, 50.5289, 25.2397, 25.2338 - 0.526, 5.15549, 9.47017, -1.05641e-15, 50.6218, 25.2845, 25.283 - 0.527, 5.16492, 9.40125, -9.76623e-16, 50.714, 25.3292, 25.3308 - 0.528, 5.17438, 9.50748, -4.21418e-16, 50.8073, 25.3751, 25.3777 - 0.529, 5.184, 9.74303, 6.39649e-16, 50.9029, 25.4216, 25.4256 - 0.53, 5.19388, 10.0068, 2.03315e-15, 51.001, 25.4693, 25.4748 - 0.531, 5.20397, 10.1858, 3.34181e-15, 51.1009, 25.5195, 25.5237 - 0.532, 5.21417, 10.2036, 3.94815e-15, 51.201, 25.5721, 25.571 - 0.533, 5.2243, 10.0528, 3.18971e-15, 51.2997, 25.6244, 25.6181 - 0.534, 5.23422, 9.79832, 6.20507e-16, 51.3958, 25.6734, 25.6664 - 0.535, 5.2439, 9.54933, -3.67507e-15, 51.4895, 25.719, 25.7157 - 0.536, 5.25338, 9.41241, -8.82232e-15, 51.5818, 25.7636, 25.7642 - 0.537, 5.26281, 9.44599, -1.30918e-14, 51.6745, 25.809, 25.8113 - 0.538, 5.27235, 9.63537, -1.41656e-14, 51.769, 25.8553, 25.8586 - 0.539, 5.28211, 9.89916, -9.80158e-15, 51.8661, 25.9024, 25.9073 - 0.54, 5.29213, 10.1243, 1.16931e-15, 51.9654, 25.9513, 25.9566 - 0.541, 5.3023, 10.2144, 1.77569e-14, 52.0656, 26.0031, 26.0046 - 0.542, 5.31247, 10.1312, 3.6048e-14, 52.165, 26.0559, 26.0515 - 0.543, 5.32249, 9.91065, 4.92627e-14, 52.2622, 26.1066, 26.0992 - 0.544, 5.33227, 9.64737, 4.90513e-14, 52.3569, 26.1534, 26.1483 - 0.545, 5.34182, 9.45421, 2.81506e-14, 52.4496, 26.1981, 26.1973 - 0.546, 5.35125, 9.41375, -1.59837e-14, 52.542, 26.2431, 26.2449 - 0.547, 5.36073, 9.54303, -7.757e-14, 52.6356, 26.2891, 26.2918 - 0.548, 5.3704, 9.78639, -1.40436e-13, 52.7316, 26.3358, 26.3399 - 0.549, 5.38031, 10.0394, -1.79177e-13, 52.8301, 26.3837, 26.3892 - 0.55, 5.39043, 10.1937, -1.64758e-13, 52.9301, 26.4343, 26.4379 - 0.551, 5.40061, 10.1835, -7.45903e-14, 53.03, 26.4871, 26.4851 - 0.552, 5.41071, 10.0133, 9.47399e-14, 53.1282, 26.539, 26.5323 - 0.553, 5.4206, 9.75641, 3.1593e-13, 53.2239, 26.5874, 26.5808 - 0.554, 5.43024, 9.5229, 5.25978e-13, 53.3173, 26.6327, 26.6301 - 0.555, 5.4397, 9.41275, 6.33209e-13, 53.4097, 26.6773, 26.6783 - 0.556, 5.44915, 9.4729, 5.39665e-13, 53.5026, 26.7229, 26.7253 - 0.557, 5.45872, 9.67728, 1.77675e-13, 53.5975, 26.7694, 26.7728 - 0.558, 5.46853, 9.93812, -4.46956e-13, 53.695, 26.8167, 26.8218 - 0.559, 5.47857, 10.1436, -1.21924e-12, 53.7945, 26.866, 26.8709 - 0.56, 5.48875, 10.2059, -1.90503e-12, 53.8947, 26.9181, 26.9186 - 0.561, 5.4989, 10.0986, -2.18397e-12, 53.9937, 26.9707, 26.9656 - 0.562, 5.50888, 9.86784, -1.73385e-12, 54.0905, 27.0207, 27.0135 - 0.563, 5.51862, 9.61276, -3.58565e-13, 54.1848, 27.0671, 27.0627 - 0.564, 5.52815, 9.44259, 1.8694e-12, 54.2775, 27.1118, 27.1115 - 0.565, 5.53759, 9.43004, 4.50155e-12, 54.37, 27.1569, 27.1589 - 0.566, 5.54709, 9.58021, 6.70139e-12, 54.464, 27.2031, 27.206 - 0.567, 5.5568, 9.82852, 7.38e-12, 54.5604, 27.2499, 27.2543 - 0.568, 5.56674, 10.0685, 5.49924e-12, 54.6591, 27.2983, 27.3036 - 0.569, 5.57688, 10.1973, 5.05837e-13, 54.7592, 27.3493, 27.352 - 0.57, 5.58706, 10.1601, -7.20981e-12, 54.8588, 27.402, 27.3991 - 0.571, 5.59712, 9.97302, -1.59978e-11, 54.9567, 27.4534, 27.4465 - 0.572, 5.60697, 9.71648, -2.29697e-11, 55.052, 27.5012, 27.4952 - 0.573, 5.61658, 9.50044, -2.45125e-11, 55.1452, 27.5463, 27.5444 - 0.574, 5.62603, 9.41733, -1.73359e-11, 55.2376, 27.5911, 27.5924 - 0.575, 5.63549, 9.5025, 9.62395e-14, 55.3308, 27.6369, 27.6394 - 0.576, 5.6451, 9.7192, 2.61163e-11, 55.4262, 27.6835, 27.6871 - 0.577, 5.65495, 9.9744, 5.4939e-11, 55.524, 27.731, 27.7362 - 0.578, 5.66502, 10.1588, 7.68897e-11, 55.6237, 27.7808, 27.7852 - 0.579, 5.67519, 10.1935, 8.02336e-11, 55.7237, 27.8331, 27.8327 - 0.58, 5.68532, 10.0639, 5.46682e-11, 55.8224, 27.8854, 27.8797 - 0.581, 5.69527, 9.82584, -4.06724e-12, 55.9188, 27.9348, 27.9279 - 0.582, 5.70497, 9.58141, -8.96912e-11, 56.0128, 27.9808, 27.9771 - 0.583, 5.71448, 9.43528, -1.8275e-10, 56.1053, 28.0254, 28.0257 - 0.584, 5.72392, 9.44986, -2.5173e-10, 56.198, 28.0709, 28.0729 - 0.585, 5.73346, 9.61863, -2.59244e-10, 56.2924, 28.1172, 28.1202 - 0.586, 5.7432, 9.86905, -1.73315e-10, 56.3892, 28.1642, 28.1688 - 0.587, 5.75318, 10.0938, 1.81127e-11, 56.4882, 28.2128, 28.218 - 0.588, 5.76333, 10.1966, 2.9338e-10, 56.5883, 28.2642, 28.2662 - 0.589, 5.77349, 10.1337, 5.89525e-10, 56.6877, 28.3169, 28.3132 - 0.59, 5.78353, 9.93229, 8.06571e-10, 56.7851, 28.3678, 28.3607 - 0.591, 5.79333, 9.67887, 8.27508e-10, 56.88, 28.415, 28.4097 - 0.592, 5.80291, 9.48203, 5.53705e-10, 56.9731, 28.4599, 28.4588 - 0.593, 5.81237, 9.42596, -5.03451e-11, 57.0655, 28.5049, 28.5065 - 0.594, 5.82185, 9.53444, -9.15234e-10, 57.1591, 28.5509, 28.5535 - 0.595, 5.83149, 9.76073, -1.84448e-09, 57.2548, 28.5976, 28.6015 - 0.596, 5.84138, 10.0077, -2.52892e-09, 57.353, 28.6454, 28.6506 - 0.597, 5.85147, 10.1697, -2.60864e-09, 57.4528, 28.6956, 28.6994 - 0.598, 5.86164, 10.1773, -1.78099e-09, 57.5526, 28.748, 28.7468 - 0.599, 5.87174, 10.0276, 6.41677e-11, 57.651, 28.8, 28.7939 - 0.6, 5.88165, 9.78503, 2.71911e-09, 57.747, 28.8488, 28.8423 - 0.601, 5.89132, 9.55352, 5.5924e-09, 57.8407, 28.8944, 28.8915 - 0.602, 5.90081, 9.43222, 7.75218e-09, 57.9332, 28.9392, 28.9399 - 0.603, 5.91026, 9.4729, 8.11061e-09, 58.0261, 28.9848, 28.987 - 0.604, 5.91983, 9.65786, 5.74431e-09, 58.1209, 29.0312, 29.0344 - 0.605, 5.92961, 9.90766, 2.9495e-10, 58.2181, 29.0784, 29.0832 - 0.606, 5.93962, 10.1152, -7.65849e-09, 58.3173, 29.1275, 29.1323 - 0.607, 5.94978, 10.1918, -1.64001e-08, 58.4173, 29.1792, 29.1803 - 0.608, 5.95992, 10.1047, -2.31947e-08, 58.5164, 29.2317, 29.2273 - 0.609, 5.96992, 9.89155, -2.48146e-08, 58.6135, 29.282, 29.2751 - 0.61, 5.97969, 9.64386, -1.8464e-08, 58.7081, 29.3288, 29.3241 - 0.611, 5.98925, 9.46771, -2.94149e-09, 58.8009, 29.3736, 29.373 - 0.612, 5.9987, 9.43844, 2.02669e-08, 58.8935, 29.4188, 29.4206 - 0.613, 6.0082, 9.56832, 4.63745e-08, 58.9874, 29.465, 29.4676 - 0.614, 6.01789, 9.80148, 6.7574e-08, 59.0835, 29.5118, 29.5158 - 0.615, 6.02781, 10.0379, 7.44821e-08, 59.182, 29.5599, 29.565 - 0.616, 6.03791, 10.1764, 5.87257e-08, 59.2819, 29.6105, 29.6136 - 0.617, 6.04808, 10.1577, 1.62426e-08, 59.3815, 29.663, 29.6608 - 0.618, 6.05815, 9.99017, -4.95495e-08, 59.4795, 29.7145, 29.7081 - 0.619, 6.06802, 9.74576, -1.25861e-07, 59.5751, 29.7627, 29.7567 - 0.62, 6.07766, 9.52925, -1.91074e-07, 59.6686, 29.8081, 29.8059 - 0.621, 6.08714, 9.43332, -2.18524e-07, 59.7611, 29.853, 29.854 - 0.622, 6.09661, 9.49884, -1.83509e-07, 59.8543, 29.8988, 29.9011 - 0.623, 6.10621, 9.69751, -7.24406e-08, 59.9494, 29.9453, 29.9487 - 0.624, 6.11603, 9.94403, 1.08117e-07, 60.047, 29.9927, 29.9976 - 0.625, 6.12607, 10.1328, 3.25635e-07, 60.1464, 30.0422, 30.0466 - 0.626, 6.13622, 10.183, 5.22241e-07, 60.2463, 30.0941, 30.0944 - 0.627, 6.14635, 10.0734, 6.24086e-07, 60.3451, 30.1464, 30.1414 - 0.628, 6.15631, 9.85118, 5.59713e-07, 60.4418, 30.1962, 30.1894 - 0.629, 6.16604, 9.6117, 2.84768e-07, 60.536, 30.2425, 30.2385 - 0.63, 6.17558, 9.45752, -1.9275e-07, 60.6288, 30.2873, 30.2873 - 0.631, 6.18504, 9.45452, -7.94877e-07, 60.7216, 30.3327, 30.3346 - 0.632, 6.19456, 9.60376, -1.37246e-06, 60.8158, 30.379, 30.3818 - 0.633, 6.20429, 9.84108, -1.72691e-06, 60.9123, 30.426, 30.4302 - 0.634, 6.21424, 10.0647, -1.65653e-06, 61.0111, 30.4744, 30.4794 - 0.635, 6.22436, 10.1789, -1.02124e-06, 61.1109, 30.5254, 30.5277 - 0.636, 6.23452, 10.135, 1.88522e-07, 61.2103, 30.5779, 30.5749 - 0.637, 6.24456, 9.95191, 1.79961e-06, 61.308, 30.629, 30.6223 - 0.638, 6.25439, 9.70837, 3.44412e-06, 61.4032, 30.6766, 30.6711 - 0.639, 6.264, 9.50874, 4.60585e-06, 61.4965, 30.7218, 30.7202 - 0.64, 6.27347, 9.43843, 4.73185e-06, 61.5891, 30.7668, 30.7681 - 0.641, 6.28296, 9.52735, 3.39651e-06, 61.6825, 30.8128, 30.8152 - 0.642, 6.29259, 9.73718, 4.84512e-07, 61.7781, 30.8594, 30.863 - 0.643, 6.30245, 9.97786, -3.65946e-06, 61.8759, 30.9071, 30.912 - 0.644, 6.31251, 10.1463, -8.17401e-06, 61.9755, 30.9569, 30.9609 - 0.645, 6.32267, 10.1704, -1.17686e-05, 62.0753, 31.0091, 31.0084 - 0.646, 6.33277, 10.0402, -1.29783e-05, 62.1737, 31.0611, 31.0555 - 0.647, 6.3427, 9.81158, -1.05642e-05, 62.27, 31.1102, 31.1038 - 0.648, 6.3524, 9.58264, -3.98356e-06, 62.364, 31.1562, 31.153 - 0.649, 6.36191, 9.45142, 6.1955e-06, 62.4567, 31.201, 31.2015 - 0.65, 6.37138, 9.47396, 1.80822e-05, 62.5497, 31.2466, 31.2487 - 0.651, 6.38093, 9.64037, 2.85926e-05, 62.6442, 31.2931, 31.296 - 0.652, 6.39069, 9.87917, 3.3996e-05, 62.7412, 31.3402, 31.3446 - 0.653, 6.40068, 10.088, 3.08483e-05, 62.8401, 31.389, 31.3938 - 0.654, 6.41081, 10.1774, 1.71554e-05, 62.94, 31.4403, 31.4419 - 0.655, 6.42095, 10.1094, -6.51984e-06, 63.0391, 31.4927, 31.4889 - 0.656, 6.43096, 9.91324, -3.63655e-05, 63.1364, 31.5433, 31.5366 - 0.657, 6.44076, 9.67318, -6.53969e-05, 63.2313, 31.5904, 31.5855 - 0.658, 6.45034, 9.49208, -8.45299e-05, 63.3244, 31.6354, 31.6345 - 0.659, 6.45981, 9.4474, -8.46495e-05, 63.4171, 31.6806, 31.6822 - 0.66, 6.46931, 9.55807, -5.9367e-05, 63.5108, 31.7268, 31.7293 - 0.661, 6.47898, 9.77647, -7.847e-06, 63.6067, 31.7736, 31.7773 - 0.662, 6.48887, 10.0089, 6.31305e-05, 63.7049, 31.8215, 31.8265 - 0.663, 6.49895, 10.1558, 0.000138744, 63.8046, 31.8717, 31.8751 - 0.664, 6.50911, 10.1544, 0.000197988, 63.9042, 31.924, 31.9225 - 0.665, 6.51919, 10.0055, 0.000217976, 64.0023, 31.9757, 31.9697 - 0.666, 6.52908, 9.77311, 0.000180163, 64.0982, 32.0242, 32.0182 - 0.667, 6.53874, 9.55687, 7.72297e-05, 64.192, 32.0699, 32.0673 - 0.668, 6.54825, 9.44936, -8.12357e-05, 64.2846, 32.1148, 32.1156 - 0.669, 6.55772, 9.49646, -0.000266302, 64.3778, 32.1606, 32.1627 - 0.67, 6.56731, 9.67776, -0.000432233, 64.4727, 32.2072, 32.2102 - 0.671, 6.5771, 9.91542, -0.000524749, 64.57, 32.2545, 32.259 - 0.672, 6.58711, 10.1076, -0.000494302, 64.6692, 32.3036, 32.3081 - 0.673, 6.59725, 10.172, -0.000311963, 64.769, 32.3552, 32.356 - 0.674, 6.60738, 10.0813, 1.59681e-05, 64.8679, 32.4075, 32.403 - 0.675, 6.61736, 9.87456, 0.000439268, 64.9647, 32.4575, 32.4509 - 0.676, 6.62712, 9.64046, 0.000865282, 65.0593, 32.5042, 32.5 - 0.677, 6.63668, 9.47931, 0.00117313, 65.1523, 32.5491, 32.5488 - 0.678, 6.64615, 9.46002, 0.00124017, 65.2451, 32.5945, 32.5963 - 0.679, 6.65567, 9.59064, 0.000976587, 65.3392, 32.6408, 32.6434 - 0.68, 6.66537, 9.81501, 0.000360492, 65.4355, 32.6878, 32.6917 - 0.681, 6.6753, 10.0369, -0.000536483, 65.5339, 32.736, 32.7409 - 0.682, 6.6854, 10.1613, -0.00154298, 65.6336, 32.7866, 32.7893 - 0.683, 6.69555, 10.1351, -0.00240833, 65.733, 32.8389, 32.8365 - 0.684, 6.7056, 9.96966, -0.00285103, 65.8308, 32.8902, 32.8839 - 0.685, 6.71545, 9.73612, -0.00262931, 65.9263, 32.9382, 32.9326 - 0.686, 6.72509, 9.53456, -0.00161969, 66.0199, 32.9836, 32.9817 - 0.687, 6.73458, 9.45126, 0.000116334, 66.1126, 33.0286, 33.0297 - 0.688, 6.74407, 9.52171, 0.00229949, 66.206, 33.0746, 33.0768 - 0.689, 6.75369, 9.71552, 0.00445185, 66.3013, 33.1213, 33.1245 - 0.69, 6.76352, 9.94952, 0.00597625, 66.3989, 33.1688, 33.1735 - 0.691, 6.77356, 10.1234, 0.00628937, 66.4982, 33.2183, 33.2224 - 0.692, 6.7837, 10.1628, 0.0049856, 66.5979, 33.2701, 33.2701 - 0.693, 6.79381, 10.0511, 0.00199393, 66.6965, 33.3222, 33.3172 - 0.694, 6.80375, 9.83627, -0.00231696, 66.793, 33.3716, 33.3653 - 0.695, 6.81347, 9.61049, -0.00712737, 66.8873, 33.4179, 33.4144 - 0.696, 6.82301, 9.47048, -0.0112753, 66.9802, 33.4629, 33.463 - 0.697, 6.83249, 9.47608, -0.0134854, 67.0732, 33.5085, 33.5103 - 0.698, 6.84204, 9.62467, -0.0126838, 67.1676, 33.5549, 33.5576 - 0.699, 6.85178, 9.85243, -0.0083362, 67.2642, 33.602, 33.6061 - 0.7, 6.86173, 10.0617, -0.000720951, 67.3629, 33.6505, 33.6552 - 0.701, 6.87184, 10.1629, 0.00895057, 67.4626, 33.7014, 33.7035 - 0.702, 6.88198, 10.1128, 0.0186346, 67.5618, 33.7538, 33.7506 - 0.703, 6.89201, 9.93308, 0.0258011, 67.6593, 33.8045, 33.7982 - 0.704, 6.90182, 9.70094, 0.0279887, 67.7545, 33.852, 33.847 - 0.705, 6.91143, 9.51584, 0.0234675, 67.8478, 33.8973, 33.896 - 0.706, 6.92092, 9.45698, 0.0118596, 67.9406, 33.9425, 33.9438 - 0.707, 6.93042, 9.54939, -0.00545928, 68.0343, 33.9886, 33.9909 - 0.708, 6.94007, 9.75328, -0.0253284, 68.1299, 34.0354, 34.0389 - 0.709, 6.94994, 9.98118, -0.0432303, 68.2279, 34.0831, 34.0879 - 0.71, 6.96, 10.1354, -0.0541649, 68.3273, 34.1331, 34.1366 - 0.711, 6.97014, 10.1501, -0.0538351, 68.4269, 34.1851, 34.1841 - 0.712, 6.98022, 10.0191, -0.039899, 68.5251, 34.2368, 34.2313 - 0.713, 6.99013, 9.79872, -0.0129787, 68.6213, 34.2857, 34.2797 - 0.714, 6.99982, 9.58348, 0.0228867, 68.7153, 34.3315, 34.3289 - 0.715, 7.00935, 9.46556, 0.0605709, 68.8081, 34.3766, 34.3773 - 0.716, 7.01883, 9.49531, 0.0910455, 68.9013, 34.4225, 34.4244 - 0.717, 7.02841, 9.6598, 0.105281, 68.9961, 34.4691, 34.4717 - 0.718, 7.03818, 9.88838, 0.0965205, 69.0931, 34.5164, 34.5203 - 0.719, 7.04817, 10.0831, 0.0624078, 69.192, 34.5651, 34.5695 - 0.72, 7.05829, 10.1606, 0.0064176, 69.2916, 34.6161, 34.6178 - 0.721, 7.06841, 10.0878, -0.0619194, 69.3906, 34.6682, 34.665 - 0.722, 7.0784, 9.89615, -0.128262, 69.4877, 34.7187, 34.7126 - 0.723, 7.08819, 9.66788, -0.17613, 69.5825, 34.766, 34.7612 - 0.724, 7.09777, 9.5008, -0.19058, 69.6757, 34.8115, 34.8098 - 0.725, 7.10725, 9.46637, -0.162141, 69.7686, 34.8568, 34.8575 - 0.726, 7.11678, 9.57916, -0.0900819, 69.8626, 34.9026, 34.9052 - 0.727, 7.12646, 9.79065, 0.0159282, 69.9586, 34.9488, 34.9539 - 0.728, 7.13636, 10.0101, 0.136429, 70.0568, 34.9966, 35.0032 - 0.729, 7.14644, 10.1436, 0.24527, 70.1563, 35.0476, 35.0511 - 0.73, 7.15658, 10.134, 0.314836, 70.2557, 35.1008, 35.0973 - 0.731, 7.16664, 9.98567, 0.322447, 70.3537, 35.1529, 35.144 - 0.732, 7.17651, 9.76228, 0.256546, 70.4495, 35.2006, 35.1931 - 0.733, 7.18617, 9.55964, 0.121144, 70.5432, 35.2446, 35.2439 - 0.734, 7.19569, 9.46449, -0.0628291, 70.6361, 35.2882, 35.2936 - 0.735, 7.20518, 9.51745, -0.260015, 70.7295, 35.3344, 35.3405 - 0.736, 7.21478, 9.69563, -0.426917, 70.8246, 35.3831, 35.386 - 0.737, 7.22459, 9.92255, -0.520989, 70.9219, 35.4332, 35.4322 - 0.738, 7.2346, 10.101, -0.510713, 71.021, 35.4833, 35.4803 - 0.739, 7.24473, 10.1545, -0.384398, 71.1206, 35.5327, 35.5303 - 0.74, 7.25484, 10.0604, -0.155438, 71.2193, 35.5807, 35.5814 - 0.741, 7.2648, 9.85924, 0.13766, 71.316, 35.6278, 35.632 - 0.742, 7.27455, 9.63722, 0.437103, 71.4106, 35.6758, 35.6796 - 0.743, 7.28411, 9.4895, 0.676815, 71.5037, 35.726, 35.7232 - 0.744, 7.29359, 9.47924, 0.796592, 71.5967, 35.7767, 35.7656 - 0.745, 7.30314, 9.61066, 0.756468, 71.6909, 35.8236, 35.8123 - 0.746, 7.31286, 9.82727, 0.547923, 71.7873, 35.8653, 35.866 - 0.747, 7.32279, 10.0362, 0.199026, 71.8858, 35.9059, 35.9228 - 0.748, 7.33288, 10.148, -0.228282, 71.9854, 35.9527, 35.975 - 0.749, 7.34301, 10.1148, -0.648884, 72.0846, 36.0089, 36.0182 - 0.75, 7.35305, 9.9512, -0.971403, 72.1822, 36.0695, 36.056 - 0.751, 7.36289, 9.7273, -1.11798, 72.2776, 36.1252, 36.0969 - 0.752, 7.37252, 9.53912, -1.04264, 72.3712, 36.1699, 36.1466 - 0.753, 7.38202, 9.4672, -0.743861, 72.4641, 36.2055, 36.2043 - 0.754, 7.39153, 9.5422, -0.268182, 72.5577, 36.24, 36.263 - 0.755, 7.40116, 9.73179, 0.296749, 72.6532, 36.2825, 36.315 - 0.756, 7.41101, 9.95463, 0.838663, 72.7508, 36.3373, 36.3568 - 0.757, 7.42104, 10.1152, 1.24361, 72.85, 36.4003, 36.3922 - 0.758, 7.43117, 10.1449, 1.42049, 72.9496, 36.4615, 36.4304 - 0.759, 7.44126, 10.0311, 1.32178, 73.048, 36.5112, 36.4797 - 0.76, 7.45119, 9.82274, 0.955589, 73.1443, 36.5482, 36.5401 - 0.761, 7.4609, 9.60921, 0.385982, 73.2386, 36.5816, 36.6019 - 0.762, 7.47045, 9.48196, -0.278874, 73.3316, 36.623, 36.6542 - 0.763, 7.47994, 9.49538, -0.9085, 73.4248, 36.6763, 36.694 - 0.764, 7.48951, 9.64352, -1.3772, 73.5194, 36.7354, 36.7288 - 0.765, 7.49926, 9.86278, -1.59052, 73.6161, 36.7905, 36.7693 - 0.766, 7.50922, 10.0591, -1.50525, 73.7148, 36.8376, 36.82 - 0.767, 7.51932, 10.1485, -1.13833, 73.8144, 36.8802, 36.8765 - 0.768, 7.52945, 10.0928, -0.562873, 73.9134, 36.9242, 36.9318 - 0.769, 7.53945, 9.91606, 0.107896, 74.0106, 36.9718, 36.9823 - 0.77, 7.54925, 9.69409, 0.744958, 74.1057, 37.0214, 37.0289 - 0.771, 7.55886, 9.52206, 1.23055, 74.1992, 37.0707, 37.0739 - 0.772, 7.56836, 9.47357, 1.48181, 74.2921, 37.119, 37.1188 - 0.773, 7.57788, 9.56924, 1.46588, 74.386, 37.1672, 37.1639 - 0.774, 7.58755, 9.7679, 1.20341, 74.4818, 37.2163, 37.2097 - 0.775, 7.59743, 9.98433, 0.76031, 74.5797, 37.2659, 37.257 - 0.776, 7.60748, 10.1258, 0.230327, 74.6791, 37.3144, 37.3071 - 0.777, 7.61761, 10.1319, -0.286905, 74.7785, 37.3603, 37.3606 - 0.778, 7.62768, 10, -0.706915, 74.8766, 37.4039, 37.4158 - 0.779, 7.63757, 9.787, -0.975637, 74.9726, 37.4488, 37.4679 - 0.78, 7.64726, 9.58408, -1.07579, 75.0666, 37.4993, 37.5124 - 0.781, 7.65679, 9.47818, -1.02381, 75.1596, 37.5552, 37.55 - 0.782, 7.66628, 9.51453, -0.859212, 75.2529, 37.6106, 37.5878 - 0.783, 7.67588, 9.67739, -0.630132, 75.3478, 37.6584, 37.6341 - 0.784, 7.68567, 9.89684, -0.379539, 75.4449, 37.6981, 37.6904 - 0.785, 7.69565, 10.0788, -0.135899, 75.5438, 37.7365, 37.75 - 0.786, 7.70577, 10.1454, 0.0894231, 75.6433, 37.7816, 37.8041 - 0.787, 7.71587, 10.0683, 0.298064, 75.7421, 37.8347, 37.8502 - 0.788, 7.72585, 9.88063, 0.49596, 75.839, 37.8902, 37.8925 - 0.789, 7.73562, 9.66295, 0.683563, 75.9338, 37.9423, 37.9363 - 0.79, 7.74521, 9.50854, 0.848744, 76.0271, 37.9904, 37.9822 - 0.791, 7.7547, 9.48343, 0.965234, 76.1201, 38.0375, 38.0282 - 0.792, 7.76424, 9.59823, 0.997627, 76.2143, 38.0854, 38.0739 - 0.793, 7.77394, 9.80358, 0.911751, 76.3105, 38.1324, 38.1221 - 0.794, 7.78385, 10.0114, 0.687374, 76.4087, 38.1766, 38.1751 - 0.795, 7.79392, 10.1327, 0.32919, 76.5081, 38.2191, 38.2314 - 0.796, 7.80405, 10.1157, -0.127696, 76.6073, 38.2639, 38.2859 - 0.797, 7.81409, 9.9677, -0.620187, 76.7051, 38.3143, 38.334 - 0.798, 7.82395, 9.75237, -1.0677, 76.8008, 38.3698, 38.3753 - 0.799, 7.83361, 9.562, -1.38854, 76.8946, 38.4264, 38.4134 - 0.8, 7.84313, 9.47808, -1.51823, 76.9876, 38.4787, 38.4544 - 0.801, 7.85263, 9.53644, -1.42492, 77.0811, 38.5241, 38.5024 - 0.802, 7.86226, 9.71188, -1.1178, 77.1764, 38.5642, 38.5567 - 0.803, 7.87208, 9.92914, -0.646136, 77.2738, 38.6046, 38.6126 - 0.804, 7.88209, 10.0951, -0.0889257, 77.3728, 38.65, 38.6655 - 0.805, 7.89221, 10.1387, 0.462104, 77.4723, 38.7003, 38.7144 - 0.806, 7.9023, 10.0415, 0.921939, 77.5708, 38.7518, 38.7619 - 0.807, 7.91224, 9.84527, 1.22915, 77.6674, 38.8016, 38.8096 - 0.808, 7.92198, 9.63415, 1.35613, 77.7619, 38.8513, 38.8554 - 0.809, 7.93155, 9.49862, 1.31041, 77.8551, 38.9036, 38.897 - 0.81, 7.94104, 9.49661, 1.12753, 77.9482, 38.9571, 38.9366 - 0.811, 7.95061, 9.62884, 0.857933, 78.0427, 39.0066, 38.981 - 0.812, 7.96034, 9.8385, 0.552153, 78.1392, 39.0487, 39.0344 - 0.813, 7.97028, 10.0357, 0.248624, 78.2376, 39.0869, 39.0937 - 0.814, 7.98036, 10.136, -0.0325253, 78.3371, 39.1287, 39.1508 - 0.815, 7.99048, 10.0965, -0.288432, 78.4361, 39.1782, 39.2005 - 0.816, 8.00049, 9.93439, -0.526253, 78.5336, 39.2324, 39.2446 - 0.817, 8.01032, 9.71919, -0.752723, 78.6289, 39.2854, 39.2879 - 0.818, 8.01995, 9.54314, -0.96451, 78.7225, 39.3351, 39.3327 - 0.819, 8.02947, 9.48161, -1.143, 78.8156, 39.3839, 39.3773 - 0.82, 8.03899, 9.56081, -1.25564, 78.9094, 39.434, 39.4206 - 0.821, 8.04864, 9.74664, -1.26388, 79.005, 39.4843, 39.465 - 0.822, 8.05849, 9.95938, -1.13526, 79.1027, 39.5317, 39.5143 - 0.823, 8.06853, 10.1079, -0.856073, 79.2018, 39.5748, 39.5696 - 0.824, 8.07865, 10.1286, -0.440224, 79.3012, 39.6162, 39.6274 - 0.825, 8.08872, 10.0129, 0.0686825, 79.3994, 39.66, 39.6824 - 0.826, 8.09863, 9.81035, 0.60339, 79.4957, 39.7084, 39.7312 - 0.827, 8.10834, 9.60794, 1.08589, 79.5899, 39.7606, 39.7743 - 0.828, 8.11789, 9.49231, 1.44389, 79.683, 39.8137, 39.8149 - 0.829, 8.12739, 9.5129, 1.62637, 79.7763, 39.865, 39.8568 - 0.83, 8.13698, 9.66071, 1.61411, 79.8711, 39.9142, 39.9016 - 0.831, 8.14674, 9.87229, 1.42217, 79.968, 39.9633, 39.9484 - 0.832, 8.15671, 10.0569, 1.09402, 80.0666, 40.0132, 39.9962 - 0.833, 8.1668, 10.1356, 0.689188, 80.1661, 40.0625, 40.046 - 0.834, 8.17691, 10.0747, 0.268101, 80.2649, 40.1077, 40.0999 - 0.835, 8.1869, 9.9005, -0.121367, 80.362, 40.1481, 40.1575 - 0.836, 8.19669, 9.68775, -0.451956, 80.4571, 40.188, 40.2136 - 0.837, 8.2063, 9.52762, -0.717763, 80.5505, 40.2332, 40.2627 - 0.838, 8.21581, 9.48863, -0.92808, 80.6436, 40.2852, 40.3039 - 0.839, 8.22534, 9.58733, -1.09695, 80.7377, 40.3399, 40.3428 - 0.84, 8.23503, 9.78129, -1.23232, 80.8336, 40.3927, 40.385 - 0.841, 8.24491, 9.98731, -1.32873, 80.9316, 40.4436, 40.4311 - 0.842, 8.25496, 10.1171, -1.36611, 81.0308, 40.4956, 40.4777 - 0.843, 8.26508, 10.1153, -1.31539, 81.1301, 40.5489, 40.5237 - 0.844, 8.27513, 9.98264, -1.14898, 81.228, 40.5987, 40.5725 - 0.845, 8.28501, 9.77623, -0.852768, 81.3239, 40.6405, 40.6276 - 0.846, 8.29469, 9.58452, -0.435554, 81.4179, 40.6762, 40.6868 - 0.847, 8.30423, 9.48962, 0.0675876, 81.511, 40.7133, 40.7433 - 0.848, 8.31374, 9.53205, 0.599404, 81.6045, 40.7577, 40.7922 - 0.849, 8.32335, 9.69349, 1.09131, 81.6996, 40.8093, 40.8349 - 0.85, 8.33315, 9.90464, 1.47803, 81.7968, 40.8638, 40.8765 - 0.851, 8.34314, 10.075, 1.7118, 81.8956, 40.9186, 40.9197 - 0.852, 8.35324, 10.1317, 1.77218, 81.995, 40.9741, 40.9633 - 0.853, 8.36333, 10.0505, 1.66856, 82.0936, 41.0303, 41.0061 - 0.854, 8.37329, 9.86639, 1.43492, 82.1904, 41.0844, 41.0497 - 0.855, 8.38305, 9.65836, 1.11869, 82.2851, 41.1321, 41.0978 - 0.856, 8.39264, 9.51553, 0.76725, 82.3785, 41.1719, 41.152 - 0.857, 8.40215, 9.49899, 0.416292, 82.4717, 41.2073, 41.2099 - 0.858, 8.41171, 9.61568, 0.0835414, 82.566, 41.2439, 41.2671 - 0.859, 8.42142, 9.81547, -0.230551, 82.6623, 41.2863, 41.32 - 0.86, 8.43134, 10.0127, -0.535817, 82.7605, 41.3352, 41.3683 - 0.861, 8.4414, 10.1229, -0.841853, 82.8598, 41.3888, 41.4135 - 0.862, 8.45151, 10.0989, -1.14787, 82.9589, 41.444, 41.4575 - 0.863, 8.46154, 9.95122, -1.43668, 83.0565, 41.4994, 41.5004 - 0.864, 8.47139, 9.74323, -1.67506, 83.1521, 41.5547, 41.5417 - 0.865, 8.48104, 9.56408, -1.82085, 83.2459, 41.6094, 41.5818 - 0.866, 8.49057, 9.49047, -1.83442, 83.339, 41.6606, 41.624 - 0.867, 8.50009, 9.55381, -1.69106, 83.4327, 41.7058, 41.6723 - 0.868, 8.50973, 9.72681, -1.39019, 83.5282, 41.7453, 41.7273 - 0.869, 8.51956, 9.93524, -0.958187, 83.6256, 41.784, 41.785 - 0.87, 8.52957, 10.0898, -0.443931, 83.7246, 41.8267, 41.8406 - 0.871, 8.53968, 10.1243, 0.0919024, 83.8239, 41.8737, 41.8927 - 0.872, 8.54976, 10.0242, 0.590503, 83.9223, 41.9213, 41.944 - 0.873, 8.55968, 9.83241, 1.00744, 84.0187, 41.967, 41.9956 - 0.874, 8.56942, 9.63127, 1.32036, 84.1132, 42.0134, 42.0447 - 0.875, 8.57898, 9.50691, 1.52966, 84.2065, 42.0648, 42.0871 - 0.876, 8.58849, 9.51251, 1.65241, 84.2998, 42.1215, 42.1238 - 0.877, 8.59807, 9.64553, 1.71178, 84.3944, 42.1785, 42.1608 - 0.878, 8.60782, 9.84885, 1.72584, 84.491, 42.2313, 42.2036 - 0.879, 8.61776, 10.0353, 1.69943, 84.5895, 42.2808, 42.2516 - 0.88, 8.62784, 10.125, 1.62212, 84.6888, 42.3305, 42.3008 - 0.881, 8.63794, 10.0797, 1.47264, 84.7877, 42.3807, 42.3497 - 0.882, 8.64794, 9.91894, 1.2285, 84.885, 42.427, 42.4014 - 0.883, 8.65776, 9.71168, 0.877097, 84.9803, 42.4661, 42.4586 - 0.884, 8.66739, 9.54677, 0.424753, 85.0739, 42.5005, 42.5187 - 0.885, 8.67691, 9.49479, -0.0998937, 85.1671, 42.5372, 42.5755 - 0.886, 8.68645, 9.57789, -0.649352, 85.261, 42.5808, 42.6253 - 0.887, 8.69611, 9.76031, -1.16682, 85.3568, 42.6307, 42.6703 - 0.888, 8.70598, 9.96381, -1.59892, 85.4545, 42.6836, 42.7142 - 0.889, 8.71601, 10.1012, -1.9076, 85.5536, 42.7384, 42.7578 - 0.89, 8.72612, 10.1137, -2.07763, 85.6528, 42.7961, 42.7992 - 0.891, 8.73617, 9.99611, -2.1173, 85.7509, 42.8563, 42.8377 - 0.892, 8.74607, 9.79893, -2.05241, 85.847, 42.915, 42.876 - 0.893, 8.75577, 9.60671, -1.91562, 85.9412, 42.9678, 42.9185 - 0.894, 8.76533, 9.50179, -1.73492, 86.0345, 43.0129, 42.9671 - 0.895, 8.77484, 9.529, -1.525, 86.1279, 43.053, 43.0203 - 0.896, 8.78444, 9.67654, -1.28442, 86.2229, 43.092, 43.0755 - 0.897, 8.79422, 9.88109, -0.999353, 86.3198, 43.1325, 43.1309 - 0.898, 8.80419, 10.055, -0.65245, 86.4184, 43.1745, 43.1867 - 0.899, 8.81428, 10.1237, -0.233659, 86.5178, 43.217, 43.2433 - 0.9, 8.82437, 10.058, 0.250953, 86.6164, 43.26, 43.2992 - 0.901, 8.83434, 9.88616, 0.775542, 86.7134, 43.3052, 43.3519 - 0.902, 8.84413, 9.68187, 1.29749, 86.8084, 43.3543, 43.3987 - 0.903, 8.85373, 9.5327, 1.76628, 86.9019, 43.4074, 43.4399 - 0.904, 8.86325, 9.50246, 2.13538, 86.9951, 43.462, 43.4787 - 0.905, 8.87281, 9.60399, 2.37344, 87.0893, 43.5161, 43.5182 - 0.906, 8.8825, 9.79365, 2.471, 87.1854, 43.5705, 43.559 - 0.907, 8.8924, 9.9901, 2.44074, 87.2834, 43.6271, 43.5994 - 0.908, 8.90245, 10.1092, 2.31122, 87.3826, 43.6857, 43.6394 - 0.909, 8.91255, 10.1, 2.11631, 87.4817, 43.7417, 43.6825 - 0.91, 8.92258, 9.96659, 1.88401, 87.5794, 43.7902, 43.7325 - 0.911, 8.93245, 9.76626, 1.6283, 87.6752, 43.8305, 43.7889 - 0.912, 8.94213, 9.58489, 1.34684, 87.7693, 43.8673, 43.8471 - 0.913, 8.95167, 9.50013, 1.02508, 87.8625, 43.9047, 43.9033 - 0.914, 8.96119, 9.5482, 0.645299, 87.9561, 43.9427, 43.9587 - 0.915, 8.97082, 9.70835, 0.197194, 88.0514, 43.9799, 44.016 - 0.916, 8.98063, 9.91187, -0.313684, 88.1486, 44.0177, 44.0744 - 0.917, 8.99062, 10.0715, -0.862756, 88.2474, 44.0615, 44.1287 - 0.918, 9.00072, 10.119, -1.40975, 88.3467, 44.1142, 44.175 - 0.919, 9.01079, 10.034, -1.90756, 88.4451, 44.1726, 44.2154 - 0.92, 9.02074, 9.85323, -2.31372, 88.5418, 44.2303, 44.2552 - 0.921, 9.03049, 9.65409, -2.60069, 88.6365, 44.2849, 44.2963 - 0.922, 9.04008, 9.52195, -2.76159, 88.7299, 44.3393, 44.336 - 0.923, 9.0496, 9.51334, -2.8095, 88.8232, 44.3966, 44.3721 - 0.924, 9.05917, 9.6318, -2.77061, 88.9177, 44.4552, 44.4074 - 0.925, 9.0689, 9.82647, -2.67384, 89.0141, 44.5105, 44.4475 - 0.926, 9.07882, 10.0139, -2.54024, 89.1123, 44.5604, 44.495 - 0.927, 9.08888, 10.1137, -2.37615, 89.2116, 44.6073, 44.5467 - 0.928, 9.09898, 10.0834, -2.17221, 89.3105, 44.654, 44.5992 - 0.929, 9.10899, 9.93598, -1.90851, 89.4079, 44.6987, 44.6526 - 0.93, 9.11883, 9.73476, -1.56412, 89.5034, 44.7378, 44.71 - 0.931, 9.12848, 9.56598, -1.1275, 89.5973, 44.7706, 44.7719 - 0.932, 9.13801, 9.5019, -0.604043, 89.6905, 44.8014, 44.8346 - 0.933, 9.14755, 9.56987, -0.018132, 89.7844, 44.8358, 44.8937 - 0.934, 9.1572, 9.74062, 0.591158, 89.8799, 44.8762, 44.9481 - 0.935, 9.16704, 9.94091, 1.17933, 89.9775, 44.9212, 44.9996 - 0.936, 9.17706, 10.0849, 1.70758, 90.0764, 44.9695, 45.0496 - 0.937, 9.18715, 10.111, 2.15196, 90.1756, 45.0214, 45.0967 - 0.938, 9.19721, 10.0081, 2.50762, 90.2738, 45.078, 45.1388 - 0.939, 9.20713, 9.8205, 2.78664, 90.3701, 45.1384, 45.1757 - 0.94, 9.21685, 9.62858, 3.01039, 90.4645, 45.1997, 45.2098 - 0.941, 9.22642, 9.51457, 3.19921, 90.5579, 45.2592, 45.2441 - 0.942, 9.23594, 9.52723, 3.3629, 90.6513, 45.3166, 45.2801 - 0.943, 9.24554, 9.661, 3.49561, 90.7461, 45.3733, 45.3176 - 0.944, 9.2553, 9.85845, 3.57672, 90.8428, 45.4307, 45.3559 - 0.945, 9.26525, 10.0349, 3.57749, 90.9413, 45.4882, 45.396 - 0.946, 9.27532, 10.1149, 3.47111, 91.0405, 45.5426, 45.4404 - 0.947, 9.28541, 10.0642, 3.24259, 91.1392, 45.591, 45.4909 - 0.948, 9.29539, 9.90461, 2.89501, 91.2364, 45.6331, 45.5469 - 0.949, 9.3052, 9.70471, 2.44992, 91.3316, 45.6708, 45.6054 - 0.95, 9.31483, 9.55011, 1.94164, 91.4253, 45.7061, 45.6645 - 0.951, 9.32435, 9.50701, 1.4076, 91.5186, 45.739, 45.7251 - 0.952, 9.33391, 9.59373, 0.877833, 91.6127, 45.7689, 45.7889 - 0.953, 9.34359, 9.773, 0.367431, 91.7085, 45.7979, 45.8548 - 0.954, 9.35346, 9.96793, -0.125541, 91.8063, 45.8309, 45.9186 - 0.955, 9.36349, 10.095, -0.616024, 91.9054, 45.8709, 45.9771 - 0.956, 9.37359, 10.0999, -1.12333, 92.0044, 45.916, 46.031 - 0.957, 9.38363, 9.98056, -1.66099, 92.1023, 45.9621, 46.0834 - 0.958, 9.39351, 9.78832, -2.22878, 92.1984, 46.0079, 46.1346 - 0.959, 9.40321, 9.60556, -2.80975, 92.2926, 46.0566, 46.181 - 0.96, 9.41277, 9.51057, -3.37326, 92.3859, 46.1117, 46.2197 - 0.961, 9.42229, 9.54393, -3.88316, 92.4795, 46.1722, 46.2527 - 0.962, 9.43191, 9.69123, -4.30804, 92.5746, 46.2343, 46.2849 - 0.963, 9.4417, 9.88926, -4.63009, 92.6716, 46.2968, 46.3184 - 0.964, 9.45167, 10.0531, -4.84936, 92.7702, 46.3627, 46.3504 - 0.965, 9.46176, 10.1127, -4.98208, 92.8694, 46.4337, 46.3783 - 0.966, 9.47183, 10.0425, -5.05344, 92.968, 46.5062, 46.4046 - 0.967, 9.48179, 9.87283, -5.08773, 93.0648, 46.5735, 46.435 - 0.968, 9.49157, 9.67641, -5.09896, 93.1597, 46.6326, 46.4717 - 0.969, 9.50117, 9.53741, -5.08565, 93.2533, 46.6867, 46.5119 - 0.97, 9.5107, 9.51532, -5.03127, 93.3466, 46.7396, 46.5525 - 0.971, 9.52027, 9.61948, -4.91047, 93.441, 46.7908, 46.5951 - 0.972, 9.52998, 9.80514, -4.69852, 93.5372, 46.8367, 46.6445 - 0.973, 9.53988, 9.99269, -4.38083, 93.6352, 46.8762, 46.7021 - 0.974, 9.54993, 10.1018, -3.95902, 93.7343, 46.9123, 46.7646 - 0.975, 9.56002, 10.0858, -3.45136, 93.8333, 46.948, 46.8279 - 0.976, 9.57004, 9.95167, -2.88745, 93.9309, 46.9815, 46.8927 - 0.977, 9.57989, 9.757, -2.29903, 94.0266, 47.0088, 46.9621 - 0.978, 9.58956, 9.58523, -1.71017, 94.1206, 47.0288, 47.037 - 0.979, 9.59911, 9.50992, -1.13028, 94.2139, 47.0456, 47.1138 - 0.98, 9.60865, 9.56322, -0.552496, 94.3077, 47.0643, 47.1886 - 0.981, 9.61829, 9.72218, 0.0421727, 94.4031, 47.0865, 47.2611 - 0.982, 9.62811, 9.91859, 0.676277, 94.5004, 47.1105, 47.3334 - 0.983, 9.6381, 10.0683, 1.3662, 94.5992, 47.1355, 47.4064 - 0.984, 9.64819, 10.1072, 2.11467, 94.6983, 47.1635, 47.4774 - 0.985, 9.65826, 10.0188, 2.90826, 94.7966, 47.1965, 47.5431 - 0.986, 9.66819, 9.84098, 3.72069, 94.8932, 47.2342, 47.6028 - 0.987, 9.67793, 9.65012, 4.52085, 94.9878, 47.2743, 47.6583 - 0.988, 9.68752, 9.52794, 5.2826, 95.0813, 47.3161, 47.7106 - 0.989, 9.69705, 9.5267, 5.99278, 95.1748, 47.3615, 47.7587 - 0.99, 9.70663, 9.64682, 6.65469, 95.2694, 47.4141, 47.8001 - 0.991, 9.71638, 9.83671, 7.28575, 95.3659, 47.4757, 47.8341 - 0.992, 9.7263, 10.015, 7.91016, 95.4641, 47.5453, 47.8618 - 0.993, 9.73636, 10.1053, 8.5493, 95.5633, 47.6208, 47.885 - 0.994, 9.74645, 10.069, 9.21326, 95.662, 47.7009, 47.9039 - 0.995, 9.75644, 9.92179, 9.89654, 95.7594, 47.7857, 47.9172 - 0.996, 9.76627, 9.72687, 10.5796, 95.8548, 47.8757, 47.9235 - 0.997, 9.77592, 9.56776, 11.2353, 95.9487, 47.9704, 47.9234 - 0.998, 9.78546, 9.51257, 11.8385, 96.042, 48.0683, 47.9191 - 0.999, 9.795, 9.58484, 12.3748, 96.136, 48.169, 47.9121 - 1, 9.80467, 9.75349, 12.8451, 96.2317, 48.2744, 47.9016 - 1.001, 9.81452, 9.94618, 13.2656, 96.3293, 48.387, 47.8856 - 1.002, 9.82454, 10.0803, 13.6615, 96.4281, 48.5068, 47.864 - 1.003, 9.83463, 10.0986, 14.0578, 96.5272, 48.6306, 47.8392 - 1.004, 9.84467, 9.99316, 14.4705, 96.6252, 48.7547, 47.8136 - 1.005, 9.85457, 9.8094, 14.9008, 96.7215, 48.8786, 47.7869 - 1.006, 9.86429, 9.62609, 15.335, 96.8159, 49.0047, 47.7562 - 1.007, 9.87386, 9.52173, 15.7495, 96.9093, 49.1342, 47.7206 - 1.008, 9.8834, 9.54096, 16.12, 97.0029, 49.2655, 47.6828 - 1.009, 9.893, 9.67542, 16.4299, 97.0978, 49.3966, 47.6459 - 1.01, 9.90278, 9.86739, 16.6772, 97.1946, 49.5287, 47.6097 - 1.011, 9.91273, 10.0346, 16.8752, 97.2931, 49.6654, 47.5706 - 1.012, 9.9228, 10.1054, 17.0478, 97.3922, 49.8077, 47.5271 - 1.013, 9.93287, 10.0496, 17.2212, 97.4908, 49.9515, 47.4821 - 1.014, 9.94284, 9.89125, 17.4148, 97.5878, 50.0921, 47.4393 - 1.015, 9.95264, 9.69822, 17.6343, 97.683, 50.2293, 47.3982 - 1.016, 9.96227, 9.55326, 17.8704, 97.7767, 50.3672, 47.3548 - 1.017, 9.9718, 9.51843, 18.102, 97.8701, 50.5082, 47.3073 - 1.018, 9.98136, 9.60852, 18.3047, 97.9643, 50.6505, 47.2588 - 1.019, 9.99106, 9.78483, 18.4598, 98.0603, 50.7913, 47.2132 - 1.02, 10.0009, 9.97175, 18.5616, 98.1581, 50.9316, 47.1698 - 1.021, 10.011, 10.0892, 18.6193, 98.2571, 51.0753, 47.1244 - 1.022, 10.0211, 10.0869, 18.6544, 98.3561, 51.2235, 47.0752 - 1.023, 10.0311, 9.96604, 18.6928, 98.4538, 51.3719, 47.0252 - 1.024, 10.041, 9.77842, 18.7555, 98.5497, 51.5156, 46.9784 - 1.025, 10.0506, 9.60452, 18.8515, 98.644, 51.6551, 46.9339 - 1.026, 10.0602, 9.5188, 18.9747, 98.7373, 51.7952, 46.8876 - 1.027, 10.0697, 9.55791, 19.1063, 98.8311, 51.9386, 46.8377 - 1.028, 10.0794, 9.70496, 19.222, 98.9263, 52.0835, 46.7873 - 1.029, 10.0892, 9.89687, 19.3013, 99.0234, 52.227, 46.74 - 1.03, 10.0992, 10.0514, 19.3347, 99.122, 52.3699, 46.6949 - 1.031, 10.1092, 10.1023, 19.3279, 99.2211, 52.5155, 46.6482 - 1.032, 10.1193, 10.028, 19.2995, 99.3195, 52.6642, 46.5983 - 1.033, 10.1292, 9.86038, 19.274, 99.4162, 52.8121, 46.5479 - 1.034, 10.139, 9.67133, 19.2737, 99.5111, 52.9555, 46.5002 - 1.035, 10.1486, 9.54185, 19.31, 99.6047, 53.0953, 46.4547 - 1.036, 10.1581, 9.52737, 19.3797, 99.6982, 53.2358, 46.4078 - 1.037, 10.1677, 9.63397, 19.4663, 99.7927, 53.3795, 46.3581 - 1.038, 10.1775, 9.81587, 19.5461, 99.889, 53.525, 46.3079 - 1.039, 10.1874, 9.99508, 19.5972, 99.987, 53.6701, 46.26 - 1.04, 10.1974, 10.0948, 19.6075, 100.086, 53.8146, 46.214 - 1.041, 10.2075, 10.0725, 19.5792, 100.185, 53.9606, 46.167 - 1.042, 10.2175, 9.93771, 19.5281, 100.282, 54.108, 46.1177 - 1.043, 10.2273, 9.74836, 19.4776, 100.378, 54.2545, 46.0678 - 1.044, 10.237, 9.58559, 19.4503, 100.472, 54.3975, 46.0197 - 1.045, 10.2466, 9.51911, 19.4598, 100.565, 54.5377, 45.9731 - 1.046, 10.2561, 9.5773, 19.5056, 100.659, 54.6784, 45.9261 - 1.047, 10.2658, 9.73512, 19.5735, 100.755, 54.8219, 45.8773 - 1.048, 10.2756, 9.92486, 19.6408, 100.852, 54.968, 45.8277 - 1.049, 10.2856, 10.0652, 19.685, 100.951, 55.1145, 45.7792 - 1.05, 10.2957, 10.0961, 19.6917, 101.05, 55.2605, 45.7321 - 1.051, 10.3057, 10.0044, 19.6604, 101.148, 55.406, 45.6852 - 1.052, 10.3156, 9.82953, 19.6043, 101.245, 55.5515, 45.637 - 1.053, 10.3254, 9.64644, 19.5455, 101.339, 55.6964, 45.5876 - 1.054, 10.335, 9.53359, 19.5068, 101.433, 55.8395, 45.5386 - 1.055, 10.3445, 9.53925, 19.5035, 101.526, 55.9805, 45.4911 - 1.056, 10.3541, 9.66089, 19.5375, 101.621, 56.1214, 45.4444 - 1.057, 10.3639, 9.84628, 19.5968, 101.718, 56.2648, 45.3967 - 1.058, 10.3738, 10.016, 19.6601, 101.816, 56.4116, 45.3474 - 1.059, 10.3838, 10.0973, 19.7045, 101.915, 56.5597, 45.2979 - 1.06, 10.3939, 10.0554, 19.7141, 102.014, 56.7063, 45.2501 - 1.061, 10.4039, 9.90849, 19.6861, 102.111, 56.8507, 45.2036 - 1.062, 10.4137, 9.71951, 19.6313, 102.206, 56.9942, 45.1564 - 1.063, 10.4234, 9.56947, 19.5705, 102.3, 57.1381, 45.1071 - 1.064, 10.4329, 9.52261, 19.5265, 102.393, 57.2817, 45.0572 - 1.065, 10.4425, 9.5989, 19.5158, 102.488, 57.4235, 45.0091 - 1.066, 10.4521, 9.76555, 19.5425, 102.583, 57.5647, 44.963 - 1.067, 10.462, 9.95108, 19.5967, 102.681, 57.7082, 44.9161 - 1.068, 10.472, 10.076, 19.6582, 102.78, 57.8559, 44.8667 - 1.069, 10.4821, 10.0869, 19.7045, 102.879, 58.0051, 44.8164 - 1.07, 10.4921, 9.97911, 19.7184, 102.977, 58.1517, 44.7683 - 1.071, 10.502, 9.79902, 19.6951, 103.073, 58.2945, 44.7224 - 1.072, 10.5117, 9.6238, 19.6434, 103.167, 58.4364, 44.6758 - 1.073, 10.5213, 9.5285, 19.5829, 103.261, 58.5799, 44.6262 - 1.074, 10.5308, 9.55389, 19.536, 103.354, 58.7241, 44.5756 - 1.075, 10.5405, 9.68896, 19.5203, 103.45, 58.8666, 44.5275 - 1.076, 10.5503, 9.87575, 19.5415, 103.546, 59.0081, 44.482 - 1.077, 10.5602, 10.0342, 19.5915, 103.645, 59.1523, 44.4354 - 1.078, 10.5703, 10.0965, 19.6518, 103.744, 59.3009, 44.3856 - 1.079, 10.5803, 10.036, 19.6997, 103.842, 59.4504, 44.3348 - 1.08, 10.5903, 9.87871, 19.7176, 103.939, 59.5961, 44.2868 - 1.081, 10.6001, 9.69217, 19.6989, 104.034, 59.7374, 44.2415 - 1.082, 10.6097, 9.55628, 19.6507, 104.128, 59.8784, 44.195 - 1.083, 10.6192, 9.5292, 19.5912, 104.222, 60.022, 44.1449 - 1.084, 10.6288, 9.62243, 19.5427, 104.316, 60.1668, 44.0941 - 1.085, 10.6385, 9.79593, 19.5231, 104.412, 60.3098, 44.0463 - 1.086, 10.6484, 9.97529, 19.5398, 104.51, 60.4521, 44.001 - 1.087, 10.6584, 10.0837, 19.5863, 104.609, 60.5971, 43.9544 - 1.088, 10.6685, 10.0747, 19.6452, 104.708, 60.7462, 43.9042 - 1.089, 10.6785, 9.95239, 19.6943, 104.805, 60.8951, 43.8535 - 1.09, 10.6884, 9.76916, 19.7154, 104.901, 61.0395, 43.8058 - 1.091, 10.6981, 9.60359, 19.7007, 104.995, 61.1798, 43.7606 - 1.092, 10.7077, 9.5266, 19.6559, 105.089, 61.3205, 43.7137 - 1.093, 10.7172, 9.57108, 19.5978, 105.183, 61.4644, 43.6635 - 1.094, 10.7268, 9.71786, 19.5482, 105.278, 61.6095, 43.613 - 1.095, 10.7367, 9.90399, 19.5258, 105.375, 61.7533, 43.5654 - 1.096, 10.7466, 10.0497, 19.5387, 105.474, 61.8966, 43.52 - 1.097, 10.7567, 10.0926, 19.5821, 105.573, 62.0425, 43.4729 - 1.098, 10.7668, 10.0144, 19.6394, 105.671, 62.1913, 43.4228 - 1.099, 10.7767, 9.84869, 19.6892, 105.768, 62.339, 43.3725 - 1.1, 10.7864, 9.6666, 19.7128, 105.862, 62.4821, 43.3251 - 1.101, 10.7961, 9.5461, 19.7015, 105.956, 62.6221, 43.2794 - 1.102, 10.8056, 9.53876, 19.6596, 106.05, 62.763, 43.232 - 1.103, 10.8152, 9.64762, 19.6031, 106.144, 62.907, 43.1821 - 1.104, 10.8249, 9.82594, 19.5531, 106.241, 63.0525, 43.1322 - 1.105, 10.8348, 9.99727, 19.5285, 106.339, 63.1972, 43.0847 - 1.106, 10.8449, 10.0882, 19.5384, 106.438, 63.3418, 43.0386 - 1.107, 10.855, 10.0599, 19.5789, 106.536, 63.4881, 42.9912 - 1.108, 10.8649, 9.92457, 19.6347, 106.634, 63.6357, 42.9415 - 1.109, 10.8748, 9.74027, 19.6848, 106.729, 63.7819, 42.8918 - 1.11, 10.8844, 9.586, 19.7102, 106.823, 63.9243, 42.8442 - 1.111, 10.894, 9.52783, 19.7016, 106.917, 64.0645, 42.7978 - 1.112, 10.9036, 9.59059, 19.6623, 107.011, 64.2057, 42.7503 - 1.113, 10.9132, 9.74728, 19.6072, 107.107, 64.3499, 42.701 - 1.114, 10.9231, 9.9307, 19.5572, 107.204, 64.4958, 42.6516 - 1.115, 10.9331, 10.0622, 19.5311, 107.303, 64.6418, 42.6037 - 1.116, 10.9431, 10.0856, 19.5386, 107.402, 64.7874, 42.5569 - 1.117, 10.9532, 9.9909, 19.5767, 107.5, 64.9333, 42.5095 - 1.118, 10.9631, 9.81877, 19.6311, 107.596, 65.0793, 42.4606 - 1.119, 10.9728, 9.64304, 19.681, 107.691, 65.2241, 42.4113 - 1.12, 10.9824, 9.53899, 19.7077, 107.784, 65.3664, 42.3631 - 1.121, 10.9919, 9.55113, 19.7012, 107.878, 65.5071, 42.316 - 1.122, 11.0016, 9.67415, 19.664, 107.973, 65.6486, 42.2688 - 1.123, 11.0113, 9.85526, 19.6104, 108.069, 65.793, 42.2203 - 1.124, 11.0213, 10.0168, 19.5606, 108.168, 65.9398, 42.1709 - 1.125, 11.0313, 10.0896, 19.5335, 108.267, 66.087, 42.1223 - 1.126, 11.0414, 10.0426, 19.5392, 108.365, 66.2329, 42.0751 - 1.127, 11.0513, 9.89596, 19.5754, 108.462, 66.3777, 42.0282 - 1.128, 11.0612, 9.71263, 19.6284, 108.558, 66.5221, 41.98 - 1.129, 11.0708, 9.57117, 19.6779, 108.651, 66.6661, 41.9305 - 1.13, 11.0803, 9.53215, 19.7053, 108.745, 66.8088, 41.8816 - 1.131, 11.0899, 9.61219, 19.7003, 108.839, 66.9499, 41.8343 - 1.132, 11.0996, 9.77689, 19.6649, 108.935, 67.0917, 41.7877 - 1.133, 11.1095, 9.95564, 19.6127, 109.033, 67.2365, 41.7396 - 1.134, 11.1195, 10.0718, 19.5634, 109.132, 67.3844, 41.69 - 1.135, 11.1296, 10.0758, 19.5358, 109.23, 67.5325, 41.6407 - 1.136, 11.1396, 9.96584, 19.5402, 109.328, 67.678, 41.5935 - 1.137, 11.1495, 9.78925, 19.5749, 109.424, 67.8212, 41.5472 - 1.138, 11.1592, 9.62171, 19.6265, 109.519, 67.9643, 41.4993 - 1.139, 11.1688, 9.53497, 19.6755, 109.612, 68.1082, 41.4493 - 1.14, 11.1783, 9.56613, 19.7032, 109.706, 68.2514, 41.3999 - 1.141, 11.1879, 9.70173, 19.6992, 109.801, 68.3929, 41.3529 - 1.142, 11.1977, 9.88359, 19.6652, 109.898, 68.535, 41.3069 - 1.143, 11.2077, 10.0338, 19.6141, 109.997, 68.6807, 41.2589 - 1.144, 11.2177, 10.088, 19.5655, 110.096, 68.8296, 41.2086 - 1.145, 11.2278, 10.023, 19.5378, 110.194, 68.9778, 41.1591 - 1.146, 11.2377, 9.86689, 19.5414, 110.291, 69.1221, 41.1123 - 1.147, 11.2475, 9.68652, 19.575, 110.386, 69.2638, 41.0665 - 1.148, 11.2571, 9.55921, 19.6255, 110.48, 69.4064, 41.0184 - 1.149, 11.2667, 9.53944, 19.6737, 110.573, 69.5506, 40.9678 - 1.15, 11.2763, 9.63559, 19.7013, 110.668, 69.6942, 40.9183 - 1.151, 11.286, 9.80637, 19.6978, 110.764, 69.836, 40.8718 - 1.152, 11.2959, 9.97856, 19.6647, 110.862, 69.9787, 40.8261 - 1.153, 11.3059, 10.0784, 19.6147, 110.961, 70.1255, 40.7777 - 1.154, 11.316, 10.0632, 19.5669, 111.059, 70.2751, 40.727 - 1.155, 11.326, 9.93949, 19.5395, 111.157, 70.4225, 40.6776 - 1.156, 11.3358, 9.76046, 19.5429, 111.253, 70.5653, 40.6315 - 1.157, 11.3455, 9.6028, 19.5757, 111.347, 70.706, 40.5857 - 1.158, 11.3551, 9.53405, 19.6252, 111.44, 70.8486, 40.537 - 1.159, 11.3647, 9.58356, 19.6726, 111.534, 70.9932, 40.4862 - 1.16, 11.3743, 9.73004, 19.6997, 111.63, 71.1371, 40.437 - 1.161, 11.3841, 9.91065, 19.6963, 111.727, 71.2794, 40.3911 - 1.162, 11.3941, 10.048, 19.6638, 111.826, 71.4231, 40.3453 - 1.163, 11.4042, 10.0832, 19.6147, 111.924, 71.5709, 40.2962 - 1.164, 11.4142, 10.0014, 19.5678, 112.023, 71.7203, 40.2454 - 1.165, 11.4241, 9.83767, 19.5411, 112.119, 71.8664, 40.1966 - 1.166, 11.4339, 9.66221, 19.5446, 112.214, 72.0078, 40.1508 - 1.167, 11.4435, 9.5502, 19.5769, 112.308, 72.1482, 40.1047 - 1.168, 11.453, 9.54959, 19.6256, 112.401, 72.2911, 40.0554 - 1.169, 11.4627, 9.66053, 19.6719, 112.496, 72.4361, 40.0046 - 1.17, 11.4724, 9.83541, 19.6982, 112.592, 72.5802, 39.9562 - 1.171, 11.4823, 9.99926, 19.6945, 112.691, 72.7232, 39.9104 - 1.172, 11.4924, 10.0819, 19.6623, 112.789, 72.8681, 39.864 - 1.173, 11.5024, 10.048, 19.614, 112.888, 73.0164, 39.8145 - 1.174, 11.5124, 9.91214, 19.5682, 112.985, 73.1648, 39.764 - 1.175, 11.5222, 9.73267, 19.5424, 113.081, 73.3093, 39.7158 - 1.176, 11.5319, 9.58648, 19.5464, 113.175, 73.4499, 39.67 - 1.177, 11.5414, 9.53617, 19.5786, 113.268, 73.5905, 39.6233 - 1.178, 11.551, 9.6032, 19.6265, 113.363, 73.7339, 39.5737 - 1.179, 11.5607, 9.75877, 19.6718, 113.458, 73.8791, 39.5234 - 1.18, 11.5705, 9.93616, 19.697, 113.556, 74.0237, 39.4755 - 1.181, 11.5805, 10.0593, 19.6926, 113.654, 74.1677, 39.4295 - 1.182, 11.5906, 10.0756, 19.6604, 113.753, 74.3136, 39.3825 - 1.183, 11.6006, 9.97808, 19.6128, 113.851, 74.4615, 39.3329 - 1.184, 11.6105, 9.80863, 19.5681, 113.947, 74.6084, 39.283 - 1.185, 11.6203, 9.6399, 19.5436, 114.042, 74.7517, 39.2352 - 1.186, 11.6298, 9.54419, 19.5484, 114.136, 74.892, 39.1889 - 1.187, 11.6394, 9.56243, 19.5808, 114.229, 75.033, 39.1416 - 1.188, 11.649, 9.68671, 19.6281, 114.324, 75.1768, 39.0922 - 1.189, 11.6588, 9.8637, 19.6721, 114.421, 75.3224, 39.0426 - 1.19, 11.6687, 10.0175, 19.6959, 114.519, 75.4677, 38.9948 - 1.191, 11.6788, 10.0823, 19.6905, 114.618, 75.6128, 38.9482 - 1.192, 11.6888, 10.0304, 19.658, 114.717, 75.7589, 38.9008 - 1.193, 11.6988, 9.88411, 19.611, 114.814, 75.9058, 38.8516 - 1.194, 11.7086, 9.70618, 19.5676, 114.909, 76.0513, 38.8022 - 1.195, 11.7182, 9.57288, 19.5446, 115.003, 76.1937, 38.7543 - 1.196, 11.7278, 9.54126, 19.5506, 115.096, 76.3343, 38.7075 - 1.197, 11.7374, 9.6248, 19.5834, 115.191, 76.4758, 38.66 - 1.198, 11.7471, 9.78761, 19.6301, 115.287, 76.62, 38.6111 - 1.199, 11.757, 9.95987, 19.6727, 115.385, 76.7661, 38.5618 - 1.2, 11.767, 10.0678, 19.6949, 115.483, 76.9124, 38.5137 - 1.201, 11.777, 10.0652, 19.6882, 115.582, 77.0581, 38.4667 - 1.202, 11.787, 9.95325, 19.6552, 115.68, 77.2038, 38.4193 - 1.203, 11.7969, 9.78006, 19.6087, 115.776, 77.3493, 38.3706 - 1.204, 11.8066, 9.61983, 19.5668, 115.87, 77.4936, 38.3214 - 1.205, 11.8162, 9.5412, 19.5455, 115.964, 77.6359, 38.2731 - 1.206, 11.8258, 9.57779, 19.5531, 116.058, 77.7768, 38.226 - 1.207, 11.8354, 9.71383, 19.5864, 116.153, 77.9187, 38.1787 - 1.208, 11.8452, 9.89095, 19.6325, 116.25, 78.0634, 38.1302 - 1.209, 11.8552, 10.0332, 19.6737, 116.348, 78.2104, 38.0809 - 1.21, 11.8652, 10.0798, 19.694, 116.447, 78.3576, 38.0324 - 1.211, 11.8753, 10.0107, 19.6856, 116.545, 78.5033, 37.9852 - 1.212, 11.8852, 9.85571, 19.652, 116.642, 78.6478, 37.9382 - 1.213, 11.895, 9.68125, 19.6061, 116.737, 78.792, 37.8898 - 1.214, 11.9046, 9.5621, 19.5657, 116.831, 78.9358, 37.8403 - 1.215, 11.9141, 9.54924, 19.5465, 116.925, 79.0783, 37.7916 - 1.216, 11.9237, 9.6481, 19.5557, 117.019, 79.2195, 37.7445 - 1.217, 11.9335, 9.81624, 19.5898, 117.116, 79.3618, 37.6977 - 1.218, 11.9434, 9.98156, 19.6354, 117.213, 79.5073, 37.6493 - 1.219, 11.9534, 10.0733, 19.6749, 117.312, 79.6553, 37.5997 - 1.22, 11.9635, 10.0521, 19.693, 117.411, 79.8029, 37.5508 - 1.221, 11.9735, 9.92724, 19.6828, 117.508, 79.9478, 37.5039 - 1.222, 11.9833, 9.75226, 19.6484, 117.604, 80.0909, 37.4573 - 1.223, 11.993, 9.60216, 19.6031, 117.698, 80.2343, 37.4088 - 1.224, 12.0025, 9.54122, 19.5645, 117.792, 80.3782, 37.3589 - 1.225, 12.0121, 9.59547, 19.5475, 117.886, 80.5209, 37.3101 - 1.226, 12.0218, 9.74158, 19.5587, 117.981, 80.6624, 37.2634 - 1.227, 12.0316, 9.91689, 19.5936, 118.079, 80.8052, 37.217 - 1.228, 12.0416, 10.0463, 19.6386, 118.177, 80.9519, 37.1683 - 1.229, 12.0517, 10.0743, 19.6762, 118.276, 81.1007, 37.1181 - 1.23, 12.0617, 9.98911, 19.692, 118.374, 81.2479, 37.0693 - 1.231, 12.0716, 9.82725, 19.6797, 118.471, 81.3914, 37.023 - 1.232, 12.0813, 9.65813, 19.6444, 118.565, 81.5334, 36.9766 - 1.233, 12.0909, 9.55421, 19.5997, 118.659, 81.6767, 36.9276 - 1.234, 12.1005, 9.55995, 19.5631, 118.753, 81.8208, 36.8772 - 1.235, 12.1101, 9.67281, 19.5486, 118.848, 81.9636, 36.8287 - 1.236, 12.1199, 9.84435, 19.5619, 118.944, 82.1054, 36.7827 - 1.237, 12.1298, 10.001, 19.5977, 119.042, 82.2492, 36.7362 - 1.238, 12.1398, 10.0758, 19.642, 119.141, 82.3971, 36.6868 - 1.239, 12.1499, 10.0366, 19.6776, 119.24, 82.5462, 36.6363 - 1.24, 12.1599, 9.90035, 19.6908, 119.337, 82.6922, 36.5882 - 1.241, 12.1697, 9.72553, 19.6763, 119.432, 82.8342, 36.5424 - 1.242, 12.1793, 9.58705, 19.6401, 119.526, 82.9756, 36.4957 - 1.243, 12.1889, 9.54418, 19.5962, 119.62, 83.1192, 36.446 - 1.244, 12.1985, 9.61523, 19.5616, 119.714, 83.2636, 36.3955 - 1.245, 12.2082, 9.76966, 19.5499, 119.81, 83.4065, 36.3477 - 1.246, 12.218, 9.94125, 19.5655, 119.908, 83.5488, 36.3021 - 1.247, 12.228, 10.0565, 19.6022, 120.006, 83.6939, 36.2551 - 1.248, 12.2381, 10.066, 19.6457, 120.105, 83.8426, 36.2051 - 1.249, 12.2481, 9.96587, 19.6791, 120.203, 83.9912, 36.1547 - 1.25, 12.258, 9.79903, 19.6893, 120.299, 84.1355, 36.1074 - 1.251, 12.2677, 9.63703, 19.6726, 120.393, 84.2764, 36.0618 - 1.252, 12.2773, 9.54926, 19.6354, 120.487, 84.4179, 36.0144 - 1.253, 12.2869, 9.57325, 19.5924, 120.581, 84.562, 35.9641 - 1.254, 12.2965, 9.69866, 19.5602, 120.676, 84.7066, 35.9141 - 1.255, 12.3063, 9.87166, 19.5515, 120.773, 84.8496, 35.8671 - 1.256, 12.3162, 10.0181, 19.5694, 120.871, 84.9927, 35.8215 - 1.257, 12.3263, 10.0753, 19.607, 120.97, 85.1391, 35.7737 - 1.258, 12.3363, 10.0188, 19.6495, 121.068, 85.2881, 35.7232 - 1.259, 12.3463, 9.87286, 19.6804, 121.165, 85.4354, 35.6735 - 1.26, 12.356, 9.70014, 19.6876, 121.26, 85.5781, 35.6268 - 1.261, 12.3657, 9.57462, 19.6685, 121.354, 85.7184, 35.5811 - 1.262, 12.3752, 9.55003, 19.6305, 121.448, 85.8604, 35.5328 - 1.263, 12.3848, 9.63684, 19.5885, 121.543, 86.005, 35.4823 - 1.264, 12.3946, 9.79776, 19.559, 121.639, 86.1497, 35.433 - 1.265, 12.4044, 9.96379, 19.5533, 121.736, 86.2931, 35.3866 - 1.266, 12.4144, 10.0638, 19.5737, 121.835, 86.4373, 35.3405 - 1.267, 12.4245, 10.055, 19.6121, 121.934, 86.5846, 35.2919 - 1.268, 12.4345, 9.94126, 19.6534, 122.031, 86.7331, 35.2415 - 1.269, 12.4444, 9.77137, 19.6816, 122.127, 86.8787, 35.1926 - 1.27, 12.4541, 9.61815, 19.6856, 122.221, 87.0202, 35.1463 - 1.271, 12.4636, 9.54725, 19.664, 122.315, 87.1605, 35.0999 - 1.272, 12.4732, 9.58896, 19.6252, 122.409, 87.3032, 35.051 - 1.273, 12.4829, 9.72534, 19.5846, 122.505, 87.4482, 35.0008 - 1.274, 12.4927, 9.89788, 19.5579, 122.602, 87.593, 34.9523 - 1.275, 12.5026, 10.0326, 19.5556, 122.7, 87.7371, 34.9059 - 1.276, 12.5127, 10.0719, 19.5784, 122.799, 87.8824, 34.8592 - 1.277, 12.5227, 9.99895, 19.6175, 122.897, 88.0299, 34.8102 - 1.278, 12.5327, 9.8451, 19.6574, 122.994, 88.1772, 34.7602 - 1.279, 12.5424, 9.67634, 19.6825, 123.089, 88.3213, 34.7119 - 1.28, 12.552, 9.56497, 19.6831, 123.182, 88.4621, 34.6655 - 1.281, 12.5616, 9.55866, 19.6591, 123.276, 88.6029, 34.6185 - 1.282, 12.5712, 9.66003, 19.6198, 123.371, 88.7463, 34.5694 - 1.283, 12.5809, 9.82557, 19.5807, 123.467, 88.8916, 34.5196 - 1.284, 12.5909, 9.98431, 19.5572, 123.565, 89.0368, 34.4716 - 1.285, 12.6009, 10.0683, 19.5583, 123.664, 89.1818, 34.425 - 1.286, 12.6109, 10.0415, 19.5836, 123.763, 89.3277, 34.3777 - 1.287, 12.6209, 9.91558, 19.623, 123.86, 89.4747, 34.3286 - 1.288, 12.6307, 9.74453, 19.6612, 123.955, 89.6205, 34.2792 - 1.289, 12.6404, 9.60167, 19.6831, 124.05, 89.7634, 34.2312 - 1.29, 12.65, 9.54816, 19.6802, 124.143, 89.9042, 34.1844 - 1.291, 12.6596, 9.60687, 19.6537, 124.237, 90.0456, 34.1369 - 1.292, 12.6692, 9.75256, 19.6141, 124.333, 90.1895, 34.0879 - 1.293, 12.6791, 9.92274, 19.5769, 124.43, 90.3352, 34.0387 - 1.294, 12.6891, 10.0445, 19.5568, 124.529, 90.4812, 33.9907 - 1.295, 12.6991, 10.0657, 19.5614, 124.628, 90.6268, 33.9437 - 1.296, 12.7091, 9.97734, 19.5891, 124.726, 90.7727, 33.8962 - 1.297, 12.719, 9.81736, 19.6287, 124.822, 90.9186, 33.8474 - 1.298, 12.7288, 9.65435, 19.6649, 124.917, 91.0632, 33.7982 - 1.299, 12.7384, 9.55815, 19.6833, 125.01, 91.2055, 33.7502 - 1.3, 12.7479, 9.56992, 19.6768, 125.104, 91.3465, 33.703 - 1.301, 12.7576, 9.68453, 19.648, 125.199, 91.4884, 33.6555 - 1.302, 12.7673, 9.8528, 19.6084, 125.296, 91.6329, 33.6068 - 1.303, 12.7773, 10.0026, 19.5734, 125.394, 91.7794, 33.5577 - 1.304, 12.7873, 10.0698, 19.5568, 125.493, 91.9261, 33.5095 - 1.305, 12.7974, 10.0256, 19.5651, 125.591, 92.0719, 33.4623 - 1.306, 12.8073, 9.88911, 19.5949, 125.688, 92.2169, 33.4149 - 1.307, 12.8171, 9.71882, 19.6345, 125.784, 92.3617, 33.3663 - 1.308, 12.8268, 9.58772, 19.6683, 125.878, 92.5056, 33.3172 - 1.309, 12.8363, 9.55194, 19.6829, 125.971, 92.6478, 33.2689 - 1.31, 12.8459, 9.62675, 19.6728, 126.066, 92.789, 33.2217 - 1.311, 12.8556, 9.78001, 19.642, 126.162, 92.9315, 33.1744 - 1.312, 12.8655, 9.946, 19.6026, 126.259, 93.0768, 33.1258 - 1.313, 12.8755, 10.0536, 19.5702, 126.358, 93.2242, 33.0765 - 1.314, 12.8856, 10.0568, 19.5574, 126.457, 93.3712, 33.0281 - 1.315, 12.8956, 9.9542, 19.5694, 126.554, 93.5164, 32.9811 - 1.316, 12.9054, 9.78994, 19.6012, 126.65, 93.6604, 32.9339 - 1.317, 12.9151, 9.63441, 19.6403, 126.745, 93.8043, 32.8853 - 1.318, 12.9247, 9.55421, 19.6713, 126.839, 93.9479, 32.8358 - 1.319, 12.9343, 9.58366, 19.682, 126.933, 94.0902, 32.7874 - 1.32, 12.944, 9.71005, 19.6683, 127.028, 94.2317, 32.7406 - 1.321, 12.9537, 9.87917, 19.6356, 127.125, 94.3748, 32.6935 - 1.322, 12.9637, 10.0185, 19.5969, 127.223, 94.5213, 32.6447 - 1.323, 12.9737, 10.0684, 19.5674, 127.322, 94.6694, 32.595 - 1.324, 12.9838, 10.0076, 19.5587, 127.42, 94.8162, 32.5468 - 1.325, 12.9937, 9.86215, 19.5742, 127.517, 94.9603, 32.5002 - 1.326, 13.0035, 9.69447, 19.6077, 127.612, 95.1032, 32.4531 - 1.327, 13.0131, 9.57641, 19.6459, 127.706, 95.2468, 32.404 - 1.328, 13.0227, 9.55851, 19.6739, 127.799, 95.3905, 32.3542 - 1.329, 13.0323, 9.64837, 19.6805, 127.894, 95.5328, 32.3061 - 1.33, 13.042, 9.8074, 19.6632, 127.99, 95.6746, 32.2598 - 1.331, 13.0519, 9.96742, 19.629, 128.088, 95.8187, 32.2127 - 1.332, 13.0619, 10.0599, 19.5913, 128.187, 95.9663, 32.1633 - 1.333, 13.072, 10.0452, 19.5651, 128.285, 96.1148, 32.1134 - 1.334, 13.082, 9.9298, 19.5606, 128.383, 96.2606, 32.0656 - 1.335, 13.0918, 9.76314, 19.5795, 128.479, 96.4033, 32.0195 - 1.336, 13.1015, 9.61668, 19.6144, 128.573, 96.5457, 31.9722 - 1.337, 13.1111, 9.55315, 19.6514, 128.667, 96.6895, 31.9224 - 1.338, 13.1207, 9.5997, 19.6759, 128.761, 96.8332, 31.8726 - 1.339, 13.1303, 9.73631, 19.6782, 128.856, 96.9755, 31.8252 - 1.34, 13.1401, 9.90439, 19.6576, 128.953, 97.1178, 31.7792 - 1.341, 13.1501, 10.0319, 19.6222, 129.052, 97.2632, 31.7316 - 1.342, 13.1602, 10.0643, 19.586, 129.151, 97.4119, 31.6815 - 1.343, 13.1702, 9.98766, 19.5634, 129.249, 97.5599, 31.6318 - 1.344, 13.1801, 9.835, 19.5632, 129.345, 97.7041, 31.5848 - 1.345, 13.1899, 9.67175, 19.5854, 129.44, 97.8457, 31.539 - 1.346, 13.1995, 9.56785, 19.6213, 129.534, 97.9881, 31.4909 - 1.347, 13.209, 9.56776, 19.6565, 129.628, 98.1323, 31.4405 - 1.348, 13.2187, 9.67146, 19.6772, 129.723, 98.2761, 31.3911 - 1.349, 13.2284, 9.83443, 19.6752, 129.819, 98.4183, 31.3446 - 1.35, 13.2383, 9.98681, 19.6514, 129.917, 98.5615, 31.2986 - 1.351, 13.2484, 10.0633, 19.6152, 130.016, 98.7084, 31.2501 - 1.352, 13.2584, 10.0313, 19.5811, 130.114, 98.8575, 31.1996 - 1.353, 13.2684, 9.90443, 19.5624, 130.211, 99.0042, 31.1506 - 1.354, 13.2782, 9.73723, 19.5665, 130.307, 99.1468, 31.1044 - 1.355, 13.2879, 9.60133, 19.5918, 130.401, 99.2878, 31.0582 - 1.356, 13.2974, 9.55492, 19.6282, 130.495, 99.4308, 31.0092 - 1.357, 13.307, 9.61783, 19.6612, 130.589, 99.5754, 30.9586 - 1.358, 13.3167, 9.76302, 19.6778, 130.685, 99.719, 30.9101 - 1.359, 13.3266, 9.92824, 19.6715, 130.782, 99.8615, 30.8642 - 1.36, 13.3365, 10.0427, 19.6448, 130.881, 100.006, 30.8177 - 1.361, 13.3466, 10.0573, 19.6083, 130.979, 100.154, 30.7682 - 1.362, 13.3566, 9.96605, 19.5766, 131.077, 100.303, 30.7178 - 1.363, 13.3665, 9.80796, 19.5622, 131.173, 100.448, 30.6697 - 1.364, 13.3762, 9.65086, 19.5707, 131.268, 100.589, 30.624 - 1.365, 13.3858, 9.56205, 19.5987, 131.362, 100.73, 30.5771 - 1.366, 13.3954, 9.57952, 19.6351, 131.456, 100.874, 30.5273 - 1.367, 13.405, 9.69572, 19.6654, 131.551, 101.019, 30.477 - 1.368, 13.4148, 9.86079, 19.6776, 131.648, 101.162, 30.4295 - 1.369, 13.4247, 10.004, 19.667, 131.746, 101.305, 30.3837 - 1.37, 13.4348, 10.064, 19.6377, 131.845, 101.451, 30.3363 - 1.371, 13.4448, 10.0151, 19.6016, 131.943, 101.6, 30.2863 - 1.372, 13.4548, 9.87843, 19.5728, 132.04, 101.747, 30.2364 - 1.373, 13.4646, 9.71255, 19.5628, 132.135, 101.89, 30.1892 - 1.374, 13.4742, 9.58855, 19.5756, 132.229, 102.031, 30.1434 - 1.375, 13.4838, 9.55952, 19.6059, 132.323, 102.173, 30.0955 - 1.376, 13.4934, 9.63782, 19.6417, 132.417, 102.317, 30.0453 - 1.377, 13.5031, 9.78982, 19.6688, 132.513, 102.462, 29.9958 - 1.378, 13.513, 9.95033, 19.6765, 132.611, 102.605, 29.949 - 1.379, 13.523, 10.0506, 19.6617, 132.71, 102.75, 29.9029 - 1.38, 13.533, 10.0477, 19.6304, 132.808, 102.896, 29.8546 - 1.381, 13.543, 9.94291, 19.5951, 132.906, 103.045, 29.8044 - 1.382, 13.5529, 9.78128, 19.5697, 133.002, 103.19, 29.7554 - 1.383, 13.5626, 9.63209, 19.5644, 133.096, 103.332, 29.7088 - 1.384, 13.5722, 9.55926, 19.5812, 133.19, 103.473, 29.6624 - 1.385, 13.5818, 9.59395, 19.6134, 133.284, 103.615, 29.6137 - 1.386, 13.5914, 9.72123, 19.6481, 133.379, 103.76, 29.5636 - 1.387, 13.6012, 9.88651, 19.6715, 133.476, 103.905, 29.515 - 1.388, 13.6112, 10.0189, 19.6744, 133.575, 104.049, 29.4685 - 1.389, 13.6212, 10.0617, 19.6557, 133.673, 104.194, 29.4218 - 1.39, 13.6312, 9.99661, 19.6228, 133.771, 104.342, 29.3728 - 1.391, 13.6412, 9.85151, 19.589, 133.868, 104.489, 29.3229 - 1.392, 13.6509, 9.68862, 19.5675, 133.963, 104.633, 29.2746 - 1.393, 13.6606, 9.57773, 19.567, 134.057, 104.774, 29.2281 - 1.394, 13.6701, 9.56633, 19.5875, 134.151, 104.915, 29.1811 - 1.395, 13.6798, 9.6593, 19.621, 134.246, 105.059, 29.132 - 1.396, 13.6895, 9.81681, 19.6539, 134.342, 105.204, 29.0823 - 1.397, 13.6994, 9.97142, 19.6733, 134.44, 105.349, 29.0343 - 1.398, 13.7094, 10.057, 19.6714, 134.539, 105.494, 28.9877 - 1.399, 13.7194, 10.0369, 19.6491, 134.637, 105.64, 28.9403 - 1.4, 13.7294, 9.91986, 19.6152, 134.734, 105.787, 28.8911 - 1.401, 13.7393, 9.75598, 19.5834, 134.83, 105.933, 28.8418 - 1.402, 13.7489, 9.61537, 19.5662, 134.924, 106.075, 28.7939 - 1.403, 13.7585, 9.55808, 19.5705, 135.018, 106.216, 28.7472 - 1.404, 13.7681, 9.60842, 19.5945, 135.112, 106.358, 28.6996 - 1.405, 13.7778, 9.74463, 19.6285, 135.208, 106.502, 28.6504 - 1.406, 13.7876, 9.90827, 19.6591, 135.305, 106.647, 28.6013 - 1.407, 13.7976, 10.0293, 19.674, 135.404, 106.793, 28.5535 - 1.408, 13.8076, 10.0561, 19.6674, 135.502, 106.938, 28.5066 - 1.409, 13.8176, 9.97757, 19.6419, 135.6, 107.084, 28.4588 - 1.41, 13.8276, 9.82778, 19.6077, 135.696, 107.231, 28.4097 - 1.411, 13.8373, 9.67125, 19.5786, 135.791, 107.375, 28.3608 - 1.412, 13.8469, 9.57522, 19.566, 135.885, 107.517, 28.313 - 1.413, 13.8565, 9.58075, 19.575, 135.979, 107.658, 28.266 - 1.414, 13.8661, 9.68513, 19.6019, 136.074, 107.801, 28.2181 - 1.415, 13.8759, 9.84308, 19.6359, 136.171, 107.946, 28.1691 - 1.416, 13.8858, 9.98624, 19.6636, 136.269, 108.092, 28.1203 - 1.417, 13.8958, 10.0526, 19.6737, 136.367, 108.238, 28.0725 - 1.418, 13.9059, 10.0134, 19.6624, 136.466, 108.383, 28.0253 - 1.419, 13.9158, 9.88521, 19.6343, 136.563, 108.529, 27.9774 - 1.42, 13.9256, 9.72329, 19.6005, 136.658, 108.674, 27.9285 - 1.421, 13.9353, 9.59773, 19.5746, 136.752, 108.818, 27.8797 - 1.422, 13.9449, 9.56337, 19.5669, 136.846, 108.959, 27.8319 - 1.423, 13.9545, 9.6361, 19.5804, 136.941, 109.101, 27.7847 - 1.424, 13.9642, 9.78585, 19.6097, 137.037, 109.244, 27.7369 - 1.425, 13.974, 9.94914, 19.643, 137.134, 109.389, 27.688 - 1.426, 13.984, 10.0561, 19.6671, 137.233, 109.536, 27.6391 - 1.427, 13.9941, 10.0601, 19.6723, 137.331, 109.683, 27.5913 - 1.428, 14.0041, 9.95804, 19.6566, 137.429, 109.828, 27.5441 - 1.429, 14.014, 9.7915, 19.6263, 137.525, 109.973, 27.4963 - 1.43, 14.0237, 9.6296, 19.5936, 137.62, 110.117, 27.4474 - 1.431, 14.0333, 9.53981, 19.5716, 137.713, 110.26, 27.3985 - 1.432, 14.0428, 9.55958, 19.5689, 137.807, 110.402, 27.3507 - 1.433, 14.0524, 9.68078, 19.5866, 137.902, 110.543, 27.3036 - 1.434, 14.0622, 9.85332, 19.6177, 137.999, 110.687, 27.2558 - 1.435, 14.0721, 10.0065, 19.6496, 138.097, 110.833, 27.2068 - 1.436, 14.0822, 10.0788, 19.6695, 138.196, 110.981, 27.1578 - 1.437, 14.0922, 10.0432, 19.6697, 138.294, 111.127, 27.1101 - 1.438, 14.1022, 9.91803, 19.65, 138.392, 111.272, 27.0631 - 1.439, 14.1121, 9.75785, 19.6183, 138.487, 111.416, 27.0153 - 1.44, 14.1218, 9.62972, 19.5874, 138.582, 111.561, 26.9661 - 1.441, 14.1314, 9.58427, 19.5696, 138.676, 111.704, 26.917 - 1.442, 14.141, 9.63459, 19.572, 138.77, 111.846, 26.8695 - 1.443, 14.1507, 9.75183, 19.5936, 138.866, 111.987, 26.8227 - 1.444, 14.1605, 9.87921, 19.6257, 138.963, 112.132, 26.7747 - 1.445, 14.1704, 9.95803, 19.6554, 139.061, 112.278, 26.7253 - 1.446, 14.1804, 9.95425, 19.6709, 139.158, 112.425, 26.6763 - 1.447, 14.1903, 9.87381, 19.6659, 139.255, 112.57, 26.629 - 1.448, 14.2001, 9.75976, 19.6427, 139.351, 112.713, 26.5823 - 1.449, 14.2098, 9.67252, 19.6104, 139.446, 112.856, 26.5341 - 1.45, 14.2195, 9.66165, 19.582, 139.54, 113.001, 26.4845 - 1.451, 14.2292, 9.74186, 19.5689, 139.636, 113.145, 26.4357 - 1.452, 14.239, 9.88394, 19.5763, 139.733, 113.288, 26.3887 - 1.453, 14.2489, 10.0253, 19.6012, 139.831, 113.432, 26.342 - 1.454, 14.259, 10.096, 19.6335, 139.93, 113.58, 26.2934 - 1.455, 14.2691, 10.0498, 19.6604, 140.029, 113.728, 26.2435 - 1.456, 14.279, 9.88682, 19.6709, 140.126, 113.875, 26.1949 - 1.457, 14.2888, 9.65724, 19.6611, 140.221, 114.017, 26.1484 - 1.458, 14.2984, 9.44472, 19.6348, 140.313, 114.157, 26.1017 - 1.459, 14.3078, 9.33466, 19.6027, 140.405, 114.298, 26.0528 - 1.46, 14.3171, 9.38033, 19.5776, 140.497, 114.44, 26.0027 - 1.461, 14.3266, 9.58038, 19.5695, 140.591, 114.582, 25.9542 - 1.462, 14.3363, 9.87697, 19.5817, 140.688, 114.724, 25.9078 - 1.463, 14.3464, 10.1754, 19.6092, 140.788, 114.869, 25.861 - 1.464, 14.3566, 10.378, 19.641, 140.889, 115.019, 25.812 - 1.465, 14.367, 10.4181, 19.6643, 140.992, 115.17, 25.7623 - 1.466, 14.3774, 10.2832, 19.6697, 141.093, 115.32, 25.7142 - 1.467, 14.3875, 10.0165, 19.6552, 141.191, 115.466, 25.6677 - 1.468, 14.3974, 9.69934, 19.6267, 141.286, 115.61, 25.62 - 1.469, 14.4069, 9.42146, 19.5955, 141.378, 115.754, 25.5703 - 1.47, 14.4163, 9.2514, 19.5742, 141.469, 115.895, 25.521 - 1.471, 14.4255, 9.21822, 19.5714, 141.56, 116.032, 25.4743 - 1.472, 14.4348, 9.30996, 19.588, 141.651, 116.169, 25.4285 - 1.473, 14.4442, 9.48704, 19.6175, 141.744, 116.309, 25.3804 - 1.474, 14.4538, 9.70255, 19.6479, 141.839, 116.454, 25.3293 - 1.475, 14.4636, 9.91934, 19.667, 141.936, 116.601, 25.279 - 1.476, 14.4736, 10.1166, 19.6672, 142.036, 116.746, 25.2323 - 1.477, 14.4838, 10.2845, 19.6485, 142.137, 116.891, 25.1876 - 1.478, 14.4942, 10.4117, 19.6184, 142.239, 117.039, 25.1408 - 1.479, 14.5046, 10.475, 19.589, 142.341, 117.192, 25.0907 - 1.48, 14.5151, 10.4386, 19.5721, 142.444, 117.345, 25.0401 - 1.481, 14.5254, 10.2675, 19.5745, 142.545, 117.495, 24.9915 - 1.482, 14.5355, 9.94853, 19.5952, 142.642, 117.641, 24.9443 - 1.483, 14.5452, 9.51199, 19.6258, 142.735, 117.784, 24.8967 - 1.484, 14.5545, 9.04, 19.6539, 142.824, 117.923, 24.849 - 1.485, 14.5634, 8.65493, 19.6684, 142.909, 118.056, 24.8026 - 1.486, 14.5719, 8.48722, 19.6634, 142.992, 118.187, 24.7561 - 1.487, 14.5805, 8.63165, 19.641, 143.077, 118.32, 24.7066 - 1.488, 14.5894, 9.10726, 19.6102, 143.166, 118.46, 24.6537 - 1.489, 14.5988, 9.83689, 19.5834, 143.263, 118.605, 24.6022 - 1.49, 14.6091, 10.6567, 19.5714, 143.367, 118.751, 24.5568 - 1.491, 14.6201, 11.3556, 19.579, 143.479, 118.899, 24.5158 - 1.492, 14.6316, 11.7345, 19.603, 143.594, 119.056, 24.4721 - 1.493, 14.6433, 11.6662, 19.6338, 143.708, 119.222, 24.4209 - 1.494, 14.6547, 11.1365, 19.659, 143.818, 119.39, 24.3651 - 1.495, 14.6654, 10.2539, 19.6684, 143.918, 119.548, 24.3119 - 1.496, 14.6752, 9.22231, 19.6584, 144.009, 119.69, 24.2653 - 1.497, 14.6839, 8.28743, 19.6329, 144.09, 119.818, 24.2233 - 1.498, 14.6919, 7.6719, 19.6023, 144.165, 119.939, 24.1808 - 1.499, 14.6995, 7.51958, 19.5789, 144.239, 120.059, 24.1348 - 1.5, 14.7072, 7.86347, 19.5721, 144.316, 120.186, 24.0841 - 1.501, 14.7154, 8.62426, 19.5846, 144.401, 120.321, 24.0296 - 1.502, 14.7246, 9.63606, 19.6113, 144.495, 120.466, 23.9746 - 1.503, 14.7347, 10.6891, 19.6414, 144.6, 120.615, 23.9247 - 1.504, 14.7459, 11.5756, 19.6629, 144.714, 120.766, 23.8834 - 1.505, 14.7577, 12.1289, 19.667, 144.833, 120.919, 23.8464 - 1.506, 14.7699, 12.2481, 19.6522, 144.953, 121.081, 23.8039 - 1.507, 14.782, 11.9092, 19.6245, 145.07, 121.254, 23.7498 - 1.508, 14.7935, 11.1648, 19.5951, 145.179, 121.428, 23.6888 - 1.509, 14.8042, 10.136, 19.5757, 145.279, 121.589, 23.6324 - 1.51, 14.8137, 8.99745, 19.5742, 145.367, 121.727, 23.5877 - 1.511, 14.8222, 7.95537, 19.5912, 145.445, 121.847, 23.5509 - 1.512, 14.8298, 7.21667, 19.6197, 145.516, 121.961, 23.5119 - 1.513, 14.8369, 6.95075, 19.6483, 145.584, 122.078, 23.4644 - 1.514, 14.844, 7.24923, 19.6654, 145.655, 122.202, 23.4096 - 1.515, 14.8517, 8.09374, 19.6642, 145.734, 122.334, 23.3532 - 1.516, 14.8604, 9.34367, 19.6452, 145.826, 122.472, 23.3003 - 1.517, 14.8704, 10.753, 19.6161, 145.932, 122.618, 23.2531 - 1.518, 14.8818, 12.018, 19.5886, 146.049, 122.772, 23.2109 - 1.519, 14.8942, 12.8469, 19.5739, 146.175, 122.934, 23.1703 - 1.52, 14.9072, 13.0355, 19.5778, 146.303, 123.106, 23.1257 - 1.521, 14.92, 12.5247, 19.5987, 146.426, 123.282, 23.0744 - 1.522, 14.9319, 11.4234, 19.6281, 146.538, 123.455, 23.0192 - 1.523, 14.9426, 9.98507, 19.6542, 146.636, 123.613, 22.9663 - 1.524, 14.9519, 8.54486, 19.6664, 146.72, 123.751, 22.9191 - 1.525, 14.9599, 7.43192, 19.6599, 146.793, 123.874, 22.8749 - 1.526, 14.9671, 6.88452, 19.6373, 146.861, 123.99, 22.8292 - 1.527, 14.974, 6.99181, 19.6078, 146.929, 124.106, 22.7808 - 1.528, 14.9813, 7.67898, 19.5833, 147.004, 124.226, 22.7329 - 1.529, 14.9895, 8.73849, 19.5736, 147.09, 124.352, 22.6872 - 1.53, 14.9988, 9.8955, 19.5827, 147.187, 124.49, 22.6407 - 1.531, 15.0092, 10.8858, 19.6068, 147.294, 124.643, 22.5895 - 1.532, 15.0204, 11.5221, 19.6362, 147.407, 124.808, 22.5347 - 1.533, 15.0321, 11.7309, 19.659, 147.522, 124.975, 22.4822 - 1.534, 15.0437, 11.5516, 19.666, 147.635, 125.134, 22.4367 - 1.535, 15.055, 11.1053, 19.6544, 147.744, 125.285, 22.3967 - 1.536, 15.0659, 10.5453, 19.629, 147.848, 125.433, 22.3556 - 1.537, 15.0761, 10.0101, 19.6, 147.946, 125.581, 22.3082 - 1.538, 15.0859, 9.59033, 19.5792, 148.04, 125.731, 22.2545 - 1.539, 15.0954, 9.31913, 19.5748, 148.132, 125.879, 22.1987 - 1.54, 15.1046, 9.18167, 19.5888, 148.222, 126.023, 22.1457 - 1.541, 15.1138, 9.13688, 19.6153, 148.311, 126.16, 22.0981 - 1.542, 15.1229, 9.14034, 19.6436, 148.401, 126.293, 22.0556 - 1.543, 15.1321, 9.16038, 19.6624, 148.491, 126.423, 22.0146 - 1.544, 15.1413, 9.18416, 19.664, 148.581, 126.558, 21.9703 - 1.545, 15.1505, 9.21549, 19.6478, 148.671, 126.698, 21.9203 - 1.546, 15.1597, 9.26853, 19.6204, 148.762, 126.842, 21.8664 - 1.547, 15.169, 9.36146, 19.593, 148.854, 126.987, 21.8135 - 1.548, 15.1785, 9.51196, 19.5765, 148.947, 127.128, 21.7646 - 1.549, 15.1881, 9.73334, 19.5776, 149.043, 127.269, 21.7183 - 1.55, 15.198, 10.0295, 19.5959, 149.141, 127.413, 21.6716 - 1.551, 15.2082, 10.3872, 19.6238, 149.243, 127.56, 21.624 - 1.552, 15.2188, 10.7687, 19.6502, 149.349, 127.71, 21.5776 - 1.553, 15.2297, 11.1076, 19.6642, 149.458, 127.862, 21.5333 - 1.554, 15.2409, 11.3151, 19.6604, 149.569, 128.017, 21.4882 - 1.555, 15.2522, 11.2985, 19.6403, 149.68, 128.178, 21.4379 - 1.556, 15.2634, 10.9906, 19.612, 149.787, 128.343, 21.3824 - 1.557, 15.274, 10.3812, 19.587, 149.889, 128.503, 21.3273 - 1.558, 15.284, 9.53884, 19.5754, 149.983, 128.65, 21.2784 - 1.559, 15.2931, 8.61253, 19.5819, 150.067, 128.78, 21.2367 - 1.56, 15.3013, 7.8053, 19.6038, 150.144, 128.901, 21.1971 - 1.561, 15.3088, 7.32502, 19.6322, 150.216, 129.019, 21.1533 - 1.562, 15.3162, 7.32423, 19.6556, 150.288, 129.141, 21.1031 - 1.563, 15.3238, 7.84833, 19.6645, 150.365, 129.269, 21.0493 - 1.564, 15.3321, 8.81078, 19.6555, 150.451, 129.404, 20.9961 - 1.565, 15.3415, 10.0065, 19.6321, 150.549, 129.546, 20.9459 - 1.566, 15.3521, 11.1623, 19.6038, 150.659, 129.698, 20.8984 - 1.567, 15.3637, 12.0112, 19.5822, 150.777, 129.857, 20.8523 - 1.568, 15.3759, 12.3667, 19.5759, 150.898, 130.023, 20.8065 - 1.569, 15.3881, 12.1741, 19.5875, 151.017, 130.189, 20.761 - 1.57, 15.4, 11.5221, 19.6122, 151.13, 130.35, 20.7154 - 1.571, 15.411, 10.6105, 19.64, 151.234, 130.506, 20.6686 - 1.572, 15.4212, 9.68588, 19.6596, 151.329, 130.655, 20.6193 - 1.573, 15.4305, 8.96642, 19.6632, 151.417, 130.799, 20.567 - 1.574, 15.4393, 8.58094, 19.6492, 151.502, 130.938, 20.5132 - 1.575, 15.4479, 8.5413, 19.6235, 151.585, 131.074, 20.4613 - 1.576, 15.4565, 8.75502, 19.5964, 151.671, 131.206, 20.4146 - 1.577, 15.4654, 9.07085, 19.5789, 151.76, 131.335, 20.3731 - 1.578, 15.4746, 9.33937, 19.5781, 151.852, 131.466, 20.3326 - 1.579, 15.484, 9.46629, 19.5943, 151.945, 131.603, 20.2877 - 1.58, 15.4935, 9.44071, 19.6208, 152.037, 131.747, 20.2363 - 1.581, 15.5029, 9.33019, 19.647, 152.129, 131.894, 20.1815 - 1.582, 15.5121, 9.24741, 19.6621, 152.22, 132.038, 20.1285 - 1.583, 15.5214, 9.30227, 19.6602, 152.311, 132.177, 20.0799 - 1.584, 15.5309, 9.55775, 19.642, 152.405, 132.316, 20.0335 - 1.585, 15.5406, 10.0045, 19.6149, 152.503, 132.459, 19.9865 - 1.586, 15.5509, 10.5617, 19.5899, 152.606, 132.608, 19.9389 - 1.587, 15.5617, 11.1011, 19.5772, 152.715, 132.76, 19.8932 - 1.588, 15.573, 11.4859, 19.5819, 152.828, 132.914, 19.8501 - 1.589, 15.5846, 11.6085, 19.602, 152.942, 133.071, 19.8056 - 1.59, 15.5961, 11.4184, 19.6293, 153.054, 133.234, 19.7555 - 1.591, 15.6073, 10.9324, 19.6528, 153.161, 133.4, 19.6998 - 1.592, 15.6179, 10.2276, 19.663, 153.261, 133.559, 19.6441 - 1.593, 15.6277, 9.42273, 19.6557, 153.354, 133.706, 19.5941 - 1.594, 15.6367, 8.65332, 19.6339, 153.439, 133.838, 19.5503 - 1.595, 15.6451, 8.0479, 19.6066, 153.518, 133.962, 19.5086 - 1.596, 15.653, 7.70771, 19.5847, 153.593, 134.083, 19.4647 - 1.597, 15.6607, 7.69146, 19.5772, 153.669, 134.205, 19.4176 - 1.598, 15.6685, 8.00545, 19.5871, 153.747, 134.331, 19.3688 - 1.599, 15.6768, 8.59997, 19.6103, 153.832, 134.462, 19.3191 - 1.6, 15.6858, 9.37402, 19.6374, 153.924, 134.601, 19.2683 - 1.601, 15.6956, 10.1903, 19.6573, 154.024, 134.749, 19.2165 - 1.602, 15.7061, 10.9003, 19.6621, 154.13, 134.904, 19.1651 - 1.603, 15.7173, 11.377, 19.6498, 154.242, 135.063, 19.1159 - 1.604, 15.7287, 11.5452, 19.6254, 154.355, 135.221, 19.0696 - 1.605, 15.7402, 11.4035, 19.5989, 154.467, 135.377, 19.026 - 1.606, 15.7514, 11.0249, 19.581, 154.575, 135.53, 18.9837 - 1.607, 15.7622, 10.5368, 19.579, 154.679, 135.679, 18.9398 - 1.608, 15.7725, 10.0816, 19.5936, 154.778, 135.829, 18.8912 - 1.609, 15.7824, 9.77104, 19.6189, 154.873, 135.98, 18.8372 - 1.61, 15.7921, 9.6493, 19.6446, 154.968, 136.131, 18.7817 - 1.611, 15.8018, 9.67887, 19.6603, 155.063, 136.278, 18.7298 - 1.612, 15.8115, 9.75647, 19.6595, 155.159, 136.42, 18.6833 - 1.613, 15.8213, 9.75465, 19.6427, 155.254, 136.56, 18.639 - 1.614, 15.8309, 9.57544, 19.6167, 155.348, 136.7, 18.5931 - 1.615, 15.8403, 9.1963, 19.5921, 155.439, 136.84, 18.5458 - 1.616, 15.8493, 8.69005, 19.5789, 155.524, 136.973, 18.5002 - 1.617, 15.8577, 8.20923, 19.5824, 155.604, 137.1, 18.4567 - 1.618, 15.8658, 7.93812, 19.6012, 155.682, 137.225, 18.4107 - 1.619, 15.8738, 8.02779, 19.6275, 155.761, 137.356, 18.358 - 1.62, 15.8821, 8.53726, 19.6508, 155.845, 137.494, 18.3008 - 1.621, 15.891, 9.40244, 19.6615, 155.937, 137.637, 18.2463 - 1.622, 15.9009, 10.4456, 19.6553, 156.04, 137.781, 18.1992 - 1.623, 15.9119, 11.4238, 19.6348, 156.152, 137.931, 18.1571 - 1.624, 15.9236, 12.1013, 19.6083, 156.27, 138.089, 18.1141 - 1.625, 15.9359, 12.3206, 19.5867, 156.391, 138.255, 18.0678 - 1.626, 15.948, 12.0491, 19.5786, 156.509, 138.422, 18.0205 - 1.627, 15.9598, 11.3855, 19.5874, 156.621, 138.583, 17.974 - 1.628, 15.9707, 10.5238, 19.6094, 156.724, 138.738, 17.9268 - 1.629, 15.9808, 9.68917, 19.6357, 156.819, 138.888, 17.8758 - 1.63, 15.9902, 9.06733, 19.6555, 156.908, 139.034, 17.8215 - 1.631, 15.9991, 8.75242, 19.6609, 156.994, 139.175, 17.7679 - 1.632, 16.0078, 8.72899, 19.6496, 157.08, 139.311, 17.7182 - 1.633, 16.0167, 8.89251, 19.6263, 157.167, 139.443, 17.6728 - 1.634, 16.0257, 9.09814, 19.6005, 157.256, 139.574, 17.6296 - 1.635, 16.0348, 9.21888, 19.5827, 157.347, 139.707, 17.5868 - 1.636, 16.044, 9.19175, 19.5801, 157.437, 139.841, 17.5428 - 1.637, 16.0531, 9.03675, 19.5937, 157.526, 139.978, 17.4956 - 1.638, 16.0621, 8.84401, 19.618, 157.612, 140.116, 17.4446 - 1.639, 16.0709, 8.73598, 19.6431, 157.698, 140.256, 17.3916 - 1.64, 16.0796, 8.82002, 19.6587, 157.785, 140.394, 17.3397 - 1.641, 16.0886, 9.14832, 19.6585, 157.874, 140.532, 17.2899 - 1.642, 16.098, 9.69836, 19.6427, 157.969, 140.674, 17.2403 - 1.643, 16.1081, 10.3787, 19.6176, 158.071, 140.822, 17.1907 - 1.644, 16.1188, 11.0556, 19.5936, 158.18, 140.974, 17.1436 - 1.645, 16.1301, 11.5904, 19.5804, 158.293, 141.127, 17.1016 - 1.646, 16.1419, 11.8749, 19.5833, 158.41, 141.282, 17.0618 - 1.647, 16.1537, 11.8551, 19.6012, 158.526, 141.442, 17.0178 - 1.648, 16.1654, 11.5388, 19.6266, 158.639, 141.609, 16.9661 - 1.649, 16.1767, 10.9876, 19.6494, 158.747, 141.775, 16.9107 - 1.65, 16.1873, 10.2997, 19.6601, 158.848, 141.932, 16.858 - 1.651, 16.1973, 9.58798, 19.6545, 158.942, 142.078, 16.8095 - 1.652, 16.2065, 8.95882, 19.6348, 159.03, 142.217, 16.7611 - 1.653, 16.2153, 8.49561, 19.6092, 159.113, 142.354, 16.7103 - 1.654, 16.2236, 8.24685, 19.588, 159.194, 142.486, 16.6604 - 1.655, 16.2319, 8.2201, 19.5799, 159.275, 142.611, 16.6161 - 1.656, 16.2402, 8.38252, 19.5882, 159.357, 142.731, 16.5768 - 1.657, 16.2487, 8.66892, 19.6094, 159.442, 142.856, 16.5356 - 1.658, 16.2575, 8.99752, 19.6348, 159.531, 142.991, 16.4873 - 1.659, 16.2667, 9.29138, 19.6542, 159.622, 143.134, 16.4338 - 1.66, 16.2761, 9.50065, 19.6596, 159.715, 143.28, 16.3804 - 1.661, 16.2856, 9.6186, 19.6489, 159.809, 143.425, 16.3296 - 1.662, 16.2953, 9.68469, 19.6264, 159.904, 143.569, 16.2796 - 1.663, 16.305, 9.77103, 19.6013, 160, 143.715, 16.2288 - 1.664, 16.3149, 9.95438, 19.5839, 160.098, 143.862, 16.1791 - 1.665, 16.325, 10.2818, 19.5813, 160.199, 144.007, 16.1331 - 1.666, 16.3355, 10.7424, 19.5944, 160.304, 144.153, 16.0907 - 1.667, 16.3465, 11.2574, 19.6179, 160.414, 144.303, 16.0487 - 1.668, 16.358, 11.6945, 19.6423, 160.529, 144.46, 16.0042 - 1.669, 16.3698, 11.9064, 19.6575, 160.646, 144.623, 15.9567 - 1.67, 16.3816, 11.7802, 19.6573, 160.762, 144.79, 15.9063 - 1.671, 16.3932, 11.2823, 19.642, 160.872, 144.956, 15.8534 - 1.672, 16.404, 10.4806, 19.6177, 160.975, 145.116, 15.7994 - 1.673, 16.414, 9.53412, 19.5944, 161.069, 145.267, 15.747 - 1.674, 16.4231, 8.65039, 19.5816, 161.153, 145.405, 15.6981 - 1.675, 16.4315, 8.02353, 19.5845, 161.232, 145.533, 15.6518 - 1.676, 16.4394, 7.77405, 19.6018, 161.308, 145.657, 15.6057 - 1.677, 16.4472, 7.9115, 19.6265, 161.386, 145.779, 15.56 - 1.678, 16.4553, 8.33416, 19.6485, 161.468, 145.903, 15.5165 - 1.679, 16.4639, 8.86692, 19.6589, 161.555, 146.029, 15.4747 - 1.68, 16.473, 9.32429, 19.6533, 161.646, 146.162, 15.4303 - 1.681, 16.4825, 9.5764, 19.6342, 161.74, 146.306, 15.3793 - 1.682, 16.4921, 9.59371, 19.6093, 161.834, 146.456, 15.3235 - 1.683, 16.5016, 9.45413, 19.5888, 161.927, 146.604, 15.2687 - 1.684, 16.511, 9.30967, 19.5812, 162.018, 146.746, 15.2188 - 1.685, 16.5203, 9.32479, 19.5893, 162.11, 146.885, 15.1713 - 1.686, 16.5298, 9.6093, 19.61, 162.204, 147.027, 15.1224 - 1.687, 16.5397, 10.1707, 19.6347, 162.304, 147.173, 15.0728 - 1.688, 16.5502, 10.904, 19.6534, 162.411, 147.322, 15.0271 - 1.689, 16.5615, 11.6225, 19.6584, 162.525, 147.473, 14.9868 - 1.69, 16.5733, 12.1199, 19.6477, 162.644, 147.629, 14.947 - 1.691, 16.5855, 12.2394, 19.6257, 162.764, 147.795, 14.9013 - 1.692, 16.5976, 11.9271, 19.6015, 162.881, 147.965, 14.8491 - 1.693, 16.6092, 11.25, 19.5848, 162.991, 148.133, 14.7951 - 1.694, 16.62, 10.3724, 19.5826, 163.093, 148.29, 14.7437 - 1.695, 16.6299, 9.50212, 19.5956, 163.186, 148.438, 14.6938 - 1.696, 16.6391, 8.82368, 19.6186, 163.273, 148.579, 14.6424 - 1.697, 16.6477, 8.44429, 19.6421, 163.356, 148.716, 14.59 - 1.698, 16.6561, 8.36887, 19.6565, 163.438, 148.848, 14.5405 - 1.699, 16.6646, 8.51163, 19.656, 163.521, 148.975, 14.4966 - 1.7, 16.6732, 8.73717, 19.6408, 163.607, 149.1, 14.4559 - 1.701, 16.682, 8.91466, 19.6171, 163.694, 149.229, 14.4141 - 1.702, 16.691, 8.96504, 19.5947, 163.782, 149.362, 14.3688 - 1.703, 16.6999, 8.88534, 19.5826, 163.869, 149.497, 14.3207 - 1.704, 16.7087, 8.74338, 19.5859, 163.955, 149.634, 14.2709 - 1.705, 16.7174, 8.64747, 19.603, 164.04, 149.77, 14.2199 - 1.706, 16.7261, 8.70354, 19.6271, 164.125, 149.907, 14.1674 - 1.707, 16.7349, 8.9759, 19.6482, 164.213, 150.047, 14.1143 - 1.708, 16.7441, 9.46428, 19.6578, 164.306, 150.19, 14.0619 - 1.709, 16.7539, 10.1035, 19.6518, 164.405, 150.336, 14.0116 - 1.71, 16.7644, 10.7833, 19.6329, 164.511, 150.486, 13.9642 - 1.711, 16.7754, 11.3802, 19.6088, 164.623, 150.639, 13.9201 - 1.712, 16.787, 11.7897, 19.5893, 164.739, 150.794, 13.8784 - 1.713, 16.7989, 11.9499, 19.5823, 164.856, 150.953, 13.8367 - 1.714, 16.8108, 11.8513, 19.5908, 164.972, 151.114, 13.7919 - 1.715, 16.8225, 11.5324, 19.6112, 165.085, 151.277, 13.7435 - 1.716, 16.8338, 11.0654, 19.6352, 165.194, 151.438, 13.6935 - 1.717, 16.8446, 10.5371, 19.6529, 165.297, 151.594, 13.6433 - 1.718, 16.8549, 10.0295, 19.6571, 165.395, 151.746, 13.5922 - 1.719, 16.8647, 9.60496, 19.6461, 165.49, 151.896, 13.5384 - 1.72, 16.8741, 9.29608, 19.6245, 165.581, 152.044, 13.4833 - 1.721, 16.8833, 9.10262, 19.6011, 165.67, 152.186, 13.4314 - 1.722, 16.8924, 8.99488, 19.5855, 165.758, 152.321, 13.3856 - 1.723, 16.9013, 8.92405, 19.584, 165.846, 152.451, 13.3438 - 1.724, 16.9102, 8.83823, 19.5973, 165.933, 152.58, 13.3013 - 1.725, 16.919, 8.70119, 19.6198, 166.018, 152.711, 13.256 - 1.726, 16.9276, 8.50882, 19.6424, 166.101, 152.842, 13.2102 - 1.727, 16.936, 8.29737, 19.6558, 166.183, 152.969, 13.1657 - 1.728, 16.9442, 8.13871, 19.6545, 166.263, 153.094, 13.1208 - 1.729, 16.9523, 8.12132, 19.6391, 166.342, 153.223, 13.0713 - 1.73, 16.9606, 8.32101, 19.6159, 166.424, 153.359, 13.0161 - 1.731, 16.9691, 8.77012, 19.5945, 166.51, 153.5, 12.9594 - 1.732, 16.9782, 9.43638, 19.5835, 166.603, 153.642, 12.9063 - 1.733, 16.988, 10.221, 19.5875, 166.703, 153.787, 12.8576 - 1.734, 16.9986, 10.9799, 19.6048, 166.811, 153.938, 12.8104 - 1.735, 17.0099, 11.5631, 19.6283, 166.924, 154.097, 12.7626 - 1.736, 17.0216, 11.8605, 19.6483, 167.04, 154.259, 12.7158 - 1.737, 17.0335, 11.8386, 19.6567, 167.157, 154.418, 12.6726 - 1.738, 17.0452, 11.5525, 19.6501, 167.27, 154.573, 12.6324 - 1.739, 17.0565, 11.1284, 19.6312, 167.379, 154.726, 12.5908 - 1.74, 17.0674, 10.7203, 19.6077, 167.484, 154.879, 12.5444 - 1.741, 17.078, 10.4545, 19.5893, 167.587, 155.034, 12.4934 - 1.742, 17.0884, 10.3836, 19.5835, 167.689, 155.189, 12.4408 - 1.743, 17.0989, 10.4664, 19.5927, 167.791, 155.343, 12.3888 - 1.744, 17.1094, 10.5828, 19.613, 167.895, 155.498, 12.3369 - 1.745, 17.12, 10.58, 19.6362, 167.999, 155.655, 12.2839 - 1.746, 17.1304, 10.3336, 19.6526, 168.1, 155.811, 12.2307 - 1.747, 17.1405, 9.80136, 19.6557, 168.196, 155.96, 12.1801 - 1.748, 17.1499, 9.04816, 19.6441, 168.285, 156.099, 12.1339 - 1.749, 17.1586, 8.23227, 19.6227, 168.366, 156.226, 12.0915 - 1.75, 17.1665, 7.55585, 19.6002, 168.44, 156.345, 12.0501 - 1.751, 17.1738, 7.19701, 19.5859, 168.511, 156.46, 12.0073 - 1.752, 17.1811, 7.24817, 19.5855, 168.582, 156.576, 11.9626 - 1.753, 17.1885, 7.6833, 19.5993, 168.657, 156.695, 11.9166 - 1.754, 17.1966, 8.36676, 19.6216, 168.739, 156.821, 11.8693 - 1.755, 17.2053, 9.10082, 19.6431, 168.829, 156.956, 11.8198 - 1.756, 17.2147, 9.69476, 19.6551, 168.924, 157.101, 11.7674 - 1.757, 17.2245, 10.0303, 19.6528, 169.022, 157.253, 11.7124 - 1.758, 17.2346, 10.0992, 19.637, 169.121, 157.406, 11.6572 - 1.759, 17.2447, 9.99993, 19.6142, 169.219, 157.558, 11.6043 - 1.76, 17.2546, 9.89435, 19.5939, 169.316, 157.705, 11.5552 - 1.761, 17.2645, 9.94205, 19.5843, 169.414, 157.848, 11.5088 - 1.762, 17.2746, 10.2361, 19.5894, 169.514, 157.992, 11.4637 - 1.763, 17.2851, 10.7646, 19.607, 169.62, 158.14, 11.4193 - 1.764, 17.2962, 11.4121, 19.6299, 169.732, 158.292, 11.3761 - 1.765, 17.3079, 11.9991, 19.6487, 169.849, 158.448, 11.3344 - 1.766, 17.3201, 12.3457, 19.6557, 169.971, 158.61, 11.2925 - 1.767, 17.3324, 12.3342, 19.648, 170.092, 158.776, 11.2472 - 1.768, 17.3446, 11.9497, 19.6289, 170.209, 158.945, 11.197 - 1.769, 17.3562, 11.2833, 19.6062, 170.319, 159.113, 11.1435 - 1.77, 17.3671, 10.4984, 19.5891, 170.422, 159.273, 11.09 - 1.771, 17.3772, 9.77456, 19.5848, 170.518, 159.425, 11.0377 - 1.772, 17.3867, 9.24805, 19.5949, 170.609, 159.57, 10.9854 - 1.773, 17.3958, 8.97207, 19.6153, 170.697, 159.713, 10.9319 - 1.774, 17.4048, 8.90833, 19.6376, 170.784, 159.854, 10.8791 - 1.775, 17.4137, 8.95141, 19.6526, 170.872, 159.99, 10.8307 - 1.776, 17.4227, 8.97492, 19.6542, 170.96, 160.121, 10.7879 - 1.777, 17.4316, 8.88145, 19.6418, 171.047, 160.249, 10.7475 - 1.778, 17.4404, 8.63834, 19.6205, 171.132, 160.377, 10.7053 - 1.779, 17.4488, 8.28755, 19.599, 171.214, 160.504, 10.6605 - 1.78, 17.4569, 7.92829, 19.5862, 171.291, 160.629, 10.6156 - 1.781, 17.4647, 7.68044, 19.5873, 171.367, 160.749, 10.5718 - 1.782, 17.4724, 7.64309, 19.6018, 171.442, 160.87, 10.5265 - 1.783, 17.4801, 7.86257, 19.6237, 171.519, 160.996, 10.4759 - 1.784, 17.4882, 8.31987, 19.6441, 171.6, 161.132, 10.42 - 1.785, 17.4969, 8.93955, 19.6546, 171.688, 161.273, 10.3634 - 1.786, 17.5061, 9.61484, 19.6508, 171.782, 161.417, 10.3101 - 1.787, 17.5161, 10.2391, 19.6344, 171.883, 161.565, 10.2596 - 1.788, 17.5266, 10.7335, 19.6121, 171.988, 161.719, 10.2088 - 1.789, 17.5375, 11.0623, 19.5931, 172.097, 161.877, 10.1574 - 1.79, 17.5486, 11.2347, 19.5852, 172.207, 162.035, 10.1089 - 1.791, 17.5599, 11.2935, 19.5916, 172.318, 162.188, 10.0659 - 1.792, 17.5712, 11.2971, 19.6096, 172.428, 162.339, 10.0266 - 1.793, 17.5825, 11.3, 19.6319, 172.539, 162.49, 9.9862 - 1.794, 17.5938, 11.3368, 19.6492, 172.651, 162.645, 9.94233 - 1.795, 17.6052, 11.4136, 19.6546, 172.763, 162.802, 9.89656 - 1.796, 17.6166, 11.5064, 19.6457, 172.875, 162.96, 9.85093 - 1.797, 17.6281, 11.5678, 19.6263, 172.989, 163.12, 9.8044 - 1.798, 17.6397, 11.5393, 19.6043, 173.102, 163.283, 9.75415 - 1.799, 17.6512, 11.3678, 19.5889, 173.214, 163.45, 9.69951 - 1.8, 17.6623, 11.0227, 19.5862, 173.322, 163.617, 9.64312 - 1.801, 17.6731, 10.5093, 19.5975, 173.425, 163.777, 9.58817 - 1.802, 17.6833, 9.87445, 19.6179, 173.522, 163.93, 9.53557 - 1.803, 17.6928, 9.20027, 19.6392, 173.612, 164.074, 9.48448 - 1.804, 17.7017, 8.58689, 19.6526, 173.696, 164.211, 9.4347 - 1.805, 17.7101, 8.12647, 19.6525, 173.776, 164.341, 9.38721 - 1.806, 17.7181, 7.87637, 19.6391, 173.853, 164.464, 9.34278 - 1.807, 17.726, 7.84038, 19.6179, 173.93, 164.583, 9.30084 - 1.808, 17.7339, 7.96582, 19.5975, 174.008, 164.701, 9.26007 - 1.809, 17.7419, 8.15966, 19.5865, 174.088, 164.821, 9.21914 - 1.81, 17.7502, 8.32024, 19.5892, 174.17, 164.944, 9.17674 - 1.811, 17.7585, 8.37445, 19.6046, 174.252, 165.071, 9.13166 - 1.812, 17.7668, 8.30728, 19.6263, 174.334, 165.201, 9.08357 - 1.813, 17.7751, 8.1717, 19.6453, 174.414, 165.332, 9.03339 - 1.814, 17.7832, 8.0732, 19.6539, 174.493, 165.463, 8.98198 - 1.815, 17.7913, 8.13253, 19.6486, 174.573, 165.596, 8.92881 - 1.816, 17.7996, 8.43906, 19.6315, 174.655, 165.733, 8.87307 - 1.817, 17.8083, 9.01161, 19.6097, 174.744, 165.876, 8.81612 - 1.818, 17.8177, 9.78261, 19.5922, 174.84, 166.023, 8.76146 - 1.819, 17.8279, 10.6132, 19.5862, 174.944, 166.173, 8.71135 - 1.82, 17.8389, 11.3358, 19.594, 175.055, 166.327, 8.66434 - 1.821, 17.8505, 11.8103, 19.6126, 175.171, 166.488, 8.61756 - 1.822, 17.8624, 11.9724, 19.6342, 175.288, 166.651, 8.57102 - 1.823, 17.8743, 11.8566, 19.6498, 175.405, 166.811, 8.52773 - 1.824, 17.886, 11.5834, 19.6532, 175.518, 166.965, 8.48895 - 1.825, 17.8974, 11.3144, 19.643, 175.629, 167.115, 8.45101 - 1.826, 17.9087, 11.1907, 19.6233, 175.739, 167.268, 8.40884 - 1.827, 17.9199, 11.2783, 19.6022, 175.85, 167.425, 8.36175 - 1.828, 17.9313, 11.5403, 19.5886, 175.963, 167.585, 8.31357 - 1.829, 17.943, 11.8486, 19.5879, 176.079, 167.747, 8.26672 - 1.83, 17.955, 12.0312, 19.6004, 176.197, 167.912, 8.21832 - 1.831, 17.967, 11.9371, 19.6209, 176.314, 168.084, 8.16418 - 1.832, 17.9787, 11.4966, 19.6411, 176.427, 168.258, 8.10525 - 1.833, 17.9898, 10.7519, 19.6525, 176.533, 168.425, 8.0474 - 1.834, 18.0001, 9.84673, 19.6505, 176.629, 168.579, 7.99454 - 1.835, 18.0095, 8.97824, 19.636, 176.717, 168.721, 7.94448 - 1.836, 18.0182, 8.32869, 19.6149, 176.799, 168.857, 7.89312 - 1.837, 18.0263, 8.00194, 19.596, 176.878, 168.989, 7.84105 - 1.838, 18.0343, 7.98909, 19.5869, 176.956, 169.116, 7.79321 - 1.839, 18.0424, 8.17599, 19.5915, 177.036, 169.236, 7.75206 - 1.84, 18.0507, 8.38969, 19.6078, 177.118, 169.355, 7.71398 - 1.841, 18.0591, 8.46626, 19.6291, 177.201, 169.478, 7.67362 - 1.842, 18.0675, 8.31437, 19.6466, 177.283, 169.604, 7.63021 - 1.843, 18.0756, 7.9506, 19.6531, 177.361, 169.727, 7.58713 - 1.844, 18.0834, 7.49355, 19.646, 177.435, 169.844, 7.54585 - 1.845, 18.0907, 7.11918, 19.6282, 177.504, 169.959, 7.50306 - 1.846, 18.0977, 6.99475, 19.607, 177.573, 170.076, 7.45473 - 1.847, 18.1048, 7.21623, 19.5913, 177.644, 170.199, 7.40121 - 1.848, 18.1123, 7.7726, 19.5874, 177.72, 170.328, 7.34632 - 1.849, 18.1205, 8.54977, 19.5969, 177.804, 170.462, 7.29232 - 1.85, 18.1294, 9.37195, 19.6159, 177.896, 170.604, 7.23796 - 1.851, 18.1392, 10.0642, 19.6366, 177.995, 170.756, 7.18169 - 1.852, 18.1495, 10.5128, 19.6504, 178.098, 170.913, 7.12492 - 1.853, 18.1601, 10.7004, 19.6517, 178.203, 171.072, 7.07077 - 1.854, 18.1708, 10.7056, 19.6399, 178.308, 171.227, 7.02058 - 1.855, 18.1815, 10.6665, 19.6199, 178.412, 171.379, 6.97331 - 1.856, 18.1921, 10.7247, 19.6001, 178.518, 171.529, 6.92788 - 1.857, 18.203, 10.9703, 19.5884, 178.625, 171.679, 6.88457 - 1.858, 18.2142, 11.4086, 19.5898, 178.737, 171.83, 6.84364 - 1.859, 18.2259, 11.9587, 19.6037, 178.854, 171.984, 6.80401 - 1.86, 18.2381, 12.4851, 19.6242, 178.977, 172.144, 6.76422 - 1.861, 18.2508, 12.8464, 19.643, 179.103, 172.308, 6.72376 - 1.862, 18.2636, 12.9447, 19.6522, 179.23, 172.476, 6.68243 - 1.863, 18.2765, 12.7575, 19.6482, 179.355, 172.646, 6.63889 - 1.864, 18.289, 12.3406, 19.6326, 179.476, 172.816, 6.59147 - 1.865, 18.3011, 11.8049, 19.6118, 179.592, 172.986, 6.54037 - 1.866, 18.3127, 11.2752, 19.5944, 179.703, 173.152, 6.48767 - 1.867, 18.3237, 10.8481, 19.5876, 179.809, 173.313, 6.43447 - 1.868, 18.3344, 10.5633, 19.5942, 179.913, 173.473, 6.3794 - 1.869, 18.3449, 10.397, 19.6114, 180.015, 173.634, 6.32122 - 1.87, 18.3552, 10.2777, 19.6321, 180.115, 173.795, 6.26205 - 1.871, 18.3654, 10.1172, 19.6478, 180.215, 173.951, 6.206 - 1.872, 18.3754, 9.84369, 19.652, 180.311, 174.101, 6.15445 - 1.873, 18.3851, 9.42746, 19.643, 180.404, 174.245, 6.10472 - 1.874, 18.3942, 8.88939, 19.6246, 180.491, 174.385, 6.05443 - 1.875, 18.4028, 8.29292, 19.6043, 180.572, 174.518, 6.00564 - 1.876, 18.4108, 7.72327, 19.5905, 180.648, 174.64, 5.96234 - 1.877, 18.4183, 7.26197, 19.5889, 180.719, 174.751, 5.92452 - 1.878, 18.4254, 6.96495, 19.6001, 180.788, 174.858, 5.88728 - 1.879, 18.4323, 6.85011, 19.6195, 180.855, 174.967, 5.84671 - 1.88, 18.4392, 6.89648, 19.6391, 180.922, 175.076, 5.8045 - 1.881, 18.4462, 7.05385, 19.6507, 180.992, 175.185, 5.76458 - 1.882, 18.4533, 7.25901, 19.6497, 181.063, 175.293, 5.72641 - 1.883, 18.4607, 7.45383, 19.6364, 181.136, 175.407, 5.68461 - 1.884, 18.4682, 7.60091, 19.6164, 181.211, 175.53, 5.63562 - 1.885, 18.4759, 7.69317, 19.5979, 181.286, 175.658, 5.58228 - 1.886, 18.4836, 7.7553, 19.5885, 181.362, 175.787, 5.52966 - 1.887, 18.4914, 7.83667, 19.5922, 181.439, 175.914, 5.47817 - 1.888, 18.4993, 7.99681, 19.6073, 181.517, 176.047, 5.42346 - 1.889, 18.5074, 8.28669, 19.6276, 181.599, 176.187, 5.36331 - 1.89, 18.516, 8.73054, 19.6448, 181.684, 176.332, 5.30163 - 1.891, 18.525, 9.31376, 19.6517, 181.776, 176.478, 5.24401 - 1.892, 18.5346, 9.98163, 19.6455, 181.874, 176.626, 5.19106 - 1.893, 18.5449, 10.6509, 19.6288, 181.978, 176.779, 5.13881 - 1.894, 18.5559, 11.2322, 19.6085, 182.088, 176.94, 5.08522 - 1.895, 18.5673, 11.6574, 19.593, 182.203, 177.104, 5.03354 - 1.896, 18.5791, 11.9022, 19.5887, 182.319, 177.265, 4.98794 - 1.897, 18.5911, 11.9964, 19.5973, 182.437, 177.423, 4.94789 - 1.898, 18.6031, 12.015, 19.6152, 182.555, 177.579, 4.90898 - 1.899, 18.6151, 12.0532, 19.6351, 182.673, 177.738, 4.86868 - 1.9, 18.6272, 12.1911, 19.6487, 182.793, 177.896, 4.82879 - 1.901, 18.6395, 12.4611, 19.6505, 182.915, 178.054, 4.79171 - 1.902, 18.6522, 12.831, 19.6396, 183.041, 178.214, 4.75615 - 1.903, 18.6652, 13.2101, 19.6207, 183.171, 178.38, 4.71827 - 1.904, 18.6786, 13.4779, 19.6015, 183.303, 178.553, 4.6761 - 1.905, 18.6921, 13.5269, 19.59, 183.435, 178.73, 4.631 - 1.906, 18.7055, 13.3039, 19.5909, 183.566, 178.908, 4.58469 - 1.907, 18.7185, 12.8338, 19.6038, 183.692, 179.084, 4.53656 - 1.908, 18.7311, 12.2154, 19.6233, 183.812, 179.259, 4.48481 - 1.909, 18.743, 11.5894, 19.6415, 183.925, 179.432, 4.42912 - 1.91, 18.7543, 11.0887, 19.6508, 184.034, 179.601, 4.37104 - 1.911, 18.7652, 10.7894, 19.6473, 184.14, 179.767, 4.31206 - 1.912, 18.776, 10.6816, 19.6326, 184.245, 179.932, 4.25257 - 1.913, 18.7867, 10.6711, 19.6127, 184.349, 180.097, 4.19275 - 1.914, 18.7973, 10.615, 19.5959, 184.454, 180.26, 4.13344 - 1.915, 18.8078, 10.3759, 19.589, 184.555, 180.421, 4.07557 - 1.916, 18.8179, 9.87759, 19.595, 184.652, 180.576, 4.01952 - 1.917, 18.8274, 9.13853, 19.6113, 184.742, 180.724, 3.96565 - 1.918, 18.8361, 8.2704, 19.6311, 184.823, 180.86, 3.915 - 1.919, 18.844, 7.44078, 19.6464, 184.896, 180.983, 3.86835 - 1.92, 18.8511, 6.81322, 19.6507, 184.963, 181.097, 3.82497 - 1.921, 18.8578, 6.48711, 19.6423, 185.027, 181.204, 3.7833 - 1.922, 18.8642, 6.46048, 19.6247, 185.09, 181.307, 3.7431 - 1.923, 18.8708, 6.63061, 19.6053, 185.155, 181.409, 3.70568 - 1.924, 18.8775, 6.83303, 19.5919, 185.222, 181.509, 3.67145 - 1.925, 18.8844, 6.90468, 19.5902, 185.29, 181.61, 3.63811 - 1.926, 18.8912, 6.74729, 19.6008, 185.356, 181.712, 3.60268 - 1.927, 18.8978, 6.36662, 19.6193, 185.418, 181.814, 3.56485 - 1.928, 18.9039, 5.87209, 19.6381, 185.476, 181.913, 3.52673 - 1.929, 18.9095, 5.43659, 19.6494, 185.529, 182.006, 3.48903 - 1.93, 18.9149, 5.23127, 19.6485, 185.581, 182.098, 3.44896 - 1.931, 18.9202, 5.36038, 19.6359, 185.633, 182.196, 3.40328 - 1.932, 18.9258, 5.82098, 19.6167, 185.69, 182.301, 3.35249 - 1.933, 18.9319, 6.50325, 19.5989, 185.754, 182.414, 3.30008 - 1.934, 18.9388, 7.23126, 19.5899, 185.825, 182.534, 3.24763 - 1.935, 18.9463, 7.82873, 19.5933, 185.902, 182.663, 3.19261 - 1.936, 18.9543, 8.18465, 19.6078, 185.982, 182.802, 3.13214 - 1.937, 18.9626, 8.29364, 19.6272, 186.064, 182.947, 3.06766 - 1.938, 18.9708, 8.25577, 19.6437, 186.144, 183.092, 3.00375 - 1.939, 18.9791, 8.23625, 19.6503, 186.225, 183.234, 2.94258 - 1.94, 18.9874, 8.40062, 19.6444, 186.308, 183.377, 2.88174 - 1.941, 18.996, 8.85045, 19.6284, 186.395, 183.525, 2.81846 - 1.942, 19.0053, 9.58397, 19.609, 186.489, 183.679, 2.75444 - 1.943, 19.0153, 10.4964, 19.5941, 186.592, 183.838, 2.69435 - 1.944, 19.0263, 11.4192, 19.59, 186.704, 183.999, 2.6402 - 1.945, 19.0381, 12.1825, 19.5983, 186.823, 184.166, 2.58919 - 1.946, 19.0505, 12.6774, 19.6155, 186.947, 184.339, 2.53819 - 1.947, 19.0633, 12.8934, 19.6346, 187.074, 184.514, 2.48838 - 1.948, 19.0762, 12.9185, 19.6476, 187.201, 184.686, 2.44374 - 1.949, 19.0891, 12.9025, 19.6492, 187.327, 184.85, 2.40558 - 1.95, 19.102, 12.9973, 19.6387, 187.455, 185.012, 2.37066 - 1.951, 19.1152, 13.2997, 19.6205, 187.585, 185.177, 2.3354 - 1.952, 19.1287, 13.8152, 19.6021, 187.721, 185.345, 2.30029 - 1.953, 19.1429, 14.4582, 19.5912, 187.863, 185.515, 2.26843 - 1.954, 19.1576, 15.0857, 19.5922, 188.011, 185.688, 2.24056 - 1.955, 19.173, 15.5512, 19.6047, 188.163, 185.865, 2.21345 - 1.956, 19.1886, 15.7586, 19.6235, 188.318, 186.049, 2.18359 - 1.957, 19.2043, 15.6944, 19.6408, 188.472, 186.236, 2.15104 - 1.958, 19.2199, 15.4295, 19.6495, 188.623, 186.421, 2.1183 - 1.959, 19.2352, 15.0885, 19.646, 188.771, 186.603, 2.08611 - 1.96, 19.2501, 14.8021, 19.6317, 188.916, 186.784, 2.05186 - 1.961, 19.2648, 14.6592, 19.6126, 189.06, 186.968, 2.01268 - 1.962, 19.2795, 14.677, 19.5966, 189.204, 187.156, 1.9686 - 1.963, 19.2943, 14.7986, 19.5903, 189.349, 187.347, 1.92185 - 1.964, 19.3091, 14.918, 19.5963, 189.496, 187.541, 1.87351 - 1.965, 19.324, 14.9213, 19.6121, 189.642, 187.739, 1.82206 - 1.966, 19.3389, 14.7278, 19.6311, 189.786, 187.941, 1.76553 - 1.967, 19.3534, 14.3177, 19.6455, 189.927, 188.145, 1.70405 - 1.968, 19.3674, 13.735, 19.6493, 190.062, 188.347, 1.63964 - 1.969, 19.3808, 13.0692, 19.641, 190.19, 188.544, 1.57377 - 1.97, 19.3936, 12.4216, 19.624, 190.312, 188.737, 1.50604 - 1.971, 19.4057, 11.8703, 19.6053, 190.428, 188.927, 1.43528 - 1.972, 19.4174, 11.4462, 19.5928, 190.54, 189.115, 1.36158 - 1.973, 19.4286, 11.1266, 19.5915, 190.65, 189.301, 1.28656 - 1.974, 19.4396, 10.848, 19.6021, 190.756, 189.483, 1.21187 - 1.975, 19.4503, 10.531, 19.62, 190.859, 189.662, 1.13794 - 1.976, 19.4606, 10.1082, 19.6379, 190.958, 189.837, 1.06418 - 1.977, 19.4705, 9.54609, 19.6483, 191.052, 190.007, 0.99037 - 1.978, 19.4797, 8.85368, 19.6471, 191.139, 190.17, 0.917461 - 1.979, 19.4881, 8.07724, 19.6346, 191.218, 190.324, 0.847025 - 1.98, 19.4958, 7.28395, 19.6161, 191.29, 190.466, 0.780005 - 1.981, 19.5027, 6.54063, 19.5992, 191.354, 190.598, 0.716147 - 1.982, 19.5089, 5.89421, 19.591, 191.412, 190.72, 0.654755 - 1.983, 19.5146, 5.35954, 19.5948, 191.464, 190.834, 0.595971 - 1.984, 19.5197, 4.91703, 19.609, 191.512, 190.939, 0.54107 - 1.985, 19.5244, 4.52016, 19.6278, 191.557, 191.035, 0.491317 - 1.986, 19.5287, 4.11017, 19.6433, 191.597, 191.122, 0.446663 - 1.987, 19.5326, 3.6339, 19.6491, 191.633, 191.201, 0.40594 - 1.988, 19.536, 3.05991, 19.6429, 191.663, 191.271, 0.368479 - 1.989, 19.5387, 2.38873, 19.6272, 191.686, 191.331, 0.335183 - 1.99, 19.5407, 1.65413, 19.6086, 191.702, 191.379, 0.307551 - 1.991, 19.542, 0.914541, 19.5947, 191.711, 191.413, 0.285756 - 1.992, 19.5426, 0.236329, 19.5913, 191.714, 191.436, 0.268274 - 1.993, 19.5425, -0.326715, 19.5999, 191.711, 191.45, 0.253729 - 1.994, 19.542, -0.751643, 19.6167, 191.703, 191.456, 0.242665 - 1.995, 19.5411, -1.0561, 19.6349, 191.693, 191.453, 0.236809 - 1.996, 19.5399, -1.29529, 19.6469, 191.68, 191.442, 0.236639 - 1.997, 19.5385, -1.54572, 19.6477, 191.665, 191.424, 0.240436 - 1.998, 19.5368, -1.87993, 19.6371, 191.646, 191.402, 0.246255 - 1.999, 19.5347, -2.34027, 19.6194, 191.623, 191.373, 0.254326 - 2, 19.532, -2.92114, 19.602, 191.595, 191.335, 0.266626 + time, disp, velo, reac, wext, epot, ekin, total + 0, 0, 0, -0, 0, 0, 0, 0 + 0.001,-0.00160554,-3.21108,4.63166e-124,0.0315007,0.000421884,0.00745328,-0.0236255 + 0.002,-0.00768365,-8.94514,-3.6274e-122,0.119252,0.00923947,0.0582619,-0.0517511 + 0.003,-0.0185743,-12.8361,1.34272e-120,0.245175,0.0500032,0.124335,-0.0708363 + 0.004,-0.0321491,-14.3135,-3.11136e-119, 0.38559,0.133399,0.174109,-0.0780829 + 0.005,-0.0460795,-13.5474,5.0335e-118, 0.51849,0.234717,0.209449,-0.0743251 + 0.006,-0.0585263, -11.346,-5.99258e-117,0.629795,0.314663,0.251605,-0.0635275 + 0.007,-0.0686193,-8.84008,5.37549e-116,0.716516,0.357329,0.307951,-0.0512358 + 0.008,-0.0765765,-7.07424,-3.63579e-115,0.785914,0.378845,0.364495,-0.0425743 + 0.009,-0.0834428,-6.65839,1.79972e-114,0.851233, 0.40172,0.408979,-0.0405345 + 0.01,-0.0905724,-7.60083,-5.86967e-114,0.925797,0.432547,0.448093,-0.0451572 + 0.011,-0.0990598,-9.37405,7.11294e-114, 1.01776,0.468325,0.495577,-0.0538549 + 0.012,-0.109333,-11.1731,4.0046e-113, 1.12737, 0.51311,0.551576,-0.0626794 + 0.013,-0.121048,-12.2569,-2.41002e-112, 1.24761,0.575866,0.603745,-0.0679954 + 0.014,-0.133295,-12.2362,3.99743e-112, 1.36764,0.653347,0.646402,-0.0678938 + 0.015,-0.145014,-11.2016,1.24726e-111, 1.47753,0.726379,0.688333,-0.062819 + 0.016,-0.155441,-9.65182,-7.09978e-111, 1.57222,0.778231,0.738766,-0.0552173 + 0.017,-0.164398,-8.26361,4.7108e-111, 1.65328,0.811156,0.793717,-0.0484082 + 0.018,-0.172332,-7.60461,5.27675e-110, 1.72788,0.839967, 0.84274,-0.0451758 + 0.019,-0.180089,-7.90767,-1.29433e-109, 1.80546,0.873971,0.884823,-0.0466623 + 0.02,-0.18854,-8.99423,-2.35216e-109, 1.89369,0.912349,0.929349,-0.0519919 + 0.021,-0.198222, -10.37,1.30016e-108, 1.99542,0.955119,0.981561,-0.0587402 + 0.022,-0.209129,-11.4454,3.86934e-109, 2.1077, 1.00872, 1.03496,-0.0640147 + 0.023,-0.220744,-11.7838,-9.79393e-108, 2.2233, 1.07604, 1.08158,-0.0656749 + 0.024,-0.232274,-11.2763,4.37506e-108, 2.33392, 1.14676, 1.12397,-0.0631855 + 0.025,-0.242998,-10.1718,6.46089e-107, 2.43371, 1.20504, 1.1709,-0.057768 + 0.026,-0.252563,-8.95862,-5.79402e-107, 2.52159, 1.2458, 1.22397,-0.0518172 + 0.027,-0.261118,-8.15093,-4.01703e-106, 2.60155, 1.27819, 1.2755,-0.0478555 + 0.028,-0.26923,-8.07318,4.50952e-106, 2.68075, 1.31285, 1.32042,-0.0474741 + 0.029,-0.277633,-8.73153,2.44714e-105, 2.7664, 1.35192, 1.36378,-0.0507033 + 0.03,-0.28691,-9.82286,-2.74261e-105, 2.86277, 1.39391, 1.4128,-0.0560563 + 0.031,-0.297258,-10.8726,-1.47916e-104, 2.96943, 1.44229, 1.46593,-0.0612051 + 0.032,-0.308413,-11.4394,1.33837e-104, 3.08165, 1.50218, 1.51548,-0.0639853 + 0.033,-0.319783,-11.2995,8.79512e-104, 3.19249, 1.56979, 1.55941,-0.0632994 + 0.034, -0.3307,-10.5338,-4.59906e-104, 3.29583, 1.63209, 1.6042,-0.0595435 + 0.035,-0.340709,-9.48422,-5.03226e-103, 3.38887, 1.67962, 1.65485,-0.0543952 + 0.036,-0.349752,-8.60241,1.37042e-104, 3.47326, 1.71582, 1.70737,-0.05007 + 0.037,-0.358181,-8.25632,2.68965e-102, 3.55426, 1.75083, 1.75506,-0.0483724 + 0.038,-0.366598,-8.57758,1.51455e-102, 3.6384, 1.78976, 1.7987,-0.0499482 + 0.039,-0.375593,-9.41252,-1.29199e-101, 3.73074, 1.83153, 1.84517,-0.0540436 + 0.04,-0.385497,-10.3946,-1.67395e-101, 3.83271, 1.87697, 1.89688,-0.0588605 + 0.041,-0.396246,-11.1043,5.2315e-101, 3.94164, 1.93103, 1.94827,-0.0623419 + 0.042,-0.407423,-11.2481,1.24553e-100, 4.05199, 1.99454, 1.9944,-0.0630472 + 0.043,-0.418436,-10.7786,-1.50696e-100, 4.15773, 2.05858, 2.0384,-0.0607444 + 0.044,-0.42878,-9.90922,-7.3403e-100, 4.25493, 2.1119, 2.08655,-0.0564799 + 0.045,-0.438243,-9.01742,3.78046e-101, 4.3434, 2.15258, 2.13871,-0.0521056 + 0.046,-0.446993,-8.48169,3.48984e-99, 4.4266, 2.18846, 2.18867,-0.0494779 + 0.047,-0.455494,-8.52131,3.32365e-99, 4.5102, 2.22684, 2.23368,-0.0496722 + 0.048,-0.464308,-9.10711,-1.25884e-98, 4.59954, 2.26842, 2.27857,-0.0525456 + 0.049,-0.473852,-9.97915,-2.86088e-98, 4.69743, 2.31239, 2.32822,-0.0568229 + 0.05,-0.484222,-10.7616,2.49741e-98, 4.803, 2.36212, 2.38022,-0.0606608 + 0.051,-0.495165,-11.1243,1.55653e-97, 4.91213, 2.42106, 2.42863,-0.0624398 + 0.052,-0.506188,-10.9216,7.16369e-98, 5.01927, 2.48474, 2.47309,-0.0614457 + 0.053,-0.516774,-10.2506,-5.92819e-97, 5.11983, 2.54247, 2.51921,-0.0581543 + 0.054,-0.526602,-9.40501,-1.03429e-96, 5.21209, 2.58809, 2.57,-0.0540067 + 0.055,-0.535678,-8.74716,1.24183e-96, 5.2979, 2.62581, 2.62131,-0.05078 + 0.056,-0.544328,-8.55297,5.96421e-96, 5.38181, 2.66369, 2.6683,-0.0498275 + 0.057,-0.553053,-8.89658,2.54062e-96, 5.46908, 2.70482, 2.71275,-0.0515129 + 0.058,-0.562312,-9.62248,-2.14463e-95, 5.56348, 2.74813, 2.76028,-0.0550734 + 0.059,-0.572331,-10.4156,-3.93491e-95, 5.66566, 2.79497, 2.81172,-0.0589638 + 0.06,-0.583008,-10.9378,3.38442e-95, 5.77296, 2.84946, 2.86197,-0.0615251 + 0.061,-0.593963,-10.9717,2.06568e-94, 5.88059, 2.9111, 2.9078,-0.0616911 + 0.062,-0.604704,-10.5109,1.5513e-94, 5.9837, 2.9715, 2.95277,-0.059431 + 0.063,-0.614839,-9.75937,-6.02342e-94, 6.07944, 3.02203, 3.00166,-0.0557449 + 0.064,-0.624239,-9.04132,-1.48669e-93, 6.16814, 3.06267, 3.05325,-0.0522229 + 0.065,-0.633091,-8.66153,1.84984e-94, 6.25311, 3.10053, 3.10221,-0.05036 + 0.066,-0.64181,-8.77627,6.07104e-93, 6.3392, 3.14097, 3.14731,-0.0509228 + 0.067,-0.650862,-9.32919,8.40388e-93, 6.43072, 3.18389, 3.19319,-0.0536348 + 0.068,-0.660566,-10.0785,-1.05626e-92, 6.52959, 3.22904, 3.24324,-0.0573102 + 0.069,-0.670957,-10.7025,-4.82761e-92, 6.63458, 3.27975, 3.29446,-0.060371 + 0.07,-0.681777,-10.9376,-3.48409e-92, 6.74188, 3.33823, 3.34212,-0.0615239 + 0.071,-0.69259,-10.6892,1.27106e-91, 6.84674, 3.39947, 3.38697,-0.0603059 + 0.072,-0.70297,-10.0701,3.3112e-91, 6.94553, 3.45425, 3.43401,-0.0572689 + 0.073,-0.712679,-9.34876,5.60841e-92, 7.03724, 3.49865, 3.48486,-0.0537308 + 0.074,-0.721771,-8.83373,-1.13138e-90, 7.1239, 3.53739, 3.53531,-0.0512046 + 0.075,-0.730558, -8.7414,-2.0407e-90, 7.20965, 3.57708, 3.58182,-0.0507517 + 0.076,-0.739481,-9.10542,7.85047e-91, 7.29898, 3.61955, 3.62689,-0.0525373 + 0.077,-0.748917,-9.76475,8.6823e-90, 7.39477, 3.66382, 3.67517,-0.0557713 + 0.078,-0.759016,-10.4348,1.15871e-89, 7.49713, 3.7117, 3.72637,-0.0590579 + 0.079,-0.769649,-10.8301,-1.16887e-89, 7.60338, 3.76661, 3.77577,-0.0609968 + 0.08,-0.780457,-10.7858,-6.08899e-89, 7.70919, 3.82697, 3.82144,-0.0607796 + 0.081,-0.791013,-10.3263,-6.18627e-89, 7.81049, 3.88481, 3.86715,-0.0585259 + 0.082,-0.801002,-9.65253,1.0858e-88, 7.90518, 3.93339, 3.91657,-0.0552208 + 0.083,-0.810356,-9.05402,4.0269e-88, 7.994, 3.97405, 3.96766,-0.0522851 + 0.084,-0.819275,-8.78487,3.17809e-88, 8.08018, 4.01332, 4.01589,-0.050965 + 0.085,-0.828145, -8.9558,-8.40766e-88, 8.16803, 4.05512, 4.06112,-0.0518034 + 0.086,-0.837368,-9.48877,-2.56208e-87, 8.26112, 4.09892, 4.10778,-0.0544176 + 0.087,-0.847188,-10.1525,-1.62284e-87, 8.36071, 4.14497, 4.15808,-0.057673 + 0.088,-0.857596,-10.6626,5.8573e-87, 8.46531, 4.19649, 4.20865,-0.060175 + 0.089,-0.868329,-10.8034,1.58934e-86, 8.5713, 4.25467, 4.25576,-0.060866 + 0.09,-0.87899,-10.5192,8.61031e-87, 8.67449, 4.31404, 4.30098,-0.0594721 + 0.091,-0.889218,-9.93585,-3.78662e-86, 8.77196, 4.36661, 4.34874,-0.0566105 + 0.092,-0.898838, -9.3052,-9.69294e-86, 8.86324, 4.41017, 4.39956,-0.0535172 + 0.093,-0.907939,-8.89663,-4.96045e-86, 8.95052, 4.44972, 4.44929,-0.0515132 + 0.094,-0.916828, -8.8819,2.30243e-85, 9.03765, 4.49072, 4.49549,-0.0514409 + 0.095,-0.925901,-9.26307,5.83404e-85, 9.12852, 4.5341, 4.54112,-0.0533105 + 0.096,-0.935469,-9.87346,3.15268e-85, 9.22538, 4.5791, 4.58997,-0.0563045 + 0.097,-0.945631,-10.4504,-1.32154e-84, 9.3279, 4.62787, 4.6409,-0.0591345 + 0.098,-0.95623,-10.7483,-3.4646e-84, 9.43334, 4.68315, 4.6896,-0.0605957 + 0.099,-0.966926, -10.643,-2.15642e-84, 9.53775, 4.74246, 4.73521,-0.0600791 + 0.1,-0.977339,-10.1835,7.12871e-84, 9.63765, 4.79824, 4.78158,-0.057825 + 0.101,-0.987216,-9.56921,2.02251e-83, 9.73152, 4.84535, 4.83136,-0.0548122 + 0.102,-0.996532,-9.06376,1.51933e-83, 9.82044, 4.88612, 4.88199,-0.0523329 + 0.103, -1.0055,-8.88158,-3.56281e-83, 9.90757, 4.9265, 4.92963,-0.0514393 + 0.104,-1.01449,-9.09722,-1.15301e-82, 9.99681, 4.96927, 4.97504,-0.052497 + 0.105,-1.02385,-9.61486,-1.06218e-82, 10.0911, 5.01373, 5.02237,-0.0550361 + 0.106,-1.03376,-10.2108,1.5972e-82, 10.1913, 5.06054, 5.0728,-0.0579593 + 0.107,-1.04418,-10.6302,6.36183e-82, 10.2956, 5.11279, 5.12278,-0.0600161 + 0.108,-1.05485,-10.6957,7.19553e-82, 10.4005, 5.17069, 5.16947,-0.0603374 + 0.109,-1.06539,-10.3827,-5.91215e-82, 10.5024, 5.22847, 5.21508,-0.0588021 + 0.11,-1.07549,-9.82818,-3.35773e-81, 10.5988, 5.27925, 5.26344,-0.0560824 + 0.111,-1.08504,-9.27098,-4.65849e-81, 10.6897, 5.32222, 5.31415,-0.0533493 + 0.112,-1.09415,-8.94881,1.27343e-81, 10.7775, 5.36249, 5.36325,-0.0517691 + 0.113,-1.10312,-8.99703,1.66822e-80, 10.8658, 5.40451, 5.40925,-0.0520056 + 0.114,-1.11232,-9.39175,2.85655e-80, 10.9579, 5.44855, 5.45541,-0.0539417 + 0.115,-1.12199,-9.96151,5.16655e-81, 11.0556, 5.49418, 5.50471,-0.0567364 + 0.116,-1.13221,-10.4617,-7.60896e-80, 11.1583, 5.54374, 5.55532,-0.0591896 + 0.117,-1.14278,-10.6794,-1.64596e-79, 11.263, 5.59933, 5.60343,-0.0602574 + 0.118,-1.15338,-10.5242,-9.53052e-80, 11.3663, 5.65769, 5.64908,-0.0594962 + 0.119,-1.16367,-10.0654,3.03688e-79, 11.465, 5.71171, 5.69605,-0.0572462 + 0.12,-1.17346,-9.50155,8.82604e-79, 11.5582, 5.75765, 5.74608,-0.0544803 + 0.121,-1.18274,-9.07402,8.45059e-79, 11.6472, 5.79861, 5.79623,-0.0523832 + 0.122,-1.19176,-8.96418,-9.3237e-79, 11.7352, 5.83992, 5.8434,-0.0518445 + 0.123,-1.20085,-9.21632,-4.33913e-78, 11.8256, 5.88344, 5.88906,-0.0530812 + 0.124,-1.21032,-9.71984,-5.89976e-78, 11.9209, 5.92841, 5.93697,-0.055551 + 0.125,-1.22031,-10.2578,9.22181e-79, 12.0216, 5.97594, 5.98743,-0.0581897 + 0.126,-1.23074,-10.6003,1.90356e-77, 12.1256, 6.02883, 6.03685,-0.0598695 + 0.127,-1.24134,-10.6026,3.54316e-77, 12.2296, 6.08643, 6.08325,-0.0598811 + 0.128,-1.25178,-10.2666,1.59614e-77, 12.3303, 6.14277, 6.12928,-0.0582327 + 0.129,-1.26178,-9.73819,-7.0172e-77, 12.4258, 6.19205, 6.17812,-0.055641 + 0.13,-1.27127,-9.24456,-1.87197e-76, 12.5165, 6.23463, 6.22865,-0.0532198 + 0.131,-1.28039,-8.99617,-1.76361e-76, 12.6048, 6.27557, 6.27718,-0.0520014 + 0.132,-1.28944,-9.09717,1.78754e-76, 12.694, 6.3184, 6.32309,-0.0524968 + 0.133,-1.29874,-9.50179,8.6437e-76, 12.7872, 6.36295, 6.36977,-0.0544814 + 0.134, -1.3085, -10.035,1.2447e-75, 12.8856, 6.40915, 6.41941,-0.0570967 + 0.135,-1.31876,-10.4681,7.97835e-77, 12.9883, 6.45946, 6.46966,-0.0592213 + 0.136, -1.3293, -10.617,-3.35221e-75, 13.0925, 6.51527, 6.51728,-0.0599516 + 0.137,-1.33982,-10.4202,-7.05442e-75, 13.1947, 6.5727, 6.56304,-0.0589861 + 0.138,-1.35001,-9.96419,-4.98646e-75, 13.2925, 6.62516, 6.61055,-0.0567495 + 0.139,-1.35971,-9.44566,9.55045e-75, 13.3851, 6.67019, 6.66073,-0.0542061 + 0.14,-1.36898,-9.08647,3.34611e-74, 13.4743, 6.71141, 6.71041,-0.0524443 + 0.141,-1.37804,-9.03885,4.20176e-74, 13.5629, 6.75351, 6.75721,-0.0522107 + 0.142,-1.38722,-9.32093,-6.57437e-75, 13.6544, 6.79762, 6.80316,-0.0535943 + 0.143,-1.39679,-9.80992,-1.29744e-73, 13.7506, 6.84304, 6.85158,-0.0559928 + 0.144,-1.40684,-10.2955,-2.48944e-73, 13.8516, 6.89125, 6.90198,-0.0583747 + 0.145,-1.41727,-10.5704,-1.56268e-73, 13.9553, 6.9447, 6.95088,-0.0597228 + 0.146,-1.42782,-10.5185,3.60298e-73, 14.0585, 7.00193, 6.99709,-0.0594686 + 0.147,-1.43816,-10.1644,1.1721e-72, 14.1582, 7.05693, 7.04354,-0.0577316 + 0.148,-1.44807, -9.6613,1.44269e-72, 14.253, 7.10494, 7.09278,-0.0552639 + 0.149,-1.45752,-9.22511,-1.99374e-73, 14.3435, 7.14729, 7.14307,-0.0531243 + 0.15,-1.46665, -9.0417,-4.32776e-72, 14.4322, 7.18886, 7.1911,-0.0522247 + 0.151,-1.47576,-9.18772,-8.44961e-72, 14.5223, 7.23236, 7.23701,-0.0529409 + 0.152,-1.48516,-9.59861,-5.89235e-72, 14.6165, 7.27733, 7.28419,-0.0549563 + 0.153,-1.49501,-10.0971,1.04743e-71, 14.7155, 7.32407, 7.33405,-0.0574014 + 0.154,-1.50529,-10.4697,3.76499e-71, 14.8182, 7.37508, 7.38393,-0.059229 + 0.155, -1.5158, -10.558,5.05193e-71, 14.9218, 7.43102, 7.43113,-0.0596622 + 0.156,-1.52624,-10.3262,4.9895e-72, 15.0231, 7.48751, 7.47707,-0.0585252 + 0.157,-1.53635,-9.87533,-1.24133e-70, 15.12, 7.53858, 7.52509,-0.0563137 + 0.158,-1.54598,-9.39942,-2.73127e-70, 15.2122, 7.5829, 7.57531,-0.0539793 + 0.159,-1.55523,-9.10194,-2.43408e-70, 15.3015, 7.62444, 7.62452,-0.0525202 + 0.16,-1.56434,-9.10886,2.11394e-70, 15.3908, 7.66723, 7.67105,-0.0525541 + 0.161, -1.5736,-9.41532,1.08576e-69, 15.4832, 7.7118, 7.71735,-0.0540573 + 0.162,-1.58325, -9.8885,1.72622e-69, 15.5802, 7.75764, 7.76619,-0.0563783 + 0.163,-1.59336,-10.3252,7.83048e-70, 15.6815, 7.80652, 7.81646,-0.0585204 + 0.164,-1.60379,-10.5391,-2.86931e-69, 15.7849, 7.86046, 7.86486,-0.0595696 + 0.165,-1.61428,-10.4402,-8.09323e-69, 15.8873, 7.91724, 7.91098,-0.0590841 + 0.166,-1.62454,-10.0725,-9.60204e-69, 15.9861, 7.97097, 7.95787,-0.0572808 + 0.167,-1.63437,-9.59491,7.53522e-70, 16.0802, 8.0179, 8.00741,-0.0549382 + 0.168,-1.64377,-9.21208,2.64859e-68, 16.1706, 8.06015, 8.05741,-0.0530604 + 0.169,-1.65292,-9.08704,5.40838e-68, 16.2598, 8.10232, 8.105,-0.0524471 + 0.17, -1.6621,-9.27169,4.6174e-68, 16.3507, 8.14637, 8.151,-0.0533528 + 0.171,-1.67158,-9.68529,-4.13774e-68, 16.4457, 8.1917, 8.19865,-0.0553815 + 0.172, -1.6815,-10.1498,-2.06347e-67, 16.5453, 8.23898, 8.24866,-0.0576598 + 0.173,-1.69181,-10.4664,-3.31972e-67, 16.648, 8.29064, 8.29812,-0.0592126 + 0.174,-1.70229,-10.5006,-1.77673e-67, 16.751, 8.34661, 8.34499,-0.0593806 + 0.175,-1.71266,-10.2395,4.69048e-67, 16.8514, 8.40214, 8.39119,-0.0580999 + 0.176,-1.72268,-9.79634,1.45013e-66, 16.9475, 8.45196, 8.43965,-0.0559262 + 0.177,-1.73226,-9.36153,1.89659e-66, 17.0394, 8.49574, 8.48983,-0.0537935 + 0.178, -1.7415,-9.12085,3.67202e-67, 17.1288, 8.53765, 8.53858,-0.052613 + 0.179,-1.75065,-9.17607,-4.01158e-66, 17.2189, 8.58104, 8.58494,-0.0528838 + 0.18,-1.75999,-9.50192,-9.48648e-66, 17.3121, 8.62599, 8.6316,-0.0544821 + 0.181,-1.76972,-9.95764,-1.01606e-65, 17.4098, 8.67225, 8.6808,-0.0567174 + 0.182,-1.77987,-10.3477,2.11283e-66, 17.5113, 8.72178, 8.73086,-0.0586308 + 0.183, -1.7903,-10.5058,2.99801e-65, 17.6143, 8.77611, 8.77882,-0.0594064 + 0.184,-1.80073,-10.3657,5.88666e-65, 17.716, 8.83238, 8.82493,-0.0587188 + 0.185,-1.81091,-9.98874,5.12347e-65, 17.814, 8.88488, 8.87226,-0.0568699 + 0.186,-1.82067,-9.53745,-3.6802e-65, 17.9076, 8.93091, 8.92201,-0.0546563 + 0.187,-1.83004,-9.20508,-2.06201e-64, 17.9979, 8.97318, 8.97167,-0.0530261 + 0.188,-1.83921,-9.13307,-3.51101e-64, 18.0875, 9.01591, 9.01889,-0.0526729 + 0.189,-1.84845, -9.3508,-2.4346e-64, 18.1792, 9.06041, 9.06505,-0.0537408 + 0.19,-1.85801,-9.76367,3.43998e-64, 18.275, 9.10607, 9.11315,-0.055766 + 0.191,-1.86799,-10.1942,1.33918e-63, 18.375, 9.15391, 9.16321,-0.0578776 + 0.192,-1.87832,-10.4582,2.03385e-63, 18.4776, 9.20616, 9.21225,-0.0591726 + 0.193,-1.88877,-10.4438,1.08979e-63, 18.58, 9.26206, 9.25888,-0.0591018 + 0.194,-1.89907,-10.1585,-2.63467e-63, 18.6797, 9.31662, 9.30537,-0.0577024 + 0.195,-1.90901,-9.72567,-8.33848e-63, 18.7751, 9.3653, 9.35422,-0.0555796 + 0.196,-1.91854,-9.33115,-1.15447e-62, 18.8666, 9.40871, 9.40429,-0.0536445 + 0.197,-1.92778,-9.14336,-4.59661e-63, 18.9563, 9.45102, 9.4526,-0.0527233 + 0.198,-1.93697,-9.24151,1.81289e-62, 19.047, 9.49493, 9.49886,-0.0532048 + 0.199,-1.94638, -9.5822,5.02769e-62, 19.141, 9.5402, 9.54592,-0.0548759 + 0.2,-1.95618,-10.0186,6.47133e-62, 19.2393, 9.58687, 9.59539,-0.0570163 + 0.201,-1.96637,-10.3636,1.84087e-62, 19.3409, 9.63705, 9.64519,-0.0587086 + 0.202,-1.97679,-10.4702,-1.16182e-61, 19.4437, 9.69167, 9.69276,-0.0592316 + 0.203,-1.98717, -10.294,-2.95567e-61, 19.5446, 9.74734, 9.73894,-0.0583675 + 0.204,-1.99727, -9.9118,-3.6061e-61, 19.6419, 9.79868, 9.7867,-0.0564925 + 0.205,-2.00697, -9.4879,-7.23805e-62, 19.735, 9.84396, 9.83658,-0.0544133 + 0.206,-2.01632,-9.20378,7.05738e-61, 19.8252, 9.88635, 9.88587,-0.0530197 + 0.207,-2.02551,-9.18023,1.70199e-60, 19.9153, 9.9296, 9.93279,-0.0529042 + 0.208,-2.03482,-9.42606,2.00794e-60, 20.0078, 9.97448, 9.97918,-0.05411 + 0.209,-2.04445,-9.83487,3.06901e-61, 20.1043, 10.0205, 10.0277,-0.0561152 + 0.21,-2.05448,-10.2311,-4.10056e-60, 20.2046, 10.0689, 10.0777,-0.0580586 + 0.211,-2.06482,-10.4454,-9.62759e-60, 20.3071, 10.1217, 10.1263,-0.0591097 + 0.212,-2.07523, -10.387,-1.1208e-59, 20.409, 10.1774, 10.1728,-0.0588232 + 0.213,-2.08547,-10.0821,-1.62034e-60, 20.5079, 10.2309, 10.2196,-0.0573281 + 0.214,-2.09534,-9.66238,2.28875e-59, 20.6027, 10.2786, 10.2688,-0.0552691 + 0.215,-2.10482, -9.3077,5.35689e-59, 20.694, 10.3218, 10.3187,-0.0535294 + 0.216,-2.11406,-9.16945,6.2772e-59, 20.7839, 10.3645, 10.3666,-0.0528513 + 0.217, -2.1233,-9.30574,1.10376e-59, 20.8752, 10.4089, 10.4128,-0.0535198 + 0.218,-2.13278,-9.65703,-1.22812e-58, 20.97, 10.4544, 10.4603,-0.0552429 + 0.219,-2.14265,-10.0721,-2.93166e-58, 21.0688, 10.5015, 10.51,-0.0572789 + 0.22,-2.15287,-10.3732,-3.52277e-58, 21.1705, 10.5523, 10.5595,-0.0587558 + 0.221,-2.16327,-10.4321,-8.54475e-59, 21.2729, 10.6071, 10.6067,-0.0590447 + 0.222, -2.1736,-10.2247,6.31937e-58, 21.3732, 10.6621, 10.653,-0.0580274 + 0.223,-2.18363, -9.8409,1.57591e-57, 21.4697, 10.7124, 10.7012,-0.0561448 + 0.224,-2.19328, -9.4456,1.97455e-57, 21.5624, 10.7571, 10.7511,-0.0542058 + 0.225, -2.2026,-9.20789,6.67073e-58, 21.6527, 10.7997, 10.8,-0.0530399 + 0.226,-2.21182,-9.22872,-3.09804e-57, 21.7432, 10.8434, 10.8467,-0.053142 + 0.227,-2.22119,-9.49804,-8.29914e-57, 21.8364, 10.8886, 10.8934,-0.0544631 + 0.228,-2.23088,-9.89959,-1.10032e-56, 21.9335, 10.9349, 10.9422,-0.0564326 + 0.229,-2.24096,-10.2611,-4.99463e-57, 22.0342, 10.9839, 10.9921,-0.0582056 + 0.23,-2.25131,-10.4281,1.42885e-56, 22.1365, 11.0371, 11.0404,-0.0590248 + 0.231,-2.26169, -10.33,4.2651e-56, 22.2378, 11.0925, 11.0867,-0.0585438 + 0.232,-2.27186, -10.01,6.06346e-56, 22.336, 11.1451, 11.1339,-0.0569742 + 0.233,-2.28167,-9.60584,3.54131e-56, 22.4303, 11.1919, 11.1834,-0.0549918 + 0.234,-2.29111,-9.29072,-6.04723e-56, 22.5214, 11.235, 11.233,-0.0534462 + 0.235,-2.30036,-9.19904,-2.12751e-55, 22.6116, 11.2781, 11.2805,-0.0529965 + 0.236,-2.30964,-9.36904,-3.28546e-55, 22.7036, 11.3229, 11.3269,-0.0538303 + 0.237,-2.31919,-9.72691,-2.37711e-55, 22.799, 11.3687, 11.3747,-0.0555857 + 0.238,-2.32911,-10.1188,2.219e-55, 22.8982, 11.4162, 11.4245,-0.0575079 + 0.239,-2.33936, -10.377,1.02235e-54, 23, 11.4676, 11.4737,-0.0587743 + 0.24,-2.34975,-10.3916,1.74012e-54, 23.102, 11.5225, 11.5206,-0.0588459 + 0.241,-2.36002,-10.1574,1.51449e-54, 23.2016, 11.5768, 11.5672,-0.0576971 + 0.242,-2.36999,-9.77558,-5.86863e-55, 23.2975, 11.626, 11.6157,-0.0558244 + 0.243,-2.37958,-9.41007,-4.68126e-54, 23.3898, 11.6702, 11.6656,-0.0540316 + 0.244,-2.38889,-9.21712,-8.95277e-54, 23.4803, 11.7131, 11.7141,-0.0530851 + 0.245,-2.39814,-9.27854,-9.17922e-54, 23.5713, 11.7572, 11.7607,-0.0533864 + 0.246,-2.40756,-9.56702,-1.69257e-55, 23.6651, 11.8027, 11.8076,-0.0548014 + 0.247,-2.41733,-9.95826,2.00706e-53, 23.7628, 11.8493, 11.8568,-0.0567204 + 0.248,-2.42745,-10.2845,4.44293e-53, 23.8637, 11.8989, 11.9065,-0.0583206 + 0.249,-2.43779,-10.4065,5.29828e-53, 23.9658, 11.9525, 11.9544,-0.0589189 + 0.25,-2.44813,-10.2728,1.78661e-53, 24.0666, 12.0076, 12.0007,-0.0582633 + 0.251,-2.45824,-9.94175,-7.80075e-53, 24.1641, 12.0592, 12.0483,-0.0566394 + 0.252,-2.46799,-9.55564,-2.10828e-52, 24.2578, 12.1052, 12.0979,-0.0547456 + 0.253,-2.47741,-9.27987,-2.91119e-52, 24.3489, 12.1482, 12.1473,-0.0533929 + 0.254,-2.48666,-9.23194,-1.75368e-52, 24.4394, 12.1918, 12.1945,-0.0531578 + 0.255,-2.49599,-9.43146,2.54766e-52, 24.532, 12.2369, 12.241,-0.0541365 + 0.256,-2.50561,-9.79212,9.45092e-52, 24.628, 12.2829, 12.2892,-0.0559055 + 0.257,-2.51558, -10.159,1.51937e-51, 24.7277, 12.331, 12.339,-0.0577052 + 0.258,-2.52585,-10.3752,1.27234e-51, 24.8295, 12.3829, 12.3878,-0.0587655 + 0.259,-2.53621,-10.3488,-5.22379e-52, 24.931, 12.4378, 12.4346,-0.0586359 + 0.26,-2.54643, -10.092,-3.92563e-51, 25.03, 12.4913, 12.4813,-0.0573763 + 0.261,-2.55634,-9.71556,-7.49836e-51, 25.1253, 12.5396, 12.5302,-0.05553 + 0.262,-2.56588,-9.38098,-7.95866e-51, 25.2173, 12.5835, 12.58,-0.0538889 + 0.263,-2.57519, -9.2312,-1.22594e-51, 25.3079, 12.6266, 12.6282,-0.0531542 + 0.264,-2.58447,-9.32958,1.45643e-50, 25.3994, 12.6711, 12.6746,-0.0536368 + 0.265,-2.59395, -9.6331,3.47164e-50, 25.4939, 12.7168, 12.7219,-0.0551255 + 0.266,-2.60377,-10.0112,4.49376e-50, 25.5921, 12.7638, 12.7713,-0.0569799 + 0.267,-2.61393,-10.3017,2.39871e-50, 25.6932, 12.814, 12.8208,-0.0584052 + 0.268,-2.62427,-10.3809,-4.40645e-50, 25.795, 12.8679, 12.8683,-0.0587933 + 0.269,-2.63457,-10.2155,-1.48695e-49, 25.8952, 12.9225, 12.9148,-0.0579822 + 0.27,-2.64462,-9.87728,-2.32821e-49, 25.9921, 12.9731, 12.9627,-0.0563232 + 0.271,-2.65431,-9.51153,-1.93741e-49, 26.0854, 13.0185, 13.0124,-0.0545292 + 0.272, -2.6637,-9.27481,7.2153e-50, 26.1764, 13.0616, 13.0615,-0.0533681 + 0.273,-2.67297,-9.26792,5.73652e-49, 26.2673, 13.1056, 13.1084,-0.0533343 + 0.274,-2.68236,-9.49295,1.11004e-48, 26.3605, 13.1509, 13.1551,-0.0544381 + 0.275,-2.69203, -9.8528,1.22243e-48, 26.4571, 13.1972, 13.2037,-0.0562031 + 0.276,-2.70205, -10.193,3.29208e-49, 26.5571, 13.2458, 13.2535,-0.057872 + 0.277,-2.71233,-10.3682,-1.8754e-48, 26.6588, 13.2982, 13.3019,-0.058731 + 0.278,-2.72267,-10.3039,-4.83431e-48, 26.7599, 13.353, 13.3485,-0.0584157 + 0.279,-2.73283,-10.0285,-6.6805e-48, 26.8583, 13.4056, 13.3956,-0.0570651 + 0.28,-2.74268,-9.66069,-4.48937e-48, 26.9531, 13.4531, 13.4447,-0.0552608 + 0.281,-2.75219,-9.35803,4.23283e-48, 27.0449, 13.4967, 13.4944,-0.0537763 + 0.282,-2.76149,-9.24982,1.88203e-47, 27.1356, 13.5402, 13.5422,-0.0532455 + 0.283,-2.77081,-9.38164,3.25837e-47, 27.2276, 13.5851, 13.5886,-0.0538921 + 0.284,-2.78035,-9.69627,3.22303e-47, 27.3228, 13.631, 13.6363,-0.0554354 + 0.285,-2.79022,-10.0584,2.55876e-48, 27.4214, 13.6784, 13.6858,-0.0572118 + 0.286,-2.80041,-10.3131,-6.20613e-47, 27.5226, 13.7291, 13.7351,-0.0584607 + 0.287,-2.81074,-10.3516,-1.42304e-46, 27.6242, 13.7832, 13.7823,-0.0586495 + 0.288, -2.821,-10.1582,-1.84004e-46, 27.7238, 13.8372, 13.8289,-0.0577012 + 0.289,-2.83098,-9.81658,-1.0837e-46, 27.8201, 13.8869, 13.8772,-0.0560255 + 0.29,-2.84063, -9.4733,1.45217e-46, 27.913, 13.9318, 13.9269,-0.0543417 + 0.291, -2.85,-9.27527,5.46573e-46, 28.004, 13.9751, 13.9756,-0.0533703 + 0.292,-2.85929,-9.30669,9.03879e-46, 28.0953, 14.0194, 14.0224,-0.0535245 + 0.293,-2.86872,-9.55335,8.58112e-46, 28.189, 14.065, 14.0693,-0.0547344 + 0.294,-2.87846,-9.90898,1.64746e-47, 28.2863, 14.1116, 14.1182,-0.0564787 + 0.295,-2.88852, -10.221,-1.74387e-45, 28.3865, 14.1607, 14.1679,-0.0580094 + 0.296,-2.89881,-10.3562,-3.88403e-45, 28.4881, 14.2135, 14.216,-0.0586723 + 0.297,-2.90912,-10.2572,-4.96718e-45, 28.5887, 14.268, 14.2625,-0.0581866 + 0.298,-2.91923,-9.96718,-2.94217e-45, 28.6865, 14.3198, 14.3099,-0.0567642 + 0.299,-2.92902, -9.6109,3.75248e-45, 28.7808, 14.3665, 14.3593,-0.0550166 + 0.3,-2.93849, -9.341,1.43481e-44, 28.8724, 14.4101, 14.4087,-0.0536928 + 0.301, -2.9478,-9.27267,2.39613e-44, 28.9634, 14.4539, 14.4562,-0.0533576 + 0.302,-2.95715,-9.43448,2.34279e-44, 29.0559, 14.4991, 14.5027,-0.0541513 + 0.303,-2.96675,-9.75642,2.56357e-45, 29.1517, 14.5452, 14.5507,-0.0557304 + 0.304,-2.97668,-10.1002,-4.23519e-44, 29.2507, 14.593, 14.6003,-0.0574168 + 0.305,-2.98689,-10.3187,-9.87784e-44, 29.352, 14.6442, 14.6493,-0.0584885 + 0.306,-2.99721,-10.3188,-1.31588e-43, 29.4532, 14.6984, 14.6963,-0.058489 + 0.307,-3.00742,-10.1012,-8.89928e-44, 29.5523, 14.7518, 14.7431,-0.0574216 + 0.308,-3.01735, -9.7597,7.16911e-44, 29.648, 14.8006, 14.7917,-0.0557465 + 0.309,-3.02695,-9.44082,3.39511e-43, 29.7406, 14.8451, 14.8413,-0.0541824 + 0.31,-3.03631,-9.28094,6.04118e-43, 29.8317, 14.8886, 14.8897,-0.0533982 + 0.311,-3.04562,-9.34795,6.44983e-43, 29.9234, 14.9333, 14.9364,-0.0537269 + 0.312, -3.0551,-9.61246,1.99617e-43, 30.0177, 14.9791, 14.9836,-0.0550243 + 0.313,-3.06489,-9.96064,-8.65228e-43, 30.1154, 15.026, 15.0327,-0.0567321 + 0.314,-3.07499,-10.2433,-2.31482e-42, 30.2159, 15.0756, 15.0822,-0.0581183 + 0.315,-3.08528,-10.3396,-3.36544e-42, 30.3173, 15.1288, 15.13,-0.0585908 + 0.316,-3.09556, -10.209,-2.76434e-42, 30.4175, 15.183, 15.1765,-0.0579503 + 0.317,-3.10561,-9.90808,6.73739e-43, 30.5147, 15.2339, 15.2243,-0.0564743 + 0.318,-3.11535,-9.56615,7.04974e-42, 30.6085, 15.28, 15.2738,-0.0547972 + 0.319, -3.1248,-9.32965,1.42179e-41, 30.7, 15.3235, 15.3229,-0.0536371 + 0.32,-3.13411,-9.29943,1.72582e-41, 30.7913, 15.3676, 15.3701,-0.0534888 + 0.321,-3.14351,-9.48778,9.62593e-42, 30.8843, 15.4131, 15.4168,-0.0544127 + 0.322,-3.15316,-9.81343,-1.32809e-41, 30.9806, 15.4595, 15.4652,-0.05601 + 0.323,-3.16313,-10.1366,-4.85761e-41, 31.0801, 15.5077, 15.5148,-0.0575952 + 0.324,-3.17336, -10.319,-8.07785e-41, 31.1813, 15.5594, 15.5634,-0.0584899 + 0.325,-3.18366, -10.283,-8.15645e-41, 31.2822, 15.6136, 15.6103,-0.0583135 + 0.326,-3.19383,-10.0448,-1.92973e-41, 31.3807, 15.6663, 15.6573,-0.0571447 + 0.327, -3.2037,-9.70675,1.1959e-40, 31.4759, 15.7143, 15.7061,-0.0554868 + 0.328,-3.21326,-9.41395,3.02456e-40, 31.5683, 15.7585, 15.7557,-0.0540506 + 0.329,-3.22261,-9.29153,4.3076e-40, 31.6594, 15.8022, 15.8038,-0.0534501 + 0.33,-3.23196,-9.39135,3.52116e-40, 31.7516, 15.8472, 15.8504,-0.0539397 + 0.331,-3.24149,-9.67002,-7.47056e-41, 31.8464, 15.8932, 15.8979,-0.0553066 + 0.332,-3.25133,-10.0077,-8.60827e-40, 31.9446, 15.9404, 15.9472,-0.0569632 + 0.333,-3.26146,-10.2598,-1.75355e-39, 32.0452, 15.9905, 15.9965,-0.0581997 + 0.334,-3.27175,-10.3187,-2.17542e-39, 32.1465, 16.044, 16.044,-0.0584882 + 0.335,-3.28199,-10.1596,-1.35145e-39, 32.2461, 16.0978, 16.0906,-0.0577082 + 0.336,-3.29199,-9.85147,1.29332e-39, 32.3428, 16.1479, 16.1387,-0.0561966 + 0.337,-3.30168,-9.52646,5.50973e-39, 32.4362, 16.1934, 16.1882,-0.0546025 + 0.338,-3.31111,-9.32376,9.62858e-39, 32.5277, 16.237, 16.2371,-0.0536082 + 0.339,-3.32043,-9.32974,1.04655e-38, 32.6192, 16.2815, 16.2841,-0.0536375 + 0.34,-3.32987,-9.54123,4.26712e-39, 32.7128, 16.3272, 16.331,-0.0546749 + 0.341,-3.33957,-9.86712,-1.103e-38, 32.8096, 16.3737, 16.3796,-0.0562734 + 0.342,-3.34959,-10.1676,-3.26777e-38, 32.9094, 16.4224, 16.4292,-0.0577473 + 0.343,-3.35983,-10.3142,-5.06357e-38, 33.0105, 16.4746, 16.4775,-0.0584662 + 0.344,-3.37011,-10.2446,-4.8154e-38, 33.111, 16.5287, 16.5243,-0.0581247 + 0.345,-3.38023,-9.98916,-7.83036e-39, 33.209, 16.5806, 16.5715,-0.056872 + 0.346,-3.39005,-9.65784,7.62356e-38, 33.3038, 16.6279, 16.6206,-0.0552469 + 0.347,-3.39958,-9.39259,1.83445e-37, 33.3959, 16.6719, 16.6701,-0.0539458 + 0.348,-3.40893,-9.30674,2.57159e-37, 33.4872, 16.7159, 16.7178,-0.0535247 + 0.349, -3.4183,-9.43652,2.12545e-37, 33.5798, 16.7612, 16.7644,-0.0541613 + 0.35,-3.42788,-9.72576,-2.7962e-38, 33.6752, 16.8074, 16.8123,-0.05558 + 0.351,-3.43777,-10.0502,-4.71962e-37, 33.7738, 16.8549, 16.8617,-0.0571715 + 0.352,-3.44793, -10.271,-9.87442e-37, 33.8746, 16.9056, 16.9107,-0.0582542 + 0.353,-3.45821,-10.2938,-1.2698e-36, 33.9755, 16.9592, 16.958,-0.0583662 + 0.354,-3.46841,-10.1095,-9.02293e-37, 34.0747, 17.0125, 17.0048,-0.0574623 + 0.355,-3.47837,-9.79756,4.4868e-37, 34.1708, 17.0618, 17.0531,-0.0559322 + 0.356,-3.48801,-9.49182,2.72084e-36, 34.2639, 17.1068, 17.1027,-0.0544325 + 0.357,-3.49742,-9.32311,5.1416e-36, 34.3554, 17.1505, 17.1512,-0.053605 + 0.358,-3.50676,-9.36325,6.13252e-36, 34.4473, 17.1953, 17.1981,-0.0538019 + 0.359,-3.51624,-9.59448,3.6957e-36, 34.5414, 17.2412, 17.2452,-0.0549361 + 0.36, -3.526, -9.9173,-3.5593e-36, 34.6387, 17.288, 17.2941,-0.0565195 + 0.361,-3.53605,-10.1933,-1.48965e-35, 34.7387, 17.3372, 17.3436,-0.0578733 + 0.362, -3.5463,-10.3045,-2.60657e-35, 34.8397, 17.3897, 17.3916,-0.0584187 + 0.363,-3.55655,-10.2037,-2.91273e-35, 34.9398, 17.4436, 17.4383,-0.0579245 + 0.364,-3.56662,-9.93474,-1.46817e-35, 35.0373, 17.4948, 17.4859,-0.0566051 + 0.365, -3.5764, -9.6131,2.29191e-35, 35.1316, 17.5414, 17.5351,-0.0550274 + 0.366,-3.58589,-9.37661,7.83509e-35, 35.2236, 17.5854, 17.5844,-0.0538674 + 0.367,-3.59524,-9.32625,1.29291e-34, 35.3151, 17.6296, 17.6318,-0.0536204 + 0.368,-3.60465,-9.48307,1.36757e-34, 35.4081, 17.6752, 17.6785,-0.0543896 + 0.369,-3.61428,-9.77939,5.71348e-35, 35.504, 17.7216, 17.7267,-0.0558431 + 0.37,-3.62421, -10.088,-1.32133e-34, 35.603, 17.7695, 17.7762,-0.0573569 + 0.371, -3.6344,-10.2768,-3.98797e-34, 35.7038, 17.8206, 17.8249,-0.0582829 + 0.372,-3.64467,-10.2653,-6.29861e-34, 35.8045, 17.8743, 17.872,-0.0582264 + 0.373,-3.65483, -10.059,-6.37723e-34, 35.9032, 17.9271, 17.9189,-0.0572143 + 0.374,-3.66473,-9.74661,-2.21881e-34, 35.9988, 17.9756, 17.9676,-0.0556823 + 0.375,-3.67434,-9.46223,7.07482e-34, 36.0916, 18.0203, 18.0171,-0.0542874 + 0.376,-3.68373,-9.32746,1.97374e-33, 36.1832, 18.0642, 18.0654,-0.0536264 + 0.377,-3.69309,-9.39958,3.02233e-33, 36.2754, 18.1093, 18.1121,-0.0539801 + 0.378,-3.70262,-9.64717,2.9655e-33, 36.37, 18.1553, 18.1595,-0.0551945 + 0.379,-3.71242, -9.9638,8.86394e-34, 36.4677, 18.2024, 18.2086,-0.0567476 + 0.38,-3.72251,-10.2138,-3.57861e-33, 36.5679, 18.252, 18.2579,-0.0579737 + 0.381,-3.73276,-10.2903,-9.52801e-33, 36.6689, 18.3049, 18.3056,-0.0583489 + 0.382,-3.74299, -10.161,-1.43128e-32, 36.7686, 18.3585, 18.3523,-0.0577148 + 0.383,-3.75301,-9.88183,-1.37926e-32, 36.8655, 18.409, 18.4002,-0.0563455 + 0.384,-3.76274,-9.57266,-3.78446e-33, 36.9594, 18.455, 18.4496,-0.054829 + 0.385,-3.77221,-9.36588,1.72439e-32, 37.0513, 18.4989, 18.4986,-0.0538148 + 0.386,-3.78157,-9.34973,4.49443e-32, 37.143, 18.5435, 18.5458,-0.0537356 + 0.387,-3.79101,-9.53063,6.69706e-32, 37.2365, 18.5892, 18.5927,-0.0546229 + 0.388,-3.80069,-9.83064,6.42665e-32, 37.3329, 18.6358, 18.6411,-0.0560944 + 0.389,-3.81066, -10.121,1.77523e-32, 37.4322, 18.6841, 18.6906,-0.0575189 + 0.39,-3.82086,-10.2776,-7.94217e-32, 37.5331, 18.7357, 18.7391,-0.0582866 + 0.391,-3.83112,-10.2336,-2.07312e-31, 37.6335, 18.7894, 18.786,-0.0580708 + 0.392,-3.84124,-10.0084,-3.09715e-31, 37.7316, 18.8415, 18.8332,-0.0569662 + 0.393,-3.85109,-9.69884,-3.00014e-31, 37.8268, 18.8893, 18.8821,-0.055448 + 0.394,-3.86066,-9.43768,-9.1159e-32, 37.9194, 18.9337, 18.9315,-0.054167 + 0.395,-3.87005,-9.33655,3.49489e-31, 38.011, 18.9779, 18.9794,-0.053671 + 0.396,-3.87943,-9.43833,9.34851e-31, 38.1035, 19.0232, 19.0262,-0.0541702 + 0.397, -3.889,-9.69894,1.41498e-30, 38.1987, 19.0694, 19.0738,-0.0554485 + 0.398,-3.89886,-10.0064,1.40115e-30, 38.2969, 19.1168, 19.1231,-0.0569567 + 0.399,-3.90897,-10.2291,4.96419e-31, 38.3972, 19.1669, 19.1722,-0.0580487 + 0.4,-3.91922,-10.2718,-1.46292e-30, 38.498, 19.2201, 19.2197,-0.0582582 + 0.401,-3.92942,-10.1167,-4.11621e-30, 38.5972, 19.2733, 19.2664,-0.0574976 + 0.402,-3.93939,-9.83075,-6.37855e-30, 38.6937, 19.3229, 19.3146,-0.056095 + 0.403,-3.94908,-9.53662,-6.52892e-30, 38.7872, 19.3685, 19.3641,-0.0546523 + 0.404,-3.95852,-9.36024,-2.76189e-30, 38.879, 19.4125, 19.4128,-0.0537871 + 0.405,-3.96789,-9.37682,5.76761e-30, 38.971, 19.4573, 19.4598,-0.0538684 + 0.406,-3.97737,-9.57877,1.76562e-29, 39.065, 19.5033, 19.5069,-0.0548591 + 0.407, -3.9871,-9.87921,2.83168e-29, 39.1619, 19.55, 19.5555,-0.0563327 + 0.408,-3.99711,-10.1493,3.02449e-29, 39.2615, 19.5988, 19.605,-0.0576574 + 0.409,-4.00732,-10.2735,1.52739e-29, 39.3622, 19.6508, 19.6532,-0.0582665 + 0.41,-4.01756, -10.199,-2.0989e-29, 39.4623, 19.7044, 19.7,-0.057901 + 0.411,-4.02764,-9.95813,-7.35183e-29, 39.56, 19.7558, 19.7474,-0.0567198 + 0.412,-4.03745,-9.65449,-1.23481e-28, 39.6547, 19.8029, 19.7965,-0.0552304 + 0.413,-4.04698,-9.41815,-1.38723e-28, 39.7471, 19.8472, 19.8458,-0.0540712 + 0.414,-4.05637,-9.35012,-8.26367e-29, 39.8388, 19.8916, 19.8935,-0.0537375 + 0.415,-4.06578,-9.47911,6.73985e-29, 39.9318, 19.9372, 19.9402,-0.0543702 + 0.416, -4.0754,-9.74943,2.95585e-28, 40.0274, 19.9836, 19.9882,-0.0556961 + 0.417,-4.08529, -10.045,5.27215e-28, 40.126, 20.0313, 20.0375,-0.057146 + 0.418,-4.09543,-10.2393,6.27306e-28, 40.2264, 20.0819, 20.0864,-0.058099 + 0.419,-4.10568,-10.2494,4.33872e-28, 40.327, 20.1352, 20.1337,-0.0581483 + 0.42,-4.11584,-10.0713,-1.67256e-28, 40.4258, 20.1879, 20.1806,-0.0572749 + 0.421,-4.12577,-9.78182,-1.13834e-27, 40.5217, 20.2368, 20.229,-0.055855 + 0.422,-4.13541,-9.50508,-2.19518e-27, 40.615, 20.282, 20.2785,-0.0544976 + 0.423,-4.14484,-9.35953,-2.78462e-27, 40.7068, 20.3261, 20.3269,-0.0537837 + 0.424,-4.15422,-9.40715,-2.20204e-27, 40.7991, 20.3712, 20.3738,-0.0540173 + 0.425,-4.16374,-9.62711,1.13786e-28, 40.8935, 20.4173, 20.4211,-0.0550961 + 0.426,-4.17352,-9.92484,4.14563e-27, 40.9909, 20.4643, 20.47,-0.0565565 + 0.427,-4.18357,-10.1727,8.86893e-27, 41.0907, 20.5136, 20.5194,-0.0577723 + 0.428,-4.19379,-10.2647,1.20813e-26, 41.1914, 20.5659, 20.5673,-0.0582237 + 0.429, -4.204,-10.1619,1.07822e-26, 41.2911, 20.6193, 20.6141,-0.0577192 + 0.43,-4.21403,-9.90863,2.29513e-27, 41.3883, 20.67, 20.6618,-0.056477 + 0.431, -4.2238,-9.61375,-1.39553e-26, 41.4826, 20.7166, 20.711,-0.0550306 + 0.432, -4.2333,-9.40357,-3.45419e-26, 41.5748, 20.7608, 20.7601,-0.0539997 + 0.433,-4.24269,-9.36785,-5.09966e-26, 41.6667, 20.8054, 20.8075,-0.0538245 + 0.434,-4.25213, -9.5215,-5.08651e-26, 41.7601, 20.8512, 20.8544,-0.0545781 + 0.435,-4.26179,-9.79829,-2.17996e-26, 41.8563, 20.8978, 20.9026,-0.0559358 + 0.436,-4.27173,-10.0795,4.13872e-26, 41.9551, 20.9458, 20.952,-0.0573149 + 0.437, -4.2819,-10.2446,1.28507e-25, 42.0556, 20.9969, 21.0006,-0.0581251 + 0.438,-4.29213,-10.2234,2.0838e-25, 42.1559, 21.0502, 21.0477,-0.0580208 + 0.439,-4.30225,-10.0252,2.30868e-25, 42.2543, 21.1024, 21.0948,-0.0570487 + 0.44,-4.31213,-9.73535,1.4098e-25, 42.3498, 21.1507, 21.1435,-0.0556271 + 0.441,-4.32174,-9.47812,-9.40478e-26, 42.4428, 21.1955, 21.1929,-0.0543653 + 0.442,-4.33116,-9.36355,-4.50318e-25, 42.5346, 21.2398, 21.241,-0.0538034 + 0.443,-4.34056,-9.44036,-8.19285e-25, 42.6272, 21.2852, 21.2879,-0.0541801 + 0.444,-4.35012,-9.67524,-1.00629e-24, 42.7221, 21.3314, 21.3354,-0.0553322 + 0.445,-4.35994,-9.96728,-7.75463e-25, 42.8199, 21.3787, 21.3845,-0.0567647 + 0.446,-4.37002,-10.1913,5.03845e-26, 42.9199, 21.4284, 21.4337,-0.0578636 + 0.447,-4.38024,-10.2516,1.45043e-24, 43.0205, 21.481, 21.4813,-0.0581594 + 0.448,-4.39043,-10.1227,3.075e-24, 43.1198, 21.5341, 21.5281,-0.0575272 + 0.449,-4.40042,-9.86025,4.2005e-24, 43.2165, 21.5841, 21.5761,-0.0562397 + 0.45,-4.41014,-9.57684,3.85563e-24, 43.3104, 21.6301, 21.6255,-0.0548495 + 0.451,-4.41963,-9.39386,1.17126e-24, 43.4026, 21.6744, 21.6743,-0.0539521 + 0.452,-4.42902,-9.38945,-4.07715e-24, 43.4947, 21.7193, 21.7215,-0.0539304 + 0.453,-4.43849,-9.56508,-1.08915e-23, 43.5885, 21.7652, 21.7685,-0.0547919 + 0.454, -4.4482,-9.84517,-1.67236e-23, 43.6851, 21.812, 21.817,-0.0561657 + 0.455,-4.45818,-10.1096,-1.77476e-23, 43.7843, 21.8604, 21.8664,-0.0574627 + 0.456,-4.46835,-10.2452,-1.00082e-23, 43.8848, 21.9119, 21.9148,-0.0581278 + 0.457,-4.47857,-10.1942,8.56245e-24, 43.9848, 21.9652, 21.9617,-0.0578775 + 0.458,-4.48866,-9.97879,3.57241e-23, 44.0827, 22.0169, 22.009,-0.0568211 + 0.459, -4.4985,-9.69163,6.31115e-23, 44.1778, 22.0644, 22.0579,-0.0554126 + 0.46,-4.50807,-9.45577,7.63969e-23, 44.2705, 22.1091, 22.1072,-0.0542557 + 0.461,-4.51748,-9.37208,5.87092e-23, 44.3625, 22.1535, 22.1551,-0.0538452 + 0.462,-4.52691,-9.47604,-2.25244e-24, 44.4554, 22.1991, 22.2019,-0.0543551 + 0.463,-4.53651,-9.72275,-1.04612e-22, 44.5508, 22.2456, 22.2497,-0.0555653 + 0.464,-4.54637,-10.0063,-2.23542e-22, 44.649, 22.2931, 22.2989,-0.056956 + 0.465,-4.55648,-10.2052,-3.08457e-22, 44.7491, 22.3432, 22.3479,-0.0579315 + 0.466, -4.5667,-10.2345,-2.91702e-22, 44.8495, 22.3961, 22.3953,-0.0580752 + 0.467,-4.57686, -10.082,-1.11999e-22, 44.9484, 22.4488, 22.4423,-0.0573272 + 0.468, -4.5868,-9.81336,2.49504e-22, 45.0447, 22.4981, 22.4905,-0.0560097 + 0.469,-4.59648, -9.5439,7.30695e-22, 45.1383, 22.5437, 22.5399,-0.054688 + 0.47,-4.60595,-9.38893,1.16563e-21, 45.2304, 22.588, 22.5885,-0.0539279 + 0.471,-4.61535,-9.41457,1.2996e-21, 45.3228, 22.6332, 22.6355,-0.0540536 + 0.472,-4.62486,-9.60944,8.59683e-22, 45.417, 22.6793, 22.6827,-0.0550095 + 0.473,-4.63461,-9.88976,-3.18158e-22, 45.514, 22.7262, 22.7314,-0.0563845 + 0.474,-4.64462,-10.1353,-2.13262e-21, 45.6135, 22.7751, 22.7808,-0.057589 + 0.475,-4.65481,-10.2411,-4.09126e-21, 45.7139, 22.827, 22.8289,-0.0581079 + 0.476,-4.66501,-10.1621,-5.29927e-21, 45.8136, 22.8802, 22.8758,-0.0577203 + 0.477,-4.67506, -9.9325,-4.64398e-21, 45.9111, 22.9312, 22.9233,-0.0565941 + 0.478,-4.68485,-9.65094,-1.21083e-21, 46.0057, 22.9781, 22.9724,-0.055213 + 0.479, -4.6944,-9.43806,5.1264e-21, 46.0983, 23.0226, 23.0215,-0.0541689 + 0.48,-4.70381,-9.38487,1.3123e-20, 46.1904, 23.0673, 23.0692,-0.0539079 + 0.481,-4.71326,-9.51379,1.98842e-20, 46.2837, 23.1132, 23.116,-0.0545403 + 0.482, -4.7229,-9.76927,2.12265e-20, 46.3796, 23.1597, 23.1641,-0.0557934 + 0.483, -4.7328,-10.0417,1.29133e-20, 46.4781, 23.2076, 23.2134,-0.0571295 + 0.484,-4.74293,-10.2143,-7.27999e-21, 46.5783, 23.2582, 23.2621,-0.0579763 + 0.485,-4.75315,-10.2135,-3.71598e-20, 46.6785, 23.3111, 23.3094,-0.0579723 + 0.486,-4.76327,-10.0399,-6.83323e-20, 46.777, 23.3634, 23.3564,-0.0571211 + 0.487,-4.77318, -9.7683,-8.63229e-20, 46.8728, 23.4121, 23.4049,-0.0557887 + 0.488,-4.78282,-9.51507,-7.37526e-20, 46.9661, 23.4573, 23.4543,-0.0545466 + 0.489,-4.79227,-9.38864,-1.6967e-20, 47.0582, 23.5017, 23.5026,-0.0539264 + 0.49,-4.80169,-9.44286,8.49212e-20, 47.1509, 23.5471, 23.5496,-0.0541924 + 0.491,-4.81124,-9.65416,2.11444e-19, 47.2456, 23.5934, 23.597,-0.0552288 + 0.492,-4.82103,-9.93175,3.17096e-19, 47.343, 23.6405, 23.6459,-0.0565904 + 0.493,-4.83107,-10.1567,3.37437e-19, 47.4426, 23.6898, 23.6951,-0.0576935 + 0.494,-4.84127,-10.2327,2.0817e-19, 47.543, 23.742, 23.7429,-0.0580665 + 0.495,-4.85145,-10.1276,-1.03845e-19, 47.6424, 23.795, 23.7898,-0.057551 + 0.496,-4.86145,-9.88674,-5.65064e-19, 47.7394, 23.8453, 23.8376,-0.0563696 + 0.497, -4.8712,-9.61352,-1.04943e-18, 47.8337, 23.8918, 23.8869,-0.0550295 + 0.498,-4.88072,-9.42497,-1.34057e-18, 47.9261, 23.9362, 23.9358,-0.0541046 + 0.499,-4.89014,-9.40165,-1.17835e-18, 48.0184, 23.9812, 23.9832,-0.0539902 + 0.5,-4.89961,-9.55321,-3.55056e-19, 48.1121, 24.0272, 24.0302,-0.0547337 + 0.501, -4.9093,-9.81441,1.15377e-18, 48.2084, 24.0739, 24.0785,-0.0560148 + 0.502,-4.91924,-10.0732,3.06433e-18, 48.3072, 24.1221, 24.1278,-0.0572842 + 0.503,-4.92939,-10.2188,4.72782e-18, 48.4074, 24.1731, 24.1763,-0.0579983 + 0.504,-4.93959,-10.1891,5.21043e-18, 48.5074, 24.2261, 24.2234,-0.0578525 + 0.505,-4.94969, -9.9971,3.55551e-18, 48.6054, 24.2779, 24.2706,-0.0569109 + 0.506,-4.95955,-9.72541,-7.83741e-19, 48.7009, 24.3259, 24.3194,-0.0555783 + 0.507,-4.96915,-9.49047,-7.43954e-18, 48.794, 24.3709, 24.3687,-0.0544259 + 0.508, -4.9786,-9.39281,-1.4744e-17, 48.8861, 24.4154, 24.4167,-0.0539469 + 0.509,-4.98803,-9.47395,-1.97129e-17, 48.979, 24.4611, 24.4636,-0.0543449 + 0.51,-4.99762,-9.69882,-1.86281e-17, 49.0742, 24.5075, 24.5113,-0.0554479 + 0.511,-5.00745,-9.97085,-8.30767e-18, 49.172, 24.5549, 24.5603,-0.0567822 + 0.512,-5.01752,-10.1735,1.211e-17, 49.2718, 24.6046, 24.6094,-0.0577761 + 0.513,-5.02772,-10.2201,3.93806e-17, 49.3721, 24.6571, 24.657,-0.0580047 + 0.514,-5.03788, -10.091,6.51821e-17, 49.4711, 24.7097, 24.7039,-0.0573716 + 0.515,-5.04784,-9.84188,7.68821e-17, 49.5676, 24.7594, 24.752,-0.0561496 + 0.516,-5.05755,-9.57958,6.07177e-17, 49.6616, 24.8054, 24.8013,-0.054863 + 0.517,-5.06705,-9.41644,7.36434e-18, 49.754, 24.8499, 24.85,-0.0540628 + 0.518,-5.07647,-9.42213,-8.12283e-17, 49.8464, 24.8951, 24.8972,-0.0540907 + 0.519,-5.08598,-9.59387,-1.86077e-16, 49.9405, 24.9412, 24.9443,-0.0549331 + 0.52, -5.0957,-9.85782,-2.69704e-16, 50.0372, 24.9881, 24.9929,-0.0562278 + 0.521,-5.10568,-10.1008,-2.82115e-16, 50.1363, 25.0367, 25.0422,-0.0574195 + 0.522,-5.11584,-10.2188,-1.75857e-16, 50.2365, 25.0881, 25.0905,-0.0579983 + 0.523,-5.12603,-10.1615,7.13424e-17, 50.3362, 25.1411, 25.1374,-0.0577175 + 0.524,-5.13609,-9.95387,4.32066e-16, 50.4339, 25.1923, 25.1849,-0.0566989 + 0.525,-5.14591, -9.685,8.12644e-16, 50.5289, 25.2397, 25.2338,-0.0553801 + 0.526,-5.15549,-9.47017,1.05641e-15, 50.6218, 25.2845, 25.283,-0.0543264 + 0.527,-5.16492,-9.40125,9.76623e-16, 50.714, 25.3292, 25.3308,-0.0539883 + 0.528,-5.17438,-9.50748,4.21418e-16, 50.8073, 25.3751, 25.3777,-0.0545093 + 0.529, -5.184,-9.74303,-6.39649e-16, 50.9029, 25.4216, 25.4256,-0.0556647 + 0.53,-5.19388,-10.0068,-2.03315e-15, 51.001, 25.4693, 25.4748,-0.0569586 + 0.531,-5.20397,-10.1858,-3.34181e-15, 51.1009, 25.5195, 25.5237,-0.0578367 + 0.532,-5.21417,-10.2036,-3.94815e-15, 51.201, 25.5721, 25.571,-0.0579238 + 0.533, -5.2243,-10.0528,-3.18971e-15, 51.2997, 25.6244, 25.6181,-0.0571841 + 0.534,-5.23422,-9.79832,-6.20507e-16, 51.3958, 25.6734, 25.6664,-0.0559359 + 0.535, -5.2439,-9.54933,3.67507e-15, 51.4895, 25.719, 25.7157,-0.0547146 + 0.536,-5.25338,-9.41241,8.82232e-15, 51.5818, 25.7636, 25.7642,-0.054043 + 0.537,-5.26281,-9.44599,1.30918e-14, 51.6745, 25.809, 25.8113,-0.0542077 + 0.538,-5.27235,-9.63537,1.41656e-14, 51.769, 25.8553, 25.8586,-0.0551366 + 0.539,-5.28211,-9.89916,9.80158e-15, 51.8661, 25.9024, 25.9073,-0.0564306 + 0.54,-5.29213,-10.1243,-1.16931e-15, 51.9654, 25.9513, 25.9566,-0.0575348 + 0.541, -5.3023,-10.2144,-1.77569e-14, 52.0656, 26.0031, 26.0046,-0.057977 + 0.542,-5.31247,-10.1312,-3.6048e-14, 52.165, 26.0559, 26.0515,-0.0575689 + 0.543,-5.32249,-9.91065,-4.92627e-14, 52.2622, 26.1066, 26.0992,-0.0564869 + 0.544,-5.33227,-9.64737,-4.90513e-14, 52.3569, 26.1534, 26.1483,-0.0551955 + 0.545,-5.34182,-9.45421,-2.81506e-14, 52.4496, 26.1981, 26.1973,-0.054248 + 0.546,-5.35125,-9.41375,1.59837e-14, 52.542, 26.2431, 26.2449,-0.0540496 + 0.547,-5.36073,-9.54303,7.757e-14, 52.6356, 26.2891, 26.2918,-0.0546837 + 0.548, -5.3704,-9.78639,1.40436e-13, 52.7316, 26.3358, 26.3399,-0.0558774 + 0.549,-5.38031,-10.0394,1.79177e-13, 52.8301, 26.3837, 26.3892,-0.0571185 + 0.55,-5.39043,-10.1937,1.64758e-13, 52.9301, 26.4343, 26.4379,-0.0578755 + 0.551,-5.40061,-10.1835,7.45903e-14, 53.03, 26.4871, 26.4851,-0.0578252 + 0.552,-5.41071,-10.0133,-9.47399e-14, 53.1282, 26.539, 26.5323,-0.0569905 + 0.553, -5.4206,-9.75641,-3.1593e-13, 53.2239, 26.5874, 26.5808,-0.0557303 + 0.554,-5.43024, -9.5229,-5.25978e-13, 53.3173, 26.6327, 26.6301,-0.054585 + 0.555, -5.4397,-9.41275,-6.33209e-13, 53.4097, 26.6773, 26.6783,-0.0540447 + 0.556,-5.44915, -9.4729,-5.39665e-13, 53.5026, 26.7229, 26.7253,-0.0543397 + 0.557,-5.45872,-9.67728,-1.77675e-13, 53.5975, 26.7694, 26.7728,-0.0553422 + 0.558,-5.46853,-9.93812,4.46956e-13, 53.695, 26.8167, 26.8218,-0.0566216 + 0.559,-5.47857,-10.1436,1.21924e-12, 53.7945, 26.866, 26.8709,-0.0576297 + 0.56,-5.48875,-10.2059,1.90503e-12, 53.8947, 26.9181, 26.9186,-0.0579352 + 0.561, -5.4989,-10.0986,2.18397e-12, 53.9937, 26.9707, 26.9656,-0.0574086 + 0.562,-5.50888,-9.86784,1.73385e-12, 54.0905, 27.0207, 27.0135,-0.0562769 + 0.563,-5.51862,-9.61276,3.58565e-13, 54.1848, 27.0671, 27.0627,-0.0550257 + 0.564,-5.52815,-9.44259,-1.8694e-12, 54.2775, 27.1118, 27.1115,-0.054191 + 0.565,-5.53759,-9.43004,-4.50155e-12, 54.37, 27.1569, 27.1589,-0.0541295 + 0.566,-5.54709,-9.58021,-6.70139e-12, 54.464, 27.2031, 27.206,-0.0548661 + 0.567, -5.5568,-9.82852,-7.38e-12, 54.5604, 27.2499, 27.2543,-0.056084 + 0.568,-5.56674,-10.0685,-5.49924e-12, 54.6591, 27.2983, 27.3036,-0.0572609 + 0.569,-5.57688,-10.1973,-5.05837e-13, 54.7592, 27.3493, 27.352,-0.0578929 + 0.57,-5.58706,-10.1601,7.20981e-12, 54.8588, 27.402, 27.3991,-0.0577103 + 0.571,-5.59712,-9.97302,1.59978e-11, 54.9567, 27.4534, 27.4465,-0.0567928 + 0.572,-5.60697,-9.71648,2.29697e-11, 55.052, 27.5012, 27.4952,-0.0555345 + 0.573,-5.61658,-9.50044,2.45125e-11, 55.1452, 27.5463, 27.5444,-0.0544748 + 0.574,-5.62603,-9.41733,1.73359e-11, 55.2376, 27.5911, 27.5924,-0.0540672 + 0.575,-5.63549, -9.5025,-9.62395e-14, 55.3308, 27.6369, 27.6394,-0.0544849 + 0.576, -5.6451, -9.7192,-2.61163e-11, 55.4262, 27.6835, 27.6871,-0.0555478 + 0.577,-5.65495, -9.9744,-5.4939e-11, 55.524, 27.731, 27.7362,-0.0567996 + 0.578,-5.66502,-10.1588,-7.68897e-11, 55.6237, 27.7808, 27.7852,-0.0577039 + 0.579,-5.67519,-10.1935,-8.02336e-11, 55.7237, 27.8331, 27.8327,-0.0578741 + 0.58,-5.68532,-10.0639,-5.46682e-11, 55.8224, 27.8854, 27.8797,-0.0572386 + 0.581,-5.69527,-9.82584,4.06724e-12, 55.9188, 27.9348, 27.9279,-0.0560709 + 0.582,-5.70497,-9.58141,8.96912e-11, 56.0128, 27.9808, 27.9771,-0.054872 + 0.583,-5.71448,-9.43528,1.8275e-10, 56.1053, 28.0254, 28.0257,-0.0541552 + 0.584,-5.72392,-9.44986,2.5173e-10, 56.198, 28.0709, 28.0729,-0.0542267 + 0.585,-5.73346,-9.61863,2.59244e-10, 56.2924, 28.1172, 28.1202,-0.0550545 + 0.586, -5.7432,-9.86905,1.73315e-10, 56.3892, 28.1642, 28.1688,-0.0562829 + 0.587,-5.75318,-10.0938,-1.81127e-11, 56.4882, 28.2128, 28.218,-0.0573851 + 0.588,-5.76333,-10.1966,-2.9338e-10, 56.5883, 28.2642, 28.2662,-0.0578894 + 0.589,-5.77349,-10.1337,-5.89525e-10, 56.6877, 28.3169, 28.3132,-0.0575809 + 0.59,-5.78353,-9.93229,-8.06571e-10, 56.7851, 28.3678, 28.3607,-0.0565931 + 0.591,-5.79333,-9.67887,-8.27508e-10, 56.88, 28.415, 28.4097,-0.05535 + 0.592,-5.80291,-9.48203,-5.53705e-10, 56.9731, 28.4599, 28.4588,-0.0543845 + 0.593,-5.81237,-9.42596,5.03451e-11, 57.0655, 28.5049, 28.5065,-0.0541095 + 0.594,-5.82185,-9.53444,9.15234e-10, 57.1591, 28.5509, 28.5535,-0.0546416 + 0.595,-5.83149,-9.76073,1.84448e-09, 57.2548, 28.5976, 28.6015,-0.0557516 + 0.596,-5.84138,-10.0077,2.52892e-09, 57.353, 28.6454, 28.6506,-0.0569631 + 0.597,-5.85147,-10.1697,2.60864e-09, 57.4528, 28.6956, 28.6994,-0.0577574 + 0.598,-5.86164,-10.1773,1.78099e-09, 57.5526, 28.748, 28.7468,-0.0577948 + 0.599,-5.87174,-10.0276,-6.41677e-11, 57.651, 28.8, 28.7939,-0.0570607 + 0.6,-5.88165,-9.78503,-2.71911e-09, 57.747, 28.8488, 28.8423,-0.0558707 + 0.601,-5.89132,-9.55352,-5.5924e-09, 57.8407, 28.8944, 28.8915,-0.0547352 + 0.602,-5.90081,-9.43222,-7.75218e-09, 57.9332, 28.9392, 28.9399,-0.0541402 + 0.603,-5.91026, -9.4729,-8.11061e-09, 58.0261, 28.9848, 28.987,-0.0543397 + 0.604,-5.91983,-9.65786,-5.74431e-09, 58.1209, 29.0312, 29.0344,-0.055247 + 0.605,-5.92961,-9.90766,-2.9495e-10, 58.2181, 29.0784, 29.0832,-0.0564723 + 0.606,-5.93962,-10.1152,7.65849e-09, 58.3173, 29.1275, 29.1323,-0.0574904 + 0.607,-5.94978,-10.1918,1.64001e-08, 58.4173, 29.1792, 29.1803,-0.0578657 + 0.608,-5.95992,-10.1047,2.31947e-08, 58.5164, 29.2317, 29.2273,-0.0574386 + 0.609,-5.96992,-9.89155,2.48146e-08, 58.6135, 29.282, 29.2751,-0.0563932 + 0.61,-5.97969,-9.64386,1.8464e-08, 58.7081, 29.3288, 29.3241,-0.0551783 + 0.611,-5.98925,-9.46771,2.94149e-09, 58.8009, 29.3736, 29.373,-0.0543143 + 0.612, -5.9987,-9.43844,-2.02669e-08, 58.8935, 29.4188, 29.4206,-0.0541707 + 0.613, -6.0082,-9.56832,-4.63745e-08, 58.9874, 29.465, 29.4676,-0.0548078 + 0.614,-6.01789,-9.80148,-6.7574e-08, 59.0835, 29.5118, 29.5158,-0.0559514 + 0.615,-6.02781,-10.0379,-7.44821e-08, 59.182, 29.5599, 29.565,-0.0571111 + 0.616,-6.03791,-10.1764,-5.87257e-08, 59.2819, 29.6105, 29.6136,-0.0577902 + 0.617,-6.04808,-10.1577,-1.62426e-08, 59.3815, 29.663, 29.6608,-0.0576987 + 0.618,-6.05815,-9.99017,4.95495e-08, 59.4795, 29.7145, 29.7081,-0.056877 + 0.619,-6.06802,-9.74576,1.25861e-07, 59.5751, 29.7627, 29.7567,-0.0556781 + 0.62,-6.07766,-9.52925,1.91074e-07, 59.6686, 29.8081, 29.8059,-0.0546162 + 0.621,-6.08714,-9.43332,2.18524e-07, 59.7611, 29.853, 29.854,-0.0541456 + 0.622,-6.09661,-9.49884,1.83509e-07, 59.8543, 29.8988, 29.9011,-0.054467 + 0.623,-6.10621,-9.69751,7.24406e-08, 59.9494, 29.9453, 29.9487,-0.0554414 + 0.624,-6.11603,-9.94403,-1.08117e-07, 60.047, 29.9927, 29.9976,-0.0566506 + 0.625,-6.12607,-10.1328,-3.25635e-07, 60.1464, 30.0422, 30.0466,-0.0575763 + 0.626,-6.13622, -10.183,-5.22241e-07, 60.2463, 30.0941, 30.0944,-0.0578226 + 0.627,-6.14635,-10.0734,-6.24086e-07, 60.3451, 30.1464, 30.1414,-0.0572851 + 0.628,-6.15631,-9.85118,-5.59713e-07, 60.4418, 30.1962, 30.1894,-0.0561952 + 0.629,-6.16604, -9.6117,-2.84768e-07, 60.536, 30.2425, 30.2385,-0.0550206 + 0.63,-6.17558,-9.45752,1.9275e-07, 60.6288, 30.2873, 30.2873,-0.0542643 + 0.631,-6.18504,-9.45452,7.94877e-07, 60.7216, 30.3327, 30.3346,-0.0542496 + 0.632,-6.19456,-9.60376,1.37246e-06, 60.8158, 30.379, 30.3818,-0.0549816 + 0.633,-6.20429,-9.84108,1.72691e-06, 60.9123, 30.426, 30.4302,-0.0561457 + 0.634,-6.21424,-10.0647,1.65653e-06, 61.0111, 30.4744, 30.4794,-0.0572426 + 0.635,-6.22436,-10.1789,1.02124e-06, 61.1109, 30.5254, 30.5277,-0.0578028 + 0.636,-6.23452, -10.135,-1.88522e-07, 61.2103, 30.5779, 30.5749,-0.0575871 + 0.637,-6.24456,-9.95191,-1.79961e-06, 61.308, 30.629, 30.6223,-0.0566893 + 0.638,-6.25439,-9.70837,-3.44412e-06, 61.4032, 30.6766, 30.6711,-0.0554947 + 0.639, -6.264,-9.50874,-4.60585e-06, 61.4965, 30.7218, 30.7202,-0.0545155 + 0.64,-6.27347,-9.43843,-4.73185e-06, 61.5891, 30.7668, 30.7681,-0.0541707 + 0.641,-6.28296,-9.52735,-3.39651e-06, 61.6825, 30.8128, 30.8152,-0.0546068 + 0.642,-6.29259,-9.73718,-4.84512e-07, 61.7781, 30.8594, 30.863,-0.055636 + 0.643,-6.30245,-9.97786,3.65946e-06, 61.8759, 30.9071, 30.912,-0.0568166 + 0.644,-6.31251,-10.1463,8.17401e-06, 61.9755, 30.9569, 30.9609,-0.0576427 + 0.645,-6.32267,-10.1704,1.17686e-05, 62.0753, 31.0091, 31.0084,-0.0577611 + 0.646,-6.33277,-10.0402,1.29783e-05, 62.1737, 31.0611, 31.0555,-0.0571223 + 0.647, -6.3427,-9.81158,1.05642e-05, 62.27, 31.1102, 31.1038,-0.056001 + 0.648, -6.3524,-9.58264,3.98356e-06, 62.364, 31.1562, 31.153,-0.054878 + 0.649,-6.36191,-9.45142,-6.1955e-06, 62.4567, 31.201, 31.2015,-0.0542344 + 0.65,-6.37138,-9.47396,-1.80822e-05, 62.5497, 31.2466, 31.2487,-0.0543449 + 0.651,-6.38093,-9.64037,-2.85926e-05, 62.6442, 31.2931, 31.296,-0.0551612 + 0.652,-6.39069,-9.87917,-3.3996e-05, 62.7412, 31.3402, 31.3446,-0.0563325 + 0.653,-6.40068, -10.088,-3.08483e-05, 62.8401, 31.389, 31.3938,-0.0573567 + 0.654,-6.41081,-10.1774,-1.71554e-05, 62.94, 31.4403, 31.4419,-0.0577955 + 0.655,-6.42095,-10.1094,6.51984e-06, 63.0391, 31.4927, 31.4889,-0.0574617 + 0.656,-6.43096,-9.91324,3.63655e-05, 63.1364, 31.5433, 31.5366,-0.0564996 + 0.657,-6.44076,-9.67318,6.53969e-05, 63.2313, 31.5904, 31.5855,-0.0553221 + 0.658,-6.45034,-9.49208,8.45299e-05, 63.3244, 31.6354, 31.6345,-0.0544338 + 0.659,-6.45981, -9.4474,8.46495e-05, 63.4171, 31.6806, 31.6822,-0.0542147 + 0.66,-6.46931,-9.55807,5.9367e-05, 63.5108, 31.7268, 31.7293,-0.0547575 + 0.661,-6.47898,-9.77647,7.847e-06, 63.6067, 31.7736, 31.7773,-0.0558287 + 0.662,-6.48887,-10.0089,-6.31305e-05, 63.7049, 31.8215, 31.8265,-0.0569688 + 0.663,-6.49895,-10.1558,-0.000138744, 63.8046, 31.8717, 31.8751,-0.0576893 + 0.664,-6.50911,-10.1544,-0.000197988, 63.9042, 31.924, 31.9225,-0.0576824 + 0.665,-6.51919,-10.0055,-0.000217976, 64.0023, 31.9757, 31.9697,-0.0569521 + 0.666,-6.52908,-9.77311,-0.000180163, 64.0982, 32.0242, 32.0182,-0.0558123 + 0.667,-6.53874,-9.55687,-7.72297e-05, 64.192, 32.0699, 32.0673,-0.0547516 + 0.668,-6.54825,-9.44936,8.12357e-05, 64.2846, 32.1148, 32.1156,-0.0542243 + 0.669,-6.55772,-9.49646,0.000266302, 64.3778, 32.1606, 32.1627,-0.0544553 + 0.67,-6.56731,-9.67776,0.000432233, 64.4727, 32.2072, 32.2102,-0.0553446 + 0.671, -6.5771,-9.91542,0.000524749, 64.57, 32.2545, 32.259,-0.0565103 + 0.672,-6.58711,-10.1076,0.000494302, 64.6692, 32.3036, 32.3081,-0.0574529 + 0.673,-6.59725, -10.172,0.000311963, 64.769, 32.3552, 32.356,-0.0577689 + 0.674,-6.60738,-10.0813,-1.59681e-05, 64.8679, 32.4075, 32.403,-0.057324 + 0.675,-6.61736,-9.87456,-0.000439268, 64.9647, 32.4575, 32.4509,-0.0563099 + 0.676,-6.62712,-9.64046,-0.000865282, 65.0593, 32.5042, 32.5,-0.0551616 + 0.677,-6.63668,-9.47931,-0.00117313, 65.1523, 32.5491, 32.5488,-0.0543712 + 0.678,-6.64615,-9.46002,-0.00124017, 65.2451, 32.5945, 32.5963,-0.0542766 + 0.679,-6.65567,-9.59064,-0.000976587, 65.3392, 32.6408, 32.6434,-0.0549172 + 0.68,-6.66537,-9.81501,-0.000360492, 65.4355, 32.6878, 32.6917,-0.0560178 + 0.681, -6.6753,-10.0369,0.000536483, 65.5339, 32.736, 32.7409,-0.0571062 + 0.682, -6.6854,-10.1613,0.00154298, 65.6336, 32.7866, 32.7893,-0.0577163 + 0.683,-6.69555,-10.1351,0.00240833, 65.733, 32.8389, 32.8365,-0.0575877 + 0.684, -6.7056,-9.96966,0.00285103, 65.8308, 32.8902, 32.8839,-0.0567763 + 0.685,-6.71545,-9.73612,0.00262931, 65.9263, 32.9382, 32.9326,-0.0556308 + 0.686,-6.72509,-9.53456,0.00161969, 66.0199, 32.9836, 32.9817,-0.0546422 + 0.687,-6.73458,-9.45126,-0.000116334, 66.1126, 33.0286, 33.0297,-0.0542336 + 0.688,-6.74407,-9.52171,-0.00229949, 66.206, 33.0746, 33.0768,-0.0545792 + 0.689,-6.75369,-9.71552,-0.00445185, 66.3013, 33.1213, 33.1245,-0.0555298 + 0.69,-6.76352,-9.94952,-0.00597625, 66.3989, 33.1688, 33.1735,-0.0566775 + 0.691,-6.77356,-10.1234,-0.00628937, 66.4982, 33.2183, 33.2224,-0.0575305 + 0.692, -6.7837,-10.1628,-0.0049856, 66.5979, 33.2701, 33.2701,-0.0577239 + 0.693,-6.79381,-10.0511,-0.00199393, 66.6965, 33.3222, 33.3172,-0.0571758 + 0.694,-6.80375,-9.83627,0.00231696, 66.793, 33.3716, 33.3653,-0.056122 + 0.695,-6.81347,-9.61049,0.00712737, 66.8873, 33.4179, 33.4144,-0.0550146 + 0.696,-6.82301,-9.47048,0.0112753, 66.9802, 33.4629, 33.463,-0.0543279 + 0.697,-6.83249,-9.47608,0.0134854, 67.0732, 33.5085, 33.5103,-0.0543553 + 0.698,-6.84204,-9.62467,0.0126838, 67.1676, 33.5549, 33.5576,-0.0550842 + 0.699,-6.85178,-9.85243,0.0083362, 67.2642, 33.602, 33.6061,-0.0562013 + 0.7,-6.86173,-10.0617,0.000720951, 67.3629, 33.6505, 33.6552,-0.0572277 + 0.701,-6.87184,-10.1629,-0.00895057, 67.4626, 33.7014, 33.7035,-0.057724 + 0.702,-6.88198,-10.1128,-0.0186346, 67.5618, 33.7538, 33.7506,-0.0574783 + 0.703,-6.89201,-9.93308,-0.0258011, 67.6593, 33.8045, 33.7982,-0.0565969 + 0.704,-6.90182,-9.70094,-0.0279887, 67.7545, 33.852, 33.847,-0.0554583 + 0.705,-6.91143,-9.51584,-0.0234675, 67.8478, 33.8973, 33.896,-0.0545504 + 0.706,-6.92092,-9.45698,-0.0118596, 67.9406, 33.9425, 33.9438,-0.0542616 + 0.707,-6.93042,-9.54939,0.00545928, 68.0343, 33.9886, 33.9909,-0.0547149 + 0.708,-6.94007,-9.75328,0.0253284, 68.1299, 34.0354, 34.0389,-0.055715 + 0.709,-6.94994,-9.98118,0.0432303, 68.2279, 34.0831, 34.0879,-0.0568328 + 0.71, -6.96,-10.1354,0.0541649, 68.3273, 34.1331, 34.1366,-0.0575895 + 0.711,-6.97014,-10.1501,0.0538351, 68.4269, 34.1851, 34.1841,-0.0576614 + 0.712,-6.98022,-10.0191,0.039899, 68.5251, 34.2368, 34.2313,-0.0570188 + 0.713,-6.99013,-9.79872,0.0129787, 68.6213, 34.2857, 34.2797,-0.0559379 + 0.714,-6.99982,-9.58348,-0.0228867, 68.7153, 34.3315, 34.3289,-0.0548821 + 0.715,-7.00935,-9.46556,-0.0605709, 68.8081, 34.3766, 34.3773,-0.0543037 + 0.716,-7.01883,-9.49531,-0.0910455, 68.9013, 34.4225, 34.4244,-0.0544497 + 0.717,-7.02841, -9.6598,-0.105281, 68.9961, 34.4691, 34.4717,-0.0552565 + 0.718,-7.03818,-9.88838,-0.0965205, 69.0931, 34.5164, 34.5203,-0.0563777 + 0.719,-7.04817,-10.0831,-0.0624078, 69.192, 34.5651, 34.5695,-0.0573327 + 0.72,-7.05829,-10.1606,-0.0064176, 69.2916, 34.6161, 34.6178,-0.0577127 + 0.721,-7.06841,-10.0878,0.0619194, 69.3906, 34.6682, 34.665,-0.0573557 + 0.722, -7.0784,-9.89615,0.128262, 69.4877, 34.7187, 34.7126,-0.0564158 + 0.723,-7.08819,-9.66788, 0.17613, 69.5825, 34.766, 34.7612,-0.0552961 + 0.724,-7.09777, -9.5008, 0.19058, 69.6757, 34.8115, 34.8098,-0.0544766 + 0.725,-7.10725,-9.46637,0.162141, 69.7686, 34.8568, 34.8575,-0.0543077 + 0.726,-7.11678,-9.57916,0.0900819, 69.8626, 34.9026, 34.9052,-0.0548609 + 0.727,-7.12646,-9.79065,-0.0159282, 69.9586, 34.9488, 34.9539,-0.0558983 + 0.728,-7.13636,-10.0101,-0.136429, 70.0568, 34.9966, 35.0032,-0.0569749 + 0.729,-7.14644,-10.1436,-0.24527, 70.1563, 35.0476, 35.0511,-0.0576296 + 0.73,-7.15658, -10.134,-0.314836, 70.2557, 35.1008, 35.0973,-0.0575826 + 0.731,-7.16664,-9.98567,-0.322447, 70.3537, 35.1529, 35.144,-0.0568549 + 0.732,-7.17651,-9.76228,-0.256546, 70.4495, 35.2006, 35.1931,-0.0557592 + 0.733,-7.18617,-9.55964,-0.121144, 70.5432, 35.2446, 35.2439,-0.0547652 + 0.734,-7.19569,-9.46449,0.0628291, 70.6361, 35.2882, 35.2936,-0.0542985 + 0.735,-7.20518,-9.51745,0.260015, 70.7295, 35.3344, 35.3405,-0.0545583 + 0.736,-7.21478,-9.69563,0.426917, 70.8246, 35.3831, 35.386,-0.0554322 + 0.737,-7.22459,-9.92255,0.520989, 70.9219, 35.4332, 35.4322,-0.0565453 + 0.738, -7.2346, -10.101,0.510713, 71.021, 35.4833, 35.4803,-0.0574204 + 0.739,-7.24473,-10.1545,0.384398, 71.1206, 35.5327, 35.5303,-0.057683 + 0.74,-7.25484,-10.0604,0.155438, 71.2193, 35.5807, 35.5814,-0.0572216 + 0.741, -7.2648,-9.85924,-0.13766, 71.316, 35.6278, 35.632,-0.0562347 + 0.742,-7.27455,-9.63722,-0.437103, 71.4106, 35.6758, 35.6796,-0.0551457 + 0.743,-7.28411, -9.4895,-0.676815, 71.5037, 35.726, 35.7232,-0.0544212 + 0.744,-7.29359,-9.47924,-0.796592, 71.5967, 35.7767, 35.7656,-0.0543708 + 0.745,-7.30314,-9.61066,-0.756468, 71.6909, 35.8236, 35.8123,-0.0550154 + 0.746,-7.31286,-9.82727,-0.547923, 71.7873, 35.8653, 35.866,-0.0560779 + 0.747,-7.32279,-10.0362,-0.199026, 71.8858, 35.9059, 35.9228,-0.0571027 + 0.748,-7.33288, -10.148,0.228282, 71.9854, 35.9527, 35.975,-0.0576509 + 0.749,-7.34301,-10.1148,0.648884, 72.0846, 36.0089, 36.0182,-0.0574885 + 0.75,-7.35305, -9.9512,0.971403, 72.1822, 36.0695, 36.056,-0.0566858 + 0.751,-7.36289, -9.7273, 1.11798, 72.2776, 36.1252, 36.0969,-0.0555876 + 0.752,-7.37252,-9.53912, 1.04264, 72.3712, 36.1699, 36.1466,-0.0546646 + 0.753,-7.38202, -9.4672,0.743861, 72.4641, 36.2055, 36.2043,-0.0543118 + 0.754,-7.39153, -9.5422,0.268182, 72.5577, 36.24, 36.263,-0.0546796 + 0.755,-7.40116,-9.73179,-0.296749, 72.6532, 36.2825, 36.315,-0.0556096 + 0.756,-7.41101,-9.95463,-0.838663, 72.7508, 36.3373, 36.3568,-0.0567026 + 0.757,-7.42104,-10.1152,-1.24361, 72.85, 36.4003, 36.3922,-0.0574903 + 0.758,-7.43117,-10.1449,-1.42049, 72.9496, 36.4615, 36.4304,-0.0576358 + 0.759,-7.44126,-10.0311,-1.32178, 73.048, 36.5112, 36.4797,-0.0570776 + 0.76,-7.45119,-9.82274,-0.955589, 73.1443, 36.5482, 36.5401,-0.0560557 + 0.761, -7.4609,-9.60921,-0.385982, 73.2386, 36.5816, 36.6019,-0.0550084 + 0.762,-7.47045,-9.48196,0.278874, 73.3316, 36.623, 36.6542,-0.0543842 + 0.763,-7.47994,-9.49538, 0.9085, 73.4248, 36.6763, 36.694,-0.05445 + 0.764,-7.48951,-9.64352, 1.3772, 73.5194, 36.7354, 36.7288,-0.0551766 + 0.765,-7.49926,-9.86278, 1.59052, 73.6161, 36.7905, 36.7693,-0.0562521 + 0.766,-7.50922,-10.0591, 1.50525, 73.7148, 36.8376, 36.82,-0.0572152 + 0.767,-7.51932,-10.1485, 1.13833, 73.8144, 36.8802, 36.8765,-0.0576538 + 0.768,-7.52945,-10.0928,0.562873, 73.9134, 36.9242, 36.9318,-0.0573805 + 0.769,-7.53945,-9.91606,-0.107896, 74.0106, 36.9718, 36.9823,-0.0565134 + 0.77,-7.54925,-9.69409,-0.744958, 74.1057, 37.0214, 37.0289,-0.0554247 + 0.771,-7.55886,-9.52206,-1.23055, 74.1992, 37.0707, 37.0739,-0.0545809 + 0.772,-7.56836,-9.47357,-1.48181, 74.2921, 37.119, 37.1188,-0.054343 + 0.773,-7.57788,-9.56924,-1.46588, 74.386, 37.1672, 37.1639,-0.0548123 + 0.774,-7.58755, -9.7679,-1.20341, 74.4818, 37.2163, 37.2097,-0.0557867 + 0.775,-7.59743,-9.98433,-0.76031, 74.5797, 37.2659, 37.257,-0.0568483 + 0.776,-7.60748,-10.1258,-0.230327, 74.6791, 37.3144, 37.3071,-0.0575423 + 0.777,-7.61761,-10.1319,0.286905, 74.7785, 37.3603, 37.3606,-0.057572 + 0.778,-7.62768, -10,0.706915, 74.8766, 37.4039, 37.4158,-0.0569254 + 0.779,-7.63757, -9.787,0.975637, 74.9726, 37.4488, 37.4679,-0.0558804 + 0.78,-7.64726,-9.58408, 1.07579, 75.0666, 37.4993, 37.5124,-0.0548851 + 0.781,-7.65679,-9.47818, 1.02381, 75.1596, 37.5552, 37.55,-0.0543656 + 0.782,-7.66628,-9.51453,0.859212, 75.2529, 37.6106, 37.5878,-0.0545439 + 0.783,-7.67588,-9.67739,0.630132, 75.3478, 37.6584, 37.6341,-0.0553428 + 0.784,-7.68567,-9.89684,0.379539, 75.4449, 37.6981, 37.6904,-0.0564191 + 0.785,-7.69565,-10.0788,0.135899, 75.5438, 37.7365, 37.75,-0.0573117 + 0.786,-7.70577,-10.1454,-0.0894231, 75.6433, 37.7816, 37.8041,-0.0576385 + 0.787,-7.71587,-10.0683,-0.298064, 75.7421, 37.8347, 37.8502,-0.0572601 + 0.788,-7.72585,-9.88063,-0.49596, 75.839, 37.8902, 37.8925,-0.0563396 + 0.789,-7.73562,-9.66295,-0.683563, 75.9338, 37.9423, 37.9363,-0.0552719 + 0.79,-7.74521,-9.50854,-0.848744, 76.0271, 37.9904, 37.9822,-0.0545145 + 0.791, -7.7547,-9.48343,-0.965234, 76.1201, 38.0375, 38.0282,-0.0543914 + 0.792,-7.76424,-9.59823,-0.997627, 76.2143, 38.0854, 38.0739,-0.0549545 + 0.793,-7.77394,-9.80358,-0.911751, 76.3105, 38.1324, 38.1221,-0.0559617 + 0.794,-7.78385,-10.0114,-0.687374, 76.4087, 38.1766, 38.1751,-0.0569812 + 0.795,-7.79392,-10.1327,-0.32919, 76.5081, 38.2191, 38.2314,-0.0575762 + 0.796,-7.80405,-10.1157,0.127696, 76.6073, 38.2639, 38.2859,-0.0574925 + 0.797,-7.81409, -9.9677,0.620187, 76.7051, 38.3143, 38.334,-0.0567667 + 0.798,-7.82395,-9.75237, 1.0677, 76.8008, 38.3698, 38.3753,-0.0557105 + 0.799,-7.83361, -9.562, 1.38854, 76.8946, 38.4264, 38.4134,-0.0547768 + 0.8,-7.84313,-9.47808, 1.51823, 76.9876, 38.4787, 38.4544,-0.0543652 + 0.801,-7.85263,-9.53644, 1.42492, 77.0811, 38.5241, 38.5024,-0.0546514 + 0.802,-7.86226,-9.71188, 1.1178, 77.1764, 38.5642, 38.5567,-0.055512 + 0.803,-7.87208,-9.92914,0.646136, 77.2738, 38.6046, 38.6126,-0.0565776 + 0.804,-7.88209,-10.0951,0.0889257, 77.3728, 38.65, 38.6655,-0.0573916 + 0.805,-7.89221,-10.1387,-0.462104, 77.4723, 38.7003, 38.7144,-0.0576057 + 0.806, -7.9023,-10.0415,-0.921939, 77.5708, 38.7518, 38.7619,-0.0571288 + 0.807,-7.91224,-9.84527,-1.22915, 77.6674, 38.8016, 38.8096,-0.0561662 + 0.808,-7.92198,-9.63415,-1.35613, 77.7619, 38.8513, 38.8554,-0.0551307 + 0.809,-7.93155,-9.49862,-1.31041, 77.8551, 38.9036, 38.897,-0.0544659 + 0.81,-7.94104,-9.49661,-1.12753, 77.9482, 38.9571, 38.9366,-0.0544561 + 0.811,-7.95061,-9.62884,-0.857933, 78.0427, 39.0066, 38.981,-0.0551046 + 0.812,-7.96034, -9.8385,-0.552153, 78.1392, 39.0487, 39.0344,-0.056133 + 0.813,-7.97028,-10.0357,-0.248624, 78.2376, 39.0869, 39.0937,-0.0571002 + 0.814,-7.98036, -10.136,0.0325253, 78.3371, 39.1287, 39.1508,-0.0575921 + 0.815,-7.99048,-10.0965,0.288432, 78.4361, 39.1782, 39.2005,-0.0573986 + 0.816,-8.00049,-9.93439,0.526253, 78.5336, 39.2324, 39.2446,-0.0566034 + 0.817,-8.01032,-9.71919,0.752723, 78.6289, 39.2854, 39.2879,-0.0555478 + 0.818,-8.01995,-9.54314, 0.96451, 78.7225, 39.3351, 39.3327,-0.0546843 + 0.819,-8.02947,-9.48161, 1.143, 78.8156, 39.3839, 39.3773,-0.0543825 + 0.82,-8.03899,-9.56081, 1.25564, 78.9094, 39.434, 39.4206,-0.0547709 + 0.821,-8.04864,-9.74664, 1.26388, 79.005, 39.4843, 39.465,-0.0556824 + 0.822,-8.05849,-9.95938, 1.13526, 79.1027, 39.5317, 39.5143,-0.0567259 + 0.823,-8.06853,-10.1079,0.856073, 79.2018, 39.5748, 39.5696,-0.0574544 + 0.824,-8.07865,-10.1286,0.440224, 79.3012, 39.6162, 39.6274,-0.0575561 + 0.825,-8.08872,-10.0129,-0.0686825, 79.3994, 39.66, 39.6824,-0.0569882 + 0.826,-8.09863,-9.81035,-0.60339, 79.4957, 39.7084, 39.7312,-0.0559949 + 0.827,-8.10834,-9.60794,-1.08589, 79.5899, 39.7606, 39.7743,-0.0550021 + 0.828,-8.11789,-9.49231,-1.44389, 79.683, 39.8137, 39.8149,-0.054435 + 0.829,-8.12739, -9.5129,-1.62637, 79.7763, 39.865, 39.8568,-0.0545359 + 0.83,-8.13698,-9.66071,-1.61411, 79.8711, 39.9142, 39.9016,-0.055261 + 0.831,-8.14674,-9.87229,-1.42217, 79.968, 39.9633, 39.9484,-0.0562987 + 0.832,-8.15671,-10.0569,-1.09402, 80.0666, 40.0132, 39.9962,-0.0572044 + 0.833, -8.1668,-10.1356,-0.689188, 80.1661, 40.0625, 40.046,-0.0575902 + 0.834,-8.17691,-10.0747,-0.268101, 80.2649, 40.1077, 40.0999,-0.0572915 + 0.835, -8.1869, -9.9005,0.121367, 80.362, 40.1481, 40.1575,-0.0564371 + 0.836,-8.19669,-9.68775,0.451956, 80.4571, 40.188, 40.2136,-0.0553936 + 0.837, -8.2063,-9.52762,0.717763, 80.5505, 40.2332, 40.2627,-0.0546081 + 0.838,-8.21581,-9.48863, 0.92808, 80.6436, 40.2852, 40.3039,-0.0544169 + 0.839,-8.22534,-9.58733, 1.09695, 80.7377, 40.3399, 40.3428,-0.054901 + 0.84,-8.23503,-9.78129, 1.23232, 80.8336, 40.3927, 40.385,-0.0558524 + 0.841,-8.24491,-9.98731, 1.32873, 80.9316, 40.4436, 40.4311,-0.0568629 + 0.842,-8.25496,-10.1171, 1.36611, 81.0308, 40.4956, 40.4777,-0.0574998 + 0.843,-8.26508,-10.1153, 1.31539, 81.1301, 40.5489, 40.5237,-0.0574906 + 0.844,-8.27513,-9.98264, 1.14898, 81.228, 40.5987, 40.5725,-0.05684 + 0.845,-8.28501,-9.77623,0.852768, 81.3239, 40.6405, 40.6276,-0.0558276 + 0.846,-8.29469,-9.58452,0.435554, 81.4179, 40.6762, 40.6868,-0.0548872 + 0.847,-8.30423,-9.48962,-0.0675876, 81.511, 40.7133, 40.7433,-0.0544217 + 0.848,-8.31374,-9.53205,-0.599404, 81.6045, 40.7577, 40.7922,-0.0546299 + 0.849,-8.32335,-9.69349,-1.09131, 81.6996, 40.8093, 40.8349,-0.0554217 + 0.85,-8.33315,-9.90464,-1.47803, 81.7968, 40.8638, 40.8765,-0.0564574 + 0.851,-8.34314, -10.075, -1.7118, 81.8956, 40.9186, 40.9197,-0.0572931 + 0.852,-8.35324,-10.1317,-1.77218, 81.995, 40.9741, 40.9633,-0.057571 + 0.853,-8.36333,-10.0505,-1.66856, 82.0936, 41.0303, 41.0061,-0.0571728 + 0.854,-8.37329,-9.86639,-1.43492, 82.1904, 41.0844, 41.0497,-0.0562698 + 0.855,-8.38305,-9.65836,-1.11869, 82.2851, 41.1321, 41.0978,-0.0552494 + 0.856,-8.39264,-9.51553,-0.76725, 82.3785, 41.1719, 41.152,-0.0545488 + 0.857,-8.40215,-9.49899,-0.416292, 82.4717, 41.2073, 41.2099,-0.0544677 + 0.858,-8.41171,-9.61568,-0.0835414, 82.566, 41.2439, 41.2671,-0.0550401 + 0.859,-8.42142,-9.81547,0.230551, 82.6623, 41.2863, 41.32,-0.0560201 + 0.86,-8.43134,-10.0127,0.535817, 82.7605, 41.3352, 41.3683,-0.0569874 + 0.861, -8.4414,-10.1229,0.841853, 82.8598, 41.3888, 41.4135,-0.0575278 + 0.862,-8.45151,-10.0989, 1.14787, 82.9589, 41.444, 41.4575,-0.0574102 + 0.863,-8.46154,-9.95122, 1.43668, 83.0565, 41.4994, 41.5004,-0.0566859 + 0.864,-8.47139,-9.74323, 1.67506, 83.1521, 41.5547, 41.5417,-0.0556657 + 0.865,-8.48104,-9.56408, 1.82085, 83.2459, 41.6094, 41.5818,-0.054787 + 0.866,-8.49057,-9.49047, 1.83442, 83.339, 41.6606, 41.624,-0.0544259 + 0.867,-8.50009,-9.55381, 1.69106, 83.4327, 41.7058, 41.6723,-0.0547366 + 0.868,-8.50973,-9.72681, 1.39019, 83.5282, 41.7453, 41.7273,-0.0555852 + 0.869,-8.51956,-9.93524,0.958187, 83.6256, 41.784, 41.785,-0.0566075 + 0.87,-8.52957,-10.0898,0.443931, 83.7246, 41.8267, 41.8406,-0.0573656 + 0.871,-8.53968,-10.1243,-0.0919024, 83.8239, 41.8737, 41.8927,-0.0575349 + 0.872,-8.54976,-10.0242,-0.590503, 83.9223, 41.9213, 41.944,-0.0570438 + 0.873,-8.55968,-9.83241,-1.00744, 84.0187, 41.967, 41.9956,-0.0561032 + 0.874,-8.56942,-9.63127,-1.32036, 84.1132, 42.0134, 42.0447,-0.0551165 + 0.875,-8.57898,-9.50691,-1.52966, 84.2065, 42.0648, 42.0871,-0.0545066 + 0.876,-8.58849,-9.51251,-1.65241, 84.2998, 42.1215, 42.1238,-0.054534 + 0.877,-8.59807,-9.64553,-1.71178, 84.3944, 42.1785, 42.1608,-0.0551865 + 0.878,-8.60782,-9.84885,-1.72584, 84.491, 42.2313, 42.2036,-0.0561838 + 0.879,-8.61776,-10.0353,-1.69943, 84.5895, 42.2808, 42.2516,-0.0570983 + 0.88,-8.62784, -10.125,-1.62212, 84.6888, 42.3305, 42.3008,-0.0575384 + 0.881,-8.63794,-10.0797,-1.47264, 84.7877, 42.3807, 42.3497,-0.0573162 + 0.882,-8.64794,-9.91894, -1.2285, 84.885, 42.427, 42.4014,-0.0565276 + 0.883,-8.65776,-9.71168,-0.877097, 84.9803, 42.4661, 42.4586,-0.0555109 + 0.884,-8.66739,-9.54677,-0.424753, 85.0739, 42.5005, 42.5187,-0.0547021 + 0.885,-8.67691,-9.49479,0.0998937, 85.1671, 42.5372, 42.5755,-0.0544471 + 0.886,-8.68645,-9.57789,0.649352, 85.261, 42.5808, 42.6253,-0.0548547 + 0.887,-8.69611,-9.76031, 1.16682, 85.3568, 42.6307, 42.6703,-0.0557495 + 0.888,-8.70598,-9.96381, 1.59892, 85.4545, 42.6836, 42.7142,-0.0567477 + 0.889,-8.71601,-10.1012, 1.9076, 85.5536, 42.7384, 42.7578,-0.0574216 + 0.89,-8.72612,-10.1137, 2.07763, 85.6528, 42.7961, 42.7992,-0.0574829 + 0.891,-8.73617,-9.99611, 2.1173, 85.7509, 42.8563, 42.8377,-0.0569061 + 0.892,-8.74607,-9.79893, 2.05241, 85.847, 42.915, 42.876,-0.0559389 + 0.893,-8.75577,-9.60671, 1.91562, 85.9412, 42.9678, 42.9185,-0.0549961 + 0.894,-8.76533,-9.50179, 1.73492, 86.0345, 43.0129, 42.9671,-0.0544814 + 0.895,-8.77484, -9.529, 1.525, 86.1279, 43.053, 43.0203,-0.0546149 + 0.896,-8.78444,-9.67654, 1.28442, 86.2229, 43.092, 43.0755,-0.0553386 + 0.897,-8.79422,-9.88109,0.999353, 86.3198, 43.1325, 43.1309,-0.0563419 + 0.898,-8.80419, -10.055, 0.65245, 86.4184, 43.1745, 43.1867,-0.0571947 + 0.899,-8.81428,-10.1237,0.233659, 86.5178, 43.217, 43.2433,-0.0575319 + 0.9,-8.82437, -10.058,-0.250953, 86.6164, 43.26, 43.2992,-0.0572097 + 0.901,-8.83434,-9.88616,-0.775542, 86.7134, 43.3052, 43.3519,-0.0563668 + 0.902,-8.84413,-9.68187,-1.29749, 86.8084, 43.3543, 43.3987,-0.0553648 + 0.903,-8.85373, -9.5327,-1.76628, 86.9019, 43.4074, 43.4399,-0.054633 + 0.904,-8.86325,-9.50246,-2.13538, 86.9951, 43.462, 43.4787,-0.0544848 + 0.905,-8.87281,-9.60399,-2.37344, 87.0893, 43.5161, 43.5182,-0.0549828 + 0.906, -8.8825,-9.79365, -2.471, 87.1854, 43.5705, 43.559,-0.055913 + 0.907, -8.8924, -9.9901,-2.44074, 87.2834, 43.6271, 43.5994,-0.0568766 + 0.908,-8.90245,-10.1092,-2.31122, 87.3826, 43.6857, 43.6394,-0.0574607 + 0.909,-8.91255, -10.1,-2.11631, 87.4817, 43.7417, 43.6825,-0.0574156 + 0.91,-8.92258,-9.96659,-1.88401, 87.5794, 43.7902, 43.7325,-0.0567613 + 0.911,-8.93245,-9.76626, -1.6283, 87.6752, 43.8305, 43.7889,-0.0557787 + 0.912,-8.94213,-9.58489,-1.34684, 87.7693, 43.8673, 43.8471,-0.054889 + 0.913,-8.95167,-9.50013,-1.02508, 87.8625, 43.9047, 43.9033,-0.0544733 + 0.914,-8.96119, -9.5482,-0.645299, 87.9561, 43.9427, 43.9587,-0.0547091 + 0.915,-8.97082,-9.70835,-0.197194, 88.0514, 43.9799, 44.016,-0.0554946 + 0.916,-8.98063,-9.91187,0.313684, 88.1486, 44.0177, 44.0744,-0.0564929 + 0.917,-8.99062,-10.0715,0.862756, 88.2474, 44.0615, 44.1287,-0.057276 + 0.918,-9.00072, -10.119, 1.40975, 88.3467, 44.1142, 44.175,-0.0575088 + 0.919,-9.01079, -10.034, 1.90756, 88.4451, 44.1726, 44.2154,-0.0570922 + 0.92,-9.02074,-9.85323, 2.31372, 88.5418, 44.2303, 44.2552,-0.0562053 + 0.921,-9.03049,-9.65409, 2.60069, 88.6365, 44.2849, 44.2963,-0.0552285 + 0.922,-9.04008,-9.52195, 2.76159, 88.7299, 44.3393, 44.336,-0.0545803 + 0.923, -9.0496,-9.51334, 2.8095, 88.8232, 44.3966, 44.3721,-0.0545381 + 0.924,-9.05917, -9.6318, 2.77061, 88.9177, 44.4552, 44.4074,-0.0551192 + 0.925, -9.0689,-9.82647, 2.67384, 89.0141, 44.5105, 44.4475,-0.056074 + 0.926,-9.07882,-10.0139, 2.54024, 89.1123, 44.5604, 44.495,-0.0569932 + 0.927,-9.08888,-10.1137, 2.37615, 89.2116, 44.6073, 44.5467,-0.0574831 + 0.928,-9.09898,-10.0834, 2.17221, 89.3105, 44.654, 44.5992,-0.0573343 + 0.929,-9.10899,-9.93598, 1.90851, 89.4079, 44.6987, 44.6526,-0.0566112 + 0.93,-9.11883,-9.73476, 1.56412, 89.5034, 44.7378, 44.71,-0.0556241 + 0.931,-9.12848,-9.56598, 1.1275, 89.5973, 44.7706, 44.7719,-0.0547963 + 0.932,-9.13801, -9.5019,0.604043, 89.6905, 44.8014, 44.8346,-0.054482 + 0.933,-9.14755,-9.56987,0.018132, 89.7844, 44.8358, 44.8937,-0.0548154 + 0.934, -9.1572,-9.74062,-0.591158, 89.8799, 44.8762, 44.9481,-0.0556529 + 0.935,-9.16704,-9.94091,-1.17933, 89.9775, 44.9212, 44.9996,-0.0566353 + 0.936,-9.17706,-10.0849,-1.70758, 90.0764, 44.9695, 45.0496,-0.0573416 + 0.937,-9.18715, -10.111,-2.15196, 90.1756, 45.0214, 45.0967,-0.0574696 + 0.938,-9.19721,-10.0081,-2.50762, 90.2738, 45.078, 45.1388,-0.056965 + 0.939,-9.20713, -9.8205,-2.78664, 90.3701, 45.1384, 45.1757,-0.0560447 + 0.94,-9.21685,-9.62858,-3.01039, 90.4645, 45.1997, 45.2098,-0.0551033 + 0.941,-9.22642,-9.51457,-3.19921, 90.5579, 45.2592, 45.2441,-0.0545441 + 0.942,-9.23594,-9.52723, -3.3629, 90.6513, 45.3166, 45.2801,-0.0546062 + 0.943,-9.24554, -9.661,-3.49561, 90.7461, 45.3733, 45.3176,-0.0552623 + 0.944, -9.2553,-9.85845,-3.57672, 90.8428, 45.4307, 45.3559,-0.0562309 + 0.945,-9.26525,-10.0349,-3.57749, 90.9413, 45.4882, 45.396,-0.0570965 + 0.946,-9.27532,-10.1149,-3.47111, 91.0405, 45.5426, 45.4404,-0.0574887 + 0.947,-9.28541,-10.0642,-3.24259, 91.1392, 45.591, 45.4909,-0.0572399 + 0.948,-9.29539,-9.90461,-2.89501, 91.2364, 45.6331, 45.5469,-0.0564573 + 0.949, -9.3052,-9.70471,-2.44992, 91.3316, 45.6708, 45.6054,-0.0554768 + 0.95,-9.31483,-9.55011,-1.94164, 91.4253, 45.7061, 45.6645,-0.0547185 + 0.951,-9.32435,-9.50701, -1.4076, 91.5186, 45.739, 45.7251,-0.054507 + 0.952,-9.33391,-9.59373,-0.877833, 91.6127, 45.7689, 45.7889,-0.0549324 + 0.953,-9.34359, -9.773,-0.367431, 91.7085, 45.7979, 45.8548,-0.0558117 + 0.954,-9.35346,-9.96793,0.125541, 91.8063, 45.8309, 45.9186,-0.0567679 + 0.955,-9.36349, -10.095,0.616024, 91.9054, 45.8709, 45.9771,-0.0573912 + 0.956,-9.37359,-10.0999, 1.12333, 92.0044, 45.916, 46.031,-0.057415 + 0.957,-9.38363,-9.98056, 1.66099, 92.1023, 45.9621, 46.0834,-0.0568298 + 0.958,-9.39351,-9.78832, 2.22878, 92.1984, 46.0079, 46.1346,-0.0558869 + 0.959,-9.40321,-9.60556, 2.80975, 92.2926, 46.0566, 46.181,-0.0549904 + 0.96,-9.41277,-9.51057, 3.37326, 92.3859, 46.1117, 46.2197,-0.0545245 + 0.961,-9.42229,-9.54393, 3.88316, 92.4795, 46.1722, 46.2527,-0.0546882 + 0.962,-9.43191,-9.69123, 4.30804, 92.5746, 46.2343, 46.2849,-0.0554107 + 0.963, -9.4417,-9.88926, 4.63009, 92.6716, 46.2968, 46.3184,-0.056382 + 0.964,-9.45167,-10.0531, 4.84936, 92.7702, 46.3627, 46.3504,-0.0571857 + 0.965,-9.46176,-10.1127, 4.98208, 92.8694, 46.4337, 46.3783,-0.0574778 + 0.966,-9.47183,-10.0425, 5.05344, 92.968, 46.5062, 46.4046,-0.0571337 + 0.967,-9.48179,-9.87283, 5.08773, 93.0648, 46.5735, 46.435,-0.0563014 + 0.968,-9.49157,-9.67641, 5.09896, 93.1597, 46.6326, 46.4717,-0.0553379 + 0.969,-9.50117,-9.53741, 5.08565, 93.2533, 46.6867, 46.5119,-0.0546562 + 0.97, -9.5107,-9.51532, 5.03127, 93.3466, 46.7396, 46.5525,-0.0545478 + 0.971,-9.52027,-9.61948, 4.91047, 93.441, 46.7908, 46.5951,-0.0550587 + 0.972,-9.52998,-9.80514, 4.69852, 93.5372, 46.8367, 46.6445,-0.0559694 + 0.973,-9.53988,-9.99269, 4.38083, 93.6352, 46.8762, 46.7021,-0.0568893 + 0.974,-9.54993,-10.1018, 3.95902, 93.7343, 46.9123, 46.7646,-0.0574245 + 0.975,-9.56002,-10.0858, 3.45136, 93.8333, 46.948, 46.8279,-0.057346 + 0.976,-9.57004,-9.95167, 2.88745, 93.9309, 46.9815, 46.8927,-0.0566881 + 0.977,-9.57989, -9.757, 2.29903, 94.0266, 47.0088, 46.9621,-0.0557333 + 0.978,-9.58956,-9.58523, 1.71017, 94.1206, 47.0288, 47.037,-0.0548907 + 0.979,-9.59911,-9.50992, 1.13028, 94.2139, 47.0456, 47.1138,-0.0545213 + 0.98,-9.60865,-9.56322,0.552496, 94.3077, 47.0643, 47.1886,-0.0547828 + 0.981,-9.61829,-9.72218,-0.0421727, 94.4031, 47.0865, 47.2611,-0.0555625 + 0.982,-9.62811,-9.91859,-0.676277, 94.5004, 47.1105, 47.3334,-0.0565259 + 0.983, -9.6381,-10.0683, -1.3662, 94.5992, 47.1355, 47.4064,-0.0572601 + 0.984,-9.64819,-10.1072,-2.11467, 94.6983, 47.1635, 47.4774,-0.057451 + 0.985,-9.65826,-10.0188,-2.90826, 94.7966, 47.1965, 47.5431,-0.0570172 + 0.986,-9.66819,-9.84098,-3.72069, 94.8932, 47.2342, 47.6028,-0.0561452 + 0.987,-9.67793,-9.65012,-4.52085, 94.9878, 47.2743, 47.6583,-0.055209 + 0.988,-9.68752,-9.52794, -5.2826, 95.0813, 47.3161, 47.7106,-0.0546097 + 0.989,-9.69705, -9.5267,-5.99278, 95.1748, 47.3615, 47.7587,-0.0546036 + 0.99,-9.70663,-9.64682,-6.65469, 95.2694, 47.4141, 47.8001,-0.0551928 + 0.991,-9.71638,-9.83671,-7.28575, 95.3659, 47.4757, 47.8341,-0.0561242 + 0.992, -9.7263, -10.015,-7.91016, 95.4641, 47.5453, 47.8618,-0.0569986 + 0.993,-9.73636,-10.1053, -8.5493, 95.5633, 47.6208, 47.885,-0.0574414 + 0.994,-9.74645, -10.069,-9.21326, 95.662, 47.7009, 47.9039,-0.0572635 + 0.995,-9.75644,-9.92179,-9.89654, 95.7594, 47.7857, 47.9172,-0.0565415 + 0.996,-9.76627,-9.72687,-10.5796, 95.8548, 47.8757, 47.9235,-0.0555855 + 0.997,-9.77592,-9.56776,-11.2353, 95.9487, 47.9704, 47.9234,-0.054805 + 0.998,-9.78546,-9.51257,-11.8385, 96.042, 48.0683, 47.9191,-0.0545343 + 0.999, -9.795,-9.58484,-12.3748, 96.136, 48.169, 47.9121,-0.0548888 + 1,-9.80467,-9.75349,-12.8451, 96.2317, 48.2744, 47.9016,-0.055716 + 1.001,-9.81452,-9.94618,-13.2656, 96.3293, 48.387, 47.8856,-0.0566612 + 1.002,-9.82454,-10.0803,-13.6615, 96.4281, 48.5068, 47.864,-0.0573192 + 1.003,-9.83463,-10.0986,-14.0578, 96.5272, 48.6306, 47.8392,-0.0574086 + 1.004,-9.84467,-9.99316,-14.4705, 96.6252, 48.7547, 47.8136,-0.0568916 + 1.005,-9.85457, -9.8094,-14.9008, 96.7215, 48.8786, 47.7869,-0.0559903 + 1.006,-9.86429,-9.62609, -15.335, 96.8159, 49.0047, 47.7562,-0.0550911 + 1.007,-9.87386,-9.52173,-15.7495, 96.9093, 49.1342, 47.7206,-0.0545793 + 1.008, -9.8834,-9.54096, -16.12, 97.0029, 49.2655, 47.6828,-0.0546736 + 1.009, -9.893,-9.67542,-16.4299, 97.0978, 49.3966, 47.6459,-0.0553331 + 1.01,-9.90278,-9.86739,-16.6772, 97.1946, 49.5287, 47.6097,-0.0562747 + 1.011,-9.91273,-10.0346,-16.8752, 97.2931, 49.6654, 47.5706,-0.0570948 + 1.012, -9.9228,-10.1054,-17.0478, 97.3922, 49.8077, 47.5271,-0.0574422 + 1.013,-9.93287,-10.0496,-17.2212, 97.4908, 49.9515, 47.4821,-0.0571686 + 1.014,-9.94284,-9.89125,-17.4148, 97.5878, 50.0921, 47.4393,-0.0563917 + 1.015,-9.95264,-9.69822,-17.6343, 97.683, 50.2293, 47.3982,-0.0554449 + 1.016,-9.96227,-9.55326,-17.8704, 97.7767, 50.3672, 47.3548,-0.0547339 + 1.017, -9.9718,-9.51843, -18.102, 97.8701, 50.5082, 47.3073,-0.054563 + 1.018,-9.98136,-9.60852,-18.3047, 97.9643, 50.6505, 47.2588,-0.055005 + 1.019,-9.99106,-9.78483,-18.4598, 98.0603, 50.7913, 47.2132,-0.0558698 + 1.02,-10.0009,-9.97175,-18.5616, 98.1581, 50.9316, 47.1698,-0.0567866 + 1.021, -10.011,-10.0892,-18.6193, 98.2571, 51.0753, 47.1244,-0.0573627 + 1.022,-10.0211,-10.0869,-18.6544, 98.3561, 51.2235, 47.0752,-0.0573516 + 1.023,-10.0311,-9.96604,-18.6928, 98.4538, 51.3719, 47.0252,-0.0567586 + 1.024, -10.041,-9.77842,-18.7555, 98.5497, 51.5156, 46.9784,-0.0558383 + 1.025,-10.0506,-9.60452,-18.8515, 98.644, 51.6551, 46.9339,-0.0549853 + 1.026,-10.0602, -9.5188,-18.9747, 98.7373, 51.7952, 46.8876,-0.0545649 + 1.027,-10.0697,-9.55791,-19.1063, 98.8311, 51.9386, 46.8377,-0.0547567 + 1.028,-10.0794,-9.70496, -19.222, 98.9263, 52.0835, 46.7873,-0.055478 + 1.029,-10.0892,-9.89687,-19.3013, 99.0234, 52.227, 46.74,-0.0564193 + 1.03,-10.0992,-10.0514,-19.3347, 99.122, 52.3699, 46.6949,-0.0571772 + 1.031,-10.1092,-10.1023,-19.3279, 99.2211, 52.5155, 46.6482,-0.0574271 + 1.032,-10.1193, -10.028,-19.2995, 99.3195, 52.6642, 46.5983,-0.0570626 + 1.033,-10.1292,-9.86038, -19.274, 99.4162, 52.8121, 46.5479,-0.0562403 + 1.034, -10.139,-9.67133,-19.2737, 99.5111, 52.9555, 46.5002,-0.055313 + 1.035,-10.1486,-9.54185, -19.31, 99.6047, 53.0953, 46.4547,-0.054678 + 1.036,-10.1581,-9.52737,-19.3797, 99.6982, 53.2358, 46.4078,-0.0546069 + 1.037,-10.1677,-9.63397,-19.4663, 99.7927, 53.3795, 46.3581,-0.0551298 + 1.038,-10.1775,-9.81587,-19.5461, 99.889, 53.525, 46.3079,-0.056022 + 1.039,-10.1874,-9.99508,-19.5972, 99.987, 53.6701, 46.26,-0.0569011 + 1.04,-10.1974,-10.0948,-19.6075, 100.086, 53.8146, 46.214,-0.0573904 + 1.041,-10.2075,-10.0725,-19.5792, 100.185, 53.9606, 46.167,-0.0572807 + 1.042,-10.2175,-9.93771,-19.5281, 100.282, 54.108, 46.1177,-0.0566196 + 1.043,-10.2273,-9.74836,-19.4776, 100.378, 54.2545, 46.0678,-0.0556909 + 1.044, -10.237,-9.58559,-19.4503, 100.472, 54.3975, 46.0197,-0.0548925 + 1.045,-10.2466,-9.51911,-19.4598, 100.565, 54.5377, 45.9731,-0.0545664 + 1.046,-10.2561, -9.5773,-19.5056, 100.659, 54.6784, 45.9261,-0.0548518 + 1.047,-10.2658,-9.73512,-19.5735, 100.755, 54.8219, 45.8773,-0.0556259 + 1.048,-10.2756,-9.92486,-19.6408, 100.852, 54.968, 45.8277,-0.0565566 + 1.049,-10.2856,-10.0652, -19.685, 100.951, 55.1145, 45.7792,-0.057245 + 1.05,-10.2957,-10.0961,-19.6917, 101.05, 55.2605, 45.7321,-0.0573966 + 1.051,-10.3057,-10.0044,-19.6604, 101.148, 55.406, 45.6852,-0.0569468 + 1.052,-10.3156,-9.82953,-19.6043, 101.245, 55.5515, 45.637,-0.056089 + 1.053,-10.3254,-9.64644,-19.5455, 101.339, 55.6964, 45.5876,-0.055191 + 1.054, -10.335,-9.53359,-19.5068, 101.433, 55.8395, 45.5386,-0.0546374 + 1.055,-10.3445,-9.53925,-19.5035, 101.526, 55.9805, 45.4911,-0.0546652 + 1.056,-10.3541,-9.66089,-19.5375, 101.621, 56.1214, 45.4444,-0.0552618 + 1.057,-10.3639,-9.84628,-19.5968, 101.718, 56.2648, 45.3967,-0.0561712 + 1.058,-10.3738, -10.016,-19.6601, 101.816, 56.4116, 45.3474,-0.0570035 + 1.059,-10.3838,-10.0973,-19.7045, 101.915, 56.5597, 45.2979,-0.0574022 + 1.06,-10.3939,-10.0554,-19.7141, 102.014, 56.7063, 45.2501,-0.057197 + 1.061,-10.4039,-9.90849,-19.6861, 102.111, 56.8507, 45.2036,-0.0564763 + 1.062,-10.4137,-9.71951,-19.6313, 102.206, 56.9942, 45.1564,-0.0555494 + 1.063,-10.4234,-9.56947,-19.5705, 102.3, 57.1381, 45.1071,-0.0548134 + 1.064,-10.4329,-9.52261,-19.5265, 102.393, 57.2817, 45.0572,-0.0545836 + 1.065,-10.4425, -9.5989,-19.5158, 102.488, 57.4235, 45.0091,-0.0549578 + 1.066,-10.4521,-9.76555,-19.5425, 102.583, 57.5647, 44.963,-0.0557752 + 1.067, -10.462,-9.95108,-19.5967, 102.681, 57.7082, 44.9161,-0.0566852 + 1.068, -10.472, -10.076,-19.6582, 102.78, 57.8559, 44.8667,-0.057298 + 1.069,-10.4821,-10.0869,-19.7045, 102.879, 58.0051, 44.8164,-0.0573512 + 1.07,-10.4921,-9.97911,-19.7184, 102.977, 58.1517, 44.7683,-0.0568227 + 1.071, -10.502,-9.79902,-19.6951, 103.073, 58.2945, 44.7224,-0.0559393 + 1.072,-10.5117, -9.6238,-19.6434, 103.167, 58.4364, 44.6758,-0.0550799 + 1.073,-10.5213, -9.5285,-19.5829, 103.261, 58.5799, 44.6262,-0.0546125 + 1.074,-10.5308,-9.55389, -19.536, 103.354, 58.7241, 44.5756,-0.054737 + 1.075,-10.5405,-9.68896,-19.5203, 103.45, 58.8666, 44.5275,-0.0553995 + 1.076,-10.5503,-9.87575,-19.5415, 103.546, 59.0081, 44.482,-0.0563157 + 1.077,-10.5602,-10.0342,-19.5915, 103.645, 59.1523, 44.4354,-0.057093 + 1.078,-10.5703,-10.0965,-19.6518, 103.744, 59.3009, 44.3856,-0.0573984 + 1.079,-10.5803, -10.036,-19.6997, 103.842, 59.4504, 44.3348,-0.0571016 + 1.08,-10.5903,-9.87871,-19.7176, 103.939, 59.5961, 44.2868,-0.0563302 + 1.081,-10.6001,-9.69217,-19.6989, 104.034, 59.7374, 44.2415,-0.0554153 + 1.082,-10.6097,-9.55628,-19.6507, 104.128, 59.8784, 44.195,-0.0547487 + 1.083,-10.6192, -9.5292,-19.5912, 104.222, 60.022, 44.1449,-0.0546159 + 1.084,-10.6288,-9.62243,-19.5427, 104.316, 60.1668, 44.0941,-0.0550732 + 1.085,-10.6385,-9.79593,-19.5231, 104.412, 60.3098, 44.0463,-0.0559242 + 1.086,-10.6484,-9.97529,-19.5398, 104.51, 60.4521, 44.001,-0.056804 + 1.087,-10.6584,-10.0837,-19.5863, 104.609, 60.5971, 43.9544,-0.0573356 + 1.088,-10.6685,-10.0747,-19.6452, 104.708, 60.7462, 43.9042,-0.0572917 + 1.089,-10.6785,-9.95239,-19.6943, 104.805, 60.8951, 43.8535,-0.0566916 + 1.09,-10.6884,-9.76916,-19.7154, 104.901, 61.0395, 43.8058,-0.0557929 + 1.091,-10.6981,-9.60359,-19.7007, 104.995, 61.1798, 43.7606,-0.0549808 + 1.092,-10.7077, -9.5266,-19.6559, 105.089, 61.3205, 43.7137,-0.0546031 + 1.093,-10.7172,-9.57108,-19.5978, 105.183, 61.4644, 43.6635,-0.0548213 + 1.094,-10.7268,-9.71786,-19.5482, 105.278, 61.6095, 43.613,-0.0555413 + 1.095,-10.7367,-9.90399,-19.5258, 105.375, 61.7533, 43.5654,-0.0564542 + 1.096,-10.7466,-10.0497,-19.5387, 105.474, 61.8966, 43.52,-0.0571688 + 1.097,-10.7567,-10.0926,-19.5821, 105.573, 62.0425, 43.4729,-0.0573792 + 1.098,-10.7668,-10.0144,-19.6394, 105.671, 62.1913, 43.4228,-0.0569956 + 1.099,-10.7767,-9.84869,-19.6892, 105.768, 62.339, 43.3725,-0.056183 + 1.1,-10.7864, -9.6666,-19.7128, 105.862, 62.4821, 43.3251,-0.0552898 + 1.101,-10.7961, -9.5461,-19.7015, 105.956, 62.6221, 43.2794,-0.0546988 + 1.102,-10.8056,-9.53876,-19.6596, 106.05, 62.763, 43.232,-0.0546628 + 1.103,-10.8152,-9.64762,-19.6031, 106.144, 62.907, 43.1821,-0.0551967 + 1.104,-10.8249,-9.82594,-19.5531, 106.241, 63.0525, 43.1322,-0.0560714 + 1.105,-10.8348,-9.99727,-19.5285, 106.339, 63.1972, 43.0847,-0.0569118 + 1.106,-10.8449,-10.0882,-19.5384, 106.438, 63.3418, 43.0386,-0.0573579 + 1.107, -10.855,-10.0599,-19.5789, 106.536, 63.4881, 42.9912,-0.057219 + 1.108,-10.8649,-9.92457,-19.6347, 106.634, 63.6357, 42.9415,-0.0565552 + 1.109,-10.8748,-9.74027,-19.6848, 106.729, 63.7819, 42.8918,-0.0556512 + 1.11,-10.8844, -9.586,-19.7102, 106.823, 63.9243, 42.8442,-0.0548945 + 1.111, -10.894,-9.52783,-19.7016, 106.917, 64.0645, 42.7978,-0.0546092 + 1.112,-10.9036,-9.59059,-19.6623, 107.011, 64.2057, 42.7503,-0.054917 + 1.113,-10.9132,-9.74728,-19.6072, 107.107, 64.3499, 42.701,-0.0556856 + 1.114,-10.9231, -9.9307,-19.5572, 107.204, 64.4958, 42.6516,-0.0565853 + 1.115,-10.9331,-10.0622,-19.5311, 107.303, 64.6418, 42.6037,-0.0572305 + 1.116,-10.9431,-10.0856,-19.5386, 107.402, 64.7874, 42.5569,-0.0573451 + 1.117,-10.9532, -9.9909,-19.5767, 107.5, 64.9333, 42.5095,-0.0568805 + 1.118,-10.9631,-9.81877,-19.6311, 107.596, 65.0793, 42.4606,-0.0560362 + 1.119,-10.9728,-9.64304, -19.681, 107.691, 65.2241, 42.4113,-0.0551743 + 1.12,-10.9824,-9.53899,-19.7077, 107.784, 65.3664, 42.3631,-0.0546639 + 1.121,-10.9919,-9.55113,-19.7012, 107.878, 65.5071, 42.316,-0.0547234 + 1.122,-11.0016,-9.67415, -19.664, 107.973, 65.6486, 42.2688,-0.0553269 + 1.123,-11.0113,-9.85526,-19.6104, 108.069, 65.793, 42.2203,-0.0562152 + 1.124,-11.0213,-10.0168,-19.5606, 108.168, 65.9398, 42.1709,-0.0570077 + 1.125,-11.0313,-10.0896,-19.5335, 108.267, 66.087, 42.1223,-0.0573648 + 1.126,-11.0414,-10.0426,-19.5392, 108.365, 66.2329, 42.0751,-0.0571341 + 1.127,-11.0513,-9.89596,-19.5754, 108.462, 66.3777, 42.0282,-0.0564149 + 1.128,-11.0612,-9.71263,-19.6284, 108.558, 66.5221, 41.98,-0.0555156 + 1.129,-11.0708,-9.57117,-19.6779, 108.651, 66.6661, 41.9305,-0.0548218 + 1.13,-11.0803,-9.53215,-19.7053, 108.745, 66.8088, 41.8816,-0.0546303 + 1.131,-11.0899,-9.61219,-19.7003, 108.839, 66.9499, 41.8343,-0.0550229 + 1.132,-11.0996,-9.77689,-19.6649, 108.935, 67.0917, 41.7877,-0.0558308 + 1.133,-11.1095,-9.95564,-19.6127, 109.033, 67.2365, 41.7396,-0.0567076 + 1.134,-11.1195,-10.0718,-19.5634, 109.132, 67.3844, 41.69,-0.0572775 + 1.135,-11.1296,-10.0758,-19.5358, 109.23, 67.5325, 41.6407,-0.0572968 + 1.136,-11.1396,-9.96584,-19.5402, 109.328, 67.678, 41.5935,-0.0567576 + 1.137,-11.1495,-9.78925,-19.5749, 109.424, 67.8212, 41.5472,-0.0558915 + 1.138,-11.1592,-9.62171,-19.6265, 109.519, 67.9643, 41.4993,-0.0550697 + 1.139,-11.1688,-9.53497,-19.6755, 109.612, 68.1082, 41.4493,-0.0546442 + 1.14,-11.1783,-9.56613,-19.7032, 109.706, 68.2514, 41.3999,-0.054797 + 1.141,-11.1879,-9.70173,-19.6992, 109.801, 68.3929, 41.3529,-0.0554621 + 1.142,-11.1977,-9.88359,-19.6652, 109.898, 68.535, 41.3069,-0.0563542 + 1.143,-11.2077,-10.0338,-19.6141, 109.997, 68.6807, 41.2589,-0.0570908 + 1.144,-11.2177, -10.088,-19.5655, 110.096, 68.8296, 41.2086,-0.0573566 + 1.145,-11.2278, -10.023,-19.5378, 110.194, 68.9778, 41.1591,-0.0570381 + 1.146,-11.2377,-9.86689,-19.5414, 110.291, 69.1221, 41.1123,-0.0562723 + 1.147,-11.2475,-9.68652, -19.575, 110.386, 69.2638, 41.0665,-0.0553876 + 1.148,-11.2571,-9.55921,-19.6255, 110.48, 69.4064, 41.0184,-0.0547631 + 1.149,-11.2667,-9.53944,-19.6737, 110.573, 69.5506, 40.9678,-0.0546661 + 1.15,-11.2763,-9.63559,-19.7013, 110.668, 69.6942, 40.9183,-0.0551377 + 1.151, -11.286,-9.80637,-19.6978, 110.764, 69.836, 40.8718,-0.0559754 + 1.152,-11.2959,-9.97856,-19.6647, 110.862, 69.9787, 40.8261,-0.05682 + 1.153,-11.3059,-10.0784,-19.6147, 110.961, 70.1255, 40.7777,-0.0573097 + 1.154, -11.316,-10.0632,-19.5669, 111.059, 70.2751, 40.727,-0.0572349 + 1.155, -11.326,-9.93949,-19.5395, 111.157, 70.4225, 40.6776,-0.0566284 + 1.156,-11.3358,-9.76046,-19.5429, 111.253, 70.5653, 40.6315,-0.0557502 + 1.157,-11.3455, -9.6028,-19.5757, 111.347, 70.706, 40.5857,-0.0549769 + 1.158,-11.3551,-9.53405,-19.6252, 111.44, 70.8486, 40.537,-0.0546397 + 1.159,-11.3647,-9.58356,-19.6726, 111.534, 70.9932, 40.4862,-0.0548825 + 1.16,-11.3743,-9.73004,-19.6997, 111.63, 71.1371, 40.437,-0.055601 + 1.161,-11.3841,-9.91065,-19.6963, 111.727, 71.2794, 40.3911,-0.0564869 + 1.162,-11.3941, -10.048,-19.6638, 111.826, 71.4231, 40.3453,-0.0571605 + 1.163,-11.4042,-10.0832,-19.6147, 111.924, 71.5709, 40.2962,-0.0573335 + 1.164,-11.4142,-10.0014,-19.5678, 112.023, 71.7203, 40.2454,-0.0569322 + 1.165,-11.4241,-9.83767,-19.5411, 112.119, 71.8664, 40.1966,-0.056129 + 1.166,-11.4339,-9.66221,-19.5446, 112.214, 72.0078, 40.1508,-0.0552683 + 1.167,-11.4435, -9.5502,-19.5769, 112.308, 72.1482, 40.1047,-0.0547189 + 1.168, -11.453,-9.54959,-19.6256, 112.401, 72.2911, 40.0554,-0.0547159 + 1.169,-11.4627,-9.66053,-19.6719, 112.496, 72.4361, 40.0046,-0.0552601 + 1.17,-11.4724,-9.83541,-19.6982, 112.592, 72.5802, 39.9562,-0.0561179 + 1.171,-11.4823,-9.99926,-19.6945, 112.691, 72.7232, 39.9104,-0.0569215 + 1.172,-11.4924,-10.0819,-19.6623, 112.789, 72.8681, 39.864,-0.0573268 + 1.173,-11.5024, -10.048, -19.614, 112.888, 73.0164, 39.8145,-0.0571605 + 1.174,-11.5124,-9.91214,-19.5682, 112.985, 73.1648, 39.764,-0.0564942 + 1.175,-11.5222,-9.73267,-19.5424, 113.081, 73.3093, 39.7158,-0.0556139 + 1.176,-11.5319,-9.58648,-19.5464, 113.175, 73.4499, 39.67,-0.0548969 + 1.177,-11.5414,-9.53617,-19.5786, 113.268, 73.5905, 39.6233,-0.0546501 + 1.178, -11.551, -9.6032,-19.6265, 113.363, 73.7339, 39.5737,-0.0549789 + 1.179,-11.5607,-9.75877,-19.6718, 113.458, 73.8791, 39.5234,-0.0557419 + 1.18,-11.5705,-9.93616, -19.697, 113.556, 74.0237, 39.4755,-0.056612 + 1.181,-11.5805,-10.0593,-19.6926, 113.654, 74.1677, 39.4295,-0.0572162 + 1.182,-11.5906,-10.0756,-19.6604, 113.753, 74.3136, 39.3825,-0.057296 + 1.183,-11.6006,-9.97808,-19.6128, 113.851, 74.4615, 39.3329,-0.0568176 + 1.184,-11.6105,-9.80863,-19.5681, 113.947, 74.6084, 39.283,-0.0559865 + 1.185,-11.6203, -9.6399,-19.5436, 114.042, 74.7517, 39.2352,-0.0551589 + 1.186,-11.6298,-9.54419,-19.5484, 114.136, 74.892, 39.1889,-0.0546894 + 1.187,-11.6394,-9.56243,-19.5808, 114.229, 75.033, 39.1416,-0.0547789 + 1.188, -11.649,-9.68671,-19.6281, 114.324, 75.1768, 39.0922,-0.0553885 + 1.189,-11.6588, -9.8637,-19.6721, 114.421, 75.3224, 39.0426,-0.0562566 + 1.19,-11.6687,-10.0175,-19.6959, 114.519, 75.4677, 38.9948,-0.0570112 + 1.191,-11.6788,-10.0823,-19.6905, 114.618, 75.6128, 38.9482,-0.057329 + 1.192,-11.6888,-10.0304, -19.658, 114.717, 75.7589, 38.9008,-0.0570744 + 1.193,-11.6988,-9.88411, -19.611, 114.814, 75.9058, 38.8516,-0.0563567 + 1.194,-11.7086,-9.70618,-19.5676, 114.909, 76.0513, 38.8022,-0.055484 + 1.195,-11.7182,-9.57288,-19.5446, 115.003, 76.1937, 38.7543,-0.0548301 + 1.196,-11.7278,-9.54126,-19.5506, 115.096, 76.3343, 38.7075,-0.0546751 + 1.197,-11.7374, -9.6248,-19.5834, 115.191, 76.4758, 38.66,-0.0550848 + 1.198,-11.7471,-9.78761,-19.6301, 115.287, 76.62, 38.6111,-0.0558834 + 1.199, -11.757,-9.95987,-19.6727, 115.385, 76.7661, 38.5618,-0.0567283 + 1.2, -11.767,-10.0678,-19.6949, 115.483, 76.9124, 38.5137,-0.0572577 + 1.201, -11.777,-10.0652,-19.6882, 115.582, 77.0581, 38.4667,-0.0572449 + 1.202, -11.787,-9.95325,-19.6552, 115.68, 77.2038, 38.4193,-0.0566959 + 1.203,-11.7969,-9.78006,-19.6087, 115.776, 77.3493, 38.3706,-0.0558463 + 1.204,-11.8066,-9.61983,-19.5668, 115.87, 77.4936, 38.3214,-0.0550604 + 1.205,-11.8162, -9.5412,-19.5455, 115.964, 77.6359, 38.2731,-0.0546748 + 1.206,-11.8258,-9.57779,-19.5531, 116.058, 77.7768, 38.226,-0.0548542 + 1.207,-11.8354,-9.71383,-19.5864, 116.153, 77.9187, 38.1787,-0.0555215 + 1.208,-11.8452,-9.89095,-19.6325, 116.25, 78.0634, 38.1302,-0.0563903 + 1.209,-11.8552,-10.0332,-19.6737, 116.348, 78.2104, 38.0809,-0.0570882 + 1.21,-11.8652,-10.0798, -19.694, 116.447, 78.3576, 38.0324,-0.0573165 + 1.211,-11.8753,-10.0107,-19.6856, 116.545, 78.5033, 37.9852,-0.0569777 + 1.212,-11.8852,-9.85571, -19.652, 116.642, 78.6478, 37.9382,-0.0562174 + 1.213, -11.895,-9.68125,-19.6061, 116.737, 78.792, 37.8898,-0.0553617 + 1.214,-11.9046, -9.5621,-19.5657, 116.831, 78.9358, 37.8403,-0.0547772 + 1.215,-11.9141,-9.54924,-19.5465, 116.925, 79.0783, 37.7916,-0.0547142 + 1.216,-11.9237, -9.6481,-19.5557, 117.019, 79.2195, 37.7445,-0.0551991 + 1.217,-11.9335,-9.81624,-19.5898, 117.116, 79.3618, 37.6977,-0.0560238 + 1.218,-11.9434,-9.98156,-19.6354, 117.213, 79.5073, 37.6493,-0.0568347 + 1.219,-11.9534,-10.0733,-19.6749, 117.312, 79.6553, 37.5997,-0.0572845 + 1.22,-11.9635,-10.0521, -19.693, 117.411, 79.8029, 37.5508,-0.0571807 + 1.221,-11.9735,-9.92724,-19.6828, 117.508, 79.9478, 37.5039,-0.0565683 + 1.222,-11.9833,-9.75226,-19.6484, 117.604, 80.0909, 37.4573,-0.05571 + 1.223, -11.993,-9.60216,-19.6031, 117.698, 80.2343, 37.4088,-0.0549737 + 1.224,-12.0025,-9.54122,-19.5645, 117.792, 80.3782, 37.3589,-0.0546748 + 1.225,-12.0121,-9.59547,-19.5475, 117.886, 80.5209, 37.3101,-0.0549409 + 1.226,-12.0218,-9.74158,-19.5587, 117.981, 80.6624, 37.2634,-0.0556576 + 1.227,-12.0316,-9.91689,-19.5936, 118.079, 80.8052, 37.217,-0.0565175 + 1.228,-12.0416,-10.0463,-19.6386, 118.177, 80.9519, 37.1683,-0.0571521 + 1.229,-12.0517,-10.0743,-19.6762, 118.276, 81.1007, 37.1181,-0.0572897 + 1.23,-12.0617,-9.98911, -19.692, 118.374, 81.2479, 37.0693,-0.0568718 + 1.231,-12.0716,-9.82725,-19.6797, 118.471, 81.3914, 37.023,-0.0560778 + 1.232,-12.0813,-9.65813,-19.6444, 118.565, 81.5334, 36.9766,-0.0552483 + 1.233,-12.0909,-9.55421,-19.5997, 118.659, 81.6767, 36.9276,-0.0547386 + 1.234,-12.1005,-9.55995,-19.5631, 118.753, 81.8208, 36.8772,-0.0547667 + 1.235,-12.1101,-9.67281,-19.5486, 118.848, 81.9636, 36.8287,-0.0553203 + 1.236,-12.1199,-9.84435,-19.5619, 118.944, 82.1054, 36.7827,-0.0561617 + 1.237,-12.1298, -10.001,-19.5977, 119.042, 82.2492, 36.7362,-0.0569302 + 1.238,-12.1398,-10.0758, -19.642, 119.141, 82.3971, 36.6868,-0.0572967 + 1.239,-12.1499,-10.0366,-19.6776, 119.24, 82.5462, 36.6363,-0.0571045 + 1.24,-12.1599,-9.90035,-19.6908, 119.337, 82.6922, 36.5882,-0.0564364 + 1.241,-12.1697,-9.72553,-19.6763, 119.432, 82.8342, 36.5424,-0.0555789 + 1.242,-12.1793,-9.58705,-19.6401, 119.526, 82.9756, 36.4957,-0.0548996 + 1.243,-12.1889,-9.54418,-19.5962, 119.62, 83.1192, 36.446,-0.0546894 + 1.244,-12.1985,-9.61523,-19.5616, 119.714, 83.2636, 36.3955,-0.0550379 + 1.245,-12.2082,-9.76966,-19.5499, 119.81, 83.4065, 36.3477,-0.0557954 + 1.246, -12.218,-9.94125,-19.5655, 119.908, 83.5488, 36.3021,-0.056637 + 1.247, -12.228,-10.0565,-19.6022, 120.006, 83.6939, 36.2551,-0.0572021 + 1.248,-12.2381, -10.066,-19.6457, 120.105, 83.8426, 36.2051,-0.0572489 + 1.249,-12.2481,-9.96587,-19.6791, 120.203, 83.9912, 36.1547,-0.0567578 + 1.25, -12.258,-9.79903,-19.6893, 120.299, 84.1355, 36.1074,-0.0559394 + 1.251,-12.2677,-9.63703,-19.6726, 120.393, 84.2764, 36.0618,-0.0551448 + 1.252,-12.2773,-9.54926,-19.6354, 120.487, 84.4179, 36.0144,-0.0547143 + 1.253,-12.2869,-9.57325,-19.5924, 120.581, 84.562, 35.9641,-0.054832 + 1.254,-12.2965,-9.69866,-19.5602, 120.676, 84.7066, 35.9141,-0.0554471 + 1.255,-12.3063,-9.87166,-19.5515, 120.773, 84.8496, 35.8671,-0.0562956 + 1.256,-12.3162,-10.0181,-19.5694, 120.871, 84.9927, 35.8215,-0.057014 + 1.257,-12.3263,-10.0753, -19.607, 120.97, 85.1391, 35.7737,-0.0572944 + 1.258,-12.3363,-10.0188,-19.6495, 121.068, 85.2881, 35.7232,-0.0570172 + 1.259,-12.3463,-9.87286,-19.6804, 121.165, 85.4354, 35.6735,-0.0563016 + 1.26, -12.356,-9.70014,-19.6876, 121.26, 85.5781, 35.6268,-0.0554543 + 1.261,-12.3657,-9.57462,-19.6685, 121.354, 85.7184, 35.5811,-0.0548387 + 1.262,-12.3752,-9.55003,-19.6305, 121.448, 85.8604, 35.5328,-0.0547181 + 1.263,-12.3848,-9.63684,-19.5885, 121.543, 86.005, 35.4823,-0.0551439 + 1.264,-12.3946,-9.79776, -19.559, 121.639, 86.1497, 35.433,-0.0559332 + 1.265,-12.4044,-9.96379,-19.5533, 121.736, 86.2931, 35.3866,-0.0567476 + 1.266,-12.4144,-10.0638,-19.5737, 121.835, 86.4373, 35.3405,-0.0572382 + 1.267,-12.4245, -10.055,-19.6121, 121.934, 86.5846, 35.2919,-0.057195 + 1.268,-12.4345,-9.94126,-19.6534, 122.031, 86.7331, 35.2415,-0.0566371 + 1.269,-12.4444,-9.77137,-19.6816, 122.127, 86.8787, 35.1926,-0.0558037 + 1.27,-12.4541,-9.61815,-19.6856, 122.221, 87.0202, 35.1463,-0.0550522 + 1.271,-12.4636,-9.54725, -19.664, 122.315, 87.1605, 35.0999,-0.0547044 + 1.272,-12.4732,-9.58896,-19.6252, 122.409, 87.3032, 35.051,-0.054909 + 1.273,-12.4829,-9.72534,-19.5846, 122.505, 87.4482, 35.0008,-0.0555779 + 1.274,-12.4927,-9.89788,-19.5579, 122.602, 87.593, 34.9523,-0.0564242 + 1.275,-12.5026,-10.0326,-19.5556, 122.7, 87.7371, 34.9059,-0.0570852 + 1.276,-12.5127,-10.0719,-19.5784, 122.799, 87.8824, 34.8592,-0.0572779 + 1.277,-12.5227,-9.99895,-19.6175, 122.897, 88.0299, 34.8102,-0.05692 + 1.278,-12.5327, -9.8451,-19.6574, 122.994, 88.1772, 34.7602,-0.0561654 + 1.279,-12.5424,-9.67634,-19.6825, 123.089, 88.3213, 34.7119,-0.0553376 + 1.28, -12.552,-9.56497,-19.6831, 123.182, 88.4621, 34.6655,-0.0547913 + 1.281,-12.5616,-9.55866,-19.6591, 123.276, 88.6029, 34.6185,-0.0547604 + 1.282,-12.5712,-9.66003,-19.6198, 123.371, 88.7463, 34.5694,-0.0552576 + 1.283,-12.5809,-9.82557,-19.5807, 123.467, 88.8916, 34.5196,-0.0560696 + 1.284,-12.5909,-9.98431,-19.5572, 123.565, 89.0368, 34.4716,-0.0568482 + 1.285,-12.6009,-10.0683,-19.5583, 123.664, 89.1818, 34.425,-0.05726 + 1.286,-12.6109,-10.0415,-19.5836, 123.763, 89.3277, 34.3777,-0.0571287 + 1.287,-12.6209,-9.91558, -19.623, 123.86, 89.4747, 34.3286,-0.0565111 + 1.288,-12.6307,-9.74453,-19.6612, 123.955, 89.6205, 34.2792,-0.0556721 + 1.289,-12.6404,-9.60167,-19.6831, 124.05, 89.7634, 34.2312,-0.0549713 + 1.29, -12.65,-9.54816,-19.6802, 124.143, 89.9042, 34.1844,-0.0547089 + 1.291,-12.6596,-9.60687,-19.6537, 124.237, 90.0456, 34.1369,-0.0549969 + 1.292,-12.6692,-9.75256,-19.6141, 124.333, 90.1895, 34.0879,-0.0557115 + 1.293,-12.6791,-9.92274,-19.5769, 124.43, 90.3352, 34.0387,-0.0565462 + 1.294,-12.6891,-10.0445,-19.5568, 124.529, 90.4812, 33.9907,-0.0571434 + 1.295,-12.6991,-10.0657,-19.5614, 124.628, 90.6268, 33.9437,-0.0572474 + 1.296,-12.7091,-9.97734,-19.5891, 124.726, 90.7727, 33.8962,-0.056814 + 1.297, -12.719,-9.81736,-19.6287, 124.822, 90.9186, 33.8474,-0.0560293 + 1.298,-12.7288,-9.65435,-19.6649, 124.917, 91.0632, 33.7982,-0.0552298 + 1.299,-12.7384,-9.55815,-19.6833, 125.01, 91.2055, 33.7502,-0.0547579 + 1.3,-12.7479,-9.56992,-19.6768, 125.104, 91.3465, 33.703,-0.0548156 + 1.301,-12.7576,-9.68453, -19.648, 125.199, 91.4884, 33.6555,-0.0553778 + 1.302,-12.7673, -9.8528,-19.6084, 125.296, 91.6329, 33.6068,-0.0562032 + 1.303,-12.7773,-10.0026,-19.5734, 125.394, 91.7794, 33.5577,-0.056938 + 1.304,-12.7873,-10.0698,-19.5568, 125.493, 91.9261, 33.5095,-0.0572675 + 1.305,-12.7974,-10.0256,-19.5651, 125.591, 92.0719, 33.4623,-0.0570508 + 1.306,-12.8073,-9.88911,-19.5949, 125.688, 92.2169, 33.4149,-0.0563813 + 1.307,-12.8171,-9.71882,-19.6345, 125.784, 92.3617, 33.3663,-0.055546 + 1.308,-12.8268,-9.58772,-19.6683, 125.878, 92.5056, 33.3172,-0.0549029 + 1.309,-12.8363,-9.55194,-19.6829, 125.971, 92.6478, 33.2689,-0.0547274 + 1.31,-12.8459,-9.62675,-19.6728, 126.066, 92.789, 33.2217,-0.0550944 + 1.311,-12.8556,-9.78001, -19.642, 126.162, 92.9315, 33.1744,-0.0558461 + 1.312,-12.8655, -9.946,-19.6026, 126.259, 93.0768, 33.1258,-0.0566603 + 1.313,-12.8755,-10.0536,-19.5702, 126.358, 93.2242, 33.0765,-0.0571881 + 1.314,-12.8856,-10.0568,-19.5574, 126.457, 93.3712, 33.0281,-0.0572035 + 1.315,-12.8956, -9.9542,-19.5694, 126.554, 93.5164, 32.9811,-0.0567005 + 1.316,-12.9054,-9.78994,-19.6012, 126.65, 93.6604, 32.9339,-0.0558948 + 1.317,-12.9151,-9.63441,-19.6403, 126.745, 93.8043, 32.8853,-0.0551319 + 1.318,-12.9247,-9.55421,-19.6713, 126.839, 93.9479, 32.8358,-0.0547386 + 1.319,-12.9343,-9.58366, -19.682, 126.933, 94.0902, 32.7874,-0.054883 + 1.32, -12.944,-9.71005,-19.6683, 127.028, 94.2317, 32.7406,-0.055503 + 1.321,-12.9537,-9.87917,-19.6356, 127.125, 94.3748, 32.6935,-0.0563325 + 1.322,-12.9637,-10.0185,-19.5969, 127.223, 94.5213, 32.6447,-0.057016 + 1.323,-12.9737,-10.0684,-19.5674, 127.322, 94.6694, 32.595,-0.0572608 + 1.324,-12.9838,-10.0076,-19.5587, 127.42, 94.8162, 32.5468,-0.0569624 + 1.325,-12.9937,-9.86215,-19.5742, 127.517, 94.9603, 32.5002,-0.056249 + 1.326,-13.0035,-9.69447,-19.6077, 127.612, 95.1032, 32.4531,-0.0554266 + 1.327,-13.0131,-9.57641,-19.6459, 127.706, 95.2468, 32.404,-0.0548475 + 1.328,-13.0227,-9.55851,-19.6739, 127.799, 95.3905, 32.3542,-0.0547597 + 1.329,-13.0323,-9.64837,-19.6805, 127.894, 95.5328, 32.3061,-0.0552004 + 1.33, -13.042, -9.8074,-19.6632, 127.99, 95.6746, 32.2598,-0.0559805 + 1.331,-13.0519,-9.96742, -19.629, 128.088, 95.8187, 32.2127,-0.0567654 + 1.332,-13.0619,-10.0599,-19.5913, 128.187, 95.9663, 32.1633,-0.0572189 + 1.333, -13.072,-10.0452,-19.5651, 128.285, 96.1148, 32.1134,-0.057147 + 1.334, -13.082, -9.9298,-19.5606, 128.383, 96.2606, 32.0656,-0.0565809 + 1.335,-13.0918,-9.76314,-19.5795, 128.479, 96.4033, 32.0195,-0.0557634 + 1.336,-13.1015,-9.61668,-19.6144, 128.573, 96.5457, 31.9722,-0.055045 + 1.337,-13.1111,-9.55315,-19.6514, 128.667, 96.6895, 31.9224,-0.0547334 + 1.338,-13.1207, -9.5997,-19.6759, 128.761, 96.8332, 31.8726,-0.0549617 + 1.339,-13.1303,-9.73631,-19.6782, 128.856, 96.9755, 31.8252,-0.0556318 + 1.34,-13.1401,-9.90439,-19.6576, 128.953, 97.1178, 31.7792,-0.0564562 + 1.341,-13.1501,-10.0319,-19.6222, 129.052, 97.2632, 31.7316,-0.0570817 + 1.342,-13.1602,-10.0643, -19.586, 129.151, 97.4119, 31.6815,-0.0572403 + 1.343,-13.1702,-9.98766,-19.5634, 129.249, 97.5599, 31.6318,-0.0568646 + 1.344,-13.1801, -9.835,-19.5632, 129.345, 97.7041, 31.5848,-0.0561159 + 1.345,-13.1899,-9.67175,-19.5854, 129.44, 97.8457, 31.539,-0.0553151 + 1.346,-13.1995,-9.56785,-19.6213, 129.534, 97.9881, 31.4909,-0.0548055 + 1.347, -13.209,-9.56776,-19.6565, 129.628, 98.1323, 31.4405,-0.054805 + 1.348,-13.2187,-9.67146,-19.6772, 129.723, 98.2761, 31.3911,-0.0553137 + 1.349,-13.2284,-9.83443,-19.6752, 129.819, 98.4183, 31.3446,-0.056113 + 1.35,-13.2383,-9.98681,-19.6514, 129.917, 98.5615, 31.2986,-0.0568605 + 1.351,-13.2484,-10.0633,-19.6152, 130.016, 98.7084, 31.2501,-0.0572358 + 1.352,-13.2584,-10.0313,-19.5811, 130.114, 98.8575, 31.1996,-0.0570785 + 1.353,-13.2684,-9.90443,-19.5624, 130.211, 99.0042, 31.1506,-0.0564564 + 1.354,-13.2782,-9.73723,-19.5665, 130.307, 99.1468, 31.1044,-0.0556363 + 1.355,-13.2879,-9.60133,-19.5918, 130.401, 99.2878, 31.0582,-0.0549697 + 1.356,-13.2974,-9.55492,-19.6282, 130.495, 99.4308, 31.0092,-0.0547421 + 1.357, -13.307,-9.61783,-19.6612, 130.589, 99.5754, 30.9586,-0.0550506 + 1.358,-13.3167,-9.76302,-19.6778, 130.685, 99.719, 30.9101,-0.0557628 + 1.359,-13.3266,-9.92824,-19.6715, 130.782, 99.8615, 30.8642,-0.0565732 + 1.36,-13.3365,-10.0427,-19.6448, 130.881, 100.006, 30.8177,-0.0571345 + 1.361,-13.3466,-10.0573,-19.6083, 130.979, 100.154, 30.7682,-0.0572065 + 1.362,-13.3566,-9.96605,-19.5766, 131.077, 100.303, 30.7178,-0.0567586 + 1.363,-13.3665,-9.80796,-19.5622, 131.173, 100.448, 30.6697,-0.0559832 + 1.364,-13.3762,-9.65086,-19.5707, 131.268, 100.589, 30.624,-0.0552126 + 1.365,-13.3858,-9.56205,-19.5987, 131.362, 100.73, 30.5771,-0.054777 + 1.366,-13.3954,-9.57952,-19.6351, 131.456, 100.874, 30.5273,-0.0548627 + 1.367, -13.405,-9.69572,-19.6654, 131.551, 101.019, 30.477,-0.0554327 + 1.368,-13.4148,-9.86079,-19.6776, 131.648, 101.162, 30.4295,-0.0562423 + 1.369,-13.4247, -10.004, -19.667, 131.746, 101.305, 30.3837,-0.0569447 + 1.37,-13.4348, -10.064,-19.6377, 131.845, 101.451, 30.3363,-0.0572389 + 1.371,-13.4448,-10.0151,-19.6016, 131.943, 101.6, 30.2863,-0.0569993 + 1.372,-13.4548,-9.87843,-19.5728, 132.04, 101.747, 30.2364,-0.0563289 + 1.373,-13.4646,-9.71255,-19.5628, 132.135, 101.89, 30.1892,-0.0555152 + 1.374,-13.4742,-9.58855,-19.5756, 132.229, 102.031, 30.1434,-0.054907 + 1.375,-13.4838,-9.55952,-19.6059, 132.323, 102.173, 30.0955,-0.0547646 + 1.376,-13.4934,-9.63782,-19.6417, 132.417, 102.317, 30.0453,-0.0551487 + 1.377,-13.5031,-9.78982,-19.6688, 132.513, 102.462, 29.9958,-0.0558942 + 1.378, -13.513,-9.95033,-19.6765, 132.611, 102.605, 29.949,-0.0566815 + 1.379, -13.523,-10.0506,-19.6617, 132.71, 102.75, 29.9029,-0.0571733 + 1.38, -13.533,-10.0477,-19.6304, 132.808, 102.896, 29.8546,-0.0571589 + 1.381, -13.543,-9.94291,-19.5951, 132.906, 103.045, 29.8044,-0.0566451 + 1.382,-13.5529,-9.78128,-19.5697, 133.002, 103.19, 29.7554,-0.0558524 + 1.383,-13.5626,-9.63209,-19.5644, 133.096, 103.332, 29.7088,-0.0551206 + 1.384,-13.5722,-9.55926,-19.5812, 133.19, 103.473, 29.6624,-0.0547633 + 1.385,-13.5818,-9.59395,-19.6134, 133.284, 103.615, 29.6137,-0.0549335 + 1.386,-13.5914,-9.72123,-19.6481, 133.379, 103.76, 29.5636,-0.0555578 + 1.387,-13.6012,-9.88651,-19.6715, 133.476, 103.905, 29.515,-0.0563685 + 1.388,-13.6112,-10.0189,-19.6744, 133.575, 104.049, 29.4685,-0.057018 + 1.389,-13.6212,-10.0617,-19.6557, 133.673, 104.194, 29.4218,-0.0572279 + 1.39,-13.6312,-9.99661,-19.6228, 133.771, 104.342, 29.3728,-0.0569086 + 1.391,-13.6412,-9.85151, -19.589, 133.868, 104.489, 29.3229,-0.0561968 + 1.392,-13.6509,-9.68862,-19.5675, 133.963, 104.633, 29.2746,-0.0553978 + 1.393,-13.6606,-9.57773, -19.567, 134.057, 104.774, 29.2281,-0.0548539 + 1.394,-13.6701,-9.56633,-19.5875, 134.151, 104.915, 29.1811,-0.054798 + 1.395,-13.6798, -9.6593, -19.621, 134.246, 105.059, 29.132,-0.055254 + 1.396,-13.6895,-9.81681,-19.6539, 134.342, 105.204, 29.0823,-0.0560266 + 1.397,-13.6994,-9.97142,-19.6733, 134.44, 105.349, 29.0343,-0.056785 + 1.398,-13.7094, -10.057,-19.6714, 134.539, 105.494, 28.9877,-0.0572046 + 1.399,-13.7194,-10.0369,-19.6491, 134.637, 105.64, 28.9403,-0.0571061 + 1.4,-13.7294,-9.91986,-19.6152, 134.734, 105.787, 28.8911,-0.0565321 + 1.401,-13.7393,-9.75598,-19.5834, 134.83, 105.933, 28.8418,-0.0557282 + 1.402,-13.7489,-9.61537,-19.5662, 134.924, 106.075, 28.7939,-0.0550385 + 1.403,-13.7585,-9.55808,-19.5705, 135.018, 106.216, 28.7472,-0.0547575 + 1.404,-13.7681,-9.60842,-19.5945, 135.112, 106.358, 28.6996,-0.0550045 + 1.405,-13.7778,-9.74463,-19.6285, 135.208, 106.502, 28.6504,-0.0556726 + 1.406,-13.7876,-9.90827,-19.6591, 135.305, 106.647, 28.6013,-0.0564752 + 1.407,-13.7976,-10.0293, -19.674, 135.404, 106.793, 28.5535,-0.0570688 + 1.408,-13.8076,-10.0561,-19.6674, 135.502, 106.938, 28.5066,-0.0572003 + 1.409,-13.8176,-9.97757,-19.6419, 135.6, 107.084, 28.4588,-0.0568151 + 1.41,-13.8276,-9.82778,-19.6077, 135.696, 107.231, 28.4097,-0.0560804 + 1.411,-13.8373,-9.67125,-19.5786, 135.791, 107.375, 28.3608,-0.0553126 + 1.412,-13.8469,-9.57522, -19.566, 135.885, 107.517, 28.313,-0.0548416 + 1.413,-13.8565,-9.58075, -19.575, 135.979, 107.658, 28.266,-0.0548688 + 1.414,-13.8661,-9.68513,-19.6019, 136.074, 107.801, 28.2181,-0.0553807 + 1.415,-13.8759,-9.84308,-19.6359, 136.171, 107.946, 28.1691,-0.0561555 + 1.416,-13.8858,-9.98624,-19.6636, 136.269, 108.092, 28.1203,-0.0568577 + 1.417,-13.8958,-10.0526,-19.6737, 136.367, 108.238, 28.0725,-0.0571834 + 1.418,-13.9059,-10.0134,-19.6624, 136.466, 108.383, 28.0253,-0.0569909 + 1.419,-13.9158,-9.88521,-19.6343, 136.563, 108.529, 27.9774,-0.0563621 + 1.42,-13.9256,-9.72329,-19.6005, 136.658, 108.674, 27.9285,-0.0555679 + 1.421,-13.9353,-9.59773,-19.5746, 136.752, 108.818, 27.8797,-0.054952 + 1.422,-13.9449,-9.56337,-19.5669, 136.846, 108.959, 27.8319,-0.0547835 + 1.423,-13.9545, -9.6361,-19.5804, 136.941, 109.101, 27.7847,-0.0551402 + 1.424,-13.9642,-9.78585,-19.6097, 137.037, 109.244, 27.7369,-0.0558747 + 1.425, -13.974,-9.94914, -19.643, 137.134, 109.389, 27.688,-0.0566757 + 1.426, -13.984,-10.0561,-19.6671, 137.233, 109.536, 27.6391,-0.0572002 + 1.427,-13.9941,-10.0601,-19.6723, 137.331, 109.683, 27.5913,-0.0572201 + 1.428,-14.0041,-9.95804,-19.6566, 137.429, 109.828, 27.5441,-0.0567193 + 1.429, -14.014, -9.7915,-19.6263, 137.525, 109.973, 27.4963,-0.0559025 + 1.43,-14.0237, -9.6296,-19.5936, 137.62, 110.117, 27.4474,-0.0551084 + 1.431,-14.0333,-9.53981,-19.5716, 137.713, 110.26, 27.3985,-0.0546679 + 1.432,-14.0428,-9.55958,-19.5689, 137.807, 110.402, 27.3507,-0.0547649 + 1.433,-14.0524,-9.68078,-19.5866, 137.902, 110.543, 27.3036,-0.0553594 + 1.434,-14.0622,-9.85332,-19.6177, 137.999, 110.687, 27.2558,-0.0562057 + 1.435,-14.0721,-10.0065,-19.6496, 138.097, 110.833, 27.2068,-0.0569572 + 1.436,-14.0822,-10.0788,-19.6695, 138.196, 110.981, 27.1578,-0.0573117 + 1.437,-14.0922,-10.0432,-19.6697, 138.294, 111.127, 27.1101,-0.0571372 + 1.438,-14.1022,-9.91803, -19.65, 138.392, 111.272, 27.0631,-0.0565231 + 1.439,-14.1121,-9.75785,-19.6183, 138.487, 111.416, 27.0153,-0.0557374 + 1.44,-14.1218,-9.62972,-19.5874, 138.582, 111.561, 26.9661,-0.055109 + 1.441,-14.1314,-9.58427,-19.5696, 138.676, 111.704, 26.917,-0.054886 + 1.442, -14.141,-9.63459, -19.572, 138.77, 111.846, 26.8695,-0.0551328 + 1.443,-14.1507,-9.75183,-19.5936, 138.866, 111.987, 26.8227,-0.0557079 + 1.444,-14.1605,-9.87921,-19.6257, 138.963, 112.132, 26.7747,-0.0563327 + 1.445,-14.1704,-9.95803,-19.6554, 139.061, 112.278, 26.7253,-0.0567193 + 1.446,-14.1804,-9.95425,-19.6709, 139.158, 112.425, 26.6763,-0.0567008 + 1.447,-14.1903,-9.87381,-19.6659, 139.255, 112.57, 26.629,-0.0563062 + 1.448,-14.2001,-9.75976,-19.6427, 139.351, 112.713, 26.5823,-0.0557468 + 1.449,-14.2098,-9.67252,-19.6104, 139.446, 112.856, 26.5341,-0.0553189 + 1.45,-14.2195,-9.66165, -19.582, 139.54, 113.001, 26.4845,-0.0552655 + 1.451,-14.2292,-9.74186,-19.5689, 139.636, 113.145, 26.4357,-0.055659 + 1.452, -14.239,-9.88394,-19.5763, 139.733, 113.288, 26.3887,-0.0563559 + 1.453,-14.2489,-10.0253,-19.6012, 139.831, 113.432, 26.342,-0.0570491 + 1.454, -14.259, -10.096,-19.6335, 139.93, 113.58, 26.2934,-0.0573959 + 1.455,-14.2691,-10.0498,-19.6604, 140.029, 113.728, 26.2435,-0.0571695 + 1.456, -14.279,-9.88682,-19.6709, 140.126, 113.875, 26.1949,-0.05637 + 1.457,-14.2888,-9.65724,-19.6611, 140.221, 114.017, 26.1484,-0.0552439 + 1.458,-14.2984,-9.44472,-19.6348, 140.313, 114.157, 26.1017,-0.0542015 + 1.459,-14.3078,-9.33466,-19.6027, 140.405, 114.298, 26.0528,-0.0536617 + 1.46,-14.3171,-9.38033,-19.5776, 140.497, 114.44, 26.0027,-0.0538857 + 1.461,-14.3266,-9.58038,-19.5695, 140.591, 114.582, 25.9542,-0.0548669 + 1.462,-14.3363,-9.87697,-19.5817, 140.688, 114.724, 25.9078,-0.0563217 + 1.463,-14.3464,-10.1754,-19.6092, 140.788, 114.869, 25.861,-0.0577857 + 1.464,-14.3566, -10.378, -19.641, 140.889, 115.019, 25.812,-0.058779 + 1.465, -14.367,-10.4181,-19.6643, 140.992, 115.17, 25.7623,-0.058976 + 1.466,-14.3774,-10.2832,-19.6697, 141.093, 115.32, 25.7142,-0.0583143 + 1.467,-14.3875,-10.0165,-19.6552, 141.191, 115.466, 25.6677,-0.0570062 + 1.468,-14.3974,-9.69934,-19.6267, 141.286, 115.61, 25.62,-0.0554504 + 1.469,-14.4069,-9.42146,-19.5955, 141.378, 115.754, 25.5703,-0.0540874 + 1.47,-14.4163, -9.2514,-19.5742, 141.469, 115.895, 25.521,-0.0532533 + 1.471,-14.4255,-9.21822,-19.5714, 141.56, 116.032, 25.4743,-0.0530905 + 1.472,-14.4348,-9.30996, -19.588, 141.651, 116.169, 25.4285,-0.0535405 + 1.473,-14.4442,-9.48704,-19.6175, 141.744, 116.309, 25.3804,-0.0544091 + 1.474,-14.4538,-9.70255,-19.6479, 141.839, 116.454, 25.3293,-0.0554662 + 1.475,-14.4636,-9.91934, -19.667, 141.936, 116.601, 25.279,-0.0565295 + 1.476,-14.4736,-10.1166,-19.6672, 142.036, 116.746, 25.2323,-0.0574972 + 1.477,-14.4838,-10.2845,-19.6485, 142.137, 116.891, 25.1876,-0.0583208 + 1.478,-14.4942,-10.4117,-19.6184, 142.239, 117.039, 25.1408,-0.0589448 + 1.479,-14.5046, -10.475, -19.589, 142.341, 117.192, 25.0907,-0.0592549 + 1.48,-14.5151,-10.4386,-19.5721, 142.444, 117.345, 25.0401,-0.0590766 + 1.481,-14.5254,-10.2675,-19.5745, 142.545, 117.495, 24.9915,-0.0582372 + 1.482,-14.5355,-9.94853,-19.5952, 142.642, 117.641, 24.9443,-0.0566727 + 1.483,-14.5452,-9.51199,-19.6258, 142.735, 117.784, 24.8967,-0.0545315 + 1.484,-14.5545, -9.04,-19.6539, 142.824, 117.923, 24.849,-0.0522163 + 1.485,-14.5634,-8.65493,-19.6684, 142.909, 118.056, 24.8026,-0.0503276 + 1.486,-14.5719,-8.48722,-19.6634, 142.992, 118.187, 24.7561,-0.049505 + 1.487,-14.5805,-8.63165, -19.641, 143.077, 118.32, 24.7066,-0.0502134 + 1.488,-14.5894,-9.10726,-19.6102, 143.166, 118.46, 24.6537,-0.0525463 + 1.489,-14.5988,-9.83689,-19.5834, 143.263, 118.605, 24.6022,-0.0561251 + 1.49,-14.6091,-10.6567,-19.5714, 143.367, 118.751, 24.5568,-0.0601462 + 1.491,-14.6201,-11.3556, -19.579, 143.479, 118.899, 24.5158,-0.0635744 + 1.492,-14.6316,-11.7345, -19.603, 143.594, 119.056, 24.4721,-0.0654331 + 1.493,-14.6433,-11.6662,-19.6338, 143.708, 119.222, 24.4209,-0.0650977 + 1.494,-14.6547,-11.1365, -19.659, 143.818, 119.39, 24.3651,-0.0624997 + 1.495,-14.6654,-10.2539,-19.6684, 143.918, 119.548, 24.3119,-0.0581705 + 1.496,-14.6752,-9.22231,-19.6584, 144.009, 119.69, 24.2653,-0.0531106 + 1.497,-14.6839,-8.28743,-19.6329, 144.09, 119.818, 24.2233,-0.048525 + 1.498,-14.6919, -7.6719,-19.6023, 144.165, 119.939, 24.1808,-0.0455058 + 1.499,-14.6995,-7.51958,-19.5789, 144.239, 120.059, 24.1348,-0.0447587 + 1.5,-14.7072,-7.86347,-19.5721, 144.316, 120.186, 24.0841,-0.0464455 + 1.501,-14.7154,-8.62426,-19.5846, 144.401, 120.321, 24.0296,-0.0501771 + 1.502,-14.7246,-9.63606,-19.6113, 144.495, 120.466, 23.9746,-0.05514 + 1.503,-14.7347,-10.6891,-19.6414, 144.6, 120.615, 23.9247,-0.060305 + 1.504,-14.7459,-11.5756,-19.6629, 144.714, 120.766, 23.8834,-0.0646535 + 1.505,-14.7577,-12.1289, -19.667, 144.833, 120.919, 23.8464,-0.0673675 + 1.506,-14.7699,-12.2481,-19.6522, 144.953, 121.081, 23.8039,-0.0679521 + 1.507, -14.782,-11.9092,-19.6245, 145.07, 121.254, 23.7498,-0.0662897 + 1.508,-14.7935,-11.1648,-19.5951, 145.179, 121.428, 23.6888,-0.0626385 + 1.509,-14.8042, -10.136,-19.5757, 145.279, 121.589, 23.6324,-0.0575922 + 1.51,-14.8137,-8.99745,-19.5742, 145.367, 121.727, 23.5877,-0.0520077 + 1.511,-14.8222,-7.95537,-19.5912, 145.445, 121.847, 23.5509,-0.0468962 + 1.512,-14.8298,-7.21667,-19.6197, 145.516, 121.961, 23.5119,-0.0432729 + 1.513,-14.8369,-6.95075,-19.6483, 145.584, 122.078, 23.4644,-0.0419686 + 1.514, -14.844,-7.24923,-19.6654, 145.655, 122.202, 23.4096,-0.0434326 + 1.515,-14.8517,-8.09374,-19.6642, 145.734, 122.334, 23.3532,-0.0475749 + 1.516,-14.8604,-9.34367,-19.6452, 145.826, 122.472, 23.3003,-0.0537059 + 1.517,-14.8704, -10.753,-19.6161, 145.932, 122.618, 23.2531,-0.0606187 + 1.518,-14.8818, -12.018,-19.5886, 146.049, 122.772, 23.2109,-0.0668233 + 1.519,-14.8942,-12.8469,-19.5739, 146.175, 122.934, 23.1703,-0.0708894 + 1.52,-14.9072,-13.0355,-19.5778, 146.303, 123.106, 23.1257,-0.0718144 + 1.521, -14.92,-12.5247,-19.5987, 146.426, 123.282, 23.0744,-0.0693091 + 1.522,-14.9319,-11.4234,-19.6281, 146.538, 123.455, 23.0192,-0.0639068 + 1.523,-14.9426,-9.98507,-19.6542, 146.636, 123.613, 22.9663,-0.0568519 + 1.524,-14.9519,-8.54486,-19.6664, 146.72, 123.751, 22.9191,-0.0497877 + 1.525,-14.9599,-7.43192,-19.6599, 146.793, 123.874, 22.8749,-0.0443287 + 1.526,-14.9671,-6.88452,-19.6373, 146.861, 123.99, 22.8292,-0.0416437 + 1.527, -14.974,-6.99181,-19.6078, 146.929, 124.106, 22.7808,-0.04217 + 1.528,-14.9813,-7.67898,-19.5833, 147.004, 124.226, 22.7329,-0.0455406 + 1.529,-14.9895,-8.73849,-19.5736, 147.09, 124.352, 22.6872,-0.0507375 + 1.53,-14.9988, -9.8955,-19.5827, 147.187, 124.49, 22.6407,-0.0564126 + 1.531,-15.0092,-10.8858,-19.6068, 147.294, 124.643, 22.5895,-0.0612699 + 1.532,-15.0204,-11.5221,-19.6362, 147.407, 124.808, 22.5347,-0.0643912 + 1.533,-15.0321,-11.7309, -19.659, 147.522, 124.975, 22.4822,-0.0654151 + 1.534,-15.0437,-11.5516, -19.666, 147.635, 125.134, 22.4367,-0.0645358 + 1.535, -15.055,-11.1053,-19.6544, 147.744, 125.285, 22.3967,-0.0623464 + 1.536,-15.0659,-10.5453, -19.629, 147.848, 125.433, 22.3556,-0.0595998 + 1.537,-15.0761,-10.0101, -19.6, 147.946, 125.581, 22.3082,-0.0569745 + 1.538,-15.0859,-9.59033,-19.5792, 148.04, 125.731, 22.2545,-0.0549157 + 1.539,-15.0954,-9.31913,-19.5748, 148.132, 125.879, 22.1987,-0.0535855 + 1.54,-15.1046,-9.18167,-19.5888, 148.222, 126.023, 22.1457,-0.0529113 + 1.541,-15.1138,-9.13688,-19.6153, 148.311, 126.16, 22.0981,-0.0526916 + 1.542,-15.1229,-9.14034,-19.6436, 148.401, 126.293, 22.0556,-0.0527086 + 1.543,-15.1321,-9.16038,-19.6624, 148.491, 126.423, 22.0146,-0.0528068 + 1.544,-15.1413,-9.18416, -19.664, 148.581, 126.558, 21.9703,-0.0529235 + 1.545,-15.1505,-9.21549,-19.6478, 148.671, 126.698, 21.9203,-0.0530772 + 1.546,-15.1597,-9.26853,-19.6204, 148.762, 126.842, 21.8664,-0.0533373 + 1.547, -15.169,-9.36146, -19.593, 148.854, 126.987, 21.8135,-0.0537931 + 1.548,-15.1785,-9.51196,-19.5765, 148.947, 127.128, 21.7646,-0.0545313 + 1.549,-15.1881,-9.73334,-19.5776, 149.043, 127.269, 21.7183,-0.0556172 + 1.55, -15.198,-10.0295,-19.5959, 149.141, 127.413, 21.6716,-0.0570696 + 1.551,-15.2082,-10.3872,-19.6238, 149.243, 127.56, 21.624,-0.0588244 + 1.552,-15.2188,-10.7687,-19.6502, 149.349, 127.71, 21.5776,-0.0606957 + 1.553,-15.2297,-11.1076,-19.6642, 149.458, 127.862, 21.5333,-0.062358 + 1.554,-15.2409,-11.3151,-19.6604, 149.569, 128.017, 21.4882,-0.0633757 + 1.555,-15.2522,-11.2985,-19.6403, 149.68, 128.178, 21.4379,-0.0632944 + 1.556,-15.2634,-10.9906, -19.612, 149.787, 128.343, 21.3824,-0.0617843 + 1.557, -15.274,-10.3812, -19.587, 149.889, 128.503, 21.3273,-0.0587948 + 1.558, -15.284,-9.53884,-19.5754, 149.983, 128.65, 21.2784,-0.0546632 + 1.559,-15.2931,-8.61253,-19.5819, 150.067, 128.78, 21.2367,-0.0501196 + 1.56,-15.3013, -7.8053,-19.6038, 150.144, 128.901, 21.1971,-0.0461602 + 1.561,-15.3088,-7.32502,-19.6322, 150.216, 129.019, 21.1533,-0.0438044 + 1.562,-15.3162,-7.32423,-19.6556, 150.288, 129.141, 21.1031,-0.0438005 + 1.563,-15.3238,-7.84833,-19.6645, 150.365, 129.269, 21.0493,-0.0463712 + 1.564,-15.3321,-8.81078,-19.6555, 150.451, 129.404, 20.9961,-0.051092 + 1.565,-15.3415,-10.0065,-19.6321, 150.549, 129.546, 20.9459,-0.0569569 + 1.566,-15.3521,-11.1623,-19.6038, 150.659, 129.698, 20.8984,-0.0626262 + 1.567,-15.3637,-12.0112,-19.5822, 150.777, 129.857, 20.8523,-0.0667902 + 1.568,-15.3759,-12.3667,-19.5759, 150.898, 130.023, 20.8065,-0.0685337 + 1.569,-15.3881,-12.1741,-19.5875, 151.017, 130.189, 20.761,-0.067589 + 1.57, -15.4,-11.5221,-19.6122, 151.13, 130.35, 20.7154,-0.0643909 + 1.571, -15.411,-10.6105, -19.64, 151.234, 130.506, 20.6686,-0.0599196 + 1.572,-15.4212,-9.68588,-19.6596, 151.329, 130.655, 20.6193,-0.0553844 + 1.573,-15.4305,-8.96642,-19.6632, 151.417, 130.799, 20.567,-0.0518555 + 1.574,-15.4393,-8.58094,-19.6492, 151.502, 130.938, 20.5132,-0.0499647 + 1.575,-15.4479, -8.5413,-19.6235, 151.585, 131.074, 20.4613,-0.0497703 + 1.576,-15.4565,-8.75502,-19.5964, 151.671, 131.206, 20.4146,-0.0508185 + 1.577,-15.4654,-9.07085,-19.5789, 151.76, 131.335, 20.3731,-0.0523677 + 1.578,-15.4746,-9.33937,-19.5781, 151.852, 131.466, 20.3326,-0.0536848 + 1.579, -15.484,-9.46629,-19.5943, 151.945, 131.603, 20.2877,-0.0543073 + 1.58,-15.4935,-9.44071,-19.6208, 152.037, 131.747, 20.2363,-0.0541818 + 1.581,-15.5029,-9.33019, -19.647, 152.129, 131.894, 20.1815,-0.0536397 + 1.582,-15.5121,-9.24741,-19.6621, 152.22, 132.038, 20.1285,-0.0532337 + 1.583,-15.5214,-9.30227,-19.6602, 152.311, 132.177, 20.0799,-0.0535028 + 1.584,-15.5309,-9.55775, -19.642, 152.405, 132.316, 20.0335,-0.0547559 + 1.585,-15.5406,-10.0045,-19.6149, 152.503, 132.459, 19.9865,-0.0569473 + 1.586,-15.5509,-10.5617,-19.5899, 152.606, 132.608, 19.9389,-0.0596801 + 1.587,-15.5617,-11.1011,-19.5772, 152.715, 132.76, 19.8932,-0.0623262 + 1.588, -15.573,-11.4859,-19.5819, 152.828, 132.914, 19.8501,-0.0642135 + 1.589,-15.5846,-11.6085, -19.602, 152.942, 133.071, 19.8056,-0.0648148 + 1.59,-15.5961,-11.4184,-19.6293, 153.054, 133.234, 19.7555,-0.0638823 + 1.591,-15.6073,-10.9324,-19.6528, 153.161, 133.4, 19.6998,-0.0614983 + 1.592,-15.6179,-10.2276, -19.663, 153.261, 133.559, 19.6441,-0.0580416 + 1.593,-15.6277,-9.42273,-19.6557, 153.354, 133.706, 19.5941,-0.0540937 + 1.594,-15.6367,-8.65332,-19.6339, 153.439, 133.838, 19.5503,-0.0503197 + 1.595,-15.6451, -8.0479,-19.6066, 153.518, 133.962, 19.5086,-0.0473501 + 1.596, -15.653,-7.70771,-19.5847, 153.593, 134.083, 19.4647,-0.0456815 + 1.597,-15.6607,-7.69146,-19.5772, 153.669, 134.205, 19.4176,-0.0456018 + 1.598,-15.6685,-8.00545,-19.5871, 153.747, 134.331, 19.3688,-0.0471419 + 1.599,-15.6768,-8.59997,-19.6103, 153.832, 134.462, 19.3191,-0.050058 + 1.6,-15.6858,-9.37402,-19.6374, 153.924, 134.601, 19.2683,-0.0538547 + 1.601,-15.6956,-10.1903,-19.6573, 154.024, 134.749, 19.2165,-0.0578584 + 1.602,-15.7061,-10.9003,-19.6621, 154.13, 134.904, 19.1651,-0.0613413 + 1.603,-15.7173, -11.377,-19.6498, 154.242, 135.063, 19.1159,-0.0636791 + 1.604,-15.7287,-11.5452,-19.6254, 154.355, 135.221, 19.0696,-0.0645046 + 1.605,-15.7402,-11.4035,-19.5989, 154.467, 135.377, 19.026,-0.0638092 + 1.606,-15.7514,-11.0249, -19.581, 154.575, 135.53, 18.9837,-0.0619521 + 1.607,-15.7622,-10.5368, -19.579, 154.679, 135.679, 18.9398,-0.0595579 + 1.608,-15.7725,-10.0816,-19.5936, 154.778, 135.829, 18.8912,-0.0573253 + 1.609,-15.7824,-9.77104,-19.6189, 154.873, 135.98, 18.8372,-0.0558021 + 1.61,-15.7921, -9.6493,-19.6446, 154.968, 136.131, 18.7817,-0.055205 + 1.611,-15.8018,-9.67887,-19.6603, 155.063, 136.278, 18.7298,-0.05535 + 1.612,-15.8115,-9.75647,-19.6595, 155.159, 136.42, 18.6833,-0.0557307 + 1.613,-15.8213,-9.75465,-19.6427, 155.254, 136.56, 18.639,-0.0557217 + 1.614,-15.8309,-9.57544,-19.6167, 155.348, 136.7, 18.5931,-0.0548427 + 1.615,-15.8403, -9.1963,-19.5921, 155.439, 136.84, 18.5458,-0.052983 + 1.616,-15.8493,-8.69005,-19.5789, 155.524, 136.973, 18.5002,-0.0504998 + 1.617,-15.8577,-8.20923,-19.5824, 155.604, 137.1, 18.4567,-0.0481414 + 1.618,-15.8658,-7.93812,-19.6012, 155.682, 137.225, 18.4107,-0.0468116 + 1.619,-15.8738,-8.02779,-19.6275, 155.761, 137.356, 18.358,-0.0472515 + 1.62,-15.8821,-8.53726,-19.6508, 155.845, 137.494, 18.3008,-0.0497504 + 1.621, -15.891,-9.40244,-19.6615, 155.937, 137.637, 18.2463,-0.0539941 + 1.622,-15.9009,-10.4456,-19.6553, 156.04, 137.781, 18.1992,-0.0591107 + 1.623,-15.9119,-11.4238,-19.6348, 156.152, 137.931, 18.1571,-0.0639091 + 1.624,-15.9236,-12.1013,-19.6083, 156.27, 138.089, 18.1141,-0.0672322 + 1.625,-15.9359,-12.3206,-19.5867, 156.391, 138.255, 18.0678,-0.0683076 + 1.626, -15.948,-12.0491,-19.5786, 156.509, 138.422, 18.0205,-0.066976 + 1.627,-15.9598,-11.3855,-19.5874, 156.621, 138.583, 17.974,-0.063721 + 1.628,-15.9707,-10.5238,-19.6094, 156.724, 138.738, 17.9268,-0.0594945 + 1.629,-15.9808,-9.68917,-19.6357, 156.819, 138.888, 17.8758,-0.0554006 + 1.63,-15.9902,-9.06733,-19.6555, 156.908, 139.034, 17.8215,-0.0523504 + 1.631,-15.9991,-8.75242,-19.6609, 156.994, 139.175, 17.7679,-0.0508058 + 1.632,-16.0078,-8.72899,-19.6496, 157.08, 139.311, 17.7182,-0.0506909 + 1.633,-16.0167,-8.89251,-19.6263, 157.167, 139.443, 17.6728,-0.0514929 + 1.634,-16.0257,-9.09814,-19.6005, 157.256, 139.574, 17.6296,-0.0525015 + 1.635,-16.0348,-9.21888,-19.5827, 157.347, 139.707, 17.5868,-0.0530938 + 1.636, -16.044,-9.19175,-19.5801, 157.437, 139.841, 17.5428,-0.0529607 + 1.637,-16.0531,-9.03675,-19.5937, 157.526, 139.978, 17.4956,-0.0522004 + 1.638,-16.0621,-8.84401, -19.618, 157.612, 140.116, 17.4446,-0.051255 + 1.639,-16.0709,-8.73598,-19.6431, 157.698, 140.256, 17.3916,-0.0507252 + 1.64,-16.0796,-8.82002,-19.6587, 157.785, 140.394, 17.3397,-0.0511374 + 1.641,-16.0886,-9.14832,-19.6585, 157.874, 140.532, 17.2899,-0.0527477 + 1.642, -16.098,-9.69836,-19.6427, 157.969, 140.674, 17.2403,-0.0554456 + 1.643,-16.1081,-10.3787,-19.6176, 158.071, 140.822, 17.1907,-0.0587826 + 1.644,-16.1188,-11.0556,-19.5936, 158.18, 140.974, 17.1436,-0.0621028 + 1.645,-16.1301,-11.5904,-19.5804, 158.293, 141.127, 17.1016,-0.064726 + 1.646,-16.1419,-11.8749,-19.5833, 158.41, 141.282, 17.0618,-0.0661216 + 1.647,-16.1537,-11.8551,-19.6012, 158.526, 141.442, 17.0178,-0.0660247 + 1.648,-16.1654,-11.5388,-19.6266, 158.639, 141.609, 16.9661,-0.0644728 + 1.649,-16.1767,-10.9876,-19.6494, 158.747, 141.775, 16.9107,-0.0617692 + 1.65,-16.1873,-10.2997,-19.6601, 158.848, 141.932, 16.858,-0.0583954 + 1.651,-16.1973,-9.58798,-19.6545, 158.942, 142.078, 16.8095,-0.0549042 + 1.652,-16.2065,-8.95882,-19.6348, 159.03, 142.217, 16.7611,-0.0518182 + 1.653,-16.2153,-8.49561,-19.6092, 159.113, 142.354, 16.7103,-0.0495461 + 1.654,-16.2236,-8.24685, -19.588, 159.194, 142.486, 16.6604,-0.048326 + 1.655,-16.2319, -8.2201,-19.5799, 159.275, 142.611, 16.6161,-0.0481947 + 1.656,-16.2402,-8.38252,-19.5882, 159.357, 142.731, 16.5768,-0.0489914 + 1.657,-16.2487,-8.66892,-19.6094, 159.442, 142.856, 16.5356,-0.0503962 + 1.658,-16.2575,-8.99752,-19.6348, 159.531, 142.991, 16.4873,-0.052008 + 1.659,-16.2667,-9.29138,-19.6542, 159.622, 143.134, 16.4338,-0.0534494 + 1.66,-16.2761,-9.50065,-19.6596, 159.715, 143.28, 16.3804,-0.0544759 + 1.661,-16.2856, -9.6186,-19.6489, 159.809, 143.425, 16.3296,-0.0550544 + 1.662,-16.2953,-9.68469,-19.6264, 159.904, 143.569, 16.2796,-0.0553786 + 1.663, -16.305,-9.77103,-19.6013, 160, 143.715, 16.2288,-0.0558021 + 1.664,-16.3149,-9.95438,-19.5839, 160.098, 143.862, 16.1791,-0.0567014 + 1.665, -16.325,-10.2818,-19.5813, 160.199, 144.007, 16.1331,-0.0583073 + 1.666,-16.3355,-10.7424,-19.5944, 160.304, 144.153, 16.0907,-0.0605667 + 1.667,-16.3465,-11.2574,-19.6179, 160.414, 144.303, 16.0487,-0.0630925 + 1.668, -16.358,-11.6945,-19.6423, 160.529, 144.46, 16.0042,-0.0652367 + 1.669,-16.3698,-11.9064,-19.6575, 160.646, 144.623, 15.9567,-0.066276 + 1.67,-16.3816,-11.7802,-19.6573, 160.762, 144.79, 15.9063,-0.065657 + 1.671,-16.3932,-11.2823, -19.642, 160.872, 144.956, 15.8534,-0.0632147 + 1.672, -16.404,-10.4806,-19.6177, 160.975, 145.116, 15.7994,-0.0592824 + 1.673, -16.414,-9.53412,-19.5944, 161.069, 145.267, 15.747,-0.05464 + 1.674,-16.4231,-8.65039,-19.5816, 161.153, 145.405, 15.6981,-0.0503053 + 1.675,-16.4315,-8.02353,-19.5845, 161.232, 145.533, 15.6518,-0.0472306 + 1.676,-16.4394,-7.77405,-19.6018, 161.308, 145.657, 15.6057,-0.0460069 + 1.677,-16.4472, -7.9115,-19.6265, 161.386, 145.779, 15.56,-0.0466811 + 1.678,-16.4553,-8.33416,-19.6485, 161.468, 145.903, 15.5165,-0.0487542 + 1.679,-16.4639,-8.86692,-19.6589, 161.555, 146.029, 15.4747,-0.0513674 + 1.68, -16.473,-9.32429,-19.6533, 161.646, 146.162, 15.4303,-0.0536108 + 1.681,-16.4825, -9.5764,-19.6342, 161.74, 146.306, 15.3793,-0.0548474 + 1.682,-16.4921,-9.59371,-19.6093, 161.834, 146.456, 15.3235,-0.0549323 + 1.683,-16.5016,-9.45413,-19.5888, 161.927, 146.604, 15.2687,-0.0542477 + 1.684, -16.511,-9.30967,-19.5812, 162.018, 146.746, 15.2188,-0.0535391 + 1.685,-16.5203,-9.32479,-19.5893, 162.11, 146.885, 15.1713,-0.0536133 + 1.686,-16.5298, -9.6093, -19.61, 162.204, 147.027, 15.1224,-0.0550088 + 1.687,-16.5397,-10.1707,-19.6347, 162.304, 147.173, 15.0728,-0.0577626 + 1.688,-16.5502, -10.904,-19.6534, 162.411, 147.322, 15.0271,-0.0613591 + 1.689,-16.5615,-11.6225,-19.6584, 162.525, 147.473, 14.9868,-0.0648836 + 1.69,-16.5733,-12.1199,-19.6477, 162.644, 147.629, 14.947,-0.0673231 + 1.691,-16.5855,-12.2394,-19.6257, 162.764, 147.795, 14.9013,-0.0679092 + 1.692,-16.5976,-11.9271,-19.6015, 162.881, 147.965, 14.8491,-0.0663777 + 1.693,-16.6092, -11.25,-19.5848, 162.991, 148.133, 14.7951,-0.0630564 + 1.694, -16.62,-10.3724,-19.5826, 163.093, 148.29, 14.7437,-0.058752 + 1.695,-16.6299,-9.50212,-19.5956, 163.186, 148.438, 14.6938,-0.0544831 + 1.696,-16.6391,-8.82368,-19.6186, 163.273, 148.579, 14.6424,-0.0511553 + 1.697,-16.6477,-8.44429,-19.6421, 163.356, 148.716, 14.59,-0.0492944 + 1.698,-16.6561,-8.36887,-19.6565, 163.438, 148.848, 14.5405,-0.0489245 + 1.699,-16.6646,-8.51163, -19.656, 163.521, 148.975, 14.4966,-0.0496247 + 1.7,-16.6732,-8.73717,-19.6408, 163.607, 149.1, 14.4559,-0.050731 + 1.701, -16.682,-8.91466,-19.6171, 163.694, 149.229, 14.4141,-0.0516016 + 1.702, -16.691,-8.96504,-19.5947, 163.782, 149.362, 14.3688,-0.0518487 + 1.703,-16.6999,-8.88534,-19.5826, 163.869, 149.497, 14.3207,-0.0514578 + 1.704,-16.7087,-8.74338,-19.5859, 163.955, 149.634, 14.2709,-0.0507615 + 1.705,-16.7174,-8.64747, -19.603, 164.04, 149.77, 14.2199,-0.050291 + 1.706,-16.7261,-8.70354,-19.6271, 164.125, 149.907, 14.1674,-0.0505661 + 1.707,-16.7349, -8.9759,-19.6482, 164.213, 150.047, 14.1143,-0.051902 + 1.708,-16.7441,-9.46428,-19.6578, 164.306, 150.19, 14.0619,-0.0542975 + 1.709,-16.7539,-10.1035,-19.6518, 164.405, 150.336, 14.0116,-0.0574328 + 1.71,-16.7644,-10.7833,-19.6329, 164.511, 150.486, 13.9642,-0.0607674 + 1.711,-16.7754,-11.3802,-19.6088, 164.623, 150.639, 13.9201,-0.0636953 + 1.712, -16.787,-11.7897,-19.5893, 164.739, 150.794, 13.8784,-0.0657038 + 1.713,-16.7989,-11.9499,-19.5823, 164.856, 150.953, 13.8367,-0.0664895 + 1.714,-16.8108,-11.8513,-19.5908, 164.972, 151.114, 13.7919,-0.0660056 + 1.715,-16.8225,-11.5324,-19.6112, 165.085, 151.277, 13.7435,-0.0644414 + 1.716,-16.8338,-11.0654,-19.6352, 165.194, 151.438, 13.6935,-0.062151 + 1.717,-16.8446,-10.5371,-19.6529, 165.297, 151.594, 13.6433,-0.0595597 + 1.718,-16.8549,-10.0295,-19.6571, 165.395, 151.746, 13.5922,-0.05707 + 1.719,-16.8647,-9.60496,-19.6461, 165.49, 151.896, 13.5384,-0.0549875 + 1.72,-16.8741,-9.29608,-19.6245, 165.581, 152.044, 13.4833,-0.0534724 + 1.721,-16.8833,-9.10262,-19.6011, 165.67, 152.186, 13.4314,-0.0525235 + 1.722,-16.8924,-8.99488,-19.5855, 165.758, 152.321, 13.3856,-0.0519951 + 1.723,-16.9013,-8.92405, -19.584, 165.846, 152.451, 13.3438,-0.0516476 + 1.724,-16.9102,-8.83823,-19.5973, 165.933, 152.58, 13.3013,-0.0512267 + 1.725, -16.919,-8.70119,-19.6198, 166.018, 152.711, 13.256,-0.0505545 + 1.726,-16.9276,-8.50882,-19.6424, 166.101, 152.842, 13.2102,-0.0496109 + 1.727, -16.936,-8.29737,-19.6558, 166.183, 152.969, 13.1657,-0.0485738 + 1.728,-16.9442,-8.13871,-19.6545, 166.263, 153.094, 13.1208,-0.0477955 + 1.729,-16.9523,-8.12132,-19.6391, 166.342, 153.223, 13.0713,-0.0477102 + 1.73,-16.9606,-8.32101,-19.6159, 166.424, 153.359, 13.0161,-0.0486897 + 1.731,-16.9691,-8.77012,-19.5945, 166.51, 153.5, 12.9594,-0.0508926 + 1.732,-16.9782,-9.43638,-19.5835, 166.603, 153.642, 12.9063,-0.0541606 + 1.733, -16.988, -10.221,-19.5875, 166.703, 153.787, 12.8576,-0.0580094 + 1.734,-16.9986,-10.9799,-19.6048, 166.811, 153.938, 12.8104,-0.0617318 + 1.735,-17.0099,-11.5631,-19.6283, 166.924, 154.097, 12.7626,-0.0645921 + 1.736,-17.0216,-11.8605,-19.6483, 167.04, 154.259, 12.7158,-0.0660509 + 1.737,-17.0335,-11.8386,-19.6567, 167.157, 154.418, 12.6726,-0.0659433 + 1.738,-17.0452,-11.5525,-19.6501, 167.27, 154.573, 12.6324,-0.06454 + 1.739,-17.0565,-11.1284,-19.6312, 167.379, 154.726, 12.5908,-0.0624602 + 1.74,-17.0674,-10.7203,-19.6077, 167.484, 154.879, 12.5444,-0.0604583 + 1.741, -17.078,-10.4545,-19.5893, 167.587, 155.034, 12.4934,-0.0591544 + 1.742,-17.0884,-10.3836,-19.5835, 167.689, 155.189, 12.4408,-0.0588068 + 1.743,-17.0989,-10.4664,-19.5927, 167.791, 155.343, 12.3888,-0.0592131 + 1.744,-17.1094,-10.5828, -19.613, 167.895, 155.498, 12.3369,-0.059784 + 1.745, -17.12, -10.58,-19.6362, 167.999, 155.655, 12.2839,-0.0597701 + 1.746,-17.1304,-10.3336,-19.6526, 168.1, 155.811, 12.2307,-0.0585616 + 1.747,-17.1405,-9.80136,-19.6557, 168.196, 155.96, 12.1801,-0.0559509 + 1.748,-17.1499,-9.04816,-19.6441, 168.285, 156.099, 12.1339,-0.0522564 + 1.749,-17.1586,-8.23227,-19.6227, 168.366, 156.226, 12.0915,-0.0482545 + 1.75,-17.1665,-7.55585,-19.6002, 168.44, 156.345, 12.0501,-0.0449366 + 1.751,-17.1738,-7.19701,-19.5859, 168.511, 156.46, 12.0073,-0.0431765 + 1.752,-17.1811,-7.24817,-19.5855, 168.582, 156.576, 11.9626,-0.0434274 + 1.753,-17.1885, -7.6833,-19.5993, 168.657, 156.695, 11.9166,-0.0455618 + 1.754,-17.1966,-8.36676,-19.6216, 168.739, 156.821, 11.8693,-0.0489141 + 1.755,-17.2053,-9.10082,-19.6431, 168.829, 156.956, 11.8198,-0.0525147 + 1.756,-17.2147,-9.69476,-19.6551, 168.924, 157.101, 11.7674,-0.055428 + 1.757,-17.2245,-10.0303,-19.6528, 169.022, 157.253, 11.7124,-0.0570738 + 1.758,-17.2346,-10.0992, -19.637, 169.121, 157.406, 11.6572,-0.0574119 + 1.759,-17.2447,-9.99993,-19.6142, 169.219, 157.558, 11.6043,-0.0569248 + 1.76,-17.2546,-9.89435,-19.5939, 169.316, 157.705, 11.5552,-0.0564069 + 1.761,-17.2645,-9.94205,-19.5843, 169.414, 157.848, 11.5088,-0.0566409 + 1.762,-17.2746,-10.2361,-19.5894, 169.514, 157.992, 11.4637,-0.0580832 + 1.763,-17.2851,-10.7646, -19.607, 169.62, 158.14, 11.4193,-0.0606756 + 1.764,-17.2962,-11.4121,-19.6299, 169.732, 158.292, 11.3761,-0.0638516 + 1.765,-17.3079,-11.9991,-19.6487, 169.849, 158.448, 11.3344,-0.066731 + 1.766,-17.3201,-12.3457,-19.6557, 169.971, 158.61, 11.2925,-0.0684308 + 1.767,-17.3324,-12.3342, -19.648, 170.092, 158.776, 11.2472,-0.0683745 + 1.768,-17.3446,-11.9497,-19.6289, 170.209, 158.945, 11.197,-0.0664886 + 1.769,-17.3562,-11.2833,-19.6062, 170.319, 159.113, 11.1435,-0.0632197 + 1.77,-17.3671,-10.4984,-19.5891, 170.422, 159.273, 11.09,-0.0593699 + 1.771,-17.3772,-9.77456,-19.5848, 170.518, 159.425, 11.0377,-0.0558194 + 1.772,-17.3867,-9.24805,-19.5949, 170.609, 159.57, 10.9854,-0.0532368 + 1.773,-17.3958,-8.97207,-19.6153, 170.697, 159.713, 10.9319,-0.0518832 + 1.774,-17.4048,-8.90833,-19.6376, 170.784, 159.854, 10.8791,-0.0515705 + 1.775,-17.4137,-8.95141,-19.6526, 170.872, 159.99, 10.8307,-0.0517818 + 1.776,-17.4227,-8.97492,-19.6542, 170.96, 160.121, 10.7879,-0.0518971 + 1.777,-17.4316,-8.88145,-19.6418, 171.047, 160.249, 10.7475,-0.0514387 + 1.778,-17.4404,-8.63834,-19.6205, 171.132, 160.377, 10.7053,-0.0502462 + 1.779,-17.4488,-8.28755, -19.599, 171.214, 160.504, 10.6605,-0.0485256 + 1.78,-17.4569,-7.92829,-19.5862, 171.291, 160.629, 10.6156,-0.0467634 + 1.781,-17.4647,-7.68044,-19.5873, 171.367, 160.749, 10.5718,-0.0455477 + 1.782,-17.4724,-7.64309,-19.6018, 171.442, 160.87, 10.5265,-0.0453645 + 1.783,-17.4801,-7.86257,-19.6237, 171.519, 160.996, 10.4759,-0.0464411 + 1.784,-17.4882,-8.31987,-19.6441, 171.6, 161.132, 10.42,-0.0486841 + 1.785,-17.4969,-8.93955,-19.6546, 171.688, 161.273, 10.3634,-0.0517237 + 1.786,-17.5061,-9.61484,-19.6508, 171.782, 161.417, 10.3101,-0.0550359 + 1.787,-17.5161,-10.2391,-19.6344, 171.883, 161.565, 10.2596,-0.0580982 + 1.788,-17.5266,-10.7335,-19.6121, 171.988, 161.719, 10.2088,-0.0605231 + 1.789,-17.5375,-11.0623,-19.5931, 172.097, 161.877, 10.1574,-0.0621359 + 1.79,-17.5486,-11.2347,-19.5852, 172.207, 162.035, 10.1089,-0.0629814 + 1.791,-17.5599,-11.2935,-19.5916, 172.318, 162.188, 10.0659,-0.0632699 + 1.792,-17.5712,-11.2971,-19.6096, 172.428, 162.339, 10.0266,-0.0632876 + 1.793,-17.5825, -11.3,-19.6319, 172.539, 162.49, 9.9862,-0.0633016 + 1.794,-17.5938,-11.3368,-19.6492, 172.651, 162.645, 9.94233,-0.0634823 + 1.795,-17.6052,-11.4136,-19.6546, 172.763, 162.802, 9.89656,-0.0638589 + 1.796,-17.6166,-11.5064,-19.6457, 172.875, 162.96, 9.85093,-0.0643142 + 1.797,-17.6281,-11.5678,-19.6263, 172.989, 163.12, 9.8044,-0.0646154 + 1.798,-17.6397,-11.5393,-19.6043, 173.102, 163.283, 9.75415,-0.0644754 + 1.799,-17.6512,-11.3678,-19.5889, 173.214, 163.45, 9.69951,-0.0636341 + 1.8,-17.6623,-11.0227,-19.5862, 173.322, 163.617, 9.64312,-0.0619414 + 1.801,-17.6731,-10.5093,-19.5975, 173.425, 163.777, 9.58817,-0.0594234 + 1.802,-17.6833,-9.87445,-19.6179, 173.522, 163.93, 9.53557,-0.0563093 + 1.803,-17.6928,-9.20027,-19.6392, 173.612, 164.074, 9.48448,-0.0530025 + 1.804,-17.7017,-8.58689,-19.6526, 173.696, 164.211, 9.4347,-0.0499938 + 1.805,-17.7101,-8.12647,-19.6525, 173.776, 164.341, 9.38721,-0.0477355 + 1.806,-17.7181,-7.87637,-19.6391, 173.853, 164.464, 9.34278,-0.0465088 + 1.807, -17.726,-7.84038,-19.6179, 173.93, 164.583, 9.30084,-0.0463323 + 1.808,-17.7339,-7.96582,-19.5975, 174.008, 164.701, 9.26007,-0.0469475 + 1.809,-17.7419,-8.15966,-19.5865, 174.088, 164.821, 9.21914,-0.0478983 + 1.81,-17.7502,-8.32024,-19.5892, 174.17, 164.944, 9.17674,-0.0486859 + 1.811,-17.7585,-8.37445,-19.6046, 174.252, 165.071, 9.13166,-0.0489518 + 1.812,-17.7668,-8.30728,-19.6263, 174.334, 165.201, 9.08357,-0.0486224 + 1.813,-17.7751, -8.1717,-19.6453, 174.414, 165.332, 9.03339,-0.0479574 + 1.814,-17.7832, -8.0732,-19.6539, 174.493, 165.463, 8.98198,-0.0474742 + 1.815,-17.7913,-8.13253,-19.6486, 174.573, 165.596, 8.92881,-0.0477652 + 1.816,-17.7996,-8.43906,-19.6315, 174.655, 165.733, 8.87307,-0.0492687 + 1.817,-17.8083,-9.01161,-19.6097, 174.744, 165.876, 8.81612,-0.0520771 + 1.818,-17.8177,-9.78261,-19.5922, 174.84, 166.023, 8.76146,-0.0558588 + 1.819,-17.8279,-10.6132,-19.5862, 174.944, 166.173, 8.71135,-0.0599328 + 1.82,-17.8389,-11.3358, -19.594, 175.055, 166.327, 8.66434,-0.0634774 + 1.821,-17.8505,-11.8103,-19.6126, 175.171, 166.488, 8.61756,-0.0658049 + 1.822,-17.8624,-11.9724,-19.6342, 175.288, 166.651, 8.57102,-0.0665999 + 1.823,-17.8743,-11.8566,-19.6498, 175.405, 166.811, 8.52773,-0.0660317 + 1.824, -17.886,-11.5834,-19.6532, 175.518, 166.965, 8.48895,-0.0646918 + 1.825,-17.8974,-11.3144, -19.643, 175.629, 167.115, 8.45101,-0.0633723 + 1.826,-17.9087,-11.1907,-19.6233, 175.739, 167.268, 8.40884,-0.0627658 + 1.827,-17.9199,-11.2783,-19.6022, 175.85, 167.425, 8.36175,-0.0631952 + 1.828,-17.9313,-11.5403,-19.5886, 175.963, 167.585, 8.31357,-0.0644802 + 1.829, -17.943,-11.8486,-19.5879, 176.079, 167.747, 8.26672,-0.0659926 + 1.83, -17.955,-12.0312,-19.6004, 176.197, 167.912, 8.21832,-0.066888 + 1.831, -17.967,-11.9371,-19.6209, 176.314, 168.084, 8.16418,-0.0664266 + 1.832,-17.9787,-11.4966,-19.6411, 176.427, 168.258, 8.10525,-0.0642662 + 1.833,-17.9898,-10.7519,-19.6525, 176.533, 168.425, 8.0474,-0.0606135 + 1.834,-18.0001,-9.84673,-19.6505, 176.629, 168.579, 7.99454,-0.0561734 + 1.835,-18.0095,-8.97824, -19.636, 176.717, 168.721, 7.94448,-0.0519134 + 1.836,-18.0182,-8.32869,-19.6149, 176.799, 168.857, 7.89312,-0.0487274 + 1.837,-18.0263,-8.00194, -19.596, 176.878, 168.989, 7.84105,-0.0471247 + 1.838,-18.0343,-7.98909,-19.5869, 176.956, 169.116, 7.79321,-0.0470617 + 1.839,-18.0424,-8.17599,-19.5915, 177.036, 169.236, 7.75206,-0.0479784 + 1.84,-18.0507,-8.38969,-19.6078, 177.118, 169.355, 7.71398,-0.0490266 + 1.841,-18.0591,-8.46626,-19.6291, 177.201, 169.478, 7.67362,-0.0494022 + 1.842,-18.0675,-8.31437,-19.6466, 177.283, 169.604, 7.63021,-0.0486571 + 1.843,-18.0756, -7.9506,-19.6531, 177.361, 169.727, 7.58713,-0.0468729 + 1.844,-18.0834,-7.49355, -19.646, 177.435, 169.844, 7.54585,-0.044631 + 1.845,-18.0907,-7.11918,-19.6282, 177.504, 169.959, 7.50306,-0.0427947 + 1.846,-18.0977,-6.99475, -19.607, 177.573, 170.076, 7.45473,-0.0421844 + 1.847,-18.1048,-7.21623,-19.5913, 177.644, 170.199, 7.40121,-0.0432708 + 1.848,-18.1123, -7.7726,-19.5874, 177.72, 170.328, 7.34632,-0.0459998 + 1.849,-18.1205,-8.54977,-19.5969, 177.804, 170.462, 7.29232,-0.0498118 + 1.85,-18.1294,-9.37195,-19.6159, 177.896, 170.604, 7.23796,-0.0538446 + 1.851,-18.1392,-10.0642,-19.6366, 177.995, 170.756, 7.18169,-0.0572403 + 1.852,-18.1495,-10.5128,-19.6504, 178.098, 170.913, 7.12492,-0.0594403 + 1.853,-18.1601,-10.7004,-19.6517, 178.203, 171.072, 7.07077,-0.0603606 + 1.854,-18.1708,-10.7056,-19.6399, 178.308, 171.227, 7.02058,-0.060386 + 1.855,-18.1815,-10.6665,-19.6199, 178.412, 171.379, 6.97331,-0.0601942 + 1.856,-18.1921,-10.7247,-19.6001, 178.518, 171.529, 6.92788,-0.0604798 + 1.857, -18.203,-10.9703,-19.5884, 178.625, 171.679, 6.88457,-0.0616847 + 1.858,-18.2142,-11.4086,-19.5898, 178.737, 171.83, 6.84364,-0.0638342 + 1.859,-18.2259,-11.9587,-19.6037, 178.854, 171.984, 6.80401,-0.0665327 + 1.86,-18.2381,-12.4851,-19.6242, 178.977, 172.144, 6.76422,-0.0691147 + 1.861,-18.2508,-12.8464, -19.643, 179.103, 172.308, 6.72376,-0.0708867 + 1.862,-18.2636,-12.9447,-19.6522, 179.23, 172.476, 6.68243,-0.0713691 + 1.863,-18.2765,-12.7575,-19.6482, 179.355, 172.646, 6.63889,-0.0704506 + 1.864, -18.289,-12.3406,-19.6326, 179.476, 172.816, 6.59147,-0.0684058 + 1.865,-18.3011,-11.8049,-19.6118, 179.592, 172.986, 6.54037,-0.0657782 + 1.866,-18.3127,-11.2752,-19.5944, 179.703, 173.152, 6.48767,-0.0631798 + 1.867,-18.3237,-10.8481,-19.5876, 179.809, 173.313, 6.43447,-0.0610849 + 1.868,-18.3344,-10.5633,-19.5942, 179.913, 173.473, 6.3794,-0.059688 + 1.869,-18.3449, -10.397,-19.6114, 180.015, 173.634, 6.32122,-0.0588724 + 1.87,-18.3552,-10.2777,-19.6321, 180.115, 173.795, 6.26205,-0.0582874 + 1.871,-18.3654,-10.1172,-19.6478, 180.215, 173.951, 6.206,-0.0574999 + 1.872,-18.3754,-9.84369, -19.652, 180.311, 174.101, 6.15445,-0.0561584 + 1.873,-18.3851,-9.42746, -19.643, 180.404, 174.245, 6.10472,-0.0541168 + 1.874,-18.3942,-8.88939,-19.6246, 180.491, 174.385, 6.05443,-0.0514776 + 1.875,-18.4028,-8.29292,-19.6043, 180.572, 174.518, 6.00564,-0.0485519 + 1.876,-18.4108,-7.72327,-19.5905, 180.648, 174.64, 5.96234,-0.0457578 + 1.877,-18.4183,-7.26197,-19.5889, 180.719, 174.751, 5.92452,-0.0434951 + 1.878,-18.4254,-6.96495,-19.6001, 180.788, 174.858, 5.88728,-0.0420383 + 1.879,-18.4323,-6.85011,-19.6195, 180.855, 174.967, 5.84671,-0.0414749 + 1.88,-18.4392,-6.89648,-19.6391, 180.922, 175.076, 5.8045,-0.0417024 + 1.881,-18.4462,-7.05385,-19.6507, 180.992, 175.185, 5.76458,-0.0424743 + 1.882,-18.4533,-7.25901,-19.6497, 181.063, 175.293, 5.72641,-0.0434806 + 1.883,-18.4607,-7.45383,-19.6364, 181.136, 175.407, 5.68461,-0.0444362 + 1.884,-18.4682,-7.60091,-19.6164, 181.211, 175.53, 5.63562,-0.0451576 + 1.885,-18.4759,-7.69317,-19.5979, 181.286, 175.658, 5.58228,-0.0456102 + 1.886,-18.4836, -7.7553,-19.5885, 181.362, 175.787, 5.52966,-0.0459149 + 1.887,-18.4914,-7.83667,-19.5922, 181.439, 175.914, 5.47817,-0.046314 + 1.888,-18.4993,-7.99681,-19.6073, 181.517, 176.047, 5.42346,-0.0470995 + 1.889,-18.5074,-8.28669,-19.6276, 181.599, 176.187, 5.36331,-0.0485214 + 1.89, -18.516,-8.73054,-19.6448, 181.684, 176.332, 5.30163,-0.0506985 + 1.891, -18.525,-9.31376,-19.6517, 181.776, 176.478, 5.24401,-0.0535592 + 1.892,-18.5346,-9.98163,-19.6455, 181.874, 176.626, 5.19106,-0.0568351 + 1.893,-18.5449,-10.6509,-19.6288, 181.978, 176.779, 5.13881,-0.0601178 + 1.894,-18.5559,-11.2322,-19.6085, 182.088, 176.94, 5.08522,-0.0629692 + 1.895,-18.5673,-11.6574, -19.593, 182.203, 177.104, 5.03354,-0.0650547 + 1.896,-18.5791,-11.9022,-19.5887, 182.319, 177.265, 4.98794,-0.0662556 + 1.897,-18.5911,-11.9964,-19.5973, 182.437, 177.423, 4.94789,-0.0667173 + 1.898,-18.6031, -12.015,-19.6152, 182.555, 177.579, 4.90898,-0.0668086 + 1.899,-18.6151,-12.0532,-19.6351, 182.673, 177.738, 4.86868,-0.0669962 + 1.9,-18.6272,-12.1911,-19.6487, 182.793, 177.896, 4.82879,-0.0676724 + 1.901,-18.6395,-12.4611,-19.6505, 182.915, 178.054, 4.79171,-0.0689967 + 1.902,-18.6522, -12.831,-19.6396, 183.041, 178.214, 4.75615,-0.0708114 + 1.903,-18.6652,-13.2101,-19.6207, 183.171, 178.38, 4.71827,-0.0726709 + 1.904,-18.6786,-13.4779,-19.6015, 183.303, 178.553, 4.6761,-0.0739843 + 1.905,-18.6921,-13.5269, -19.59, 183.435, 178.73, 4.631,-0.0742245 + 1.906,-18.7055,-13.3039,-19.5909, 183.566, 178.908, 4.58469,-0.0731308 + 1.907,-18.7185,-12.8338,-19.6038, 183.692, 179.084, 4.53656,-0.070825 + 1.908,-18.7311,-12.2154,-19.6233, 183.812, 179.259, 4.48481,-0.0677918 + 1.909, -18.743,-11.5894,-19.6415, 183.925, 179.432, 4.42912,-0.0647213 + 1.91,-18.7543,-11.0887,-19.6508, 184.034, 179.601, 4.37104,-0.0622653 + 1.911,-18.7652,-10.7894,-19.6473, 184.14, 179.767, 4.31206,-0.0607974 + 1.912, -18.776,-10.6816,-19.6326, 184.245, 179.932, 4.25257,-0.0602683 + 1.913,-18.7867,-10.6711,-19.6127, 184.349, 180.097, 4.19275,-0.0602171 + 1.914,-18.7973, -10.615,-19.5959, 184.454, 180.26, 4.13344,-0.0599417 + 1.915,-18.8078,-10.3759, -19.589, 184.555, 180.421, 4.07557,-0.0587689 + 1.916,-18.8179,-9.87759, -19.595, 184.652, 180.576, 4.01952,-0.0563247 + 1.917,-18.8274,-9.13853,-19.6113, 184.742, 180.724, 3.96565,-0.0526997 + 1.918,-18.8361, -8.2704,-19.6311, 184.823, 180.86, 3.915,-0.0484415 + 1.919, -18.844,-7.44078,-19.6464, 184.896, 180.983, 3.86835,-0.0443722 + 1.92,-18.8511,-6.81322,-19.6507, 184.963, 181.097, 3.82497,-0.041294 + 1.921,-18.8578,-6.48711,-19.6423, 185.027, 181.204, 3.7833,-0.0396944 + 1.922,-18.8642,-6.46048,-19.6247, 185.09, 181.307, 3.7431,-0.0395638 + 1.923,-18.8708,-6.63061,-19.6053, 185.155, 181.409, 3.70568,-0.0403983 + 1.924,-18.8775,-6.83303,-19.5919, 185.222, 181.509, 3.67145,-0.0413912 + 1.925,-18.8844,-6.90468,-19.5902, 185.29, 181.61, 3.63811,-0.0417426 + 1.926,-18.8912,-6.74729,-19.6008, 185.356, 181.712, 3.60268,-0.0409706 + 1.927,-18.8978,-6.36662,-19.6193, 185.418, 181.814, 3.56485,-0.0391034 + 1.928,-18.9039,-5.87209,-19.6381, 185.476, 181.913, 3.52673,-0.0366778 + 1.929,-18.9095,-5.43659,-19.6494, 185.529, 182.006, 3.48903,-0.0345417 + 1.93,-18.9149,-5.23127,-19.6485, 185.581, 182.098, 3.44896,-0.0335346 + 1.931,-18.9202,-5.36038,-19.6359, 185.633, 182.196, 3.40328,-0.0341678 + 1.932,-18.9258,-5.82098,-19.6167, 185.69, 182.301, 3.35249,-0.0364271 + 1.933,-18.9319,-6.50325,-19.5989, 185.754, 182.414, 3.30008,-0.0397736 + 1.934,-18.9388,-7.23126,-19.5899, 185.825, 182.534, 3.24763,-0.0433445 + 1.935,-18.9463,-7.82873,-19.5933, 185.902, 182.663, 3.19261,-0.0462751 + 1.936,-18.9543,-8.18465,-19.6078, 185.982, 182.802, 3.13214,-0.0480209 + 1.937,-18.9626,-8.29364,-19.6272, 186.064, 182.947, 3.06766,-0.0485555 + 1.938,-18.9708,-8.25577,-19.6437, 186.144, 183.092, 3.00375,-0.0483697 + 1.939,-18.9791,-8.23625,-19.6503, 186.225, 183.234, 2.94258,-0.048274 + 1.94,-18.9874,-8.40062,-19.6444, 186.308, 183.377, 2.88174,-0.0490802 + 1.941, -18.996,-8.85045,-19.6284, 186.395, 183.525, 2.81846,-0.0512866 + 1.942,-19.0053,-9.58397, -19.609, 186.489, 183.679, 2.75444,-0.0548845 + 1.943,-19.0153,-10.4964,-19.5941, 186.592, 183.838, 2.69435,-0.05936 + 1.944,-19.0263,-11.4192, -19.59, 186.704, 183.999, 2.6402,-0.0638861 + 1.945,-19.0381,-12.1825,-19.5983, 186.823, 184.166, 2.58919,-0.0676302 + 1.946,-19.0505,-12.6774,-19.6155, 186.947, 184.339, 2.53819,-0.0700576 + 1.947,-19.0633,-12.8934,-19.6346, 187.074, 184.514, 2.48838,-0.0711172 + 1.948,-19.0762,-12.9185,-19.6476, 187.201, 184.686, 2.44374,-0.0712407 + 1.949,-19.0891,-12.9025,-19.6492, 187.327, 184.85, 2.40558,-0.0711618 + 1.95, -19.102,-12.9973,-19.6387, 187.455, 185.012, 2.37066,-0.071627 + 1.951,-19.1152,-13.2997,-19.6205, 187.585, 185.177, 2.3354,-0.0731102 + 1.952,-19.1287,-13.8152,-19.6021, 187.721, 185.345, 2.30029,-0.0756389 + 1.953,-19.1429,-14.4582,-19.5912, 187.863, 185.515, 2.26843,-0.0787929 + 1.954,-19.1576,-15.0857,-19.5922, 188.011, 185.688, 2.24056,-0.0818705 + 1.955, -19.173,-15.5512,-19.6047, 188.163, 185.865, 2.21345,-0.0841538 + 1.956,-19.1886,-15.7586,-19.6235, 188.318, 186.049, 2.18359,-0.0851709 + 1.957,-19.2043,-15.6944,-19.6408, 188.472, 186.236, 2.15104,-0.0848564 + 1.958,-19.2199,-15.4295,-19.6495, 188.623, 186.421, 2.1183,-0.0835569 + 1.959,-19.2352,-15.0885, -19.646, 188.771, 186.603, 2.08611,-0.0818841 + 1.96,-19.2501,-14.8021,-19.6317, 188.916, 186.784, 2.05186,-0.0804792 + 1.961,-19.2648,-14.6592,-19.6126, 189.06, 186.968, 2.01268,-0.0797784 + 1.962,-19.2795, -14.677,-19.5966, 189.204, 187.156, 1.9686,-0.0798656 + 1.963,-19.2943,-14.7986,-19.5903, 189.349, 187.347, 1.92185,-0.0804621 + 1.964,-19.3091, -14.918,-19.5963, 189.496, 187.541, 1.87351,-0.0810479 + 1.965, -19.324,-14.9213,-19.6121, 189.642, 187.739, 1.82206,-0.0810639 + 1.966,-19.3389,-14.7278,-19.6311, 189.786, 187.941, 1.76553,-0.0801151 + 1.967,-19.3534,-14.3177,-19.6455, 189.927, 188.145, 1.70405,-0.0781032 + 1.968,-19.3674, -13.735,-19.6493, 190.062, 188.347, 1.63964,-0.0752451 + 1.969,-19.3808,-13.0692, -19.641, 190.19, 188.544, 1.57377,-0.0719795 + 1.97,-19.3936,-12.4216, -19.624, 190.312, 188.737, 1.50604,-0.0688031 + 1.971,-19.4057,-11.8703,-19.6053, 190.428, 188.927, 1.43528,-0.0660991 + 1.972,-19.4174,-11.4462,-19.5928, 190.54, 189.115, 1.36158,-0.0640187 + 1.973,-19.4286,-11.1266,-19.5915, 190.65, 189.301, 1.28656,-0.062451 + 1.974,-19.4396, -10.848,-19.6021, 190.756, 189.483, 1.21187,-0.0610845 + 1.975,-19.4503, -10.531, -19.62, 190.859, 189.662, 1.13794,-0.0595295 + 1.976,-19.4606,-10.1082,-19.6379, 190.958, 189.837, 1.06418,-0.0574558 + 1.977,-19.4705,-9.54609,-19.6483, 191.052, 190.007, 0.99037,-0.0546987 + 1.978,-19.4797,-8.85368,-19.6471, 191.139, 190.17,0.917461,-0.0513024 + 1.979,-19.4881,-8.07724,-19.6346, 191.218, 190.324,0.847025,-0.047494 + 1.98,-19.4958,-7.28395,-19.6161, 191.29, 190.466,0.780005,-0.043603 + 1.981,-19.5027,-6.54063,-19.5992, 191.354, 190.598,0.716147,-0.039957 + 1.982,-19.5089,-5.89421, -19.591, 191.412, 190.72,0.654755,-0.0367863 + 1.983,-19.5146,-5.35954,-19.5948, 191.464, 190.834,0.595971,-0.0341637 + 1.984,-19.5197,-4.91703, -19.609, 191.512, 190.939, 0.54107,-0.0319932 + 1.985,-19.5244,-4.52016,-19.6278, 191.557, 191.035,0.491317,-0.0300465 + 1.986,-19.5287,-4.11017,-19.6433, 191.597, 191.122,0.446663,-0.0280355 + 1.987,-19.5326, -3.6339,-19.6491, 191.633, 191.201, 0.40594,-0.0256994 + 1.988, -19.536,-3.05991,-19.6429, 191.663, 191.271,0.368479,-0.022884 + 1.989,-19.5387,-2.38873,-19.6272, 191.686, 191.331,0.335183,-0.0195919 + 1.99,-19.5407,-1.65413,-19.6086, 191.702, 191.379,0.307551,-0.0159887 + 1.991, -19.542,-0.914541,-19.5947, 191.711, 191.413,0.285756,-0.012361 + 1.992,-19.5426,-0.236329,-19.5913, 191.714, 191.436,0.268274,-0.00903436 + 1.993,-19.5425,0.326715,-19.5999, 191.711, 191.45,0.253729,-0.00627263 + 1.994, -19.542,0.751643,-19.6167, 191.703, 191.456,0.242665,-0.00418836 + 1.995,-19.5411, 1.0561,-19.6349, 191.693, 191.453,0.236809,-0.00269499 + 1.996,-19.5399, 1.29529,-19.6469, 191.68, 191.442,0.236639,-0.00152176 + 1.997,-19.5385, 1.54572,-19.6477, 191.665, 191.424,0.240436,-0.000293403 + 1.998,-19.5368, 1.87993,-19.6371, 191.646, 191.402,0.246255,0.0013459 + 1.999,-19.5347, 2.34027,-19.6194, 191.623, 191.373,0.254326,0.00360385 + 2, -19.532, 2.92114, -19.602, 191.595, 191.335,0.266626,0.00645304 diff --git a/test/test_model/test_solid_mechanics_model/test_solid_mechanics_model_material_eigenstrain.cc b/test/test_model/test_solid_mechanics_model/test_solid_mechanics_model_material_eigenstrain.cc index 350c03e7f..f08d6222b 100644 --- a/test/test_model/test_solid_mechanics_model/test_solid_mechanics_model_material_eigenstrain.cc +++ b/test/test_model/test_solid_mechanics_model/test_solid_mechanics_model_material_eigenstrain.cc @@ -1,217 +1,219 @@ /** * @file test_solid_mechanics_model_material_eigenstrain.cc * * @author Aurelia Isabel Cuba Ramos * @author Nicolas Richart * * @date creation: Sat Apr 16 2011 * @date last modification: Wed Aug 12 2015 * * @brief test the internal field prestrain * * @section LICENSE * * Copyright (©) 2010-2012, 2014, 2015 EPFL (Ecole Polytechnique Fédérale de * Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des * Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "solid_mechanics_model.hh" +#include "non_linear_solver.hh" + using namespace akantu; Real alpha [3][4] = { { 0.01, 0.02, 0.03, 0.04 }, { 0.05, 0.06, 0.07, 0.08 }, { 0.09, 0.10, 0.11, 0.12 } }; /* -------------------------------------------------------------------------- */ template static Matrix prescribed_strain() { UInt spatial_dimension = ElementClass::getSpatialDimension(); Matrix strain(spatial_dimension, spatial_dimension); for (UInt i = 0; i < spatial_dimension; ++i) { for (UInt j = 0; j < spatial_dimension; ++j) { strain(i, j) = alpha[i][j + 1]; } } return strain; } template static Matrix prescribed_stress(Matrix prescribed_eigengradu) { UInt spatial_dimension = ElementClass::getSpatialDimension(); Matrix stress(spatial_dimension, spatial_dimension); //plane strain in 2d Matrix strain(spatial_dimension, spatial_dimension); Matrix pstrain; pstrain = prescribed_strain(); Real nu = 0.3; Real E = 2.1e11; Real trace = 0; /// symetric part of the strain tensor for (UInt i = 0; i < spatial_dimension; ++i) for (UInt j = 0; j < spatial_dimension; ++j) strain(i,j) = 0.5 * (pstrain(i, j) + pstrain(j, i)); // elastic strain is equal to elastic strain minus the eigenstrain strain -= prescribed_eigengradu; for (UInt i = 0; i < spatial_dimension; ++i) trace += strain(i,i); Real lambda = nu * E / ((1 + nu) * (1 - 2*nu)); Real mu = E / (2 * (1 + nu)); if(!is_plane_strain) { std::cout << "toto" << std::endl; lambda = nu * E / (1 - nu*nu); } if(spatial_dimension == 1) { stress(0, 0) = E * strain(0, 0); } else { for (UInt i = 0; i < spatial_dimension; ++i) for (UInt j = 0; j < spatial_dimension; ++j) { stress(i, j) = (i == j)*lambda*trace + 2*mu*strain(i, j); } } return stress; } /* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */ int main(int argc, char *argv[]) { initialize("material_elastic_plane_strain.dat", argc, argv); UInt dim = 3; const ElementType element_type = _tetrahedron_4; const bool plane_strain = true; Matrix prescribed_eigengradu(dim, dim); prescribed_eigengradu.clear(); for (UInt i = 0; i < dim; ++i) { for (UInt j = 0; j < dim; ++j) prescribed_eigengradu(i,j) += 0.1; } /// load mesh Mesh my_mesh(dim); std::stringstream filename; filename << "cube_3d_tet_4.msh"; my_mesh.read(filename.str()); /// declaration of model SolidMechanicsModel my_model(my_mesh); /// model initialization my_model.getNewSolver("static", _tsst_static, _nls_newton_raphson_modified); my_model.getNonLinearSolver("static").set("threshold", 2e-4); my_model.getNonLinearSolver("static").set("max_iterations", 2U); my_model.getNonLinearSolver("static").set("convergence_type", _scc_residual); // model.setDefaultIntegrationScheme("static"); my_model.initFull(); const Array & coordinates = my_mesh.getNodes(); Array & displacement = my_model.getDisplacement(); Array & boundary = my_model.getBlockedDOFs(); MeshUtils::buildFacets(my_mesh); my_mesh.createBoundaryGroupFromGeometry(); // Loop over (Sub)Boundar(ies) for(GroupManager::const_element_group_iterator it(my_mesh.element_group_begin()); it != my_mesh.element_group_end(); ++it) { for(ElementGroup::const_node_iterator nodes_it(it->second->node_begin()); nodes_it!= it->second->node_end(); ++nodes_it) { UInt n(*nodes_it); std::cout << "Node " << *nodes_it << std::endl; for (UInt i = 0; i < dim; ++i) { displacement(n, i) = alpha[i][0]; for (UInt j = 0; j < dim; ++j) { displacement(n, i) += alpha[i][j + 1] * coordinates(n, j); } boundary(n, i) = true; } } } /* ------------------------------------------------------------------------ */ /* Apply eigenstrain in each element */ /* ------------------------------------------------------------------------ */ Array & eigengradu_vect = const_cast &>(my_model.getMaterial(0).getInternal("eigen_grad_u")(element_type)); Array::iterator< Matrix > eigengradu_it = eigengradu_vect.begin(dim, dim); Array::iterator< Matrix > eigengradu_end = eigengradu_vect.end(dim, dim); for (; eigengradu_it != eigengradu_end; ++eigengradu_it) { for (UInt i = 0; i < dim; ++i) for (UInt j = 0; j < dim; ++j) (*eigengradu_it)(i,j) += prescribed_eigengradu(i,j); } /* ------------------------------------------------------------------------ */ /* Static solve */ /* ------------------------------------------------------------------------ */ my_model.solveStep(); /* ------------------------------------------------------------------------ */ /* Checks */ /* ------------------------------------------------------------------------ */ Array & stress_vect = const_cast &>(my_model.getMaterial(0).getStress(element_type)); Array::iterator< Matrix > stress_it = stress_vect.begin(dim, dim); Array::iterator< Matrix > stress_end = stress_vect.end(dim, dim); Matrix presc_stress; presc_stress = prescribed_stress(prescribed_eigengradu); Real stress_tolerance = 1e-13; for (; stress_it != stress_end; ++stress_it) { Matrix & stress = *stress_it; Matrix diff(dim, dim); diff = stress; diff -= presc_stress; Real stress_error = diff.norm() / stress.norm(); if(stress_error > stress_tolerance) { std::cerr << "stress error: " << stress_error << " > " << stress_tolerance << std::endl; std::cerr << "stress: " << stress << std::endl << "prescribed stress: " << presc_stress << std::endl; return EXIT_FAILURE; } else { std::cerr << "stress error: " << stress_error << " < " << stress_tolerance << std::endl; } } finalize(); return EXIT_SUCCESS; } diff --git a/test/test_model/test_solid_mechanics_model/test_solid_mechanics_model_reassign_material.cc b/test/test_model/test_solid_mechanics_model/test_solid_mechanics_model_reassign_material.cc index 92656fb56..8a0b26cae 100644 --- a/test/test_model/test_solid_mechanics_model/test_solid_mechanics_model_reassign_material.cc +++ b/test/test_model/test_solid_mechanics_model/test_solid_mechanics_model_reassign_material.cc @@ -1,222 +1,222 @@ /** * @file test_solid_mechanics_model_reassign_material.cc * * @author Aurelia Isabel Cuba Ramos * * @date creation: Mon Feb 10 2014 * @date last modification: Wed Feb 25 2015 * * @brief test the function reassign material * * @section LICENSE * * Copyright (©) 2014, 2015 EPFL (Ecole Polytechnique Fédérale de Lausanne) * Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides) * * Akantu is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version. * * Akantu 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with Akantu. If not, see . * */ /* -------------------------------------------------------------------------- */ #include "aka_grid_dynamic.hh" #include "material.hh" #include "solid_mechanics_model.hh" #include "static_communicator.hh" using namespace akantu; class StraightInterfaceMaterialSelector : public MaterialSelector { public: StraightInterfaceMaterialSelector(SolidMechanicsModel & model, const std::string & mat_1_material, const std::string & mat_2_material, bool & horizontal, Real & pos_interface) : model(model), mat_1_material(mat_1_material), mat_2_material(mat_2_material), horizontal(horizontal), pos_interface(pos_interface) { Mesh & mesh = model.getMesh(); UInt spatial_dimension = mesh.getSpatialDimension(); /// store barycenters of all elements mesh.initElementTypeMapArray(barycenters, spatial_dimension, spatial_dimension); for (ghost_type_t::iterator gt = ghost_type_t::begin(); gt != ghost_type_t::end(); ++gt) { GhostType ghost_type = *gt; Element e; e.ghost_type = ghost_type; Mesh::type_iterator it = mesh.firstType(spatial_dimension, ghost_type); Mesh::type_iterator last_type = mesh.lastType(spatial_dimension, ghost_type); for (; it != last_type; ++it) { UInt nb_element = mesh.getNbElement(*it, ghost_type); e.type = *it; Array & barycenter = barycenters(*it, ghost_type); barycenter.resize(nb_element); Array::iterator> bary_it = barycenter.begin(spatial_dimension); for (UInt elem = 0; elem < nb_element; ++elem) { e.element = elem; mesh.getBarycenter(e, *bary_it); ++bary_it; } } } } UInt operator()(const Element & elem) { UInt spatial_dimension = model.getSpatialDimension(); const Vector & bary = barycenters(elem.type, elem.ghost_type) .begin(spatial_dimension)[elem.element]; /// check for a given element on which side of the material interface plane /// the bary center lies and assign corresponding material if (bary(!horizontal) < pos_interface) { return model.getMaterialIndex(mat_1_material); ; } return model.getMaterialIndex(mat_2_material); ; } bool isConditonVerified() { /// check if material has been (re)-assigned correctly Mesh & mesh = model.getMesh(); UInt spatial_dimension = mesh.getSpatialDimension(); GhostType ghost_type = _not_ghost; Mesh::type_iterator it = mesh.firstType(spatial_dimension, ghost_type); Mesh::type_iterator last_type = mesh.lastType(spatial_dimension, ghost_type); for (; it != last_type; ++it) { Array & mat_indexes = model.getMaterialByElement(*it, ghost_type); UInt nb_element = mesh.getNbElement(*it, ghost_type); Array::iterator> bary = barycenters(*it, ghost_type).begin(spatial_dimension); for (UInt elem = 0; elem < nb_element; ++elem, ++bary) { /// compare element_index_by material to material index that should be /// assigned due to the geometry of the interface UInt mat_index; if ((*bary)(!horizontal) < pos_interface) mat_index = model.getMaterialIndex(mat_1_material); else mat_index = model.getMaterialIndex(mat_2_material); if (mat_indexes(elem) != mat_index) /// wrong material index, make test fail return false; } } return true; } void moveInterface(Real & pos_new, bool & horizontal_new) { /// update position and orientation of material interface plane pos_interface = pos_new; horizontal = horizontal_new; model.reassignMaterial(); } protected: SolidMechanicsModel & model; ElementTypeMapArray barycenters; std::string mat_1_material; std::string mat_2_material; bool horizontal; Real pos_interface; }; /* -------------------------------------------------------------------------- */ /* Main */ /* -------------------------------------------------------------------------- */ int main(int argc, char * argv[]) { bool test_passed; debug::setDebugLevel(dblWarning); initialize("two_materials.dat", argc, argv); /// specify position and orientation of material interface plane bool horizontal = true; Real pos_interface = 0.; UInt spatial_dimension = 3; akantu::StaticCommunicator & comm = akantu::StaticCommunicator::getStaticCommunicator(); akantu::Int psize = comm.getNbProc(); akantu::Int prank = comm.whoAmI(); Mesh mesh(spatial_dimension); akantu::MeshPartition * partition = NULL; if (prank == 0) { /// creation mesh mesh.read("cube_two_materials.msh"); partition = new akantu::MeshPartitionScotch(mesh, spatial_dimension); partition->partitionate(psize); } /// model creation SolidMechanicsModel model(mesh); - model.initParallel(partition); - delete partition; + //model.initParallel(partition); + //delete partition; /// assign the two different materials using the /// StraightInterfaceMaterialSelector StraightInterfaceMaterialSelector * mat_selector; mat_selector = new StraightInterfaceMaterialSelector( model, "mat_1", "mat_2", horizontal, pos_interface); model.setMaterialSelector(*mat_selector); model.initFull(SolidMechanicsModelOptions(_static)); MeshUtils::buildFacets(mesh); // model.setBaseName("test_reassign_material"); // model.addDumpField("element_index_by_material"); // model.addDumpField("partitions"); // model.dump(); /// check if different materials have been assigned correctly test_passed = mat_selector->isConditonVerified(); if (!test_passed) { AKANTU_DEBUG_ERROR("materials not correctly assigned"); return EXIT_FAILURE; } /// change orientation of material interface plane horizontal = false; mat_selector->moveInterface(pos_interface, horizontal); // model.dump(); /// test if material has been reassigned correctly test_passed = mat_selector->isConditonVerified(); if (!test_passed) { AKANTU_DEBUG_ERROR("materials not correctly reassigned"); return EXIT_FAILURE; } finalize(); if (prank == 0) std::cout << "OK: test passed!" << std::endl; return EXIT_SUCCESS; } /* -------------------------------------------------------------------------- */