diff --git a/dumux/CMakeLists.txt b/dumux/CMakeLists.txt index a8e7f0f33e13e29735b6d997152bd73f9b74f514..87cb87d8609fb96482771c7c36cd522ef43d221c 100644 --- a/dumux/CMakeLists.txt +++ b/dumux/CMakeLists.txt @@ -1,13 +1,11 @@ add_subdirectory("common") add_subdirectory("discretization") add_subdirectory("freeflow") -add_subdirectory("geomechanics") add_subdirectory("implicit") add_subdirectory("io") add_subdirectory("linear") add_subdirectory("material") add_subdirectory("mixeddimension") -add_subdirectory("multidomain") add_subdirectory("nonlinear") add_subdirectory("parallel") add_subdirectory("porousmediumflow") diff --git a/dumux/geomechanics/CMakeLists.txt b/dumux/geomechanics/CMakeLists.txt deleted file mode 100644 index 317ac1cf3564d3219e6211b0faf40a852dce5665..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -add_subdirectory("el1p2c") -add_subdirectory("el2p") -add_subdirectory("elastic") -add_subdirectory("implicit") -add_subdirectory("constitutivelaws") \ No newline at end of file diff --git a/dumux/geomechanics/constitutivelaws/CMakeLists.txt b/dumux/geomechanics/constitutivelaws/CMakeLists.txt deleted file mode 100644 index 513c666aeefecd41e73de8899ee9b040504d7a13..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/constitutivelaws/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ - -#install headers -install(FILES -hokeslaw.hh -DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/geomechanics/constitutivelaws) diff --git a/dumux/geomechanics/constitutivelaws/hookeslaw.hh b/dumux/geomechanics/constitutivelaws/hookeslaw.hh deleted file mode 100644 index 8e425a76f5ed0e5861295a9ea75087b088911ee7..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/constitutivelaws/hookeslaw.hh +++ /dev/null @@ -1,313 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief This file contains the data which is required to calculate - * the mechanic stresses according to Hooke's law. - */ -#ifndef DUMUX_GEOMECHANICS_HOOKES_LAW_HH -#define DUMUX_GEOMECHANICS_HOOKES_LAW_HH - -#include <dune/common/float_cmp.hh> - -#include <dumux/common/math.hh> -#include <dumux/common/parameters.hh> - -#include <dumux/implicit/properties.hh> - - -namespace Dumux -{ - -namespace Properties -{ -// forward declaration of properties -} - -/*! - * \ingroup CCTpfaHookesLaw - * \brief Evaluates the stresses, tractions and compressions on a face according to Hooke's law. - * Specializations are given for the different discretization methods. - */ -template <class TypeTag, typename DiscretizationMethod = void> -class HookesLaw -{}; - -template <class TypeTag> -class HookesLaw<TypeTag, typename std::enable_if<GET_PROP_VALUE(TypeTag, DiscretizationMethod) == GET_PROP(TypeTag, DiscretizationMethods)::CCTpfa>::type > -{ - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, SubControlVolume) SubControlVolume; - typedef typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace) SubControlVolumeFace; - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GridView::IndexSet::IndexType IndexType; - typedef typename std::vector<IndexType> Stencil; - typedef typename GridView::template Codim<0>::Entity Element; - - enum { dim = GridView::dimension} ; - static constexpr int voigtDim = 0.5*(dim*dim+dim); - - typedef Dune::FieldMatrix<Scalar, voigtDim, voigtDim> StiffnessMatrix; - typedef Dune::FieldVector<Scalar, voigtDim> VoigtVector; - typedef Dune::FieldMatrix<Scalar, dim, dim> DimMatrix; - typedef Dune::FieldVector<Scalar, dim> DimVector; - - struct FaceData - { - Scalar insideLambda, insideMu; - DimVector insideAlpha, insideN, insideU; - - Scalar outsideLambda, outsideMu; - DimVector outsideAlpha, outsideN, outsideU; - - bool valueSet; - - FaceData() - { - valueSet = false; - } - }; - -public: - - static DimVector stressVector(const Problem& problem, const SubControlVolumeFace& scvFace) - { - DimMatrix sigma = calculateSigma_(problem, scvFace); - - // calculate Sigma*n - DimVector stressVec(0.0); - sigma.mv(scvFace.unitOuterNormal(), stressVec); - stressVec *= scvFace.area(); - - return stressVec; - } - - static DimMatrix stressTensor(const Problem& problem, const SubControlVolumeFace& scvFace) - { - return calculateSigma_(problem, scvFace); - } - - static Stencil stencil(const Problem& problem, const SubControlVolumeFace& scvFace) - { - std::vector<IndexType> stencil; - if (!scvFace.boundary()) - { - stencil.push_back(scvFace.insideScvIdx()); - stencil.push_back(scvFace.outsideScvIdx()); - } - else - stencil.push_back(scvFace.insideScvIdx()); - - return stencil; - } - - static DimMatrix calculateInversA(const Problem& problem, const SubControlVolumeFace& scvFace) - { - FaceData faceData = obtainFaceData_(problem, scvFace); - - DimMatrix inversA(0.0); - addEntriesToMatrix_(faceData.insideLambda, faceData.insideMu, faceData.insideAlpha, faceData.insideN, inversA); - addEntriesToMatrix_(faceData.outsideLambda, faceData.outsideMu, faceData.outsideAlpha, faceData.outsideN, inversA); - inversA.invert(); - - return inversA; - } - - static DimVector interpolateFaceDisplacement(const Problem& problem, const SubControlVolumeFace& scvFace) - { - FaceData faceData = obtainFaceData_(problem, scvFace); - return interpolateFaceDisplacement_(problem, scvFace, faceData); - } - -private: - - static FaceData obtainFaceData_(const Problem& problem, const SubControlVolumeFace& scvFace) - { - FaceData container; - - const auto insideScvIdx = scvFace.insideScvIdx(); - const auto& insideScv = problem.model().fvGeometries().subControlVolume(insideScvIdx); - const auto& insideVolVars = problem.model().curVolVars(insideScvIdx); - container.insideU = insideVolVars.displacement(); - container.insideLambda = insideVolVars.lambda(); - container.insideMu = insideVolVars.mu(); - container.insideN = scvFace.unitOuterNormal(); - container.insideAlpha = scvFace.center(); - container.insideAlpha -= insideScv.center(); - container.insideAlpha /= container.insideAlpha.two_norm2(); - - const auto outsideScvIdx = scvFace.outsideScvIdx(); - const auto& outsideVolVars = problem.model().curVolVars(outsideScvIdx); - container.outsideU = outsideVolVars.displacement(); - container.outsideLambda = outsideVolVars.lambda(); - container.outsideMu = outsideVolVars.mu(); - container.outsideN = scvFace.unitOuterNormal(); - container.outsideN *= -1; - if (scvFace.boundary()) - container.outsideAlpha = 0.0; - else - { - const auto& outsideScv = problem.model().fvGeometries().subControlVolume(outsideScvIdx); - container.outsideAlpha = scvFace.center(); - container.outsideAlpha -= outsideScv.center(); - container.outsideAlpha /= container.outsideAlpha.two_norm2(); - } - - container.valueSet = true; - - return container; - } - - static DimMatrix calculateSigma_(const Problem& problem, const SubControlVolumeFace& scvFace) - { - DimMatrix sigma(0.0); - StiffnessMatrix C(0.0); - VoigtVector voigtStrain(0.0); - VoigtVector voigtSigma(0.0); - - FaceData faceData = obtainFaceData_(problem, scvFace); - DimVector faceU = interpolateFaceDisplacement_(problem, scvFace, faceData); - - fillStiffnessMatrix_(C, faceData.insideLambda, faceData.insideMu); - fillStrainVector_(voigtStrain, faceData.insideAlpha, faceData.insideU, faceU); - - C.mv(voigtStrain, voigtSigma); - - if (dim == 2) - { - sigma[0][0] = voigtSigma[0]; - sigma[0][1] = voigtSigma[2]; - sigma[1][0] = voigtSigma[2]; - sigma[1][1] = voigtSigma[1]; - } - else - DUNE_THROW(Dune::NotImplemented, "dim = " << dim << " is not implemented yet"); - - return sigma; - } - - static DimVector interpolateFaceDisplacement_(const Problem& problem, const SubControlVolumeFace& scvFace, const FaceData& faceData, const bool oldSol = false) - { - DimVector faceU(0.0); - - if (!scvFace.boundary()) - { - DimMatrix inversA(0.0); - DimMatrix insideB(0.0); - DimMatrix outsideB(0.0); - - getInversA_(problem, scvFace, faceData, inversA); - addEntriesToMatrix_(faceData.insideLambda, faceData.insideMu, faceData.insideAlpha, faceData.insideN, insideB); - addEntriesToMatrix_(faceData.outsideLambda, faceData.outsideMu, faceData.outsideAlpha, faceData.outsideN, outsideB); - - DimVector insideTmp(0.0); - DimVector outsideTmp(0.0); - insideB.mv(faceData.insideU, insideTmp); - outsideB.mv(faceData.outsideU, outsideTmp); - - insideTmp += outsideTmp; - - inversA.mv(insideTmp, faceU); - } - else - { - if (!oldSol) - { - try { return problem.model().curVolVars(scvFace.outsideScvIdx()).displacement(); } - catch (Dune::Exception& e) - { - DUNE_THROW(Dune::InvalidStateException, "Error ocurred during the displacement interpolation on a boundary scv face. Only call this method on inner scv faces or pure Dirichlet boundaries with the volvars bound to the element"); - } - } - else - { - // TODO - DUNE_THROW(Dune::NotImplemented, "Reconstruction of the previous boundary vol vars not yet implemented"); - } - } - - return faceU; - } - - template<typename T = TypeTag> - static typename std::enable_if<GET_PROP_VALUE(T, EnableFluxVariablesCache)>::type getInversA_(const Problem& problem, - const SubControlVolumeFace& scvFace, - const FaceData& faceData, - DimMatrix& inversA) - { inversA = problem.model().fluxVarsCache(scvFace).inversA(); } - - template<typename T = TypeTag> - static typename std::enable_if<!GET_PROP_VALUE(T, EnableFluxVariablesCache)>::type getInversA_(const Problem& problem, - const SubControlVolumeFace& scvFace, - const FaceData& faceData, - DimMatrix& inversA) - { - addEntriesToMatrix_(faceData.insideLambda, faceData.insideMu, faceData.insideAlpha, faceData.insideN, inversA); - addEntriesToMatrix_(faceData.outsideLambda, faceData.outsideMu, faceData.outsideAlpha, faceData.outsideN, inversA); - inversA.invert(); - } - - static void addEntriesToMatrix_(const Scalar lambda, const Scalar mu, const DimVector& alpha, const DimVector& normal, DimMatrix& matrix) - { - if (dim == 2) - { - matrix[0][0] += (lambda + 2*mu)*alpha[0]*normal[0] + mu*alpha[1]*normal[1]; - matrix[0][1] += lambda*alpha[1]*normal[0] + mu*alpha[0]*normal[1]; - matrix[1][0] += mu*alpha[1]*normal[0] + lambda*alpha[0]*normal[1]; - matrix[1][1] += mu*alpha[0]*normal[0] + (lambda + 2*mu)*alpha[1]*normal[1]; - } - else - DUNE_THROW(Dune::NotImplemented, "dim = " << dim << " is not implemented yet"); - } - - static void fillStiffnessMatrix_(StiffnessMatrix& C, const Scalar lambda, const Scalar mu) - { - if (dim == 2) - { - C[0][0] = lambda + 2*mu; - C[0][1] = lambda; - C[0][2] = 0.0; - - C[1][0] = lambda; - C[1][1] = lambda + 2*mu; - C[1][2] = 0.0; - - C[2][0] = 0.0; - C[2][1] = 0.0; - C[2][2] = mu; - } - } - - static void fillStrainVector_(VoigtVector& strain, const DimVector& alpha, const DimVector& insideU, const DimVector& faceU) - { - if (dim == 2) - { - strain[0] = alpha[0]*(faceU[0] - insideU[0]); - strain[1] = alpha[1]*(faceU[1] - insideU[1]); - strain[2] = alpha[1]*(faceU[0] - insideU[0]) + alpha[0]*(faceU[1] - insideU[1]); - } - } -}; - -} // end namespace - -#endif diff --git a/dumux/geomechanics/el1p2c/CMakeLists.txt b/dumux/geomechanics/el1p2c/CMakeLists.txt deleted file mode 100644 index b1d385c69a89719def138462fc0a42ce5cc3c9ff..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el1p2c/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ - -#install headers -install(FILES -elementvolumevariables.hh -fluxvariables.hh -indices.hh -localjacobian.hh -localresidual.hh -model.hh -properties.hh -propertydefaults.hh -volumevariables.hh -DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/geomechanics/el1p2c) diff --git a/dumux/geomechanics/el1p2c/elementvolumevariables.hh b/dumux/geomechanics/el1p2c/elementvolumevariables.hh deleted file mode 100644 index 4e422d0ad11682b99f52ef274b002078eed44e60..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el1p2c/elementvolumevariables.hh +++ /dev/null @@ -1,146 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Volume variables gathered on an element - */ -#ifndef DUMUX_BOX_EL1P2C_ELEMENT_VOLUME_VARIABLES_HH -#define DUMUX_BOX_EL1P2C_ELEMENT_VOLUME_VARIABLES_HH - -#include <dumux/implicit/box/properties.hh> -#include <dumux/implicit/box/elementvolumevariables.hh> - -namespace Dumux -{ - -/*! - * \ingroup ElOnePTwoCBoxModel - * - * \brief This class stores an array of VolumeVariables objects, one - * volume variables object for each of the element's vertices - */ -template<class TypeTag> -class ElOnePTwoCElementVolumeVariables : public BoxElementVolumeVariables<TypeTag> -{ - typedef BoxElementVolumeVariables<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GridView::template Codim<0>::Entity Element; - enum { dim = GridView::dimension }; - - typedef typename GET_PROP_TYPE(TypeTag, FluxVariables) FluxVariables; - -public: - /*! - * \brief The constructor. - */ - ElOnePTwoCElementVolumeVariables() - { } - - /*! - * \brief Construct the volume variables for all vertices of an element. - * - * \param problem The problem which needs to be simulated. - * \param element The DUNE Codim<0> entity for which the volume variables ought to be calculated - * \param fvGeometry The finite volume geometry of the element - * \param oldSol Tells whether the model's previous or current solution should be used. - * - * This class is required for the update of the effective porosity values at the - * vertices since it is a function of the divergence of the solid displacement - * at the integration points - */ - void update(const Problem &problem, - const Element &element, - const FVElementGeometry &fvGeometry, - bool oldSol) - { - ParentType::update(problem, element, fvGeometry, oldSol); - this->updateEffPorosity(problem, element, fvGeometry); - - }; - - /*! - * \brief Update the effective porosities and the volumetric strain divU for all vertices of an element. - * - * \param problem The problem which needs to be simulated. - * \param element The DUNE Codim<0> entity for which the volume variables ought to be calculated - * \param fvGeometry The finite volume geometry of the element - * - * This function is required for the update of the effective porosity / divU values at the - * vertices. - * - * During the partial derivative calculation, changes of the solid displacement - * at vertex i can affect effective porosities / divU of all element vertices. - * To correctly update the effective porosities / divU of all element vertices - * an iteration over all scv faces is required. - * The remaining volvars are only updated for the vertex whose primary variable - * is changed for the derivative calculation. - */ - void updateEffPorosity(const Problem &problem, - const Element &element, - const FVElementGeometry &fvGeometry) - { - // we assert that the i-th shape function is - // associated to the i-th vert of the element. - int numScv = element.subEntities(dim); - - // number of faces which contribute to the porosity value in the sub-control volume - std::vector<double> numContributingFaces; - numContributingFaces.resize(numScv); - - for (int scvIdx = 0; scvIdx < numScv; scvIdx++) { - (*this)[scvIdx].effPorosity = 0.0; - (*this)[scvIdx].divU = 0.0; - numContributingFaces[scvIdx] = 0.0; - } - for (int fIdx = 0; fIdx < fvGeometry.numScvf; fIdx++) - { - // evaluate the gradients at the IPs for each subcontrol volume face - FluxVariables fluxVars; - fluxVars.update(problem, - element, - fvGeometry, - fIdx, - *this); - - numContributingFaces[fluxVars.face().i] += 1; - numContributingFaces[fluxVars.face().j] += 1; - - // average value for the effective porosity - (*this)[fluxVars.face().i].effPorosity += fluxVars.effPorosity(); - (*this)[fluxVars.face().j].effPorosity += fluxVars.effPorosity(); - // average value for the volumetric strain - (*this)[fluxVars.face().i].divU += fluxVars.divU(); - (*this)[fluxVars.face().j].divU += fluxVars.divU(); - - } - for (int scvIdx = 0; scvIdx < numScv; scvIdx++) { - (*this)[scvIdx].effPorosity /= numContributingFaces[scvIdx]; - (*this)[scvIdx].divU /= numContributingFaces[scvIdx]; - } - }; - - -}; - -} // namespace Dumux - -#endif diff --git a/dumux/geomechanics/el1p2c/fluxvariables.hh b/dumux/geomechanics/el1p2c/fluxvariables.hh deleted file mode 100644 index 40c5bf0b5316d79acd94dc5d69ecc7cb75460827..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el1p2c/fluxvariables.hh +++ /dev/null @@ -1,327 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief This file contains the calculation of all the fluxes over the surface of the - * finite volume that make up the volume, the mass and the momentum balance - * for the one-phase two-component linear-elastic model. - * - * This means pressure, concentration and solid-displacement gradients, phase densities at - * the integration point, etc. - * - * This class inherits from the one-phase two-component model FluxVariables and from the - * linear elasticity model FluxVariables - */ -#ifndef DUMUX_ELASTIC1P2C_FLUX_VARIABLES_HH -#define DUMUX_ELASTIC1P2C_FLUX_VARIABLES_HH - -#include <dumux/geomechanics/elastic/fluxvariables.hh> -#include <dumux/porousmediumflow/1p2c/implicit/fluxvariables.hh> - -namespace Dumux -{ -/*! - * \ingroup ElOnePTwoCBoxModel - * \ingroup ImplicitFluxVariables - * \brief This template class contains the data which is required to - * calculate the fluxes over the surface of the - * finite volume that make up the volume, the mass and the momentum balance - * for the one-phase two-component linear-elastic model. - * - * This means pressure, concentration and solid-displacement gradients, phase densities at - * the integration point, etc. - * - */ -template<class TypeTag> -class ElOnePTwoCFluxVariables: public ElasticFluxVariablesBase<TypeTag> , - public OnePTwoCFluxVariables<TypeTag> -{ - friend class ElasticFluxVariablesBase<TypeTag>; // be friends with parents - friend class OnePTwoCFluxVariables<TypeTag>; // be friends with parents - - typedef ElasticFluxVariablesBase<TypeTag> ElasticBase; - typedef OnePTwoCFluxVariables<TypeTag> OnePTwoCBase; - - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) VolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables) ElementVolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, EffectiveDiffusivityModel) EffectiveDiffusivityModel; - - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GridView::template Codim<0>::Entity Element; - enum - { - dim = GridView::dimension, - dimWorld = GridView::dimensionworld - }; - - typedef typename GridView::ctype CoordScalar; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; - typedef Dune::FieldVector<CoordScalar, dim> DimVector; - - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename FVElementGeometry::SubControlVolumeFace SCVFace; - -public: - /*! - * \brief Compute / update the flux variables - * - * \param problem The problem - * \param element The finite element - * \param fvGeometry The finite-volume geometry - * \param fIdx The local index of the SCV (sub-control-volume) face - * \param elemVolVars The volume variables of the current element - * \param onBoundary A boolean variable to specify whether the flux variables - * are calculated for interior SCV faces or boundary faces, default=false - */ - void update(const Problem &problem, - const Element &element, - const FVElementGeometry &fvGeometry, - const int fIdx, - const ElementVolumeVariables &elemVolVars, - const bool onBoundary = false) - { - ElasticBase::update(problem, element, fvGeometry, fIdx, elemVolVars); - OnePTwoCBase::update(problem, element, fvGeometry, fIdx, elemVolVars); - - dU_ = 0.0; - dGradP_ = 0.0; - porosity_ = 0.0; - effPorosity_ = 0.0; - pressure_ = 0.0; - timeDerivUNormal_ = 0.0; - - elOnePTwoCGradients_(problem, element, elemVolVars); - calculateEffectiveValues_(problem, element, elemVolVars); - calculateDiffCoeffPM_(problem, element, elemVolVars); - calculateDDt_(problem, element, elemVolVars); - } - -public: - /*! - * \brief Return porosity [-] at the integration point. - */ - Scalar porosity() const - { - return porosity_; - } - - /*! - * \brief Return effective porosity [-] at the integration point. - */ - Scalar effPorosity() const - { - return effPorosity_; - } - - /*! - * \brief Return pressure [Pa] at the integration - * point. - */ - Scalar pressure() const - { - return pressure_; - } - - /*! - * \brief Return change of pressure gradient with time [Pa/m] at - * integration point. - */ - Scalar dGradP(int dimIdx) const - { - return dGradP_[dimIdx]; - } - - /*! - * \brief Return gradient of time derivative of pressure [Pa]. - */ - Scalar timeDerivGradPNormal() const - { - return timeDerivGradPNormal_; - } - - /*! - * \brief Return change of u [m] with time at integration point - * point. - */ - Scalar dU(int dimIdx) const - { - return dU_[dimIdx]; - } - - /*! - * \brief Return time derivative of u [m/s] in normal direction at integration point - */ - Scalar timeDerivUNormal() const - { - return timeDerivUNormal_; - } - - /*! - * \brief Return porous medium diffusion coefficient [m^2] - */ - Scalar diffCoeffPM() const - { - return diffCoeffPM_; - } - - const SCVFace &face() const - { - return ElasticBase::face(); - } - -protected: - // Overload the parent's methods to avoid ambiguous overloads due to multiple inheritance - // The elastic gradients are already computed in the elastic base class update - void calculateGradients_(const Problem &problem, - const Element &element, - const ElementVolumeVariables &elemVolVars) - { - OnePTwoCBase::calculateGradients_(problem, element, elemVolVars); - } - - /*! - * \brief Calculation of the solid displacement and pressure gradients. - * - * \param problem The considered problem file - * \param element The considered element of the grid - * \param elemVolVars The parameters stored in the considered element - */ - void elOnePTwoCGradients_(const Problem &problem, - const Element &element, - const ElementVolumeVariables &elemVolVars) - { - // calculate gradients - GlobalPosition tmp(0.0); - for (int idx = 0; idx < ElasticBase::fvGeometry_().numScv; idx++) // loop over adjacent vertices - { - // FE gradient at vertex idx - const DimVector &feGrad = face().grad[idx]; - - // the gradient of the temporal pressure change (needed for stabilization term) - tmp = feGrad; - tmp *= elemVolVars[idx].dPressure(); - dGradP_ += tmp; - - // average the pressure at integration point - pressure_ += elemVolVars[idx].pressure() - * face().shapeValue[idx]; - // average temporal displacement change at integration point (for calculation of solid displacement velocity) - for (int i = 0; i < dim; ++i) - dU_[i] += elemVolVars[idx].dU(i) - * face().shapeValue[idx]; - // average porosity at integration point - porosity_ += elemVolVars[idx].porosity() - * face().shapeValue[idx]; - } - } - - /*! - * \brief Calculation of the effective porosity. - * - * \param problem The considered problem file - * \param element The considered element of the grid - * \param elemVolVars The parameters stored in the considered element - */ - void calculateEffectiveValues_(const Problem &problem, - const Element &element, - const ElementVolumeVariables &elemVolVars) - { - - // the effective porosity is calculated as a function of solid displacement and initial porosity - // according to Han & Dusseault (2003) - - // calculate effective porosity as a function of solid displacement and initial porosity - effPorosity_ = (porosity_ + this->divU()) - / (1 + this->divU()); - } - - /*! - * \brief Calculation of the effective porous media diffusion coefficient. - * - * \param problem The considered problem file - * \param element The considered element of the grid - * \param elemVolVars The parameters stored in the considered element - */ - void calculateDiffCoeffPM_(const Problem &problem, - const Element &element, - const ElementVolumeVariables &elemVolVars) - { - const VolumeVariables &volVarsI = elemVolVars[face().i]; - const VolumeVariables &volVarsJ = elemVolVars[face().j]; - - const Scalar diffCoeffI = - EffectiveDiffusivityModel::effectiveDiffusivity(volVarsI.porosity(), - /*sat=*/1.0, - volVarsI.diffCoeff()); - - const Scalar diffCoeffJ = - EffectiveDiffusivityModel::effectiveDiffusivity(volVarsJ.porosity(), - /*sat=*/1.0, - volVarsJ.diffCoeff()); - - diffCoeffPM_ = harmonicMean(diffCoeffI, diffCoeffJ); - } - - /*! - * \brief Calculation of the time derivative of solid displacement and pressure gradient - * \param problem The considered problem file - * \param element The considered element of the grid - * \param elemVolVars The parameters stored in the considered element - */ - void calculateDDt_(const Problem &problem, - const Element &element, - const ElementVolumeVariables &elemVolVars) - { - Scalar dt= problem.timeManager().timeStepSize(); - DimVector tmp(0.0); - - //time derivative of solid displacement times normal vector - for (int i = 0; i < dim; ++i) - tmp[i] = dU_[i] / dt; - timeDerivUNormal_ = tmp * face().normal; - //time derivative of pressure gradient times normal vector - for (int i = 0; i < dim; ++i) - tmp[i] = dGradP_[i] / dt; - timeDerivGradPNormal_ = tmp * face().normal; - } - - //! change of solid displacement with time at integration point - GlobalPosition dU_; - //! change of pressure gradient with time at integration point - GlobalPosition dGradP_; - //! porosity at integration point - Scalar porosity_; - //! effective porosity at integration point - Scalar effPorosity_; - //! pressure at integration point - Scalar pressure_; - //! time derivative of solid displacement times normal vector at integration point - Scalar timeDerivUNormal_; - //! time derivative of pressure gradient times normal vector at integration point - Scalar timeDerivGradPNormal_; - //! Parameters - Scalar diffCoeffPM_; -}; - -} // end namespace - -#endif diff --git a/dumux/geomechanics/el1p2c/indices.hh b/dumux/geomechanics/el1p2c/indices.hh deleted file mode 100644 index 6b5c446286b96ef07e679c79a0720d6ec39ef04e..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el1p2c/indices.hh +++ /dev/null @@ -1,53 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Defines the primary variable and equation indices used by - * the one-phase two-component linear elasticity model. - */ - -#ifndef DUMUX_ELASTIC1P2C_INDICES_HH -#define DUMUX_ELASTIC1P2C_INDICES_HH - -#include <dumux/geomechanics/elastic/indices.hh> -#include <dumux/porousmediumflow/1p2c/implicit/indices.hh> - -namespace Dumux -{ -// \{ - -/*! - * \ingroup ElOnePTwoCBoxModel - * \ingroup ImplicitIndices - * \brief The indices for the one-phase two-component linear elasticity model. - * - * This class inherits from the OnePTwoCIndices and from the ElasticIndices - */ -template <class TypeTag> -// PVOffset is set to 0 for the OnePTwoCIndices and to 2 for the ElasticIndices since -// the first two primary variables are the primary variables of the one-phase two-component -// model followed by the primary variables of the elastic model -class ElOnePTwoCIndices : public OnePTwoCIndices<TypeTag, 0>, public ElasticIndices<2> -{ -}; - -} // namespace Dumux - -#endif diff --git a/dumux/geomechanics/el1p2c/localjacobian.hh b/dumux/geomechanics/el1p2c/localjacobian.hh deleted file mode 100644 index 4184d8cd4aa2dc93c0fb74f75241a7952d40e224..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el1p2c/localjacobian.hh +++ /dev/null @@ -1,258 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Calculates the partial derivatives of the local residual for the Jacobian of the - * one-phase two-component linear elasticity model. - */ -#ifndef DUMUX_EL1P2C_LOCAL_JACOBIAN_HH -#define DUMUX_EL1P2C_LOCAL_JACOBIAN_HH - -#include <dumux/implicit/localjacobian.hh> - -namespace Dumux -{ -/*! - * \ingroup ElOnePTwoCBoxModel - * \brief Calculates the partial derivatives of the local residual for the Jacobian - * - * Except for the evalPartialDerivatives function all functions are taken from the - * base class ImplicitLocalJacobian - */ -template<class TypeTag> -class ElOnePTwoCLocalJacobian : public ImplicitLocalJacobian<TypeTag> -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - enum { - dim = GridView::dimension, - }; - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, ElementSolutionVector) ElementSolutionVector; - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) VolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - enum { isBox = GET_PROP_VALUE(TypeTag, ImplicitIsBox) }; - - // copying a local jacobian is not a good idea - ElOnePTwoCLocalJacobian(const ElOnePTwoCLocalJacobian &); - -public: - ElOnePTwoCLocalJacobian() - {} - - /*! - * \brief Compute the partial derivatives to a primary variable at - * an degree of freedom. - * - * This method is overwritten here since this model requires a call of the model specific - * elementvolumevariables which updates the effective porosities correctly. - * - * The default implementation of this method uses numeric - * differentiation, i.e. forward or backward differences (2nd - * order), or central differences (3rd order). The method used is - * determined by the "NumericDifferenceMethod" property: - * - * - if the value of this property is smaller than 0, backward - * differences are used, i.e.: - * \f[ - \frac{\partial f(x)}{\partial x} \approx \frac{f(x) - f(x - \epsilon)}{\epsilon} - * \f] - * - * - if the value of this property is 0, central - * differences are used, i.e.: - * \f[ - \frac{\partial f(x)}{\partial x} \approx \frac{f(x + \epsilon) - f(x - \epsilon)}{2 \epsilon} - * \f] - * - * - if the value of this property is larger than 0, forward - * differences are used, i.e.: - * \f[ - \frac{\partial f(x)}{\partial x} \approx \frac{f(x + \epsilon) - f(x)}{\epsilon} - * \f] - * - * Here, \f$ f \f$ is the residual function for all equations, \f$x\f$ - * is the value of a sub-control volume's primary variable at the - * evaluation point and \f$\epsilon\f$ is a small value larger than 0. - * - * \param partialDeriv The vector storing the partial derivatives of all - * equations - * \param storageDeriv the mass matrix contributions - * \param col The block column index of the degree of freedom - * for which the partial derivative is calculated. - * Box: a sub-control volume index. - * Cell centered: a neighbor index. - * \param pvIdx The index of the primary variable - * for which the partial derivative is calculated - */ - void evalPartialDerivative_(ElementSolutionVector &partialDeriv, - PrimaryVariables &storageDeriv, - const int col, - const int pvIdx) - { - int dofIdxGlobal; - FVElementGeometry neighborFVGeom; - auto neighbor = this->element_(); - if (isBox) - { - dofIdxGlobal = this->vertexMapper_().subIndex(this->element_(), col, dim); - - } - else - { - neighbor = this->fvElemGeom_.neighbors[col]; - neighborFVGeom.updateInner(neighbor); - dofIdxGlobal = this->problemPtr_->elementMapper().index(neighbor); - - } - - PrimaryVariables priVars(this->model_().curSol()[dofIdxGlobal]); - VolumeVariables origVolVars(this->curVolVars_[col]); - - this->curVolVars_[col].setEvalPoint(&origVolVars); - Scalar eps = this->numericEpsilon(col, pvIdx); - Scalar delta = 0; - - if (this->numericDifferenceMethod_ >= 0) { - // we are not using backward differences, i.e. we need to - // calculate f(x + \epsilon) - - // deflect primary variables - priVars[pvIdx] += eps; - delta += eps; - - // calculate the residual - if (isBox){ - this->curVolVars_[col].update(priVars, - this->problem_(), - this->element_(), - this->fvElemGeom_, - col, - false); - // update the effective porosities - this->curVolVars_.updateEffPorosity(this->problem_(), - this->element_(), - this->fvElemGeom_); - } - else{ - this->curVolVars_[col].update(priVars, - this->problem_(), - neighbor, - neighborFVGeom, - /*scvIdx=*/0, - false); - // update the effective porosities - this->curVolVars_.updateEffPorosity(this->problem_(), - this->element_(), - this->fvElemGeom_); - } - - this->localResidual().eval(this->element_(), - this->fvElemGeom_, - this->prevVolVars_, - this->curVolVars_, - this->bcTypes_); - - // store the residual and the storage term - partialDeriv = this->localResidual().residual(); - if (isBox || col == 0) - storageDeriv = this->localResidual().storageTerm()[col]; - } - else { - // we are using backward differences, i.e. we don't need - // to calculate f(x + \epsilon) and we can recycle the - // (already calculated) residual f(x) - partialDeriv = this->residual_; - storageDeriv = this->storageTerm_[col]; - } - - - if (this->numericDifferenceMethod_ <= 0) { - // we are not using forward differences, i.e. we don't - // need to calculate f(x - \epsilon) - - // deflect the primary variables - priVars[pvIdx] -= delta + eps; - delta += eps; - - // calculate residual again - if (isBox){ - this->curVolVars_[col].update(priVars, - this->problem_(), - this->element_(), - this->fvElemGeom_, - col, - false); - // update the effective porosities - this->curVolVars_.updateEffPorosity(this->problem_(), - this->element_(), - this->fvElemGeom_); - } - else{ - this->curVolVars_[col].update(priVars, - this->problem_(), - neighbor, - neighborFVGeom, - /*scvIdx=*/0, - false); - // update the effective porosities - this->curVolVars_.updateEffPorosity(this->problem_(), - this->element_(), - this->fvElemGeom_); - } - - this->localResidual().eval(this->element_(), - this->fvElemGeom_, - this->prevVolVars_, - this->curVolVars_, - this->bcTypes_); - partialDeriv -= this->localResidual().residual(); - if (isBox || col == 0) - storageDeriv -= this->localResidual().storageTerm()[col]; - } - else { - // we are using forward differences, i.e. we don't need to - // calculate f(x - \epsilon) and we can recycle the - // (already calculated) residual f(x) - partialDeriv -= this->residual_; - if (isBox || col == 0) - storageDeriv -= this->storageTerm_[col]; - } - - // divide difference in residuals by the magnitude of the - // deflections between the two function evaluation - partialDeriv /= delta; - storageDeriv /= delta; - - // restore the original state of the element's volume variables - this->curVolVars_[col] = origVolVars; - // update the effective porosities - this->curVolVars_.updateEffPorosity(this->problem_(), - this->element_(), - this->fvElemGeom_); - -#if HAVE_VALGRIND - for (unsigned i = 0; i < partialDeriv.size(); ++i) - Valgrind::CheckDefined(partialDeriv[i]); -#endif - } -}; -} - -#endif diff --git a/dumux/geomechanics/el1p2c/localresidual.hh b/dumux/geomechanics/el1p2c/localresidual.hh deleted file mode 100644 index 2e2e7628784362e952c95e618be6c15dc33bdaff..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el1p2c/localresidual.hh +++ /dev/null @@ -1,388 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Element-wise calculation the local Jacobian for the linear elastic, - * single-phase, two-component model in the fully implicit scheme. - */ -#ifndef DUMUX_ELASTIC1P2C_LOCAL_RESIDUAL_HH -#define DUMUX_ELASTIC1P2C_LOCAL_RESIDUAL_HH - -#include "properties.hh" - -namespace Dumux -{ - /*! - * \ingroup ElOnePTwoCModel - * \ingroup ImplicitLocalResidual - * \brief Calculate the local Jacobian for a one-phase two-component - * flow in a linear-elastic porous medium. - * - * This class is used to fill the gaps in BoxLocalResidual for the - * one-phase two-component linear elasticity model. - */ - template<class TypeTag> - class ElOnePTwoCLocalResidual: public GET_PROP_TYPE(TypeTag, BaseLocalResidual) - { - protected: - typedef typename GET_PROP_TYPE(TypeTag, LocalResidual) Implementation; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - - enum { dim = GridView::dimension }; - typedef Dune::FieldMatrix<Scalar, dim, dim> DimMatrix; - typedef Dune::FieldVector<Scalar, dim> DimVector; - - typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) VolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, FluxVariables) FluxVariables; - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables) ElementVolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - - enum { - //phase index - phaseIdx = Indices::phaseIdx, - transportCompIdx = Indices::transportCompIdx - }; - // indices of the equations - enum { - conti0EqIdx = Indices::conti0EqIdx, - transportEqIdx = Indices::transportEqIdx - }; - - //! property that defines whether mole or mass fractions are used - static const bool useMoles = GET_PROP_VALUE(TypeTag, UseMoles); - - - public: - /*! - * \brief Constructor. Sets the upwind weight. - */ - ElOnePTwoCLocalResidual() - { - // retrieve the upwind weight for the mass conservation equations. Use the value - // specified via the property system as default, and overwrite - // it by the run-time parameter from the Dune::ParameterTree - upwindWeight_ = GET_PARAM_FROM_GROUP(TypeTag, Scalar, Implicit, MassUpwindWeight); - // retrieve the property which defines if the stabilization terms in the mass balance - // equations are switched on. Use the value specified via the property system as default, - // and overwrite it by the run-time parameter from the Dune::ParameterTree - withStabilization_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Implicit, WithStabilization); - }; - - /*! - * \brief Evaluate the amount of all conservation quantities - * (e.g. phase mass) within a finite volume. - * - * \param storage The mass of the component within the sub-control volume - * \param scvIdx The index of the considered face of the sub-control volume - * \param usePrevSol Evaluate function with solution of current or previous time step - */ - void computeStorage(PrimaryVariables &storage, int scvIdx, - bool usePrevSol) const - { - // if flag usePrevSol is set, the solution from the previous - // time step is used, otherwise the current solution is - // used. The secondary variables are used accordingly. This - // is required to compute the derivative of the storage term - // using the implicit euler method. - const ElementVolumeVariables &elemVolVars = usePrevSol ? this->prevVolVars_() : this->curVolVars_(); - const VolumeVariables &volVars = elemVolVars[scvIdx]; - - storage = 0; - // this model assumes incompressible fluids and solids only the bulk - // density i.e. the ratio of solid phase and pore fluid can vary - // storage term of continuity equation - storage[conti0EqIdx] += volVars.divU; - - if(useMoles) - { - // storage term of the transport equation - mole fractions - storage[transportEqIdx] += volVars.moleFraction(transportCompIdx) - * volVars.effPorosity; - } - else - { - //storage term of the transport equation - mass fractions - storage[transportEqIdx] += volVars.massFraction(transportCompIdx) - * volVars.effPorosity; - } - } - - /*! - * \brief Evaluate the mass flux over a face of a sub-control - * volume. - * - * \param flux The flux over the SCV (sub-control-volume) face for each component - * \param fIdx The index of the considered face of the sub control volume - * \param onBoundary A boolean variable to specify whether the flux variables - * are calculated for interior SCV faces or boundary faces, default=false - */ - void computeFlux(PrimaryVariables &flux, int fIdx, const bool onBoundary=false) const - { - flux = 0; - FluxVariables fluxVars; - fluxVars.update(this->problem_(), - this->element_(), - this->fvGeometry_(), - fIdx, - this->curVolVars_()); - - this->computeAdvectiveFlux(flux, fluxVars); - this->computeDiffusiveFlux(flux, fluxVars); - this->computeStresses(flux, fluxVars, fIdx); - } - - /*! - * \brief Evaluates the advective mass flux of all phases over - * a face of a subcontrol volume. - * - * \param flux The advective flux over the sub-control-volume face for each component - * \param fluxVars The flux variables at the current SCV - */ - void computeAdvectiveFlux(PrimaryVariables &flux, - const FluxVariables &fluxVars) const - { - //////// - // advective fluxes of all components in all phases - //////// - - // data attached to upstream and the downstream vertices - // of the current phase - const VolumeVariables &up = - this->curVolVars_(fluxVars.upstreamIdx()); - const VolumeVariables &dn = - this->curVolVars_(fluxVars.downstreamIdx()); - - // calculate the stabilization term which helps in case of stability problems - // e.g. observed for small time steps (according to G.Aguilar, F.Gaspar, F.Lisbona - // and C.Rodrigo (2008)) - Scalar stabilizationTerm(0.0); - if(withStabilization_){ - // calculate distance h between nodes i and j - const auto geometry = this->element_().geometry(); - DimVector hVec = geometry.corner(fluxVars.face().j) - - geometry.corner(fluxVars.face().i); - Scalar h = hVec.two_norm(); - stabilizationTerm = (h * h) / - (4 * (fluxVars.lambda() - + 2 * fluxVars.mu())); - - stabilizationTerm *= fluxVars.timeDerivGradPNormal(); - } - - - // flux for mass balance of the solid-fluid mixture - // KmvpNormal is the Darcy velocity multiplied with the normal vector, - // calculated in 1p2cfluxvariables.hh - flux[conti0EqIdx] += - fluxVars.KmvpNormal() * - (( upwindWeight_)/up.viscosity() - + - ((1 - upwindWeight_)/dn.viscosity())); - - - // stabilization term - if(withStabilization_) - flux[conti0EqIdx] -= stabilizationTerm; - - if(useMoles) - { - // mass flux of the dissolved second component - massfraction - // advective flux of the component - flux[transportEqIdx] += - fluxVars.KmvpNormal() * - (( upwindWeight_)* up.moleFraction(transportCompIdx)/up.viscosity() - + - (1 - upwindWeight_)* dn.moleFraction(transportCompIdx)/dn.viscosity()); - - // flux of the dissolved second component due to solid displacement - flux[transportEqIdx] += - fluxVars.timeDerivUNormal() * - (( upwindWeight_)* up.moleFraction(transportCompIdx) - * up.effPorosity - + - (1 - upwindWeight_)*dn.moleFraction(transportCompIdx) - * up.effPorosity); - - // stabilization term - if(withStabilization_) - flux[transportEqIdx] -= - stabilizationTerm * - (( upwindWeight_)* up.moleFraction(transportCompIdx) - + - (1 - upwindWeight_)*dn.moleFraction(transportCompIdx)); - } - else - { - // mass flux of the dissolved second component - massfraction - // advective flux of the component - flux[transportEqIdx] += - fluxVars.KmvpNormal() * - (( upwindWeight_)* up.massFraction(transportCompIdx)/up.viscosity() - + - (1 - upwindWeight_)* dn.massFraction(transportCompIdx)/dn.viscosity()); - - // flux of the dissolved second component due to solid displacement - flux[transportEqIdx] += - fluxVars.timeDerivUNormal() * - (( upwindWeight_)* up.massFraction(transportCompIdx) - * up.effPorosity - + - (1 - upwindWeight_)*dn.massFraction(transportCompIdx) - * up.effPorosity); - - // stabilization term - if(withStabilization_) - flux[transportEqIdx] -= - stabilizationTerm * - (( upwindWeight_)* up.massFraction(transportCompIdx) - + - (1 - upwindWeight_)*dn.massFraction(transportCompIdx)); - } - } - - /*! - * \brief Adds the diffusive mass flux of all components over - * a face of a sub-control volume. - * - * \param flux The diffusive flux over the sub-control-volume face for each component - * \param fluxVars The flux variables at the current sub-control-volume face - */ - void computeDiffusiveFlux(PrimaryVariables &flux, - const FluxVariables &fluxVars) const - { - Scalar tmp(0); - - // diffusive flux of second component - if(useMoles) - { - // diffusive flux of the second component - mole fraction - tmp = -(fluxVars.moleFractionGrad(transportCompIdx)*fluxVars.face().normal); - tmp *= fluxVars.diffCoeffPM(); - - // dispersive flux of second component - mole fraction - DimVector normalDisp; - fluxVars.dispersionTensor().mv(fluxVars.face().normal, normalDisp); - tmp -= (normalDisp * fluxVars.moleFractionGrad(transportCompIdx)); - - flux[transportEqIdx] += tmp; - } - else - { - // diffusive flux of the second component - mass fraction - tmp = -(fluxVars.moleFractionGrad(transportCompIdx)*fluxVars.face().normal); - tmp *= fluxVars.diffCoeffPM(); - - // dispersive flux of second component - mass fraction - DimVector normalDisp; - fluxVars.dispersionTensor().mv(fluxVars.face().normal, normalDisp); - tmp -= (normalDisp * fluxVars.moleFractionGrad(transportCompIdx)); - - // convert it to a mass flux and add it - flux[transportEqIdx] += tmp * FluidSystem::molarMass(transportCompIdx); - } - } - - /*! - * \brief Evaluates the total stress induced by effective stresses and fluid - * pressure in the solid fluid mixture. - * \param stress The stress over the sub-control-volume face for each component - * \param fluxVars The variables at the current sub-control-volume face - * \param fIdx The index of the current sub-control-volume face - */ - void computeStresses(PrimaryVariables &stress, - const FluxVariables &fluxVars, const int fIdx) const - { - DimMatrix pressure(0.0), sigma(0.0); - // the normal vector corresponding to the current sub-control-volume face - const DimVector &normal(this->fvGeometry_().subContVolFace[fIdx].normal); - - // the pressure term of the momentum balance - for (int i = 0; i < dim; ++i) - pressure[i][i] += 1.0; - - pressure *= fluxVars.pressure(); - // effective stresses - sigma = fluxVars.sigma(); - // calculate total stresses by subtracting the pressure - sigma -= pressure; - - DimVector tmp(0.0); - // multiply total stress tensor with normal vector of current face - sigma.mv(normal, tmp); - - // set the stress term equal to the calculated vector - for (int i = 0; i < dim; ++i) - stress[Indices::momentum(i)] = tmp[i]; - } - - /*! - * \brief Calculate the source term of the equation - * \param source The source/sink in the SCV for each component - * \param scvIdx The index of the vertex of the sub control volume - * - */ - void computeSource(PrimaryVariables &source, const int scvIdx) - { - source = 0; - - const ElementVolumeVariables &elemVolVars = this->curVolVars_(); - const VolumeVariables &volVars = elemVolVars[scvIdx]; - - DimVector tmp1(0.0), tmp2(0.0); - - this->problem_().solDependentSource(source, - this->element_(), - this->fvGeometry_(), - scvIdx, - this->curVolVars_()); - - // the gravity term of the momentum balance equation is treated as a source term - // gravity contribution of solid matrix - tmp1 = this->problem_().gravity(); - tmp1 *= volVars.rockDensity(); - tmp1 *= (1. - volVars.effPorosity); - - // gravity contribution of the fluids - tmp2 = this->problem_().gravity(); - tmp2 *= volVars.density(); - tmp2 *= volVars.effPorosity; - - tmp1 += tmp2; - - for (int i = 0; i < dim; ++i) - source[Indices::momentum(i)] += tmp1[i]; - } - - Implementation *asImp_() - { return static_cast<Implementation *> (this); } - const Implementation *asImp_() const - { return static_cast<const Implementation *> (this); } - - private: - Scalar upwindWeight_; - bool withStabilization_; - }; - -} - -#endif diff --git a/dumux/geomechanics/el1p2c/model.hh b/dumux/geomechanics/el1p2c/model.hh deleted file mode 100644 index a04dbe03a79f5dcb57671af90d24a64239c39d2d..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el1p2c/model.hh +++ /dev/null @@ -1,517 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Base class for all models which use the one-phase two-component linear elasticity model. - * Adaption of the fully implicit scheme to the one-phase two-component linear elasticity model. - */ -#ifndef DUMUX_ELASTIC1P2C_MODEL_HH -#define DUMUX_ELASTIC1P2C_MODEL_HH - -#include "properties.hh" -#include <dumux/common/eigenvalues.hh> - -namespace Dumux { -/*! - * \ingroup ElOnePTwoCBoxModel - * \brief Adaption of the fully implicit scheme to the one-phase two-component linear elasticity model. - * - * This model implements a one-phase flow of an incompressible fluid, that consists of two components. - * The deformation of the solid matrix is described with a quasi-stationary momentum balance equation. - * The influence of the pore fluid is accounted for through the effective stress concept (Biot 1941). - * The total stress acting on a rock is partially supported by the rock matrix and partially supported - * by the pore fluid. The effective stress represents the share of the total stress which is supported - * by the solid rock matrix and can be determined as a function of the strain according to Hooke's law. - * - * As an equation for the conservation of momentum within the fluid phase Darcy's approach is used: - \f[ - v = - \frac{\textbf K}{\mu} - \left(\textbf{grad}\, p - \varrho_w {\textbf g} \right) - \f] - * - * Gravity can be enabled or disabled via the property system. - * By inserting this into the volume balance of the solid-fluid mixture, one gets - \f[ - \frac{\partial \text{div} \textbf{u}}{\partial t} - \text{div} \left\{ - \frac{\textbf K}{\mu} \left(\textbf{grad}\, p - \varrho_w {\textbf g} \right)\right\} = q \;, - \f] - * - * The transport of the components \f$\kappa \in \{ w, a \}\f$ is described by the following equation: - \f[ - \frac{ \partial \phi_{eff} X^\kappa}{\partial t} - - \text{div} \left\lbrace - X^\kappa \frac{{\textbf K}}{\mu} \left( \textbf{grad}\, p - \varrho_w {\textbf g} \right) - + D^\kappa_\text{pm} \frac{M^\kappa}{M_\alpha} \textbf{grad} x^\kappa - - \phi_{eff} X^\kappa \frac{\partial \boldsymbol{u}}{\partial t} - \right\rbrace = q. - \f] - * - * If the model encounters stability problems, a stabilization term can be switched on. The stabilization - * term is defined in Aguilar et al (2008): - \f[ - \beta \text{div} \textbf{grad} \frac{\partial p}{\partial t} - \f] - with \f$\beta\f$: - \f[ - \beta = h^2 / 4(\lambda + 2 \mu) - \f] - * where \f$h\f$ is the discretization length. - * - * The balance equations - * with the stabilization term are given below: - \f[ - \frac{\partial \text{div} \textbf{u}}{\partial t} - \text{div} \left\{ - \frac{\textbf K}{\mu} \left(\textbf{grad}\, p - \varrho_w {\textbf g} \right) - + \varrho_w \beta \textbf{grad} \frac{\partial p}{\partial t} - \right\} = q \;, - \f] - * - * The transport of the components \f$\kappa \in \{ w, a \}\f$ is described by the following equation: - * - \f[ - \frac{ \partial \phi_{eff} X^\kappa}{\partial t} - - \text{div} \left\lbrace - X^\kappa \frac{{\textbf K}}{\mu} \left( \textbf{grad}\, p - \varrho_w {\textbf g} \right) - + \varrho_w X^\kappa \beta \textbf{grad} \frac{\partial p}{\partial t} - + D^\kappa_\text{pm} \frac{M^\kappa}{M_\alpha} \textbf{grad} x^\kappa - - \phi_{eff} X^\kappa \frac{\partial \boldsymbol{u}}{\partial t} - \right\rbrace = q. - \f] - * - * - * The quasi-stationary momentum balance equation is: - \f[ - \text{div}\left( \boldsymbol{\sigma'}- p \boldsymbol{I} \right) + \left( \phi_{eff} \varrho_w + (1 - \phi_{eff}) * \varrho_s \right) - {\textbf g} = 0 \;, - \f] - * with the effective stress: - \f[ - \boldsymbol{\sigma'} = 2\,G\,\boldsymbol{\epsilon} + \lambda \,\text{tr} (\boldsymbol{\epsilon}) \, \boldsymbol{I}. - \f] - * - * and the strain tensor \f$\boldsymbol{\epsilon}\f$ as a function of the solid displacement gradient \f$\textbf{grad} \boldsymbol{u}\f$: - \f[ - \boldsymbol{\epsilon} = \frac{1}{2} \, (\textbf{grad} \boldsymbol{u} + \textbf{grad}^T \boldsymbol{u}). - \f] - * - * Here, the rock mechanics sign convention is switch off which means compressive stresses are < 0 and tensile stresses are > 0. - * The rock mechanics sign convention can be switched on for the vtk output via the property system. - * - * The effective porosity is calculated as a function of the solid displacement: - \f[ - \phi_{eff} = \frac{\phi_{init} + \text{div} \boldsymbol{u}}{1 + \text{div}} - \f] - * All equations are discretized using a vertex-centered finite volume (box) - * or cell-centered finite volume scheme as spatial - * and the implicit Euler method as time discretization. - * - * The primary variables are the pressure \f$p\f$ and the mole or mass fraction of dissolved component \f$x\f$ and the solid - * displacement vector \f$\boldsymbol{u}\f$. - */ - - -template<class TypeTag> -class ElOnePTwoCModel: public GET_PROP_TYPE(TypeTag, BaseModel) -{ - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, FluxVariables) FluxVariables; - typedef typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables) ElementVolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes) ElementBoundaryTypes; - typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; - - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - - enum { - dim = GridView::dimension - }; - - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef Dune::FieldVector<Scalar, dim> DimVector; - typedef Dune::FieldMatrix<Scalar, dim, dim> DimMatrix; - -public: - /*! - * \brief \copybrief ImplicitModel::addOutputVtkFields - * - * Specialization for the ElOnePTwoCBoxModel, add one-phase two-component - * properties, solid displacement, stresses, effective properties and the - * process rank to the VTK writer. - */ - template<class MultiWriter> - void addOutputVtkFields(const SolutionVector &sol, MultiWriter &writer) { - - // check whether compressive stresses are defined to be positive - // (rockMechanicsSignConvention_ == true) or negative - rockMechanicsSignConvention_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, RockMechanicsSignConvention); - - typedef Dune::BlockVector<Dune::FieldVector<Scalar, 1> > ScalarField; - typedef Dune::BlockVector<Dune::FieldVector<Scalar, dim> > VectorField; - - // create the required scalar and vector fields - unsigned numVertices = this->gridView_().size(dim); - unsigned numElements = this->gridView_().size(0); - - // create the required fields for vertex data - ScalarField &pressure = *writer.allocateManagedBuffer(numVertices); - ScalarField &moleFraction0 = *writer.allocateManagedBuffer(numVertices); - ScalarField &moleFraction1 = *writer.allocateManagedBuffer(numVertices); - ScalarField &massFraction0 = *writer.allocateManagedBuffer(numVertices); - ScalarField &massFraction1 = *writer.allocateManagedBuffer(numVertices); - VectorField &displacement = *writer.template allocateManagedBuffer<Scalar, dim>(numVertices); - ScalarField &density = *writer.allocateManagedBuffer(numVertices); - ScalarField &viscosity = *writer.allocateManagedBuffer(numVertices); - ScalarField &porosity = *writer.allocateManagedBuffer(numVertices); - ScalarField &Kx = *writer.allocateManagedBuffer(numVertices); - - // create the required fields for element data - // effective stresses - VectorField &effStressX = *writer.template allocateManagedBuffer<Scalar, - dim>(numElements); - VectorField &effStressY = *writer.template allocateManagedBuffer<Scalar, - dim>(numElements); - VectorField &effStressZ = *writer.template allocateManagedBuffer<Scalar, - dim>(numElements); - // total stresses - VectorField &totalStressX = *writer.template allocateManagedBuffer< - Scalar, dim>(numElements); - VectorField &totalStressY = *writer.template allocateManagedBuffer< - Scalar, dim>(numElements); - VectorField &totalStressZ = *writer.template allocateManagedBuffer< - Scalar, dim>(numElements); - - // principal stresses - ScalarField &principalStress1 = *writer.allocateManagedBuffer( - numElements); - ScalarField &principalStress2 = *writer.allocateManagedBuffer( - numElements); - ScalarField &principalStress3 = *writer.allocateManagedBuffer( - numElements); - - ScalarField &effPorosity = *writer.allocateManagedBuffer(numElements); - ScalarField &cellPorosity = *writer.allocateManagedBuffer(numElements); - ScalarField &cellKx = *writer.allocateManagedBuffer(numElements); - ScalarField &cellPressure = *writer.allocateManagedBuffer(numElements); - - // initialize cell stresses, cell-wise hydraulic parameters and cell pressure with zero - for (unsigned int eIdx = 0; eIdx < numElements; ++eIdx) { - effStressX[eIdx] = Scalar(0.0); - if (dim >= 2) - effStressY[eIdx] = Scalar(0.0); - if (dim >= 3) - effStressZ[eIdx] = Scalar(0.0); - - totalStressX[eIdx] = Scalar(0.0); - if (dim >= 2) - totalStressY[eIdx] = Scalar(0.0); - if (dim >= 3) - totalStressZ[eIdx] = Scalar(0.0); - - principalStress1[eIdx] = Scalar(0.0); - if (dim >= 2) - principalStress2[eIdx] = Scalar(0.0); - if (dim >= 3) - principalStress3[eIdx] = Scalar(0.0); - - effPorosity[eIdx] = Scalar(0.0); - cellPorosity[eIdx] = Scalar(0.0); - cellKx[eIdx] = Scalar(0.0); - cellPressure[eIdx] = Scalar(0.0); - } - ScalarField &rank = *writer.allocateManagedBuffer(numElements); - - - FVElementGeometry fvGeometry; - ElementVolumeVariables elemVolVars; - ElementBoundaryTypes elemBcTypes; - - // initialize start and end of element iterator - // loop over all elements (cells) - for (const auto& element : elements(this->gridView_(), Dune::Partitions::interior)) - { - unsigned int eIdx = this->problem_().model().elementMapper().index(element); - rank[eIdx] = this->gridView_().comm().rank(); - - fvGeometry.update(this->gridView_(), element); - elemBcTypes.update(this->problem_(), element, fvGeometry); - elemVolVars.update(this->problem_(), element, fvGeometry, false); - - // loop over all local vertices of the cell - int numScv = element.subEntities(dim); - - for (int scvIdx = 0; scvIdx < numScv; ++scvIdx) - { - unsigned int vIdxGlobal = this->dofMapper().subIndex(element, scvIdx, dim); - - pressure[vIdxGlobal] = elemVolVars[scvIdx].pressure(); - moleFraction0[vIdxGlobal] = elemVolVars[scvIdx].moleFraction(0); - moleFraction1[vIdxGlobal] = elemVolVars[scvIdx].moleFraction(1); - massFraction0[vIdxGlobal] = elemVolVars[scvIdx].massFraction(0); - massFraction1[vIdxGlobal] = elemVolVars[scvIdx].massFraction(1); - // in case of rock mechanics sign convention solid displacement is - // defined to be negative if it points in positive coordinate direction - if(rockMechanicsSignConvention_){ - DimVector tmpDispl; - tmpDispl = Scalar(0); - tmpDispl -= elemVolVars[scvIdx].displacement(); - displacement[vIdxGlobal] = tmpDispl; - } - - else - displacement[vIdxGlobal] = elemVolVars[scvIdx].displacement(); - - density[vIdxGlobal] = elemVolVars[scvIdx].density(); - viscosity[vIdxGlobal] = elemVolVars[scvIdx].viscosity(); - porosity[vIdxGlobal] = elemVolVars[scvIdx].porosity(); - Kx[vIdxGlobal] = this->problem_().spatialParams().intrinsicPermeability( - element, fvGeometry, scvIdx)[0][0]; - // calculate cell quantities by adding up scv quantities and dividing through numScv - cellPorosity[eIdx] += elemVolVars[scvIdx].porosity() / numScv; - cellKx[eIdx] += this->problem_().spatialParams().intrinsicPermeability( - element, fvGeometry, scvIdx)[0][0] / numScv; - cellPressure[eIdx] += elemVolVars[scvIdx].pressure() / numScv; - }; - - // calculate cell quantities for variables which are defined at the integration point - Scalar tmpEffPoro; - DimMatrix tmpEffStress; - tmpEffStress = Scalar(0); - tmpEffPoro = Scalar(0); - - // loop over all scv-faces of the cell - for (int fIdx = 0; fIdx < fvGeometry.numScvf; fIdx++) { - - //prepare the flux calculations (set up and prepare geometry, FE gradients) - FluxVariables fluxVars; - fluxVars.update(this->problem_(), - element, fvGeometry, - fIdx, - elemVolVars); - - // divide by number of scv-faces and sum up edge values - tmpEffPoro = fluxVars.effPorosity() / fvGeometry.numScvf; - tmpEffStress = fluxVars.sigma(); - tmpEffStress /= fvGeometry.numScvf; - - effPorosity[eIdx] += tmpEffPoro; - - // in case of rock mechanics sign convention compressive stresses - // are defined to be positive - if(rockMechanicsSignConvention_){ - effStressX[eIdx] -= tmpEffStress[0]; - if (dim >= 2) { - effStressY[eIdx] -= tmpEffStress[1]; - } - if (dim >= 3) { - effStressZ[eIdx] -= tmpEffStress[2]; - } - } - else{ - effStressX[eIdx] += tmpEffStress[0]; - if (dim >= 2) { - effStressY[eIdx] += tmpEffStress[1]; - } - if (dim >= 3) { - effStressZ[eIdx] += tmpEffStress[2]; - } - } - } - - // calculate total stresses - // in case of rock mechanics sign convention compressive stresses - // are defined to be positive and total stress is calculated by adding the pore pressure - if(rockMechanicsSignConvention_){ - totalStressX[eIdx][0] = effStressX[eIdx][0] + cellPressure[eIdx]; - totalStressX[eIdx][1] = effStressX[eIdx][1]; - totalStressX[eIdx][2] = effStressX[eIdx][2]; - if (dim >= 2) { - totalStressY[eIdx][0] = effStressY[eIdx][0]; - totalStressY[eIdx][1] = effStressY[eIdx][1] + cellPressure[eIdx]; - totalStressY[eIdx][2] = effStressY[eIdx][2]; - } - if (dim >= 3) { - totalStressZ[eIdx][0] = effStressZ[eIdx][0]; - totalStressZ[eIdx][1] = effStressZ[eIdx][1]; - totalStressZ[eIdx][2] = effStressZ[eIdx][2] + cellPressure[eIdx]; - } - } - else{ - totalStressX[eIdx][0] = effStressX[eIdx][0] - cellPressure[eIdx]; - totalStressX[eIdx][1] = effStressX[eIdx][1]; - totalStressX[eIdx][2] = effStressX[eIdx][2]; - if (dim >= 2) { - totalStressY[eIdx][0] = effStressY[eIdx][0]; - totalStressY[eIdx][1] = effStressY[eIdx][1] - cellPressure[eIdx]; - totalStressY[eIdx][2] = effStressY[eIdx][2]; - } - if (dim >= 3) { - totalStressZ[eIdx][0] = effStressZ[eIdx][0]; - totalStressZ[eIdx][1] = effStressZ[eIdx][1]; - totalStressZ[eIdx][2] = effStressZ[eIdx][2] - cellPressure[eIdx]; - } - } - } - - // calculate principal stresses i.e. the eigenvalues of the total stress tensor - Scalar a1, a2, a3; - DimMatrix totalStress; - DimVector eigenValues; - a1=Scalar(0); - a2=Scalar(0); - a3=Scalar(0); - - for (unsigned int eIdx = 0; eIdx < numElements; eIdx++) - { - eigenValues = Scalar(0); - totalStress = Scalar(0); - - totalStress[0] = totalStressX[eIdx]; - if (dim >= 2) - totalStress[1] = totalStressY[eIdx]; - if (dim >= 3) - totalStress[2] = totalStressZ[eIdx]; - - calculateEigenValues<dim>(eigenValues, totalStress); - - - for (int i = 0; i < dim; i++) - { - if (std::isnan(eigenValues[i])) - eigenValues[i] = 0.0; - } - - // sort principal stresses: principalStress1 >= principalStress2 >= principalStress3 - if (dim == 2) { - a1 = eigenValues[0]; - a2 = eigenValues[1]; - - if (a1 >= a2) { - principalStress1[eIdx] = a1; - principalStress2[eIdx] = a2; - } else { - principalStress1[eIdx] = a2; - principalStress2[eIdx] = a1; - } - } - - if (dim == 3) { - a1 = eigenValues[0]; - a2 = eigenValues[1]; - a3 = eigenValues[2]; - - if (a1 >= a2) { - if (a1 >= a3) { - principalStress1[eIdx] = a1; - if (a2 >= a3) { - principalStress2[eIdx] = a2; - principalStress3[eIdx] = a3; - } - else //a3 > a2 - { - principalStress2[eIdx] = a3; - principalStress3[eIdx] = a2; - } - } - else // a3 > a1 - { - principalStress1[eIdx] = a3; - principalStress2[eIdx] = a1; - principalStress3[eIdx] = a2; - } - } else // a2>a1 - { - if (a2 >= a3) { - principalStress1[eIdx] = a2; - if (a1 >= a3) { - principalStress2[eIdx] = a1; - principalStress3[eIdx] = a3; - } - else //a3>a1 - { - principalStress2[eIdx] = a3; - principalStress3[eIdx] = a1; - } - } - else //a3>a2 - { - principalStress1[eIdx] = a3; - principalStress2[eIdx] = a2; - principalStress3[eIdx] = a1; - } - } - } - - } - - writer.attachVertexData(pressure, "P"); - - char nameMoleFraction0[42], nameMoleFraction1[42]; - snprintf(nameMoleFraction0, 42, "x_%s", FluidSystem::componentName(0)); - snprintf(nameMoleFraction1, 42, "x_%s", FluidSystem::componentName(1)); - writer.attachVertexData(moleFraction0, nameMoleFraction0); - writer.attachVertexData(moleFraction1, nameMoleFraction1); - - char nameMassFraction0[42], nameMassFraction1[42]; - snprintf(nameMassFraction0, 42, "X_%s", FluidSystem::componentName(0)); - snprintf(nameMassFraction1, 42, "X_%s", FluidSystem::componentName(1)); - writer.attachVertexData(massFraction0, nameMassFraction0); - writer.attachVertexData(massFraction1, nameMassFraction1); - - writer.attachVertexData(displacement, "u", dim); - writer.attachVertexData(density, "rho"); - writer.attachVertexData(viscosity, "mu"); - writer.attachVertexData(porosity, "porosity"); - writer.attachVertexData(Kx, "Kx"); - writer.attachCellData(cellPorosity, "porosity"); - writer.attachCellData(cellKx, "Kx"); - writer.attachCellData(effPorosity, "effective porosity"); - - writer.attachCellData(totalStressX, "total stresses X", dim); - if (dim >= 2) - writer.attachCellData(totalStressY, "total stresses Y", dim); - if (dim >= 3) - writer.attachCellData(totalStressZ, "total stresses Z", dim); - - writer.attachCellData(effStressX, "effective stress changes X", dim); - if (dim >= 2) - writer.attachCellData(effStressY, "effective stress changes Y", dim); - if (dim >= 3) - writer.attachCellData(effStressZ, "effective stress changes Z", dim); - - writer.attachCellData(principalStress1, "principal stress 1"); - if (dim >= 2) - writer.attachCellData(principalStress2, "principal stress 2"); - if (dim >= 3) - writer.attachCellData(principalStress3, "principal stress 3"); - - writer.attachCellData(cellPressure, "P"); - - writer.attachCellData(rank, "rank"); - - } -private: - bool rockMechanicsSignConvention_; - -}; -} -#include "propertydefaults.hh" -#endif diff --git a/dumux/geomechanics/el1p2c/properties.hh b/dumux/geomechanics/el1p2c/properties.hh deleted file mode 100644 index 66970504124e9932b7cca2a646b6cde3e98de288..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el1p2c/properties.hh +++ /dev/null @@ -1,62 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \ingroup Properties - * \ingroup ImplicitProperties - * \ingroup ElOnePTwoCBoxModel - * \file - * - * \brief Defines the properties required for the one-phase two-component - * linear elasticity model. - * - * This class inherits from the properties of the one-phase two-component model and - * from the properties of the linear elasticity model - */ - -#ifndef DUMUX_ELASTIC1P2C_PROPERTIES_HH -#define DUMUX_ELASTIC1P2C_PROPERTIES_HH - -#include <dumux/porousmediumflow/1p2c/implicit/properties.hh> -#include <dumux/geomechanics/elastic/properties.hh> - - -namespace Dumux -{ -// \{ -namespace Properties -{ -////////////////////////////////////////////////////////////////// -// Type tags -////////////////////////////////////////////////////////////////// - -//! The type tag for the single-phase, two-component linear elasticity problems -NEW_TYPE_TAG(BoxElasticOnePTwoC, INHERITS_FROM(BoxModel)); - -////////////////////////////////////////////////////////////////// -// Property tags -////////////////////////////////////////////////////////////////// -//! Returns whether the stabilization terms are included in the balance equations -NEW_PROP_TAG(ImplicitWithStabilization); -//! Returns whether the output should be written according to rock mechanics sign convention (compressive stresses > 0) -NEW_PROP_TAG(VtkRockMechanicsSignConvention); -} -// \} -} - -#endif diff --git a/dumux/geomechanics/el1p2c/propertydefaults.hh b/dumux/geomechanics/el1p2c/propertydefaults.hh deleted file mode 100644 index 373a2fe316b3bfa33d6c36ffccb6d2d80f5f5de8..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el1p2c/propertydefaults.hh +++ /dev/null @@ -1,128 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \ingroup Properties - * \ingroup ImplicitProperties - * \ingroup ElOnePTwoCBoxModel - * \file - * - * \brief Defines the properties required for the one-phase two-component - * linear-elastic model. - * - * This class inherits from the properties of the one-phase two-component model and - * from the properties of the simple linear-elastic model - */ - -#ifndef DUMUX_ELASTIC1P2C_PROPERTY_DEFAULTS_HH -#define DUMUX_ELASTIC1P2C_PROPERTY_DEFAULTS_HH - -#include "properties.hh" - -#include "model.hh" -#include "localresidual.hh" -#include "localjacobian.hh" -#include "fluxvariables.hh" -#include "elementvolumevariables.hh" -#include "volumevariables.hh" -#include "indices.hh" -#include <dumux/material/fluidmatrixinteractions/diffusivitymillingtonquirk.hh> -#include <dumux/material/fluidstates/compositional.hh> - - -namespace Dumux -{ -// \{ -namespace Properties -{ -////////////////////////////////////////////////////////////////// -// Property defaults -////////////////////////////////////////////////////////////////// -//!< set the number of equations to the space dimension of the problem -SET_PROP(BoxElasticOnePTwoC, NumEq) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - enum{dim = GridView::dimension}; -public: - static const int value = dim + 2; -}; - -SET_INT_PROP(BoxElasticOnePTwoC, NumPhases, 1); //!< The number of phases in the 1p2c model is 1 -SET_INT_PROP(BoxElasticOnePTwoC, NumComponents, 2); //!< The number of components in the 1p2c model is 2 - -//! Use the linear elasticity local residual function for the elasticity model -SET_TYPE_PROP(BoxElasticOnePTwoC, - LocalResidual, - ElOnePTwoCLocalResidual<TypeTag>); - -//! Use the linear elasticity local residual function for the elasticity model -SET_TYPE_PROP(BoxElasticOnePTwoC, - LocalJacobian, - ElOnePTwoCLocalJacobian<TypeTag>); - -//! define the model -SET_TYPE_PROP(BoxElasticOnePTwoC, Model, ElOnePTwoCModel<TypeTag>); - -//! define the ElementVolumeVariables -SET_TYPE_PROP(BoxElasticOnePTwoC, ElementVolumeVariables, ElOnePTwoCElementVolumeVariables<TypeTag>); - -//! define the VolumeVariables -SET_TYPE_PROP(BoxElasticOnePTwoC, VolumeVariables, ElOnePTwoCVolumeVariables<TypeTag>); - -//! define the FluxVariables -SET_TYPE_PROP(BoxElasticOnePTwoC, FluxVariables, ElOnePTwoCFluxVariables<TypeTag>); - -//! Set the indices used by the linear elasticity model -SET_TYPE_PROP(BoxElasticOnePTwoC, Indices, ElOnePTwoCIndices<TypeTag>); - -//! Set the phaseIndex per default to zero (important for two-phase fluidsystems). -SET_INT_PROP(BoxElasticOnePTwoC, PhaseIdx, 0); - -SET_PROP(BoxElasticOnePTwoC, FluidState){ - private: - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - public: - typedef CompositionalFluidState<Scalar, FluidSystem> type; -}; - -//! set default upwind weights to 1.0, i.e. fully upwind -SET_SCALAR_PROP(BoxElasticOnePTwoC, ImplicitMassUpwindWeight, 1.0); -SET_SCALAR_PROP(BoxElasticOnePTwoC, ImplicitMobilityUpwindWeight, 1.0); - -// enable gravity by default -SET_BOOL_PROP(BoxElasticOnePTwoC, ProblemEnableGravity, true); - -// enable gravity by default -SET_BOOL_PROP(BoxElasticOnePTwoC, ImplicitWithStabilization, true); - -//! The model after Millington (1961) is used for the effective diffusivity -SET_PROP(BoxElasticOnePTwoC, EffectiveDiffusivityModel) -{ private : - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - public: - typedef DiffusivityMillingtonQuirk<Scalar> type; -}; - -// write the stress and displacement output according to rock mechanics sign convention (compressive stresses > 0) -SET_BOOL_PROP(BoxElasticOnePTwoC, VtkRockMechanicsSignConvention, false); -} -} - -#endif diff --git a/dumux/geomechanics/el1p2c/volumevariables.hh b/dumux/geomechanics/el1p2c/volumevariables.hh deleted file mode 100644 index f3773ece1077e80e287c82abb0b639c712e7a36c..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el1p2c/volumevariables.hh +++ /dev/null @@ -1,205 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Quantities required by the single-phase, two-component - * linear elasticity model which are defined on a vertex. - */ -#ifndef DUMUX_ELASTIC1P2C_VOLUME_VARIABLES_HH -#define DUMUX_ELASTIC1P2C_VOLUME_VARIABLES_HH - - -#include <dumux/porousmediumflow/1p2c/implicit/volumevariables.hh> -#include <dumux/implicit/volumevariables.hh> - -#include "properties.hh" - -namespace Dumux { -/*! - * \ingroup ElOnePTwoCBoxModel - * \ingroup ImplicitVolumeVariables - * \brief Contains the quantities which are constant within a - * finite volume in the single-phase, two-component, linear elasticity model. - * - * This class inherits from the volumevariables of the one-phase - * two-component model - */ -template<class TypeTag> -class ElOnePTwoCVolumeVariables : public OnePTwoCVolumeVariables<TypeTag>{ - - typedef OnePTwoCVolumeVariables<TypeTag> ParentType; - - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) Implementation; - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GridView::template Codim<0>::Entity Element; - - enum { dim = GridView::dimension }; - - enum { phaseIdx = GET_PROP_VALUE(TypeTag, PhaseIdx) }; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef Dune::FieldVector<Scalar,dim> DimVector; - -public: - /*! - * \copydoc ImplicitVolumeVariables::update - */ - void update(const PrimaryVariables &priVars, - const Problem &problem, - const Element &element, - const FVElementGeometry &fvGeometry, - int scvIdx, - bool isOldSol) - { - - ParentType::update(priVars, problem, element, fvGeometry, scvIdx, isOldSol); - int vIdxGlobal = problem.vertexMapper().subIndex(element, scvIdx, dim); - - primaryVars_ = priVars; - prevPrimaryVars_ = problem.model().prevSol()[vIdxGlobal]; - - ParentType prev1p2cVolVars; - prev1p2cVolVars.update(problem.model().prevSol()[vIdxGlobal], - problem, - element, - fvGeometry, - scvIdx, - true); - - dPressure_ = this->pressure() - prev1p2cVolVars.pressure(); - - for (int i = 0; i < dim; ++i){ - displacement_[i] = primaryVars_[Indices::u(i)]; - prevDisplacement_[i] = prevPrimaryVars_[Indices::u(i)]; - } - - dU_ = displacement_ - prevDisplacement_; - - const Dune::FieldVector<Scalar, 2> &lameParams = - problem.spatialParams().lameParams(element, fvGeometry, scvIdx); - - lambda_ = lameParams[0]; - mu_ = lameParams[1]; - - rockDensity_ = problem.spatialParams().rockDensity(element, scvIdx); - } - - /*! - * \brief Return the vector of primary variables - */ - const PrimaryVariables &primaryVars() const - { return primaryVars_; } - - /*! - * \brief Sets the evaluation point used in the by the local jacobian. - */ - void setEvalPoint(const Implementation *ep) - { } - - /*! - * \brief Return the Lame parameter lambda \f$\mathrm{[Pa]}\f$ within the control volume. - */ - Scalar lambda() const - { return lambda_; } - - /*! - * \brief Return the Lame parameter mu \f$\mathrm{[Pa]}\f$ within the control volume. - */ - Scalar mu() const - { return mu_; } - - /*! - * \brief Returns the rock density \f$\mathrm{[kg / m^3]}\f$ within the control volume . - */ - Scalar rockDensity() const - { return rockDensity_; } - - /*! - * \brief Returns the change in solid displacement \f$\mathrm{[m]}\f$ between - * the last and the current timestep for the space direction dimIdx within the control volume. - */ - Scalar dU(int dimIdx) const - { return dU_[dimIdx]; } - - /*! - * \brief Returns the change in pressure \f$\mathrm{[Pa]}\f$ between the last and the - * current timestep within the control volume. - */ - Scalar dPressure() const - { return dPressure_; } - - /*! - * \brief Returns the solid displacement \f$\mathrm{[m]}\f$ in space - * directions dimIdx within the control volume. - */ - Scalar displacement(int dimIdx) const - { return displacement_[dimIdx]; } - - /*! - * \brief Returns the solid displacement vector \f$\mathrm{[m]}\f$ - * within the control volume. - */ - const DimVector &displacement() const - { return displacement_; } - - - /*! - * \brief the effective porosity and volumetric strain divU is defined as mutable variable here since it - * is updated within the elementVolumeVariables. - */ - mutable Scalar effPorosity; - mutable Scalar divU; - - /*! - * \brief Returns the mass fraction of a given component in the - * given fluid phase within the control volume. - * - * \param compIdx The component index - */ - Scalar massFraction(const int compIdx) const - { return this->fluidState_.massFraction(phaseIdx, compIdx); } - - /*! - * \brief Returns the mole fraction of a given component in the - * given fluid phase within the control volume. - * - * \param compIdx The component index - */ - Scalar moleFraction(const int compIdx) const - { return this->fluidState_.moleFraction(phaseIdx, compIdx); } - -protected: - PrimaryVariables primaryVars_, prevPrimaryVars_; - DimVector displacement_, prevDisplacement_; - DimVector dU_; - Scalar dPressure_; - Scalar lambda_; - Scalar mu_; - Scalar rockDensity_; -}; - -} - -#endif diff --git a/dumux/geomechanics/el2p/CMakeLists.txt b/dumux/geomechanics/el2p/CMakeLists.txt deleted file mode 100644 index ab8c45b2f6cef4a4c01bb847084eb43e93e82bd9..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el2p/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ - -#install headers -install(FILES -amgbackend.hh -assembler.hh -basemodel.hh -elementvolumevariables.hh -fluxvariables.hh -indices.hh -localjacobian.hh -localoperator.hh -localresidual.hh -model.hh -newtoncontroller.hh -properties.hh -propertydefaults.hh -volumevariables.hh -DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/geomechanics/el2p) diff --git a/dumux/geomechanics/el2p/amgbackend.hh b/dumux/geomechanics/el2p/amgbackend.hh deleted file mode 100644 index bef3c01da03396c5aef81cf7d576ac389b96666b..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el2p/amgbackend.hh +++ /dev/null @@ -1,235 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \ingroup Linear - * - * \brief Wraps the AMG backend such that it can be used for the el2p model. - */ -#ifndef DUMUX_EL2P_AMGBACKEND_HH -#define DUMUX_EL2P_AMGBACKEND_HH - -#include <dumux/linear/amgbackend.hh> - -namespace Dumux { - -/*! - * \brief Base class for the ElTwoP AMGBackend. - */ -template <class TypeTag, bool isParallel> -class El2PAMGBackendBase : public AMGBackend<TypeTag> -{ - typedef AMGBackend<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - -public: - /*! - * \copydoc AMGBackend::AMGBackend() - */ - El2PAMGBackendBase(const Problem& problem) - : ParentType(problem) - {} -}; - -/*! - * \brief Specialization for the parallel setting. - */ -template <class TypeTag> -class El2PAMGBackendBase<TypeTag, true> : public AMGBackend<TypeTag> -{ - typedef AMGBackend<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - enum { numEq = GET_PROP_VALUE(TypeTag, NumEq) }; - typedef typename Dune::FieldMatrix<Scalar, numEq, numEq> MatrixBlock; - typedef typename Dune::BCRSMatrix<MatrixBlock> BlockMatrix; - typedef typename Dune::FieldVector<Scalar, numEq> VectorBlock; - typedef typename Dune::BlockVector<VectorBlock> BlockVector; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - enum { dim = GridView::dimension }; - -public: - /*! - * \copydoc AMGBackend::AMGBackend() - */ - El2PAMGBackendBase(const Problem& problem) - : ParentType(problem) - { - createBlockMatrixAndVectors_(); - } - - /*! - * \copydoc AMGBackend::solve() - */ - template<class Matrix, class Vector> - bool solve(Matrix& A, Vector& x, Vector& b) - { - flatToBlocked_(A, x, b); - int converged = ParentType::solve(*aBlocked_, *xBlocked_, *bBlocked_); - blockedToFlat_(x, b); - return converged; - } - -private: - void createBlockMatrixAndVectors_() - { - int numVertices = this->problem().gridView().size(dim); - - aBlocked_ = std::make_shared<BlockMatrix>(numVertices, numVertices, BlockMatrix::random); - xBlocked_ = std::make_shared<BlockVector>(numVertices); - bBlocked_ = std::make_shared<BlockVector>(numVertices); - - // find out the global indices of the neighboring vertices of - // each vertex - typedef std::set<int> NeighborSet; - std::vector<NeighborSet> neighbors(numVertices); - for (const auto& element : elements(this->problem().gridView())) { - - // loop over all element vertices - int n = element.subEntities(dim); - for (int i = 0; i < n - 1; ++i) { - int globalI = this->problem().vertexMapper().subIndex(element, i, dim); - for (int j = i + 1; j < n; ++j) { - int globalJ = this->problem().vertexMapper().subIndex(element, j, dim); - // make sure that vertex j is in the neighbor set - // of vertex i and vice-versa - neighbors[globalI].insert(globalJ); - neighbors[globalJ].insert(globalI); - } - } - } - - // make vertices neighbors to themselfs - for (int i = 0; i < numVertices; ++i) - neighbors[i].insert(i); - - // allocate space for the rows of the matrix - for (int i = 0; i < numVertices; ++i) { - aBlocked_->setrowsize(i, neighbors[i].size()); - } - aBlocked_->endrowsizes(); - - // fill the rows with indices. each vertex talks to all of its - // neighbors. (it also talks to itself since vertices are - // sometimes quite egocentric.) - for (int i = 0; i < numVertices; ++i) { - auto nIt = neighbors[i].begin(); - const auto& nEndIt = neighbors[i].end(); - for (; nIt != nEndIt; ++nIt) { - aBlocked_->addindex(i, *nIt); - } - } - aBlocked_->endindices(); - } - - template <class FlatMatrix, class FlatVector> - void flatToBlocked_(const FlatMatrix& aFlat, - const FlatVector& xFlat, - const FlatVector& bFlat) - { - unsigned numBlocks = xBlocked_->size(); - static const unsigned numMassEq = numEq - dim; - for (unsigned rowBlockIdx = 0; rowBlockIdx < numBlocks; ++rowBlockIdx) - { - for (unsigned rowEqIdx = 0; rowEqIdx < numEq; ++rowEqIdx) - { - unsigned rowFlatIdx; - if (rowEqIdx < numMassEq) - rowFlatIdx = rowBlockIdx*numMassEq + rowEqIdx; - else - rowFlatIdx = numBlocks*numMassEq + rowBlockIdx*dim + rowEqIdx - numMassEq; - - (*xBlocked_)[rowBlockIdx][rowEqIdx] = xFlat[rowFlatIdx]; - (*bBlocked_)[rowBlockIdx][rowEqIdx] = bFlat[rowFlatIdx]; - - for (auto colBlockIt = (*aBlocked_)[rowBlockIdx].begin(); - colBlockIt != (*aBlocked_)[rowBlockIdx].end(); ++colBlockIt) - { - unsigned colBlockIdx = colBlockIt.index(); - auto& aBlock = (*aBlocked_)[rowBlockIdx][colBlockIdx]; - - for (unsigned colEqIdx = 0; colEqIdx < numEq; ++colEqIdx) - { - unsigned colFlatIdx; - if (colEqIdx < numMassEq) - colFlatIdx = colBlockIdx*numMassEq + colEqIdx; - else - colFlatIdx = numBlocks*numMassEq + colBlockIdx*dim + colEqIdx - numMassEq; - - aBlock[rowEqIdx][colEqIdx] = aFlat[rowFlatIdx][colFlatIdx]; - } - } - } - } - } - - template <class FlatVector> - void blockedToFlat_(FlatVector& xFlat, - FlatVector& bFlat) - { - unsigned numBlocks = xBlocked_->size(); - static const unsigned numMassEq = numEq - dim; - for (unsigned rowBlockIdx = 0; rowBlockIdx < numBlocks; ++rowBlockIdx) - { - for (unsigned rowEqIdx = 0; rowEqIdx < numEq; ++rowEqIdx) - { - unsigned rowFlatIdx; - if (rowEqIdx < numMassEq) - rowFlatIdx = rowBlockIdx*numMassEq + rowEqIdx; - else - rowFlatIdx = numBlocks*numMassEq + rowBlockIdx*dim + rowEqIdx - numMassEq; - - xFlat[rowFlatIdx] = (*xBlocked_)[rowBlockIdx][rowEqIdx]; - bFlat[rowFlatIdx] = (*bBlocked_)[rowBlockIdx][rowEqIdx]; - } - } - } - - std::shared_ptr<BlockMatrix> aBlocked_; - std::shared_ptr<BlockVector> xBlocked_; - std::shared_ptr<BlockVector> bBlocked_; -}; - -/*! - * \brief Wraps the AMG backend such that it can be used for the el2p model. - */ -template <class TypeTag> -class El2PAMGBackend : public El2PAMGBackendBase< - TypeTag, - Dune::Capabilities::canCommunicate<typename GET_PROP_TYPE(TypeTag, Grid), - GET_PROP_TYPE(TypeTag, Grid)::dimension>::v> -{ - typedef typename GET_PROP_TYPE(TypeTag, Grid) Grid; - enum { dofCodim = Grid::dimension }; - enum { isParallel = Dune::Capabilities::canCommunicate<Grid, dofCodim>::v }; - typedef El2PAMGBackendBase<TypeTag, isParallel> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - -public: - /*! - * \copydoc AMGBackend::AMGBackend() - */ - El2PAMGBackend(const Problem& problem) - : ParentType(problem) - {} -}; - -} // namespace Dumux - -#endif // DUMUX_EL2P_AMGBACKEND_HH diff --git a/dumux/geomechanics/el2p/assembler.hh b/dumux/geomechanics/el2p/assembler.hh deleted file mode 100644 index f995b84864d778cc6c742468dc2e5d07ec6d2b8c..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el2p/assembler.hh +++ /dev/null @@ -1,605 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief This file contains an assembler for the Jacobian matrix - * of the two-phase linear-elastic model based on PDELab. - */ -#ifndef DUMUX_EL2P_ASSEMBLER_HH -#define DUMUX_EL2P_ASSEMBLER_HH - -#include "properties.hh" -#include "localoperator.hh" - -namespace Dumux { - -namespace Properties -{ -NEW_PROP_TAG(PressureFEM); //!< Finite element space used for pressure, saturation, ... -NEW_PROP_TAG(DisplacementFEM); //!< Finite element space used for displacement -NEW_PROP_TAG(PressureGridFunctionSpace); //!< Grid function space used for pressure, saturation, ... -NEW_PROP_TAG(DisplacementGridFunctionSpace); //!< Grid function space used for displacement -} - -namespace PDELab { - -/*! - * \brief An assembler for the Jacobian matrix - * of the two-phase linear-elastic model based on PDELab. - */ -template<class TypeTag> -class El2PAssembler -{ - typedef typename GET_PROP_TYPE(TypeTag, Model) Model; - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, VertexMapper) VertexMapper; - typedef typename GET_PROP_TYPE(TypeTag, ElementMapper) ElementMapper; - - typedef typename GET_PROP_TYPE(TypeTag, PressureFEM) PressureFEM; - typedef typename GET_PROP_TYPE(TypeTag, PressureGridFunctionSpace) PressureGFS; - typedef typename PressureGFS::template Child<0>::Type PressureScalarGFS; - - typedef typename GET_PROP_TYPE(TypeTag, DisplacementFEM) DisplacementFEM; - typedef typename GET_PROP_TYPE(TypeTag, DisplacementGridFunctionSpace) DisplacementGFS; - typedef typename DisplacementGFS::template Child<0>::Type DisplacementScalarGFS; - - typedef typename GET_PROP_TYPE(TypeTag, GridFunctionSpace) GridFunctionSpace; - typedef typename GET_PROP_TYPE(TypeTag, Constraints) Constraints; - typedef typename GET_PROP_TYPE(TypeTag, ConstraintsTrafo) ConstraintsTrafo; - typedef typename GET_PROP_TYPE(TypeTag, LocalOperator) LocalOperator; - typedef typename GET_PROP_TYPE(TypeTag, GridOperator) GridOperator; - - typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; - typedef typename GET_PROP_TYPE(TypeTag, JacobianMatrix) JacobianMatrix; - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - - enum{dim = GridView::dimension}; - typedef typename GridView::template Codim<0>::Entity Element; - - typedef typename GridView::template Codim<dim>::Entity Vertex; - - enum { - enablePartialReassemble = GET_PROP_VALUE(TypeTag, ImplicitEnablePartialReassemble), - enableJacobianRecycling = GET_PROP_VALUE(TypeTag, ImplicitEnableJacobianRecycling), - }; - - // copying the jacobian assembler is not a good idea - El2PAssembler(const El2PAssembler &); - -public: - /*! - * \brief The colors of elements and vertices required for partial - * Jacobian reassembly. - */ - enum EntityColor { - /*! - * Vertex/element that needs to be reassembled because some - * relative error is above the tolerance - */ - Red, - - /*! - * Vertex/element that needs to be reassembled because a - * neighboring element/vertex is red - */ - Yellow, - - /*! - * Yellow vertex has only non-green neighbor elements. - * - * This means that its relative error is below the tolerance, - * but its defect can be linearized without any additional - * cost. This is just an "internal" color which is not used - * ouside of the jacobian assembler. - */ - Orange, - - /*! - * Vertex/element that does not need to be reassembled - */ - Green - }; - - El2PAssembler() - { - // set reassemble tolerance to 0, so that if partial - // reassembly of the jacobian matrix is disabled, the - // reassemble tolerance is always smaller than the current - // relative tolerance - reassembleTolerance_ = 0.0; - } - - /*! - * \brief Initialize the jacobian assembler. - * - * At this point we can assume that all objects in the problem and - * the model have been allocated. We can not assume that they are - * fully initialized, though. - * - * \param problem The problem object - */ - void init(Problem& problem) - { - problemPtr_ = &problem; - - constraints_ = std::make_shared<Constraints>(); - - pressureFEM_ = std::make_shared<PressureFEM>(problemPtr_->gridView()); - pressureScalarGFS_ = std::make_shared<PressureScalarGFS>(problemPtr_->gridView(), *pressureFEM_, *constraints_); - pressureGFS_ = std::make_shared<PressureGFS>(*pressureScalarGFS_); - - displacementFEM_ = std::make_shared<DisplacementFEM>(problemPtr_->gridView()); - displacementScalarGFS_ = std::make_shared<DisplacementScalarGFS>(problemPtr_->gridView(), *displacementFEM_, *constraints_); - displacementGFS_ = std::make_shared<DisplacementGFS>(*displacementScalarGFS_); - - gridFunctionSpace_ = std::make_shared<GridFunctionSpace>(*pressureGFS_, *displacementGFS_); - - constraintsTrafo_ = std::make_shared<ConstraintsTrafo>(); - - // initialize the grid operator spaces - localOperator_ = std::make_shared<LocalOperator>(problemPtr_->model()); - gridOperator_ = - std::make_shared<GridOperator>(*gridFunctionSpace_, *constraintsTrafo_, - *gridFunctionSpace_, *constraintsTrafo_, *localOperator_); - - // allocate raw matrix - matrix_ = std::make_shared<JacobianMatrix>(*gridOperator_); - - // initialize the jacobian matrix and the right hand side - // vector - *matrix_ = 0; - reuseMatrix_ = false; - - residual_ = std::make_shared<SolutionVector>(*gridFunctionSpace_); - - int numVertices = gridView_().size(dim); - int numElements = gridView_().size(0); - - totalElems_ = gridView_().comm().sum(numElements); - - // initialize data needed for partial reassembly - if (enablePartialReassemble) { - vertexColor_.resize(numVertices); - vertexDelta_.resize(numVertices); - elementColor_.resize(numElements); - } - reassembleAll(); - } - - /*! - * \brief Assemble the local jacobian of the problem. - * - * The current state of affairs (esp. the previous and the current - * solutions) is represented by the model object. - */ - void assemble() - { - *matrix_ = 0; - gridOperator_->jacobian(problemPtr_->model().curSol(), *matrix_); - - *residual_ = 0; - gridOperator_->residual(problemPtr_->model().curSol(), *residual_); - - return; - } - - /*! - * \brief If Jacobian matrix recycling is enabled, this method - * specifies whether the next call to assemble() just - * rescales the storage term or does a full reassembly - * - * \param yesno If true, only rescale; else do full Jacobian assembly. - */ - void setMatrixReuseable(bool yesno = true) - { - if (enableJacobianRecycling) - reuseMatrix_ = yesno; - } - - /*! - * \brief If partial Jacobian matrix reassembly is enabled, this - * method causes all elements to be reassembled in the next - * assemble() call. - */ - void reassembleAll() - { - nextReassembleTolerance_ = 0.0; - - if (enablePartialReassemble) { - std::fill(vertexColor_.begin(), - vertexColor_.end(), - Red); - std::fill(elementColor_.begin(), - elementColor_.end(), - Red); - std::fill(vertexDelta_.begin(), - vertexDelta_.end(), - 0.0); - } - } - - /*! - * \brief Returns the relative error below which a vertex is - * considered to be "green" if partial Jacobian reassembly - * is enabled. - * - * This returns the _actual_ relative computed seen by - * computeColors(), not the tolerance which it was given. - */ - Scalar reassembleTolerance() const - { return reassembleTolerance_; } - - /*! - * \brief Update the distance where the non-linear system was - * originally insistently linearized and the point where it - * will be linerized the next time. - * - * This only has an effect if partial reassemble is enabled. - */ - void updateDiscrepancy(const SolutionVector &u, - const SolutionVector &uDelta) - { - if (!enablePartialReassemble) - return; - - // update the vector with the distances of the current - // evaluation point used for linearization from the original - // evaluation point - using std::abs; - for (int i = 0; i < vertexDelta_.size(); ++i) { - PrimaryVariables uCurrent(u[i]); - PrimaryVariables uNext(uCurrent); - uNext -= uDelta[i]; - - // we need to add the distance the solution was moved for - // this vertex - Scalar dist = model_().relativeErrorVertex(i, - uCurrent, - uNext); - vertexDelta_[i] += abs(dist); - } - - } - - /*! - * \brief Determine the colors of vertices and elements for partial - * reassembly given a relative tolerance. - * - * The following approach is used: - * - * - Set all vertices and elements to 'green' - * - Mark all vertices as 'red' which exhibit an relative error above - * the tolerance - * - Mark all elements which feature a 'red' vetex as 'red' - * - Mark all vertices which are not 'red' and are part of a - * 'red' element as 'yellow' - * - Mark all elements which are not 'red' and contain a - * 'yellow' vertex as 'yellow' - * - * \param relTol The relative error below which a vertex won't be - * reassembled. Note that this specifies the - * worst-case relative error between the last - * linearization point and the current solution and - * _not_ the delta vector of the Newton iteration! - */ - void computeColors(Scalar relTol) - { - if (!enablePartialReassemble) - return; - - // mark the red vertices and update the tolerance of the - // linearization which actually will get achieved - nextReassembleTolerance_ = 0; - for (int i = 0; i < vertexColor_.size(); ++i) { - vertexColor_[i] = Green; - if (vertexDelta_[i] > relTol) { - // mark vertex as red if discrepancy is larger than - // the relative tolerance - vertexColor_[i] = Red; - } - using std::max; - nextReassembleTolerance_ = - max(nextReassembleTolerance_, vertexDelta_[i]); - }; - - // Mark all red elements - for (const auto& element : elements(gridView_())) { - // find out whether the current element features a red - // vertex - bool isRed = false; - int numVertices = element.subEntities(dim); - for (int i=0; i < numVertices; ++i) { - int globalI = vertexMapper_().subIndex(element, i, dim); - if (vertexColor_[globalI] == Red) { - isRed = true; - break; - } - }; - - // if yes, the element color is also red, else it is not - // red, i.e. green for the mean time - int eIdxGlobal = elementMapper_().index(element); - if (isRed) - elementColor_[eIdxGlobal] = Red; - else - elementColor_[eIdxGlobal] = Green; - } - - // Mark yellow vertices (as orange for the mean time) - for (const auto& element : elements(gridView_())) { - int eIdx = this->elementMapper_().index(element); - if (elementColor_[eIdx] != Red) - continue; // non-red elements do not tint vertices - // yellow! - - int numVertices = element.subEntities(dim); - for (int i=0; i < numVertices; ++i) { - int globalI = vertexMapper_().subIndex(element, i, dim); - // if a vertex is already red, don't recolor it to - // yellow! - if (vertexColor_[globalI] != Red) - vertexColor_[globalI] = Orange; - }; - } - - // Mark yellow elements - for (const auto& element : elements(gridView_())) { - int eIdx = this->elementMapper_().index(element); - if (elementColor_[eIdx] == Red) { - continue; // element is red already! - } - - // check whether the element features a yellow - // (resp. orange at this point) vertex - bool isYellow = false; - int numVertices = element.subEntities(dim); - for (int i=0; i < numVertices; ++i) { - int globalI = vertexMapper_().subIndex(element, i, dim); - if (vertexColor_[globalI] == Orange) { - isYellow = true; - break; - } - }; - - if (isYellow) - elementColor_[eIdx] = Yellow; - } - - // Demote orange vertices to yellow ones if it has at least - // one green element as a neighbor. - for (const auto& element : elements(gridView_())) { - int eIdx = this->elementMapper_().index(element); - if (elementColor_[eIdx] != Green) - continue; // yellow and red elements do not make - // orange vertices yellow! - - int numVertices = element.subEntities(dim); - for (int i=0; i < numVertices; ++i) { - int globalI = vertexMapper_().subIndex(element, i, dim); - // if a vertex is orange, recolor it to yellow! - if (vertexColor_[globalI] == Orange) - vertexColor_[globalI] = Yellow; - }; - } - - // promote the remaining orange vertices to red - for (int i=0; i < vertexColor_.size(); ++i) { - // if a vertex is green or yellow don't do anything! - if (vertexColor_[i] == Green || vertexColor_[i] == Yellow) - continue; - - // make sure the vertex is red (this is a no-op vertices - // which are already red!) - vertexColor_[i] = Red; - - // set the error of this vertex to 0 because the system - // will be consistently linearized at this vertex - vertexDelta_[i] = 0.0; - }; - }; - - /*! - * \brief Returns the reassemble color of a vertex - * - * \param element An element which contains the vertex - * \param vIdx The local index of the vertex in the element. - */ - int vertexColor(const Element &element, int vIdx) const - { - if (!enablePartialReassemble) - return Red; // reassemble unconditionally! - - int vIdxGlobal = vertexMapper_().subIndex(element, vIdx, dim); - - return vertexColor_[vIdxGlobal]; - } - - /*! - * \brief Returns the reassemble color of a vertex - * - * \param vIdxGlobal The global index of the vertex. - */ - int vertexColor(int vIdxGlobal) const - { - if (!enablePartialReassemble) - return Red; // reassemble unconditionally! - return vertexColor_[vIdxGlobal]; - } - - /*! - * \brief Returns the Jacobian reassemble color of an element - * - * \param element The Codim-0 DUNE entity - */ - int elementColor(const Element &element) const - { - if (!enablePartialReassemble) - return Red; // reassemble unconditionally! - - int eIdxGlobal = elementMapper_().index(element); - return elementColor_[eIdxGlobal]; - } - - /*! - * \brief Returns the Jacobian reassemble color of an element - * - * \param globalElementIdx The global index of the element. - */ - int elementColor(int globalElementIdx) const - { - if (!enablePartialReassemble) - return Red; // reassemble unconditionally! - return elementColor_[globalElementIdx]; - } - - /*! - * \brief Returns a pointer to the PDELab's grid function space. - */ - const GridFunctionSpace& gridFunctionSpace() const - { - return *gridFunctionSpace_; - } - - /*! - * \brief Returns a pointer to the PDELab's constraints - * transformation. - */ - const ConstraintsTrafo& constraintsTrafo() const - { - return *constraintsTrafo_; - } - - /*! - * \brief Return constant reference to global Jacobian matrix. - */ - const JacobianMatrix& matrix() const - { return *matrix_; } - - /*! - * \brief Return reference to global Jacobian matrix. - */ - JacobianMatrix& matrix() - { return *matrix_; } - - /*! - * \brief Return constant reference to global residual vector. - */ - const SolutionVector& residual() const - { return *residual_; } - - - /*! - * \brief Return reference to global residual vector. - */ - SolutionVector& residual() - { return *residual_; } - - const GridOperator &gridOperator() const - { return *gridOperator_;} - -private: - // reset the global linear system of equations. if partial - // reassemble is enabled, this means that the jacobian matrix must - // only be erased partially! - void resetSystem_() - { - // always reset the right hand side. - *residual_ = 0.0; - - if (!enablePartialReassemble) { - // If partial reassembly of the jacobian is not enabled, - // we can just reset everything! - (*matrix_) = 0; - return; - } - - // reset all entries corrosponding to a red vertex - for (int rowIdx = 0; rowIdx < matrix_->N(); ++rowIdx) { - if (vertexColor_[rowIdx] == Green) - continue; // the equations for this control volume are - // already below the treshold - - // set all entries in the row to 0 - typedef typename JacobianMatrix::ColIterator ColIterator; - ColIterator colIt = (*matrix_)[rowIdx].begin(); - const ColIterator &colEndIt = (*matrix_)[rowIdx].end(); - for (; colIt != colEndIt; ++colIt) { - (*colIt) = 0.0; - } - }; - } - - Problem &problem_() - { return *problemPtr_; } - const Problem &problem_() const - { return *problemPtr_; } - const Model &model_() const - { return problem_().model(); } - Model &model_() - { return problem_().model(); } - const GridView &gridView_() const - { return problem_().gridView(); } - const VertexMapper &vertexMapper_() const - { return problem_().vertexMapper(); } - const ElementMapper &elementMapper_() const - { return problem_().elementMapper(); } - - Problem *problemPtr_; - - // the jacobian matrix - std::shared_ptr<JacobianMatrix> matrix_; - // the right-hand side - std::shared_ptr<SolutionVector> residual_; - - // attributes required for jacobian matrix recycling - bool reuseMatrix_; - - // attributes required for partial jacobian reassembly - std::vector<EntityColor> vertexColor_; - std::vector<EntityColor> elementColor_; - std::vector<Scalar> vertexDelta_; - - int totalElems_; - int greenElems_; - - Scalar nextReassembleTolerance_; - Scalar reassembleTolerance_; - - - std::shared_ptr<Constraints> constraints_; - std::shared_ptr<PressureFEM> pressureFEM_; - std::shared_ptr<DisplacementFEM> displacementFEM_; - std::shared_ptr<PressureScalarGFS> pressureScalarGFS_; - std::shared_ptr<DisplacementScalarGFS> displacementScalarGFS_; - std::shared_ptr<PressureGFS> pressureGFS_; - std::shared_ptr<DisplacementGFS> displacementGFS_; - std::shared_ptr<GridFunctionSpace> gridFunctionSpace_; - std::shared_ptr<ConstraintsTrafo> constraintsTrafo_; - std::shared_ptr<LocalOperator> localOperator_; - std::shared_ptr<GridOperator> gridOperator_; -}; - -} // namespace PDELab - -} // namespace Dumux - -#endif diff --git a/dumux/geomechanics/el2p/basemodel.hh b/dumux/geomechanics/el2p/basemodel.hh deleted file mode 100644 index 35f1a67ff36eb1bdf4d829d4463eea4b5926a9be..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el2p/basemodel.hh +++ /dev/null @@ -1,984 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Base class for fully-implicit models - */ -#ifndef DUMUX_ELASTIC2P_BASE_MODEL_HH -#define DUMUX_ELASTIC2P_BASE_MODEL_HH - -#include <dune/geometry/type.hh> -#include <dune/istl/bvector.hh> - -#include <dumux/implicit/model.hh> -#include <dumux/common/valgrind.hh> -#include <dumux/parallel/vertexhandles.hh> - -namespace Dumux -{ - -/*! - * \ingroup ElTwoPBoxModel - * \brief base class for the two-phase geomechanics model - */ -template<class TypeTag> -class ElTwoPBaseModel -{ - typedef typename GET_PROP_TYPE(TypeTag, Model) Implementation; - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, ElementMapper) ElementMapper; - typedef typename GET_PROP_TYPE(TypeTag, VertexMapper) VertexMapper; - typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, JacobianAssembler) JacobianAssembler; - typedef typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables) ElementVolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) VolumeVariables; - - enum { - numEq = GET_PROP_VALUE(TypeTag, NumEq), - dim = GridView::dimension - }; - - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, LocalJacobian) LocalJacobian; - typedef typename GET_PROP_TYPE(TypeTag, LocalResidual) LocalResidual; - typedef typename GET_PROP_TYPE(TypeTag, NewtonMethod) NewtonMethod; - typedef typename GET_PROP_TYPE(TypeTag, NewtonController) NewtonController; - - typedef typename GridView::ctype CoordScalar; - typedef typename GridView::template Codim<0>::Entity Element; - - typedef typename Dune::ReferenceElements<CoordScalar, dim> ReferenceElements; - typedef typename Dune::ReferenceElement<CoordScalar, dim> ReferenceElement; - - enum { isBox = GET_PROP_VALUE(TypeTag, ImplicitIsBox) }; - enum { dofCodim = isBox ? dim : 0 }; - - // copying a model is not a good idea - ElTwoPBaseModel(const ElTwoPBaseModel &); - -public: - /*! - * \brief The constructor. - */ - ElTwoPBaseModel() - : problemPtr_(0) - { - enableHints_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Implicit, EnableHints); - } - - /*! - * \brief Apply the initial conditions to the model. - * - * \param problem The object representing the problem which needs to - * be simulated. - */ - void init(Problem &problem) - { - problemPtr_ = &problem; - - updateBoundaryIndices_(); - - int numDofs = asImp_().numDofs(); - if (isBox) - boxVolume_.resize(numDofs); - - localJacobian_.init(problem_()); - jacAsm_ = std::make_shared<JacobianAssembler>(); - jacAsm_->init(problem_()); - - uCur_ = std::make_shared<SolutionVector>(jacAsm_->gridFunctionSpace()); - uPrev_ = std::make_shared<SolutionVector>(jacAsm_->gridFunctionSpace()); - - asImp_().applyInitialSolution_(); - - // resize the hint vectors - if (isBox && enableHints_) { - int numVertices = gridView_().size(dim); - curHints_.resize(numVertices); - prevHints_.resize(numVertices); - hintsUsable_.resize(numVertices); - std::fill(hintsUsable_.begin(), - hintsUsable_.end(), - false); - } - - // also set the solution of the "previous" time step to the - // initial solution. - *uPrev_ = *uCur_; - } - - void setHints(const Element &element, - ElementVolumeVariables &prevVolVars, - ElementVolumeVariables &curVolVars) const - { - if (!isBox || !enableHints_) - return; - - int n = element.subEntities(dim); - prevVolVars.resize(n); - curVolVars.resize(n); - for (int i = 0; i < n; ++i) { - int vIdxGlobal = vertexMapper().subIndex(element, i, dim); - - if (!hintsUsable_[vIdxGlobal]) { - curVolVars[i].setHint(NULL); - prevVolVars[i].setHint(NULL); - } - else { - curVolVars[i].setHint(&curHints_[vIdxGlobal]); - prevVolVars[i].setHint(&prevHints_[vIdxGlobal]); - } - } - } - - void setHints(const Element &element, - ElementVolumeVariables &curVolVars) const - { - if (!isBox || !enableHints_) - return; - - int n = element.subEntities(dim); - curVolVars.resize(n); - for (int i = 0; i < n; ++i) { - int vIdxGlobal = vertexMapper().subIndex(element, i, dim); - - if (!hintsUsable_[vIdxGlobal]) - curVolVars[i].setHint(NULL); - else - curVolVars[i].setHint(&curHints_[vIdxGlobal]); - } - } - - void updatePrevHints() - { - if (!isBox || !enableHints_) - return; - - prevHints_ = curHints_; - } - - void updateCurHints(const Element &element, - const ElementVolumeVariables &elemVolVars) const - { - if (!isBox || !enableHints_) - return; - - for (unsigned int i = 0; i < elemVolVars.size(); ++i) { - int vIdxGlobal = vertexMapper().subIndex(element, i, dim); - curHints_[vIdxGlobal] = elemVolVars[i]; - if (!hintsUsable_[vIdxGlobal]) - prevHints_[vIdxGlobal] = elemVolVars[i]; - hintsUsable_[vIdxGlobal] = true; - } - } - - - /*! - * \brief Compute the global residual for an arbitrary solution - * vector. - * - * \param residual Stores the result - * \param u The solution for which the residual ought to be calculated - */ - Scalar globalResidual(SolutionVector &residual, - const SolutionVector &u) - { - jacAsm_->gridOperator().residual(u, residual); - - // calculate the square norm of the residual - Scalar result2 = residual.base().two_norm2(); - if (gridView_().comm().size() > 1) - result2 = gridView_().comm().sum(result2); - - // add up the residuals on the process borders - if (isBox && gridView_().comm().size() > 1) { - VertexHandleSum<PrimaryVariables, SolutionVector, VertexMapper> - sumHandle(residual, vertexMapper()); - gridView_().communicate(sumHandle, - Dune::InteriorBorder_InteriorBorder_Interface, - Dune::ForwardCommunication); - } - - using std::sqrt; - return sqrt(result2); - } - - /*! - * \brief Compute the global residual for the current solution - * vector. - * - * \param residual Stores the result - */ - Scalar globalResidual(SolutionVector &residual) - { - return globalResidual(residual, curSol()); - } - - /*! - * \brief Compute the integral over the domain of the storage - * terms of all conservation quantities. - * - * \param storage Stores the result - */ - void globalStorage(PrimaryVariables &storage) - { - storage = 0; - - for (const auto& element : elements(gridView_(), Dune::Partitions::interior)) - { - localResidual().evalStorage(element); - - if (isBox) - { - for (int i = 0; i < element.subEntities(dim); ++i) - storage += localResidual().storageTerm()[i]; - } - else - { - storage += localResidual().storageTerm()[0]; - } - } - - if (gridView_().comm().size() > 1) - storage = gridView_().comm().sum(storage); - } - - /*! - * \brief Returns the volume \f$\mathrm{[m^3]}\f$ of a given control volume. - * - * \param vIdxGlobal The global index of the control volume's - * associated vertex - */ - Scalar boxVolume(const int vIdxGlobal) const - { - if (isBox) - { - return boxVolume_[vIdxGlobal][0]; - } - else - { - DUNE_THROW(Dune::InvalidStateException, - "requested box volume for cell-centered model"); - } - } - - /*! - * \brief Reference to the current solution as a block vector. - */ - const SolutionVector &curSol() const - { return *uCur_; } - - /*! - * \brief Reference to the current solution as a block vector. - */ - SolutionVector &curSol() - { return *uCur_; } - - /*! - * \brief Reference to the previous solution as a block vector. - */ - const SolutionVector &prevSol() const - { return *uPrev_; } - - /*! - * \brief Reference to the previous solution as a block vector. - */ - SolutionVector &prevSol() - { return *uPrev_; } - - /*! - * \brief Returns the operator assembler for the global jacobian of - * the problem. - */ - JacobianAssembler &jacobianAssembler() - { return *jacAsm_; } - - /*! - * \copydoc jacobianAssembler() - */ - const JacobianAssembler &jacobianAssembler() const - { return *jacAsm_; } - - /*! - * \brief Returns the local jacobian which calculates the local - * stiffness matrix for an arbitrary element. - * - * The local stiffness matrices of the element are used by - * the jacobian assembler to produce a global linerization of the - * problem. - */ - LocalJacobian &localJacobian() - { return localJacobian_; } - /*! - * \copydoc localJacobian() - */ - const LocalJacobian &localJacobian() const - { return localJacobian_; } - - /*! - * \brief Returns the local residual function. - */ - LocalResidual &localResidual() - { return localJacobian().localResidual(); } - /*! - * \copydoc localResidual() - */ - const LocalResidual &localResidual() const - { return localJacobian().localResidual(); } - - /*! - * \brief Returns the maximum relative shift between two vectors of - * primary variables. - * - * \param priVars1 The first vector of primary variables - * \param priVars2 The second vector of primary variables - */ - Scalar relativeShiftAtDof(const PrimaryVariables &priVars1, - const PrimaryVariables &priVars2) - { - Scalar result = 0.0; - using std::abs; - using std::max; - for (int j = 0; j < numEq; ++j) { - Scalar eqErr = abs(priVars1[j] - priVars2[j]); - eqErr /= max<Scalar>(1.0, abs(priVars1[j] + priVars2[j])/2); - - result = max(result, eqErr); - } - return result; - } - - /*! - * \brief Try to progress the model to the next timestep. - * - * \param solver The non-linear solver - * \param controller The controller which specifies the behaviour - * of the non-linear solver - */ - bool update(NewtonMethod &solver, - NewtonController &controller) - { -#if HAVE_VALGRIND - for (size_t i = 0; i < curSol().base().size(); ++i) - Valgrind::CheckDefined(curSol().base()[i]); -#endif // HAVE_VALGRIND - - asImp_().updateBegin(); - - bool converged = solver.execute(controller); - if (converged) { - asImp_().updateSuccessful(); - } - else - asImp_().updateFailed(); - -#if HAVE_VALGRIND - for (size_t i = 0; i < curSol().base().size(); ++i) { - Valgrind::CheckDefined(curSol().base()[i]); - } -#endif // HAVE_VALGRIND - - return converged; - } - - /*! - * \brief Check the plausibility of the current solution - * - * This has to be done by the actual model, it knows - * best, what (ranges of) variables to check. - * This is primarily a hook - * which the actual model can overload. - */ - void checkPlausibility() const - { } - - /*! - * \brief Called by the update() method before it tries to - * apply the newton method. This is primarily a hook - * which the actual model can overload. - */ - void updateBegin() - { } - - - /*! - * \brief Called by the update() method if it was - * successful. This is primarily a hook which the actual - * model can overload. - */ - void updateSuccessful() - { } - - /*! - * \brief Called by the update() method if it was - * unsuccessful. This is primarily a hook which the actual - * model can overload. - */ - void updateFailed() - { - // Reset the current solution to the one of the - // previous time step so that we can start the next - // update at a physically meaningful solution. - *uCur_ = *uPrev_; - if (isBox) - curHints_ = prevHints_; - - jacAsm_->reassembleAll(); - } - - /*! - * \brief Called by the problem if a time integration was - * successful, post processing of the solution is done and - * the result has been written to disk. - * - * This should prepare the model for the next time integration. - */ - void advanceTimeLevel() - { - // make the current solution the previous one. - *uPrev_ = *uCur_; - if (isBox) - prevHints_ = curHints_; - - updatePrevHints(); - } - - /*! - * \brief Serializes the current state of the model. - * - * \tparam Restarter The type of the serializer class - * - * \param res The serializer object - */ - template <class Restarter> - void serialize(Restarter &res) - { - if (isBox) - res.template serializeEntities<dim>(asImp_(), gridView_()); - else - res.template serializeEntities<0>(asImp_(), gridView_()); - } - - /*! - * \brief Deserializes the state of the model. - * - * \tparam Restarter The type of the serializer class - * - * \param res The serializer object - */ - template <class Restarter> - void deserialize(Restarter &res) - { - if (isBox) - res.template deserializeEntities<dim>(asImp_(), gridView_()); - else - res.template deserializeEntities<0>(asImp_(), gridView_()); - - prevSol() = curSol(); - } - - /*! - * \brief Write the current solution for a vertex to a restart - * file. - * - * \param outstream The stream into which the vertex data should - * be serialized to - * \param entity The entity which's data should be - * serialized, i.e. a vertex for the box method - * and an element for the cell-centered method - */ - template <class Entity> - void serializeEntity(std::ostream &outstream, - const Entity &entity) - { - int dofIdxGlobal = dofMapper().index(entity); - - // write phase state - if (!outstream.good()) { - DUNE_THROW(Dune::IOError, - "Could not serialize vertex " - << dofIdxGlobal); - } - - for (int eqIdx = 0; eqIdx < numEq; ++eqIdx) { - outstream << curSol()[dofIdxGlobal][eqIdx] << " "; - } - } - - /*! - * \brief Reads the current solution variables for a vertex from a - * restart file. - * - * \param instream The stream from which the vertex data should - * be deserialized from - * \param entity The entity which's data should be - * serialized, i.e. a vertex for the box method - * and an element for the cell-centered method - */ - template <class Entity> - void deserializeEntity(std::istream &instream, - const Entity &entity) - { - int dofIdxGlobal = dofMapper().index(entity); - - for (int eqIdx = 0; eqIdx < numEq; ++eqIdx) { - if (!instream.good()) - DUNE_THROW(Dune::IOError, - "Could not deserialize vertex " - << dofIdxGlobal); - instream >> curSol()[dofIdxGlobal][eqIdx]; - } - } - - /*! - * \brief Returns the number of global degrees of freedoms (DOFs) - */ - size_t numDofs() const - { - if (isBox) - return gridView_().size(dim); - else - return gridView_().size(0); - } - - /*! - * \brief Mapper for the entities where degrees of freedoms are - * defined to indices. - * - * Is the box method is used, this means a mapper - * for vertices, if the cell centered method is used, - * this means a mapper for elements. - */ - template <class T = TypeTag> - const typename std::enable_if<GET_PROP_VALUE(T, ImplicitIsBox), VertexMapper>::type &dofMapper() const - { - return problem_().vertexMapper(); - } - template <class T = TypeTag> - const typename std::enable_if<!GET_PROP_VALUE(T, ImplicitIsBox), ElementMapper>::type &dofMapper() const - { - return problem_().elementMapper(); - } - - /*! - * \brief Mapper for vertices to indices. - */ - const VertexMapper &vertexMapper() const - { return problem_().vertexMapper(); } - - /*! - * \brief Mapper for elements to indices. - */ - const ElementMapper &elementMapper() const - { return problem_().elementMapper(); } - - /*! - * \brief Resets the Jacobian matrix assembler, so that the - * boundary types can be altered. - */ - void resetJacobianAssembler () - { - jacAsm_.template reset<JacobianAssembler>(0); - jacAsm_ = std::make_shared<JacobianAssembler>(); - jacAsm_->init(problem_()); - } - - /*! - * \brief Update the weights of all primary variables within an - * element given the complete set of volume variables - * - * \param element The DUNE codim 0 entity - * \param volVars All volume variables for the element - */ - void updatePVWeights(const Element &element, - const ElementVolumeVariables &volVars) const - { } - - /*! - * \brief Add the vector fields for analysing the convergence of - * the newton method to the a VTK multi writer. - * - * \tparam MultiWriter The type of the VTK multi writer - * - * \param writer The VTK multi writer object on which the fields should be added. - * \param u The solution function - * \param deltaU The delta of the solution function before and after the Newton update - */ - template <class MultiWriter> - void addConvergenceVtkFields(MultiWriter &writer, - const SolutionVector &u, - const SolutionVector &deltaU) - { - typedef Dune::BlockVector<Dune::FieldVector<double, 1> > ScalarField; - - SolutionVector residual(u); - asImp_().globalResidual(residual, u); - - // create the required scalar fields - unsigned numDofs = asImp_().numDofs(); - - // global defect of the two auxiliary equations - ScalarField* def[numEq]; - ScalarField* delta[numEq]; - ScalarField* x[numEq]; - for (int eqIdx = 0; eqIdx < numEq; ++eqIdx) { - x[eqIdx] = writer.allocateManagedBuffer(numDofs); - delta[eqIdx] = writer.allocateManagedBuffer(numDofs); - def[eqIdx] = writer.allocateManagedBuffer(numDofs); - } - - for (unsigned int vIdxGlobal = 0; vIdxGlobal < u.base().size(); vIdxGlobal++) - { - for (int eqIdx = 0; eqIdx < numEq; ++eqIdx) - { - (*x[eqIdx])[vIdxGlobal] = u.base()[vIdxGlobal][eqIdx]; - (*delta[eqIdx])[vIdxGlobal] = - deltaU.base()[vIdxGlobal][eqIdx]; - (*def[eqIdx])[vIdxGlobal] = residual.base()[vIdxGlobal][eqIdx]; - } - } - - for (int eqIdx = 0; eqIdx < numEq; ++eqIdx) { - std::ostringstream oss; - oss.str(""); oss << "x_" << eqIdx; - if (isBox) - writer.attachVertexData(*x[eqIdx], oss.str()); - else - writer.attachCellData(*x[eqIdx], oss.str()); - oss.str(""); oss << "delta_" << eqIdx; - if (isBox) - writer.attachVertexData(*delta[eqIdx], oss.str()); - else - writer.attachCellData(*delta[eqIdx], oss.str()); - oss.str(""); oss << "defect_" << eqIdx; - if (isBox) - writer.attachVertexData(*def[eqIdx], oss.str()); - else - writer.attachCellData(*def[eqIdx], oss.str()); - } - - asImp_().addOutputVtkFields(u, writer); - } - - /*! - * \brief Add the quantities of a time step which ought to be written to disk. - * - * This should be overwritten by the actual model if any secondary - * variables should be written out. Read: This should _always_ be - * overwritten by well behaved models! - * - * \tparam MultiWriter The type of the VTK multi writer - * - * \param sol The global vector of primary variable values. - * \param writer The VTK multi writer where the fields should be added. - */ - template <class MultiWriter> - void addOutputVtkFields(const SolutionVector &sol, - MultiWriter &writer) - { - typedef Dune::BlockVector<Dune::FieldVector<Scalar, 1> > ScalarField; - - // create the required scalar fields - unsigned numDofs = asImp_().numDofs(); - - // global defect of the two auxiliary equations - ScalarField* x[numEq]; - for (int eqIdx = 0; eqIdx < numEq; ++eqIdx) { - x[eqIdx] = writer.allocateManagedBuffer(numDofs); - } - - for (int vIdxGlobal = 0; vIdxGlobal < sol.size(); vIdxGlobal++) - { - for (int eqIdx = 0; eqIdx < numEq; ++eqIdx) { - (*x[eqIdx])[vIdxGlobal] = sol[vIdxGlobal][eqIdx]; - } - } - - for (int eqIdx = 0; eqIdx < numEq; ++eqIdx) { - std::ostringstream oss; - oss << "primaryVar_" << eqIdx; - if (isBox) - writer.attachVertexData(*x[eqIdx], oss.str()); - else - writer.attachCellData(*x[eqIdx], oss.str()); - } - } - - /*! - * \brief Reference to the grid view of the spatial domain. - */ - const GridView &gridView() const - { return problem_().gridView(); } - - /*! - * \brief Returns true if the entity indicated by 'dofIdxGlobal' - * is located on / touches the grid's boundary. - * - * \param dofIdxGlobal The global index of the entity - */ - bool onBoundary(const int dofIdxGlobal) const - { return boundaryIndices_[dofIdxGlobal]; } - - /*! - * \brief Returns true if a vertex is located on the grid's - * boundary. - * - * \param element A DUNE Codim<0> entity which contains the control - * volume's associated vertex. - * \param vIdx The local vertex index inside element - */ - bool onBoundary(const Element &element, const int vIdx) const - { - if (isBox) - return onBoundary(vertexMapper().subIndex(element, vIdx, dim)); - else - DUNE_THROW(Dune::InvalidStateException, - "requested for cell-centered model"); - } - - - /*! - * \brief Returns true if the control volume touches - * the grid's boundary. - * - * \param element A DUNE Codim<0> entity coinciding with the control - * volume. - */ - bool onBoundary(const Element &element) const - { - if (!isBox) - return onBoundary(elementMapper().index(element)); - else - DUNE_THROW(Dune::InvalidStateException, - "requested for box model"); - } - - /*! - * \brief Fill the fluid state according to the primary variables. - * - * Taking the information from the primary variables, - * the fluid state is filled with every information that is - * necessary to evaluate the model's local residual. - * - * \param priVars The primary variables of the model. - * \param problem The problem at hand. - * \param element The current element. - * \param fvGeometry The finite volume element geometry. - * \param scvIdx The index of the subcontrol volume. - * \param fluidState The fluid state to fill. - */ - template <class FluidState> - static void completeFluidState(const PrimaryVariables& priVars, - const Problem& problem, - const Element& element, - const FVElementGeometry& fvGeometry, - const int scvIdx, - FluidState& fluidState) - { - VolumeVariables::completeFluidState(priVars, problem, element, - fvGeometry, scvIdx, fluidState); - } -protected: - /*! - * \brief A reference to the problem on which the model is applied. - */ - Problem &problem_() - { return *problemPtr_; } - /*! - * \copydoc problem_() - */ - const Problem &problem_() const - { return *problemPtr_; } - - /*! - * \brief Reference to the grid view of the spatial domain. - */ - const GridView &gridView_() const - { return problem_().gridView(); } - - /*! - * \brief Reference to the local residal object - */ - LocalResidual &localResidual_() - { return localJacobian_.localResidual(); } - - /*! - * \brief Applies the initial solution for all vertices of the grid. - */ - void applyInitialSolution_() - { - // first set the whole domain to zero - *uCur_ = Scalar(0.0); - boxVolume_ = Scalar(0.0); - - FVElementGeometry fvGeometry; - - // iterate through leaf grid and evaluate initial - // condition at the center of each sub control volume - // - // the initial condition needs to be unique for - // each vertex. we should think about the API... - for (const auto& element : elements(gridView_())) { - // deal with the current element - fvGeometry.update(gridView_(), element); - - // loop over all element vertices, i.e. sub control volumes - for (int scvIdx = 0; scvIdx < fvGeometry.numScv; scvIdx++) - { - // get the global index of the degree of freedom - int dofIdxGlobal = dofMapper().subIndex(element, scvIdx, dofCodim); - - // let the problem do the dirty work of nailing down - // the initial solution. - PrimaryVariables initPriVars; - Valgrind::SetUndefined(initPriVars); - problem_().initial(initPriVars, - element, - fvGeometry, - scvIdx); - Valgrind::CheckDefined(initPriVars); - - if (isBox) - { - // add up the initial values of all sub-control - // volumes. If the initial values disagree for - // different sub control volumes, the initial value - // will be the arithmetic mean. - initPriVars *= fvGeometry.subContVol[scvIdx].volume; - boxVolume_[dofIdxGlobal] += fvGeometry.subContVol[scvIdx].volume; - } - - uCur_->base()[dofIdxGlobal] += initPriVars; - Valgrind::CheckDefined(uCur_->base()[dofIdxGlobal]); - } - } - - // add up the primary variables and the volumes of the boxes - // which cross process borders - if (isBox && gridView_().comm().size() > 1) { - VertexHandleSum<Dune::FieldVector<Scalar, 1>, - Dune::BlockVector<Dune::FieldVector<Scalar, 1> >, - VertexMapper> sumVolumeHandle(boxVolume_, vertexMapper()); - gridView_().communicate(sumVolumeHandle, - Dune::InteriorBorder_InteriorBorder_Interface, - Dune::ForwardCommunication); - - VertexHandleSum<PrimaryVariables, SolutionVector, VertexMapper> - sumPVHandle(uCur_->base(), vertexMapper()); - gridView_().communicate(sumPVHandle, - Dune::InteriorBorder_InteriorBorder_Interface, - Dune::ForwardCommunication); - } - - if (isBox) - { - // divide all primary variables by the volume of their boxes - for (unsigned int i = 0; i < uCur_->base().size(); ++i) { - uCur_->base()[i] /= boxVolume(i); - } - } - } - - /*! - * \brief Find all indices of boundary vertices (box) / elements (cell centered). - */ - void updateBoundaryIndices_() - { - boundaryIndices_.resize(numDofs()); - std::fill(boundaryIndices_.begin(), boundaryIndices_.end(), false); - - for (const auto& element : elements(gridView_())) { - Dune::GeometryType geomType = element.geometry().type(); - const ReferenceElement &refElement = ReferenceElements::general(geomType); - - for (const auto& intersection : intersections(gridView_(), element)) { - if (intersection.boundary()) { - if (isBox) - { - // add all vertices on the intersection to the set of - // boundary vertices - int fIdx = intersection.indexInInside(); - int numFaceVerts = refElement.size(fIdx, 1, dim); - for (int faceVertexIdx = 0; - faceVertexIdx < numFaceVerts; - ++faceVertexIdx) - { - int vIdx = refElement.subEntity(fIdx, - 1, - faceVertexIdx, - dim); - int vIdxGlobal = vertexMapper().subIndex(element, vIdx, dim); - boundaryIndices_[vIdxGlobal] = true; - } - } - else - { - int eIdxGlobal = elementMapper().index(element); - boundaryIndices_[eIdxGlobal] = true; - } - } - } - } - } - - // the hint cache for the previous and the current volume - // variables - mutable std::vector<bool> hintsUsable_; - mutable std::vector<VolumeVariables> curHints_; - mutable std::vector<VolumeVariables> prevHints_; - - // the problem we want to solve. defines the constitutive - // relations, matxerial laws, etc. - Problem *problemPtr_; - - // calculates the local jacobian matrix for a given element - LocalJacobian localJacobian_; - // Linearizes the problem at the current time step using the - // local jacobian - std::shared_ptr<JacobianAssembler> jacAsm_; - - // the set of all indices of vertices on the boundary - std::vector<bool> boundaryIndices_; - - // cur is the current iterative solution, prev the converged - // solution of the previous time step - std::shared_ptr<SolutionVector> uCur_; - std::shared_ptr<SolutionVector> uPrev_; - - Dune::BlockVector<Dune::FieldVector<Scalar, 1> > boxVolume_; - -private: - /*! - * \brief Returns whether messages should be printed - */ - bool verbose_() const - { return gridView_().comm().rank() == 0; } - - Implementation &asImp_() - { return *static_cast<Implementation*>(this); } - const Implementation &asImp_() const - { return *static_cast<const Implementation*>(this); } - - bool enableHints_; -}; -} // end namespace Dumux - -#endif diff --git a/dumux/geomechanics/el2p/elementvolumevariables.hh b/dumux/geomechanics/el2p/elementvolumevariables.hh deleted file mode 100644 index 0b2f3690023a15b469358f594e55dbc32aeae797..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el2p/elementvolumevariables.hh +++ /dev/null @@ -1,303 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Volume variables gathered on an element - */ -#ifndef DUMUX_BOX_EL2P_ELEMENT_VOLUME_VARIABLES_HH -#define DUMUX_BOX_EL2P_ELEMENT_VOLUME_VARIABLES_HH - -#include <dune/pdelab/gridfunctionspace/localfunctionspace.hh> - -#include <dumux/implicit/box/elementvolumevariables.hh> -#include "properties.hh" - -namespace Dumux -{ - -/*! - * \ingroup ElTwoPBoxModel - * - * \brief This class stores an array of VolumeVariables objects, one - * volume variables object for each of the element's vertices - */ -template<class TypeTag> -class ElTwoPElementVolumeVariables : public std::vector<typename GET_PROP_TYPE(TypeTag, VolumeVariables) > -{ - typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) VolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename Element::Geometry::JacobianInverseTransposed JacobianInverseTransposed; - - enum { dim = GridView::dimension }; - enum { dimWorld = GridView::dimensionworld }; - typedef typename GET_PROP_TYPE(TypeTag, GridFunctionSpace) GridFunctionSpace; - - typedef Dune::PDELab::LocalFunctionSpace<GridFunctionSpace> LocalFunctionSpace; - - typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; - - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - enum { - pressureIdx = Indices::pressureIdx, - saturationIdx = Indices::saturationIdx - }; - -public: - /*! - * \brief The constructor. - */ - ElTwoPElementVolumeVariables() - { } - - /*! - * \brief Construct the volume variables for all vertices of an element. - * - * \param problem The problem which needs to be simulated. - * \param element The DUNE Codim<0> entity for which the volume variables ought to be calculated - * \param fvGeometry The finite volume geometry of the element - * \param isOldSol Tells whether the model's previous or current solution should be used. - * - * This class is required for the update of the effective porosity values at the - * vertices since it is a function of the divergence of the solid displacement - * at the integration points - */ - void update(const Problem &problem, - const Element &element, - const FVElementGeometry &fvGeometry, - bool isOldSol) - { - // retrieve the current or the previous solution vector and write the values into globalSol - const SolutionVector &globalSol = - isOldSol? - problem.model().prevSol(): - problem.model().curSol(); - - const GridFunctionSpace& gridFunctionSpace = problem.model().jacobianAssembler().gridFunctionSpace(); - const typename GridFunctionSpace::Ordering& ordering = gridFunctionSpace.ordering(); - // copy the values of the globalSol vector to the localFunctionSpace values of the current element - LocalFunctionSpace localFunctionSpace(gridFunctionSpace); - localFunctionSpace.bind(element); - std::vector<Scalar> values(localFunctionSpace.size()); - for (typename LocalFunctionSpace::Traits::IndexContainer::size_type k=0; k<localFunctionSpace.size(); ++k) - { - const typename GridFunctionSpace::Ordering::Traits::DOFIndex& di = localFunctionSpace.dofIndex(k); - typename GridFunctionSpace::Ordering::Traits::ContainerIndex ci; - ordering.mapIndex(di.view(),ci); - values[k] = globalSol[ci]; - } - - // pressure and saturation local function space (mass balance equations) - typedef typename LocalFunctionSpace::template Child<0>::Type PressSatLFS; - const PressSatLFS& pressSatLFS = localFunctionSpace.template child<0>(); - // local function space for pressure - typedef typename PressSatLFS::template Child<0>::Type PressLFS; - const PressLFS& pressLFS = pressSatLFS.template child<0>(); - // local function space for saturation - typedef typename PressSatLFS::template Child<1>::Type SatLFS; - const SatLFS& satLFS = pressSatLFS.template child<1>(); - // local function space for solid displacement - typedef typename LocalFunctionSpace::template Child<1>::Type DisplacementLFS; - const DisplacementLFS& displacementLFS = localFunctionSpace.template child<1>(); - typedef typename DisplacementLFS::template Child<0>::Type ScalarDispLFS; - - int numScv = element.subEntities(dim); - this->resize(numScv); - - for (int scvIdx = 0; scvIdx < numScv; scvIdx++) - { - // solution vector solI for each vertex - PrimaryVariables solI; - // pressure and saturation values - solI[pressureIdx] = values[pressLFS.localIndex(scvIdx)]; - solI[saturationIdx] = values[satLFS.localIndex(scvIdx)]; - // solid displacement values for each coordinate direction - for (int coordDir = 0; coordDir < dim; coordDir++) - { - const ScalarDispLFS& scalarDispLFS = displacementLFS.child(coordDir); - solI[Indices::u(coordDir)] = values[scalarDispLFS.localIndex(scvIdx)]; - } - // reset evaluation point to zero - (*this)[scvIdx].setEvalPoint(0); - - (*this)[scvIdx].update(solI, - problem, - element, - fvGeometry, - scvIdx, - isOldSol); - - Valgrind::CheckDefined((*this)[scvIdx]); - } - this->updateEffPorosity(problem, element, fvGeometry, isOldSol); - - if (isOldSol) - prevValues_ = values; - else - dofValues_ = values; - } - - /*! - * \brief Update the effective porosities for all vertices of an element. - * - * \param problem The problem which needs to be simulated. - * \param element The DUNE Codim<0> entity for which the volume variables ought to be calculated - * \param fvGeometry The finite volume geometry of the element - * \param isOldSol Specifies whether this is the previous solution or the current one - * - * This function is required for the update of the effective porosity values at the - * vertices. - * - * During the partial derivative calculation, changes of the solid displacement - * at vertex i can affect effective porosities of all element vertices. - * To correctly update the effective porosities of all element vertices - * an iteration over all scv faces is required. - * The remaining volvars are only updated for the vertex whose primary variable - * is changed for the derivative calculation. - */ - void updateEffPorosity(const Problem &problem, - const Element &element, - const FVElementGeometry &fvGeometry, - bool isOldSol) - { - int numScv = element.subEntities(dim); - - // retrieve the current or the previous solution vector and write the values into globalSol - const SolutionVector &globalSol = - isOldSol? - problem.model().prevSol(): - problem.model().curSol(); - - // copy the values of the globalSol vector to the localFunctionSpace values of the current element - const GridFunctionSpace& gridFunctionSpace = problem.model().jacobianAssembler().gridFunctionSpace(); - const typename GridFunctionSpace::Ordering& ordering = gridFunctionSpace.ordering(); - LocalFunctionSpace localFunctionSpace(gridFunctionSpace); - localFunctionSpace.bind(element); - std::vector<Scalar> values(localFunctionSpace.size()); - for (typename LocalFunctionSpace::Traits::IndexContainer::size_type k=0; k<localFunctionSpace.size(); ++k) - { - const typename GridFunctionSpace::Ordering::Traits::DOFIndex& di = localFunctionSpace.dofIndex(k); - typename GridFunctionSpace::Ordering::Traits::ContainerIndex ci; - ordering.mapIndex(di.view(),ci); - values[k] = globalSol[ci]; - } - - // local function space for solid displacement - typedef typename LocalFunctionSpace::template Child<1>::Type DisplacementLFS; - const DisplacementLFS& displacementLFS = localFunctionSpace.template child<1>(); - const unsigned int dispSize = displacementLFS.child(0).size(); - typedef typename DisplacementLFS::template Child<0>::Type ScalarDispLFS; - // further types required for gradient calculations - typedef typename ScalarDispLFS::Traits::FiniteElementType:: - Traits::LocalBasisType::Traits::JacobianType JacobianType_V; - typedef typename ScalarDispLFS::Traits::FiniteElementType:: - Traits::LocalBasisType::Traits::RangeFieldType RF; - typedef Dune::FieldMatrix<RF, dim, dim> Tensor; - - for (int scvIdx = 0; scvIdx < numScv; scvIdx++) - (*this)[scvIdx].effPorosity = 0.0; - - for (int scvIdx = 0; scvIdx < numScv; scvIdx++) - { - GlobalPosition scvCenter = fvGeometry.subContVol[scvIdx].localCenter; - - // evaluate gradient of displacement shape functions at the center of - // the sub control volume in the reference element - std::vector<JacobianType_V> vRefShapeGradient(dispSize); - displacementLFS.child(0).finiteElement().localBasis().evaluateJacobian(scvCenter, vRefShapeGradient); - - // transform gradient to element in global coordinates - const JacobianInverseTransposed jacInvT = element.geometry().jacobianInverseTransposed(scvCenter); - std::vector<Dune::FieldVector<RF,dim> > vShapeGradient(dispSize); - - // loop over element vertices - for (size_t i = 0; i < dispSize; i++) - { - vShapeGradient[i] = 0.0; - jacInvT.umv(vRefShapeGradient[i][0],vShapeGradient[i]); - } - - // calculate gradient of current displacement - // (gradient of a vector is a tensor) - Tensor uGradient(0.0); - // loop over coordinate directions - for(int coordDir = 0; coordDir < dim; ++coordDir) - { - const ScalarDispLFS & scalarDispLFS = displacementLFS.child(coordDir); - // loop over element vertices - for (size_t i = 0; i < scalarDispLFS.size(); i++) - uGradient[coordDir].axpy((*this)[i].displacement(coordDir), vShapeGradient[i]); - } - - // calculate the divergence of u - (*this)[scvIdx].divU = 0.0; - - for (int coordDir = 0; coordDir < dim; coordDir++) - (*this)[scvIdx].divU += uGradient[coordDir][coordDir]; - - // calculate the effective porosity - if(problem.coupled() == true) - { - if ((*this)[scvIdx].divU < -(*this)[scvIdx].porosity()) - { - (*this)[scvIdx].effPorosity = (*this)[scvIdx].porosity(); - std::cout<<"volume change too large"<<std::endl; - } - else - // this equation would be correct if the bulk volume could change (Vol_new = Vol_init *(1+div u)), however, we - // have a constant bulk volume therefore we should apply phi_eff = phi_init + div u - // but this causes convergence problems. Since div u is very small here the chosen relation is - // assumed to be a good approximation - (*this)[scvIdx].effPorosity = ((*this)[scvIdx].porosity() + (*this)[scvIdx].divU)/(1.0 + (*this)[scvIdx].divU); - } - else - (*this)[scvIdx].effPorosity = (*this)[scvIdx].porosity(); - } - } - - - const std::vector<Scalar>& dofValues() const - { - return dofValues_; - } - - Scalar& dofValues(int k) - { - return dofValues_[k]; - } - - const std::vector<Scalar>& prevValues() const - { - return prevValues_; - } - -private: - std::vector<Scalar> dofValues_; - std::vector<Scalar> prevValues_; -}; - -} // namespace Dumux - -#endif diff --git a/dumux/geomechanics/el2p/fluxvariables.hh b/dumux/geomechanics/el2p/fluxvariables.hh deleted file mode 100644 index 157e010c6f244b15a345599d8799fbe57c227b80..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el2p/fluxvariables.hh +++ /dev/null @@ -1,245 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief This file contains the calculation of all the fluxes over the surface of the - * finite volume that make up the volume, the mass and the momentum balance - * for the two-phase linear-elastic model. - * - * This means pressure, concentration and solid-displacement gradients, phase densities at - * the integration point, etc. - * - * This class inherits from the two-phase model FluxVariables - */ -#ifndef DUMUX_EL2P_FLUX_VARIABLES_HH -#define DUMUX_EL2P_FLUX_VARIABLES_HH - -#include <dune/pdelab/gridfunctionspace/localfunctionspace.hh> -#include <dumux/porousmediumflow/implicit/darcyfluxvariables.hh> -#include "properties.hh" - -namespace Dumux -{ - -namespace Properties -{ -// forward declaration of properties -NEW_PROP_TAG(SpatialParams); -} -/*! - * \ingroup ElTwoPBoxModel - * \ingroup ImplicitFluxVariables - * \brief This template class contains the data which is required to - * calculate the fluxes over the surface of the - * finite volume that make up the volume, the mass and the momentum balance - * for the two-phase linear-elastic model. - * - * This means pressure, concentration and solid-displacement gradients, phase densities at - * the integration point, etc. - * - */ -template<class TypeTag> -class ElTwoPFluxVariables: public ImplicitDarcyFluxVariables<TypeTag> -{ - friend class ImplicitDarcyFluxVariables<TypeTag>; // be friends with parent - typedef ImplicitDarcyFluxVariables<TypeTag> ParentType; - - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, SpatialParams) SpatialParams; - typedef typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables) ElementVolumeVariables; - - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GridView::template Codim<0>::Entity Element; - enum - { - dim = GridView::dimension, - dimWorld = GridView::dimensionworld - }; - - typedef typename GridView::ctype CoordScalar; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; - typedef Dune::FieldVector<CoordScalar, dim> DimVector; - typedef Dune::FieldMatrix<Scalar, dimWorld, dimWorld> DimMatrix; - - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename FVElementGeometry::SubControlVolumeFace SCVFace; - - enum {numEq = GET_PROP_VALUE(TypeTag, NumEq)}; - -public: - /*! - * \brief Compute / update the flux variables - * - * \param problem The problem - * \param element The finite element - * \param fvGeometry The finite-volume geometry - * \param fIdx The local index of the SCV (sub-control-volume) face - * \param elemVolVars The volume variables of the current element - * \param onBoundary A boolean variable to specify whether the flux variables - * are calculated for interior SCV faces or boundary faces, default=false - */ - void update(const Problem &problem, - const Element &element, - const FVElementGeometry &fvGeometry, - const int fIdx, - const ElementVolumeVariables &elemVolVars, - const bool onBoundary = false) - { - ParentType::update(problem, element, fvGeometry, fIdx, elemVolVars); - - dU_ = 0.0; - timeDerivUNormal_ = 0.0; - - elTwoPGradients_(problem, element, elemVolVars); - calculateDDt_(problem, element, elemVolVars); - } - -public: - /*! - * \brief Return change of u [m] with time at integration point - * point. - */ - Scalar dU(int dimIdx) const - { - return dU_[dimIdx]; - } - - /*! - * \brief Return time derivative of u [m/s] in normal - * direction at integration point - */ - Scalar timeDerivUNormal() const - { - return timeDerivUNormal_; - } - - /* - * \brief Return the intrinsic permeability. - */ - const DimMatrix &intrinsicPermeability() const - { - return K_; - } - - /* - * \brief Return the gradient of the potential for each phase. - */ - DimVector potentialGrad(int phaseIdx) const - { - return this->potentialGrad_[phaseIdx]; - } - - const SCVFace &face() const - { - return this->fvGeometry_().subContVolFace[this->faceIdx_]; - } - -protected: - /*! - * \brief Calculation of the solid displacement gradients. - * - * \param problem The considered problem file - * \param element The considered element of the grid - * \param elemVolVars The parameters stored in the considered element - */ - void elTwoPGradients_(const Problem &problem, - const Element &element, - const ElementVolumeVariables &elemVolVars) - { - typedef typename GET_PROP_TYPE(TypeTag, GridFunctionSpace) GridFunctionSpace; - typedef Dune::PDELab::LocalFunctionSpace<GridFunctionSpace> LocalFunctionSpace; - const GridFunctionSpace& gridFunctionSpace = problem.model().jacobianAssembler().gridFunctionSpace(); - const typename GridFunctionSpace::Ordering& ordering = gridFunctionSpace.ordering(); - LocalFunctionSpace localFunctionSpace(gridFunctionSpace); - localFunctionSpace.bind(element); - // copy values of previous solution into prevSolutionValues Vector - std::vector<Scalar> prevSolutionValues(localFunctionSpace.size()); - // copy values of current solution into curSolutionValues Vector - std::vector<Scalar> curSolutionValues(localFunctionSpace.size()); - for (typename LocalFunctionSpace::Traits::IndexContainer::size_type k=0; k<localFunctionSpace.size(); ++k) - { - const typename GridFunctionSpace::Ordering::Traits::DOFIndex& di = localFunctionSpace.dofIndex(k); - typename GridFunctionSpace::Ordering::Traits::ContainerIndex ci; - ordering.mapIndex(di.view(),ci); - prevSolutionValues[k] = problem.model().prevSol()[ci]; - curSolutionValues[k] = problem.model().curSol()[ci]; - } - - // type of function space for solid displacement vector - typedef typename LocalFunctionSpace::template Child<1>::Type DisplacementLFS; - const DisplacementLFS& displacementLFS = localFunctionSpace.template child<1>(); - // number of degrees of freedom for each displacement value (here number of element vertices) - const unsigned int dispSize = displacementLFS.child(0).size(); - // type of function space of solid displacement value (one for each coordinate direction) - typedef typename DisplacementLFS::template Child<0>::Type ScalarDispLFS; - typedef typename ScalarDispLFS::Traits::FiniteElementType::Traits::LocalBasisType::Traits::RangeType RT_V; - - for(int coordDir = 0; coordDir < dim; ++coordDir) { - // get displacement function space for coordinate direction coordDir - const ScalarDispLFS & scalarDispLFS = displacementLFS.child(coordDir); - std::vector<RT_V> vShape(dispSize); - // evaluate shape functions of all element vertices for current integration point and write it into vector vShape - scalarDispLFS.finiteElement().localBasis().evaluateFunction(face().ipLocal, vShape); - - dU_[coordDir] = 0; - // subtract previous displacement value from current displacement value for each coordinate direction - // coordDir and for each node i and interpolate values at integration point via the shape function vShape. - // TODO: Check if evaluation of prevVolVars is possible - for (size_t i = 0; i < dispSize; i++){ - dU_[coordDir] += (elemVolVars[i].primaryVars()[(numEq - dim)+coordDir] - - prevSolutionValues[scalarDispLFS.localIndex(i)])*vShape[i]; - } - } - } - - /*! - * \brief Calculation of the time derivative of solid displacement - * \param problem The considered problem file - * \param element The considered element of the grid - * \param elemVolVars The parameters stored in the considered element - */ - void calculateDDt_(const Problem &problem, - const Element &element, - const ElementVolumeVariables &elemVolVars) - { - Scalar dt = problem.timeManager().timeStepSize(); - - DimVector tmp(0.0); - // calculate time derivative of solid displacement vector - for (int coordDir = 0; coordDir < dim; ++coordDir) - tmp[coordDir] = dU(coordDir) / dt; - - // multiply time derivative of solid displacement vector with - // normal vector of current scv-face - timeDerivUNormal_ = tmp * face().normal; - } - - //! time derivative of solid displacement times normal vector at integration point - Scalar timeDerivUNormal_; - //! change of solid displacement with time at integration point - GlobalPosition dU_; - // intrinsic permeability - DimMatrix K_; -}; - -} // end namespace - -#endif diff --git a/dumux/geomechanics/el2p/indices.hh b/dumux/geomechanics/el2p/indices.hh deleted file mode 100644 index c0675daf9bf5070c13c576310187c8fe54a57984..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el2p/indices.hh +++ /dev/null @@ -1,58 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Defines the primary variable and equation indices used by - * the two-phase linear elasticity model. - */ -#ifndef DUMUX_ELASTIC2P_INDICES_HH -#define DUMUX_ELASTIC2P_INDICES_HH - -#include <dumux/geomechanics/elastic/indices.hh> -#include <dumux/porousmediumflow/2p/implicit/indices.hh> - -namespace Dumux -{ -// \{ - -namespace Properties -{ - -/*! - * \ingroup ElTwoPBoxModel - * \ingroup ImplicitIndices - * \brief The indices for the two-phase linear elasticity model. - * - * This class inherits from the TwoPIndices and from the ElasticIndices - */ - -// PVOffset is set to 0 for the TwoPIndices and to 2 for the ElasticIndices since -// the first two primary variables are the primary variables of the two-phase -// model followed by the primary variables of the elastic model -template <class TypeTag, -int formulation = 0, -int PVOffset = 2> -class ElTwoPIndices : public ElasticIndices<PVOffset>, public TwoPIndices<TypeTag,0> -{}; - -} -} - -#endif diff --git a/dumux/geomechanics/el2p/localjacobian.hh b/dumux/geomechanics/el2p/localjacobian.hh deleted file mode 100644 index 67a960a31e5f04369f833bcd35d3956b6ba03397..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el2p/localjacobian.hh +++ /dev/null @@ -1,257 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Calculates the partial derivatives of the local residual for the Jacobian of the - * two-phase linear elasticity model. - */ -#ifndef DUMUX_EL2P_LOCAL_JACOBIAN_HH -#define DUMUX_EL2P_LOCAL_JACOBIAN_HH - -#include <dune/pdelab/gridfunctionspace/localfunctionspace.hh> -#include <dumux/implicit/localjacobian.hh> -#include "properties.hh" - -namespace Dumux -{ -/*! - * \ingroup ElTwoPBoxModel - * \brief Calculates the partial derivatives of the local residual for the Jacobian - * - * Except for the evalPartialDerivatives function all functions are taken from the - * base class ImplicitLocalJacobian - */ -template<class TypeTag> -class ElTwoPLocalJacobian : public ImplicitLocalJacobian<TypeTag> -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - enum { - dim = GridView::dimension, - }; - typedef typename GET_PROP_TYPE(TypeTag, ElementSolutionVector) ElementSolutionVector; - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) VolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - enum { - pressureIdx = Indices::pressureIdx, - saturationIdx = Indices::saturationIdx - }; - // copying a local jacobian is not a good idea - ElTwoPLocalJacobian(const ElTwoPLocalJacobian &); - -public: - ElTwoPLocalJacobian() {} - - /*! - * \brief Compute the partial derivatives to a primary variable at - * an degree of freedom. - * - * This method is overwritten here since this model requires a call of the model specific - * elementvolumevariables which updates the effective porosities correctly. - * - * The default implementation of this method uses numeric - * differentiation, i.e. forward or backward differences (2nd - * order), or central differences (3rd order). The method used is - * determined by the "NumericDifferenceMethod" property: - * - * - if the value of this property is smaller than 0, backward - * differences are used, i.e.: - * \f[ - \frac{\partial f(x)}{\partial x} \approx \frac{f(x) - f(x - \epsilon)}{\epsilon} - * \f] - * - * - if the value of this property is 0, central - * differences are used, i.e.: - * \f[ - \frac{\partial f(x)}{\partial x} \approx \frac{f(x + \epsilon) - f(x - \epsilon)}{2 \epsilon} - * \f] - * - * - if the value of this property is larger than 0, forward - * differences are used, i.e.: - * \f[ - \frac{\partial f(x)}{\partial x} \approx \frac{f(x + \epsilon) - f(x)}{\epsilon} - * \f] - * - * Here, \f$ f \f$ is the residual function for all equations, \f$x\f$ - * is the value of a sub-control volume's primary variable at the - * evaluation point and \f$\epsilon\f$ is a small value larger than 0. - * - * \param partialDeriv The vector storing the partial derivatives of all - * equations - * \param storageDeriv the mass matrix contributions - * \param col The block column index of the degree of freedom - * for which the partial derivative is calculated. - * Box: a sub-control volume index. - * Cell centered: a neighbor index. - * \param pvIdx The index of the primary variable - * for which the partial derivative is calculated - */ - void evalPartialDerivative_(ElementSolutionVector &partialDeriv, - PrimaryVariables &storageDeriv, - int col, - int pvIdx) - { - typedef typename GET_PROP_TYPE(TypeTag, GridFunctionSpace) GridFunctionSpace; - typedef Dune::PDELab::LocalFunctionSpace<GridFunctionSpace> LocalFunctionSpace; - - // copy the values of the globalSol vector to the localFunctionSpace values of the current element - const GridFunctionSpace& gridFunctionSpace = this->problemPtr_->model().jacobianAssembler().gridFunctionSpace(); - const typename GridFunctionSpace::Ordering& ordering = gridFunctionSpace.ordering(); - LocalFunctionSpace localFunctionSpace(gridFunctionSpace); - localFunctionSpace.bind(this->element_()); - std::vector<Scalar> elementValues(localFunctionSpace.size()); - for (typename LocalFunctionSpace::Traits::IndexContainer::size_type k=0; k<localFunctionSpace.size(); ++k) - { - const typename GridFunctionSpace::Ordering::Traits::DOFIndex& di = localFunctionSpace.dofIndex(k); - typename GridFunctionSpace::Ordering::Traits::ContainerIndex ci; - ordering.mapIndex(di.view(),ci); - elementValues[k] = this->problemPtr_->model().curSol()[ci]; - } - // pressure and saturation local function space (mass balance equations) - typedef typename LocalFunctionSpace::template Child<0>::Type PressSatLFS; - const PressSatLFS& pressSatLFS = localFunctionSpace.template child<0>(); - // local function space for pressure - typedef typename PressSatLFS::template Child<0>::Type PressLFS; - const PressLFS& pressLFS = pressSatLFS.template child<0>(); - // local function space for saturation - typedef typename PressSatLFS::template Child<1>::Type SatLFS; - const SatLFS& satLFS = pressSatLFS.template child<1>(); - // local function space for solid displacement - typedef typename LocalFunctionSpace::template Child<1>::Type DisplacementLFS; - const DisplacementLFS& displacementLFS = localFunctionSpace.template child<1>(); - typedef typename DisplacementLFS::template Child<0>::Type ScalarDispLFS; - - //primary variable vector priVars for each vertex - PrimaryVariables priVars; - priVars[pressureIdx] = elementValues[pressLFS.localIndex(col)]; - priVars[saturationIdx] = elementValues[satLFS.localIndex(col)]; - for (int coordDir = 0; coordDir < dim; coordDir++) - { - const ScalarDispLFS& scalarDispLFS = displacementLFS.child(coordDir); - priVars[Indices::u(coordDir)] = elementValues[scalarDispLFS.localIndex(col)]; - } - - VolumeVariables origVolVars(this->curVolVars_[col]); - this->curVolVars_[col].setEvalPoint(&origVolVars); - Scalar eps = this->numericEpsilon(col, pvIdx); - Scalar delta = 0; - - if (this->numericDifferenceMethod_ >= 0) { - // we are not using backward differences, i.e. we need to - // calculate f(x + \epsilon) - - // deflect primary variables - priVars[pvIdx] += eps; - delta += eps; - - // calculate the residual - this->curVolVars_[col].update(priVars, - this->problem_(), - this->element_(), - this->fvElemGeom_, - col, - false); - // update the effective porosities - this->curVolVars_.updateEffPorosity(this->problem_(), - this->element_(), - this->fvElemGeom_, - false); - - this->localResidual().eval(this->element_(), - this->fvElemGeom_, - this->prevVolVars_, - this->curVolVars_, - this->bcTypes_); - - // store the residual - partialDeriv = this->localResidual().residual(); - storageDeriv = this->localResidual().storageTerm()[col]; - } - else { - // we are using backward differences, i.e. we don't need - // to calculate f(x + \epsilon) and we can recycle the - // (already calculated) residual f(x) - partialDeriv = this->residual_; - storageDeriv = this->storageTerm_[col]; - } - - - if (this->numericDifferenceMethod_ <= 0) { - // we are not using forward differences, i.e. we don't - // need to calculate f(x - \epsilon) - - // deflect the primary variables - priVars[pvIdx] -= delta + eps; - delta += eps; - - // calculate residual again - this->curVolVars_[col].update(priVars, - this->problem_(), - this->element_(), - this->fvElemGeom_, - col, - false); - // update the effective porosities - this->curVolVars_.updateEffPorosity(this->problem_(), - this->element_(), - this->fvElemGeom_, - false); - this->localResidual().eval(this->element_(), - this->fvElemGeom_, - this->prevVolVars_, - this->curVolVars_, - this->bcTypes_); - partialDeriv -= this->localResidual().residual(); - storageDeriv -= this->localResidual().storageTerm()[col]; - - } - else { - // we are using forward differences, i.e. we don't need to - // calculate f(x - \epsilon) and we can recycle the - // (already calculated) residual f(x) - partialDeriv -= this->residual_; - storageDeriv -= this->storageTerm_[col]; - } - - // divide difference in residuals by the magnitude of the - // deflections between the two function evaluation -// if(partialDeriv[col][pvIdx] == -350045) - - partialDeriv /= delta; - storageDeriv /= delta; - // restore the orignal state of the element's volume variables - this->curVolVars_[col] = origVolVars; - // update the effective porosities - this->curVolVars_.updateEffPorosity(this->problem_(), - this->element_(), - this->fvElemGeom_, - false); - -#if HAVE_VALGRIND - for (unsigned i = 0; i < partialDeriv.size(); ++i) - Valgrind::CheckDefined(partialDeriv[i]); -#endif - } -}; -} - -#endif diff --git a/dumux/geomechanics/el2p/localoperator.hh b/dumux/geomechanics/el2p/localoperator.hh deleted file mode 100644 index 3720aff1ec3f4ac880657575108b0b979556b93c..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el2p/localoperator.hh +++ /dev/null @@ -1,636 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief This file contains a local operator for PDELab which - * wraps the contributions from - * el2plocalresidual (box discretized mass balances) - * and alphaMomentum (FE discretized momentum balance). - */ -#ifndef DUMUX_EL2P_LOCAL_OPERATOR_HH -#define DUMUX_EL2P_LOCAL_OPERATOR_HH - -#include<dune/common/version.hh> -#include<dune/geometry/quadraturerules.hh> - -#include<dune/pdelab/localoperator/pattern.hh> -#include<dune/pdelab/localoperator/flags.hh> -#include<dune/pdelab/localoperator/defaultimp.hh> -#include<dune/pdelab/gridfunctionspace/localvector.hh> -#include<dune/pdelab/common/geometrywrapper.hh> -#include "properties.hh" - -namespace Dumux { - -namespace PDELab { - -/*! - * \brief A local operator for PDELab which wraps the contributions from - * el2plocalresidual (box discretized mass balances) - * and alphaMomentum (FE discretized momentum balance). - */ -template<class TypeTag> -class El2PLocalOperator - : - public Dune::PDELab::FullVolumePattern, - public Dune::PDELab::LocalOperatorDefaultFlags -{ - // copying the local operator for PDELab is not a good idea - El2PLocalOperator(const El2PLocalOperator &); - - typedef typename GET_PROP_TYPE(TypeTag, Model) Model; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw; - typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GridView::template Codim<0>::Entity::Geometry::JacobianInverseTransposed JacobianInverseTransposed; - typedef typename GridView::Intersection Intersection; - typedef typename Dune::PDELab::IntersectionGeometry<Intersection>::ctype DT; - - enum{numEq = GET_PROP_VALUE(TypeTag, NumEq)}; - enum{dim = GridView::dimension}; - enum{dimWorld = GridView::dimensionworld}; - typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; - typedef Dune::FieldVector<Scalar, dim> DimVector; - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) VolumeVariables; - - enum { - wPhaseIdx = Indices::wPhaseIdx, - nPhaseIdx = Indices::nPhaseIdx - }; - -public: - // pattern assembly flags - enum { doPatternVolume = true }; - - // residual assembly flags - enum { doAlphaVolume = true }; - - /*! - * \param model The physical model for the box scheme. - */ - El2PLocalOperator(Model &model) - : model_(model) - {} - - /*! - * \brief Volume integral depending on test and ansatz functions - * - * \tparam EG The entity geometry type from PDELab - * \tparam LFSU The type of the local function space of the ansatz functions - * \tparam X The type of the container for the coefficients for the ansatz functions - * \tparam LFSV The type of the local function space of the test functions - * \tparam R The range type (usually FieldVector<double>) - * - * \param eg The entity geometry object - * \param lfsu The local function space object of the ansatz functions - * \param x The object of the container for the coefficients for the ansatz functions - * \param lfsv The local function space object of the test functions - * \param r The object storing the volume integral - */ - template<typename EG, typename LFSU, typename X, typename LFSV, typename R> - void alpha_volume (const EG& eg, const LFSU& lfsu, const X& x, - const LFSV& lfsv, R& r) const - { - typedef typename LFSU::Traits::SizeType size_type; - - // evaluate the local residual of the box mass balance equation for the current element - model_.localResidual().eval(eg.entity()); - - // pressure and saturation local function space (mass balance equations) - typedef typename LFSU::template Child<0>::Type PressSatLFS; - // local function space for pressure - typedef typename PressSatLFS::template Child<0>::Type PressLFS; - const PressSatLFS& pressSatLFS = lfsu.template child<0>(); - const PressLFS& pressLFS = pressSatLFS.template child<0>(); - // local function space for saturation - typedef typename PressSatLFS::template Child<1>::Type SatLFS; - const SatLFS& satLFS = pressSatLFS.template child<1>(); - - unsigned int numScv = eg.entity().subEntities(dim); - - for (size_type i = 0; i < (numEq-dim) * numScv; i++) - { - // retrieve the local residual value for vertex=i%Vertices and equation i/numScv (here 0 or 1) - Scalar tmp = model_.localResidual().residual(i%numScv)[i/numScv]; - // get residual for brine phase mass balance equation - if(i < numScv) - r.rawAccumulate(pressLFS, i, tmp); - // get residual for CO2 phase mass balance equation - else - r.rawAccumulate(satLFS,i-numScv, tmp); - } - // get residual for momentum balance equation - alphaMomentum(eg, lfsu, x, lfsv, r); - } - - - /*! - * \brief Calculate the local residual of the momentum balance equation - * with the finite element method. This requires numerical - * integration which is done via a quadrature rule. - * - * \tparam EG The entity geometry type from PDELab - * \tparam LFSU The type of the local function space of the ansatz functions - * \tparam X The type of the container for the coefficients for the ansatz functions - * \tparam LFSV The type of the local function space of the test functions - * \tparam R The range type (usually FieldVector<double>) - * - * \param eg The entity geometry object - * \param lfsu The local function space object of the ansatz functions - * \param x The object of the container for the coefficients for the ansatz functions - * \param lfsv The local function space object of the test functions - * \param r The object storing the volume integral - * - * - */ - template<typename EG, typename LFSU, typename X, typename LFSV, typename R> - void alphaMomentum (const EG& eg, const LFSU& lfsu, const X& x, - const LFSV& lfsv, R& r) const - { - FVElementGeometry fvGeometry; - fvGeometry.update(model_.problem().gridView(), eg.entity()); - // retrieve lame parameters for calculation of effective stresses - const Dune::FieldVector<Scalar,2> lameParams = model_.problem().spatialParams().lameParams(eg.entity(), fvGeometry, 0); - Scalar lambda = lameParams[0]; - Scalar mu = lameParams[1]; - // retrieve materialParams for calculate of capillary pressure - const MaterialLawParams& materialParams = - model_.problem().spatialParams().materialLawParams(eg.entity(), fvGeometry, 0); - // retrieve initial porosity - Scalar porosity = model_.problem().spatialParams().porosity(eg.entity(), fvGeometry, 0); - - // order of quadrature rule - const int qorder = 3; - - // extract local function spaces - // pressure and saturation local function space (mass balance equations) - typedef typename LFSU::template Child<0>::Type PressSatLFS; - const PressSatLFS& pressSatLFS = lfsu.template child<0>(); - // local function space for pressure - typedef typename PressSatLFS::template Child<0>::Type PressLFS; - const PressLFS& pressLFS = pressSatLFS.template child<0>(); - const unsigned int pressSize = pressLFS.size(); - // local function space for saturation - typedef typename PressSatLFS::template Child<1>::Type SatLFS; - const SatLFS& satLFS = pressSatLFS.template child<1>(); - // local function space for solid displacement - typedef typename LFSU::template Child<1>::Type DisplacementLFS; - typedef typename DisplacementLFS::template Child<0>::Type DisplacementScalarLFS; - const DisplacementLFS& displacementLFS = lfsu.template child<1>(); - const DisplacementScalarLFS& uScalarLFS = displacementLFS.template child<0>(); - const unsigned int dispSize = displacementLFS.template child<0>().size(); - - // domain and range field type - typedef typename DisplacementScalarLFS::Traits::FiniteElementType:: - Traits::LocalBasisType::Traits::RangeFieldType RF; - typedef typename DisplacementScalarLFS::Traits::FiniteElementType:: - Traits::LocalBasisType::Traits::RangeType RT_V; - typedef typename DisplacementScalarLFS::Traits::FiniteElementType:: - Traits::LocalBasisType::Traits::JacobianType JacobianType_V; - typedef typename PressLFS::Traits::FiniteElementType:: - Traits::LocalBasisType::Traits::DomainFieldType DF; - typedef typename PressLFS::Traits::FiniteElementType:: - Traits::LocalBasisType::Traits::RangeType RT_P; - - // select quadrature rule for the element geometry type and with the order=qorder - const auto geometry = eg.geometry(); - Dune::GeometryType geomType = geometry.type(); - const Dune::QuadratureRule<DF,dim>& rule = Dune::QuadratureRules<DF,dim>::rule(geomType,qorder); - - // loop over quadrature points - for (typename Dune::QuadratureRule<DF,dim>::const_iterator it=rule.begin(); it!=rule.end(); ++it) - { - // evaluate reference element gradients of shape functions at quadrature point - // (we assume Galerkin method lfsu=lfsv) - std::vector<JacobianType_V> vGradRef(dispSize); - uScalarLFS.finiteElement().localBasis().evaluateJacobian(it->position(),vGradRef); - - - // get inverse transposed jacobian for quadrature point - const JacobianInverseTransposed jacobian = geometry.jacobianInverseTransposed(it->position()); - - // calculate shape function gradients at the quadrature point in global coordinates. This is done - // by multiplying the reference element shape functions with the inverse transposed jacobian - std::vector<Dune::FieldVector<RF,dim> > vGrad(dispSize); - for (size_t i = 0; i < dispSize; i++) - { - vGrad[i] = 0.0; - jacobian.umv(vGradRef[i][0],vGrad[i]); - } - - // calculate the gradient of the solid displacement vector uGrad - // x(uLFS,i) is the solid displacement entry of the solution vector - // for element vertex i and coordinate direction coordDir - - Dune::FieldMatrix<RF,dim,dim> uGrad(0.0); - for(int coordDir = 0; coordDir < dim; ++coordDir) { - const DisplacementScalarLFS& uLFS = displacementLFS.child(coordDir); - // compute gradient of u - for (size_t i = 0; i < dispSize; i++) - uGrad[coordDir].axpy(x(uLFS,i),vGrad[i]); - } - // calculate the strain tensor epsilon - Dune::FieldMatrix<RF,dim,dim> epsilon; - for(int i = 0; i < dim; ++i) - for(int j = 0; j < dim; ++j) - epsilon[i][j] = 0.5*(uGrad[i][j] + uGrad[j][i]); - - RF traceEpsilon = 0; - for(int i = 0; i < dim; ++i) - traceEpsilon += epsilon[i][i]; - - // calculate the effective stress tensor effStress - Dune::FieldMatrix<RF,dim,dim> effStress(0.0); - for(int i = 0; i < dim; ++i) - { - effStress[i][i] = lambda*traceEpsilon; - for(int j = 0; j < dim; ++j) - effStress[i][j] += 2.0*mu*epsilon[i][j]; - } - - // retrieve the shape functions for interpolating the primary variables at the - // current quadrature point - std::vector<RT_P> q(pressSize); - pressLFS.finiteElement().localBasis().evaluateFunction(it->position(),q); - - RT_P pw(0.0); - RT_P sn(0.0); - RT_P ux(0.0); - RT_P uy(0.0); - RT_P uz(0.0); - - // interpolate primary variables at current quadrature point - for (size_t i = 0; i < pressLFS.size(); i++) - { - pw += x(pressLFS,i) * q[i]; - sn += x(satLFS,i) * q[i]; - ux += x(displacementLFS.child(0),i) * q[i]; - if (dim > 1) - uy += x(displacementLFS.child(1),i) * q[i]; - if (dim > 2) - uz += x(displacementLFS.child(2),i) * q[i]; - } - RT_P sw = 1.0 - sn; - RT_P pn = pw + MaterialLaw::pc(materialParams, sw); - RT_P pEff; - - const GlobalPosition& globalPos = geometry.global(it->position()); - - // calculate change in effective pressure with respect to initial conditions pInit (pInit is negativ) - pEff = pw*sw + pn*sn + model_.problem().pInit(globalPos, it->position(), eg.entity()); - RF uDiv = traceEpsilon; - RF porosityEff; - - // assume deformation induced porosity changes - if(model_.problem().coupled() == true){ - if (porosity + uDiv < 1e-3*porosity){ - DUNE_THROW(NumericalProblem, "volume change too large"); - } - else - // this equation would be correct if the bulk volume could change (Vol_new = Vol_init * (1+div u)), however, we - // have a constant bulk volume therefore we should apply phi_eff = phi_init + div u - // but this causes convergence problems. Since div u is very small here the chosen relation is - // assumed to be a good approximation - porosityEff = (porosity + uDiv)/(1.0 + uDiv); - } - // neglect deformation induced porosity changes - else - porosityEff = porosity; - - // fill primary variable vector for current quadrature point - PrimaryVariables primVars; - - primVars[wPhaseIdx] = pw; - primVars[nPhaseIdx] = sn; - primVars[Indices::uxIdx] = ux; - if (dim > 1) - primVars[Indices::uyIdx] = uy; - if (dim > 2) - primVars[Indices::uzIdx] = uz; - - VolumeVariables volVars; - // evaluate volume variables for this quadrature point - // NOTE: this overwrites the entries of the volumevariables of node 0 - // and can cause errors - volVars.update(primVars, model_.problem(), eg.entity(), fvGeometry, 0, false); - - // calculate the density difference for the gravity term - RF rhoDiff = volVars.density(nPhaseIdx) - volVars.density(wPhaseIdx); - - // geometric weight need for quadrature rule evaluation (numerical integration) - RF qWeight = it->weight() * geometry.integrationElement(it->position()); - - // evaluate basis functions - std::vector<RT_V> vBasis(dispSize); - displacementLFS.child(0).finiteElement().localBasis().evaluateFunction(it->position(), vBasis); - - for(int coordDir = 0; coordDir < dim; ++coordDir) { - const DisplacementScalarLFS& uLFS = displacementLFS.child(coordDir); - // assemble momentum balance equation - for (size_t i = 0; i < dispSize; i++){ - // multiply effective stress with gradient of weighting function and geometric weight of quadrature rule - Scalar tmp = (effStress[coordDir] * vGrad[i]) * qWeight; - r.rawAccumulate(uLFS,i,tmp); - - // subtract effective pressure change contribution multiplied with gradient of weighting function - // and geometric weight of quadrature rule (soil mechanics sign conventions, compressive stresses are negative) - tmp = -(pEff * vGrad[i][coordDir]) * qWeight; - r.rawAccumulate(uLFS,i,tmp); - - // evaluate gravity term (soil mechanics sign conventions, compressive stresses are negative) - // multiplied with weighting function and geometric weight of quadrature rule. - // This assumes that the solid phase density remains constant, that the changes in porosity are very small, - // and that the density of the brine phase remains constant - tmp = sn*porosityEff*rhoDiff*model_.problem().gravity()[coordDir]*vBasis[i]* qWeight; - r.rawAccumulate(uLFS,i,tmp); - } - } - } - // include boundary conditions - // iterate over element intersections of codim dim-1 - for (const auto& intersection : intersections(model_.problem().gridView(), eg.entity())) - { - // handle only faces on the boundary - if (!intersection.boundary()) - continue; - - // select quadrature rule for intersection faces (dim-1) - Dune::GeometryType gtface = intersection.geometryInInside().type(); - const Dune::QuadratureRule<DF,dim-1>& faceRule = Dune::QuadratureRules<DF,dim-1>::rule(gtface,qorder); - - // get face index of this intersection - int fIdx = intersection.indexInInside(); - // get dimension of face - const int dimIs = Dune::PDELab::IntersectionGeometry<Intersection>::Entity::Geometry::mydimension; - - // get reference element for intersection geometry (reference element for face if dim = 3) - const Dune::ReferenceElement<DT,dimIs>& refElement = Dune::ReferenceElements<DT,dimIs>::general(geomType); - // get reference element for edges of intersection geometry (reference element for edge if dim = 3), needed for Dirichlet BC - const Dune::ReferenceElement<DT,dimIs-1> &face_refElement = - Dune::ReferenceElements<DT,dimIs-1>::general(intersection.geometryInInside().type()); - - // Treat Neumann boundary conditions - // loop over quadrature points and integrate normal stress changes (traction changes) - for (typename Dune::QuadratureRule<DF,dim-1>::const_iterator it=faceRule.begin(); it!=faceRule.end(); ++it) - { - // position of quadrature point in local coordinates of element - DimVector local = intersection.geometryInInside().global(it->position()); - - GlobalPosition globalPos = geometry.global(local); - - // evaluate boundary condition type - BoundaryTypes boundaryTypes; - model_.problem().boundaryTypesAtPos(boundaryTypes, globalPos); - - // skip rest if we are on Dirichlet boundary - if (!boundaryTypes.hasNeumann()) - continue; - - // evaluate basis functions of all all element vertices for quadrature point location "local" - std::vector<RT_V> vBasis(dispSize); - displacementLFS.child(0).finiteElement().localBasis().evaluateFunction(local, vBasis); - - // evaluate stress boundary condition. The stress change is assumed to be in normal direction (i.e. traction) - PrimaryVariables traction; - model_.problem().neumannAtPos(traction, globalPos); - - // get quadrature rule weight for intersection - const RF qWeight = it->weight() * intersection.geometry().integrationElement(it->position()); - - for(unsigned int coordDir=0; coordDir<dim; ++coordDir){ - const DisplacementScalarLFS& uLFS = displacementLFS.child(coordDir); - // get the traction values for the current quadrature point, - // multiply it with the basis function and the quadrature rule weight - // and add it to the residual - if (boundaryTypes.isNeumann(Indices::momentum(coordDir))) - for (size_t i = 0; i < dispSize; i++){ - Scalar tmp = -traction[Indices::momentum(coordDir)] * vBasis[i] * qWeight; - r.rawAccumulate(uLFS,i,tmp); - } - - } - } - - // Treat Dirichlet boundary conditions, for Dirichlet boundaries we need to check vertices - // first do loop over degrees of freedom for displacement vector entry, then check codim of this degree of freedom - // then do loop over the current intersection face for the degrees of freedom with the given codim - // compare the subentity of the element loop with the subentity of the intersection face loop - // if the subentities are identical retrieve the coordinates of the intersection face subentity and evaluate the boundary - // condition type and if it is a Dirichlet boundary condition then retrieve the Dirichlet value. - // subtract the Dirichlet value from the corresponding solution vector entry (for this the outer element loop is needed) - // and also subtract the residual value which has already been calculated for this degree of freedom - // write the result into the residual - - for(unsigned int coordDir=0; coordDir<dim; ++coordDir){ - const DisplacementScalarLFS& uLFS = displacementLFS.child(coordDir); - - // loop over number of element vertices - for (size_t i = 0; i < dispSize; i++) - { - // Get the codim to which this degree of freedom is attached to (should be a vertex) - unsigned int codim = displacementLFS.child(0).finiteElement().localCoefficients().localKey(i).codim(); - // if we are within the element do nothing (this could happen if second order approximations are applied) - if (codim==0) continue; - - // iterate over number of degrees of freedom with the given codim which are attached to the current intersection face - for (int j = 0; j < refElement.size(fIdx,1,codim); j++) - { // check if degree of freedom is located on a vertex of the current intersection (boundary face) - if (displacementLFS.child(0).finiteElement().localCoefficients().localKey(i).subEntity() == - refElement.subEntity(fIdx,1,j,codim)) - { - // get local coordinate for this degree of freedom -// this doesn't work: DimVector local = intersection.geometryInInside().global(face_refElement.position(j,codim-1)); - DimVector local = refElement.template geometry<1>(fIdx).global(face_refElement.position(j, codim-1)); - - GlobalPosition globalPos = geometry.global(local); - - // evaluate boundary condition type - BoundaryTypes boundaryTypes; - model_.problem().boundaryTypesAtPos(boundaryTypes, globalPos); - - if (boundaryTypes.isDirichlet(Indices::u(coordDir))) - { - // set value of dirichlet BC - PrimaryVariables dirichletValues; - model_.problem().dirichletAtPos(dirichletValues, globalPos); - // retrieve residual value which has already been calculated for the given vertex before it - // was clear that we are on a Dirichlet boundary - Scalar tmpResVal = r.container().base()[(numEq-dim)*dispSize + coordDir*dispSize + i]; - // subtract the dirichletValue and the stored residual value from the solution vector entry - // if the solution vector entry equals the dirichletValue the residual will be zero - Scalar tmp = x(uLFS,i) - dirichletValues[Indices::u(coordDir)] - tmpResVal; - // write result into the residual vector - r.rawAccumulate(uLFS,i,tmp); - } - } - } - } - } - } - } - - /*! - * \brief Jacobian of volume term - * - * \tparam EG The entity geometry type from PDELab - * \tparam LFSU The type of the local function space of the ansatz functions - * \tparam X The type of the container for the coefficients for the ansatz functions - * \tparam LFSV The type of the local function space of the test functions - * \tparam M The matrix type - * - * \param eg The entity geometry object - * \param lfsu The local function space object of the ansatz functions - * \param x The object of the container for the coefficients for the ansatz functions - * \param lfsv The local function space object of the test functions - * \param mat The object containing the local jacobian matrix - */ - template<typename EG, typename LFSU, typename X, typename LFSV, typename M> - void jacobian_volume (const EG& eg, - const LFSU& lfsu, - const X& x, - const LFSV& lfsv, - M& mat) const - { - typedef typename LFSU::Traits::SizeType size_type; - - model_.localJacobian().assemble(eg.entity()); - // pressure and saturation local function space (mass balance equations) - typedef typename LFSU::template Child<0>::Type PressSatLFS; - typedef typename PressSatLFS::template Child<0>::Type PressLFS; - const PressSatLFS& pressSatLFS = lfsu.template child<0>(); - const PressLFS& pressLFS = pressSatLFS.template child<0>(); - typedef typename PressSatLFS::template Child<1>::Type SatLFS; - const SatLFS& satLFS = pressSatLFS.template child<1>(); - // local function space for solid displacement - typedef typename LFSU::template Child<1>::Type DisplacementLFS; - typedef typename DisplacementLFS::template Child<0>::Type DisplacementScalarLFS; - const DisplacementLFS& displacementLFS = lfsu.template child<1>(); - - // type of local residual vector - typedef typename M::value_type R; - typedef Dune::PDELab::LocalVector<R> LocalResidualVector; - typedef Dune::PDELab::WeightedVectorAccumulationView<LocalResidualVector> ResidualView; - - unsigned int numScv = eg.entity().subEntities(dim); - - // loop over all degrees of freedom of the current element - for (size_type j = 0; j < numScv*numEq; j++) - { - // assemble entries for mass balance equations - for (size_type i = 0; i < (numEq-dim)*numScv; i++) - { - // local jacobian value of location idxI=i%numScv, idxJ=j%numScv for equation i/numScv and unknown j/numScv - Scalar tmp = (model_.localJacobian().mat(i%numScv,j%numScv))[i/numScv][j/numScv]; - // mass balance entries for pressure - if (j < numScv){ - if(i < numScv) - mat.rawAccumulate(pressLFS,i,pressLFS,j,tmp); - else - mat.rawAccumulate(satLFS,i-numScv,pressLFS,j,tmp); - } - // mass balance entries for saturation - else if (j < 2*numScv){ - if(i < numScv) - mat.rawAccumulate(pressLFS,i,satLFS,j-numScv,tmp); - else - mat.rawAccumulate(satLFS,i-numScv,satLFS,j-numScv,tmp); - } - // mass balance entries for solid displacement in x-direction - else if (j < 3*numScv) - { - const DisplacementScalarLFS& uScalarLFS = displacementLFS.template child<0>(); - if(i < numScv) - mat.rawAccumulate(pressLFS,i,uScalarLFS,j-2*numScv,tmp); - else - mat.rawAccumulate(satLFS,i-numScv,uScalarLFS,j-2*numScv,tmp); - } - // mass balance entries for solid displacement in y-direction - else if (j < 4*numScv && dim >=2) - { - const DisplacementScalarLFS& uScalarLFS = displacementLFS.template child<1>(); - if(i < numScv) - mat.rawAccumulate(pressLFS,i,uScalarLFS,j-3*numScv,tmp); - else - mat.rawAccumulate(satLFS,i-numScv,uScalarLFS,j-3*numScv,tmp); - } - // mass balance entries for solid displacement in z-direction - else if(j < 5*numScv && dim >=3) - { - const DisplacementScalarLFS& uScalarLFS = displacementLFS.template child<dim-1>(); - if(i < numScv) - mat.rawAccumulate(pressLFS,i,uScalarLFS,j-(numEq-1)*numScv,tmp); - else - mat.rawAccumulate(satLFS,i-numScv,uScalarLFS,j-(numEq-1)*numScv,tmp); - } - - } - } - - // calculate local jacobian entries and assemble for momentum balance equation - const int m=lfsv.size(); - const int n=lfsu.size(); - - X u(x); - LocalResidualVector down(mat.nrows(),0); - - // evaluate momentum residual for momentum balance equation - ResidualView downView = down.weightedAccumulationView(1.0); - alphaMomentum(eg, lfsu, u, lfsv, downView); - - // loop over all columns (number of element vertices * number of equations) - using std::abs; - for (int j = 0; j < n; j++) - { - // vary the solution vector entry (lfsu,j) by a small value delta (forward differencing) - // this comprises presure, saturation, ux, uy and uz - Scalar delta = 1e-4*(1.0+abs(u(lfsu,j))); - u(lfsu,j) += delta; - - // evaluate momentum balance residual for the varied solution vector - LocalResidualVector up(mat.nrows(), 0); - ResidualView upView = up.weightedAccumulationView(1.0); - alphaMomentum(eg, lfsu, u, lfsv, upView); - - // calculate partial derivative for momentum balance equations and assemble - for (int i = (numEq-dim)*numScv; i < m; i++) - { - Scalar entry = (up(lfsv, i) - down(lfsv, i))/delta; - // accumulate resulting partial derivatives into jacobian - mat.rawAccumulate(lfsv,i, lfsu,j,entry); - } - - // reset solution - u(lfsu,j) = x(lfsu,j); - } - } - -private: - Model& model_; -}; - -} // namespace PDELab -} // namespace Dumux - -#endif diff --git a/dumux/geomechanics/el2p/localresidual.hh b/dumux/geomechanics/el2p/localresidual.hh deleted file mode 100644 index 1896555fbd3eb11e975c63bc4e1da94a12d49573..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el2p/localresidual.hh +++ /dev/null @@ -1,233 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Element-wise calculation of the residual for the linear elastic, - * two-phase model in the fully implicit scheme. - */ -#ifndef DUMUX_ELASTIC2P_LOCAL_RESIDUAL_HH -#define DUMUX_ELASTIC2P_LOCAL_RESIDUAL_HH - -#include <dumux/implicit/box/localresidual.hh> -#include "properties.hh" - -namespace Dumux { -/*! - * \ingroup ElTwoPModel - * \ingroup ImplicitLocalResidual - * - * \brief Element-wise calculation of the Jacobian matrix for problems - * using the two-phase linear-elasticity fully implicit model. - */ -template<class TypeTag> -class ElTwoPLocalResidual: public BoxLocalResidual<TypeTag> { -protected: - typedef typename GET_PROP_TYPE(TypeTag, LocalResidual) Implementation; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - - enum { - dim = GridView::dimension - }; - - typedef Dune::FieldMatrix<Scalar, dim, dim> DimMatrix; - typedef Dune::FieldVector<Scalar, dim> DimVector; - - typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) VolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, FluxVariables) FluxVariables; - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables) ElementVolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - typedef typename GET_PROP_TYPE(TypeTag, EffectivePermeabilityModel) EffectivePermeabilityModel; - - enum { - numFluidPhases = GET_PROP_VALUE(TypeTag, NumPhases) - }; - enum { - contiWEqIdx = Indices::contiWEqIdx, - contiNEqIdx = Indices::contiNEqIdx, - wPhaseIdx = Indices::wPhaseIdx, - nPhaseIdx = Indices::nPhaseIdx - }; - -public: - /*! - * \brief Constructor. Sets the upwind weight. - */ - ElTwoPLocalResidual() { - // retrieve the upwind weight for the mass conservation equations. Use the value - // specified via the property system as default, and overwrite - // it by the run-time parameter from the Dune::ParameterTree - massUpwindWeight_ = GET_PARAM_FROM_GROUP(TypeTag, Scalar, Implicit, - MassUpwindWeight); - } - ; - - /*! - * \brief Evaluate the amount all conservation quantities - * (e.g. phase mass) within a finite sub-control volume. - * - * \param storage The phase mass within the sub-control volume - * \param scvIdx The SCV (sub-control-volume) index - * \param usePrevSol Evaluate function with solution of current or previous time step - */ - void computeStorage(PrimaryVariables &storage, int scvIdx, - bool usePrevSol) const { - // if flag usePrevSol is set, the solution from the previous - // time step is used, otherwise the current solution is - // used. The secondary variables are used accordingly. This - // is required to compute the derivative of the storage term - // using the implicit Euler method. - const ElementVolumeVariables &elemVolVars = - usePrevSol ? this->prevVolVars_() : this->curVolVars_(); - const VolumeVariables &volVars = elemVolVars[scvIdx]; - - storage = Scalar(0); - - // wetting phase mass - storage[contiWEqIdx] = volVars.density(wPhaseIdx) - * volVars.saturation(wPhaseIdx) * volVars.effPorosity; - // non-wetting phase mass - storage[contiNEqIdx] = volVars.density(nPhaseIdx) - * volVars.saturation(nPhaseIdx) * volVars.effPorosity; - } - - /*! - * \brief Evaluates the mass flux over a face of a sub-control - * volume. - * - * \param flux The flux over the SCV (sub-control-volume) face for each phase - * \param fIdx The index of the SCV face - * \param onBoundary A boolean variable to specify whether the flux variables - * are calculated for interior SCV faces or boundary faces, default=false - */ - void computeFlux(PrimaryVariables &flux, int fIdx, const bool onBoundary = false) const - { - FluxVariables fluxVars; - fluxVars.update(this->problem_(), - this->element_(), - this->fvGeometry_(), - fIdx, - this->curVolVars_()); - - flux = 0; - this->computeAdvectiveFlux(flux, fluxVars); - } - - /*! - * \brief Evaluates the advective mass flux of all components over - * a face of a sub-control volume. - * - * \param flux The advective flux over the sub-control-volume face for each phase - * \param fluxVars The flux variables at the current SCV - * - * This method is called by compute flux and is mainly there for - * derived models to ease adding equations selectively. - */ - void computeAdvectiveFlux(PrimaryVariables &flux, - const FluxVariables &fluxVars) const { - // calculate effective permeability based on effective porosity - // according to the relation given in Rutqvist and Tsang (2002) - // this evaluation should be moved to another location - DimVector tmpVec; - - DimMatrix Keff, Keff_i, Keff_j; - Keff_i = EffectivePermeabilityModel::effectivePermeability(this->curVolVars_()[fluxVars.face().i], - this->problem_().spatialParams(), - this->element_(), - this->fvGeometry_(), - fluxVars.face().i); - Keff_j = EffectivePermeabilityModel::effectivePermeability(this->curVolVars_()[fluxVars.face().j], - this->problem_().spatialParams(), - this->element_(), - this->fvGeometry_(), - fluxVars.face().j); - - this->problem_().spatialParams().meanK(Keff, Keff_i, Keff_j); - // loop over all phases - for (int phaseIdx = 0; phaseIdx < numFluidPhases; ++phaseIdx) { - // data attached to upstream and the downstream vertices - // of the current phase - // calculate the flux in the normal direction of the - // current sub control volume face - - // if geomechanical feedback on flow is taken into account the effective permeability is - // applied for the flux calculations - if (this->problem_().coupled() == true) { - Keff.mv(fluxVars.potentialGrad(phaseIdx), tmpVec); - } else { - fluxVars.intrinsicPermeability().mv( - fluxVars.potentialGrad(phaseIdx), tmpVec); - } - Scalar normalFlux = -(tmpVec * fluxVars.face().normal); - - // data attached to upstream and the downstream vertices - // of the current phase - const VolumeVariables &up = this->curVolVars_( - fluxVars.upstreamIdx(phaseIdx)); - const VolumeVariables &dn = this->curVolVars_( - fluxVars.downstreamIdx(phaseIdx)); - - // add advective flux of current phase - int eqIdx = (phaseIdx == wPhaseIdx) ? contiWEqIdx : contiNEqIdx; - flux[eqIdx] += normalFlux - * ((massUpwindWeight_) * up.density(phaseIdx) - * up.mobility(phaseIdx) - + (massUpwindWeight_) * dn.density(phaseIdx) - * dn.mobility(phaseIdx)); - - // if geomechanical feedback on flow is taken into account add the flux contribution - // of the displacement velocity - - if (this->problem_().coupled() == true) { - // use upwind displacement velocity to calculate phase transport (?) - flux[eqIdx] += up.effPorosity * up.saturation(phaseIdx) - * up.density(phaseIdx) * fluxVars.timeDerivUNormal(); - } - - } - } - - /*! - * \brief Calculate the source term of the equation - * - * \param q The source/sink in the SCV for each phase - * \param scvIdx The index of the SCV - * - */ - void computeSource(PrimaryVariables &q, int scvIdx) { - // retrieve the source term intrinsic to the problem - this->problem_().source(q, this->element_(), this->fvGeometry_(), - scvIdx); - } - -protected: - Implementation *asImp_() { - return static_cast<Implementation *>(this); - } - const Implementation *asImp_() const { - return static_cast<const Implementation *>(this); - } - -private: - Scalar massUpwindWeight_; -}; -} -#endif diff --git a/dumux/geomechanics/el2p/model.hh b/dumux/geomechanics/el2p/model.hh deleted file mode 100644 index 19a8610d6e6a1a39f09bad42325a4a18f8667cc6..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el2p/model.hh +++ /dev/null @@ -1,717 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ - -/*! -* \file -* -* \brief Adaption of the fully implicit scheme to the two-phase linear elasticity model. -*/ - -#ifndef DUMUX_ELASTIC2P_MODEL_HH -#define DUMUX_ELASTIC2P_MODEL_HH - -#include <dune/pdelab/gridfunctionspace/interpolate.hh> -#include <dumux/common/eigenvalues.hh> -#include "properties.hh" - -namespace Dumux { - -namespace Properties { -NEW_PROP_TAG(InitialDisplacement); //!< The initial displacement function -NEW_PROP_TAG(InitialPressSat); //!< The initial pressure and saturation function -} - -/*! - * \ingroup ElTwoPBoxModel - * \brief Adaption of the fully implicit scheme to the two-phase linear elasticity model. - * - * This model implements a two-phase flow of compressible immiscible fluids \f$\alpha \in \{ w, n \}\f$. - * The deformation of the solid matrix is described with a quasi-stationary momentum balance equation. - * The influence of the pore fluid is accounted for through the effective stress concept (Biot 1941). - * The total stress acting on a rock is partially supported by the rock matrix and partially supported - * by the pore fluid. The effective stress represents the share of the total stress which is supported - * by the solid rock matrix and can be determined as a function of the strain according to Hooke's law. - * - * As an equation for the conservation of momentum within the fluid phases the standard multiphase Darcy's approach is used: - \f[ - v_\alpha = - \frac{k_{r\alpha}}{\mu_\alpha} \textbf{K} - \left(\textbf{grad}\, p_\alpha - \varrho_{\alpha} {\textbf g} \right) - \f] - * - * Gravity can be enabled or disabled via the property system. - * By inserting this into the continuity equation, one gets -\f[ - \frac{\partial \phi_{eff} \varrho_\alpha S_\alpha}{\partial t} - - \text{div} \left\{ \varrho_\alpha \frac{k_{r\alpha}}{\mu_\alpha} - \mathbf{K}_\text{eff} \left(\textbf{grad}\, p_\alpha - \varrho_{\alpha} \mathbf{g} \right) - - \phi_{eff} \varrho_\alpha S_\alpha \frac{\partial \mathbf{u}}{\partial t} - \right\} - q_\alpha = 0 \;, - \f] - * - * - * A quasi-stationary momentum balance equation is solved for the changes with respect to the initial conditions (Darcis 2012), note - * that this implementation assumes the soil mechanics sign convention (i.e. compressive stresses are negative): - \f[ - \text{div}\left( \boldsymbol{\Delta \sigma'}- \Delta p_{eff} \boldsymbol{I} \right) + \Delta \varrho_b {\textbf g} = 0 \;, - \f] - * with the effective stress: - \f[ - \boldsymbol{\sigma'} = 2\,G\,\boldsymbol{\epsilon} + \lambda \,\text{tr} (\boldsymbol{\epsilon}) \, \mathbf{I}. - \f] - * - * and the strain tensor \f$\boldsymbol{\epsilon}\f$ as a function of the solid displacement gradient \f$\textbf{grad} \mathbf{u}\f$: - \f[ - \boldsymbol{\epsilon} = \frac{1}{2} \, (\textbf{grad} \mathbf{u} + \textbf{grad}^T \mathbf{u}). - \f] - * - * Here, the rock mechanics sign convention is switch off which means compressive stresses are < 0 and tensile stresses are > 0. - * The rock mechanics sign convention can be switched on for the vtk output via the property system. - * - * The effective porosity and the effective permeability are calculated as a function of the solid displacement: - \f[ - \phi_{eff} = \frac{\phi_{init} + \text{div} \mathbf{u}}{1 + \text{div} \mathbf{u}} - \f] - \f[ - K_{eff} = K_{init} \text{exp}\left( 22.2(\phi_{eff}/\phi_{init} -1 )\right) - \f] - * The mass balance equations are discretized using a vertex-centered finite volume (box) - * or cell-centered finite volume scheme as spatial and the implicit Euler method as time discretization. - * The momentum balance equations are discretized using a standard Galerkin Finite Element method as - * spatial discretization scheme. - * - * - * The primary variables are the wetting phase pressure \f$p_w\f$, the nonwetting phase saturation \f$S_n\f$ and the solid - * displacement vector \f$\mathbf{u}\f$ (changes in solid displacement with respect to initial conditions). - */ -template<class TypeTag> -class ElTwoPModel: public GET_PROP_TYPE(TypeTag, BaseModel) -{ - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables) ElementVolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - enum { - numEq = GET_PROP_VALUE(TypeTag, NumEq), - nPhaseIdx = Indices::nPhaseIdx, - wPhaseIdx = Indices::wPhaseIdx - }; - - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - enum { - dim = GridView::dimension, - dimWorld = GridView::dimensionworld - }; - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename Element::Geometry::JacobianInverseTransposed JacobianInverseTransposed; - - typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; - typedef Dune::FieldVector<Scalar, dim> DimVector; - typedef Dune::FieldMatrix<Scalar, dim, dim> DimMatrix; - - typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; - typedef typename GET_PROP_TYPE(TypeTag, GridFunctionSpace) GridFunctionSpace; - typedef Dune::PDELab::LocalFunctionSpace<GridFunctionSpace> LocalFunctionSpace; - -public: - - /*! - * \brief Write the current solution to a restart file. - * - * \param outStream The output stream of one vertex for the restart file - * \param entity The Entity - * - * Due to the mixed discretization schemes which are combined via pdelab for this model - * the solution vector has a different form than in the pure box models - * it sorts the primary variables in the following way: - * p_vertex0 S_vertex0 p_vertex1 S_vertex1 p_vertex2 ....p_vertexN S_vertexN - * ux_vertex0 uy_vertex0 uz_vertex0 ux_vertex1 uy_vertex1 uz_vertex1 ... - * - * Therefore, the serializeEntity function has to be modified. - */ - template <class Entity> - void serializeEntity(std::ostream &outStream, - const Entity &entity) - { - // vertex index - int dofIdxGlobal = this->dofMapper().index(entity); - - // write phase state - if (!outStream.good()) { - DUNE_THROW(Dune::IOError, - "Could not serialize vertex " - << dofIdxGlobal); - } - int numScv = this->gridView().size(dim); - // get p and S entries for this vertex - for (int eqIdx = 0; eqIdx < numEq-dim; ++eqIdx) { - outStream << this->curSol().base()[dofIdxGlobal*(numEq-dim) + eqIdx][0]<<" "; - } - // get ux, uy, uz entries for this vertex - for (int j = 0; j< dim; ++j) - outStream << this->curSol().base()[numScv*(numEq-dim) + dofIdxGlobal*dim + j][0] <<" "; - - int vIdxGlobal = this->dofMapper().index(entity); - if (!outStream.good()) - DUNE_THROW(Dune::IOError, "Could not serialize vertex " << vIdxGlobal); - } - - /*! - * \brief Reads the current solution for a vertex from a restart - * file. - * - * \param inStream The input stream of one vertex from the restart file - * \param entity The Entity - * - * Due to the mixed discretization schemes which are combined via pdelab for this model - * the solution vector has a different form than in the pure box models - * it sorts the primary variables in the following way: - * p_vertex0 S_vertex0 p_vertex1 S_vertex1 p_vertex2 ....p_vertexN S_vertexN - * ux_vertex0 uy_vertex0 uz_vertex0 ux_vertex1 uy_vertex1 uz_vertex1 ... - * - * Therefore, the deserializeEntity function has to be modified. - */ - template<class Entity> - void deserializeEntity(std::istream &inStream, const Entity &entity) - { - int dofIdxGlobal = this->dofMapper().index(entity); - - if (!inStream.good()){ - DUNE_THROW(Dune::IOError, - "Could not deserialize vertex " - << dofIdxGlobal); - } - int numScv = this->gridView().size(dim); - for (int eqIdx = 0; eqIdx < numEq-dim; ++eqIdx) { - // read p and S entries for this vertex - inStream >> this->curSol().base()[dofIdxGlobal*(numEq-dim) + eqIdx][0];} - for (int j = 0; j< dim; ++j){ - // read ux, uy, uz entries for this vertex - inStream >> this->curSol().base()[numScv*(numEq-dim) + dofIdxGlobal*dim + j][0];} - } - - - /*! - * \brief \copybrief ImplicitModel::addOutputVtkFields - * - * Specialization for the ElOnePTwoCBoxModel, add one-phase two-component - * properties, solid displacement, stresses, effective properties and the - * process rank to the VTK writer. - */ - template<class MultiWriter> - void addOutputVtkFields(const SolutionVector &sol, MultiWriter &writer) { - // check whether compressive stresses are defined to be positive - // (rockMechanicsSignConvention_ == true) or negative - rockMechanicsSignConvention_ = GET_PARAM_FROM_GROUP(TypeTag, bool, Vtk, RockMechanicsSignConvention); - - typedef Dune::BlockVector<Dune::FieldVector<double, 1> > ScalarField; - typedef Dune::BlockVector<Dune::FieldVector<double, dim> > VectorField; - - // create the required scalar and vector fields - unsigned numVertices = this->gridView_().size(dim); - unsigned numElements = this->gridView_().size(0); - - // create the required fields for vertex data - ScalarField &pw = *writer.allocateManagedBuffer(numVertices); - ScalarField &pn = *writer.allocateManagedBuffer(numVertices); - ScalarField &pc = *writer.allocateManagedBuffer(numVertices); - ScalarField &sw = *writer.allocateManagedBuffer(numVertices); - ScalarField &sn = *writer.allocateManagedBuffer(numVertices); - VectorField &displacement = *writer.template allocateManagedBuffer<Scalar, dim>(numVertices); - ScalarField &rhoW = *writer.allocateManagedBuffer(numVertices); - ScalarField &rhoN = *writer.allocateManagedBuffer(numVertices); - ScalarField &Te = *writer.allocateManagedBuffer(numVertices); - - // create the required fields for element data - // effective stresses - VectorField &deltaEffStressX = *writer.template allocateManagedBuffer<Scalar, - dim>(numElements); - VectorField &deltaEffStressY = *writer.template allocateManagedBuffer<Scalar, - dim>(numElements); - VectorField &deltaEffStressZ = *writer.template allocateManagedBuffer<Scalar, - dim>(numElements); - // total stresses - VectorField &totalStressX = *writer.template allocateManagedBuffer< - Scalar, dim>(numElements); - VectorField &totalStressY = *writer.template allocateManagedBuffer< - Scalar, dim>(numElements); - VectorField &totalStressZ = *writer.template allocateManagedBuffer< - Scalar, dim>(numElements); - // initial stresses - VectorField &initStressX = *writer.template allocateManagedBuffer< - Scalar, dim>(numElements); - VectorField &initStressY = *writer.template allocateManagedBuffer< - Scalar, dim>(numElements); - VectorField &initStressZ = *writer.template allocateManagedBuffer< - Scalar, dim>(numElements); - // principal stresses - ScalarField &principalStress1 = *writer.allocateManagedBuffer( - numElements); - ScalarField &principalStress2 = *writer.allocateManagedBuffer( - numElements); - ScalarField &principalStress3 = *writer.allocateManagedBuffer( - numElements); - - - ScalarField &effKx = *writer.allocateManagedBuffer(numElements); - ScalarField &effPorosity = *writer.allocateManagedBuffer(numElements); - ScalarField &effectivePressure = *writer.allocateManagedBuffer(numElements); - ScalarField &deltaEffPressure = *writer.allocateManagedBuffer(numElements); - - - ScalarField &Pcrtens = *writer.allocateManagedBuffer(numElements); - ScalarField &Pcrshe = *writer.allocateManagedBuffer(numElements); - - // initialize cell stresses, cell-wise hydraulic parameters and cell pressure with zero - - - for (unsigned int eIdx = 0; eIdx < numElements; ++eIdx) { - deltaEffStressX[eIdx] = Scalar(0.0); - if (dim >= 2) - deltaEffStressY[eIdx] = Scalar(0.0); - if (dim >= 3) - deltaEffStressZ[eIdx] = Scalar(0.0); - - totalStressX[eIdx] = Scalar(0.0); - if (dim >= 2) - totalStressY[eIdx] = Scalar(0.0); - if (dim >= 3) - totalStressZ[eIdx] = Scalar(0.0); - - initStressX[eIdx] = Scalar(0.0); - if (dim >= 2) - initStressY[eIdx] = Scalar(0.0); - if (dim >= 3) - initStressZ[eIdx] = Scalar(0.0); - - principalStress1[eIdx] = Scalar(0.0); - if (dim >= 2) - principalStress2[eIdx] = Scalar(0.0); - if (dim >= 3) - principalStress3[eIdx] = Scalar(0.0); - - effPorosity[eIdx] = Scalar(0.0); - effKx[eIdx] = Scalar(0.0); - effectivePressure[eIdx] = Scalar(0.0); - deltaEffPressure[eIdx] = Scalar(0.0); - - Pcrtens[eIdx] = Scalar(0.0); - Pcrshe[eIdx] = Scalar(0.0); - } - - ScalarField &rank = *writer.allocateManagedBuffer(numElements); - - - FVElementGeometry fvGeometry; - ElementVolumeVariables elemVolVars; - - const GridFunctionSpace& gridFunctionSpace = this->problem_().model().jacobianAssembler().gridFunctionSpace(); - const typename GridFunctionSpace::Ordering& ordering = gridFunctionSpace.ordering(); - // initialize start and end of element iterator - // loop over all elements (cells) - for (const auto& element : elements(this->gridView_(), Dune::Partitions::interior)) - { - // get FE function spaces to calculate gradients (gradient data of momentum balance - // equation is not stored in fluxvars since it is not evaluated at box integration point) - // copy the values of the sol vector to the localFunctionSpace values of the current element - LocalFunctionSpace localFunctionSpace(gridFunctionSpace); - localFunctionSpace.bind(element); - std::vector<Scalar> values(localFunctionSpace.size()); - for (typename LocalFunctionSpace::Traits::IndexContainer::size_type k=0; k<localFunctionSpace.size(); ++k) - { - const typename GridFunctionSpace::Ordering::Traits::DOFIndex& di = localFunctionSpace.dofIndex(k); - typename GridFunctionSpace::Ordering::Traits::ContainerIndex ci; - ordering.mapIndex(di.view(),ci); - values[k] = sol[ci]; - } - - // local function space for solid displacement - typedef typename LocalFunctionSpace::template Child<1>::Type DisplacementLFS; - const DisplacementLFS& displacementLFS =localFunctionSpace.template child<1>(); - const unsigned int dispSize = displacementLFS.child(0).size(); - typedef typename DisplacementLFS::template Child<0>::Type ScalarDispLFS; - // further types required for gradient calculations - typedef typename ScalarDispLFS::Traits::FiniteElementType::Traits::LocalBasisType::Traits::JacobianType JacobianType_V; - typedef typename ScalarDispLFS::Traits::FiniteElementType::Traits::LocalBasisType::Traits::RangeFieldType RF; - - unsigned int eIdx = this->problem_().model().elementMapper().index(element); - rank[eIdx] = this->gridView_().comm().rank(); - - fvGeometry.update(this->gridView_(), element); - elemVolVars.update(this->problem_(), element, fvGeometry, false); - - // loop over all local vertices of the cell - int numScv = element.subEntities(dim); - - for (int scvIdx = 0; scvIdx < numScv; ++scvIdx) - { - unsigned int vIdxGlobal = this->dofMapper().subIndex(element, scvIdx, dim); - - Te[vIdxGlobal] = elemVolVars[scvIdx].temperature(); - pw[vIdxGlobal] = elemVolVars[scvIdx].pressure(wPhaseIdx); - pn[vIdxGlobal] = elemVolVars[scvIdx].pressure(nPhaseIdx); - pc[vIdxGlobal] = elemVolVars[scvIdx].capillaryPressure(); - sw[vIdxGlobal] = elemVolVars[scvIdx].saturation(wPhaseIdx); - sn[vIdxGlobal] = elemVolVars[scvIdx].saturation(nPhaseIdx); - rhoW[vIdxGlobal] = elemVolVars[scvIdx].density(wPhaseIdx); - rhoN[vIdxGlobal] = elemVolVars[scvIdx].density(nPhaseIdx); - // the following lines are correct for rock mechanics sign convention - // but lead to a very counter-intuitive output therefore, they are commented. - // in case of rock mechanics sign convention solid displacement is - // defined to be negative if it points in positive coordinate direction -// if(rockMechanicsSignConvention_){ -// DimVector tmpDispl; -// tmpDispl = Scalar(0); -// tmpDispl -= elemVolVars[scvIdx].displacement(); -// displacement[vIdxGlobal] = tmpDispl; -// } -// -// else - displacement[vIdxGlobal] = elemVolVars[scvIdx].displacement(); - - double Keff; - double exponent; - exponent = 22.2 * (elemVolVars[scvIdx].effPorosity - / elemVolVars[scvIdx].porosity() - 1); - Keff = this->problem_().spatialParams().intrinsicPermeability( element, fvGeometry, scvIdx)[0][0]; - using std::exp; - Keff *= exp(exponent); - effKx[eIdx] += Keff/ numScv; - effectivePressure[eIdx] += (pn[vIdxGlobal] * sn[vIdxGlobal] - + pw[vIdxGlobal] * sw[vIdxGlobal]) - / numScv; - effPorosity[eIdx] +=elemVolVars[scvIdx].effPorosity / numScv; - }; - - const auto geometry = element.geometry(); - - const GlobalPosition& cellCenter = geometry.center(); - const GlobalPosition& cellCenterLocal = geometry.local(cellCenter); - - deltaEffPressure[eIdx] = effectivePressure[eIdx] + this->problem().pInit(cellCenter, cellCenterLocal, element); - // determin changes in effective stress from current solution - // evaluate gradient of displacement shape functions - std::vector<JacobianType_V> vRefShapeGradient(dispSize); - displacementLFS.child(0).finiteElement().localBasis().evaluateJacobian(cellCenterLocal, vRefShapeGradient); - - // get jacobian to transform the gradient to physical element - const JacobianInverseTransposed jacInvT = geometry.jacobianInverseTransposed(cellCenterLocal); - std::vector < Dune::FieldVector<RF, dim> > vShapeGradient(dispSize); - for (size_t i = 0; i < dispSize; i++) { - vShapeGradient[i] = 0.0; - jacInvT.umv(vRefShapeGradient[i][0], vShapeGradient[i]); - } - // calculate gradient of current displacement - typedef Dune::FieldMatrix<RF, dim, dim> DimMatrix; - DimMatrix uGradient(0.0); - for (int coordDir = 0; coordDir < dim; ++coordDir) { - const ScalarDispLFS & scalarDispLFS = displacementLFS.child(coordDir); - - for (size_t i = 0; i < scalarDispLFS.size(); i++) - uGradient[coordDir].axpy(values[scalarDispLFS.localIndex(i)],vShapeGradient[i]); - } - - const Dune::FieldVector<Scalar, 2> lameParams = this->problem_().spatialParams().lameParams(element,fvGeometry, 0); - const Scalar lambda = lameParams[0]; - const Scalar mu = lameParams[1]; - - // calculate strain tensor - Dune::FieldMatrix<RF, dim, dim> epsilon; - for (int i = 0; i < dim; ++i) - for (int j = 0; j < dim; ++j) - epsilon[i][j] = 0.5 * (uGradient[i][j] + uGradient[j][i]); - - RF traceEpsilon = 0; - for (int i = 0; i < dim; ++i) - traceEpsilon += epsilon[i][i]; - - // calculate effective stress tensor - Dune::FieldMatrix<RF, dim, dim> sigma(0.0); - for (int i = 0; i < dim; ++i) { - sigma[i][i] = lambda * traceEpsilon; - for (int j = 0; j < dim; ++j) - sigma[i][j] += 2.0 * mu * epsilon[i][j]; - } - - // in case of rock mechanics sign convention compressive stresses - // are defined to be positive - if(rockMechanicsSignConvention_){ - deltaEffStressX[eIdx] -= sigma[0]; - if (dim >= 2) { - deltaEffStressY[eIdx] -= sigma[1]; - } - if (dim >= 3) { - deltaEffStressZ[eIdx] -= sigma[2]; - } - } - else{ - deltaEffStressX[eIdx] = sigma[0]; - if (dim >= 2) { - deltaEffStressY[eIdx] = sigma[1]; - } - if (dim >= 3) { - deltaEffStressZ[eIdx] = sigma[2]; - } - } - - // retrieve prescribed initial stresses from problem file - DimVector tmpInitStress = this->problem_().initialStress(cellCenter, 0); - if(rockMechanicsSignConvention_){ - initStressX[eIdx][0] = tmpInitStress[0]; - if (dim >= 2) { - initStressY[eIdx][1] = tmpInitStress[1]; - } - if (dim >= 3) { - initStressZ[eIdx][2] = tmpInitStress[2]; - } - } - else{ - initStressX[eIdx][0] -= tmpInitStress[0]; - if (dim >= 2) { - initStressY[eIdx][1] -= tmpInitStress[1]; - } - if (dim >= 3) { - initStressZ[eIdx][2] -= tmpInitStress[2]; - } - } - - // calculate total stresses - // in case of rock mechanics sign convention compressive stresses - // are defined to be positive and total stress is calculated by adding the pore pressure - if(rockMechanicsSignConvention_){ - totalStressX[eIdx][0] = initStressX[eIdx][0] + deltaEffStressX[eIdx][0] + deltaEffPressure[eIdx]; - if (dim >= 2) { - totalStressX[eIdx][1] = initStressX[eIdx][1] + deltaEffStressX[eIdx][1]; - totalStressY[eIdx][0] = initStressY[eIdx][0] + deltaEffStressY[eIdx][0]; - totalStressY[eIdx][1] = initStressY[eIdx][1] + deltaEffStressY[eIdx][1] + deltaEffPressure[eIdx]; - } - if (dim >= 3) { - totalStressX[eIdx][2] = initStressX[eIdx][2] + deltaEffStressX[eIdx][2]; - totalStressY[eIdx][2] = initStressY[eIdx][2] + deltaEffStressY[eIdx][2]; - totalStressZ[eIdx][0] = initStressZ[eIdx][0] + deltaEffStressZ[eIdx][0]; - totalStressZ[eIdx][1] = initStressZ[eIdx][1] + deltaEffStressZ[eIdx][1]; - totalStressZ[eIdx][2] = initStressZ[eIdx][2] + deltaEffStressZ[eIdx][2] + deltaEffPressure[eIdx]; - } - } - else{ - totalStressX[eIdx][0] = initStressX[eIdx][0] + deltaEffStressX[eIdx][0] - deltaEffPressure[eIdx]; - if (dim >= 2) { - totalStressX[eIdx][1] = initStressX[eIdx][1] + deltaEffStressX[eIdx][1]; - totalStressY[eIdx][0] = initStressY[eIdx][0] + deltaEffStressY[eIdx][0]; - totalStressY[eIdx][1] = initStressY[eIdx][1] + deltaEffStressY[eIdx][1] - deltaEffPressure[eIdx]; - } - if (dim >= 3) { - totalStressX[eIdx][2] = initStressX[eIdx][2] + deltaEffStressX[eIdx][2]; - totalStressY[eIdx][2] = initStressY[eIdx][2] + deltaEffStressY[eIdx][2]; - totalStressZ[eIdx][0] = initStressZ[eIdx][0] + deltaEffStressZ[eIdx][0]; - totalStressZ[eIdx][1] = initStressZ[eIdx][1] + deltaEffStressZ[eIdx][1]; - totalStressZ[eIdx][2] = initStressZ[eIdx][2] + deltaEffStressZ[eIdx][2] - deltaEffPressure[eIdx]; - } - } - } - - // calculate principal stresses i.e. the eigenvalues of the total stress tensor - Scalar a1, a2, a3; - DimMatrix totalStress; - DimVector eigenValues; - - for (unsigned int eIdx = 0; eIdx < numElements; eIdx++) - { - eigenValues = Scalar(0); - totalStress = Scalar(0); - - totalStress[0] = totalStressX[eIdx]; - if (dim >= 2) - totalStress[1] = totalStressY[eIdx]; - if (dim >= 3) - totalStress[2] = totalStressZ[eIdx]; - - calculateEigenValues<dim>(eigenValues, totalStress); - - - for (int i = 0; i < dim; i++) - { - using std::isnan; - if (isnan(eigenValues[i])) - eigenValues[i] = 0.0; - } - - // sort principal stresses: principalStress1 >= principalStress2 >= principalStress3 - if (dim == 2) { - a1 = eigenValues[0]; - a2 = eigenValues[1]; - - if (a1 >= a2) { - principalStress1[eIdx] = a1; - principalStress2[eIdx] = a2; - } else { - principalStress1[eIdx] = a2; - principalStress2[eIdx] = a1; - } - } - - if (dim == 3) { - a1 = eigenValues[0]; - a2 = eigenValues[1]; - a3 = eigenValues[2]; - - if (a1 >= a2) { - if (a1 >= a3) { - principalStress1[eIdx] = a1; - if (a2 >= a3) { - principalStress2[eIdx] = a2; - principalStress3[eIdx] = a3; - } - else //a3 > a2 - { - principalStress2[eIdx] = a3; - principalStress3[eIdx] = a2; - } - } - else // a3 > a1 - { - principalStress1[eIdx] = a3; - principalStress2[eIdx] = a1; - principalStress3[eIdx] = a2; - } - } else // a2>a1 - { - if (a2 >= a3) { - principalStress1[eIdx] = a2; - if (a1 >= a3) { - principalStress2[eIdx] = a1; - principalStress3[eIdx] = a3; - } - else //a3>a1 - { - principalStress2[eIdx] = a3; - principalStress3[eIdx] = a1; - } - } - else //a3>a2 - { - principalStress1[eIdx] = a3; - principalStress2[eIdx] = a2; - principalStress3[eIdx] = a1; - } - } - } - Scalar taum = 0.0; - Scalar sigmam = 0.0; - Scalar Peff = effectivePressure[eIdx]; - - Scalar theta = M_PI / 6; - Scalar S0 = 0.0; - taum = (principalStress1[eIdx] - principalStress3[eIdx]) / 2; - sigmam = (principalStress1[eIdx] + principalStress3[eIdx]) / 2; - - using std::abs; - using std::sin; - using std::cos; - Scalar Psc = -abs(taum) / sin(theta) + S0 * cos(theta) / sin(theta) - + sigmam; - // Pressure margins according to J. Rutqvist et al. / International Journal of Rock Mecahnics & Mining Sciences 45 (2008), 132-143 - Pcrtens[eIdx] = Peff - principalStress3[eIdx]; - Pcrshe[eIdx] = Peff - Psc; - - } - - writer.attachVertexData(Te, "T"); - writer.attachVertexData(pw, "pW"); - writer.attachVertexData(pn, "pN"); - writer.attachVertexData(pc, "pC"); - writer.attachVertexData(sw, "SW"); - writer.attachVertexData(sn, "SN"); - writer.attachVertexData(rhoW, "rhoW"); - writer.attachVertexData(rhoN, "rhoN"); - writer.attachVertexData(displacement, "u", dim); - - writer.attachCellData(deltaEffStressX, "effective stress changes X", dim); - if (dim >= 2) - writer.attachCellData(deltaEffStressY, "effective stress changes Y", dim); - if (dim >= 3) - writer.attachCellData(deltaEffStressZ, "effective stress changes Z", dim); - - writer.attachCellData(principalStress1, "principal stress 1"); - if (dim >= 2) - writer.attachCellData(principalStress2, "principal stress 2"); - if (dim >= 3) - writer.attachCellData(principalStress3, "principal stress 3"); - - writer.attachCellData(totalStressX, "total stresses X", dim); - if (dim >= 2) - writer.attachCellData(totalStressY, "total stresses Y", dim); - if (dim >= 3) - writer.attachCellData(totalStressZ, "total stresses Z", dim); - - writer.attachCellData(initStressX, "initial stresses X", dim); - if (dim >= 2) - writer.attachCellData(initStressY, "initial stresses Y", dim); - if (dim >= 3) - writer.attachCellData(initStressZ, "initial stresses Z", dim); - - writer.attachCellData(deltaEffPressure, "delta pEff"); - writer.attachCellData(effectivePressure, "effectivePressure"); - writer.attachCellData(Pcrtens, "Pcr_tensile"); - writer.attachCellData(Pcrshe, "Pcr_shear"); - writer.attachCellData(effKx, "effective Kxx"); - writer.attachCellData(effPorosity, "effective Porosity"); - - - } - - /*! - * \brief Applies the initial solution for all vertices of the grid. - */ - void applyInitialSolution_() { - typedef typename GET_PROP_TYPE(TypeTag, InitialPressSat) InitialPressSat; - InitialPressSat initialPressSat(this->problem_().gridView()); - std::cout << "el2pmodel calls: initialPressSat" << std::endl; - initialPressSat.setPressure(this->problem_().pInit()); - - typedef typename GET_PROP_TYPE(TypeTag, InitialDisplacement) InitialDisplacement; - InitialDisplacement initialDisplacement(this->problem_().gridView()); - - typedef Dune::PDELab::CompositeGridFunction<InitialPressSat, - InitialDisplacement> InitialSolution; - InitialSolution initialSolution(initialPressSat, initialDisplacement); - - int numDofs = this->jacobianAssembler().gridFunctionSpace().size(); - //this->curSol().resize(numDofs); - //this->prevSol().resize(numDofs); - std::cout << "numDofs = " << numDofs << std::endl; - - Dune::PDELab::interpolate(initialSolution, - this->jacobianAssembler().gridFunctionSpace(), this->curSol()); - Dune::PDELab::interpolate(initialSolution, - this->jacobianAssembler().gridFunctionSpace(), this->prevSol()); - } - - const Problem& problem() const { - return this->problem_(); - } - -private: - bool rockMechanicsSignConvention_; - -}; -} -#include "propertydefaults.hh" -#endif diff --git a/dumux/geomechanics/el2p/newtoncontroller.hh b/dumux/geomechanics/el2p/newtoncontroller.hh deleted file mode 100644 index ddc648b5afe25d3092e26ff67f877189235af59f..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el2p/newtoncontroller.hh +++ /dev/null @@ -1,176 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - */ -#ifndef DUMUX_EL2P_NEWTON_CONTROLLER_HH -#define DUMUX_EL2P_NEWTON_CONTROLLER_HH - -#include <dumux/nonlinear/newtoncontroller.hh> - -namespace Dumux { - -/*! -* \brief An el2p specific controller for the newton solver. -* -* This controller 'knows' what a 'physically meaningful' solution is -* which allows the newton method to abort quicker if the solution is -* way out of bounds. - */ -template <class TypeTag> -class ElTwoPNewtonController : public NewtonController<TypeTag> -{ - typedef NewtonController<TypeTag> ParentType; - - typedef typename GET_PROP_TYPE(TypeTag, NewtonController) Implementation; - - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, NewtonMethod) NewtonMethod; - - typedef typename GET_PROP_TYPE(TypeTag, JacobianMatrix) JacobianMatrix; - typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; - typedef typename GET_PROP_TYPE(TypeTag, LinearSolver) LinearSolver; - -public: - /*! - * \brief Destructor - */ - ElTwoPNewtonController(const Problem &problem) - : ParentType(problem),linearSolver_(problem) - { - this->setTargetSteps(9); - this->setMaxSteps(18); - }; - - void newtonUpdateRelError(const SolutionVector &uOld, - const SolutionVector &deltaU) - { - // calculate the relative error as the maximum relative - // deflection in any degree of freedom. - this->shift_ = 0; - - using std::abs; - using std::max; - for (int i = 0; i < int(uOld.base().size()); ++i) { - Scalar vertErr = abs(deltaU.base()[i]/(1.0 + abs((uOld.base()[i]) + uOld.base()[i] - deltaU.base()[i])/2)); - this->shift_ = max(this->shift_, vertErr); - } - - this->shift_ = this->gridView_().comm().max(this->shift_); - } - - void newtonUpdate(SolutionVector &uCurrentIter, - const SolutionVector &uLastIter, - const SolutionVector &deltaU) - { -// this->writeConvergence_(uLastIter, deltaU); - - newtonUpdateRelError(uLastIter, deltaU); - - uCurrentIter = uLastIter; - uCurrentIter -= deltaU; - -// printvector(std::cout, deltaU, "new solution", "row", 12, 1, 3); - } - - /*! - * \brief Solve the linear system of equations \f$\mathbf{A}x - b = 0\f$. - * - * Throws NumericalProblem if the linear solver didn't - * converge. - * - * \param A The matrix of the linear system of equations - * \param x The vector which solves the linear system - * \param b The right hand side of the linear system - */ - void newtonSolveLinear(JacobianMatrix &A, - SolutionVector &x, - SolutionVector &b) - { - using std::min; - try { - if (this->numSteps_ == 0) - { - Scalar norm2 = b.base().two_norm2(); - if (this->gridView_().comm().size() > 1) - norm2 = this->gridView_().comm().sum(norm2); - - using std::sqrt; - initialAbsoluteError_ = sqrt(norm2); - lastAbsoluteError_ = initialAbsoluteError_; - } - - int converged = linearSolver_.solve(A.base(), x.base(), b.base()); -// printvector(std::cout, x.base(), "x", "row", 5, 1, 5); -// printvector(std::cout, b.base(), "rhs", "row", 5, 1, 5); -// Dune::writeMatrixToMatlab(A.base(), "matrix.txt"); - - // make sure all processes converged - int convergedRemote = converged; - if (this->gridView_().comm().size() > 1) - convergedRemote = this->gridView_().comm().min(converged); - - if (!converged) { - DUNE_THROW(NumericalProblem, - "Linear solver did not converge"); - } - else if (!convergedRemote) { - DUNE_THROW(NumericalProblem, - "Linear solver did not converge on a remote process"); - } - } - catch (Dune::MatrixBlockError e) { - // make sure all processes converged - int converged = 0; - if (this->gridView_().comm().size() > 1) - converged = this->gridView_().comm().min(converged); - - NumericalProblem p; - std::string msg; - std::ostringstream ms(msg); - ms << e.what() << "M=" << A.base()[e.r][e.c]; - p.message(ms.str()); - throw p; - } - catch (const Dune::Exception &e) { - // make sure all processes converged - int converged = 0; - if (this->gridView_().comm().size() > 1) - converged = this->gridView_().comm().min(converged); - - NumericalProblem p; - p.message(e.what()); - throw p; - } - } - - // absolute errors and tolerance - Scalar absoluteError_; - Scalar lastAbsoluteError_; - Scalar initialAbsoluteError_; - Scalar absoluteTolerance_; - - // the linear solver - LinearSolver linearSolver_; - -}; -} - -#endif diff --git a/dumux/geomechanics/el2p/properties.hh b/dumux/geomechanics/el2p/properties.hh deleted file mode 100644 index 3812656dcf8c59af1188a21b99aef7e88aa1cf8b..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el2p/properties.hh +++ /dev/null @@ -1,91 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Defines the properties required for the two phase linear-elastic model. - * - * This class inherits from the properties of the two-phase model and - * from the properties of the simple linear-elastic model - */ - -#ifndef DUMUX_ELASTIC2P_PROPERTIES_HH -#define DUMUX_ELASTIC2P_PROPERTIES_HH - -#include <dumux/implicit/box/properties.hh> -#include <dumux/porousmediumflow/2p/implicit/properties.hh> - -namespace Dumux -{ -//////////////////////////////// -// properties -//////////////////////////////// -namespace Properties -{ -////////////////////////////////////////////////////////////////// -// Type tags -////////////////////////////////////////////////////////////////// - -//! The type tag for the twophase model with a linear elastic matrix -NEW_TYPE_TAG(BoxElasticTwoP, INHERITS_FROM(BoxModel)); - -////////////////////////////////////////////////////////////////// -// Property tags -////////////////////////////////////////////////////////////////// -NEW_PROP_TAG(DisplacementGridFunctionSpace); //!< grid function space for the displacement -NEW_PROP_TAG(PressureGridFunctionSpace); //!< grid function space for the pressure, saturation, ... -NEW_PROP_TAG(GridOperatorSpace); //!< The grid operator space -NEW_PROP_TAG(GridOperator); //!< The grid operator space -NEW_PROP_TAG(PressureFEM); //!< FE space used for pressure, saturation, ... -NEW_PROP_TAG(DisplacementFEM); //!< FE space used for displacement - -//! Returns whether the output should be written according to -//! rock mechanics sign convention (compressive stresses > 0) -NEW_PROP_TAG(VtkRockMechanicsSignConvention); - -//! Specifies the grid function space used for sub-problems -NEW_PROP_TAG(GridFunctionSpace); - -//! Specifies the grid operator used for sub-problems -NEW_PROP_TAG(GridOperator); - -//! Specifies the grid operator space used for sub-problems -NEW_PROP_TAG(GridOperatorSpace); - -//! Specifies the type of the constraints -NEW_PROP_TAG(Constraints); - -//! Specifies the type of the constraints transformation -NEW_PROP_TAG(ConstraintsTrafo); - -//! Specifies the local finite element space -NEW_PROP_TAG(LocalFEMSpace); - -//! Specifies the local operator -NEW_PROP_TAG(LocalOperator); - -//! The type traits required for using the AMG backend -NEW_PROP_TAG(AmgTraits); - -NEW_PROP_TAG(EffectivePermeabilityModel); -} - -} - -#endif diff --git a/dumux/geomechanics/el2p/propertydefaults.hh b/dumux/geomechanics/el2p/propertydefaults.hh deleted file mode 100644 index 251008ce06e0a98914dc4c8d4038441fee61175b..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el2p/propertydefaults.hh +++ /dev/null @@ -1,443 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Defines the properties required for the two phase linear-elastic model. - * - * This class inherits from the properties of the two-phase model and - * from the properties of the simple linear-elastic model - */ - -#ifndef DUMUX_ELASTIC2P_PROPERTY_DEFAULTS_HH -#define DUMUX_ELASTIC2P_PROPERTY_DEFAULTS_HH - -#include <dune/istl/schwarz.hh> -#include <dune/istl/novlpschwarz.hh> -#include <dune/istl/owneroverlapcopy.hh> -#include <dune/istl/paamg/pinfo.hh> -#include <dune/istl/preconditioners.hh> - -#include <dune/pdelab/backend/istlmatrixbackend.hh> -#include <dune/pdelab/gridfunctionspace/gridfunctionspace.hh> -#include <dune/pdelab/backend/istlvectorbackend.hh> -#include <dune/pdelab/common/function.hh> -#include <dune/pdelab/gridoperator/gridoperator.hh> -#include <dune/pdelab/finiteelementmap/qkfem.hh> - -#include "properties.hh" - -#include "model.hh" -#include "basemodel.hh" -#include "indices.hh" -#include "localresidual.hh" -#include "localjacobian.hh" -#include "fluxvariables.hh" -#include "elementvolumevariables.hh" -#include "volumevariables.hh" -#include "localoperator.hh" -#include "assembler.hh" -#include "newtoncontroller.hh" -#include "indices.hh" -#include <dumux/implicit/box/propertydefaults.hh> -#include <dumux/porousmediumflow/2p/implicit/propertydefaults.hh> -#include <dumux/linear/seqsolverbackend.hh> -#include <dumux/linear/amgbackend.hh> - -#include <dumux/material/fluidmatrixinteractions/permeabilityrutqvisttsang.hh> - -namespace Dumux -{ - -////////////////////////////////////////////////////////////////// -// Property defaults -////////////////////////////////////////////////////////////////// - -namespace Properties -{ -SET_PROP(BoxElasticTwoP, NumEq) //!< set the number of equations to dim + 2 -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, Grid) Grid; - static const int dim = Grid::dimension; -public: - static const int value = dim + 2; -}; - -SET_INT_PROP(BoxElasticTwoP, NumPhases, 2); //!< The number of fluid phases in the elastic 2p model is 2 - -//! Use the elastic local jacobian operator for the two-phase linear-elastic model -SET_TYPE_PROP(BoxElasticTwoP, - LocalResidual, - ElTwoPLocalResidual<TypeTag>); - -//! the Model property -SET_TYPE_PROP(BoxElasticTwoP, Model, ElTwoPModel<TypeTag>); - -/*! - * \brief An array of secondary variable containers. - */ -SET_TYPE_PROP(BoxElasticTwoP, ElementVolumeVariables, ElTwoPElementVolumeVariables<TypeTag>); - -//! the VolumeVariables property -SET_TYPE_PROP(BoxElasticTwoP, VolumeVariables, ElTwoPVolumeVariables<TypeTag>); - -//! Set the default formulation to pWsN -SET_INT_PROP(BoxElasticTwoP, - Formulation, - 0); - -//! The indices required by the two-phase linear-elastic model - -SET_PROP(BoxElasticTwoP, Indices) -{ - typedef ElTwoPIndices<TypeTag> type; -}; - -//! The FluxVariables required by the two-phase linear-elastic model -SET_TYPE_PROP(BoxElasticTwoP, FluxVariables, ElTwoPFluxVariables<TypeTag>); - -//! the default upwind factor. Default 1.0, i.e. fully upwind... -SET_SCALAR_PROP(BoxElasticTwoP, ImplicitMassUpwindWeight, 1.0); - -//! weight for the upwind mobility in the velocity calculation -SET_SCALAR_PROP(BoxElasticTwoP, ImplicitMobilityUpwindWeight, 1.0); - -//! enable gravity by default -SET_BOOL_PROP(BoxElasticTwoP, ProblemEnableGravity, true); - - -//! Enable evaluation of shape function gradients at the sub-control volume center by default -// Used for the computation of the pressure gradients -SET_BOOL_PROP(BoxElasticTwoP, EvalGradientsAtSCVCenter, true); - -/*! - * \brief Set the property for the material parameters by extracting - * it from the material law. - */ -SET_PROP(BoxElasticTwoP, MaterialLawParams) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw; - -public: - typedef typename MaterialLaw::Params type; -}; - -SET_PROP(BoxElasticTwoP, EffectivePermeabilityModel) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; -public: - typedef PermeabilityRutqvistTsang<Scalar> type; -}; - -// SET_TYPE_PROP(BoxElasticTwoP, EffectivePermeabilityModel, PermeabilityRutqvistTsang<typename GET_PROP_TYPE(TypeTag, Scalar), typename GET_PROP_TYPE(TypeTag, Gridview)::dimension>); - -// use the SuperLU linear solver by default -#if HAVE_SUPERLU -SET_TYPE_PROP(BoxElasticTwoP, LinearSolver, SuperLUBackend<TypeTag> ); -#else -#warning no SuperLU detected, defaulting to ILU0BiCGSTAB. For many problems, the el2p model requires a direct solver. -SET_TYPE_PROP(BoxElasticTwoP, LinearSolver, ILU0BiCGSTABBackend<TypeTag> ); -#endif - -// set the grid operator -SET_PROP(BoxElasticTwoP, GridOperator) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, ConstraintsTrafo) ConstraintsTrafo; - typedef typename GET_PROP_TYPE(TypeTag, GridFunctionSpace) GridFunctionSpace; - typedef typename GET_PROP_TYPE(TypeTag, LocalOperator) LocalOperator; - typedef typename Dune::PDELab::ISTLMatrixBackend MatrixBackend; - - enum{numEq = GET_PROP_VALUE(TypeTag, NumEq)}; - -public: - - typedef Dune::PDELab::GridOperator<GridFunctionSpace, - GridFunctionSpace, - LocalOperator, - MatrixBackend, - Scalar, Scalar, Scalar, - ConstraintsTrafo, - ConstraintsTrafo, - true - > type; -}; - -SET_PROP(BoxElasticTwoP, JacobianMatrix) -{ -private: - //typedef typename GET_PROP_TYPE(TypeTag, GridOperator) GridOperator; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, GridFunctionSpace) GFSU; - typedef typename GFSU::template ConstraintsContainer<Scalar>::Type CU; - //! The global assembler type - typedef Dune::PDELab::DefaultAssembler<GFSU,GFSU,CU,CU,true> Assembler; - - //! The type of the domain (solution). - typedef typename Dune::PDELab::BackendVectorSelector<GFSU,Scalar>::Type Domain; - //! The type of the range (residual). - typedef typename Dune::PDELab::BackendVectorSelector<GFSU,Scalar>::Type Range; - //! The type of the jacobian. - typedef typename Dune::PDELab::ISTLMatrixBackend MB; - typedef typename Dune::PDELab::BackendMatrixSelector<MB,Domain,Range,Scalar>::Type Jacobian; - - //! The local assembler type - typedef typename GET_PROP_TYPE(TypeTag, LocalOperator) LOP; - typedef typename GET_PROP_TYPE(TypeTag, GridOperator) GridOperator; - typedef Dune::PDELab::DefaultLocalAssembler<GridOperator,LOP,true> - LocalAssembler; - //! The grid operator traits - typedef Dune::PDELab::GridOperatorTraits - <GFSU,GFSU,MB,Scalar,Scalar,Scalar,CU,CU,Assembler,LocalAssembler> Traits; -public: - typedef typename Traits::Jacobian type; -}; - -SET_PROP(BoxElasticTwoP, SolutionVector) -{ -private: - //typedef typename GET_PROP_TYPE(TypeTag, GridOperator) GridOperator; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, GridFunctionSpace) GFSU; - typedef typename GFSU::template ConstraintsContainer<Scalar>::Type CU; - //! The global assembler type - typedef Dune::PDELab::DefaultAssembler<GFSU,GFSU,CU,CU,true> Assembler; - - //! The type of the domain (solution). - typedef typename Dune::PDELab::BackendVectorSelector<GFSU,Scalar>::Type Domain; - //! The type of the range (residual). - typedef typename Dune::PDELab::BackendVectorSelector<GFSU,Scalar>::Type Range; - //! The type of the jacobian. - typedef typename Dune::PDELab::ISTLMatrixBackend MB; - typedef typename Dune::PDELab::BackendMatrixSelector<MB,Domain,Range,Scalar>::Type Jacobian; - - //! The local assembler type - typedef typename GET_PROP_TYPE(TypeTag, LocalOperator) LOP; - typedef typename GET_PROP_TYPE(TypeTag, GridOperator) GridOperator; - typedef Dune::PDELab::DefaultLocalAssembler<GridOperator,LOP,true> - LocalAssembler; - //! The grid operator traits - typedef Dune::PDELab::GridOperatorTraits - <GFSU,GFSU,MB,Scalar,Scalar,Scalar,CU,CU,Assembler,LocalAssembler> Traits; -public: - typedef typename Traits::Domain type; -}; - -SET_PROP(BoxElasticTwoP, PressureGridFunctionSpace) -{private: - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, PressureFEM) FEM; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename Dune::PDELab::EntityBlockedOrderingTag OrderingTag; - typedef typename Dune::PDELab::ISTLVectorBackend<> VBE; - enum{numEq = GET_PROP_VALUE(TypeTag, NumEq), - dim = GridView::dimension}; -public: - typedef Dune::PDELab::NoConstraints Constraints; - - typedef Dune::PDELab::GridFunctionSpace<GridView, FEM, Constraints, VBE> - ScalarGridFunctionSpace; - - typedef Dune::PDELab::PowerGridFunctionSpace<ScalarGridFunctionSpace, numEq-dim, VBE, OrderingTag> - type; - - typedef typename type::template ConstraintsContainer<Scalar>::Type - ConstraintsTrafo; -}; - -SET_PROP(BoxElasticTwoP, DisplacementGridFunctionSpace) -{private: - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, DisplacementFEM) FEM; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename Dune::PDELab::EntityBlockedOrderingTag OrderingTag; - typedef typename Dune::PDELab::ISTLVectorBackend<> VBE; - enum{dim = GridView::dimension}; -public: - typedef Dune::PDELab::NoConstraints Constraints; - - typedef Dune::PDELab::GridFunctionSpace<GridView, FEM, Constraints, VBE> - ScalarGridFunctionSpace; - - typedef Dune::PDELab::PowerGridFunctionSpace<ScalarGridFunctionSpace, dim, VBE, OrderingTag> - type; - - typedef typename type::template ConstraintsContainer<Scalar>::Type - ConstraintsTrafo; -}; - -SET_PROP(BoxElasticTwoP, GridFunctionSpace) -{private: - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, PressureGridFunctionSpace) PressureGFS; - typedef typename GET_PROP_TYPE(TypeTag, DisplacementGridFunctionSpace) DisplacementGFS; - typedef typename Dune::PDELab::LexicographicOrderingTag OrderingTag; - typedef typename Dune::PDELab::ISTLVectorBackend<> VBE; -public: - typedef Dune::PDELab::NoConstraints Constraints; - - typedef void ScalarGridFunctionSpace; - - typedef Dune::PDELab::CompositeGridFunctionSpace<VBE, OrderingTag, PressureGFS, DisplacementGFS> type; - - typedef typename type::template ConstraintsContainer<Scalar>::Type - ConstraintsTrafo; -}; - -SET_PROP(BoxElasticTwoP, ConstraintsTrafo) -{private: - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, GridFunctionSpace) GridFunctionSpace; -public: - typedef typename GridFunctionSpace::template ConstraintsContainer<Scalar>::Type type; -}; - -// set the grid function space for the sub-models -SET_TYPE_PROP(BoxElasticTwoP, Constraints, Dune::PDELab::NoConstraints); - -SET_TYPE_PROP(BoxElasticTwoP, JacobianAssembler, PDELab::El2PAssembler<TypeTag>); - -SET_PROP(BoxElasticTwoP, WettingPhase) -{ private: - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; -public: - typedef FluidSystems::LiquidPhase<Scalar, NullComponent<Scalar> > type; -}; - -SET_PROP(BoxElasticTwoP, NonwettingPhase) -{ private: - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; -public: - typedef FluidSystems::LiquidPhase<Scalar, NullComponent<Scalar> > type; -}; - -SET_PROP(BoxElasticTwoP, FluidSystem) -{ private: - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, WettingPhase) WettingPhase; - typedef typename GET_PROP_TYPE(TypeTag, NonwettingPhase) NonwettingPhase; - -public: - typedef FluidSystems::TwoPImmiscible<Scalar, - WettingPhase, - NonwettingPhase> type; -}; - -SET_PROP(BoxElasticTwoP, FluidState) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; -public: - typedef ImmiscibleFluidState<Scalar, FluidSystem> type; -}; - -// enable jacobian matrix recycling by default -SET_BOOL_PROP(BoxElasticTwoP, ImplicitEnableJacobianRecycling, false); -// enable partial reassembling by default -SET_BOOL_PROP(BoxElasticTwoP, ImplicitEnablePartialReassemble, false); - -SET_TYPE_PROP(BoxElasticTwoP, NewtonController, ElTwoPNewtonController<TypeTag>); - -SET_PROP(BoxElasticTwoP, LocalOperator) -{ - typedef PDELab::El2PLocalOperator<TypeTag> type; -}; - -//! use the local FEM space associated with cubes by default -SET_PROP(BoxElasticTwoP, LocalFEMSpace) -{ - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - -public: - typedef Dune::PDELab::QkLocalFiniteElementMap<GridView,Scalar,Scalar,1> type; -}; - -/*! - * \brief A vector of primary variables. - */ -SET_PROP(BoxElasticTwoP, PrimaryVariables) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - enum{numEq = GET_PROP_VALUE(TypeTag, NumEq)}; -public: - typedef Dune::FieldVector<Scalar, numEq> type; -}; - -template <class TypeTag, class MType, class VType, bool isParallel> -class ElasticTwoPSolverTraits -: public NonoverlappingSolverTraits<MType, VType, isParallel> -{ -public: - typedef typename GET_PROP_TYPE(TypeTag, JacobianMatrix) JacobianMatrix; -}; - -template <class TypeTag, class MType, class VType> -class ElasticTwoPSolverTraits<TypeTag, MType, VType, true> -: public NonoverlappingSolverTraits<MType, VType, true> -{ -public: - typedef MType JacobianMatrix; -}; - -//! define the traits for the AMGBackend -SET_PROP(BoxElasticTwoP, AmgTraits) -{ -public: - typedef typename GET_PROP_TYPE(TypeTag, Grid) Grid; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - enum { dofCodim = Grid::dimension, - isNonOverlapping = true }; - enum { isParallel = Dune::Capabilities::canCommunicate<Grid, dofCodim>::v }; - - static const int numEq = isParallel ? GET_PROP_VALUE(TypeTag, NumEq) - : GET_PROP_TYPE(TypeTag, JacobianMatrix)::block_type::rows; - - typedef Dune::BCRSMatrix<Dune::FieldMatrix<Scalar,numEq,numEq> > MType; - typedef Dune::BlockVector<Dune::FieldVector<Scalar,numEq> > VType; - typedef ElasticTwoPSolverTraits<TypeTag, MType, VType, isParallel> SolverTraits; - typedef typename SolverTraits::Comm Comm; - typedef typename SolverTraits::LinearOperator LinearOperator; - typedef typename SolverTraits::ScalarProduct ScalarProduct; - typedef typename SolverTraits::Smoother Smoother; - typedef typename SolverTraits::JacobianMatrix JacobianMatrix; -}; - -//! The local jacobian operator -SET_TYPE_PROP(BoxElasticTwoP, LocalJacobian, ElTwoPLocalJacobian<TypeTag>); - -SET_TYPE_PROP(BoxElasticTwoP, BaseModel, ElTwoPBaseModel<TypeTag>); - -//! set number of equations of the mathematical model as default -SET_INT_PROP(BoxElasticTwoP, LinearSolverBlockSize, 1); - -// write the stress and displacement output according to rock mechanics sign convention (compressive stresses > 0) -SET_BOOL_PROP(BoxElasticTwoP, VtkRockMechanicsSignConvention, true); - -// \} -} -} - -#endif diff --git a/dumux/geomechanics/el2p/volumevariables.hh b/dumux/geomechanics/el2p/volumevariables.hh deleted file mode 100644 index 951609d6b3d831666ad5d374ca5ca2e889c880ba..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/el2p/volumevariables.hh +++ /dev/null @@ -1,174 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Quantities required by the two-phase linear-elastic model which - * are defined on a vertex. - */ -#ifndef DUMUX_ELASTIC2P_VOLUME_VARIABLES_HH -#define DUMUX_ELASTIC2P_VOLUME_VARIABLES_HH - -#include <dumux/porousmediumflow/2p/implicit/volumevariables.hh> - -#include "properties.hh" - -namespace Dumux { -/*! - * \ingroup ElTwoPModel - * \ingroup ImplicitVolumeVariables - * \brief Contains the quantities which are are constant within a - * finite volume in the two-phase linear-elastic model. - * - * This class inherits from the vertexdata of the two-phase - * model and from the vertexdata of the simple - * linear-elastic model - */ -template<class TypeTag> -class ElTwoPVolumeVariables: public TwoPVolumeVariables<TypeTag> { - - typedef TwoPVolumeVariables<TypeTag> TwoPBase; - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) Implementation; - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - - enum { - wPhaseIdx = Indices::wPhaseIdx, - nPhaseIdx = Indices::nPhaseIdx - }; - - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GridView::template Codim<0>::Entity Element; - - enum { dim = GridView::dimension }; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef Dune::FieldVector<Scalar, dim> DimVector; - -public: - /*! - * \copydoc ImplicitVolumeVariables::update - */ - void update(const PrimaryVariables &priVars, - const Problem &problem, - const Element &element, - const FVElementGeometry &fvGeometry, - int scvIdx, - bool isOldSol) - { - TwoPBase::update(priVars, problem, element, fvGeometry, scvIdx, isOldSol); - primaryVars_ = priVars; - - for (int coordDir = 0; coordDir < dim; ++coordDir) - displacement_[coordDir] = priVars[Indices::u(coordDir)]; - - effFluidDensity_ = this->density(wPhaseIdx) * this->saturation(wPhaseIdx) - + this->density(nPhaseIdx) * this->saturation(nPhaseIdx); - - const Dune::FieldVector<Scalar, 2> &lameParams = - problem.spatialParams().lameParams(element, fvGeometry, scvIdx); - - lambda_ = lameParams[0]; - mu_ = lameParams[1]; - - rockDensity_ = problem.spatialParams().rockDensity(element, scvIdx); - } - - /*! - * \brief Return the vector of primary variables - */ - const PrimaryVariables &primaryVars() const - { return primaryVars_; } - - /*! - * \brief Return the vector of primary variables - */ - const Scalar &priVar(int idx) const - { return primaryVars_[idx]; } - - /*! - * \brief Sets the evaluation point used in the by the local jacobian. - */ - void setEvalPoint(const Implementation *ep) - { } - - /*! - * \brief Returns the effective effective fluid density within - * the control volume. - */ - Scalar effFluidDensity() const - { return effFluidDensity_; } - - - /*! - * \brief Returns the Lame parameter lambda within the control volume. - */ - Scalar lambda() const - { return lambda_; } - - /*! - * \brief Returns the Lame parameter mu within the control volume. - */ - Scalar mu() const - { return mu_; } - - /*! - * \brief Returns the rock density within the control volume. - */ - Scalar rockDensity() const - { return rockDensity_; } - - /*! - * \brief Returns the solid displacement in all space - * directions within the control volume. - */ - Scalar displacement(int dimIdx) const - { return displacement_[dimIdx]; } - - /*! - * \brief Returns the solid displacement vector - * within the control volume. - */ - DimVector displacement() const - { return displacement_; } - - mutable Scalar divU; - mutable Scalar effPorosity; - -protected: - Scalar effFluidDensity_; - PrimaryVariables primaryVars_, prevPrimaryVars_; - DimVector displacement_, prevDisplacement_; - Scalar lambda_; - Scalar mu_; - Scalar rockDensity_; - -private: - Implementation &asImp_() - { return *static_cast<Implementation*>(this); } - - const Implementation &asImp_() const - { return *static_cast<const Implementation*>(this); } -}; - -} - -#endif diff --git a/dumux/geomechanics/elastic/CMakeLists.txt b/dumux/geomechanics/elastic/CMakeLists.txt deleted file mode 100644 index dc2edada4ebdd7cfe64a373f57d427b4a419fbb0..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/elastic/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ - -#install headers -install(FILES -fluxvariables.hh -indices.hh -localresidual.hh -model.hh -properties.hh -propertydefaults.hh -volumevariables.hh -DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/geomechanics/elastic) diff --git a/dumux/geomechanics/elastic/fluxvariables.hh b/dumux/geomechanics/elastic/fluxvariables.hh deleted file mode 100644 index 52c64d9f7c874dd7f6632dd489c5f50ec913ac08..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/elastic/fluxvariables.hh +++ /dev/null @@ -1,267 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ - /*! - * \file - * - * \brief This file contains the data which is required to calculate the gradients - * over a face of a finite volume that are needed for the momentum balance - * of a linear-elastic solid. - * - * This means gradients of solid displacement vectors, strains and stresses at - * the integration point - * - * This class is also used as a base class for the one-phase and two-phase - * linear-elastic models. - */ -#ifndef DUMUX_ELASTIC_FLUX_VARIABLES_HH -#define DUMUX_ELASTIC_FLUX_VARIABLES_HH - -#include "properties.hh" - -namespace Dumux -{ - -/*! - * \ingroup ElasticBoxModel - * \ingroup ImplicitFluxVariables - * \brief This template class contains the data which is required to - * calculate the gradients over a face of a finite volume for - * the linear elasticity model. - * - * This means gradients of solid displacement vectors, strains and stresses at - * the integration point - */ -template<class TypeTag> -class ElasticFluxVariablesBase -{ - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) VolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables) ElementVolumeVariables; - - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GridView::template Codim<0>::Entity Element; - enum { - dim = GridView::dimension - }; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef Dune::FieldVector<Scalar, dim> DimVector; - typedef Dune::FieldMatrix<Scalar, dim, dim> DimMatrix; - - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename FVElementGeometry::SubControlVolumeFace SCVFace; - -public: - /*! - * \brief Compute / update the flux variables - * - * \param problem The problem - * \param element The finite element - * \param fvGeometry The finite-volume geometry - * \param fIdx The local index of the SCV (sub-control-volume) face - * \param elemVolVars The volume variables of the current element - * \param onBoundary A boolean variable to specify whether the flux variables - * are calculated for interior SCV faces or boundary faces, default=false - * \todo The fvGeometry should be better initialized, passed and stored as an std::shared_ptr - */ - void update(const Problem &problem, - const Element &element, - const FVElementGeometry &fvGeometry, - const int fIdx, - const ElementVolumeVariables &elemVolVars, - const bool onBoundary = false) - { - fvGeometryPtr_ = &fvGeometry; - onBoundary_ = onBoundary; - faceIdx_ = fIdx; - - gradU_ = 0.0; - gradUTransposed_ = 0.0; - epsilon_ = 0.0; - sigma_ = 0.0; - - lambda_ = 0.0; - mu_ = 0.0; - divU_ = 0.0; - - calculateGradients_(problem, element, elemVolVars); - calculateStrain_(problem, element, elemVolVars); - calculateStress_(problem, element, elemVolVars); - } - - /*! - * \brief Return a stress tensor component [Pa] at the integration point. - */ - Scalar sigma(int row, int col) const - { return sigma_[row][col]; } - - /*! - * \brief Return the stress tensor [Pa] at the integration point. - */ - DimMatrix sigma() const - { return sigma_; } - - /*! - * \brief Return the volumetric strain i.e. the divergence of the solid displacement - * vector at the integration point. - */ - Scalar divU() const - { return divU_; } - - /*! - * \brief Returns the Lame parameter lambda at integration point. - */ - Scalar lambda() const - { return lambda_; } - - /*! - * \brief Returns the Lame parameter mu at integration point. - */ - Scalar mu() const - { return mu_; } - - /*! - * \brief Returns the sub-control-volume face. - */ - const SCVFace &face() const - { return fvGeometry_().subContVolFace[faceIdx_]; } - -protected: - /*! - * \brief Calculation of the solid displacement gradients. - * - * \param problem The considered problem file - * \param element The considered element of the grid - * \param elemVolVars The parameters stored in the considered element - */ - void calculateGradients_(const Problem &problem, - const Element &element, - const ElementVolumeVariables &elemVolVars) - { - const VolumeVariables &volVarsI = elemVolVars[face().i]; - const VolumeVariables &volVarsJ = elemVolVars[face().j]; - - // calculate gradients - DimVector tmp(0.0); - for (int idx = 0; - idx < fvGeometry_().numScv; - idx++) // loop over adjacent vertices - { - // FE gradient at vertex idx - const DimVector &feGrad = face().grad[idx]; - - // the displacement vector gradient - for (int coordIdx = 0; coordIdx < dim; ++coordIdx) { - tmp = feGrad; - tmp *= elemVolVars[idx].displacement(coordIdx); - gradU_[coordIdx] += tmp; - } - } - - // average the Lame parameters at integration point - // note: it still needs to be checked which mean (arithmetic, harmonic.. is appropriate - lambda_ = (volVarsI.lambda() + volVarsJ.lambda()) / 2.; - mu_ = (volVarsI.mu() + volVarsJ.mu()) / 2.; - - for(int col=0; col < dim; col++) - { - divU_ += gradU_[col][col]; - - for(int row=0; row<dim; row++) - gradUTransposed_[row][col] = gradU_[col][row]; - } - } - - /*! - * \brief Calculation of the strain tensor. - * - * \param problem The considered problem file - * \param element The considered element of the grid - * \param elemVolVars The parameters stored in the considered element - */ - void calculateStrain_(const Problem &problem, - const Element &element, - const ElementVolumeVariables &elemVolVars) - { - // calculate the strain tensor - epsilon_ += gradU_; - epsilon_ += gradUTransposed_; - epsilon_ *= 0.5; - } - - /*! - * \brief Calculation of the stress tensor. - * - * \param problem The considered problem file - * \param element The considered element of the grid - * \param elemVolVars The parameters stored in the considered element - */ - void calculateStress_(const Problem &problem, - const Element &element, - const ElementVolumeVariables &elemVolVars) - { - DimMatrix firstTerm(0.0), secondTerm(0.0); - - epsilonTimesIdentity_ = divU_; - - firstTerm += epsilon_; - firstTerm *= 2; - firstTerm *= mu_; - - for (int i = 0; i < dim; ++i) - secondTerm[i][i] += 1.0; - secondTerm *= lambda_; - secondTerm *= epsilonTimesIdentity_; - - // calculate the stress tensor - sigma_ += firstTerm; - sigma_ += secondTerm; - } - - // return const reference to fvGeometry - const FVElementGeometry& fvGeometry_() const - { return *fvGeometryPtr_; } - - int faceIdx_; - bool onBoundary_; - - // Lame parameter mu at the integration point - Scalar mu_; - // Lame parameter lambda at the integration point - Scalar lambda_; - // divergence of the solid displacement vector at the integration point - Scalar divU_; - // volumetric strain at the integration point - Scalar epsilonTimesIdentity_; - // gradient and transposed gradient of the solid displacement vector - // at the integration point - DimMatrix gradU_, gradUTransposed_; - // strain tensor at the integration point - DimMatrix epsilon_; - // stress tensor at the integration point - DimMatrix sigma_; - -private: - const FVElementGeometry* fvGeometryPtr_; //!< Information about the geometry of discretization - -}; - -} // end namespace - -#endif diff --git a/dumux/geomechanics/elastic/indices.hh b/dumux/geomechanics/elastic/indices.hh deleted file mode 100644 index 20c4f3ea5f62829ff5a73dfe65fa9cff674aef3b..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/elastic/indices.hh +++ /dev/null @@ -1,64 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Defines the primary variable and equation indices used by - * the linear elasticity model - */ -#ifndef DUMUX_ELASTIC_INDICES_HH -#define DUMUX_ELASTIC_INDICES_HH - -namespace Dumux -{ -// \{ - -/*! - * \ingroup ElasticBoxModel - * \ingroup ImplicitIndices - * \brief The indices for the linear elasticity model. - */ -template <int PVOffset = 0> -struct ElasticIndices -{ - // returns the equation index for a given space direction - static int momentum(int dirIdx) - { - return PVOffset + dirIdx; - }; - - // returns the primary variable index for a given space direction - static int u(int dirIdx) - { - return PVOffset + dirIdx; - }; - - // Equation indices - static const int momentumXEqIdx = PVOffset + 0; - static const int momentumYEqIdx = PVOffset + 1; - static const int momentumZEqIdx = PVOffset + 2; - - // primary variable indices - static const int uxIdx = PVOffset + 0; - static const int uyIdx = PVOffset + 1; - static const int uzIdx = PVOffset + 2; -}; - -}// namespace Dumux - -#endif diff --git a/dumux/geomechanics/elastic/localresidual.hh b/dumux/geomechanics/elastic/localresidual.hh deleted file mode 100644 index 9c8589d0644d3264dad65d82006b898896bb6af8..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/elastic/localresidual.hh +++ /dev/null @@ -1,120 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Element-wise calculation the local Jacobian for the - * linear elastic model in the fully implicit scheme. - */ -#ifndef DUMUX_ELASTIC_LOCAL_RESIDUAL_HH -#define DUMUX_ELASTIC_LOCAL_RESIDUAL_HH - -#include "properties.hh" - -namespace Dumux -{ -/*! - * - * \ingroup ElasticBoxModel - * \ingroup ImplicitLocalResidual - * \brief Calculate the local Jacobian for the linear - * elasticity model - * - * This class is used to fill the gaps in BoxLocalResidual for - * the linear elasticity model. - */ -template<class TypeTag> -class ElasticLocalResidual : public GET_PROP_TYPE(TypeTag, BaseLocalResidual) -{ -protected: - typedef typename GET_PROP_TYPE(TypeTag, BaseLocalResidual) ParentType; - typedef typename GET_PROP_TYPE(TypeTag, LocalResidual) Implementation; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - - enum { dim = GridView::dimension }; - typedef Dune::FieldVector<Scalar, dim> DimVector; - - typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) VolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, FluxVariables) FluxVariables; - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, SubControlVolume) SubControlVolume; - typedef typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace) SubControlVolumeFace; - - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - -public: - /*! - * \brief Evaluate the amount of all conservation quantities - * within a finite volume. - * - * \param storage The storage of a quantity in the sub-control volume - * \param scvIdx The index of the considered face of the sub-control volume - * \param usePrevSol Evaluate function with solution of current or previous time step - */ - PrimaryVariables computeStorage(const SubControlVolume& scv, const VolumeVariables& volVars) const - { - // quasistationary conditions assumed - return PrimaryVariables(0.0); - } - - /*! - * \brief Evaluate the stress across a face of a sub-control - * volume. - * - * \param flux The stress over the SCV (sub-control-volume) face - * \param fIdx The index of the considered face of the sub control volume - * \param onBoundary A boolean variable to specify whether the flux variables - * are calculated for interior SCV faces or boundary faces, default=false - */ - PrimaryVariables computeFlux(const SubControlVolumeFace& scvFace) const - { - FluxVariables fluxVars; - fluxVars.initAndComputeFluxes(this->problem_(), this->element_(), scvFace); - return fluxVars.stressVector(); - } - - /*! - * \brief Calculate the source term of the equation - * \param source The source/sink in the SCV is the gravity term in the momentum balance - * \param scvIdx The index of the vertex of the sub control volume - * - */ - PrimaryVariables computeSource(const SubControlVolume& scv) - { - PrimaryVariables source(0.0); - - source += ParentType::computeSource(scv); - - // gravity term of the solid matrix in the momentum balance - DimVector gravityTerm(0.0); - gravityTerm = this->problem_().gravity(); - gravityTerm *= this->problem_().model().curVolVars(scv).rockDensity(); - - for (int i = 0; i < dim; ++i) - source[Indices::momentum(i)] += gravityTerm[i]; - - return source; - } - -}; - -} // end namespace Dumux - -#endif // DUMUX_ELASTIC_LOCAL_RESIDUAL_HH diff --git a/dumux/geomechanics/elastic/model.hh b/dumux/geomechanics/elastic/model.hh deleted file mode 100644 index b2c5c13b1bbe0cccaabc0ddc28e61919dfcb6152..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/elastic/model.hh +++ /dev/null @@ -1,186 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Base class for all models which use the linear elasticity model. - * Adaption of the fully implicit scheme to the linear elasticity model. - */ -#ifndef DUMUX_ELASTIC_MODEL_HH -#define DUMUX_ELASTIC_MODEL_HH - -#include "properties.hh" - -namespace Dumux -{ - -/*! - * \ingroup ElasticBoxModel - * \brief Adaption of the fully implicit scheme to the linear elasticity model. - * - * This model implements a linear elastic solid using Hooke's law as - * stress-strain relation and a quasi-stationary momentum balance equation: - \f[ - \boldsymbol{\sigma} = 2\,G\,\boldsymbol{\epsilon} + \lambda \,\text{tr} (\boldsymbol{\epsilon}) \, \boldsymbol{I}. - \f] - * - * with the strain tensor \f$\boldsymbol{\epsilon}\f$ as a function of the solid displacement gradient \f$\textbf{grad} \boldsymbol{u}\f$: - \f[ - \boldsymbol{\epsilon} = \frac{1}{2} \, (\textbf{grad} \boldsymbol{u} + \textbf{grad}^T \boldsymbol{u}). - \f] - * - * Gravity can be enabled or disabled via the property system. - * By inserting this into the momentum balance equation, one gets - \f[ - \text{div} \boldsymbol{\sigma} + \varrho {\textbf g} = 0 \;, - \f] - * - * The equation is discretized using a vertex-centered finite volume (box) - * scheme as spatial discretization. - * - */ - -template<class TypeTag > -class ElasticModel : public GET_PROP_TYPE(TypeTag, BaseModel) -{ - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) VolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, FluxVariables) FluxVariables; - typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; - typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; - - enum { isBox = GET_PROP_VALUE(TypeTag, ImplicitIsBox) }; - enum { dim = GridView::dimension }; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef Dune::FieldMatrix<Scalar, dim, dim> DimMatrix; - -public: - /*! - * \brief \copybrief ImplicitModel::addOutputVtkFields - * - * Specialization for the ElasticBoxModel, adding solid displacement, - * stresses and the process rank to the VTK writer. - */ - template <class MultiWriter> - void addOutputVtkFields(const SolutionVector &sol, MultiWriter &writer) - { - typedef Dune::BlockVector<Dune::FieldVector<Scalar, 1> > ScalarField; - typedef Dune::BlockVector<Dune::FieldVector<Scalar, dim> > VectorField; - - // create the required scalar fields - unsigned numDofs = this->numDofs(); - unsigned numElements = this->gridView_().size(0); - - ScalarField &ux = *writer.allocateManagedBuffer(numDofs); - ScalarField &uy = *writer.allocateManagedBuffer(numDofs); - ScalarField &uz = *writer.allocateManagedBuffer(numDofs); - VectorField &sigmax = *writer.template allocateManagedBuffer<Scalar, dim>(numElements); - VectorField &sigmay = *writer.template allocateManagedBuffer<Scalar, dim>(numElements); - VectorField &sigmaz = *writer.template allocateManagedBuffer<Scalar, dim>(numElements); - - // initialize stress fields - for (unsigned int i = 0; i < numElements; ++i) - { - sigmax[i] = 0; - if (dim > 1) - { - sigmay[i] = 0; - } - if (dim > 2) - { - sigmaz[i] = 0; - } - } - - ScalarField &rank = *writer.allocateManagedBuffer(numElements); - - for (const auto& element : elements(this->gridView_(), Dune::Partitions::interior)) - { - int eIdx = this->problem_().model().elementMapper().index(element); - rank[eIdx] = this->gridView_().comm().rank(); - - // make sure FVElementGeometry and the volume variables are bound to the element - this->fvGeometries_().bind(element); - this->curVolVars_().bind(element); - - const auto& fvGeometry = this->fvGeometries(element); - for (const auto& scv : fvGeometry.scvs()) - { - int dofIdxGlobal = scv.dofIndex(); - const auto& volVars = this->curVolVars(scv); - - ux[dofIdxGlobal] = volVars.displacement(0); - if (dim >= 2) - uy[dofIdxGlobal] = volVars.displacement(1); - if (dim >= 3) - uz[dofIdxGlobal] = volVars.displacement(2); - } - - // In the box method, the stress is evaluated on the FE-Grid. However, to get an - // average apparent stress for the cell, all contributing stresses have to be interpolated. - DimMatrix stress(0.0); - unsigned int counter = 0; - - // loop over the faces - for (const auto& scvFace : fvGeometry.scvfs()) - { - if (scvFace.boundary()) - { - BoundaryTypes bcTypes = this->problem_().boundaryTypes(element, scvFace); - if (bcTypes.hasNeumann()) - continue; - } - - //prepare the flux calculations (set up and prepare geometry, FE gradients) - FluxVariables fluxVars; - fluxVars.initAndComputeFluxes(this->problem_(), element, scvFace); - - // Add up stresses for each scv face. - // Beware the sign convention applied here: compressive stresses are negative - stress += fluxVars.stressTensor(); - counter++; - } - - // divide by the number of added stress tensors and add to container - stress /= counter; - sigmax[eIdx] += stress[0]; - if (dim >= 2) - sigmay[eIdx] += stress[1]; - if (dim == 3) - sigmaz[eIdx] += stress[2]; - } - } - - writer.attachDofData(ux, "ux", isBox); - if (dim >= 2) - writer.attachDofData(uy, "uy", isBox); - if (dim == 3) - writer.attachDofData(uz, "uz", isBox); - writer.attachCellData(sigmax, "stress X", dim); - if (dim >= 2) - writer.attachCellData(sigmay, "stress Y", dim); - if (dim == 3) - writer.attachCellData(sigmaz, "stress Z", dim); - } -}; -} -#include "propertydefaults.hh" -#endif diff --git a/dumux/geomechanics/elastic/properties.hh b/dumux/geomechanics/elastic/properties.hh deleted file mode 100644 index 36cddaf7231ed1a1348ce19f3d58c82909a0a1da..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/elastic/properties.hh +++ /dev/null @@ -1,58 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \ingroup Properties - * \ingroup ImplicitProperties - * \ingroup ElasticBoxModel - * \file - * - * \brief Defines the properties required for the linear elasticity model. - */ - -#ifndef DUMUX_ELASTIC_PROPERTIES_HH -#define DUMUX_ELASTIC_PROPERTIES_HH - -#include <dumux/implicit/properties.hh> -#include <dumux/implicit/box/properties.hh> -#include <dumux/implicit/cellcentered/tpfa/properties.hh> - -namespace Dumux -{ -// \{ -namespace Properties -{ -////////////////////////////////////////////////////////////////// -// Type tags -////////////////////////////////////////////////////////////////// - -//! The type tags for the implicit model for elastic deformations of the medium -NEW_TYPE_TAG(Elastic, INHERITS_FROM(ImplicitBase)); - -////////////////////////////////////////////////////////////////// -// Property tags -////////////////////////////////////////////////////////////////// - -NEW_PROP_TAG(Indices); //!< Enumerations for the model -NEW_PROP_TAG(ProblemEnableGravity); //!< Returns whether gravity is considered in the problem -NEW_PROP_TAG(SpatialParams); //!< The type of the spatial parameters -} - -} - -#endif diff --git a/dumux/geomechanics/elastic/propertydefaults.hh b/dumux/geomechanics/elastic/propertydefaults.hh deleted file mode 100644 index 5377f9d1efb58ef43315e2ee47db3befa35d31c1..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/elastic/propertydefaults.hh +++ /dev/null @@ -1,106 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \ingroup Properties - * \ingroup ImplicitProperties - * \ingroup ElasticBoxModel - * \file - * - * \brief Defines some default values for the properties of the - * linear elasticity model. - */ - - -#ifndef DUMUX_ELASTIC_PROPERTIES_DEFAULTS_HH -#define DUMUX_ELASTIC_PROPERTIES_DEFAULTS_HH - -#include "properties.hh" -#include "model.hh" -#include "localresidual.hh" -#include "volumevariables.hh" -#include "indices.hh" - -#include <dumux/geomechanics/implicit/stressvariables.hh> -#include <dumux/geomechanics/implicit/stressvariablescache.hh> -#include <dumux/geomechanics/constitutivelaws/hookeslaw.hh> - -namespace Dumux -{ -// \{ -namespace Properties -{ -////////////////////////////////////////////////////////////////// -// Property values -////////////////////////////////////////////////////////////////// - -//!< set the number of equations to the space dimension of the problem -SET_PROP(Elastic, NumEq) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - enum{dim = GridView::dimension}; -public: - static const int value = dim; -}; - -//! Use the linear elasticity local residual function for the elasticity model -SET_TYPE_PROP(Elastic, LocalResidual, ElasticLocalResidual<TypeTag>); - -//! define the model -SET_TYPE_PROP(Elastic, Model, ElasticModel<TypeTag>); - -//! define the VolumeVariables -SET_TYPE_PROP(Elastic, VolumeVariables, ElasticVolumeVariablesBase<TypeTag>); - -//! Disable advection -SET_BOOL_PROP(Elastic, EnableAdvection, false); - -//! Disable molecular diffusion -SET_BOOL_PROP(Elastic, EnableMolecularDiffusion, false); - -//! Isothermal model by default -SET_BOOL_PROP(Elastic, EnableEnergyBalance, false); - -//! define the FluxVariables -SET_PROP(Elastic, FluxVariables) -{ -private: - static constexpr bool advection = GET_PROP_VALUE(TypeTag, EnableAdvection); - static constexpr bool diffusion = GET_PROP_VALUE(TypeTag, EnableMolecularDiffusion); - static constexpr bool energy = GET_PROP_VALUE(TypeTag, EnableEnergyBalance); -public: - typedef Dumux::StressVariables<TypeTag, advection, diffusion, energy> type; -}; - -//! Set the indices used by the linear elasticity model -SET_TYPE_PROP(Elastic, Indices, ElasticIndices<>); - -//! enable gravity by default -SET_BOOL_PROP(Elastic, ProblemEnableGravity, true); - -//! The flux variables cache class -SET_TYPE_PROP(Elastic, FluxVariablesCache, Dumux::StressVariablesCache<TypeTag>); - -//! The darcy flux variables -SET_TYPE_PROP(Elastic, MechanicalLawType, Dumux::HookesLaw<TypeTag>); - -} -} - -#endif diff --git a/dumux/geomechanics/elastic/volumevariables.hh b/dumux/geomechanics/elastic/volumevariables.hh deleted file mode 100644 index c1e0ad38533da3d6fbce4a3cf0619fbdab94324a..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/elastic/volumevariables.hh +++ /dev/null @@ -1,138 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Quantities required by the linear elasticity box - * model defined on a vertex. - */ -#ifndef DUMUX_ELASTIC_VOLUME_VARIABLES_HH -#define DUMUX_ELASTIC_VOLUME_VARIABLES_HH - -#include <dumux/implicit/volumevariables.hh> - -#include "properties.hh" - -namespace Dumux -{ -/*! - * \ingroup ElasticBoxModel - * \ingroup ImplicitVolumeVariables - * \brief Contains the quantities which are constant within a - * finite volume in the linear elasticity model. - */ -template <class TypeTag> -class ElasticVolumeVariablesBase : public ImplicitVolumeVariables<TypeTag> -{ - typedef ImplicitVolumeVariables<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) Implementation; - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, SubControlVolume) SubControlVolume; - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GridView::template Codim<0>::Entity Element; - enum{ - dim = GridView::dimension, - }; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef Dune::FieldVector<Scalar,dim> DimVector; - -public: - /*! - * \copydoc ImplicitVolumeVariables::update - */ - void update(const PrimaryVariables &priVars, - const Problem &problem, - const Element &element, - const SubControlVolume& scv) - { - ParentType::update(priVars, - problem, - element, - scv); - - primaryVars_ = priVars; - - for (int i = 0; i < dim; ++i) - displacement_[i] = priVars[Indices::u(i)]; - - // retrieve Lame parameters and rock density from spatialParams - const Dune::FieldVector<Scalar, 2> &lameParams = problem.spatialParams().lameParams(element, scv); - lambda_ = lameParams[0]; - mu_ = lameParams[1]; - rockDensity_ = problem.spatialParams().rockDensity(element, scv); - } - - /*! - * \brief Return the vector of primary variables - */ - const PrimaryVariables &primaryVars() const - { return primaryVars_; } - - /*! - * \brief Sets the evaluation point used in the by the local jacobian. - */ - void setEvalPoint(const Implementation *ep) - { } - - /*! - * \brief Return the Lame parameter lambda \f$\mathrm{[Pa]}\f$ within the control volume. - */ - Scalar lambda() const - { return lambda_; } - - /*! - * \brief Return the Lame parameter mu \f$\mathrm{[Pa]}\f$ within the control volume. - */ - Scalar mu() const - { return mu_; } - - /*! - * \brief Returns the rock density \f$\mathrm{[kg / m^3]}\f$ within the control volume . - */ - Scalar rockDensity() const - { return rockDensity_; } - - /*! - * \brief Returns the solid displacement \f$\mathrm{[m]}\f$ in space - * directions dimIdx within the control volume. - */ - Scalar displacement(int dimIdx) const - { return displacement_[dimIdx]; } - - /*! - * \brief Returns the solid displacement vector \f$\mathrm{[m]}\f$ - * within the control volume. - */ - const DimVector &displacement() const - { return displacement_; } - -protected: - PrimaryVariables primaryVars_; - DimVector displacement_; - Scalar lambda_; - Scalar mu_; - Scalar rockDensity_; -}; - -} - -#endif diff --git a/dumux/geomechanics/implicit/CMakeLists.txt b/dumux/geomechanics/implicit/CMakeLists.txt deleted file mode 100644 index d41b715ec6c0d12eee53d925d2745a8287925838..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/implicit/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -# install headers -install(FILES -stressvariables.hh -DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/geomechanics/implicit) \ No newline at end of file diff --git a/dumux/geomechanics/implicit/stressvariables.hh b/dumux/geomechanics/implicit/stressvariables.hh deleted file mode 100644 index 8e942038e0cb89ff308c9cdf169ed01d6a9125b3..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/implicit/stressvariables.hh +++ /dev/null @@ -1,90 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief The stress variables - */ -#ifndef DUMUX_GEOMECHANICS_IMPLICIT_STRESSVARIABLES_HH -#define DUMUX_GEOMECHANICS_IMPLICIT_STRESSVARIABLES_HH - -#include <dumux/implicit/properties.hh> -#include <dumux/implicit/fluxvariablesbase.hh> - -namespace Dumux -{ - -namespace Properties -{ -NEW_PROP_TAG(MechanicalLawType); -} - -/*! - * \ingroup ImplicitModel - * \brief the flux variables class - * specializations are provided for combinations of physical processes - */ -template<class TypeTag, bool enableAdvection, bool enableMolecularDiffusion, bool enableEnergyBalance> -class StressVariables {}; - -/*! - * \ingroup ImplicitModel - * \brief Base class for the flux variables - * Actual flux variables inherit from this class - */ -template<class TypeTag> -class StressVariables<TypeTag, false, false, false> : public FluxVariablesBase<TypeTag, StressVariables<TypeTag, false, false, false>> -{ - using ParentType = FluxVariablesBase<TypeTag, StressVariables<TypeTag, false, false, false>>; - using Problem = typename GET_PROP_TYPE(TypeTag, Problem); - using GridView = typename GET_PROP_TYPE(TypeTag, GridView); - using Element = typename GridView::template Codim<0>::Entity; - using IndexType = typename GridView::IndexSet::IndexType; - using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); - using Stencil = std::vector<IndexType>; - using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace); - using MechanicalLawType = typename GET_PROP_TYPE(TypeTag, MechanicalLawType); - - enum{ enableFluxVarsCache = GET_PROP_VALUE(TypeTag, EnableFluxVariablesCache) }; - enum { dim = GridView::dimension} ; - - typedef Dune::FieldMatrix<Scalar, dim, dim> DimMatrix; - typedef Dune::FieldVector<Scalar, dim> DimVector; - -public: - - void initAndComputeFluxes(const Problem& problem, - const Element& element, - const SubControlVolumeFace &scvFace) - { - ParentType::init(problem, element, scvFace); - } - - Stencil computeStencil(const Problem& problem, const SubControlVolumeFace& scvFace) - { return MechanicalLawType::stencil(problem, scvFace); } - - DimVector stressVector() - { return MechanicalLawType::stressVector(this->problem(), this->scvFace()); } - - DimMatrix stressTensor() - { return MechanicalLawType::stressTensor(this->problem(), this->scvFace()); } -}; - -} // end namespace - -#endif diff --git a/dumux/geomechanics/implicit/stressvariablescache.hh b/dumux/geomechanics/implicit/stressvariablescache.hh deleted file mode 100644 index 67d978d339ca8d8f259cd6963a5046a019c3108d..0000000000000000000000000000000000000000 --- a/dumux/geomechanics/implicit/stressvariablescache.hh +++ /dev/null @@ -1,102 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Base class for the flux variables - */ -#ifndef DUMUX_GEOMECHANICS_IMPLICIT_STRESSVARIABLESCACHE_HH -#define DUMUX_GEOMECHANICS_IMPLICIT_STRESSVARIABLESCACHE_HH - -#include <dumux/implicit/properties.hh> - -namespace Dumux -{ - -/*! - * \ingroup ImplicitModel - * \brief The stress variables cache classes - * stores matrices to recover the discplacement on a scv face and stencil - */ -template<class TypeTag, typename DiscretizationMethod = void> -class StressVariablesCache -{}; - -// specialization for the Box Method -template<class TypeTag> -class StressVariablesCache<TypeTag, typename std::enable_if<GET_PROP_VALUE(TypeTag, DiscretizationMethod) == GET_PROP(TypeTag, DiscretizationMethods)::Box>::type > -{ - using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); - using Problem = typename GET_PROP_TYPE(TypeTag, Problem); - using GridView = typename GET_PROP_TYPE(TypeTag, GridView); - using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables); - using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace); - using MechanicalLawType = typename GET_PROP_TYPE(TypeTag, MechanicalLawType); - using Element = typename GridView::template Codim<0>::Entity; - using IndexType = typename GridView::IndexSet::IndexType; - using Stencil = std::vector<IndexType>; - -public: - void update(const Problem& problem, - const Element& element, - const SubControlVolumeFace &scvFace) - { - FluxVariables fluxVars; - stencil_ = fluxVars.computeStencil(problem, scvFace); - } - - const Stencil& stencil() const - { return stencil_; } - -private: - Stencil stencil_; -}; - -// specialization for the cell centered tpfa method -template<class TypeTag> -class StressVariablesCache<TypeTag, typename std::enable_if<GET_PROP_VALUE(TypeTag, DiscretizationMethod) == GET_PROP(TypeTag, DiscretizationMethods)::CCTpfa>::type > -{ - using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); - using Problem = typename GET_PROP_TYPE(TypeTag, Problem); - using GridView = typename GET_PROP_TYPE(TypeTag, GridView); - using FluxVariables = typename GET_PROP_TYPE(TypeTag, FluxVariables); - using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace); - using MechanicalLawType = typename GET_PROP_TYPE(TypeTag, MechanicalLawType); - using Element = typename GridView::template Codim<0>::Entity; - using IndexType = typename GridView::IndexSet::IndexType; - using Stencil = std::vector<IndexType>; - -public: - void update(const Problem& problem, - const Element& element, - const SubControlVolumeFace &scvFace) - { - FluxVariables fluxVars; - stencil_ = fluxVars.computeStencil(problem, scvFace); - } - - const Stencil& stencil() const - { return stencil_; } - -private: - Stencil stencil_; -}; - -} // end namespace - -#endif diff --git a/dumux/multidomain/2cnistokes2p2cni/2p2cnicouplinglocalresidual.hh b/dumux/multidomain/2cnistokes2p2cni/2p2cnicouplinglocalresidual.hh deleted file mode 100644 index f3422f812ddda6061f52a8b3bf0fcba1ce79b612..0000000000000000000000000000000000000000 --- a/dumux/multidomain/2cnistokes2p2cni/2p2cnicouplinglocalresidual.hh +++ /dev/null @@ -1,161 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Extending the TwoPTwoCNILocalResidual by the required functions for - * a coupled application. - */ -#ifndef DUMUX_2P2CNI_COUPLING_LOCAL_RESIDUAL_HH -#define DUMUX_2P2CNI_COUPLING_LOCAL_RESIDUAL_HH - -#include <dumux/porousmediumflow/nonisothermal/implicit/localresidual.hh> -#include <dumux/porousmediumflow/2p2c/implicit/indices.hh> -#include <dumux/porousmediumflow/2p2c/implicit/properties.hh> - -namespace Dumux -{ - -/*! - * \ingroup ImplicitLocalResidual - * \ingroup TwoPTwoCNIStokesTwoCNIModel - * \ingroup TwoPTwoCNIZeroEqTwoCNIModel - * \brief Extending the TwoPTwoCNILocalResidual by the required functions for - * a coupled application. - */ -template<class TypeTag> -class TwoPTwoCNICouplingLocalResidual : public NILocalResidual<TypeTag> -{ - typedef NILocalResidual<TypeTag> ParentType; - - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - - enum { dim = GridView::dimension }; - enum { numEq = GET_PROP_VALUE(TypeTag, NumEq) }; - enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) }; - enum { useMoles = GET_PROP_VALUE(TypeTag, UseMoles) }; - enum { nPhaseIdx = Indices::nPhaseIdx }; - enum { wCompIdx = Indices::wCompIdx, }; - enum { - massBalanceIdx = GET_PROP_VALUE(TypeTag, ReplaceCompEqIdx), - contiWEqIdx = Indices::contiWEqIdx, - energyEqIdx = Indices::energyEqIdx - }; - - typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) VolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables) ElementVolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, FluxVariables) FluxVariables; - typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - typedef Dune::BlockVector<Dune::FieldVector<Scalar,1> > ElementFluxVector; - - typedef Dune::FieldVector<Scalar, dim> DimVector; - -public: - /*! - * \brief Implementation of the boundary evaluation for the Darcy model - * - * Evaluate one part of the Dirichlet-like coupling conditions for a single - * sub-control volume face; rest is done in the local coupling operator - */ - void evalBoundary_() - { - ParentType::evalBoundary_(); - - typedef Dune::ReferenceElements<Scalar, dim> ReferenceElements; - typedef Dune::ReferenceElement<Scalar, dim> ReferenceElement; - const ReferenceElement &refElement = ReferenceElements::general(this->element_().geometry().type()); - - for (int scvIdx = 0; scvIdx < this->fvGeometry_().numScv; scvIdx++) - { - // consider only SCVs on the boundary - if (this->fvGeometry_().subContVol[scvIdx].inner) - continue; - - // evaluate boundary conditions for the intersections of the current element - for (const auto& intersection : intersections(this->gridView_(), this->element_())) - { - // handle only intersections on the boundary - if (!intersection.boundary()) - continue; - - // assemble the boundary for all vertices of the current face - const int fIdx = intersection.indexInInside(); - const int numFaceVertices = refElement.size(fIdx, 1, dim); - - // loop over the single vertices on the current face - for (int faceVertexIdx = 0; faceVertexIdx < numFaceVertices; ++faceVertexIdx) - { - // only evaluate, if we consider the same face vertex as in the outer - // loop over the element vertices - if (refElement.subEntity(fIdx, 1, faceVertexIdx, dim) != scvIdx) - continue; - - const VolumeVariables &volVars = this->curVolVars_()[scvIdx]; - - // set pressure as part of the momentum coupling - if (this->bcTypes_(scvIdx).isCouplingDirichlet(massBalanceIdx)) - this->residual_[scvIdx][massBalanceIdx] = volVars.pressure(nPhaseIdx); - - // set mass/mole fraction for transported component - static_assert(GET_PROP_VALUE(TypeTag, NumComponents) == 2, - "This coupling condition is only implemented for two components."); - if (this->bcTypes_(scvIdx).isCouplingDirichlet(contiWEqIdx)) - { - if (useMoles) - this->residual_[scvIdx][contiWEqIdx] = volVars.moleFraction(nPhaseIdx, wCompIdx); - else - this->residual_[scvIdx][contiWEqIdx] = volVars.massFraction(nPhaseIdx, wCompIdx); - } - - // set temperature - if (this->bcTypes_(scvIdx).isCouplingDirichlet(energyEqIdx)) - this->residual_[scvIdx][energyEqIdx] = volVars.temperature(); - } - } - } - } - - /*! - * \brief Evaluates the time derivative of the storage term - * - * \param storage The vector in which the result is written - * \param scvIdx The sub-control-volume index - */ - void evalStorageDerivative(PrimaryVariables &storage, const int scvIdx) const - { - PrimaryVariables result; - this->computeStorage(result, scvIdx, false); - Valgrind::CheckDefined(result); - storage = result; - this->computeStorage(result, scvIdx, true); - Valgrind::CheckDefined(result); - storage -= result; - - storage *= this->fvGeometry_().subContVol[scvIdx].volume - / this->problem_().timeManager().timeStepSize() - * this->curVolVars_(scvIdx).extrusionFactor(); - } -}; - -} // namespace Dumux - -#endif // DUMUX_2P2CNI_COUPLING_LOCAL_RESIDUAL_HH diff --git a/dumux/multidomain/2cnistokes2p2cni/CMakeLists.txt b/dumux/multidomain/2cnistokes2p2cni/CMakeLists.txt deleted file mode 100644 index 2756ffc388598803c3ff13d699e2db7855f77609..0000000000000000000000000000000000000000 --- a/dumux/multidomain/2cnistokes2p2cni/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ - -#install headers -install(FILES -localoperator.hh -properties.hh -propertydefaults.hh -2p2cnicouplinglocalresidual.hh -stokesncnicouplinglocalresidual.hh -DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/multidomain/2cnistokes2p2cni) diff --git a/dumux/multidomain/2cnistokes2p2cni/localoperator.hh b/dumux/multidomain/2cnistokes2p2cni/localoperator.hh deleted file mode 100644 index 8db004ebf0da080ce377b01a3f257a5cb7f77e6c..0000000000000000000000000000000000000000 --- a/dumux/multidomain/2cnistokes2p2cni/localoperator.hh +++ /dev/null @@ -1,357 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief This local operator extends the 2cstokes2p2clocaloperator - * by non-isothermal conditions. - */ -#ifndef DUMUX_TWOCNISTOKES2P2CNILOCALOPERATOR_HH -#define DUMUX_TWOCNISTOKES2P2CNILOCALOPERATOR_HH - -#include <dumux/multidomain/2cstokes2p2c/localoperator.hh> - -namespace Dumux { - -/*! - * \ingroup TwoPTwoCNIStokesTwoCNIModel - * \ingroup TwoPTwoCNIZeroEqTwoCNIModel - * \brief The extension of the local operator for the coupling of a two-component Stokes model - * and a two-phase two-component Darcy model for non-isothermal conditions. - * - * This model implements the coupling between a free-flow model - * and a porous-medium flow model under non-isothermal conditions. - * Here the coupling conditions for the individual balance are presented: - * - * The total mass balance equation: - * \f[ - * \left[ - * \left( \varrho_\textrm{g} {\boldsymbol{v}}_\textrm{g} \right) \cdot \boldsymbol{n} - * \right]^\textrm{ff} - * = -\left[ - * \left( \varrho_\textrm{g} \boldsymbol{v}_\textrm{g} - * + \varrho_\textrm{l} \boldsymbol{v}_\textrm{l} \right) \cdot \boldsymbol{n} - * \right]^\textrm{pm} - * \f] - * in which \f$n\f$ represents a vector normal to the interface pointing outside of - * the specified subdomain. - * - * The momentum balance (tangential), which corresponds to the Beavers-Jospeh Saffman condition: - * \f[ - * \left[ - * \left( {\boldsymbol{v}}_\textrm{g} - * + \frac{\sqrt{\left(\boldsymbol{K} \boldsymbol{t}_i \right) \cdot \boldsymbol{t}_i}} - * {\alpha_\textrm{BJ} \mu_\textrm{g}} \boldsymbol{{\tau}}_\textrm{t} \boldsymbol{n} - * \right) \cdot \boldsymbol{t}_i - * \right]^\textrm{ff} - * = 0 - * \f] - * with - * \f$ - * \boldsymbol{{\tau}_\textrm{t}} = \left[ \mu_\textrm{g} + \mu_\textrm{g,t} \right] - * \nabla \left( \boldsymbol{v}_\textrm{g} - * + \boldsymbol{v}_\textrm{g}^\intercal \right) - * \f$ - * in which the eddy viscosity \f$ \mu_\textrm{g,t} = 0 \f$ for the Stokes equation. - * - * The momentum balance (normal): - * \f[ - * \left[ - * \left( - * \left\lbrace - * \varrho_\textrm{g} {\boldsymbol{v}}_\textrm{g} {\boldsymbol{v}}_\textrm{g}^\intercal - * - \boldsymbol{{\tau}}_\textrm{t} - * + {p}_\textrm{g} \boldsymbol{I} - * \right\rbrace \boldsymbol{n} - * \right) \cdot \boldsymbol{n} - * \right]^\textrm{ff} - * = p_\textrm{g}^\textrm{pm} - * \f] - * - * The component mass balance equation (continuity of fluxes): - * \f[ - * \left[ - * \left( - * \varrho_\textrm{g} {X}^\kappa_\textrm{g} {\boldsymbol{v}}_\textrm{g} - * - {\boldsymbol{j}}^\kappa_\textrm{g,ff,t,diff} - * \right) \cdot \boldsymbol{n} - * \right]^\textrm{ff} - * = -\left[ - * \left( - * \varrho_\textrm{g} X^\kappa_\textrm{g} \boldsymbol{v}_\textrm{g} - * - \boldsymbol{j}^\kappa_\textrm{g,pm,diff} - * + \varrho_\textrm{l} \boldsymbol{v}_\textrm{l} X^\kappa_\textrm{l} - * - \boldsymbol{j}^\kappa_\textrm{l,pm,diff} - * \right) \cdot \boldsymbol{n} - * \right]^\textrm{pm} - * = 0 - * \f] - * in which the diffusive fluxes \f$ j_\textrm{diff} \f$ are the diffusive fluxes as - * they are implemented in the individual subdomain models. - * - * The component mass balance equation (continuity of mass/ mole fractions): - * \f[ - * \left[ {X}^{\kappa}_\textrm{g} \right]^\textrm{ff} - * = \left[ X^{\kappa}_\textrm{g} \right]^\textrm{pm} - * \f] - * - * The energy balance equation (continuity of fluxes): - * \f[ - * \left[ - * \left( - * \varrho_\textrm{g} {h}_\textrm{g} {\boldsymbol{v}}_\textrm{g} - * - {h}^\textrm{a}_\textrm{g} {\boldsymbol{j}}^\textrm{a}_\textrm{g,ff,t,diff} - * - {h}^\textrm{w}_\textrm{g} {\boldsymbol{j}}^\textrm{w}_\textrm{g,ff,t,diff} - * - \left( \lambda_\textrm{g} + \lambda_\textrm{g,t} \right) \nabla {T} - * \right) \cdot \boldsymbol{n} - * \right]^\textrm{ff} - * = -\left[ - * \left( - * \varrho_\textrm{g} h_\textrm{g} \boldsymbol{v}_\textrm{g} - * + \varrho_\textrm{l} h_\textrm{l} \boldsymbol{v}_\textrm{l} - * - \lambda_\textrm{pm} \nabla T - * \right) \cdot \boldsymbol{n} - * \right]^\textrm{pm} - * \f] - * - * The energy balance equation (continuity of temperature): - * \f[ - * \left[ {T} \right]^\textrm{ff} - * = \left[ T \right]^\textrm{pm} - * \f] - * - * This is discretized by a fully-coupled vertex-centered finite volume - * (box) scheme in space and by the implicit Euler method in time. - */ -template<class TypeTag> -class TwoCNIStokesTwoPTwoCNILocalOperator : - public TwoCStokesTwoPTwoCLocalOperator<TypeTag> -{ -public: - typedef TwoCStokesTwoPTwoCLocalOperator<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, Problem) GlobalProblem; - - typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) Stokes2cniTypeTag; - typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) TwoPTwoCNITypeTag; - - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - - typedef typename GET_PROP_TYPE(Stokes2cniTypeTag, FluxVariables) BoundaryVariables1; - typedef typename GET_PROP_TYPE(TwoPTwoCNITypeTag, FluxVariables) BoundaryVariables2; - - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGrid) MDGrid; - - typedef typename GET_PROP_TYPE(Stokes2cniTypeTag, GridView) Stokes2cniGridView; - typedef typename GET_PROP_TYPE(TwoPTwoCNITypeTag, GridView) TwoPTwoCNIGridView; - typedef typename Stokes2cniGridView::template Codim<0>::Entity SDElement1; - typedef typename TwoPTwoCNIGridView::template Codim<0>::Entity SDElement2; - - typedef typename GET_PROP_TYPE(Stokes2cniTypeTag, Indices) Stokes2cniIndices; - typedef typename GET_PROP_TYPE(TwoPTwoCNITypeTag, Indices) TwoPTwoCNIIndices; - - enum { - dimWorld = MDGrid::dimensionworld - }; - - // Stokes - enum { numComponents1 = Stokes2cniIndices::numComponents }; - enum { // equation indices - energyEqIdx1 = Stokes2cniIndices::energyEqIdx //!< Index of the energy balance equation - }; - enum { // component indices - transportCompIdx1 = Stokes2cniIndices::transportCompIdx, //!< Index of transported component - phaseCompIdx1 = Stokes2cniIndices::phaseCompIdx //!< Index of main component of the phase - }; - - // Darcy - enum { numPhases2 = GET_PROP_VALUE(TwoPTwoCNITypeTag, NumPhases) }; - enum { // equation indices - energyEqIdx2 = TwoPTwoCNIIndices::energyEqIdx //!< Index of the energy balance equation - }; - enum { // phase indices - wPhaseIdx2 = TwoPTwoCNIIndices::wPhaseIdx, //!< Index for the liquid phase - nPhaseIdx2 = TwoPTwoCNIIndices::nPhaseIdx //!< Index for the gas phase - }; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename MDGrid::ctype CoordScalar; - typedef Dune::FieldVector<CoordScalar, dimWorld> GlobalPosition; - - // multidomain flags - static const bool doAlphaCoupling = true; - static const bool doPatternCoupling = true; - - TwoCNIStokesTwoPTwoCNILocalOperator(GlobalProblem& globalProblem) - : ParentType(globalProblem) - { } - -public: - //! \copydoc TwoCStokesTwoPTwoCLocalOperator::evalCoupling() - template<typename LFSU1, typename LFSU2, typename RES1, typename RES2, typename CParams> - void evalCoupling(const LFSU1& lfsu1, const LFSU2& lfsu2, - const int vertInElem1, const int vertInElem2, - const SDElement1& sdElement1, const SDElement2& sdElement2, - const BoundaryVariables1& boundaryVars1, const BoundaryVariables2& boundaryVars2, - const CParams &cParams, - RES1& couplingRes1, RES2& couplingRes2) const - { - // evaluate coupling of mass and momentum balances - ParentType::evalCoupling(lfsu1, lfsu2, - vertInElem1, vertInElem2, - sdElement1, sdElement2, - boundaryVars1, boundaryVars2, - cParams, - couplingRes1, couplingRes2); - - const GlobalPosition& globalPos1 = cParams.fvGeometry1.subContVol[vertInElem1].global; - const GlobalPosition& globalPos2 = cParams.fvGeometry2.subContVol[vertInElem2].global; - - // ENERGY Balance - // Neumann-like conditions - if (cParams.boundaryTypes1.isCouplingNeumann(energyEqIdx1)) - { - if (this->globalProblem().sdProblem2().isCornerPoint(globalPos2)) - { - // convective energy flux (enthalpy is mass based, mass flux also needed for useMoles) - Scalar convectiveFlux = 0.0; - for (int phaseIdx=0; phaseIdx<numPhases2; ++phaseIdx) - { - convectiveFlux -= boundaryVars2.volumeFlux(phaseIdx) - * cParams.elemVolVarsCur2[vertInElem2].density(phaseIdx) - * cParams.elemVolVarsCur2[vertInElem2].enthalpy(phaseIdx); - } - - // conductive energy flux - Scalar conductiveFlux = boundaryVars2.normalMatrixHeatFlux(); - - couplingRes1.accumulate(lfsu1.child(energyEqIdx1), vertInElem1, - -(convectiveFlux - conductiveFlux)); - } - else - { - couplingRes1.accumulate(lfsu1.child(energyEqIdx1), vertInElem1, - this->globalProblem().localResidual2().residual(vertInElem2)[energyEqIdx2]); - } - } - if (cParams.boundaryTypes2.isCouplingNeumann(energyEqIdx2)) - { - const GlobalPosition& bfNormal1 = boundaryVars1.face().normal; - // only enter here, if a boundary layer model is used for the computation of the diffusive fluxes - if (ParentType::blModel_) - { - // convective energy flux (enthalpy is mass based, mass flux also needed for useMoles) - Scalar convectiveFlux = boundaryVars1.normalVelocity() - * cParams.elemVolVarsCur1[vertInElem1].density() - * cParams.elemVolVarsCur1[vertInElem1].enthalpy(); - - // conductive energy flux - Scalar conductiveFlux = bfNormal1.two_norm() - * this->globalProblem().evalBoundaryLayerTemperatureGradient(cParams, vertInElem1) - * (boundaryVars1.thermalConductivity() - + boundaryVars1.thermalEddyConductivity()); - - // enthalpy transported by diffusive fluxes - Scalar sumDiffusiveFluxes = 0.0; - Scalar sumDiffusiveEnergyFlux = 0.0; - for (int compIdx=0; compIdx < numComponents1; compIdx++) - { - if (compIdx != phaseCompIdx1) - { - Scalar diffusiveFlux = bfNormal1.two_norm() - * this->globalProblem().evalBoundaryLayerConcentrationGradient(cParams, vertInElem1) - * (boundaryVars1.diffusionCoeff(compIdx) - + boundaryVars1.eddyDiffusivity()) - * boundaryVars1.molarDensity() - * this->globalProblem().evalMassTransferCoefficient(cParams, vertInElem1, vertInElem2); - sumDiffusiveFluxes += diffusiveFlux; - sumDiffusiveEnergyFlux += diffusiveFlux - * boundaryVars1.componentEnthalpy(compIdx) - * FluidSystem::molarMass(compIdx); // Multiplied by molarMass [kg/mol] to convert from [mol/m^3 s] to [kg/m^3 s] - } - } - sumDiffusiveEnergyFlux -= sumDiffusiveFluxes - * boundaryVars1.componentEnthalpy(phaseCompIdx1) - * FluidSystem::molarMass(phaseCompIdx1); - - couplingRes2.accumulate(lfsu2.child(energyEqIdx2), vertInElem2, - -(convectiveFlux - sumDiffusiveEnergyFlux - conductiveFlux)); - } - else if (this->globalProblem().sdProblem1().isCornerPoint(globalPos1)) - { - // convective energy flux (enthalpy is mass based, mass flux also needed for useMoles) - Scalar convectiveFlux = boundaryVars1.normalVelocity() - * cParams.elemVolVarsCur1[vertInElem1].density() - * cParams.elemVolVarsCur1[vertInElem1].enthalpy(); - - // conductive energy flux - Scalar conductiveFlux = bfNormal1 - * boundaryVars1.temperatureGrad() - * (boundaryVars1.thermalConductivity() - + boundaryVars1.thermalEddyConductivity()); - - // enthalpy transported by diffusive fluxes - Scalar sumDiffusiveFluxes = 0.0; - Scalar sumDiffusiveEnergyFlux = 0.0; - for (int compIdx=0; compIdx < numComponents1; compIdx++) - { - if (compIdx != phaseCompIdx1) - { - Scalar diffusiveFlux = bfNormal1 - * boundaryVars1.moleFractionGrad(compIdx) - * (boundaryVars1.diffusionCoeff(compIdx) - + boundaryVars1.eddyDiffusivity()) - * boundaryVars1.molarDensity(); - sumDiffusiveFluxes += diffusiveFlux; - sumDiffusiveEnergyFlux += diffusiveFlux - * boundaryVars1.componentEnthalpy(compIdx) - * FluidSystem::molarMass(compIdx); // Multiplied by molarMass [kg/mol] to convert from [mol/m^3 s] to [kg/m^3 s] - } - } - sumDiffusiveEnergyFlux -= sumDiffusiveFluxes - * boundaryVars1.componentEnthalpy(phaseCompIdx1) - * FluidSystem::molarMass(phaseCompIdx1); - - couplingRes2.accumulate(lfsu2.child(energyEqIdx2), vertInElem2, - -(convectiveFlux - sumDiffusiveEnergyFlux - conductiveFlux)); - } - else - { - couplingRes2.accumulate(lfsu2.child(energyEqIdx2), vertInElem2, - this->globalProblem().localResidual1().residual(vertInElem1)[energyEqIdx1]); - } - } - - // Dirichlet-like conditions - if (cParams.boundaryTypes1.isCouplingDirichlet(energyEqIdx1)) - { - // set residualStokes[energyIdx1] = T in stokesncnicouplinglocalresidual.hh - couplingRes1.accumulate(lfsu1.child(energyEqIdx1), vertInElem1, - -cParams.elemVolVarsCur2[vertInElem2].temperature()); - } - - if (cParams.boundaryTypes2.isCouplingDirichlet(energyEqIdx2)) - { - // set residualDarcy[energyEqIdx2] = T in 2p2cnicouplinglocalresidual.hh - couplingRes2.accumulate(lfsu2.child(energyEqIdx2), vertInElem2, - -cParams.elemVolVarsCur1[vertInElem1].temperature()); - } - } -}; -} // end namespace Dumux - -#endif // DUMUX_TWOCNISTOKES2P2CNILOCALOPERATOR_HH diff --git a/dumux/multidomain/2cnistokes2p2cni/problem.hh b/dumux/multidomain/2cnistokes2p2cni/problem.hh deleted file mode 100644 index 0b87fbfb5de52081b338c92d665348e0b488857c..0000000000000000000000000000000000000000 --- a/dumux/multidomain/2cnistokes2p2cni/problem.hh +++ /dev/null @@ -1,88 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief The problem class for the coupling of a non-isothermal two-component Stokes - * and a non-isothermal two-phase two-component Darcy model. - */ - -#ifndef DUMUX_2CNI_STOKES_2P2CNI_PROBLEM_HH -#define DUMUX_2CNI_STOKES_2P2CNI_PROBLEM_HH - -#include <dumux/freeflow/stokesncni/properties.hh> -#include <dumux/multidomain/2cstokes2p2c/problem.hh> -#include <dumux/porousmediumflow/2p2c/implicit/properties.hh> - -#include "properties.hh" - -namespace Dumux -{ - -/*! - * \ingroup TwoPTwoCNIStokesTwoCNIModel - * \ingroup TwoPTwoCNIZeroEqTwoCNIModel - * \brief The problem class for the coupling of a non-isothermal two-component Stokes - * and a non-isothermal two-phase two-component Darcy model. - */ -template <class TypeTag> -class TwoCNIStokesTwoPTwoCNIProblem : public TwoCStokesTwoPTwoCProblem<TypeTag> -{ - typedef TwoCStokesTwoPTwoCProblem<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, Problem) Implementation; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; - -public: - //! The constructor - template<class GridView> - TwoCNIStokesTwoPTwoCNIProblem(TimeManager &timeManager, - GridView gridView) - : ParentType(timeManager, gridView) - { } - - /*! - * \brief Returns the temperature gradient through the boundary layer - * - * \param cParams a parameter container - * \param scvIdx The local index of the sub-control volume of the Stokes domain - */ - template<typename CParams> - Scalar evalBoundaryLayerTemperatureGradient(CParams cParams, const int scvIdx) const - { - const Scalar temperatureOut = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefTemperature); - Scalar normalTemperatureGrad = cParams.elemVolVarsCur1[scvIdx].temperature() - - temperatureOut; - return normalTemperatureGrad - / asImp_().evalBoundaryLayerModel(cParams, scvIdx).thermalBoundaryLayerThickness(); - } - -private: - //! Returns the implementation of the problem (i.e. static polymorphism) - Implementation &asImp_() - { return *static_cast<Implementation *>(this); } - - //! \copydoc asImp_() - const Implementation &asImp_() const - { return *static_cast<const Implementation *>(this); } -}; - -} // namespace Dumux - -#endif // DUMUX_2CNI_STOKES_2P2CNI_PROBLEM_HH diff --git a/dumux/multidomain/2cnistokes2p2cni/properties.hh b/dumux/multidomain/2cnistokes2p2cni/properties.hh deleted file mode 100644 index 5bc41ce38fa99919cbcf712733a0ad22bee35f10..0000000000000000000000000000000000000000 --- a/dumux/multidomain/2cnistokes2p2cni/properties.hh +++ /dev/null @@ -1,58 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \ingroup Properties - * \ingroup ImplicitProperties - * \ingroup MultidomainModel - * - * \brief Defines the properties required for the coupled 2cnistokes2p2cni model. - */ - -#ifndef DUMUX_TWOCNISTOKESTWOPTWOCNI_PROPERTIES_HH -#define DUMUX_TWOCNISTOKESTWOPTWOCNI_PROPERTIES_HH - -#include <dumux/multidomain/2cstokes2p2c/propertydefaults.hh> - -namespace Dumux -{ - -//////////////////////////////// -// properties -//////////////////////////////// -namespace Properties -{ - -////////////////////////////////////////////////////////////////// -// Type tags -////////////////////////////////////////////////////////////////// - -//! The type tags for the coupled 2cnistokes2p2cni model -NEW_TYPE_TAG(TwoCNIStokesTwoPTwoCNI, INHERITS_FROM(TwoCStokesTwoPTwoC)); - -////////////////////////////////////////////////////////////////// -// Property tags -////////////////////////////////////////////////////////////////// - -} // end namespace properties - -} // end namespace Dumux - - -#endif diff --git a/dumux/multidomain/2cnistokes2p2cni/propertydefaults.hh b/dumux/multidomain/2cnistokes2p2cni/propertydefaults.hh deleted file mode 100644 index 704d8a6110575a9d47934905be10764e1a74626b..0000000000000000000000000000000000000000 --- a/dumux/multidomain/2cnistokes2p2cni/propertydefaults.hh +++ /dev/null @@ -1,46 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \ingroup Properties - * \ingroup ImplicitProperties - * \ingroup MultidomainModel - * - * \brief Defines default values for the properties required by the - * coupled 2cnistokes2p2cni model. - */ -#ifndef DUMUX_TWOCNISTOKESTWOPTWOCNI_PROPERTY_DEFAULTS_HH -#define DUMUX_TWOCNISTOKESTWOPTWOCNI_PROPERTY_DEFAULTS_HH - -#include "properties.hh" - -namespace Dumux -{ -namespace Properties -{ -////////////////////////////////////////////////////////////////// -// Property defaults -////////////////////////////////////////////////////////////////// - - -} // end namespace properties - -} // end namespace Dumux - -#endif diff --git a/dumux/multidomain/2cnistokes2p2cni/stokesncnicouplinglocalresidual.hh b/dumux/multidomain/2cnistokes2p2cni/stokesncnicouplinglocalresidual.hh deleted file mode 100644 index 77499416125fc8e28d3afbf583203d4c26e6549c..0000000000000000000000000000000000000000 --- a/dumux/multidomain/2cnistokes2p2cni/stokesncnicouplinglocalresidual.hh +++ /dev/null @@ -1,199 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Element-wise calculation of the Jacobian matrix for problems - * using the coupled compositional non-isothermal Stokes box model. - */ - -#ifndef DUMUX_STOKESNCNI_COUPLING_LOCAL_RESIDUAL_HH -#define DUMUX_STOKESNCNI_COUPLING_LOCAL_RESIDUAL_HH - -#include <dumux/freeflow/stokesncni/localresidual.hh> -#include <dumux/freeflow/stokesncni/model.hh> - -namespace Dumux -{ - /*! - * \ingroup ImplicitLocalResidual - * \ingroup TwoPTwoCNIStokesTwoCNIModel - * \ingroup TwoPTwoCNIZeroEqTwoCNIModel - * \brief Element-wise calculation of the Jacobian matrix for problems - * using the coupled compositional non-isothermal Stokes box model. - * It is derived from the compositional non-isothermal Stokes box model. - */ -template<class TypeTag> -class StokesncniCouplingLocalResidual : public StokesncniLocalResidual<TypeTag> -{ - typedef StokesncLocalResidual<TypeTag> ParentType; - - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - - enum { - dim = GridView::dimension, - dimWorld = GridView::dimensionworld, - numEq = GET_PROP_VALUE(TypeTag, NumEq), - numComponents = Indices::numComponents - }; - enum { - //indices of the equations - massBalanceIdx = Indices::massBalanceIdx, //!< Index of the mass balance - momentumXIdx = Indices::momentumXIdx, //!< Index of the x-component of the momentum balance - momentumYIdx = Indices::momentumYIdx, //!< Index of the y-component of the momentum balance - momentumZIdx = Indices::momentumZIdx, //!< Index of the z-component of the momentum balance - lastMomentumIdx = Indices::lastMomentumIdx, //!< Index of the last component of the momentum balance - transportEqIdx = Indices::transportEqIdx, //!< Index of the transport equation - energyEqIdx = Indices::energyEqIdx, //!< Index of the energy equation - conti0EqIdx = Indices::conti0EqIdx - }; - - typedef typename GridView::ctype CoordScalar; - typedef Dune::FieldVector<CoordScalar, dimWorld> GlobalPosition; - typedef Dune::FieldVector<Scalar, dim> DimVector; - - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - - typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) VolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, FluxVariables) FluxVariables; - typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; - - static const bool useMoles = GET_PROP_VALUE(TypeTag, UseMoles); - -public: - /*! - * \brief Implementation of the boundary evaluation for the Stokes model - * - * Evaluate one part of the Dirichlet-like coupling conditions for a single - * sub-control volume face; rest is done in the local coupling operator - */ - void evalBoundary_() - { - ParentType::evalBoundary_(); - - typedef Dune::ReferenceElements<Scalar, dim> ReferenceElements; - typedef Dune::ReferenceElement<Scalar, dim> ReferenceElement; - const ReferenceElement &refElement = ReferenceElements::general(this->element_().geometry().type()); - - // loop over vertices of the element - for (int scvIdx = 0; scvIdx < this->fvGeometry_().numScv; scvIdx++) - { - // consider only SCVs on the boundary - if (this->fvGeometry_().subContVol[scvIdx].inner) - continue; - - const BoundaryTypes &bcTypes = this->bcTypes_(scvIdx); - - // evaluate boundary conditions for the intersections of the current element - for (const auto& intersection : intersections(this->gridView_(), this->element_())) - { - // handle only intersections on the boundary - if (!intersection.boundary()) - continue; - - // assemble the boundary for all vertices of the current face - const int fIdx = intersection.indexInInside(); - const int numFaceVertices = refElement.size(fIdx, 1, dim); - - // loop over the single vertices on the current face - for (int faceVertexIdx = 0; faceVertexIdx < numFaceVertices; ++faceVertexIdx) - { - // only evaluate, if we consider the same face vertex as in the outer - // loop over the element vertices - if (refElement.subEntity(fIdx, 1, faceVertexIdx, dim) != scvIdx) - continue; - - const int boundaryFaceIdx = this->fvGeometry_().boundaryFaceIndex(fIdx, faceVertexIdx); - FluxVariables boundaryVars; - boundaryVars.update(this->problem_(), - this->element_(), - this->fvGeometry_(), - boundaryFaceIdx, - this->curVolVars_(), - true); - const VolumeVariables &volVars = this->curVolVars_()[scvIdx]; - - - // set velocity normal to the interface - if (bcTypes.isCouplingDirichlet(momentumYIdx)) - { - this->residual_[scvIdx][momentumYIdx] = volVars.velocity() - * boundaryVars.face().normal - / boundaryVars.face().normal.two_norm(); - Valgrind::CheckDefined(this->residual_[scvIdx][momentumYIdx]); - } - - // add pressure correction - required for pressure coupling, - // if p.n comes from the pm - if (bcTypes.isCouplingNeumann(momentumYIdx) || bcTypes.isCouplingMortar(momentumYIdx)) - { - this->residual_[scvIdx][momentumYIdx] -= volVars.pressure() - * boundaryVars.face().normal[momentumYIdx]; - Valgrind::CheckDefined(this->residual_[scvIdx][momentumYIdx]); - } - - // set mole fraction for the transported components - for (int compIdx = 0; compIdx < numComponents; compIdx++) - { - int eqIdx = conti0EqIdx + compIdx; - if ((eqIdx != massBalanceIdx) && bcTypes.isCouplingDirichlet(eqIdx)) - { - if(useMoles) - this->residual_[scvIdx][eqIdx] = volVars.moleFraction(compIdx); - else - this->residual_[scvIdx][eqIdx] = volVars.massFraction(compIdx); - Valgrind::CheckDefined(this->residual_[scvIdx][compIdx]); - } - } - - // set temperature - if (bcTypes.isCouplingDirichlet(energyEqIdx)) - { - this->residual_[scvIdx][energyEqIdx] = volVars.temperature(); - Valgrind::CheckDefined(this->residual_[scvIdx][energyEqIdx]); - } - } - } - } - } - - /*! - * \brief Removes the stabilization for the Stokes model. - */ - void evalBoundaryPDELab_() - { - // loop over vertices of the element - for (int idx = 0; idx < this->fvGeometry_().numScv; idx++) - { - // consider only SCVs on the boundary - if (this->fvGeometry_().subContVol[idx].inner) - continue; - - this->removeStabilizationAtBoundary_(idx); - } - } -}; - -} // Dumux - -#endif // DUMUX_STOKESNCNI_COUPLING_LOCAL_RESIDUAL_HH diff --git a/dumux/multidomain/2cstokes2p2c/2p2ccouplinglocalresidual.hh b/dumux/multidomain/2cstokes2p2c/2p2ccouplinglocalresidual.hh deleted file mode 100644 index 9d9a480da3b3b8ded2e421413809fc210067ab4b..0000000000000000000000000000000000000000 --- a/dumux/multidomain/2cstokes2p2c/2p2ccouplinglocalresidual.hh +++ /dev/null @@ -1,158 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Extending the TwoPTwoCLocalResidual by the required functions for - * a coupled application. - */ -#ifndef DUMUX_2P2C_COUPLING_LOCAL_RESIDUAL_HH -#define DUMUX_2P2C_COUPLING_LOCAL_RESIDUAL_HH - -#include <dumux/porousmediumflow/2p2c/implicit/indices.hh> -#include <dumux/porousmediumflow/2p2c/implicit/localresidual.hh> -#include <dumux/porousmediumflow/2p2c/implicit/properties.hh> - -namespace Dumux -{ - -/*! - * \ingroup ImplicitLocalResidual - * \ingroup TwoPTwoCStokesTwoCModel - * \ingroup TwoPTwoCZeroEqTwoCModel - * \brief Extending the TwoPTwoCLocalResidual by the required functions for - * a coupled application. - */ -template<class TypeTag> -class TwoPTwoCCouplingLocalResidual : public TwoPTwoCLocalResidual<TypeTag> -{ - typedef TwoPTwoCLocalResidual<TypeTag> ParentType; - - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - - enum { dim = GridView::dimension }; - enum { useMoles = GET_PROP_VALUE(TypeTag, UseMoles) }; - enum { nPhaseIdx = Indices::nPhaseIdx }; - enum { wCompIdx = Indices::wCompIdx }; - enum { - massBalanceIdx = GET_PROP_VALUE(TypeTag, ReplaceCompEqIdx), - contiWEqIdx = Indices::contiWEqIdx - }; - - typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) VolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables) ElementVolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, FluxVariables) FluxVariables; - typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - typedef Dune::BlockVector<Dune::FieldVector<Scalar,1> > ElementFluxVector; - - typedef Dune::FieldVector<Scalar, dim> DimVector; - -public: - /*! - * \brief Implementation of the boundary evaluation for the Darcy model - * - * Evaluate one part of the Dirichlet-like coupling conditions for a single - * sub-control volume face; rest is done in the local coupling operator - */ - void evalBoundary_() - { - ParentType::evalBoundary_(); - - typedef Dune::ReferenceElements<Scalar, dim> ReferenceElements; - typedef Dune::ReferenceElement<Scalar, dim> ReferenceElement; - const ReferenceElement &refElement = ReferenceElements::general(this->element_().geometry().type()); - - // loop over vertices of the element - for (int scvIdx = 0; scvIdx < this->fvGeometry_().numScv; scvIdx++) - { - // consider only SCVs on the boundary - if (this->fvGeometry_().subContVol[scvIdx].inner) - continue; - - // evaluate boundary conditions for the intersections of the current element - for (const auto& intersection : intersections(this->gridView_(), this->element_())) - { - // handle only intersections on the boundary - if (!intersection.boundary()) - continue; - - // assemble the boundary for all vertices of the current face - const int fIdx = intersection.indexInInside(); - const int numFaceVertices = refElement.size(fIdx, 1, dim); - - // loop over the single vertices on the current face - for (int faceVertexIdx = 0; faceVertexIdx < numFaceVertices; ++faceVertexIdx) - { - // only evaluate, if we consider the same face vertex as in the outer - // loop over the element vertices - if (refElement.subEntity(fIdx, 1, faceVertexIdx, dim) != scvIdx) - continue; - - const VolumeVariables &volVars = this->curVolVars_()[scvIdx]; - - // set pressure as part of the momentum coupling - if (this->bcTypes_(scvIdx).isCouplingDirichlet(massBalanceIdx)) - this->residual_[scvIdx][massBalanceIdx] = volVars.pressure(nPhaseIdx); - - // set mass/mole fraction for transported component - static_assert(GET_PROP_VALUE(TypeTag, NumComponents) == 2, - "This coupling condition is only implemented for two components."); - if (this->bcTypes_(scvIdx).isCouplingDirichlet(contiWEqIdx)) - { - if (useMoles) - this->residual_[scvIdx][contiWEqIdx] = volVars.moleFraction(nPhaseIdx, wCompIdx); - else - this->residual_[scvIdx][contiWEqIdx] = volVars.massFraction(nPhaseIdx, wCompIdx); - } - } - } - } - } - - /*! - * \brief Evaluates the time derivative of the storage term - * - * \param storage The vector in which the result is written - * \param scvIdx The sub-control-volume index - */ - void evalStorageDerivative(PrimaryVariables &storage, const int scvIdx) const - { - PrimaryVariables result; - this->computeStorage(result, scvIdx, false); - Valgrind::CheckDefined(result); - storage = result; - this->computeStorage(result, scvIdx, true); - Valgrind::CheckDefined(result); - storage -= result; - - storage *= this->fvGeometry_().subContVol[scvIdx].volume - / this->problem_().timeManager().timeStepSize() - * this->curVolVars_(scvIdx).extrusionFactor(); - } - -protected: - ElementFluxVector elementFluxes_; -}; - -} // namespace Dumux - -#endif // DUMUX_2P2C_COUPLING_LOCAL_RESIDUAL_HH diff --git a/dumux/multidomain/2cstokes2p2c/CMakeLists.txt b/dumux/multidomain/2cstokes2p2c/CMakeLists.txt deleted file mode 100644 index 4edbf946cc608645c34fe74b343e6ff798e9933d..0000000000000000000000000000000000000000 --- a/dumux/multidomain/2cstokes2p2c/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ - -#install headers -install(FILES -localoperator.hh -newtoncontroller.hh -properties.hh -propertydefaults.hh -2p2ccouplinglocalresidual.hh -stokesnccouplinglocalresidual.hh -DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/multidomain/2cstokes2p2c) diff --git a/dumux/multidomain/2cstokes2p2c/localoperator.hh b/dumux/multidomain/2cstokes2p2c/localoperator.hh deleted file mode 100644 index c6ac77710c50c96bcbfc438db22050ff1df4967f..0000000000000000000000000000000000000000 --- a/dumux/multidomain/2cstokes2p2c/localoperator.hh +++ /dev/null @@ -1,695 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief The local operator for the coupling of a two-component Stokes model - * and a two-phase two-component porous-medium model under isothermal conditions. - */ -#ifndef DUMUX_2CSTOKES_2P2C_LOCALOPERATOR_HH -#define DUMUX_2CSTOKES_2P2C_LOCALOPERATOR_HH - -#include <iostream> - -#include <dune/pdelab/multidomain/couplingutilities.hh> -#include <dune/pdelab/localoperator/pattern.hh> -#include <dune/pdelab/localoperator/idefault.hh> - -#include <dumux/freeflow/boundarylayermodel.hh> -#include <dumux/freeflow/masstransfermodel.hh> -#include <dumux/freeflow/stokesnc/model.hh> -#include <dumux/multidomain/properties.hh> -#include <dumux/porousmediumflow/2p2c/implicit/model.hh> - -#include "propertydefaults.hh" - -namespace Dumux { - -/*! - * \ingroup TwoPTwoCStokesTwoCModel - * \ingroup TwoPTwoCZeroEqTwoCModel - * \brief The local operator for the coupling of a two-component Stokes model - * and a two-phase two-component porous-medium model under isothermal conditions. - * - * This model implements the coupling between a free-flow model - * and a porous-medium flow model under isothermal conditions. - * Here the coupling conditions for the individual balance are presented: - * - * The total mass balance equation: - * \f[ - * \left[ - * \left( - * \varrho_\textrm{g} {\boldsymbol{v}}_\textrm{g} - * - \sum_\kappa {\boldsymbol{j}}^\kappa_\textrm{g,ff,t,diff} - * \right) \cdot \boldsymbol{n} - * \right]^\textrm{ff} - * = -\left[ - * \left( - * \varrho_\textrm{g} \boldsymbol{v}_\textrm{g} - * + \varrho_\textrm{l} \boldsymbol{v}_\textrm{l} - * - \sum_\kappa {\boldsymbol{j}}^\kappa_\textrm{g,pm,diff} - * - \sum_\kappa {\boldsymbol{j}}^\kappa_\textrm{l,pm,diff} -* \right) \cdot \boldsymbol{n} - * \right]^\textrm{pm} - * \f] - * in which \f$n\f$ represents a vector normal to the interface pointing outside of - * the specified subdomain. The diffusive fluxes \f$ j_\textrm{diff} \f$ are the diffusive fluxes as - * they are implemented in the individual subdomain models. - * - * The momentum balance (tangential), which corresponds to the Beavers-Jospeh Saffman condition: - * \f[ - * \left[ - * \left( {\boldsymbol{v}}_\textrm{g} - * + \frac{\sqrt{\left(\boldsymbol{K} \boldsymbol{t}_i \right) \cdot \boldsymbol{t}_i}} - * {\alpha_\textrm{BJ} \mu_\textrm{g}} \boldsymbol{{\tau}}_\textrm{t} \boldsymbol{n} - * \right) \cdot \boldsymbol{t}_i - * \right]^\textrm{ff} - * = 0 - * \f] - * with - * \f$ - * \boldsymbol{{\tau}_\textrm{t}} = \left[ \mu_\textrm{g} + \mu_\textrm{g,t} \right] - * \nabla \left( \boldsymbol{v}_\textrm{g} - * + \boldsymbol{v}_\textrm{g}^\intercal \right) - * \f$ - * in which the eddy viscosity \f$ \mu_\textrm{g,t} = 0 \f$ for the Stokes equation. - * - * The momentum balance (normal): - * \f[ - * \left[ - * \left( - * \left\lbrace - * \varrho_\textrm{g} {\boldsymbol{v}}_\textrm{g} {\boldsymbol{v}}_\textrm{g}^\intercal - * - \boldsymbol{{\tau}}_\textrm{t} - * + {p}_\textrm{g} \boldsymbol{I} - * \right\rbrace \boldsymbol{n} - * \right) \cdot \boldsymbol{n} - * \right]^\textrm{ff} - * = p_\textrm{g}^\textrm{pm} - * \f] - * - * The component mass balance equation (continuity of fluxes): - * \f[ - * \left[ - * \left( - * \varrho_\textrm{g} {X}^\kappa_\textrm{g} {\boldsymbol{v}}_\textrm{g} - * - {\boldsymbol{j}}^\kappa_\textrm{g,ff,t,diff} - * \right) \cdot \boldsymbol{n} - * \right]^\textrm{ff} - * = -\left[ - * \left( - * \varrho_\textrm{g} X^\kappa_\textrm{g} \boldsymbol{v}_\textrm{g} - * - \boldsymbol{j}^\kappa_\textrm{g,pm,diff} - * + \varrho_\textrm{l} \boldsymbol{v}_\textrm{l} X^\kappa_\textrm{l} - * - \boldsymbol{j}^\kappa_\textrm{l,pm,diff} - * \right) \cdot \boldsymbol{n} - * \right]^\textrm{pm} - * = 0 - * \f] - * - * The component mass balance equation (continuity of mass/ mole fractions): - * \f[ - * \left[ {X}^{\kappa}_\textrm{g} \right]^\textrm{ff} - * = \left[ X^{\kappa}_\textrm{g} \right]^\textrm{pm} - * \f] - * - * This is discretized by a fully-coupled vertex-centered finite volume - * (box) scheme in space and by the implicit Euler method in time. - */ -template<class TypeTag> -class TwoCStokesTwoPTwoCLocalOperator : - public Dune::PDELab::MultiDomain::CouplingOperatorDefaultFlags, - public Dune::PDELab::MultiDomain::NumericalJacobianCoupling<TwoCStokesTwoPTwoCLocalOperator<TypeTag>>, - public Dune::PDELab::MultiDomain::FullCouplingPattern, - public Dune::PDELab::InstationaryLocalOperatorDefaultMethods<double> -{ -public: - typedef typename GET_PROP_TYPE(TypeTag, Problem) GlobalProblem; - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainCouplingLocalOperator) Implementation; - - typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) Stokes2cTypeTag; - typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) TwoPTwoCTypeTag; - - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - typedef typename GET_PROP_TYPE(TwoPTwoCTypeTag, SpatialParams) SpatialParams; - - typedef typename GET_PROP_TYPE(Stokes2cTypeTag, ElementVolumeVariables) ElementVolumeVariables1; - typedef typename GET_PROP_TYPE(TwoPTwoCTypeTag, ElementVolumeVariables) ElementVolumeVariables2; - - typedef typename GET_PROP_TYPE(Stokes2cTypeTag, FluxVariables) BoundaryVariables1; - typedef typename GET_PROP_TYPE(TwoPTwoCTypeTag, FluxVariables) BoundaryVariables2; - - typedef typename GET_PROP_TYPE(Stokes2cTypeTag, ElementBoundaryTypes) ElementBoundaryTypes1; - typedef typename GET_PROP_TYPE(TwoPTwoCTypeTag, ElementBoundaryTypes) ElementBoundaryTypes2; - - typedef typename GET_PROP_TYPE(Stokes2cTypeTag, BoundaryTypes) BoundaryTypes1; - typedef typename GET_PROP_TYPE(TwoPTwoCTypeTag, BoundaryTypes) BoundaryTypes2; - - typedef typename GET_PROP_TYPE(Stokes2cTypeTag, FVElementGeometry) FVElementGeometry1; - typedef typename GET_PROP_TYPE(TwoPTwoCTypeTag, FVElementGeometry) FVElementGeometry2; - - // Multidomain Grid types - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGrid) MDGrid; - typedef typename MDGrid::Traits::template Codim<0>::Entity MDElement; - - typedef typename GET_PROP_TYPE(Stokes2cTypeTag, GridView) Stokes2cGridView; - typedef typename GET_PROP_TYPE(TwoPTwoCTypeTag, GridView) TwoPTwoCGridView; - typedef typename Stokes2cGridView::template Codim<0>::Entity SDElement1; - typedef typename TwoPTwoCGridView::template Codim<0>::Entity SDElement2; - - typedef typename GET_PROP_TYPE(Stokes2cTypeTag, Indices) Stokes2cIndices; - typedef typename GET_PROP_TYPE(TwoPTwoCTypeTag, Indices) TwoPTwoCIndices; - - enum { - dim = MDGrid::dimension, - dimWorld = MDGrid::dimensionworld - }; - - // Stokes - enum { numEq1 = GET_PROP_VALUE(Stokes2cTypeTag, NumEq), - useMoles1 = GET_PROP_VALUE(Stokes2cTypeTag, UseMoles) }; - enum { numComponents1 = Stokes2cIndices::numComponents }; - enum { // equation indices - momentumXIdx1 = Stokes2cIndices::momentumXIdx, //!< Index of the x-component of the momentum balance - momentumYIdx1 = Stokes2cIndices::momentumYIdx, //!< Index of the y-component of the momentum balance - momentumZIdx1 = Stokes2cIndices::momentumZIdx, //!< Index of the z-component of the momentum balance - lastMomentumIdx1 = Stokes2cIndices::lastMomentumIdx, //!< Index of the last component of the momentum balance - massBalanceIdx1 = Stokes2cIndices::massBalanceIdx, //!< Index of the mass balance - transportEqIdx1 = Stokes2cIndices::transportEqIdx //!< Index of the transport equation - }; - enum { // component indices - transportCompIdx1 = Stokes2cIndices::transportCompIdx, //!< Index of transported component - phaseCompIdx1 = Stokes2cIndices::phaseCompIdx //!< Index of main component of the phase - }; - - // Darcy - enum { numEq2 = GET_PROP_VALUE(TwoPTwoCTypeTag, NumEq), - useMoles2 = GET_PROP_VALUE(TwoPTwoCTypeTag, UseMoles) }; - enum { numPhases2 = GET_PROP_VALUE(TwoPTwoCTypeTag, NumPhases) }; - enum { // equation indices - contiWEqIdx2 = TwoPTwoCIndices::contiWEqIdx, //!< Index of the continuity equation for water component - massBalanceIdx2 = TwoPTwoCIndices::contiNEqIdx //!< Index of the total mass balance (if one component balance is replaced) - }; - enum { // component indices - wCompIdx2 = TwoPTwoCIndices::wCompIdx, //!< Index of the liquids main component - nCompIdx2 = TwoPTwoCIndices::nCompIdx //!< Index of the main component of the gas - }; - enum { // phase indices - wPhaseIdx2 = TwoPTwoCIndices::wPhaseIdx, //!< Index for the liquid phase - nPhaseIdx2 = TwoPTwoCIndices::nPhaseIdx //!< Index for the gas phase - }; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename MDGrid::ctype CoordScalar; - typedef Dune::FieldVector<CoordScalar, dimWorld> GlobalPosition; - - typedef typename Stokes2cGridView::template Codim<dim>::EntityPointer VertexPointer1; - typedef typename TwoPTwoCGridView::template Codim<dim>::EntityPointer VertexPointer2; - - // multidomain flags - static const bool doAlphaCoupling = true; - static const bool doPatternCoupling = true; - -public: - //! \brief The constructor - TwoCStokesTwoPTwoCLocalOperator(GlobalProblem& globalProblem) - : globalProblem_(globalProblem) - { - static_assert(GET_PROP_VALUE(Stokes2cTypeTag, UseMoles) == GET_PROP_VALUE(TwoPTwoCTypeTag, UseMoles), - "The coupling conditions is only implemented for same formulations (mass or mole) in both subdomains."); - - blModel_ = GET_PARAM_FROM_GROUP(TypeTag, int, BoundaryLayer, Model); - massTransferModel_ = GET_PARAM_FROM_GROUP(TypeTag, int, MassTransfer, Model); - - if (blModel_ != 0) - std::cout << "Using boundary layer model " << blModel_ << std::endl; - if (massTransferModel_ != 0) - std::cout << "Using mass transfer model " << massTransferModel_ << std::endl; - } - - /*! - * \brief Do the coupling. The unknowns are transferred from dune-multidomain. - * Based on them, a coupling residual is calculated and added at the - * respective positions in the matrix. - * - * \param intersectionGeometry the geometry of the intersection - * \param lfsu1 local basis for the trial space of the Stokes domain - * \param unknowns1 the unknowns vector of the Stokes element (formatted according to PDELab) - * \param lfsv1 local basis for the test space of the Stokes domain - * \param lfsu2 local basis for the trail space of the Darcy domain - * \param unknowns2 the unknowns vector of the Darcy element (formatted according to PDELab) - * \param lfsv2 local basis for the test space of the Darcy domain - * \param couplingRes1 the coupling residual from the Stokes domain - * \param couplingRes2 the coupling residual from the Darcy domain - */ - template<typename IntersectionGeom, typename LFSU1, typename LFSU2, - typename X, typename LFSV1, typename LFSV2,typename RES> - void alpha_coupling(const IntersectionGeom& intersectionGeometry, - const LFSU1& lfsu1, const X& unknowns1, const LFSV1& lfsv1, - const LFSU2& lfsu2, const X& unknowns2, const LFSV2& lfsv2, - RES& couplingRes1, RES& couplingRes2) const - { - const std::shared_ptr<MDElement> mdElement1 - = std::make_shared<MDElement>(intersectionGeometry.inside()); - const std::shared_ptr<MDElement> mdElement2 - = std::make_shared<MDElement>(intersectionGeometry.outside()); - - // the subdomain elements - const std::shared_ptr<SDElement1> sdElement1 - = std::make_shared<SDElement1>(globalProblem_.sdElementPointer1(*mdElement1)); - const std::shared_ptr<SDElement2> sdElement2 - = std::make_shared<SDElement2>(globalProblem_.sdElementPointer2(*mdElement2)); - - // a container for the parameters on each side of the coupling interface (see below) - CParams cParams; - - // update fvElementGeometry and the element volume variables - updateElemVolVars(lfsu1, lfsu2, - unknowns1, unknowns2, - *sdElement1, *sdElement2, - cParams); - - // first element - const int faceIdx1 = intersectionGeometry.indexInInside(); - const Dune::ReferenceElement<typename MDGrid::ctype,dim>& referenceElement1 = - Dune::ReferenceElements<typename MDGrid::ctype,dim>::general((*mdElement1).type()); - const int numVerticesOfFace = referenceElement1.size(faceIdx1, 1, dim); - - // second element - const int faceIdx2 = intersectionGeometry.indexInOutside(); - const Dune::ReferenceElement<typename MDGrid::ctype,dim>& referenceElement2 = - Dune::ReferenceElements<typename MDGrid::ctype,dim>::general((*mdElement2).type()); - - for (int vertexInFace = 0; vertexInFace < numVerticesOfFace; ++vertexInFace) - { - const int vertInElem1 = referenceElement1.subEntity(faceIdx1, 1, vertexInFace, dim); - const int vertInElem2 = referenceElement2.subEntity(faceIdx2, 1, vertexInFace, dim); - - const int boundaryFaceIdx1 = cParams.fvGeometry1.boundaryFaceIndex(faceIdx1, vertexInFace); - const int boundaryFaceIdx2 = cParams.fvGeometry2.boundaryFaceIndex(faceIdx2, vertexInFace); - - // obtain the boundary types - const VertexPointer1 vPtr1 = (*sdElement1).template subEntity<dim>(vertInElem1); - const VertexPointer2 vPtr2 = (*sdElement2).template subEntity<dim>(vertInElem2); - - globalProblem_.sdProblem1().boundaryTypes(cParams.boundaryTypes1, vPtr1); - globalProblem_.sdProblem2().boundaryTypes(cParams.boundaryTypes2, vPtr2); - - BoundaryVariables1 boundaryVars1; - boundaryVars1.update(globalProblem_.sdProblem1(), - *sdElement1, - cParams.fvGeometry1, - boundaryFaceIdx1, - cParams.elemVolVarsCur1, - /*onBoundary=*/true); - BoundaryVariables2 boundaryVars2; - boundaryVars2.update(globalProblem_.sdProblem2(), - *sdElement2, - cParams.fvGeometry2, - boundaryFaceIdx2, - cParams.elemVolVarsCur2, - /*onBoundary=*/true); - - asImp_()->evalCoupling(lfsu1, lfsu2, - vertInElem1, vertInElem2, - *sdElement1, *sdElement2, - boundaryVars1, boundaryVars2, - cParams, - couplingRes1, couplingRes2); - } - } - - /*! - * \brief Update the volume variables of the element and extract the unknowns from dune-pdelab vectors - * and bring them into a form which fits to dumux. - * - * \param lfsu1 local basis for the trial space of the Stokes domain - * \param lfsu2 local basis for the trial space of the Darcy domain - * \param unknowns1 the unknowns vector of the Stokes element (formatted according to PDELab) - * \param unknowns2 the unknowns vector of the Darcy element (formatted according to PDELab) - * \param sdElement1 the element in the Stokes domain - * \param sdElement2 the element in the Darcy domain - * \param cParams a parameter container - */ - template<typename LFSU1, typename LFSU2, typename X, typename CParams> - void updateElemVolVars(const LFSU1& lfsu1, const LFSU2& lfsu2, - const X& unknowns1, const X& unknowns2, - const SDElement1& sdElement1, const SDElement2& sdElement2, - CParams &cParams) const - { - cParams.fvGeometry1.update(globalProblem_.sdGridView1(), sdElement1); - cParams.fvGeometry2.update(globalProblem_.sdGridView2(), sdElement2); - - const int numVertsOfElem1 = sdElement1.subEntities(dim); - const int numVertsOfElem2 = sdElement2.subEntities(dim); - - // bring the local unknowns x1 into a form that can be passed to elemVolVarsCur.update() - Dune::BlockVector<Dune::FieldVector<Scalar,1>> elementSol1(0.); - Dune::BlockVector<Dune::FieldVector<Scalar,1>> elementSol2(0.); - elementSol1.resize(unknowns1.size()); - elementSol2.resize(unknowns2.size()); - - for (int idx=0; idx<numVertsOfElem1; ++idx) - { - for (int eqIdx1=0; eqIdx1<numEq1; ++eqIdx1) - elementSol1[eqIdx1*numVertsOfElem1+idx] = unknowns1(lfsu1.child(eqIdx1),idx); - for (int eqIdx2=0; eqIdx2<numEq2; ++eqIdx2) - elementSol2[eqIdx2*numVertsOfElem2+idx] = unknowns2(lfsu2.child(eqIdx2),idx); - } -#if HAVE_VALGRIND - for (unsigned int i = 0; i < elementSol1.size(); i++) - Valgrind::CheckDefined(elementSol1[i]); - for (unsigned int i = 0; i < elementSol2.size(); i++) - Valgrind::CheckDefined(elementSol2[i]); -#endif // HAVE_VALGRIND - - cParams.elemVolVarsPrev1.update(globalProblem_.sdProblem1(), - sdElement1, - cParams.fvGeometry1, - true /* oldSol? */); - cParams.elemVolVarsCur1.updatePDELab(globalProblem_.sdProblem1(), - sdElement1, - cParams.fvGeometry1, - elementSol1); - cParams.elemVolVarsPrev2.update(globalProblem_.sdProblem2(), - sdElement2, - cParams.fvGeometry2, - true /* oldSol? */); - cParams.elemVolVarsCur2.updatePDELab(globalProblem_.sdProblem2(), - sdElement2, - cParams.fvGeometry2, - elementSol2); - - ElementBoundaryTypes1 bcTypes1; - ElementBoundaryTypes2 bcTypes2; - bcTypes1.update(globalProblem_.sdProblem1(), sdElement1, cParams.fvGeometry1); - bcTypes2.update(globalProblem_.sdProblem2(), sdElement2, cParams.fvGeometry2); - - globalProblem_.localResidual1().evalPDELab(sdElement1, cParams.fvGeometry1, - cParams.elemVolVarsPrev1, cParams.elemVolVarsCur1, - bcTypes1); - globalProblem_.localResidual2().evalPDELab(sdElement2, cParams.fvGeometry2, - cParams.elemVolVarsPrev2, cParams.elemVolVarsCur2, - bcTypes2); - } - - /*! - * \brief Evaluation of the coupling between the Stokes (1) and Darcy (2). - * - * Dirichlet-like and Neumann-like conditions for the respective domain are evaluated. - * - * \param lfsu1 local basis for the trial space of the Stokes domain - * \param lfsu2 local basis for the trial space of the Darcy domain - * \param vertInElem1 local vertex index in element1 - * \param vertInElem2 local vertex index in element2 - * \param sdElement1 the element in the Stokes domain - * \param sdElement2 the element in the Darcy domain - * \param boundaryVars1 the boundary variables at the interface of the Stokes domain - * \param boundaryVars2 the boundary variables at the interface of the Darcy domain - * \param cParams a parameter container - * \param couplingRes1 the coupling residual from the Stokes domain - * \param couplingRes2 the coupling residual from the Darcy domain - */ - template<typename LFSU1, typename LFSU2, typename RES1, typename RES2, typename CParams> - void evalCoupling(const LFSU1& lfsu1, const LFSU2& lfsu2, - const int vertInElem1, const int vertInElem2, - const SDElement1& sdElement1, const SDElement2& sdElement2, - const BoundaryVariables1& boundaryVars1, const BoundaryVariables2& boundaryVars2, - const CParams &cParams, - RES1& couplingRes1, RES2& couplingRes2) const - { - const GlobalPosition& globalPos1 = cParams.fvGeometry1.subContVol[vertInElem1].global; - const GlobalPosition& globalPos2 = cParams.fvGeometry2.subContVol[vertInElem2].global; - - const GlobalPosition& bfNormal1 = boundaryVars1.face().normal; - const Scalar density1 = useMoles1 ? cParams.elemVolVarsCur1[vertInElem1].molarDensity() - : cParams.elemVolVarsCur1[vertInElem1].density(); - const Scalar massMoleFrac1 = useMoles1 ? cParams.elemVolVarsCur1[vertInElem1].moleFraction(transportCompIdx1) - : cParams.elemVolVarsCur1[vertInElem1].massFraction(transportCompIdx1); - - const Scalar normalPhaseFlux1 = boundaryVars1.normalVelocity() * density1; - const Scalar diffusiveMoleFlux1 = bfNormal1 - * boundaryVars1.moleFractionGrad(transportCompIdx1) - * (boundaryVars1.diffusionCoeff(transportCompIdx1) - + boundaryVars1.eddyDiffusivity()) - * boundaryVars1.molarDensity(); - - using std::abs; - if (abs(bfNormal1[1]) < 1e-10) - { - DUNE_THROW(Dune::NotImplemented, "The coupling conditions are not implemented for vertical interfaces."); - } - - // MASS Balance - // Neumann-like conditions - if (cParams.boundaryTypes1.isCouplingNeumann(massBalanceIdx1)) - { - DUNE_THROW(Dune::NotImplemented, "The boundary condition isCouplingNeumann(massBalanceIdx1) for the Stokes side is not implemented."); - } - if (cParams.boundaryTypes2.isCouplingNeumann(massBalanceIdx2)) - { - if (globalProblem_.sdProblem1().isCornerPoint(globalPos1)) - { - Scalar diffusiveFlux = diffusiveMoleFlux1 * FluidSystem::molarMass(transportCompIdx1) - - diffusiveMoleFlux1 * FluidSystem::molarMass(phaseCompIdx1); - if (useMoles1) - { - diffusiveFlux = 0.0; - } - couplingRes2.accumulate(lfsu2.child(massBalanceIdx2), vertInElem2, - - normalPhaseFlux1 + diffusiveFlux); - } - else - { - couplingRes2.accumulate(lfsu2.child(massBalanceIdx2), vertInElem2, - globalProblem_.localResidual1().residual(vertInElem1)[massBalanceIdx1]); - } - } - - // Dirichlet-like - if (cParams.boundaryTypes1.isCouplingDirichlet(massBalanceIdx1)) - { - DUNE_THROW(Dune::NotImplemented, "The boundary condition isCouplingDirichlet(massBalanceIdx1) for the Stokes side is not implemented."); - } - if (cParams.boundaryTypes2.isCouplingDirichlet(massBalanceIdx2)) - { - couplingRes2.accumulate(lfsu2.child(massBalanceIdx2), vertInElem2, - globalProblem_.localResidual1().residual(vertInElem1)[momentumYIdx1] - -cParams.elemVolVarsCur1[vertInElem1].pressure()); - } - - - // MOMENTUM_X Balance - SpatialParams spatialParams = globalProblem_.sdProblem2().spatialParams(); - Scalar beaversJosephCoeff = spatialParams.beaversJosephCoeffAtPos(globalPos1); - assert(beaversJosephCoeff > 0); - using std::sqrt; - beaversJosephCoeff /= sqrt(spatialParams.intrinsicPermeability(sdElement2, cParams.fvGeometry2, vertInElem2)); - - // Neumann-like conditions - if (cParams.boundaryTypes1.isCouplingNeumann(momentumXIdx1)) - { - // v_tau = v - (v.n)n - const Scalar normalComp = boundaryVars1.velocity()*bfNormal1; - GlobalPosition normalV = bfNormal1; - normalV *= normalComp; - const GlobalPosition tangentialV = boundaryVars1.velocity() - normalV; - - // Implementation as Neumann-like condition: (v.n)n - for (int dimIdx=0; dimIdx < dim; ++dimIdx) - { - couplingRes1.accumulate(lfsu1.child(momentumXIdx1), vertInElem1, - beaversJosephCoeff - * boundaryVars1.face().area - * tangentialV[dimIdx] - * (boundaryVars1.dynamicViscosity() - + boundaryVars1.dynamicEddyViscosity())); - } - } - - // Dirichlet-like conditions - if (cParams.boundaryTypes1.isCouplingDirichlet(momentumXIdx1)) - { - // NOTE: This boundary condition is not implemented anymore because curPrimaryVars_ is protected - DUNE_THROW(Dune::NotImplemented, "The boundary condition isCouplingNeumann(momentumXIdx1) on the Stokes side is not implemented anymore."); - - // tangential component: vx = sqrt K /alpha * (grad v n(unity))t - // GlobalPosition tangentialVelGrad(0); - // boundaryVars1.velocityGrad().umv(elementUnitNormal, tangentialVelGrad); - // tangentialVelGrad /= -beaversJosephCoeff; // was - before - // this->residual_[vertInElem1][momentumXIdx1] = - // tangentialVelGrad[momentumXIdx1] - globalProblem_.localResidual1().curPriVars_(vertInElem1)[momentumXIdx1]); - } - - - // MOMENTUM_Y Balance - // Neumann-like conditions - if (cParams.boundaryTypes1.isCouplingNeumann(momentumYIdx1)) - { - // p*A as condition for free flow - // pressure correction is done in stokeslocalresidual.hh - couplingRes1.accumulate(lfsu1.child(momentumYIdx1), vertInElem1, - cParams.elemVolVarsCur2[vertInElem2].pressure(nPhaseIdx2) - * bfNormal1[momentumYIdx1]); - } - - // Dirichlet-like conditions - if (cParams.boundaryTypes1.isCouplingDirichlet(momentumYIdx1)) - { - // v.n as Dirichlet-like condition for the Stokes domain - if (globalProblem_.sdProblem2().isCornerPoint(globalPos2)) - { - Scalar sumNormalPhaseFluxes = 0.0; - for (int phaseIdx=0; phaseIdx<numPhases2; ++phaseIdx) - { - Scalar density = useMoles2 ? cParams.elemVolVarsCur2[vertInElem2].molarDensity(phaseIdx) - : cParams.elemVolVarsCur2[vertInElem2].density(phaseIdx); - sumNormalPhaseFluxes -= boundaryVars2.volumeFlux(phaseIdx) * density; - } - couplingRes1.accumulate(lfsu1.child(momentumYIdx1), vertInElem1, - -sumNormalPhaseFluxes / density1); - } - else - { - // set residualStokes[momentumYIdx1] = v_y in stokesnccouplinglocalresidual.hh - couplingRes1.accumulate(lfsu1.child(momentumYIdx1), vertInElem1, - globalProblem_.localResidual2().residual(vertInElem2)[massBalanceIdx2] - / density1); - } - } - - - // COMPONENT Balance - // Neumann-like conditions - if (cParams.boundaryTypes1.isCouplingNeumann(transportEqIdx1)) - { - DUNE_THROW(Dune::NotImplemented, "The boundary condition isCouplingNeumann(transportEqIdx1) is not implemented \ - for the Stokes side for multicomponent systems."); - } - if (cParams.boundaryTypes2.isCouplingNeumann(contiWEqIdx2)) - { - // only enter here, if a boundary layer model is used for the computation of the diffusive fluxes - if (blModel_) - { - Scalar advectiveFlux = normalPhaseFlux1 * massMoleFrac1; - Scalar diffusiveFluxBL = bfNormal1.two_norm() - * globalProblem_.evalBoundaryLayerConcentrationGradient(cParams, vertInElem1) - * (boundaryVars1.diffusionCoeff(transportCompIdx1) - + boundaryVars1.eddyDiffusivity()) - * boundaryVars1.molarDensity(); - if (!useMoles1) - { - diffusiveFluxBL *= FluidSystem::molarMass(transportCompIdx1); - } - - const Scalar massTransferCoeff = globalProblem_.evalMassTransferCoefficient(cParams, vertInElem1, vertInElem2); - - if (massTransferModel_ && globalProblem_.sdProblem1().isCornerPoint(globalPos1)) - { - Scalar diffusiveFluxAtCorner = diffusiveMoleFlux1; - if (!useMoles1) - { - diffusiveFluxAtCorner *= FluidSystem::molarMass(transportCompIdx1); - } - - couplingRes2.accumulate(lfsu2.child(contiWEqIdx2), vertInElem2, - -massTransferCoeff*(advectiveFlux - diffusiveFluxBL) - - (1.-massTransferCoeff)*(advectiveFlux - diffusiveFluxAtCorner)); - } - else - { - couplingRes2.accumulate(lfsu2.child(contiWEqIdx2), vertInElem2, - -massTransferCoeff*(advectiveFlux - diffusiveFluxBL) + - (1.-massTransferCoeff)*globalProblem_.localResidual1().residual(vertInElem1)[transportEqIdx1]); - } - } - else if (globalProblem_.sdProblem1().isCornerPoint(globalPos1)) - { - Scalar advectiveFlux = normalPhaseFlux1 * massMoleFrac1; - Scalar diffusiveFlux = diffusiveMoleFlux1; - if (!useMoles1) - { - diffusiveFlux *= FluidSystem::molarMass(transportCompIdx1); - } - - couplingRes2.accumulate(lfsu2.child(contiWEqIdx2), vertInElem2, - -(advectiveFlux - diffusiveFlux)); - } - else - { - static_assert(GET_PROP_VALUE(Stokes2cTypeTag, UseMoles) == GET_PROP_VALUE(TwoPTwoCTypeTag, UseMoles), - "This coupling condition is not implemented for different formulations (mass/mole) in the subdomains."); - - // the component mass flux from the stokes domain - couplingRes2.accumulate(lfsu2.child(contiWEqIdx2), vertInElem2, - globalProblem_.localResidual1().residual(vertInElem1)[transportEqIdx1]); - } - } - - // Dirichlet-like conditions - if (cParams.boundaryTypes1.isCouplingDirichlet(transportEqIdx1)) - { - // set residualStokes[transportEqIdx1] = x in stokesnccouplinglocalresidual.hh - // coupling residual is added to "real" residual - Scalar massMoleFrac = useMoles2 ? cParams.elemVolVarsCur2[vertInElem2].moleFraction(nPhaseIdx2, wCompIdx2) - : cParams.elemVolVarsCur2[vertInElem2].massFraction(nPhaseIdx2, wCompIdx2); - couplingRes1.accumulate(lfsu1.child(transportEqIdx1), vertInElem1, - -massMoleFrac); - } - if (cParams.boundaryTypes2.isCouplingDirichlet(contiWEqIdx2)) - { - DUNE_THROW(Dune::NotImplemented, "The boundary condition isCouplingDirichlet(contiWEqIdx2) is not implemented \ - for the Darcy side for multicomponent systems."); - } - } - - protected: - GlobalProblem& globalProblem() const - { return globalProblem_; } - - Implementation *asImp_() - { return static_cast<Implementation *> (this); } - const Implementation *asImp_() const - { return static_cast<const Implementation *> (this); } - - unsigned int blModel_; - unsigned int massTransferModel_; - - private: - /*! - * \brief A struct that contains data of the FF and PM including boundary types, - * volume variables in both subdomains and geometric information - */ - struct CParams - { - BoundaryTypes1 boundaryTypes1; - BoundaryTypes2 boundaryTypes2; - ElementVolumeVariables1 elemVolVarsPrev1; - ElementVolumeVariables1 elemVolVarsCur1; - ElementVolumeVariables2 elemVolVarsPrev2; - ElementVolumeVariables2 elemVolVarsCur2; - FVElementGeometry1 fvGeometry1; - FVElementGeometry2 fvGeometry2; - }; - - GlobalProblem& globalProblem_; -}; - -} // end namespace Dumux - -#endif // DUMUX_2CSTOKES_2P2C_LOCALOPERATOR_HH diff --git a/dumux/multidomain/2cstokes2p2c/newtoncontroller.hh b/dumux/multidomain/2cstokes2p2c/newtoncontroller.hh deleted file mode 100644 index 982860f27864b09379ff85b0565f7cbdaadf1ad2..0000000000000000000000000000000000000000 --- a/dumux/multidomain/2cstokes2p2c/newtoncontroller.hh +++ /dev/null @@ -1,68 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Reference implementation of a Newton controller for the coupling of a two-component Stokes model - * and a two-phase two-component porous-medium model under isothermal conditions. - */ -#ifndef DUMUX_2CSTOKES_2P2C_NEWTON_CONTROLLER_HH -#define DUMUX_2CSTOKES_2P2C_NEWTON_CONTROLLER_HH - -#include <dumux/multidomain/newtoncontroller.hh> - -namespace Dumux -{ - -/*! - * \ingroup Newton - * \ingroup TwoPTwoCStokesTwoCModel - * \ingroup TwoPTwoCZeroEqTwoCModel - * \brief Implementation of a Newton controller for the coupling of a two-component Stokes model - * and a two-phase two-component porous-medium model under isothermal conditions. - * - * The Newton controller ensures that the updateStaticData routine is called - * in the porous-medium sub-problem - */ -template <class TypeTag> -class TwoCStokesTwoPTwoCNewtonController : public MultiDomainNewtonController<TypeTag> -{ - typedef MultiDomainNewtonController<TypeTag> ParentType; - - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; - -public: - //! \brief The constructor - TwoCStokesTwoPTwoCNewtonController(const Problem &problem) - : ParentType(problem) - { } - - //! \copydoc NewtonController::newtonEndStep() - void newtonEndStep(SolutionVector &uCurrentIter, SolutionVector &uLastIter) - { - ParentType::newtonEndStep(uCurrentIter, uLastIter); - - this->model_().sdModel2().updateStaticData(this->model_().sdModel2().curSol(), - this->model_().sdModel2().prevSol()); - } -}; - -} // namespace Dumux - -#endif // DUMUX_2CSTOKES_2P2C_NEWTON_CONTROLLER_HH diff --git a/dumux/multidomain/2cstokes2p2c/problem.hh b/dumux/multidomain/2cstokes2p2c/problem.hh deleted file mode 100644 index 47673ccacf5e7d1217620bea5496c015bb34bce6..0000000000000000000000000000000000000000 --- a/dumux/multidomain/2cstokes2p2c/problem.hh +++ /dev/null @@ -1,172 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief The problem class for the coupling of a isothermal two-component Stokes - * and a isothermal two-phase two-component Darcy model. - */ - -#ifndef DUMUX_2C_STOKES_2P2C_PROBLEM_HH -#define DUMUX_2C_STOKES_2P2C_PROBLEM_HH - -#include <dumux/freeflow/boundarylayermodel.hh> -#include <dumux/freeflow/masstransfermodel.hh> -#include <dumux/freeflow/stokesnc/properties.hh> -#include <dumux/multidomain/problem.hh> -#include <dumux/porousmediumflow/2p2c/implicit/properties.hh> - -#include "properties.hh" - -namespace Dumux -{ - -/*! - * \ingroup TwoPTwoCStokesTwoCModel - * \ingroup TwoPTwoCZeroEqTwoCModel - * \brief The problem class for the coupling of a isothermal two-component Stokes - * and a isothermal two-phase two-component Darcy model. - */ -template <class TypeTag> -class TwoCStokesTwoPTwoCProblem : public MultiDomainProblem<TypeTag> -{ - typedef MultiDomainProblem<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, Problem) Implementation; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - - typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) Stokes2cTypeTag; - typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) TwoPTwoCTypeTag; - typedef typename GET_PROP_TYPE(Stokes2cTypeTag, Indices) Stokes2cIndices; - typedef typename GET_PROP_TYPE(TwoPTwoCTypeTag, Indices) TwoPTwoCIndices; - - // Stokes - enum { numComponents1 = Stokes2cIndices::numComponents }; - enum { // component indices - transportCompIdx1 = Stokes2cIndices::transportCompIdx, //!< Index of transported component - phaseCompIdx1 = Stokes2cIndices::phaseCompIdx //!< Index of main component of the phase - }; - // Darcy - enum { // phase indices - wPhaseIdx2 = TwoPTwoCIndices::wPhaseIdx, //!< Index for the liquid phase - }; - -public: - //! The constructor - template<class GridView> - TwoCStokesTwoPTwoCProblem(TimeManager &timeManager, - GridView gridView) - : ParentType(timeManager, gridView) - { - blModel_ = GET_PARAM_FROM_GROUP(TypeTag, int, BoundaryLayer, Model); - massTransferModel_ = GET_PARAM_FROM_GROUP(TypeTag, int, MassTransfer, Model); - } - - /*! - * \brief Returns a BoundaryLayerModel object - * - * \param cParams a parameter container - * \param scvIdx1 The local index of the sub-control volume of the Stokes domain - */ - template<typename CParams> - BoundaryLayerModel<TypeTag> evalBoundaryLayerModel(CParams cParams, const int scvIdx1) const - { - // current position + additional virtual runup distance - const Scalar distance = cParams.fvGeometry1.subContVol[scvIdx1].global[0] - + GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, BoundaryLayer, Offset); - BoundaryLayerModel<TypeTag> boundaryLayerModel(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefVelocity), - distance, - cParams.elemVolVarsCur1[scvIdx1].kinematicViscosity(), - blModel_); - if (blModel_ == 1) - boundaryLayerModel.setConstThickness(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, BoundaryLayer, ConstThickness)); - if (blModel_ >= 4) - boundaryLayerModel.setYPlus(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, BoundaryLayer, YPlus)); - if (blModel_ >= 5) - boundaryLayerModel.setRoughnessLength(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, BoundaryLayer, RoughnessLength)); - if (blModel_ == 7) - boundaryLayerModel.setHydraulicDiameter(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, BoundaryLayer, HydraulicDiameter)); - - return boundaryLayerModel; - } - - /*! - * \brief Returns the concentration gradient through the boundary layer - * - * \param cParams a parameter container - * \param scvIdx1 The local index of the sub-control volume of the Stokes domain - */ - template<typename CParams> - Scalar evalBoundaryLayerConcentrationGradient(CParams cParams, const int scvIdx1) const - { - static_assert(numComponents1 == 2, - "This coupling condition is only implemented for two components."); - Scalar massFractionOut = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefMassfrac); - Scalar M1 = FluidSystem::molarMass(transportCompIdx1); - Scalar M2 = FluidSystem::molarMass(phaseCompIdx1); - Scalar X2 = 1.0 - massFractionOut; - Scalar massToMoleDenominator = M2 + X2*(M1 - M2); - Scalar moleFractionOut = massFractionOut * M2 /massToMoleDenominator; - - Scalar normalMoleFracGrad = cParams.elemVolVarsCur1[scvIdx1].moleFraction(transportCompIdx1) - - moleFractionOut; - return normalMoleFracGrad / asImp_().evalBoundaryLayerModel(cParams, scvIdx1).massBoundaryLayerThickness(); - } - - /*! - * \brief Returns the mass transfer coefficient - * - * \param cParams a parameter container - * \param scvIdx1 The local index of the sub-control volume of the Stokes domain - * \param scvIdx2 The local index of the sub-control volume of the Darcy domain - */ - template<typename CParams> - Scalar evalMassTransferCoefficient(CParams cParams, const int scvIdx1, const int scvIdx2) const - { - MassTransferModel<TypeTag> massTransferModel(cParams.elemVolVarsCur2[scvIdx2].saturation(wPhaseIdx2), - cParams.elemVolVarsCur2[scvIdx2].porosity(), - asImp_().evalBoundaryLayerModel(cParams, scvIdx1).massBoundaryLayerThickness(), - massTransferModel_); - if (massTransferModel_ == 1) - massTransferModel.setMassTransferCoeff(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, MassTransfer, Coefficient)); - if (massTransferModel_ == 2 || massTransferModel_ == 4) - massTransferModel.setCharPoreRadius(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, MassTransfer, CharPoreRadius)); - if (massTransferModel_ == 3) - massTransferModel.setCapillaryPressure(cParams.elemVolVarsCur2[scvIdx2].capillaryPressure()); - - return massTransferModel.massTransferCoefficient(); - } - -private: - //! Returns the implementation of the problem (i.e. static polymorphism) - Implementation &asImp_() - { return *static_cast<Implementation *>(this); } - - //! \copydoc asImp_() - const Implementation &asImp_() const - { return *static_cast<const Implementation *>(this); } - - unsigned int blModel_; - unsigned int massTransferModel_; -}; - -} // namespace Dumux - -#endif // DUMUX_2C_STOKES_2P2C_PROBLEM_HH diff --git a/dumux/multidomain/2cstokes2p2c/properties.hh b/dumux/multidomain/2cstokes2p2c/properties.hh deleted file mode 100644 index 36330a143e4838836ad6abca6b7efdb161f079df..0000000000000000000000000000000000000000 --- a/dumux/multidomain/2cstokes2p2c/properties.hh +++ /dev/null @@ -1,60 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \ingroup Properties - * \ingroup ImplicitProperties - * \ingroup MultidomainModel - * - * \brief Defines the properties required for the coupled 2cstokes2p2c model. - */ - -#ifndef DUMUX_TWOCSTOKESTWOPTWOC_PROPERTIES_HH -#define DUMUX_TWOCSTOKESTWOPTWOC_PROPERTIES_HH - -#include <dumux/multidomain/propertydefaults.hh> - -namespace Dumux -{ - -//////////////////////////////// -// properties -//////////////////////////////// -namespace Properties -{ - -////////////////////////////////////////////////////////////////// -// Type tags -////////////////////////////////////////////////////////////////// - -//! The type tags for the coupled 2cstokes2p2c model -NEW_TYPE_TAG(TwoCStokesTwoPTwoC, INHERITS_FROM(MultiDomain)); - -////////////////////////////////////////////////////////////////// -// Property tags -////////////////////////////////////////////////////////////////// -NEW_PROP_TAG(BoundaryLayerModel); //!< Type of the used boundary layer model -NEW_PROP_TAG(MassTransferModel); //!< Type of the used mass transfer model - -} // end namespace properties - -} // end namespace Dumux - - -#endif diff --git a/dumux/multidomain/2cstokes2p2c/propertydefaults.hh b/dumux/multidomain/2cstokes2p2c/propertydefaults.hh deleted file mode 100644 index 78bec087087806735e7e363f471fcc4308b1a14e..0000000000000000000000000000000000000000 --- a/dumux/multidomain/2cstokes2p2c/propertydefaults.hh +++ /dev/null @@ -1,66 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \ingroup Properties - * \ingroup ImplicitProperties - * \ingroup MultidomainModel - * - * \brief Defines default values for the properties required by the - * coupled 2cstokes2p2c model. - */ -#ifndef DUMUX_TWOCSTOKESTWOPTWOC_PROPERTY_DEFAULTS_HH -#define DUMUX_TWOCSTOKESTWOPTWOC_PROPERTY_DEFAULTS_HH - -#include "properties.hh" -#include "newtoncontroller.hh" - -namespace Dumux -{ -namespace Properties -{ -////////////////////////////////////////////////////////////////// -// Property defaults -////////////////////////////////////////////////////////////////// - -// Specify the multidomain gridview -SET_TYPE_PROP(TwoCStokesTwoPTwoC, GridView, - typename GET_PROP_TYPE(TypeTag, MultiDomainGrid)::LeafGridView); - -// Specify the type of the used solution vector -SET_TYPE_PROP(TwoCStokesTwoPTwoC, SolutionVector, - typename GET_PROP_TYPE(TypeTag, MultiDomainGridOperator)::Traits::Domain); - -// Specif the used Newton controller -SET_TYPE_PROP(TwoCStokesTwoPTwoC, NewtonController, TwoCStokesTwoPTwoCNewtonController<TypeTag>); - -// Set this to one here (must fit to the structure of the coupled matrix which has block length 1) -SET_INT_PROP(TwoCStokesTwoPTwoC, NumEq, 1); - -// Specify the used boundary layer model -SET_INT_PROP(TwoCStokesTwoPTwoC, BoundaryLayerModel, 0); - -// Specify the used mass transfer model -SET_INT_PROP(TwoCStokesTwoPTwoC, MassTransferModel, 0); - -} // end namespace properties - -} // end namespace Dumux - -#endif diff --git a/dumux/multidomain/2cstokes2p2c/stokesnccouplinglocalresidual.hh b/dumux/multidomain/2cstokes2p2c/stokesnccouplinglocalresidual.hh deleted file mode 100644 index 83be63717c8855431eb1954a88b1def0a925380d..0000000000000000000000000000000000000000 --- a/dumux/multidomain/2cstokes2p2c/stokesnccouplinglocalresidual.hh +++ /dev/null @@ -1,202 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Element-wise calculation of the Jacobian matrix for problems - * using the coupled compositional Stokes box model. - */ - -#ifndef DUMUX_STOKESNC_COUPLING_LOCAL_RESIDUAL_HH -#define DUMUX_STOKESNC_COUPLING_LOCAL_RESIDUAL_HH - -#include <dumux/freeflow/stokesnc/localresidual.hh> -#include <dumux/freeflow/stokesnc/model.hh> - -namespace Dumux -{ -/*! - * \ingroup ImplicitLocalResidual - * \ingroup TwoPTwoCStokesTwoCModel - * \ingroup TwoPTwoCZeroEqTwoCModel - * \brief Element-wise calculation of the Jacobian matrix for problems - * using the coupled compositional Stokes box model. - * It is derived from the compositional Stokes box model. - */ -template<class TypeTag> -class StokesncCouplingLocalResidual : public StokesncLocalResidual<TypeTag> -{ - typedef StokesncLocalResidual<TypeTag> ParentType; - - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - - enum { - dim = GridView::dimension, - dimWorld = GridView::dimensionworld, - numEq = GET_PROP_VALUE(TypeTag, NumEq), - numComponents = Indices::numComponents - }; - enum { - //indices of the equations - massBalanceIdx = Indices::massBalanceIdx, //!< Index of the mass balance - - momentumXIdx = Indices::momentumXIdx, //!< Index of the x-component of the momentum balance - momentumYIdx = Indices::momentumYIdx, //!< Index of the y-component of the momentum balance - momentumZIdx = Indices::momentumZIdx, //!< Index of the z-component of the momentum balance - lastMomentumIdx = Indices::lastMomentumIdx, //!< Index of the last component of the momentum balance - transportEqIdx = Indices::transportEqIdx, //!< Index of the transport equation - conti0EqIdx = Indices::conti0EqIdx - }; - enum { - //indices of phase and transported component - phaseIdx = Indices::phaseIdx, - transportCompIdx = Indices::transportCompIdx - }; - enum { - dimXIdx = Indices::dimXIdx, //!< Index for the first component of a vector - dimYIdx = Indices::dimYIdx, //!< Index for the second component of a vector - dimZIdx = Indices::dimZIdx //!< Index for the third component of a vector - }; - - typedef typename GridView::ctype CoordScalar; - - typedef Dune::FieldVector<CoordScalar, dimWorld> GlobalPosition; - typedef Dune::FieldVector<Scalar, dim> DimVector; - - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - - typedef typename GET_PROP_TYPE(TypeTag, VolumeVariables) VolumeVariables; - typedef typename GET_PROP_TYPE(TypeTag, FluxVariables) FluxVariables; - typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; - - static const bool useMoles = GET_PROP_VALUE(TypeTag, UseMoles); - -public: - /*! - * \brief Implementation of the boundary evaluation for the Stokes model - * - * Evaluate one part of the Dirichlet-like coupling conditions for a single - * sub-control volume face; rest is done in the local coupling operator - */ - void evalBoundary_() - { - ParentType::evalBoundary_(); - - typedef Dune::ReferenceElements<Scalar, dim> ReferenceElements; - typedef Dune::ReferenceElement<Scalar, dim> ReferenceElement; - const ReferenceElement &refElement = ReferenceElements::general(this->element_().geometry().type()); - - // loop over vertices of the element - for (int scvIdx = 0; scvIdx < this->fvGeometry_().numScv; scvIdx++) - { - // consider only SCVs on the boundary - if (this->fvGeometry_().subContVol[scvIdx].inner) - continue; - - const BoundaryTypes &bcTypes = this->bcTypes_(scvIdx); - - // evaluate boundary conditions for the intersections of the current element - for (const auto& intersection : intersections(this->gridView_(), this->element_())) - { - // handle only intersections on the boundary - if (!intersection.boundary()) - continue; - - // assemble the boundary for all vertices of the current face - const int fIdx = intersection.indexInInside(); - const int numFaceVertices = refElement.size(fIdx, 1, dim); - - // loop over the single vertices on the current face - for (int faceVertexIdx = 0; faceVertexIdx < numFaceVertices; ++faceVertexIdx) - { - // only evaluate, if we consider the same face vertex as in the outer - // loop over the element vertices - if (refElement.subEntity(fIdx, 1, faceVertexIdx, dim) != scvIdx) - continue; - - const int boundaryFaceIdx = this->fvGeometry_().boundaryFaceIndex(fIdx, faceVertexIdx); - FluxVariables boundaryVars; - boundaryVars.update(this->problem_(), - this->element_(), - this->fvGeometry_(), - boundaryFaceIdx, - this->curVolVars_(), - true); - const VolumeVariables &volVars = this->curVolVars_()[scvIdx]; - - // set velocity normal to the interface - if (bcTypes.isCouplingDirichlet(momentumYIdx)) - { - this->residual_[scvIdx][momentumYIdx] = volVars.velocity() - * boundaryVars.face().normal - / boundaryVars.face().normal.two_norm(); - Valgrind::CheckDefined(this->residual_[scvIdx][momentumYIdx]); - } - - // add pressure correction - required for pressure coupling, - // if p.n comes from the pm - if (bcTypes.isCouplingNeumann(momentumYIdx) || bcTypes.isCouplingMortar(momentumYIdx)) - { - this->residual_[scvIdx][momentumYIdx] -= volVars.pressure() - * boundaryVars.face().normal[momentumYIdx]; - Valgrind::CheckDefined(this->residual_[scvIdx][momentumYIdx]); - } - - // set mole or mass fraction for the transported components - for (int compIdx = 0; compIdx < numComponents; compIdx++) - { - int eqIdx = conti0EqIdx + compIdx; - if ((eqIdx != massBalanceIdx) && bcTypes.isCouplingDirichlet(eqIdx)) - { - if (useMoles) - this->residual_[scvIdx][eqIdx] = volVars.moleFraction(compIdx); - else - this->residual_[scvIdx][eqIdx] = volVars.massFraction(compIdx); - Valgrind::CheckDefined(this->residual_[scvIdx][compIdx]); - } - } - } - } - } - } - - /*! - * \brief Removes the stabilization for the Stokes model. - */ - void evalBoundaryPDELab_() - { - // loop over vertices of the element - for (int scvIdx = 0; scvIdx < this->fvGeometry_().numScv; scvIdx++) - { - // consider only SCVs on the boundary - if (this->fvGeometry_().subContVol[scvIdx].inner) - continue; - - this->removeStabilizationAtBoundary_(scvIdx); - } - } -}; - -} // namespace Dumux - -#endif // DUMUX_STOKESNC_COUPLING_LOCAL_RESIDUAL_HH diff --git a/dumux/multidomain/CMakeLists.txt b/dumux/multidomain/CMakeLists.txt deleted file mode 100644 index cadda95d1606bc15fcd5c268133be35f1ae68891..0000000000000000000000000000000000000000 --- a/dumux/multidomain/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -add_subdirectory(2cnistokes2p2cni) -add_subdirectory(2cstokes2p2c) - -#install headers -install(FILES -assembler.hh -boxcouplinglocalresidual.hh -convergencewriter.hh -localoperator.hh -model.hh -newtoncontroller.hh -problem.hh -properties.hh -propertydefaults.hh -splitandmerge.hh -subdomainproperties.hh -subdomainpropertydefaults.hh -DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/multidomain) diff --git a/dumux/multidomain/assembler.hh b/dumux/multidomain/assembler.hh deleted file mode 100644 index d4bfe93cf47bafaa0a8f4f536894ddb06e0fdc83..0000000000000000000000000000000000000000 --- a/dumux/multidomain/assembler.hh +++ /dev/null @@ -1,218 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief An assembler for the global Jacobian matrix for multidomain models. - */ - -#ifndef DUMUX_MULTIDOMAIN_ASSEMBLER_HH -#define DUMUX_MULTIDOMAIN_ASSEMBLER_HH - -#include <dune/pdelab/constraints/common/constraintsparameters.hh> -#include <dune/pdelab/multidomain/constraints.hh> - -#include "properties.hh" -#include "propertydefaults.hh" - -namespace Dumux { - -/*! - * \ingroup MultidomainModel - * \brief An assembler for the global Jacobian matrix for multidomain models. - */ -template<class TypeTag> -class MultiDomainAssembler -{ - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - - typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) SubDomain1TypeTag; - typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) SubDomain2TypeTag; - - typedef typename GET_PROP_TYPE(SubDomain1TypeTag, Problem) SubDomainProblem1; - typedef typename GET_PROP_TYPE(SubDomain2TypeTag, Problem) SubDomainProblem2; - - typedef typename GET_PROP_TYPE(SubDomain1TypeTag, LocalFEMSpace) FEM1; - typedef typename GET_PROP_TYPE(SubDomain2TypeTag, LocalFEMSpace) FEM2; - - typedef typename GET_PROP_TYPE(SubDomain1TypeTag, ScalarGridFunctionSpace) ScalarGridFunctionSpace1; - typedef typename GET_PROP_TYPE(SubDomain2TypeTag, ScalarGridFunctionSpace) ScalarGridFunctionSpace2; - - typedef typename GET_PROP_TYPE(SubDomain1TypeTag, GridFunctionSpace) GridFunctionSpace1; - typedef typename GET_PROP_TYPE(SubDomain2TypeTag, GridFunctionSpace) GridFunctionSpace2; - - typedef typename GET_PROP_TYPE(SubDomain1TypeTag, LocalOperator) LocalOperator1; - typedef typename GET_PROP_TYPE(SubDomain2TypeTag, LocalOperator) LocalOperator2; - - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGridFunctionSpace) MultiDomainGridFunctionSpace; - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainCondition) MultiDomainCondition; - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainSubProblem1) MultiDomainSubProblem1; - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainSubProblem2) MultiDomainSubProblem2; - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainCouplingLocalOperator) MultiDomainCouplingLocalOperator; - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainCoupling) MultiDomainCoupling; - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainConstraintsTrafo) MultiDomainConstraintsTrafo; - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGridOperator) MultiDomainGridOperator; - - typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; - typedef typename GET_PROP_TYPE(TypeTag, JacobianMatrix) JacobianMatrix; - - // copying the jacobian assembler is not a good idea - MultiDomainAssembler(const MultiDomainAssembler &); - -public: - //! \brief The constructor - MultiDomainAssembler() - { - globalProblem_ = 0; - sdProblem1_= 0; - sdProblem2_= 0; - } - - //! \brief The destructor - ~MultiDomainAssembler() - { } - - //! \copydoc ImplicitAssembler::init() - void init(Problem& problem) - { - globalProblem_ = &problem; - sdProblem1_ = &globalProblem_->sdProblem1(); - sdProblem2_ = &globalProblem_->sdProblem2(); - - fem1_ = std::make_shared<FEM1>(globalProblem_->sdGridView1()); - fem2_ = std::make_shared<FEM2>(globalProblem_->sdGridView2()); - - scalarGridFunctionSpace1_ = std::make_shared<ScalarGridFunctionSpace1>(globalProblem_->sdGridView1(), - *fem1_); - scalarGridFunctionSpace2_ = std::make_shared<ScalarGridFunctionSpace2>(globalProblem_->sdGridView2(), - *fem2_); - - gridFunctionSpace1_ = std::make_shared<GridFunctionSpace1>(*scalarGridFunctionSpace1_); - gridFunctionSpace2_ = std::make_shared<GridFunctionSpace2>(*scalarGridFunctionSpace2_); - - mdGridFunctionSpace_ = std::make_shared<MultiDomainGridFunctionSpace>(globalProblem_->mdGrid(), - *gridFunctionSpace1_, - *gridFunctionSpace2_); - - localOperator1_ = std::make_shared<LocalOperator1>(sdProblem1_->model()); - localOperator2_ = std::make_shared<LocalOperator2>(sdProblem2_->model()); - - condition1_ = std::make_shared<MultiDomainCondition>(0); - condition2_ = std::make_shared<MultiDomainCondition>(1); - - mdSubProblem1_ = std::make_shared<MultiDomainSubProblem1>(*localOperator1_, *condition1_); - mdSubProblem2_ = std::make_shared<MultiDomainSubProblem2>(*localOperator2_, *condition2_); - - couplingLocalOperator_ = std::make_shared<MultiDomainCouplingLocalOperator>(*globalProblem_); - mdCoupling_ = std::make_shared<MultiDomainCoupling>(*mdSubProblem1_, *mdSubProblem2_, *couplingLocalOperator_); - - constraintsTrafo_ = std::make_shared<MultiDomainConstraintsTrafo>(); - - mdGridOperator_ = std::make_shared<MultiDomainGridOperator>(*mdGridFunctionSpace_, *mdGridFunctionSpace_, - *constraintsTrafo_, *constraintsTrafo_, - *mdSubProblem1_, *mdSubProblem2_, *mdCoupling_); - - matrix_ = std::make_shared<JacobianMatrix>(*mdGridOperator_); - residual_ = std::make_shared<SolutionVector>(*mdGridFunctionSpace_); - } - - //! \copydoc ImplicitAssembler::assemble() - void assemble() - { - // assemble the matrix - *matrix_ = 0; - mdGridOperator_->jacobian(globalProblem_->model().curSol(), *matrix_); - - // calculate the global residual - *residual_ = 0; - mdGridOperator_->residual(globalProblem_->model().curSol(), *residual_); - } - - //! \copydoc ImplicitAssembler::reassembleAll() - void reassembleAll() - { } - - //! \copydoc ImplicitAssembler::matrix() - const JacobianMatrix &matrix() const - { return *matrix_; } - JacobianMatrix &matrix() - { return *matrix_; } - - //! \copydoc ImplicitAssembler::residual() - const SolutionVector &residual() const - { return *residual_; } - SolutionVector &residual() - { return *residual_; } - - /*! - * \brief Return constant reference to the multidomain gridfunctionspace - */ - MultiDomainGridFunctionSpace &gridFunctionSpace() const - { return *mdGridFunctionSpace_; } - - /*! - * \brief Return constant reference to the multidomain gridfunctionspace - */ - MultiDomainGridFunctionSpace &mdGridFunctionSpace() const - { return *mdGridFunctionSpace_; } - - /*! - * \brief Return the multidomain constraints transformation - */ - MultiDomainConstraintsTrafo &constraintsTrafo() const - { return *constraintsTrafo_; } - -private: - Problem *globalProblem_; - SubDomainProblem1 *sdProblem1_; - SubDomainProblem2 *sdProblem2_; - - std::shared_ptr<FEM1> fem1_; - std::shared_ptr<FEM2> fem2_; - - std::shared_ptr<ScalarGridFunctionSpace1> scalarGridFunctionSpace1_; - std::shared_ptr<ScalarGridFunctionSpace2> scalarGridFunctionSpace2_; - - std::shared_ptr<GridFunctionSpace1> gridFunctionSpace1_; - std::shared_ptr<GridFunctionSpace2> gridFunctionSpace2_; - std::shared_ptr<MultiDomainGridFunctionSpace> mdGridFunctionSpace_; - - std::shared_ptr<LocalOperator1> localOperator1_; - std::shared_ptr<LocalOperator2> localOperator2_; - - std::shared_ptr<MultiDomainCondition> condition1_; - std::shared_ptr<MultiDomainCondition> condition2_; - - std::shared_ptr<MultiDomainSubProblem1> mdSubProblem1_; - std::shared_ptr<MultiDomainSubProblem2> mdSubProblem2_; - - std::shared_ptr<MultiDomainCouplingLocalOperator> couplingLocalOperator_; - std::shared_ptr<MultiDomainCoupling> mdCoupling_; - - std::shared_ptr<MultiDomainConstraintsTrafo> constraintsTrafo_; - std::shared_ptr<MultiDomainGridOperator> mdGridOperator_; - - std::shared_ptr<JacobianMatrix> matrix_; - - std::shared_ptr<SolutionVector> residual_; -}; - -} // namespace Dumux - -#endif // DUMUX_MULTIDOMAIN_ASSEMBLER_HH diff --git a/dumux/multidomain/boxcouplinglocalresidual.hh b/dumux/multidomain/boxcouplinglocalresidual.hh deleted file mode 100644 index 0a8057b1c8efc526ca0fe6784b7074d953017e40..0000000000000000000000000000000000000000 --- a/dumux/multidomain/boxcouplinglocalresidual.hh +++ /dev/null @@ -1,150 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Element-wise calculation of the Jacobian matrix for problems - * using the coupled box model. - */ -#ifndef DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH -#define DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH - -#include <dumux/implicit/box/localresidual.hh> - -namespace Dumux -{ -/*! - * \ingroup ImplicitLocalResidual - * \ingroup TwoPTwoCNIStokesTwoCNIModel - * \ingroup TwoPTwoCNIZeroEqTwoCNIModel - * \brief Element-wise calculation of the Jacobian matrix for problems - * using the coupled box model. - */ -template<class TypeTag> -class BoxCouplingLocalResidual : public BoxLocalResidual<TypeTag> -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, LocalResidual) Implementation; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - - enum { - numEq = GET_PROP_VALUE(TypeTag, NumEq), - - dim = GridView::dimension, - dimWorld = GridView::dimensionworld - }; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GridView::Grid::ctype CoordScalar; - - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - - typedef typename GET_PROP_TYPE(TypeTag, ElementBoundaryTypes) ElementBoundaryTypes; - typedef typename GET_PROP_TYPE(TypeTag, ElementVolumeVariables) ElementVolumeVariables; - - // copying the local residual class is not a good idea - BoxCouplingLocalResidual(const BoxCouplingLocalResidual &); - -public: - //! \brief The constructor - BoxCouplingLocalResidual() - { } - - /*! - * \brief Compute the local residual, i.e. the deviation of the - * equations from zero. Calls evalBoundaryPDELab, - * where the stabilization of the mass balance (stokes) - * is removed. No further boundary conditions are employed. - * - * \param element The DUNE Codim<0> entity for which the residual - * ought to be calculated - * \param fvGeometry The finite-volume geometry of the element - * \param prevVolVars The volume averaged variables for all - * sub-control volumes of the element at the previous - * time level - * \param curVolVars The volume averaged variables for all - * sub-control volumes of the element at the current - * time level - * \param bcTypes The types of the boundary conditions for all - * vertices of the element - */ - void evalPDELab(const Element &element, - const FVElementGeometry &fvGeometry, - const ElementVolumeVariables &prevVolVars, - const ElementVolumeVariables &curVolVars, - const ElementBoundaryTypes &bcTypes) - { - const int numVerts = fvGeometry.numScv; -#if HAVE_VALGRIND - for (int i=0; i < numVerts; i++) { - Valgrind::CheckDefined(prevVolVars[i]); - Valgrind::CheckDefined(curVolVars[i]); - } -#endif // HAVE_VALGRIND - - this->elemPtr_ = &element; - this->fvElemGeomPtr_ = &fvGeometry; - this->bcTypesPtr_ = &bcTypes; - this->prevVolVarsPtr_ = &prevVolVars; - this->curVolVarsPtr_ = &curVolVars; - - // reset residual - this->residual_.resize(numVerts); - this->storageTerm_.resize(numVerts); - - this->residual_ = 0; - this->storageTerm_ = 0; - - asImp_().evalFluxes_(); - asImp_().evalVolumeTerms_(); - - // evaluate the boundary (modified version) - asImp_().evalBoundaryPDELab_(); - -#if HAVE_VALGRIND - for (int i=0; i < numVerts; i++) - Valgrind::CheckDefined(this->residual_[i]); -#endif // HAVE_VALGRIND - } - -protected: - /*! - * \brief Empty method, has to be overwritten if required. - * Called e.g. for the removal of the stabilization of the - * stokes model. - */ - void evalBoundaryPDELab_() - { } - - Implementation &asImp_() - { - assert(static_cast<Implementation*>(this) != 0); - return *static_cast<Implementation*>(this); - } - - const Implementation &asImp_() const - { - assert(static_cast<const Implementation*>(this) != 0); - return *static_cast<const Implementation*>(this); - } -}; - -} // namespace Dumux - -#endif // DUMUX_BOX_COUPLING_LOCAL_RESIDUAL_HH diff --git a/dumux/multidomain/convergencewriter.hh b/dumux/multidomain/convergencewriter.hh deleted file mode 100644 index 01c959c261f9e671ea9295aa94308e577903a1a1..0000000000000000000000000000000000000000 --- a/dumux/multidomain/convergencewriter.hh +++ /dev/null @@ -1,150 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Reference implementation of a newton convergence writer for coupled problems. -*/ -#ifndef DUMUX_MULTIDOMAIN_CONVERGENCEWRITER_HH -#define DUMUX_MULTIDOMAIN_CONVERGENCEWRITER_HH - -#include <dune/grid/multidomaingrid.hh> -#include <dune/pdelab/backend/istlsolverbackend.hh> - -#include <dumux/io/vtkmultiwriter.hh> - -#include "splitandmerge.hh" -#include "newtoncontroller.hh" - -namespace Dumux -{ -/*! - * \ingroup MultidomainModel - * \brief Writes the intermediate solutions during - * the Newton scheme - */ -template <class TypeTag> -struct MultiDomainConvergenceWriter -{ - typedef typename GET_PROP_TYPE(TypeTag, NewtonController) NewtonController; - - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; - typedef typename GET_PROP_TYPE(TypeTag, SplitAndMerge) SplitAndMerge; - - typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) SubDomain1TypeTag; - typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) SubDomain2TypeTag; - - typedef typename GET_PROP_TYPE(SubDomain1TypeTag, GridView) GridView1; - typedef typename GET_PROP_TYPE(SubDomain2TypeTag, GridView) GridView2; - - typedef typename GET_PROP_TYPE(SubDomain1TypeTag, SolutionVector) SolutionVector1; - typedef typename GET_PROP_TYPE(SubDomain2TypeTag, SolutionVector) SolutionVector2; - - typedef VtkMultiWriter<GridView1> VtkMultiWriter1; - typedef VtkMultiWriter<GridView2> VtkMultiWriter2; - - /*! - * \brief The constructor - * \param ctl The newton controller - */ - MultiDomainConvergenceWriter(NewtonController &ctl) - : ctl_(ctl) - { - timeStepIndex_ = 0; - iteration_ = 0; - vtkMultiWriter1_ = 0; - vtkMultiWriter2_ = 0; - } - - /*! - * \brief Start and advance in time - */ - void beginTimestep() - { - ++timeStepIndex_; - iteration_ = 0; - } - - /*! - * \brief Start and advance one iteration - * - * \param gridView1 The grid view of sub problem 1 - * \param gridView2 The grid view of sub problem 2 - */ - void beginIteration(const GridView1 &gridView1, - const GridView2 &gridView2) - { - ++ iteration_; - if (!vtkMultiWriter1_) - vtkMultiWriter1_ = std::make_shared<VtkMultiWriter2>(gridView1, "convergence1"); - vtkMultiWriter1_->beginWrite(timeStepIndex_ + iteration_ / 100.0); - - if (!vtkMultiWriter2_) - vtkMultiWriter2_ = std::make_shared<VtkMultiWriter2>(gridView2, "convergence2"); - vtkMultiWriter2_->beginWrite(timeStepIndex_ + iteration_ / 100.0); - } - - /*! - * \brief Write convergence to vtk - * - * \param uLastIter The solution of the last iteration - * \param deltaU The delta as calculated from solving the linear - * system of equations. This parameter also stores - * the updated solution. - */ - void writeFields(const SolutionVector &uLastIter, - const SolutionVector &deltaU) - { - SolutionVector1 uLastIter1(ctl_.method().model().sdModel1().curSol()); - SolutionVector2 uLastIter2(ctl_.method().model().sdModel2().curSol()); - SolutionVector1 deltaU1(uLastIter1); - SolutionVector2 deltaU2(uLastIter2); - - SplitAndMerge::splitSolVector(uLastIter, uLastIter1, uLastIter2); - SplitAndMerge::splitSolVector(deltaU, deltaU1, deltaU2); - - std::cout << "\nWriting convergence file of current Newton iteration\n"; - ctl_.method().model().sdModel1().addConvergenceVtkFields(*vtkMultiWriter1_, uLastIter1, deltaU1); - ctl_.method().model().sdModel2().addConvergenceVtkFields(*vtkMultiWriter2_, uLastIter2, deltaU2); - } - - //! \brief End of iteration - void endIteration() - { - vtkMultiWriter1_->endWrite(); - vtkMultiWriter2_->endWrite(); - } - - //! \brief End of time step - void endTimestep() - { - iteration_ = 0; - } - -private: - int timeStepIndex_; - int iteration_; - std::shared_ptr<VtkMultiWriter1> vtkMultiWriter1_; - std::shared_ptr<VtkMultiWriter2> vtkMultiWriter2_; - NewtonController &ctl_; -}; - -} // namespace Dumux - -#endif // DUMUX_MULTIDOMAIN_CONVERGENCEWRITER_HH diff --git a/dumux/multidomain/localoperator.hh b/dumux/multidomain/localoperator.hh deleted file mode 100644 index 84bf4a0eabd5e0fbb5a104788d8e0dc0234f3793..0000000000000000000000000000000000000000 --- a/dumux/multidomain/localoperator.hh +++ /dev/null @@ -1,134 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Local operator base class for multidomain problems - */ - -#ifndef DUMUX_MULTIDOMAIN_LOCAL_OPERATOR_HH -#define DUMUX_MULTIDOMAIN_LOCAL_OPERATOR_HH - -#include<dune/pdelab/localoperator/pattern.hh> -#include<dune/pdelab/localoperator/flags.hh> - -#include <dumux/implicit/box/properties.hh> - -namespace Dumux { - -namespace PDELab { - -/*! - * \ingroup MultidomainModel - * \brief Local operator base class for multidomain problems - */ -template<class TypeTag> -class MultiDomainLocalOperator - : public Dune::PDELab::FullVolumePattern, - public Dune::PDELab::LocalOperatorDefaultFlags -{ - // copying the local operator for PDELab is not a good idea - MultiDomainLocalOperator(const MultiDomainLocalOperator &); - - typedef typename GET_PROP_TYPE(TypeTag, Model) Model; - - enum{numEq = GET_PROP_VALUE(TypeTag, NumEq)}; - -public: - // pattern assembly flags - enum { doPatternVolume = true }; - - // residual assembly flags - enum { doAlphaVolume = true }; - - //! \brief The constructor - MultiDomainLocalOperator(Model &model) - : model_(model) - {} - - /*! - * \brief Volume integral depending on test and ansatz functions - * - * \tparam EG Element geometry - * \tparam LFSU Local function space for ansatz functions - * \tparam X Coefficient vector - * \tparam LFSV Local function space for test functions - * \tparam R Residual vector - * - * \param eg Element geometry - * \param lfsu Local functions space for ansatz functions - * \param x Coefficient vector - * \param lfsv Local function space for test functions - * \param r Residual vector - */ - template<typename EG, typename LFSU, typename X, typename LFSV, typename R> - void alpha_volume (const EG& eg, const LFSU& lfsu, const X& x, - const LFSV& lfsv, R& r) const - { - typedef typename LFSU::Traits::SizeType size_type; - - model_.localResidual().eval(model_.gridView().grid().subDomainEntityPointer(eg.entity())); - - int numVertices = x.size()/numEq; - for (size_type comp = 0; comp < r.size(); comp++) - r.accumulate(lfsv, comp, model_.localResidual().residual(comp%numVertices)[comp/numVertices]); - } - - /*! - * \brief Jacobian of volume term - * - * \tparam EG Element geometry - * \tparam LFSU Local function space for ansatz functions - * \tparam X Coefficient vector - * \tparam LFSV Local function space for test functions - * \tparam M Matrix - * - * \param eg Element geometry - * \param lfsu Local functions space for ansatz functions - * \param x Coefficient vector - * \param lfsv Local function space for test functions - * \param mat Matrix - */ - template<typename EG, typename LFSU, typename X, typename LFSV, typename M> - void jacobian_volume (const EG& eg, - const LFSU& lfsu, - const X& x, - const LFSV& lfsv, - M& mat) const - { - typedef typename LFSU::Traits::SizeType size_typeU; - typedef typename LFSV::Traits::SizeType size_typeV; - - model_.localJacobian().assemble(model_.gridView().grid().subDomainEntityPointer(eg.entity())); - - int numVertices = x.size()/numEq; - for (size_typeV j=0; j<lfsv.size(); j++) { - for (size_typeU i=0; i<lfsu.size(); i++) { - mat.accumulate(lfsv, i, lfsu, j, (model_.localJacobian().mat(i%numVertices,j%numVertices))[i/numVertices][j/numVertices]); - } - } - } - -private: - Model& model_; -}; - -} // namespace PDELab -} // namespace Dumux - -#endif // DUMUX_MULTIDOMAIN_LOCAL_OPERATOR_HH diff --git a/dumux/multidomain/model.hh b/dumux/multidomain/model.hh deleted file mode 100644 index 5349abba2b4298833086a0ec772e16e95ad4060e..0000000000000000000000000000000000000000 --- a/dumux/multidomain/model.hh +++ /dev/null @@ -1,324 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief The base class of models which consist of two arbitrary - * sub-models which are coupled - */ - -#ifndef DUMUX_MULTIDOMAIN_MODEL_HH -#define DUMUX_MULTIDOMAIN_MODEL_HH - -#include "properties.hh" -#include "propertydefaults.hh" -#include "problem.hh" -#include "convergencewriter.hh" -#include "newtoncontroller.hh" - -namespace Dumux -{ -/*! - * \ingroup MultidomainModel - * \brief The base class of models which consist of two arbitrary - * sub-models which are coupled - */ -template<class TypeTag> -class MultiDomainModel -{ - typedef typename GET_PROP_TYPE(TypeTag, Model) Implementation; - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, NewtonMethod) NewtonMethod; - typedef typename GET_PROP_TYPE(TypeTag, NewtonController) NewtonController; - typedef typename GET_PROP_TYPE(TypeTag, JacobianAssembler) JacobianAssembler; - typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; - - typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) SubDomain1TypeTag; - typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) SubDomain2TypeTag; - - typedef typename GET_PROP_TYPE(SubDomain1TypeTag, Problem) SubDomainProblem1; - typedef typename GET_PROP_TYPE(SubDomain2TypeTag, Problem) SubDomainProblem2; - - typedef typename GET_PROP_TYPE(SubDomain1TypeTag, Model) SubDomainModel1; - typedef typename GET_PROP_TYPE(SubDomain2TypeTag, Model) SubDomainModel2; - - typedef typename GET_PROP_TYPE(TypeTag, SplitAndMerge) SplitAndMerge; - - enum { - numEq1 = GET_PROP_VALUE(TypeTag, NumEq1), - numEq2 = GET_PROP_VALUE(TypeTag, NumEq2) - }; - -public: - /*! - * \brief Apply the initial conditions to the model. - * - * \param problem The problem - */ - void init(Problem &problem) - { - problem_ = &problem; - - // the two sub models have already been initialized by the - // sub-problems! - jacAsm_ = std::make_shared<JacobianAssembler>(); - jacAsm_->init(problem); - - uCur_ = std::make_shared<SolutionVector>(jacAsm_->gridFunctionSpace()); - uPrev_ = std::make_shared<SolutionVector>(jacAsm_->gridFunctionSpace()); - - *uCur_= 0; - *uPrev_= 0; - - SplitAndMerge::mergeSolVectors(sdModel1().curSol(), - sdModel2().curSol(), - *uCur_); - SplitAndMerge::mergeSolVectors(sdModel1().prevSol(), - sdModel2().prevSol(), - *uPrev_); - } - - /*! - * \brief Reference to the current solution as a block vector. - */ - SolutionVector &curSol() - { return *uCur_; } - - //! \brief \copydoc curSol() - const SolutionVector &curSol() const - { return *uCur_; } - - /*! - * \brief Reference to the previous solution as a block vector. - */ - SolutionVector &prevSol() - { return *uPrev_; } - - //! \brief \copydoc prevSol() - const SolutionVector &prevSol() const - { return *uPrev_; } - - /*! - * \brief Returns the operator assembler for the global jacobian of - * the problem. - */ - JacobianAssembler &jacobianAssembler() - { return *jacAsm_; } - - //! \brief \copydoc jacobianAssembler() - const JacobianAssembler &jacobianAssembler() const - { return *jacAsm_; } - - /*! - * \brief A reference to the problem on which the model is applied. - */ - Problem &problem() - { return *problem_; } - - //! \brief \copydoc problem() - const Problem &problem() const - { return *problem_; } - - /*! - * \brief A reference to the problem on which the model is applied. - */ - SubDomainProblem1 &sdProblem1() - { return problem().sdProblem1(); } - - //! \brief \copydoc sdProblem1() - const SubDomainProblem1 &sdProblem1() const - { return problem().sdProblem1(); } - - /*! - * \brief A reference to the problem on which the model is applied. - */ - SubDomainProblem2 &sdProblem2() - { return problem().sdProblem2(); } - - //! \brief \copydoc sdProblem2() - const SubDomainProblem2 &sdProblem2() const - { return problem().sdProblem2(); } - - /*! - * \brief A reference to the first sub-problem's model. - */ - SubDomainModel1 &sdModel1() - { return sdProblem1().model(); } - - //! \brief \copydoc sdModel1() - const SubDomainModel1 &sdModel1() const - { return sdProblem1().model(); } - - /*! - * \brief A reference to the second sub-problem's model. - */ - SubDomainModel2 &sdModel2() - { return sdProblem2().model(); } - - //! \brief \copydoc sdModel2() - const SubDomainModel2 &sdModel2() const - { return sdProblem2().model(); } - - //! \copydoc ImplicitModel::update() - bool update(NewtonMethod &solver, - NewtonController &controller) - { -#if HAVE_VALGRIND - for (size_t i = 0; i < curSol().base().size(); ++i) - Valgrind::CheckDefined(curSol().base()[i]); -#endif // HAVE_VALGRIND - - asImp_().updateBegin(); - - bool converged = solver.execute(controller); - if (!converged) - asImp_().updateFailed(); - else - asImp_().updateSuccessful(); - -#if HAVE_VALGRIND - for (size_t i = 0; i < curSol().base().size(); ++i) { - Valgrind::CheckDefined(curSol().base()[i]); - } -#endif // HAVE_VALGRIND - - return converged; - } - - - //! \copydoc ImplicitModel::checkPlausibility() - void checkPlausibility() const - { } - - //! \copydoc ImplicitModel::updateBegin() - void updateBegin() - { - sdModel1().updateBegin(); - sdModel2().updateBegin(); - - SplitAndMerge::mergeSolVectors(sdModel1().curSol(), sdModel2().curSol(), *uCur_); - } - - //! \copydoc ImplicitModel::updateSuccessful() - void updateSuccessful() - { - sdModel1().updateSuccessful(); - sdModel2().updateSuccessful(); - } - - /*! - * \brief Called by the problem if a timeintegration was - * successful, post processing of the solution is done and the - * result has been written to disk. - * - * This should perpare the model for the next time integration. - * Note, that the advanceTimeLevel() methods of the sub-models - * have already been called by the individual sub problems... - */ - void advanceTimeLevel() - { - // merge the two sub-vectors together - SplitAndMerge::mergeSolVectors(sdModel1().curSol(), sdModel2().curSol(), *uCur_); - SplitAndMerge::mergeSolVectors(sdModel1().prevSol(), sdModel2().prevSol(), *uPrev_); - } - - //! \copydoc ImplicitModel::updateFailed() - void updateFailed() - { - sdModel1().updateFailed(); - sdModel2().updateFailed(); - - // merge the two sub-vectors together - SplitAndMerge::mergeSolVectors(sdModel1().curSol(), sdModel2().curSol(), *uCur_); - } - - /*! - * \brief Called by the update() method if a try was - * unsuccessful. This is primary a hook which the - * actual model can overload. - */ - void updateFailedTry() - { - sdModel1().updateFailedTry(); - sdModel2().updateFailedTry(); - - // merge the two sub-vectors together - SplitAndMerge::mergeSolVectors(sdModel1().curSol(), sdModel2().curSol(), *uCur_); - } - - /*! - * \brief Calculate the global residual. - * - * \param globResidual The global residual - * - * The global deflection of the balance equation from zero. - */ - void evalGlobalResidual(SolutionVector &globResidual) - { - DUNE_THROW(Dune::NotImplemented, ""); - } - - //! \copydoc ImplicitModel::serialize() - template <class Restarter> - void serialize(Restarter &res) - { - sdProblem1().serialize(res); - sdProblem2().serialize(res); - } - - //! \copydoc ImplicitModel::deserialize() - template <class Restarter> - void deserialize(Restarter &res) - { - sdProblem1().deserialize(res); - sdProblem2().deserialize(res); - wasRestarted_ = true; - } - - //! \copydoc ImplicitModel::resetJacobianAssembler() - void resetJacobianAssembler() - { - jacAsm_.template reset<JacobianAssembler>(0); - jacAsm_ = std::make_shared<JacobianAssembler>(asImp_(), problem()); - } - - -protected: - Implementation &asImp_() - { return *static_cast<Implementation*>(this); } - const Implementation &asImp_() const - { return *static_cast<const Implementation*>(this); } - - // the problem we want to solve. defines the constitutive - // relations, material laws, etc. - Problem *problem_; - - // the jacobian assembler - std::shared_ptr<JacobianAssembler> jacAsm_; - - // cur is the current solution, prev the solution of the previous - // time step - std::shared_ptr<SolutionVector> uCur_; - std::shared_ptr<SolutionVector> uPrev_; - - bool wasRestarted_; -}; -} // namespace Dumux - -#endif // DUMUX_MULTIDOMAIN_MODEL_HH diff --git a/dumux/multidomain/newtoncontroller.hh b/dumux/multidomain/newtoncontroller.hh deleted file mode 100644 index 1fefd9ac3d8ac123b1a4685b9956b7e383bad223..0000000000000000000000000000000000000000 --- a/dumux/multidomain/newtoncontroller.hh +++ /dev/null @@ -1,313 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Newton controller for multidomain problems - */ -#ifndef DUMUX_MULTIDOMAIN_NEWTON_CONTROLLER_HH -#define DUMUX_MULTIDOMAIN_NEWTON_CONTROLLER_HH - -#include <dumux/nonlinear/newtoncontroller.hh> -#include "convergencewriter.hh" - -namespace Dumux -{ -template <class TypeTag> -class MultiDomainNewtonController; - -template <class TypeTag> -struct MultiDomainConvergenceWriter; - -namespace Properties -{ -NEW_PROP_TAG(NewtonWriteConvergence); - -// set default values for Newton for multidomain problems -// they can be overwritten in the parameter file -SET_INT_PROP(MultiDomain, NewtonTargetSteps, 8); -SET_INT_PROP(MultiDomain, NewtonMaxSteps, 15); -SET_SCALAR_PROP(MultiDomain, NewtonMaxRelativeShift, 1e-5); -SET_BOOL_PROP(MultiDomain, NewtonWriteConvergence, false); -} - - -/*! - * \ingroup Newton - * \ingroup MultidomainModel - * \brief Reference implementation of a newton controller for coupled problems. - * - * If you want to specialize only some methods but are happy with - * the defaults of the reference controller, derive your - * controller from this class and simply overload the required - * methods. - */ -template <class TypeTag> -class MultiDomainNewtonController : public NewtonController<TypeTag> -{ - typedef NewtonController<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, NewtonController) Implementation; - - typedef typename GET_PROP_TYPE(TypeTag, NewtonMethod) NewtonMethod; - typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; - typedef typename GET_PROP_TYPE(TypeTag, SplitAndMerge) SplitAndMerge; - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - - typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) SubDomain1TypeTag; - typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) SubDomain2TypeTag; - - typedef typename GET_PROP_TYPE(SubDomain1TypeTag, GridView) GridView1; - typedef typename GET_PROP_TYPE(SubDomain2TypeTag, GridView) GridView2; - - typedef MultiDomainConvergenceWriter<TypeTag> ConvergenceWriter; - typedef typename GET_PROP_TYPE(TypeTag, LinearSolver) LinearSolver; - -public: - /*! - * \brief Constructor - * - * \param problem The problem - */ - MultiDomainNewtonController(const Problem &problem) - : ParentType(problem) - , endIterMsgStream_(std::ostringstream::out) - , linearSolver_(problem) - , convergenceWriter_(asImp_()) - { - std::cout << "NewtonMaxRelativeShift= " - << PROP_DIAGNOSTIC(TypeTag, NewtonMaxRelativeShift) - << ", " - << GET_PROP_VALUE(TypeTag, NewtonMaxRelativeShift) - << std::endl; - } - - //! \copydoc ParentType::newtonUpdateShift() - void newtonUpdateShift(const SolutionVector &uLastIter, - const SolutionVector &deltaU) - { - // calculate the relative error as the maximum relative - // deflection in any degree of freedom. - this->shift_ = 0; - - SolutionVector uNewI = uLastIter; - uNewI -= deltaU; - - using std::abs; - using std::max; - for (unsigned int i = 0; i < uLastIter.base().size(); ++i) { - for (unsigned int j = 0; j < uLastIter.base()[i].size(); ++j) { - Scalar vertexError = abs(deltaU.base()[i][j]); - vertexError /= max<Scalar>(1.0, abs(uLastIter.base()[i][j] + uNewI.base()[i][j])/2); - - this->shift_ = max(this->shift_, vertexError); - } - } - } - - /*! - * \brief Solve the linear system of equations - * \f$ \mathbf{A} x - b = 0\f$. - * - * \param A Coefficient matrix A - * \param x Vector of unknowns - * \param b Right hand side - * - * Throws NumericalProblem if the linear solver didn't - * converge. - */ - template <class Matrix, class Vector> - void newtonSolveLinear(Matrix &A, - Vector &x, - Vector &b) - { - // if the deflection of the newton method is large, we do not - // need to solve the linear approximation accurately. Assuming - // that the initial value for the delta vector u is quite - // close to the final value, a reduction of 6 orders of - // magnitude in the defect should be sufficient... - try { - int converged = linearSolver_.solve(A.base(), x.base(), b.base()); - -#if HAVE_MPI - // make sure all processes converged - int convergedSend = 1; - MPI_Allreduce(/*sendBuf=*/&convergedSend, - /*recvBuf=*/&converged, - /*count=*/1, - MPI_INT, - MPI_MIN, - MPI_COMM_WORLD); -#endif - if (!converged) { - DUNE_THROW(NumericalProblem, - "Linear solver did not converge"); - } - } - catch (const Dune::MatrixBlockError &e) { -#if HAVE_MPI - // make sure all processes converged - int convergedSend = 0; - int converged; - - MPI_Allreduce(/*sendBuf=*/&convergedSend, - /*recvBuf=*/&converged, - /*count=*/1, - MPI_INT, - MPI_MIN, - MPI_COMM_WORLD); -#endif - - NumericalProblem p; - std::string msg; - std::ostringstream ms(msg); - ms << e.what() << "M=" << A.base()[e.r][e.c]; - p.message(ms.str()); - throw p; - } - catch (const Dune::Exception &e) { -#if HAVE_MPI - // make sure all processes converged - int convergedSend = 0; - int converged; - - MPI_Allreduce(/*sendBuf=*/&convergedSend, - /*recvBuf=*/&converged, - /*count=*/1, - MPI_INT, - MPI_MIN, - MPI_COMM_WORLD); -#endif - - NumericalProblem p; - p.message(e.what()); - throw p; - } - } - - /*! - * \brief Update the current solution function with a delta vector. - * - * The error estimates required for the newtonConverged() and - * newtonProceed() methods should be updated here. - * - * Different update strategies, such as line search and chopped - * updates can be implemented. The default behaviour is just to - * subtract deltaU from uLastIter. - * - * \param uCurrentIter The solution of the current iteration - * \param uLastIter The solution of the last iteration - * \param deltaU The delta as calculated from solving the linear - * system of equations. This parameter also stores - * the updated solution. - * - */ - void newtonUpdate(SolutionVector &uCurrentIter, - const SolutionVector &uLastIter, - const SolutionVector &deltaU) - { - if (GET_PARAM_FROM_GROUP(TypeTag, bool, Newton, WriteConvergence)) { - writeConvergence_(uLastIter, deltaU); - } - - newtonUpdateShift(uLastIter, deltaU); - - uCurrentIter = uLastIter; - uCurrentIter -= deltaU; - } - - /*! - * \brief Indicates that one newton iteration was finished. - * - * \param uCurrentIter The solution of the current iteration - * \param uLastIter The solution of the last iteration - * - */ - void newtonEndStep(SolutionVector &uCurrentIter, SolutionVector &uLastIter) - { - SplitAndMerge::splitSolVector(this->model_().curSol(), - this->model_().sdModel1().curSol(), - this->model_().sdModel2().curSol()); - - ParentType::newtonEndStep(uCurrentIter, uLastIter); - } - - /*! - * \brief Called when the newton method was sucessful. - * - * This method is called _after_ newtonEnd() - */ - void newtonSucceed() - { - } - - /*! - * \brief the convergence writer produces the output - * - * \param uLastIter The solution of the last iteration - * \param deltaU The delta as calculated from solving the linear - * system of equations. This parameter also stores - * the updated solution. - * - */ - void writeConvergence_(const SolutionVector &uLastIter, - const SolutionVector &deltaU) - { - if (GET_PARAM_FROM_GROUP(TypeTag, bool, Newton, WriteConvergence)) { - convergenceWriter_.beginIteration(sdGridView1_(), sdGridView2_()); - convergenceWriter_.writeFields(uLastIter, deltaU); - convergenceWriter_.endIteration(); - } - } - - /*! - * \brief the subdomain gridviews - */ - const GridView1 sdGridView1_() const - { return this->problem_().sdGridView1(); } - const GridView2 sdGridView2_() const - { return this->problem_().sdGridView2(); } - - -private: - Implementation &asImp_() - { return *static_cast<Implementation*>(this); } - const Implementation &asImp_() const - { return *static_cast<const Implementation*>(this); } - - bool verbose_; - - std::ostringstream endIterMsgStream_; - NewtonMethod *method_; - - // optimal number of iterations we want to achieve - int targetSteps_; - // maximum number of iterations we do before giving up - int maxSteps_; - // actual number of steps done so far - int numSteps_; - - // the linear solver - LinearSolver linearSolver_; - - ConvergenceWriter convergenceWriter_; -}; - -} // namespace Dumux - -#endif // DUMUX_MULTIDOMAIN_NEWTON_CONTROLLER_HH diff --git a/dumux/multidomain/problem.hh b/dumux/multidomain/problem.hh deleted file mode 100644 index 1aff9346c781b3c129746bf1d33efd321389b4c6..0000000000000000000000000000000000000000 --- a/dumux/multidomain/problem.hh +++ /dev/null @@ -1,457 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Base class for problems which involve two sub problems - */ - -#ifndef DUMUX_MULTIDOMAIN_PROBLEM_HH -#define DUMUX_MULTIDOMAIN_PROBLEM_HH - -#include "model.hh" -#include "newtoncontroller.hh" -#include "propertydefaults.hh" -#include "subdomainpropertydefaults.hh" -#include "assembler.hh" - -#include <dumux/io/restart.hh> - - -namespace Dumux -{ - -/*! - * \ingroup ImplicitBaseProblems - * \ingroup MultidomainModel - * \brief Base class for problems which involve two sub problems (multidomain problems)s - */ -template<class TypeTag> -class MultiDomainProblem -{ - -private: - typedef typename GET_PROP_TYPE(TypeTag, Problem) Implementation; - - typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; - typedef typename GET_PROP_TYPE(TypeTag, NewtonMethod) NewtonMethod; - typedef typename GET_PROP_TYPE(TypeTag, NewtonController) NewtonController; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, Model) Model; - typedef typename GET_PROP_TYPE(TypeTag, GridCreator) GridCreator; - - typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) SubDomain1TypeTag; - typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) SubDomain2TypeTag; - - typedef typename GET_PROP_TYPE(SubDomain1TypeTag, LocalResidual) LocalResidual1; - typedef typename GET_PROP_TYPE(SubDomain2TypeTag, LocalResidual) LocalResidual2; - - typedef typename GET_PROP_TYPE(SubDomain1TypeTag, Problem) SubDomainProblem1; - typedef typename GET_PROP_TYPE(SubDomain2TypeTag, Problem) SubDomainProblem2; - - typedef typename GET_PROP_TYPE(SubDomain1TypeTag, GridView) SubDomainGridView1; - typedef typename GET_PROP_TYPE(SubDomain2TypeTag, GridView) SubDomainGridView2; - - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGrid) MultiDomainGrid; - typedef typename MultiDomainGrid::LeafGridView MultiDomainGridView; - typedef typename MultiDomainGrid::Traits::template Codim<0>::Entity MultiDomainElement; - typedef typename MultiDomainGrid::SubDomainGrid SubDomainGrid; - typedef typename SubDomainGrid::template Codim<0>::EntityPointer SubDomainElementPointer; - - typedef Dune::MultiDomainMCMGMapper<MultiDomainGridView, Dune::MCMGVertexLayout> VertexMapper; - - // copying a problem is not a good idea - MultiDomainProblem(const MultiDomainProblem &); - -public: - /*! - * \brief The problem for the coupling of Stokes and Darcy flow - * - * \param timeManager The time manager - * \param gridView The grid view - */ - template<class GridView> - MultiDomainProblem(TimeManager &timeManager, - GridView gridView) - : timeManager_(timeManager) - , newtonMethod_(asImp_()) - , newtonCtl_(asImp_()) - { - mdGrid_ = std::make_shared<MultiDomainGrid> (GridCreator::grid()); - mdGridView_ = std::make_shared<MultiDomainGridView> (mdGrid_->leafGridView()); - mdVertexMapper_ = std::make_shared<VertexMapper> (mdGrid_->leafGridView()); - sdProblem1_ = std::make_shared<SubDomainProblem1> (timeManager, mdGrid_->subDomain(sdID1()).leafGridView()); - sdProblem2_ = std::make_shared<SubDomainProblem2> (timeManager, mdGrid_->subDomain(sdID2()).leafGridView()); - maxTimeStepSize_ = GET_PARAM_FROM_GROUP(TypeTag, Scalar, TimeManager, MaxTimeStepSize); - } - - //! \copydoc ImplicitProblem::init() - void init() - { - // initialize the sub-problems - sdProblem1().init(); - sdProblem2().init(); - - // set the initial condition of the model - model().init(asImp_()); - - // initialize Lagrange multipliers - asImp_().initMortarElements(); - } - - //! \copydoc ImplicitProblem::serialize() - template <class Restarter> - void serialize(Restarter &res) - { - this->model().serialize(res); - } - - //! \copydoc ImplicitProblem::serialize() - void serialize() - { - typedef Restart Restarter; - Restarter res; - res.serializeBegin(this->asImp_()); - std::cout << "Serialize to file '" << res.fileName() << "'\n"; - this->timeManager().serialize(res); - this->asImp_().serialize(res); - res.serializeEnd(); - } - - //! \copydoc ImplicitProblem::restart() - void restart(Scalar tRestart) - { - typedef Restart Restarter; - Restarter res; - res.deserializeBegin(this->asImp_(), tRestart); - std::cout << "Deserialize from file '" << res.fileName() << "'\n"; - this->timeManager().deserialize(res); - this->asImp_().deserialize(res); - res.deserializeEnd(); - } - - //! \copydoc ImplicitProblem::deserialize() - template <class Restarter> - void deserialize(Restarter &res) - { - this->model().deserialize(res); - } - - /*! - * \name Simulation control - */ - // \{ - - /*! - * \brief Called by the time manager before the time integration. Calls preTimeStep() - * of the subproblems. - */ - void preTimeStep() - { - asImp_().sdProblem1().preTimeStep(); - asImp_().sdProblem2().preTimeStep(); - } - - //! \copydoc ImplicitProblem::timeIntegration() - void timeIntegration() - { - const int maxFails = - GET_PARAM_FROM_GROUP(TypeTag, int, Newton, MaxTimeStepDivisions); - for (int i = 0; i < maxFails; ++i) - { - if (model_.update(newtonMethod_, newtonCtl_)) - return; - - // update failed - Scalar dt = timeManager().timeStepSize(); - Scalar nextDt = dt / 2; - timeManager().setTimeStepSize(nextDt); - - std::cout << "Newton solver did not converge. Retrying with time step of " - << timeManager().timeStepSize() << "sec\n"; - } - - DUNE_THROW(Dune::MathError, - "Newton solver didn't converge after " - << maxFails - << " timestep divisions. dt=" - << timeManager().timeStepSize()); - } - - /*! - * \brief Called by the time manager after the time integration to - * do some post processing on the solution. Calls postTimeStep() - * of the subproblems. - */ - void postTimeStep() - { - asImp_().sdProblem1().postTimeStep(); - asImp_().sdProblem2().postTimeStep(); - } - - //! \copydoc ImplicitProblem::maxTimeStepSize() - Scalar maxTimeStepSize() const - { - return maxTimeStepSize_; - } - - //! \copydoc ImplicitProblem::nextTimeStepSize() - Scalar nextTimeStepSize(const Scalar dt) - { - return newtonCtl_.suggestTimeStepSize(dt); - } - - /*! - * \brief This method is called by the model if the update to the - * next time step failed completely. - */ - void updateSuccessful() - { - model_.updateSuccessful(); - } - - //! \copydoc ImplicitProblem::shouldWriteOutput() - bool shouldWriteOutput() const - { return true; } - - //! \copydoc ImplicitProblem::shouldWriteRestartFile() - bool shouldWriteRestartFile() const - { return false; } - - //! \copydoc ImplicitProblem::episodeEnd() - void episodeEnd() - { - std::cerr << "The end of an episode is reached, but the problem " - << "does not override the episodeEnd() method. " - << "Doing nothing!\n"; - } - - //! \copydoc ImplicitProblem::advanceTimeLevel() - void advanceTimeLevel() - { - asImp_().sdProblem1().advanceTimeLevel(); - asImp_().sdProblem2().advanceTimeLevel(); - - model_.advanceTimeLevel(); - } - - //! \copydoc ImplicitProblem::writeOutput() - void writeOutput() - { - // write the current result to disk - if (asImp_().shouldWriteOutput()) { - asImp_().sdProblem1().writeOutput(); - asImp_().sdProblem2().writeOutput(); - } - } - - - // \} - - //! \copydoc ImplicitProblem::name() - const std::string& name() const - { return simname_; } - - //! \copydoc ImplicitProblem::setName() - static void setName(std::string newName) - { simname_ = newName; } - - //! \copydoc ImplicitProblem::timeManager() - TimeManager &timeManager() - { return timeManager_; } - - //! \copydoc ImplicitProblem::timeManager() - const TimeManager &timeManager() const - { return timeManager_; } - - //! \copydoc ImplicitProblem::newtonController() - NewtonController &newtonController() - { return newtonCtl_; } - - //! \copydoc ImplicitProblem::newtonController() - const NewtonController &newtonController() const - { return newtonCtl_; } - - //! \copydoc ImplicitProblem::model() - Model &model() - { return model_; } - - //! \copydoc ImplicitProblem::model() - const Model &model() const - { return model_; } - // \} - - /*! - * \brief Returns the ID of the first domain - */ - const typename MultiDomainGrid::SubDomainIndex sdID1() const - { return typename MultiDomainGrid::SubDomainIndex(0); } - - /*! - * \brief Returns the ID of the second domain - */ - const typename MultiDomainGrid::SubDomainIndex sdID2() const - { return typename MultiDomainGrid::SubDomainIndex(1); } - - /*! - * \brief Returns a reference to subproblem1 - */ - SubDomainProblem1& sdProblem1() - { return *sdProblem1_; } - - /*! - * \brief Returns a const reference to subproblem1 - */ - const SubDomainProblem1& sdProblem1() const - { return *sdProblem1_; } - - /*! - * \brief Returns a reference to subproblem2 - */ - SubDomainProblem2& sdProblem2() - { return *sdProblem2_; } - - /*! - * \brief Returns a const reference to subproblem2 - */ - const SubDomainProblem2& sdProblem2() const - { return *sdProblem2_; } - - /*! - * \brief Returns a reference to the localresidual1 - */ - LocalResidual1& localResidual1() - { return sdProblem1().model().localResidual(); } - - /*! - * \brief Returns a reference to the localresidual2 - */ - LocalResidual2& localResidual2() - { return sdProblem2().model().localResidual(); } - - /*! - * \brief Returns a reference to the multidomain grid - */ - MultiDomainGrid& mdGrid() - { return *mdGrid_; } - - /*! - * \brief Returns a const reference to the multidomain grid - */ - const MultiDomainGrid& mdGrid() const - { return *mdGrid_; } - - /*! - * \brief Returns the multidomain gridview - */ - const MultiDomainGridView& mdGridView() const - { return *mdGridView_; } - - /*! - * \brief Returns the multidomain gridview - */ - const MultiDomainGridView& gridView() const - { return *mdGridView_; } - - /*! - * \brief Provides a vertex mapper for the multidomain - */ - VertexMapper& mdVertexMapper() - { return *mdVertexMapper_; } - - /*! - * \brief Returns a const reference to the subdomain1 grid - */ - const SubDomainGrid& sdGrid1() const - { return mdGrid_->subDomain(sdID1()); } - - /*! - * \brief Returns a const reference to the subdomain2 grid - */ - const SubDomainGrid& sdGrid2() const - { return mdGrid_->subDomain(sdID2()); } - - /*! - * \brief Returns the gridview of subdomain1 - */ - const SubDomainGridView1 sdGridView1() const - { return sdGrid1().leafGridView(); } - - /*! - * \brief Returns the gridview of subdomain2 - */ - const SubDomainGridView2 sdGridView2() const - { return sdGrid2().leafGridView(); } - - /*! - * \brief Returns a pointer to the subdomain1 element - * - * \param mdElement1 The multi domain element1 - */ - SubDomainElementPointer sdElementPointer1(const MultiDomainElement& mdElement1) - { return sdGrid1().subDomainEntityPointer(mdElement1); } - - /*! - * \brief Returns a pointer to the subdomain2 element - * - * \param mdElement2 The multi domain element2 - */ - SubDomainElementPointer sdElementPointer2(const MultiDomainElement& mdElement2) - { return sdGrid2().subDomainEntityPointer(mdElement2); } - - -protected: - void initMortarElements() - {} - - Implementation &asImp_() - { return *static_cast<Implementation *>(this); } - - //! \copydoc asImp_() - const Implementation &asImp_() const - { return *static_cast<const Implementation *>(this); } - -private: - // a string for the name of the current simulation, which could be - // set by means of an program argument, for example. - static std::string simname_; - - TimeManager &timeManager_; - Scalar maxTimeStepSize_; - NewtonMethod newtonMethod_; - NewtonController newtonCtl_; - - Model model_; - - std::shared_ptr<MultiDomainGrid> mdGrid_; - std::shared_ptr<MultiDomainGridView> mdGridView_; - std::shared_ptr<VertexMapper> mdVertexMapper_; - - std::shared_ptr<SubDomainProblem1> sdProblem1_; - std::shared_ptr<SubDomainProblem2> sdProblem2_; -}; - -// definition of the static class member simname_, -// which is necessary because it is of type string. -template <class TypeTag> -std::string MultiDomainProblem<TypeTag>::simname_ = "simCoupled"; - -} // namespace Dumux - -#endif // DUMUX_MULTIDOMAIN_PROBLEM_HH diff --git a/dumux/multidomain/properties.hh b/dumux/multidomain/properties.hh deleted file mode 100644 index c76e3cc61889d223b8ce1b36b4a2d31eebc79cab..0000000000000000000000000000000000000000 --- a/dumux/multidomain/properties.hh +++ /dev/null @@ -1,116 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \ingroup Properties - * \ingroup ImplicitProperties - * \ingroup MultidomainModel - * \brief Specify properties required for the coupled model - */ -#ifndef DUMUX_MULTIDOMAIN_PROPERTIES_HH -#define DUMUX_MULTIDOMAIN_PROPERTIES_HH - -#include <dumux/implicit/properties.hh> - -namespace Dumux -{ - -namespace Properties -{ -// \{ - -////////////////////////////////////////////////////////////////// -// Type tags tags -////////////////////////////////////////////////////////////////// - -//! The type tag for problems which utilize the coupling approach -NEW_TYPE_TAG(MultiDomain, INHERITS_FROM(ImplicitBase)); - -////////////////////////////////////////////////////////////////// -// Property tags -////////////////////////////////////////////////////////////////// - -//! Specifies the model -NEW_PROP_TAG(Model); - -//! Specifies the maximum number of sub-problems -NEW_PROP_TAG(MaxSubDomains); - -//! Specifies the type tag of the first sub-problem -NEW_PROP_TAG(SubDomain1TypeTag); - -//! Specifies the type tag of the second sub-problem -NEW_PROP_TAG(SubDomain2TypeTag); - -//! Specifies the type tag of the other sub-problem -NEW_PROP_TAG(OtherSubDomainTypeTag); - -//! Specifies the type tag of coupled problem -NEW_PROP_TAG(MultiDomainTypeTag); - -//! Specifies the host grid -NEW_PROP_TAG(Grid); - -//! Specifies the multidomain grid -NEW_PROP_TAG(MultiDomainGrid); - -//! Specifies the number of equations in submodel 1 -NEW_PROP_TAG(NumEq1); - -//! Specifies the number of equations in submodel 2 -NEW_PROP_TAG(NumEq2); - -//! Specifies the fluidsystem that is used in the subdomains -NEW_PROP_TAG(FluidSystem); - -//! the maximum allowed number of timestep divisions for the -//! Newton solver -NEW_PROP_TAG(NewtonMaxTimeStepDivisions); - -//! Specifies the multidomain grid function space -NEW_PROP_TAG(MultiDomainGridFunctionSpace); - -//! Specifies the multidomain grid operator -NEW_PROP_TAG(MultiDomainGridOperator); - -//! Specifies the equality conditions -NEW_PROP_TAG(MultiDomainCondition); - -//! Specifies the multidomain type based subproblem for subdomain 1 -NEW_PROP_TAG(MultiDomainSubProblem1); - -//! Specifies the multidomain type based subproblem for subdomain 2 -NEW_PROP_TAG(MultiDomainSubProblem2); - -//! the local coupling operator for use with dune-multidomain -NEW_PROP_TAG(MultiDomainCouplingLocalOperator); - -//! Specifies the multidomain coupling -NEW_PROP_TAG(MultiDomainCoupling); - -//! Property tag for the multidomain constraints transformation -NEW_PROP_TAG(MultiDomainConstraintsTrafo); - -//! the routines that are used to split and merge solution vectors -NEW_PROP_TAG(SplitAndMerge); - -} // namespace Properties -} // namespace Dumux - -#endif // DUMUX_MULTIDOMAIN_PROPERTIES_HH diff --git a/dumux/multidomain/propertydefaults.hh b/dumux/multidomain/propertydefaults.hh deleted file mode 100644 index b3f837bac32de8113070c0f4e9a27f1275b61e0b..0000000000000000000000000000000000000000 --- a/dumux/multidomain/propertydefaults.hh +++ /dev/null @@ -1,258 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \ingroup Properties - * \ingroup ImplicitProperties - * \ingroup MultidomainModel - * \brief Sets default values for the MultiDomain properties - */ - -#ifndef DUMUX_MULTIDOMAIN_PROPERTY_DEFAULTS_HH -#define DUMUX_MULTIDOMAIN_PROPERTY_DEFAULTS_HH - -#include <dune/istl/bvector.hh> -#include <dune/istl/bcrsmatrix.hh> - -#include <dune/pdelab/backend/istlvectorbackend.hh> -#include <dune/pdelab/backend/istlmatrixbackend.hh> -#include <dune/pdelab/multidomain/multidomaingridfunctionspace.hh> -#include <dune/pdelab/multidomain/subproblemlocalfunctionspace.hh> -#include <dune/pdelab/multidomain/subproblem.hh> -#include <dune/pdelab/multidomain/subdomainset.hh> -#include <dune/pdelab/multidomain/coupling.hh> -#include <dune/pdelab/multidomain/gridoperator.hh> - -#include <dune/pdelab/gridoperator/gridoperator.hh> - -#include "subdomainpropertydefaults.hh" -#include "model.hh" -#include "properties.hh" -#include "newtoncontroller.hh" -#include "splitandmerge.hh" - -#include <dumux/common/timemanager.hh> -#include <dumux/nonlinear/newtonmethod.hh> - -namespace Dumux -{ -template <class TypeTag> class MultiDomainModel; -template <class TypeTag> class MultiDomainAssembler; -template <class TypeTag> class MultiDomainNewtonController; - -namespace Properties -{ - -SET_INT_PROP(MultiDomain, MaxSubDomains, 2); - -SET_PROP(MultiDomain, MultiDomainGrid) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, Grid) HostGrid; - enum { maxSubDomains = GET_PROP_VALUE(TypeTag, MaxSubDomains) }; - typedef typename Dune::mdgrid::FewSubDomainsTraits<HostGrid::dimension, maxSubDomains> MDGridTraits; -public: - typedef typename Dune::MultiDomainGrid<HostGrid, MDGridTraits> type; -}; - -SET_PROP(MultiDomain, MultiDomainGridFunctionSpace) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGrid) MDGrid; - typedef typename Dune::PDELab::LexicographicOrderingTag OrderingTag; - typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) SubTypeTag1; - typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) SubTypeTag2; - typedef typename GET_PROP_TYPE(SubTypeTag1, GridFunctionSpace) GridFunctionSpace1; - typedef typename GET_PROP_TYPE(SubTypeTag2, GridFunctionSpace) GridFunctionSpace2; -public: - typedef Dune::PDELab::MultiDomain::MultiDomainGridFunctionSpace<MDGrid, - Dune::PDELab::ISTLVectorBackend<>, - OrderingTag, - GridFunctionSpace1, - GridFunctionSpace2> type; -}; - -// set the subdomain equality condition by default -SET_PROP(MultiDomain, MultiDomainCondition) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGrid) MDGrid; -public: - typedef Dune::PDELab::MultiDomain::SubDomainEqualityCondition<MDGrid> type; -}; - -SET_PROP(MultiDomain, MultiDomainSubProblem1) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGridFunctionSpace) MDGridFunctionSpace; - typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) SubTypeTag1; - typedef typename GET_PROP_TYPE(SubTypeTag1, Constraints) Constraints1; - typedef typename GET_PROP_TYPE(SubTypeTag1, LocalOperator) LocalOperator1; - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainCondition) MDCondition; - typedef typename GET_PROP_TYPE(SubTypeTag1, GridFunctionSpace) GridFunctionSpace1; -public: - typedef Dune::PDELab::MultiDomain::SubProblem<MDGridFunctionSpace, - MDGridFunctionSpace, - LocalOperator1, MDCondition, - 0> type; -}; - -SET_PROP(MultiDomain, MultiDomainSubProblem2) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGridFunctionSpace) MDGridFunctionSpace; - typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) SubTypeTag2; - typedef typename GET_PROP_TYPE(SubTypeTag2, Constraints) Constraints2; - typedef typename GET_PROP_TYPE(SubTypeTag2, LocalOperator) LocalOperator2; - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainCondition) MDCondition; - typedef typename GET_PROP_TYPE(SubTypeTag2, GridFunctionSpace) GridFunctionSpace2; -public: - typedef Dune::PDELab::MultiDomain::SubProblem<MDGridFunctionSpace, - MDGridFunctionSpace, - LocalOperator2, MDCondition, - 1> type; -}; - -SET_PROP(MultiDomain, MultiDomainCoupling) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainSubProblem1) MDSubProblem1; - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainSubProblem2) MDSubProblem2; - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainCouplingLocalOperator) MDCouplingLocalOperator; -public: - typedef Dune::PDELab::MultiDomain::Coupling<MDSubProblem1, - MDSubProblem2, - MDCouplingLocalOperator> type; -}; - -// set trivial constraints transformation by default -SET_PROP(MultiDomain, MultiDomainConstraintsTrafo) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGridFunctionSpace) MDGridFunctionSpace; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; -public: - typedef typename MDGridFunctionSpace::template ConstraintsContainer<Scalar>::Type type; -}; - -SET_PROP(MultiDomain, MultiDomainGridOperator) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGridFunctionSpace) MDGridFunctionSpace; - typedef Dune::PDELab::ISTLMatrixBackend MBE; - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainSubProblem1) MDSubProblem1; - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainSubProblem2) MDSubProblem2; - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainCoupling) MDCoupling; - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainConstraintsTrafo) MDConstraintsTrafo; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; -public: - typedef Dune::PDELab::MultiDomain::GridOperator< - MDGridFunctionSpace, MDGridFunctionSpace, - MBE, Scalar, Scalar, Scalar, - MDConstraintsTrafo, MDConstraintsTrafo, - MDSubProblem1, MDSubProblem2, MDCoupling> type; -}; - -SET_PROP(MultiDomain, JacobianMatrix) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGridOperator) MDGridOperator; -public: - typedef typename MDGridOperator::Traits::Jacobian type; -}; - -SET_INT_PROP(MultiDomain, LinearSolverBlockSize, GET_PROP_VALUE(TypeTag, NumEq)); - - -// Set property values for the coupled model -SET_TYPE_PROP(MultiDomain, Model, MultiDomainModel<TypeTag>); - -SET_PROP(MultiDomain, SolutionVector) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - enum { numEq = GET_PROP_VALUE(TypeTag, NumEq) }; -public: - typedef Dune::BlockVector<Dune::FieldVector<Scalar, numEq> > type; -}; - -// Specify the type of the multidomain assembler -SET_TYPE_PROP(MultiDomain, JacobianAssembler, MultiDomainAssembler<TypeTag>); - -// use the plain newton method for the coupled problems by default -SET_TYPE_PROP(MultiDomain, NewtonMethod, NewtonMethod<TypeTag>); - -// use the plain newton controller for coupled problems by default -SET_TYPE_PROP(MultiDomain, NewtonController, MultiDomainNewtonController<TypeTag>); - -// Set the default type of the time manager for coupled models -SET_TYPE_PROP(MultiDomain, TimeManager, TimeManager<TypeTag>); - -// needed to define size of ImplicitBase's PrimaryVariables -SET_PROP(MultiDomain, NumEq) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) TypeTag1; - typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) TypeTag2; - - enum { - numEq1 = GET_PROP_VALUE(TypeTag1, NumEq), - numEq2 = GET_PROP_VALUE(TypeTag2, NumEq) - }; -public: - static const int value = numEq1; -}; - -SET_PROP(MultiDomain, NumEq1) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) TypeTag1; - enum {numEq = GET_PROP_VALUE(TypeTag1, NumEq)}; -public: - static const int value = numEq; -}; - -SET_PROP(MultiDomain, NumEq2) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) TypeTag2; - enum {numEq = GET_PROP_VALUE(TypeTag2, NumEq)}; -public: - static const int value = numEq; -}; - -// set the type of the linear solver -SET_TYPE_PROP(MultiDomain, LinearSolver, ILU0BiCGSTABBackend<TypeTag>); - -// set the minimum residual reduction of the linear solver -SET_SCALAR_PROP(MultiDomain, LinearSolverResidualReduction, 1e-6); - -// set the default number of maximum iterations for the linear solver -SET_INT_PROP(MultiDomain, LinearSolverMaxIterations, 250); - -// set the maximum time step divisions -SET_INT_PROP(MultiDomain, NewtonMaxTimeStepDivisions, 10); - -// set the routines for splitting and merging solution vectors -SET_TYPE_PROP(MultiDomain, SplitAndMerge, SplitAndMerge<TypeTag>); - -} // namespace Properties -} // namespace Dumux - -#endif // DUMUX_MULTIDOMAIN_PROPERTY_DEFAULTS_HH diff --git a/dumux/multidomain/splitandmerge.hh b/dumux/multidomain/splitandmerge.hh deleted file mode 100644 index 297971ff9cbc346a4629eb63e1392aea953d2fd3..0000000000000000000000000000000000000000 --- a/dumux/multidomain/splitandmerge.hh +++ /dev/null @@ -1,240 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/** - * \file - * \brief Some methods required by several classes of the coupling model. - */ -#ifndef DUMUX_SPLIT_AND_MERGE_HH -#define DUMUX_SPLIT_AND_MERGE_HH - -#include "properties.hh" -#include <dumux/common/valgrind.hh> - -namespace Dumux -{ -/*! - * \ingroup MultidomainModel - * \brief Some methods required by several classes of the coupling model. - */ -template<class TypeTag> -class SplitAndMerge -{ - typedef typename GET_PROP_TYPE(TypeTag, SubDomain1TypeTag) SubTypeTag1; - typedef typename GET_PROP_TYPE(TypeTag, SubDomain2TypeTag) SubTypeTag2; - - typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; - typedef typename GET_PROP_TYPE(SubTypeTag1, SolutionVector) SolutionVector1; - typedef typename GET_PROP_TYPE(SubTypeTag2, SolutionVector) SolutionVector2; - - typedef typename GET_PROP_TYPE(TypeTag, JacobianMatrix) JacobianMatrix; - typedef typename GET_PROP_TYPE(SubTypeTag1, JacobianMatrix) JacobianMatrix1; - typedef typename GET_PROP_TYPE(SubTypeTag2, JacobianMatrix) JacobianMatrix2; - - - enum { - numEq1 = GET_PROP_VALUE(SubTypeTag1, NumEq), - numEq2 = GET_PROP_VALUE(SubTypeTag2, NumEq) - }; -public: - /*! - * \brief Merge two solution vectors of the sub models into a - * global vector: nonoverlapping case. - * - * \param vec1 Input vector with solution of subdomain 1 - * \param vec2 Input vector with solution of subdomain 2 - * \param dest Destination vector for global solution - * - */ - static void mergeSolVectors(const SolutionVector1 &vec1, - const SolutionVector2 &vec2, - SolutionVector &dest) - { -// printvector(std::cout, vec1, "vec1", "row", 200, 1, 3); -// printvector(std::cout, vec2, "vec2", "row", 200, 1, 3); - - int nDofs1 = vec1.size(); - int nDofs2 = vec2.size(); - - for (int i = 0; i < nDofs1; ++i) - for (int j = 0; j < numEq1; j++) - { - dest.base()[i*numEq1 + j][0] = vec1[i][j]; - - Valgrind::CheckDefined(dest.base()[i*numEq1 + j][0]); - } - - for (int i = 0; i < nDofs2; ++i) - for (int j = 0; j < numEq2; j++) - { - dest.base()[nDofs1*numEq1 + i*numEq2 + j][0] = vec2[i][j]; - - Valgrind::CheckDefined(dest.base()[nDofs1*numEq1 + i*numEq2 + j][0]); - } -// printvector(std::cout, dest.base(), "dest", "row", 200, 1, 3); - } - - /*! - * \brief Split a global solution vector into two solution vectors - * of the sub models: nonoverlapping case. - * - * \param vec Input vector with global solution - * \param dest1 Destination vector with solution of subdomain 1 - * \param dest2 Destination vector with solution of subdomain 2 - * - */ - static void splitSolVector(const SolutionVector &vec, - SolutionVector1 &dest1, - SolutionVector2 &dest2) - { -// printvector(std::cout, vec.base(), "vec", "row", 200, 1, 3); - - int nDofs1 = dest1.size(); - int nDofs2 = dest2.size(); - - for (int i = 0; i < nDofs1; ++i) - for (int j = 0; j < numEq1; j++) - dest1[i][j] = vec.base()[i*numEq1 + j][0]; - - for (int i = 0; i < nDofs2; ++i) - for (int j = 0; j < numEq2; j++) - dest2[i][j] = vec.base()[nDofs1*numEq1 + i*numEq2 + j][0]; - -// printvector(std::cout, dest1, "dest1", "row", 200, 1, 3); -// printvector(std::cout, dest2, "dest2", "row", 200, 1, 3); - } - - /*! - * \brief Merge two solution vectors of the sub models into a - * global vector: more general case. - * - * \param vec1 Input vector with solution of subdomain 1 - * \param vec2 Input vector with solution of subdomain 2 - * \param dest Destination vector for global solution - * \param subDOFToCoupledDOF unused - * - */ - static void mergeSolVectors(const SolutionVector1 &vec1, - const SolutionVector2 &vec2, - SolutionVector &dest, - const std::vector<int>& subDOFToCoupledDOF) - { - int nDofs1 = vec1.size(); - int nDofs2 = vec2.size(); -// printvector(std::cout, vec1, "vec1", "row", 200, 1, 3); -// printvector(std::cout, vec2, "vec2", "row", 200, 1, 3); - - for (int i = 0; i < nDofs1; ++i) - for (int j = 0; j < numEq1; j++) - dest.base()[i*numEq1 + j] = vec1[i][j]; - - for (int i = 0; i < nDofs2; ++i) - { - for (int j = numEq1; j < numEq2; j++) - dest.base()[nDofs1*numEq1 + i*(numEq2-numEq1) + (j - numEq1)] = vec2[i][j]; - } -// printvector(std::cout, dest.base(), "dest", "row", 200, 1, 3); - } - - /*! - * \brief Split a global solution vector into two solution vectors - * of the sub models: more general case. - * - * \param vec Input vector with global solution - * \param dest1 Destination vector with solution of subdomain 1 - * \param dest2 Destination vector with solution of subdomain 2 - * \param subDOFToCoupledDOF Identification vector between sub and global DOFs - * - */ - static void splitSolVector(const SolutionVector &vec, - SolutionVector1 &dest1, - SolutionVector2 &dest2, - const std::vector<int>& subDOFToCoupledDOF) - { - int nDofs1 = dest1.size(); - int nDofs2 = dest2.size(); - -// printvector(std::cout, vec.base(), "vec", "row", 200, 1, 3); - for (int i = 0; i < nDofs1; ++i) - for (int j = 0; j < numEq1; j++) - dest1[i][j] = vec.base()[i*numEq1 + j]; - - for (int i = 0; i < nDofs2; ++i) - { - int blockIdxCoupled = subDOFToCoupledDOF[i]; - for (int j = 0; j < numEq1; j++) - { - dest2[i][j] = vec.base()[blockIdxCoupled*numEq1 + j]; - } - - for (int j = numEq1; j < numEq2; j++) - dest2[i][j] = vec.base()[nDofs1*numEq1 + i*(numEq2-numEq1) + (j - numEq1)]; - } -// printvector(std::cout, dest1, "dest1", "row", 200, 1, 3); -// printvector(std::cout, dest2, "dest2", "row", 200, 1, 3); - } - - - /*! - * \brief Merge individual jacobian matrices of the sub models - * into a global jacobian matrix. - * - * \param M1 Input jacobian matrix of subdomain 1 - * \param M2 Input jacobian matrix of subdomain 2 - * \param M Destination global jacobian matrix - * - */ - static void mergeMatrices(const JacobianMatrix1 &M1, - const JacobianMatrix2 &M2, - JacobianMatrix &M) - { - DUNE_THROW(Dune::NotImplemented, "mergeMatrices in coupled common"); - } - - /*! - * \brief Copy a sub matrix into into the main diagonal of the global matrix. - * - * \param Msub Sub matrix - * \param M Global matrix - * \param offset Offset in rows and columns - * - */ - template <class SubMatrix> - static void copyMatrix(const SubMatrix &Msub, - JacobianMatrix &M, - size_t offset) - { - // loop over all rows of the submatrix - typedef typename SubMatrix::ConstRowIterator RowIterator; - typedef typename SubMatrix::ConstColIterator ColIterator; - RowIterator endRow = Msub.end(); - for (RowIterator row = Msub.begin(); row != endRow; ++row) { - // loop over columns of the current row - ColIterator endCol = row->end(); - for (ColIterator col = row->begin(); col != endCol; ++ col) { - // copy entry in the global matrix - M[row.index() + offset][col.index() + offset] - = *col; - } - } - } - -}; -} // namespace Dumux - -#endif // DUMUX_SPLIT_AND_MERGE_HH diff --git a/dumux/multidomain/subdomainproperties.hh b/dumux/multidomain/subdomainproperties.hh deleted file mode 100644 index 4af5c2a8faca706ee4c54595288f702b843a6ff1..0000000000000000000000000000000000000000 --- a/dumux/multidomain/subdomainproperties.hh +++ /dev/null @@ -1,66 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \ingroup Properties - * \ingroup ImplicitProperties - * \ingroup MultidomainModel - * \brief Specify properties required for the subdomains of the coupled model - */ -#ifndef DUMUX_SUBDOMAIN_PROPERTIES_HH -#define DUMUX_SUBDOMAIN_PROPERTIES_HH - -#include <dumux/common/propertysystem.hh> - -namespace Dumux -{ -namespace Properties -{ - -////////////////////////////////////////////////////////////////// -// Type tags -////////////////////////////////////////////////////////////////// - -//! The type tag from which sub-problems of coupling models inherit -NEW_TYPE_TAG(SubDomain); - -////////////////////////////////////////////////////////////////// -// Property tags -////////////////////////////////////////////////////////////////// -//! Specifies the host grid -NEW_PROP_TAG(Grid); - -//! Specifies the scalar grid function space used for sub-problems -NEW_PROP_TAG(ScalarGridFunctionSpace); - -//! Specifies the grid function space used for sub-problems -NEW_PROP_TAG(GridFunctionSpace); - -//! Specifies the type of the constraints -NEW_PROP_TAG(Constraints); - -//! Specifies the local finite element space -NEW_PROP_TAG(LocalFEMSpace); - -//! Specifies the local operator -NEW_PROP_TAG(LocalOperator); - -} // namespace Properties -} // namespace Dumux -#endif // DUMUX_SUBDOMAIN_PROPERTIES_HH diff --git a/dumux/multidomain/subdomainpropertydefaults.hh b/dumux/multidomain/subdomainpropertydefaults.hh deleted file mode 100644 index 394fc044a82529178c3e43ed021fe4d4d16cd795..0000000000000000000000000000000000000000 --- a/dumux/multidomain/subdomainpropertydefaults.hh +++ /dev/null @@ -1,141 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \ingroup Properties - * \ingroup ImplicitProperties - * \ingroup MultidomainModel - * \brief Specify default properties required in the subdomains of dune-multidomain - */ -#ifndef DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH -#define DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH - -#include <dune/grid/multidomaingrid.hh> -#include <dune/pdelab/backend/istlvectorbackend.hh> -#include <dune/pdelab/backend/istlmatrixbackend.hh> -#include <dune/pdelab/finiteelementmap/qkfem.hh> -#include <dune/pdelab/constraints/conforming.hh> - -#include "subdomainproperties.hh" -#include "properties.hh" -#include "localoperator.hh" -#include "boxcouplinglocalresidual.hh" - -namespace Dumux -{ - -namespace Properties -{ - -// Specifies the grid type for the subdomains -SET_PROP(SubDomain, Grid) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag) MultiDomain; - typedef typename GET_PROP_TYPE(MultiDomain, Grid) HostGrid; - enum { maxSubDomains = GET_PROP_VALUE(MultiDomain, MaxSubDomains) }; - typedef typename Dune::mdgrid::FewSubDomainsTraits<HostGrid::dimension,maxSubDomains> MDGridTraits; - typedef typename Dune::MultiDomainGrid<HostGrid, MDGridTraits> Grid; -public: - typedef typename Grid::SubDomainGrid type; -}; - -// set the default BaseLocalResidual to BoxCouplingLocalResidual -SET_TYPE_PROP(SubDomain, BaseLocalResidual, BoxCouplingLocalResidual<TypeTag>); - -// set the local operator used for submodels -SET_TYPE_PROP(SubDomain, LocalOperator, - PDELab::MultiDomainLocalOperator<TypeTag>); - -// use the time manager for the coupled problem in the sub problems -SET_PROP(SubDomain, TimeManager) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag) MultiDomainTypeTag; -public: - typedef typename GET_PROP_TYPE(MultiDomainTypeTag, TimeManager) type; -}; - -// set the constraints for the sub-models -SET_TYPE_PROP(SubDomain, Constraints, Dune::PDELab::NoConstraints); - -// set the grid functions space for the sub-models -SET_PROP(SubDomain, ScalarGridFunctionSpace) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, LocalFEMSpace) FEM; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Constraints) Constraints; - enum{numEq = GET_PROP_VALUE(TypeTag, NumEq)}; -public: - typedef Dune::PDELab::GridFunctionSpace<GridView, FEM, Constraints, - Dune::PDELab::ISTLVectorBackend<> > type; -}; - -// set the grid functions space for the sub-models -SET_PROP(SubDomain, GridFunctionSpace) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, ScalarGridFunctionSpace) ScalarGridFunctionSpace; - enum{numEq = GET_PROP_VALUE(TypeTag, NumEq)}; - typedef typename Dune::PDELab::EntityBlockedOrderingTag OrderingTag; - typedef typename Dune::PDELab::ISTLVectorBackend<> VBE; -public: - typedef Dune::PDELab::PowerGridFunctionSpace<ScalarGridFunctionSpace, numEq, VBE, OrderingTag> type; -}; - -// use the local FEM space associated with cubes by default -SET_PROP(SubDomain, LocalFEMSpace) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - enum{dim = GridView::dimension}; -public: - typedef Dune::PDELab::QkLocalFiniteElementMap<GridView,Scalar,Scalar,1> type; -}; - -SET_PROP(SubDomain, ParameterTree) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag) MultiDomainTypeTag; - typedef typename GET_PROP(MultiDomainTypeTag, ParameterTree) ParameterTree; -public: - typedef typename ParameterTree::type type; - - static type &tree() - { return ParameterTree::tree(); } - - static type &compileTimeParams() - { return ParameterTree::compileTimeParams(); } - - static type &runTimeParams() - { return ParameterTree::runTimeParams(); } - - static type &deprecatedRunTimeParams() - { return ParameterTree::deprecatedRunTimeParams(); } - - static type &unusedNewRunTimeParams() - { return ParameterTree::unusedNewRunTimeParams(); } -}; - -} // namespace Properties -} // namespace Dumux - -#endif // DUMUX_SUBDOMAIN_PROPERTY_DEFAULTS_HH diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index fd9350c01fa87ea13aa70fc72c2cc2438e62a926..25810628f4afa459e88ed327d6975529cd637588 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,9 +1,7 @@ add_subdirectory("common") add_subdirectory("freeflow") -add_subdirectory("geomechanics") add_subdirectory("io") add_subdirectory("material") add_subdirectory("mixeddimension") -add_subdirectory("multidomain") add_subdirectory("porousmediumflow") add_subdirectory("discretization") diff --git a/test/geomechanics/CMakeLists.txt b/test/geomechanics/CMakeLists.txt deleted file mode 100644 index 4b65e11703bf32f11f5226f3e7f424618ff2d475..0000000000000000000000000000000000000000 --- a/test/geomechanics/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -add_subdirectory("el1p2c") -add_subdirectory("el2p") -add_subdirectory("elastic") diff --git a/test/geomechanics/el1p2c/CMakeLists.txt b/test/geomechanics/el1p2c/CMakeLists.txt deleted file mode 100644 index f1c82c2294c04e492f24755ac99d5a6aa397c7a2..0000000000000000000000000000000000000000 --- a/test/geomechanics/el1p2c/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -add_input_file_links() - -add_dumux_test(test_el1p2c test_el1p2c test_el1p2c.cc - python ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py - --script fuzzy - --files ${CMAKE_SOURCE_DIR}/test/references/el1p2c-reference.vtu - ${CMAKE_CURRENT_BINARY_DIR}/el1p2c-00014.vtu - --command "${CMAKE_CURRENT_BINARY_DIR}/test_el1p2c") - -#install sources -install(FILES -el1p2cproblem.hh -el1p2cspatialparams.hh -test_el1p2c.cc -DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/test/geomechanics/el1p2c) diff --git a/test/geomechanics/el1p2c/el1p2cproblem.hh b/test/geomechanics/el1p2c/el1p2cproblem.hh deleted file mode 100644 index cb7d81761ec017b6293cc72cef3a0c07f7bda01c..0000000000000000000000000000000000000000 --- a/test/geomechanics/el1p2c/el1p2cproblem.hh +++ /dev/null @@ -1,235 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/** - * \file - * \brief Definition of a problem, for the linear elastic 1p2c problem: - * Component transport of nitrogen dissolved in the water phase with a linear - * elastic solid matrix. - */ -#ifndef DUMUX_EL1P2CPROBLEM_HH -#define DUMUX_EL1P2CPROBLEM_HH - -#include <dune/grid/yaspgrid.hh> -#include <dumux/geomechanics/el1p2c/model.hh> -#include <dumux/porousmediumflow/implicit/problem.hh> - -#include <dumux/material/fluidsystems/h2on2.hh> -#include "el1p2cspatialparams.hh" -#include <dumux/linear/amgbackend.hh> - -namespace Dumux -{ - template<class TypeTag> - class El1P2CProblem; - - namespace Properties - { - NEW_TYPE_TAG(El1P2CProblem, INHERITS_FROM(BoxElasticOnePTwoC)); - - // Set the grid type - SET_TYPE_PROP(El1P2CProblem, Grid, Dune::YaspGrid<3>); - - // Set the problem property - SET_TYPE_PROP(El1P2CProblem, Problem, El1P2CProblem<TTAG(El1P2CProblem)>); - - // Set fluid configuration - SET_PROP(El1P2CProblem, FluidSystem) - { private: - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - public: - typedef FluidSystems::H2ON2<Scalar, false> type; - }; - - // Set the soil properties - SET_TYPE_PROP(El1P2CProblem, SpatialParams, El1P2CSpatialParams<TypeTag>); - - //Define whether mole(true) or mass (false) fractions are used - SET_BOOL_PROP(El1P2CProblem, UseMoles, false); - - // Include stabilization term to prevent pressure oscillations - SET_BOOL_PROP(El1P2CProblem, ImplicitWithStabilization, true); - - // use the algebraic multigrid - SET_TYPE_PROP(El1P2CProblem, LinearSolver, AMGBackend<TypeTag> ); -} - -/*! - * \ingroup ElOnePTwoCBoxProblems - * \brief Problem definition for a one-phase two-component transport process - * in an elastic deformable matrix. - * - * The 3D domain given in el1p2c.dgf spans from (0,0,0) to (10,10,10). - * - * Dirichlet boundary conditions (p=101300, X=0.0, u=0.0) are applied at all boundaries. - * In the center of the cube at the location (5,5,5) water with dissolved nitrogen is injected. - * The injection leads to a pressure build-up which results in solid displacement (ux, uy, uz [m]) - * and effective stress changes. - * - */ -template<class TypeTag = TTAG( El1P2CProblem)> -class El1P2CProblem: public ImplicitPorousMediaProblem<TypeTag> -{ - typedef ImplicitPorousMediaProblem<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; - - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - enum - { - // Grid and world dimension - dim = GridView::dimension, - dimWorld = GridView::dimensionworld, - }; - - enum { - // balance equation indices - transportEqIdx = Indices::transportEqIdx - }; - - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; - - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename GridView::template Codim<dim>::Entity Vertex; - typedef typename GridView::Intersection Intersection; - - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; - - public: - El1P2CProblem(TimeManager &timeManager, const GridView &gridView) - : ParentType(timeManager, gridView) - {} - - /*! - * \brief The problem name. - * - * This is used as a prefix for files generated by the simulation. - */ - std::string name() const - { return "el1p2c";} - - /*! - * \brief Returns the temperature within the domain. - */ - Scalar temperature() const - { - return 273.15 + 10; // in K - }; - - /*! - * \name Boundary conditions - */ - // \{ - - /*! - * \brief Specifies which kind of boundary condition should be - * used for which equation on a given boundary segment. - * - * \param values The boundary types for the conservation equations - * \param vertex The vertex on the boundary for which the - * conditions needs to be specified - */ - void boundaryTypes(BoundaryTypes &values, const Vertex &vertex) const - { - values.setAllDirichlet(); - } - - /*! - * \brief Evaluate the boundary conditions for a dirichlet - * control volume. - * - * \param values The dirichlet values for the primary variables - * \param vertex The vertex representing the "half volume on the boundary" - * - * For this method, the \a values parameter stores primary variables. - */ - void dirichlet(PrimaryVariables &values, const Vertex &vertex) const - { - values = 0.0; - values[0] = 101300; - } - - /*! - * \brief Evaluate the boundary conditions for a neumann - * boundary segment. - * - * For this method, the \a values parameter stores the mass flux - * in normal direction of each phase. Negative values mean influx. - */ - void neumann(PrimaryVariables &values, - const Element &element, - const FVElementGeometry &fvGeometry, - const Intersection &intersection, - int scvIdx, - int boundaryFaceIdx) const - { - values = 0.0; - } - // \} - - /*! - * \name Volume terms - */ - // \{ - - /*! - * \brief Evaluate the source term for all phases within a given - * sub-control-volume. - * - * For this method, the \a values parameter stores the rate mass - * generated or annihilate per volume unit. Positive values mean - * that mass is created, negative ones mean that it vanishes. - */ - void sourceAtPos(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - values = Scalar(0.0); - - if(globalPos[0] < 6 + eps_ && globalPos[0] > 4 - eps_ - && globalPos[1] < 6 + eps_ && globalPos[1] > 4 - eps_ - && globalPos[2] < 6 + eps_ && globalPos[2] > 4 - eps_) - { - values[0] = 1.e-3; - values[1] = 1.e-4; - } - } - - /*! - * \brief Evaluate the initial value for a control volume. - * - * For this method, the \a values parameter stores primary - * variables. - */ - void initial(PrimaryVariables &values, - const Element &element, - const FVElementGeometry &fvGeometry, - int scvIdx) const - { - values = 0.0; - values[0] = 101300; - } - - static constexpr Scalar eps_ = 3e-6; -}; -} //end namespace - -#endif diff --git a/test/geomechanics/el1p2c/el1p2cspatialparams.hh b/test/geomechanics/el1p2c/el1p2cspatialparams.hh deleted file mode 100644 index ecfdf5bd69398510ce309ee3ceff5450771cca9d..0000000000000000000000000000000000000000 --- a/test/geomechanics/el1p2c/el1p2cspatialparams.hh +++ /dev/null @@ -1,216 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief The spatial parameters for the El1P2CProblem which uses the - * linear elastic one-phase two-component model - */ -#ifndef DUMUX_ELONEPTWOCSPARAMETERS_HH -#define DUMUX_ELONEPTWOCSPARAMETERS_HH - -#include <dumux/material/spatialparams/implicit1p.hh> -#include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh> -#include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh> -#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> - -namespace Dumux -{ - -//forward declaration -template<class TypeTag> -class El1P2CSpatialParams; - -namespace Properties -{ -// The spatial parameters TypeTag -NEW_TYPE_TAG(El1P2CSpatialParams); - -// Set the spatial parameters -SET_TYPE_PROP(El1P2CSpatialParams, SpatialParams, El1P2CSpatialParams<TypeTag>); - -} - -/*! - * \ingroup ElOnePTwoCBoxModel - * \brief The spatial parameters for the El1P2CProblem which uses the - * linear elastic one-phase two-component model - */ -template<class TypeTag> -class El1P2CSpatialParams : public ImplicitSpatialParamsOneP<TypeTag> -{ - typedef ImplicitSpatialParamsOneP<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, Grid) Grid; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename Grid::ctype CoordScalar; - enum { - dim=GridView::dimension, - dimWorld=GridView::dimensionworld, - }; - - typedef Dune::FieldVector<CoordScalar,dimWorld> GlobalPosition; - typedef Dune::FieldMatrix<Scalar,dim,dim> DimMatrix; - - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GridView::template Codim<0>::Entity Element; - -public: - - El1P2CSpatialParams(const GridView &gridView) - : ParentType(gridView) - { - // intrinsic permeabilities [m^2] - K_ = Scalar(0.0); - for (int i = 0; i < dim; i++){ - K_[i][i] = 1.E-12; //[m²] - } - - // porosities [-] - phi_ = 0.2; - - // rock density [kg/m^3] - solidDensity_ = 2650.0; - - // Young's modulus [Pa] - E_ = 6.e9; - // Poisson's ratio [-] - nu_ = 0.2; - // Lame parameters [Pa] - lambda_ = (E_ * nu_) / ((1 + nu_)*(1 - 2 * nu_)); - mu_ = E_ / (2 * (1 + nu_)); - } - - ~El1P2CSpatialParams() - {} - - /*! - * \brief Apply the intrinsic permeability tensor \f$[m^2]\f$ to a pressure - * potential gradient. - * - * \param element The current finite element - * \param fvGeometry The current finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume where - * the porosity needs to be defined - */ - - const DimMatrix intrinsicPermeability(const Element &element, - const FVElementGeometry &fvGeometry, - int scvIdx) const - { - return K_; - } - - /*! - * \brief Define the porosity \f$[-]\f$ of the soil - * - * \param element The finite element - * \param fvGeometry The finite volume geometry - * \param scvIdx The local index of the sub-control volume where - * the porosity needs to be defined - */ - double porosity(const Element &element, - const FVElementGeometry &fvGeometry, - int scvIdx) const - { - return phi_; - } - - /*! - * \brief Define the porosity \f$[-]\f$ of the soil - * - * \param globalPos The global position of the vertex - */ - double porosity(const GlobalPosition& globalPos) const - { - return phi_; - } - - /*! - * \brief Define the density \f$[kg/m^3]\f$ of the rock - * - * \param element The finite element - * \param scvIdx The local index of the sub-control volume where - * the porosity needs to be defined - */ - const Scalar rockDensity(const Element &element, - int scvIdx) const - { - return solidDensity_; - } - - /*! - * \brief Define the density \f$[kg/m^3]\f$ of the rock - * - * \param globalPos The global position of the vertex - */ - const Scalar rockDensity(const GlobalPosition &globalPos) const - { - return solidDensity_; - } - - /*! - * \brief Define the Lame parameters \f$[Pa]\f$ linear elastic rock - * - * \param element The finite element - * \param fvGeometry The finite volume geometry - * \param scvIdx The local index of the sub-control volume where - * the porosity needs to be defined - */ - const Dune::FieldVector<Scalar,2> lameParams(const Element &element, - const FVElementGeometry &fvGeometry, - int scvIdx) const - { - Dune::FieldVector<Scalar, 2> param; - - param[0] = lambda_; - param[1] = mu_; - - return param; - } - - /*! - * \brief Return dispersivity (not needed here - * - * \param element The finite element - * \param fvGeometry The finite volume geometry - * \param scvIdx The local index of the sub-control volume where - */ - Dune::FieldVector<Scalar,dim> dispersivity(const Element &element, - const FVElementGeometry &fvGeometry, - int scvIdx) const - { - return Dune::FieldVector<Scalar,dim>(0); - } - -private: - Dune::FieldMatrix<Scalar,dim,dim> K_; - Scalar layerBottom_; - Scalar solidDensity_; - Scalar phi_; - Scalar lambda_; - Scalar mu_; - Scalar E_; - Scalar nu_; - static constexpr Scalar eps_ = 3e-6; - int episode_; - -}; -} -#endif diff --git a/test/geomechanics/el1p2c/test_el1p2c.cc b/test/geomechanics/el1p2c/test_el1p2c.cc deleted file mode 100644 index 2956391bfcadcf2e29f5fa8e6b621313e5a13607..0000000000000000000000000000000000000000 --- a/test/geomechanics/el1p2c/test_el1p2c.cc +++ /dev/null @@ -1,73 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Test for the elasticity 1p2c model - */ -#include <config.h> - -#include "el1p2cproblem.hh" -#include <dune/common/precision.hh> -#include <dumux/common/start.hh> - -/*! - * \brief Provides an interface for customizing error messages associated with - * reading in parameters. - * - * \param progName The name of the program, that was tried to be started. - * \param errorMsg The error message that was issued by the start function. - * Comprises the thing that went wrong and a general help message. - */ -void usage(const char *progName, const std::string &errorMsg) -{ - if (errorMsg.size() > 0) { - std::string errorMessageOut = "\nUsage: "; - errorMessageOut += progName; - errorMessageOut += " [options]\n"; - errorMessageOut += errorMsg; - errorMessageOut += "\n\nThe List of Mandatory arguments for this program is:\n" - "\t-tEnd The end of the simulation. [s] \n" - "\t-dtInitial The initial timestep size. [s] \n" - "\t-gridFile The file name of the file containing the grid \n" - "\t definition in DGF format\n" - "\t-FluidSystem.nTemperature Number of tabularization entries [-] \n" - "\t-FluidSystem.nPressure Number of tabularization entries [-] \n" - "\t-FluidSystem.pressureLow Low end for tabularization of fluid properties [Pa] \n" - "\t-FluidSystem.pressureHigh High end for tabularization of fluid properties [Pa] \n" - "\t-FluidSystem.temperatureLow Low end for tabularization of fluid properties [Pa] \n" - "\t-FluidSystem.temperatureHigh High end for tabularization of fluid properties [Pa] \n" - "\t-SimulationControl.name The name of the output files [-] \n" - "\t-InitialConditions.temperature Initial temperature in the reservoir [K] \n" - "\t-InitialConditions.depthBOR Depth below ground surface [m] \n"; - - std::cout << errorMessageOut - << "\n"; - } -} - -#include <iostream> - -int main(int argc, char** argv) -{ - Dune::FMatrixPrecision<>::set_singular_limit(1e-22); - typedef TTAG(El1P2CProblem) ProblemTypeTag; - return Dumux::start<ProblemTypeTag>(argc, argv, usage); -} - diff --git a/test/geomechanics/el1p2c/test_el1p2c.input b/test/geomechanics/el1p2c/test_el1p2c.input deleted file mode 100644 index 957c2c07c2c09750fde3a40dd28686477f2d8e76..0000000000000000000000000000000000000000 --- a/test/geomechanics/el1p2c/test_el1p2c.input +++ /dev/null @@ -1,10 +0,0 @@ -[TimeManager] -DtInitial = 10 # [s] -TEnd = 1e4 # [s] - -[Problem] -EnableGravity = 0 - -[Grid] -UpperRight = 10 10 10 -Cells = 4 4 4 diff --git a/test/geomechanics/el2p/CMakeLists.txt b/test/geomechanics/el2p/CMakeLists.txt deleted file mode 100644 index b25342849f6c580d40a9e9278adce6c5c4627cbd..0000000000000000000000000000000000000000 --- a/test/geomechanics/el2p/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -add_input_file_links() - -add_dumux_test(test_el2p test_el2p test_el2p.cc - python ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py - --script fuzzy - --files ${CMAKE_SOURCE_DIR}/test/references/el2p-reference.vtu - ${CMAKE_CURRENT_BINARY_DIR}/el2p-00047.vtu - --command "${CMAKE_CURRENT_BINARY_DIR}/test_el2p") - -if(MPI_FOUND) - add_dumux_test(test_el2p_parallel test_el2p test_el2p.cc - python ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py - --script fuzzy - --files ${CMAKE_SOURCE_DIR}/test/references/el2p-parallel-reference.vtu - ${CMAKE_CURRENT_BINARY_DIR}/s0004-p0001-el2p-00047.vtu - --command "${MPIEXEC} -np 4 ${CMAKE_CURRENT_BINARY_DIR}/test_el2p") -endif() - -#install sources -install(FILES -el2pco2tables.hh -el2pproblem.hh -el2pspatialparams.hh -test_el2p.cc -DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/test/geomechanics/el2p) diff --git a/test/geomechanics/el2p/co2values.inc b/test/geomechanics/el2p/co2values.inc deleted file mode 100644 index f2058b3bc644dd7492f9473917325e1263b71b0a..0000000000000000000000000000000000000000 --- a/test/geomechanics/el2p/co2values.inc +++ /dev/null @@ -1,10164 +0,0 @@ -/* Tables for CO2 fluid properties calculated according to Span and - * Wagner (1996). - * - * THIS AN AUTO-GENERATED FILE! DO NOT EDIT IT! - * - * Temperature range: 290.000 K to 340.000 K, using 50 sampling points - * Pressure range: 0.100 MPa to 100.000 MPa, using 495 sampling points - * - * Generated using: - * - * ./extractproperties 290 340 50 100000 100000000 495 - */ - - -struct TabulatedDensityTraits { - typedef double Scalar; - static const char *name; - static const int numTempSteps = 50; - static constexpr Scalar minTemp = 2.900000000000000e+02; - static constexpr Scalar maxTemp = 3.400000000000000e+02; - static const int numPressSteps = 495; - static constexpr Scalar minPress = 1.000000000000000e+05; - static constexpr Scalar maxPress = 1.000000000000000e+08; - static const Scalar vals[numTempSteps][numPressSteps]; -}; - -const char *TabulatedDensityTraits::name = "density"; - -const double TabulatedDensityTraits::vals[50][495] = -{ - { - 1.835234260814301e+00, 5.609578928931403e+00, 9.472491146796987e+00, 1.342952796406621e+01, 1.748683269778940e+01, - 2.165122343212360e+01, 2.593029935168559e+01, 3.033256948925443e+01, 3.486760994292403e+01, 3.954625763994803e+01, - 4.438085158128438e+01, 4.938553658619486e+01, 5.457665050999915e+01, 5.997322476067790e+01, 6.559764140166533e+01, - 7.147651112068229e+01, 7.764187002663628e+01, 8.413284906382685e+01, 9.099806589488004e+01, 9.829916177747781e+01, - 1.061162328373974e+02, 1.145565634586313e+02, 1.237695022715711e+02, 1.339737563439795e+02, 1.455127584898394e+02, - 1.589844988951826e+02, 8.057312521590094e+02, 8.108402128049386e+02, 8.155824061935749e+02, 8.200166853633398e+02, - 8.241879770295383e+02, 8.281315020569276e+02, 8.318754705301706e+02, 8.354428809226469e+02, 8.388527648456439e+02, - 8.421210739019541e+02, 8.452613273185401e+02, 8.482850949368766e+02, 8.512023640281901e+02, 8.540218223473987e+02, - 8.567510796471778e+02, 8.593968432199171e+02, 8.619650585842660e+02, 8.644610233910867e+02, 8.668894805040845e+02, - 8.692546947083739e+02, 8.715605164189047e+02, 8.738104349713153e+02, 8.760076234940765e+02, 8.781549769239836e+02, - 8.802551443967211e+02, 8.823105569917930e+02, 8.843234516164474e+02, 8.862958916618035e+02, 8.882297849456814e+02, - 8.901268993627195e+02, 8.919888765878076e+02, 8.938172441189511e+02, 8.956134258975181e+02, 8.973787517046907e+02, - 8.991144655010476e+02, 9.008217328500687e+02, 9.025016475448055e+02, 9.041552375390970e+02, 9.057834702699156e+02, - 9.073872574449897e+02, 9.089674593594800e+02, 9.105248887967268e+02, 9.120603145606618e+02, 9.135744646812399e+02, - 9.150680293288482e+02, 9.165416634691372e+02, 9.179959892857696e+02, 9.194315983952163e+02, 9.208490538748830e+02, - 9.222488921232612e+02, 9.236316245687019e+02, 9.249977392414849e+02, 9.263477022222110e+02, 9.276819589781255e+02, - 9.290009355977048e+02, 9.303050399327539e+02, 9.315946626562807e+02, 9.328701782435495e+02, 9.341319458829880e+02, - 9.353803103229271e+02, 9.366156026595763e+02, 9.378381410711038e+02, 9.390482315022309e+02, 9.402461683033238e+02, - 9.414322348276013e+02, 9.426067039897403e+02, 9.437698387888621e+02, 9.449218927986193e+02, 9.460631106268573e+02, - 9.471937283471134e+02, 9.483139739040206e+02, 9.494240674944979e+02, 9.505242219264712e+02, 9.516146429567032e+02, - 9.526955296091892e+02, 9.537670744754651e+02, 9.548294639980591e+02, 9.558828787382071e+02, 9.569274936289067e+02, - 9.579634782142432e+02, 9.589909968759001e+02, 9.600102090476771e+02, 9.610212694187628e+02, 9.620243281264900e+02, - 9.630195309392095e+02, 9.640070194299014e+02, 9.649869311410847e+02, 9.659593997415453e+02, 9.669245551758751e+02, - 9.678825238082917e+02, 9.688334285562275e+02, 9.697773890182036e+02, 9.707145215962921e+02, 9.716449395112028e+02, - 9.725687533307679e+02, 9.734860704338224e+02, 9.743969950250054e+02, 9.753016300145251e+02, 9.762000745312771e+02, - 9.770924255831059e+02, 9.779787777799568e+02, 9.788592234149448e+02, 9.797338525419511e+02, 9.806027530499352e+02, - 9.814660107341271e+02, 9.823237093642530e+02, 9.831759307499564e+02, 9.840227548035316e+02, 9.848642596001345e+02, - 9.857005214355536e+02, 9.865316148816996e+02, 9.873576128398920e+02, 9.881785866078823e+02, 9.889946058643169e+02, - 9.898057388155626e+02, 9.906120521731956e+02, 9.914136112152587e+02, 9.922104798284086e+02, 9.930027205484934e+02, - 9.937903945996338e+02, 9.945735619318676e+02, 9.953522812574258e+02, 9.961266100857022e+02, 9.968966047569700e+02, - 9.976623204748978e+02, 9.984238113379236e+02, 9.991811303695266e+02, 9.999343295474530e+02, 1.000683459831928e+03, - 1.001428571192907e+03, 1.002169712636404e+03, 1.002906932229925e+03, 1.003640277127055e+03, 1.004369793591230e+03, - 1.005095527018721e+03, 1.005817521960866e+03, 1.006535822145580e+03, 1.007250470498175e+03, 1.007961509161501e+03, - 1.008668979515456e+03, 1.009372922195876e+03, 1.010073377112828e+03, 1.010770383440929e+03, 1.011463979747993e+03, - 1.012154203841599e+03, 1.012841092900622e+03, 1.013524683461510e+03, 1.014205011433457e+03, 1.014882112113123e+03, - 1.015556020198922e+03, 1.016226769804883e+03, 1.016894394474094e+03, 1.017558927191776e+03, 1.018220400397956e+03, - 1.018878845999779e+03, 1.019534295383483e+03, 1.020186779426009e+03, 1.020836328506299e+03, 1.021482972516269e+03, - 1.022126740871482e+03, 1.022767662521513e+03, 1.023405765960037e+03, 1.024041079234638e+03, 1.024673629956348e+03, - 1.025303445308931e+03, 1.025930552057907e+03, 1.026554976559352e+03, 1.027176744768441e+03, 1.027795882247785e+03, - 1.028412414175532e+03, 1.029026365353268e+03, 1.029637760213705e+03, 1.030246622828171e+03, 1.030852976913905e+03, - 1.031456845841177e+03, 1.032058252640206e+03, 1.032657220007922e+03, 1.033253770314546e+03, 1.033847925610010e+03, - 1.034439707630215e+03, 1.035029137803135e+03, 1.035616237254769e+03, 1.036201026814950e+03, 1.036783527023010e+03, - 1.037363758133303e+03, 1.037941740120608e+03, 1.038517492685385e+03, 1.039091035258922e+03, 1.039662387008345e+03, - 1.040231566841521e+03, 1.040798593411839e+03, 1.041363485122881e+03, 1.041926260132986e+03, 1.042486936359705e+03, - 1.043045531484157e+03, 1.043602062955278e+03, 1.044156547993985e+03, 1.044709003597234e+03, 1.045259446541990e+03, - 1.045807893389116e+03, 1.046354360487154e+03, 1.046898863976050e+03, 1.047441419790771e+03, 1.047982043137158e+03, - 1.048520750590008e+03, 1.049057556978554e+03, 1.049592477452577e+03, 1.050125526973861e+03, 1.050656720319375e+03, - 1.051186072084385e+03, 1.051713596685494e+03, 1.052239308363624e+03, 1.052763221186932e+03, 1.053285349053663e+03, - 1.053805705694950e+03, 1.054324304677543e+03, 1.054841159406498e+03, 1.055356283127795e+03, 1.055869688930911e+03, - 1.056381389751341e+03, 1.056891398373054e+03, 1.057399727459368e+03, 1.057906389440393e+03, 1.058411396689484e+03, - 1.058914761408222e+03, 1.059416495658273e+03, 1.059916611363579e+03, 1.060415120312487e+03, 1.060912034159859e+03, - 1.061407364429125e+03, 1.061901122514297e+03, 1.062393319681952e+03, 1.062883967073170e+03, 1.063373075705431e+03, - 1.063860656474490e+03, 1.064346720156203e+03, 1.064831277408315e+03, 1.065314338772233e+03, 1.065795914674746e+03, - 1.066276015429723e+03, 1.066754651239773e+03, 1.067231832197886e+03, 1.067707568289025e+03, 1.068181869391702e+03, - 1.068654745279526e+03, 1.069126205622712e+03, 1.069596259989572e+03, 1.070064917847971e+03, 1.070532188566768e+03, - 1.070998081417217e+03, 1.071462605574353e+03, 1.071925770118348e+03, 1.072387584035845e+03, 1.072848056221268e+03, - 1.073307195478111e+03, 1.073765010520194e+03, 1.074221509972912e+03, 1.074676702374453e+03, 1.075130596176995e+03, - 1.075583199747882e+03, 1.076034521370788e+03, 1.076484569246844e+03, 1.076933351495765e+03, 1.077380876156941e+03, - 1.077827151190523e+03, 1.078272184478479e+03, 1.078715983825642e+03, 1.079158556960731e+03, 1.079599911537362e+03, - 1.080040055135042e+03, 1.080478995260137e+03, 1.080916739346836e+03, 1.081353294758092e+03, 1.081788668786553e+03, - 1.082222868655466e+03, 1.082655901519581e+03, 1.083087774466031e+03, 1.083518494515197e+03, 1.083948068621567e+03, - 1.084376503674573e+03, 1.084803806499416e+03, 1.085229983857882e+03, 1.085655042449142e+03, 1.086078988910534e+03, - 1.086501829818350e+03, 1.086923571688581e+03, 1.087344220977684e+03, 1.087763784083311e+03, 1.088182267345038e+03, - 1.088599677045082e+03, 1.089016019409006e+03, 1.089431300606409e+03, 1.089845526751614e+03, 1.090258703904333e+03, - 1.090670838070339e+03, 1.091081935202107e+03, 1.091492001199465e+03, 1.091901041910219e+03, 1.092309063130781e+03, - 1.092716070606776e+03, 1.093122070033652e+03, 1.093527067057272e+03, 1.093931067274498e+03, 1.094334076233770e+03, - 1.094736099435675e+03, 1.095137142333506e+03, 1.095537210333812e+03, 1.095936308796946e+03, 1.096334443037596e+03, - 1.096731618325315e+03, 1.097127839885041e+03, 1.097523112897609e+03, 1.097917442500254e+03, 1.098310833787116e+03, - 1.098703291809717e+03, 1.099094821577461e+03, 1.099485428058096e+03, 1.099875116178193e+03, 1.100263890823604e+03, - 1.100651756839920e+03, 1.101038719032923e+03, 1.101424782169025e+03, 1.101809950975711e+03, 1.102194230141964e+03, - 1.102577624318695e+03, 1.102960138119160e+03, 1.103341776119374e+03, 1.103722542858518e+03, 1.104102442839342e+03, - 1.104481480528560e+03, 1.104859660357244e+03, 1.105236986721204e+03, 1.105613463981376e+03, 1.105989096464190e+03, - 1.106363888461944e+03, 1.106737844233169e+03, 1.107110968002986e+03, 1.107483263963467e+03, 1.107854736273980e+03, - 1.108225389061534e+03, 1.108595226421131e+03, 1.108964252416087e+03, 1.109332471078374e+03, 1.109699886408947e+03, - 1.110066502378065e+03, 1.110432322925610e+03, 1.110797351961406e+03, 1.111161593365523e+03, 1.111525050988592e+03, - 1.111887728652099e+03, 1.112249630148693e+03, 1.112610759242472e+03, 1.112971119669282e+03, 1.113330715136997e+03, - 1.113689549325811e+03, 1.114047625888510e+03, 1.114404948450754e+03, 1.114761520611348e+03, 1.115117345942512e+03, - 1.115472427990145e+03, 1.115826770274090e+03, 1.116180376288396e+03, 1.116533249501566e+03, 1.116885393356818e+03, - 1.117236811272331e+03, 1.117587506641493e+03, 1.117937482833142e+03, 1.118286743191812e+03, 1.118635291037963e+03, - 1.118983129668223e+03, 1.119330262355614e+03, 1.119676692349785e+03, 1.120022422877237e+03, 1.120367457141543e+03, - 1.120711798323576e+03, 1.121055449581718e+03, 1.121398414052082e+03, 1.121740694848723e+03, 1.122082295063846e+03, - 1.122423217768017e+03, 1.122763466010363e+03, 1.123103042818781e+03, 1.123441951200136e+03, 1.123780194140454e+03, - 1.124117774605124e+03, 1.124454695539091e+03, 1.124790959867040e+03, 1.125126570493593e+03, 1.125461530303489e+03, - 1.125795842161774e+03, 1.126129508913976e+03, 1.126462533386294e+03, 1.126794918385767e+03, 1.127126666700456e+03, - 1.127457781099614e+03, 1.127788264333858e+03, 1.128118119135344e+03, 1.128447348217929e+03, 1.128775954277337e+03, - 1.129103939991326e+03, 1.129431308019851e+03, 1.129758061005218e+03, 1.130084201572249e+03, 1.130409732328438e+03, - 1.130734655864100e+03, 1.131058974752531e+03, 1.131382691550157e+03, 1.131705808796683e+03, 1.132028329015240e+03, - 1.132350254712535e+03, 1.132671588378992e+03, 1.132992332488898e+03, 1.133312489500543e+03, 1.133632061856361e+03, - 1.133951051983064e+03, 1.134269462291790e+03, 1.134587295178222e+03, 1.134904553022739e+03, 1.135221238190536e+03, - 1.135537353031761e+03, 1.135852899881643e+03, 1.136167881060620e+03, 1.136482298874466e+03, 1.136796155614417e+03, - 1.137109453557293e+03, 1.137422194965625e+03, 1.137734382087772e+03, 1.138046017158041e+03, 1.138357102396813e+03, - 1.138667640010648e+03, 1.138977632192414e+03, 1.139287081121394e+03, 1.139595988963404e+03, 1.139904357870902e+03, - 1.140212189983104e+03, 1.140519487426089e+03, 1.140826252312911e+03, 1.141132486743711e+03, 1.141438192805815e+03, - 1.141743372573847e+03, 1.142048028109829e+03, 1.142352161463289e+03, 1.142655774671360e+03, 1.142958869758882e+03, - 1.143261448738503e+03, 1.143563513610779e+03, 1.143865066364272e+03, 1.144166108975644e+03, 1.144466643409758e+03, - 1.144766671619773e+03, 1.145066195547235e+03, 1.145365217122171e+03, 1.145663738263186e+03, 1.145961760877547e+03, - 1.146259286861280e+03, 1.146556318099259e+03, 1.146852856465289e+03, 1.147148903822202e+03, 1.147444462021937e+03, - 1.147739532905633e+03, 1.148034118303705e+03, 1.148328220035938e+03, 1.148621839911566e+03, 1.148914979729352e+03, - 1.149207641277677e+03, 1.149499826334615e+03, 1.149791536668017e+03, 1.150082774035588e+03, 1.150373540184966e+03 - }, - { - 1.828683380589245e+00, 5.588805124582649e+00, 9.436062746888222e+00, 1.337584058482143e+01, 1.741408146288414e+01, - 2.155736944343814e+01, 2.581302892163222e+01, 3.018924417436374e+01, 3.469520476638449e+01, 3.934128397857346e+01, - 4.413925989468186e+01, 4.910259228876201e+01, 5.424677351983967e+01, 5.958977909685171e+01, 6.515265479137040e+01, - 7.096029444824089e+01, 7.704248997003444e+01, 8.343537951693025e+01, 9.018349522565444e+01, 9.734274409572528e+01, - 1.049848997462957e+02, 1.132046588750517e+02, 1.221313122189737e+02, 1.319493489220186e+02, 1.429380971782167e+02, - 1.555576640070411e+02, 1.706721561780433e+02, 7.982211437667146e+02, 8.036438048727314e+02, 8.086535569475895e+02, - 8.133200547632711e+02, 8.176956993446213e+02, 8.218210929542049e+02, 8.257284441471988e+02, 8.294437995817869e+02, - 8.329885648578564e+02, 8.363805743305986e+02, 8.396348638657445e+02, 8.427642417168597e+02, 8.457797185110439e+02, - 8.486908366287638e+02, 8.515059262973132e+02, 8.542323073531167e+02, 8.568764500922304e+02, 8.594441048807103e+02, - 8.619404076079566e+02, 8.643699662457168e+02, 8.667369324744245e+02, 8.690450613947987e+02, 8.712977616491039e+02, - 8.734981377602197e+02, 8.756490261082964e+02, 8.777530256693814e+02, 8.798125244136257e+02, 8.818297220849778e+02, - 8.838066499470493e+02, 8.857451879717354e+02, 8.876470798615376e+02, 8.895139462280063e+02, 8.913472961937961e+02, - 8.931485376412846e+02, 8.949189862945489e+02, 8.966598737918844e+02, 8.983723548817457e+02, 9.000575138548760e+02, - 9.017163703087317e+02, 9.033498843263775e+02, 9.049589611404177e+02, 9.065444553427326e+02, 9.081071746925238e+02, - 9.096478835681896e+02, 9.111673061026088e+02, 9.126661290363498e+02, 9.141450043189527e+02, 9.156045514847636e+02, - 9.170453598265432e+02, 9.184679903873466e+02, 9.198729777887499e+02, 9.212608319114429e+02, 9.226320394423759e+02, - 9.239870653010923e+02, 9.253263539564844e+02, 9.266503306440147e+02, 9.279594024923617e+02, 9.292539595675349e+02, - 9.305343758416815e+02, 9.318010100930358e+02, 9.330542067428925e+02, 9.342942966348338e+02, 9.355215977609818e+02, - 9.367364159395744e+02, 9.379390454477641e+02, 9.391297696131770e+02, 9.403088613674381e+02, 9.414765837645930e+02, - 9.426331904670923e+02, 9.437789262017454e+02, 9.449140271878952e+02, 9.460387215398126e+02, 9.471532296451804e+02, - 9.482577645213682e+02, 9.493525321510550e+02, 9.504377317986327e+02, 9.515135563087163e+02, 9.525801923879604e+02, - 9.536378208713191e+02, 9.546866169737561e+02, 9.557267505283824e+02, 9.567583862118763e+02, 9.577816837580202e+02, - 9.587967981600881e+02, 9.598038798628020e+02, 9.608030749444827e+02, 9.617945252900059e+02, 9.627783687551300e+02, - 9.637547393237618e+02, 9.647237672579325e+02, 9.656855792374154e+02, 9.666402984940181e+02, 9.675880449397524e+02, - 9.685289352897444e+02, 9.694630830744395e+02, 9.703905987635075e+02, 9.713115906781729e+02, 9.722261635788810e+02, - 9.731344198297264e+02, 9.740364592211804e+02, 9.749323790585327e+02, 9.758222742464957e+02, 9.767062373701616e+02, - 9.775843587725145e+02, 9.784567266286588e+02, 9.793234270169488e+02, 9.801845439871618e+02, 9.810401596258631e+02, - 9.818903541191155e+02, 9.827352058126463e+02, 9.835747912696086e+02, 9.844091853260452e+02, 9.852384611441706e+02, - 9.860626902789561e+02, 9.868819426643638e+02, 9.876962867574506e+02, 9.885057895177333e+02, 9.893105164679736e+02, - 9.901105317363449e+02, 9.909058980970281e+02, 9.916966770093081e+02, 9.924829286552440e+02, 9.932647119759732e+02, - 9.940420847067021e+02, 9.948151034104534e+02, 9.955838235106127e+02, 9.963482993223303e+02, 9.971085840828285e+02, - 9.978647299806561e+02, 9.986167881839376e+02, 9.993648088676575e+02, 1.000108841240021e+03, 1.000848933567926e+03, - 1.001585133201588e+03, 1.002317486598337e+03, 1.003046039345652e+03, 1.003770836183419e+03, 1.004491921025482e+03, - 1.005209336980497e+03, 1.005923126372111e+03, 1.006633330758504e+03, 1.007339990924650e+03, 1.008043147009128e+03, - 1.008742838356337e+03, 1.009439103646048e+03, 1.010131980881481e+03, 1.010821507405475e+03, 1.011507719916182e+03, - 1.012190654482266e+03, 1.012870346557666e+03, 1.013546830995912e+03, 1.014220142064016e+03, 1.014890313455962e+03, - 1.015557378305799e+03, 1.016221369200345e+03, 1.016882318191552e+03, 1.017540256808481e+03, 1.018195216068968e+03, - 1.018847226490939e+03, 1.019496318103420e+03, 1.020142520457233e+03, 1.020785862635394e+03, 1.021426373263233e+03, - 1.022064080518223e+03, 1.022699012139554e+03, 1.023331195437440e+03, 1.023960657302175e+03, 1.024587424212950e+03, - 1.025211522246435e+03, 1.025832977085130e+03, 1.026451814025501e+03, 1.027068057985897e+03, 1.027681733514267e+03, - 1.028292864795675e+03, 1.028901475659622e+03, 1.029507589587175e+03, 1.030111229717925e+03, 1.030712418856764e+03, - 1.031311179480482e+03, 1.031907533744219e+03, 1.032501503487737e+03, 1.033093110241550e+03, 1.033682375232891e+03, - 1.034269319391548e+03, 1.034853963355539e+03, 1.035436327476670e+03, 1.036016431825942e+03, 1.036594296198835e+03, - 1.037169940120468e+03, 1.037743382850635e+03, 1.038314643388717e+03, 1.038883740478488e+03, 1.039450692612798e+03, - 1.040015518038160e+03, 1.040578234759212e+03, 1.041138860543101e+03, 1.041697412923742e+03, 1.042253909205999e+03, - 1.042808366469755e+03, 1.043360801573908e+03, 1.043911231160257e+03, 1.044459671140823e+03, 1.045006138751312e+03, - 1.045550649504227e+03, 1.046093219210257e+03, 1.046633863481215e+03, 1.047172597733454e+03, 1.047709437191195e+03, - 1.048244396889792e+03, 1.048777491678921e+03, 1.049308736225706e+03, 1.049838145017773e+03, 1.050365732366243e+03, - 1.050891512408660e+03, 1.051415499111858e+03, 1.051937706274765e+03, 1.052458147558803e+03, 1.052976836378867e+03, - 1.053493786075259e+03, 1.054009009802215e+03, 1.054522520559250e+03, 1.055034331193641e+03, 1.055544454402848e+03, - 1.056052902736899e+03, 1.056559688600712e+03, 1.057064824256386e+03, 1.057568321825430e+03, 1.058070193290966e+03, - 1.058570450499871e+03, 1.059069105164894e+03, 1.059566168866707e+03, 1.060061653055947e+03, 1.060555569055196e+03, - 1.061047928060926e+03, 1.061538741145414e+03, 1.062028019258618e+03, 1.062515773230008e+03, 1.063002013770373e+03, - 1.063486751473593e+03, 1.063969996818370e+03, 1.064451760169931e+03, 1.064932051781703e+03, 1.065410881796951e+03, - 1.065888260250382e+03, 1.066364197069735e+03, 1.066838702077322e+03, 1.067311784991557e+03, 1.067783455428442e+03, - 1.068253722903046e+03, 1.068722596830932e+03, 1.069190086529582e+03, 1.069656201219779e+03, 1.070120950026975e+03, - 1.070584341982629e+03, 1.071046386025523e+03, 1.071507091003053e+03, 1.071966465672503e+03, 1.072424518702286e+03, - 1.072881258673175e+03, 1.073336694079504e+03, 1.073790833330351e+03, 1.074243684750704e+03, 1.074695256582598e+03, - 1.075145556986243e+03, 1.075594594041125e+03, 1.076042375747089e+03, 1.076488910025412e+03, 1.076934204719843e+03, - 1.077378267597638e+03, 1.077821106350576e+03, 1.078262728595946e+03, 1.078703141877538e+03, 1.079142353666598e+03, - 1.079580371362778e+03, 1.080017202295067e+03, 1.080452853722710e+03, 1.080887332836107e+03, 1.081320646757696e+03, - 1.081752802542834e+03, 1.082183807180647e+03, 1.082613667594876e+03, 1.083042390644710e+03, 1.083469983125600e+03, - 1.083896451770067e+03, 1.084321803248484e+03, 1.084746044169869e+03, 1.085169181082637e+03, 1.085591220475363e+03, - 1.086012168777522e+03, 1.086432032360218e+03, 1.086850817536905e+03, 1.087268530564092e+03, 1.087685177642048e+03, - 1.088100764915476e+03, 1.088515298474199e+03, 1.088928784353821e+03, 1.089341228536380e+03, 1.089752636950998e+03, - 1.090163015474512e+03, 1.090572369932099e+03, 1.090980706097900e+03, 1.091388029695614e+03, 1.091794346399107e+03, - 1.092199661832995e+03, 1.092603981573223e+03, 1.093007311147641e+03, 1.093409656036562e+03, 1.093811021673319e+03, - 1.094211413444814e+03, 1.094610836692048e+03, 1.095009296710658e+03, 1.095406798751442e+03, 1.095803348020864e+03, - 1.096198949681570e+03, 1.096593608852887e+03, 1.096987330611313e+03, 1.097380119991005e+03, 1.097771981984258e+03, - 1.098162921541974e+03, 1.098552943574133e+03, 1.098942052950247e+03, 1.099330254499813e+03, 1.099717553012760e+03, - 1.100103953239888e+03, 1.100489459893302e+03, 1.100874077646836e+03, 1.101257811136481e+03, 1.101640664960793e+03, - 1.102022643681308e+03, 1.102403751822944e+03, 1.102783993874398e+03, 1.103163374288543e+03, 1.103541897482813e+03, - 1.103919567839582e+03, 1.104296389706549e+03, 1.104672367397103e+03, 1.105047505190694e+03, 1.105421807333193e+03, - 1.105795278037247e+03, 1.106167921482637e+03, 1.106539741816622e+03, 1.106910743154280e+03, 1.107280929578851e+03, - 1.107650305142067e+03, 1.108018873864484e+03, 1.108386639735803e+03, 1.108753606715198e+03, 1.109119778731627e+03, - 1.109485159684143e+03, 1.109849753442208e+03, 1.110213563845994e+03, 1.110576594706682e+03, 1.110938849806763e+03, - 1.111300332900325e+03, 1.111661047713349e+03, 1.112020997943985e+03, 1.112380187262841e+03, 1.112738619313261e+03, - 1.113096297711591e+03, 1.113453226047460e+03, 1.113809407884042e+03, 1.114164846758322e+03, 1.114519546181354e+03, - 1.114873509638523e+03, 1.115226740589795e+03, 1.115579242469970e+03, 1.115931018688930e+03, 1.116282072631883e+03, - 1.116632407659606e+03, 1.116982027108683e+03, 1.117330934291740e+03, 1.117679132497680e+03, 1.118026624991913e+03, - 1.118373415016580e+03, 1.118719505790781e+03, 1.119064900510795e+03, 1.119409602350301e+03, 1.119753614460592e+03, - 1.120096939970790e+03, 1.120439581988057e+03, 1.120781543597804e+03, 1.121122827863898e+03, 1.121463437828862e+03, - 1.121803376514082e+03, 1.122142646919999e+03, 1.122481252026314e+03, 1.122819194792175e+03, 1.123156478156370e+03, - 1.123493105037520e+03, 1.123829078334265e+03, 1.124164400925448e+03, 1.124499075670296e+03, 1.124833105408608e+03, - 1.125166492960927e+03, 1.125499241128718e+03, 1.125831352694548e+03, 1.126162830422249e+03, 1.126493677057098e+03, - 1.126823895325979e+03, 1.127153487937555e+03, 1.127482457582429e+03, 1.127810806933309e+03, 1.128138538645167e+03, - 1.128465655355401e+03, 1.128792159683993e+03, 1.129118054233657e+03, 1.129443341590007e+03, 1.129768024321693e+03, - 1.130092104980567e+03, 1.130415586101818e+03, 1.130738470204128e+03, 1.131060759789817e+03, 1.131382457344983e+03, - 1.131703565339644e+03, 1.132024086227886e+03, 1.132344022447992e+03, 1.132663376422588e+03, 1.132982150558776e+03, - 1.133300347248264e+03, 1.133617968867510e+03, 1.133935017777843e+03, 1.134251496325597e+03, 1.134567406842244e+03, - 1.134882751644515e+03, 1.135197533034530e+03, 1.135511753299921e+03, 1.135825414713956e+03, 1.136138519535663e+03, - 1.136451070009945e+03, 1.136763068367706e+03, 1.137074516825966e+03, 1.137385417587977e+03, 1.137695772843342e+03, - 1.138005584768124e+03, 1.138314855524967e+03, 1.138623587263201e+03, 1.138931782118954e+03, 1.139239442215267e+03, - 1.139546569662197e+03, 1.139853166556923e+03, 1.140159234983861e+03, 1.140464777014760e+03, 1.140769794708809e+03, - 1.141074290112744e+03, 1.141378265260944e+03, 1.141681722175534e+03, 1.141984662866488e+03, 1.142287089331724e+03, - 1.142589003557200e+03, 1.142890407517019e+03, 1.143191303173516e+03, 1.143491692477356e+03, 1.143791577367631e+03, - 1.144090959771948e+03, 1.144389841606525e+03, 1.144688224776278e+03, 1.144986111174916e+03, 1.145283502685024e+03, - 1.145580401178159e+03, 1.145876808514930e+03, 1.146172726545092e+03, 1.146468157107622e+03, 1.146763102030815e+03, - 1.147057563132359e+03, 1.147351542219423e+03, 1.147645041088738e+03, 1.147938061526678e+03, 1.148230605309343e+03 - }, - { - 1.822180000150033e+00, 5.568193484734743e+00, 9.399940228377346e+00, 1.332263784880051e+01, 1.734203609089832e+01, - 2.146449422213165e+01, 2.569707341230139e+01, 3.004764778659233e+01, 3.452503897594713e+01, 3.913918052511753e+01, - 4.390132065851967e+01, 4.882427491610381e+01, 5.392274448532730e+01, 5.921372234671126e+01, 6.471701871279591e+01, - 7.045595148932507e+01, 7.645826972783080e+01, 8.275741375663115e+01, 8.939427493666689e+01, 9.641972006091009e+01, - 1.038983291003199e+02, 1.119141429750094e+02, 1.205799201082087e+02, 1.300529287014809e+02, 1.405639705789797e+02, - 1.524763489081062e+02, 1.664242749856375e+02, 1.837226547736785e+02, 7.905659783148591e+02, 7.963288571571167e+02, - 8.016258669287345e+02, 8.065397207595992e+02, 8.111316653328546e+02, 8.154485634297506e+02, 8.195272099794033e+02, - 8.233971067983342e+02, 8.270823234756804e+02, 8.306027889411638e+02, 8.339752137707483e+02, 8.372137648285055e+02, - 8.403305690296386e+02, 8.433360963041742e+02, 8.462394553428804e+02, 8.490486251939167e+02, 8.517706388963175e+02, - 8.544117307225669e+02, 8.569774554438615e+02, 8.594727858281274e+02, 8.619021930174866e+02, 8.642697133055311e+02, - 8.665790040119618e+02, 8.688333905433052e+02, 8.710359062727002e+02, 8.731893265268053e+02, 8.752961977043000e+02, - 8.773588623470667e+02, 8.793794808268979e+02, 8.813600501864229e+02, 8.833024205748435e+02, 8.852083096409599e+02, - 8.870793151833581e+02, 8.889169263071950e+02, 8.907225332960429e+02, 8.924974363738697e+02, 8.942428535048541e+02, - 8.959599273561372e+02, 8.976497315299321e+02, 8.993132761558574e+02, 9.009515129213602e+02, 9.025653396071898e+02, - 9.041556041857089e+02, 9.057231085320379e+02, 9.072686117914826e+02, 9.087928334410300e+02, 9.102964560779484e+02, - 9.117801279643953e+02, 9.132444653534169e+02, 9.146900546186628e+02, 9.161174542075300e+02, 9.175271964351513e+02, - 9.189197891346581e+02, 9.202957171774349e+02, 9.216554438755559e+02, 9.229994122772811e+02, 9.243280463653335e+02, - 9.256417521666436e+02, 9.269409187813638e+02, 9.282259193381593e+02, 9.294971118820656e+02, 9.307548402006024e+02, - 9.319994345932573e+02, 9.332312125889853e+02, 9.344504796159013e+02, 9.356575296269842e+02, 9.368526456852385e+02, - 9.380361005114461e+02, 9.392081569973757e+02, 9.403690686870501e+02, 9.415190802284447e+02, 9.426584277977963e+02, - 9.437873394985048e+02, 9.449060357364435e+02, 9.460147295733635e+02, 9.471136270599005e+02, 9.482029275496139e+02, - 9.492828239953361e+02, 9.503535032290391e+02, 9.514151462263005e+02, 9.524679283564069e+02, 9.535120196190041e+02, - 9.545475848681814e+02, 9.555747840247809e+02, 9.565937722776719e+02, 9.576047002746902e+02, 9.586077143038608e+02, - 9.596029564655915e+02, 9.605905648379299e+02, 9.615706736323517e+02, 9.625434133401455e+02, 9.635089108730801e+02, - 9.644672896974436e+02, 9.654186699617206e+02, 9.663631685089803e+02, 9.673008989836154e+02, 9.682319728881375e+02, - 9.691564979480702e+02, 9.700745794339541e+02, 9.709863199501320e+02, 9.718918195270080e+02, 9.727911757092568e+02, - 9.736844836402300e+02, 9.745718361427258e+02, 9.754533237963335e+02, 9.763290350115171e+02, 9.771990561006030e+02, - 9.780634713458334e+02, 9.789223630646294e+02, 9.797758116721943e+02, 9.806238957416025e+02, 9.814666920614760e+02, - 9.823042756913884e+02, 9.831367200150829e+02, 9.839640968064396e+02, 9.847864762179942e+02, 9.856039269214207e+02, - 9.864165160893125e+02, 9.872243094553173e+02, 9.880273713562742e+02, 9.888257647727938e+02, 9.896195513683438e+02, - 9.904087915269082e+02, 9.911935443892800e+02, 9.919738678880559e+02, 9.927498187813788e+02, 9.935214526854868e+02, - 9.942888241061196e+02, 9.950519864688320e+02, 9.958109921482583e+02, 9.965658924963695e+02, 9.973167378697724e+02, - 9.980635776560821e+02, 9.988064602994071e+02, 9.995454333249908e+02, 1.000280543363030e+03, 1.001011836171717e+03, - 1.001739356659530e+03, 1.002463148906790e+03, 1.003183256158867e+03, 1.003899720958960e+03, 1.004612584995837e+03, - 1.005321889239400e+03, 1.006027673929342e+03, 1.006729978592930e+03, 1.007428842062235e+03, 1.008124302490843e+03, - 1.008816397370048e+03, 1.009505163544563e+03, 1.010190637227751e+03, 1.010872854016404e+03, 1.011551848905081e+03, - 1.012227656300032e+03, 1.012900310032699e+03, 1.013569843372839e+03, 1.014236289041257e+03, 1.014899679222176e+03, - 1.015560045575253e+03, 1.016217419247259e+03, 1.016871830883418e+03, 1.017523310638438e+03, 1.018171888187231e+03, - 1.018817592735335e+03, 1.019460453029050e+03, 1.020100497365295e+03, 1.020737753601199e+03, 1.021372249163429e+03, - 1.022004011057273e+03, 1.022633065875470e+03, 1.023259439806818e+03, 1.023883158644541e+03, 1.024504247794449e+03, - 1.025122732282871e+03, 1.025738636764397e+03, 1.026351985529408e+03, 1.026962802511412e+03, 1.027571111294207e+03, - 1.028176935118842e+03, 1.028780296890419e+03, 1.029381219184711e+03, 1.029979724254625e+03, 1.030575834036496e+03, - 1.031169570156234e+03, 1.031760953935307e+03, 1.032350006396591e+03, 1.032936748270071e+03, 1.033521199998403e+03, - 1.034103381742346e+03, 1.034683313386057e+03, 1.035261014542273e+03, 1.035836504557351e+03, 1.036409802516208e+03, - 1.036980927247133e+03, 1.037549897326487e+03, 1.038116731083305e+03, 1.038681446603779e+03, 1.039244061735637e+03, - 1.039804594092438e+03, 1.040363061057752e+03, 1.040919479789251e+03, 1.041473866702080e+03, 1.042026239538718e+03, - 1.042576614298433e+03, 1.043125007274420e+03, 1.043671434553102e+03, 1.044215912017703e+03, 1.044758455351743e+03, - 1.045299080042458e+03, 1.045837801384147e+03, 1.046374634481443e+03, 1.046909594252516e+03, 1.047442695459020e+03, - 1.047973952600802e+03, 1.048503380083154e+03, 1.049030992109075e+03, 1.049556802710124e+03, 1.050080825749232e+03, - 1.050603074923463e+03, 1.051123563766717e+03, 1.051642305652372e+03, 1.052159313795876e+03, 1.052674601257288e+03, - 1.053188180943759e+03, 1.053700065611974e+03, 1.054210267870531e+03, 1.054718800182291e+03, 1.055225674866658e+03, - 1.055730904101835e+03, 1.056234499927018e+03, 1.056736474244561e+03, 1.057236838822090e+03, 1.057735605294571e+03, - 1.058232785166354e+03, 1.058728389813161e+03, 1.059222430484045e+03, 1.059714918303303e+03, 1.060205864272365e+03, - 1.060695279271633e+03, 1.061183174062295e+03, 1.061669559288101e+03, 1.062154445477101e+03, 1.062637843043361e+03, - 1.063119762288638e+03, 1.063600213404025e+03, 1.064079206471569e+03, 1.064556751465858e+03, 1.065032858255574e+03, - 1.065507536605024e+03, 1.065980796175643e+03, 1.066452646527458e+03, 1.066923097120547e+03, 1.067392157316449e+03, - 1.067859836379561e+03, 1.068326143478513e+03, 1.068791087687505e+03, 1.069254677987635e+03, 1.069716923268193e+03, - 1.070177832327938e+03, 1.070637413876350e+03, 1.071095676534861e+03, 1.071552628838061e+03, 1.072008279234891e+03, - 1.072462636089810e+03, 1.072915707683938e+03, 1.073367502216186e+03, 1.073818027804368e+03, 1.074267292486286e+03, - 1.074715304220799e+03, 1.075162070888886e+03, 1.075607600294667e+03, 1.076051900166433e+03, 1.076494978157637e+03, - 1.076936841847887e+03, 1.077377498743904e+03, 1.077816956280481e+03, 1.078255221821415e+03, 1.078692302660430e+03, - 1.079128206022076e+03, 1.079562939062627e+03, 1.079996508870956e+03, 1.080428922469390e+03, 1.080860186814566e+03, - 1.081290308798258e+03, 1.081719295248205e+03, 1.082147152928912e+03, 1.082573888542449e+03, 1.082999508729231e+03, - 1.083424020068788e+03, 1.083847429080523e+03, 1.084269742224458e+03, 1.084690965901966e+03, 1.085111106456496e+03, - 1.085530170174281e+03, 1.085948163285043e+03, 1.086365091962676e+03, 1.086780962325931e+03, 1.087195780439079e+03, - 1.087609552312570e+03, 1.088022283903688e+03, 1.088433981117175e+03, 1.088844649805875e+03, 1.089254295771340e+03, - 1.089662924764448e+03, 1.090070542486000e+03, 1.090477154587311e+03, 1.090882766670794e+03, 1.091287384290534e+03, - 1.091691012952850e+03, 1.092093658116858e+03, 1.092495325195014e+03, 1.092896019553659e+03, 1.093295746513548e+03, - 1.093694511350380e+03, 1.094092319295310e+03, 1.094489175535462e+03, 1.094885085214431e+03, 1.095280053432778e+03, - 1.095674085248518e+03, 1.096067185677603e+03, 1.096459359694391e+03, 1.096850612232122e+03, 1.097240948183370e+03, - 1.097630372400502e+03, 1.098018889696126e+03, 1.098406504843533e+03, 1.098793222577129e+03, 1.099179047592865e+03, - 1.099563984548667e+03, 1.099948038064845e+03, 1.100331212724507e+03, 1.100713513073968e+03, 1.101094943623147e+03, - 1.101475508845962e+03, 1.101855213180724e+03, 1.102234061030513e+03, 1.102612056763566e+03, 1.102989204713642e+03, - 1.103365509180398e+03, 1.103740974429748e+03, 1.104115604694223e+03, 1.104489404173325e+03, 1.104862377033879e+03, - 1.105234527410372e+03, 1.105605859405297e+03, 1.105976377089489e+03, 1.106346084502451e+03, 1.106714985652688e+03, - 1.107083084518021e+03, 1.107450385045915e+03, 1.107816891153782e+03, 1.108182606729300e+03, 1.108547535630712e+03, - 1.108911681687134e+03, 1.109275048698846e+03, 1.109637640437595e+03, 1.109999460646875e+03, 1.110360513042221e+03, - 1.110720801311489e+03, 1.111080329115138e+03, 1.111439100086500e+03, 1.111797117832057e+03, 1.112154385931709e+03, - 1.112510907939039e+03, 1.112866687381575e+03, 1.113221727761045e+03, 1.113576032553641e+03, 1.113929605210264e+03, - 1.114282449156774e+03, 1.114634567794240e+03, 1.114985964499179e+03, 1.115336642623797e+03, 1.115686605496226e+03, - 1.116035856420761e+03, 1.116384398678086e+03, 1.116732235525506e+03, 1.117079370197172e+03, 1.117425805904302e+03, - 1.117771545835405e+03, 1.118116593156494e+03, 1.118460951011303e+03, 1.118804622521501e+03, 1.119147610786899e+03, - 1.119489918885655e+03, 1.119831549874488e+03, 1.120172506788869e+03, 1.120512792643226e+03, 1.120852410431144e+03, - 1.121191363125556e+03, 1.121529653678938e+03, 1.121867285023497e+03, 1.122204260071363e+03, 1.122540581714773e+03, - 1.122876252826255e+03, 1.123211276258809e+03, 1.123545654846089e+03, 1.123879391402579e+03, 1.124212488723768e+03, - 1.124544949586326e+03, 1.124876776748272e+03, 1.125207972949146e+03, 1.125538540910175e+03, 1.125868483334441e+03, - 1.126197802907042e+03, 1.126526502295257e+03, 1.126854584148701e+03, 1.127182051099490e+03, 1.127508905762392e+03, - 1.127835150734984e+03, 1.128160788597804e+03, 1.128485821914504e+03, 1.128810253231999e+03, 1.129134085080612e+03, - 1.129457319974224e+03, 1.129779960410417e+03, 1.130102008870616e+03, 1.130423467820233e+03, 1.130744339708805e+03, - 1.131064626970130e+03, 1.131384332022411e+03, 1.131703457268384e+03, 1.132022005095453e+03, 1.132339977875828e+03, - 1.132657377966648e+03, 1.132974207710115e+03, 1.133290469433624e+03, 1.133606165449884e+03, 1.133921298057046e+03, - 1.134235869538831e+03, 1.134549882164644e+03, 1.134863338189704e+03, 1.135176239855158e+03, 1.135488589388205e+03, - 1.135800389002206e+03, 1.136111640896809e+03, 1.136422347258058e+03, 1.136732510258509e+03, 1.137042132057339e+03, - 1.137351214800466e+03, 1.137659760620650e+03, 1.137967771637607e+03, 1.138275249958116e+03, 1.138582197676124e+03, - 1.138888616872856e+03, 1.139194509616914e+03, 1.139499877964385e+03, 1.139804723958942e+03, 1.140109049631944e+03, - 1.140412857002538e+03, 1.140716148077759e+03, 1.141018924852627e+03, 1.141321189310241e+03, 1.141622943421884e+03, - 1.141924189147108e+03, 1.142224928433838e+03, 1.142525163218457e+03, 1.142824895425903e+03, 1.143124126969763e+03, - 1.143422859752354e+03, 1.143721095664826e+03, 1.144018836587238e+03, 1.144316084388655e+03, 1.144612840927228e+03, - 1.144909108050290e+03, 1.145204887594427e+03, 1.145500181385576e+03, 1.145794991239102e+03, 1.146089318959881e+03 - }, - { - 1.815723590293792e+00, 5.547741973301347e+00, 9.364119310022142e+00, 1.326991225326139e+01, 1.727068456341575e+01, - 2.137257951347054e+01, 2.558240603613146e+01, 2.990774192557961e+01, 3.435705840324101e+01, 3.893987169743523e+01, - 4.366692914112954e+01, 4.855043988264628e+01, 5.360436398370550e+01, 5.884477899627222e+01, 6.429035094150048e+01, - 6.996294839781959e+01, 7.588845656148489e+01, 8.209787687672627e+01, 8.862884470900872e+01, 9.552777671822825e+01, - 1.028529988491558e+02, 1.106794626721360e+02, 1.191061586891296e+02, 1.282683825351360e+02, 1.383593931771599e+02, - 1.496720644779551e+02, 1.626890437154810e+02, 1.783158872257761e+02, 7.759655938076395e+02, 7.827654443446204e+02, - 7.888967882177874e+02, 7.945016046424854e+02, 7.996783459859646e+02, 8.044986875149965e+02, 8.090167432063699e+02, - 8.132745433995641e+02, 8.173054864216909e+02, 8.211366154781526e+02, 8.247901771479186e+02, 8.282847211852928e+02, - 8.316358968022694e+02, 8.348570419779442e+02, 8.379596279524818e+02, 8.409536001121702e+02, 8.438476432852797e+02, - 8.466493909304822e+02, 8.493655920326007e+02, 8.520022456754344e+02, 8.545647106009353e+02, 8.570577951904645e+02, - 8.594858319632351e+02, 8.618527397137098e+02, 8.641620756938623e+02, 8.664170797129203e+02, 8.686207116258228e+02, - 8.707756833761058e+02, 8.728844865242942e+02, 8.749494160109864e+02, 8.769725907616720e+02, 8.789559716283544e+02, - 8.809013770741921e+02, 8.828104969364056e+02, 8.846849045456253e+02, 8.865260674336650e+02, 8.883353568241341e+02, - 8.901140560695940e+02, 8.918633681736341e+02, 8.935844225154053e+02, 8.952782808767492e+02, 8.969459428576579e+02, - 8.985883507536204e+02, 9.002063939582870e+02, 9.018009129462303e+02, 9.033727028833380e+02, 9.049225169061532e+02, - 9.064510691062139e+02, 9.079590372508969e+02, 9.094470652684203e+02, 9.109157655212886e+02, 9.123657208895953e+02, - 9.137974866830930e+02, 9.152115923987628e+02, 9.166085433387542e+02, 9.179888221018713e+02, 9.193528899603913e+02, - 9.207011881327031e+02, 9.220341389611542e+02, 9.233521470035181e+02, 9.246556000456335e+02, 9.259448700419941e+02, - 9.272203139904137e+02, 9.284822747462575e+02, 9.297310817812383e+02, 9.309670518912712e+02, 9.321904898574668e+02, - 9.334016890639774e+02, 9.346009320760390e+02, 9.357884911812955e+02, 9.369646288971685e+02, 9.381295984468353e+02, - 9.392836442061239e+02, 9.404270021234601e+02, 9.415599001147950e+02, 9.426825584353112e+02, 9.437951900295321e+02, - 9.448980008613340e+02, 9.459911902252514e+02, 9.470749510403330e+02, 9.481494701277246e+02, 9.492149284730643e+02, - 9.502715014746709e+02, 9.513193591784631e+02, 9.523586665004456e+02, 9.533895834375616e+02, 9.544122652676351e+02, - 9.554268627390778e+02, 9.564335222513002e+02, 9.574323860279009e+02, 9.584235922783270e+02, 9.594072753515109e+02, - 9.603835658829469e+02, 9.613525909347144e+02, 9.623144741288221e+02, 9.632693356567873e+02, 9.642172923682851e+02, - 9.651584589914841e+02, 9.660929462442829e+02, 9.670208623342101e+02, 9.679423127085462e+02, 9.688574001504629e+02, - 9.697662248709338e+02, 9.706688845966414e+02, 9.715654746540890e+02, 9.724560880501147e+02, 9.733408155489898e+02, - 9.742197457462864e+02, 9.750929651396610e+02, 9.759605581967243e+02, 9.768226074201312e+02, 9.776791934100336e+02, - 9.785303949240247e+02, 9.793762889346899e+02, 9.802169506848896e+02, 9.810524537408476e+02, 9.818828700574539e+02, - 9.827082699692683e+02, 9.835287223268355e+02, 9.843442944812390e+02, 9.851550523434257e+02, 9.859610604262920e+02, - 9.867623818852047e+02, 9.875590785570450e+02, 9.883512109978215e+02, 9.891388385189290e+02, 9.899220192221070e+02, - 9.907008100331568e+02, 9.914752667344615e+02, 9.922454439963763e+02, 9.930113954075197e+02, 9.937731735040229e+02, - 9.945308297977765e+02, 9.952844148037173e+02, 9.960339780661939e+02, 9.967795681844466e+02, 9.975212328372460e+02, - 9.982590188067089e+02, 9.989929720013389e+02, 9.997231374517032e+02, 1.000449559440276e+03, 1.001172281357039e+03, - 1.001891345831880e+03, 1.002606794725588e+03, 1.003318669148805e+03, 1.004027009480390e+03, 1.004731855385216e+03, - 1.005433245831406e+03, 1.006131219107054e+03, 1.006825812836436e+03, 1.007517063995720e+03, 1.008205008928221e+03, - 1.008889683359185e+03, 1.009571122410147e+03, 1.010249360612858e+03, 1.010924431922815e+03, 1.011596369732380e+03, - 1.012265206883538e+03, 1.012930975680285e+03, 1.013593707900647e+03, 1.014253434808380e+03, 1.014910187164329e+03, - 1.015563995237466e+03, 1.016214888815630e+03, 1.016862897215960e+03, 1.017508049295051e+03, 1.018150373458822e+03, - 1.018789897672122e+03, 1.019426649468078e+03, 1.020060655957187e+03, 1.020691943836166e+03, 1.021320539396569e+03, - 1.021946468533175e+03, 1.022569756752160e+03, 1.023190429179046e+03, 1.023808510566456e+03, 1.024424025301656e+03, - 1.025036997413914e+03, 1.025647450581668e+03, 1.026255408139510e+03, 1.026860893084989e+03, 1.027463928085262e+03, - 1.028064535483552e+03, 1.028662737305468e+03, 1.029258555265159e+03, 1.029852010771315e+03, 1.030443124933030e+03, - 1.031031918565510e+03, 1.031618412195654e+03, 1.032202626067499e+03, 1.032784580147528e+03, 1.033364294129856e+03, - 1.033941787441297e+03, 1.034517079246304e+03, 1.035090188451795e+03, 1.035661133711877e+03, 1.036229933432441e+03, - 1.036796605775669e+03, 1.037361168664426e+03, 1.037923639278940e+03, 1.038484036074895e+03, 1.039042375791241e+03, - 1.039598675435571e+03, 1.040152951796690e+03, 1.040705221448446e+03, 1.041255500753481e+03, 1.041803805893988e+03, - 1.042350152765770e+03, 1.042894557147801e+03, 1.043437034593738e+03, 1.043977600463575e+03, 1.044516269926915e+03, - 1.045053057966190e+03, 1.045587979379803e+03, 1.046121048785203e+03, 1.046652280621900e+03, 1.047181689154404e+03, - 1.047709288475126e+03, 1.048235092507188e+03, 1.048759115007203e+03, 1.049281369567976e+03, 1.049801869621161e+03, - 1.050320628439861e+03, 1.050837659141173e+03, 1.051352974688683e+03, 1.051866587894910e+03, 1.052378511423700e+03, - 1.052888757792573e+03, 1.053397339375022e+03, 1.053904268402770e+03, 1.054409556967972e+03, 1.054913217025389e+03, - 1.055415260394507e+03, 1.055915698761615e+03, 1.056414543681852e+03, 1.056911806581207e+03, 1.057407498758476e+03, - 1.057901631387196e+03, 1.058394215517525e+03, 1.058885262078099e+03, 1.059374781877843e+03, 1.059862785607761e+03, - 1.060349283842679e+03, 1.060834287042962e+03, 1.061317805556201e+03, 1.061799849618858e+03, 1.062280429357898e+03, - 1.062759554792371e+03, 1.063237235834981e+03, 1.063713482293618e+03, 1.064188303872861e+03, 1.064661710175463e+03, - 1.065133710703794e+03, 1.065604314861275e+03, 1.066073531953774e+03, 1.066541371190978e+03, 1.067007841687747e+03, - 1.067472952465441e+03, 1.067936712453220e+03, 1.068399130489324e+03, 1.068860215322332e+03, 1.069319975612398e+03, - 1.069778419932462e+03, 1.070235556769443e+03, 1.070691394525415e+03, 1.071145941518753e+03, 1.071599205985269e+03, - 1.072051196079325e+03, 1.072501919874923e+03, 1.072951385366786e+03, 1.073399600471407e+03, 1.073846573028095e+03, - 1.074292310799996e+03, 1.074736821475092e+03, 1.075180112667193e+03, 1.075622191916911e+03, 1.076063066692609e+03, - 1.076502744391344e+03, 1.076941232339790e+03, 1.077378537795149e+03, 1.077814667946042e+03, 1.078249629913391e+03, - 1.078683430751281e+03, 1.079116077447815e+03, 1.079547576925950e+03, 1.079977936044320e+03, 1.080407161598048e+03, - 1.080835260319541e+03, 1.081262238879283e+03, 1.081688103886600e+03, 1.082112861890421e+03, 1.082536519380033e+03, - 1.082959082785813e+03, 1.083380558479953e+03, 1.083800952777175e+03, 1.084220271935437e+03, 1.084638522156621e+03, - 1.085055709587217e+03, 1.085471840318991e+03, 1.085886920389650e+03, 1.086300955783492e+03, 1.086713952432041e+03, - 1.087125916214687e+03, 1.087536852959298e+03, 1.087946768442842e+03, 1.088355668391981e+03, 1.088763558483670e+03, - 1.089170444345742e+03, 1.089576331557482e+03, 1.089981225650196e+03, 1.090385132107770e+03, 1.090788056367222e+03, - 1.091190003819245e+03, 1.091590979808741e+03, 1.091990989635349e+03, 1.092390038553964e+03, 1.092788131775250e+03, - 1.093185274466144e+03, 1.093581471750355e+03, 1.093976728708850e+03, 1.094371050380344e+03, 1.094764441761769e+03, - 1.095156907808748e+03, 1.095548453436057e+03, 1.095939083518081e+03, 1.096328802889263e+03, 1.096717616344550e+03, - 1.097105528639827e+03, 1.097492544492352e+03, 1.097878668581176e+03, 1.098263905547569e+03, 1.098648259995427e+03, - 1.099031736491684e+03, 1.099414339566711e+03, 1.099796073714716e+03, 1.100176943394132e+03, 1.100556953028006e+03, - 1.100936107004374e+03, 1.101314409676644e+03, 1.101691865363960e+03, 1.102068478351571e+03, 1.102444252891188e+03, - 1.102819193201345e+03, 1.103193303467741e+03, 1.103566587843598e+03, 1.103939050449989e+03, 1.104310695376187e+03, - 1.104681526679989e+03, 1.105051548388049e+03, 1.105420764496202e+03, 1.105789178969776e+03, 1.106156795743918e+03, - 1.106523618723899e+03, 1.106889651785421e+03, 1.107254898774922e+03, 1.107619363509876e+03, 1.107983049779086e+03, - 1.108345961342977e+03, 1.108708101933884e+03, 1.109069475256335e+03, 1.109430084987331e+03, 1.109789934776628e+03, - 1.110149028247004e+03, 1.110507368994530e+03, 1.110864960588842e+03, 1.111221806573398e+03, 1.111577910465740e+03, - 1.111933275757751e+03, 1.112287905915909e+03, 1.112641804381536e+03, 1.112994974571046e+03, 1.113347419876188e+03, - 1.113699143664288e+03, 1.114050149278488e+03, 1.114400440037977e+03, 1.114750019238231e+03, 1.115098890151233e+03, - 1.115447056025707e+03, 1.115794520087338e+03, 1.116141285538996e+03, 1.116487355560951e+03, 1.116832733311091e+03, - 1.117177421925135e+03, 1.117521424516844e+03, 1.117864744178228e+03, 1.118207383979752e+03, 1.118549346970541e+03, - 1.118890636178577e+03, 1.119231254610902e+03, 1.119571205253808e+03, 1.119910491073039e+03, 1.120249115013974e+03, - 1.120587080001821e+03, 1.120924388941804e+03, 1.121261044719347e+03, 1.121597050200254e+03, 1.121932408230893e+03, - 1.122267121638373e+03, 1.122601193230722e+03, 1.122934625797059e+03, 1.123267422107765e+03, 1.123599584914659e+03, - 1.123931116951160e+03, 1.124262020932457e+03, 1.124592299555674e+03, 1.124921955500030e+03, 1.125250991427002e+03, - 1.125579409980481e+03, 1.125907213786935e+03, 1.126234405455558e+03, 1.126560987578428e+03, 1.126886962730656e+03, - 1.127212333470539e+03, 1.127537102339705e+03, 1.127861271863266e+03, 1.128184844549954e+03, 1.128507822892274e+03, - 1.128830209366642e+03, 1.129152006433523e+03, 1.129473216537573e+03, 1.129793842107780e+03, 1.130113885557590e+03, - 1.130433349285051e+03, 1.130752235672941e+03, 1.131070547088901e+03, 1.131388285885563e+03, 1.131705454400686e+03, - 1.132022054957269e+03, 1.132338089863695e+03, 1.132653561413839e+03, 1.132968471887203e+03, 1.133282823549032e+03, - 1.133596618650433e+03, 1.133909859428502e+03, 1.134222548106433e+03, 1.134534686893644e+03, 1.134846277985881e+03, - 1.135157323565346e+03, 1.135467825800798e+03, 1.135777786847671e+03, 1.136087208848185e+03, 1.136396093931452e+03, - 1.136704444213590e+03, 1.137012261797824e+03, 1.137319548774596e+03, 1.137626307221670e+03, 1.137932539204235e+03, - 1.138238246775009e+03, 1.138543431974336e+03, 1.138848096830297e+03, 1.139152243358799e+03, 1.139455873563681e+03, - 1.139758989436807e+03, 1.140061592958167e+03, 1.140363686095968e+03, 1.140665270806736e+03, 1.140966349035399e+03, - 1.141266922715392e+03, 1.141566993768738e+03, 1.141866564106147e+03, 1.142165635627104e+03, 1.142464210219955e+03, - 1.142762289761997e+03, 1.143059876119570e+03, 1.143356971148134e+03, 1.143653576692366e+03, 1.143949694586235e+03 - }, - { - 1.809313629947665e+00, 5.527448591099636e+00, 9.328595799244161e+00, 1.321765646975879e+01, 1.720001517166403e+01, - 2.128160758050582e+01, 2.546900083803720e+01, 2.976948949436231e+01, 3.419121088414567e+01, 3.874328495886331e+01, - 4.343598520541453e+01, 4.828094951183329e+01, 5.329144298328825e+01, 5.848268921223323e+01, 6.387229307058556e+01, - 6.948078785959135e+01, 7.533235451764996e+01, 8.145578378310805e+01, 8.788578945127421e+01, 9.466484262474484e+01, - 1.018458031644321e+02, 1.094958156802023e+02, 1.177022989812728e+02, 1.265825861884704e+02, 1.363003535367639e+02, - 1.470957566237750e+02, 1.593464514463227e+02, 1.737099074333793e+02, 1.915389226689061e+02, 7.675225995554495e+02, - 7.748212077104222e+02, 7.813507535409474e+02, 7.872845228622162e+02, 7.927398507367348e+02, 7.978006430981470e+02, - 8.025293654686037e+02, 8.069739893528382e+02, 8.111722806964480e+02, 8.151545814687862e+02, 8.189456867946710e+02, - 8.225661536781591e+02, 8.260332387054800e+02, 8.293615857322313e+02, 8.325637404541292e+02, 8.356505422583509e+02, - 8.386314272757180e+02, 8.415146660027340e+02, 8.443075519284051e+02, 8.470165529382887e+02, 8.496474340683425e+02, - 8.522053579445470e+02, 8.546949676547539e+02, 8.571204556524733e+02, 8.594856214535901e+02, 8.617939202657772e+02, - 8.640485042248040e+02, 8.662522575594522e+02, 8.684078267369522e+02, 8.705176464327252e+02, 8.725839620060142e+02, - 8.746088490357226e+02, 8.765942303701324e+02, 8.785418910639560e+02, 8.804534915118968e+02, 8.823305790360133e+02, - 8.841745981420603e+02, 8.859868996256340e+02, 8.877687486806938e+02, 8.895213321398653e+02, 8.912457649565370e+02, - 8.929430960228397e+02, 8.946143134040823e+02, 8.962603490590532e+02, 8.978820831060226e+02, 8.994803476863232e+02, - 9.010559304705299e+02, 9.026095778464775e+02, 9.041419978233812e+02, 9.056538626820836e+02, 9.071458113977808e+02, - 9.086184518584356e+02, 9.100723628993467e+02, 9.115080961719987e+02, 9.129261778632140e+02, 9.143271102789028e+02, - 9.157113733050595e+02, 9.170794257573617e+02, 9.184317066294529e+02, 9.197686362489786e+02, 9.210906173494939e+02, - 9.223980360655230e+02, 9.236912628573501e+02, 9.249706533714403e+02, 9.262365492418428e+02, 9.274892788373954e+02, - 9.287291579591041e+02, 9.299564904916623e+02, 9.311715690127055e+02, 9.323746753630725e+02, 9.335660811810575e+02, - 9.347460484033631e+02, 9.359148297352348e+02, 9.370726690920396e+02, 9.382198020143657e+02, 9.393564560585340e+02, - 9.404828511642746e+02, 9.415992000011463e+02, 9.427057082951852e+02, 9.438025751371298e+02, 9.448899932734539e+02, - 9.459681493813665e+02, 9.470372243288432e+02, 9.480973934206320e+02, 9.491488266311843e+02, 9.501916888253102e+02, - 9.512261399673437e+02, 9.522523353195342e+02, 9.532704256311487e+02, 9.542805573190734e+02, 9.552828726359891e+02, - 9.562775098314069e+02, 9.572646033052281e+02, 9.582442837538858e+02, 9.592166783094843e+02, 9.601819101488558e+02, - 9.611401005475792e+02, 9.620913663075141e+02, 9.630358215618702e+02, 9.639735774833689e+02, 9.649047423890220e+02, - 9.658294218402451e+02, 9.667477187385299e+02, 9.676597334169351e+02, 9.685655637275923e+02, 9.694653051254541e+02, - 9.703590507484719e+02, 9.712468914943806e+02, 9.721289160942781e+02, 9.730052111831420e+02, 9.738758613674498e+02, - 9.747409492900443e+02, 9.756005556923727e+02, 9.764547594742349e+02, 9.773036377511587e+02, 9.781472659095107e+02, - 9.789857176741831e+02, 9.798190650992198e+02, 9.806473787094021e+02, 9.814707274840052e+02, 9.822891789183656e+02, - 9.831027990674879e+02, 9.839116525880347e+02, 9.847158027787654e+02, 9.855153116194912e+02, 9.863102398086253e+02, - 9.871006467993676e+02, 9.878865908346045e+02, 9.886681289805671e+02, 9.894453171593053e+02, 9.902182101800261e+02, - 9.909868617693431e+02, 9.917513246004892e+02, 9.925116503215280e+02, 9.932678895826081e+02, 9.940200920623009e+02, - 9.947683064930551e+02, 9.955125806858125e+02, 9.962529615283617e+02, 9.969894951118794e+02, 9.977222265951764e+02, - 9.984512003335331e+02, 9.991764598722348e+02, 9.998980479667700e+02, 1.000616006602397e+03, 1.001330377013085e+03, - 1.002041199699880e+03, 1.002748514448686e+03, 1.003452360347509e+03, 1.004152775803175e+03, 1.004849798557532e+03, - 1.005543465703172e+03, 1.006233813698678e+03, 1.006920878383415e+03, 1.007604694991892e+03, 1.008285298167690e+03, - 1.008962721976992e+03, 1.009636999921719e+03, 1.010308164952282e+03, 1.010976249479977e+03, 1.011641285389021e+03, - 1.012303304048245e+03, 1.012962336322468e+03, 1.013618412583541e+03, 1.014271562721096e+03, 1.014921816152985e+03, - 1.015569201835444e+03, 1.016213748272970e+03, 1.016855483527943e+03, 1.017494435229970e+03, 1.018130630584994e+03, - 1.018764096384156e+03, 1.019394859012413e+03, 1.020022944456947e+03, 1.020648378315332e+03, 1.021271185803506e+03, - 1.021891391763527e+03, 1.022509020671134e+03, 1.023124096643107e+03, 1.023736643444448e+03, 1.024346684495373e+03, - 1.024954242878135e+03, 1.025559341343668e+03, 1.026162002318071e+03, 1.026762247908929e+03, 1.027360099911479e+03, - 1.027955579814620e+03, 1.028548708806787e+03, 1.029139507781672e+03, 1.029727997343809e+03, 1.030314197814030e+03, - 1.030898129234785e+03, 1.031479811375338e+03, 1.032059263736839e+03, 1.032636505557279e+03, 1.033211555816324e+03, - 1.033784433240043e+03, 1.034355156305520e+03, 1.034923742735057e+03, 1.035490211524955e+03, 1.036054579938216e+03, - 1.036616865526263e+03, 1.037177085533333e+03, 1.037735257061145e+03, 1.038291396964539e+03, 1.038845521882697e+03, - 1.039397648242903e+03, 1.039947792264209e+03, 1.040495969961037e+03, 1.041042197146686e+03, 1.041586489436770e+03, - 1.042128862252588e+03, 1.042669330824406e+03, 1.043207910194682e+03, 1.043744615221219e+03, 1.044279460580244e+03, - 1.044812460769430e+03, 1.045343630110854e+03, 1.045872982753885e+03, 1.046400532678022e+03, 1.046926293695667e+03, - 1.047450279454839e+03, 1.047972503441839e+03, 1.048492978983853e+03, 1.049011719251509e+03, 1.049528737261372e+03, - 1.050044045878402e+03, 1.050557657818351e+03, 1.051069585650117e+03, 1.051579841798048e+03, 1.052088438544207e+03, - 1.052595388030581e+03, 1.053100702261261e+03, 1.053604393104564e+03, 1.054106472295122e+03, 1.054606951435933e+03, - 1.055105842000362e+03, 1.055603155334115e+03, 1.056098902657167e+03, 1.056593095065654e+03, 1.057085743533734e+03, - 1.057576858915406e+03, 1.058066451946302e+03, 1.058554533245436e+03, 1.059041113316928e+03, 1.059526202551693e+03, - 1.060009811229099e+03, 1.060491949518592e+03, 1.060972627481292e+03, 1.061451855071568e+03, 1.061929642138567e+03, - 1.062405998427729e+03, 1.062880933582271e+03, 1.063354457144642e+03, 1.063826578557953e+03, 1.064297307167385e+03, - 1.064766652221563e+03, 1.065234622873911e+03, 1.065701228183989e+03, 1.066166477118793e+03, 1.066630378554043e+03, - 1.067092941275443e+03, 1.067554173979922e+03, 1.068014085276850e+03, 1.068472683689235e+03, 1.068929977654901e+03, - 1.069385975527641e+03, 1.069840685578358e+03, 1.070294115996172e+03, 1.070746274889529e+03, 1.071197170287271e+03, - 1.071646810139702e+03, 1.072095202319626e+03, 1.072542354623377e+03, 1.072988274771826e+03, 1.073432970411367e+03, - 1.073876449114901e+03, 1.074318718382787e+03, 1.074759785643784e+03, 1.075199658255990e+03, 1.075638343507739e+03, - 1.076075848618507e+03, 1.076512180739795e+03, 1.076947346955992e+03, 1.077381354285234e+03, 1.077814209680243e+03, - 1.078245920029154e+03, 1.078676492156329e+03, 1.079105932823158e+03, 1.079534248728846e+03, 1.079961446511191e+03, - 1.080387532747345e+03, 1.080812513954568e+03, 1.081236396590965e+03, 1.081659187056216e+03, 1.082080891692291e+03, - 1.082501516784159e+03, 1.082921068560481e+03, 1.083339553194289e+03, 1.083756976803669e+03, 1.084173345452420e+03, - 1.084588665150703e+03, 1.085002941855689e+03, 1.085416181472193e+03, 1.085828389853295e+03, 1.086239572800955e+03, - 1.086649736066620e+03, 1.087058885351820e+03, 1.087467026308752e+03, 1.087874164540861e+03, 1.088280305603412e+03, - 1.088685455004049e+03, 1.089089618203348e+03, 1.089492800615362e+03, 1.089895007608163e+03, 1.090296244504362e+03, - 1.090696516581641e+03, 1.091095829073259e+03, 1.091494187168565e+03, 1.091891596013490e+03, 1.092288060711050e+03, - 1.092683586321815e+03, 1.093078177864407e+03, 1.093471840315953e+03, 1.093864578612563e+03, 1.094256397649782e+03, - 1.094647302283038e+03, 1.095037297328099e+03, 1.095426387561500e+03, 1.095814577720983e+03, 1.096201872505921e+03, - 1.096588276577740e+03, 1.096973794560334e+03, 1.097358431040471e+03, 1.097742190568208e+03, 1.098125077657272e+03, - 1.098507096785468e+03, 1.098888252395056e+03, 1.099268548893141e+03, 1.099647990652043e+03, 1.100026582009674e+03, - 1.100404327269903e+03, 1.100781230702918e+03, 1.101157296545579e+03, 1.101532529001777e+03, 1.101906932242780e+03, - 1.102280510407570e+03, 1.102653267603189e+03, 1.103025207905066e+03, 1.103396335357352e+03, 1.103766653973245e+03, - 1.104136167735306e+03, 1.104504880595778e+03, 1.104872796476900e+03, 1.105239919271214e+03, 1.105606252841872e+03, - 1.105971801022931e+03, 1.106336567619655e+03, 1.106700556408805e+03, 1.107063771138930e+03, 1.107426215530649e+03, - 1.107787893276936e+03, 1.108148808043397e+03, 1.108508963468545e+03, 1.108868363164069e+03, 1.109227010715106e+03, - 1.109584909680498e+03, 1.109942063593063e+03, 1.110298475959843e+03, 1.110654150262366e+03, 1.111009089956890e+03, - 1.111363298474659e+03, 1.111716779222145e+03, 1.112069535581284e+03, 1.112421570909726e+03, 1.112772888541063e+03, - 1.113123491785067e+03, 1.113473383927915e+03, 1.113822568232424e+03, 1.114171047938268e+03, 1.114518826262206e+03, - 1.114865906398300e+03, 1.115212291518128e+03, 1.115557984771005e+03, 1.115902989284187e+03, 1.116247308163085e+03, - 1.116590944491471e+03, 1.116933901331681e+03, 1.117276181724816e+03, 1.117617788690944e+03, 1.117958725229292e+03, - 1.118298994318447e+03, 1.118638598916542e+03, 1.118977541961450e+03, 1.119315826370972e+03, 1.119653455043017e+03, - 1.119990430855795e+03, 1.120326756667989e+03, 1.120662435318940e+03, 1.120997469628819e+03, 1.121331862398810e+03, - 1.121665616411274e+03, 1.121998734429927e+03, 1.122331219200003e+03, 1.122663073448430e+03, 1.122994299883984e+03, - 1.123324901197463e+03, 1.123654880061838e+03, 1.123984239132422e+03, 1.124312981047025e+03, 1.124641108426106e+03, - 1.124968623872934e+03, 1.125295529973735e+03, 1.125621829297844e+03, 1.125947524397857e+03, 1.126272617809776e+03, - 1.126597112053158e+03, 1.126921009631254e+03, 1.127244313031155e+03, 1.127567024723935e+03, 1.127889147164785e+03, - 1.128210682793157e+03, 1.128531634032897e+03, 1.128852003292382e+03, 1.129171792964650e+03, 1.129491005427537e+03, - 1.129809643043802e+03, 1.130127708161264e+03, 1.130445203112920e+03, 1.130762130217082e+03, 1.131078491777493e+03, - 1.131394290083455e+03, 1.131709527409953e+03, 1.132024206017771e+03, 1.132338328153619e+03, 1.132651896050245e+03, - 1.132964911926553e+03, 1.133277377987726e+03, 1.133589296425330e+03, 1.133900669417437e+03, 1.134211499128733e+03, - 1.134521787710628e+03, 1.134831537301372e+03, 1.135140750026154e+03, 1.135449427997222e+03, 1.135757573313979e+03, - 1.136065188063094e+03, 1.136372274318607e+03, 1.136678834142029e+03, 1.136984869582447e+03, 1.137290382676623e+03, - 1.137595375449096e+03, 1.137899849912283e+03, 1.138203808066571e+03, 1.138507251900421e+03, 1.138810183390460e+03, - 1.139112604501578e+03, 1.139414517187021e+03, 1.139715923388486e+03, 1.140016825036212e+03, 1.140317224049069e+03, - 1.140617122334657e+03, 1.140916521789383e+03, 1.141215424298563e+03, 1.141513831736498e+03, 1.141811745966569e+03 - }, - { - 1.802949606005701e+00, 5.507311374944670e+00, 9.293365589617125e+00, 1.316586333859079e+01, 1.713001650557099e+01, - 2.119156118394337e+01, 2.535683266000191e+01, 2.963285463893812e+01, 3.402744615770619e+01, 3.854935065135555e+01, - 4.320839303547432e+01, 4.801567258955310e+01, 5.298380211306726e+01, 5.812720764131053e+01, 6.346250851939712e+01, - 6.900900574742812e+01, 7.478931871238875e+01, 8.083022921097614e+01, 8.716382137619996e+01, 9.382905453392922e+01, - 1.008739876810596e+02, 1.083590176604777e+02, 1.163617568119723e+02, 1.249846891547300e+02, 1.343678119517787e+02, - 1.447108882606782e+02, 1.563160393367302e+02, 1.696792305158197e+02, 1.857235452502538e+02, 2.065973190359904e+02, - 7.588924632129282e+02, 7.667372959839546e+02, 7.736959082390420e+02, 7.799800450186664e+02, 7.857295505784103e+02, - 7.910425794825978e+02, 7.959911505257468e+02, 8.006299306308250e+02, 8.050015473097812e+02, 8.091399764521744e+02, - 8.130727961365870e+02, 8.168227389363965e+02, 8.204087925106738e+02, 8.238469993899859e+02, 8.271510506375374e+02, - 8.303327347339151e+02, 8.334022825592878e+02, 8.363686363772583e+02, 8.392396622843371e+02, 8.420223199638976e+02, - 8.447227997542524e+02, 8.473466343835626e+02, 8.498987908489154e+02, 8.523837465723221e+02, 8.548055529885371e+02, - 8.571678889991530e+02, 8.594741061901954e+02, 8.617272673054086e+02, 8.639301791588259e+02, 8.660854209330131e+02, - 8.681953686251559e+02, 8.702622162592425e+02, 8.722879943689366e+02, 8.742745861655906e+02, 8.762237417337147e+02, - 8.781370905381930e+02, 8.800161524804955e+02, 8.818623477029201e+02, 8.836770053085260e+02, 8.854613711386157e+02, - 8.872166147283491e+02, 8.889438355432820e+02, 8.906440685848814e+02, 8.923182894406451e+02, 8.939674188440410e+02, - 8.955923268006555e+02, 8.971938363294836e+02, 8.987727268619362e+02, 9.003297373357054e+02, 9.018655690160062e+02, - 9.033808880726966e+02, 9.048763279383670e+02, 9.063524914694952e+02, 9.078099529302140e+02, 9.092492598159815e+02, - 9.106709345325212e+02, 9.120754759436692e+02, 9.134633608003226e+02, 9.148350450613303e+02, 9.161909651160622e+02, - 9.175315389173534e+02, 9.188571670326598e+02, 9.201682336204359e+02, 9.214651073380884e+02, 9.227481421871950e+02, - 9.240176783011799e+02, 9.252740426800916e+02, 9.265175498767254e+02, 9.277485026379394e+02, 9.289671925046413e+02, - 9.301739003736291e+02, 9.313688970241847e+02, 9.325524436120440e+02, 9.337247921331768e+02, 9.348861858595600e+02, - 9.360368597489777e+02, 9.371770408306899e+02, 9.383069485686710e+02, 9.394267952039779e+02, 9.405367860776764e+02, - 9.416371199356548e+02, 9.427279892165260e+02, 9.438095803237553e+02, 9.448820738830415e+02, 9.459456449859014e+02, - 9.470004634203566e+02, 9.480466938895268e+02, 9.490844962189408e+02, 9.501140255547201e+02, 9.511354325509520e+02, - 9.521488635453246e+02, 9.531544607274585e+02, 9.541523622990874e+02, 9.551427026264414e+02, 9.561256123852903e+02, - 9.571012181150734e+02, 9.580696445046956e+02, 9.590310115059765e+02, 9.599854363440868e+02, 9.609330331826791e+02, - 9.618739132329370e+02, 9.628081848577186e+02, 9.637359536710719e+02, 9.646573226333633e+02, 9.655723921422441e+02, - 9.664812601196920e+02, 9.673840220953130e+02, 9.682807712861045e+02, 9.691715986728683e+02, 9.700565930734246e+02, - 9.709358412128021e+02, 9.718094277905537e+02, 9.726774355453343e+02, 9.735399453168733e+02, 9.743970361054792e+02, - 9.752487851291779e+02, 9.760952678938256e+02, 9.769365581835999e+02, 9.777727282074155e+02, 9.786038485822751e+02, - 9.794299883969971e+02, 9.802512152573717e+02, 9.810675953296342e+02, 9.818791933823226e+02, 9.826860728265964e+02, - 9.834882957550820e+02, 9.842859229793153e+02, 9.850790140658354e+02, 9.858676273709904e+02, 9.866518200745162e+02, - 9.874316482119319e+02, 9.882071667058043e+02, 9.889784293959354e+02, 9.897454890685133e+02, 9.905083974842631e+02, - 9.912672054056547e+02, 9.920219625972015e+02, 9.927727179566147e+02, 9.935195193779268e+02, 9.942624138848743e+02, - 9.950014476259554e+02, 9.957366658966689e+02, 9.964681131610462e+02, 9.971958330724781e+02, 9.979198684939016e+02, - 9.986402615173321e+02, 9.993570534827937e+02, 1.000070284996659e+03, 1.000779995949418e+03, 1.001486225532911e+03, - 1.002189012257021e+03, 1.002888393965876e+03, 1.003584407853555e+03, 1.004277090479327e+03, 1.004966477782434e+03, - 1.005652605096443e+03, 1.006335507163171e+03, 1.007015218146215e+03, 1.007691771644071e+03, 1.008365200702895e+03, - 1.009035537828892e+03, 1.009702815000345e+03, 1.010367063679318e+03, 1.011028314823017e+03, 1.011686598894844e+03, - 1.012341945875143e+03, 1.012994385271640e+03, 1.013643946129611e+03, 1.014290657041759e+03, 1.014934546157838e+03, - 1.015575641194005e+03, 1.016213969441927e+03, 1.016849557777650e+03, 1.017482432670219e+03, 1.018112620190092e+03, - 1.018740146017314e+03, 1.019365035449492e+03, 1.019987313409552e+03, 1.020607004453313e+03, 1.021224132776846e+03, - 1.021838722223665e+03, 1.022450796291724e+03, 1.023060378140242e+03, 1.023667490596358e+03, 1.024272156161618e+03, - 1.024874397018303e+03, 1.025474235035601e+03, 1.026071691775630e+03, 1.026666788499302e+03, 1.027259546172069e+03, - 1.027849985469504e+03, 1.028438126782765e+03, 1.029023990223924e+03, 1.029607595631170e+03, 1.030188962573883e+03, - 1.030768110357432e+03, 1.031345058054161e+03, 1.031919823891675e+03, 1.032492427446978e+03, 1.033062886521899e+03, - 1.033631219173196e+03, 1.034197443221219e+03, 1.034761576254120e+03, 1.035323635631972e+03, 1.035883638490796e+03, - 1.036441601746496e+03, 1.036997542098705e+03, 1.037551476034553e+03, 1.038103419832342e+03, 1.038653389565144e+03, - 1.039201401104329e+03, 1.039747470123000e+03, 1.040291612099372e+03, 1.040833842320058e+03, 1.041374175883305e+03, - 1.041912627702149e+03, 1.042449212507500e+03, 1.042983944851176e+03, 1.043516839108857e+03, 1.044047909482989e+03, - 1.044577170005622e+03, 1.045104634541187e+03, 1.045630316789226e+03, 1.046154230287051e+03, 1.046676388412360e+03, - 1.047196804385794e+03, 1.047715491273446e+03, 1.048232461989315e+03, 1.048747729297717e+03, 1.049261305815634e+03, - 1.049773204015039e+03, 1.050283436225149e+03, 1.050792014634651e+03, 1.051298951293883e+03, 1.051804258116961e+03, - 1.052307946883877e+03, 1.052810029242546e+03, 1.053310516710824e+03, 1.053809420678476e+03, 1.054306752409115e+03, - 1.054802523042100e+03, 1.055296743594395e+03, 1.055789424962400e+03, 1.056280577923744e+03, 1.056770213139037e+03, - 1.057258341153604e+03, 1.057744972399173e+03, 1.058230117195538e+03, 1.058713785752195e+03, 1.059195988169934e+03, - 1.059676734442420e+03, 1.060156034457731e+03, 1.060633897999872e+03, 1.061110334750267e+03, 1.061585354289214e+03, - 1.062058966097324e+03, 1.062531179556926e+03, 1.063002003953453e+03, 1.063471448476796e+03, 1.063939522222646e+03, - 1.064406234193796e+03, 1.064871593301437e+03, 1.065335608366417e+03, 1.065798288120488e+03, 1.066259641207525e+03, - 1.066719676184731e+03, 1.067178401523808e+03, 1.067635825612126e+03, 1.068091956753855e+03, 1.068546803171089e+03, - 1.069000373004944e+03, 1.069452674316643e+03, 1.069903715088579e+03, 1.070353503225359e+03, 1.070802046554834e+03, - 1.071249352829113e+03, 1.071695429725551e+03, 1.072140284847732e+03, 1.072583925726427e+03, 1.073026359820546e+03, - 1.073467594518060e+03, 1.073907637136922e+03, 1.074346494925965e+03, 1.074784175065788e+03, 1.075220684669628e+03, - 1.075656030784213e+03, 1.076090220390609e+03, 1.076523260405053e+03, 1.076955157679762e+03, 1.077385919003741e+03, - 1.077815551103572e+03, 1.078244060644195e+03, 1.078671454229672e+03, 1.079097738403938e+03, 1.079522919651551e+03, - 1.079947004398415e+03, 1.080369999012502e+03, 1.080791909804562e+03, 1.081212743028816e+03, 1.081632504883647e+03, - 1.082051201512272e+03, 1.082468839003408e+03, 1.082885423391932e+03, 1.083300960659520e+03, 1.083715456735285e+03, - 1.084128917496407e+03, 1.084541348768742e+03, 1.084952756327437e+03, 1.085363145897521e+03, 1.085772523154501e+03, - 1.086180893724939e+03, 1.086588263187025e+03, 1.086994637071140e+03, 1.087400020860410e+03, 1.087804419991256e+03, - 1.088207839853934e+03, 1.088610285793059e+03, 1.089011763108138e+03, 1.089412277054077e+03, 1.089811832841699e+03, - 1.090210435638236e+03, 1.090608090567828e+03, 1.091004802712010e+03, 1.091400577110190e+03, 1.091795418760121e+03, - 1.092189332618373e+03, 1.092582323600786e+03, 1.092974396582928e+03, 1.093365556400538e+03, 1.093755807849973e+03, - 1.094145155688635e+03, 1.094533604635403e+03, 1.094921159371059e+03, 1.095307824538696e+03, 1.095693604744137e+03, - 1.096078504556338e+03, 1.096462528507783e+03, 1.096845681094887e+03, 1.097227966778376e+03, 1.097609389983676e+03, - 1.097989955101289e+03, 1.098369666487170e+03, 1.098748528463087e+03, 1.099126545316992e+03, 1.099503721303377e+03, - 1.099880060643627e+03, 1.100255567526369e+03, 1.100630246107814e+03, 1.101004100512101e+03, 1.101377134831631e+03, - 1.101749353127394e+03, 1.102120759429298e+03, 1.102491357736493e+03, 1.102861152017687e+03, 1.103230146211456e+03, - 1.103598344226563e+03, 1.103965749942251e+03, 1.104332367208558e+03, 1.104698199846603e+03, 1.105063251648889e+03, - 1.105427526379587e+03, 1.105791027774825e+03, 1.106153759542972e+03, 1.106515725364915e+03, 1.106876928894335e+03, - 1.107237373757979e+03, 1.107597063555931e+03, 1.107956001861874e+03, 1.108314192223355e+03, 1.108671638162041e+03, - 1.109028343173977e+03, 1.109384310729836e+03, 1.109739544275169e+03, 1.110094047230654e+03, 1.110447822992332e+03, - 1.110800874931856e+03, 1.111153206396722e+03, 1.111504820710501e+03, 1.111855721173081e+03, 1.112205911060882e+03, - 1.112555393627091e+03, 1.112904172101883e+03, 1.113252249692640e+03, 1.113599629584165e+03, 1.113946314938909e+03, - 1.114292308897169e+03, 1.114637614577305e+03, 1.114982235075949e+03, 1.115326173468208e+03, 1.115669432807862e+03, - 1.116012016127571e+03, 1.116353926439070e+03, 1.116695166733361e+03, 1.117035739980913e+03, 1.117375649131846e+03, - 1.117714897116122e+03, 1.118053486843734e+03, 1.118391421204886e+03, 1.118728703070178e+03, 1.119065335290782e+03, - 1.119401320698627e+03, 1.119736662106566e+03, 1.120071362308555e+03, 1.120405424079827e+03, 1.120738850177054e+03, - 1.121071643338522e+03, 1.121403806284293e+03, 1.121735341716371e+03, 1.122066252318864e+03, 1.122396540758141e+03, - 1.122726209682997e+03, 1.123055261724804e+03, 1.123383699497668e+03, 1.123711525598582e+03, 1.124038742607577e+03, - 1.124365353087877e+03, 1.124691359586036e+03, 1.125016764632096e+03, 1.125341570739725e+03, 1.125665780406363e+03, - 1.125989396113362e+03, 1.126312420326128e+03, 1.126634855494260e+03, 1.126956704051683e+03, 1.127277968416789e+03, - 1.127598650992565e+03, 1.127918754166734e+03, 1.128238280311877e+03, 1.128557231785570e+03, 1.128875610930507e+03, - 1.129193420074632e+03, 1.129510661531258e+03, 1.129827337599201e+03, 1.130143450562893e+03, 1.130459002692509e+03, - 1.130773996244087e+03, 1.131088433459644e+03, 1.131402316567299e+03, 1.131715647781385e+03, 1.132028429302566e+03, - 1.132340663317951e+03, 1.132652352001206e+03, 1.132963497512668e+03, 1.133274101999453e+03, 1.133584167595568e+03, - 1.133893696422015e+03, 1.134202690586904e+03, 1.134511152185552e+03, 1.134819083300596e+03, 1.135126486002089e+03, - 1.135433362347606e+03, 1.135739714382350e+03, 1.136045544139245e+03, 1.136350853639038e+03, 1.136655644890404e+03, - 1.136959919890032e+03, 1.137263680622733e+03, 1.137566929061527e+03, 1.137869667167744e+03, 1.138171896891111e+03, - 1.138473620169852e+03, 1.138774838930776e+03, 1.139075555089366e+03, 1.139375770549873e+03, 1.139675487205403e+03 - }, - { - 1.796631013169837e+00, 5.487328396771806e+00, 9.258424658445046e+00, 1.311452586346833e+01, 1.706067744330778e+01, - 2.110242356299819e+01, 2.524587710756039e+01, 2.949780269134198e+01, 3.386571577142732e+01, 3.835800184003740e+01, - 4.298406088351287e+01, 4.775448395350730e+01, 5.268127099616643e+01, 5.777810232377322e+01, 6.306068074879938e+01, - 6.854716815554468e+01, 7.425875032730765e+01, 8.022037911258907e+01, 8.646176480327708e+01, 9.301872972748357e+01, - 9.993509716187536e+01, 1.072653980141988e+02, 1.150788719189642e+02, 1.234656052842210e+02, 1.325463822318869e+02, - 1.424894055847202e+02, 1.535407933349483e+02, 1.660857969141240e+02, 1.807895760401114e+02, 1.989974918507586e+02, - 7.401717920801317e+02, 7.500793249395105e+02, 7.585204649240183e+02, 7.659396264169146e+02, 7.725954042471931e+02, - 7.786542504014960e+02, 7.842307823638457e+02, 7.894078584351200e+02, 7.942476308748182e+02, 7.987980961057967e+02, - 8.030972021839211e+02, 8.071755429580018e+02, 8.110581913329490e+02, 8.147659855374395e+02, 8.183164553622611e+02, - 8.217245042128776e+02, 8.250029212073373e+02, 8.281627722876167e+02, 8.312137034770950e+02, 8.341641792094712e+02, - 8.370216719104498e+02, 8.397928144586180e+02, 8.424835240144104e+02, 8.450991035060649e+02, 8.476443254937265e+02, - 8.501235019990894e+02, 8.525405430570637e+02, 8.548990061291433e+02, 8.572021380553524e+02, 8.594529108703987e+02, - 8.616540525406524e+02, 8.638080734705501e+02, 8.659172894648582e+02, 8.679838417056782e+02, 8.700097142021871e+02, - 8.719967490905418e+02, 8.739466600967640e+02, 8.758610444231897e+02, 8.777413932766761e+02, 8.795891012220454e+02, - 8.814054745158161e+02, 8.831917385517360e+02, 8.849490445301460e+02, 8.866784754469608e+02, 8.883810514844469e+02, - 8.900577348745884e+02, 8.917094342961481e+02, 8.933370088584296e+02, 8.949412717177785e+02, 8.965229933669684e+02, - 8.980829046325614e+02, 8.996216994110034e+02, 9.011400371704607e+02, 9.026385452422234e+02, 9.041178209226665e+02, - 9.055784334043824e+02, 9.070209255529638e+02, 9.084458155440967e+02, 9.098535983740153e+02, 9.112447472549592e+02, - 9.126197149060424e+02, 9.139789347488544e+02, 9.153228220161616e+02, 9.166517747812137e+02, 9.179661749144321e+02, - 9.192663889735641e+02, 9.205527690328311e+02, 9.218256534560314e+02, 9.230853676181207e+02, 9.243322245793570e+02, - 9.255665257157275e+02, 9.267885613090406e+02, 9.279986110997476e+02, 9.291969448053228e+02, 9.303838226067351e+02, - 9.315594956053791e+02, 9.327242062525901e+02, 9.338781887537127e+02, 9.350216694485268e+02, 9.361548671696745e+02, - 9.372779935806146e+02, 9.383912534944999e+02, 9.394948451752596e+02, 9.405889606220869e+02, 9.416737858384084e+02, - 9.427495010863594e+02, 9.438162811276973e+02, 9.448742954520161e+02, 9.459237084933035e+02, 9.469646798371923e+02, - 9.479973644149638e+02, 9.490219126872854e+02, 9.500384708197935e+02, 9.510471808500059e+02, 9.520481808460701e+02, - 9.530416050578235e+02, 9.540275834105041e+02, 9.550062440433321e+02, 9.559777100796402e+02, 9.569421018610075e+02, - 9.578995365651907e+02, 9.588501283195050e+02, 9.597939883090771e+02, 9.607312248802639e+02, 9.616619436394724e+02, - 9.625862475476548e+02, 9.635042370106834e+02, 9.644160099658368e+02, 9.653216619645840e+02, 9.662212862518736e+02, - 9.671149738420843e+02, 9.680028135918342e+02, 9.688848922697742e+02, 9.697612946235356e+02, 9.706321034439705e+02, - 9.714973996268079e+02, 9.723572622318520e+02, 9.732117685398557e+02, 9.740609941212464e+02, 9.749050128309433e+02, - 9.757438969475328e+02, 9.765777171612019e+02, 9.774065426360349e+02, 9.782304410549854e+02, 9.790494786631747e+02, - 9.798637203095852e+02, 9.806732294872294e+02, 9.814780683718535e+02, 9.822782978592437e+02, 9.830739776011977e+02, - 9.838651660402149e+02, 9.846519204429624e+02, 9.854342969325702e+02, 9.862123505198024e+02, 9.869861351331543e+02, - 9.877557036479193e+02, 9.885211078897005e+02, 9.892823987615056e+02, 9.900396261173207e+02, 9.907928388911184e+02, - 9.915420850949547e+02, 9.922874118426738e+02, 9.930288653728448e+02, 9.937664910709550e+02, 9.945003334908885e+02, - 9.952304363757258e+02, 9.959568426778760e+02, 9.966795945785855e+02, 9.973987335068249e+02, 9.981143001576061e+02, - 9.988263345097160e+02, 9.995348758429218e+02, 1.000239962754645e+03, 1.000941633176136e+03, 1.001639924388160e+03, - 1.002334873036211e+03, 1.003026515145289e+03, 1.003714886134223e+03, 1.004400020829592e+03, 1.005081953479223e+03, - 1.005760717765326e+03, 1.006436346817213e+03, 1.007108873223694e+03, 1.007778329045098e+03, 1.008444745824954e+03, - 1.009108154601360e+03, 1.009768585918018e+03, 1.010426069834979e+03, 1.011080635939080e+03, 1.011732313354102e+03, - 1.012381130750651e+03, 1.013027116355767e+03, 1.013670297962285e+03, 1.014310702937932e+03, 1.014948358234196e+03, - 1.015583290394953e+03, 1.016215525564862e+03, 1.016845089497560e+03, 1.017472007563619e+03, 1.018096304758316e+03, - 1.018718005709200e+03, 1.019337134683457e+03, 1.019953715595100e+03, 1.020567772011965e+03, 1.021179327162545e+03, - 1.021788403942639e+03, 1.022395024921848e+03, 1.022999212349903e+03, 1.023600988162836e+03, 1.024200373989013e+03, - 1.024797391154998e+03, 1.025392060716835e+03, 1.025984403362364e+03, 1.026574439573342e+03, 1.027162189525140e+03, - 1.027747673118662e+03, 1.028330909985432e+03, 1.028911918978536e+03, 1.029490720216181e+03, 1.030067332054090e+03, - 1.030641773094760e+03, 1.031214061695008e+03, 1.031784215970373e+03, 1.032352253799441e+03, 1.032918192828060e+03, - 1.033482050473466e+03, 1.034043843928303e+03, 1.034603590164576e+03, 1.035161305937495e+03, 1.035717007789245e+03, - 1.036270712052671e+03, 1.036822434854882e+03, 1.037372192120774e+03, 1.037919999576480e+03, 1.038465872752746e+03, - 1.039009826988230e+03, 1.039551877432732e+03, 1.040092039050360e+03, 1.040630326622623e+03, 1.041166754751459e+03, - 1.041701337862205e+03, 1.042234090206497e+03, 1.042765025865117e+03, 1.043294158750776e+03, 1.043821502610841e+03, - 1.044347071030006e+03, 1.044870877432909e+03, 1.045392935086697e+03, 1.045913257103531e+03, 1.046431856443057e+03, - 1.046948745914806e+03, 1.047463938180563e+03, 1.047977445756686e+03, 1.048489281016364e+03, 1.048999456191854e+03, - 1.049507983376658e+03, 1.050014874527657e+03, 1.050520141467218e+03, 1.051023795885236e+03, 1.051525849341166e+03, - 1.052026313265987e+03, 1.052525198964147e+03, 1.053022517615466e+03, 1.053518280277005e+03, 1.054012497884886e+03, - 1.054505181256102e+03, 1.054996341090269e+03, 1.055485987971360e+03, 1.055974132369405e+03, 1.056460784642148e+03, - 1.056945955036692e+03, 1.057429653691097e+03, 1.057911890635958e+03, 1.058392675795951e+03, 1.058872018991351e+03, - 1.059349929939524e+03, 1.059826418256390e+03, 1.060301493457862e+03, 1.060775164961253e+03, 1.061247442086671e+03, - 1.061718334058370e+03, 1.062187850006103e+03, 1.062655998966417e+03, 1.063122789883960e+03, 1.063588231612743e+03, - 1.064052332917385e+03, 1.064515102474340e+03, 1.064976548873102e+03, 1.065436680617381e+03, 1.065895506126273e+03, - 1.066353033735399e+03, 1.066809271698025e+03, 1.067264228186172e+03, 1.067717911291696e+03, 1.068170329027357e+03, - 1.068621489327864e+03, 1.069071400050914e+03, 1.069520068978199e+03, 1.069967503816405e+03, 1.070413712198193e+03, - 1.070858701683163e+03, 1.071302479758805e+03, 1.071745053841426e+03, 1.072186431277074e+03, 1.072626619342434e+03, - 1.073065625245724e+03, 1.073503456127562e+03, 1.073940119061829e+03, 1.074375621056514e+03, 1.074809969054543e+03, - 1.075243169934604e+03, 1.075675230511948e+03, 1.076106157539184e+03, 1.076535957707060e+03, 1.076964637645228e+03, - 1.077392203923006e+03, 1.077818663050116e+03, 1.078244021477422e+03, 1.078668285597649e+03, 1.079091461746090e+03, - 1.079513556201313e+03, 1.079934575185844e+03, 1.080354524866844e+03, 1.080773411356780e+03, 1.081191240714080e+03, - 1.081608018943784e+03, 1.082023751998174e+03, 1.082438445777411e+03, 1.082852106130149e+03, 1.083264738854143e+03, - 1.083676349696852e+03, 1.084086944356027e+03, 1.084496528480299e+03, 1.084905107669746e+03, 1.085312687476463e+03, - 1.085719273405118e+03, 1.086124870913500e+03, 1.086529485413058e+03, 1.086933122269442e+03, 1.087335786803016e+03, - 1.087737484289386e+03, 1.088138219959905e+03, 1.088537999002176e+03, 1.088936826560549e+03, 1.089334707736612e+03, - 1.089731647589664e+03, 1.090127651137199e+03, 1.090522723355369e+03, 1.090916869179447e+03, 1.091310093504279e+03, - 1.091702401184736e+03, 1.092093797036155e+03, 1.092484285834776e+03, 1.092873872318166e+03, 1.093262561185652e+03, - 1.093650357098734e+03, 1.094037264681495e+03, 1.094423288521012e+03, 1.094808433167758e+03, 1.095192703135990e+03, - 1.095576102904148e+03, 1.095958636915233e+03, 1.096340309577194e+03, 1.096721125263293e+03, 1.097101088312483e+03, - 1.097480203029767e+03, 1.097858473686561e+03, 1.098235904521046e+03, 1.098612499738519e+03, 1.098988263511741e+03, - 1.099363199981273e+03, 1.099737313255815e+03, 1.100110607412540e+03, 1.100483086497415e+03, 1.100854754525534e+03, - 1.101225615481426e+03, 1.101595673319377e+03, 1.101964931963739e+03, 1.102333395309237e+03, 1.102701067221271e+03, - 1.103067951536214e+03, 1.103434052061709e+03, 1.103799372576959e+03, 1.104163916833015e+03, 1.104527688553060e+03, - 1.104890691432686e+03, 1.105252929140176e+03, 1.105614405316774e+03, 1.105975123576955e+03, 1.106335087508691e+03, - 1.106694300673713e+03, 1.107052766607776e+03, 1.107410488820907e+03, 1.107767470797666e+03, 1.108123715997391e+03, - 1.108479227854447e+03, 1.108834009778469e+03, 1.109188065154605e+03, 1.109541397343752e+03, 1.109894009682790e+03, - 1.110245905484817e+03, 1.110597088039378e+03, 1.110947560612690e+03, 1.111297326447863e+03, 1.111646388765130e+03, - 1.111994750762056e+03, 1.112342415613757e+03, 1.112689386473118e+03, 1.113035666470996e+03, 1.113381258716431e+03, - 1.113726166296855e+03, 1.114070392278291e+03, 1.114413939705555e+03, 1.114756811602454e+03, 1.115099010971985e+03, - 1.115440540796522e+03, 1.115781404038017e+03, 1.116121603638181e+03, 1.116461142518673e+03, 1.116800023581290e+03, - 1.117138249708142e+03, 1.117475823761837e+03, 1.117812748585662e+03, 1.118149027003750e+03, 1.118484661821266e+03, - 1.118819655824572e+03, 1.119154011781397e+03, 1.119487732441013e+03, 1.119820820534391e+03, 1.120153278774373e+03, - 1.120485109855836e+03, 1.120816316455843e+03, 1.121146901233814e+03, 1.121476866831678e+03, 1.121806215874025e+03, - 1.122134950968268e+03, 1.122463074704787e+03, 1.122790589657085e+03, 1.123117498381934e+03, 1.123443803419524e+03, - 1.123769507293604e+03, 1.124094612511632e+03, 1.124419121564914e+03, 1.124743036928744e+03, 1.125066361062544e+03, - 1.125389096410004e+03, 1.125711245399210e+03, 1.126032810442791e+03, 1.126353793938042e+03, 1.126674198267061e+03, - 1.126994025796875e+03, 1.127313278879573e+03, 1.127631959852432e+03, 1.127950071038042e+03, 1.128267614744434e+03, - 1.128584593265198e+03, 1.128901008879610e+03, 1.129216863852750e+03, 1.129532160435625e+03, 1.129846900865281e+03, - 1.130161087364927e+03, 1.130474722144045e+03, 1.130787807398510e+03, 1.131100345310699e+03, 1.131412338049602e+03, - 1.131723787770938e+03, 1.132034696617263e+03, 1.132345066718077e+03, 1.132654900189931e+03, 1.132964199136538e+03, - 1.133272965648871e+03, 1.133581201805275e+03, 1.133888909671565e+03, 1.134196091301131e+03, 1.134502748735035e+03, - 1.134808884002117e+03, 1.135114499119086e+03, 1.135419596090628e+03, 1.135724176909494e+03, 1.136028243556601e+03, - 1.136331798001123e+03, 1.136634842200592e+03, 1.136937378100984e+03, 1.137239407636813e+03, 1.137540932731226e+03 - }, - { - 1.790357353794845e+00, 5.467497762786267e+00, 9.223769064426595e+00, 1.306363720639769e+01, 1.699198714129444e+01, - 2.101417841717759e+01, 2.513611051805647e+01, 2.936430011599800e+01, 3.370597299247665e+01, 3.816917416826316e+01, - 4.276290083525803e+01, 4.749726411510587e+01, 5.238368764053718e+01, 5.743515370830182e+01, 6.266651165759374e+01, - 6.809486876255168e+01, 7.374009221247701e+01, 7.962546319280096e+01, 8.577854319760696e+01, 9.223234286702719e+01, - 9.902693266639693e+01, 1.062117171566220e+02, 1.138487387807767e+02, 1.220176409660805e+02, 1.308234309965059e+02, - 1.404092372126969e+02, 1.509786193955294e+02, 1.628378760678107e+02, 1.764856437045852e+02, 1.928360274620348e+02, - 2.139463080793848e+02, 7.302618034821361e+02, 7.410913461504847e+02, 7.501805456121971e+02, 7.580916656664427e+02, - 7.651397216991020e+02, 7.715222822428424e+02, 7.773727951899780e+02, 7.827863008478756e+02, 7.878332439408063e+02, - 7.925674982878143e+02, 7.970313171255708e+02, 8.012585355114339e+02, 8.052767237662958e+02, 8.091086829823822e+02, - 8.127735123508019e+02, 8.162873889646755e+02, 8.196641492696912e+02, 8.229157304249655e+02, 8.260525106571039e+02, - 8.290835754394329e+02, 8.320169283013951e+02, 8.348596596928119e+02, 8.376180836474199e+02, 8.402978494259564e+02, - 8.429040335026779e+02, 8.454412159527121e+02, 8.479135443448974e+02, 8.503247875409636e+02, 8.526783812758913e+02, - 8.549774669968315e+02, 8.572249251346024e+02, 8.594234037480176e+02, 8.615753432996540e+02, 8.636829981792456e+02, - 8.657484554784927e+02, 8.677736514316069e+02, 8.697603858643236e+02, 8.717103349363485e+02, 8.736250624154349e+02, - 8.755060296830901e+02, 8.773546046406682e+02, 8.791720696587238e+02, 8.809596286912819e+02, 8.827184136587832e+02, - 8.844494901887210e+02, 8.861538627904781e+02, 8.878324795304097e+02, 8.894862362643362e+02, 8.911159804770925e+02, - 8.927225147723631e+02, 8.943066000505495e+02, 8.958689584077581e+02, 8.974102757848981e+02, 8.989312043924674e+02, - 9.004323649335408e+02, 9.019143486449003e+02, 9.033777191739661e+02, 9.048230143071994e+02, 9.062507475639479e+02, - 9.076614096681658e+02, 9.090554699091354e+02, 9.104333774011220e+02, 9.117955622509065e+02, 9.131424366411856e+02, - 9.144743958370591e+02, 9.157918191220987e+02, 9.170950706698536e+02, 9.183845003560978e+02, 9.196604445166174e+02, - 9.209232266548738e+02, 9.221731581035018e+02, 9.234105386432302e+02, 9.246356570824803e+02, 9.258487918006288e+02, - 9.270502112576454e+02, 9.282401744725927e+02, 9.294189314732459e+02, 9.305867237189240e+02, 9.317437844984292e+02, - 9.328903393048469e+02, 9.340266061888083e+02, 9.351527960916999e+02, 9.362691131601741e+02, 9.373757550432146e+02, - 9.384729131729149e+02, 9.395607730300400e+02, 9.406395143953514e+02, 9.417093116488471e+02, 9.427703336898326e+02, - 9.438227447650812e+02, 9.448667040576076e+02, 9.459023661849387e+02, 9.469298813207234e+02, 9.479493953684940e+02, - 9.489610501268850e+02, 9.499649830460452e+02, 9.509613286585550e+02, 9.519502173868092e+02, 9.529317759444248e+02, - 9.539061278109959e+02, 9.548733931988289e+02, 9.558336891707286e+02, 9.567871297524110e+02, 9.577338260398864e+02, - 9.586738863020373e+02, 9.596074160786783e+02, 9.605345182743234e+02, 9.614552932478944e+02, 9.623698388985713e+02, - 9.632782507479961e+02, 9.641806220190105e+02, 9.650770437110942e+02, 9.659676046726906e+02, 9.668523916705514e+02, - 9.677314894562701e+02, 9.686049808301171e+02, 9.694729467023319e+02, 9.703354661519778e+02, 9.711926164977807e+02, - 9.720444732939287e+02, 9.728911104722634e+02, 9.737326003309943e+02, 9.745690135988144e+02, 9.754004194813895e+02, - 9.762268857061091e+02, 9.770484785651770e+02, 9.778652629571114e+02, 9.786773024267310e+02, 9.794846592036823e+02, - 9.802873942395875e+02, 9.810855672438646e+02, 9.818792367182695e+02, 9.826684599902361e+02, 9.834532932450387e+02, - 9.842337915320074e+02, 9.850100088956282e+02, 9.857819982500629e+02, 9.865498115120344e+02, 9.873134996011172e+02, - 9.880731124658772e+02, 9.888286991091350e+02, 9.895803076124012e+02, 9.903279851595108e+02, 9.910717780594911e+02, - 9.918117317686898e+02, 9.925478909121981e+02, 9.932802993045868e+02, 9.940089999699928e+02, 9.947340351615723e+02, - 9.954554463803464e+02, 9.961732743934667e+02, 9.968875592519179e+02, 9.975983403076767e+02, 9.983056562303527e+02, - 9.990095450233284e+02, 9.997100440394133e+02, 1.000407189996031e+03, 1.001101018989964e+03, 1.001791566511654e+03, - 1.002478867459093e+03, 1.003162956151312e+03, 1.003843866341474e+03, 1.004521631229599e+03, 1.005196283474917e+03, - 1.005867855207884e+03, 1.006536378041849e+03, 1.007201883084401e+03, 1.007864400948400e+03, 1.008523961762696e+03, - 1.009180595182565e+03, 1.009834330399854e+03, 1.010485196152846e+03, 1.011133220735871e+03, 1.011778432008645e+03, - 1.012420857405373e+03, 1.013060523943599e+03, 1.013697458232832e+03, 1.014331686482940e+03, 1.014963234512328e+03, - 1.015592127755902e+03, 1.016218391272830e+03, 1.016842049754101e+03, 1.017463127529896e+03, 1.018081648576763e+03, - 1.018697636524627e+03, 1.019311114663605e+03, 1.019922105975289e+03, 1.020530633039634e+03, 1.021136718192396e+03, - 1.021740383429396e+03, 1.022341650438311e+03, 1.022940540604567e+03, 1.023537075017060e+03, 1.024131274473767e+03, - 1.024723159487196e+03, 1.025312749791936e+03, 1.025900066323758e+03, 1.026485128289402e+03, 1.027067955111608e+03, - 1.027648565953093e+03, 1.028226979721287e+03, 1.028803215072960e+03, 1.029377290418742e+03, 1.029949223927543e+03, - 1.030519033530871e+03, 1.031086736927049e+03, 1.031652351585345e+03, 1.032215894749997e+03, 1.032777383444166e+03, - 1.033336834473779e+03, 1.033894264431311e+03, 1.034449689699462e+03, 1.035003126454771e+03, 1.035554590671138e+03, - 1.036104098123281e+03, 1.036651664390109e+03, 1.037197304858029e+03, 1.037741034724177e+03, 1.038282868999588e+03, - 1.038822822512289e+03, 1.039360909910335e+03, 1.039897145664776e+03, 1.040431544072569e+03, 1.040964119259417e+03, - 1.041494885182564e+03, 1.042023855633519e+03, 1.042551044240739e+03, 1.043076464472239e+03, 1.043600129638164e+03, - 1.044122052893302e+03, 1.044642247239548e+03, 1.045160725528320e+03, 1.045677500462920e+03, 1.046192584600859e+03, - 1.046705990356126e+03, 1.047217730001419e+03, 1.047727815670324e+03, 1.048236259359465e+03, 1.048743072930597e+03, - 1.049248268112667e+03, 1.049751856503834e+03, 1.050253849573450e+03, 1.050754258664002e+03, 1.051253094993018e+03, - 1.051750369654932e+03, 1.052246093622927e+03, 1.052740277750724e+03, 1.053232932774356e+03, 1.053724069313894e+03, - 1.054213697875153e+03, 1.054701828851355e+03, 1.055188472524773e+03, 1.055673639068333e+03, 1.056157338547196e+03, - 1.056639580920305e+03, 1.057120376041908e+03, 1.057599733663053e+03, 1.058077663433050e+03, 1.058554174900918e+03, - 1.059029277516793e+03, 1.059502980633321e+03, 1.059975293507021e+03, 1.060446225299628e+03, 1.060915785079410e+03, - 1.061383981822455e+03, 1.061850824413952e+03, 1.062316321649432e+03, 1.062780482235999e+03, 1.063243314793537e+03, - 1.063704827855890e+03, 1.064165029872032e+03, 1.064623929207211e+03, 1.065081534144072e+03, 1.065537852883764e+03, - 1.065992893547030e+03, 1.066446664175273e+03, 1.066899172731608e+03, 1.067350427101897e+03, 1.067800435095764e+03, - 1.068249204447593e+03, 1.068696742817513e+03, 1.069143057792367e+03, 1.069588156886656e+03, 1.070032047543480e+03, - 1.070474737135455e+03, 1.070916232965619e+03, 1.071356542268319e+03, 1.071795672210094e+03, 1.072233629890530e+03, - 1.072670422343110e+03, 1.073106056536046e+03, 1.073540539373108e+03, 1.073973877694419e+03, 1.074406078277264e+03, - 1.074837147836860e+03, 1.075267093027134e+03, 1.075695920441482e+03, 1.076123636613508e+03, 1.076550248017765e+03, - 1.076975761070477e+03, 1.077400182130250e+03, 1.077823517498771e+03, 1.078245773421506e+03, 1.078666956088371e+03, - 1.079087071634404e+03, 1.079506126140427e+03, 1.079924125633694e+03, 1.080341076088528e+03, 1.080756983426951e+03, - 1.081171853519309e+03, 1.081585692184875e+03, 1.081998505192460e+03, 1.082410298260998e+03, 1.082821077060134e+03, - 1.083230847210798e+03, 1.083639614285773e+03, 1.084047383810253e+03, 1.084454161262393e+03, 1.084859952073853e+03, - 1.085264761630331e+03, 1.085668595272089e+03, 1.086071458294474e+03, 1.086473355948429e+03, 1.086874293440996e+03, - 1.087274275935815e+03, 1.087673308553613e+03, 1.088071396372686e+03, 1.088468544429375e+03, 1.088864757718539e+03, - 1.089260041194012e+03, 1.089654399769063e+03, 1.090047838316847e+03, 1.090440361670842e+03, 1.090831974625293e+03, - 1.091222681935642e+03, 1.091612488318949e+03, 1.092001398454316e+03, 1.092389416983299e+03, 1.092776548510313e+03, - 1.093162797603041e+03, 1.093548168792823e+03, 1.093932666575053e+03, 1.094316295409562e+03, 1.094699059720999e+03, - 1.095080963899212e+03, 1.095462012299608e+03, 1.095842209243526e+03, 1.096221559018600e+03, 1.096600065879108e+03, - 1.096977734046326e+03, 1.097354567708876e+03, 1.097730571023067e+03, 1.098105748113230e+03, 1.098480103072056e+03, - 1.098853639960917e+03, 1.099226362810201e+03, 1.099598275619620e+03, 1.099969382358533e+03, 1.100339686966257e+03, - 1.100709193352375e+03, 1.101077905397037e+03, 1.101445826951261e+03, 1.101812961837230e+03, 1.102179313848584e+03, - 1.102544886750708e+03, 1.102909684281015e+03, 1.103273710149231e+03, 1.103636968037667e+03, 1.103999461601501e+03, - 1.104361194469039e+03, 1.104722170241989e+03, 1.105082392495725e+03, 1.105441864779543e+03, 1.105800590616919e+03, - 1.106158573505769e+03, 1.106515816918693e+03, 1.106872324303225e+03, 1.107228099082079e+03, 1.107583144653390e+03, - 1.107937464390952e+03, 1.108291061644456e+03, 1.108643939739718e+03, 1.108996101978918e+03, 1.109347551640815e+03, - 1.109698291980983e+03, 1.110048326232028e+03, 1.110397657603806e+03, 1.110746289283641e+03, 1.111094224436538e+03, - 1.111441466205398e+03, 1.111788017711221e+03, 1.112133882053316e+03, 1.112479062309505e+03, 1.112823561536323e+03, - 1.113167382769219e+03, 1.113510529022749e+03, 1.113853003290775e+03, 1.114194808546654e+03, 1.114535947743431e+03, - 1.114876423814021e+03, 1.115216239671401e+03, 1.115555398208788e+03, 1.115893902299828e+03, 1.116231754798761e+03, - 1.116568958540616e+03, 1.116905516341370e+03, 1.117241430998131e+03, 1.117576705289306e+03, 1.117911341974766e+03, - 1.118245343796024e+03, 1.118578713476387e+03, 1.118911453721128e+03, 1.119243567217644e+03, 1.119575056635620e+03, - 1.119905924627179e+03, 1.120236173827044e+03, 1.120565806852696e+03, 1.120894826304516e+03, 1.121223234765943e+03, - 1.121551034803622e+03, 1.121878228967553e+03, 1.122204819791235e+03, 1.122530809791809e+03, 1.122856201470205e+03, - 1.123180997311279e+03, 1.123505199783954e+03, 1.123828811341361e+03, 1.124151834420970e+03, 1.124474271444731e+03, - 1.124796124819201e+03, 1.125117396935685e+03, 1.125438090170358e+03, 1.125758206884398e+03, 1.126077749424117e+03, - 1.126396720121081e+03, 1.126715121292240e+03, 1.127032955240053e+03, 1.127350224252604e+03, 1.127666930603730e+03, - 1.127983076553138e+03, 1.128298664346525e+03, 1.128613696215691e+03, 1.128928174378662e+03, 1.129242101039801e+03, - 1.129555478389921e+03, 1.129868308606400e+03, 1.130180593853290e+03, 1.130492336281429e+03, 1.130803538028552e+03, - 1.131114201219392e+03, 1.131424327965794e+03, 1.131733920366817e+03, 1.132042980508841e+03, 1.132351510465665e+03, - 1.132659512298619e+03, 1.132966988056656e+03, 1.133273939776459e+03, 1.133580369482533e+03, 1.133886279187314e+03, - 1.134191670891256e+03, 1.134496546582933e+03, 1.134800908239132e+03, 1.135104757824952e+03, 1.135408097293888e+03 - }, - { - 1.784128137737149e+00, 5.447817612638968e+00, 9.189394945402508e+00, 1.301319068276671e+01, 1.692393502464531e+01, - 2.092680988894299e+01, 2.502750993056841e+01, 2.923231445913096e+01, 3.354817272437052e+01, 3.798280572234996e+01, - 4.254482859230704e+01, 4.724389891085903e+01, 5.209089788109560e+01, 5.709815375699551e+01, 6.227972013831053e+01, - 6.765172647978235e+01, 7.323282500898418e+01, 7.904476841139990e+01, 8.511316805641117e+01, 9.146850649594452e+01, - 9.814751624617556e+01, 1.051950999732374e+02, 1.126670750756091e+02, 1.206342179476226e+02, 1.291884430403934e+02, - 1.384526672002441e+02, 1.485974351486633e+02, 1.598709471374148e+02, 1.726584929797579e+02, 1.876161751446942e+02, - 2.060368813032386e+02, 2.312793329273013e+02, 7.200888616262192e+02, 7.319416134778551e+02, 7.417307879594317e+02, - 7.501642780614142e+02, 7.576240206252805e+02, 7.643434817359722e+02, 7.704773843907412e+02, 7.761343065469871e+02, - 7.813937843614359e+02, 7.863160631987325e+02, 7.909480194802480e+02, 7.953269411402308e+02, 7.994830410066404e+02, - 8.034411851215641e+02, 8.072221156180166e+02, 8.108433374080104e+02, 8.143197749061239e+02, 8.176642675658613e+02, - 8.208879499877705e+02, 8.240005477818443e+02, 8.270106108907581e+02, 8.299256997745460e+02, 8.327525355724613e+02, - 8.354971223904631e+02, 8.381648477726766e+02, 8.407605659196262e+02, 8.432886671306239e+02, 8.457531361495375e+02, - 8.481576014990246e+02, 8.505053774411418e+02, 8.527994998621625e+02, 8.550427571182039e+02, 8.572377166759447e+02, - 8.593867482245221e+02, 8.614920438101761e+02, 8.635556354463706e+02, 8.655794105731588e+02, 8.675651256760794e+02, - 8.695144183234750e+02, 8.714288178393106e+02, 8.733097547943360e+02, 8.751585694703192e+02, 8.769765194287359e+02, - 8.787647862960223e+02, 8.805244818613579e+02, 8.822566535693835e+02, 8.839622894789543e+02, 8.856423227493690e+02, - 8.872976357074052e+02, 8.889290635415546e+02, 8.905373976639439e+02, 8.921233887753576e+02, 8.936877496644477e+02, - 8.952311577684477e+02, 8.967542575194909e+02, 8.982576624978193e+02, 8.997419574107325e+02, 9.012076999140090e+02, - 9.026554222906925e+02, 9.040856330004789e+02, 9.054988181115656e+02, 9.068954426255369e+02, 9.082759517047912e+02, - 9.096407718110082e+02, 9.109903117623311e+02, 9.123249637161641e+02, 9.136451040837921e+02, 9.149510943824620e+02, - 9.162432820300033e+02, 9.175220010866001e+02, 9.187875729479002e+02, 9.200403069932519e+02, 9.212805011925426e+02, - 9.225084426747677e+02, 9.237244082612212e+02, 9.249286649659293e+02, 9.261214704657061e+02, 9.273030735420581e+02, - 9.284737144969288e+02, 9.296336255441300e+02, 9.307830311781685e+02, 9.319221485220141e+02, 9.330511876552470e+02, - 9.341703519239090e+02, 9.352798382332741e+02, 9.363798373246618e+02, 9.374705340373368e+02, 9.385521075564899e+02, - 9.396247316496685e+02, 9.406885748901230e+02, 9.417438008662858e+02, 9.427905683819802e+02, 9.438290316466404e+02, - 9.448593404560210e+02, 9.458816403639780e+02, 9.468960723858989e+02, 9.479027746519915e+02, 9.489018809258141e+02, - 9.498935211838592e+02, 9.508778220623093e+02, 9.518549068255717e+02, 9.528248954885123e+02, 9.537879049331106e+02, - 9.547440490198381e+02, 9.556934386940462e+02, 9.566361820876405e+02, 9.575723846162803e+02, 9.585021490723520e+02, - 9.594255757139236e+02, 9.603427623499022e+02, 9.612538044215743e+02, 9.621587950807351e+02, 9.630578252645477e+02, - 9.639509837673334e+02, 9.648383573094060e+02, 9.657200306031317e+02, 9.665960864163213e+02, 9.674666056330983e+02, - 9.683316673267390e+02, 9.691913487569939e+02, 9.700457255145186e+02, 9.708948715109354e+02, 9.717388590446338e+02, - 9.725777588487991e+02, 9.734116401376341e+02, 9.742405706508556e+02, 9.750646166965395e+02, 9.758838431923991e+02, - 9.766983137055551e+02, 9.775080904908605e+02, 9.783132345278646e+02, 9.791138055564476e+02, 9.799098620861873e+02, - 9.807014615313764e+02, 9.814886600874603e+02, 9.822715128676456e+02, 9.830500739058070e+02, 9.838243961853209e+02, - 9.845945316669249e+02, 9.853605313156449e+02, 9.861224451268215e+02, 9.868803221512757e+02, 9.876342105196538e+02, - 9.883841574659692e+02, 9.891302093503849e+02, 9.898724116812695e+02, 9.906108091365363e+02, 9.913454455843183e+02, - 9.920763641029797e+02, 9.928036070005131e+02, 9.935272158333223e+02, 9.942472314244318e+02, 9.949636938811367e+02, - 9.956766426121142e+02, 9.963861163440135e+02, 9.970921531375549e+02, 9.977947904031398e+02, 9.984940649159996e+02, - 9.991900128308988e+02, 9.998826696964089e+02, 1.000572070468760e+03, 1.001258249525296e+03, 1.001941240677548e+03, - 1.002621077183915e+03, 1.003297791762012e+03, 1.003971416600645e+03, 1.004641983371458e+03, 1.005309523240265e+03, - 1.005974066878053e+03, 1.006635644471682e+03, 1.007294285734312e+03, 1.007950019915519e+03, 1.008602875811152e+03, - 1.009252881772924e+03, 1.009900065717742e+03, 1.010544455136793e+03, 1.011186077104385e+03, 1.011824958286555e+03, - 1.012461124949463e+03, 1.013094602967549e+03, 1.013725417856360e+03, 1.014353594679698e+03, 1.014979158209842e+03, - 1.015602132831909e+03, 1.016222542577097e+03, 1.016840411129675e+03, 1.017455761833805e+03, 1.018068617700189e+03, - 1.018679001412550e+03, 1.019286935333965e+03, 1.019892441513025e+03, 1.020495541689863e+03, 1.021096257302017e+03, - 1.021694609490174e+03, 1.022290618605680e+03, 1.022884306190824e+03, 1.023475692047790e+03, 1.024064796184456e+03, - 1.024651638338515e+03, 1.025236237982444e+03, 1.025818614328341e+03, 1.026398786332672e+03, 1.026976772700895e+03, - 1.027552591891977e+03, 1.028126262122814e+03, 1.028697801372552e+03, 1.029267227386802e+03, 1.029834557681768e+03, - 1.030399809548277e+03, 1.030963000055726e+03, 1.031524146055935e+03, 1.032083264186918e+03, 1.032640370876573e+03, - 1.033195482346286e+03, 1.033748614614463e+03, 1.034299783499981e+03, 1.034849004625567e+03, 1.035396293421104e+03, - 1.035941665126865e+03, 1.036485134796682e+03, 1.037026717301045e+03, 1.037566427330134e+03, 1.038104279396792e+03, - 1.038640287839435e+03, 1.039174466824897e+03, 1.039706830351226e+03, 1.040237392250406e+03, 1.040766166191043e+03, - 1.041293165680983e+03, 1.041818404069879e+03, 1.042341894551710e+03, 1.042863650167243e+03, 1.043383683806456e+03, - 1.043902008210899e+03, 1.044418635976019e+03, 1.044933579553434e+03, 1.045446851253166e+03, 1.045958463245821e+03, - 1.046468427564742e+03, 1.046976756108102e+03, 1.047483460640973e+03, 1.047988552797341e+03, 1.048492044082094e+03, - 1.048993945872964e+03, 1.049494269422437e+03, 1.049993025859621e+03, 1.050490226192086e+03, 1.050985881307662e+03, - 1.051480001976210e+03, 1.051972598851356e+03, 1.052463682472191e+03, 1.052953263264945e+03, 1.053441351544627e+03, - 1.053927957516632e+03, 1.054413091278326e+03, 1.054896762820594e+03, 1.055378982029364e+03, 1.055859758687105e+03, - 1.056339102474295e+03, 1.056817022970862e+03, 1.057293529657602e+03, 1.057768631917573e+03, 1.058242339037457e+03, - 1.058714660208906e+03, 1.059185604529861e+03, 1.059655181005845e+03, 1.060123398551241e+03, 1.060590265990537e+03, - 1.061055792059562e+03, 1.061519985406689e+03, 1.061982854594023e+03, 1.062444408098570e+03, 1.062904654313384e+03, - 1.063363601548691e+03, 1.063821258032999e+03, 1.064277631914190e+03, 1.064732731260588e+03, 1.065186564062014e+03, - 1.065639138230818e+03, 1.066090461602903e+03, 1.066540541938721e+03, 1.066989386924262e+03, 1.067437004172018e+03, - 1.067883401221942e+03, 1.068328585542379e+03, 1.068772564530987e+03, 1.069215345515651e+03, 1.069656935755370e+03, - 1.070097342441133e+03, 1.070536572696785e+03, 1.070974633579879e+03, 1.071411532082505e+03, 1.071847275132121e+03, - 1.072281869592356e+03, 1.072715322263809e+03, 1.073147639884838e+03, 1.073578829132322e+03, 1.074008896622430e+03, - 1.074437848911365e+03, 1.074865692496099e+03, 1.075292433815101e+03, 1.075718079249051e+03, 1.076142635121538e+03, - 1.076566107699755e+03, 1.076988503195182e+03, 1.077409827764257e+03, 1.077830087509029e+03, 1.078249288477820e+03, - 1.078667436665857e+03, 1.079084538015909e+03, 1.079500598418906e+03, 1.079915623714548e+03, 1.080329619691918e+03, - 1.080742592090066e+03, 1.081154546598599e+03, 1.081565488858260e+03, 1.081975424461492e+03, 1.082384358953001e+03, - 1.082792297830305e+03, 1.083199246544282e+03, 1.083605210499701e+03, 1.084010195055753e+03, 1.084414205526572e+03, - 1.084817247181745e+03, 1.085219325246821e+03, 1.085620444903805e+03, 1.086020611291653e+03, 1.086419829506756e+03, - 1.086818104603414e+03, 1.087215441594308e+03, 1.087611845450968e+03, 1.088007321104226e+03, 1.088401873444665e+03, - 1.088795507323069e+03, 1.089188227550859e+03, 1.089580038900524e+03, 1.089970946106050e+03, 1.090360953863338e+03, - 1.090750066830622e+03, 1.091138289628873e+03, 1.091525626842205e+03, 1.091912083018278e+03, 1.092297662668679e+03, - 1.092682370269317e+03, 1.093066210260806e+03, 1.093449187048839e+03, 1.093831305004556e+03, 1.094212568464917e+03, - 1.094592981733060e+03, 1.094972549078660e+03, 1.095351274738278e+03, 1.095729162915713e+03, 1.096106217782341e+03, - 1.096482443477453e+03, 1.096857844108594e+03, 1.097232423751885e+03, 1.097606186452356e+03, 1.097979136224260e+03, - 1.098351277051396e+03, 1.098722612887414e+03, 1.099093147656131e+03, 1.099462885251834e+03, 1.099831829539575e+03, - 1.100199984355476e+03, 1.100567353507016e+03, 1.100933940773324e+03, 1.101299749905461e+03, 1.101664784626704e+03, - 1.102029048632827e+03, 1.102392545592369e+03, 1.102755279146912e+03, 1.103117252911347e+03, 1.103478470474136e+03, - 1.103838935397577e+03, 1.104198651218061e+03, 1.104557621446323e+03, 1.104915849567700e+03, 1.105273339042375e+03, - 1.105630093305625e+03, 1.105986115768062e+03, 1.106341409815873e+03, 1.106695978811056e+03, 1.107049826091654e+03, - 1.107402954971986e+03, 1.107755368742877e+03, 1.108107070671879e+03, 1.108458064003496e+03, 1.108808351959404e+03, - 1.109157937738667e+03, 1.109506824517953e+03, 1.109855015451747e+03, 1.110202513672557e+03, 1.110549322291121e+03, - 1.110895444396617e+03, 1.111240883056861e+03, 1.111585641318505e+03, 1.111929722207238e+03, 1.112273128727979e+03, - 1.112615863865072e+03, 1.112957930582473e+03, 1.113299331823941e+03, 1.113640070513224e+03, 1.113980149554240e+03, - 1.114319571831264e+03, 1.114658340209101e+03, 1.114996457533270e+03, 1.115333926630176e+03, 1.115670750307285e+03, - 1.116006931353293e+03, 1.116342472538301e+03, 1.116677376613975e+03, 1.117011646313720e+03, 1.117345284352836e+03, - 1.117678293428688e+03, 1.118010676220859e+03, 1.118342435391312e+03, 1.118673573584549e+03, 1.119004093427758e+03, - 1.119333997530976e+03, 1.119663288487232e+03, 1.119991968872704e+03, 1.120320041246860e+03, 1.120647508152609e+03, - 1.120974372116445e+03, 1.121300635648589e+03, 1.121626301243133e+03, 1.121951371378179e+03, 1.122275848515974e+03, - 1.122599735103053e+03, 1.122923033570371e+03, 1.123245746333438e+03, 1.123567875792452e+03, 1.123889424332428e+03, - 1.124210394323332e+03, 1.124530788120205e+03, 1.124850608063291e+03, 1.125169856478166e+03, 1.125488535675858e+03, - 1.125806647952973e+03, 1.126124195591812e+03, 1.126441180860500e+03, 1.126757606013095e+03, 1.127073473289713e+03, - 1.127388784916641e+03, 1.127703543106456e+03, 1.128017750058133e+03, 1.128331407957165e+03, 1.128644518975668e+03, - 1.128957085272498e+03, 1.129269108993355e+03, 1.129580592270896e+03, 1.129891537224836e+03, 1.130201945962063e+03, - 1.130511820576733e+03, 1.130821163150383e+03, 1.131129975752025e+03, 1.131438260438257e+03, 1.131746019253355e+03, - 1.132053254229379e+03, 1.132359967386269e+03, 1.132666160731942e+03, 1.132971836262391e+03, 1.133276995961780e+03 - }, - { - 1.777942882207403e+00, 5.428286118627769e+00, 9.155298516182892e+00, 1.296317975662621e+01, 1.685651077803315e+01, - 2.084030254720316e+01, 2.492005305740344e+01, 2.910181430103813e+01, 3.339227142875285e+01, 3.779883690523879e+01, - 4.232976326997334e+01, 4.699427918056829e+01, 5.180275486819037e+01, 5.676690513079360e+01, 6.190004077364777e+01, - 6.721738334843764e+01, 7.273646371845251e+01, 7.847763330418658e+01, 8.446472933224382e+01, 9.072595451342302e+01, - 9.729506160539736e+01, 1.042129819138394e+02, 1.115301180882636e+02, 1.193096629063413e+02, 1.276325624730369e+02, - 1.366052347071769e+02, 1.463721586349016e+02, 1.571376706598486e+02, 1.692067228189007e+02, 1.830694491768787e+02, - 1.996049724878702e+02, 2.207063241773465e+02, 2.524278211101979e+02, 7.096716840971882e+02, 7.226492715339948e+02, - 7.331882281860643e+02, 7.421722825213556e+02, 7.500611850142686e+02, 7.571291082619841e+02, 7.635544529417624e+02, - 7.694606415023716e+02, 7.749370585385019e+02, 7.800507815198040e+02, 7.848536016447434e+02, 7.893864506222692e+02, - 7.936823124330288e+02, 7.977682070170428e+02, 8.016665823966003e+02, 8.053963168147152e+02, 8.089734562261336e+02, - 8.124117676132771e+02, 8.157231612600975e+02, 8.189180179407922e+02, 8.220054458949400e+02, 8.249934851330432e+02, - 8.278892716677619e+02, 8.306991708587942e+02, 8.334288866718384e+02, 8.360835519521438e+02, 8.386678035849758e+02, - 8.411858455159708e+02, 8.436415019376071e+02, 8.460382624479404e+02, 8.483793206087560e+02, 8.506676070401645e+02, - 8.529058179644718e+02, 8.550964399375410e+02, 8.572417713685800e+02, 8.593439413207194e+02, 8.614049259981246e+02, - 8.634265632559305e+02, 8.654105654131376e+02, 8.673585306030536e+02, 8.692719528585650e+02, 8.711522310989980e+02, - 8.730006771600173e+02, 8.748185229870820e+02, 8.766069270955352e+02, 8.783669803857833e+02, 8.800997113897441e+02, - 8.818060910144083e+02, 8.834870368395551e+02, 8.851434170192563e+02, 8.867760538304046e+02, 8.883857269060986e+02, - 8.899731761870339e+02, 8.915391046200399e+02, 8.930841806294267e+02, 8.946090403838235e+02, 8.961142898785605e+02, - 8.976005068513920e+02, 8.990682425473867e+02, 9.005180233470616e+02, 9.019503522703350e+02, 9.033657103675461e+02, - 9.047645580075896e+02, 9.061473360722172e+02, 9.075144670646124e+02, 9.088663561395472e+02, 9.102033920617129e+02, - 9.115259480981804e+02, 9.128343828503545e+02, 9.141290410303254e+02, 9.154102541860049e+02, 9.166783413790927e+02, - 9.179336098195122e+02, 9.191763554596314e+02, 9.204068635513248e+02, 9.216254091686242e+02, 9.228322576984983e+02, - 9.240276653020718e+02, 9.252118793484140e+02, 9.263851388228243e+02, 9.275476747114228e+02, 9.286997103636656e+02, - 9.298414618343114e+02, 9.309731382062203e+02, 9.320949418952661e+02, 9.332070689385558e+02, 9.343097092670259e+02, - 9.354030469637378e+02, 9.364872605103276e+02, 9.375625230177343e+02, 9.386290024446749e+02, 9.396868618058702e+02, - 9.407362593697205e+02, 9.417773488460484e+02, 9.428102795645153e+02, 9.438351961172967e+02, 9.448522402661330e+02, - 9.458615491235938e+02, 9.468632559468410e+02, 9.478574905439639e+02, 9.488443792459143e+02, 9.498240450332399e+02, - 9.507966076570144e+02, 9.517621837542692e+02, 9.527208869582295e+02, 9.536728280036399e+02, 9.546181148274395e+02, - 9.555568526650261e+02, 9.564891441423515e+02, 9.574150893640609e+02, 9.583347859978765e+02, 9.592483293554245e+02, - 9.601558124696753e+02, 9.610573261691827e+02, 9.619529591492633e+02, 9.628427980402820e+02, 9.637269274731779e+02, - 9.646054301423646e+02, 9.654783868804550e+02, 9.663458766576407e+02, 9.672079767275955e+02, 9.680647626194268e+02, - 9.689163082050466e+02, 9.697626857487487e+02, 9.706039659549119e+02, 9.714402180139184e+02, 9.722715096463558e+02, - 9.730979071455962e+02, 9.739194754188125e+02, 9.747362780265086e+02, 9.755483772206161e+02, 9.763558339579681e+02, - 9.771587080304907e+02, 9.779570579546129e+02, 9.787509411026307e+02, 9.795404137094653e+02, 9.803255309034216e+02, - 9.811063467358766e+02, 9.818829142099742e+02, 9.826552853083444e+02, 9.834235110199006e+02, 9.841876413657428e+02, - 9.849477254242078e+02, 9.857038113550988e+02, 9.864559464231262e+02, 9.872041770205939e+02, 9.879485486893531e+02, - 9.886891061420606e+02, 9.894258932827657e+02, 9.901589532268429e+02, 9.908883283203124e+02, 9.916140601585514e+02, - 9.923361896044388e+02, 9.930547568059385e+02, 9.937698012131472e+02, 9.944813615948332e+02, 9.951894760544748e+02, - 9.958941820458206e+02, 9.965955163879903e+02, 9.972935152801330e+02, 9.979882143156491e+02, 9.986796484960095e+02, - 9.993678522441672e+02, 1.000052859417588e+03, 1.000734703320910e+03, 1.001413416718240e+03, 1.002089031845109e+03, - 1.002761580420088e+03, 1.003431093656084e+03, 1.004097602271324e+03, 1.004761136500026e+03, 1.005421726102801e+03, - 1.006079400376743e+03, 1.006734188165275e+03, 1.007386117867710e+03, 1.008035217472528e+03, 1.008681514469466e+03, - 1.009325036005542e+03, 1.009965808794324e+03, 1.010603859149435e+03, 1.011239212992712e+03, 1.011871895862145e+03, - 1.012501932919615e+03, 1.013129348958434e+03, 1.013754168410695e+03, 1.014376415354436e+03, 1.014996113520620e+03, - 1.015613286299949e+03, 1.016227956749501e+03, 1.016840147599204e+03, 1.017449881258157e+03, 1.018057179820787e+03, - 1.018662065072866e+03, 1.019264557999529e+03, 1.019864680764712e+03, 1.020462453782305e+03, 1.021057897660723e+03, - 1.021651032727688e+03, 1.022241879035425e+03, 1.022830456365744e+03, 1.023416784234998e+03, 1.024000881898927e+03, - 1.024582768357391e+03, 1.025162462358997e+03, 1.025739982405610e+03, 1.026315346756777e+03, 1.026888573434035e+03, - 1.027459680225132e+03, 1.028028684688151e+03, 1.028595604155538e+03, 1.029160455738047e+03, 1.029723256328592e+03, - 1.030284022606017e+03, 1.030842771038786e+03, 1.031399517888584e+03, 1.031954279213851e+03, 1.032507070873229e+03, - 1.033057908528944e+03, 1.033606807650110e+03, 1.034153783515965e+03, 1.034698851219034e+03, 1.035242025668234e+03, - 1.035783321591905e+03, 1.036322753540784e+03, 1.036860335890911e+03, 1.037396082846479e+03, 1.037930008442627e+03, - 1.038462126548168e+03, 1.038992450868272e+03, 1.039520994947081e+03, 1.040047772170283e+03, 1.040572795767632e+03, - 1.041096078815404e+03, 1.041617634238829e+03, 1.042137474814450e+03, 1.042655613172446e+03, 1.043172061798913e+03, - 1.043686833038091e+03, 1.044199939094555e+03, 1.044711392035356e+03, 1.045221203792131e+03, 1.045729386163157e+03, - 1.046235950815384e+03, 1.046740909286409e+03, 1.047244272986430e+03, 1.047746053200152e+03, 1.048246261088658e+03, - 1.048744907691252e+03, 1.049242003927258e+03, 1.049737560597788e+03, 1.050231588387485e+03, 1.050724097866218e+03, - 1.051215099490763e+03, 1.051704603606440e+03, 1.052192620448723e+03, 1.052679160144829e+03, 1.053164232715262e+03, - 1.053647848075348e+03, 1.054130016036725e+03, 1.054610746308815e+03, 1.055090048500273e+03, 1.055567932120400e+03, - 1.056044406580535e+03, 1.056519481195431e+03, 1.056993165184593e+03, 1.057465467673600e+03, 1.057936397695404e+03, - 1.058405964191603e+03, 1.058874176013695e+03, 1.059341041924306e+03, 1.059806570598407e+03, 1.060270770624492e+03, - 1.060733650505758e+03, 1.061195218661244e+03, 1.061655483426965e+03, 1.062114453057023e+03, 1.062572135724692e+03, - 1.063028539523498e+03, 1.063483672468268e+03, 1.063937542496171e+03, 1.064390157467737e+03, 1.064841525167856e+03, - 1.065291653306770e+03, 1.065740549521041e+03, 1.066188221374503e+03, 1.066634676359205e+03, 1.067079921896327e+03, - 1.067523965337096e+03, 1.067966813963675e+03, 1.068408474990045e+03, 1.068848955562866e+03, 1.069288262762332e+03, - 1.069726403603005e+03, 1.070163385034644e+03, 1.070599213943009e+03, 1.071033897150667e+03, 1.071467441417772e+03, - 1.071899853442841e+03, 1.072331139863515e+03, 1.072761307257309e+03, 1.073190362142344e+03, 1.073618310978083e+03, - 1.074045160166040e+03, 1.074470916050483e+03, 1.074895584919132e+03, 1.075319173003837e+03, 1.075741686481254e+03, - 1.076163131473502e+03, 1.076583514048823e+03, 1.077002840222214e+03, 1.077421115956070e+03, 1.077838347160799e+03, - 1.078254539695439e+03, 1.078669699368262e+03, 1.079083831937369e+03, 1.079496943111278e+03, 1.079909038549503e+03, - 1.080320123863119e+03, 1.080730204615328e+03, 1.081139286322009e+03, 1.081547374452265e+03, 1.081954474428958e+03, - 1.082360591629241e+03, 1.082765731385075e+03, 1.083169898983749e+03, 1.083573099668381e+03, 1.083975338638420e+03, - 1.084376621050140e+03, 1.084776952017122e+03, 1.085176336610734e+03, 1.085574779860603e+03, 1.085972286755080e+03, - 1.086368862241697e+03, 1.086764511227619e+03, 1.087159238580091e+03, 1.087553049126880e+03, 1.087945947656701e+03, - 1.088337938919651e+03, 1.088729027627629e+03, 1.089119218454750e+03, 1.089508516037755e+03, 1.089896924976418e+03, - 1.090284449833941e+03, 1.090671095137351e+03, 1.091056865377887e+03, 1.091441765011380e+03, 1.091825798458633e+03, - 1.092208970105797e+03, 1.092591284304729e+03, 1.092972745373368e+03, 1.093353357596077e+03, 1.093733125224011e+03, - 1.094112052475457e+03, 1.094490143536176e+03, 1.094867402559750e+03, 1.095243833667910e+03, 1.095619440950870e+03, - 1.095994228467651e+03, 1.096368200246402e+03, 1.096741360284721e+03, 1.097113712549966e+03, 1.097485260979566e+03, - 1.097856009481321e+03, 1.098225961933712e+03, 1.098595122186194e+03, 1.098963494059487e+03, 1.099331081345872e+03, - 1.099697887809473e+03, 1.100063917186542e+03, 1.100429173185736e+03, 1.100793659488396e+03, 1.101157379748814e+03, - 1.101520337594509e+03, 1.101882536626483e+03, 1.102243980419490e+03, 1.102604672522295e+03, 1.102964616457924e+03, - 1.103323815723922e+03, 1.103682273792599e+03, 1.104039994111277e+03, 1.104396980102533e+03, 1.104753235164441e+03, - 1.105108762670805e+03, 1.105463565971398e+03, 1.105817648392191e+03, 1.106171013235582e+03, 1.106523663780621e+03, - 1.106875603283234e+03, 1.107226834976447e+03, 1.107577362070595e+03, 1.107927187753547e+03, 1.108276315190911e+03, - 1.108624747526250e+03, 1.108972487881286e+03, 1.109319539356105e+03, 1.109665905029361e+03, 1.110011587958477e+03, - 1.110356591179841e+03, 1.110700917709003e+03, 1.111044570540868e+03, 1.111387552649885e+03, 1.111729866990241e+03, - 1.112071516496042e+03, 1.112412504081501e+03, 1.112752832641118e+03, 1.113092505049863e+03, 1.113431524163351e+03, - 1.113769892818020e+03, 1.114107613831306e+03, 1.114444690001811e+03, 1.114781124109479e+03, 1.115116918915760e+03, - 1.115452077163775e+03, 1.115786601578486e+03, 1.116120494866853e+03, 1.116453759717999e+03, 1.116786398803366e+03, - 1.117118414776870e+03, 1.117449810275063e+03, 1.117780587917282e+03, 1.118110750305801e+03, 1.118440300025982e+03, - 1.118769239646425e+03, 1.119097571719110e+03, 1.119425298779547e+03, 1.119752423346922e+03, 1.120078947924231e+03, - 1.120404874998424e+03, 1.120730207040550e+03, 1.121054946505884e+03, 1.121379095834071e+03, 1.121702657449260e+03, - 1.122025633760229e+03, 1.122348027160527e+03, 1.122669840028599e+03, 1.122991074727914e+03, 1.123311733607095e+03, - 1.123631819000043e+03, 1.123951333226063e+03, 1.124270278589986e+03, 1.124588657382294e+03, 1.124906471879236e+03, - 1.125223724342952e+03, 1.125540417021587e+03, 1.125856552149412e+03, 1.126172131946940e+03, 1.126487158621032e+03, - 1.126801634365023e+03, 1.127115561358826e+03, 1.127428941769042e+03, 1.127741777749076e+03, 1.128054071439240e+03, - 1.128365824966863e+03, 1.128677040446400e+03, 1.128987719979529e+03, 1.129297865655265e+03, 1.129607479550057e+03, - 1.129916563727892e+03, 1.130225120240397e+03, 1.130533151126935e+03, 1.130840658414709e+03, 1.131147644118858e+03 - }, - { - 1.771801111626728e+00, 5.408901484923344e+00, 9.121476066451514e+00, 1.291359803615823e+01, 1.678970433662002e+01, - 2.075464137159469e+01, 2.481371825706919e+01, 2.897276921103781e+01, 3.323822705190988e+01, 3.761721031840201e+01, - 4.211762720935092e+01, 4.674830046990809e+01, 5.151911859788451e+01, 5.644122044680288e+01, 6.152722265739238e+01, - 6.679150265444119e+01, 7.225055465861996e+01, 7.792344300089340e+01, 8.383238714214187e+01, 9.000352808704336e+01, - 9.646794954273483e+01, 1.032630647978712e+02, 1.104345419839553e+02, 1.180390451331968e+02, 1.261482535560900e+02, - 1.348549656702011e+02, 1.442827669485019e+02, 1.546021584874622e+02, 1.660592868291566e+02, 1.790317125507279e+02, - 1.941502756754422e+02, 2.126167593331151e+02, 2.373242298827303e+02, 6.790990805784359e+02, 6.990439746187120e+02, - 7.132408968104803e+02, 7.245741000619931e+02, 7.341331202663666e+02, 7.424658821163131e+02, 7.498917242735298e+02, - 7.566149138725791e+02, 7.627748917365442e+02, 7.684715623158573e+02, 7.737792385156214e+02, 7.787548782005300e+02, - 7.834432192595070e+02, 7.878801244004337e+02, 7.920948404151090e+02, 7.961115717486267e+02, 7.999506056694154e+02, - 8.036291353555642e+02, 8.071618741305355e+02, 8.105615219833329e+02, 8.138391254847097e+02, 8.170043593718502e+02, - 8.200657496380406e+02, 8.230308522984219e+02, 8.259063981222356e+02, 8.286984109160156e+02, 8.314123050240743e+02, - 8.340529663327881e+02, 8.366248200586494e+02, 8.391318878566138e+02, 8.415778362296207e+02, 8.439660178003273e+02, - 8.462995066857416e+02, 8.485811289685522e+02, 8.508134890671312e+02, 8.529989926558003e+02, 8.551398666682575e+02, - 8.572381768225777e+02, 8.592958430305513e+02, 8.613146529931701e+02, 8.632962742345866e+02, 8.652422647865478e+02, - 8.671540827022187e+02, 8.690330945510473e+02, 8.708805830237172e+02, 8.726977537574534e+02, 8.744857414762191e+02, - 8.762456155271670e+02, 8.779783848835721e+02, 8.796850026750907e+02, 8.813663702981922e+02, 8.830233411528241e+02, - 8.846567240455281e+02, 8.862672862942777e+02, 8.878557565659829e+02, 8.894228274739279e+02, 8.909691579592047e+02, - 8.924953754774178e+02, 8.940020780095288e+02, 8.954898359136141e+02, 8.969591936324366e+02, 8.984106712701592e+02, - 8.998447660500830e+02, 9.012619536640591e+02, 9.026626895231302e+02, 9.040474099179680e+02, 9.054165330968451e+02, - 9.067704602680852e+02, 9.081095765332699e+02, 9.094342517569078e+02, 9.107448413776698e+02, 9.120416871658814e+02, - 9.133251179314966e+02, 9.145954501863957e+02, 9.158529887645146e+02, 9.170980274030040e+02, 9.183308492873228e+02, - 9.195517275629348e+02, 9.207609258160411e+02, 9.219586985255834e+02, 9.231452914885525e+02, 9.243209422204930e+02, - 9.254858803329189e+02, 9.266403278892276e+02, 9.277844997405751e+02, 9.289186038430523e+02, 9.300428415574124e+02, - 9.311574079325186e+02, 9.322624919918668e+02, 9.333582770165865e+02, 9.344449403845443e+02, 9.355226547729601e+02, - 9.365915873116835e+02, 9.376519003462569e+02, 9.387037515176697e+02, 9.397472935317431e+02, 9.407826758109278e+02, - 9.418100425329635e+02, 9.428295345782803e+02, 9.438412884988237e+02, 9.448454372864090e+02, 9.458421103496291e+02, - 9.468314336451442e+02, 9.478135298029185e+02, 9.487885182457411e+02, 9.497565153033485e+02, 9.507176343214282e+02, - 9.516719857657965e+02, 9.526196773219916e+02, 9.535608139905302e+02, 9.544954981780566e+02, 9.554238297845867e+02, - 9.563459062870621e+02, 9.572618228193930e+02, 9.581716722491592e+02, 9.590755452511598e+02, 9.599735303779391e+02, - 9.608657141274616e+02, 9.617521810080628e+02, 9.626330136149566e+02, 9.635082926321674e+02, 9.643780969791766e+02, - 9.652425038052833e+02, 9.661015885584299e+02, 9.669554250363400e+02, 9.678040854357109e+02, 9.686476403995623e+02, - 9.694861590628082e+02, 9.703197090961445e+02, 9.711483567483240e+02, 9.719721668636655e+02, 9.727912030158814e+02, - 9.736055274014063e+02, 9.744152009741101e+02, 9.752202834554552e+02, 9.760208333684687e+02, 9.768169080705235e+02, - 9.776085637849973e+02, 9.783958556318310e+02, 9.791788376570553e+02, 9.799575628613162e+02, 9.807320832274394e+02, - 9.815024497470724e+02, 9.822687124464576e+02, 9.830309204113394e+02, 9.837891218110746e+02, 9.845433639219486e+02, - 9.852936931497472e+02, 9.860401550516077e+02, 9.867827943571684e+02, 9.875216549890590e+02, 9.882567800827469e+02, - 9.889882120057603e+02, 9.897159923763240e+02, 9.904401620814223e+02, 9.911607612943016e+02, 9.918778294914567e+02, - 9.925914054690934e+02, 9.933015273591072e+02, 9.940082326445777e+02, 9.947115581748164e+02, 9.954115401799626e+02, - 9.961082142851604e+02, 9.968016155243211e+02, 9.974917783534928e+02, 9.981787366638397e+02, 9.988625237942637e+02, - 9.995431725436562e+02, 1.000220715182818e+03, 1.000895183466035e+03, 1.001566608642215e+03, 1.002235021489557e+03, - 1.002900452231473e+03, 1.003562930690106e+03, 1.004222486200002e+03, 1.004879147642291e+03, 1.005532943454227e+03, - 1.006183901638476e+03, 1.006832049772157e+03, 1.007477415015652e+03, 1.008120024121167e+03, 1.008759903441093e+03, - 1.009397078936133e+03, 1.010031576183225e+03, 1.010663420383267e+03, 1.011292636368639e+03, 1.011919248610536e+03, - 1.012543281226116e+03, 1.013164757985470e+03, 1.013783702318420e+03, 1.014400137321142e+03, 1.015014085762630e+03, - 1.015625570091009e+03, 1.016234611942555e+03, 1.016841234118341e+03, 1.017445457660516e+03, 1.018047303793743e+03, - 1.018646793451118e+03, 1.019243947279612e+03, 1.019838785645393e+03, 1.020431328639023e+03, 1.021021596080522e+03, - 1.021609607524326e+03, 1.022195382264124e+03, 1.022778939337584e+03, 1.023360297530976e+03, 1.023939475383681e+03, - 1.024516491192598e+03, 1.025091363016462e+03, 1.025664108680056e+03, 1.026234745778325e+03, 1.026803291680410e+03, - 1.027369763533580e+03, 1.027934178267091e+03, 1.028496552595945e+03, 1.029056903024578e+03, 1.029615245850462e+03, - 1.030171597167635e+03, 1.030725972870146e+03, 1.031278388655435e+03, 1.031828860027634e+03, 1.032377402300801e+03, - 1.032924030602084e+03, 1.033468759874825e+03, 1.034011604881587e+03, 1.034552580207124e+03, 1.035091700261296e+03, - 1.035628979281908e+03, 1.036164431337509e+03, 1.036698070330114e+03, 1.037229909997889e+03, 1.037759963917769e+03, - 1.038288245508027e+03, 1.038814768030793e+03, 1.039339544594516e+03, 1.039862588156388e+03, 1.040383911524707e+03, - 1.040903527361202e+03, 1.041421448183311e+03, 1.041937686366410e+03, 1.042452254146001e+03, 1.042965163619862e+03, - 1.043476426750141e+03, 1.043986055365432e+03, 1.044494061162788e+03, 1.045000455709710e+03, 1.045505250446093e+03, - 1.046008456686137e+03, 1.046510085620221e+03, 1.047010148316737e+03, 1.047508655723899e+03, 1.048005618671511e+03, - 1.048501047872703e+03, 1.048994953925638e+03, 1.049487347315184e+03, 1.049978238414558e+03, 1.050467637486936e+03, - 1.050955554687039e+03, 1.051442000062686e+03, 1.051926983556318e+03, 1.052410515006500e+03, 1.052892604149392e+03, - 1.053373260620192e+03, 1.053852493954556e+03, 1.054330313589995e+03, 1.054806728867242e+03, 1.055281749031599e+03, - 1.055755383234255e+03, 1.056227640533590e+03, 1.056698529896449e+03, 1.057168060199391e+03, 1.057636240229930e+03, - 1.058103078687739e+03, 1.058568584185842e+03, 1.059032765251785e+03, 1.059495630328782e+03, 1.059957187776852e+03, - 1.060417445873921e+03, 1.060876412816922e+03, 1.061334096722866e+03, 1.061790505629894e+03, 1.062245647498324e+03, - 1.062699530211666e+03, 1.063152161577624e+03, 1.063603549329089e+03, 1.064053701125109e+03, 1.064502624551842e+03, - 1.064950327123498e+03, 1.065396816283258e+03, 1.065842099404196e+03, 1.066286183790159e+03, 1.066729076676654e+03, - 1.067170785231719e+03, 1.067611316556764e+03, 1.068050677687419e+03, 1.068488875594355e+03, 1.068925917184100e+03, - 1.069361809299832e+03, 1.069796558722173e+03, 1.070230172169958e+03, 1.070662656300998e+03, 1.071094017712838e+03, - 1.071524262943482e+03, 1.071953398472135e+03, 1.072381430719909e+03, 1.072808366050532e+03, 1.073234210771042e+03, - 1.073658971132471e+03, 1.074082653330519e+03, 1.074505263506214e+03, 1.074926807746568e+03, 1.075347292085221e+03, - 1.075766722503071e+03, 1.076185104928901e+03, 1.076602445239992e+03, 1.077018749262731e+03, 1.077434022773205e+03, - 1.077848271497789e+03, 1.078261501113727e+03, 1.078673717249700e+03, 1.079084925486391e+03, 1.079495131357036e+03, - 1.079904340347974e+03, 1.080312557899180e+03, 1.080719789404799e+03, 1.081126040213666e+03, 1.081531315629825e+03, - 1.081935620913029e+03, 1.082338961279250e+03, 1.082741341901165e+03, 1.083142767908646e+03, 1.083543244389236e+03, - 1.083942776388627e+03, 1.084341368911118e+03, 1.084739026920082e+03, 1.085135755338417e+03, 1.085531559048986e+03, - 1.085926442895068e+03, 1.086320411680785e+03, 1.086713470171532e+03, 1.087105623094399e+03, 1.087496875138590e+03, - 1.087887230955830e+03, 1.088276695160772e+03, 1.088665272331399e+03, 1.089052967009414e+03, 1.089439783700630e+03, - 1.089825726875358e+03, 1.090210800968778e+03, 1.090595010381318e+03, 1.090978359479020e+03, 1.091360852593906e+03, - 1.091742494024332e+03, 1.092123288035345e+03, 1.092503238859034e+03, 1.092882350694867e+03, 1.093260627710039e+03, - 1.093638074039806e+03, 1.094014693787813e+03, 1.094390491026420e+03, 1.094765469797029e+03, 1.095139634110401e+03, - 1.095512987946968e+03, 1.095885535257143e+03, 1.096257279961631e+03, 1.096628225951723e+03, 1.096998377089602e+03, - 1.097367737208635e+03, 1.097736310113662e+03, 1.098104099581282e+03, 1.098471109360141e+03, 1.098837343171211e+03, - 1.099202804708059e+03, 1.099567497637131e+03, 1.099931425598013e+03, 1.100294592203699e+03, 1.100657001040857e+03, - 1.101018655670083e+03, 1.101379559626161e+03, 1.101739716418315e+03, 1.102099129530458e+03, 1.102457802421442e+03, - 1.102815738525296e+03, 1.103172941251472e+03, 1.103529413985079e+03, 1.103885160087122e+03, 1.104240182894731e+03, - 1.104594485721391e+03, 1.104948071857168e+03, 1.105300944568934e+03, 1.105653107100586e+03, 1.106004562673268e+03, - 1.106355314485581e+03, 1.106705365713804e+03, 1.107054719512095e+03, 1.107403379012709e+03, 1.107751347326196e+03, - 1.108098627541609e+03, 1.108445222726702e+03, 1.108791135928129e+03, 1.109136370171643e+03, 1.109480928462285e+03, - 1.109824813784579e+03, 1.110168029102720e+03, 1.110510577360762e+03, 1.110852461482803e+03, 1.111193684373166e+03, - 1.111534248916581e+03, 1.111874157978364e+03, 1.112213414404594e+03, 1.112552021022286e+03, 1.112889980639564e+03, - 1.113227296045831e+03, 1.113563970011941e+03, 1.113900005290360e+03, 1.114235404615337e+03, 1.114570170703063e+03, - 1.114904306251831e+03, 1.115237813942200e+03, 1.115570696437150e+03, 1.115902956382237e+03, 1.116234596405746e+03, - 1.116565619118849e+03, 1.116896027115748e+03, 1.117225822973829e+03, 1.117555009253810e+03, 1.117883588499881e+03, - 1.118211563239854e+03, 1.118538935985304e+03, 1.118865709231705e+03, 1.119191885458579e+03, 1.119517467129624e+03, - 1.119842456692857e+03, 1.120166856580745e+03, 1.120490669210342e+03, 1.120813896983419e+03, 1.121136542286592e+03, - 1.121458607491454e+03, 1.121780094954707e+03, 1.122101007018277e+03, 1.122421346009452e+03, 1.122741114240996e+03, - 1.123060314011276e+03, 1.123378947604382e+03, 1.123697017290246e+03, 1.124014525324763e+03, 1.124331473949905e+03, - 1.124647865393841e+03, 1.124963701871047e+03, 1.125278985582424e+03, 1.125593718715407e+03, 1.125907903444080e+03, - 1.126221541929281e+03, 1.126534636318718e+03, 1.126847188747070e+03, 1.127159201336095e+03, 1.127470676194743e+03, - 1.127781615419247e+03, 1.128092021093240e+03, 1.128401895287850e+03, 1.128711240061801e+03, 1.129020057461517e+03 - }, - { - 1.765702357486508e+00, 5.389661946818883e+00, 9.087923958744215e+00, 1.286443926932324e+01, 1.672350587905711e+01, - 2.066981173750811e+01, 2.470848450863655e+01, 2.884514970492415e+01, 3.308599895569249e+01, 3.743787065137631e+01, - 4.190834580243521e+01, 4.650586275524100e+01, 5.123985548004623e+01, 5.612092160006851e+01, 6.116102832581466e+01, - 6.637376723440282e+01, 7.177467275366800e+01, 7.738162483897882e+01, 8.321536455901604e+01, 8.930016358013921e+01, - 9.566470725896033e+01, 1.023432803279684e+02, 1.093773912504896e+02, 1.168180495422962e+02, 1.247290451947226e+02, - 1.331918217234719e+02, 1.423129937120476e+02, 1.522364820667242e+02, 1.631642395930380e+02, 1.753942930035297e+02, - 1.893976008030213e+02, 2.059958320166604e+02, 2.268683638713153e+02, 2.566877827685357e+02, 6.657348335675499e+02, - 6.882593411716831e+02, 7.037519829070548e+02, 7.159142689887299e+02, 7.260669078413629e+02, 7.348544721213481e+02, - 7.426450564595893e+02, 7.496705428778206e+02, 7.560873241776071e+02, 7.620063565085974e+02, 7.675095059169084e+02, - 7.726590936660893e+02, 7.775037891000143e+02, 7.820824152228369e+02, 7.864264997652492e+02, 7.905620400127840e+02, - 7.945107571081365e+02, 7.982910086129102e+02, 8.019184661776384e+02, 8.054066279635822e+02, 8.087672123905104e+02, - 8.120104650755843e+02, 8.151454012141174e+02, 8.181799992276768e+02, 8.211213571240439e+02, 8.239758199715358e+02, - 8.267490847429744e+02, 8.294462872454400e+02, 8.320720747334213e+02, 8.346306669795197e+02, 8.371259079633298e+02, - 8.395613098770218e+02, 8.419400907943767e+02, 8.442652070797992e+02, 8.465393814042484e+02, 8.487651270712353e+02, - 8.509447692268653e+02, 8.530804634254803e+02, 8.551742119404449e+02, 8.572278781437549e+02, 8.592431992247024e+02, - 8.612217974744126e+02, 8.631651903274104e+02, 8.650747993221071e+02, 8.669519581178356e+02, 8.687979196858935e+02, - 8.706138627752572e+02, 8.724008977394850e+02, 8.741600717994739e+02, 8.758923738066792e+02, 8.775987385628994e+02, - 8.792800507454641e+02, 8.809371484804838e+02, 8.825708266015088e+02, 8.841818396263707e+02, 8.857709044810675e+02, - 8.873387029961377e+02, 8.888858841980227e+02, 8.904130664153558e+02, 8.919208392178958e+02, 8.934097652038317e+02, - 8.948803816495448e+02, 8.963332020343382e+02, 8.977687174513835e+02, 8.991873979149517e+02, 9.005896935729575e+02, - 9.019760358329646e+02, 9.033468384089679e+02, 9.047024982955678e+02, 9.060433966755218e+02, 9.073698997660726e+02, - 9.086823596089600e+02, 9.099811148085612e+02, 9.112664912222203e+02, 9.125388026064298e+02, 9.137983512222229e+02, - 9.150454284028478e+02, 9.162803150865042e+02, 9.175032823167087e+02, 9.187145917126239e+02, 9.199144959114957e+02, - 9.211032389851783e+02, 9.222810568325339e+02, 9.234481775493903e+02, 9.246048217775789e+02, 9.257512030344448e+02, - 9.268875280241688e+02, 9.280139969338380e+02, 9.291308037468331e+02, 9.302381365023493e+02, 9.313361775101475e+02, - 9.324251024720592e+02, 9.335050843913014e+02, 9.345762890072989e+02, 9.356388779685202e+02, 9.366930077175784e+02, - 9.377388313003887e+02, 9.387764968654792e+02, 9.398061482324952e+02, 9.408279254173508e+02, 9.418419646036090e+02, - 9.428483982850051e+02, 9.438473554013084e+02, 9.448389614679015e+02, 9.458233386994166e+02, 9.468006061277582e+02, - 9.477708797148288e+02, 9.487342724602156e+02, 9.496908945041387e+02, 9.506408532258896e+02, 9.515842533380059e+02, - 9.525211969763980e+02, 9.534517837866473e+02, 9.543761110066566e+02, 9.552942735458462e+02, 9.562063640610698e+02, - 9.571124730294106e+02, 9.580126888180064e+02, 9.589070977510640e+02, 9.597957841880535e+02, 9.606788305286661e+02, - 9.615563173594923e+02, 9.624283234513010e+02, 9.632949258291949e+02, 9.641561998253210e+02, 9.650122191295596e+02, - 9.658630558383145e+02, 9.667087805014545e+02, 9.675494621444456e+02, 9.683851684058957e+02, 9.692159654358052e+02, - 9.700419180336551e+02, 9.708630896624533e+02, 9.716795424862976e+02, 9.724913374066075e+02, 9.732985340970758e+02, - 9.741011910374009e+02, 9.748993655458424e+02, 9.756931138106639e+02, 9.764824909204870e+02, 9.772675508936252e+02, - 9.780483467064215e+02, 9.788249303206427e+02, 9.795973527099569e+02, 9.803656638855416e+02, 9.811299129208498e+02, - 9.818901479755725e+02, 9.826464163188222e+02, 9.833987643515771e+02, 9.841472376284079e+02, 9.848918808785148e+02, - 9.856327380261031e+02, 9.863698522101281e+02, 9.871032658034179e+02, 9.878330204312124e+02, 9.885591569891362e+02, - 9.892817156606191e+02, 9.900007359337934e+02, 9.907162566178868e+02, 9.914283158591165e+02, 9.921369511561256e+02, - 9.928421993749504e+02, 9.935440967635629e+02, 9.942426789659795e+02, 9.949379810359708e+02, 9.956300374737550e+02, - 9.963188821442528e+02, 9.970045484334307e+02, 9.976870691634412e+02, 9.983664766290776e+02, 9.990428026093043e+02, - 9.997160783784818e+02, 1.000386334717270e+03, 1.001053601923241e+03, 1.001717909821200e+03, 1.002379287773227e+03, - 1.003037764688450e+03, 1.003693369032555e+03, 1.004346128837043e+03, 1.004996071708246e+03, 1.005643224836102e+03, - 1.006287615002699e+03, 1.006929268590605e+03, 1.007568211590975e+03, 1.008204469611451e+03, 1.008838067883864e+03, - 1.009469031271737e+03, 1.010097384277595e+03, 1.010723151050100e+03, 1.011346355391004e+03, 1.011967020761919e+03, - 1.012585170290937e+03, 1.013200826283163e+03, 1.013814012192650e+03, 1.014424749706681e+03, 1.015033060682181e+03, - 1.015638966673264e+03, 1.016242488936933e+03, 1.016843648438651e+03, 1.017442465857774e+03, 1.018038961592864e+03, - 1.018633155766866e+03, 1.019225068232176e+03, 1.019814718575582e+03, 1.020402126123095e+03, 1.020987309944665e+03, - 1.021570288858797e+03, 1.022151081437053e+03, 1.022729706008457e+03, 1.023306180663797e+03, 1.023880523259837e+03, - 1.024452751423422e+03, 1.025022882555510e+03, 1.025590933835098e+03, 1.026156922223070e+03, 1.026720864465959e+03, - 1.027282777099628e+03, 1.027842676452866e+03, 1.028400578650915e+03, 1.028956499618910e+03, 1.029510455085259e+03, - 1.030062460584935e+03, 1.030612531462715e+03, 1.031160682876334e+03, 1.031706929799587e+03, 1.032251287025353e+03, - 1.032793769168571e+03, 1.033334390669139e+03, 1.033873165794763e+03, 1.034410108643744e+03, 1.034945233147708e+03, - 1.035478553074279e+03, 1.036010082029706e+03, 1.036539833461422e+03, 1.037067820660562e+03, 1.037594056764433e+03, - 1.038118554758925e+03, 1.038641327480881e+03, 1.039162387620419e+03, 1.039681747723207e+03, 1.040199420192692e+03, - 1.040715417292290e+03, 1.041229751147530e+03, 1.041742433748159e+03, 1.042253476950198e+03, 1.042762892477976e+03, - 1.043270691926105e+03, 1.043776886761429e+03, 1.044281488324937e+03, 1.044784507833632e+03, 1.045285956382374e+03, - 1.045785844945678e+03, 1.046284184379490e+03, 1.046780985422919e+03, 1.047276258699946e+03, 1.047770014721098e+03, - 1.048262263885085e+03, 1.048753016480419e+03, 1.049242282686996e+03, 1.049730072577648e+03, 1.050216396119671e+03, - 1.050701263176326e+03, 1.051184683508307e+03, 1.051666666775190e+03, 1.052147222536853e+03, 1.052626360254866e+03, - 1.053104089293869e+03, 1.053580418922910e+03, 1.054055358316774e+03, 1.054528916557277e+03, 1.055001102634547e+03, - 1.055471925448275e+03, 1.055941393808947e+03, 1.056409516439063e+03, 1.056876301974317e+03, 1.057341758964776e+03, - 1.057805895876025e+03, 1.058268721090303e+03, 1.058730242907608e+03, 1.059190469546797e+03, 1.059649409146657e+03, - 1.060107069766959e+03, 1.060563459389507e+03, 1.061018585919145e+03, 1.061472457184778e+03, 1.061925080940348e+03, - 1.062376464865811e+03, 1.062826616568093e+03, 1.063275543582030e+03, 1.063723253371294e+03, 1.064169753329302e+03, - 1.064615050780116e+03, 1.065059152979313e+03, 1.065502067114867e+03, 1.065943800307990e+03, 1.066384359613976e+03, - 1.066823752023031e+03, 1.067261984461078e+03, 1.067699063790565e+03, 1.068134996811247e+03, 1.068569790260965e+03, - 1.069003450816408e+03, 1.069435985093864e+03, 1.069867399649961e+03, 1.070297700982392e+03, 1.070726895530638e+03, - 1.071154989676667e+03, 1.071581989745634e+03, 1.072007902006566e+03, 1.072432732673032e+03, 1.072856487903811e+03, - 1.073279173803544e+03, 1.073700796423377e+03, 1.074121361761601e+03, 1.074540875764267e+03, 1.074959344325813e+03, - 1.075376773289662e+03, 1.075793168448820e+03, 1.076208535546474e+03, 1.076622880276557e+03, 1.077036208284332e+03, - 1.077448525166948e+03, 1.077859836473999e+03, 1.078270147708066e+03, 1.078679464325262e+03, 1.079087791735757e+03, - 1.079495135304305e+03, 1.079901500350758e+03, 1.080306892150577e+03, 1.080711315935330e+03, 1.081114776893189e+03, - 1.081517280169412e+03, 1.081918830866830e+03, 1.082319434046317e+03, 1.082719094727254e+03, 1.083117817887993e+03, - 1.083515608466311e+03, 1.083912471359853e+03, 1.084308411426577e+03, 1.084703433485190e+03, 1.085097542315570e+03, - 1.085490742659200e+03, 1.085883039219575e+03, 1.086274436662619e+03, 1.086664939617090e+03, 1.087054552674979e+03, - 1.087443280391907e+03, 1.087831127287514e+03, 1.088218097845843e+03, 1.088604196515718e+03, 1.088989427711119e+03, - 1.089373795811552e+03, 1.089757305162413e+03, 1.090139960075345e+03, 1.090521764828594e+03, 1.090902723667361e+03, - 1.091282840804143e+03, 1.091662120419076e+03, 1.092040566660270e+03, 1.092418183644144e+03, 1.092794975455747e+03, - 1.093170946149090e+03, 1.093546099747456e+03, 1.093920440243720e+03, 1.094293971600657e+03, 1.094666697751255e+03, - 1.095038622599006e+03, 1.095409750018220e+03, 1.095780083854305e+03, 1.096149627924070e+03, 1.096518386016003e+03, - 1.096886361890567e+03, 1.097253559280467e+03, 1.097619981890937e+03, 1.097985633400008e+03, 1.098350517458779e+03, - 1.098714637691686e+03, 1.099077997696761e+03, 1.099440601045895e+03, 1.099802451285096e+03, 1.100163551934738e+03, - 1.100523906489813e+03, 1.100883518420183e+03, 1.101242391170818e+03, 1.101600528162040e+03, 1.101957932789761e+03, - 1.102314608425719e+03, 1.102670558417710e+03, 1.103025786089820e+03, 1.103380294742647e+03, 1.103734087653529e+03, - 1.104087168076765e+03, 1.104439539243832e+03, 1.104791204363608e+03, 1.105142166622572e+03, 1.105492429185034e+03, - 1.105841995193324e+03, 1.106190867768011e+03, 1.106539050008105e+03, 1.106886544991253e+03, 1.107233355773944e+03, - 1.107579485391700e+03, 1.107924936859278e+03, 1.108269713170852e+03, 1.108613817300210e+03, 1.108957252200941e+03, - 1.109300020806618e+03, 1.109642126030981e+03, 1.109983570768121e+03, 1.110324357892655e+03, 1.110664490259911e+03, - 1.111003970706092e+03, 1.111342802048455e+03, 1.111680987085484e+03, 1.112018528597054e+03, 1.112355429344604e+03, - 1.112691692071294e+03, 1.113027319502177e+03, 1.113362314344354e+03, 1.113696679287140e+03, 1.114030417002214e+03, - 1.114363530143784e+03, 1.114696021348733e+03, 1.115027893236779e+03, 1.115359148410621e+03, 1.115689789456089e+03, - 1.116019818942296e+03, 1.116349239421776e+03, 1.116678053430638e+03, 1.117006263488702e+03, 1.117333872099640e+03, - 1.117660881751122e+03, 1.117987294914949e+03, 1.118313114047190e+03, 1.118638341588318e+03, 1.118962979963346e+03, - 1.119287031581954e+03, 1.119610498838628e+03, 1.119933384112781e+03, 1.120255689768887e+03, 1.120577418156602e+03, - 1.120898571610897e+03, 1.121219152452176e+03, 1.121539162986400e+03, 1.121858605505211e+03, 1.122177482286048e+03, - 1.122495795592270e+03, 1.122813547673270e+03, 1.123130740764595e+03, 1.123447377088057e+03, 1.123763458851849e+03, - 1.124078988250660e+03, 1.124393967465783e+03, 1.124708398665227e+03, 1.125022284003825e+03, 1.125335625623345e+03, - 1.125648425652594e+03, 1.125960686207525e+03, 1.126272409391344e+03, 1.126583597294608e+03, 1.126894251995334e+03 - }, - { - 1.759646158211660e+00, 5.370565770002817e+00, 9.054638626498587e+00, 1.281569733967865e+01, 1.665790581740634e+01, - 2.058579940182043e+01, 2.460433138741275e+01, 2.871892720476968e+01, 3.293554785254310e+01, 3.726076457835308e+01, - 4.170184732924816e+01, 4.626687018872866e+01, 5.096483794068550e+01, 5.580583914322148e+01, 6.080123278735140e+01, - 6.596387794984686e+01, 7.130841911586724e+01, 7.685164448919579e+01, 8.261294131869165e+01, 8.861488215460238e+01, - 9.488399081522013e+01, 1.014517597285052e+02, 1.083560264678084e+02, 1.156428761296669e+02, 1.233693352196309e+02, - 1.316072958010345e+02, 1.404494259939426e+02, 1.500184349630939e+02, 1.604823233088471e+02, 1.720810686740695e+02, - 1.851771671167039e+02, 2.003621789601490e+02, 2.187189666985901e+02, 2.426508419360667e+02, 2.803010943326496e+02, - 6.521432030130227e+02, 6.773955906748673e+02, 6.942281826309576e+02, 7.072395941741053e+02, 7.179964778999516e+02, - 7.272449221464342e+02, 7.354038623248191e+02, 7.427338327295237e+02, 7.494087450072469e+02, 7.555509362957072e+02, - 7.612500250349448e+02, 7.665738197891652e+02, 7.715749997715916e+02, 7.762953984136125e+02, 7.807688565518455e+02, - 7.850231848983857e+02, 7.890815515171732e+02, 7.929634864662104e+02, 7.966856246034820e+02, 8.002622650324795e+02, - 8.037057994263012e+02, 8.070270448166268e+02, 8.102355055958851e+02, 8.133395822671257e+02, 8.163467395763330e+02, - 8.192636432722026e+02, 8.220962723538220e+02, 8.248500119632056e+02, 8.275297308455099e+02, 8.301398463938243e+02, - 8.326843796224881e+02, 8.351670019072745e+02, 8.375910749469544e+02, 8.399596851065272e+02, 8.422756730748409e+02, - 8.445416595916769e+02, 8.467600678598029e+02, 8.489331431467650e+02, 8.510629699929400e+02, 8.531514873714069e+02, - 8.552005020878375e+02, 8.572117006619923e+02, 8.591866598942639e+02, 8.611268562893375e+02, 8.630336744831631e+02, - 8.649084147978710e+02, 8.667523000313754e+02, 8.685664815733354e+02, 8.703520449265328e+02, 8.721100147020211e+02, - 8.738413591473761e+02, 8.755469942596723e+02, 8.772277875282222e+02, 8.788845613465312e+02, 8.805180961280278e+02, - 8.821291331560270e+02, 8.837183771947377e+02, 8.852864988850330e+02, 8.868341369459806e+02, 8.883619002007856e+02, - 8.898703694437141e+02, 8.913600991627886e+02, 8.928316191314481e+02, 8.942854358809769e+02, 8.957220340642893e+02, - 8.971418777205638e+02, 8.985454114492746e+02, 8.999330615013115e+02, 9.013052367941365e+02, 9.026623298572396e+02, - 9.040047177135785e+02, 9.053327627021454e+02, 9.066468132463145e+02, 9.079472045722283e+02, 9.092342593810729e+02, - 9.105082884787515e+02, 9.117695913661706e+02, 9.130184567930663e+02, 9.142551632780351e+02, 9.154799795972381e+02, - 9.166931652440088e+02, 9.178949708614282e+02, 9.190856386497608e+02, 9.202654027504898e+02, 9.214344896085451e+02, - 9.225931183142071e+02, 9.237415009260393e+02, 9.248798427857232e+02, 9.260083428457867e+02, 9.271271939069900e+02, - 9.282365821330408e+02, 9.293366895111005e+02, 9.304276914712948e+02, 9.315097585395249e+02, 9.325830562427560e+02, - 9.336477453075646e+02, 9.347039816933990e+02, 9.357519174120829e+02, 9.367916997110556e+02, 9.378234719137031e+02, - 9.388473733992719e+02, 9.398635397502477e+02, 9.408721028928101e+02, 9.418731912307652e+02, 9.428669297733190e+02, - 9.438534402570187e+02, 9.448328412622016e+02, 9.458052483242184e+02, 9.467707740397436e+02, 9.477295281684092e+02, - 9.486816177300161e+02, 9.496271470975585e+02, 9.505662180862711e+02, 9.514989300388995e+02, 9.524253799074057e+02, - 9.533456623312541e+02, 9.542598697124838e+02, 9.551680922876994e+02, 9.560704181971550e+02, 9.569669335645297e+02, - 9.578577225053638e+02, 9.587428672730945e+02, 9.596224482597302e+02, 9.604965440672154e+02, 9.613652315617187e+02, - 9.622285859258320e+02, 9.630866806859478e+02, 9.639395878536747e+02, 9.647873778300585e+02, 9.656301195471383e+02, - 9.664678804864158e+02, 9.673007267204332e+02, 9.681287229528490e+02, 9.689519325570748e+02, 9.697704176135335e+02, - 9.705842389455950e+02, 9.713934561542610e+02, 9.721981276516268e+02, 9.729983106931969e+02, 9.737940614090808e+02, - 9.745854348341367e+02, 9.753724849370809e+02, 9.761552646486322e+02, 9.769338258887051e+02, 9.777082195927159e+02, - 9.784784957370053e+02, 9.792447033634509e+02, 9.800068906032614e+02, 9.807651047000217e+02, 9.815193920319878e+02, - 9.822697981336784e+02, 9.830163677167866e+02, 9.837591446904313e+02, 9.844981721807825e+02, 9.852334925500778e+02, - 9.859651474150523e+02, 9.866931776648082e+02, 9.874176234781436e+02, 9.881385243403543e+02, 9.888559190595411e+02, - 9.895698458049823e+02, 9.902803420311240e+02, 9.909874446312518e+02, 9.916911898582445e+02, 9.923916133623536e+02, - 9.930887502048440e+02, 9.937826348712426e+02, 9.944733012842100e+02, 9.951607828160458e+02, 9.958451123008458e+02, - 9.965263220463163e+02, 9.972044438452614e+02, 9.978795089867530e+02, 9.985515482669938e+02, 9.992205919998831e+02, - 9.998866700272974e+02, 1.000549811729091e+03, 1.001210046032833e+03, 1.001867401423278e+03, 1.002521905951592e+03, - 1.003173587244331e+03, 1.003822472512187e+03, 1.004468588558502e+03, 1.005111961787565e+03, 1.005752618212693e+03, - 1.006390583464110e+03, 1.007025882796613e+03, 1.007658541097059e+03, 1.008288582891650e+03, 1.008916032353042e+03, - 1.009540913307279e+03, 1.010163248746308e+03, 1.010783062793383e+03, 1.011400377798094e+03, 1.012015216265965e+03, - 1.012627600388076e+03, 1.013237552047042e+03, 1.013845092822834e+03, 1.014450243998473e+03, 1.015053026565585e+03, - 1.015653461229820e+03, 1.016251568416150e+03, 1.016847368274035e+03, 1.017440880682481e+03, 1.018032125254966e+03, - 1.018621121344263e+03, 1.019207888047146e+03, 1.019792444208994e+03, 1.020374808428283e+03, 1.020954999060983e+03, - 1.021533034224857e+03, 1.022108931803652e+03, 1.022682709451210e+03, 1.023254384595482e+03, 1.023823974442452e+03, - 1.024391495979979e+03, 1.024956965981550e+03, 1.025520401009952e+03, 1.026081817420870e+03, 1.026641231366401e+03, - 1.027198658798495e+03, 1.027754115472322e+03, 1.028307616949568e+03, 1.028859178601660e+03, 1.029408815612924e+03, - 1.029956542983678e+03, 1.030502375533256e+03, 1.031046327902974e+03, 1.031588414559030e+03, 1.032128649795349e+03, - 1.032667047736366e+03, 1.033203622339754e+03, 1.033738387399096e+03, 1.034271356546497e+03, 1.034802543255161e+03, - 1.035331960841891e+03, 1.035859622469561e+03, 1.036385541149525e+03, 1.036909729743988e+03, 1.037432200968318e+03, - 1.037952967393328e+03, 1.038472041447499e+03, 1.038989435419170e+03, 1.039505161458676e+03, 1.040019231580459e+03, - 1.040531657665118e+03, 1.041042451461438e+03, 1.041551624588375e+03, 1.042059188536994e+03, 1.042565154672386e+03, - 1.043069534235533e+03, 1.043572338345153e+03, 1.044073577999494e+03, 1.044573264078114e+03, 1.045071407343609e+03, - 1.045568018443322e+03, 1.046063107911014e+03, 1.046556686168508e+03, 1.047048763527302e+03, 1.047539350190146e+03, - 1.048028456252607e+03, 1.048516091704585e+03, 1.049002266431817e+03, 1.049486990217349e+03, 1.049970272742979e+03, - 1.050452123590679e+03, 1.050932552243991e+03, 1.051411568089392e+03, 1.051889180417645e+03, 1.052365398425121e+03, - 1.052840231215094e+03, 1.053313687799024e+03, 1.053785777097807e+03, 1.054256507943009e+03, 1.054725889078079e+03, - 1.055193929159539e+03, 1.055660636758157e+03, 1.056126020360091e+03, 1.056590088368028e+03, 1.057052849102293e+03, - 1.057514310801942e+03, 1.057974481625836e+03, 1.058433369653702e+03, 1.058890982887167e+03, 1.059347329250789e+03, - 1.059802416593049e+03, 1.060256252687354e+03, 1.060708845233000e+03, 1.061160201856131e+03, 1.061610330110684e+03, - 1.062059237479308e+03, 1.062506931374281e+03, 1.062953419138403e+03, 1.063398708045876e+03, 1.063842805303175e+03, - 1.064285718049902e+03, 1.064727453359622e+03, 1.065168018240692e+03, 1.065607419637079e+03, 1.066045664429151e+03, - 1.066482759434476e+03, 1.066918711408590e+03, 1.067353527045765e+03, 1.067787212979760e+03, 1.068219775784563e+03, - 1.068651221975115e+03, 1.069081558008032e+03, 1.069510790282313e+03, 1.069938925140029e+03, 1.070365968867016e+03, - 1.070791927693547e+03, 1.071216807794993e+03, 1.071640615292483e+03, 1.072063356253546e+03, 1.072485036692747e+03, - 1.072905662572310e+03, 1.073325239802738e+03, 1.073743774243420e+03, 1.074161271703223e+03, 1.074577737941090e+03, - 1.074993178666615e+03, 1.075407599540614e+03, 1.075821006175694e+03, 1.076233404136806e+03, 1.076644798941787e+03, - 1.077055196061911e+03, 1.077464600922410e+03, 1.077873018903002e+03, 1.078280455338409e+03, 1.078686915518864e+03, - 1.079092404690613e+03, 1.079496928056411e+03, 1.079900490776007e+03, 1.080303097966628e+03, 1.080704754703452e+03, - 1.081105466020072e+03, 1.081505236908963e+03, 1.081904072321930e+03, 1.082301977170561e+03, 1.082698956326665e+03, - 1.083095014622709e+03, 1.083490156852249e+03, 1.083884387770352e+03, 1.084277712094014e+03, 1.084670134502574e+03, - 1.085061659638117e+03, 1.085452292105878e+03, 1.085842036474636e+03, 1.086230897277108e+03, 1.086618879010324e+03, - 1.087005986136021e+03, 1.087392223081004e+03, 1.087777594237526e+03, 1.088162103963646e+03, 1.088545756583591e+03, - 1.088928556388114e+03, 1.089310507634837e+03, 1.089691614548607e+03, 1.090071881321828e+03, 1.090451312114800e+03, - 1.090829911056058e+03, 1.091207682242688e+03, 1.091584629740662e+03, 1.091960757585150e+03, 1.092336069780840e+03, - 1.092710570302246e+03, 1.093084263094017e+03, 1.093457152071240e+03, 1.093829241119741e+03, 1.094200534096374e+03, - 1.094571034829324e+03, 1.094940747118387e+03, 1.095309674735252e+03, 1.095677821423793e+03, 1.096045190900337e+03, - 1.096411786853939e+03, 1.096777612946656e+03, 1.097142672813812e+03, 1.097506970064262e+03, 1.097870508280650e+03, - 1.098233291019672e+03, 1.098595321812324e+03, 1.098956604164155e+03, 1.099317141555519e+03, 1.099676937441811e+03, - 1.100035995253718e+03, 1.100394318397450e+03, 1.100751910254982e+03, 1.101108774184284e+03, 1.101464913519551e+03, - 1.101820331571432e+03, 1.102175031627253e+03, 1.102529016951240e+03, 1.102882290784740e+03, 1.103234856346432e+03, - 1.103586716832549e+03, 1.103937875417083e+03, 1.104288335251999e+03, 1.104638099467435e+03, 1.104987171171915e+03, - 1.105335553452542e+03, 1.105683249375205e+03, 1.106030261984769e+03, 1.106376594305275e+03, 1.106722249340130e+03, - 1.107067230072298e+03, 1.107411539464488e+03, 1.107755180459337e+03, 1.108098155979600e+03, 1.108440468928325e+03, - 1.108782122189035e+03, 1.109123118625908e+03, 1.109463461083946e+03, 1.109803152389156e+03, 1.110142195348716e+03, - 1.110480592751145e+03, 1.110818347366473e+03, 1.111155461946404e+03, 1.111491939224482e+03, 1.111827781916253e+03, - 1.112162992719419e+03, 1.112497574314006e+03, 1.112831529362514e+03, 1.113164860510074e+03, 1.113497570384599e+03, - 1.113829661596938e+03, 1.114161136741025e+03, 1.114491998394025e+03, 1.114822249116483e+03, 1.115151891452468e+03, - 1.115480927929715e+03, 1.115809361059768e+03, 1.116137193338120e+03, 1.116464427244349e+03, 1.116791065242261e+03, - 1.117117109780018e+03, 1.117442563290278e+03, 1.117767428190324e+03, 1.118091706882198e+03, 1.118415401752829e+03, - 1.118738515174161e+03, 1.119061049503283e+03, 1.119383007082549e+03, 1.119704390239710e+03, 1.120025201288030e+03, - 1.120345442526411e+03, 1.120665116239516e+03, 1.120984224697879e+03, 1.121302770158035e+03, 1.121620754862628e+03, - 1.121938181040530e+03, 1.122255050906953e+03, 1.122571366663565e+03, 1.122887130498598e+03, 1.123202344586965e+03, - 1.123517011090360e+03, 1.123831132157377e+03, 1.124144709923608e+03, 1.124457746511756e+03, 1.124770244031736e+03 - }, - { - 1.753632059027257e+00, 5.351611249853827e+00, 9.021616572172205e+00, 1.276736626236109e+01, 1.659289479091158e+01, - 2.050259048929611e+01, 2.450123904184888e+01, 2.859407400092714e+01, 3.278683574434611e+01, 3.708584066130366e+01, - 4.149806280600863e+01, 4.603123086199034e+01, 5.069394405535617e+01, 5.549581171820162e+01, 6.044762263993844e+01, - 6.556155231000896e+01, 7.085141888160165e+01, 7.633300252250081e+01, 8.202444830548500e+01, 8.794678077534249e+01, - 9.412457017812932e+01, 1.005868083036480e+02, 1.073680797959698e+02, 1.145101593176195e+02, 1.220642382367975e+02, - 1.300941094622738e+02, 1.386808606837394e+02, 1.479300398863622e+02, 1.579830709310434e+02, 1.690364189581546e+02, - 1.813759695763958e+02, 1.954442865028346e+02, 2.119888768230097e+02, 2.324524257796423e+02, 2.603609700682213e+02, - 3.116771334582932e+02, 6.386030708148930e+02, 6.665563778439038e+02, 6.847257296140039e+02, 6.985860417609099e+02, - 7.099473628294924e+02, 7.196567259417725e+02, 7.281838190360186e+02, 7.358178700043339e+02, 7.427503751731374e+02, - 7.491151117352788e+02, 7.550094956065492e+02, 7.605068542592787e+02, 7.656638975064167e+02, 7.705254818183772e+02, - 7.751277679663959e+02, 7.795003829431066e+02, 7.836679419482515e+02, 7.876511460754599e+02, 7.914675909164964e+02, - 7.951323735037114e+02, 7.986585555167862e+02, 8.020575221271434e+02, 8.053392637507428e+02, 8.085125999770248e+02, - 8.115853595155569e+02, 8.145645262595193e+02, 8.174563589398913e+02, 8.202664899737809e+02, 8.230000077588272e+02, - 8.256615256760184e+02, 8.282552403299479e+02, 8.307849810058602e+02, 8.332542519064704e+02, 8.356662684131053e+02, - 8.380239883698166e+02, 8.403301391977044e+02, 8.425872414963723e+02, 8.447976296705856e+02, 8.469634700254746e+02, - 8.490867766976762e+02, 8.511694257284902e+02, 8.532131675352989e+02, 8.552196379968784e+02, 8.571903683347796e+02, - 8.591267939454285e+02, 8.610302623147174e+02, 8.629020401277968e+02, 8.647433196708668e+02, 8.665552246083355e+02, - 8.683388152074178e+02, 8.700950930726908e+02, 8.718250054449436e+02, 8.735294491117633e+02, 8.752092739713160e+02, - 8.768652862857123e+02, 8.784982516559255e+02, 8.801088977464705e+02, 8.816979167847256e+02, 8.832659678569759e+02, - 8.848136790207039e+02, 8.863416492505769e+02, 8.878504502335792e+02, 8.893406280271724e+02, 8.908127045928305e+02, - 8.922671792160527e+02, 8.937045298227987e+02, 8.951252142013041e+02, 8.965296711373209e+02, 8.979183214700641e+02, - 8.992915690754153e+02, 9.006498017823341e+02, 9.019933922278510e+02, 9.033226986555213e+02, 9.046380656617835e+02, - 9.059398248942426e+02, 9.072282957055584e+02, 9.085037857662970e+02, 9.097665916397833e+02, 9.110169993217721e+02, - 9.122552847474846e+02, 9.134817142683553e+02, 9.146965451006433e+02, 9.159000257478770e+02, 9.170923963989522e+02, - 9.182738893035482e+02, 9.194447291263971e+02, 9.206051332822632e+02, 9.217553122788474e+02, 9.228954700299744e+02, - 9.240258040974796e+02, 9.251465049820799e+02, 9.262577594469818e+02, 9.273597470304893e+02, 9.284526423554121e+02, - 9.295366148982515e+02, 9.306118290247582e+02, 9.316784448830105e+02, 9.327366175121228e+02, 9.337864977591189e+02, - 9.348282322542124e+02, 9.358619635718649e+02, 9.368878303827341e+02, 9.379059675987268e+02, 9.389165065112981e+02, - 9.399195749233554e+02, 9.409152972751333e+02, 9.419037947643586e+02, 9.428851854610300e+02, 9.438595844170812e+02, - 9.448271037712186e+02, 9.457878528491826e+02, 9.467419382596580e+02, 9.476894639860843e+02, 9.486305314745557e+02, - 9.495652397180191e+02, 9.504936853369553e+02, 9.514159626567191e+02, 9.523321637817081e+02, 9.532423786665071e+02, - 9.541466951971628e+02, 9.550451992034878e+02, 9.559379746038603e+02, 9.568251034096951e+02, 9.577066657979311e+02, - 9.585827401443596e+02, 9.594534031691488e+02, 9.603187298481192e+02, 9.611787935579329e+02, 9.620336660995737e+02, - 9.628834177444229e+02, 9.637281172786235e+02, 9.645678320458335e+02, 9.654026279884105e+02, 9.662325696871295e+02, - 9.670577203994600e+02, 9.678781420965014e+02, 9.686938954986042e+02, 9.695050401097511e+02, 9.703116342507434e+02, - 9.711137350912416e+02, 9.719113986807114e+02, 9.727046799783175e+02, 9.734936328818109e+02, 9.742783102554459e+02, - 9.750587639569708e+02, 9.758350448637287e+02, 9.766072028979000e+02, 9.773752870509237e+02, 9.781393454071313e+02, - 9.788994251666194e+02, 9.796555726673946e+02, 9.804078334068175e+02, 9.811562520623668e+02, 9.819008725117627e+02, - 9.826417378523621e+02, 9.833788904423287e+02, 9.841123718297326e+02, 9.848422229053390e+02, 9.855684838287985e+02, - 9.862911940683814e+02, 9.870103924171941e+02, 9.877261170088946e+02, 9.884384053329567e+02, 9.891472942494853e+02, - 9.898528200035945e+02, 9.905550182393827e+02, 9.912539240134882e+02, 9.919495718082746e+02, 9.926419955446316e+02, - 9.933312285944187e+02, 9.940173037925571e+02, 9.947002534487890e+02, 9.953801093591056e+02, 9.960569028168641e+02, - 9.967306646236001e+02, 9.974014250995418e+02, 9.980692140938463e+02, 9.987340609945511e+02, 9.993959947382724e+02, - 1.000055043819631e+03, 1.000711236300439e+03, 1.001364599818641e+03, 1.002015161597022e+03, 1.002662948451693e+03, - 1.003307986800343e+03, 1.003950302670301e+03, 1.004589921706371e+03, 1.005226869178483e+03, 1.005861169989137e+03, - 1.006492848680676e+03, 1.007121928950236e+03, 1.007748435606874e+03, 1.008372391679970e+03, 1.008993820340296e+03, - 1.009612744432160e+03, 1.010229186479661e+03, 1.010843168692785e+03, 1.011454712973359e+03, 1.012063840920867e+03, - 1.012670573838113e+03, 1.013274932736767e+03, 1.013876938342763e+03, 1.014476611101586e+03, 1.015073971183421e+03, - 1.015669038488196e+03, 1.016261832650493e+03, 1.016852373044363e+03, 1.017440678788015e+03, 1.018026768748407e+03, - 1.018610661545733e+03, 1.019192375557802e+03, 1.019771928924326e+03, 1.020349339551111e+03, 1.020924625114144e+03, - 1.021497803063608e+03, 1.022068890627795e+03, 1.022637904816936e+03, 1.023204862426947e+03, 1.023769780043096e+03, - 1.024332674043592e+03, 1.024893560603091e+03, 1.025452455696129e+03, 1.026009375100485e+03, 1.026564334400469e+03, - 1.027117348990143e+03, 1.027668434076471e+03, 1.028217604682404e+03, 1.028764875649907e+03, 1.029310261642910e+03, - 1.029853777150212e+03, 1.030395436488316e+03, 1.030935253804208e+03, 1.031473243078081e+03, 1.032009418126004e+03, - 1.032543792602533e+03, 1.033076380003277e+03, 1.033607193667400e+03, 1.034136246780087e+03, 1.034663552374956e+03, - 1.035189123336412e+03, 1.035712972401975e+03, 1.036235112164542e+03, 1.036755555074618e+03, 1.037274313442498e+03, - 1.037791399440410e+03, 1.038306825104610e+03, 1.038820602337447e+03, 1.039332742909376e+03, 1.039843258460950e+03, - 1.040352160504749e+03, 1.040859460427299e+03, 1.041365169490941e+03, 1.041869298835661e+03, 1.042371859480896e+03, - 1.042872862327304e+03, 1.043372318158495e+03, 1.043870237642736e+03, 1.044366631334623e+03, 1.044861509676724e+03, - 1.045354883001187e+03, 1.045846761531325e+03, 1.046337155383168e+03, 1.046826074566989e+03, 1.047313528988799e+03, - 1.047799528451826e+03, 1.048284082657950e+03, 1.048767201209131e+03, 1.049248893608798e+03, 1.049729169263219e+03, - 1.050208037482848e+03, 1.050685507483649e+03, 1.051161588388389e+03, 1.051636289227921e+03, 1.052109618942435e+03, - 1.052581586382688e+03, 1.053052200311223e+03, 1.053521469403553e+03, 1.053989402249334e+03, 1.054456007353518e+03, - 1.054921293137477e+03, 1.055385267940125e+03, 1.055847940019002e+03, 1.056309317551357e+03, 1.056769408635199e+03, - 1.057228221290339e+03, 1.057685763459414e+03, 1.058142043008888e+03, 1.058597067730047e+03, 1.059050845339965e+03, - 1.059503383482467e+03, 1.059954689729066e+03, 1.060404771579892e+03, 1.060853636464597e+03, 1.061301291743262e+03, - 1.061747744707268e+03, 1.062193002580169e+03, 1.062637072518547e+03, 1.063079961612850e+03, 1.063521676888219e+03, - 1.063962225305304e+03, 1.064401613761064e+03, 1.064839849089555e+03, 1.065276938062706e+03, 1.065712887391088e+03, - 1.066147703724660e+03, 1.066581393653511e+03, 1.067013963708593e+03, 1.067445420362435e+03, 1.067875770029855e+03, - 1.068305019068647e+03, 1.068733173780279e+03, 1.069160240410558e+03, 1.069586225150301e+03, 1.070011134135987e+03, - 1.070434973450403e+03, 1.070857749123280e+03, 1.071279467131918e+03, 1.071700133401804e+03, 1.072119753807221e+03, - 1.072538334171840e+03, 1.072955880269318e+03, 1.073372397823873e+03, 1.073787892510859e+03, 1.074202369957330e+03, - 1.074615835742597e+03, 1.075028295398773e+03, 1.075439754411317e+03, 1.075850218219560e+03, 1.076259692217236e+03, - 1.076668181752997e+03, 1.077075692130918e+03, 1.077482228611007e+03, 1.077887796409695e+03, 1.078292400700325e+03, - 1.078696046613633e+03, 1.079098739238223e+03, 1.079500483621037e+03, 1.079901284767813e+03, 1.080301147643541e+03, - 1.080700077172909e+03, 1.081098078240752e+03, 1.081495155692479e+03, 1.081891314334514e+03, 1.082286558934707e+03, - 1.082680894222765e+03, 1.083074324890655e+03, 1.083466855593020e+03, 1.083858490947570e+03, 1.084249235535485e+03, - 1.084639093901809e+03, 1.085028070555825e+03, 1.085416169971442e+03, 1.085803396587572e+03, 1.086189754808492e+03, - 1.086575249004219e+03, 1.086959883510863e+03, 1.087343662630987e+03, 1.087726590633953e+03, 1.088108671756273e+03, - 1.088489910201951e+03, 1.088870310142812e+03, 1.089249875718847e+03, 1.089628611038532e+03, 1.090006520179154e+03, - 1.090383607187136e+03, 1.090759876078346e+03, 1.091135330838414e+03, 1.091509975423035e+03, 1.091883813758277e+03, - 1.092256849740879e+03, 1.092629087238547e+03, 1.093000530090247e+03, 1.093371182106492e+03, 1.093741047069628e+03, - 1.094110128734119e+03, 1.094478430826816e+03, 1.094845957047239e+03, 1.095212711067846e+03, 1.095578696534298e+03, - 1.095943917065727e+03, 1.096308376254993e+03, 1.096672077668944e+03, 1.097035024848671e+03, 1.097397221309757e+03, - 1.097758670542528e+03, 1.098119376012294e+03, 1.098479341159596e+03, 1.098838569400443e+03, 1.099197064126546e+03, - 1.099554828705558e+03, 1.099911866481296e+03, 1.100268180773975e+03, 1.100623774880433e+03, 1.100978652074349e+03, - 1.101332815606467e+03, 1.101686268704810e+03, 1.102039014574898e+03, 1.102391056399957e+03, 1.102742397341128e+03, - 1.103093040537676e+03, 1.103442989107197e+03, 1.103792246145811e+03, 1.104140814728373e+03, 1.104488697908661e+03, - 1.104835898719577e+03, 1.105182420173338e+03, 1.105528265261666e+03, 1.105873436955976e+03, 1.106217938207564e+03, - 1.106561771947788e+03, 1.106904941088254e+03, 1.107247448520993e+03, 1.107589297118637e+03, 1.107930489734602e+03, - 1.108271029203252e+03, 1.108610918340075e+03, 1.108950159941858e+03, 1.109288756786845e+03, 1.109626711634912e+03, - 1.109964027227723e+03, 1.110300706288900e+03, 1.110636751524177e+03, 1.110972165621562e+03, 1.111306951251493e+03, - 1.111641111066993e+03, 1.111974647703826e+03, 1.112307563780643e+03, 1.112639861899135e+03, 1.112971544644184e+03, - 1.113302614584007e+03, 1.113633074270297e+03, 1.113962926238377e+03, 1.114292173007331e+03, 1.114620817080152e+03, - 1.114948860943875e+03, 1.115276307069720e+03, 1.115603157913223e+03, 1.115929415914373e+03, 1.116255083497746e+03, - 1.116580163072632e+03, 1.116904657033169e+03, 1.117228567758473e+03, 1.117551897612758e+03, 1.117874648945472e+03, - 1.118196824091413e+03, 1.118518425370856e+03, 1.118839455089676e+03, 1.119159915539468e+03, 1.119479808997663e+03, - 1.119799137727651e+03, 1.120117903978895e+03, 1.120436109987049e+03, 1.120753757974069e+03, 1.121070850148330e+03, - 1.121387388704735e+03, 1.121703375824828e+03, 1.122018813676902e+03, 1.122333704416111e+03, 1.122648050184574e+03 - }, - { - 1.747659611828432e+00, 5.332796710757316e+00, 8.988854365426702e+00, 1.271944018022531e+01, 1.652846365830920e+01, - 2.042017147962093e+01, 2.439918817160943e+01, 2.847056321609146e+01, 3.263982586484059e+01, 3.691304925915928e+01, - 4.129692584347427e+01, 4.579885658673009e+01, 5.042705721077700e+01, 5.519068553491932e+01, 6.009999526667289e+01, - 6.516652322615323e+01, 7.040331927021967e+01, 7.582523135901660e+01, 8.144926270278546e+01, 8.729502439391121e+01, - 9.338531640325664e+01, 9.974688397997900e+01, 1.064114181348679e+02, 1.134169027960040e+02, 1.208094658721784e+02, - 1.286459824127509e+02, 1.369978348839282e+02, 1.459565187114674e+02, 1.556423164104066e+02, 1.662183418837789e+02, - 1.779145902065660e+02, 1.910721712494387e+02, 2.062327457882489e+02, 2.243449823849654e+02, 2.473478699672924e+02, - 2.805378733710326e+02, 3.634431299908570e+02, 6.254813035599956e+02, 6.558679856765530e+02, 6.753104092363635e+02, - 6.899943310095643e+02, 7.019476466818353e+02, 7.121108106526021e+02, 7.210014384109655e+02, 7.289362466235776e+02, - 7.361237580825117e+02, 7.427089142383425e+02, 7.487967838920495e+02, 7.544661326581772e+02, 7.597776524296729e+02, - 7.647791910872882e+02, 7.695092069231373e+02, 7.739991260895454e+02, 7.782749970528438e+02, 7.823586802266300e+02, - 7.862687217988788e+02, 7.900210078085244e+02, 7.936292620355629e+02, 7.971054307583348e+02, 8.004599841533063e+02, - 8.037021553197851e+02, 8.068401319696053e+02, 8.098812117310740e+02, 8.128319291524118e+02, 8.156981604537586e+02, - 8.184852106082401e+02, 8.211978862596457e+02, 8.238405571905341e+02, 8.264172084609129e+02, 8.289314848886924e+02, - 8.313867292004430e+02, 8.337860149168040e+02, 8.361321748316263e+02, 8.384278257829619e+02, 8.406753902869854e+02, - 8.428771155047946e+02, 8.450350899311030e+02, 8.471512581285355e+02, 8.492274337783032e+02, 8.512653112748696e+02, - 8.532664760567646e+02, 8.552324138365216e+02, 8.571645188684962e+02, 8.590641013732004e+02, 8.609323942199201e+02, - 8.627705589552579e+02, 8.645796912533052e+02, 8.663608258530688e+02, 8.681149410401933e+02, 8.698429627227040e+02, - 8.715457681442740e+02, 8.732241892731309e+02, 8.748790159000977e+02, 8.765109984753029e+02, 8.781208507096248e+02, - 8.797092519639431e+02, 8.812768494466768e+02, 8.828242602377982e+02, 8.843520731555307e+02, 8.858608504802064e+02, - 8.873511295482033e+02, 8.888234242275646e+02, 8.902782262856737e+02, 8.917160066583574e+02, 8.931372166288119e+02, - 8.945422889239351e+02, 8.959316387349368e+02, 8.973056646684030e+02, 8.986647496334409e+02, 9.000092616699892e+02, - 9.013395547229183e+02, 9.026559693661341e+02, 9.039588334805021e+02, 9.052484628890929e+02, 9.065251619529363e+02, - 9.077892241301959e+02, 9.090409325014242e+02, 9.102805602633513e+02, 9.115083711934362e+02, 9.127246200872452e+02, - 9.139295531705343e+02, 9.151234084877879e+02, 9.163064162688016e+02, 9.174787992800113e+02, 9.186407731912891e+02, - 9.197925468609363e+02, 9.209343226041448e+02, 9.220662951928475e+02, 9.231886562624145e+02, 9.243015894078225e+02, - 9.254052733423142e+02, 9.264998814856765e+02, 9.275855820127574e+02, 9.286625387274997e+02, 9.297309102172569e+02, - 9.307908507470315e+02, 9.318425102480171e+02, 9.328860344864579e+02, 9.339215652153523e+02, 9.349492403273919e+02, - 9.359691939968451e+02, 9.369815568155962e+02, 9.379864559229345e+02, 9.389840151294509e+02, 9.399743550353364e+02, - 9.409575931434247e+02, 9.419338439672164e+02, 9.429032191341721e+02, 9.438658274845296e+02, 9.448217751658639e+02, - 9.457711657236084e+02, 9.467141001877502e+02, 9.476506771559013e+02, 9.485809928729084e+02, 9.495051413071852e+02, - 9.504232142376935e+02, 9.513353012678147e+02, 9.522414899794773e+02, 9.531418659385832e+02, 9.540365127503031e+02, - 9.549255122090501e+02, 9.558089442179278e+02, 9.566868869378121e+02, 9.575594168164913e+02, 9.584266086397703e+02, - 9.592885355806404e+02, 9.601452692466164e+02, 9.609968797253258e+02, 9.618434356284154e+02, 9.626850041338678e+02, - 9.635216510267758e+02, 9.643534407386575e+02, 9.651804363853771e+02, 9.660026998037097e+02, 9.668202915866395e+02, - 9.676332711174156e+02, 9.684416966024349e+02, 9.692456251029969e+02, 9.700451125659748e+02, 9.708402138534479e+02, - 9.716309827713388e+02, 9.724174720970976e+02, 9.731997336064671e+02, 9.739778180993665e+02, 9.747517754249311e+02, - 9.755216545057431e+02, 9.762875033834615e+02, 9.770493691516285e+02, 9.778072981142626e+02, 9.785613357148328e+02, - 9.793115265802675e+02, 9.800579145409317e+02, 9.808005426499802e+02, 9.815394532021168e+02, 9.822746877517856e+02, - 9.830062871308031e+02, 9.837342914654657e+02, 9.844587401931408e+02, 9.851796720783643e+02, 9.858971252284682e+02, - 9.866111371087369e+02, 9.873217445571381e+02, 9.880289837986073e+02, 9.887328904589375e+02, 9.894334995782599e+02, - 9.901308456241450e+02, 9.908249625043327e+02, 9.915158835791032e+02, 9.922036416733027e+02, 9.928882690880357e+02, - 9.935697976120324e+02, 9.942482585327026e+02, 9.949236826468950e+02, 9.955961002713553e+02, 9.962655412529051e+02, - 9.969320349783549e+02, 9.975956103841360e+02, 9.982562959656997e+02, 9.989141197866451e+02, 9.995691094876255e+02, - 1.000221292295012e+03, 1.000870695029337e+03, 1.001517344113522e+03, 1.002161265580885e+03, 1.002802485082955e+03, - 1.003441027897081e+03, 1.004076918444280e+03, 1.004710182236384e+03, 1.005340843000363e+03, 1.005968924589208e+03, - 1.006594450517019e+03, 1.007217443965552e+03, 1.007837927790598e+03, 1.008455924528217e+03, 1.009071456400806e+03, - 1.009684545323041e+03, 1.010295212907659e+03, 1.010903480471109e+03, 1.011509369039075e+03, 1.012112899351861e+03, - 1.012714091869649e+03, 1.013312966777644e+03, 1.013909543991088e+03, 1.014503843160166e+03, 1.015095883674795e+03, - 1.015685684669307e+03, 1.016273265027023e+03, 1.016858643384723e+03, 1.017441838137019e+03, 1.018022867440622e+03, - 1.018601749218526e+03, 1.019178501164087e+03, 1.019753140745019e+03, 1.020325685207299e+03, 1.020896151578988e+03, - 1.021464556673968e+03, 1.022030917095601e+03, 1.022595249240300e+03, 1.023157569301035e+03, 1.023717893270757e+03, - 1.024276236945749e+03, 1.024832615928908e+03, 1.025387045632961e+03, 1.025939541283600e+03, 1.026490117922575e+03, - 1.027038790410696e+03, 1.027585573430793e+03, 1.028130481490604e+03, 1.028673528925609e+03, 1.029214729901804e+03, - 1.029754098418416e+03, 1.030291648310568e+03, 1.030827393251892e+03, 1.031361346757073e+03, 1.031893522184370e+03, - 1.032423932738057e+03, 1.032952591470840e+03, 1.033479511286210e+03, 1.034004704940759e+03, 1.034528185046445e+03, - 1.035049964072816e+03, 1.035570054349190e+03, 1.036088468066793e+03, 1.036605217280855e+03, 1.037120313912667e+03, - 1.037633769751596e+03, 1.038145596457066e+03, 1.038655805560498e+03, 1.039164408467214e+03, 1.039671416458309e+03, - 1.040176840692478e+03, 1.040680692207821e+03, 1.041182981923609e+03, 1.041683720642014e+03, 1.042182919049811e+03, - 1.042680587720051e+03, 1.043176737113700e+03, 1.043671377581246e+03, 1.044164519364280e+03, 1.044656172597053e+03, - 1.045146347307991e+03, 1.045635053421203e+03, 1.046122300757940e+03, 1.046608099038045e+03, 1.047092457881370e+03, - 1.047575386809171e+03, 1.048056895245471e+03, 1.048536992518409e+03, 1.049015687861563e+03, 1.049492990415244e+03, - 1.049968909227770e+03, 1.050443453256728e+03, 1.050916631370197e+03, 1.051388452347965e+03, 1.051858924882712e+03, - 1.052328057581192e+03, 1.052795858965370e+03, 1.053262337473561e+03, 1.053727501461539e+03, 1.054191359203629e+03, - 1.054653918893783e+03, 1.055115188646638e+03, 1.055575176498552e+03, 1.056033890408628e+03, 1.056491338259721e+03, - 1.056947527859422e+03, 1.057402466941035e+03, 1.057856163164531e+03, 1.058308624117491e+03, 1.058759857316028e+03, - 1.059209870205704e+03, 1.059658670162422e+03, 1.060106264493307e+03, 1.060552660437576e+03, 1.060997865167394e+03, - 1.061441885788709e+03, 1.061884729342082e+03, 1.062326402803503e+03, 1.062766913085188e+03, 1.063206267036371e+03, - 1.063644471444081e+03, 1.064081533033901e+03, 1.064517458470727e+03, 1.064952254359505e+03, 1.065385927245962e+03, - 1.065818483617323e+03, 1.066249929903019e+03, 1.066680272475383e+03, 1.067109517650337e+03, 1.067537671688066e+03, - 1.067964740793685e+03, 1.068390731117890e+03, 1.068815648757612e+03, 1.069239499756640e+03, 1.069662290106263e+03, - 1.070084025745870e+03, 1.070504712563573e+03, 1.070924356396794e+03, 1.071342963032864e+03, 1.071760538209597e+03, - 1.072177087615869e+03, 1.072592616892178e+03, 1.073007131631203e+03, 1.073420637378350e+03, 1.073833139632294e+03, - 1.074244643845510e+03, 1.074655155424799e+03, 1.075064679731805e+03, 1.075473222083526e+03, 1.075880787752812e+03, - 1.076287381968866e+03, 1.076693009917733e+03, 1.077097676742774e+03, 1.077501387545147e+03, 1.077904147384277e+03, - 1.078305961278312e+03, 1.078706834204580e+03, 1.079106771100040e+03, 1.079505776861723e+03, 1.079903856347168e+03, - 1.080301014374853e+03, 1.080697255724619e+03, 1.081092585138091e+03, 1.081487007319088e+03, 1.081880526934031e+03, - 1.082273148612348e+03, 1.082664876946866e+03, 1.083055716494205e+03, 1.083445671775160e+03, 1.083834747275089e+03, - 1.084222947444279e+03, 1.084610276698325e+03, 1.084996739418489e+03, 1.085382339952067e+03, 1.085767082612738e+03, - 1.086150971680919e+03, 1.086534011404113e+03, 1.086916205997249e+03, 1.087297559643018e+03, 1.087678076492209e+03, - 1.088057760664037e+03, 1.088436616246467e+03, 1.088814647296535e+03, 1.089191857840661e+03, 1.089568251874967e+03, - 1.089943833365582e+03, 1.090318606248944e+03, 1.090692574432102e+03, 1.091065741793015e+03, 1.091438112180840e+03, - 1.091809689416227e+03, 1.092180477291597e+03, 1.092550479571428e+03, 1.092919699992533e+03, 1.093288142264335e+03, - 1.093655810069135e+03, 1.094022707062386e+03, 1.094388836872949e+03, 1.094754203103362e+03, 1.095118809330094e+03, - 1.095482659103801e+03, 1.095845755949578e+03, 1.096208103367205e+03, 1.096569704831395e+03, 1.096930563792039e+03, - 1.097290683674438e+03, 1.097650067879546e+03, 1.098008719784203e+03, 1.098366642741364e+03, 1.098723840080329e+03, - 1.099080315106964e+03, 1.099436071103932e+03, 1.099791111330906e+03, 1.100145439024789e+03, 1.100499057399926e+03, - 1.100851969648323e+03, 1.101204178939849e+03, 1.101555688422449e+03, 1.101906501222346e+03, 1.102256620444243e+03, - 1.102606049171524e+03, 1.102954790466453e+03, 1.103302847370368e+03, 1.103650222903874e+03, 1.103996920067033e+03, - 1.104342941839554e+03, 1.104688291180981e+03, 1.105032971030872e+03, 1.105376984308989e+03, 1.105720333915469e+03, - 1.106063022731012e+03, 1.106405053617048e+03, 1.106746429415915e+03, 1.107087152951033e+03, 1.107427227027069e+03, - 1.107766654430111e+03, 1.108105437927829e+03, 1.108443580269642e+03, 1.108781084186880e+03, 1.109117952392945e+03, - 1.109454187583471e+03, 1.109789792436477e+03, 1.110124769612528e+03, 1.110459121754883e+03, 1.110792851489652e+03, - 1.111125961425942e+03, 1.111458454156009e+03, 1.111790332255404e+03, 1.112121598283115e+03, 1.112452254781717e+03, - 1.112782304277510e+03, 1.113111749280658e+03, 1.113440592285333e+03, 1.113768835769849e+03, 1.114096482196800e+03, - 1.114423534013193e+03, 1.114749993650584e+03, 1.115075863525204e+03, 1.115401146038096e+03, 1.115725843575240e+03, - 1.116049958507683e+03, 1.116373493191661e+03, 1.116696449968729e+03, 1.117018831165881e+03, 1.117340639095673e+03, - 1.117661876056345e+03, 1.117982544331941e+03, 1.118302646192424e+03, 1.118622183893796e+03, 1.118941159678214e+03, - 1.119259575774104e+03, 1.119577434396275e+03, 1.119894737746028e+03, 1.120211488011274e+03, 1.120527687366639e+03 - }, - { - 1.741728375053458e+00, 5.314120505442629e+00, 8.956348641374943e+00, 1.267191336013246e+01, 1.646460349081462e+01, - 2.033852919503409e+01, 2.429816000673557e+01, 2.834836877129105e+01, 3.249448262535235e+01, 3.674234244260142e+01, - 4.109837251465464e+01, 4.556966269090073e+01, 5.016406579211682e+01, 5.489031389229089e+01, 5.975815810161417e+01, - 6.477853788260066e+01, 6.996378783864957e+01, 7.532789254890626e+01, 8.088680371411394e+01, 8.665883912927421e+01, - 9.266519059747959e+01, 9.893057910144233e+01, 1.054841124082500e+02, 1.123604262449665e+02, 1.196012312063083e+02, - 1.272574543105828e+02, 1.353922762488972e+02, 1.440855617316300e+02, 1.534405381457939e+02, 1.635942678381166e+02, - 1.747348740534539e+02, 1.871316179325121e+02, 2.011915983867612e+02, 2.175781987103068e+02, 2.374973861173002e+02, - 2.635667035564218e+02, 3.038625501683057e+02, 4.806304025070923e+02, 6.131723778719374e+02, 6.454701148335959e+02, - 6.660547262802207e+02, 6.815089489761624e+02, 6.940276068532737e+02, 7.046293961685642e+02, 7.138739965734985e+02, - 7.221030065846167e+02, 7.295407056919635e+02, 7.363425377636316e+02, 7.426208595427353e+02, 7.484596629644274e+02, - 7.539234927497058e+02, 7.590631052379453e+02, 7.639192002267218e+02, 7.685249632733555e+02, 7.729078465586872e+02, - 7.770908469404263e+02, 7.810934428761366e+02, 7.849322943381262e+02, 7.886217745492073e+02, 7.921743801041504e+02, - 7.956010516391838e+02, 7.989114276830152e+02, 8.021140478894411e+02, 8.052165174275424e+02, 8.082256412118306e+02, - 8.111475344578669e+02, 8.139877144666757e+02, 8.167511773867494e+02, 8.194424628496680e+02, 8.220657087382966e+02, - 8.246246978656754e+02, 8.271228979759559e+02, 8.295634961966523e+02, 8.319494288523848e+02, 8.342834073789102e+02, - 8.365679409410235e+02, 8.388053562504845e+02, 8.409978149942418e+02, 8.431473292140034e+02, 8.452557749221926e+02, - 8.473249041936463e+02, 8.493563559349898e+02, 8.513516655028074e+02, 8.533122733162317e+02, 8.552395325883064e+02, - 8.571347162828195e+02, 8.589990233883600e+02, 8.608335845888713e+02, 8.626394673993490e+02, 8.644176808263342e+02, - 8.661691796052137e+02, 8.678948680597363e+02, 8.695956036235987e+02, 8.712722000590633e+02, 8.729254304034292e+02, - 8.745560296705727e+02, 8.761646973316132e+02, 8.777520995960749e+02, 8.793188715124946e+02, 8.808656189054011e+02, - 8.823929201637125e+02, 8.839013278940520e+02, 8.853913704510389e+02, 8.868635533553864e+02, 8.883183606095422e+02, - 8.897562559196253e+02, 8.911776838315599e+02, 8.925830707885331e+02, 8.939728261162403e+02, 8.953473429417327e+02, - 8.967069990511936e+02, 8.980521576914280e+02, 8.993831683194544e+02, 9.007003673041785e+02, 9.020040785837764e+02, - 9.032946142821023e+02, 9.045722752871517e+02, 9.058373517943470e+02, 9.070901238171846e+02, 9.083308616675691e+02, - 9.095598264079747e+02, 9.107772702773855e+02, 9.119834370928327e+02, 9.131785626282600e+02, 9.143628749923389e+02, - 9.155365949915390e+02, 9.166999364072961e+02, 9.178531054145200e+02, 9.189963036028357e+02, 9.201297249554855e+02, - 9.212535579329505e+02, 9.223679853250901e+02, 9.234731843063030e+02, 9.245693273755169e+02, 9.256565814516307e+02, - 9.267351088350003e+02, 9.278050671981740e+02, 9.288666097645535e+02, 9.299198854784083e+02, 9.309650391644586e+02, - 9.320022116905931e+02, 9.330315401030213e+02, 9.340531577737681e+02, 9.350671945326457e+02, 9.360737767948482e+02, - 9.370730276827787e+02, 9.380650671424290e+02, 9.390500120545896e+02, 9.400279763411705e+02, 9.409990710669023e+02, - 9.419634045366276e+02, 9.429210823884479e+02, 9.438722076829066e+02, 9.448168809884298e+02, 9.457552004632045e+02, - 9.466872619336696e+02, 9.476131589828589e+02, 9.485329829691095e+02, 9.494468231559957e+02, 9.503547668108941e+02, - 9.512568991482393e+02, 9.521533034828481e+02, 9.530440612654538e+02, 9.539292521394221e+02, 9.548089539953043e+02, - 9.556832430233076e+02, 9.565521937637889e+02, 9.574158791558600e+02, 9.582743705841818e+02, 9.591277379240380e+02, - 9.599760495847627e+02, 9.608193725515824e+02, 9.616577724259658e+02, 9.624913134645150e+02, 9.633200586164890e+02, - 9.641440695600016e+02, 9.649634067369532e+02, 9.657781293867525e+02, 9.665882955788774e+02, 9.673939622443171e+02, - 9.681951852059568e+02, 9.689920192079277e+02, 9.697845179654694e+02, 9.705727341052842e+02, 9.713567193244319e+02, - 9.721365243265187e+02, 9.729121988692063e+02, 9.736837917882301e+02, 9.744513510206435e+02, 9.752149236273314e+02, - 9.759745558148001e+02, 9.767302929562892e+02, 9.774821796122226e+02, 9.782302595500222e+02, 9.789745757633123e+02, - 9.797151704905398e+02, 9.804520852330219e+02, 9.811853607724502e+02, 9.819150371878738e+02, 9.826411538721660e+02, - 9.833637495480133e+02, 9.840828622834288e+02, 9.847985295068046e+02, 9.855107880215390e+02, 9.862196740202365e+02, - 9.869252230984887e+02, 9.876274702682779e+02, 9.883264499709927e+02, 9.890221960900720e+02, 9.897147419633058e+02, - 9.904041203947791e+02, 9.910903636664981e+02, 9.917735035496863e+02, 9.924535713157782e+02, 9.931305977471071e+02, - 9.938046131473103e+02, 9.944756473514484e+02, 9.951437297358600e+02, 9.958088892277484e+02, 9.964711543145172e+02, - 9.971305530528612e+02, 9.977871130776194e+02, 9.984408616103930e+02, 9.990918254679525e+02, 9.997400310704139e+02, - 1.000385504449214e+03, 1.001028270768264e+03, 1.001668356259532e+03, 1.002305785365685e+03, 1.002940582639218e+03, - 1.003572772280899e+03, 1.004202378146612e+03, 1.004829423754034e+03, 1.005453932289148e+03, 1.006075926612605e+03, - 1.006695429265915e+03, 1.007312462477507e+03, 1.007927048168629e+03, 1.008539207959121e+03, 1.009148963173035e+03, - 1.009756334844137e+03, 1.010361343721271e+03, 1.010964010273598e+03, 1.011564354695719e+03, 1.012162396912674e+03, - 1.012758156584824e+03, 1.013351653112629e+03, 1.013942905641308e+03, 1.014531933065403e+03, 1.015118754033228e+03, - 1.015703386951228e+03, 1.016285849988238e+03, 1.016866161079643e+03, 1.017444337931450e+03, 1.018020398024269e+03, - 1.018594358617210e+03, 1.019166236751682e+03, 1.019736049255131e+03, 1.020303812744677e+03, 1.020869543630685e+03, - 1.021433258120248e+03, 1.021994972220614e+03, 1.022554701742518e+03, 1.023112462303462e+03, 1.023668269330912e+03, - 1.024222138065443e+03, 1.024774083563798e+03, 1.025324120701907e+03, 1.025872264177823e+03, 1.026418528514611e+03, - 1.026962928063174e+03, 1.027505477005013e+03, 1.028046189354948e+03, 1.028585078963766e+03, 1.029122159520832e+03, - 1.029657444556629e+03, 1.030190947445270e+03, 1.030722681406938e+03, 1.031252659510292e+03, 1.031780894674819e+03, - 1.032307399673146e+03, 1.032832187133298e+03, 1.033355269540918e+03, 1.033876659241445e+03, 1.034396368442244e+03, - 1.034914409214702e+03, 1.035430793496276e+03, 1.035945533092514e+03, 1.036458639679021e+03, 1.036970124803404e+03, - 1.037479999887169e+03, 1.037988276227589e+03, 1.038494964999534e+03, 1.039000077257265e+03, 1.039503623936201e+03, - 1.040005615854651e+03, 1.040506063715504e+03, 1.041004978107911e+03, 1.041502369508906e+03, 1.041998248285028e+03, - 1.042492624693890e+03, 1.042985508885734e+03, 1.043476910904948e+03, 1.043966840691568e+03, 1.044455308082740e+03, - 1.044942322814165e+03, 1.045427894521512e+03, 1.045912032741818e+03, 1.046394746914845e+03, 1.046876046384427e+03, - 1.047355940399794e+03, 1.047834438116863e+03, 1.048311548599515e+03, 1.048787280820845e+03, 1.049261643664399e+03, - 1.049734645925376e+03, 1.050206296311824e+03, 1.050676603445800e+03, 1.051145575864533e+03, 1.051613222021539e+03, - 1.052079550287742e+03, 1.052544568952562e+03, 1.053008286224988e+03, 1.053470710234637e+03, 1.053931849032793e+03, - 1.054391710593423e+03, 1.054850302814187e+03, 1.055307633517424e+03, 1.055763710451126e+03, 1.056218541289889e+03, - 1.056672133635860e+03, 1.057124495019657e+03, 1.057575632901285e+03, 1.058025554671027e+03, 1.058474267650325e+03, - 1.058921779092654e+03, 1.059368096184368e+03, 1.059813226045545e+03, 1.060257175730812e+03, 1.060699952230158e+03, - 1.061141562469739e+03, 1.061582013312661e+03, 1.062021311559758e+03, 1.062459463950361e+03, 1.062896477163044e+03, - 1.063332357816365e+03, 1.063767112469602e+03, 1.064200747623464e+03, 1.064633269720801e+03, 1.065064685147300e+03, - 1.065495000232172e+03, 1.065924221248826e+03, 1.066352354415535e+03, 1.066779405896089e+03, 1.067205381800444e+03, - 1.067630288185358e+03, 1.068054131055012e+03, 1.068476916361633e+03, 1.068898650006097e+03, 1.069319337838532e+03, - 1.069738985658905e+03, 1.070157599217608e+03, 1.070575184216022e+03, 1.070991746307093e+03, 1.071407291095879e+03, - 1.071821824140102e+03, 1.072235350950690e+03, 1.072647876992308e+03, 1.073059407683880e+03, 1.073469948399113e+03, - 1.073879504467001e+03, 1.074288081172331e+03, 1.074695683756178e+03, 1.075102317416393e+03, 1.075507987308087e+03, - 1.075912698544102e+03, 1.076316456195482e+03, 1.076719265291938e+03, 1.077121130822294e+03, 1.077522057734948e+03, - 1.077922050938306e+03, 1.078321115301219e+03, 1.078719255653420e+03, 1.079116476785945e+03, 1.079512783451548e+03, - 1.079908180365124e+03, 1.080302672204105e+03, 1.080696263608872e+03, 1.081088959183145e+03, 1.081480763494379e+03, - 1.081871681074147e+03, 1.082261716418521e+03, 1.082650873988450e+03, 1.083039158210128e+03, 1.083426573475361e+03, - 1.083813124141929e+03, 1.084198814533941e+03, 1.084583648942186e+03, 1.084967631624481e+03, 1.085350766806012e+03, - 1.085733058679675e+03, 1.086114511406403e+03, 1.086495129115504e+03, 1.086874915904976e+03, 1.087253875841836e+03, - 1.087632012962432e+03, 1.088009331272756e+03, 1.088385834748754e+03, 1.088761527336627e+03, 1.089136412953134e+03, - 1.089510495485892e+03, 1.089883778793660e+03, 1.090256266706638e+03, 1.090627963026745e+03, 1.090998871527907e+03, - 1.091368995956330e+03, 1.091738340030778e+03, 1.092106907442846e+03, 1.092474701857224e+03, 1.092841726911966e+03, - 1.093207986218746e+03, 1.093573483363123e+03, 1.093938221904792e+03, 1.094302205377836e+03, 1.094665437290975e+03, - 1.095027921127815e+03, 1.095389660347085e+03, 1.095750658382883e+03, 1.096110918644908e+03, 1.096470444518696e+03, - 1.096829239365852e+03, 1.097187306524278e+03, 1.097544649308396e+03, 1.097901271009378e+03, 1.098257174895356e+03, - 1.098612364211650e+03, 1.098966842180976e+03, 1.099320612003661e+03, 1.099673676857855e+03, 1.100026039899735e+03, - 1.100377704263711e+03, 1.100728673062631e+03, 1.101078949387977e+03, 1.101428536310069e+03, 1.101777436878256e+03, - 1.102125654121109e+03, 1.102473191046615e+03, 1.102820050642365e+03, 1.103166235875740e+03, 1.103511749694095e+03, - 1.103856595024944e+03, 1.104200774776138e+03, 1.104544291836043e+03, 1.104887149073719e+03, 1.105229349339090e+03, - 1.105570895463123e+03, 1.105911790257989e+03, 1.106252036517241e+03, 1.106591637015973e+03, 1.106930594510988e+03, - 1.107268911740961e+03, 1.107606591426598e+03, 1.107943636270799e+03, 1.108280048958810e+03, 1.108615832158383e+03, - 1.108950988519927e+03, 1.109285520676661e+03, 1.109619431244767e+03, 1.109952722823535e+03, 1.110285397995512e+03, - 1.110617459326649e+03, 1.110948909366440e+03, 1.111279750648072e+03, 1.111609985688559e+03, 1.111939616988886e+03, - 1.112268647034142e+03, 1.112597078293662e+03, 1.112924913221158e+03, 1.113252154254852e+03, 1.113578803817613e+03, - 1.113904864317081e+03, 1.114230338145799e+03, 1.114555227681343e+03, 1.114879535286443e+03, 1.115203263309116e+03, - 1.115526414082779e+03, 1.115848989926385e+03, 1.116170993144529e+03, 1.116492426027580e+03, 1.116813290851795e+03, - 1.117133589879434e+03, 1.117453325358881e+03, 1.117772499524756e+03, 1.118091114598027e+03, 1.118409172786127e+03 - }, - { - 1.735837913559893e+00, 5.295581014340208e+00, 8.924096098888631e+00, 1.262478018938092e+01, 1.640130556540408e+01, - 2.025765078852565e+01, 2.419813628783695e+01, 2.822746535368524e+01, 3.235077156361812e+01, 3.657367391405241e+01, - 4.090234123116258e+01, 4.534356782910446e+01, 4.990486289364432e+01, 5.459455673758011e+01, 5.942192795850151e+01, - 6.439735671155678e+01, 6.953251090847398e+01, 7.484057434255196e+01, 8.033652877552350e+01, 8.603750629589238e+01, - 9.196323436981072e+01, 9.813660489791276e+01, 1.045844117797398e+02, 1.113383214654397e+02, 1.184361719611295e+02, - 1.259237451073973e+02, 1.338572379802315e+02, 1.423067966738733e+02, 1.513617192838598e+02, 1.611383841755784e+02, - 1.717928398483338e+02, 1.835418296940128e+02, 1.967001891142653e+02, 2.117530193151645e+02, 2.295111982984277e+02, - 2.515038588019423e+02, 2.812505498218775e+02, 3.309214294202027e+02, 5.100142118739390e+02, 6.020082486345009e+02, - 6.355017484186912e+02, 6.570334868721310e+02, 6.731765246809979e+02, 6.862190992384614e+02, 6.972357686759511e+02, - 7.068194539833491e+02, 7.153326151035200e+02, 7.230132781254056e+02, 7.300263148682412e+02, 7.364907643227039e+02, - 7.424954872795790e+02, 7.481086612208386e+02, 7.533838098374637e+02, 7.583637802524823e+02, 7.630834520335953e+02, - 7.675716338960540e+02, 7.718524238553307e+02, 7.759462053729383e+02, 7.798703906784768e+02, 7.836399847869445e+02, - 7.872680199519266e+02, 7.907658949046414e+02, 7.941436430428625e+02, 7.974101468557177e+02, 8.005733111409419e+02, - 8.036402042647568e+02, 8.066171743675550e+02, 8.095099457291507e+02, 8.123236992754389e+02, 8.150631402990271e+02, - 8.177325557877964e+02, 8.203358632435270e+02, 8.228766524828380e+02, 8.253582216130106e+02, 8.277836081428915e+02, - 8.301556160073644e+02, 8.324768391407692e+02, 8.347496821210597e+02, 8.369763783156757e+02, 8.391590058871892e+02, - 8.412995019576051e+02, 8.433996751821597e+02, 8.454612169440793e+02, 8.474857113493312e+02, 8.494746441736520e+02, - 8.514294108918184e+02, 8.533513239005702e+02, 8.552416190309926e+02, 8.571014614330519e+02, 8.589319509038697e+02, - 8.607341267219387e+02, 8.625089720414350e+02, 8.642574178939892e+02, 8.659803468393386e+02, 8.676785963013074e+02, - 8.693529616211820e+02, 8.710041988567580e+02, 8.726330273521309e+02, 8.742401321003996e+02, 8.758261659190346e+02, - 8.773917514554531e+02, 8.789374830384695e+02, 8.804639283896364e+02, 8.819716302069999e+02, 8.834611076325217e+02, - 8.849328576132688e+02, 8.863873561654751e+02, 8.878250595496645e+02, 8.892464053642402e+02, 8.906518135642360e+02, - 8.920416874112860e+02, 8.934164143603108e+02, 8.947763668879142e+02, 8.961219032670190e+02, 8.974533682918814e+02, - 8.987710939572432e+02, 9.000754000950585e+02, 9.013665949719456e+02, 9.026449758502187e+02, 9.039108295151425e+02, - 9.051644327708202e+02, 9.064060529069206e+02, 9.076359481382912e+02, 9.088543680193105e+02, 9.100615538379757e+02, - 9.112577390224913e+02, 9.124431494748175e+02, 9.136180038712724e+02, 9.147825127921666e+02, 9.159368828249632e+02, - 9.170813121346795e+02, 9.182159933893699e+02, 9.193411134339563e+02, 9.204568533616368e+02, 9.215633894226800e+02, - 9.226608921844527e+02, 9.237495274588575e+02, 9.248294563089856e+02, 9.259008352330949e+02, 9.269638163396667e+02, - 9.280185475140697e+02, 9.290651725772965e+02, 9.301038314328325e+02, 9.311346602273072e+02, 9.321577914649645e+02, - 9.331733541534124e+02, 9.341814739255290e+02, 9.351822731591581e+02, 9.361758710914785e+02, 9.371623839283320e+02, - 9.381419249487801e+02, 9.391146046051258e+02, 9.400805306186502e+02, 9.410398080712745e+02, 9.419925394933560e+02, - 9.429388249478163e+02, 9.438787621244096e+02, 9.448124463400762e+02, 9.457399707851794e+02, 9.466614264040561e+02, - 9.475769020681855e+02, 9.484864846188768e+02, 9.493902589303054e+02, 9.502883079700738e+02, 9.511807128574313e+02, - 9.520675529192539e+02, 9.529489057438869e+02, 9.538248472329501e+02, 9.546954516512000e+02, 9.555607916745333e+02, - 9.564209384362135e+02, 9.572759615714075e+02, 9.581259292600938e+02, 9.589709082684271e+02, 9.598109639886212e+02, - 9.606461604773988e+02, 9.614765604931064e+02, 9.623022255315057e+02, 9.631232158811730e+02, 9.639395905723921e+02, - 9.647514075378135e+02, 9.655587235567416e+02, 9.663615943072250e+02, 9.671600743951209e+02, 9.679542173821836e+02, - 9.687440758132281e+02, 9.695297012423988e+02, 9.703111442585837e+02, 9.710884545099998e+02, 9.718616807279972e+02, - 9.726308707500885e+02, 9.733960715422606e+02, 9.741573292205712e+02, 9.749146890720803e+02, 9.756681955751193e+02, - 9.764178924189415e+02, 9.771638225227659e+02, 9.779060280542383e+02, 9.786445504473381e+02, 9.793794304197394e+02, - 9.801107079896592e+02, 9.808384224921977e+02, 9.815626125952022e+02, 9.822833163146593e+02, 9.830005710296455e+02, - 9.837144134968345e+02, 9.844248798645972e+02, 9.851320056866873e+02, 9.858358259355476e+02, 9.865363750152289e+02, - 9.872336867739593e+02, 9.879277945163450e+02, 9.886187310152491e+02, 9.893065285233321e+02, 9.899912187842764e+02, - 9.906728330437061e+02, 9.913514020598141e+02, 9.920269561136940e+02, 9.926995250194029e+02, 9.933691381337501e+02, - 9.940358243658309e+02, 9.946996121863040e+02, 9.953605296364301e+02, 9.960186043368725e+02, 9.966738634962704e+02, - 9.973263339195898e+02, 9.979760415329843e+02, 9.986230133062957e+02, 9.992672744162968e+02, 9.999088501325956e+02, - 1.000547765359803e+03, 1.001184044644693e+03, 1.001817712183193e+03, 1.002448791827186e+03, 1.003077307091166e+03, - 1.003703281158710e+03, 1.004326736888804e+03, 1.004947696822024e+03, 1.005566183186544e+03, 1.006182217904030e+03, - 1.006795822595366e+03, 1.007407018586267e+03, 1.008015826912743e+03, 1.008622268326447e+03, 1.009226363299890e+03, - 1.009828132031539e+03, 1.010427594450798e+03, 1.011024770222868e+03, 1.011619678753507e+03, 1.012212339193671e+03, - 1.012802770444055e+03, 1.013390991159534e+03, 1.013977019753496e+03, 1.014560874402090e+03, 1.015142573048368e+03, - 1.015722133406342e+03, 1.016299572964955e+03, 1.016874908991953e+03, 1.017448158537686e+03, 1.018019338438818e+03, - 1.018588465321960e+03, 1.019155555607226e+03, 1.019720625511709e+03, 1.020283691052888e+03, 1.020844768051955e+03, - 1.021403872137085e+03, 1.021961018746621e+03, 1.022516223132208e+03, 1.023069500361847e+03, 1.023620865322900e+03, - 1.024170332725021e+03, 1.024717917103034e+03, 1.025263632819749e+03, 1.025807494068725e+03, 1.026349514876966e+03, - 1.026889709107579e+03, 1.027428090462364e+03, 1.027964672484360e+03, 1.028499468560335e+03, 1.029032491923236e+03, - 1.029563755654579e+03, 1.030093272686799e+03, 1.030621055805550e+03, 1.031147117651967e+03, 1.031671470724877e+03, - 1.032194127382965e+03, 1.032715099846912e+03, 1.033234400201475e+03, 1.033752040397540e+03, 1.034268032254126e+03, - 1.034782387460360e+03, 1.035295117577413e+03, 1.035806234040387e+03, 1.036315748160189e+03, 1.036823671125349e+03, - 1.037330014003820e+03, 1.037834787744733e+03, 1.038338003180125e+03, 1.038839671026638e+03, 1.039339801887178e+03, - 1.039838406252557e+03, 1.040335494503091e+03, 1.040831076910179e+03, 1.041325163637850e+03, 1.041817764744282e+03, - 1.042308890183292e+03, 1.042798549805809e+03, 1.043286753361306e+03, 1.043773510499218e+03, 1.044258830770332e+03, - 1.044742723628151e+03, 1.045225198430236e+03, 1.045706264439521e+03, 1.046185930825613e+03, 1.046664206666061e+03, - 1.047141100947607e+03, 1.047616622567420e+03, 1.048090780334295e+03, 1.048563582969851e+03, 1.049035039109690e+03, - 1.049505157304552e+03, 1.049973946021437e+03, 1.050441413644720e+03, 1.050907568477237e+03, 1.051372418741365e+03, - 1.051835972580068e+03, 1.052298238057940e+03, 1.052759223162226e+03, 1.053218935803823e+03, 1.053677383818267e+03, - 1.054134574966707e+03, 1.054590516936859e+03, 1.055045217343945e+03, 1.055498683731616e+03, 1.055950923572867e+03, - 1.056401944270928e+03, 1.056851753160145e+03, 1.057300357506849e+03, 1.057747764510206e+03, 1.058193981303061e+03, - 1.058639014952760e+03, 1.059082872461965e+03, 1.059525560769454e+03, 1.059967086750912e+03, 1.060407457219703e+03, - 1.060846678927633e+03, 1.061284758565709e+03, 1.061721702764871e+03, 1.062157518096725e+03, 1.062592211074262e+03, - 1.063025788152562e+03, 1.063458255729493e+03, 1.063889620146392e+03, 1.064319887688746e+03, 1.064749064586854e+03, - 1.065177157016481e+03, 1.065604171099506e+03, 1.066030112904555e+03, 1.066454988447630e+03, 1.066878803692722e+03, - 1.067301564552422e+03, 1.067723276888521e+03, 1.068143946512593e+03, 1.068563579186586e+03, 1.068982180623386e+03, - 1.069399756487388e+03, 1.069816312395050e+03, 1.070231853915440e+03, 1.070646386570776e+03, 1.071059915836964e+03, - 1.071472447144116e+03, 1.071883985877072e+03, 1.072294537375908e+03, 1.072704106936438e+03, 1.073112699810715e+03, - 1.073520321207513e+03, 1.073926976292812e+03, 1.074332670190274e+03, 1.074737407981708e+03, 1.075141194707537e+03, - 1.075544035367250e+03, 1.075945934919850e+03, 1.076346898284299e+03, 1.076746930339957e+03, 1.077146035927007e+03, - 1.077544219846886e+03, 1.077941486862699e+03, 1.078337841699637e+03, 1.078733289045380e+03, 1.079127833550503e+03, - 1.079521479828871e+03, 1.079914232458032e+03, 1.080306095979601e+03, 1.080697074899643e+03, 1.081087173689047e+03, - 1.081476396783897e+03, 1.081864748585842e+03, 1.082252233462451e+03, 1.082638855747574e+03, 1.083024619741692e+03, - 1.083409529712262e+03, 1.083793589894065e+03, 1.084176804489538e+03, 1.084559177669110e+03, 1.084940713571533e+03, - 1.085321416304204e+03, 1.085701289943489e+03, 1.086080338535034e+03, 1.086458566094086e+03, 1.086835976605794e+03, - 1.087212574025517e+03, 1.087588362279127e+03, 1.087963345263298e+03, 1.088337526845809e+03, 1.088710910865828e+03, - 1.089083501134197e+03, 1.089455301433717e+03, 1.089826315519426e+03, 1.090196547118871e+03, 1.090565999932386e+03, - 1.090934677633354e+03, 1.091302583868476e+03, 1.091669722258031e+03, 1.092036096396133e+03, 1.092401709850993e+03, - 1.092766566165162e+03, 1.093130668855785e+03, 1.093494021414847e+03, 1.093856627309417e+03, 1.094218489981885e+03, - 1.094579612850199e+03, 1.094939999308105e+03, 1.095299652725370e+03, 1.095658576448017e+03, 1.096016773798552e+03, - 1.096374248076177e+03, 1.096731002557025e+03, 1.097087040494367e+03, 1.097442365118829e+03, 1.097796979638612e+03, - 1.098150887239692e+03, 1.098504091086035e+03, 1.098856594319800e+03, 1.099208400061540e+03, 1.099559511410407e+03, - 1.099909931444346e+03, 1.100259663220292e+03, 1.100608709774366e+03, 1.100957074122061e+03, 1.101304759258439e+03, - 1.101651768158310e+03, 1.101998103776420e+03, 1.102343769047636e+03, 1.102688766887124e+03, 1.103033100190526e+03, - 1.103376771834139e+03, 1.103719784675092e+03, 1.104062141551511e+03, 1.104403845282695e+03, 1.104744898669286e+03, - 1.105085304493430e+03, 1.105425065518947e+03, 1.105764184491489e+03, 1.106102664138708e+03, 1.106440507170407e+03, - 1.106777716278707e+03, 1.107114294138193e+03, 1.107450243406075e+03, 1.107785566722338e+03, 1.108120266709894e+03, - 1.108454345974728e+03, 1.108787807106047e+03, 1.109120652676429e+03, 1.109452885241960e+03, 1.109784507342385e+03, - 1.110115521501244e+03, 1.110445930226010e+03, 1.110775736008231e+03, 1.111104941323667e+03, 1.111433548632419e+03, - 1.111761560379071e+03, 1.112088978992814e+03, 1.112415806887583e+03, 1.112742046462181e+03, 1.113067700100414e+03, - 1.113392770171211e+03, 1.113717259028751e+03, 1.114041169012587e+03, 1.114364502447773e+03, 1.114687261644978e+03, - 1.115009448900610e+03, 1.115331066496936e+03, 1.115652116702196e+03, 1.115972601770723e+03, 1.116292523943053e+03 - }, - { - 1.729987798503735e+00, 5.277176644957937e+00, 8.892093498963909e+00, 1.257803517227251e+01, 1.633856135837603e+01, - 2.017752373256750e+01, 2.409909924725054e+01, 2.810782838605187e+01, 3.220865929548985e+01, 3.640699893248600e+01, - 4.070877262753024e+01, 4.512049380604636e+01, 4.964934605066946e+01, 5.430328026041363e+01, 5.909113041600263e+01, - 6.402275246044820e+01, 6.910919214531842e+01, 7.436288951368294e+01, 7.979793019277135e+01, 8.543035715503558e+01, - 9.127856153448559e+01, 9.736377816618179e+01, 1.037107218728110e+02, 1.103484159667842e+02, 1.173112879739240e+02, - 1.246406443345001e+02, 1.323866948189132e+02, 1.406113948172294e+02, 1.493925412037841e+02, 1.588298554555800e+02, - 1.690543470897725e+02, 1.802433578359926e+02, 1.926460376153335e+02, 2.066294323280396e+02, 2.227693243337327e+02, - 2.420513223806203e+02, 2.663967261038890e+02, 3.004476502118789e+02, 3.612309549606103e+02, 5.162696131556235e+02, - 5.921725351639860e+02, 6.260848581913968e+02, 6.483185367389125e+02, 6.650437401642084e+02, 6.785546980380566e+02, - 6.899539398096650e+02, 6.998563350682621e+02, 7.086399265549450e+02, 7.165537811293974e+02, 7.237707183754324e+02, - 7.304156081528985e+02, 7.365816694719249e+02, 7.423403946816956e+02, 7.477478699062126e+02, 7.528489529788644e+02, - 7.576801233401310e+02, 7.622714792349831e+02, 7.666481706239285e+02, 7.708314487370909e+02, 7.748394491065400e+02, - 7.786877854653192e+02, 7.823900069416261e+02, 7.859579547901691e+02, 7.894020441731222e+02, 7.927314892487836e+02, - 7.959544848328245e+02, 7.990783544035663e+02, 8.021096717418175e+02, 8.050543617094013e+02, 8.079177843677430e+02, - 8.107048056764739e+02, 8.134198572946201e+02, 8.160669874660477e+02, 8.186499045590722e+02, 8.211720145137850e+02, - 8.236364532055111e+02, 8.260461145412792e+02, 8.284036749554347e+02, 8.307116148509739e+02, 8.329722374377254e+02, - 8.351876853417804e+02, 8.373599552985770e+02, 8.394909111915425e+02, 8.415822956569857e+02, 8.436357404419522e+02, - 8.456527756737316e+02, 8.476348381764261e+02, 8.495832789505403e+02, 8.514993699152963e+02, 8.533843099996720e+02, - 8.552392306565937e+02, 8.570652008649099e+02, 8.588632316754167e+02, 8.606342803500913e+02, 8.623792541375768e+02, - 8.640990137226939e+02, 8.657943763832820e+02, 8.674661188836877e+02, 8.691149801308950e+02, 8.707416636163031e+02, - 8.723468396635835e+02, 8.739311475008485e+02, 8.754951971733232e+02, 8.770395713110673e+02, 8.785648267646992e+02, - 8.800714961207979e+02, 8.815600891074301e+02, 8.830310938992222e+02, 8.844849783304775e+02, 8.859221910239813e+02, - 8.873431624424367e+02, 8.887483058688059e+02, 8.901380183212249e+02, 8.915126814076832e+02, 8.928726621251351e+02, - 8.942183136073414e+02, 8.955499758253191e+02, 8.968679762439594e+02, 8.981726304380697e+02, 8.994642426707915e+02, - 9.007431064371407e+02, 9.020095049751377e+02, 9.032637117468370e+02, 9.045059908913431e+02, 9.057365976517779e+02, - 9.069557787946167e+02, 9.081637730196155e+02, 9.093608112776520e+02, 9.105471162808049e+02, 9.117229053658149e+02, - 9.128883877536636e+02, 9.140437665207562e+02, 9.151892385115142e+02, 9.163249944207338e+02, 9.174512197596982e+02, - 9.185680939748288e+02, 9.196757914329157e+02, 9.207744814330799e+02, 9.218643284057571e+02, 9.229454921019188e+02, - 9.240181277731066e+02, 9.250823863428059e+02, 9.261384145696577e+02, 9.271863552029715e+02, 9.282263471309723e+02, - 9.292585255144724e+02, 9.302830219508370e+02, 9.312999645615596e+02, 9.323094781412798e+02, 9.333116842690903e+02, - 9.343067014208377e+02, 9.352946450765091e+02, 9.362756278229543e+02, 9.372497594521883e+02, 9.382171470555043e+02, - 9.391778951136087e+02, 9.401321055624318e+02, 9.410798779724076e+02, 9.420213094474316e+02, 9.429564948685339e+02, - 9.438855268896654e+02, 9.448084960219194e+02, 9.457254907008424e+02, 9.466365973510838e+02, 9.475419004485043e+02, - 9.484414825798843e+02, 9.493354245003172e+02, 9.502238051884161e+02, 9.511067018994206e+02, 9.519841902163067e+02, - 9.528563440989864e+02, 9.537232359316856e+02, 9.545849365685738e+02, 9.554415153777362e+02, 9.562930403037972e+02, - 9.571395778266740e+02, 9.579811931258456e+02, 9.588179500339024e+02, 9.596499110946406e+02, 9.604771375984412e+02, - 9.612996896164336e+02, 9.621176260334804e+02, 9.629310045800337e+02, 9.637398818629138e+02, 9.645443133950563e+02, - 9.653443536242587e+02, 9.661400559609735e+02, 9.669314728051951e+02, 9.677186555724530e+02, 9.685016547189689e+02, - 9.692805197660039e+02, 9.700552993234161e+02, 9.708260411124787e+02, 9.715927919879688e+02, 9.723555979595656e+02, - 9.731145042125839e+02, 9.738695551280575e+02, 9.746207943022090e+02, 9.753682645653272e+02, 9.761120080000634e+02, - 9.768520659591791e+02, 9.775884790827620e+02, 9.783212873149287e+02, 9.790505299200282e+02, 9.797762454983759e+02, - 9.804984720015181e+02, 9.812172467470630e+02, 9.819326064330751e+02, 9.826445871520592e+02, 9.833532244045465e+02, - 9.840585531122922e+02, 9.847606076311060e+02, 9.854594217633158e+02, 9.861550287698922e+02, 9.868474613822298e+02, - 9.875367518136103e+02, 9.882229317703485e+02, 9.889060324626345e+02, 9.895860846150863e+02, 9.902631184770133e+02, - 9.909371638324116e+02, 9.916082500096861e+02, 9.922764058911229e+02, 9.929416599221087e+02, 9.936040401201109e+02, - 9.942635740834181e+02, 9.949202885200956e+02, 9.955742111559719e+02, 9.962253679206392e+02, 9.968737848187271e+02, - 9.975194874761673e+02, 9.981625011476799e+02, 9.988028507240801e+02, 9.994405607393959e+02, 1.000075655377819e+03, - 1.000708158480468e+03, 1.001338093552008e+03, 1.001965483767091e+03, 1.002590351976648e+03, 1.003212720714026e+03, - 1.003832612200987e+03, 1.004450048353548e+03, 1.005065050787696e+03, 1.005677640824963e+03, 1.006287839497871e+03, - 1.006895667555242e+03, 1.007501145467402e+03, 1.008104293431246e+03, 1.008705131375198e+03, 1.009303678964049e+03, - 1.009899955603696e+03, 1.010493980445760e+03, 1.011085772392110e+03, 1.011675350099280e+03, 1.012262731982790e+03, - 1.012847936221368e+03, 1.013430980761083e+03, 1.014011883319378e+03, 1.014590661389030e+03, 1.015167332242000e+03, - 1.015741912933229e+03, 1.016314420304323e+03, 1.016884870987178e+03, 1.017453281407520e+03, 1.018019667788370e+03, - 1.018584046153435e+03, 1.019146432330428e+03, 1.019706841954321e+03, 1.020265290470521e+03, 1.020821793137992e+03, - 1.021376365032301e+03, 1.021929021048609e+03, 1.022479775904595e+03, 1.023028644143322e+03, 1.023575640136048e+03, - 1.024120778084973e+03, 1.024664072025936e+03, 1.025205535831053e+03, 1.025745183211310e+03, 1.026283027719094e+03, - 1.026819082750682e+03, 1.027353361548673e+03, 1.027885877204382e+03, 1.028416642660178e+03, 1.028945670711780e+03, - 1.029472974010509e+03, 1.029998565065496e+03, 1.030522456245841e+03, 1.031044659782745e+03, 1.031565187771585e+03, - 1.032084052173961e+03, 1.032601264819699e+03, 1.033116837408813e+03, 1.033630781513440e+03, 1.034143108579730e+03, - 1.034653829929702e+03, 1.035162956763068e+03, 1.035670500159023e+03, 1.036176471077996e+03, 1.036680880363383e+03, - 1.037183738743229e+03, 1.037685056831894e+03, 1.038184845131685e+03, 1.038683114034453e+03, 1.039179873823169e+03, - 1.039675134673468e+03, 1.040168906655163e+03, 1.040661199733738e+03, 1.041152023771807e+03, 1.041641388530554e+03, - 1.042129303671145e+03, 1.042615778756112e+03, 1.043100823250718e+03, 1.043584446524297e+03, 1.044066657851565e+03, - 1.044547466413917e+03, 1.045026881300698e+03, 1.045504911510448e+03, 1.045981565952133e+03, 1.046456853446347e+03, - 1.046930782726503e+03, 1.047403362439996e+03, 1.047874601149348e+03, 1.048344507333339e+03, 1.048813089388111e+03, - 1.049280355628256e+03, 1.049746314287894e+03, 1.050210973521722e+03, 1.050674341406049e+03, 1.051136425939817e+03, - 1.051597235045605e+03, 1.052056776570611e+03, 1.052515058287626e+03, 1.052972087895985e+03, 1.053427873022508e+03, - 1.053882421222423e+03, 1.054335739980272e+03, 1.054787836710811e+03, 1.055238718759883e+03, 1.055688393405289e+03, - 1.056136867857640e+03, 1.056584149261193e+03, 1.057030244694678e+03, 1.057475161172111e+03, 1.057918905643591e+03, - 1.058361484996094e+03, 1.058802906054240e+03, 1.059243175581061e+03, 1.059682300278753e+03, 1.060120286789413e+03, - 1.060557141695768e+03, 1.060992871521894e+03, 1.061427482733920e+03, 1.061860981740727e+03, 1.062293374894628e+03, - 1.062724668492051e+03, 1.063154868774192e+03, 1.063583981927680e+03, 1.064012014085218e+03, 1.064438971326218e+03, - 1.064864859677425e+03, 1.065289685113539e+03, 1.065713453557817e+03, 1.066136170882673e+03, 1.066557842910270e+03, - 1.066978475413099e+03, 1.067398074114552e+03, 1.067816644689485e+03, 1.068234192764777e+03, 1.068650723919877e+03, - 1.069066243687342e+03, 1.069480757553372e+03, 1.069894270958335e+03, 1.070306789297283e+03, 1.070718317920461e+03, - 1.071128862133811e+03, 1.071538427199471e+03, 1.071947018336256e+03, 1.072354640720148e+03, 1.072761299484763e+03, - 1.073166999721826e+03, 1.073571746481630e+03, 1.073975544773492e+03, 1.074378399566200e+03, 1.074780315788459e+03, - 1.075181298329326e+03, 1.075581352038644e+03, 1.075980481727458e+03, 1.076378692168447e+03, 1.076775988096327e+03, - 1.077172374208261e+03, 1.077567855164267e+03, 1.077962435587609e+03, 1.078356120065188e+03, 1.078748913147930e+03, - 1.079140819351172e+03, 1.079531843155028e+03, 1.079921989004767e+03, 1.080311261311179e+03, 1.080699664450932e+03, - 1.081087202766931e+03, 1.081473880568672e+03, 1.081859702132583e+03, 1.082244671702374e+03, 1.082628793489369e+03, - 1.083012071672843e+03, 1.083394510400350e+03, 1.083776113788047e+03, 1.084156885921022e+03, 1.084536830853599e+03, - 1.084915952609658e+03, 1.085294255182946e+03, 1.085671742537374e+03, 1.086048418607325e+03, 1.086424287297948e+03, - 1.086799352485451e+03, 1.087173618017390e+03, 1.087547087712958e+03, 1.087919765363263e+03, 1.088291654731611e+03, - 1.088662759553780e+03, 1.089033083538289e+03, 1.089402630366668e+03, 1.089771403693729e+03, 1.090139407147816e+03, - 1.090506644331076e+03, 1.090873118819706e+03, 1.091238834164209e+03, 1.091603793889640e+03, 1.091968001495859e+03, - 1.092331460457767e+03, 1.092694174225547e+03, 1.093056146224907e+03, 1.093417379857309e+03, 1.093777878500203e+03, - 1.094137645507253e+03, 1.094496684208567e+03, 1.094854997910918e+03, 1.095212589897967e+03, 1.095569463430474e+03, - 1.095925621746526e+03, 1.096281068061738e+03, 1.096635805569468e+03, 1.096989837441028e+03, 1.097343166825883e+03, - 1.097695796851861e+03, 1.098047730625347e+03, 1.098398971231488e+03, 1.098749521734382e+03, 1.099099385177278e+03, - 1.099448564582765e+03, 1.099797062952959e+03, 1.100144883269694e+03, 1.100492028494705e+03, 1.100838501569811e+03, - 1.101184305417096e+03, 1.101529442939087e+03, 1.101873917018932e+03, 1.102217730520571e+03, 1.102560886288916e+03, - 1.102903387150015e+03, 1.103245235911220e+03, 1.103586435361361e+03, 1.103926988270905e+03, 1.104266897392118e+03, - 1.104606165459235e+03, 1.104944795188609e+03, 1.105282789278875e+03, 1.105620150411105e+03, 1.105956881248958e+03, - 1.106292984438842e+03, 1.106628462610054e+03, 1.106963318374937e+03, 1.107297554329023e+03, 1.107631173051182e+03, - 1.107964177103764e+03, 1.108296569032744e+03, 1.108628351367862e+03, 1.108959526622761e+03, 1.109290097295127e+03, - 1.109620065866830e+03, 1.109949434804048e+03, 1.110278206557414e+03, 1.110606383562136e+03, 1.110933968238138e+03, - 1.111260962990184e+03, 1.111587370208006e+03, 1.111913192266436e+03, 1.112238431525521e+03, 1.112563090330661e+03, - 1.112887171012720e+03, 1.113210675888151e+03, 1.113533607259121e+03, 1.113855967413623e+03, 1.114177758625597e+03 - }, - { - 1.724177607221449e+00, 5.258905831275927e+00, 8.860337663142060e+00, 1.253167292680827e+01, 1.627636253917708e+01, - 2.009813580834798e+01, 2.400103159110743e+01, 2.798943399785579e+01, 3.206811346932145e+01, 3.624227424270572e+01, - 4.051760945287175e+01, 4.490036541196314e+01, 4.939741699090426e+01, 5.401635651821972e+01, 5.876559925383609e+01, - 6.365450934186509e+01, 6.869355127308582e+01, 7.389447340430785e+01, 7.927053214699430e+01, 8.483676828602360e+01, - 9.061035087293615e+01, 9.661100979294302e+01, 1.028615862655192e+02, 1.093887425288526e+02, 1.162238899299942e+02, - 1.234044221798127e+02, 1.309753837965445e+02, 1.389917734912682e+02, 1.475217988763447e+02, 1.566515994762434e+02, - 1.664923173697331e+02, 1.771910790955370e+02, 1.889488241183972e+02, 2.020508626887966e+02, 2.169229498084117e+02, - 2.342436868767631e+02, 2.551982372448252e+02, 2.821549324703853e+02, 3.209675047633074e+02, 3.919221786670004e+02, - 5.184272067239912e+02, 5.836658560802897e+02, 6.173091909882341e+02, 6.399735114456919e+02, 6.571550568790155e+02, - 6.710666529292480e+02, 6.828081805101423e+02, 6.930035376700025e+02, 7.020401216729900e+02, 7.101747576190517e+02, - 7.175863713563465e+02, 7.244045807229529e+02, 7.307263013153953e+02, 7.366259224560539e+02, 7.421618206241862e+02, - 7.473806820419481e+02, 7.523204603713392e+02, 7.570124543686647e+02, 7.614828011413581e+02, 7.657535712626618e+02, - 7.698435864576226e+02, 7.737690400660512e+02, 7.775439747617047e+02, 7.811806552692163e+02, 7.846898626938856e+02, - 7.880811295383260e+02, 7.913629292786241e+02, 7.945428307271575e+02, 7.976276248166075e+02, 8.006234295707101e+02, - 8.035357776630965e+02, 8.063696899581158e+02, 8.091297376755082e+02, 8.118200952535929e+02, 8.144445855538760e+02, - 8.170067187182026e+02, 8.195097257326148e+02, 8.219565875513210e+02, 8.243500604762708e+02, 8.266926983625890e+02, - 8.289868721202847e+02, 8.312347869023604e+02, 8.334384973046190e+02, 8.355999208497817e+02, 8.377208499853966e+02, - 8.398029627896574e+02, 8.418478325499909e+02, 8.438569363549906e+02, 8.458316628200873e+02, 8.477733190503367e+02, - 8.496831369295379e+02, 8.515622788128086e+02, 8.534118426895717e+02, 8.552328668752580e+02, 8.570263342825923e+02, - 8.587931763170346e+02, 8.605342764354701e+02, 8.622504734025682e+02, 8.639425642751854e+02, 8.656113071416445e+02, - 8.672574236396879e+02, 8.688816012742527e+02, 8.704844955538578e+02, 8.720667319623858e+02, 8.736289077812486e+02, - 8.751715937753507e+02, 8.766953357548773e+02, 8.782006560237181e+02, 8.796880547242600e+02, 8.811580110872936e+02, - 8.826109845949660e+02, 8.840474160639189e+02, 8.854677286550893e+02, 8.868723288160541e+02, 8.882616071612294e+02, - 8.896359392947901e+02, 8.909956865807030e+02, 8.923411968639108e+02, 8.936728051463143e+02, 8.949908342209253e+02, - 8.962955952672421e+02, 8.975873884106571e+02, 8.988665032484708e+02, 9.001332193448752e+02, 9.013878066970701e+02, - 9.026305261771399e+02, 9.038616299823610e+02, 9.050813620151689e+02, 9.062899582222592e+02, 9.074876458097262e+02, - 9.086746472148859e+02, 9.098511759256014e+02, 9.110174393107435e+02, 9.121736381670224e+02, 9.133199677407387e+02, - 9.144566168112475e+02, 9.155837687319673e+02, 9.167016014496818e+02, 9.178102877196520e+02, 9.189099953100404e+02, - 9.200008871962954e+02, 9.210831217460756e+02, 9.221568528952577e+02, 9.232222303155525e+02, 9.242793995741872e+02, - 9.253285022861224e+02, 9.263696762591992e+02, 9.274030556326250e+02, 9.284287709964906e+02, 9.294469495660329e+02, - 9.304577152336431e+02, 9.314611887276992e+02, 9.324574877123223e+02, 9.334467268927605e+02, 9.344290181162299e+02, - 9.354044704485505e+02, 9.363731903477366e+02, 9.373352816414369e+02, 9.382908456426690e+02, 9.392399812922021e+02, - 9.401827851800224e+02, 9.411193516347457e+02, 9.420497727954605e+02, 9.429741386807171e+02, 9.438925372547682e+02, - 9.448050544912268e+02, 9.457117744342272e+02, 9.466127792572285e+02, 9.475081493195665e+02, 9.483979632208486e+02, - 9.492822978730152e+02, 9.501612284707600e+02, 9.510348286617098e+02, 9.519031705108405e+02, 9.527663245663803e+02, - 9.536243599031882e+02, 9.544773441645783e+02, 9.553253436026272e+02, 9.561684231170760e+02, 9.570066462928437e+02, - 9.578400754362324e+02, 9.586687716098837e+02, 9.594927946665150e+02, 9.603122032815165e+02, 9.611270549844294e+02, - 9.619374061893682e+02, 9.627433122244217e+02, 9.635448273600771e+02, 9.643420048367042e+02, 9.651348968911395e+02, - 9.659235547823995e+02, 9.667080288165719e+02, 9.674883683708958e+02, 9.682646219170832e+02, 9.690368370438912e+02, - 9.698050604789933e+02, 9.705693381101605e+02, 9.713297150057866e+02, 9.720862354347767e+02, 9.728389428858333e+02, - 9.735878800861434e+02, 9.743330890195092e+02, 9.750746109439337e+02, 9.758124864086719e+02, 9.765467552707837e+02, - 9.772774567111965e+02, 9.780046292502950e+02, 9.787283107630587e+02, 9.794485384937562e+02, 9.801653490702272e+02, - 9.808787785177429e+02, 9.815888622724799e+02, 9.822956351946131e+02, 9.829991315810388e+02, 9.836993851777419e+02, - 9.843964291918219e+02, 9.850902963031853e+02, 9.857810186759200e+02, 9.864686279693533e+02, 9.871531553488197e+02, - 9.878346314961286e+02, 9.885130866197565e+02, 9.891885504647679e+02, 9.898610523224714e+02, 9.905306210398235e+02, - 9.911972850285814e+02, 9.918610717986995e+02, 9.925220098504748e+02, 9.931801258853162e+02, 9.938354466610925e+02, - 9.944879985428198e+02, 9.951378075104983e+02, 9.957848991667454e+02, 9.964292987442375e+02, 9.970710311129698e+02, - 9.977101207873319e+02, 9.983465919330096e+02, 9.989804683737216e+02, 9.996117735977843e+02, 1.000240530764525e+03, - 1.000866762710533e+03, 1.001490491955765e+03, 1.002111740709504e+03, 1.002730530876176e+03, 1.003346884061024e+03, - 1.003960821575660e+03, 1.004572364443475e+03, 1.005181533404929e+03, 1.005788348922717e+03, 1.006392831186818e+03, - 1.006995000119420e+03, 1.007594875379746e+03, 1.008192476368753e+03, 1.008787822233744e+03, 1.009380931872860e+03, - 1.009971823939477e+03, 1.010560516846510e+03, 1.011147028770611e+03, 1.011731377656284e+03, 1.012313581219905e+03, - 1.012893656953653e+03, 1.013471622129358e+03, 1.014047493802263e+03, 1.014621288814708e+03, 1.015193023799732e+03, - 1.015762715184597e+03, 1.016330379194244e+03, 1.016896031854665e+03, 1.017459688996213e+03, 1.018021366256837e+03, - 1.018581079085253e+03, 1.019138842744046e+03, 1.019694672312710e+03, 1.020248582690624e+03, 1.020800588599966e+03, - 1.021350704588570e+03, 1.021898945032725e+03, 1.022445324139910e+03, 1.022989855951485e+03, 1.023532554345321e+03, - 1.024073433038378e+03, 1.024612505589231e+03, 1.025149785400549e+03, 1.025685285721524e+03, 1.026219019650251e+03, - 1.026751000136059e+03, 1.027281239981802e+03, 1.027809751846104e+03, 1.028336548245557e+03, 1.028861641556877e+03, - 1.029385044019027e+03, 1.029906767735287e+03, 1.030426824675294e+03, 1.030945226677040e+03, 1.031461985448828e+03, - 1.031977112571203e+03, 1.032490619498831e+03, 1.033002517562357e+03, 1.033512817970222e+03, 1.034021531810445e+03, - 1.034528670052375e+03, 1.035034243548411e+03, 1.035538263035687e+03, 1.036040739137734e+03, 1.036541682366103e+03, - 1.037041103121961e+03, 1.037539011697663e+03, 1.038035418278290e+03, 1.038530332943166e+03, 1.039023765667337e+03, - 1.039515726323036e+03, 1.040006224681118e+03, 1.040495270412463e+03, 1.040982873089366e+03, 1.041469042186889e+03, - 1.041953787084207e+03, 1.042437117065912e+03, 1.042919041323309e+03, 1.043399568955680e+03, 1.043878708971534e+03, - 1.044356470289827e+03, 1.044832861741173e+03, 1.045307892069019e+03, 1.045781569930818e+03, 1.046253903899164e+03, - 1.046724902462922e+03, 1.047194574028337e+03, 1.047662926920110e+03, 1.048129969382483e+03, 1.048595709580277e+03, - 1.049060155599936e+03, 1.049523315450537e+03, 1.049985197064798e+03, 1.050445808300057e+03, 1.050905156939244e+03, - 1.051363250691829e+03, 1.051820097194765e+03, 1.052275704013408e+03, 1.052730078642422e+03, 1.053183228506675e+03, - 1.053635160962118e+03, 1.054085883296646e+03, 1.054535402730954e+03, 1.054983726419372e+03, 1.055430861450688e+03, - 1.055876814848962e+03, 1.056321593574326e+03, 1.056765204523766e+03, 1.057207654531901e+03, 1.057648950371741e+03, - 1.058089098755441e+03, 1.058528106335040e+03, 1.058965979703185e+03, 1.059402725393850e+03, 1.059838349883043e+03, - 1.060272859589498e+03, 1.060706260875362e+03, 1.061138560046870e+03, 1.061569763355000e+03, 1.061999876996143e+03, - 1.062428907112733e+03, 1.062856859793888e+03, 1.063283741076036e+03, 1.063709556943528e+03, 1.064134313329248e+03, - 1.064558016115208e+03, 1.064980671133139e+03, 1.065402284165072e+03, 1.065822860943910e+03, 1.066242407153991e+03, - 1.066660928431646e+03, 1.067078430365742e+03, 1.067494918498227e+03, 1.067910398324660e+03, 1.068324875294737e+03, - 1.068738354812805e+03, 1.069150842238371e+03, 1.069562342886613e+03, 1.069972862028864e+03, 1.070382404893107e+03, - 1.070790976664457e+03, 1.071198582485631e+03, 1.071605227457420e+03, 1.072010916639152e+03, 1.072415655049142e+03, - 1.072819447665145e+03, 1.073222299424799e+03, 1.073624215226058e+03, 1.074025199927627e+03, 1.074425258349384e+03, - 1.074824395272798e+03, 1.075222615441349e+03, 1.075619923560924e+03, 1.076016324300231e+03, 1.076411822291189e+03, - 1.076806422129322e+03, 1.077200128374141e+03, 1.077592945549533e+03, 1.077984878144128e+03, 1.078375930611676e+03, - 1.078766107371411e+03, 1.079155412808413e+03, 1.079543851273960e+03, 1.079931427085887e+03, 1.080318144528930e+03, - 1.080704007855064e+03, 1.081089021283850e+03, 1.081473189002759e+03, 1.081856515167509e+03, 1.082239003902387e+03, - 1.082620659300570e+03, 1.083001485424443e+03, 1.083381486305908e+03, 1.083760665946698e+03, 1.084139028318678e+03, - 1.084516577364148e+03, 1.084893316996139e+03, 1.085269251098705e+03, 1.085644383527218e+03, 1.086018718108645e+03, - 1.086392258641840e+03, 1.086765008897817e+03, 1.087136972620025e+03, 1.087508153524625e+03, 1.087878555300752e+03, - 1.088248181610785e+03, 1.088617036090608e+03, 1.088985122349867e+03, 1.089352443972228e+03, 1.089719004515626e+03, - 1.090084807512518e+03, 1.090449856470128e+03, 1.090814154870689e+03, 1.091177706171684e+03, 1.091540513806086e+03, - 1.091902581182585e+03, 1.092263911685830e+03, 1.092624508676652e+03, 1.092984375492289e+03, 1.093343515446612e+03, - 1.093701931830346e+03, 1.094059627911288e+03, 1.094416606934521e+03, 1.094772872122629e+03, 1.095128426675905e+03, - 1.095483273772561e+03, 1.095837416568937e+03, 1.096190858199694e+03, 1.096543601778027e+03, 1.096895650395853e+03, - 1.097247007124016e+03, 1.097597675012475e+03, 1.097947657090496e+03, 1.098296956366845e+03, 1.098645575829973e+03, - 1.098993518448198e+03, 1.099340787169895e+03, 1.099687384923671e+03, 1.100033314618545e+03, 1.100378579144127e+03, - 1.100723181370791e+03, 1.101067124149846e+03, 1.101410410313713e+03, 1.101753042676085e+03, 1.102095024032103e+03, - 1.102436357158513e+03, 1.102777044813835e+03, 1.103117089738523e+03, 1.103456494655122e+03, 1.103795262268432e+03, - 1.104133395265655e+03, 1.104470896316559e+03, 1.104807768073623e+03, 1.105144013172193e+03, 1.105479634230630e+03, - 1.105814633850455e+03, 1.106149014616499e+03, 1.106482779097044e+03, 1.106815929843972e+03, 1.107148469392896e+03, - 1.107480400263312e+03, 1.107811724958724e+03, 1.108142445966796e+03, 1.108472565759473e+03, 1.108802086793123e+03, - 1.109131011508671e+03, 1.109459342331721e+03, 1.109787081672695e+03, 1.110114231926957e+03, 1.110440795474940e+03, - 1.110766774682273e+03, 1.111092171899902e+03, 1.111416989464216e+03, 1.111741229697170e+03, 1.112064894906400e+03 - }, - { - 1.718406923114809e+00, 5.240767033159015e+00, 8.828825471983114e+00, 1.248568818150631e+01, 1.621470096447989e+01, - 2.001947509547979e+01, 2.390391648225298e+01, 2.787225899779568e+01, 3.192910272285310e+01, 3.607945800876551e+01, - 4.032879646932415e+01, 4.468311026904425e+01, 4.914898140355030e+01, 5.373366309017691e+01, 5.844517593474124e+01, - 6.329242225740104e+01, 6.828532290783726e+01, 7.343498216466951e+01, 7.875388802112305e+01, 8.425615749093714e+01, - 8.995783979536608e+01, 9.587729482010461e+01, 1.020356706820475e+02, 1.084575135907632e+02, 1.151715569759070e+02, - 1.222117576042095e+02, 1.296186783544368e+02, 1.374413677639701e+02, 1.457399681374091e+02, 1.545894215994743e+02, - 1.640848812172308e+02, 1.743498671237687e+02, 1.855490304211856e+02, 1.979090495992078e+02, 2.117547819581072e+02, - 2.275762716213535e+02, 2.461644006818375e+02, 2.689190114261615e+02, 2.986624001146608e+02, 3.421980287380287e+02, - 4.186777734027267e+02, 5.192134842987455e+02, 5.763565617925024e+02, 6.092222884746629e+02, 6.320492607895654e+02, - 6.495505020552895e+02, 6.637857442096046e+02, 6.758224351786511e+02, 6.862800495921764e+02, 6.955485847092559e+02, - 7.038889461518424e+02, 7.114840431826537e+02, 7.184669616425634e+02, 7.249375146936663e+02, 7.309724749288646e+02, - 7.366321700669014e+02, 7.419648852427513e+02, 7.470098893016935e+02, 7.517995686737640e+02, 7.563609656772105e+02, - 7.607169093561110e+02, 7.648868613858691e+02, 7.688875588242120e+02, 7.727335094695972e+02, 7.764373785863763e+02, - 7.800102944077117e+02, 7.834620921082176e+02, 7.868015105972935e+02, 7.900363527304963e+02, 7.931736168602163e+02, - 7.962196057139950e+02, 7.991800171753340e+02, 8.020600204966447e+02, 8.048643206927186e+02, 8.075972132734560e+02, - 8.102626310252716e+02, 8.128641842053075e+02, 8.154051952449413e+02, 8.178887288500393e+02, 8.203176182208819e+02, - 8.226944879843317e+02, 8.250217743267884e+02, 8.273017427329352e+02, 8.295365036678136e+02, 8.317280264849423e+02, - 8.338781517983768e+02, 8.359886025198126e+02, 8.380609937314889e+02, 8.400968415403897e+02, 8.420975710383215e+02, - 8.440645234747960e+02, 8.459989627349313e+02, 8.479020812021121e+02, 8.497750050745487e+02, 8.516187991959774e+02, - 8.534344714530104e+02, 8.552229767851366e+02, 8.569852208477251e+02, 8.587220633635452e+02, 8.604343211941149e+02, - 8.621227711585591e+02, 8.637881526245330e+02, 8.654311698929700e+02, 8.670524943960550e+02, 8.686527667257141e+02, - 8.702325985080503e+02, 8.717925741375593e+02, 8.733332523835138e+02, 8.748551678796484e+02, 8.763588325071744e+02, - 8.778447366801300e+02, 8.793133505412345e+02, 8.807651250755957e+02, 8.822004931489518e+02, 8.836198704764809e+02, - 8.850236565276763e+02, 8.864122353722657e+02, 8.877859764717284e+02, 8.891452354205337e+02, 8.904903546408869e+02, - 8.918216640344341e+02, 8.931394815940719e+02, 8.944441139787563e+02, 8.957358570539652e+02, 8.970149964002333e+02, - 8.982818077920128e+02, 8.995365576649733e+02, 9.007795035712406e+02, 9.020108945408000e+02, 9.032309706500641e+02, - 9.044399658630562e+02, 9.056381053993970e+02, 9.068256076974752e+02, 9.080026841753119e+02, 9.091695403057676e+02, - 9.103263746719786e+02, 9.114733800615838e+02, 9.126107434956288e+02, 9.137386464609658e+02, 9.148572651309939e+02, - 9.159667705754155e+02, 9.170673289596691e+02, 9.181591017346472e+02, 9.192422458172404e+02, 9.203169137622697e+02, - 9.213832539262610e+02, 9.224414106235482e+02, 9.234915242751167e+02, 9.245337315505997e+02, 9.255681655037984e+02, - 9.265949557020715e+02, 9.276142283499431e+02, 9.286261063839487e+02, 9.296307096745774e+02, 9.306281549870963e+02, - 9.316185562451434e+02, 9.326020244899806e+02, 9.335786680702919e+02, 9.345485926571274e+02, 9.355119014153091e+02, - 9.364686950289400e+02, 9.374190717961898e+02, 9.383631277059671e+02, 9.393009565114967e+02, 9.402326498009472e+02, - 9.411582970652634e+02, 9.420779857825684e+02, 9.429918014026908e+02, 9.438998275262078e+02, 9.448021458818893e+02, - 9.456988364027837e+02, 9.465899772797897e+02, 9.474756450132043e+02, 9.483559144623600e+02, 9.492308588934238e+02, - 9.501005500254456e+02, 9.509650580747282e+02, 9.518244517975965e+02, 9.526787985316355e+02, 9.535281642354561e+02, - 9.543726135270612e+02, 9.552122097208660e+02, 9.560470148634237e+02, 9.568770897679279e+02, 9.577024940475225e+02, - 9.585232861474816e+02, 9.593395233762975e+02, 9.601512619357308e+02, 9.609585569498543e+02, 9.617614624931321e+02, - 9.625600316175868e+02, 9.633543163790670e+02, 9.641443678626716e+02, 9.649302362073503e+02, 9.657119706297218e+02, - 9.664896194471281e+02, 9.672632300999705e+02, 9.680328491733388e+02, 9.687985224179652e+02, 9.695602947705386e+02, - 9.703182103733859e+02, 9.710723125935554e+02, 9.718226440413216e+02, 9.725692465881324e+02, 9.733121613840173e+02, - 9.740514288744760e+02, 9.747870888168753e+02, 9.755191802963519e+02, 9.762477417412591e+02, 9.769728109381642e+02, - 9.776944250464115e+02, 9.784126206122677e+02, 9.791274335826631e+02, 9.798388993185488e+02, 9.805470526078697e+02, - 9.812519276781815e+02, 9.819535582089133e+02, 9.826519773432908e+02, 9.833472176999337e+02, 9.840393113841307e+02, - 9.847282899988186e+02, 9.854141846552534e+02, 9.860970259834019e+02, 9.867768441420511e+02, 9.874536688286535e+02, - 9.881275292889098e+02, 9.887984538549454e+02, 9.894664718203564e+02, 9.901316106776505e+02, 9.907938979564340e+02, - 9.914533607788575e+02, 9.921100258678019e+02, 9.927639195548612e+02, 9.934150677881162e+02, 9.940634961397175e+02, - 9.947092298132806e+02, 9.953522936510910e+02, 9.959927121411376e+02, 9.966305094239693e+02, 9.972657092993850e+02, - 9.978983352329592e+02, 9.985284103624138e+02, 9.991559575038298e+02, 9.997809991577180e+02, 1.000403557514937e+03, - 1.001023654462475e+03, 1.001641311589099e+03, 1.002256550190862e+03, 1.002869391276488e+03, 1.003479855572632e+03, - 1.004087963529015e+03, 1.004693735323443e+03, 1.005297190866709e+03, 1.005898349807391e+03, 1.006497231536523e+03, - 1.007093855192186e+03, 1.007688239663971e+03, 1.008280403597362e+03, 1.008870365398008e+03, 1.009458143235906e+03, - 1.010043755049494e+03, 1.010627218549649e+03, 1.011208551223598e+03, 1.011787770338753e+03, 1.012364892946449e+03, - 1.012939935885614e+03, 1.013512915786350e+03, 1.014083849073446e+03, 1.014652751969814e+03, 1.015219640499848e+03, - 1.015784530492720e+03, 1.016347437585596e+03, 1.016908377226798e+03, 1.017467364678891e+03, 1.018024415021711e+03, - 1.018579543155325e+03, 1.019132763802938e+03, 1.019684091513733e+03, 1.020233540665662e+03, 1.020781125468173e+03, - 1.021326859964880e+03, 1.021870758036196e+03, 1.022412833401887e+03, 1.022953099623602e+03, 1.023491570107335e+03, - 1.024028258105845e+03, 1.024563176721026e+03, 1.025096338906237e+03, 1.025627757468580e+03, 1.026157445071130e+03, - 1.026685414235138e+03, 1.027211677342175e+03, 1.027736246636241e+03, 1.028259134225837e+03, 1.028780352085995e+03, - 1.029299912060266e+03, 1.029817825862676e+03, 1.030334105079645e+03, 1.030848761171865e+03, 1.031361805476149e+03, - 1.031873249207243e+03, 1.032383103459600e+03, 1.032891379209134e+03, 1.033398087314928e+03, 1.033903238520918e+03, - 1.034406843457547e+03, 1.034908912643384e+03, 1.035409456486719e+03, 1.035908485287129e+03, 1.036406009237007e+03, - 1.036902038423081e+03, 1.037396582827888e+03, 1.037889652331234e+03, 1.038381256711622e+03, 1.038871405647659e+03, - 1.039360108719433e+03, 1.039847375409873e+03, 1.040333215106082e+03, 1.040817637100642e+03, 1.041300650592905e+03, - 1.041782264690258e+03, 1.042262488409365e+03, 1.042741330677388e+03, 1.043218800333192e+03, 1.043694906128524e+03, - 1.044169656729171e+03, 1.044643060716108e+03, 1.045115126586613e+03, 1.045585862755378e+03, 1.046055277555589e+03, - 1.046523379239995e+03, 1.046990175981959e+03, 1.047455675876487e+03, 1.047919886941249e+03, 1.048382817117571e+03, - 1.048844474271423e+03, 1.049304866194383e+03, 1.049764000604589e+03, 1.050221885147674e+03, 1.050678527397687e+03, - 1.051133934858000e+03, 1.051588114962196e+03, 1.052041075074950e+03, 1.052492822492892e+03, 1.052943364445452e+03, - 1.053392708095702e+03, 1.053840860541176e+03, 1.054287828814685e+03, 1.054733619885104e+03, 1.055178240658170e+03, - 1.055621697977247e+03, 1.056063998624089e+03, 1.056505149319591e+03, 1.056945156724525e+03, 1.057384027440269e+03, - 1.057821768009519e+03, 1.058258384916997e+03, 1.058693884590144e+03, 1.059128273399803e+03, 1.059561557660893e+03, - 1.059993743633072e+03, 1.060424837521390e+03, 1.060854845476932e+03, 1.061283773597456e+03, 1.061711627928011e+03, - 1.062138414461555e+03, 1.062564139139566e+03, 1.062988807852633e+03, 1.063412426441046e+03, 1.063835000695380e+03, - 1.064256536357061e+03, 1.064677039118935e+03, 1.065096514625817e+03, 1.065514968475047e+03, 1.065932406217018e+03, - 1.066348833355717e+03, 1.066764255349247e+03, 1.067178677610339e+03, 1.067592105506868e+03, 1.068004544362348e+03, - 1.068415999456435e+03, 1.068826476025407e+03, 1.069235979262650e+03, 1.069644514319134e+03, 1.070052086303874e+03, - 1.070458700284398e+03, 1.070864361287199e+03, 1.071269074298184e+03, 1.071672844263116e+03, 1.072075676088054e+03, - 1.072477574639776e+03, 1.072878544746210e+03, 1.073278591196852e+03, 1.073677718743174e+03, 1.074075932099041e+03, - 1.074473235941101e+03, 1.074869634909194e+03, 1.075265133606730e+03, 1.075659736601088e+03, 1.076053448423987e+03, - 1.076446273571869e+03, 1.076838216506263e+03, 1.077229281654156e+03, 1.077619473408353e+03, 1.078008796127830e+03, - 1.078397254138092e+03, 1.078784851731512e+03, 1.079171593167680e+03, 1.079557482673740e+03, 1.079942524444719e+03, - 1.080326722643862e+03, 1.080710081402954e+03, 1.081092604822640e+03, 1.081474296972747e+03, 1.081855161892588e+03, - 1.082235203591280e+03, 1.082614426048041e+03, 1.082992833212498e+03, 1.083370429004975e+03, 1.083747217316796e+03, - 1.084123202010569e+03, 1.084498386920473e+03, 1.084872775852538e+03, 1.085246372584932e+03, 1.085619180868226e+03, - 1.085991204425672e+03, 1.086362446953471e+03, 1.086732912121036e+03, 1.087102603571256e+03, 1.087471524920756e+03, - 1.087839679760148e+03, 1.088207071654287e+03, 1.088573704142520e+03, 1.088939580738932e+03, 1.089304704932588e+03, - 1.089669080187775e+03, 1.090032709944240e+03, 1.090395597617421e+03, 1.090757746598684e+03, 1.091119160255546e+03, - 1.091479841931908e+03, 1.091839794948272e+03, 1.092199022601967e+03, 1.092557528167362e+03, 1.092915314896089e+03, - 1.093272386017248e+03, 1.093628744737624e+03, 1.093984394241891e+03, 1.094339337692820e+03, 1.094693578231480e+03, - 1.095047118977443e+03, 1.095399963028976e+03, 1.095752113463244e+03, 1.096103573336501e+03, 1.096454345684280e+03, - 1.096804433521585e+03, 1.097153839843079e+03, 1.097502567623266e+03, 1.097850619816676e+03, 1.098197999358044e+03, - 1.098544709162495e+03, 1.098890752125713e+03, 1.099236131124120e+03, 1.099580849015048e+03, 1.099924908636910e+03, - 1.100268312809370e+03, 1.100611064333508e+03, 1.100953165991986e+03, 1.101294620549213e+03, 1.101635430751504e+03, - 1.101975599327242e+03, 1.102315128987034e+03, 1.102654022423869e+03, 1.102992282313270e+03, 1.103329911313450e+03, - 1.103666912065460e+03, 1.104003287193341e+03, 1.104339039304270e+03, 1.104674170988708e+03, 1.105008684820542e+03, - 1.105342583357230e+03, 1.105675869139941e+03, 1.106008544693698e+03, 1.106340612527513e+03, 1.106672075134523e+03, - 1.107002934992131e+03, 1.107333194562136e+03, 1.107662856290864e+03, 1.107991922609303e+03, 1.108320395933230e+03, - 1.108648278663341e+03, 1.108975573185377e+03, 1.109302281870251e+03, 1.109628407074169e+03, 1.109953951138758e+03 - }, - { - 1.712675335538445e+00, 5.222758735786230e+00, 8.797553863589767e+00, 1.244007577233650e+01, 1.615356867249690e+01, - 1.994152996215746e+01, 2.380773752396502e+01, 2.775628084773391e+01, 3.179159664242141e+01, 3.591850975123064e+01, - 4.014228035674451e+01, 4.446865868794910e+01, 4.890394872458076e+01, 5.345508275705683e+01, 5.812970912782430e+01, - 6.293629608771477e+01, 6.788425549805939e+01, 7.298409116511574e+01, 7.824757800632342e+01, 8.368798016009754e+01, - 8.932031876998963e+01, 9.516170380836566e+01, 1.012317494193090e+02, 1.075530995693270e+02, 1.141521014154579e+02, - 1.210596795208874e+02, 1.283124877935041e+02, 1.359544527275868e+02, 1.440388795114474e+02, 1.526313876065373e+02, - 1.618141012194774e+02, 1.716917986133276e+02, 1.824012299994901e+02, 1.941257808817179e+02, 2.071196142014119e+02, - 2.217496577111946e+02, 2.385737133999050e+02, 2.584983711241987e+02, 2.831320115323077e+02, 3.156613539521880e+02, - 3.630997947696408e+02, 4.387201470067590e+02, 5.193997927095683e+02, 5.700674942917902e+02, 6.018293272836941e+02, - 6.245805890730010e+02, 6.422636824229876e+02, 6.567401056986423e+02, 6.690196329287630e+02, 6.797045608102532e+02, - 6.891806976958900e+02, 6.977091813482980e+02, 7.054746088152863e+02, 7.126121099819999e+02, 7.192234846177296e+02, - 7.253872905920645e+02, 7.311654052676587e+02, 7.366074372433183e+02, 7.417537777641725e+02, 7.466377633090615e+02, - 7.512872412110819e+02, 7.557257246007633e+02, 7.599732588038790e+02, 7.640470811684424e+02, 7.679621304996114e+02, - 7.717314453258698e+02, 7.753664788443277e+02, 7.788773506194008e+02, 7.822730497076756e+02, 7.855616000714081e+02, - 7.887501964175663e+02, 7.918453166247580e+02, 7.948528154727840e+02, 7.977780033167251e+02, 8.006257125439880e+02, - 8.034003540453530e+02, 8.061059654676167e+02, 8.087462526588188e+02, 8.113246254404582e+02, 8.138442286248874e+02, - 8.163079690258187e+02, 8.187185390749378e+02, 8.210784375499093e+02, 8.233899878325590e+02, 8.256553540461488e+02, - 8.278765553638865e+02, 8.300554787344498e+02, 8.321938902321788e+02, 8.342934452082037e+02, 8.363556973926898e+02, - 8.383821070766481e+02, 8.403740484836482e+02, 8.423328164264431e+02, 8.442596323306939e+02, 8.461556496970516e+02, - 8.480219590635993e+02, 8.498595925227540e+02, 8.516695278399659e+02, 8.534526922157512e+02, 8.552099657275926e+02, - 8.569421844839227e+02, 8.586501435186699e+02, 8.603345994515994e+02, 8.619962729368405e+02, 8.636358509195394e+02, - 8.652539887184092e+02, 8.668513119500343e+02, 8.684284183091568e+02, 8.699858792176612e+02, 8.715242413537122e+02, - 8.730440280713271e+02, 8.745457407196646e+02, 8.760298598703952e+02, 8.774968464607156e+02, 8.789471428588715e+02, - 8.803811738583802e+02, 8.817993476066031e+02, 8.832020564727824e+02, 8.845896778602109e+02, 8.859625749667878e+02, - 8.873210974978335e+02, 8.886655823347053e+02, 8.899963541624625e+02, 8.913137260595406e+02, 8.926180000521576e+02, - 8.939094676359464e+02, 8.951884102700761e+02, 8.964550998760453e+02, 8.977097992609447e+02, 8.989527625011211e+02, - 9.001842341993906e+02, 9.014044534939202e+02, 9.026136499068726e+02, 9.038120460155968e+02, 9.049998580281922e+02, - 9.061772948189647e+02, 9.073445590728072e+02, 9.085018473261725e+02, 9.096493502180132e+02, 9.107872527279699e+02, - 9.119157344025870e+02, 9.130349695702655e+02, 9.141451275456224e+02, 9.152463728238687e+02, 9.163388652657990e+02, - 9.174227602739202e+02, 9.184982089602306e+02, 9.195653583061151e+02, 9.206243513148017e+02, 9.216753271567909e+02, - 9.227184213086423e+02, 9.237537656854752e+02, 9.247814887675341e+02, 9.258017157026450e+02, 9.268145684972330e+02, - 9.278201659773041e+02, 9.288186241039492e+02, 9.298100558652801e+02, 9.307945715071588e+02, 9.317722785465197e+02, - 9.327432819375863e+02, 9.337076841042539e+02, 9.346655850543116e+02, 9.356170823814016e+02, 9.365622714567338e+02, - 9.375012454225092e+02, 9.384340952813180e+02, 9.393609099627874e+02, 9.402817763876185e+02, 9.411967795291333e+02, - 9.421060024724591e+02, 9.430095264714533e+02, 9.439074310034625e+02, 9.447997938220271e+02, 9.456866910076274e+02, - 9.465681970165350e+02, 9.474443847278808e+02, 9.483153254890052e+02, 9.491810891591648e+02, 9.500417441516666e+02, - 9.508973574745092e+02, 9.517479947695753e+02, 9.525937203504535e+02, 9.534345972389403e+02, 9.542706872002765e+02, - 9.551020507771748e+02, 9.559287473226848e+02, 9.567508350319436e+02, 9.575683709728590e+02, 9.583814111157720e+02, - 9.591900103621242e+02, 9.599942225721925e+02, 9.607941005919104e+02, 9.615896962788179e+02, 9.623810605271743e+02, - 9.631682432922674e+02, 9.639512936139485e+02, 9.647302596394202e+02, 9.655051886453098e+02, 9.662761270590582e+02, - 9.670431204796354e+02, 9.678062136976312e+02, 9.685654507147171e+02, 9.693208747625278e+02, 9.700725283209664e+02, - 9.708204531359596e+02, 9.715646902366883e+02, 9.723052799523023e+02, 9.730422619281425e+02, 9.737756751414947e+02, - 9.745055579168771e+02, 9.752319479408895e+02, 9.759548822766388e+02, 9.766743973777446e+02, 9.773905291019540e+02, - 9.781033127243716e+02, 9.788127829503142e+02, 9.795189739278103e+02, 9.802219192597557e+02, 9.809216520157245e+02, - 9.816182047434692e+02, 9.823116094800976e+02, 9.830018977629552e+02, 9.836891006402027e+02, 9.843732486811276e+02, - 9.850543719861636e+02, 9.857324997301691e+02, 9.864076620192152e+02, 9.870798871564469e+02, 9.877492034619880e+02, - 9.884156388334329e+02, 9.890792207544056e+02, 9.897399763028955e+02, 9.903979321593806e+02, 9.910531146147526e+02, - 9.917055495780313e+02, 9.923552625838938e+02, 9.930022788000127e+02, 9.936466230342138e+02, 9.942883197414577e+02, - 9.949273930306473e+02, 9.955638666712741e+02, 9.961977640998971e+02, 9.968291084264720e+02, 9.974579224405243e+02, - 9.980842286171717e+02, 9.987080491230149e+02, 9.993294058218755e+02, 9.999483202804053e+02, 1.000564813773567e+03, - 1.001178907289983e+03, 1.001790621537157e+03, 1.002399976946587e+03, 1.003006993678746e+03, 1.003611691627963e+03, - 1.004214090427181e+03, 1.004814209452614e+03, 1.005412067828300e+03, 1.006007684430549e+03, 1.006601077892290e+03, - 1.007192266607331e+03, 1.007781268734510e+03, 1.008368102201768e+03, 1.008952784710129e+03, 1.009535333737585e+03, - 1.010115766542914e+03, 1.010694100169399e+03, 1.011270351448472e+03, 1.011844537003293e+03, 1.012416673252227e+03, - 1.012986776412273e+03, 1.013554862502403e+03, 1.014120947346844e+03, 1.014685046578279e+03, 1.015247175640991e+03, - 1.015807349793940e+03, 1.016365584113770e+03, 1.016921893497761e+03, 1.017476292666722e+03, 1.018028796167818e+03, - 1.018579418377346e+03, 1.019128173503453e+03, 1.019675075588796e+03, 1.020220138513155e+03, 1.020763375995990e+03, - 1.021304801598949e+03, 1.021844428728322e+03, 1.022382270637454e+03, 1.022918340429106e+03, 1.023452651057772e+03, - 1.023985215331948e+03, 1.024516045916358e+03, 1.025045155334144e+03, 1.025572555969002e+03, 1.026098260067288e+03, - 1.026622279740074e+03, 1.027144626965177e+03, 1.027665313589140e+03, 1.028184351329176e+03, 1.028701751775082e+03, - 1.029217526391114e+03, 1.029731686517826e+03, 1.030244243373875e+03, 1.030755208057793e+03, 1.031264591549733e+03, - 1.031772404713167e+03, 1.032278658296573e+03, 1.032783362935077e+03, 1.033286529152070e+03, 1.033788167360795e+03, - 1.034288287865912e+03, 1.034786900865022e+03, 1.035284016450175e+03, 1.035779644609348e+03, 1.036273795227896e+03, - 1.036766478089976e+03, 1.037257702879952e+03, 1.037747479183767e+03, 1.038235816490297e+03, 1.038722724192684e+03, - 1.039208211589634e+03, 1.039692287886709e+03, 1.040174962197581e+03, 1.040656243545280e+03, 1.041136140863407e+03, - 1.041614662997331e+03, 1.042091818705376e+03, 1.042567616659966e+03, 1.043042065448778e+03, 1.043515173575847e+03, - 1.043986949462681e+03, 1.044457401449333e+03, 1.044926537795470e+03, 1.045394366681425e+03, 1.045860896209214e+03, - 1.046326134403564e+03, 1.046790089212900e+03, 1.047252768510330e+03, 1.047714180094606e+03, 1.048174331691075e+03, - 1.048633230952615e+03, 1.049090885460548e+03, 1.049547302725549e+03, 1.050002490188534e+03, 1.050456455221534e+03, - 1.050909205128560e+03, 1.051360747146445e+03, 1.051811088445688e+03, 1.052260236131266e+03, 1.052708197243449e+03, - 1.053154978758595e+03, 1.053600587589930e+03, 1.054045030588326e+03, 1.054488314543058e+03, 1.054930446182548e+03, - 1.055371432175109e+03, 1.055811279129667e+03, 1.056249993596473e+03, 1.056687582067810e+03, 1.057124050978687e+03, - 1.057559406707517e+03, 1.057993655576793e+03, 1.058426803853748e+03, 1.058858857751009e+03, 1.059289823427238e+03, - 1.059719706987767e+03, 1.060148514485220e+03, 1.060576251920127e+03, 1.061002925241532e+03, 1.061428540347589e+03, - 1.061853103086146e+03, 1.062276619255330e+03, 1.062699094604114e+03, 1.063120534832882e+03, 1.063540945593982e+03, - 1.063960332492272e+03, 1.064378701085663e+03, 1.064796056885643e+03, 1.065212405357807e+03, 1.065627751922368e+03, - 1.066042101954670e+03, 1.066455460785689e+03, 1.066867833702521e+03, 1.067279225948879e+03, 1.067689642725569e+03, - 1.068099089190961e+03, 1.068507570461461e+03, 1.068915091611974e+03, 1.069321657676349e+03, 1.069727273647838e+03, - 1.070131944479532e+03, 1.070535675084797e+03, 1.070938470337707e+03, 1.071340335073464e+03, 1.071741274088823e+03, - 1.072141292142498e+03, 1.072540393955573e+03, 1.072938584211901e+03, 1.073335867558503e+03, 1.073732248605957e+03, - 1.074127731928787e+03, 1.074522322065838e+03, 1.074916023520655e+03, 1.075308840761855e+03, 1.075700778223489e+03, - 1.076091840305406e+03, 1.076482031373605e+03, 1.076871355760593e+03, 1.077259817765725e+03, 1.077647421655550e+03, - 1.078034171664147e+03, 1.078420071993462e+03, 1.078805126813632e+03, 1.079189340263314e+03, 1.079572716450004e+03, - 1.079955259450353e+03, 1.080336973310481e+03, 1.080717862046285e+03, 1.081097929643742e+03, 1.081477180059215e+03, - 1.081855617219742e+03, 1.082233245023336e+03, 1.082610067339270e+03, 1.082986088008369e+03, 1.083361310843283e+03, - 1.083735739628774e+03, 1.084109378121988e+03, 1.084482230052726e+03, 1.084854299123712e+03, 1.085225589010865e+03, - 1.085596103363551e+03, 1.085965845804849e+03, 1.086334819931802e+03, 1.086703029315672e+03, 1.087070477502188e+03, - 1.087437168011795e+03, 1.087803104339893e+03, 1.088168289957079e+03, 1.088532728309386e+03, 1.088896422818519e+03, - 1.089259376882078e+03, 1.089621593873799e+03, 1.089983077143772e+03, 1.090343830018666e+03, 1.090703855801952e+03, - 1.091063157774121e+03, 1.091421739192896e+03, 1.091779603293450e+03, 1.092136753288614e+03, 1.092493192369085e+03, - 1.092848923703632e+03, 1.093203950439301e+03, 1.093558275701612e+03, 1.093911902594761e+03, 1.094264834201818e+03, - 1.094617073584913e+03, 1.094968623785438e+03, 1.095319487824226e+03, 1.095669668701750e+03, 1.096019169398296e+03, - 1.096367992874157e+03, 1.096716142069808e+03, 1.097063619906082e+03, 1.097410429284356e+03, 1.097756573086719e+03, - 1.098102054176146e+03, 1.098446875396671e+03, 1.098791039573552e+03, 1.099134549513445e+03, 1.099477408004561e+03, - 1.099819617816838e+03, 1.100161181702092e+03, 1.100502102394190e+03, 1.100842382609194e+03, 1.101182025045530e+03, - 1.101521032384133e+03, 1.101859407288606e+03, 1.102197152405367e+03, 1.102534270363800e+03, 1.102870763776404e+03, - 1.103206635238940e+03, 1.103541887330570e+03, 1.103876522614008e+03, 1.104210543635654e+03, 1.104543952925741e+03, - 1.104876752998468e+03, 1.105208946352140e+03, 1.105540535469301e+03, 1.105871522816871e+03, 1.106201910846278e+03, - 1.106531701993585e+03, 1.106860898679629e+03, 1.107189503310138e+03, 1.107517518275866e+03, 1.107844945952718e+03 - }, - { - 1.706982439690026e+00, 5.204879449096566e+00, 8.766519832179346e+00, 1.239483063976562e+01, 1.609295787751917e+01, - 1.986428905573338e+01, 2.371247874442809e+01, 2.764147763791471e+01, 3.165556572433693e+01, 3.575939028800079e+01, - 3.995800962318453e+01, 4.425694353360376e+01, 4.866223193683066e+01, 5.318050320461273e+01, 5.781905426929794e+01, - 6.258594504203600e+01, 6.749011035972119e+01, 7.254149355988751e+01, 7.775120695363478e+01, 8.313172603690775e+01, - 8.869712641006537e+01, 9.446337529902878e+01, 1.004486936369112e+02, 1.066740103996810e+02, 1.131635391035187e+02, - 1.199455183361314e+02, 1.270531759454070e+02, 1.345260034016678e+02, 1.424114683610503e+02, 1.507673598036600e+02, - 1.596650675874954e+02, 1.691942804521954e+02, 1.794699039020866e+02, 1.906425774264511e+02, 2.029152725545038e+02, - 2.165706694921852e+02, 2.320187413920738e+02, 2.498847408293602e+02, 2.711837125474593e+02, 2.976905494763279e+02, - 3.327336737839258e+02, 3.825490824225566e+02, 4.527336942181644e+02, 5.192832595818398e+02, 5.646313621552536e+02, - 5.951031618208031e+02, 6.175851052568865e+02, 6.353202051936323e+02, 6.499540835627256e+02, 6.624209247312421e+02, - 6.732949751300063e+02, 6.829515411152710e+02, 6.916482191071054e+02, 6.995689527055550e+02, 7.068494157229791e+02, - 7.135924078570960e+02, 7.198776089530932e+02, 7.257679914953125e+02, 7.313141705612921e+02, 7.365574349852416e+02, - 7.415319092093157e+02, 7.462661267898687e+02, 7.507841964414731e+02, 7.551066801110832e+02, 7.592512638330609e+02, - 7.632332770441791e+02, 7.670660994468998e+02, 7.707614833092550e+02, 7.743298113926828e+02, 7.777803053233439e+02, - 7.811211954123314e+02, 7.843598601932335e+02, 7.875029419550948e+02, 7.905564430846578e+02, 7.935258069432332e+02, - 7.964159861862997e+02, 7.992315008144877e+02, 8.019764877711466e+02, 8.046547435367000e+02, 8.072697608864146e+02, - 8.098247607563333e+02, 8.123227199872172e+02, 8.147663955775240e+02, 8.171583459657004e+02, 8.195009497729275e+02, - 8.217964223655861e+02, 8.240468305381578e+02, 8.262541055695501e+02, 8.284200548665399e+02, 8.305463723756865e+02, - 8.326346479181877e+02, 8.346863755798056e+02, 8.367029612692426e+02, 8.386857295426870e+02, 8.406359297789393e+02, - 8.425547417783506e+02, 8.444432808492462e+02, 8.463026024373886e+02, 8.481337063470924e+02, 8.499375405966072e+02, - 8.517150049452766e+02, 8.534669541255241e+02, 8.551942008088823e+02, 8.568975183319500e+02, 8.585776432052448e+02, - 8.602352774253964e+02, 8.618710906088929e+02, 8.634857219636693e+02, 8.650797821130784e+02, 8.666538547853268e+02, - 8.682084983800847e+02, 8.697442474228184e+02, 8.712616139163629e+02, 8.727610885982999e+02, 8.742431421119039e+02, - 8.757082260976700e+02, 8.771567742117907e+02, 8.785892030773540e+02, 8.800059131735208e+02, 8.814072896674488e+02, - 8.827937031933297e+02, 8.841655105825072e+02, 8.855230555483071e+02, 8.868666693289067e+02, 8.881966712912699e+02, - 8.895133694989522e+02, 8.908170612463805e+02, 8.921080335803023e+02, 8.933865637986997e+02, 8.946529198581728e+02, - 8.959073599673829e+02, 8.971501355426025e+02, 8.983814885101035e+02, 8.996016531627201e+02, 9.008108569691789e+02, - 9.020093195983928e+02, 9.031972541105308e+02, 9.043748670127230e+02, 9.055423585298234e+02, 9.066999228612643e+02, - 9.078477484248564e+02, 9.089860180883130e+02, 9.101149093892451e+02, 9.112345947442931e+02, 9.123452416480455e+02, - 9.134470128623316e+02, 9.145400665964378e+02, 9.156245566787727e+02, 9.167006327204609e+02, 9.177684402713088e+02, - 9.188281209685779e+02, 9.198798126596431e+02, 9.209236496163513e+02, 9.219597625437120e+02, 9.229882787858735e+02, - 9.240093224233061e+02, 9.250230143858660e+02, 9.260294725609529e+02, 9.270288118795812e+02, 9.280211444761034e+02, - 9.290065797055061e+02, 9.299852242775123e+02, 9.309571823350673e+02, 9.319225555379239e+02, 9.328814431428191e+02, - 9.338339420804016e+02, 9.347801470290685e+02, 9.357201504858704e+02, 9.366540428346059e+02, 9.375819124112560e+02, - 9.385038455668653e+02, 9.394199267280120e+02, 9.403302384549519e+02, 9.412348614975612e+02, 9.421338748491696e+02, - 9.430273557983868e+02, 9.439153799790002e+02, 9.447980214180383e+02, 9.456753525820820e+02, 9.465474444218916e+02, - 9.474143664154307e+02, 9.482761866093555e+02, 9.491329716590262e+02, 9.499847868671227e+02, 9.508316962208958e+02, - 9.516737624281376e+02, 9.525110469519125e+02, 9.533436100440917e+02, 9.541715107777630e+02, 9.549948070785333e+02, - 9.558135557547994e+02, 9.566278125269963e+02, 9.574376320558924e+02, 9.582430679699542e+02, 9.590441728918111e+02, - 9.598409984638831e+02, 9.606335953731647e+02, 9.614220133752316e+02, 9.622063013174841e+02, 9.629865071616542e+02, - 9.637626780056170e+02, 9.645348601045131e+02, 9.653030988912325e+02, 9.660674389962587e+02, 9.668279242669157e+02, - 9.675845977860297e+02, 9.683375018900271e+02, 9.690866781864975e+02, 9.698321675712286e+02, 9.705740102447439e+02, - 9.713122457283520e+02, 9.720469128797278e+02, 9.727780499080446e+02, 9.735056943886680e+02, 9.742298832774327e+02, - 9.749506529245079e+02, 9.756680390878787e+02, 9.763820769464386e+02, 9.770928011127232e+02, 9.778002456452909e+02, - 9.785044440607552e+02, 9.792054293454939e+02, 9.799032339670341e+02, 9.805978898851318e+02, 9.812894285625475e+02, - 9.819778809755398e+02, 9.826632771625274e+02, 9.833456480615515e+02, 9.840250228061794e+02, 9.847014305260876e+02, - 9.853748999128763e+02, 9.860454592290093e+02, 9.867131363165253e+02, 9.873779586055219e+02, 9.880399531224249e+02, - 9.886991464980497e+02, 9.893555649754571e+02, 9.900092344176110e+02, 9.906601803148484e+02, 9.913084277921610e+02, - 9.919540016162982e+02, 9.925969262026956e+02, 9.932372256222337e+02, 9.938749236078313e+02, 9.945100435608836e+02, - 9.951426085575382e+02, 9.957726413548297e+02, 9.964001643966610e+02, 9.970251998196441e+02, 9.976477694588075e+02, - 9.982678948531662e+02, 9.988855972511591e+02, 9.995008976159669e+02, 1.000113816630704e+03, 1.000724374703486e+03, - 1.001332591972389e+03, 1.001938488310294e+03, 1.002542083329615e+03, 1.003143396386932e+03, 1.003742446587508e+03, - 1.004339252789716e+03, 1.004933833609359e+03, 1.005526207423897e+03, 1.006116392376585e+03, 1.006704406380514e+03, - 1.007290267122572e+03, 1.007873992067305e+03, 1.008455598460713e+03, 1.009035103333946e+03, 1.009612523506939e+03, - 1.010187875591949e+03, 1.010761175997042e+03, 1.011332440929477e+03, 1.011901686399046e+03, 1.012468928221326e+03, - 1.013034182020875e+03, 1.013597463234348e+03, 1.014158787113568e+03, 1.014718168728510e+03, 1.015275622970246e+03, - 1.015831164553820e+03, 1.016384808021057e+03, 1.016936567743336e+03, 1.017486457924282e+03, 1.018034492602426e+03, - 1.018580685653798e+03, 1.019125050794473e+03, 1.019667601583069e+03, 1.020208351423194e+03, 1.020747313565839e+03, - 1.021284501111738e+03, 1.021819927013665e+03, 1.022353604078702e+03, 1.022885544970454e+03, 1.023415762211224e+03, - 1.023944268184148e+03, 1.024471075135282e+03, 1.024996195175665e+03, 1.025519640283322e+03, 1.026041422305249e+03, - 1.026561552959349e+03, 1.027080043836331e+03, 1.027596906401586e+03, 1.028112151997010e+03, 1.028625791842814e+03, - 1.029137837039279e+03, 1.029648298568498e+03, 1.030157187296074e+03, 1.030664513972790e+03, 1.031170289236258e+03, - 1.031674523612515e+03, 1.032177227517622e+03, 1.032678411259207e+03, 1.033178085037995e+03, 1.033676258949307e+03, - 1.034172942984533e+03, 1.034668147032576e+03, 1.035161880881278e+03, 1.035654154218813e+03, 1.036144976635058e+03, - 1.036634357622947e+03, 1.037122306579787e+03, 1.037608832808569e+03, 1.038093945519241e+03, 1.038577653829971e+03, - 1.039059966768379e+03, 1.039540893272755e+03, 1.040020442193252e+03, 1.040498622293062e+03, 1.040975442249571e+03, - 1.041450910655492e+03, 1.041925036019986e+03, 1.042397826769755e+03, 1.042869291250125e+03, 1.043339437726109e+03, - 1.043808274383445e+03, 1.044275809329632e+03, 1.044742050594935e+03, 1.045207006133381e+03, 1.045670683823736e+03, - 1.046133091470467e+03, 1.046594236804689e+03, 1.047054127485100e+03, 1.047512771098892e+03, 1.047970175162653e+03, - 1.048426347123258e+03, 1.048881294358743e+03, 1.049335024179161e+03, 1.049787543827430e+03, 1.050238860480164e+03, - 1.050688981248499e+03, 1.051137913178890e+03, 1.051585663253916e+03, 1.052032238393054e+03, 1.052477645453453e+03, - 1.052921891230693e+03, 1.053364982459529e+03, 1.053806925814628e+03, 1.054247727911293e+03, 1.054687395306176e+03, - 1.055125934497977e+03, 1.055563351928143e+03, 1.055999653981541e+03, 1.056434846987135e+03, 1.056868937218642e+03, - 1.057301930895191e+03, 1.057733834181952e+03, 1.058164653190784e+03, 1.058594393980841e+03, 1.059023062559199e+03, - 1.059450664881452e+03, 1.059877206852310e+03, 1.060302694326190e+03, 1.060727133107789e+03, 1.061150528952654e+03, - 1.061572887567748e+03, 1.061994214612001e+03, 1.062414515696856e+03, 1.062833796386807e+03, 1.063252062199930e+03, - 1.063669318608405e+03, 1.064085571039030e+03, 1.064500824873734e+03, 1.064915085450069e+03, 1.065328358061712e+03, - 1.065740647958950e+03, 1.066151960349158e+03, 1.066562300397274e+03, 1.066971673226261e+03, 1.067380083917578e+03, - 1.067787537511623e+03, 1.068194039008187e+03, 1.068599593366892e+03, 1.069004205507632e+03, 1.069407880310994e+03, - 1.069810622618690e+03, 1.070212437233971e+03, 1.070613328922038e+03, 1.071013302410453e+03, 1.071412362389535e+03, - 1.071810513512763e+03, 1.072207760397157e+03, 1.072604107623671e+03, 1.072999559737573e+03, 1.073394121248815e+03, - 1.073787796632406e+03, 1.074180590328780e+03, 1.074572506744153e+03, 1.074963550250877e+03, 1.075353725187798e+03, - 1.075743035860598e+03, 1.076131486542134e+03, 1.076519081472782e+03, 1.076905824860766e+03, 1.077291720882491e+03, - 1.077676773682859e+03, 1.078060987375600e+03, 1.078444366043583e+03, 1.078826913739127e+03, 1.079208634484314e+03, - 1.079589532271288e+03, 1.079969611062561e+03, 1.080348874791304e+03, 1.080727327361647e+03, 1.081104972648962e+03, - 1.081481814500151e+03, 1.081857856733929e+03, 1.082233103141103e+03, 1.082607557484846e+03, 1.082981223500967e+03, - 1.083354104898183e+03, 1.083726205358381e+03, 1.084097528536883e+03, 1.084468078062701e+03, 1.084837857538796e+03, - 1.085206870542326e+03, 1.085575120624899e+03, 1.085942611312818e+03, 1.086309346107324e+03, 1.086675328484834e+03, - 1.087040561897186e+03, 1.087405049771861e+03, 1.087768795512228e+03, 1.088131802497762e+03, 1.088494074084279e+03, - 1.088855613604152e+03, 1.089216424366537e+03, 1.089576509657588e+03, 1.089935872740675e+03, 1.090294516856597e+03, - 1.090652445223789e+03, 1.091009661038535e+03, 1.091366167475169e+03, 1.091721967686284e+03, 1.092077064802926e+03, - 1.092431461934798e+03, 1.092785162170454e+03, 1.093138168577493e+03, 1.093490484202752e+03, 1.093842112072491e+03, - 1.094193055192589e+03, 1.094543316548719e+03, 1.094892899106541e+03, 1.095241805811874e+03, 1.095590039590880e+03, - 1.095937603350243e+03, 1.096284499977336e+03, 1.096630732340402e+03, 1.096976303288721e+03, 1.097321215652780e+03, - 1.097665472244440e+03, 1.098009075857100e+03, 1.098352029265862e+03, 1.098694335227694e+03, 1.099035996481586e+03, - 1.099377015748711e+03, 1.099717395732581e+03, 1.100057139119199e+03, 1.100396248577216e+03, 1.100734726758080e+03, - 1.101072576296184e+03, 1.101409799809015e+03, 1.101746399897304e+03, 1.102082379145165e+03, 1.102417740120240e+03, - 1.102752485373843e+03, 1.103086617441097e+03, 1.103420138841074e+03, 1.103753052076931e+03, 1.104085359636047e+03, - 1.104417063990157e+03, 1.104748167595481e+03, 1.105078672892863e+03, 1.105408582307893e+03, 1.105737898251039e+03 - }, - { - 1.701327836502977e+00, 5.187127707250382e+00, 8.735720426701583e+00, 1.234994782590756e+01, 1.603286096466714e+01, - 1.978774129369198e+01, 2.361812458190755e+01, 2.752782806339939e+01, 3.152098133827312e+01, 3.560206167844039e+01, - 3.977593452070744e+01, 4.404790009953199e+01, 4.842374738364011e+01, 5.290981674840159e+01, 5.751307315705955e+01, - 6.224119206111897e+01, 6.710266079595324e+01, 7.210689898546795e+01, 7.726440244090649e+01, 8.258691632997444e+01, - 8.808764512678607e+01, 9.378150920915934e+01, 9.968546120920612e+01, 1.058188797355665e+02, 1.122040644603731e+02, - 1.188668657084663e+02, 1.258374950243349e+02, 1.331515830049667e+02, 1.408515807410208e+02, 1.489886475694715e+02, - 1.576252421656347e+02, 1.668387539244906e+02, 1.767267151062088e+02, 1.874144872361744e+02, 1.990669545897159e+02, - 2.119069636425941e+02, 2.262456271356261e+02, 2.425345158662039e+02, 2.614601708477834e+02, 2.841228511001287e+02, - 3.123746038530018e+02, 3.493576202596086e+02, 3.997084275440957e+02, 4.626191634283791e+02, 5.190024315484657e+02, - 5.599075654482891e+02, 5.889986693742287e+02, 6.110646418198917e+02, 6.287367696935403e+02, 6.434472352531000e+02, - 6.560448981495030e+02, 6.670678455246683e+02, 6.768755073299975e+02, 6.857184821750345e+02, 6.937778073465753e+02, - 7.011882010870085e+02, 7.080524450950211e+02, 7.144506382039817e+02, 7.204463550842873e+02, 7.260908667529653e+02, - 7.314261069723473e+02, 7.364868035972308e+02, 7.413020397950220e+02, 7.458964173631274e+02, 7.502909369023287e+02, - 7.545036730020707e+02, 7.585502987081253e+02, 7.624444976159841e+02, 7.661982911057671e+02, 7.698223007448239e+02, - 7.733259606217954e+02, 7.767176906254692e+02, 7.800050389739955e+02, 7.831948003216836e+02, 7.862931143091749e+02, - 7.893055483321292e+02, 7.922371674818974e+02, 7.950925939869804e+02, 7.978760580052717e+02, 8.005914412470909e+02, - 8.032423146209715e+02, 8.058319708683612e+02, 8.083634529750733e+02, 8.108395790057026e+02, 8.132629638939771e+02, - 8.156360386309052e+02, 8.179610672189534e+02, 8.202401617005615e+02, 8.224752955203562e+02, 8.246683154401624e+02, - 8.268209521927222e+02, 8.289348300325100e+02, 8.310114753190240e+02, 8.330523242488189e+02, 8.350587298363627e+02, - 8.370319682302461e+02, 8.389732444397332e+02, 8.408836975368953e+02, 8.427644053912055e+02, 8.446163889863672e+02, - 8.464406163630313e+02, 8.482380062257537e+02, 8.500094312480638e+02, 8.517557211055109e+02, 8.534776652631912e+02, - 8.551760155412460e+02, 8.568514884792471e+02, 8.585047675181091e+02, 8.601365050161681e+02, 8.617473241143273e+02, - 8.633378204636166e+02, 8.649085638271683e+02, 8.664600995673795e+02, 8.679929500279947e+02, 8.695076158198748e+02, - 8.710045770183787e+02, 8.724842942795411e+02, 8.739472098815423e+02, 8.753937486973883e+02, 8.768243191041540e+02, - 8.782393138336980e+02, 8.796391107692721e+02, 8.810240736921211e+02, 8.823945529817590e+02, 8.837508862733328e+02, - 8.850933990751721e+02, 8.864224053493855e+02, 8.877382080626762e+02, 8.890410997373772e+02, 8.903313629150749e+02, - 8.916092705908313e+02, 8.928750854663742e+02, 8.941290641725873e+02, 8.953714527081162e+02, 8.966024903439828e+02, - 8.978224080627094e+02, 8.990314297922922e+02, 9.002297724794651e+02, 9.014176463816445e+02, 9.025952553437096e+02, - 9.037627970605681e+02, 9.049204633263552e+02, 9.060684402710929e+02, 9.072069085855439e+02, 9.083360437349637e+02, - 9.094560161623995e+02, 9.105669914821467e+02, 9.116691306639239e+02, 9.127625902082999e+02, 9.138475223138629e+02, - 9.149240750181168e+02, 9.159923924249415e+02, 9.170526147340364e+02, 9.181048784581939e+02, 9.191493165536472e+02, - 9.201860584722825e+02, 9.212152303953943e+02, 9.222369552726326e+02, 9.232513529643164e+02, 9.242585402964522e+02, - 9.252586312400136e+02, 9.262517368879238e+02, 9.272379658190715e+02, 9.282174238134052e+02, 9.291902141789587e+02, - 9.301564377750888e+02, 9.311161930910263e+02, 9.320695763212575e+02, 9.330166814379140e+02, 9.339576002602892e+02, - 9.348924225216299e+02, 9.358212359333323e+02, 9.367441262466511e+02, 9.376611773120527e+02, 9.385724711363046e+02, - 9.394780879374191e+02, 9.403781061975334e+02, 9.412726027138319e+02, 9.421616526475857e+02, 9.430453295714024e+02, - 9.439237055147578e+02, 9.447968510078904e+02, 9.456648351241183e+02, 9.465277255206655e+02, 9.473855884780347e+02, - 9.482384889380161e+02, 9.490864905403654e+02, 9.499296556582216e+02, 9.507680454323153e+02, 9.516017198040034e+02, - 9.524307375472010e+02, 9.532551562992309e+02, 9.540750325906574e+02, 9.548904218741235e+02, 9.557013785522491e+02, - 9.565079560046145e+02, 9.573102066138733e+02, 9.581081817910198e+02, 9.589019319998558e+02, 9.596915067806773e+02, - 9.604769547732135e+02, 9.612583237388484e+02, 9.620356605821514e+02, 9.628090113717418e+02, 9.635784213605098e+02, - 9.643439350052274e+02, 9.651055959855547e+02, 9.658634472224833e+02, 9.666175308962196e+02, 9.673678884635414e+02, - 9.681145606746391e+02, 9.688575875894618e+02, 9.695970085935872e+02, 9.703328624136285e+02, 9.710651871322024e+02, - 9.717940202024602e+02, 9.725193984622102e+02, 9.732413581476430e+02, 9.739599349066590e+02, 9.746751638118344e+02, - 9.753870793730216e+02, 9.760957155496022e+02, 9.768011057624008e+02, 9.775032829052752e+02, 9.782022793563918e+02, - 9.788981269891957e+02, 9.795908571830869e+02, 9.802805003588244e+02, 9.809670878694548e+02, 9.816506492171322e+02, - 9.823312139062522e+02, 9.830088109964415e+02, 9.836834691116541e+02, 9.843552164490300e+02, 9.850240807875289e+02, - 9.856900894963418e+02, 9.863532695430914e+02, 9.870136475018203e+02, 9.876712495607818e+02, 9.883261015300391e+02, - 9.889782288488632e+02, 9.896276565929655e+02, 9.902744094815398e+02, 9.909185118841327e+02, 9.915599878273507e+02, - 9.921988610014075e+02, 9.928351547665022e+02, 9.934688921590562e+02, 9.941000958977963e+02, 9.947287883896912e+02, - 9.953549917357553e+02, 9.959787277367058e+02, 9.966000178984963e+02, 9.972188834377183e+02, 9.978353452868749e+02, - 9.984494240995392e+02, 9.990611402553898e+02, 9.996705138651309e+02, 1.000277564775305e+03, 1.000882312572994e+03, - 1.001484776590413e+03, 1.002084975909403e+03, 1.002682929365831e+03, 1.003278655553872e+03, 1.003872172830225e+03, - 1.004463499318209e+03, 1.005052652911789e+03, 1.005639651279504e+03, 1.006224511868317e+03, 1.006807251907374e+03, - 1.007387888411688e+03, 1.007966438185745e+03, 1.008542917827028e+03, 1.009117343729473e+03, 1.009689732086847e+03, - 1.010260098896057e+03, 1.010828459960393e+03, 1.011394830892695e+03, 1.011959227118467e+03, 1.012521663878912e+03, - 1.013082156233921e+03, 1.013640719064988e+03, 1.014197367078069e+03, 1.014752114806389e+03, 1.015304976613185e+03, - 1.015855966694397e+03, 1.016405099081304e+03, 1.016952387643114e+03, 1.017497846089490e+03, 1.018041487973038e+03, - 1.018583326691741e+03, 1.019123375491345e+03, 1.019661647467698e+03, 1.020198155569050e+03, 1.020732912598298e+03, - 1.021265931215197e+03, 1.021797223938523e+03, 1.022326803148196e+03, 1.022854681087370e+03, 1.023380869864465e+03, - 1.023905381455184e+03, 1.024428227704472e+03, 1.024949420328452e+03, 1.025468970916318e+03, 1.025986890932196e+03, - 1.026503191716965e+03, 1.027017884490054e+03, 1.027530980351199e+03, 1.028042490282168e+03, 1.028552425148458e+03, - 1.029060795700958e+03, 1.029567612577586e+03, 1.030072886304890e+03, 1.030576627299629e+03, 1.031078845870318e+03, - 1.031579552218747e+03, 1.032078756441481e+03, 1.032576468531319e+03, 1.033072698378742e+03, 1.033567455773325e+03, - 1.034060750405132e+03, 1.034552591866079e+03, 1.035042989651282e+03, 1.035531953160374e+03, 1.036019491698803e+03, - 1.036505614479110e+03, 1.036990330622179e+03, 1.037473649158474e+03, 1.037955579029243e+03, 1.038436129087717e+03, - 1.038915308100276e+03, 1.039393124747600e+03, 1.039869587625803e+03, 1.040344705247547e+03, 1.040818486043134e+03, - 1.041290938361583e+03, 1.041762070471690e+03, 1.042231890563068e+03, 1.042700406747172e+03, 1.043167627058310e+03, - 1.043633559454625e+03, 1.044098211819082e+03, 1.044561591960417e+03, 1.045023707614090e+03, 1.045484566443205e+03, - 1.045944176039432e+03, 1.046402543923902e+03, 1.046859677548092e+03, 1.047315584294699e+03, 1.047770271478494e+03, - 1.048223746347172e+03, 1.048676016082173e+03, 1.049127087799510e+03, 1.049576968550566e+03, 1.050025665322892e+03, - 1.050473185040986e+03, 1.050919534567059e+03, 1.051364720701794e+03, 1.051808750185089e+03, 1.052251629696795e+03, - 1.052693365857431e+03, 1.053133965228900e+03, 1.053573434315194e+03, 1.054011779563072e+03, 1.054449007362754e+03, - 1.054885124048579e+03, 1.055320135899672e+03, 1.055754049140589e+03, 1.056186869941961e+03, 1.056618604421122e+03, - 1.057049258642732e+03, 1.057478838619389e+03, 1.057907350312229e+03, 1.058334799631529e+03, 1.058761192437281e+03, - 1.059186534539780e+03, 1.059610831700188e+03, 1.060034089631093e+03, 1.060456313997067e+03, 1.060877510415205e+03, - 1.061297684455668e+03, 1.061716841642206e+03, 1.062134987452685e+03, 1.062552127319600e+03, 1.062968266630581e+03, - 1.063383410728892e+03, 1.063797564913928e+03, 1.064210734441697e+03, 1.064622924525304e+03, 1.065034140335417e+03, - 1.065444387000740e+03, 1.065853669608466e+03, 1.066261993204738e+03, 1.066669362795089e+03, 1.067075783344887e+03, - 1.067481259779768e+03, 1.067885796986065e+03, 1.068289399811234e+03, 1.068692073064268e+03, 1.069093821516109e+03, - 1.069494649900055e+03, 1.069894562912165e+03, 1.070293565211645e+03, 1.070691661421246e+03, 1.071088856127645e+03, - 1.071485153881828e+03, 1.071880559199461e+03, 1.072275076561263e+03, 1.072668710413367e+03, 1.073061465167684e+03, - 1.073453345202258e+03, 1.073844354861613e+03, 1.074234498457104e+03, 1.074623780267255e+03, 1.075012204538099e+03, - 1.075399775483509e+03, 1.075786497285526e+03, 1.076172374094687e+03, 1.076557410030338e+03, 1.076941609180960e+03, - 1.077324975604473e+03, 1.077707513328548e+03, 1.078089226350907e+03, 1.078470118639630e+03, 1.078850194133447e+03, - 1.079229456742029e+03, 1.079607910346284e+03, 1.079985558798636e+03, 1.080362405923308e+03, 1.080738455516602e+03, - 1.081113711347177e+03, 1.081488177156312e+03, 1.081861856658182e+03, 1.082234753540122e+03, 1.082606871462881e+03, - 1.082978214060892e+03, 1.083348784942518e+03, 1.083718587690310e+03, 1.084087625861250e+03, 1.084455902987005e+03, - 1.084823422574163e+03, 1.085190188104475e+03, 1.085556203035095e+03, 1.085921470798811e+03, 1.086285994804281e+03, - 1.086649778436254e+03, 1.087012825055804e+03, 1.087375138000549e+03, 1.087736720584873e+03, 1.088097576100145e+03, - 1.088457707814933e+03, 1.088817118975216e+03, 1.089175812804598e+03, 1.089533792504512e+03, 1.089891061254430e+03, - 1.090247622212062e+03, 1.090603478513558e+03, 1.090958633273710e+03, 1.091313089586142e+03, 1.091666850523507e+03, - 1.092019919137682e+03, 1.092372298459953e+03, 1.092723991501200e+03, 1.093075001252091e+03, 1.093425330683257e+03, - 1.093774982745476e+03, 1.094123960369851e+03, 1.094472266467990e+03, 1.094819903932174e+03, 1.095166875635538e+03, - 1.095513184432238e+03, 1.095858833157617e+03, 1.096203824628380e+03, 1.096548161642749e+03, 1.096891846980637e+03, - 1.097234883403802e+03, 1.097577273656010e+03, 1.097919020463193e+03, 1.098260126533604e+03, 1.098600594557973e+03, - 1.098940427209657e+03, 1.099279627144797e+03, 1.099618197002460e+03, 1.099956139404794e+03, 1.100293456957170e+03, - 1.100630152248326e+03, 1.100966227850514e+03, 1.101301686319640e+03, 1.101636530195400e+03, 1.101970762001426e+03, - 1.102304384245417e+03, 1.102637399419276e+03, 1.102969809999248e+03, 1.103301618446044e+03, 1.103632827204983e+03 - }, - { - 1.695711132541665e+00, 5.169502068105792e+00, 8.705152749500085e+00, 1.230542247177328e+01, 1.597327048484206e+01, - 1.971187585499763e+01, 2.352465987058886e+01, 2.741531140162334e+01, 3.138781569255044e+01, 3.544648717056794e+01, - 3.959600696611827e+01, 4.384146599005007e+01, 4.818841459491445e+01, 5.264292007814160e+01, 5.721163357593682e+01, - 6.190186826833237e+01, 6.672169129242103e+01, 7.168003237839037e+01, 7.678681302928516e+01, 8.205310112817115e+01, - 8.749129727073989e+01, 9.311536102342789e+01, 9.894108789365166e+01, 1.049864513584716e+02, 1.112720292605887e+02, - 1.178215408958522e+02, 1.246625311840786e+02, 1.318272530016802e+02, 1.393538205879198e+02, 1.472877398353921e+02, - 1.556839727413676e+02, 1.646097737306582e+02, 1.741486677059257e+02, 1.844061596504859e+02, 1.955181456972497e+02, - 2.076636730356485e+02, 2.210849438825634e+02, 2.361198209224099e+02, 2.532565976401486e+02, 2.732289087040577e+02, - 2.971789813982052e+02, 3.269031922800188e+02, 3.650322311623864e+02, 4.142009499469160e+02, 4.698271564680101e+02, - 5.186309476880714e+02, 5.557814208416860e+02, 5.834644733129585e+02, 6.050087019311810e+02, 6.225211677402108e+02, - 6.372336209146072e+02, 6.499068546065467e+02, 6.610377823738783e+02, 6.709658533800509e+02, 6.799317375956360e+02, - 6.881115284591516e+02, 6.956375682249187e+02, 7.026116203264099e+02, 7.091134903285229e+02, 7.152068424667145e+02, - 7.209432309557436e+02, 7.263649607054124e+02, 7.315071598328765e+02, 7.363993087965247e+02, 7.410663870356079e+02, - 7.455297453398658e+02, 7.498077782862603e+02, 7.539164487643644e+02, 7.578697016076385e+02, 7.616797930690470e+02, - 7.653575557183276e+02, 7.689126132729967e+02, 7.723535562425830e+02, 7.756880866277469e+02, 7.789231379782973e+02, - 7.820649756756142e+02, 7.851192812266344e+02, 7.880912235406990e+02, 7.909855195380402e+02, 7.938064859598354e+02, - 7.965580838786511e+02, 7.992439571183776e+02, 8.018674655650359e+02, 8.044317141697045e+02, 8.069395783014129e+02, - 8.093937259929750e+02, 8.117966375303057e+02, 8.141506227607966e+02, 8.164578364354094e+02, 8.187202918492341e+02, - 8.209398730042476e+02, 8.231183454841437e+02, 8.252573662029628e+02, 8.273584921658759e+02, 8.294231883608237e+02, - 8.314528348832738e+02, 8.334487333824658e+02, 8.354121129057428e+02, 8.373441352075896e+02, 8.392458995814777e+02, - 8.411184472653340e+02, 8.429627654651878e+02, 8.447797910361982e+02, 8.465704138555853e+02, 8.483354799179921e+02, - 8.500757941803026e+02, 8.517921231799100e+02, 8.534851974477687e+02, 8.551557137352509e+02, 8.568043370717960e+02, - 8.584317026685483e+02, 8.600384176816070e+02, 8.616250628471247e+02, 8.631921939992578e+02, 8.647403434808853e+02, - 8.662700214560488e+02, 8.677817171321915e+02, 8.692758998995320e+02, 8.707530203942000e+02, 8.722135114911633e+02, - 8.736577892324195e+02, 8.750862536954406e+02, 8.764992898064137e+02, 8.778972681024233e+02, 8.792805454463598e+02, - 8.806494656980187e+02, 8.820043603445672e+02, 8.833455490936443e+02, 8.846733404549861e+02, 8.859880322793142e+02, - 8.872899122161672e+02, 8.885792572938176e+02, 8.898563371392983e+02, 8.911214108107777e+02, 8.923747299391065e+02, - 8.936165373545099e+02, 8.948470683594414e+02, 8.960665508223896e+02, 8.972752054924123e+02, 8.984732462971723e+02, - 8.996608806254877e+02, 9.008383095953712e+02, 9.020057283084232e+02, 9.031633260914097e+02, 9.043112867257938e+02, - 9.054497886659241e+02, 9.065790052465525e+02, 9.076991048803005e+02, 9.088102512456417e+02, 9.099126034483309e+02, - 9.110063162820918e+02, 9.120915402074814e+02, 9.131684216942315e+02, 9.142371032741326e+02, 9.152977237016515e+02, - 9.163504180888943e+02, 9.173953180345451e+02, 9.184325517471128e+02, 9.194622441750939e+02, 9.204845170692113e+02, - 9.214994891680186e+02, 9.225072762479319e+02, 9.235079912358328e+02, 9.245017443038309e+02, 9.254886428707931e+02, - 9.264687920358982e+02, 9.274422941574855e+02, 9.284092492601213e+02, 9.293697550320032e+02, 9.303239068987839e+02, - 9.312717980944751e+02, 9.322135197295638e+02, 9.331491608564795e+02, 9.340788085325224e+02, 9.350025478803846e+02, - 9.359204621463656e+02, 9.368326327563889e+02, 9.377391393699221e+02, 9.386400599318875e+02, 9.395354707226609e+02, - 9.404254464062367e+02, 9.413100600766415e+02, 9.421893833026792e+02, 9.430634861710643e+02, 9.439324373280252e+02, - 9.447963040194437e+02, 9.456551521295818e+02, 9.465090462184637e+02, 9.473580495579686e+02, 9.482022241666808e+02, - 9.490416308435608e+02, 9.498763292004702e+02, 9.507063776936101e+02, 9.515318336539071e+02, 9.523527533163978e+02, - 9.531691918486441e+02, 9.539812033782204e+02, 9.547888410193083e+02, 9.555921568984403e+02, 9.563912021794107e+02, - 9.571860270874022e+02, 9.579766809323464e+02, 9.587632121315513e+02, 9.595456682316270e+02, 9.603240959297292e+02, - 9.610985410941496e+02, 9.618690487842795e+02, 9.626356632699636e+02, 9.633984280502710e+02, 9.641573858717037e+02, - 9.649125787458639e+02, 9.656640479665962e+02, 9.664118341266226e+02, 9.671559771336980e+02, 9.678965162262915e+02, - 9.686334899888121e+02, 9.693669363664043e+02, 9.700968926793173e+02, 9.708233956368614e+02, 9.715464813509849e+02, - 9.722661853494533e+02, 9.729825425886767e+02, 9.736955874661678e+02, 9.744053538326694e+02, 9.751118750039421e+02, - 9.758151837722326e+02, 9.765153124174313e+02, 9.772122922484200e+02, 9.779061554726052e+02, 9.785969324458869e+02, - 9.792846535044539e+02, 9.799693485236187e+02, 9.806510469273098e+02, 9.813297776973244e+02, 9.820055693823306e+02, - 9.826784501066537e+02, 9.833484475788223e+02, 9.840155890999044e+02, 9.846799015716364e+02, 9.853414115043340e+02, - 9.860001450246206e+02, 9.866561278829528e+02, 9.873093854609615e+02, 9.879599427786171e+02, 9.886078245012093e+02, - 9.892530549461674e+02, 9.898956580897056e+02, 9.905356575733180e+02, 9.911730767101044e+02, 9.918079384909574e+02, - 9.924402655905958e+02, 9.930700803734561e+02, 9.936974048994481e+02, 9.943222609295706e+02, 9.949446699314011e+02, - 9.955646530844557e+02, 9.961822312854268e+02, 9.967974251532983e+02, 9.974102550343471e+02, 9.980207410070251e+02, - 9.986289028867407e+02, 9.992347602305218e+02, 9.998383323415804e+02, 1.000439638273776e+03, 1.001038696835974e+03, - 1.001635526596316e+03, 1.002230145886390e+03, 1.002822572805312e+03, 1.003412825223715e+03, 1.004000920787660e+03, - 1.004586876922452e+03, 1.005170710836384e+03, 1.005752439524390e+03, 1.006332079771632e+03, 1.006909648157001e+03, - 1.007485161056551e+03, 1.008058634646857e+03, 1.008630084908304e+03, 1.009199527628309e+03, 1.009766978404472e+03, - 1.010332452647668e+03, 1.010895965585067e+03, 1.011457532263107e+03, 1.012017167550385e+03, 1.012574886140511e+03, - 1.013130702554887e+03, 1.013684631145446e+03, 1.014236686097320e+03, 1.014786881431468e+03, 1.015335231007246e+03, - 1.015881748524922e+03, 1.016426447528154e+03, 1.016969341406405e+03, 1.017510443397322e+03, 1.018049766589063e+03, - 1.018587323922579e+03, 1.019123128193855e+03, 1.019657192056105e+03, 1.020189528021928e+03, 1.020720148465422e+03, - 1.021249065624252e+03, 1.021776291601691e+03, 1.022301838368611e+03, 1.022825717765442e+03, 1.023347941504097e+03, - 1.023868521169855e+03, 1.024387468223213e+03, 1.024904794001701e+03, 1.025420509721672e+03, 1.025934626480047e+03, - 1.026447155256033e+03, 1.026958106912819e+03, 1.027467492199223e+03, 1.027975321751329e+03, 1.028481606094078e+03, - 1.028986355642842e+03, 1.029489580704962e+03, 1.029991291481268e+03, 1.030491498067562e+03, 1.030990210456079e+03, - 1.031487438536925e+03, 1.031983192099488e+03, 1.032477480833822e+03, 1.032970314332010e+03, 1.033461702089503e+03, - 1.033951653506433e+03, 1.034440177888910e+03, 1.034927284450288e+03, 1.035412982312416e+03, 1.035897280506870e+03, - 1.036380187976151e+03, 1.036861713574879e+03, 1.037341866070959e+03, 1.037820654146723e+03, 1.038298086400066e+03, - 1.038774171345547e+03, 1.039248917415488e+03, 1.039722332961040e+03, 1.040194426253243e+03, 1.040665205484062e+03, - 1.041134678767408e+03, 1.041602854140143e+03, 1.042069739563069e+03, 1.042535342921895e+03, 1.042999672028204e+03, - 1.043462734620383e+03, 1.043924538364555e+03, 1.044385090855490e+03, 1.044844399617498e+03, 1.045302472105318e+03, - 1.045759315704982e+03, 1.046214937734670e+03, 1.046669345445553e+03, 1.047122546022623e+03, 1.047574546585505e+03, - 1.048025354189261e+03, 1.048474975825184e+03, 1.048923418421570e+03, 1.049370688844487e+03, 1.049816793898535e+03, - 1.050261740327579e+03, 1.050705534815487e+03, 1.051148183986850e+03, 1.051589694407690e+03, 1.052030072586161e+03, - 1.052469324973235e+03, 1.052907457963381e+03, 1.053344477895237e+03, 1.053780391052259e+03, 1.054215203663380e+03, - 1.054648921903639e+03, 1.055081551894817e+03, 1.055513099706054e+03, 1.055943571354461e+03, 1.056372972805722e+03, - 1.056801309974683e+03, 1.057228588725945e+03, 1.057654814874433e+03, 1.058079994185967e+03, 1.058504132377818e+03, - 1.058927235119267e+03, 1.059349308032140e+03, 1.059770356691349e+03, 1.060190386625420e+03, 1.060609403317013e+03, - 1.061027412203433e+03, 1.061444418677143e+03, 1.061860428086255e+03, 1.062275445735026e+03, 1.062689476884344e+03, - 1.063102526752207e+03, 1.063514600514191e+03, 1.063925703303917e+03, 1.064335840213512e+03, 1.064745016294059e+03, - 1.065153236556044e+03, 1.065560505969798e+03, 1.065966829465928e+03, 1.066372211935745e+03, 1.066776658231692e+03, - 1.067180173167754e+03, 1.067582761519875e+03, 1.067984428026355e+03, 1.068385177388263e+03, 1.068785014269820e+03, - 1.069183943298793e+03, 1.069581969066881e+03, 1.069979096130091e+03, 1.070375329009117e+03, 1.070770672189700e+03, - 1.071165130123005e+03, 1.071558707225969e+03, 1.071951407881662e+03, 1.072343236439640e+03, 1.072734197216281e+03, - 1.073124294495135e+03, 1.073513532527257e+03, 1.073901915531544e+03, 1.074289447695052e+03, 1.074676133173335e+03, - 1.075061976090752e+03, 1.075446980540791e+03, 1.075831150586375e+03, 1.076214490260175e+03, 1.076597003564909e+03, - 1.076978694473645e+03, 1.077359566930097e+03, 1.077739624848914e+03, 1.078118872115977e+03, 1.078497312588673e+03, - 1.078874950096186e+03, 1.079251788439769e+03, 1.079627831393025e+03, 1.080003082702171e+03, 1.080377546086311e+03, - 1.080751225237698e+03, 1.081124123821999e+03, 1.081496245478547e+03, 1.081867593820604e+03, 1.082238172435603e+03, - 1.082607984885408e+03, 1.082977034706552e+03, 1.083345325410480e+03, 1.083712860483795e+03, 1.084079643388487e+03, - 1.084445677562175e+03, 1.084810966418333e+03, 1.085175513346519e+03, 1.085539321712604e+03, 1.085902394858992e+03, - 1.086264736104844e+03, 1.086626348746291e+03, 1.086987236056655e+03, 1.087347401286657e+03, 1.087706847664631e+03, - 1.088065578396730e+03, 1.088423596667129e+03, 1.088780905638237e+03, 1.089137508450885e+03, 1.089493408224535e+03, - 1.089848608057471e+03, 1.090203111026992e+03, 1.090556920189609e+03, 1.090910038581227e+03, 1.091262469217339e+03, - 1.091614215093206e+03, 1.091965279184043e+03, 1.092315664445199e+03, 1.092665373812333e+03, 1.093014410201598e+03, - 1.093362776509808e+03, 1.093710475614615e+03, 1.094057510374679e+03, 1.094403883629838e+03, 1.094749598201271e+03, - 1.095094656891670e+03, 1.095439062485395e+03, 1.095782817748647e+03, 1.096125925429613e+03, 1.096468388258637e+03, - 1.096810208948370e+03, 1.097151390193925e+03, 1.097491934673031e+03, 1.097831845046184e+03, 1.098171123956794e+03, - 1.098509774031338e+03, 1.098847797879502e+03, 1.099185198094325e+03, 1.099521977252347e+03, 1.099858137913746e+03, - 1.100193682622480e+03, 1.100528613906425e+03, 1.100862934277512e+03, 1.101196646231863e+03, 1.101529752249924e+03 - }, - { - 1.690131939898974e+00, 5.152001112709456e+00, 8.674813955015532e+00, 1.226124981461546e+01, 1.591417914986750e+01, - 1.963668217179535e+01, 2.343206982703837e+01, 2.730390749101703e+01, 3.125604180116054e+01, 3.529263115111956e+01, - 3.941818046631221e+01, 4.363758100966886e+01, 4.795615612458268e+01, 5.237971401989712e+01, 5.691460895076552e+01, - 6.156781246417466e+01, 6.634699678053494e+01, 7.126063289933454e+01, 7.631810668701573e+01, 8.152985708076284e+01, - 8.690754169669940e+01, 9.246423666879565e+01, 9.821467961378384e+01, 1.041755674318307e+02, 1.103659245265286e+02, - 1.168075624274771e+02, 1.235256594284283e+02, 1.305494997939439e+02, 1.379134280427216e+02, 1.456580973274988e+02, - 1.538321268885547e+02, 1.624943380742478e+02, 1.717168253768943e+02, 1.815892582531720e+02, 1.922250401578343e+02, - 2.037703417960356e+02, 2.164177021222105e+02, 2.304270785193995e+02, 2.461592901764700e+02, 2.641300805879214e+02, - 2.850964107418214e+02, 3.101799717211657e+02, 3.409736548969248e+02, 3.793824898474268e+02, 4.261102089091421e+02, - 4.752652883616822e+02, 5.182114258754896e+02, 5.521593470000446e+02, 5.784493653129069e+02, 5.993985668649067e+02, - 6.166731954557937e+02, 6.313215351685931e+02, 6.440182586085167e+02, 6.552169068387960e+02, 6.652342394730263e+02, - 6.742987340508510e+02, 6.825798220517142e+02, 6.902061999802468e+02, 6.972776788360705e+02, 7.038730818275233e+02, - 7.100556519141209e+02, 7.158768455762931e+02, 7.213790529802878e+02, 7.265975864479087e+02, 7.315621592200939e+02, - 7.362980021109655e+02, 7.408267183535357e+02, 7.451669461617387e+02, 7.493348780681995e+02, 7.533446722156823e+02, - 7.572087811932321e+02, 7.609382172780954e+02, 7.645427681499677e+02, 7.680311736825195e+02, 7.714112718873763e+02, - 7.746901202163567e+02, 7.778740970321857e+02, 7.809689870063454e+02, 7.839800534032121e+02, 7.869120995969929e+02, - 7.897695216947362e+02, 7.925563537706171e+02, 7.952763069283519e+02, 7.979328031813230e+02, 8.005290049596456e+02, - 8.030678409095393e+02, 8.055520285348899e+02, 8.079840941376840e+02, 8.103663904384260e+02, 8.127011121960192e+02, - 8.149903100960938e+02, 8.172359031352386e+02, 8.194396896941922e+02, 8.216033574645631e+02, 8.237284923698193e+02, - 8.258165866013933e+02, 8.278690458739832e+02, 8.298871959900061e+02, 8.318722887912186e+02, 8.338255075652997e+02, - 8.357479719665854e+02, 8.376407425026725e+02, 8.395048246322823e+02, 8.413411725142679e+02, 8.431506924429477e+02, - 8.449342460008262e+02, 8.466926529562199e+02, 8.484266939302232e+02, 8.501371128547245e+02, 8.518246192408427e+02, - 8.534898902750745e+02, 8.551335727586222e+02, 8.567562849037706e+02, 8.583586179997729e+02, 8.599411379594346e+02, - 8.615043867565091e+02, 8.630488837629958e+02, 8.645751269945878e+02, 8.660835942717107e+02, 8.675747443029234e+02, - 8.690490176967993e+02, 8.705068379078755e+02, 8.719486121217354e+02, 8.733747320838593e+02, 8.747855748764581e+02, - 8.761815036471406e+02, 8.775628682929586e+02, 8.789300061030413e+02, 8.802832423714614e+02, 8.816228910004085e+02, - 8.829492550039706e+02, 8.842626263456424e+02, 8.855632883979944e+02, 8.868515138391421e+02, 8.881275672328157e+02, - 8.893917038056961e+02, 8.906441707549988e+02, 8.918852073659282e+02, 8.931150453502828e+02, 8.943339091671161e+02, - 8.955420163265693e+02, 8.967395776779415e+02, 8.979267976829403e+02, 8.991038746750312e+02, 9.002710011057284e+02, - 9.014283637785874e+02, 9.025761440716465e+02, 9.037145181658020e+02, 9.048436571609809e+02, 9.059637274405205e+02, - 9.070748906780128e+02, 9.081773041008283e+02, 9.092711206375960e+02, 9.103564890763546e+02, 9.114335542154540e+02, - 9.125024570076025e+02, 9.135633346974382e+02, 9.146163209529599e+02, 9.156615460033247e+02, 9.166991367090226e+02, - 9.177292167536762e+02, 9.187519067013025e+02, 9.197673241151266e+02, 9.207755836583865e+02, 9.217767971909003e+02, - 9.227710738616150e+02, 9.237585201973407e+02, 9.247392400705616e+02, 9.257133352372955e+02, 9.266809047494962e+02, - 9.276420454626177e+02, 9.285968520025368e+02, 9.295454168349535e+02, 9.304878303320908e+02, 9.314241808368083e+02, - 9.323545547242582e+02, 9.332790364611913e+02, 9.341977086630224e+02, 9.351106521487533e+02, 9.360179459938528e+02, - 9.369196675811820e+02, 9.378158926500569e+02, 9.387066953435173e+02, 9.395921482538955e+02, 9.404723224667505e+02, - 9.413472876032326e+02, 9.422171118609590e+02, 9.430818620534494e+02, 9.439416036481923e+02, 9.447964008033925e+02, - 9.456463164034590e+02, 9.464914120932821e+02, 9.473317483113483e+02, 9.481673843217471e+02, 9.489983782451051e+02, - 9.498247870884959e+02, 9.506466667743651e+02, 9.514640721685088e+02, 9.522770571071477e+02, 9.530856744231203e+02, - 9.538899759712411e+02, 9.546900126528569e+02, 9.554858344396097e+02, 9.562774903964784e+02, 9.570650287040760e+02, - 9.578484966802713e+02, 9.586279408011427e+02, 9.594034067212805e+02, 9.601749392934879e+02, 9.609425825878723e+02, - 9.617063799103717e+02, 9.624663738207230e+02, 9.632226061499032e+02, 9.639751180170521e+02, 9.647239498458974e+02, - 9.654691413807117e+02, 9.662107317017977e+02, 9.669487592405272e+02, 9.676832617939629e+02, 9.684142765390496e+02, - 9.691418400464154e+02, 9.698659882937795e+02, 9.705867566789893e+02, 9.713041800326916e+02, 9.720182926306620e+02, - 9.727291282057857e+02, 9.734367199597197e+02, 9.741411001104157e+02, 9.748423017394050e+02, 9.755403560762239e+02, - 9.762352943080411e+02, 9.769271471445544e+02, 9.776159448279004e+02, 9.783017171423077e+02, 9.789844934234968e+02, - 9.796643025678306e+02, 9.803411730412412e+02, 9.810151328879151e+02, 9.816862097387669e+02, 9.823544308196924e+02, - 9.830198229596134e+02, 9.836824125983277e+02, 9.843422257941513e+02, 9.849992882313833e+02, 9.856536252275781e+02, - 9.863052617406437e+02, 9.869542223757600e+02, 9.876005313921409e+02, 9.882442127096178e+02, 9.888852899150797e+02, - 9.895237862687454e+02, 9.901597247102978e+02, 9.907931278648645e+02, 9.914240180488631e+02, 9.920524172757071e+02, - 9.926783472613760e+02, 9.933018294298624e+02, 9.939228849184869e+02, 9.945415345830950e+02, 9.951577990031310e+02, - 9.957716984866036e+02, 9.963832530749271e+02, 9.969924825476676e+02, 9.975994064271717e+02, 9.982040439830967e+02, - 9.988064142368384e+02, 9.994065359658624e+02, 1.000004427707938e+03, 1.000600107765284e+03, 1.001193594208615e+03, - 1.001784904881110e+03, 1.002374057402287e+03, 1.002961069171802e+03, 1.003545957373157e+03, 1.004128738977341e+03, - 1.004709430746381e+03, 1.005288049236826e+03, 1.005864610803158e+03, 1.006439131601127e+03, 1.007011627591017e+03, - 1.007582114540852e+03, 1.008150608029521e+03, 1.008717123449859e+03, 1.009281676011641e+03, 1.009844280744535e+03, - 1.010404952500986e+03, 1.010963705959040e+03, 1.011520555625120e+03, 1.012075515836733e+03, 1.012628600765135e+03, - 1.013179824417941e+03, 1.013729200641672e+03, 1.014276743124273e+03, 1.014822465397554e+03, 1.015366380839614e+03, - 1.015908502677191e+03, 1.016448843987983e+03, 1.016987417702917e+03, 1.017524236608378e+03, 1.018059313348391e+03, - 1.018592660426766e+03, 1.019124290209200e+03, 1.019654214925340e+03, 1.020182446670805e+03, 1.020708997409171e+03, - 1.021233878973925e+03, 1.021757103070370e+03, 1.022278681277505e+03, 1.022798625049869e+03, 1.023316945719348e+03, - 1.023833654496948e+03, 1.024348762474540e+03, 1.024862280626570e+03, 1.025374219811740e+03, 1.025884590774656e+03, - 1.026393404147450e+03, 1.026900670451371e+03, 1.027406400098344e+03, 1.027910603392510e+03, 1.028413290531730e+03, - 1.028914471609068e+03, 1.029414156614246e+03, 1.029912355435072e+03, 1.030409077858845e+03, 1.030904333573739e+03, - 1.031398132170153e+03, 1.031890483142048e+03, 1.032381395888255e+03, 1.032870879713769e+03, 1.033358943831002e+03, - 1.033845597361038e+03, 1.034330849334855e+03, 1.034814708694520e+03, 1.035297184294378e+03, 1.035778284902212e+03, - 1.036258019200388e+03, 1.036736395786972e+03, 1.037213423176846e+03, 1.037689109802785e+03, 1.038163464016532e+03, - 1.038636494089848e+03, 1.039108208215545e+03, 1.039578614508504e+03, 1.040047721006677e+03, 1.040515535672073e+03, - 1.040982066391722e+03, 1.041447320978633e+03, 1.041911307172727e+03, 1.042374032641770e+03, 1.042835504982267e+03, - 1.043295731720368e+03, 1.043754720312740e+03, 1.044212478147439e+03, 1.044669012544757e+03, 1.045124330758065e+03, - 1.045578439974636e+03, 1.046031347316459e+03, 1.046483059841040e+03, 1.046933584542191e+03, 1.047382928350801e+03, - 1.047831098135608e+03, 1.048278100703944e+03, 1.048723942802479e+03, 1.049168631117951e+03, 1.049612172277885e+03, - 1.050054572851295e+03, 1.050495839349392e+03, 1.050935978226259e+03, 1.051374995879535e+03, 1.051812898651077e+03, - 1.052249692827621e+03, 1.052685384641421e+03, 1.053119980270894e+03, 1.053553485841241e+03, 1.053985907425073e+03, - 1.054417251043011e+03, 1.054847522664294e+03, 1.055276728207368e+03, 1.055704873540470e+03, 1.056131964482198e+03, - 1.056558006802086e+03, 1.056983006221156e+03, 1.057406968412469e+03, 1.057829899001669e+03, 1.058251803567517e+03, - 1.058672687642418e+03, 1.059092556712942e+03, 1.059511416220333e+03, 1.059929271561019e+03, 1.060346128087103e+03, - 1.060761991106862e+03, 1.061176865885225e+03, 1.061590757644256e+03, 1.062003671563618e+03, 1.062415612781042e+03, - 1.062826586392785e+03, 1.063236597454080e+03, 1.063645650979582e+03, 1.064053751943806e+03, 1.064460905281564e+03, - 1.064867115888388e+03, 1.065272388620953e+03, 1.065676728297497e+03, 1.066080139698224e+03, 1.066482627565716e+03, - 1.066884196605328e+03, 1.067284851485583e+03, 1.067684596838560e+03, 1.068083437260282e+03, 1.068481377311088e+03, - 1.068878421516012e+03, 1.069274574365149e+03, 1.069669840314018e+03, 1.070064223783925e+03, 1.070457729162312e+03, - 1.070850360803110e+03, 1.071242123027086e+03, 1.071633020122177e+03, 1.072023056343833e+03, 1.072412235915348e+03, - 1.072800563028182e+03, 1.073188041842291e+03, 1.073574676486445e+03, 1.073960471058540e+03, 1.074345429625912e+03, - 1.074729556225645e+03, 1.075112854864871e+03, 1.075495329521074e+03, 1.075876984142383e+03, 1.076257822647861e+03, - 1.076637848927802e+03, 1.077017066844009e+03, 1.077395480230078e+03, 1.077773092891671e+03, 1.078149908606800e+03, - 1.078525931126088e+03, 1.078901164173043e+03, 1.079275611444319e+03, 1.079649276609980e+03, 1.080022163313753e+03, - 1.080394275173289e+03, 1.080765615780409e+03, 1.081136188701357e+03, 1.081505997477043e+03, 1.081875045623287e+03, - 1.082243336631055e+03, 1.082610873966701e+03, 1.082977661072200e+03, 1.083343701365375e+03, 1.083708998240129e+03, - 1.084073555066671e+03, 1.084437375191738e+03, 1.084800461938812e+03, 1.085162818608345e+03, 1.085524448477969e+03, - 1.085885354802708e+03, 1.086245540815193e+03, 1.086605009725864e+03, 1.086963764723181e+03, 1.087321808973820e+03, - 1.087679145622881e+03, 1.088035777794081e+03, 1.088391708589951e+03, 1.088746941092032e+03, 1.089101478361063e+03, - 1.089455323437174e+03, 1.089808479340068e+03, 1.090160949069212e+03, 1.090512735604015e+03, 1.090863841904011e+03, - 1.091214270909037e+03, 1.091564025539410e+03, 1.091913108696102e+03, 1.092261523260912e+03, 1.092609272096636e+03, - 1.092956358047240e+03, 1.093302783938019e+03, 1.093648552575773e+03, 1.093993666748961e+03, 1.094338129227864e+03, - 1.094681942764750e+03, 1.095025110094028e+03, 1.095367633932400e+03, 1.095709516979028e+03, 1.096050761915673e+03, - 1.096391371406852e+03, 1.096731348099989e+03, 1.097070694625559e+03, 1.097409413597241e+03, 1.097747507612053e+03, - 1.098084979250501e+03, 1.098421831076722e+03, 1.098758065638617e+03, 1.099093685467999e+03, 1.099428693080720e+03 - }, - { - 1.684589876096183e+00, 5.134623444801206e+00, 8.644701248528763e+00, 1.221742518536346e+01, 1.585557982781074e+01, - 1.956214992144462e+01, 2.334034003724983e+01, 2.719359671061860e+01, 3.112563345243778e+01, 3.514045909824269e+01, - 3.924241004780310e+01, 4.343618705924819e+01, 4.772689739846900e+01, 5.212010331456826e+01, 5.662187802476661e+01, - 6.123887066003188e+01, 6.597838196157477e+01, 7.084845295200104e+01, 7.585796936130193e+01, 8.101678531012098e+01, - 8.633587069644658e+01, 9.182748797676904e+01, 9.750540569034629e+01, 1.033851583047392e+02, 1.094843649918390e+02, - 1.158231241117939e+02, 1.224245059846260e+02, 1.293151747130096e+02, 1.365261815248629e+02, 1.440939891279538e+02, - 1.520618114757994e+02, 1.604813914457569e+02, 1.694153957811522e+02, 1.789406969298481e+02, 1.891529533922825e+02, - 2.001731303231682e+02, 2.121569787678100e+02, 2.253091094784071e+02, 2.399042806332380e+02, 2.563199069489737e+02, - 2.750848906514070e+02, 2.969464643434261e+02, 3.229328546014849e+02, 3.543135002347355e+02, 3.921984303662318e+02, - 4.357954965530827e+02, 4.794760769313771e+02, 5.177697286478743e+02, 5.489643463397512e+02, 5.739046476783535e+02, - 5.942107806959839e+02, 6.111861736320782e+02, 6.257137360062679e+02, 6.383864584105582e+02, 6.496144309200059e+02, - 6.596903126634091e+02, 6.688288403183509e+02, 6.771914504920924e+02, 6.849021304867700e+02, 6.920579131978129e+02, - 6.987360045555276e+02, 7.049987392826839e+02, 7.108971024544342e+02, 7.164732821146056e+02, 7.217625530157500e+02, - 7.267946892799907e+02, 7.315950391502690e+02, 7.361853533032552e+02, 7.405844307313296e+02, 7.448086277502506e+02, - 7.488722630600873e+02, 7.527879429923678e+02, 7.565668248545514e+02, 7.602188318175716e+02, 7.637528295455235e+02, - 7.671767723779275e+02, 7.704978250985494e+02, 7.737224649905829e+02, 7.768565678669058e+02, 7.799054809912981e+02, - 7.828740852113311e+02, 7.857668481617866e+02, 7.885878700366836e+02, 7.913409231442565e+02, 7.940294862347829e+02, - 7.966567744124723e+02, 7.992257652996431e+02, 8.017392220063643e+02, 8.041997133656263e+02, 8.066096318184653e+02, - 8.089712092716463e+02, 8.112865311997843e+02, 8.135575492219598e+02, 8.157860923482889e+02, 8.179738770630884e+02, - 8.201225163872826e+02, 8.222335280425472e+02, 8.243083418227402e+02, 8.263483062638770e+02, 8.283546946917834e+02, - 8.303287107162738e+02, 8.322714932318737e+02, 8.341841209776308e+02, 8.360676167020694e+02, 8.379229509737970e+02, - 8.397510456734774e+02, 8.415527771987121e+02, 8.433289794097793e+02, 8.450804463410321e+02, 8.468079347000117e+02, - 8.485121661739475e+02, 8.501938295611975e+02, 8.518535827433419e+02, 8.534920545120224e+02, 8.551098462631638e+02, - 8.567075335699684e+02, 8.582856676449268e+02, 8.598447767001035e+02, 8.613853672140527e+02, 8.629079251129451e+02, - 8.644129168727630e+02, 8.659007905487929e+02, 8.673719767380859e+02, 8.688268894800329e+02, 8.702659270997666e+02, - 8.716894729986619e+02, 8.730978963958710e+02, 8.744915530244571e+02, 8.758707857872104e+02, 8.772359254027382e+02, - 8.785872909790230e+02, 8.799251905292153e+02, 8.812499204903831e+02, 8.825617691737974e+02, 8.838610141888793e+02, - 8.851479237217959e+02, 8.864227573981522e+02, 8.876857664272856e+02, 8.889371939664886e+02, 8.901772754657344e+02, - 8.914062389941362e+02, 8.926243055492864e+02, 8.938316893505429e+02, 8.950285981340314e+02, 8.962152333484170e+02, - 8.973917905098475e+02, 8.985584593521199e+02, 8.997154241422596e+02, 9.008628637868802e+02, 9.020009521115427e+02, - 9.031298580368335e+02, 9.042497457642121e+02, 9.053607749531097e+02, 9.064631008897612e+02, 9.075568746482314e+02, - 9.086422432440575e+02, 9.097193497809211e+02, 9.107883335907148e+02, 9.118493303793343e+02, 9.129024723054712e+02, - 9.139478881785345e+02, 9.149857035238078e+02, 9.160160407077366e+02, 9.170390190450848e+02, 9.180547549015631e+02, - 9.190633617921410e+02, 9.200649504752701e+02, 9.210596290432129e+02, 9.220475030086723e+02, 9.230286753879057e+02, - 9.240032466293453e+02, 9.249713152792960e+02, 9.259329771938454e+02, 9.268883261699159e+02, 9.278374538763933e+02, - 9.287804499193890e+02, 9.297174019049930e+02, 9.306483954996364e+02, 9.315735144881706e+02, 9.324928408297652e+02, - 9.334064547117257e+02, 9.343144346013202e+02, 9.352168572957044e+02, 9.361137979700289e+02, 9.370053302238076e+02, - 9.378915261256235e+02, 9.387724562562358e+02, 9.396481897501715e+02, 9.405187943358525e+02, 9.413843363743207e+02, - 9.422448808966292e+02, 9.431004916399451e+02, 9.439512310824186e+02, 9.447971604768776e+02, 9.456383398833782e+02, - 9.464748282006801e+02, 9.473066831966643e+02, 9.481339615377598e+02, 9.489567188173994e+02, 9.497750095835534e+02, - 9.505888873653729e+02, 9.513984046989838e+02, 9.522036131524463e+02, 9.530045633499398e+02, 9.538013049951750e+02, - 9.545938868940796e+02, 9.553823569767833e+02, 9.561667623189153e+02, 9.569471491622583e+02, 9.577235629347687e+02, - 9.584960482699935e+02, 9.592646490259001e+02, 9.600294083031490e+02, 9.607903684628182e+02, 9.615475711436073e+02, - 9.623010572785382e+02, 9.630508671111684e+02, 9.637970402113316e+02, 9.645396154904287e+02, 9.652786312162823e+02, - 9.660141250275622e+02, 9.667461339478107e+02, 9.674746943990689e+02, 9.681998422151235e+02, 9.689216126543840e+02, - 9.696400404124089e+02, 9.703551596340848e+02, 9.710670034675431e+02, 9.717756058884139e+02, 9.724809990199130e+02, - 9.731832149195326e+02, 9.738822851502115e+02, 9.745782407906777e+02, 9.752711124455146e+02, 9.759609302549654e+02, - 9.766477239044779e+02, 9.773315226340073e+02, 9.780123552470733e+02, 9.786902501195906e+02, 9.793652352084652e+02, - 9.800373380599841e+02, 9.807065858179810e+02, 9.813730052318080e+02, 9.820366226640986e+02, 9.826974640983457e+02, - 9.833555551462856e+02, 9.840109210551049e+02, 9.846635867144691e+02, 9.853135766633815e+02, 9.859609150968735e+02, - 9.866056258725354e+02, 9.872477325168935e+02, 9.878872582316283e+02, 9.885242258996508e+02, 9.891586580910354e+02, - 9.897905770688074e+02, 9.904200047946043e+02, 9.910469629341965e+02, 9.916714728628884e+02, 9.922935556707881e+02, - 9.929132321679594e+02, 9.935305228894589e+02, 9.941454481002537e+02, 9.947580278000313e+02, 9.953682817279006e+02, - 9.959762293669889e+02, 9.965818899489327e+02, 9.971852824582737e+02, 9.977864256367553e+02, 9.983853379875262e+02, - 9.989820377792507e+02, 9.995765430501272e+02, 1.000168871611829e+03, 1.000759041053347e+03, 1.001347068744763e+03, - 1.001932971840932e+03, 1.002516767285092e+03, 1.003098471812395e+03, 1.003678101953367e+03, 1.004255674037291e+03, - 1.004831204195519e+03, 1.005404708364725e+03, 1.005976202290074e+03, 1.006545701528342e+03, 1.007113221450961e+03, - 1.007678777247006e+03, 1.008242383926125e+03, 1.008804056321399e+03, 1.009363809092156e+03, 1.009921656726721e+03, - 1.010477613545117e+03, 1.011031693701704e+03, 1.011583911187772e+03, 1.012134279834085e+03, 1.012682813313365e+03, - 1.013229525142738e+03, 1.013774428686129e+03, 1.014317537156603e+03, 1.014858863618676e+03, 1.015398420990564e+03, - 1.015936222046406e+03, 1.016472279418429e+03, 1.017006605599084e+03, 1.017539212943131e+03, 1.018070113669699e+03, - 1.018599319864290e+03, 1.019126843480757e+03, 1.019652696343243e+03, 1.020176890148081e+03, 1.020699436465666e+03, - 1.021220346742280e+03, 1.021739632301895e+03, 1.022257304347940e+03, 1.022773373965033e+03, 1.023287852120684e+03, - 1.023800749666965e+03, 1.024312077342156e+03, 1.024821845772351e+03, 1.025330065473049e+03, 1.025836746850699e+03, - 1.026341900204236e+03, 1.026845535726580e+03, 1.027347663506106e+03, 1.027848293528097e+03, 1.028347435676165e+03, - 1.028845099733650e+03, 1.029341295384991e+03, 1.029836032217081e+03, 1.030329319720592e+03, 1.030821167291279e+03, - 1.031311584231259e+03, 1.031800579750278e+03, 1.032288162966943e+03, 1.032774342909945e+03, 1.033259128519254e+03, - 1.033742528647294e+03, 1.034224552060104e+03, 1.034705207438477e+03, 1.035184503379074e+03, 1.035662448395531e+03, - 1.036139050919536e+03, 1.036614319301901e+03, 1.037088261813600e+03, 1.037560886646808e+03, 1.038032201915910e+03, - 1.038502215658500e+03, 1.038970935836358e+03, 1.039438370336422e+03, 1.039904526971732e+03, 1.040369413482369e+03, - 1.040833037536369e+03, 1.041295406730634e+03, 1.041756528591820e+03, 1.042216410577212e+03, 1.042675060075591e+03, - 1.043132484408079e+03, 1.043588690828979e+03, 1.044043686526595e+03, 1.044497478624044e+03, 1.044950074180053e+03, - 1.045401480189745e+03, 1.045851703585412e+03, 1.046300751237279e+03, 1.046748629954246e+03, 1.047195346484639e+03, - 1.047640907516926e+03, 1.048085319680438e+03, 1.048528589546077e+03, 1.048970723627006e+03, 1.049411728379334e+03, - 1.049851610202797e+03, 1.050290375441412e+03, 1.050728030384140e+03, 1.051164581265525e+03, 1.051600034266332e+03, - 1.052034395514174e+03, 1.052467671084123e+03, 1.052899866999326e+03, 1.053330989231598e+03, 1.053761043702010e+03, - 1.054190036281479e+03, 1.054617972791334e+03, 1.055044859003884e+03, 1.055470700642972e+03, 1.055895503384528e+03, - 1.056319272857105e+03, 1.056742014642421e+03, 1.057163734275872e+03, 1.057584437247062e+03, 1.058004129000308e+03, - 1.058422814935143e+03, 1.058840500406820e+03, 1.059257190726793e+03, 1.059672891163203e+03, 1.060087606941359e+03, - 1.060501343244201e+03, 1.060914105212768e+03, 1.061325897946650e+03, 1.061736726504447e+03, 1.062146595904203e+03, - 1.062555511123850e+03, 1.062963477101644e+03, 1.063370498736583e+03, 1.063776580888834e+03, 1.064181728380144e+03, - 1.064585945994256e+03, 1.064989238477305e+03, 1.065391610538221e+03, 1.065793066849122e+03, 1.066193612045702e+03, - 1.066593250727612e+03, 1.066991987458842e+03, 1.067389826768086e+03, 1.067786773149122e+03, 1.068182831061161e+03, - 1.068578004929219e+03, 1.068972299144459e+03, 1.069365718064548e+03, 1.069758266013999e+03, 1.070149947284508e+03, - 1.070540766135296e+03, 1.070930726793435e+03, 1.071319833454178e+03, 1.071708090281278e+03, 1.072095501407315e+03, - 1.072482070934001e+03, 1.072867802932496e+03, 1.073252701443716e+03, 1.073636770478632e+03, 1.074020014018571e+03, - 1.074402436015512e+03, 1.074784040392378e+03, 1.075164831043320e+03, 1.075544811834008e+03, 1.075923986601905e+03, - 1.076302359156550e+03, 1.076679933279828e+03, 1.077056712726244e+03, 1.077432701223185e+03, 1.077807902471190e+03, - 1.078182320144208e+03, 1.078555957889855e+03, 1.078928819329667e+03, 1.079300908059358e+03, 1.079672227649058e+03, - 1.080042781643566e+03, 1.080412573562592e+03, 1.080781606900991e+03, 1.081149885129005e+03, 1.081517411692495e+03, - 1.081884190013169e+03, 1.082250223488814e+03, 1.082615515493521e+03, 1.082980069377904e+03, 1.083343888469326e+03, - 1.083706976072111e+03, 1.084069335467761e+03, 1.084430969915172e+03, 1.084791882650836e+03, 1.085152076889057e+03, - 1.085511555822150e+03, 1.085870322620646e+03, 1.086228380433494e+03, 1.086585732388255e+03, 1.086942381591301e+03, - 1.087298331128007e+03, 1.087653584062943e+03, 1.088008143440064e+03, 1.088362012282893e+03, 1.088715193594710e+03, - 1.089067690358734e+03, 1.089419505538300e+03, 1.089770642077043e+03, 1.090121102899069e+03, 1.090470890909136e+03, - 1.090820008992818e+03, 1.091168460016686e+03, 1.091516246828466e+03, 1.091863372257215e+03, 1.092209839113481e+03, - 1.092555650189465e+03, 1.092900808259188e+03, 1.093245316078645e+03, 1.093589176385966e+03, 1.093932391901570e+03, - 1.094274965328322e+03, 1.094616899351681e+03, 1.094958196639858e+03, 1.095298859843957e+03, 1.095638891598131e+03, - 1.095978294519722e+03, 1.096317071209408e+03, 1.096655224251346e+03, 1.096992756213313e+03, 1.097329669646845e+03 - }, - { - 1.679084563985100e+00, 5.117367690331974e+00, 8.614811884941995e+00, 1.217394400614413e+01, 1.579746553847521e+01, - 1.948826901886792e+01, 2.324945644424241e+01, 2.708435996061811e+01, 3.099656517926189e+01, 3.498993753667488e+01, - 3.906865219020937e+01, 4.323722803824555e+01, 4.750056657188576e+01, 5.186399641122657e+01, 5.633332456097250e+01, - 6.091489564746058e+01, 6.561566068561775e+01, 7.044325728668551e+01, 7.540610368151138e+01, 8.051350952911534e+01, - 8.577580725260144e+01, 9.120450865313958e+01, 9.681249288249617e+01, 1.026142336236032e+02, 1.086260757050611e+02, - 1.148665746009020e+02, 1.213569166928603e+02, 1.281214443164529e+02, 1.351883182468730e+02, 1.425903625976265e+02, - 1.503661547106761e+02, 1.585614489806806e+02, 1.672310616039167e+02, 1.764414020199941e+02, 1.862739256129695e+02, - 1.968299201159714e+02, 2.082372522304059e+02, 2.206600300599506e+02, 2.343126189686662e+02, 2.494800481376020e+02, - 2.665471471210185e+02, 2.860368591769922e+02, 3.086476598022702e+02, 3.352470378890575e+02, 3.667184898728173e+02, - 4.034302019761506e+02, 4.436840495290930e+02, 4.828043863600190e+02, 5.173218306534949e+02, 5.461325244918834e+02, - 5.697845782353147e+02, 5.894194808125527e+02, 6.060486293135843e+02, 6.204080912844086e+02, 6.330147249855786e+02, - 6.442364316006459e+02, 6.543413955583908e+02, 6.635297318669200e+02, 6.719539523383113e+02, 6.797325100743038e+02, - 6.869589737404660e+02, 6.937083771356913e+02, 7.000417039430411e+02, 7.060091167141471e+02, 7.116523237379535e+02, - 7.170063427976754e+02, 7.221008353338827e+02, 7.269611293967031e+02, 7.316090136125198e+02, 7.360633602623528e+02, - 7.403406191834141e+02, 7.444552128853792e+02, 7.484198553242701e+02, 7.522458111100781e+02, 7.559431078274869e+02, - 7.595207111493315e+02, 7.629866702004593e+02, 7.663482389662516e+02, 7.696119782829827e+02, 7.727838419885646e+02, - 7.758692500755108e+02, 7.788731511173030e+02, 7.818000757943818e+02, 7.846541829966546e+02, 7.874392997035394e+02, - 7.901589556233262e+02, 7.928164133985636e+02, 7.954146950434806e+02, 7.979566051659459e+02, 8.004447514343113e+02, - 8.028815626744403e+02, 8.052693049207089e+02, 8.076100956942284e+02, 8.099059167397443e+02, 8.121586254180593e+02, - 8.143699649219637e+02, 8.165415734595497e+02, 8.186749925285476e+02, 8.207716743883062e+02, 8.228329888216040e+02, - 8.248602292663010e+02, 8.268546183864286e+02, 8.288173131434575e+02, 8.307494094208791e+02, 8.326519462487257e+02, - 8.345259096690377e+02, 8.363722362784098e+02, 8.381918164795829e+02, 8.399854974703695e+02, 8.417540859950255e+02, - 8.434983508804312e+02, 8.452190253769800e+02, 8.469168093219768e+02, 8.485923711414624e+02, 8.502463497047327e+02, - 8.518793560443705e+02, 8.534919749533215e+02, 8.550847664693979e+02, 8.566582672565996e+02, 8.582129918917102e+02, - 8.597494340638575e+02, 8.612680676939926e+02, 8.627693479805944e+02, 8.642537123773511e+02, 8.657215815080436e+02, - 8.671733600233930e+02, 8.686094374042211e+02, 8.700301887149011e+02, 8.714359753108031e+02, 8.728271455206218e+02, - 8.742040352930763e+02, 8.755669687490644e+02, 8.769162579628290e+02, 8.782522056614722e+02, 8.795751037129814e+02, - 8.808852338400092e+02, 8.821828686431986e+02, 8.834682717755907e+02, 8.847416983340750e+02, 8.860033952465466e+02, - 8.872536015537802e+02, 8.884925488460642e+02, 8.897204615066454e+02, 8.909375570280404e+02, 8.921440462949257e+02, - 8.933401338361774e+02, 8.945260181471640e+02, 8.957018918287741e+02, 8.968679418881885e+02, 8.980243499398767e+02, - 8.991712924140395e+02, 9.003089407550449e+02, 9.014374616104370e+02, 9.025570170110424e+02, 9.036677645426691e+02, - 9.047698575098748e+02, 9.058634450922251e+02, 9.069486724934593e+02, 9.080256810956407e+02, 9.090946085472709e+02, - 9.101555889672725e+02, 9.112087530187201e+02, 9.122542280408531e+02, 9.132921381629269e+02, 9.143226044131994e+02, - 9.153457448233032e+02, 9.163616745282349e+02, 9.173705058621753e+02, 9.183723484503630e+02, 9.193673092971877e+02, - 9.203554928707214e+02, 9.213370011838296e+02, 9.223119338720491e+02, 9.232803880768708e+02, 9.242424592653632e+02, - 9.251982402036659e+02, 9.261478217370591e+02, 9.270912926793359e+02, 9.280287398741875e+02, 9.289602482542538e+02, - 9.298859008979701e+02, 9.308057790842830e+02, 9.317199623453529e+02, 9.326285285173150e+02, 9.335315537891915e+02, - 9.344291127500371e+02, 9.353212784343904e+02, 9.362081223661039e+02, 9.370897146006262e+02, 9.379661237657922e+02, - 9.388374171012030e+02, 9.397036604962263e+02, 9.405649185267015e+02, 9.414212544903884e+02, 9.422727304412118e+02, - 9.431194072223562e+02, 9.439613444982500e+02, 9.447986007854927e+02, 9.456312334827561e+02, 9.464592988997088e+02, - 9.472828522850048e+02, 9.481019478533526e+02, 9.489166388117352e+02, 9.497269773847740e+02, 9.505330148393053e+02, - 9.513348015081729e+02, 9.521323868132803e+02, 9.529258192879273e+02, 9.537151465984556e+02, 9.545004155652317e+02, - 9.552816721829879e+02, 9.560589616405510e+02, 9.568323283399742e+02, 9.576018159150980e+02, 9.583674672495599e+02, - 9.591293244942696e+02, 9.598874290843773e+02, 9.606418217557369e+02, 9.613925425609050e+02, 9.621396308846637e+02, - 9.628831254591140e+02, 9.636230643783256e+02, 9.643594851125823e+02, 9.650924245222213e+02, 9.658219188710854e+02, - 9.665480038396048e+02, 9.672707145375109e+02, 9.679900850643627e+02, 9.687061503100548e+02, 9.694189433116408e+02, - 9.701284970164181e+02, 9.708348438595533e+02, 9.715380157748735e+02, 9.722380442053579e+02, 9.729349601133633e+02, - 9.736287939905765e+02, 9.743195758677061e+02, 9.750073353239212e+02, 9.756921014960520e+02, 9.763739030875469e+02, - 9.770527683772069e+02, 9.777287252276927e+02, 9.784018010938198e+02, 9.790720230306449e+02, 9.797394177013491e+02, - 9.804040113849231e+02, 9.810658299836688e+02, 9.817248990305063e+02, 9.823812436961105e+02, 9.830348887958706e+02, - 9.836858587966775e+02, 9.843341778235549e+02, 9.849798696661255e+02, 9.856229577849217e+02, 9.862634653175534e+02, - 9.869014150847245e+02, 9.875368295961058e+02, 9.881697310560779e+02, 9.888001413693349e+02, 9.894280821463594e+02, - 9.900535747087699e+02, 9.906766400945518e+02, 9.912972990631572e+02, 9.919155721005027e+02, 9.925314794238435e+02, - 9.931450409865411e+02, 9.937562764827295e+02, 9.943652053518646e+02, 9.949718467831901e+02, 9.955762197200879e+02, - 9.961783428643428e+02, 9.967782346803128e+02, 9.973759133990065e+02, 9.979713970220711e+02, 9.985647033256992e+02, - 9.991558498644453e+02, 9.997448539749670e+02, 1.000331732779681e+03, 1.000916503190347e+03, 1.001499181911571e+03, - 1.002079785444236e+03, 1.002658330088868e+03, 1.003234831948919e+03, 1.003809306933994e+03, 1.004381770763006e+03, - 1.004952238967264e+03, 1.005520726893504e+03, 1.006087249706854e+03, 1.006651822393737e+03, 1.007214459764724e+03, - 1.007775176457317e+03, 1.008333986938690e+03, 1.008890905508362e+03, 1.009445946300829e+03, 1.009999123288136e+03, - 1.010550450282399e+03, 1.011099940938282e+03, 1.011647608755426e+03, 1.012193467080821e+03, 1.012737529111141e+03, - 1.013279807895039e+03, 1.013820316335379e+03, 1.014359067191448e+03, 1.014896073081107e+03, 1.015431346482917e+03, - 1.015964899738208e+03, 1.016496745053129e+03, 1.017026894500637e+03, 1.017555360022470e+03, 1.018082153431070e+03, - 1.018607286411476e+03, 1.019130770523178e+03, 1.019652617201941e+03, 1.020172837761595e+03, 1.020691443395788e+03, - 1.021208445179715e+03, 1.021723854071806e+03, 1.022237680915397e+03, 1.022749936440350e+03, 1.023260631264671e+03, - 1.023769775896076e+03, 1.024277380733538e+03, 1.024783456068814e+03, 1.025288012087930e+03, 1.025791058872652e+03, - 1.026292606401927e+03, 1.026792664553298e+03, 1.027291243104294e+03, 1.027788351733803e+03, 1.028284000023409e+03, - 1.028778197458716e+03, 1.029270953430647e+03, 1.029762277236718e+03, 1.030252178082294e+03, 1.030740665081820e+03, - 1.031227747260036e+03, 1.031713433553166e+03, 1.032197732810095e+03, 1.032680653793514e+03, 1.033162205181059e+03, - 1.033642395566425e+03, 1.034121233460457e+03, 1.034598727292236e+03, 1.035074885410132e+03, 1.035549716082853e+03, - 1.036023227500467e+03, 1.036495427775412e+03, 1.036966324943491e+03, 1.037435926964846e+03, 1.037904241724923e+03, - 1.038371277035416e+03, 1.038837040635197e+03, 1.039301540191234e+03, 1.039764783299491e+03, 1.040226777485816e+03, - 1.040687530206816e+03, 1.041147048850713e+03, 1.041605340738193e+03, 1.042062413123237e+03, 1.042518273193944e+03, - 1.042972928073337e+03, 1.043426384820154e+03, 1.043878650429639e+03, 1.044329731834304e+03, 1.044779635904694e+03, - 1.045228369450130e+03, 1.045675939219449e+03, 1.046122351901727e+03, 1.046567614126990e+03, 1.047011732466922e+03, - 1.047454713435555e+03, 1.047896563489952e+03, 1.048337289030879e+03, 1.048776896403466e+03, 1.049215391897860e+03, - 1.049652781749869e+03, 1.050089072141592e+03, 1.050524269202047e+03, 1.050958379007783e+03, 1.051391407583485e+03, - 1.051823360902575e+03, 1.052254244887795e+03, 1.052684065411791e+03, 1.053112828297685e+03, 1.053540539319633e+03, - 1.053967204203384e+03, 1.054392828626830e+03, 1.054817418220539e+03, 1.055240978568292e+03, 1.055663515207606e+03, - 1.056085033630247e+03, 1.056505539282748e+03, 1.056925037566902e+03, 1.057343533840265e+03, 1.057761033416641e+03, - 1.058177541566565e+03, 1.058593063517773e+03, 1.059007604455682e+03, 1.059421169523839e+03, 1.059833763824386e+03, - 1.060245392418506e+03, 1.060656060326864e+03, 1.061065772530050e+03, 1.061474533969005e+03, 1.061882349545449e+03, - 1.062289224122301e+03, 1.062695162524093e+03, 1.063100169537376e+03, 1.063504249911126e+03, 1.063907408357142e+03, - 1.064309649550435e+03, 1.064710978129619e+03, 1.065111398697290e+03, 1.065510915820407e+03, 1.065909534030656e+03, - 1.066307257824827e+03, 1.066704091665172e+03, 1.067100039979759e+03, 1.067495107162831e+03, 1.067889297575151e+03, - 1.068282615544346e+03, 1.068675065365247e+03, 1.069066651300224e+03, 1.069457377579517e+03, 1.069847248401563e+03, - 1.070236267933314e+03, 1.070624440310562e+03, 1.071011769638246e+03, 1.071398259990770e+03, 1.071783915412304e+03, - 1.072168739917084e+03, 1.072552737489717e+03, 1.072935912085474e+03, 1.073318267630576e+03, 1.073699808022488e+03, - 1.074080537130199e+03, 1.074460458794505e+03, 1.074839576828284e+03, 1.075217895016769e+03, 1.075595417117819e+03, - 1.075972146862189e+03, 1.076348087953786e+03, 1.076723244069937e+03, 1.077097618861641e+03, 1.077471215953827e+03, - 1.077844038945599e+03, 1.078216091410492e+03, 1.078587376896708e+03, 1.078957898927366e+03, 1.079327661000736e+03, - 1.079696666590477e+03, 1.080064919145868e+03, 1.080432422092042e+03, 1.080799178830214e+03, 1.081165192737900e+03, - 1.081530467169147e+03, 1.081895005454749e+03, 1.082258810902464e+03, 1.082621886797230e+03, 1.082984236401377e+03, - 1.083345862954834e+03, 1.083706769675342e+03, 1.084066959758653e+03, 1.084426436378734e+03, 1.084785202687970e+03, - 1.085143261817358e+03, 1.085500616876705e+03, 1.085857270954819e+03, 1.086213227119702e+03, 1.086568488418740e+03, - 1.086923057878884e+03, 1.087276938506842e+03, 1.087630133289256e+03, 1.087982645192885e+03, 1.088334477164781e+03, - 1.088685632132470e+03, 1.089036113004120e+03, 1.089385922668721e+03, 1.089735063996246e+03, 1.090083539837828e+03, - 1.090431353025924e+03, 1.090778506374477e+03, 1.091125002679083e+03, 1.091470844717149e+03, 1.091816035248055e+03, - 1.092160577013310e+03, 1.092504472736710e+03, 1.092847725124487e+03, 1.093190336865470e+03, 1.093532310631226e+03, - 1.093873649076219e+03, 1.094214354837949e+03, 1.094554430537105e+03, 1.094893878777704e+03, 1.095232702147236e+03 - }, - { - 1.673615631652367e+00, 5.100232496994529e+00, 8.585143167596573e+00, 1.213080178788456e+01, 1.573982944905514e+01, - 1.941502960919761e+01, 2.315940533617886e+01, 2.697617864377811e+01, 3.086881223069592e+01, 3.484103399522613e+01, - 3.889686476338296e+01, 4.304064975271849e+01, 4.727709439597760e+01, 5.161130527425928e+01, 5.604883706457151e+01, - 6.059574659971076e+01, 6.525865537987170e+01, 7.004482217971119e+01, 7.496222777918376e+01, 8.001967433911553e+01, - 8.522690257331237e+01, 9.059473068761783e+01, 9.613522012398771e+01, 1.018618745531270e+02, 1.077898804254272e+02, - 1.139363998909067e+02, 1.203209302832266e+02, 1.269657489895802e+02, 1.338964689212766e+02, 1.411427387512712e+02, - 1.487391345934120e+02, 1.567263081667201e+02, 1.651524821308342e+02, 1.740754219211079e+02, 1.835650695507206e+02, - 1.937071085469176e+02, 2.046078527222149e+02, 2.164010298114432e+02, 2.292572708091434e+02, 2.433973730215468e+02, - 2.591104351218403e+02, 2.767768533729572e+02, 2.968911416023128e+02, 3.200644958600786e+02, 3.469581056702304e+02, - 3.780662069098050e+02, 4.131544259375623e+02, 4.501589759889115e+02, 4.854809564717429e+02, 5.168775367264767e+02, - 5.436105120138599e+02, 5.660463392733305e+02, 5.849977351631270e+02, 6.012457833108062e+02, 6.153984641577770e+02, - 6.279025816130405e+02, 6.390858496421730e+02, 6.491923246025837e+02, 6.584071681852563e+02, 6.668734116291002e+02, - 6.747033924144378e+02, 6.819866843082134e+02, 6.887956918662392e+02, 6.951896651569709e+02, 7.012176290490410e+02, - 7.069205548384122e+02, 7.123329945002185e+02, 7.174843277196649e+02, 7.223997255952428e+02, 7.271009040160731e+02, - 7.316067188031077e+02, 7.359336403376559e+02, 7.400961353810745e+02, 7.441069766956197e+02, 7.479774959814326e+02, - 7.517177919353654e+02, 7.553369025030277e+02, 7.588429483566073e+02, 7.622432530949842e+02, 7.655444444942792e+02, - 7.687525402407281e+02, 7.718730208846887e+02, 7.749108922147910e+02, 7.778707388279871e+02, 7.807567703372573e+02, - 7.835728613936560e+02, 7.863225864878170e+02, 7.890092503262979e+02, 7.916359144412576e+02, 7.942054205810565e+02, - 7.967204113391160e+02, 7.991833484045217e+02, 8.015965287572770e+02, 8.039620990811133e+02, 8.062820686253878e+02, - 8.085583207132092e+02, 8.107926230642346e+02, 8.129866370765432e+02, 8.151419261918138e+02, 8.172599634509778e+02, - 8.193421383331279e+02, 8.213897629582203e+02, 8.234040777236710e+02, 8.253862564360669e+02, 8.273374109915660e+02, - 8.292585956520061e+02, 8.311508109580949e+02, 8.330150073161584e+02, 8.348520882906993e+02, 8.366629136313459e+02, - 8.384483020595458e+02, 8.402090338375829e+02, 8.419458531400453e+02, 8.436594702457065e+02, 8.453505635659200e+02, - 8.470197815239436e+02, 8.486677442981497e+02, 8.502950454407821e+02, 8.519022533827566e+02, 8.534899128339918e+02, - 8.550585460878441e+02, 8.566086542373978e+02, 8.581407183106562e+02, 8.596552003310263e+02, 8.611525443088863e+02, - 8.626331771695482e+02, 8.640975096224271e+02, 8.655459369758006e+02, 8.669788399012181e+02, 8.683965851579242e+02, - 8.697995263006654e+02, 8.711880042872436e+02, 8.725623480598837e+02, 8.739228737326574e+02, 8.752698897821840e+02, - 8.766036914695439e+02, 8.779245649456832e+02, 8.792327868060138e+02, 8.805286246092503e+02, 8.818123372079549e+02, - 8.830841751415347e+02, 8.843443809920942e+02, 8.855931897214570e+02, 8.868308289905473e+02, 8.880575194466729e+02, - 8.892734750743184e+02, 8.904789033703723e+02, 8.916740056696143e+02, 8.928589773737293e+02, 8.940340081852256e+02, - 8.951992823299231e+02, 8.963549787686694e+02, 8.975012713989053e+02, 8.986383292466519e+02, 8.997663166494663e+02, - 9.008853934308564e+02, 9.019957150666422e+02, 9.030974328436967e+02, 9.041906940228366e+02, 9.052756419369372e+02, - 9.063524162009863e+02, 9.074211527950249e+02, 9.084819842031837e+02, 9.095350395345524e+02, 9.105804446388482e+02, - 9.116183222171460e+02, 9.126487919279143e+02, 9.136719704886019e+02, 9.146879717729946e+02, 9.156969069045473e+02, - 9.166988843458975e+02, 9.176940099847405e+02, 9.186823872162388e+02, 9.196641170221438e+02, 9.206392980467753e+02, - 9.216080266700110e+02, 9.225703968384395e+02, 9.235265010674913e+02, 9.244764291347796e+02, 9.254202690372359e+02, - 9.263581068321042e+02, 9.272900266946918e+02, 9.282161109739566e+02, 9.291364402460490e+02, 9.300510933658766e+02, - 9.309601475167966e+02, 9.318636782585093e+02, 9.327617595732276e+02, 9.336544639102054e+02, 9.345418622286834e+02, - 9.354240240393324e+02, 9.363010174442438e+02, 9.371729091755415e+02, 9.380397646326570e+02, 9.389016479183390e+02, - 9.397586218734367e+02, 9.406107481105117e+02, 9.414580870463275e+02, 9.423006979332575e+02, 9.431386388896545e+02, - 9.439719669292310e+02, 9.448007379894754e+02, 9.456250069591533e+02, 9.464448277049265e+02, 9.472602530971161e+02, - 9.480713350346565e+02, 9.488781244692590e+02, 9.496806714288192e+02, 9.504790250400986e+02, 9.512732335507013e+02, - 9.520633443503843e+02, 9.528494039917063e+02, 9.536314582100631e+02, 9.544095519431072e+02, 9.551837293495976e+02, - 9.559540338276796e+02, 9.567205080326316e+02, 9.574831938940843e+02, 9.582421326327395e+02, 9.589973647766088e+02, - 9.597489301767738e+02, 9.604968680227013e+02, 9.612412168571220e+02, 9.619820145904822e+02, 9.627192985149982e+02, - 9.634531053183042e+02, 9.641834710967307e+02, 9.649104309226109e+02, 9.656340206204286e+02, 9.663542741613314e+02, - 9.670712254020125e+02, 9.677849076689600e+02, 9.684953537697046e+02, 9.692025960037630e+02, 9.699066661732902e+02, - 9.706075955934529e+02, 9.713054151025248e+02, 9.720001550717252e+02, 9.726918454147949e+02, 9.733805155973273e+02, - 9.740661946458622e+02, 9.747489111567396e+02, 9.754286933047375e+02, 9.761055688514820e+02, 9.767795651536537e+02, - 9.774507091709819e+02, 9.781190274740439e+02, 9.787845462518701e+02, 9.794472913193581e+02, 9.801072881245144e+02, - 9.807645617555058e+02, 9.814191369475516e+02, 9.820710380896451e+02, 9.827202892311087e+02, 9.833669140880008e+02, - 9.840109360493661e+02, 9.846523781833370e+02, 9.852912632430938e+02, 9.859276136726818e+02, 9.865614516126986e+02, - 9.871927989058436e+02, 9.878216771023401e+02, 9.884481074652404e+02, 9.890721109755966e+02, 9.896937083375262e+02, - 9.903129199831549e+02, 9.909297660774517e+02, 9.915442665229559e+02, 9.921564409643939e+02, 9.927663087932015e+02, - 9.933738891519391e+02, 9.939792009386118e+02, 9.945822628108972e+02, 9.951830931902778e+02, 9.957817102660856e+02, - 9.963781319994604e+02, 9.969723761272185e+02, 9.975644601656429e+02, 9.981544014141946e+02, 9.987422169591355e+02, - 9.993279236770863e+02, 9.999115382385040e+02, 1.000493077111084e+03, 1.001072556563100e+03, 1.001649992666663e+03, - 1.002225401300922e+03, 1.002798798155201e+03, 1.003370198732055e+03, 1.003939618350286e+03, 1.004507072147883e+03, - 1.005072575084908e+03, 1.005636141946320e+03, 1.006197787344750e+03, 1.006757525723212e+03, 1.007315371357762e+03, - 1.007871338360115e+03, 1.008425440680192e+03, 1.008977692108633e+03, 1.009528106279249e+03, 1.010076696671441e+03, - 1.010623476612552e+03, 1.011168459280195e+03, 1.011711657704517e+03, 1.012253084770436e+03, 1.012792753219823e+03, - 1.013330675653649e+03, 1.013866864534091e+03, 1.014401332186598e+03, 1.014934090801911e+03, 1.015465152438062e+03, - 1.015994529022317e+03, 1.016522232353094e+03, 1.017048274101847e+03, 1.017572665814904e+03, 1.018095418915286e+03, - 1.018616544704480e+03, 1.019136054364189e+03, 1.019653958958044e+03, 1.020170269433291e+03, 1.020684996622439e+03, - 1.021198151244890e+03, 1.021709743908528e+03, 1.022219785111291e+03, 1.022728285242706e+03, 1.023235254585400e+03, - 1.023740703316590e+03, 1.024244641509535e+03, 1.024747079134977e+03, 1.025248026062542e+03, 1.025747492062131e+03, - 1.026245486805278e+03, 1.026742019866482e+03, 1.027237100724532e+03, 1.027730738763787e+03, 1.028222943275453e+03, - 1.028713723458831e+03, 1.029203088422538e+03, 1.029691047185722e+03, 1.030177608679241e+03, 1.030662781746834e+03, - 1.031146575146264e+03, 1.031628997550452e+03, 1.032110057548579e+03, 1.032589763647182e+03, 1.033068124271227e+03, - 1.033545147765161e+03, 1.034020842393955e+03, 1.034495216344121e+03, 1.034968277724723e+03, 1.035440034568355e+03, - 1.035910494832128e+03, 1.036379666398617e+03, 1.036847557076804e+03, 1.037314174603010e+03, 1.037779526641802e+03, - 1.038243620786894e+03, 1.038706464562030e+03, 1.039168065421852e+03, 1.039628430752759e+03, 1.040087567873747e+03, - 1.040545484037242e+03, 1.041002186429911e+03, 1.041457682173476e+03, 1.041911978325495e+03, 1.042365081880147e+03, - 1.042816999769004e+03, 1.043267738861776e+03, 1.043717305967065e+03, 1.044165707833096e+03, 1.044612951148436e+03, - 1.045059042542709e+03, 1.045503988587294e+03, 1.045947795796016e+03, 1.046390470625830e+03, 1.046832019477481e+03, - 1.047272448696172e+03, 1.047711764572213e+03, 1.048149973341657e+03, 1.048587081186938e+03, 1.049023094237483e+03, - 1.049458018570336e+03, 1.049891860210754e+03, 1.050324625132803e+03, 1.050756319259949e+03, 1.051186948465630e+03, - 1.051616518573828e+03, 1.052045035359635e+03, 1.052472504549797e+03, 1.052898931823268e+03, 1.053324322811745e+03, - 1.053748683100195e+03, 1.054172018227384e+03, 1.054594333686387e+03, 1.055015634925098e+03, 1.055435927346733e+03, - 1.055855216310321e+03, 1.056273507131190e+03, 1.056690805081454e+03, 1.057107115390479e+03, 1.057522443245355e+03, - 1.057936793791355e+03, 1.058350172132389e+03, 1.058762583331454e+03, 1.059174032411075e+03, 1.059584524353741e+03, - 1.059994064102334e+03, 1.060402656560558e+03, 1.060810306593351e+03, 1.061217019027303e+03, 1.061622798651063e+03, - 1.062027650215736e+03, 1.062431578435289e+03, 1.062834587986932e+03, 1.063236683511512e+03, 1.063637869613891e+03, - 1.064038150863321e+03, 1.064437531793817e+03, 1.064836016904523e+03, 1.065233610660074e+03, 1.065630317490951e+03, - 1.066026141793833e+03, 1.066421087931947e+03, 1.066815160235409e+03, 1.067208363001563e+03, 1.067600700495317e+03, - 1.067992176949468e+03, 1.068382796565036e+03, 1.068772563511576e+03, 1.069161481927504e+03, 1.069549555920403e+03, - 1.069936789567341e+03, 1.070323186915167e+03, 1.070708751980820e+03, 1.071093488751624e+03, 1.071477401185583e+03, - 1.071860493211671e+03, 1.072242768730119e+03, 1.072624231612698e+03, 1.073004885703000e+03, 1.073384734816713e+03, - 1.073763782741894e+03, 1.074142033239242e+03, 1.074519490042358e+03, 1.074896156858013e+03, 1.075272037366407e+03, - 1.075647135221424e+03, 1.076021454050886e+03, 1.076394997456805e+03, 1.076767769015629e+03, 1.077139772278486e+03, - 1.077511010771428e+03, 1.077881487995665e+03, 1.078251207427808e+03, 1.078620172520095e+03, 1.078988386700622e+03, - 1.079355853373574e+03, 1.079722575919450e+03, 1.080088557695280e+03, 1.080453802034848e+03, 1.080818312248908e+03, - 1.081182091625401e+03, 1.081545143429662e+03, 1.081907470904633e+03, 1.082269077271067e+03, 1.082629965727737e+03, - 1.082990139451633e+03, 1.083349601598165e+03, 1.083708355301360e+03, 1.084066403674056e+03, 1.084423749808097e+03, - 1.084780396774521e+03, 1.085136347623752e+03, 1.085491605385783e+03, 1.085846173070363e+03, 1.086200053667176e+03, - 1.086553250146028e+03, 1.086905765457016e+03, 1.087257602530708e+03, 1.087608764278322e+03, 1.087959253591891e+03, - 1.088309073344436e+03, 1.088658226390136e+03, 1.089006715564491e+03, 1.089354543684490e+03, 1.089701713548772e+03, - 1.090048227937788e+03, 1.090394089613958e+03, 1.090739301321832e+03, 1.091083865788241e+03, 1.091427785722459e+03, - 1.091771063816344e+03, 1.092113702744501e+03, 1.092455705164420e+03, 1.092797073716631e+03, 1.093137811024847e+03 - }, - { - 1.668182712325880e+00, 5.083216533766599e+00, 8.555692447125841e+00, 1.208799412799323e+01, 1.568266486994490e+01, - 1.934242206070560e+01, 2.307017333497581e+01, 2.686903464767809e+01, 3.074235054497155e+01, 3.469371696641610e+01, - 3.872700696793549e+01, 4.284639982860940e+01, 4.705641409230098e+01, 5.136194520291266e+01, 5.576830852463120e+01, - 6.028128870240695e+01, 6.490719652166233e+01, 6.965293468095099e+01, 7.452607421216132e+01, 7.953494368779620e+01, - 8.468873387343675e+01, 8.999762114609547e+01, 9.547291385795513e+01, 1.011272269424982e+02, 1.069746915274289e+02, - 1.130312082610935e+02, 1.193147556521225e+02, 1.258457682145443e+02, 1.326476039578195e+02, 1.397471272901478e+02, - 1.471754423256751e+02, 1.549688244573096e+02, 1.631699154274261e+02, 1.718292727310304e+02, 1.810073999567000e+02, - 1.907774359581414e+02, 2.012287527402889e+02, 2.124718094085293e+02, 2.246447288492400e+02, 2.379221683549627e+02, - 2.525270003753703e+02, 2.687446419316576e+02, 2.869372931284125e+02, 3.075481066308228e+02, 3.310706996580825e+02, - 3.579435652080397e+02, 3.883121462093201e+02, 4.215238284953771e+02, 4.555279307247923e+02, 4.876651563594154e+02, - 5.164426910670059e+02, 5.413535376764013e+02, 5.626500576215921e+02, 5.809183040439510e+02, 5.967606990560154e+02, - 6.106756461454477e+02, 6.230463357191056e+02, 6.341626972276912e+02, 6.442454550442459e+02, 6.534648889994785e+02, - 6.619543058227705e+02, 6.698195699540971e+02, 6.771458848208119e+02, 6.840026739914225e+02, 6.904471416320400e+02, - 6.965269057254214e+02, 7.022819726067435e+02, 7.077462375747225e+02, 7.129486399215863e+02, 7.179140625443347e+02, - 7.226640402730902e+02, 7.272173231449782e+02, 7.315903283922414e+02, 7.357975061348660e+02, 7.398516375011080e+02, - 7.437640793657954e+02, 7.475449665741361e+02, 7.512033800545935e+02, 7.547474873757853e+02, 7.581846609012180e+02, - 7.615215776234169e+02, 7.647643039316523e+02, 7.679183679237967e+02, 7.709888213686797e+02, 7.739802930277550e+02, - 7.768970347294933e+02, 7.797429613382978e+02, 7.825216855579220e+02, 7.852365483467332e+02, 7.878906455903597e+02, - 7.904868515701587e+02, 7.930278396783063e+02, 7.955161007584619e+02, 7.979539593917996e+02, 8.003435883991639e+02, - 8.026870217895328e+02, 8.049861663510345e+02, 8.072428120524808e+02, 8.094586413995829e+02, 8.116352378700024e+02, - 8.137740935344991e+02, 8.158766159570574e+02, 8.179441344547420e+02, 8.199779057875996e+02, 8.219791193400365e+02, - 8.239489018475141e+02, 8.258883217157726e+02, 8.277983929742144e+02, 8.296800789001110e+02, 8.315342953461037e+02, - 8.333619137997511e+02, 8.351637642006582e+02, 8.369406375379378e+02, 8.386932882482582e+02, 8.404224364326030e+02, - 8.421287699079530e+02, 8.438129461084283e+02, 8.454755938489557e+02, 8.471173149632248e+02, 8.487386858265032e+02, - 8.503402587729122e+02, 8.519225634157708e+02, 8.534861078788783e+02, 8.550313799458054e+02, 8.565588481336624e+02, - 8.580689626972016e+02, 8.595621565685893e+02, 8.610388462377263e+02, 8.624994325775473e+02, 8.639443016201526e+02, - 8.653738253133904e+02, 8.667883621986056e+02, 8.681882580266343e+02, 8.695738452316884e+02, 8.709454472923242e+02, - 8.723033743554900e+02, 8.736479266627032e+02, 8.749793943604534e+02, 8.762980579512406e+02, 8.776041887197485e+02, - 8.788980491357863e+02, 8.801798932354758e+02, 8.814499669660343e+02, 8.827085085932194e+02, 8.839557489244029e+02, - 8.851919116845341e+02, 8.864172137898596e+02, 8.876318656244979e+02, 8.888360713031209e+02, 8.900300289205550e+02, - 8.912139307890737e+02, 8.923879636641094e+02, 8.935523089590399e+02, 8.947071429496949e+02, 8.958526369691415e+02, - 8.969889575933131e+02, 8.981162668179900e+02, 8.992347222398400e+02, 9.003444771672727e+02, 9.014456808515951e+02, - 9.025384785808067e+02, 9.036230118335800e+02, 9.046994184133729e+02, 9.057678325766703e+02, 9.068283851556562e+02, - 9.078812036756035e+02, 9.089264124672532e+02, 9.099641327744389e+02, 9.109944828571865e+02, 9.120175780905352e+02, - 9.130335310592596e+02, 9.140424516487291e+02, 9.150444471320684e+02, 9.160396222538076e+02, 9.170280793101871e+02, - 9.180099182262807e+02, 9.189852366300804e+02, 9.199541299236945e+02, 9.209166913517822e+02, 9.218730117731233e+02, - 9.228231808763356e+02, 9.237672855475414e+02, 9.247054110351000e+02, 9.256376407349743e+02, 9.265640562450633e+02, - 9.274847374175532e+02, 9.283997624093519e+02, 9.293092077306970e+02, 9.302131482920266e+02, 9.311116574491691e+02, - 9.320048070469352e+02, 9.328926674611828e+02, 9.337753076394066e+02, 9.346527951399227e+02, 9.355251961697090e+02, - 9.363925756209485e+02, 9.372549971063306e+02, 9.381125229931682e+02, 9.389652144363687e+02, 9.398131314103097e+02, - 9.406563327396632e+02, 9.414948761292097e+02, 9.423288181926763e+02, 9.431582144806479e+02, 9.439831195075773e+02, - 9.448035867779338e+02, 9.456196688115244e+02, 9.464314171680126e+02, 9.472388824706708e+02, 9.480421144293994e+02, - 9.488411618630254e+02, 9.496360727209208e+02, 9.504268941039642e+02, 9.512136722848599e+02, 9.519964527278480e+02, - 9.527752801078274e+02, 9.535501983289025e+02, 9.543212505423870e+02, 9.550884791642775e+02, 9.558519258922140e+02, - 9.566116317219497e+02, 9.573676369633447e+02, 9.581199812559023e+02, 9.588687035838581e+02, 9.596138422908484e+02, - 9.603554350941554e+02, 9.610935190985632e+02, 9.618281308098192e+02, 9.625593056898016e+02, 9.632870799817310e+02, - 9.640114880321544e+02, 9.647325640780517e+02, 9.654503418193457e+02, 9.661648544302977e+02, 9.668761345706173e+02, - 9.675842143962568e+02, 9.682891255699351e+02, 9.689908992713786e+02, 9.696895662072899e+02, 9.703851566210674e+02, - 9.710777003022617e+02, 9.717672265957996e+02, 9.724537644109599e+02, 9.731373422301353e+02, 9.738179881173561e+02, - 9.744957297266113e+02, 9.751705943099560e+02, 9.758426087254170e+02, 9.765117994447050e+02, 9.771781925607316e+02, - 9.778418137949450e+02, 9.785026885044873e+02, 9.791608416891761e+02, 9.798162979983175e+02, 9.804690817373554e+02, - 9.811192168743635e+02, 9.817667270463796e+02, 9.824116355655933e+02, 9.830539654253823e+02, 9.836937393062154e+02, - 9.843309795814112e+02, 9.849657083227652e+02, 9.855979473060464e+02, 9.862277180163691e+02, 9.868550416534379e+02, - 9.874799391366799e+02, 9.881024311102548e+02, 9.887225379479519e+02, 9.893402797579812e+02, 9.899556763876565e+02, - 9.905687474279696e+02, 9.911795122180707e+02, 9.917879898496445e+02, 9.923941991711908e+02, 9.929981587922149e+02, - 9.935998870873266e+02, 9.941994022002451e+02, 9.947967220477238e+02, 9.953918643233901e+02, 9.959848465014985e+02, - 9.965756858406124e+02, 9.971643993871987e+02, 9.977510039791533e+02, 9.983355162492506e+02, 9.989179526285219e+02, - 9.994983293495612e+02, 1.000076662449766e+03, 1.000652967774507e+03, 1.001227260980241e+03, 1.001799557537546e+03, - 1.002369872734115e+03, 1.002938221677668e+03, 1.003504619298817e+03, 1.004069080353876e+03, 1.004631619427607e+03, - 1.005192250935914e+03, 1.005750989128486e+03, 1.006307848091387e+03, 1.006862841749593e+03, 1.007415983869480e+03, - 1.007967288061268e+03, 1.008516767781408e+03, 1.009064436334935e+03, 1.009610306877767e+03, 1.010154392418960e+03, - 1.010696705822927e+03, 1.011237259811606e+03, 1.011776066966595e+03, 1.012313139731239e+03, 1.012848490412685e+03, - 1.013382131183896e+03, 1.013914074085620e+03, 1.014444331028337e+03, 1.014972913794161e+03, 1.015499834038703e+03, - 1.016025103292910e+03, 1.016548732964863e+03, 1.017070734341547e+03, 1.017591118590586e+03, 1.018109896761941e+03, - 1.018627079789595e+03, 1.019142678493187e+03, 1.019656703579632e+03, 1.020169165644700e+03, 1.020680075174583e+03, - 1.021189442547417e+03, 1.021697278034786e+03, 1.022203591803202e+03, 1.022708393915553e+03, 1.023211694332531e+03, - 1.023713502914030e+03, 1.024213829420523e+03, 1.024712683514419e+03, 1.025210074761387e+03, 1.025706012631668e+03, - 1.026200506501357e+03, 1.026693565653667e+03, 1.027185199280168e+03, 1.027675416482014e+03, 1.028164226271137e+03, - 1.028651637571431e+03, 1.029137659219910e+03, 1.029622299967850e+03, 1.030105568481914e+03, 1.030587473345251e+03, - 1.031068023058587e+03, 1.031547226041287e+03, 1.032025090632412e+03, 1.032501625091747e+03, 1.032976837600822e+03, - 1.033450736263908e+03, 1.033923329109004e+03, 1.034394624088804e+03, 1.034864629081653e+03, 1.035333351892477e+03, - 1.035800800253718e+03, 1.036266981826228e+03, 1.036731904200175e+03, 1.037195574895916e+03, 1.037658001364863e+03, - 1.038119190990340e+03, 1.038579151088417e+03, 1.039037888908741e+03, 1.039495411635344e+03, 1.039951726387450e+03, - 1.040406840220256e+03, 1.040860760125719e+03, 1.041313493033306e+03, 1.041765045810765e+03, 1.042215425264847e+03, - 1.042664638142054e+03, 1.043112691129346e+03, 1.043559590854856e+03, 1.044005343888584e+03, 1.044449956743088e+03, - 1.044893435874159e+03, 1.045335787681486e+03, 1.045777018509322e+03, 1.046217134647118e+03, 1.046656142330175e+03, - 1.047094047740262e+03, 1.047530857006242e+03, 1.047966576204680e+03, 1.048401211360444e+03, 1.048834768447299e+03, - 1.049267253388493e+03, 1.049698672057330e+03, 1.050129030277738e+03, 1.050558333824830e+03, 1.050986588425456e+03, - 1.051413799758744e+03, 1.051839973456639e+03, 1.052265115104430e+03, 1.052689230241271e+03, 1.053112324360695e+03, - 1.053534402911119e+03, 1.053955471296347e+03, 1.054375534876059e+03, 1.054794598966296e+03, 1.055212668839945e+03, - 1.055629749727203e+03, 1.056045846816047e+03, 1.056460965252694e+03, 1.056875110142053e+03, 1.057288286548173e+03, - 1.057700499494679e+03, 1.058111753965216e+03, 1.058522054903866e+03, 1.058931407215583e+03, 1.059339815766603e+03, - 1.059747285384857e+03, 1.060153820860379e+03, 1.060559426945707e+03, 1.060964108356276e+03, 1.061367869770811e+03, - 1.061770715831710e+03, 1.062172651145426e+03, 1.062573680282842e+03, 1.062973807779640e+03, 1.063373038136663e+03, - 1.063771375820286e+03, 1.064168825262758e+03, 1.064565390862565e+03, 1.064961076984770e+03, 1.065355887961357e+03, - 1.065749828091568e+03, 1.066142901642239e+03, 1.066535112848127e+03, 1.066926465912233e+03, 1.067316965006128e+03, - 1.067706614270265e+03, 1.068095417814295e+03, 1.068483379717373e+03, 1.068870504028464e+03, 1.069256794766645e+03, - 1.069642255921402e+03, 1.070026891452923e+03, 1.070410705292386e+03, 1.070793701342248e+03, 1.071175883476528e+03, - 1.071557255541084e+03, 1.071937821353890e+03, 1.072317584705308e+03, 1.072696549358358e+03, 1.073074719048982e+03, - 1.073452097486309e+03, 1.073828688352910e+03, 1.074204495305060e+03, 1.074579521972985e+03, 1.074953771961116e+03, - 1.075327248848335e+03, 1.075699956188219e+03, 1.076071897509279e+03, 1.076443076315201e+03, 1.076813496085082e+03, - 1.077183160273655e+03, 1.077552072311532e+03, 1.077920235605417e+03, 1.078287653538340e+03, 1.078654329469874e+03, - 1.079020266736357e+03, 1.079385468651104e+03, 1.079749938504627e+03, 1.080113679564842e+03, 1.080476695077278e+03, - 1.080838988265288e+03, 1.081200562330246e+03, 1.081561420451756e+03, 1.081921565787846e+03, 1.082281001475169e+03, - 1.082639730629197e+03, 1.082997756344410e+03, 1.083355081694491e+03, 1.083711709732514e+03, 1.084067643491126e+03, - 1.084422885982737e+03, 1.084777440199697e+03, 1.085131309114477e+03, 1.085484495679849e+03, 1.085837002829061e+03, - 1.086188833476008e+03, 1.086539990515408e+03, 1.086890476822968e+03, 1.087240295255559e+03, 1.087589448651372e+03, - 1.087937939830091e+03, 1.088285771593053e+03, 1.088632946723407e+03, 1.088979467986275e+03, 1.089325338128909e+03, - 1.089670559880845e+03, 1.090015135954058e+03, 1.090359069043117e+03, 1.090702361825329e+03, 1.091045016960894e+03 - }, - { - 1.662785444283274e+00, 5.066318490465886e+00, 8.526457120341686e+00, 1.204551670811607e+01, 1.562596525069569e+01, - 1.927043695800166e+01, 2.298174738537926e+01, 2.676291032773751e+01, 3.061715672373820e+01, 3.454795586812902e+01, - 3.855903927893006e+01, 4.265442762994337e+01, 4.683846123494560e+01, 5.111583466246233e+01, 5.549163617317745e+01, - 5.997139281112727e+01, 6.456112215166463e+01, 6.926739192263408e+01, 7.409738898175982e+01, 7.905899946871237e+01, - 8.416090237268692e+01, 8.941267929683735e+01, 9.482494388924303e+01, 1.004094953004241e+02, 1.061795011819311e+02, - 1.121497172507210e+02, 1.183367524335940e+02, 1.247593912470329e+02, 1.314389886005692e+02, 1.383999569732515e+02, - 1.456703724017827e+02, 1.532827344039421e+02, 1.612749275133984e+02, 1.696914482261421e+02, 1.785849848097789e+02, - 1.880184686481310e+02, 1.980677580197992e+02, 2.088251684080960e+02, 2.204041216064836e+02, 2.329452218933596e+02, - 2.466239943734372e+02, 2.616600925535158e+02, 2.783263785088730e+02, 2.969526035624883e+02, 3.179109061955500e+02, - 3.415608448598726e+02, 3.681280253077286e+02, 3.974761217113130e+02, 4.287200525195435e+02, 4.600275675453333e+02, - 4.894700664198596e+02, 5.160205745384360e+02, 5.393239487757140e+02, 5.595589253948581e+02, 5.771541639214389e+02, - 5.925751210689214e+02, 6.062282050467753e+02, 6.184397025118914e+02, 6.294644208487762e+02, 6.395008189642899e+02, - 6.487046368706452e+02, 6.571994489651838e+02, 6.650844767033462e+02, 6.724403188476194e+02, 6.793331692128666e+02, - 6.858179473261063e+02, 6.919406466351687e+02, 6.977401159798742e+02, 7.032494269235847e+02, 7.084969352863206e+02, - 7.135071143097177e+02, 7.183012152847796e+02, 7.228977963222952e+02, 7.273131492454626e+02, 7.315616469587544e+02, - 7.356560281543291e+02, 7.396076322150732e+02, 7.434265942223789e+02, 7.471220077755929e+02, 7.507020616697857e+02, - 7.541741552133650e+02, 7.575449959936257e+02, 7.608206831430587e+02, 7.640067785683910e+02, 7.671083681389897e+02, - 7.701301144622637e+02, 7.730763025793530e+02, 7.759508796783745e+02, 7.787574897321915e+02, 7.814995038135701e+02, - 7.841800467151461e+02, 7.868020203991708e+02, 7.893681247179504e+02, 7.918808757765548e+02, 7.943426222522144e+02, - 7.967555599372084e+02, 7.991217447325205e+02, 8.014431042864308e+02, 8.037214484445143e+02, 8.059584786541318e+02, - 8.081557964468551e+02, 8.103149111055591e+02, 8.124372466087799e+02, 8.145241479328605e+02, 8.165768867821188e+02, - 8.185966668084445e+02, 8.205846283741338e+02, 8.225418529052864e+02, 8.244693668773891e+02, 8.263681454698913e+02, - 8.282391159222873e+02, 8.300831606205741e+02, 8.319011199397105e+02, 8.336937948649056e+02, 8.354619494120991e+02, - 8.372063128658339e+02, 8.389275818508129e+02, 8.406264222517649e+02, 8.423034709947531e+02, 8.439593377017471e+02, - 8.455946062291247e+02, 8.472098360997240e+02, 8.488055638371529e+02, 8.503823042102409e+02, 8.519405513947823e+02, - 8.534807800590653e+02, 8.550034463790967e+02, 8.565089889888985e+02, 8.579978298707844e+02, 8.594703752055366e+02, - 8.609270161132278e+02, 8.623681294986486e+02, 8.637940786462705e+02, 8.652052129198639e+02, 8.666018715869498e+02, - 8.679843802326020e+02, 8.693530537890008e+02, 8.707081964754541e+02, 8.720501022819271e+02, 8.733790554256601e+02, - 8.746953307826664e+02, 8.759991942806482e+02, 8.772909033466925e+02, 8.785707071779773e+02, 8.798388471526157e+02, - 8.810955571411087e+02, 8.823410638174324e+02, 8.835755869541908e+02, 8.847993397028057e+02, 8.860125288596407e+02, - 8.872153551188858e+02, 8.884080133129976e+02, 8.895906926414024e+02, 8.907635768881565e+02, 8.919268446291800e+02, - 8.930806694296663e+02, 8.942252200322159e+02, 8.953606605479592e+02, 8.964871505794214e+02, 8.976048454581148e+02, - 8.987138963494418e+02, 8.998144504146917e+02, 9.009066509532813e+02, 9.019906375387152e+02, 9.030665461485912e+02, - 9.041345092889754e+02, 9.051946561134126e+02, 9.062471125368713e+02, 9.072920013448579e+02, 9.083294422979642e+02, - 9.093595522320539e+02, 9.103824451543222e+02, 9.113982323354187e+02, 9.124070223978315e+02, 9.134089214007139e+02, - 9.144040329213170e+02, 9.153924581331944e+02, 9.163742958813375e+02, 9.173496427543690e+02, 9.183185931539490e+02, - 9.192812393615096e+02, 9.202376712475143e+02, 9.211879777240174e+02, 9.221322447881853e+02, 9.230705568043090e+02, - 9.240029963945464e+02, 9.249296443856355e+02, 9.258505798860584e+02, 9.267658803353349e+02, 9.276756215515571e+02, - 9.285798777772184e+02, 9.294787217234283e+02, 9.303722246125662e+02, 9.312604562194492e+02, 9.321434849110733e+02, - 9.330213776849857e+02, 9.338942002063461e+02, 9.347620168437304e+02, 9.356248907037256e+02, 9.364828836643719e+02, - 9.373360564074843e+02, 9.381844684499147e+02, 9.390281781737835e+02, 9.398672428557313e+02, 9.407017186952154e+02, - 9.415316608419054e+02, 9.423571234222001e+02, 9.431781595648989e+02, 9.439948214260718e+02, 9.448071602131448e+02, - 9.456152262082365e+02, 9.464190687907732e+02, 9.472187364594137e+02, 9.480142768532950e+02, 9.488057367726428e+02, - 9.495931621987530e+02, 9.503765983133844e+02, 9.511560895175602e+02, 9.519316794498278e+02, 9.527034110039673e+02, - 9.534713263461944e+02, 9.542354669318569e+02, 9.549958735216468e+02, 9.557525861973551e+02, 9.565056443771709e+02, - 9.572550868305443e+02, 9.580009516926386e+02, 9.587432764783669e+02, 9.594820976447431e+02, 9.602174523902477e+02, - 9.609493760167423e+02, 9.616779036909298e+02, 9.624030700238587e+02, 9.631249090828023e+02, 9.638434544028186e+02, - 9.645587389980027e+02, 9.652707953724364e+02, 9.659796555308470e+02, 9.666853509889930e+02, 9.673879127837642e+02, - 9.680873714830353e+02, 9.687837571952474e+02, 9.694770995787584e+02, 9.701674278509388e+02, 9.708547707970492e+02, - 9.715391567788814e+02, 9.722206137431920e+02, 9.728991692299129e+02, 9.735748503801683e+02, 9.742476839440840e+02, - 9.749176962884101e+02, 9.755849134039497e+02, 9.762493609128161e+02, 9.769110640754994e+02, 9.775700477977771e+02, - 9.782263366374477e+02, 9.788799548109075e+02, 9.795309261995704e+02, 9.801792743561349e+02, 9.808250225107039e+02, - 9.814681935767575e+02, 9.821088101569940e+02, 9.827468945490263e+02, 9.833824687509523e+02, 9.840155544667956e+02, - 9.846461731118195e+02, 9.852743458177252e+02, 9.859000934377253e+02, 9.865234365515067e+02, 9.871443954700831e+02, - 9.877629902405351e+02, 9.883792406506498e+02, 9.889931662334513e+02, 9.896047862716362e+02, 9.902141198019134e+02, - 9.908211856192407e+02, 9.914260022809773e+02, 9.920285881109459e+02, 9.926289612033999e+02, 9.932271394269170e+02, - 9.938231404281977e+02, 9.944169816357929e+02, 9.950086802637458e+02, 9.955982533151612e+02, 9.961857175856977e+02, - 9.967710896669904e+02, 9.973543859499950e+02, 9.979356226282715e+02, 9.985148157011945e+02, 9.990919809771023e+02, - 9.996671340763730e+02, 1.000240290434449e+03, 1.000811465304796e+03, 1.001380673761794e+03, 1.001947930703585e+03, - 1.002513250854854e+03, 1.003076648769557e+03, 1.003638138833595e+03, 1.004197735267433e+03, 1.004755452128675e+03, - 1.005311303314576e+03, 1.005865302564520e+03, 1.006417463462436e+03, 1.006967799439178e+03, 1.007516323774849e+03, - 1.008063049601091e+03, 1.008607989903327e+03, 1.009151157522952e+03, 1.009692565159498e+03, 1.010232225372750e+03, - 1.010770150584813e+03, 1.011306353082164e+03, 1.011840845017637e+03, 1.012373638412398e+03, 1.012904745157861e+03, - 1.013434177017585e+03, 1.013961945629128e+03, 1.014488062505868e+03, 1.015012539038792e+03, 1.015535386498254e+03, - 1.016056616035698e+03, 1.016576238685349e+03, 1.017094265365881e+03, 1.017610706882048e+03, 1.018125573926286e+03, - 1.018638877080294e+03, 1.019150626816575e+03, 1.019660833499964e+03, 1.020169507389114e+03, 1.020676658637972e+03, - 1.021182297297215e+03, 1.021686433315670e+03, 1.022189076541708e+03, 1.022690236724608e+03, 1.023189923515907e+03, - 1.023688146470721e+03, 1.024184915049042e+03, 1.024680238617021e+03, 1.025174126448217e+03, 1.025666587724839e+03, - 1.026157631538955e+03, 1.026647266893688e+03, 1.027135502704388e+03, 1.027622347799790e+03, 1.028107810923146e+03, - 1.028591900733340e+03, 1.029074625805991e+03, 1.029555994634531e+03, 1.030036015631265e+03, 1.030514697128419e+03, - 1.030992047379169e+03, 1.031468074558646e+03, 1.031942786764942e+03, 1.032416192020080e+03, 1.032888298270982e+03, - 1.033359113390417e+03, 1.033828645177932e+03, 1.034296901360772e+03, 1.034763889594786e+03, 1.035229617465311e+03, - 1.035694092488053e+03, 1.036157322109947e+03, 1.036619313710004e+03, 1.037080074600150e+03, 1.037539612026046e+03, - 1.037997933167895e+03, 1.038455045141246e+03, 1.038910954997775e+03, 1.039365669726056e+03, 1.039819196252326e+03, - 1.040271541441235e+03, 1.040722712096580e+03, 1.041172714962036e+03, 1.041621556721873e+03, 1.042069244001657e+03, - 1.042515783368948e+03, 1.042961181333987e+03, 1.043405444350365e+03, 1.043848578815691e+03, 1.044290591072247e+03, - 1.044731487407629e+03, 1.045171274055389e+03, 1.045609957195655e+03, 1.046047542955753e+03, 1.046484037410811e+03, - 1.046919446584360e+03, 1.047353776448927e+03, 1.047787032926613e+03, 1.048219221889671e+03, 1.048650349161067e+03, - 1.049080420515042e+03, 1.049509441677656e+03, 1.049937418327338e+03, 1.050364356095413e+03, 1.050790260566630e+03, - 1.051215137279682e+03, 1.051638991727720e+03, 1.052061829358853e+03, 1.052483655576651e+03, 1.052904475740630e+03, - 1.053324295166741e+03, 1.053743119127844e+03, 1.054160952854180e+03, 1.054577801533836e+03, 1.054993670313201e+03, - 1.055408564297418e+03, 1.055822488550831e+03, 1.056235448097422e+03, 1.056647447921247e+03, 1.057058492966861e+03, - 1.057468588139742e+03, 1.057877738306706e+03, 1.058285948296316e+03, 1.058693222899293e+03, 1.059099566868906e+03, - 1.059504984921376e+03, 1.059909481736260e+03, 1.060313061956834e+03, 1.060715730190478e+03, 1.061117491009040e+03, - 1.061518348949217e+03, 1.061918308512909e+03, 1.062317374167585e+03, 1.062715550346634e+03, 1.063112841449718e+03, - 1.063509251843115e+03, 1.063904785860062e+03, 1.064299447801093e+03, 1.064693241934367e+03, 1.065086172496003e+03, - 1.065478243690397e+03, 1.065869459690546e+03, 1.066259824638365e+03, 1.066649342644995e+03, 1.067038017791113e+03, - 1.067425854127240e+03, 1.067812855674030e+03, 1.068199026422581e+03, 1.068584370334718e+03, 1.068968891343285e+03, - 1.069352593352429e+03, 1.069735480237885e+03, 1.070117555847253e+03, 1.070498824000273e+03, 1.070879288489097e+03, - 1.071258953078555e+03, 1.071637821506426e+03, 1.072015897483694e+03, 1.072393184694808e+03, 1.072769686797941e+03, - 1.073145407425237e+03, 1.073520350183067e+03, 1.073894518652266e+03, 1.074267916388387e+03, 1.074640546921935e+03, - 1.075012413758606e+03, 1.075383520379522e+03, 1.075753870241462e+03, 1.076123466777094e+03, 1.076492313395198e+03, - 1.076860413480894e+03, 1.077227770395858e+03, 1.077594387478546e+03, 1.077960268044405e+03, 1.078325415386091e+03, - 1.078689832773678e+03, 1.079053523454863e+03, 1.079416490655182e+03, 1.079778737578203e+03, 1.080140267405733e+03, - 1.080501083298016e+03, 1.080861188393930e+03, 1.081220585811182e+03, 1.081579278646498e+03, 1.081937269975817e+03, - 1.082294562854473e+03, 1.082651160317389e+03, 1.083007065379254e+03, 1.083362281034707e+03, 1.083716810258516e+03, - 1.084070656005757e+03, 1.084423821211988e+03, 1.084776308793422e+03, 1.085128121647102e+03, 1.085479262651067e+03, - 1.085829734664521e+03, 1.086179540528002e+03, 1.086528683063539e+03, 1.086877165074823e+03, 1.087224989347362e+03, - 1.087572158648639e+03, 1.087918675728274e+03, 1.088264543318174e+03, 1.088609764132691e+03, 1.088954340868772e+03 - }, - { - 1.657423470762399e+00, 5.049537077316662e+00, 8.497434629153549e+00, 1.200336529196450e+01, 1.556972417611308e+01, - 1.919906509548751e+01, 2.289411474448173e+01, 2.665778849097334e+01, 3.049320800750469e+01, 3.440372100715838e+01, - 3.839292339253142e+01, 4.246468418159368e+01, 4.662317363964976e+01, 5.087289512600361e+01, 5.521872126049115e+01, - 5.966593513301427e+01, 6.422027742408970e+01, 6.888800048318136e+01, 7.367593063332492e+01, 7.859154024697706e+01, - 8.364303148531157e+01, 8.883943402905548e+01, 9.419071968585185e+01, 9.970793746522810e+01, 1.054033736225023e+02, - 1.112907423475791e+02, 1.173854143024987e+02, 1.237046922110570e+02, 1.302681453365109e+02, 1.370980181701960e+02, - 1.442197333167614e+02, 1.516625146411848e+02, 1.594601654068900e+02, 1.676520467490652e+02, 1.762843171472753e+02, - 1.854115127251714e+02, 1.950985728620002e+02, 2.054234442374652e+02, 2.164804232290925e+02, 2.283844023493868e+02, - 2.412761180057306e+02, 2.553282189422756e+02, 2.707511710949400e+02, 2.877960521981647e+02, 3.067473260290460e+02, - 3.278930746210862e+02, 3.514573139615774e+02, 3.774805213279125e+02, 4.056235634670236e+02, 4.349220627977069e+02, - 4.638376043336086e+02, 4.909778029302194e+02, 5.156128208370592e+02, 5.374900380075599e+02, 5.567393314224253e+02, - 5.736789540717705e+02, 5.886700995785080e+02, 6.020431932347769e+02, 6.140744261627023e+02, 6.249863489173473e+02, - 6.349563987376971e+02, 6.441262928118897e+02, 6.526100312485005e+02, 6.605001670087231e+02, 6.678725778555537e+02, - 6.747900715549679e+02, 6.813051147090678e+02, 6.874619110908517e+02, 6.932979978913578e+02, 6.988454834034114e+02, - 7.041320162413801e+02, 7.091815518340220e+02, 7.140149643503389e+02, 7.186505395834267e+02, 7.231043752268330e+02, - 7.273907084081595e+02, 7.315221855625718e+02, 7.355100862165280e+02, 7.393645096460252e+02, 7.430945314194940e+02, - 7.467083353546159e+02, 7.502133252845963e+02, 7.536162201532588e+02, 7.569231352750637e+02, 7.601396520592122e+02, - 7.632708780718303e+02, 7.663214989713700e+02, 7.692958235807309e+02, 7.721978231405870e+02, 7.750311656109291e+02, - 7.777992457434424e+02, 7.805052115292199e+02, 7.831519875293510e+02, 7.857422955160976e+02, 7.882786727862167e+02, - 7.907634884531967e+02, 7.931989579794381e+02, 7.955871561712584e+02, 7.979300288275585e+02, 8.002294032060760e+02, - 8.024869974484383e+02, 8.047044290859803e+02, 8.068832227320144e+02, 8.090248170523188e+02, 8.111305710937897e+02, - 8.132017700410435e+02, 8.152396304620567e+02, 8.172453050964447e+02, 8.192198872335243e+02, 8.211644147217080e+02, - 8.230798736459509e+02, 8.249672017057486e+02, 8.268272913225335e+02, 8.286609925021056e+02, 8.304691154749422e+02, - 8.322524331347677e+02, 8.340116832936268e+02, 8.357475707697721e+02, 8.374607693230379e+02, 8.391519234508684e+02, - 8.408216500568528e+02, 8.424705400024823e+02, 8.440991595517719e+02, 8.457080517175026e+02, 8.472977375169925e+02, - 8.488687171445857e+02, 8.504214710818547e+02, 8.519564610635081e+02, 8.534741311271208e+02, 8.549749084507609e+02, - 8.564592042220539e+02, 8.579274144569387e+02, 8.593799204914729e+02, 8.608170899657522e+02, 8.622392779603696e+02, - 8.636468263415748e+02, 8.650400653283855e+02, 8.664193137785302e+02, 8.677848797063552e+02, 8.691370607560954e+02, - 8.704761447272120e+02, 8.718024099129160e+02, 8.731161255795884e+02, 8.744175523400195e+02, 8.757069425230140e+02, - 8.769845405235162e+02, 8.782505831344679e+02, 8.795052998615274e+02, 8.807489132217020e+02, 8.819816390268481e+02, - 8.832036866529661e+02, 8.844152592961203e+02, 8.856165542157693e+02, 8.868077629662498e+02, 8.879890716170794e+02, - 8.891606609627329e+02, 8.903227067224802e+02, 8.914753797420593e+02, 8.926188461292420e+02, 8.937532674980077e+02, - 8.948788010852005e+02, 8.959955999208933e+02, 8.971038129791373e+02, 8.982035853220044e+02, 8.992950582372722e+02, - 9.003783693700922e+02, 9.014536528489484e+02, 9.025210394062046e+02, 9.035806564935068e+02, 9.046326283923112e+02, - 9.056770763197810e+02, 9.067141185302746e+02, 9.077438704126522e+02, 9.087664445836001e+02, 9.097819509771696e+02, - 9.107904969307117e+02, 9.117921872673778e+02, 9.127871243753557e+02, 9.137754082839839e+02, 9.147571367369065e+02, - 9.157324052623892e+02, 9.167013072409375e+02, 9.176639336012166e+02, 9.186203743294221e+02, 9.195707164022095e+02, - 9.205150452353458e+02, 9.214534444342855e+02, 9.223859957080783e+02, 9.233127791264648e+02, 9.242338730359029e+02, - 9.251493541405104e+02, 9.260592975485152e+02, 9.269637768170538e+02, 9.278628639953979e+02, 9.287566296666712e+02, - 9.296451429881213e+02, 9.305284717300067e+02, 9.314066823131501e+02, 9.322798398452230e+02, 9.331480081558054e+02, - 9.340112498302677e+02, 9.348696262425347e+02, 9.357231975867555e+02, 9.365720229079475e+02, 9.374161601316324e+02, - 9.382556660925172e+02, 9.390905965622505e+02, 9.399210062762943e+02, 9.407469489599429e+02, 9.415684773535182e+02, - 9.423856432367808e+02, 9.431984974525752e+02, 9.440070899297499e+02, 9.448114697053677e+02, 9.456116849462403e+02, - 9.464077829698108e+02, 9.471998102644027e+02, 9.479878125088636e+02, 9.487718345916251e+02, 9.495519206291987e+02, - 9.503281139841209e+02, 9.511004572823856e+02, 9.518689924303560e+02, 9.526337606312005e+02, 9.533948024008459e+02, - 9.541521575834819e+02, 9.549058653666243e+02, 9.556559642957492e+02, 9.564024918439596e+02, 9.571454861850673e+02, - 9.578849835961259e+02, 9.586210201928192e+02, 9.593536315160916e+02, 9.600828525445128e+02, 9.608087177063184e+02, - 9.615312608911204e+02, 9.622505154612994e+02, 9.629665142631059e+02, 9.636792896374531e+02, 9.643888734304354e+02, - 9.650952970035667e+02, 9.657985912437528e+02, 9.664987865730061e+02, 9.671959129579080e+02, 9.678899999188305e+02, - 9.685810765389203e+02, 9.692691714728594e+02, 9.699543129553988e+02, 9.706365288096802e+02, 9.713158464553557e+02, - 9.719922929164934e+02, 9.726658948293009e+02, 9.733366784496488e+02, 9.740046696604169e+02, 9.746698939786559e+02, - 9.753323765625830e+02, 9.759921422184012e+02, 9.766492154069613e+02, 9.773036202502601e+02, 9.779553805377880e+02, - 9.786045197327275e+02, 9.792510609780004e+02, 9.798950271021811e+02, 9.805364406252662e+02, 9.811753237643157e+02, - 9.818116984389587e+02, 9.824455862767768e+02, 9.830770086185663e+02, 9.837059865234744e+02, 9.843325407740265e+02, - 9.849566918810351e+02, 9.855784600884040e+02, 9.861978653778194e+02, 9.868149274733399e+02, 9.874296658458909e+02, - 9.880420997176469e+02, 9.886522480663333e+02, 9.892601296294213e+02, 9.898657629082415e+02, 9.904691661720050e+02, - 9.910703574617349e+02, 9.916693545941234e+02, 9.922661751652940e+02, 9.928608365544940e+02, 9.934533559277064e+02, - 9.940437502411846e+02, 9.946320362449128e+02, 9.952182304859980e+02, 9.958023493119881e+02, 9.963844088741217e+02, - 9.969644251305157e+02, 9.975424138492805e+02, 9.981183906115775e+02, 9.986923708146151e+02, 9.992643696745761e+02, - 9.998344022294964e+02, 1.000402483342084e+03, 1.000968627702471e+03, 1.001532849830930e+03, 1.002095164080517e+03, - 1.002655584639680e+03, 1.003214125534801e+03, 1.003770800632699e+03, 1.004325623643084e+03, 1.004878608120952e+03, - 1.005429767468950e+03, 1.005979114939684e+03, 1.006526663637989e+03, 1.007072426523149e+03, 1.007616416411086e+03, - 1.008158645976494e+03, 1.008699127754945e+03, 1.009237874144948e+03, 1.009774897409971e+03, 1.010310209680429e+03, - 1.010843822955631e+03, 1.011375749105690e+03, 1.011905999873407e+03, 1.012434586876105e+03, 1.012961521607448e+03, - 1.013486815439208e+03, 1.014010479623018e+03, 1.014532525292080e+03, 1.015052963462845e+03, 1.015571805036671e+03, - 1.016089060801444e+03, 1.016604741433167e+03, 1.017118857497532e+03, 1.017631419451451e+03, 1.018142437644575e+03, - 1.018651922320774e+03, 1.019159883619593e+03, 1.019666331577690e+03, 1.020171276130244e+03, 1.020674727112337e+03, - 1.021176694260315e+03, 1.021677187213127e+03, 1.022176215513636e+03, 1.022673788609915e+03, 1.023169915856512e+03, - 1.023664606515704e+03, 1.024157869758724e+03, 1.024649714666961e+03, 1.025140150233158e+03, 1.025629185362569e+03, - 1.026116828874116e+03, 1.026603089501508e+03, 1.027087975894361e+03, 1.027571496619283e+03, 1.028053660160953e+03, - 1.028534474923173e+03, 1.029013949229912e+03, 1.029492091326325e+03, 1.029968909379763e+03, 1.030444411480760e+03, - 1.030918605644008e+03, 1.031391499809316e+03, 1.031863101842554e+03, 1.032333419536578e+03, 1.032802460612150e+03, - 1.033270232718831e+03, 1.033736743435871e+03, 1.034202000273075e+03, 1.034666010671667e+03, 1.035128782005129e+03, - 1.035590321580037e+03, 1.036050636636875e+03, 1.036509734350845e+03, 1.036967621832657e+03, 1.037424306129313e+03, - 1.037879794224873e+03, 1.038334093041219e+03, 1.038787209438795e+03, 1.039239150217344e+03, 1.039689922116633e+03, - 1.040139531817166e+03, 1.040587985940884e+03, 1.041035291051861e+03, 1.041481453656980e+03, 1.041926480206611e+03, - 1.042370377095267e+03, 1.042813150662260e+03, 1.043254807192340e+03, 1.043695352916330e+03, 1.044134794011750e+03, - 1.044573136603427e+03, 1.045010386764108e+03, 1.045446550515051e+03, 1.045881633826615e+03, 1.046315642618842e+03, - 1.046748582762024e+03, 1.047180460077270e+03, 1.047611280337061e+03, 1.048041049265794e+03, 1.048469772540328e+03, - 1.048897455790508e+03, 1.049324104599697e+03, 1.049749724505289e+03, 1.050174320999219e+03, 1.050597899528467e+03, - 1.051020465495555e+03, 1.051442024259032e+03, 1.051862581133960e+03, 1.052282141392389e+03, 1.052700710263823e+03, - 1.053118292935686e+03, 1.053534894553776e+03, 1.053950520222718e+03, 1.054365175006403e+03, 1.054778863928429e+03, - 1.055191591972534e+03, 1.055603364083019e+03, 1.056014185165172e+03, 1.056424060085678e+03, 1.056832993673034e+03, - 1.057240990717946e+03, 1.057648055973735e+03, 1.058054194156722e+03, 1.058459409946624e+03, 1.058863707986929e+03, - 1.059267092885280e+03, 1.059669569213845e+03, 1.060071141509683e+03, 1.060471814275112e+03, 1.060871591978064e+03, - 1.061270479052438e+03, 1.061668479898450e+03, 1.062065598882981e+03, 1.062461840339913e+03, 1.062857208570464e+03, - 1.063251707843526e+03, 1.063645342395984e+03, 1.064038116433045e+03, 1.064430034128556e+03, 1.064821099625316e+03, - 1.065211317035392e+03, 1.065600690440421e+03, 1.065989223891917e+03, 1.066376921411567e+03, 1.066763786991532e+03, - 1.067149824594732e+03, 1.067535038155140e+03, 1.067919431578067e+03, 1.068303008740437e+03, 1.068685773491071e+03, - 1.069067729650959e+03, 1.069448881013533e+03, 1.069829231344930e+03, 1.070208784384262e+03, 1.070587543843874e+03, - 1.070965513409601e+03, 1.071342696741028e+03, 1.071719097471735e+03, 1.072094719209552e+03, 1.072469565536800e+03, - 1.072843640010537e+03, 1.073216946162796e+03, 1.073589487500823e+03, 1.073961267507311e+03, 1.074332289640633e+03, - 1.074702557335067e+03, 1.075072074001026e+03, 1.075440843025279e+03, 1.075808867771171e+03, 1.076176151578846e+03, - 1.076542697765454e+03, 1.076908509625374e+03, 1.077273590430415e+03, 1.077637943430034e+03, 1.078001571851531e+03, - 1.078364478900262e+03, 1.078726667759834e+03, 1.079088141592306e+03, 1.079448903538383e+03, 1.079808956717615e+03, - 1.080168304228584e+03, 1.080526949149096e+03, 1.080884894536367e+03, 1.081242143427212e+03, 1.081598698838225e+03, - 1.081954563765959e+03, 1.082309741187112e+03, 1.082664234058696e+03, 1.083018045318217e+03, 1.083371177883846e+03, - 1.083723634654594e+03, 1.084075418510477e+03, 1.084426532312687e+03, 1.084776978903753e+03, 1.085126761107711e+03, - 1.085475881730263e+03, 1.085824343558936e+03, 1.086172149363240e+03, 1.086519301894830e+03, 1.086865803887656e+03 - }, - { - 1.652096439873750e+00, 5.032871024527506e+00, 8.468622459518722e+00, 1.196153572321244e+01, 1.551393536248930e+01, - 1.912829747105484e+01, 2.280726297165876e+01, 2.655365238045323e+01, 3.037048225220274e+01, 3.426098354452937e+01, - 3.822862217541912e+01, 4.227712209630362e+01, 4.641049125940103e+01, 5.063305092605955e+01, 5.494946884517064e+01, - 5.936479693074915e+01, 6.388451418981302e+01, 6.851457580133867e+01, 7.326146943136465e+01, 7.813228009744758e+01, - 8.313476517934279e+01, 8.827744152828708e+01, 9.356968707148640e+01, 9.902185987460365e+01, 1.046454383384918e+02, - 1.104531871220309e+02, 1.164593545561302e+02, 1.226799088284039e+02, 1.291328221810247e+02, 1.358384149193552e+02, - 1.428197743825596e+02, 1.501032682819882e+02, 1.577191778084571e+02, 1.657024828710831e+02, 1.740938417649326e+02, - 1.829408192501253e+02, 1.922994312523421e+02, 2.022360892859257e+02, 2.128300384194763e+02, 2.241763758255666e+02, - 2.363896797013342e+02, 2.496080936011804e+02, 2.639972312771770e+02, 2.797521707613611e+02, 2.970936473525697e+02, - 3.162513003841974e+02, 3.374243836492060e+02, 3.607121422223092e+02, 3.860073514855675e+02, 4.128461899423477e+02, - 4.402903973852090e+02, 4.670946741274838e+02, 4.922492099165984e+02, 5.152200266245918e+02, 5.358250874478673e+02, - 5.541609248253175e+02, 5.704673782724831e+02, 5.850264859638997e+02, 5.981067183508241e+02, 6.099408401442627e+02, - 6.207221584107874e+02, 6.306084671975489e+02, 6.397280962290524e+02, 6.481857419236404e+02, 6.560673676215927e+02, - 6.634441054982408e+02, 6.703752980046930e+02, 6.769108530209844e+02, 6.830930688698866e+02, 6.889580550849555e+02, - 6.945368460535261e+02, 6.998562809451250e+02, 7.049397049152390e+02, 7.098075326772631e+02, 7.144777052125239e+02, - 7.189660627765412e+02, 7.232866517571474e+02, 7.274519788066276e+02, 7.314732226039408e+02, 7.353604113116226e+02, - 7.391225720641861e+02, 7.427678575096478e+02, 7.463036534149842e+02, 7.497366705621406e+02, 7.530730235474047e+02, - 7.563182986124857e+02, 7.594776122505723e+02, 7.625556620221869e+02, 7.655567707673116e+02, 7.684849251990516e+02, - 7.713438097002926e+02, 7.741368360108105e+02, 7.768671693822390e+02, 7.795377516875271e+02, 7.821513218963557e+02, - 7.847104342656039e+02, 7.872174745418516e+02, 7.896746744294588e+02, 7.920841245412174e+02, 7.944477860178722e+02, - 7.967675009769063e+02, 7.990450019290174e+02, 8.012819202821386e+02, 8.034797940369983e+02, 8.056400747646900e+02, - 8.077641339451900e+02, 8.098532687358153e+02, 8.119087072301046e+02, 8.139316132602512e+02, 8.159230907898666e+02, - 8.178841879383390e+02, 8.198159006733085e+02, 8.217191762035832e+02, 8.235949161012237e+02, 8.254439791783526e+02, - 8.272671841414594e+02, 8.290653120435522e+02, 8.308391085523442e+02, 8.325892860507995e+02, 8.343165255846800e+02, - 8.360214786702658e+02, 8.377047689741113e+02, 8.393669938755477e+02, 8.410087259354059e+02, 8.426305141957923e+02, - 8.442328855314387e+02, 8.458163457725352e+02, 8.473813808240394e+02, 8.489284576987884e+02, 8.504580254848300e+02, - 8.519705162566730e+02, 8.534663459557022e+02, 8.549459149548675e+02, 8.564096096708429e+02, 8.578578008991959e+02, - 8.592908486902878e+02, 8.607090986541162e+02, 8.621128848630274e+02, 8.635025298879713e+02, 8.648783453808608e+02, - 8.662406324766706e+02, 8.675896823221416e+02, 8.689257765003501e+02, 8.702491874474130e+02, 8.715601788468199e+02, - 8.728590060028000e+02, 8.741459161940489e+02, 8.754211490090329e+02, 8.766849366640063e+02, 8.779375043047910e+02, - 8.791790702933034e+02, 8.804098464797387e+02, 8.816300384612560e+02, 8.828398458279665e+02, 8.840394623969505e+02, - 8.852290764350006e+02, 8.864088708706759e+02, 8.875790235072744e+02, 8.887397071712445e+02, 8.898910899636775e+02, - 8.910333353890702e+02, 8.921666025344841e+02, 8.932910462291961e+02, 8.944068171971852e+02, 8.955140622028508e+02, - 8.966129241903088e+02, 8.977035424165992e+02, 8.987860525791339e+02, 8.998605869376617e+02, 9.009272744310479e+02, - 9.019862407891181e+02, 9.030376086398167e+02, 9.040814976119188e+02, 9.051180244335058e+02, 9.061473030264160e+02, - 9.071694445968697e+02, 9.081845577224461e+02, 9.091927484355928e+02, 9.101941203038222e+02, 9.111887745067667e+02, - 9.121768099102239e+02, 9.131583231373426e+02, 9.141334082821173e+02, 9.151021583662155e+02, 9.160646633574829e+02, - 9.170210115674410e+02, 9.179712893822975e+02, 9.189155813194797e+02, 9.198539700820970e+02, 9.207865366557684e+02, - 9.217133601855456e+02, 9.226345182797976e+02, 9.235500868905899e+02, 9.244601403998831e+02, 9.253647516633024e+02, - 9.262639920523799e+02, 9.271579314953303e+02, 9.280466385164284e+02, 9.289301802740381e+02, 9.298086225973503e+02, - 9.306820300218852e+02, 9.315504658238034e+02, 9.324139920530815e+02, 9.332726695655846e+02, 9.341265580540945e+02, - 9.349757160783208e+02, 9.358202010939443e+02, 9.366600694807271e+02, 9.374953765697187e+02, 9.383261766696088e+02, - 9.391525230922382e+02, 9.399744681773186e+02, 9.407920633163791e+02, 9.416053589759721e+02, 9.424144047201685e+02, - 9.432192492323627e+02, 9.440199403364160e+02, 9.448165250171666e+02, 9.456090494403159e+02, 9.463975589717353e+02, - 9.471820981961888e+02, 9.479627109355087e+02, 9.487394402662444e+02, 9.495123285367930e+02, 9.502814173840351e+02, - 9.510467477494929e+02, 9.518083598950296e+02, 9.525662934181009e+02, 9.533205868288503e+02, 9.540712792965418e+02, - 9.548184080932908e+02, 9.555620103030329e+02, 9.563021224153808e+02, 9.570387803384972e+02, 9.577720194116247e+02, - 9.585018744172670e+02, 9.592283795930475e+02, 9.599515686432499e+02, 9.606714747500500e+02, 9.613881305844471e+02, - 9.621015683169123e+02, 9.628118196277538e+02, 9.635189157172142e+02, 9.642228873153035e+02, 9.649237646913801e+02, - 9.656215776634871e+02, 9.663163556074466e+02, 9.670081274657283e+02, 9.676969217560876e+02, 9.683827665799946e+02, - 9.690656896308450e+02, 9.697457182019726e+02, 9.704228791944591e+02, 9.710971991247571e+02, 9.717687041321205e+02, - 9.724374199858588e+02, 9.731033720924131e+02, 9.737665855022634e+02, 9.744270849166667e+02, 9.750848946942421e+02, - 9.757400388573859e+02, 9.763925410985523e+02, 9.770424247863742e+02, 9.776897129716417e+02, 9.783344283931493e+02, - 9.789765934833983e+02, 9.796162303741759e+02, 9.802533609019980e+02, 9.808880066134359e+02, 9.815201887703174e+02, - 9.821499283548104e+02, 9.827772460743937e+02, 9.834021623667153e+02, 9.840246974043434e+02, 9.846448710994108e+02, - 9.852627031081570e+02, 9.858782128353732e+02, 9.864914194387443e+02, 9.871023418331016e+02, 9.877109986945836e+02, - 9.883174084647004e+02, 9.889215893543162e+02, 9.895235593475496e+02, 9.901233362055824e+02, 9.907209374703955e+02, - 9.913163804684195e+02, 9.919096823141147e+02, 9.925008599134715e+02, 9.930899299674409e+02, 9.936769089752927e+02, - 9.942618132379026e+02, 9.948446588609759e+02, 9.954254617582027e+02, 9.960042376543474e+02, 9.965810020882788e+02, - 9.971557704159360e+02, 9.977285578132373e+02, 9.982993792789289e+02, 9.988682496373772e+02, 9.994351835413070e+02, - 1.000000195474483e+03, 1.000563299754339e+03, 1.001124510534563e+03, 1.001683841807614e+03, 1.002241307407211e+03, - 1.002796921010759e+03, 1.003350696141736e+03, 1.003902646172026e+03, 1.004452784324219e+03, 1.005001123673857e+03, - 1.005547677151639e+03, 1.006092457545594e+03, 1.006635477503195e+03, 1.007176749533455e+03, 1.007716286008962e+03, - 1.008254099167893e+03, 1.008790201115985e+03, 1.009324603828464e+03, 1.009857319151950e+03, 1.010388358806313e+03, - 1.010917734386509e+03, 1.011445457364375e+03, 1.011971539090390e+03, 1.012495990795410e+03, 1.013018823592369e+03, - 1.013540048477946e+03, 1.014059676334208e+03, 1.014577717930223e+03, 1.015094183923640e+03, 1.015609084862246e+03, - 1.016122431185492e+03, 1.016634233225995e+03, 1.017144501211011e+03, 1.017653245263888e+03, 1.018160475405487e+03, - 1.018666201555579e+03, 1.019170433534226e+03, 1.019673181063128e+03, 1.020174453766955e+03, 1.020674261174652e+03, - 1.021172612720720e+03, 1.021669517746484e+03, 1.022164985501327e+03, 1.022659025143918e+03, 1.023151645743406e+03, - 1.023642856280601e+03, 1.024132665649136e+03, 1.024621082656606e+03, 1.025108116025692e+03, 1.025593774395263e+03, - 1.026078066321465e+03, 1.026561000278784e+03, 1.027042584661101e+03, 1.027522827782725e+03, 1.028001737879406e+03, - 1.028479323109342e+03, 1.028955591554158e+03, 1.029430551219880e+03, 1.029904210037883e+03, 1.030376575865831e+03, - 1.030847656488605e+03, 1.031317459619203e+03, 1.031785992899645e+03, 1.032253263901844e+03, 1.032719280128478e+03, - 1.033184049013844e+03, 1.033647577924695e+03, 1.034109874161068e+03, 1.034570944957099e+03, 1.035030797481827e+03, - 1.035489438839975e+03, 1.035946876072742e+03, 1.036403116158554e+03, 1.036858166013826e+03, 1.037312032493704e+03, - 1.037764722392795e+03, 1.038216242445887e+03, 1.038666599328660e+03, 1.039115799658386e+03, 1.039563849994614e+03, - 1.040010756839852e+03, 1.040456526640236e+03, 1.040901165786183e+03, 1.041344680613046e+03, 1.041787077401751e+03, - 1.042228362379426e+03, 1.042668541720024e+03, 1.043107621544933e+03, 1.043545607923580e+03, 1.043982506874025e+03, - 1.044418324363545e+03, 1.044853066309217e+03, 1.045286738578478e+03, 1.045719346989694e+03, 1.046150897312712e+03, - 1.046581395269398e+03, 1.047010846534183e+03, 1.047439256734588e+03, 1.047866631451749e+03, 1.048292976220930e+03, - 1.048718296532031e+03, 1.049142597830090e+03, 1.049565885515778e+03, 1.049988164945883e+03, 1.050409441433790e+03, - 1.050829720249960e+03, 1.051249006622392e+03, 1.051667305737083e+03, 1.052084622738488e+03, 1.052500962729965e+03, - 1.052916330774214e+03, 1.053330731893720e+03, 1.053744171071179e+03, 1.054156653249923e+03, 1.054568183334339e+03, - 1.054978766190283e+03, 1.055388406645487e+03, 1.055797109489963e+03, 1.056204879476396e+03, 1.056611721320540e+03, - 1.057017639701602e+03, 1.057422639262625e+03, 1.057826724610863e+03, 1.058229900318154e+03, 1.058632170921284e+03, - 1.059033540922353e+03, 1.059434014789127e+03, 1.059833596955397e+03, 1.060232291821322e+03, 1.060630103753772e+03, - 1.061027037086672e+03, 1.061423096121333e+03, 1.061818285126783e+03, 1.062212608340093e+03, 1.062606069966700e+03, - 1.062998674180728e+03, 1.063390425125294e+03, 1.063781326912825e+03, 1.064171383625364e+03, 1.064560599314867e+03, - 1.064948978003506e+03, 1.065336523683965e+03, 1.065723240319727e+03, 1.066109131845363e+03, 1.066494202166817e+03, - 1.066878455161686e+03, 1.067261894679498e+03, 1.067644524541981e+03, 1.068026348543342e+03, 1.068407370450524e+03, - 1.068787594003476e+03, 1.069167022915412e+03, 1.069545660873069e+03, 1.069923511536961e+03, 1.070300578541625e+03, - 1.070676865495879e+03, 1.071052375983059e+03, 1.071427113561264e+03, 1.071801081763598e+03, 1.072174284098399e+03, - 1.072546724049483e+03, 1.072918405076364e+03, 1.073289330614492e+03, 1.073659504075469e+03, 1.074028928847282e+03, - 1.074397608294513e+03, 1.074765545758564e+03, 1.075132744557870e+03, 1.075499207988109e+03, 1.075864939322415e+03, - 1.076229941811585e+03, 1.076594218684283e+03, 1.076957773147245e+03, 1.077320608385477e+03, 1.077682727562455e+03, - 1.078044133820320e+03, 1.078404830280074e+03, 1.078764820041767e+03, 1.079124106184690e+03, 1.079482691767562e+03, - 1.079840579828712e+03, 1.080197773386266e+03, 1.080554275438326e+03, 1.080910088963146e+03, 1.081265216919315e+03, - 1.081619662245927e+03, 1.081973427862753e+03, 1.082326516670419e+03, 1.082678931550568e+03, 1.083030675366027e+03, - 1.083381750960980e+03, 1.083732161161123e+03, 1.084081908773830e+03, 1.084430996588312e+03, 1.084779427375776e+03 - }, - { - 1.646804004514797e+00, 5.016319081879893e+00, 8.440018140422868e+00, 1.192002392345982e+01, 1.545859265396476e+01, - 1.905812528001615e+01, 2.272117991890445e+01, 2.645048566040808e+01, 3.024895790681146e+01, 3.411971546249124e+01, - 3.806609961679484e+01, 4.209169550567520e+01, 4.620035608606441e+01, 5.039622911526828e+01, 5.468378759780491e+01, - 5.906786424682467e+01, 6.355369061001664e+01, 6.814694163502959e+01, 7.285378660253787e+01, 7.768094754314541e+01, - 8.263576648642751e+01, 8.772628317802811e+01, 9.296132525986556e+01, 9.835061335470628e+01, 1.039048840629563e+02, - 1.096360345877065e+02, 1.155572936069114e+02, 1.216834241576590e+02, 1.280309657606011e+02, 1.346185248841550e+02, - 1.414671252588024e+02, 1.486006325223964e+02, 1.560462718295994e+02, 1.638352615849790e+02, 1.720035928869929e+02, - 1.805929912880687e+02, 1.896521054763882e+02, 1.992379746744002e+02, 2.094178291614382e+02, 2.202712671724931e+02, - 2.318928057125752e+02, 2.443946774927823e+02, 2.579094491025991e+02, 2.725913978735832e+02, 2.886143688154175e+02, - 3.061619461424255e+02, 3.254039763062883e+02, 3.464539575859157e+02, 3.693050135083856e+02, 3.937427798015276e+02, - 4.192459411145724e+02, 4.449620507530544e+02, 4.699036010421152e+02, 4.933301773184851e+02, 5.148421584316058e+02, - 5.343065731831970e+02, 5.517965786086828e+02, 5.674955406529259e+02, 5.816253441373789e+02, 5.944044014990226e+02, - 6.060283432852376e+02, 6.166643132385445e+02, 6.264519478319164e+02, 6.355069137597706e+02, 6.439249528249073e+02, - 6.517855907916872e+02, 6.591552571638922e+02, 6.660898099766143e+02, 6.726365443808180e+02, 6.788357807440697e+02, - 6.847221201832236e+02, 6.903254406371726e+02, 6.956716915450230e+02, 7.007835321798788e+02, 7.056808481837988e+02, - 7.103811726734629e+02, 7.149000320498624e+02, 7.192512319389838e+02, 7.234470951540312e+02, 7.274986609111080e+02, - 7.314158525243961e+02, 7.352076192840093e+02, 7.388820570547531e+02, 7.424465112352814e+02, 7.459076650175994e+02, - 7.492716153376853e+02, 7.525439384731700e+02, 7.557297468971908e+02, 7.588337387187835e+02, 7.618602408148247e+02, - 7.648132465751703e+02, 7.676964490327559e+02, 7.705132700272369e+02, 7.732668859491198e+02, 7.759602505271577e+02, - 7.785961150517412e+02, 7.811770463686231e+02, 7.837054429283994e+02, 7.861835491361448e+02, 7.886134682109773e+02, - 7.909971737361614e+02, 7.933365200556250e+02, 7.956332516517617e+02, 7.978890116215098e+02, 8.001053493524628e+02, - 8.022837274876920e+02, 8.044255282567856e+02, 8.065320592409498e+02, 8.086045586317700e+02, 8.106442000360064e+02, - 8.126520968726455e+02, 8.146293064030084e+02, 8.165768334300448e+02, 8.184956336988811e+02, 8.203866170270754e+02, - 8.222506501899877e+02, 8.240885595838485e+02, 8.259011336867948e+02, 8.276891253359490e+02, 8.294532538368039e+02, - 8.311942069327112e+02, 8.329126425672165e+02, 8.346091906548049e+02, 8.362844545953019e+02, 8.379390127511178e+02, - 8.395734198110205e+02, 8.411882080627743e+02, 8.427838885818177e+02, 8.443609523425350e+02, 8.459198712580622e+02, - 8.474610991560314e+02, 8.489850727187079e+02, 8.504922121255664e+02, 8.519829226809379e+02, 8.534575933975203e+02, - 8.549166013732496e+02, 8.563603088184450e+02, 8.577890655925956e+02, 8.592032094366634e+02, 8.606030664465405e+02, - 8.619889516584957e+02, 8.633611695318770e+02, 8.647200144192469e+02, 8.660657710107943e+02, 8.673987147546802e+02, - 8.687191122548511e+02, 8.700272216477595e+02, 8.713232929592931e+02, 8.726075684431588e+02, 8.738802829018520e+02, - 8.751416639912708e+02, 8.763919325099599e+02, 8.776313026739008e+02, 8.788599823777040e+02, 8.800781734429949e+02, - 8.812860718547388e+02, 8.824838679974301e+02, 8.836717468232011e+02, 8.848498881270534e+02, 8.860184666926204e+02, - 8.871776524902875e+02, 8.883276108542034e+02, 8.894685026512298e+02, 8.906004844422574e+02, 8.917237086363082e+02, - 8.928383236377908e+02, 8.939444739872854e+02, 8.950423004961806e+02, 8.961319403754925e+02, 8.972135273591583e+02, - 8.982871918220809e+02, 8.993530608931997e+02, 9.004112585638321e+02, 9.014619057915135e+02, 9.025051205995679e+02, - 9.035410181726160e+02, 9.045697109482059e+02, 9.055913087047729e+02, 9.066059186460856e+02, 9.076136454823534e+02, - 9.086145915081547e+02, 9.096088566773228e+02, 9.105965383335844e+02, 9.115777326172528e+02, 9.125525325660242e+02, - 9.135210294636927e+02, 9.144833125869078e+02, 9.154394692645612e+02, 9.163895849349808e+02, 9.173337432010239e+02, - 9.182720258831694e+02, 9.192045130706874e+02, 9.201312832253735e+02, 9.210524130158691e+02, 9.219679776771923e+02, - 9.228780508499373e+02, 9.237827046733211e+02, 9.246820098264426e+02, 9.255760355681211e+02, 9.264648497753766e+02, - 9.273485189806050e+02, 9.282271084074981e+02, 9.291006820057654e+02, 9.299693024846999e+02, 9.308330313456353e+02, - 9.316919289133407e+02, 9.325460543663939e+02, 9.333954657665646e+02, 9.342402200872626e+02, 9.350803732410731e+02, - 9.359159801064155e+02, 9.367470945533653e+02, 9.375737694686694e+02, 9.383960567799743e+02, 9.392140074793155e+02, - 9.400276716458767e+02, 9.408370984680575e+02, 9.416423362648728e+02, 9.424434325067028e+02, 9.432404338354244e+02, - 9.440333860839401e+02, 9.448223342951316e+02, 9.456073227402525e+02, 9.463883949367870e+02, 9.471655936657826e+02, - 9.479389609886898e+02, 9.487085382637127e+02, 9.494743661616933e+02, 9.502364846815464e+02, 9.509949327157373e+02, - 9.517497498436816e+02, 9.525009737060269e+02, 9.532486417598161e+02, 9.539927908610852e+02, 9.547334572778940e+02, - 9.554706767030005e+02, 9.562044842661913e+02, 9.569349145462811e+02, 9.576620015827887e+02, 9.583857788873024e+02, - 9.591062794545442e+02, 9.598235357731414e+02, 9.605375798361166e+02, 9.612484431511034e+02, 9.619561567502983e+02, - 9.626607512001543e+02, 9.633622566108254e+02, 9.640607026453708e+02, 9.647561185287276e+02, 9.654485330564527e+02, - 9.661379746032480e+02, 9.668244711312701e+02, 9.675080501982371e+02, 9.681887389653286e+02, 9.688665642049009e+02, - 9.695415523080035e+02, 9.702137292917178e+02, 9.708831208063165e+02, 9.715497521422510e+02, 9.722136482369724e+02, - 9.728748336815860e+02, 9.735333327273496e+02, 9.741891692920218e+02, 9.748423669660541e+02, 9.754929490186448e+02, - 9.761409384036452e+02, 9.767863577653372e+02, 9.774292294440703e+02, 9.780695754817716e+02, 9.787074176273321e+02, - 9.793427773418692e+02, 9.799756758038667e+02, 9.806061339142061e+02, 9.812341723010791e+02, 9.818598113247934e+02, - 9.824830710824690e+02, 9.831039714126380e+02, 9.837225318997325e+02, 9.843387718784833e+02, 9.849527104382169e+02, - 9.855643664270656e+02, 9.861737584560769e+02, 9.867809049032466e+02, 9.873858239174551e+02, 9.879885334223258e+02, - 9.885890511200010e+02, 9.891873944948353e+02, 9.897835808170140e+02, 9.903776271460949e+02, 9.909695503344778e+02, - 9.915593670307987e+02, 9.921470936832562e+02, 9.927327465428700e+02, 9.933163416666705e+02, 9.938978949208271e+02, - 9.944774219837074e+02, 9.950549383488811e+02, 9.956304593280566e+02, 9.962040000539648e+02, 9.967755754831825e+02, - 9.973452003988975e+02, 9.979128894136260e+02, 9.984786569718671e+02, 9.990425173527137e+02, 9.996044846724062e+02, - 1.000164572886840e+03, 1.000722795794023e+03, 1.001279167036487e+03, 1.001833700103649e+03, 1.002386408334133e+03, - 1.002937304918042e+03, 1.003486402899195e+03, 1.004033715177305e+03, 1.004579254510138e+03, 1.005123033515614e+03, - 1.005665064673878e+03, 1.006205360329328e+03, 1.006743932692608e+03, 1.007280793842560e+03, 1.007815955728149e+03, - 1.008349430170343e+03, 1.008881228863962e+03, 1.009411363379494e+03, 1.009939845164880e+03, 1.010466685547264e+03, - 1.010991895734711e+03, 1.011515486817896e+03, 1.012037469771762e+03, 1.012557855457149e+03, 1.013076654622396e+03, - 1.013593877904909e+03, 1.014109535832706e+03, 1.014623638825936e+03, 1.015136197198367e+03, 1.015647221158853e+03, - 1.016156720812769e+03, 1.016664706163430e+03, 1.017171187113478e+03, 1.017676173466251e+03, 1.018179674927121e+03, - 1.018681701104817e+03, 1.019182261512724e+03, 1.019681365570154e+03, 1.020179022603606e+03, 1.020675241847992e+03, - 1.021170032447857e+03, 1.021663403458565e+03, 1.022155363847475e+03, 1.022645922495092e+03, 1.023135088196202e+03, - 1.023622869660989e+03, 1.024109275516128e+03, 1.024594314305867e+03, 1.025077994493090e+03, 1.025560324460356e+03, - 1.026041312510932e+03, 1.026520966869804e+03, 1.026999295684665e+03, 1.027476307026904e+03, 1.027952008892560e+03, - 1.028426409203275e+03, 1.028899515807226e+03, 1.029371336480042e+03, 1.029841878925711e+03, 1.030311150777464e+03, - 1.030779159598658e+03, 1.031245912883629e+03, 1.031711418058549e+03, 1.032175682482260e+03, 1.032638713447091e+03, - 1.033100518179673e+03, 1.033561103841736e+03, 1.034020477530894e+03, 1.034478646281419e+03, 1.034935617065000e+03, - 1.035391396791496e+03, 1.035845992309674e+03, 1.036299410407937e+03, 1.036751657815041e+03, 1.037202741200799e+03, - 1.037652667176781e+03, 1.038101442296994e+03, 1.038549073058560e+03, 1.038995565902381e+03, 1.039440927213798e+03, - 1.039885163323226e+03, 1.040328280506803e+03, 1.040770284987010e+03, 1.041211182933287e+03, 1.041650980462651e+03, - 1.042089683640286e+03, 1.042527298480141e+03, 1.042963830945510e+03, 1.043399286949609e+03, 1.043833672356140e+03, - 1.044266992979852e+03, 1.044699254587089e+03, 1.045130462896334e+03, 1.045560623578745e+03, 1.045989742258681e+03, - 1.046417824514222e+03, 1.046844875877683e+03, 1.047270901836120e+03, 1.047695907831827e+03, 1.048119899262829e+03, - 1.048542881483368e+03, 1.048964859804377e+03, 1.049385839493957e+03, 1.049805825777841e+03, 1.050224823839849e+03, - 1.050642838822346e+03, 1.051059875826684e+03, 1.051475939913648e+03, 1.051891036103883e+03, 1.052305169378329e+03, - 1.052718344678642e+03, 1.053130566907609e+03, 1.053541840929562e+03, 1.053952171570787e+03, 1.054361563619915e+03, - 1.054770021828331e+03, 1.055177550910552e+03, 1.055584155544619e+03, 1.055989840372476e+03, 1.056394610000345e+03, - 1.056798468999093e+03, 1.057201421904601e+03, 1.057603473218125e+03, 1.058004627406649e+03, 1.058404888903238e+03, - 1.058804262107383e+03, 1.059202751385350e+03, 1.059600361070507e+03, 1.059997095463665e+03, 1.060392958833408e+03, - 1.060787955416415e+03, 1.061182089417779e+03, 1.061575365011332e+03, 1.061967786339950e+03, 1.062359357515864e+03, - 1.062750082620970e+03, 1.063139965707123e+03, 1.063529010796439e+03, 1.063917221881591e+03, 1.064304602926092e+03, - 1.064691157864587e+03, 1.065076890603137e+03, 1.065461805019495e+03, 1.065845904963384e+03, 1.066229194256769e+03, - 1.066611676694127e+03, 1.066993356042714e+03, 1.067374236042826e+03, 1.067754320408060e+03, 1.068133612825570e+03, - 1.068512116956323e+03, 1.068889836435342e+03, 1.069266774871964e+03, 1.069642935850075e+03, 1.070018322928358e+03, - 1.070392939640528e+03, 1.070766789495569e+03, 1.071139875977967e+03, 1.071512202547940e+03, 1.071883772641665e+03, - 1.072254589671505e+03, 1.072624657026229e+03, 1.072993978071231e+03, 1.073362556148749e+03, 1.073730394578081e+03, - 1.074097496655790e+03, 1.074463865655923e+03, 1.074829504830210e+03, 1.075194417408273e+03, 1.075558606597828e+03, - 1.075922075584884e+03, 1.076284827533940e+03, 1.076646865588183e+03, 1.077008192869679e+03, 1.077368812479564e+03, - 1.077728727498237e+03, 1.078087940985538e+03, 1.078446455980942e+03, 1.078804275503735e+03, 1.079161402553199e+03, - 1.079517840108787e+03, 1.079873591130300e+03, 1.080228658558064e+03, 1.080583045313098e+03, 1.080936754297290e+03, - 1.081289788393562e+03, 1.081642150466036e+03, 1.081993843360204e+03, 1.082344869903084e+03, 1.082695232903389e+03 - }, - { - 1.641545822286156e+00, 4.999880018327272e+00, 8.411619242889715e+00, 1.187882589026007e+01, 1.540369001901346e+01, - 1.898853990925839e+01, 2.263585372154738e+01, 2.634827240197066e+01, 3.012861399198462e+01, 3.397988953308428e+01, - 3.790532078281978e+01, 4.190835999487108e+01, 4.599271205761170e+01, 5.016235933548257e+01, 5.442158961719478e+01, - 5.877502764647108e+01, 6.322767079744707e+01, 6.778492956144153e+01, 7.245267363879633e+01, 7.723728458441862e+01, - 8.214571614529440e+01, 8.718556366136127e+01, 9.236514418862832e+01, 9.769358936068470e+01, 1.031809534451528e+02, - 1.088383396080199e+02, 1.146780480865521e+02, 1.207137508404187e+02, 1.269606983389971e+02, 1.334359655113111e+02, - 1.401587456014531e+02, 1.471507028391218e+02, 1.544363973481677e+02, 1.620437993332573e+02, 1.700049128175133e+02, - 1.783565340195675e+02, 1.871411733779020e+02, 1.964081732404687e+02, 2.062150519215208e+02, 2.166290929776892e+02, - 2.277291628578838e+02, 2.396076535175831e+02, 2.523722569681631e+02, 2.661468944817087e+02, 2.810704156117251e+02, - 2.972905755928289e+02, 3.149495897578689e+02, 3.341573782327267e+02, 3.549507001925180e+02, 3.772389717259235e+02, - 4.007394125349128e+02, 4.249239093619440e+02, 4.490509083062803e+02, 4.723453195970624e+02, 4.942558699603841e+02, - 5.144788216070358e+02, 5.329154983298815e+02, 5.496222576192470e+02, 5.647411910597727e+02, 5.784482909707456e+02, - 5.909217477220002e+02, 6.023257909249654e+02, 6.128044484472574e+02, 6.224807591867245e+02, 6.314585231989860e+02, - 6.398249360096561e+02, 6.476532901178217e+02, 6.550054036540012e+02, 6.619336759200048e+02, 6.684827758562391e+02, - 6.746910090357620e+02, 6.805914179588561e+02, 6.862126671308919e+02, 6.915797568934601e+02, 6.967146018224493e+02, - 7.016365021236676e+02, 7.063625302863079e+02, 7.109078503130132e+02, 7.152859829830710e+02, 7.195090276276256e+02, - 7.235878486151807e+02, 7.275322330014602e+02, 7.313510244609587e+02, 7.350522375881433e+02, 7.386431558584225e+02, - 7.421304159159433e+02, 7.455200803648130e+02, 7.488177008510653e+02, 7.520283729114692e+02, 7.551567838144010e+02, - 7.582072544146272e+02, 7.611837758778158e+02, 7.640900419943398e+02, 7.669294776895948e+02, 7.697052642449300e+02, - 7.724203616658549e+02, 7.750775285695104e+02, 7.776793399092269e+02, 7.802282028084039e+02, 7.827263707375814e+02, - 7.851759562361012e+02, 7.875789423522093e+02, 7.899371929520854e+02, 7.922524620283386e+02, 7.945264021214750e+02, - 7.967605719532766e+02, 7.989564433585087e+02, 8.011154075906269e+02, 8.032387810678512e+02, 8.053278106179820e+02, - 8.073836782733931e+02, 8.094075056615820e+02, 8.114003580314744e+02, 8.133632479510565e+02, 8.152971387079843e+02, - 8.172029474412727e+02, 8.190815480291776e+02, 8.209337737683512e+02, 8.227604197869783e+02, 8.245622454059094e+02, - 8.263399761987361e+02, 8.280943059670794e+02, 8.298258985622178e+02, 8.315353895786739e+02, 8.332233879303830e+02, - 8.348904773190678e+02, 8.365372176035079e+02, 8.381641460776041e+02, 8.397717786644175e+02, 8.413606110326961e+02, - 8.429311196425364e+02, 8.444837625239854e+02, 8.460189811148646e+02, 8.475371996763955e+02, 8.490388263320942e+02, - 8.505242559249107e+02, 8.519938679020921e+02, 8.534480285168719e+02, 8.548870911731289e+02, 8.563113970064727e+02, - 8.577212754467519e+02, 8.591170447488425e+02, 8.604990124938395e+02, 8.618674760625838e+02, 8.632227230833454e+02, - 8.645650318553185e+02, 8.658946717494624e+02, 8.672119035881454e+02, 8.685169800048852e+02, 8.698101457854394e+02, - 8.710916381913755e+02, 8.723616872671978e+02, 8.736205161319988e+02, 8.748683412565722e+02, 8.761053727268414e+02, - 8.773318144943913e+02, 8.785478646254028e+02, 8.797537154843254e+02, 8.809495540167533e+02, 8.821355619095939e+02, - 8.833119157992081e+02, 8.844787874586625e+02, 8.856363439763849e+02, 8.867847479266962e+02, 8.879241575326531e+02, - 8.890547268216172e+02, 8.901766057739248e+02, 8.912899404650345e+02, 8.923948732014733e+02, 8.934915426509244e+02, - 8.945800839667296e+02, 8.956606289071174e+02, 8.967333059493967e+02, 8.977982403993923e+02, 8.988555544963317e+02, - 8.999053675134359e+02, 9.009477958543915e+02, 9.019829531459380e+02, 9.030109503267239e+02, 9.040318957326369e+02, - 9.050458951787521e+02, 9.060530520380792e+02, 9.070534673172351e+02, 9.080472393736943e+02, 9.090344653790543e+02, - 9.100152393378851e+02, 9.109896534915122e+02, 9.119577980520153e+02, 9.129197612622517e+02, 9.138756294536686e+02, - 9.148254871019922e+02, 9.157694168808944e+02, 9.167074997137198e+02, 9.176398148233588e+02, 9.185664397803456e+02, - 9.194874506153352e+02, 9.204029216045631e+02, 9.213129256947879e+02, 9.222175342951655e+02, 9.231168173788642e+02, - 9.240108435219752e+02, 9.248996799410976e+02, 9.257833925296583e+02, 9.266620458930216e+02, 9.275357033824275e+02, - 9.284044271278135e+02, 9.292682780695595e+02, 9.301273159891967e+02, 9.309815995391306e+02, 9.318311862713981e+02, - 9.326761326655188e+02, 9.335164941554494e+02, 9.343523251557009e+02, 9.351836790866301e+02, 9.360106083989483e+02, - 9.368331645974692e+02, 9.376513982641286e+02, 9.384653590803030e+02, 9.392750958484462e+02, 9.400806565130780e+02, - 9.408820881811437e+02, 9.416794371417622e+02, 9.424727488853952e+02, 9.432620681224507e+02, 9.440474388013373e+02, - 9.448289041260051e+02, 9.456065065729655e+02, 9.463802879078319e+02, 9.471502892013847e+02, 9.479165504028038e+02, - 9.486791121052397e+02, 9.494380129630648e+02, 9.501932914194809e+02, 9.509449852966433e+02, 9.516931318092085e+02, - 9.524377675775137e+02, 9.531789286403939e+02, 9.539166504676535e+02, 9.546509679722024e+02, 9.553819155218606e+02, - 9.561095269508569e+02, 9.568338355710156e+02, 9.575548741826512e+02, 9.582726750851784e+02, 9.589872700874409e+02, - 9.596986905177769e+02, 9.604069672338205e+02, 9.611121306320589e+02, 9.618142106571339e+02, 9.625132368109195e+02, - 9.632092381613597e+02, 9.639022433510931e+02, 9.645922806058539e+02, 9.652793777426706e+02, 9.659635621778574e+02, - 9.666448609348088e+02, 9.673233006516095e+02, 9.679989075884511e+02, 9.686717076348715e+02, 9.693417263168222e+02, - 9.700089888035637e+02, 9.706735199143966e+02, 9.713353441252335e+02, 9.719944855750120e+02, 9.726509680719666e+02, - 9.733048150997381e+02, 9.739560498233569e+02, 9.746046950950757e+02, 9.752507734600745e+02, 9.758943071620320e+02, - 9.765353181485692e+02, 9.771738280765697e+02, 9.778098583173830e+02, 9.784434299619028e+02, 9.790745638255396e+02, - 9.797032804530778e+02, 9.803296001234264e+02, 9.809535428542629e+02, 9.815751284065794e+02, 9.821943762891233e+02, - 9.828113057627448e+02, 9.834259358446511e+02, 9.840382853125641e+02, 9.846483727087925e+02, 9.852562163442174e+02, - 9.858618343021892e+02, 9.864652444423447e+02, 9.870664644043424e+02, 9.876655116115198e+02, 9.882624032744740e+02, - 9.888571563945669e+02, 9.894497877673596e+02, 9.900403139859741e+02, 9.906287514443842e+02, 9.912151163406444e+02, - 9.917994246800475e+02, 9.923816922782206e+02, 9.929619347641589e+02, 9.935401675831945e+02, 9.941164059999136e+02, - 9.946906651010058e+02, 9.952629597980647e+02, 9.958333048303281e+02, 9.964017147673666e+02, 9.969682040117191e+02, - 9.975327868014735e+02, 9.980954772128055e+02, 9.986562891624563e+02, 9.992152364101735e+02, 9.997723325610980e+02, - 1.000327591068107e+03, 1.000881025234116e+03, 1.001432648214327e+03, 1.001982473018450e+03, 1.002530512512866e+03, - 1.003076779422760e+03, 1.003621286334210e+03, 1.004164045696240e+03, 1.004705069822828e+03, 1.005244370894888e+03, - 1.005781960962207e+03, 1.006317851945343e+03, 1.006852055637504e+03, 1.007384583706375e+03, 1.007915447695923e+03, - 1.008444659028165e+03, 1.008972229004907e+03, 1.009498168809444e+03, 1.010022489508244e+03, 1.010545202052590e+03, - 1.011066317280194e+03, 1.011585845916788e+03, 1.012103798577682e+03, 1.012620185769299e+03, 1.013135017890681e+03, - 1.013648305234964e+03, 1.014160057990838e+03, 1.014670286243971e+03, 1.015178999978416e+03, 1.015686209077993e+03, - 1.016191923327638e+03, 1.016696152414746e+03, 1.017198905930475e+03, 1.017700193371036e+03, 1.018200024138964e+03, - 1.018698407544358e+03, 1.019195352806108e+03, 1.019690869053101e+03, 1.020184965325401e+03, 1.020677650575421e+03, - 1.021168933669061e+03, 1.021658823386836e+03, 1.022147328424991e+03, 1.022634457396583e+03, 1.023120218832555e+03, - 1.023604621182795e+03, 1.024087672817169e+03, 1.024569382026547e+03, 1.025049757023801e+03, 1.025528805944802e+03, - 1.026006536849385e+03, 1.026482957722313e+03, 1.026958076474214e+03, 1.027431900942513e+03, 1.027904438892341e+03, - 1.028375698017435e+03, 1.028845685941022e+03, 1.029314410216690e+03, 1.029781878329248e+03, 1.030248097695563e+03, - 1.030713075665396e+03, 1.031176819522218e+03, 1.031639336484019e+03, 1.032100633704095e+03, 1.032560718271835e+03, - 1.033019597213485e+03, 1.033477277492909e+03, 1.033933766012336e+03, 1.034389069613090e+03, 1.034843195076320e+03, - 1.035296149123708e+03, 1.035747938418174e+03, 1.036198569564569e+03, 1.036648049110352e+03, 1.037096383546266e+03, - 1.037543579307000e+03, 1.037989642771839e+03, 1.038434580265304e+03, 1.038878398057794e+03, 1.039321102366197e+03, - 1.039762699354520e+03, 1.040203195134480e+03, 1.040642595766113e+03, 1.041080907258355e+03, 1.041518135569626e+03, - 1.041954286608401e+03, 1.042389366233777e+03, 1.042823380256020e+03, 1.043256334437123e+03, 1.043688234491339e+03, - 1.044119086085722e+03, 1.044548894840638e+03, 1.044977666330298e+03, 1.045405406083259e+03, 1.045832119582933e+03, - 1.046257812268076e+03, 1.046682489533287e+03, 1.047106156729485e+03, 1.047528819164386e+03, 1.047950482102972e+03, - 1.048371150767956e+03, 1.048790830340241e+03, 1.049209525959365e+03, 1.049627242723949e+03, 1.050043985692137e+03, - 1.050459759882025e+03, 1.050874570272090e+03, 1.051288421801613e+03, 1.051701319371092e+03, 1.052113267842649e+03, - 1.052524272040443e+03, 1.052934336751062e+03, 1.053343466723918e+03, 1.053751666671638e+03, 1.054158941270447e+03, - 1.054565295160547e+03, 1.054970732946485e+03, 1.055375259197531e+03, 1.055778878448036e+03, 1.056181595197791e+03, - 1.056583413912384e+03, 1.056984339023551e+03, 1.057384374929517e+03, 1.057783525995339e+03, 1.058181796553247e+03, - 1.058579190902970e+03, 1.058975713312067e+03, 1.059371368016252e+03, 1.059766159219712e+03, 1.060160091095424e+03, - 1.060553167785468e+03, 1.060945393401330e+03, 1.061336772024212e+03, 1.061727307705332e+03, 1.062117004466214e+03, - 1.062505866298989e+03, 1.062893897166678e+03, 1.063281101003484e+03, 1.063667481715066e+03, 1.064053043178824e+03, - 1.064437789244173e+03, 1.064821723732816e+03, 1.065204850439006e+03, 1.065587173129819e+03, 1.065968695545414e+03, - 1.066349421399289e+03, 1.066729354378539e+03, 1.067108498144111e+03, 1.067486856331047e+03, 1.067864432548738e+03, - 1.068241230381164e+03, 1.068617253387133e+03, 1.068992505100524e+03, 1.069366989030517e+03, 1.069740708661828e+03, - 1.070113667454938e+03, 1.070485868846321e+03, 1.070857316248666e+03, 1.071228013051099e+03, 1.071597962619403e+03, - 1.071967168296235e+03, 1.072335633401338e+03, 1.072703361231751e+03, 1.073070355062025e+03, 1.073436618144418e+03, - 1.073802153709113e+03, 1.074166964964406e+03, 1.074531055096917e+03, 1.074894427271779e+03, 1.075257084632836e+03, - 1.075619030302839e+03, 1.075980267383629e+03, 1.076340798956334e+03, 1.076700628081546e+03, 1.077059757799515e+03, - 1.077418191130321e+03, 1.077775931074063e+03, 1.078132980611031e+03, 1.078489342701885e+03, 1.078845020287827e+03, - 1.079200016290774e+03, 1.079554333613528e+03, 1.079907975139945e+03, 1.080260943735102e+03, 1.080613242245458e+03 - }, - { - 1.636321555409574e+00, 4.983552621604361e+00, 8.383423379019025e+00, 1.183793769520928e+01, 1.534922154704764e+01, - 1.891953293160990e+01, 2.255127278932934e+01, 2.624699706950945e+01, 3.000943007962818e+01, 3.384147928819196e+01, - 3.774625177333762e+01, 4.172707254078666e+01, 4.578750497057986e+01, 4.993137369466555e+01, 5.416279025816367e+01, - 5.848618197772019e+01, 6.290632448296122e+01, 6.742837851431160e+01, 7.205793165573591e+01, 7.680104580834062e+01, - 8.166431136557188e+01, 8.665490923932418e+01, 9.178068211685715e+01, 9.705021661099435e+01, 1.024729383149062e+02, - 1.080592221983403e+02, 1.138205213159369e+02, 1.197695174481967e+02, 1.259202981063218e+02, 1.322885653285323e+02, - 1.388918829200495e+02, 1.457499703002495e+02, 1.528850527902900e+02, 1.603222806057511e+02, 1.680902306635819e+02, - 1.762215082050187e+02, 1.847534669906989e+02, 1.937290674890092e+02, 2.031978894498185e+02, 2.132173042642609e+02, - 2.238537849178170e+02, 2.351842705975085e+02, 2.472973787535842e+02, 2.602940185353457e+02, 2.742865351018919e+02, - 2.893948536475739e+02, 3.057373096671192e+02, 3.234134928248470e+02, 3.424774251920342e+02, 3.629017161221860e+02, - 3.845350832597644e+02, 4.070596755962426e+02, 4.299739836610856e+02, 4.526504666687800e+02, 4.744827346466215e+02, - 4.950536236487504e+02, 5.141294349119217e+02, 5.316358268514845e+02, 5.476168135823842e+02, 5.621838704821239e+02, - 5.754777644347949e+02, 5.876444446925653e+02, 5.988218104377670e+02, 6.091336915475293e+02, 6.186881214594833e+02, - 6.275778859451830e+02, 6.358820906969598e+02, 6.436680390626007e+02, 6.509930643093096e+02, 6.579061652962190e+02, - 6.644494016770454e+02, 6.706590553145638e+02, 6.765665849479208e+02, 6.821994066013164e+02, 6.875815309190266e+02, - 6.927340846855093e+02, 6.976757392280379e+02, 7.024230640908584e+02, 7.069908206508895e+02, 7.113922072868319e+02, - 7.156390652685259e+02, 7.197420526105188e+02, 7.237107916345984e+02, 7.275539948210796e+02, 7.312795726227969e+02, - 7.348947262089670e+02, 7.384060275516626e+02, 7.418194888299029e+02, 7.451406227781079e+02, 7.483744953267067e+02, - 7.515257716574445e+02, 7.545987566129119e+02, 7.575974302500607e+02, 7.605254792042584e+02, 7.633863244284751e+02, - 7.661831457875005e+02, 7.689189039162765e+02, 7.715963596921847e+02, 7.742180916212276e+02, 7.767865113959501e+02, - 7.793038778473295e+02, 7.817723094826206e+02, 7.841937957754135e+02, 7.865702073522011e+02, 7.889033052009938e+02, - 7.911947490114106e+02, 7.934461047418691e+02, 7.956588514975848e+02, 7.978343877928285e+02, 7.999740372620169e+02, - 8.020790538765076e+02, 8.041506267173190e+02, 8.061898843481590e+02, 8.081978988281152e+02, 8.101756894112032e+02, - 8.121242258890844e+02, 8.140444317941756e+02, 8.159371872313753e+02, 8.178033315557316e+02, 8.196436658365124e+02, - 8.214589551388193e+02, 8.232499306387003e+02, 8.250172915860578e+02, 8.267617071282964e+02, 8.284838180063574e+02, - 8.301842381336540e+02, 8.318635560674803e+02, 8.335223363815040e+02, 8.351611209472012e+02, 8.367804301313571e+02, - 8.383807639163457e+02, 8.399626027552322e+02, 8.415264094344899e+02, 8.430726286227779e+02, 8.446016879914871e+02, - 8.461140008945813e+02, 8.476099645625778e+02, 8.490899622619694e+02, 8.505543636589949e+02, 8.520035254558539e+02, - 8.534377919903737e+02, 8.548574958015797e+02, 8.562629581634851e+02, 8.576544895891752e+02, 8.590323903071661e+02, - 8.603969507118237e+02, 8.617484517895052e+02, 8.630871655219820e+02, 8.644133552685647e+02, 8.657272761282549e+02, - 8.670291752831649e+02, 8.683192923243446e+02, 8.695978595610771e+02, 8.708651023146402e+02, 8.721212391974517e+02, - 8.733664823894746e+02, 8.746010378453773e+02, 8.758251056045920e+02, 8.770388799720795e+02, 8.782425497485523e+02, - 8.794362984380803e+02, 8.806203044460127e+02, 8.817947412677627e+02, 8.829597776689399e+02, 8.841155778573111e+02, - 8.852623016470160e+02, 8.864001046154657e+02, 8.875291382532969e+02, 8.886495501077505e+02, 8.897614839198187e+02, - 8.908650797554765e+02, 8.919604741313043e+02, 8.930478001347813e+02, 8.941271875395212e+02, 8.951987629157020e+02, - 8.962626497359248e+02, 8.973189684767266e+02, 8.983678367159673e+02, 8.994093692262679e+02, 9.004436780647233e+02, - 9.014708726590293e+02, 9.024910598902239e+02, 9.035043441721842e+02, 9.045108271857929e+02, 9.055106092934665e+02, - 9.065037876384692e+02, 9.074904575012828e+02, 9.084707120491204e+02, 9.094446423988951e+02, 9.104123376778349e+02, - 9.113738850818708e+02, 9.123293699318859e+02, 9.132788757279192e+02, 9.142224842014155e+02, 9.151602753656035e+02, - 9.160923275640820e+02, 9.170187175176911e+02, 9.179395203697389e+02, 9.188548098091928e+02, 9.197646578003956e+02, - 9.206691350841061e+02, 9.215683109152513e+02, 9.224622531749989e+02, 9.233510284074597e+02, 9.242347018551573e+02, - 9.251133374933231e+02, 9.259869980630592e+02, 9.268557451034184e+02, 9.277196389824353e+02, 9.285787389271579e+02, - 9.294331030527137e+02, 9.302827883904490e+02, 9.311278509151732e+02, 9.319683455715478e+02, 9.328043262996501e+02, - 9.336358460597396e+02, 9.344629568562578e+02, 9.352857097610953e+02, 9.361041549361461e+02, 9.369183416551751e+02, - 9.377283183250330e+02, 9.385341325062295e+02, 9.393358309328966e+02, 9.401334595321604e+02, 9.409270634429453e+02, - 9.417166870342201e+02, 9.425023739227290e+02, 9.432841669901933e+02, 9.440621084000300e+02, 9.448362391784113e+02, - 9.456066009518092e+02, 9.463732334075459e+02, 9.471361759936597e+02, 9.478954675166191e+02, 9.486511461554048e+02, - 9.494032494752064e+02, 9.501518144407406e+02, 9.508968774292088e+02, 9.516384742429025e+02, 9.523766401214669e+02, - 9.531114097538400e+02, 9.538428172898680e+02, 9.545708963516159e+02, 9.552956800443811e+02, 9.560172009674117e+02, - 9.567354912243540e+02, 9.574505824334220e+02, 9.581625057373068e+02, 9.588712918128319e+02, 9.595769708803628e+02, - 9.602795727129742e+02, 9.609791266453883e+02, 9.616756615826897e+02, 9.623692060088173e+02, 9.630597879948523e+02, - 9.637474352070925e+02, 9.644321749149360e+02, 9.651140339985651e+02, 9.657930389564484e+02, 9.664692159126581e+02, - 9.671425906240088e+02, 9.678131884870297e+02, 9.684810345447688e+02, 9.691461534934315e+02, 9.698085696888667e+02, - 9.704683071528997e+02, 9.711253895795156e+02, 9.717798403408964e+02, 9.724316824933244e+02, 9.730809387829433e+02, - 9.737276316513902e+02, 9.743717832412982e+02, 9.750134154016712e+02, 9.756525496931426e+02, 9.762892073931122e+02, - 9.769234095007649e+02, 9.775551767419835e+02, 9.781845295741483e+02, 9.788114881908315e+02, 9.794360725263899e+02, - 9.800583022604533e+02, 9.806781968223169e+02, 9.812957753952431e+02, 9.819110569206596e+02, 9.825240601022774e+02, - 9.831348034101169e+02, 9.837433050844445e+02, 9.843495831396326e+02, 9.849536553679326e+02, 9.855555393431715e+02, - 9.861552524243671e+02, 9.867528117592748e+02, 9.873482342878541e+02, 9.879415367456654e+02, 9.885327356671992e+02, - 9.891218473891332e+02, 9.897088880535276e+02, 9.902938736109502e+02, 9.908768198235430e+02, 9.914577422680217e+02, - 9.920366563386251e+02, 9.926135772499890e+02, 9.931885200399809e+02, 9.937614995724656e+02, 9.943325305400240e+02, - 9.949016274666118e+02, 9.954688047101735e+02, 9.960340764651982e+02, 9.965974567652329e+02, 9.971589594853396e+02, - 9.977185983445129e+02, 9.982763869080444e+02, 9.988323385898477e+02, 9.993864666547344e+02, 9.999387842206485e+02, - 1.000489304260862e+03, 1.001038039606124e+03, 1.001585002946774e+03, 1.002130206834810e+03, 1.002673663685926e+03, - 1.003215385781506e+03, 1.003755385270584e+03, 1.004293674171764e+03, 1.004830264375112e+03, 1.005365167644006e+03, - 1.005898395616959e+03, 1.006429959809402e+03, 1.006959871615441e+03, 1.007488142309582e+03, 1.008014783048420e+03, - 1.008539804872302e+03, 1.009063218706961e+03, 1.009585035365121e+03, 1.010105265548069e+03, 1.010623919847205e+03, - 1.011141008745563e+03, 1.011656542619306e+03, 1.012170531739194e+03, 1.012682986272025e+03, 1.013193916282057e+03, - 1.013703331732399e+03, 1.014211242486383e+03, 1.014717658308909e+03, 1.015222588867769e+03, 1.015726043734949e+03, - 1.016228032387908e+03, 1.016728564210839e+03, 1.017227648495900e+03, 1.017725294444433e+03, 1.018221511168164e+03, - 1.018716307690371e+03, 1.019209692947048e+03, 1.019701675788039e+03, 1.020192264978160e+03, 1.020681469198294e+03, - 1.021169297046481e+03, 1.021655757038979e+03, 1.022140857611312e+03, 1.022624607119304e+03, 1.023107013840087e+03, - 1.023588085973111e+03, 1.024067831641112e+03, 1.024546258891090e+03, 1.025023375695257e+03, 1.025499189951970e+03, - 1.025973709486657e+03, 1.026446942052721e+03, 1.026918895332436e+03, 1.027389576937825e+03, 1.027858994411524e+03, - 1.028327155227632e+03, 1.028794066792556e+03, 1.029259736445833e+03, 1.029724171460943e+03, 1.030187379046110e+03, - 1.030649366345090e+03, 1.031110140437951e+03, 1.031569708341832e+03, 1.032028077011703e+03, 1.032485253341101e+03, - 1.032941244162863e+03, 1.033396056249847e+03, 1.033849696315638e+03, 1.034302171015253e+03, 1.034753486945818e+03, - 1.035203650647260e+03, 1.035652668602962e+03, 1.036100547240429e+03, 1.036547292931935e+03, 1.036992911995161e+03, - 1.037437410693827e+03, 1.037880795238309e+03, 1.038323071786253e+03, 1.038764246443178e+03, 1.039204325263070e+03, - 1.039643314248970e+03, 1.040081219353542e+03, 1.040518046479657e+03, 1.040953801480941e+03, 1.041388490162334e+03, - 1.041822118280633e+03, 1.042254691545033e+03, 1.042686215617654e+03, 1.043116696114063e+03, 1.043546138603792e+03, - 1.043974548610844e+03, 1.044401931614195e+03, 1.044828293048288e+03, 1.045253638303521e+03, 1.045677972726724e+03, - 1.046101301621639e+03, 1.046523630249382e+03, 1.046944963828909e+03, 1.047365307537466e+03, 1.047784666511041e+03, - 1.048203045844805e+03, 1.048620450593552e+03, 1.049036885772122e+03, 1.049452356355837e+03, 1.049866867280911e+03, - 1.050280423444867e+03, 1.050693029706948e+03, 1.051104690888515e+03, 1.051515411773446e+03, 1.051925197108533e+03, - 1.052334051603859e+03, 1.052741979933191e+03, 1.053148986734351e+03, 1.053555076609588e+03, 1.053960254125947e+03, - 1.054364523815630e+03, 1.054767890176356e+03, 1.055170357671712e+03, 1.055571930731501e+03, 1.055972613752091e+03, - 1.056372411096747e+03, 1.056771327095974e+03, 1.057169366047843e+03, 1.057566532218322e+03, 1.057962829841591e+03, - 1.058358263120372e+03, 1.058752836226236e+03, 1.059146553299913e+03, 1.059539418451604e+03, 1.059931435761282e+03, - 1.060322609278987e+03, 1.060712943025128e+03, 1.061102440990771e+03, 1.061491107137928e+03, 1.061878945399841e+03, - 1.062265959681263e+03, 1.062652153858741e+03, 1.063037531780880e+03, 1.063422097268623e+03, 1.063805854115514e+03, - 1.064188806087965e+03, 1.064570956925514e+03, 1.064952310341087e+03, 1.065332870021248e+03, 1.065712639626457e+03, - 1.066091622791312e+03, 1.066469823124801e+03, 1.066847244210539e+03, 1.067223889607016e+03, 1.067599762847823e+03, - 1.067974867441897e+03, 1.068349206873746e+03, 1.068722784603682e+03, 1.069095604068042e+03, 1.069467668679417e+03, - 1.069838981826869e+03, 1.070209546876152e+03, 1.070579367169923e+03, 1.070948446027964e+03, 1.071316786747383e+03, - 1.071684392602827e+03, 1.072051266846688e+03, 1.072417412709308e+03, 1.072782833399175e+03, 1.073147532103128e+03, - 1.073511511986548e+03, 1.073874776193556e+03, 1.074237327847206e+03, 1.074599170049671e+03, 1.074960305882433e+03, - 1.075320738406469e+03, 1.075680470662436e+03, 1.076039505670848e+03, 1.076397846432261e+03, 1.076755495927444e+03, - 1.077112457117562e+03, 1.077468732944345e+03, 1.077824326330259e+03, 1.078179240178678e+03, 1.078533477374050e+03 - }, - { - 1.631130870647663e+00, 4.967335697846337e+00, 8.355428201051920e+00, 1.179735548209492e+01, 1.529518144513699e+01, - 1.885109610041185e+01, 2.246742579783084e+01, 2.614664450752904e+01, 2.989138627337871e+01, 3.370445899099646e+01, - 3.758885968074793e+01, 4.154779145347638e+01, 4.558468239740215e+01, 4.970320665104162e+01, 5.390730797007718e+01, - 5.820122614724887e+01, 6.258952670522854e+01, 6.707713435515440e+01, 7.166937080059350e+01, 7.637199757137154e+01, - 8.119126469773332e+01, 8.613396618764941e+01, 9.120750345452899e+01, 9.641995806652928e+01, 1.017801754609591e+02, - 1.072978615984323e+02, 1.129836949379619e+02, 1.188494565990323e+02, 1.249081821847323e+02, 1.311743394531514e+02, - 1.376640368972039e+02, 1.443952693362520e+02, 1.513882077107492e+02, 1.586655418931304e+02, 1.662528862820932e+02, - 1.741792596234446e+02, 1.824776509965670e+02, 1.911856833428515e+02, 2.003463823113282e+02, 2.100090486124786e+02, - 2.202302108249118e+02, 2.310745923583578e+02, 2.426159429593629e+02, 2.549374325018774e+02, 2.681310429917555e+02, - 2.822949921364836e+02, 2.975277230596889e+02, 3.139166595237057e+02, 3.315203066483657e+02, 3.503437616590377e+02, - 3.703095248053883e+02, 3.912269701653681e+02, 4.127692113786606e+02, 4.344799780507998e+02, 4.558371382996464e+02, - 4.763656915678565e+02, 4.957449683054553e+02, 5.137933407030494e+02, 5.304540060356871e+02, 5.457617345962274e+02, - 5.598049630345824e+02, 5.726972170863443e+02, 5.845585978375243e+02, 5.955050519612537e+02, 6.056429226685869e+02, - 6.150668155391909e+02, 6.238593908115648e+02, 6.320921599762961e+02, 6.398267138031158e+02, 6.471160542783726e+02, - 6.540058621935638e+02, 6.605356272444029e+02, 6.667396197439807e+02, 6.726477091456883e+02, 6.782860458469881e+02, - 6.836776261634247e+02, 6.888427599250385e+02, 6.937994580465897e+02, 6.985637548041587e+02, 7.031499769739535e+02, - 7.075709696965918e+02, 7.118382869975297e+02, 7.159623533161169e+02, 7.199526011310603e+02, 7.238175887675933e+02, - 7.275651016807977e+02, 7.312022398862998e+02, 7.347354937172738e+02, 7.381708096962001e+02, 7.415136479983754e+02, - 7.447690327340238e+02, 7.479415960737239e+02, 7.510356170772685e+02, 7.540550559512781e+02, 7.570035843497110e+02, - 7.598846122392866e+02, 7.627013117750271e+02, 7.654566385668305e+02, 7.681533506639315e+02, 7.707940255384761e+02, - 7.733810753108160e+02, 7.759167604262835e+02, 7.784032019652893e+02, 7.808423927446690e+02, 7.832362073477811e+02, - 7.855864112033083e+02, 7.878946688176231e+02, 7.901625512525573e+02, 7.923915429292088e+02, 7.945830478286586e+02, - 7.967383951520670e+02, 7.988588445072033e+02, 8.009455905976047e+02, 8.029997676416401e+02, 8.050224533106621e+02, - 8.070146724101023e+02, 8.089774002567585e+02, 8.109115657924010e+02, 8.128180544579269e+02, 8.146977108497100e+02, - 8.165513411775747e+02, 8.183797155418272e+02, 8.201835700450439e+02, 8.219636087527201e+02, 8.237205055155413e+02, - 8.254549056647719e+02, 8.271674275911796e+02, 8.288586642169236e+02, 8.305291843689592e+02, 8.321795340617242e+02, - 8.338102374694304e+02, 8.354217989970376e+02, 8.370147028839252e+02, 8.385894152171879e+02, 8.401463839206352e+02, - 8.416860415010921e+02, 8.432088036577754e+02, 8.447150712625717e+02, 8.462052308202092e+02, 8.476796551461289e+02, - 8.491387040051010e+02, 8.505827247132548e+02, 8.520120527060046e+02, 8.534270120741578e+02, 8.548279160702842e+02, - 8.562150675873195e+02, 8.575887596111780e+02, 8.589492756490559e+02, 8.602968901349500e+02, 8.616318688138389e+02, - 8.629544691058381e+02, 8.642649404515655e+02, 8.655635246398665e+02, 8.668504561189568e+02, 8.681259622919694e+02, - 8.693902638080673e+02, 8.706435747875114e+02, 8.718861031405305e+02, 8.731180507646376e+02, 8.743396137863605e+02, - 8.755509827805862e+02, 8.767523429796058e+02, 8.779438744724457e+02, 8.791257523949978e+02, 8.802981471114610e+02, - 8.814612243875750e+02, 8.826151455560622e+02, 8.837600676747097e+02, 8.848961436774732e+02, 8.860235225189696e+02, - 8.871423493126939e+02, 8.882527654632906e+02, 8.893549087931857e+02, 8.904489136638458e+02, 8.915349110919593e+02, - 8.926130288607712e+02, 8.936833916268249e+02, 8.947461210223232e+02, 8.958013357533365e+02, 8.968491516940431e+02, - 8.978896819772016e+02, 8.989230370810319e+02, 8.999493249126697e+02, 9.009686508883663e+02, 9.019811176539306e+02, - 9.029868265567371e+02, 9.039858756615349e+02, 9.049783611627917e+02, 9.059643771211463e+02, 9.069440155269380e+02, - 9.079173663613799e+02, 9.088845176554819e+02, 9.098455555468198e+02, 9.108005643342393e+02, 9.117496265305956e+02, - 9.126928229136012e+02, 9.136302325748665e+02, 9.145619329672173e+02, 9.154879999503469e+02, 9.164085078348834e+02, - 9.173235294249357e+02, 9.182331361541183e+02, 9.191373977519952e+02, 9.200363828328292e+02, 9.209301585717945e+02, - 9.218187908295280e+02, 9.227023441867568e+02, 9.235808819777858e+02, 9.244544663228887e+02, 9.253231581596475e+02, - 9.261870172732766e+02, 9.270461023259735e+02, 9.279004708853400e+02, 9.287501794518929e+02, 9.295952834857173e+02, - 9.304358374322829e+02, 9.312718947474571e+02, 9.321035079217420e+02, 9.329307285037806e+02, 9.337536071231277e+02, - 9.345721935123461e+02, 9.353865365284263e+02, 9.361966841735713e+02, 9.370026836153597e+02, 9.378045812063141e+02, - 9.386024225028901e+02, 9.393962522839169e+02, 9.401861145684949e+02, 9.409720526333816e+02, 9.417541086019405e+02, - 9.425323251535135e+02, 9.433067430275131e+02, 9.440774026954267e+02, 9.448443439661633e+02, 9.456076060006856e+02, - 9.463672273262407e+02, 9.471232458501930e+02, 9.478756988734796e+02, 9.486246231036985e+02, 9.493700546678463e+02, - 9.501120291247033e+02, 9.508505814768961e+02, 9.515857461826326e+02, 9.523175571671277e+02, 9.530460478337279e+02, - 9.537712510747438e+02, 9.544931992819988e+02, 9.552119243571067e+02, 9.559274577214813e+02, 9.566398303260908e+02, - 9.573490726609622e+02, 9.580552147644469e+02, 9.587582862322449e+02, 9.594583162262122e+02, 9.601553334829408e+02, - 9.608493663221262e+02, 9.615404426547317e+02, 9.622285899909459e+02, 9.629138354479524e+02, 9.635962057575007e+02, - 9.642757272733037e+02, 9.649524259782502e+02, 9.656263274914447e+02, 9.662974570750830e+02, 9.669658396411576e+02, - 9.676314997580146e+02, 9.682944616567447e+02, 9.689547492374326e+02, 9.696123860752580e+02, 9.702673954264560e+02, - 9.709198002341392e+02, 9.715696231339832e+02, 9.722168864597902e+02, 9.728616122489176e+02, 9.735038222475868e+02, - 9.741435379160746e+02, 9.747807804337846e+02, 9.754155707042077e+02, 9.760479293597699e+02, 9.766778767665779e+02, - 9.773054330290521e+02, 9.779306179944670e+02, 9.785534512573864e+02, 9.791739521640051e+02, 9.797921398163938e+02, - 9.804080330766574e+02, 9.810216505709997e+02, 9.816330106937036e+02, 9.822421316110272e+02, 9.828490312650148e+02, - 9.834537273772324e+02, 9.840562374524200e+02, 9.846565787820692e+02, 9.852547684479304e+02, 9.858508233254410e+02, - 9.864447600870869e+02, 9.870365952056961e+02, 9.876263449576604e+02, 9.882140254260974e+02, 9.887996525039442e+02, - 9.893832418969896e+02, 9.899648091268474e+02, 9.905443695338682e+02, 9.911219382799927e+02, 9.916975303515532e+02, - 9.922711605620118e+02, 9.928428435546513e+02, 9.934125938052125e+02, 9.939804256244779e+02, 9.945463531608049e+02, - 9.951103904026131e+02, 9.956725511808220e+02, 9.962328491712400e+02, 9.967912978969121e+02, 9.973479107304189e+02, - 9.979027008961335e+02, 9.984556814724369e+02, 9.990068653938905e+02, 9.995562654533667e+02, 1.000103894304143e+03, - 1.000649764461954e+03, 1.001193888307008e+03, 1.001736278085964e+03, 1.002276945913874e+03, 1.002815903776089e+03, - 1.003353163530133e+03, 1.003888736907535e+03, 1.004422635515640e+03, 1.004954870839376e+03, 1.005485454242995e+03, - 1.006014396971783e+03, 1.006541710153739e+03, 1.007067404801221e+03, 1.007591491812567e+03, 1.008113981973685e+03, - 1.008634885959619e+03, 1.009154214336083e+03, 1.009671977560964e+03, 1.010188185985815e+03, 1.010702849857304e+03, - 1.011215979318653e+03, 1.011727584411034e+03, 1.012237675074967e+03, 1.012746261151666e+03, 1.013253352384384e+03, - 1.013758958419725e+03, 1.014263088808931e+03, 1.014765753009161e+03, 1.015266960384731e+03, 1.015766720208347e+03, - 1.016265041662309e+03, 1.016761933839703e+03, 1.017257405745564e+03, 1.017751466298026e+03, 1.018244124329454e+03, - 1.018735388587552e+03, 1.019225267736457e+03, 1.019713770357817e+03, 1.020200904951844e+03, 1.020686679938359e+03, - 1.021171103657815e+03, 1.021654184372303e+03, 1.022135930266547e+03, 1.022616349448876e+03, 1.023095449952186e+03, - 1.023573239734888e+03, 1.024049726681832e+03, 1.024524918605230e+03, 1.024998823245549e+03, 1.025471448272407e+03, - 1.025942801285441e+03, 1.026412889815165e+03, 1.026881721323824e+03, 1.027349303206223e+03, 1.027815642790544e+03, - 1.028280747339162e+03, 1.028744624049436e+03, 1.029207280054493e+03, 1.029668722424001e+03, 1.030128958164931e+03, - 1.030587994222302e+03, 1.031045837479918e+03, 1.031502494761100e+03, 1.031957972829397e+03, 1.032412278389293e+03, - 1.032865418086899e+03, 1.033317398510640e+03, 1.033768226191929e+03, 1.034217907605828e+03, 1.034666449171707e+03, - 1.035113857253887e+03, 1.035560138162273e+03, 1.036005298152986e+03, 1.036449343428975e+03, 1.036892280140627e+03, - 1.037334114386369e+03, 1.037774852213254e+03, 1.038214499617550e+03, 1.038653062545309e+03, 1.039090546892934e+03, - 1.039526958507739e+03, 1.039962303188498e+03, 1.040396586685989e+03, 1.040829814703524e+03, 1.041261992897481e+03, - 1.041693126877825e+03, 1.042123222208615e+03, 1.042552284408513e+03, 1.042980318951285e+03, 1.043407331266288e+03, - 1.043833326738957e+03, 1.044258310711283e+03, 1.044682288482287e+03, 1.045105265308481e+03, 1.045527246404331e+03, - 1.045948236942705e+03, 1.046368242055325e+03, 1.046787266833205e+03, 1.047205316327085e+03, 1.047622395547859e+03, - 1.048038509467003e+03, 1.048453663016985e+03, 1.048867861091683e+03, 1.049281108546789e+03, 1.049693410200208e+03, - 1.050104770832460e+03, 1.050515195187061e+03, 1.050924687970918e+03, 1.051333253854703e+03, 1.051740897473232e+03, - 1.052147623425830e+03, 1.052553436276706e+03, 1.052958340555304e+03, 1.053362340756665e+03, 1.053765441341777e+03, - 1.054167646737925e+03, 1.054568961339028e+03, 1.054969389505982e+03, 1.055368935566991e+03, 1.055767603817902e+03, - 1.056165398522522e+03, 1.056562323912948e+03, 1.056958384189879e+03, 1.057353583522932e+03, 1.057747926050951e+03, - 1.058141415882310e+03, 1.058534057095220e+03, 1.058925853738022e+03, 1.059316809829484e+03, 1.059706929359093e+03, - 1.060096216287336e+03, 1.060484674545993e+03, 1.060872308038408e+03, 1.061259120639771e+03, 1.061645116197390e+03, - 1.062030298530959e+03, 1.062414671432829e+03, 1.062798238668267e+03, 1.063181003975719e+03, 1.063562971067066e+03, - 1.063944143627875e+03, 1.064324525317658e+03, 1.064704119770112e+03, 1.065082930593368e+03, 1.065460961370229e+03, - 1.065838215658418e+03, 1.066214696990800e+03, 1.066590408875633e+03, 1.066965354796783e+03, 1.067339538213961e+03, - 1.067712962562947e+03, 1.068085631255809e+03, 1.068457547681130e+03, 1.068828715204218e+03, 1.069199137167326e+03, - 1.069568816889863e+03, 1.069937757668603e+03, 1.070305962777895e+03, 1.070673435469866e+03, 1.071040178974625e+03, - 1.071406196500464e+03, 1.071771491234055e+03, 1.072136066340647e+03, 1.072499924964259e+03, 1.072863070227872e+03, - 1.073225505233618e+03, 1.073587233062969e+03, 1.073948256776919e+03, 1.074308579416169e+03, 1.074668204001309e+03, - 1.075027133532994e+03, 1.075385370992125e+03, 1.075742919340017e+03, 1.076099781518583e+03, 1.076455960450494e+03 - }, - { - 1.625973439225363e+00, 4.951228071217685e+00, 8.327631400462709e+00, 1.175707546510210e+01, 1.524156403483817e+01, - 1.878322134428581e+01, 2.238430168022795e+01, 2.604719992811030e+01, 2.977446318993707e+01, 3.356880360876121e+01, - 3.743311255090531e+01, 4.137047632063350e+01, 4.538419360829555e+01, 4.947779490398870e+01, 5.365506414529690e+01, - 5.792006291075690e+01, 6.227715752168302e+01, 6.673104947546332e+01, 7.128680970537111e+01, 7.594991724769784e+01, - 8.072630299946265e+01, 8.562239937274342e+01, 9.064519679876483e+01, 9.580230821181669e+01, 1.011020428556167e+02, - 1.065534910103649e+02, 1.121666215453041e+02, 1.179523945725535e+02, 1.239228919089327e+02, 1.300914685845693e+02, - 1.364729292343458e+02, 1.430837339276030e+02, 1.499422386751387e+02, 1.570689769230090e+02, 1.644869887301490e+02, - 1.722222052377329e+02, 1.803038958249792e+02, 1.887651841931468e+02, 1.976436360182238e+02, 2.069819127243081e+02, - 2.168284695761764e+02, 2.272382451105752e+02, 2.382732319290451e+02, 2.500027189386574e+02, 2.625028294481518e+02, - 2.758547289880024e+02, 2.901405587865544e+02, 3.054358907477387e+02, 3.217976012803613e+02, 3.392468794319454e+02, - 3.577484993166742e+02, 3.771887353505552e+02, 3.973558723007633e+02, 4.179323622840564e+02, 4.385149431936200e+02, - 4.586733875184417e+02, 4.780341134823276e+02, 4.963470660973189e+02, 5.134698715363832e+02, 5.293585620859758e+02, - 5.440408738074391e+02, 5.575876710092773e+02, 5.700912374600881e+02, 5.816509066060081e+02, 5.923643834410220e+02, - 6.023229799081640e+02, 6.116093933590104e+02, 6.202970608160458e+02, 6.284504244601005e+02, 6.361256661517834e+02, - 6.433716323809634e+02, 6.502307869397517e+02, 6.567401056480180e+02, 6.629318751151840e+02, 6.688343848707927e+02, - 6.744725165645788e+02, 6.798682405337863e+02, 6.850410322570893e+02, 6.900082211438844e+02, 6.947852829636615e+02, - 6.993860856825850e+02, 7.038230969001155e+02, 7.081075596368794e+02, 7.122496419809714e+02, 7.162585650633010e+02, - 7.201427129872501e+02, 7.239097276570254e+02, 7.275665909044651e+02, 7.311196958791775e+02, 7.345749093195884e+02, - 7.379376260439720e+02, 7.412128167763241e+02, 7.444050702403241e+02, 7.475186303065996e+02, 7.505574288571228e+02, - 7.535251149303625e+02, 7.564250806276467e+02, 7.592604841917704e+02, 7.620342706106155e+02, 7.647491900494916e+02, - 7.674078143743619e+02, 7.700125519928242e+02, 7.725656612097099e+02, 7.750692622684028e+02, 7.775253482270549e+02, - 7.799357947998642e+02, 7.823023692773869e+02, 7.846267386257271e+02, 7.869104768639445e+02, 7.891550717261435e+02, - 7.913619308557757e+02, 7.935323873491661e+02, 7.956677048866478e+02, 7.977690824230866e+02, 7.998376584923832e+02, - 8.018745151631148e+02, 8.038806816784489e+02, 8.058571378098459e+02, 8.078048169509658e+02, 8.097246089753834e+02, - 8.116173628792919e+02, 8.134838892282057e+02, 8.153249624247305e+02, 8.171413228128118e+02, 8.189336786323078e+02, - 8.207027078364252e+02, 8.224490597833361e+02, 8.241733568122372e+02, 8.258761957131269e+02, 8.275581490987634e+02, - 8.292197664741115e+02, 8.308615763099114e+02, 8.324840858751994e+02, 8.340877831235260e+02, 8.356731374822681e+02, - 8.372405997381867e+02, 8.387906062845365e+02, 8.403235756730642e+02, 8.418399118257541e+02, 8.433400042205504e+02, - 8.448242285707026e+02, 8.462929474649101e+02, 8.477465109709460e+02, 8.491852572051992e+02, 8.506095128704175e+02, - 8.520195937637382e+02, 8.534158052569452e+02, 8.547984427507345e+02, 8.561677921046673e+02, 8.575241300443167e+02, - 8.588677245470609e+02, 8.601988352078281e+02, 8.615177135860281e+02, 8.628246035348154e+02, 8.641197415243234e+02, - 8.654033568951722e+02, 8.666756722079590e+02, 8.679369034656168e+02, 8.691872603807584e+02, 8.704269466188398e+02, - 8.716561600297132e+02, 8.728750928682517e+02, 8.740839320046384e+02, 8.752828591248966e+02, 8.764720509221985e+02, - 8.776516792794530e+02, 8.788219114436370e+02, 8.799829101923203e+02, 8.811348339927904e+02, 8.822778371541739e+02, - 8.834120699729035e+02, 8.845376788719007e+02, 8.856548065337662e+02, 8.867635920283091e+02, 8.878641709346816e+02, - 8.889566754583967e+02, 8.900412345434870e+02, 8.911179739800366e+02, 8.921870165073099e+02, 8.932484819127050e+02, - 8.943024871267174e+02, 8.953491463141096e+02, 8.963885709614693e+02, 8.974208699613249e+02, 8.984461493492639e+02, - 8.994645137286557e+02, 9.004760643649764e+02, 9.014809005521709e+02, 9.024791193643673e+02, 9.034708157224215e+02, - 9.044560824579713e+02, 9.054350103751245e+02, 9.064076883098762e+02, 9.073742031873559e+02, 9.083346400769981e+02, - 9.092890822457344e+02, 9.102376112092740e+02, 9.111803067815764e+02, 9.121172471225706e+02, 9.130485087842126e+02, - 9.139741667549367e+02, 9.148942945025784e+02, 9.158089640158194e+02, 9.167182458442309e+02, 9.176222092493930e+02, - 9.185209217998924e+02, 9.194144500603396e+02, 9.203028591979720e+02, 9.211862131218529e+02, 9.220645745155603e+02, - 9.229380048688065e+02, 9.238065645080447e+02, 9.246703126260886e+02, 9.255293073107922e+02, 9.263836055728193e+02, - 9.272332633725400e+02, 9.280783356460865e+02, 9.289188763306017e+02, 9.297549383887037e+02, 9.305865738322035e+02, - 9.314138337451005e+02, 9.322367683058776e+02, 9.330554268091284e+02, 9.338698576865340e+02, 9.346801085272192e+02, - 9.354862260975052e+02, 9.362882563600789e+02, 9.370862444926086e+02, 9.378802349058121e+02, 9.386702712610099e+02, - 9.394563960479059e+02, 9.402386523390528e+02, 9.410170812272436e+02, 9.417917235418729e+02, 9.425626194434625e+02, - 9.433298084384401e+02, 9.440933293934993e+02, 9.448532205495702e+02, 9.456095195354053e+02, 9.463622633807910e+02, - 9.471114885294083e+02, 9.478572308513428e+02, 9.485995256552559e+02, 9.493384077002397e+02, 9.500739112073520e+02, - 9.508060698708459e+02, 9.515349168691116e+02, 9.522604848753233e+02, 9.529828060678212e+02, 9.537019121402145e+02, - 9.544178343112313e+02, 9.551306033343176e+02, 9.558402495069893e+02, 9.565468026799490e+02, 9.572502922659741e+02, - 9.579507472485835e+02, 9.586481961904872e+02, 9.593426672418266e+02, 9.600341881482135e+02, 9.607227862585714e+02, - 9.614084885327853e+02, 9.620913215491659e+02, 9.627713115117352e+02, 9.634484842573366e+02, 9.641228652625722e+02, - 9.647944796505797e+02, 9.654633521976484e+02, 9.661295073396752e+02, 9.667929691784741e+02, 9.674537614879357e+02, - 9.681119077200474e+02, 9.687674310107701e+02, 9.694203541857823e+02, 9.700706997660935e+02, 9.707184899735284e+02, - 9.713637467360879e+02, 9.720064916931893e+02, 9.726467462007874e+02, 9.732845313363824e+02, 9.739198679039184e+02, - 9.745527764385690e+02, 9.751832772114216e+02, 9.758113902340592e+02, 9.764371352630359e+02, 9.770605318042644e+02, - 9.776815991173020e+02, 9.783003562195454e+02, 9.789168218903404e+02, 9.795310146749956e+02, 9.801429528887186e+02, - 9.807526546204648e+02, 9.813601377367041e+02, 9.819654198851151e+02, 9.825685184981934e+02, 9.831694507967932e+02, - 9.837682337935880e+02, 9.843648842964659e+02, 9.849594189118529e+02, 9.855518540479696e+02, 9.861422059180178e+02, - 9.867304905433083e+02, 9.873167237563214e+02, 9.879009212037065e+02, 9.884830983492253e+02, 9.890632704766301e+02, - 9.896414526924921e+02, 9.902176599289677e+02, 9.907919069465133e+02, 9.913642083365481e+02, 9.919345785240610e+02, - 9.925030317701737e+02, 9.930695821746451e+02, 9.936342436783344e+02, 9.941970300656149e+02, 9.947579549667414e+02, - 9.953170318601717e+02, 9.958742740748480e+02, 9.964296947924270e+02, 9.969833070494781e+02, 9.975351237396335e+02, - 9.980851576157005e+02, 9.986334212917346e+02, 9.991799272450734e+02, 9.997246878183328e+02, 1.000267715221371e+03, - 1.000809021533205e+03, 1.001348618703910e+03, 1.001886518556466e+03, 1.002422732788582e+03, 1.002957272974485e+03, - 1.003490150566676e+03, 1.004021376897653e+03, 1.004550963181610e+03, 1.005078920516094e+03, 1.005605259883647e+03, - 1.006129992153407e+03, 1.006653128082684e+03, 1.007174678318518e+03, 1.007694653399193e+03, 1.008213063755738e+03, - 1.008729919713396e+03, 1.009245231493072e+03, 1.009759009212751e+03, 1.010271262888891e+03, 1.010782002437803e+03, - 1.011291237676992e+03, 1.011798978326490e+03, 1.012305234010151e+03, 1.012810014256944e+03, 1.013313328502201e+03, - 1.013815186088866e+03, 1.014315596268709e+03, 1.014814568203524e+03, 1.015312110966309e+03, 1.015808233542426e+03, - 1.016302944830737e+03, 1.016796253644730e+03, 1.017288168713620e+03, 1.017778698683432e+03, 1.018267852118076e+03, - 1.018755637500387e+03, 1.019242063233167e+03, 1.019727137640198e+03, 1.020210868967241e+03, 1.020693265383029e+03, - 1.021174334980222e+03, 1.021654085776376e+03, 1.022132525714870e+03, 1.022609662665838e+03, 1.023085504427073e+03, - 1.023560058724924e+03, 1.024033333215179e+03, 1.024505335483930e+03, 1.024976073048429e+03, 1.025445553357930e+03, - 1.025913783794513e+03, 1.026380771673906e+03, 1.026846524246280e+03, 1.027311048697047e+03, 1.027774352147636e+03, - 1.028236441656258e+03, 1.028697324218664e+03, 1.029157006768890e+03, 1.029615496179987e+03, 1.030072799264745e+03, - 1.030528922776404e+03, 1.030983873409352e+03, 1.031437657799822e+03, 1.031890282526565e+03, 1.032341754111523e+03, - 1.032792079020491e+03, 1.033241263663766e+03, 1.033689314396787e+03, 1.034136237520769e+03, 1.034582039283325e+03, - 1.035026725879079e+03, 1.035470303450273e+03, 1.035912778087360e+03, 1.036354155829595e+03, 1.036794442665612e+03, - 1.037233644533996e+03, 1.037671767323848e+03, 1.038108816875333e+03, 1.038544798980236e+03, 1.038979719382496e+03, - 1.039413583778740e+03, 1.039846397818808e+03, 1.040278167106266e+03, 1.040708897198922e+03, 1.041138593609324e+03, - 1.041567261805260e+03, 1.041994907210242e+03, 1.042421535203998e+03, 1.042847151122932e+03, 1.043271760260611e+03, - 1.043695367868216e+03, 1.044117979155001e+03, 1.044539599288748e+03, 1.044960233396206e+03, 1.045379886563531e+03, - 1.045798563836721e+03, 1.046216270222039e+03, 1.046633010686437e+03, 1.047048790157968e+03, 1.047463613526200e+03, - 1.047877485642618e+03, 1.048290411321022e+03, 1.048702395337924e+03, 1.049113442432935e+03, 1.049523557309149e+03, - 1.049932744633518e+03, 1.050341009037234e+03, 1.050748355116088e+03, 1.051154787430841e+03, 1.051560310507581e+03, - 1.051964928838076e+03, 1.052368646880127e+03, 1.052771469057913e+03, 1.053173399762330e+03, 1.053574443351330e+03, - 1.053974604150253e+03, 1.054373886452156e+03, 1.054772294518135e+03, 1.055169832577648e+03, 1.055566504828829e+03, - 1.055962315438800e+03, 1.056357268543982e+03, 1.056751368250395e+03, 1.057144618633962e+03, 1.057537023740805e+03, - 1.057928587587538e+03, 1.058319314161555e+03, 1.058709207421317e+03, 1.059098271296637e+03, 1.059486509688957e+03, - 1.059873926471618e+03, 1.060260525490143e+03, 1.060646310562499e+03, 1.061031285479362e+03, 1.061415454004383e+03, - 1.061798819874446e+03, 1.062181386799921e+03, 1.062563158464921e+03, 1.062944138527553e+03, 1.063324330620160e+03, - 1.063703738349567e+03, 1.064082365297324e+03, 1.064460215019945e+03, 1.064837291049138e+03, 1.065213596892044e+03, - 1.065589136031462e+03, 1.065963911926080e+03, 1.066337928010696e+03, 1.066711187696445e+03, 1.067083694371013e+03, - 1.067455451398855e+03, 1.067826462121415e+03, 1.068196729857326e+03, 1.068566257902631e+03, 1.068935049530986e+03, - 1.069303107993862e+03, 1.069670436520749e+03, 1.070037038319355e+03, 1.070402916575809e+03, 1.070768074454846e+03, - 1.071132515100011e+03, 1.071496241633841e+03, 1.071859257158060e+03, 1.072221564753763e+03, 1.072583167481601e+03, - 1.072944068381963e+03, 1.073304270475156e+03, 1.073663776761586e+03, 1.074022590221931e+03, 1.074380713817318e+03 - }, - { - 1.620848936753066e+00, 4.935228583550389e+00, 8.300030707076402e+00, 1.171709392707541e+01, 1.518836374913062e+01, - 1.871590076208974e+01, 2.230188961936628e+01, 2.594864889886510e+01, 2.965864194121459e+01, 3.343448878686937e+01, - 3.727897934592865e+01, 4.119508795493709e+01, 4.518598949740952e+01, 4.925507729121367e+01, 5.340598297683524e+01, - 5.764259867678165e+01, 6.196910173898235e+01, 6.638998242723474e+01, 7.091007498100971e+01, 7.553459253703589e+01, - 8.026916648816157e+01, 8.511989095353523e+01, 9.009337315132396e+01, 9.519679060419058e+01, 1.004379562731712e+02, - 1.058253929116471e+02, 1.113684181632188e+02, 1.170772422001330e+02, 1.229630800222116e+02, 1.290382808967398e+02, - 1.353164778542149e+02, 1.418127606064600e+02, 1.485438757722105e+02, 1.555284586294496e+02, 1.627873013628229e+02, - 1.703436623161261e+02, 1.782236208846160e+02, 1.864564809400714e+02, 1.950752224500993e+02, 2.041169942389969e+02, - 2.136236282285973e+02, 2.236421327521966e+02, 2.342250828472979e+02, 2.454307585800896e+02, 2.573227751583028e+02, - 2.699687894170550e+02, 2.834376631440833e+02, 2.977942765144460e+02, 3.130911777265707e+02, 3.293566697348208e+02, - 3.465798633427407e+02, 3.646943083392327e+02, 3.835626829742848e+02, 4.029666254213375e+02, 4.226094630999311e+02, - 4.421416642360157e+02, 4.612104314307370e+02, 4.795202806976055e+02, 4.968737496209401e+02, 5.131583877240438e+02, - 5.283397590990214e+02, 5.424401761586306e+02, 5.555169332327893e+02, 5.676456074053872e+02, 5.789087865094215e+02, - 5.893890371863562e+02, 5.991648173894827e+02, 6.083083432875633e+02, 6.168847211842633e+02, 6.249518663954692e+02, - 6.325608772058000e+02, 6.397566392219376e+02, 6.465785157324087e+02, 6.530610378874974e+02, 6.592345482984250e+02, - 6.651257771128552e+02, 6.707583448087533e+02, 6.761531942769012e+02, 6.813289587877930e+02, 6.863022739184385e+02, - 6.910880415878354e+02, 6.956996537196150e+02, 7.001491821303083e+02, 7.044475402618115e+02, 7.086046214540452e+02, - 7.126294176397256e+02, 7.165301216517752e+02, 7.203142157604775e+02, 7.239885485886716e+02, 7.275594021731486e+02, - 7.310325506332634e+02, 7.344133116596848e+02, 7.377065918353636e+02, 7.409169266376642e+02, 7.440485158372975e+02, - 7.471052549003243e+02, 7.500907629090867e+02, 7.530084074428576e+02, 7.558613267962634e+02, 7.586524498608362e+02, - 7.613845139505887e+02, 7.640600808148095e+02, 7.666815510491718e+02, 7.692511770888723e+02, 7.717710749439772e+02, - 7.742432348170324e+02, 7.766695307358410e+02, 7.790517292461931e+02, 7.813914974186607e+02, 7.836904100366434e+02, - 7.859499562038882e+02, 7.881715453694252e+02, 7.903565128387630e+02, 7.925061248223080e+02, 7.946215830662848e+02, - 7.967040291064206e+02, 7.987545481802582e+02, 8.007741728301245e+02, 8.027638862253451e+02, 8.047246252293208e+02, - 8.066572832344082e+02, 8.085627127852100e+02, 8.104417280087951e+02, 8.122951068685155e+02, 8.141235932564598e+02, - 8.159278989380982e+02, 8.177087053613967e+02, 8.194666653414931e+02, 8.212024046309981e+02, 8.229165231459532e+02, - 8.246095973206293e+02, 8.262821798663839e+02, 8.279348020428189e+02, 8.295679744801349e+02, 8.311821882230347e+02, - 8.327779147517457e+02, 8.343556100746659e+02, 8.359157116034420e+02, 8.374586412556158e+02, 8.389848057206984e+02, - 8.404945971819797e+02, 8.419883939964108e+02, 8.434665613354201e+02, 8.449294517893188e+02, 8.463774059377192e+02, - 8.478107528882337e+02, 8.492298107855171e+02, 8.506348872925889e+02, 8.520262800462037e+02, 8.534042770879330e+02, - 8.547691572724640e+02, 8.561211906545612e+02, 8.574606388559835e+02, 8.587877554245182e+02, 8.601027861195010e+02, - 8.614059692949570e+02, 8.626975361501617e+02, 8.639777110254048e+02, 8.652467116716127e+02, 8.665047495069116e+02, - 8.677520298608734e+02, 8.689887522071641e+02, 8.702151103852151e+02, 8.714312928115514e+02, 8.726374826813426e+02, - 8.738338581606982e+02, 8.750205925702270e+02, 8.761978545603164e+02, 8.773658082785840e+02, 8.785246135299009e+02, - 8.796744259293894e+02, 8.808153970487551e+02, 8.819476745562929e+02, 8.830714023508942e+02, 8.841867206903669e+02, - 8.852937663143308e+02, 8.863926725619925e+02, 8.874835694850228e+02, 8.885665839557942e+02, 8.896418397712009e+02, - 8.907094577522724e+02, 8.917695558397869e+02, 8.928222491860720e+02, 8.938676502431692e+02, 8.949058685161777e+02, - 8.959370119431150e+02, 8.969611850644552e+02, 8.979784903458731e+02, 8.989890279447760e+02, 8.999928957799535e+02, - 9.009901895986162e+02, 9.019810030409359e+02, 9.029654277021991e+02, 9.039435531926756e+02, 9.049154671953114e+02, - 9.058812555213252e+02, 9.068410021638131e+02, 9.077947893494375e+02, 9.087426975882862e+02, 9.096848057219744e+02, - 9.106211909700705e+02, 9.115519289749066e+02, 9.124770938448454e+02, 9.133967581960686e+02, 9.143109931929419e+02, - 9.152198685870198e+02, 9.161234527547359e+02, 9.170218128660439e+02, 9.179150143991395e+02, 9.188031219432462e+02, - 9.196861987268978e+02, 9.205643067741087e+02, 9.214375069352359e+02, 9.223058589168551e+02, 9.231694213106803e+02, - 9.240282516215780e+02, 9.248824062946912e+02, 9.257319407417220e+02, 9.265769093663979e+02, 9.274173655891514e+02, - 9.282533618710429e+02, 9.290849497369579e+02, 9.299121797980986e+02, 9.307351017737985e+02, 9.315537645126901e+02, - 9.323682160132339e+02, 9.331785034436512e+02, 9.339846731612633e+02, 9.347867707312711e+02, 9.355848409449856e+02, - 9.363789274057426e+02, 9.371690742543248e+02, 9.379553236512069e+02, 9.387377174642152e+02, 9.395162968709109e+02, - 9.402911023739275e+02, 9.410621738158778e+02, 9.418295503938481e+02, 9.425932706734911e+02, 9.433533726027382e+02, - 9.441098935251321e+02, 9.448628701928025e+02, 9.456123387790880e+02, 9.463583348908271e+02, 9.471008935803110e+02, - 9.478400493569292e+02, 9.485758361985032e+02, 9.493082875623265e+02, 9.500374363959106e+02, 9.507633151474583e+02, - 9.514859557760666e+02, 9.522053897616616e+02, 9.529216481146882e+02, 9.536347613855485e+02, 9.543447596738000e+02, - 9.550516726371314e+02, 9.557555295001027e+02, 9.564563590626752e+02, 9.571541897085316e+02, 9.578490494131858e+02, - 9.585409657518949e+02, 9.592299659073846e+02, 9.599160766773791e+02, 9.605993244819567e+02, 9.612797353707208e+02, - 9.619573350298108e+02, 9.626321487887308e+02, 9.633042016270340e+02, 9.639735181808379e+02, 9.646401227491887e+02, - 9.653040393002834e+02, 9.659652914775413e+02, 9.666239026055359e+02, 9.672798956957946e+02, 9.679332934524627e+02, - 9.685841182778382e+02, 9.692323922777837e+02, 9.698781372670126e+02, 9.705213747742600e+02, 9.711621260473397e+02, - 9.718004120580810e+02, 9.724362535071650e+02, 9.730696708288498e+02, 9.737006841955937e+02, 9.743293135225758e+02, - 9.749555784721197e+02, 9.755794984580218e+02, 9.762010926497876e+02, 9.768203799767712e+02, 9.774373791322359e+02, - 9.780521085773194e+02, 9.786645865449219e+02, 9.792748310435097e+02, 9.798828598608349e+02, 9.804886905675891e+02, - 9.810923405209656e+02, 9.816938268681623e+02, 9.822931665498029e+02, 9.828903763032919e+02, 9.834854726660992e+02, - 9.840784719789808e+02, 9.846693903891330e+02, 9.852582438532791e+02, 9.858450481407000e+02, 9.864298188362020e+02, - 9.870125713430239e+02, 9.875933208856877e+02, 9.881720825127951e+02, 9.887488710997621e+02, 9.893237013515100e+02, - 9.898965878050967e+02, 9.904675448322986e+02, 9.910365866421428e+02, 9.916037272833898e+02, 9.921689806469722e+02, - 9.927323604683797e+02, 9.932938803300071e+02, 9.938535536634487e+02, 9.944113937517601e+02, 9.949674137316645e+02, - 9.955216265957309e+02, 9.960740451945018e+02, 9.966246822385856e+02, 9.971735503007096e+02, 9.977206618177354e+02, - 9.982660290926367e+02, 9.988096642964397e+02, 9.993515794701325e+02, 9.998917865265337e+02, 1.000430297252131e+03, - 1.000967123308886e+03, 1.001502276236009e+03, 1.002035767451696e+03, 1.002567608254837e+03, 1.003097809826700e+03, - 1.003626383232577e+03, 1.004153339423405e+03, 1.004678689237357e+03, 1.005202443401407e+03, 1.005724612532867e+03, - 1.006245207140895e+03, 1.006764237627980e+03, 1.007281714291401e+03, 1.007797647324659e+03, 1.008312046818886e+03, - 1.008824922764227e+03, 1.009336285051207e+03, 1.009846143472061e+03, 1.010354507722058e+03, 1.010861387400784e+03, - 1.011366792013422e+03, 1.011870730972000e+03, 1.012373213596618e+03, 1.012874249116658e+03, 1.013373846671975e+03, - 1.013872015314063e+03, 1.014368764007209e+03, 1.014864101629621e+03, 1.015358036974542e+03, 1.015850578751346e+03, - 1.016341735586613e+03, 1.016831516025192e+03, 1.017319928531238e+03, 1.017806981489242e+03, 1.018292683205041e+03, - 1.018777041906811e+03, 1.019260065746040e+03, 1.019741762798496e+03, 1.020222141065173e+03, 1.020701208473218e+03, - 1.021178972876856e+03, 1.021655442058287e+03, 1.022130623728579e+03, 1.022604525528540e+03, 1.023077155029582e+03, - 1.023548519734571e+03, 1.024018627078656e+03, 1.024487484430099e+03, 1.024955099091080e+03, 1.025421478298498e+03, - 1.025886629224754e+03, 1.026350558978525e+03, 1.026813274605529e+03, 1.027274783089270e+03, 1.027735091351785e+03, - 1.028194206254364e+03, 1.028652134598274e+03, 1.029108883125460e+03, 1.029564458519248e+03, 1.030018867405024e+03, - 1.030472116350916e+03, 1.030924211868456e+03, 1.031375160413238e+03, 1.031824968385564e+03, 1.032273642131082e+03, - 1.032721187941415e+03, 1.033167612054775e+03, 1.033612920656582e+03, 1.034057119880056e+03, 1.034500215806816e+03, - 1.034942214467461e+03, 1.035383121842148e+03, 1.035822943861158e+03, 1.036261686405458e+03, 1.036699355307250e+03, - 1.037135956350518e+03, 1.037571495271561e+03, 1.038005977759525e+03, 1.038439409456925e+03, 1.038871795960154e+03, - 1.039303142819998e+03, 1.039733455542129e+03, 1.040162739587604e+03, 1.040591000373348e+03, 1.041018243272633e+03, - 1.041444473615556e+03, 1.041869696689502e+03, 1.042293917739604e+03, 1.042717141969199e+03, 1.043139374540277e+03, - 1.043560620573922e+03, 1.043980885150745e+03, 1.044400173311321e+03, 1.044818490056606e+03, 1.045235840348364e+03, - 1.045652229109571e+03, 1.046067661224832e+03, 1.046482141540777e+03, 1.046895674866461e+03, 1.047308265973754e+03, - 1.047719919597730e+03, 1.048130640437049e+03, 1.048540433154330e+03, 1.048949302376528e+03, 1.049357252695296e+03, - 1.049764288667352e+03, 1.050170414814831e+03, 1.050575635625646e+03, 1.050979955553827e+03, 1.051383379019873e+03, - 1.051785910411087e+03, 1.052187554081913e+03, 1.052588314354267e+03, 1.052988195517863e+03, 1.053387201830538e+03, - 1.053785337518567e+03, 1.054182606776982e+03, 1.054579013769878e+03, 1.054974562630723e+03, 1.055369257462663e+03, - 1.055763102338814e+03, 1.056156101302566e+03, 1.056548258367869e+03, 1.056939577519524e+03, 1.057330062713466e+03, - 1.057719717877048e+03, 1.058108546909316e+03, 1.058496553681284e+03, 1.058883742036206e+03, 1.059270115789844e+03, - 1.059655678730732e+03, 1.060040434620434e+03, 1.060424387193809e+03, 1.060807540159262e+03, 1.061189897198995e+03, - 1.061571461969256e+03, 1.061952238100592e+03, 1.062332229198080e+03, 1.062711438841577e+03, 1.063089870585955e+03, - 1.063467527961331e+03, 1.063844414473308e+03, 1.064220533603192e+03, 1.064595888808230e+03, 1.064970483521826e+03, - 1.065344321153765e+03, 1.065717405090431e+03, 1.066089738695025e+03, 1.066461325307774e+03, 1.066832168246146e+03, - 1.067202270805059e+03, 1.067571636257081e+03, 1.067940267852643e+03, 1.068308168820231e+03, 1.068675342366595e+03, - 1.069041791676938e+03, 1.069407519915112e+03, 1.069772530223816e+03, 1.070136825724778e+03, 1.070500409518949e+03, - 1.070863284686689e+03, 1.071225454287946e+03, 1.071586921362443e+03, 1.071947688929855e+03, 1.072307759989989e+03 - }, - { - 1.615757043151384e+00, 4.919336093991256e+00, 8.272623888211152e+00, 1.167740721783438e+01, 1.513557512945477e+01, - 1.864912661805476e+01, 2.222017904013851e+01, 2.585097733138200e+01, 2.954390411725166e+01, 3.330149082405237e+01, - 3.712642990881345e+01, 4.102158834409587e+01, 4.499002251296600e+01, 4.903499469178811e+01, 5.315999132456096e+01, - 5.736874332292112e+01, 6.166524866144297e+01, 6.605379757941017e+01, 7.053900074892233e+01, 7.512582082633573e+01, - 7.981960787115480e+01, 8.462613919539291e+01, 8.955166429912856e+01, 9.460295565705862e+01, 9.978736624851852e+01, - 1.051128948731146e+02, 1.105882604681423e+02, 1.162229868452826e+02, 1.220274994936320e+02, 1.280132363590890e+02, - 1.341927747835987e+02, 1.405799771024913e+02, 1.471901576941339e+02, 1.540402744077797e+02, 1.611491477415076e+02, - 1.685377105018571e+02, 1.762292905373475e+02, 1.842499274060468e+02, 1.926287209665018e+02, 2.013982043766385e+02, - 2.105947242359111e+02, 2.202587938352933e+02, 2.304353574074489e+02, 2.411738576822195e+02, 2.525279280967997e+02, - 2.645544278756954e+02, 2.773114057107167e+02, 2.908544474779291e+02, 3.052308229801761e+02, 3.204710449699036e+02, - 3.365780113374675e+02, 3.535147143693846e+02, 3.711922320247274e+02, 3.894603709695303e+02, 4.081046788308992e+02, - 4.268554863558474e+02, 4.454136997589636e+02, 4.634904607963329e+02, 4.808505267267443e+02, 4.973362818450526e+02, - 5.128582959566850e+02, 5.273893122278919e+02, 5.409474164303459e+02, 5.535793060935699e+02, 5.653473069800194e+02, - 5.763204430042323e+02, 5.865687140943421e+02, 5.961596231450080e+02, 6.051562163459928e+02, 6.136161309523297e+02, - 6.215913027134243e+02, 6.291280870241724e+02, 6.362676188998807e+02, 6.430462908610360e+02, 6.494962694997337e+02, - 6.556460025112683e+02, 6.615206897470903e+02, 6.671427061961165e+02, 6.725319736450790e+02, 6.777062827972877e+02, - 6.826815701681464e+02, 6.874721550805364e+02, 6.920909422020129e+02, 6.965495947168915e+02, 7.008586826670111e+02, - 7.050278103750109e+02, 7.090657262643466e+02, 7.129804178496217e+02, 7.167791942032893e+02, 7.204687578106142e+02, - 7.240552673979945e+02, 7.275443930512389e+02, 7.309413647209471e+02, 7.342510150330475e+02, 7.374778171761586e+02, - 7.406259185175164e+02, 7.436991705005121e+02, 7.467011552952616e+02, 7.496352096057559e+02, 7.525044459804451e+02, - 7.553117719253901e+02, 7.580599070788847e+02, 7.607513986722605e+02, 7.633886354825434e+02, 7.659738603861072e+02, - 7.685091818188504e+02, 7.709965840619284e+02, 7.734379366294296e+02, 7.758350027933806e+02, 7.781894473463234e+02, - 7.805028436801531e+02, 7.827766802508248e+02, 7.850123664905783e+02, 7.872112382224024e+02, 7.893745626253748e+02, - 7.915035427941468e+02, 7.935993219311690e+02, 7.956629872061058e+02, 7.976955733132280e+02, 7.996980657543686e+02, - 8.016714038721561e+02, 8.036164836557334e+02, 8.055341603389129e+02, 8.074252508087429e+02, 8.092905358406890e+02, - 8.111307621750468e+02, 8.129466444478094e+02, 8.147388669879607e+02, 8.165080854805358e+02, 8.182549283658212e+02, - 8.199799990897835e+02, 8.216838761830353e+02, 8.233671154662934e+02, 8.250302509790408e+02, 8.266737960907303e+02, - 8.282982436239139e+02, 8.299040698739161e+02, 8.314917317021913e+02, 8.330616695958535e+02, 8.346143080013690e+02, - 8.361500560904877e+02, 8.376693084814068e+02, 8.391724459182391e+02, 8.406598359116263e+02, 8.421318333431141e+02, - 8.435887810357018e+02, 8.450310102927923e+02, 8.464588414076087e+02, 8.478725841449746e+02, 8.492725381972357e+02, - 8.506589936159464e+02, 8.520322312208459e+02, 8.533925229875272e+02, 8.547401324250848e+02, 8.560753148840023e+02, - 8.573983179506893e+02, 8.587093817186270e+02, 8.600087390986270e+02, 8.612966161031444e+02, 8.625732321167511e+02, - 8.638388001535483e+02, 8.650935271022676e+02, 8.663376139597582e+02, 8.675712560535009e+02, 8.687946432537692e+02, - 8.700079601759970e+02, 8.712113863738873e+02, 8.724050965237706e+02, 8.735892606006687e+02, 8.747640440465165e+02, - 8.759296079309464e+02, 8.770861091050239e+02, 8.782337003483110e+02, 8.793725305095842e+02, 8.805027446415353e+02, - 8.816244841297727e+02, 8.827378868163868e+02, 8.838430871183655e+02, 8.849402161411131e+02, 8.860294017873001e+02, - 8.871107688612921e+02, 8.881844391693440e+02, 8.892505316157917e+02, 8.903091622954025e+02, 8.913604445820937e+02, - 8.924044888683477e+02, 8.934414040026518e+02, 8.944712953750238e+02, 8.954942662958812e+02, 8.965104177493051e+02, - 8.975198484631609e+02, 8.985226549765766e+02, 8.995189317049256e+02, 9.005087710024010e+02, 9.014922632222997e+02, - 9.024694967751132e+02, 9.034405581845183e+02, 9.044055321413558e+02, 9.053645015556949e+02, 9.063175476070439e+02, - 9.072647497928065e+02, 9.082061859750435e+02, 9.091419324256115e+02, 9.100720638697564e+02, 9.109966535282041e+02, - 9.119157731578365e+02, 9.128294930909843e+02, 9.137378822734094e+02, 9.146410083010202e+02, 9.155389374553804e+02, - 9.164317348924103e+02, 9.173194640673752e+02, 9.182021876658870e+02, 9.190799670445051e+02, 9.199528624063502e+02, - 9.208209328302552e+02, 9.216842362989962e+02, 9.225428297266387e+02, 9.233967689850296e+02, 9.242461089294657e+02, - 9.250909034235755e+02, 9.259312053634353e+02, 9.267670667009550e+02, 9.275985384665518e+02, 9.284256707911489e+02, - 9.292485129275088e+02, 9.300671132709406e+02, 9.308815193793907e+02, 9.316917779929463e+02, 9.324979350527693e+02, - 9.333000352951548e+02, 9.340981239479325e+02, 9.348922442575717e+02, 9.356824391481642e+02, 9.364687508316812e+02, - 9.372512208238793e+02, 9.380298899597701e+02, 9.388047984086496e+02, 9.395759856887180e+02, 9.403434906812947e+02, - 9.411073516446444e+02, 9.418676062274233e+02, 9.426242914817694e+02, 9.433774438760315e+02, 9.441270993071626e+02, - 9.448732931127799e+02, 9.456160600829098e+02, 9.463554344714177e+02, 9.470914500071434e+02, 9.478241399047442e+02, - 9.485535368752546e+02, 9.492796731363785e+02, 9.500025804225138e+02, 9.507222899945215e+02, 9.514388326492491e+02, - 9.521522387288111e+02, 9.528625381296363e+02, 9.535697603112930e+02, 9.542739343050878e+02, 9.549750887224592e+02, - 9.556732517631586e+02, 9.563684512232367e+02, 9.570607145028262e+02, 9.577500686137488e+02, 9.584365401869275e+02, - 9.591201554796268e+02, 9.598009403825176e+02, 9.604789204265761e+02, 9.611541207898167e+02, 9.618265663038724e+02, - 9.624962814604114e+02, 9.631632904174154e+02, 9.638276170053026e+02, 9.644892847329154e+02, 9.651483167933701e+02, - 9.658047360697682e+02, 9.664585651407826e+02, 9.671098262861188e+02, 9.677585414918435e+02, 9.684047324556068e+02, - 9.690484205917356e+02, 9.696896270362240e+02, 9.703283726516057e+02, 9.709646780317222e+02, 9.715985635063892e+02, - 9.722300491459520e+02, 9.728591547657562e+02, 9.734858999305076e+02, 9.741103039585470e+02, 9.747323859260308e+02, - 9.753521646710202e+02, 9.759696587974895e+02, 9.765848866792413e+02, 9.771978664637485e+02, 9.778086160759062e+02, - 9.784171532217139e+02, 9.790234953918762e+02, 9.796276598653282e+02, 9.802296637126941e+02, 9.808295237996678e+02, - 9.814272567903288e+02, 9.820228791503901e+02, 9.826164071503781e+02, 9.832078568687509e+02, 9.837972441949536e+02, - 9.843845848324112e+02, 9.849698943014623e+02, 9.855531879422352e+02, 9.861344809174681e+02, 9.867137882152697e+02, - 9.872911246518307e+02, 9.878665048740820e+02, 9.884399433622956e+02, 9.890114544326415e+02, 9.895810522396927e+02, - 9.901487507788828e+02, 9.907145638889131e+02, 9.912785052541219e+02, 9.918405884068001e+02, 9.924008267294671e+02, - 9.929592334571056e+02, 9.935158216793498e+02, 9.940706043426380e+02, 9.946235942523199e+02, 9.951748040747298e+02, - 9.957242463392175e+02, 9.962719334401447e+02, 9.968178776388423e+02, 9.973620910655358e+02, 9.979045857212309e+02, - 9.984453734795683e+02, 9.989844660886428e+02, 9.995218751727945e+02, 1.000057612234360e+03, 1.000591688655399e+03, - 1.001124115699390e+03, 1.001654904512887e+03, 1.002184066127163e+03, 1.002711611459808e+03, 1.003237551316311e+03, - 1.003761896391609e+03, 1.004284657271607e+03, 1.004805844434680e+03, 1.005325468253138e+03, 1.005843538994676e+03, - 1.006360066823792e+03, 1.006875061803187e+03, 1.007388533895130e+03, 1.007900492962818e+03, 1.008410948771694e+03, - 1.008919910990753e+03, 1.009427389193830e+03, 1.009933392860853e+03, 1.010437931379089e+03, 1.010941014044359e+03, - 1.011442650062240e+03, 1.011942848549244e+03, 1.012441618533976e+03, 1.012938968958280e+03, 1.013434908678353e+03, - 1.013929446465857e+03, 1.014422591009003e+03, 1.014914350913618e+03, 1.015404734704197e+03, 1.015893750824939e+03, - 1.016381407640763e+03, 1.016867713438312e+03, 1.017352676426939e+03, 1.017836304739675e+03, 1.018318606434184e+03, - 1.018799589493705e+03, 1.019279261827979e+03, 1.019757631274155e+03, 1.020234705597686e+03, 1.020710492493221e+03, - 1.021184999585462e+03, 1.021658234430027e+03, 1.022130204514289e+03, 1.022600917258210e+03, 1.023070380015152e+03, - 1.023538600072686e+03, 1.024005584653381e+03, 1.024471340915585e+03, 1.024935875954197e+03, 1.025399196801419e+03, - 1.025861310427502e+03, 1.026322223741483e+03, 1.026781943591909e+03, 1.027240476767545e+03, 1.027697829998079e+03, - 1.028154009954817e+03, 1.028609023251358e+03, 1.029062876444269e+03, 1.029515576033750e+03, 1.029967128464278e+03, - 1.030417540125257e+03, 1.030866817351651e+03, 1.031314966424600e+03, 1.031761993572045e+03, 1.032207904969331e+03, - 1.032652706739800e+03, 1.033096404955387e+03, 1.033539005637198e+03, 1.033980514756081e+03, 1.034420938233191e+03, - 1.034860281940547e+03, 1.035298551701583e+03, 1.035735753291683e+03, 1.036171892438719e+03, 1.036606974823578e+03, - 1.037041006080674e+03, 1.037473991798465e+03, 1.037905937519957e+03, 1.038336848743198e+03, 1.038766730921772e+03, - 1.039195589465281e+03, 1.039623429739822e+03, 1.040050257068458e+03, 1.040476076731684e+03, 1.040900893967881e+03, - 1.041324713973771e+03, 1.041747541904863e+03, 1.042169382875889e+03, 1.042590241961242e+03, 1.043010124195401e+03, - 1.043429034573356e+03, 1.043846978051022e+03, 1.044263959545652e+03, 1.044679983936240e+03, 1.045095056063926e+03, - 1.045509180732387e+03, 1.045922362708229e+03, 1.046334606721369e+03, 1.046745917465421e+03, 1.047156299598064e+03, - 1.047565757741415e+03, 1.047974296482393e+03, 1.048381920373083e+03, 1.048788633931089e+03, 1.049194441639882e+03, - 1.049599347949156e+03, 1.050003357275160e+03, 1.050406474001043e+03, 1.050808702477185e+03, 1.051210047021528e+03, - 1.051610511919898e+03, 1.052010101426330e+03, 1.052408819763383e+03, 1.052806671122454e+03, 1.053203659664088e+03, - 1.053599789518283e+03, 1.053995064784789e+03, 1.054389489533409e+03, 1.054783067804292e+03, 1.055175803608227e+03, - 1.055567700926922e+03, 1.055958763713297e+03, 1.056348995891755e+03, 1.056738401358466e+03, 1.057126983981635e+03, - 1.057514747601778e+03, 1.057901696031980e+03, 1.058287833058165e+03, 1.058673162439355e+03, 1.059057687907924e+03, - 1.059441413169859e+03, 1.059824341905001e+03, 1.060206477767301e+03, 1.060587824385061e+03, 1.060968385361180e+03, - 1.061348164273388e+03, 1.061727164674485e+03, 1.062105390092576e+03, 1.062482844031298e+03, 1.062859529970055e+03, - 1.063235451364234e+03, 1.063610611645436e+03, 1.063985014221692e+03, 1.064358662477681e+03, 1.064731559774949e+03, - 1.065103709452115e+03, 1.065475114825086e+03, 1.065845779187264e+03, 1.066215705809750e+03, 1.066584897941550e+03, - 1.066953358809772e+03, 1.067321091619826e+03, 1.067688099555620e+03, 1.068054385779757e+03, 1.068419953433720e+03, - 1.068784805638070e+03, 1.069148945492624e+03, 1.069512376076649e+03, 1.069875100449041e+03, 1.070237121648506e+03 - }, - { - 1.610697442577510e+00, 4.903549478658079e+00, 8.245408747844817e+00, 1.163801175254094e+01, 1.508319282284877e+01, - 1.858289133709568e+01, 2.213915960215248e+01, 2.575417147014038e+01, 2.943023176987094e+01, 3.316978664874592e+01, - 3.697543492974637e+01, 4.084994060342820e+01, 4.479624659113986e+01, 4.881748993465342e+01, 5.291701858935200e+01, - 5.709841002354852e+01, 6.136549185601923e+01, 6.572236479811461e+01, 7.017342820667466e+01, 7.472340860036557e+01, - 7.937739154605902e+01, 8.414085738472809e+01, 8.901972133942827e+01, 9.402037863272018e+01, 9.914975533918313e+01, - 1.044153658115471e+02, 1.098253776484418e+02, 1.153886853179847e+02, 1.211149937144604e+02, 1.270149131019182e+02, - 1.331000670885156e+02, 1.393832154457452e+02, 1.458783937771211e+02, 1.526010720120452e+02, 1.595683339618665e+02, - 1.667990794519584e+02, 1.743142502716199e+02, 1.821370795578401e+02, 1.902933617420495e+02, 1.988117357042016e+02, - 2.077239662126373e+02, 2.170651962412189e+02, 2.268741226192148e+02, 2.371930158451470e+02, 2.480674570761040e+02, - 2.595455972336568e+02, 2.716766560773950e+02, 2.845082896605491e+02, 2.980824105635198e+02, 3.124291347173287e+02, - 3.275588480012951e+02, 3.434529376757280e+02, 3.600543386612206e+02, 3.772595060419802e+02, 3.949139162536301e+02, - 4.128140808070176e+02, 4.307195921739076e+02, 4.483765898646657e+02, 4.655484240687682e+02, 4.820465145965424e+02, - 4.977439194845015e+02, 5.125690559751139e+02, 5.265001471534738e+02, 5.395519565379368e+02, 5.517628242213549e+02, - 5.631844797424508e+02, 5.738749047621270e+02, 5.838936514487648e+02, 5.932989031880794e+02, 6.021457194439770e+02, - 6.104850826451282e+02, 6.183634887813306e+02, 6.258228993153875e+02, 6.329009210788863e+02, 6.396311168856421e+02, - 6.460433783306570e+02, 6.521643151226725e+02, 6.580176327224319e+02, 6.636244825750649e+02, 6.690037776815769e+02, - 6.741724716091783e+02, 6.791458021789933e+02, 6.839375027149711e+02, 6.885599844310451e+02, 6.930244936563697e+02, - 6.973412474060748e+02, 7.015195504605161e+02, 7.055678967181557e+02, 7.094940571920871e+02, 7.133051566564239e+02, - 7.170077406286476e+02, 7.206078340998757e+02, 7.241109931946288e+02, 7.275223507499642e+02, 7.308466566454683e+02, - 7.340883135849771e+02, 7.372514089232122e+02, 7.403397430415600e+02, 7.433568547034546e+02, 7.463060437584390e+02, - 7.491903915126002e+02, 7.520127790488488e+02, 7.547759036804896e+02, 7.574822938837559e+02, 7.601343227019938e+02, - 7.627342199227980e+02, 7.652840831082639e+02, 7.677858876099492e+02, 7.702414956757037e+02, 7.726526647429083e+02, - 7.750210550016774e+02, 7.773482363019995e+02, 7.796356944703973e+02, 7.818848370944032e+02, 7.840969988266345e+02, - 7.862734462546724e+02, 7.884153823779069e+02, 7.905239507281659e+02, 7.926002391670385e+02, 7.946452833893834e+02, - 7.966600701594963e+02, 7.986455403036861e+02, 8.006025914806480e+02, 8.025320807488862e+02, 8.044348269485395e+02, - 8.063116129133111e+02, 8.081631875149062e+02, 8.099902676244833e+02, 8.117935395989933e+02, 8.135736619078110e+02, - 8.153312652510281e+02, 8.170669549976416e+02, 8.187813122991482e+02, 8.204748953342056e+02, 8.221482404899774e+02, - 8.238018625686799e+02, 8.254362588109536e+02, 8.270519061087633e+02, 8.286492640839131e+02, 8.302287754773371e+02, - 8.317908669606904e+02, 8.333359499002377e+02, 8.348644210763281e+02, 8.363766633615044e+02, 8.378730463600191e+02, - 8.393539270113737e+02, 8.408196501602304e+02, 8.422705490949148e+02, 8.437069460565539e+02, 8.451291527207101e+02, - 8.465374706532871e+02, 8.479321917423023e+02, 8.493135986172363e+02, 8.506819649950484e+02, 8.520375561128980e+02, - 8.533806290329396e+02, 8.547114329854858e+02, 8.560302096841253e+02, 8.573371936252652e+02, 8.586326123729903e+02, - 8.599166868300970e+02, 8.611896314960926e+02, 8.624516547129000e+02, 8.637029588989500e+02, 8.649437407723151e+02, - 8.661741915634993e+02, 8.673944972184246e+02, 8.686048385921730e+02, 8.698053916339645e+02, 8.709963275638511e+02, - 8.721778130415464e+02, 8.733500103278320e+02, 8.745130774388934e+02, 8.756671682939833e+02, 8.768124328567271e+02, - 8.779490172704089e+02, 8.790770639875394e+02, 8.801967118939870e+02, 8.813080964279413e+02, 8.824113496939747e+02, - 8.835066005724229e+02, 8.845939748243269e+02, 8.856735951921464e+02, 8.867455814964367e+02, 8.878100507286950e+02, - 8.888671168067108e+02, 8.899168919686682e+02, 8.909594849317889e+02, 8.919950022290789e+02, 8.930235479771251e+02, - 8.940452239493728e+02, 8.950601296466557e+02, 8.960683623650775e+02, 8.970700172613833e+02, 8.980651874159154e+02, - 8.990539638932692e+02, 9.000364358007436e+02, 9.010126903446859e+02, 9.019828128848144e+02, 9.029468869866125e+02, - 9.039049944718712e+02, 9.048572154674589e+02, 9.058036284523888e+02, 9.067443103032673e+02, 9.076793363381687e+02, - 9.086087803590221e+02, 9.095327146925562e+02, 9.104512102298654e+02, 9.113643364646571e+02, 9.122721615302223e+02, - 9.131747522351869e+02, 9.140721740980963e+02, 9.149644913808620e+02, 9.158517673002627e+02, 9.167340633530608e+02, - 9.176114403906271e+02, 9.184839579618484e+02, 9.193516745108120e+02, 9.202146474043493e+02, 9.210729329587259e+02, - 9.219265864654994e+02, 9.227756622165890e+02, 9.236202135285705e+02, 9.244602927662397e+02, 9.252959513654574e+02, - 9.261272398553122e+02, 9.269542078796233e+02, 9.277769042177987e+02, 9.285953768050865e+02, 9.294096727522256e+02, - 9.302198379476583e+02, 9.310259187249777e+02, 9.318279594348181e+02, 9.326260040752500e+02, 9.334200959098980e+02, - 9.342102774844387e+02, 9.349965906426395e+02, 9.357790765419435e+02, 9.365577756686235e+02, 9.373327278525167e+02, - 9.381039722813504e+02, 9.388715475146812e+02, 9.396354914974517e+02, 9.403958415731793e+02, 9.411526344967915e+02, - 9.419059064471207e+02, 9.426556930390587e+02, 9.434020293353982e+02, 9.441449498583573e+02, 9.448844886008010e+02, - 9.456206790371755e+02, 9.463535541341556e+02, 9.470831463610174e+02, 9.478094876997471e+02, 9.485326096548903e+02, - 9.492525432631536e+02, 9.499693191027595e+02, 9.506829673025720e+02, 9.513935175509899e+02, 9.521009991046210e+02, - 9.528054407967423e+02, 9.535068710455505e+02, 9.542053178622106e+02, 9.549008088587109e+02, 9.555933712555266e+02, - 9.562830318890941e+02, 9.569698172191148e+02, 9.576537533356772e+02, 9.583348659662119e+02, 9.590131804822832e+02, - 9.596887219062227e+02, 9.603615149176002e+02, 9.610315838595540e+02, 9.616989527449664e+02, 9.623636452625005e+02, - 9.630256847824971e+02, 9.636850943627395e+02, 9.643418967540808e+02, 9.649961144059515e+02, 9.656477694717382e+02, - 9.662968838140432e+02, 9.669434790098247e+02, 9.675875763554262e+02, 9.682291968714941e+02, 9.688683613077814e+02, - 9.695050901478561e+02, 9.701394036136949e+02, 9.707713216701906e+02, 9.714008640295493e+02, 9.720280501556010e+02, - 9.726528992680146e+02, 9.732754303464239e+02, 9.738956621344677e+02, 9.745136131437390e+02, 9.751293016576567e+02, - 9.757427457352542e+02, 9.763539632148893e+02, 9.769629717178741e+02, 9.775697886520348e+02, 9.781744312151937e+02, - 9.787769163985827e+02, 9.793772609901849e+02, 9.799754815780113e+02, 9.805715945533065e+02, 9.811656161136934e+02, - 9.817575622662554e+02, 9.823474488305520e+02, 9.829352914415803e+02, 9.835211055526730e+02, 9.841049064383440e+02, - 9.846867091970722e+02, 9.852665287540324e+02, 9.858443798637818e+02, 9.864202771128774e+02, 9.869942349224575e+02, - 9.875662675507676e+02, 9.881363890956369e+02, 9.887046134969077e+02, 9.892709545388237e+02, 9.898354258523635e+02, - 9.903980409175399e+02, 9.909588130656483e+02, 9.915177554814779e+02, 9.920748812054777e+02, 9.926302031358866e+02, - 9.931837340308194e+02, 9.937354865103184e+02, 9.942854730583634e+02, 9.948337060248488e+02, 9.953801976275215e+02, - 9.959249599538830e+02, 9.964680049630637e+02, 9.970093444876539e+02, 9.975489902355069e+02, 9.980869537915132e+02, - 9.986232466193321e+02, 9.991578800631078e+02, 9.996908653491403e+02, 1.000222213587537e+03, 1.000751935773830e+03, - 1.001280042790569e+03, 1.001806545408879e+03, 1.002331454290002e+03, 1.002854779986804e+03, 1.003376532945255e+03, - 1.003896723505892e+03, 1.004415361905246e+03, 1.004932458277254e+03, 1.005448022654639e+03, 1.005962064970279e+03, - 1.006474595058531e+03, 1.006985622656560e+03, 1.007495157405624e+03, 1.008003208852345e+03, 1.008509786449966e+03, - 1.009014899559571e+03, 1.009518557451303e+03, 1.010020769305546e+03, 1.010521544214100e+03, 1.011020891181327e+03, - 1.011518819125287e+03, 1.012015336878846e+03, 1.012510453190778e+03, 1.013004176726836e+03, 1.013496516070814e+03, - 1.013987479725595e+03, 1.014477076114169e+03, 1.014965313580649e+03, 1.015452200391265e+03, 1.015937744735339e+03, - 1.016421954726247e+03, 1.016904838402375e+03, 1.017386403728042e+03, 1.017866658594422e+03, 1.018345610820448e+03, - 1.018823268153706e+03, 1.019299638271301e+03, 1.019774728780731e+03, 1.020248547220726e+03, 1.020721101062092e+03, - 1.021192397708532e+03, 1.021662444497455e+03, 1.022131248700777e+03, 1.022598817525707e+03, 1.023065158115520e+03, - 1.023530277550322e+03, 1.023994182847803e+03, 1.024456880963973e+03, 1.024918378793893e+03, 1.025378683172397e+03, - 1.025837800874793e+03, 1.026295738617566e+03, 1.026752503059064e+03, 1.027208100800174e+03, 1.027662538384988e+03, - 1.028115822301461e+03, 1.028567958982063e+03, 1.029018954804410e+03, 1.029468816091899e+03, 1.029917549114327e+03, - 1.030365160088498e+03, 1.030811655178832e+03, 1.031257040497953e+03, 1.031701322107280e+03, 1.032144506017597e+03, - 1.032586598189631e+03, 1.033027604534600e+03, 1.033467530914782e+03, 1.033906383144046e+03, 1.034344166988398e+03, - 1.034780888166508e+03, 1.035216552350232e+03, 1.035651165165129e+03, 1.036084732190970e+03, 1.036517258962237e+03, - 1.036948750968618e+03, 1.037379213655496e+03, 1.037808652424430e+03, 1.038237072633625e+03, 1.038664479598408e+03, - 1.039090878591679e+03, 1.039516274844378e+03, 1.039940673545925e+03, 1.040364079844670e+03, 1.040786498848320e+03, - 1.041207935624384e+03, 1.041628395200590e+03, 1.042047882565305e+03, 1.042466402667951e+03, 1.042883960419417e+03, - 1.043300560692456e+03, 1.043716208322090e+03, 1.044130908105996e+03, 1.044544664804899e+03, 1.044957483142956e+03, - 1.045369367808126e+03, 1.045780323452552e+03, 1.046190354692923e+03, 1.046599466110840e+03, 1.047007662253173e+03, - 1.047414947632418e+03, 1.047821326727042e+03, 1.048226803981831e+03, 1.048631383808231e+03, 1.049035070584684e+03, - 1.049437868656956e+03, 1.049839782338473e+03, 1.050240815910636e+03, 1.050640973623147e+03, 1.051040259694321e+03, - 1.051438678311400e+03, 1.051836233630858e+03, 1.052232929778709e+03, 1.052628770850803e+03, 1.053023760913126e+03, - 1.053417904002089e+03, 1.053811204124823e+03, 1.054203665259456e+03, 1.054595291355405e+03, 1.054986086333648e+03, - 1.055376054087001e+03, 1.055765198480388e+03, 1.056153523351118e+03, 1.056541032509139e+03, 1.056927729737308e+03, - 1.057313618791645e+03, 1.057698703401594e+03, 1.058082987270273e+03, 1.058466474074723e+03, 1.058849167466157e+03, - 1.059231071070204e+03, 1.059612188487147e+03, 1.059992523292165e+03, 1.060372079035565e+03, 1.060750859243017e+03, - 1.061128867415784e+03, 1.061506107030949e+03, 1.061882581541635e+03, 1.062258294377234e+03, 1.062633248943624e+03, - 1.063007448623381e+03, 1.063380896776000e+03, 1.063753596738104e+03, 1.064125551823652e+03, 1.064496765324148e+03, - 1.064867240508845e+03, 1.065236980624946e+03, 1.065605988897805e+03, 1.065974268531127e+03, 1.066341822707158e+03, - 1.066708654586883e+03, 1.067074767310214e+03, 1.067440163996181e+03, 1.067804847743117e+03, 1.068168821628846e+03 - }, - { - 1.605669823353134e+00, 4.887867630304428e+00, 8.218383125804937e+00, 1.159890401011700e+01, 1.503121157918038e+01, - 1.851718750028839e+01, 2.205882119267759e+01, 2.565821788187181e+01, 2.931760739702934e+01, 3.303935379651526e+01, - 3.682596591402834e+01, 4.068010893083034e+01, 4.460461709344727e+01, 4.860250771223694e+01, 5.267699659464430e+01, - 5.683151508817478e+01, 6.106972893255507e+01, 6.539555914872776e+01, 6.981320522483185e+01, 7.432717089681583e+01, - 7.894229286456221e+01, 8.366377283418973e+01, 8.849721333441663e+01, 9.344865782042096e+01, 9.852463565329666e+01, - 1.037322126279063e+02, 1.090790478164440e+02, 1.145734575997143e+02, 1.202244878707237e+02, 1.260419955124846e+02, - 1.320367403660498e+02, 1.382204890099228e+02, 1.446061317386038e+02, 1.512078140499233e+02, 1.580410840594883e+02, - 1.651230565322458e+02, 1.724725938912733e+02, 1.801105030880418e+02, 1.880597450985593e+02, 1.963456501675738e+02, - 2.049961260272469e+02, 2.140418369374194e+02, 2.235163167674769e+02, 2.334559570606615e+02, 2.438997782390563e+02, - 2.548888464008248e+02, 2.664651401422082e+02, 2.786696106667553e+02, 2.915391407018962e+02, 3.051021448685386e+02, - 3.193727326210963e+02, 3.343437077562862e+02, 3.499791347999910e+02, 3.662076004877592e+02, 3.829175720014302e+02, - 3.999565694264590e+02, 4.171362560603423e+02, 4.342452248604133e+02, 4.510690402572959e+02, 4.674134446607954e+02, - 4.831262065231460e+02, 4.981043356019574e+02, 5.122901800610585e+02, 5.256661989957748e+02, 5.382445262860832e+02, - 5.500568527973991e+02, 5.611463706331847e+02, 5.715620246391835e+02, 5.813546602760324e+02, 5.905745374716764e+02, - 5.992697814605892e+02, 6.074854751891735e+02, 6.152631964174527e+02, 6.226408626271120e+02, 6.296527829143362e+02, - 6.363298406764490e+02, 6.426997503128161e+02, 6.487873473313274e+02, 6.546148844570736e+02, 6.602023165854421e+02, - 6.655675649188255e+02, 6.707267557950020e+02, 6.756944330631530e+02, 6.804837448773271e+02, 6.851066068677974e+02, - 6.895738441358277e+02, 6.938953146279739e+02, 6.980800163416018e+02, 7.021361805989355e+02, 7.060713533684518e+02, - 7.098924663488227e+02, 7.136058992829632e+02, 7.172175347480105e+02, 7.207328064744303e+02, 7.241567420832922e+02, - 7.274940009926140e+02, 7.307489081282357e+02, 7.339254839786103e+02, 7.370274714617123e+02, 7.400583599435797e+02, - 7.430214068815426e+02, 7.459196571988948e+02, 7.487559607830663e+02, 7.515329882686060e+02, 7.542532453050587e+02, - 7.569190854761033e+02, 7.595327220157749e+02, 7.620962384498720e+02, 7.646115982753871e+02, 7.670806537775291e+02, - 7.695051540724131e+02, 7.718867524534282e+02, 7.742270131105380e+02, 7.765274172840511e+02, 7.787893689076820e+02, - 7.810141997897572e+02, 7.832031743762049e+02, 7.853574941343443e+02, 7.874783015923980e+02, 7.895666840660721e+02, - 7.916236771002962e+02, 7.936502676514156e+02, 7.956473970325732e+02, 7.976159636427892e+02, 7.995568254982255e+02, - 8.014708025716370e+02, 8.033586790204898e+02, 8.052212049181708e+02, 8.070590991545316e+02, 8.088730496939537e+02, - 8.106637162525672e+02, 8.124317315775143e+02, 8.141777028925910e+02, 8.159022132206309e+02, 8.176058226372169e+02, - 8.192890685421007e+02, 8.209524697613439e+02, 8.225965237822701e+02, 8.242217099121948e+02, 8.258284897112140e+02, - 8.274173078508367e+02, 8.289885929219038e+02, 8.305427581953069e+02, 8.320802023387411e+02, 8.336013100924797e+02, - 8.351064529069271e+02, 8.365959895444772e+02, 8.380702666480348e+02, 8.395296192783657e+02, 8.409743714222923e+02, - 8.424048364735755e+02, 8.438213176986069e+02, 8.452241086250737e+02, 8.466134935167036e+02, 8.479897477156883e+02, - 8.493531380222898e+02, 8.507039230441012e+02, 8.520423535277954e+02, 8.533686726743642e+02, 8.546831164388492e+02, - 8.559859138154376e+02, 8.572772871087780e+02, 8.585574521922958e+02, 8.598266187542411e+02, 8.610849905321597e+02, - 8.623327655364229e+02, 8.635701362634294e+02, 8.647972898990241e+02, 8.660144085126815e+02, 8.672216692429366e+02, - 8.684192444745304e+02, 8.696073020077149e+02, 8.707860052201124e+02, 8.719555132215301e+02, 8.731159810020848e+02, - 8.742675595739787e+02, 8.754103961072481e+02, 8.765446340597939e+02, 8.776704133019696e+02, 8.787878702359980e+02, - 8.798971379104784e+02, 8.809983461302104e+02, 8.820916215615717e+02, 8.831770878336579e+02, 8.842548656353828e+02, - 8.853250724863024e+02, 8.863878240897880e+02, 8.874432325614940e+02, 8.884914077263389e+02, 8.895324569003653e+02, - 8.905664849672836e+02, 8.915935944521304e+02, 8.926138855921502e+02, 8.936274564050342e+02, 8.946344027546345e+02, - 8.956348184142572e+02, 8.966287951276482e+02, 8.976164226677646e+02, 8.985977888934340e+02, 8.995729798039833e+02, - 9.005420795919340e+02, 9.015051706938358e+02, 9.024623338393218e+02, 9.034136480984558e+02, 9.043591909274495e+02, - 9.052990382128045e+02, 9.062332643139567e+02, 9.071619421044729e+02, 9.080851430118654e+02, 9.090029370560742e+02, - 9.099153928866748e+02, 9.108225778188563e+02, 9.117245578682275e+02, 9.126213977844828e+02, 9.135131610839844e+02, - 9.143999100812979e+02, 9.152817061263306e+02, 9.161586088188410e+02, 9.170306772429992e+02, 9.178979692019748e+02, - 9.187605414404562e+02, 9.196184496706940e+02, 9.204717485977303e+02, 9.213204919438731e+02, 9.221647324724156e+02, - 9.230045220106432e+02, 9.238399114721532e+02, 9.246709508785065e+02, 9.254976893802343e+02, 9.263201752772343e+02, - 9.271384560385616e+02, 9.279525778938620e+02, 9.287625875442660e+02, 9.295685296699563e+02, 9.303704486033191e+02, - 9.311683879366112e+02, 9.319623905385814e+02, 9.327524985706244e+02, 9.335387535024815e+02, 9.343211961275064e+02, - 9.350998665775095e+02, 9.358748043371911e+02, 9.366460482581823e+02, 9.374136365727041e+02, 9.381776069068578e+02, - 9.389379962935527e+02, 9.396948411850971e+02, 9.404481774654479e+02, 9.411980404621356e+02, 9.419444649578811e+02, - 9.426874852019023e+02, 9.434271349209306e+02, 9.441634473299397e+02, 9.448964551426001e+02, 9.456261905814636e+02, - 9.463526853878881e+02, 9.470759708317152e+02, 9.477960777206969e+02, 9.485130364096916e+02, 9.492268768096262e+02, - 9.499376283962382e+02, 9.506453202186012e+02, 9.513499809074406e+02, 9.520516386832450e+02, 9.527503213641830e+02, - 9.534460563738236e+02, 9.541388707486756e+02, 9.548287911455425e+02, 9.555158438487026e+02, 9.562000547769226e+02, - 9.568814494902967e+02, 9.575600531969362e+02, 9.582358907594919e+02, 9.589089867015308e+02, 9.595793652137660e+02, - 9.602470501601371e+02, 9.609120650837559e+02, 9.615744332127146e+02, 9.622341774657619e+02, 9.628913204578516e+02, - 9.635458845055643e+02, 9.641978916324084e+02, 9.648473635740046e+02, 9.654943217831518e+02, 9.661387874347845e+02, - 9.667807814308172e+02, 9.674203244048875e+02, 9.680574367269902e+02, 9.686921385080152e+02, 9.693244496041854e+02, - 9.699543896213996e+02, 9.705819779194813e+02, 9.712072336163390e+02, 9.718301755920337e+02, 9.724508224927682e+02, - 9.730691927347849e+02, 9.736853045081830e+02, 9.742991757806606e+02, 9.749108243011768e+02, 9.755202676035342e+02, - 9.761275230098929e+02, 9.767326076342101e+02, 9.773355383856089e+02, 9.779363319716812e+02, 9.785350049017186e+02, - 9.791315734898849e+02, 9.797260538583190e+02, 9.803184619401787e+02, 9.809088134826242e+02, 9.814971240497391e+02, - 9.820834090253984e+02, 9.826676836160774e+02, 9.832499628536052e+02, 9.838302615978636e+02, 9.844085945394397e+02, - 9.849849762022176e+02, 9.855594209459283e+02, 9.861319429686456e+02, 9.867025563092379e+02, 9.872712748497686e+02, - 9.878381123178582e+02, 9.884030822889927e+02, 9.889661981887958e+02, 9.895274732952570e+02, 9.900869207409135e+02, - 9.906445535149984e+02, 9.912003844655435e+02, 9.917544263014474e+02, 9.923066915945014e+02, 9.928571927813817e+02, - 9.934059421656049e+02, 9.939529519194448e+02, 9.944982340858193e+02, 9.950418005801389e+02, 9.955836631921239e+02, - 9.961238335875905e+02, 9.966623233102014e+02, 9.971991437831883e+02, 9.977343063110435e+02, 9.982678220811795e+02, - 9.987997021655617e+02, 9.993299575223127e+02, 9.998585989972859e+02, 1.000385637325615e+03, 1.000911083133234e+03, - 1.001434946938375e+03, 1.001957239153030e+03, 1.002477970084403e+03, 1.002997149936326e+03, 1.003514788810653e+03, - 1.004030896708633e+03, 1.004545483532260e+03, 1.005058559085592e+03, 1.005570133076062e+03, 1.006080215115755e+03, - 1.006588814722671e+03, 1.007095941321960e+03, 1.007601604247145e+03, 1.008105812741319e+03, 1.008608575958322e+03, - 1.009109902963904e+03, 1.009609802736866e+03, 1.010108284170173e+03, 1.010605356072073e+03, 1.011101027167171e+03, - 1.011595306097500e+03, 1.012088201423577e+03, 1.012579721625433e+03, 1.013069875103632e+03, 1.013558670180275e+03, - 1.014046115099983e+03, 1.014532218030868e+03, 1.015016987065489e+03, 1.015500430221795e+03, 1.015982555444044e+03, - 1.016463370603719e+03, 1.016942883500423e+03, 1.017421101862762e+03, 1.017898033349216e+03, 1.018373685548992e+03, - 1.018848065982871e+03, 1.019321182104033e+03, 1.019793041298877e+03, 1.020263650887828e+03, 1.020733018126124e+03, - 1.021201150204604e+03, 1.021668054250469e+03, 1.022133737328048e+03, 1.022598206439535e+03, 1.023061468525732e+03, - 1.023523530466768e+03, 1.023984399082815e+03, 1.024444081134790e+03, 1.024902583325046e+03, 1.025359912298056e+03, - 1.025816074641084e+03, 1.026271076884852e+03, 1.026724925504186e+03, 1.027177626918661e+03, 1.027629187493239e+03, - 1.028079613538891e+03, 1.028528911313214e+03, 1.028977087021037e+03, 1.029424146815018e+03, 1.029870096796239e+03, - 1.030314943014782e+03, 1.030758691470306e+03, 1.031201348112609e+03, 1.031642918842190e+03, 1.032083409510792e+03, - 1.032522825921949e+03, 1.032961173831518e+03, 1.033398458948207e+03, 1.033834686934091e+03, 1.034269863405127e+03, - 1.034703993931661e+03, 1.035137084038923e+03, 1.035569139207516e+03, 1.036000164873909e+03, 1.036430166430907e+03, - 1.036859149228125e+03, 1.037287118572454e+03, 1.037714079728521e+03, 1.038140037919137e+03, 1.038564998325751e+03, - 1.038988966088881e+03, 1.039411946308557e+03, 1.039833944044745e+03, 1.040254964317772e+03, 1.040675012108745e+03, - 1.041094092359959e+03, 1.041512209975308e+03, 1.041929369820681e+03, 1.042345576724364e+03, 1.042760835477427e+03, - 1.043175150834111e+03, 1.043588527512208e+03, 1.044000970193434e+03, 1.044412483523806e+03, 1.044823072114006e+03, - 1.045232740539736e+03, 1.045641493342085e+03, 1.046049335027873e+03, 1.046456270070004e+03, 1.046862302907804e+03, - 1.047267437947363e+03, 1.047671679561872e+03, 1.048075032091949e+03, 1.048477499845964e+03, 1.048879087100368e+03, - 1.049279798100004e+03, 1.049679637058425e+03, 1.050078608158202e+03, 1.050476715551231e+03, 1.050873963359038e+03, - 1.051270355673071e+03, 1.051665896555003e+03, 1.052060590037017e+03, 1.052454440122099e+03, 1.052847450784318e+03, - 1.053239625969109e+03, 1.053630969593549e+03, 1.054021485546634e+03, 1.054411177689545e+03, 1.054800049855920e+03, - 1.055188105852115e+03, 1.055575349457466e+03, 1.055961784424547e+03, 1.056347414479426e+03, 1.056732243321913e+03, - 1.057116274625814e+03, 1.057499512039170e+03, 1.057881959184508e+03, 1.058263619659074e+03, 1.058644497035072e+03, - 1.059024594859903e+03, 1.059403916656388e+03, 1.059782465923003e+03, 1.060160246134107e+03, 1.060537260740157e+03, - 1.060913513167938e+03, 1.061289006820776e+03, 1.061663745078756e+03, 1.062037731298935e+03, 1.062410968815551e+03, - 1.062783460940235e+03, 1.063155210962215e+03, 1.063526222148519e+03, 1.063896497744179e+03, 1.064266040972425e+03, - 1.064634855034891e+03, 1.065002943111797e+03, 1.065370308362154e+03, 1.065736953923946e+03, 1.066102882914319e+03 - }, - { - 1.600673877893881e+00, 4.872289457992808e+00, 8.191544896981389e+00, 1.156008053171050e+01, 1.497962624847038e+01, - 1.845200784050755e+01, 2.197915391985768e+01, 2.556310344534813e+01, 2.920601392783513e+01, 3.291017038849445e+01, - 3.667799515151816e+01, 4.051205856399421e+01, 4.441509074742689e+01, 4.838999449884643e+01, 5.243985947486874e+01, - 5.656797780968805e+01, 6.077786133814143e+01, 6.507326061804227e+01, 6.945818597235247e+01, 7.393693080190052e+01, - 7.851409745374505e+01, 8.319462596944014e+01, 8.798382608188123e+01, 9.288741287955702e+01, 9.791154661323756e+01, - 1.030628771823966e+02, 1.083485939069246e+02, 1.137764812622403e+02, 1.193549813313108e+02, 1.250932638003910e+02, - 1.310013043898163e+02, 1.370899726541367e+02, 1.433711301084431e+02, 1.498577394763309e+02, 1.565639859232567e+02, - 1.635054104007839e+02, 1.706990549020494e+02, 1.781636181124228e+02, 1.859196181513966e+02, 1.939895561475054e+02, - 2.023980697750917e+02, 2.111720587785721e+02, 2.203407537617498e+02, 2.299356836072472e+02, 2.399904740647999e+02, - 2.505403788641760e+02, 2.616214055389658e+02, 2.732688562232061e+02, 2.855150741709673e+02, 2.983861998048989e+02, - 3.118978387462570e+02, 3.260497627111027e+02, 3.408200848188007e+02, 3.561596801196350e+02, 3.719878532770248e+02, - 3.881903927885553e+02, 4.046212862854804e+02, 4.211093720121100e+02, 4.374705042037953e+02, 4.535239947733870e+02, - 4.691099481042837e+02, 4.841046071842668e+02, 4.984239401556423e+02, 5.120212285525325e+02, 5.248822446856329e+02, - 5.370170290324281e+02, 5.484519413683976e+02, 5.592232471073957e+02, 5.693724565892829e+02, 5.789431382512739e+02, - 5.879788129254729e+02, 5.965215973695510e+02, 6.046113650976735e+02, 6.122852704152540e+02, 6.195775309520702e+02, - 6.265193921950486e+02, 6.331392152217692e+02, 6.394626419944071e+02, 6.455128036700897e+02, 6.513105469533044e+02, - 6.568746614724208e+02, 6.622220974212332e+02, 6.673681673528906e+02, 6.723267292705438e+02, 6.771103503092094e+02, - 6.817304516259289e+02, 6.861974358525339e+02, 6.905207988090764e+02, 6.947092272697320e+02, 6.987706845181892e+02, - 7.027124852950792e+02, 7.065413615702281e+02, 7.102635203947260e+02, 7.138846949173737e+02, 7.174101894949725e+02, - 7.208449196892221e+02, 7.241934478326393e+02, 7.274600146908635e+02, 7.306485678301034e+02, 7.337627869460871e+02, - 7.368061066364043e+02, 7.397817368741731e+02, 7.426926814576128e+02, 7.455417546660348e+02, 7.483315963226559e+02, - 7.510646854390889e+02, 7.537433525945389e+02, 7.563697911840337e+02, 7.589460676539283e+02, 7.614741308289995e+02, - 7.639558204234067e+02, 7.663928748172580e+02, 7.687869381714158e+02, 7.711395669450872e+02, 7.734522358737482e+02, - 7.757263434587464e+02, 7.779632170144700e+02, 7.801641173141345e+02, 7.823302428710089e+02, 7.844627338880895e+02, - 7.865626759058979e+02, 7.886311031751015e+02, 7.906690017779850e+02, 7.926773125204697e+02, 7.946569336045125e+02, - 7.966087231579979e+02, 7.985335014868883e+02, 8.004320530580526e+02, 8.023051293658378e+02, 8.041534494425604e+02, - 8.059777025379900e+02, 8.077785495152222e+02, 8.095566243730638e+02, 8.113125356489910e+02, 8.130468677466434e+02, - 8.147601812527661e+02, 8.164530171949145e+02, 8.181258941972563e+02, 8.197793117829382e+02, 8.214137508374163e+02, - 8.230296745153051e+02, 8.246275290934483e+02, 8.262077447739408e+02, 8.277707364405562e+02, 8.293169043717387e+02, - 8.308466349130939e+02, 8.323603011120639e+02, 8.338582633173033e+02, 8.353408697450330e+02, 8.368084570145320e+02, - 8.382613506547265e+02, 8.396998655930229e+02, 8.411243065711606e+02, 8.425349686347456e+02, 8.439321375005985e+02, - 8.453160899543411e+02, 8.466870942177657e+02, 8.480454102976852e+02, 8.493912903173612e+02, 8.507249788315302e+02, - 8.520467131259866e+02, 8.533567235026111e+02, 8.546552335506756e+02, 8.559424604052024e+02, 8.572186149931121e+02, - 8.584839022678253e+02, 8.597385214329677e+02, 8.609826661557739e+02, 8.622165247707422e+02, 8.634402804740731e+02, - 8.646541115093714e+02, 8.658581913450901e+02, 8.670526888441429e+02, 8.682377684260786e+02, 8.694135902222304e+02, - 8.705803102241732e+02, 8.717380804258448e+02, 8.728870489596433e+02, 8.740273602268060e+02, 8.751591550223518e+02, - 8.762825706548505e+02, 8.773977410612857e+02, 8.785047969172267e+02, 8.796038657425629e+02, 8.806950720029870e+02, - 8.817785372074432e+02, 8.828543796647216e+02, 8.839227158945416e+02, 8.849836587710563e+02, 8.860373188763321e+02, - 8.870838042686590e+02, 8.881232205594230e+02, 8.891556709870721e+02, 8.901812564883081e+02, 8.912000757666339e+02, - 8.922122253583631e+02, 8.932177996962040e+02, 8.942168911705393e+02, 8.952095901884716e+02, 8.961959852307637e+02, - 8.971761629067378e+02, 8.981502080072337e+02, 8.991182035557000e+02, 9.000802308575065e+02, 9.010363695475377e+02, - 9.019866976361519e+02, 9.029312915535620e+02, 9.038702261927106e+02, 9.048035749506926e+02, 9.057314097687919e+02, - 9.066538011711793e+02, 9.075708183023327e+02, 9.084825289632222e+02, 9.093889996463128e+02, 9.102902955694339e+02, - 9.111864807085479e+02, 9.120776178294782e+02, 9.129637685186152e+02, 9.138449932126604e+02, 9.147213514644056e+02, - 9.155929010352610e+02, 9.164596993069983e+02, 9.173218023967496e+02, 9.181792654072908e+02, 9.190321424516630e+02, - 9.198804866770461e+02, 9.207243502879165e+02, 9.215637845685040e+02, 9.223988399045877e+02, 9.232295658046394e+02, - 9.240560109203503e+02, 9.248782226463812e+02, 9.256962488017166e+02, 9.265101351829005e+02, 9.273199272080388e+02, - 9.281256695324784e+02, 9.289274060660290e+02, 9.297251799896961e+02, 9.305190337719444e+02, 9.313090091845048e+02, - 9.320951473177487e+02, 9.328774885956299e+02, 9.336560727902195e+02, 9.344309390358462e+02, 9.352021258428481e+02, - 9.359696711109536e+02, 9.367336121423084e+02, 9.374939856541450e+02, 9.382508277911246e+02, 9.390041741373456e+02, - 9.397540597280417e+02, 9.405005190609709e+02, 9.412435861075080e+02, 9.419832943234536e+02, 9.427196766595602e+02, - 9.434527655717927e+02, 9.441825930313258e+02, 9.449091905342858e+02, 9.456325891112526e+02, 9.463528193365185e+02, - 9.470699113371176e+02, 9.477838948016289e+02, 9.484947989887687e+02, 9.492026527357632e+02, 9.499074844665211e+02, - 9.506093221996088e+02, 9.513081935560275e+02, 9.520041257668074e+02, 9.526971456804200e+02, 9.533872797700083e+02, - 9.540745541404534e+02, 9.547589945352646e+02, 9.554406263433192e+02, 9.561194746054321e+02, 9.567955640207838e+02, - 9.574689189531922e+02, 9.581395634372408e+02, 9.588075211842702e+02, 9.594728155882271e+02, 9.601354697313860e+02, - 9.607955063899370e+02, 9.614529480394498e+02, 9.621078168602146e+02, 9.627601347424667e+02, 9.634099232914867e+02, - 9.640572038326013e+02, 9.647019974160596e+02, 9.653443248218135e+02, 9.659842065641892e+02, 9.666216628964572e+02, - 9.672567138153032e+02, 9.678893790652056e+02, 9.685196781427185e+02, 9.691476303006579e+02, 9.697732545522077e+02, - 9.703965696749329e+02, 9.710175942147083e+02, 9.716363464895719e+02, 9.722528445934850e+02, 9.728671064000290e+02, - 9.734791495660131e+02, 9.740889915350170e+02, 9.746966495408541e+02, 9.753021406109682e+02, 9.759054815697610e+02, - 9.765066890418481e+02, 9.771057794552543e+02, 9.777027690445431e+02, 9.782976738538813e+02, 9.788905097400459e+02, - 9.794812923753695e+02, 9.800700372506280e+02, 9.806567596778713e+02, 9.812414747931987e+02, 9.818241975594810e+02, - 9.824049427690265e+02, 9.829837250461998e+02, 9.835605588499885e+02, 9.841354584765166e+02, 9.847084380615185e+02, - 9.852795115827556e+02, 9.858486928623967e+02, 9.864159955693455e+02, 9.869814332215291e+02, 9.875450191881425e+02, - 9.881067666918501e+02, 9.886666888109472e+02, 9.892247984814813e+02, 9.897811084993347e+02, 9.903356315222662e+02, - 9.908883800719206e+02, 9.914393665357948e+02, 9.919886031691757e+02, 9.925361020970344e+02, 9.930818753158945e+02, - 9.936259346956613e+02, 9.941682919814209e+02, 9.947089587952057e+02, 9.952479466377291e+02, 9.957852668900900e+02, - 9.963209308154461e+02, 9.968549495606594e+02, 9.973873341579094e+02, 9.979180955262852e+02, 9.984472444733395e+02, - 9.989747916966264e+02, 9.995007477852057e+02, 1.000025123221121e+03, 1.000547928380860e+03, 1.001069173536780e+03, - 1.001588868858515e+03, 1.002107024414358e+03, 1.002623650172623e+03, 1.003138756002973e+03, 1.003652351677741e+03, - 1.004164446873214e+03, 1.004675051170912e+03, 1.005184174058825e+03, 1.005691824932656e+03, 1.006198013097011e+03, - 1.006702747766603e+03, 1.007206038067409e+03, 1.007707893037828e+03, 1.008208321629805e+03, 1.008707332709944e+03, - 1.009204935060610e+03, 1.009701137380993e+03, 1.010195948288180e+03, 1.010689376318187e+03, 1.011181429926993e+03, - 1.011672117491544e+03, 1.012161447310748e+03, 1.012649427606455e+03, 1.013136066524416e+03, 1.013621372135234e+03, - 1.014105352435292e+03, 1.014588015347675e+03, 1.015069368723072e+03, 1.015549420340664e+03, 1.016028177909004e+03, - 1.016505649066875e+03, 1.016981841384145e+03, 1.017456762362595e+03, 1.017930419436750e+03, 1.018402819974687e+03, - 1.018873971278832e+03, 1.019343880586751e+03, 1.019812555071920e+03, 1.020280001844491e+03, 1.020746227952044e+03, - 1.021211240380326e+03, 1.021675046053981e+03, 1.022137651837270e+03, 1.022599064534776e+03, 1.023059290892105e+03, - 1.023518337596572e+03, 1.023976211277878e+03, 1.024432918508777e+03, 1.024888465805737e+03, 1.025342859629584e+03, - 1.025796106386143e+03, 1.026248212426865e+03, 1.026699184049455e+03, 1.027149027498473e+03, 1.027597748965944e+03, - 1.028045354591953e+03, 1.028491850465225e+03, 1.028937242623708e+03, 1.029381537055141e+03, 1.029824739697611e+03, - 1.030266856440116e+03, 1.030707893123102e+03, 1.031147855539002e+03, 1.031586749432774e+03, 1.032024580502415e+03, - 1.032461354399483e+03, 1.032897076729603e+03, 1.033331753052972e+03, 1.033765388884848e+03, 1.034197989696046e+03, - 1.034629560913415e+03, 1.035060107920312e+03, 1.035489636057074e+03, 1.035918150621477e+03, 1.036345656869195e+03, - 1.036772160014249e+03, 1.037197665229448e+03, 1.037622177646830e+03, 1.038045702358093e+03, 1.038468244415022e+03, - 1.038889808829909e+03, 1.039310400575967e+03, 1.039730024587741e+03, 1.040148685761514e+03, 1.040566388955699e+03, - 1.040983138991242e+03, 1.041398940652004e+03, 1.041813798685145e+03, 1.042227717801507e+03, 1.042640702675980e+03, - 1.043052757947880e+03, 1.043463888221304e+03, 1.043874098065496e+03, 1.044283392015197e+03, 1.044691774571000e+03, - 1.045099250199691e+03, 1.045505823334592e+03, 1.045911498375901e+03, 1.046316279691020e+03, 1.046720171614884e+03, - 1.047123178450291e+03, 1.047525304468216e+03, 1.047926553908129e+03, 1.048326930978310e+03, 1.048726439856153e+03, - 1.049125084688477e+03, 1.049522869591819e+03, 1.049919798652737e+03, 1.050315875928101e+03, 1.050711105445386e+03, - 1.051105491202952e+03, 1.051499037170334e+03, 1.051891747288515e+03, 1.052283625470211e+03, 1.052674675600129e+03, - 1.053064901535252e+03, 1.053454307105095e+03, 1.053842896111973e+03, 1.054230672331256e+03, 1.054617639511630e+03, - 1.055003801375349e+03, 1.055389161618486e+03, 1.055773723911176e+03, 1.056157491897869e+03, 1.056540469197565e+03, - 1.056922659404055e+03, 1.057304066086157e+03, 1.057684692787948e+03, 1.058064543028999e+03, 1.058443620304596e+03, - 1.058821928085971e+03, 1.059199469820521e+03, 1.059576248932028e+03, 1.059952268820881e+03, 1.060327532864284e+03, - 1.060702044416472e+03, 1.061075806808923e+03, 1.061448823350563e+03, 1.061821097327968e+03, 1.062192632005575e+03, - 1.062563430625875e+03, 1.062933496409615e+03, 1.063302832555991e+03, 1.063671442242848e+03, 1.064039328626863e+03 - }, - { - 1.595709302640228e+00, 4.856813886775951e+00, 8.164891970561007e+00, 1.152153791920827e+01, 1.492843177830413e+01, - 1.838734523821821e+01, 2.190014810617901e+01, 2.546881534157714e+01, 2.909543470819773e+01, 3.278221511078738e+01, - 3.653149568751348e+01, 4.034575573974432e+01, 4.422762559041229e+01, 4.817989847353483e+01, 5.220554357030817e+01, - 5.630772032176301e+01, 6.048979416451574e+01, 6.475535385491405e+01, 6.910823056814422e+01, 7.355251898292674e+01, - 7.809260058957254e+01, 8.273316948969334e+01, 8.747926098998163e+01, 9.233628333035450e+01, 9.731005292835992e+01, - 1.024068335667766e+02, 1.076333799989482e+02, 1.129969864953987e+02, 1.185055409023956e+02, 1.241675848249737e+02, - 1.299923805757274e+02, 1.359899855361507e+02, 1.421713345425990e+02, 1.485483308257602e+02, 1.551339457195563e+02, - 1.619423272923900e+02, 1.689889169717427e+02, 1.762905726855827e+02, 1.838656952450432e+02, 1.917343523823323e+02, - 1.999183912226977e+02, 2.084415245487316e+02, 2.173293682363127e+02, 2.266093957332074e+02, 2.363107593301718e+02, - 2.464639063893740e+02, 2.570998919043063e+02, 2.682492598796894e+02, 2.799403439369311e+02, 2.921968401371762e+02, - 3.050345594050117e+02, 3.184574001461299e+02, 3.324527972109175e+02, 3.469871565783442e+02, 3.620019936136122e+02, - 3.774116014486150e+02, 3.931031093698759e+02, 4.089397727427756e+02, 4.247681092801149e+02, 4.404287490225789e+02, - 4.557695665001704e+02, 4.706585291223366e+02, 4.849943382989120e+02, 4.987081257340663e+02, 5.117618034895091e+02, - 5.241437636122085e+02, 5.358623719232884e+02, 5.469396847057156e+02, 5.574063117404789e+02, 5.672976159116278e+02, - 5.766510639037273e+02, 5.855044383221468e+02, 5.938946549549984e+02, 6.018570004672415e+02, 6.094246678144391e+02, - 6.166285072465697e+02, 6.234969341412941e+02, 6.300559484851705e+02, 6.363292300309122e+02, 6.423382806835624e+02, - 6.481025923654390e+02, 6.536398245187390e+02, 6.589659803735536e+02, 6.640955750557204e+02, 6.690417915720543e+02, - 6.738166228161149e+02, 6.784309991505237e+02, 6.828949020082013e+02, 6.872174644617972e+02, 6.914070599570844e+02, - 6.954713804830158e+02, 6.994175054243825e+02, 7.032519622582432e+02, 7.069807801501717e+02, 7.106095373324916e+02, - 7.141434031889142e+02, 7.175871755888297e+02, 7.209453141923213e+02, 7.242219701934794e+02, 7.274210129527905e+02, - 7.305460538983200e+02, 7.336004680221200e+02, 7.365874132532493e+02, 7.395098479507313e+02, 7.423705467275038e+02, - 7.451721147891359e+02, 7.479170009477911e+02, 7.506075094520711e+02, 7.532458107563453e+02, 7.558339513385225e+02, - 7.583738626625250e+02, 7.608673693707754e+02, 7.633161967824044e+02, 7.657219777645493e+02, 7.680862590367718e+02, - 7.704105069622128e+02, 7.726961128734113e+02, 7.749443979757124e+02, 7.771566178667837e+02, 7.793339667068045e+02, - 7.814775810704342e+02, 7.835885435085497e+02, 7.856678858351249e+02, 7.877165922223251e+02, 7.897356019708664e+02, - 7.917258121828538e+02, 7.936880799743612e+02, 7.956232256579143e+02, 7.975320334460025e+02, 7.994152543993692e+02, - 8.012736080127635e+02, 8.031077839474428e+02, 8.049184436295798e+02, 8.067062217365991e+02, 8.084717270610208e+02, - 8.102155455417020e+02, 8.119382393793163e+02, 8.136403493826051e+02, 8.153223957934309e+02, 8.169848793039328e+02, - 8.186282820125210e+02, 8.202530683229816e+02, 8.218596857906824e+02, 8.234485659194984e+02, 8.250201249128290e+02, - 8.265747643817979e+02, 8.281128720134932e+02, 8.296348222018977e+02, 8.311409766439360e+02, 8.326316849029167e+02, - 8.341072849508272e+02, 8.355681036340466e+02, 8.370144572105565e+02, 8.384466517613272e+02, 8.398649836297868e+02, - 8.412697398285535e+02, 8.426611984253805e+02, 8.440396289095677e+02, 8.454052925399943e+02, 8.467584426758527e+02, - 8.480993250911035e+02, 8.494281782735848e+02, 8.507452337096588e+02, 8.520507161552212e+02, 8.533448438938324e+02, - 8.546278289827019e+02, 8.558998774871922e+02, 8.571611897044683e+02, 8.584119603768938e+02, 8.596523788957201e+02, - 8.608826294955924e+02, 8.621028914403524e+02, 8.633133392006132e+02, 8.645141426235119e+02, 8.657054670950674e+02, - 8.668874736955156e+02, 8.680603193479675e+02, 8.692241569607576e+02, 8.703791355637630e+02, 8.715254004390301e+02, - 8.726630932459548e+02, 8.737923521413189e+02, 8.749133118943970e+02, 8.760261039974046e+02, 8.771308567714917e+02, - 8.782276954684938e+02, 8.793167420426571e+02, 8.803981165223779e+02, 8.814719352212855e+02, 8.825383120535087e+02, - 8.835973583157204e+02, 8.846491827673116e+02, 8.856938917075279e+02, 8.867315890496978e+02, 8.877623763926839e+02, - 8.887863530896823e+02, 8.898036163144866e+02, 8.908142611253234e+02, 8.918183805263718e+02, 8.928160655270561e+02, - 8.938074051992198e+02, 8.947924867322592e+02, 8.957713954863118e+02, 8.967442150435753e+02, 8.977110272578381e+02, - 8.986719123022921e+02, 8.996269487157045e+02, 9.005762134470098e+02, 9.015197818983848e+02, 9.024577279668788e+02, - 9.033901240846424e+02, 9.043170412578206e+02, 9.052385491041597e+02, 9.061547158893777e+02, 9.070656085623502e+02, - 9.079712927891528e+02, 9.088718329860058e+02, 9.097672923511708e+02, 9.106577328958216e+02, 9.115432154739489e+02, - 9.124237998113216e+02, 9.132995445335405e+02, 9.141705074636201e+02, 9.150367445805314e+02, 9.158983116262885e+02, - 9.167552630894709e+02, 9.176076524863394e+02, 9.184555323841272e+02, 9.192989544236332e+02, 9.201379693411430e+02, - 9.209726269896996e+02, 9.218029759471386e+02, 9.226290651681265e+02, 9.234509415827619e+02, 9.242686517116628e+02, - 9.250822412896144e+02, 9.258917552834062e+02, 9.266972379091561e+02, 9.274987326491500e+02, 9.282962822682071e+02, - 9.290899288295868e+02, 9.298797137104588e+02, 9.306656776169417e+02, 9.314478605987302e+02, 9.322263020633260e+02, - 9.330010407898794e+02, 9.337721149426559e+02, 9.345395620841475e+02, 9.353034191878263e+02, 9.360637226505673e+02, - 9.368205083047328e+02, 9.375738114299530e+02, 9.383236667645861e+02, 9.390701085168865e+02, 9.398131703758852e+02, - 9.405528855219897e+02, 9.412892866373060e+02, 9.420224059157105e+02, 9.427522750726558e+02, 9.434789253547336e+02, - 9.442023875490023e+02, 9.449226919920723e+02, 9.456398685789744e+02, 9.463539467718047e+02, 9.470649556081619e+02, - 9.477729237093710e+02, 9.484778792885160e+02, 9.491798501582706e+02, 9.498788637385433e+02, 9.505749470639431e+02, - 9.512681267910592e+02, 9.519584292055766e+02, 9.526458802292167e+02, 9.533305054265203e+02, 9.540123300114678e+02, - 9.546913788539478e+02, 9.553676764860767e+02, 9.560412471083696e+02, 9.567121145957710e+02, 9.573803025035500e+02, - 9.580458340730587e+02, 9.587087322373615e+02, 9.593690196267388e+02, 9.600267185740636e+02, 9.606818511200631e+02, - 9.613344390184600e+02, 9.619845037410025e+02, 9.626320664823819e+02, 9.632771481650425e+02, 9.639197694438877e+02, - 9.645599507108841e+02, 9.651977120995646e+02, 9.658330734894372e+02, 9.664660545102952e+02, 9.670966745464406e+02, - 9.677249527408138e+02, 9.683509079990381e+02, 9.689745589933784e+02, 9.695959241666185e+02, 9.702150217358525e+02, - 9.708318696962056e+02, 9.714464858244702e+02, 9.720588876826722e+02, 9.726690926215606e+02, 9.732771177840297e+02, - 9.738829801084678e+02, 9.744866963320416e+02, 9.750882829939101e+02, 9.756877564383792e+02, 9.762851328179897e+02, - 9.768804280965441e+02, 9.774736580520739e+02, 9.780648382797503e+02, 9.786539841947319e+02, 9.792411110349657e+02, - 9.798262338639221e+02, 9.804093675732880e+02, 9.809905268855995e+02, 9.815697263568292e+02, 9.821469803789180e+02, - 9.827223031822667e+02, 9.832957088381727e+02, 9.838672112612237e+02, 9.844368242116445e+02, 9.850045612976051e+02, - 9.855704359774749e+02, 9.861344615620483e+02, 9.866966512167148e+02, 9.872570179636015e+02, 9.878155746836675e+02, - 9.883723341187633e+02, 9.889273088736512e+02, 9.894805114179915e+02, 9.900319540882876e+02, 9.905816490898015e+02, - 9.911296084984303e+02, 9.916758442625513e+02, 9.922203682048339e+02, 9.927631920240181e+02, 9.933043272966615e+02, - 9.938437854788580e+02, 9.943815779079193e+02, 9.949177158040395e+02, 9.954522102719139e+02, 9.959850723023426e+02, - 9.965163127738030e+02, 9.970459424539910e+02, 9.975739720013382e+02, 9.981004119665076e+02, 9.986252727938534e+02, - 9.991485648228664e+02, 9.996702982895864e+02, 1.000190483327999e+03, 1.000709129971398e+03, 1.001226248153737e+03, - 1.001741847710947e+03, 1.002255938382244e+03, 1.002768529811399e+03, 1.003279631548004e+03, 1.003789253048705e+03, - 1.004297403678420e+03, 1.004804092711533e+03, 1.005309329333077e+03, 1.005813122639883e+03, 1.006315481641727e+03, - 1.006816415262446e+03, 1.007315932341043e+03, 1.007814041632769e+03, 1.008310751810190e+03, 1.008806071464241e+03, - 1.009300009105255e+03, 1.009792573163982e+03, 1.010283771992589e+03, 1.010773613865645e+03, 1.011262106981093e+03, - 1.011749259461198e+03, 1.012235079353495e+03, 1.012719574631705e+03, 1.013202753196650e+03, 1.013684622877149e+03, - 1.014165191430901e+03, 1.014644466545350e+03, 1.015122455838543e+03, 1.015599166859976e+03, 1.016074607091416e+03, - 1.016548783947722e+03, 1.017021704777650e+03, 1.017493376864645e+03, 1.017963807427620e+03, 1.018433003621725e+03, - 1.018900972539108e+03, 1.019367721209653e+03, 1.019833256601725e+03, 1.020297585622884e+03, 1.020760715120604e+03, - 1.021222651882977e+03, 1.021683402639400e+03, 1.022142974061261e+03, 1.022601372762611e+03, 1.023058605300824e+03, - 1.023514678177255e+03, 1.023969597837878e+03, 1.024423370673923e+03, 1.024876003022501e+03, 1.025327501167219e+03, - 1.025777871338787e+03, 1.026227119715619e+03, 1.026675252424421e+03, 1.027122275540774e+03, 1.027568195089704e+03, - 1.028013017046254e+03, 1.028456747336035e+03, 1.028899391835780e+03, 1.029340956373883e+03, 1.029781446730936e+03, - 1.030220868640255e+03, 1.030659227788398e+03, 1.031096529815682e+03, 1.031532780316682e+03, 1.031967984840736e+03, - 1.032402148892435e+03, 1.032835277932104e+03, 1.033267377376285e+03, 1.033698452598208e+03, 1.034128508928253e+03, - 1.034557551654417e+03, 1.034985586022758e+03, 1.035412617237847e+03, 1.035838650463211e+03, 1.036263690821762e+03, - 1.036687743396232e+03, 1.037110813229593e+03, 1.037532905325477e+03, 1.037954024648587e+03, 1.038374176125106e+03, - 1.038793364643097e+03, 1.039211595052900e+03, 1.039628872167524e+03, 1.040045200763032e+03, 1.040460585578922e+03, - 1.040875031318505e+03, 1.041288542649276e+03, 1.041701124203278e+03, 1.042112780577468e+03, 1.042523516334069e+03, - 1.042933336000929e+03, 1.043342244071863e+03, 1.043750245007001e+03, 1.044157343233127e+03, 1.044563543144010e+03, - 1.044968849100740e+03, 1.045373265432053e+03, 1.045776796434652e+03, 1.046179446373528e+03, 1.046581219482270e+03, - 1.046982119963385e+03, 1.047382151988592e+03, 1.047781319699137e+03, 1.048179627206084e+03, 1.048577078590614e+03, - 1.048973677904318e+03, 1.049369429169483e+03, 1.049764336379377e+03, 1.050158403498531e+03, 1.050551634463018e+03, - 1.050944033180727e+03, 1.051335603531630e+03, 1.051726349368059e+03, 1.052116274514961e+03, 1.052505382770165e+03, - 1.052893677904641e+03, 1.053281163662751e+03, 1.053667843762506e+03, 1.054053721895811e+03, 1.054438801728715e+03, - 1.054823086901652e+03, 1.055206581029681e+03, 1.055589287702728e+03, 1.055971210485816e+03, 1.056352352919297e+03, - 1.056732718519085e+03, 1.057112310776883e+03, 1.057491133160401e+03, 1.057869189113585e+03, 1.058246482056828e+03, - 1.058623015387197e+03, 1.058998792478636e+03, 1.059373816682182e+03, 1.059748091326178e+03, 1.060121619716471e+03, - 1.060494405136624e+03, 1.060866450848113e+03, 1.061237760090529e+03, 1.061608336081776e+03, 1.061978182018264e+03 - }, - { - 1.590775797989868e+00, 4.841439857386024e+00, 8.138422289283511e+00, 1.148327283379414e+01, 1.487762321132809e+01, - 1.832319271741514e+01, 2.182179428218253e+01, 2.537534104438713e+01, 2.898585348707979e+01, 3.265546719478144e+01, - 3.638644129499104e+01, 4.018116765537270e+01, 4.404218091620867e+01, 4.797216944715024e+01, 5.197398732794256e+01, - 5.605066746479068e+01, 6.020543596753251e+01, 6.444172792795690e+01, 6.876320475662958e+01, 7.317377325463342e+01, - 7.767760661784858e+01, 8.227916759491065e+01, 8.698323404583635e+01, 9.179492717643278e+01, 9.671974275374629e+01, - 1.017635856394122e+02, 1.069328080098329e+02, 1.122342516629748e+02, 1.176752948383596e+02, 1.232639039959707e+02, - 1.290086910034682e+02, 1.349189761615905e+02, 1.410048574386107e+02, 1.472772861827061e+02, 1.537481492621997e+02, - 1.604303575424629e+02, 1.673379395667849e+02, 1.744861389290379e+02, 1.818915122445750e+02, 1.895720227874620e+02, - 1.975471219848891e+02, 2.058378067949774e+02, 2.144666350152773e+02, 2.234576721508899e+02, 2.328363319395768e+02, - 2.426290574875140e+02, 2.528627714142019e+02, 2.635640033689535e+02, 2.747575871189896e+02, 2.864648178781462e+02, - 2.987009906364933e+02, 3.114723212194401e+02, 3.247723931612198e+02, 3.385784576457237e+02, 3.528480901600623e+02, - 3.675168177491881e+02, 3.824973533563559e+02, 3.976810296939481e+02, 4.129419038772709e+02, 4.281436894955336e+02, - 4.431490357881232e+02, 4.578298267454189e+02, 4.720766523123063e+02, 4.858060864527883e+02, 4.989614578796762e+02, - 5.115115417280101e+02, 5.234468220718380e+02, 5.347743192711546e+02, 5.455125944366981e+02, 5.556876127924778e+02, - 5.653296294493555e+02, 5.744709774147913e+02, 5.831445452652404e+02, 5.913827480523142e+02, 5.992168417011177e+02, - 6.066764837689020e+02, 6.137894733758559e+02, 6.205816247437457e+02, 6.270767393802674e+02, 6.332966488439331e+02, - 6.392613051901221e+02, 6.449889007820358e+02, 6.504960033786695e+02, 6.557976961894350e+02, 6.609077157814268e+02, - 6.658385832808182e+02, 6.706017262456724e+02, 6.752075899788937e+02, 6.796657379970636e+02, 6.839849419755249e+02, - 6.881732618439526e+02, 6.922381168917284e+02, 6.961863487591235e+02, 7.000242773171320e+02, 7.037577501520395e+02, - 7.073921865321875e+02, 7.109326165071435e+02, 7.143837157552346e+02, 7.177498367103948e+02, 7.210350364285954e+02, - 7.242431015916368e+02, 7.273775709917111e+02, 7.304417557932320e+02, 7.334387578284357e+02, 7.363714861489957e+02, - 7.392426720268566e+02, 7.420548825726902e+02, 7.448105331192367e+02, 7.475118984987000e+02, 7.501611233278751e+02, - 7.527602314012830e+02, 7.553111342810698e+02, 7.578156391623824e+02, 7.602754560842205e+02, 7.626922045481290e+02, - 7.650674196004096e+02, 7.674025574276706e+02, 7.696990005103153e+02, 7.719580623740279e+02, 7.741809919752333e+02, - 7.763689777529127e+02, 7.785231513670483e+02, 7.806445912044121e+02, 7.827343255369617e+02, 7.847933355425706e+02, - 7.868225578357116e+02, 7.888228879823545e+02, 7.907951814297506e+02, 7.927402567466538e+02, 7.946588974356774e+02, - 7.965518538726897e+02, 7.984198451296132e+02, 8.002635606498286e+02, 8.020836618194184e+02, 8.038807828505893e+02, - 8.056555340863973e+02, 8.074085008987636e+02, 8.091402462665031e+02, 8.108513116180351e+02, 8.125422179016226e+02, - 8.142134665911244e+02, 8.158655406317687e+02, 8.174989053301597e+02, 8.191140091923161e+02, 8.207112847133204e+02, - 8.222911491218227e+02, 8.238540050824254e+02, 8.254002413587356e+02, 8.269302334396534e+02, 8.284443441407135e+02, - 8.299429241250706e+02, 8.314263124930418e+02, 8.328948372423005e+02, 8.343488157534864e+02, 8.357885552403309e+02, - 8.372143531764796e+02, 8.386264977004295e+02, 8.400252679998886e+02, 8.414109346767875e+02, 8.427837600940925e+02, - 8.441439987054739e+02, 8.454918973688262e+02, 8.468276956445792e+02, 8.481516260796527e+02, 8.494639144778721e+02, - 8.507647801576080e+02, 8.520544361973365e+02, 8.533330896698035e+02, 8.546009418653933e+02, 8.558581885053072e+02, - 8.571050199450860e+02, 8.583416213689929e+02, 8.595681729757445e+02, 8.607848501560395e+02, 8.619918236623108e+02, - 8.631892597711040e+02, 8.643773204384592e+02, 8.655561634486495e+02, 8.667259425566152e+02, 8.678868076244030e+02, - 8.690389047519114e+02, 8.701823764022232e+02, 8.713173615217836e+02, 8.724439956556837e+02, 8.735624110582747e+02, - 8.746727367993417e+02, 8.757750985504935e+02, 8.768696199199105e+02, 8.779564207277658e+02, 8.790356182855759e+02, - 8.801073271915184e+02, 8.811716594140022e+02, 8.822287243720489e+02, 8.832786290126365e+02, 8.843214778851341e+02, - 8.853573732129622e+02, 8.863864149625981e+02, 8.874087009100447e+02, 8.884243267048734e+02, 8.894333859319422e+02, - 8.904359701708938e+02, 8.914321690535271e+02, 8.924220703191264e+02, 8.934057598678496e+02, 8.943833218122311e+02, - 8.953548385269085e+02, 8.963203906966220e+02, 8.972800573625652e+02, 8.982339159671624e+02, 8.991820423973228e+02, - 9.001245110262406e+02, 9.010613947538021e+02, 9.019927650456430e+02, 9.029186919709249e+02, 9.038392442388673e+02, - 9.047544892340927e+02, 9.056644930508290e+02, 9.065693205260044e+02, 9.074690352712965e+02, 9.083636997041527e+02, - 9.092533750778371e+02, 9.101381215105350e+02, 9.110179980135462e+02, 9.118930625186111e+02, 9.127633719043896e+02, - 9.136289823291213e+02, 9.144899480426020e+02, 9.153463232076422e+02, 9.161981607396305e+02, 9.170455126216995e+02, - 9.178884299267644e+02, 9.187269624337927e+02, 9.195611602507894e+02, 9.203910714584085e+02, 9.212167436963884e+02, - 9.220382237951221e+02, 9.228555577941218e+02, 9.236687909599489e+02, 9.244779678036406e+02, 9.252831320976436e+02, - 9.260843268922756e+02, 9.268815945317228e+02, 9.276749766696003e+02, 9.284645142840762e+02, 9.292502476925912e+02, - 9.300322165661672e+02, 9.308104599433328e+02, 9.315850162436741e+02, 9.323559232810177e+02, 9.331232182762704e+02, - 9.338869378699070e+02, 9.346471181341384e+02, 9.354037945847548e+02, 9.361570021926635e+02, 9.369067753951234e+02, - 9.376531481066917e+02, 9.383961537298883e+02, 9.391358251655892e+02, 9.398721948231537e+02, 9.406052946302951e+02, - 9.413351560427047e+02, 9.420618100534371e+02, 9.427852872020519e+02, 9.435056175835421e+02, 9.442228308570335e+02, - 9.449369562542718e+02, 9.456480225879067e+02, 9.463560582595671e+02, 9.470610912677513e+02, 9.477631492155159e+02, - 9.484622593179929e+02, 9.491584484097159e+02, 9.498517429517813e+02, 9.505421690388373e+02, 9.512297524059069e+02, - 9.519145184350560e+02, 9.525964921619041e+02, 9.532756982819809e+02, 9.539521611569448e+02, 9.546259048206495e+02, - 9.552969529850809e+02, 9.559653290461495e+02, 9.566310560893639e+02, 9.572941568953643e+02, 9.579546539453412e+02, - 9.586125694263288e+02, 9.592679252363828e+02, 9.599207429896419e+02, 9.605710440212796e+02, 9.612188493923499e+02, - 9.618641798945193e+02, 9.625070560547082e+02, 9.631474981396190e+02, 9.637855261601784e+02, 9.644211598758777e+02, - 9.650544187990212e+02, 9.656853221988872e+02, 9.663138891057997e+02, 9.669401383151129e+02, 9.675640883911165e+02, - 9.681857576708522e+02, 9.688051642678610e+02, 9.694223260758431e+02, 9.700372607722486e+02, 9.706499858217942e+02, - 9.712605184799052e+02, 9.718688757960883e+02, 9.724750746172397e+02, 9.730791315908817e+02, 9.736810631683372e+02, - 9.742808856078399e+02, 9.748786149775830e+02, 9.754742671587055e+02, 9.760678578482245e+02, 9.766594025619027e+02, - 9.772489166370660e+02, 9.778364152353637e+02, 9.784219133454732e+02, 9.790054257857552e+02, 9.795869672068584e+02, - 9.801665520942703e+02, 9.807441947708221e+02, 9.813199093991453e+02, 9.818937099840829e+02, 9.824656103750526e+02, - 9.830356242683662e+02, 9.836037652095063e+02, 9.841700465953636e+02, 9.847344816764236e+02, 9.852970835589225e+02, - 9.858578652069580e+02, 9.864168394445626e+02, 9.869740189577387e+02, 9.875294162964552e+02, 9.880830438766131e+02, - 9.886349139819681e+02, 9.891850387660226e+02, 9.897334302538851e+02, 9.902801003440925e+02, 9.908250608104025e+02, - 9.913683233035532e+02, 9.919098993529909e+02, 9.924498003685699e+02, 9.929880376422201e+02, 9.935246223495835e+02, - 9.940595655516287e+02, 9.945928781962309e+02, 9.951245711197281e+02, 9.956546550484455e+02, 9.961831406002034e+02, - 9.967100382857870e+02, 9.972353585104032e+02, 9.977591115751012e+02, 9.982813076781774e+02, 9.988019569165536e+02, - 9.993210692871321e+02, 9.998386546881255e+02, 1.000354722920371e+03, 1.000869283688613e+03, 1.001382346602775e+03, - 1.001893921179203e+03, 1.002404016841891e+03, 1.002912642923684e+03, 1.003419808667466e+03, 1.003925523227328e+03, - 1.004429795669709e+03, 1.004932634974526e+03, 1.005434050036289e+03, 1.005934049665188e+03, 1.006432642588171e+03, - 1.006929837449995e+03, 1.007425642814277e+03, 1.007920067164509e+03, 1.008413118905071e+03, 1.008904806362219e+03, - 1.009395137785066e+03, 1.009884121346538e+03, 1.010371765144323e+03, 1.010858077201802e+03, 1.011343065468964e+03, - 1.011826737823311e+03, 1.012309102070741e+03, 1.012790165946432e+03, 1.013269937115695e+03, 1.013748423174827e+03, - 1.014225631651945e+03, 1.014701570007807e+03, 1.015176245636625e+03, 1.015649665866860e+03, 1.016121837962012e+03, - 1.016592769121390e+03, 1.017062466480876e+03, 1.017530937113676e+03, 1.017998188031061e+03, 1.018464226183094e+03, - 1.018929058459351e+03, 1.019392691689626e+03, 1.019855132644630e+03, 1.020316388036675e+03, 1.020776464520356e+03, - 1.021235368693215e+03, 1.021693107096398e+03, 1.022149686215303e+03, 1.022605112480222e+03, 1.023059392266965e+03, - 1.023512531897486e+03, 1.023964537640489e+03, 1.024415415712034e+03, 1.024865172276133e+03, 1.025313813445330e+03, - 1.025761345281285e+03, 1.026207773795338e+03, 1.026653104949075e+03, 1.027097344654876e+03, 1.027540498776467e+03, - 1.027982573129453e+03, 1.028423573481854e+03, 1.028863505554621e+03, 1.029302375022160e+03, 1.029740187512835e+03, - 1.030176948609473e+03, 1.030612663849859e+03, 1.031047338727223e+03, 1.031480978690724e+03, 1.031913589145922e+03, - 1.032345175455250e+03, 1.032775742938474e+03, 1.033205296873153e+03, 1.033633842495081e+03, 1.034061384998742e+03, - 1.034487929537739e+03, 1.034913481225230e+03, 1.035338045134356e+03, 1.035761626298659e+03, 1.036184229712500e+03, - 1.036605860331464e+03, 1.037026523072773e+03, 1.037446222815676e+03, 1.037864964401849e+03, 1.038282752635781e+03, - 1.038699592285160e+03, 1.039115488081250e+03, 1.039530444719265e+03, 1.039944466858738e+03, 1.040357559123889e+03, - 1.040769726103977e+03, 1.041180972353665e+03, 1.041591302393361e+03, 1.042000720709570e+03, 1.042409231755234e+03, - 1.042816839950069e+03, 1.043223549680900e+03, 1.043629365301987e+03, 1.044034291135351e+03, 1.044438331471098e+03, - 1.044841490567730e+03, 1.045243772652460e+03, 1.045645181921523e+03, 1.046045722540480e+03, 1.046445398644518e+03, - 1.046844214338747e+03, 1.047242173698498e+03, 1.047639280769610e+03, 1.048035539568714e+03, 1.048430954083525e+03, - 1.048825528273111e+03, 1.049219266068180e+03, 1.049612171371345e+03, 1.050004248057397e+03, 1.050395499973570e+03, - 1.050785930939808e+03, 1.051175544749022e+03, 1.051564345167345e+03, 1.051952335934392e+03, 1.052339520763506e+03, - 1.052725903342008e+03, 1.053111487331442e+03, 1.053496276367814e+03, 1.053880274061836e+03, 1.054263483999163e+03, - 1.054645909740618e+03, 1.055027554822434e+03, 1.055408422756474e+03, 1.055788517030464e+03, 1.056167841108207e+03, - 1.056546398429811e+03, 1.056924192411903e+03, 1.057301226447847e+03, 1.057677503907952e+03, 1.058053028139689e+03, - 1.058427802467892e+03, 1.058801830194972e+03, 1.059175114601110e+03, 1.059547658944468e+03, 1.059919466461379e+03 - }, - { - 1.585873068231488e+00, 4.826166325931508e+00, 8.112133828718001e+00, 1.144528199455066e+01, 1.482719568282809e+01, - 1.825954344170419e+01, 2.174408318040999e+01, 2.528266831138267e+01, 2.887725440332230e+01, 3.252990639832674e+01, - 3.624280644813273e+01, 4.001826243185709e+01, 4.385871722449863e+01, 4.776675879330496e+01, 5.174513120788263e+01, - 5.579674665973099e+01, 5.992469859781526e+01, 6.413227609896320e+01, 6.842297960537149e+01, 7.280053817642202e+01, - 7.726892841838566e+01, 8.183239527343379e+01, 8.649547486860236e+01, 9.126301964575174e+01, 9.614022601473295e+01, - 1.011326647932196e+02, 1.062463147168743e+02, 1.114875993209507e+02, 1.168634275064686e+02, 1.223812381066009e+02, - 1.280490487567517e+02, 1.338755093349419e+02, 1.398699601673023e+02, 1.460424950816875e+02, 1.524040290913953e+02, - 1.589663704300108e+02, 1.657422957704322e+02, 1.727456270764694e+02, 1.799913072876839e+02, 1.874954704853266e+02, - 1.952754999389171e+02, 2.033500642023814e+02, 2.117391169115261e+02, 2.204638397127106e+02, 2.295464994073669e+02, - 2.390101796398701e+02, 2.488783344545901e+02, 2.591740970418774e+02, 2.699192652906362e+02, 2.811328829759593e+02, - 2.928293521831914e+02, 3.050160620098205e+02, 3.176906102514318e+02, 3.308378239753402e+02, 3.444269243622708e+02, - 3.584092872783355e+02, 3.727172885405643e+02, 3.872646877466017e+02, 4.019489105748098e+02, 4.166554195562534e+02, - 4.312640534811179e+02, 4.456567387693307e+02, 4.597254642720150e+02, 4.733792296687823e+02, 4.865489549156937e+02, - 4.991878239715429e+02, 5.112701083300512e+02, 5.227879776745544e+02, 5.337473670458685e+02, 5.441639832052455e+02, - 5.540599570061719e+02, 5.634612803202839e+02, 5.723959520680296e+02, 5.808926790852408e+02, 5.889799796808975e+02, - 5.966855722454345e+02, 6.040359673157188e+02, 6.110562096901725e+02, 6.177697335341819e+02, 6.241983032464773e+02, - 6.303620182086363e+02, 6.362793632456613e+02, 6.419672897480521e+02, 6.474413153468277e+02, 6.527156327995519e+02, - 6.578032212291254e+02, 6.627159549642148e+02, 6.674647069223965e+02, 6.720594447740692e+02, 6.765093190203833e+02, - 6.808227428922066e+02, 6.850074641801341e+02, 6.890706295750427e+02, 6.930188420962133e+02, 6.968582122786751e+02, - 7.005944037823592e+02, 7.042326740517620e+02, 7.077779106043198e+02, 7.112346634680092e+02, 7.146071742301103e+02, - 7.178994021031320e+02, 7.211150473624944e+02, 7.242575724646164e+02, 7.273302211135829e+02, 7.303360355094139e+02, - 7.332778719806067e+02, 7.361584151775263e+02, 7.389801909808917e+02, 7.417455782603918e+02, 7.444568196020723e+02, - 7.471160311089402e+02, 7.497252113670819e+02, 7.522862496590251e+02, 7.548009334969254e+02, 7.572709555401989e+02, - 7.596979199552466e+02, 7.620833482688245e+02, 7.644286847612259e+02, 7.667353014407242e+02, 7.690045026275411e+02, - 7.712375292357547e+02, 7.734355626435793e+02, 7.755997283693413e+02, 7.777310994324412e+02, 7.798306994809737e+02, - 7.818995054931621e+02, 7.839384513160676e+02, 7.859484288734349e+02, 7.879302914058442e+02, 7.898848554150060e+02, - 7.918129027042207e+02, 7.937151822839564e+02, 7.955924121296241e+02, 7.974452808360944e+02, 7.992744484988381e+02, - 8.010805503710908e+02, 8.028641954349927e+02, 8.046259692789611e+02, 8.063664349426251e+02, 8.080861340403791e+02, - 8.097855878171717e+02, 8.114652981412712e+02, 8.131257484383887e+02, 8.147674045712154e+02, 8.163907156680596e+02, - 8.179961149040481e+02, 8.195840202380439e+02, 8.211548351082106e+02, 8.227089490983512e+02, 8.242467385199611e+02, - 8.257685670590861e+02, 8.272747862904322e+02, 8.287657362136754e+02, 8.302417457513060e+02, 8.317031332203785e+02, - 8.331502067797708e+02, 8.345832648544475e+02, 8.360025965380985e+02, 8.374084819754527e+02, 8.388011927254629e+02, - 8.401809921064950e+02, 8.415481355245438e+02, 8.429028707854796e+02, 8.442454383922195e+02, 8.455760718276802e+02, - 8.468949978243168e+02, 8.482024366209848e+02, 8.494986022078325e+02, 8.507837025598729e+02, 8.520579398598547e+02, - 8.533215107110034e+02, 8.545746063401795e+02, 8.558174127919502e+02, 8.570501111140684e+02, 8.582728775347919e+02, - 8.594858836324703e+02, 8.606892964978001e+02, 8.618832788891125e+02, 8.630679893810558e+02, 8.642435825069947e+02, - 8.654102088954445e+02, 8.665680154008318e+02, 8.677171452288616e+02, 8.688577380567499e+02, 8.699899301485759e+02, - 8.711138544659794e+02, 8.722296407744301e+02, 8.733374154149435e+02, 8.744373026973502e+02, 8.755294230892841e+02, - 8.766138945526802e+02, 8.776908323251441e+02, 8.787603490036632e+02, 8.798225546251406e+02, 8.808775567438817e+02, - 8.819254605061877e+02, 8.829663687221710e+02, 8.840003819349174e+02, 8.850275984871147e+02, 8.860481145852548e+02, - 8.870620243615141e+02, 8.880694199334115e+02, 8.890703914613387e+02, 8.900650272040530e+02, 8.910534135722213e+02, - 8.920356351800859e+02, 8.930117748953436e+02, 8.939819138873046e+02, 8.949461316733970e+02, 8.959045061640961e+02, - 8.968571137063308e+02, 8.978040291254348e+02, 8.987453257656969e+02, 8.996810755295687e+02, 9.006113489155796e+02, - 9.015362150550155e+02, 9.024557417473999e+02, 9.033699954948306e+02, 9.042790415352172e+02, 9.051829438744538e+02, - 9.060817653175764e+02, 9.069755674989349e+02, 9.078644109114232e+02, 9.087483549347961e+02, 9.096274578631183e+02, - 9.105017769313590e+02, 9.113713683411833e+02, 9.122362872859552e+02, 9.130965883219017e+02, 9.139523240203532e+02, - 9.148035470234587e+02, 9.156503087267365e+02, 9.164926592159439e+02, 9.173306489321324e+02, 9.181643262528817e+02, - 9.189937391201686e+02, 9.198189346617772e+02, 9.206399592098536e+02, 9.214568583189335e+02, 9.222696767834553e+02, - 9.230784586547817e+02, 9.238832472577453e+02, 9.246840852067364e+02, 9.254810144213395e+02, 9.262740761415424e+02, - 9.270633109425326e+02, 9.278487587490845e+02, 9.286304588495606e+02, 9.294084499095361e+02, 9.301827699850552e+02, - 9.309534565355403e+02, 9.317205464363522e+02, 9.324840759910228e+02, 9.332440809431691e+02, 9.340005964880943e+02, - 9.347536572840834e+02, 9.355032974634177e+02, 9.362495506430970e+02, 9.369924499352944e+02, 9.377320279575400e+02, - 9.384683168426534e+02, 9.392013482484199e+02, 9.399311533670309e+02, 9.406577629342841e+02, 9.413812072385592e+02, - 9.421015161295703e+02, 9.428187190269082e+02, 9.435328449283656e+02, 9.442439224180698e+02, 9.449519796744125e+02, - 9.456570444777926e+02, 9.463591442181720e+02, 9.470583059024500e+02, 9.477545561616693e+02, 9.484479212580435e+02, - 9.491384270918275e+02, 9.498260992080213e+02, 9.505109628029236e+02, 9.511930427305288e+02, 9.518723635087809e+02, - 9.525489493256819e+02, 9.532228240452591e+02, 9.538940112134043e+02, 9.545625340635703e+02, 9.552284155223493e+02, - 9.558916782149213e+02, 9.565523444703801e+02, 9.572104363269459e+02, 9.578659755370572e+02, 9.585189835723585e+02, - 9.591694816285664e+02, 9.598174906302463e+02, 9.604630312354690e+02, 9.611061238403801e+02, 9.617467885836606e+02, - 9.623850453509020e+02, 9.630209137788795e+02, 9.636544132597390e+02, 9.642855629450963e+02, 9.649143817500475e+02, - 9.655408883570975e+02, 9.661651012200045e+02, 9.667870385675493e+02, 9.674067184072195e+02, 9.680241585288228e+02, - 9.686393765080280e+02, 9.692523897098296e+02, 9.698632152919415e+02, 9.704718702081259e+02, 9.710783712114538e+02, - 9.716827348574984e+02, 9.722849775074659e+02, 9.728851153312639e+02, 9.734831643105097e+02, 9.740791402414778e+02, - 9.746730587379902e+02, 9.752649352342507e+02, 9.758547849876220e+02, 9.764426230813524e+02, 9.770284644272441e+02, - 9.776123237682781e+02, 9.781942156811797e+02, 9.787741545789418e+02, 9.793521547132976e+02, 9.799282301771476e+02, - 9.805023949069348e+02, 9.810746626849885e+02, 9.816450471418077e+02, 9.822135617583147e+02, 9.827802198680608e+02, - 9.833450346593914e+02, 9.839080191775752e+02, 9.844691863268873e+02, 9.850285488726604e+02, 9.855861194432964e+02, - 9.861419105322392e+02, 9.866959344999162e+02, 9.872482035756417e+02, 9.877987298594842e+02, 9.883475253241079e+02, - 9.888946018165719e+02, 9.894399710601026e+02, 9.899836446558369e+02, 9.905256340845268e+02, 9.910659507082232e+02, - 9.916046057719217e+02, 9.921416104051906e+02, 9.926769756237541e+02, 9.932107123310668e+02, 9.937428313198470e+02, - 9.942733432735895e+02, 9.948022587680525e+02, 9.953295882727175e+02, 9.958553421522251e+02, 9.963795306677863e+02, - 9.969021639785701e+02, 9.974232521430674e+02, 9.979428051204327e+02, 9.984608327718030e+02, 9.989773448615925e+02, - 9.994923510587716e+02, 1.000005860938118e+03, 1.000517883981451e+03, 1.001028429578844e+03, 1.001537507029821e+03, - 1.002045125544525e+03, 1.002551294244877e+03, 1.003056022165711e+03, 1.003559318255890e+03, 1.004061191379408e+03, - 1.004561650316468e+03, 1.005060703764553e+03, 1.005558360339465e+03, 1.006054628576366e+03, 1.006549516930783e+03, - 1.007043033779613e+03, 1.007535187422103e+03, 1.008025986080817e+03, 1.008515437902593e+03, 1.009003550959472e+03, - 1.009490333249631e+03, 1.009975792698280e+03, 1.010459937158568e+03, 1.010942774412457e+03, 1.011424312171589e+03, - 1.011904558078144e+03, 1.012383519705678e+03, 1.012861204559950e+03, 1.013337620079743e+03, 1.013812773637660e+03, - 1.014286672540922e+03, 1.014759324032142e+03, 1.015230735290096e+03, 1.015700913430479e+03, 1.016169865506645e+03, - 1.016637598510351e+03, 1.017104119372469e+03, 1.017569434963706e+03, 1.018033552095302e+03, 1.018496477519723e+03, - 1.018958217931343e+03, 1.019418779967116e+03, 1.019878170207236e+03, 1.020336395175789e+03, 1.020793461341400e+03, - 1.021249375117861e+03, 1.021704142864761e+03, 1.022157770888097e+03, 1.022610265440882e+03, 1.023061632723747e+03, - 1.023511878885525e+03, 1.023961010023837e+03, 1.024409032185661e+03, 1.024855951367902e+03, 1.025301773517944e+03, - 1.025746504534205e+03, 1.026190150266672e+03, 1.026632716517444e+03, 1.027074209041248e+03, 1.027514633545971e+03, - 1.027953995693160e+03, 1.028392301098538e+03, 1.028829555332494e+03, 1.029265763920581e+03, 1.029700932343997e+03, - 1.030135066040067e+03, 1.030568170402709e+03, 1.031000250782905e+03, 1.031431312489160e+03, 1.031861360787951e+03, - 1.032290400904178e+03, 1.032718438021602e+03, 1.033145477283284e+03, 1.033571523792011e+03, 1.033996582610720e+03, - 1.034420658762919e+03, 1.034843757233095e+03, 1.035265882967127e+03, 1.035687040872682e+03, 1.036107235819614e+03, - 1.036526472640358e+03, 1.036944756130312e+03, 1.037362091048220e+03, 1.037778482116551e+03, 1.038193934021866e+03, - 1.038608451415190e+03, 1.039022038912366e+03, 1.039434701094423e+03, 1.039846442507919e+03, 1.040257267665298e+03, - 1.040667181045227e+03, 1.041076187092938e+03, 1.041484290220567e+03, 1.041891494807478e+03, 1.042297805200597e+03, - 1.042703225714729e+03, 1.043107760632882e+03, 1.043511414206576e+03, 1.043914190656161e+03, 1.044316094171119e+03, - 1.044717128910366e+03, 1.045117299002560e+03, 1.045516608546385e+03, 1.045915061610853e+03, 1.046312662235587e+03, - 1.046709414431109e+03, 1.047105322179121e+03, 1.047500389432781e+03, 1.047894620116982e+03, 1.048288018128622e+03, - 1.048680587336867e+03, 1.049072331583425e+03, 1.049463254682803e+03, 1.049853360422563e+03, 1.050242652563586e+03, - 1.050631134840314e+03, 1.051018810961009e+03, 1.051405684607994e+03, 1.051791759437897e+03, 1.052177039081896e+03, - 1.052561527145951e+03, 1.052945227211047e+03, 1.053328142833416e+03, 1.053710277544777e+03, 1.054091634852556e+03, - 1.054472218240116e+03, 1.054852031166972e+03, 1.055231077069018e+03, 1.055609359358738e+03, 1.055986881425421e+03, - 1.056363646635374e+03, 1.056739658332135e+03, 1.057114919836671e+03, 1.057489434447592e+03, 1.057863205441345e+03 - }, - { - 1.581000821479917e+00, 4.810992263601546e+00, 8.086024596559421e+00, 1.140756217710293e+01, 1.477714441838621e+01, - 1.819639071051962e+01, 2.166700572957365e+01, 2.519078517525448e+01, 2.876962197301482e+01, 3.240551298773669e+01, - 3.610056629706752e+01, 3.985700907885531e+01, 4.367719617281303e+01, 4.756361938301642e+01, 5.151891759502129e+01, - 5.554588778933703e+01, 5.964749704177430e+01, 6.382689561084676e+01, 6.808743122299008e+01, 7.243266467788224e+01, - 7.686638690858175e+01, 8.139263764446902e+01, 8.601572583890731e+01, 9.074025203783886e+01, 9.557113287971123e+01, - 1.005136279304293e+02, 1.055733690682987e+02, 1.107563926414685e+02, 1.160691746216858e+02, 1.215186689696726e+02, - 1.271123494037191e+02, 1.328582547175239e+02, 1.387650377137521e+02, 1.448420177069519e+02, 1.510992362686069e+02, - 1.575475158300260e+02, 1.641985199575736e+02, 1.710648138434512e+02, 1.781599224252111e+02, 1.854983823799571e+02, - 1.930957823805788e+02, 2.009687835217763e+02, 2.091351083728706e+02, 2.176134824742882e+02, 2.264235059906965e+02, - 2.355854255055109e+02, 2.451197667307324e+02, 2.550467790352298e+02, 2.653856342643371e+02, 2.761533194720495e+02, - 2.873631726410351e+02, 2.990230409733297e+02, 3.111331006595992e+02, 3.236834657961090e+02, 3.366518191093845e+02, - 3.500013903006239e+02, 3.636796571748592e+02, 3.776181324146866e+02, 3.917335290503847e+02, 4.059304801819174e+02, - 4.201058128058540e+02, 4.341541169333485e+02, 4.479740253374037e+02, 4.614743318991674e+02, 4.745790621435439e+02, - 4.872307421768918e+02, 4.993905508257234e+02, 5.110371906759174e+02, 5.221642004213568e+02, 5.327766361899859e+02, - 5.428878618868995e+02, 5.525168275122586e+02, 5.616859514330589e+02, 5.704195613831050e+02, 5.787427827727374e+02, - 5.866807579027885e+02, 5.942581020424443e+02, 6.014985297716995e+02, 6.084246069715061e+02, 6.150575984185377e+02, - 6.214173891893815e+02, 6.275224627365550e+02, 6.333899213067476e+02, 6.390355365443758e+02, 6.444738201364914e+02, - 6.497181063194364e+02, 6.547806399335699e+02, 6.596726653488960e+02, 6.644045131059507e+02, 6.689856820836631e+02, - 6.734249160597893e+02, 6.777302740637646e+02, 6.819091944057186e+02, 6.859685525545930e+02, 6.899147132178281e+02, - 6.937535770716852e+02, 6.974906226307382e+02, 7.011309437469179e+02, 7.046792832072583e+02, 7.081400628652982e+02, - 7.115174107009148e+02, 7.148151851616441e+02, 7.180369970981462e+02, 7.211862295688348e+02, 7.242660557546671e+02, - 7.272794551947916e+02, 7.302292285272356e+02, 7.331180108956572e+02, 7.359482841632068e+02, 7.387223880572396e+02, - 7.414425303537352e+02, 7.441107961974043e+02, 7.467291566423526e+02, 7.492994764885623e+02, 7.518235214810563e+02, - 7.543029649313579e+02, 7.567393938144828e+02, 7.591343143891089e+02, 7.614891573756494e+02, 7.638052827796960e+02, - 7.660839842704372e+02, 7.683264933151277e+02, 7.705339829677698e+02, 7.727075713905623e+02, 7.748483249144481e+02, - 7.769572619337717e+02, 7.790353543945229e+02, 7.810835313442641e+02, 7.831026811376678e+02, 7.850936537174855e+02, - 7.870572627540326e+02, 7.889942876264469e+02, 7.909054752687729e+02, 7.927915419039736e+02, 7.946531738958749e+02, - 7.964910318554155e+02, 7.983057487478418e+02, 8.000979331541810e+02, 8.018681700981900e+02, 8.036170222230385e+02, - 8.053450308970239e+02, 8.070527172532777e+02, 8.087405831680524e+02, 8.104091121817935e+02, 8.120587703669033e+02, - 8.136900071457708e+02, 8.153032560623938e+02, 8.168989355200183e+02, 8.184774494303799e+02, 8.200391879231680e+02, - 8.215845279194566e+02, 8.231138337235629e+02, 8.246274575731894e+02, 8.261257401604064e+02, 8.276090111252893e+02, - 8.290775895238655e+02, 8.305317842719502e+02, 8.319718945663178e+02, 8.333982102845573e+02, 8.348110123648830e+02, - 8.362105731670675e+02, 8.375971568155913e+02, 8.389710195260516e+02, 8.403324099157642e+02, 8.416815692994733e+02, - 8.430187319709946e+02, 8.443441254715800e+02, 8.456579708457341e+02, 8.469604828851793e+02, 8.482518703615970e+02, - 8.495323362487716e+02, 8.508020779346825e+02, 8.520612874240946e+02, 8.533101515321359e+02, 8.545488520693361e+02, - 8.557775660185797e+02, 8.569964657043594e+02, 8.582057189547645e+02, 8.594054892565333e+02, 8.605959359035422e+02, - 8.617772141390466e+02, 8.629494752919918e+02, 8.641128669076732e+02, 8.652675328730347e+02, 8.664136135368549e+02, - 8.675512458250689e+02, 8.686805633514597e+02, 8.698016962036387e+02, 8.709147723009521e+02, 8.720199156454033e+02, - 8.731172476238291e+02, 8.742068868021717e+02, 8.752889490125856e+02, 8.763635474372330e+02, 8.774307926888981e+02, - 8.784907928885717e+02, 8.795436537401438e+02, 8.805894786023218e+02, 8.816283685579019e+02, 8.826604224805116e+02, - 8.836857370989234e+02, 8.847044070590580e+02, 8.857165249837589e+02, 8.867221815304456e+02, 8.877214654467315e+02, - 8.887144636240868e+02, 8.897012611496343e+02, 8.906819413561526e+02, 8.916565858703576e+02, 8.926252746595336e+02, - 8.935880860765893e+02, 8.945450969035859e+02, 8.954963823938111e+02, 8.964420163124552e+02, 8.973820709759397e+02, - 8.983166172899510e+02, 8.992457247862399e+02, 9.001694616582220e+02, 9.010878947954305e+02, 9.020010898168684e+02, - 9.029091111032973e+02, 9.038120218285043e+02, 9.047098839895876e+02, 9.056027584362952e+02, 9.064907048994507e+02, - 9.073737820185042e+02, 9.082520473682373e+02, 9.091255574846519e+02, 9.099943678900783e+02, 9.108585331175225e+02, - 9.117181067342852e+02, 9.125731417551854e+02, 9.134236887132322e+02, 9.142697995844187e+02, 9.151115239053869e+02, - 9.159489107454517e+02, 9.167820083360106e+02, 9.176108640897340e+02, 9.184355246191994e+02, 9.192560357550008e+02, - 9.200724425633446e+02, 9.208847893631529e+02, 9.216931197426849e+02, 9.224974765756984e+02, 9.232979020371695e+02, - 9.240944376185677e+02, 9.248871241427271e+02, 9.256760017783047e+02, 9.264611100538517e+02, 9.272424878715024e+02, - 9.280201735203033e+02, 9.287942046891803e+02, 9.295646184795693e+02, 9.303314514177075e+02, 9.310947394666106e+02, - 9.318545180377309e+02, 9.326108220023189e+02, 9.333636857024884e+02, 9.341131429619992e+02, 9.348592270967645e+02, - 9.356019709250927e+02, 9.363414067776695e+02, 9.370775665072897e+02, 9.378104814983441e+02, 9.385401826760736e+02, - 9.392667005155945e+02, 9.399900650506968e+02, 9.407103058824308e+02, 9.414274521874852e+02, 9.421415327263610e+02, - 9.428525758513455e+02, 9.435606095142984e+02, 9.442656612742516e+02, 9.449677583048259e+02, 9.456669274014733e+02, - 9.463631949885507e+02, 9.470565871262235e+02, 9.477471295172141e+02, 9.484348475133872e+02, 9.491197661221871e+02, - 9.498019100129270e+02, 9.504813035229329e+02, 9.511579706635465e+02, 9.518319351259960e+02, 9.525032202871281e+02, - 9.531718492150204e+02, 9.538378446744557e+02, 9.545012291322882e+02, 9.551620247626804e+02, 9.558202534522284e+02, - 9.564759368049750e+02, 9.571290961473142e+02, 9.577797525327833e+02, 9.584279267467602e+02, 9.590736393110498e+02, - 9.597169104883800e+02, 9.603577602867954e+02, 9.609962084639627e+02, 9.616322745313797e+02, 9.622659777584995e+02, - 9.628973371767673e+02, 9.635263715835697e+02, 9.641530995461062e+02, 9.647775394051782e+02, 9.653997092788969e+02, - 9.660196270663209e+02, 9.666373104510169e+02, 9.672527769045431e+02, 9.678660436898696e+02, 9.684771278647240e+02, - 9.690860462848723e+02, 9.696928156073329e+02, 9.702974522935272e+02, 9.708999726123646e+02, 9.715003926432742e+02, - 9.720987282791641e+02, 9.726949952293363e+02, 9.732892090223339e+02, 9.738813850087392e+02, 9.744715383639133e+02, - 9.750596840906858e+02, 9.756458370219913e+02, 9.762300118234554e+02, 9.768122229959321e+02, 9.773924848779902e+02, - 9.779708116483583e+02, 9.785472173283148e+02, 9.791217157840430e+02, 9.796943207289346e+02, 9.802650457258513e+02, - 9.808339041893521e+02, 9.814009093878636e+02, 9.819660744458275e+02, 9.825294123457975e+02, 9.830909359305020e+02, - 9.836506579048668e+02, 9.842085908380041e+02, 9.847647471651641e+02, 9.853191391896498e+02, 9.858717790847006e+02, - 9.864226788953387e+02, 9.869718505401838e+02, 9.875193058132389e+02, 9.880650563856390e+02, 9.886091138073725e+02, - 9.891514895089703e+02, 9.896921948031678e+02, 9.902312408865358e+02, 9.907686388410841e+02, 9.913043996358358e+02, - 9.918385341283762e+02, 9.923710530663753e+02, 9.929019670890817e+02, 9.934312867287935e+02, 9.939590224123025e+02, - 9.944851844623161e+02, 9.950097830988522e+02, 9.955328284406127e+02, 9.960543305063329e+02, 9.965742992161103e+02, - 9.970927443927065e+02, 9.976096757628349e+02, 9.981251029584195e+02, 9.986390355178380e+02, 9.991514828871417e+02, - 9.996624544212577e+02, 1.000171959385170e+03, 1.000680006955079e+03, 1.001186606219550e+03, 1.001691766180634e+03, - 1.002195495754973e+03, 1.002697803774895e+03, 1.003198698989479e+03, 1.003698190065613e+03, 1.004196285589030e+03, - 1.004692994065332e+03, 1.005188323920989e+03, 1.005682283504335e+03, 1.006174881086539e+03, 1.006666124862559e+03, - 1.007156022952095e+03, 1.007644583400509e+03, 1.008131814179744e+03, 1.008617723189222e+03, 1.009102318256733e+03, - 1.009585607139306e+03, 1.010067597524069e+03, 1.010548297029095e+03, 1.011027713204235e+03, 1.011505853531942e+03, - 1.011982725428075e+03, 1.012458336242698e+03, 1.012932693260865e+03, 1.013405803703390e+03, 1.013877674727610e+03, - 1.014348313428136e+03, 1.014817726837587e+03, 1.015285921927323e+03, 1.015752905608159e+03, 1.016218684731071e+03, - 1.016683266087895e+03, 1.017146656412010e+03, 1.017608862379017e+03, 1.018069890607400e+03, 1.018529747659191e+03, - 1.018988440040605e+03, 1.019445974202692e+03, 1.019902356541952e+03, 1.020357593400964e+03, 1.020811691068993e+03, - 1.021264655782593e+03, 1.021716493726199e+03, 1.022167211032713e+03, 1.022616813784083e+03, 1.023065308011869e+03, - 1.023512699697803e+03, 1.023958994774347e+03, 1.024404199125232e+03, 1.024848318586000e+03, 1.025291358944533e+03, - 1.025733325941577e+03, 1.026174225271253e+03, 1.026614062581573e+03, 1.027052843474936e+03, 1.027490573508624e+03, - 1.027927258195295e+03, 1.028362903003453e+03, 1.028797513357938e+03, 1.029231094640381e+03, 1.029663652189674e+03, - 1.030095191302425e+03, 1.030525717233405e+03, 1.030955235195994e+03, 1.031383750362620e+03, 1.031811267865188e+03, - 1.032237792795511e+03, 1.032663330205723e+03, 1.033087885108705e+03, 1.033511462478487e+03, 1.033934067250653e+03, - 1.034355704322743e+03, 1.034776378554647e+03, 1.035196094768990e+03, 1.035614857751518e+03, 1.036032672251481e+03, - 1.036449542982000e+03, 1.036865474620438e+03, 1.037280471808768e+03, 1.037694539153930e+03, 1.038107681228184e+03, - 1.038519902569466e+03, 1.038931207681730e+03, 1.039341601035290e+03, 1.039751087067161e+03, 1.040159670181387e+03, - 1.040567354749374e+03, 1.040974145110213e+03, 1.041380045571003e+03, 1.041785060407166e+03, 1.042189193862759e+03, - 1.042592450150784e+03, 1.042994833453496e+03, 1.043396347922701e+03, 1.043796997680053e+03, 1.044196786817351e+03, - 1.044595719396831e+03, 1.044993799451446e+03, 1.045391030985155e+03, 1.045787417973205e+03, 1.046182964362398e+03, - 1.046577674071378e+03, 1.046971550990888e+03, 1.047364598984044e+03, 1.047756821886597e+03, 1.048148223507194e+03, - 1.048538807627633e+03, 1.048928578003118e+03, 1.049317538362515e+03, 1.049705692408591e+03, 1.050093043818266e+03, - 1.050479596242854e+03, 1.050865353308304e+03, 1.051250318615431e+03, 1.051634495740155e+03, 1.052017888233734e+03, - 1.052400499622984e+03, 1.052782333410516e+03, 1.053163393074949e+03, 1.053543682071138e+03, 1.053923203830389e+03, - 1.054301961760673e+03, 1.054679959246843e+03, 1.055057199650840e+03, 1.055433686311908e+03, 1.055809422546791e+03 - }, - { - 1.576158769612623e+00, 4.795916656377516e+00, 8.060092631944315e+00, 1.137011021230311e+01, 1.472746473161337e+01, - 1.813372795547213e+01, 2.159055304894019e+01, 2.509967993542745e+01, 2.866294107738473e+01, 3.228226772056781e+01, - 3.595969664376409e+01, 3.969737746137478e+01, 4.349758053091424e+01, 4.736270552279044e+01, 5.129529071556055e+01, - 5.529802308624303e+01, 5.937374927224148e+01, 6.352548748901014e+01, 6.775644049576286e+01, 7.207000971026540e+01, - 7.646981058298178e+01, 8.095968935043403e+01, 8.554374129735699e+01, 9.022633066673976e+01, 9.501211236561323e+01, - 9.990605562169081e+01, 1.049134697505734e+02, 1.100400321935661e+02, 1.152918189799253e+02, 1.206753377513236e+02, - 1.261975634559392e+02, 1.318659767682973e+02, 1.376886052107250e+02, 1.436740668409766e+02, 1.498316161133746e+02, - 1.561711914694188e+02, 1.627034635063365e+02, 1.694398823446487e+02, 1.763927219034689e+02, 1.835751177681125e+02, - 1.910010939422771e+02, 1.986855717663366e+02, 2.066443516695729e+02, 2.148940549245036e+02, 2.234520080635585e+02, - 2.323360470089098e+02, 2.415642113738866e+02, 2.511542923817347e+02, 2.611231917818212e+02, 2.714860466670098e+02, - 2.822550805114589e+02, 2.934381598472200e+02, 3.050370745651634e+02, 3.170456202135872e+02, 3.294476371977283e+02, - 3.422152379823638e+02, 3.553075056029565e+02, 3.686699545124952e+02, 3.822350017031112e+02, 3.959236101599616e+02, - 4.096481471788667e+02, 4.233163449223126e+02, 4.368360567364745e+02, 4.501202961649995e+02, 4.630918980515674e+02, - 4.756871935356801e+02, 4.878581641259157e+02, 4.995724984667235e+02, 5.108124935044768e+02, 5.215728076534193e+02, - 5.318577824254277e+02, 5.416788495553789e+02, 5.510523084615101e+02, 5.599975701807681e+02, 5.685358425570074e+02, - 5.766891768002524e+02, 5.844797868651100e+02, 5.919295658819248e+02, 5.990597479395390e+02, 6.058906729852507e+02, - 6.124416348103463e+02, 6.187307914220918e+02, 6.247751251744945e+02, 6.305904412140767e+02, 6.361913944941746e+02, - 6.415915370789704e+02, 6.468033786765604e+02, 6.518384548385087e+02, 6.567073984537963e+02, 6.614200113399759e+02, - 6.659853337010865e+02, 6.704117100058744e+02, 6.747068504447399e+02, 6.788778875702178e+02, 6.829314280401461e+02, - 6.868735995923547e+02, 6.907100935098264e+02, 6.944462029072740e+02, 6.980868572013712e+02, 7.016366531308759e+02, - 7.050998826796924e+02, 7.084805582326911e+02, 7.117824352658978e+02, 7.150090328428223e+02, 7.181636521592795e+02, - 7.212493933513394e+02, 7.242691707556860e+02, 7.272257267888842e+02, 7.301216445918736e+02, 7.329593595683331e+02, - 7.357411699300944e+02, 7.384692463493898e+02, 7.411456408060421e+02, 7.437722947076384e+02, 7.463510463519013e+02, - 7.488836377929008e+02, 7.513717211579832e+02, 7.538168645136698e+02, 7.562205571994175e+02, 7.585842148388772e+02, - 7.609091839340341e+02, 7.631967461274434e+02, 7.654481221524458e+02, 7.676644752863117e+02, 7.698469156261829e+02, - 7.719965018927663e+02, 7.741142453108915e+02, 7.762011121017182e+02, 7.782580260325618e+02, 7.802858707998531e+02, - 7.822854922559756e+02, 7.842577004693275e+02, 7.862032716577800e+02, 7.881229494724479e+02, 7.900174484180656e+02, - 7.918874532656907e+02, 7.937336217853531e+02, 7.955565858678265e+02, 7.973569528334476e+02, 7.991353066612759e+02, - 8.008922091442001e+02, 8.026282009751731e+02, 8.043438027693170e+02, 8.060395160263004e+02, 8.077158240370269e+02, - 8.093731927383833e+02, 8.110120715287583e+02, 8.126328939908582e+02, 8.142360786693356e+02, 8.158220297091913e+02, - 8.173911375082606e+02, 8.189437793244792e+02, 8.204803198506225e+02, 8.220011117585589e+02, 8.235064962148979e+02, - 8.249968033697706e+02, 8.264723528203950e+02, 8.279334540509398e+02, 8.293804068500801e+02, 8.308135017075971e+02, - 8.322330201912247e+02, 8.336392353049016e+02, 8.350324118295024e+02, 8.364128066470496e+02, 8.377806690493277e+02, - 8.391362410318062e+02, 8.404797575736568e+02, 8.418114469046645e+02, 8.431315307597200e+02, 8.444402246216014e+02, - 8.457377379526523e+02, 8.470242744159606e+02, 8.483000320865993e+02, 8.495652036534422e+02, 8.508199766120583e+02, - 8.520645334491395e+02, 8.532990518189042e+02, 8.545237047118795e+02, 8.557386606164534e+02, 8.569440836735616e+02, - 8.581401338248478e+02, 8.593269669546190e+02, 8.605047350259115e+02, 8.616735862109440e+02, 8.628336650162336e+02, - 8.639851124026374e+02, 8.651280659005464e+02, 8.662626594096615e+02, 8.673890245238214e+02, 8.685072888406652e+02, - 8.696175772317265e+02, 8.707200116491347e+02, 8.718147112161975e+02, 8.729017923145184e+02, 8.739813686678077e+02, - 8.750535514225204e+02, 8.761184492254833e+02, 8.771761682986261e+02, 8.782268125109551e+02, 8.792704834478857e+02, - 8.803072804780456e+02, 8.813373008176654e+02, 8.823606395926499e+02, 8.833773898984366e+02, 8.843876428577321e+02, - 8.853914876762130e+02, 8.863890116962800e+02, 8.873803004489444e+02, 8.883654377039215e+02, 8.893445055180097e+02, - 8.903175842818151e+02, 8.912847527649038e+02, 8.922460881594288e+02, 8.932016661223003e+02, 8.941515608159596e+02, - 8.950958449478044e+02, 8.960345898083270e+02, 8.969678653080014e+02, 8.978957400129882e+02, 8.988182811796822e+02, - 8.997355547881621e+02, 9.006476255745710e+02, 9.015545570624828e+02, 9.024564115932792e+02, 9.033532503555808e+02, - 9.042451334137663e+02, 9.051321197356153e+02, 9.060142672190993e+02, 9.068916327183645e+02, 9.077642720689222e+02, - 9.086322401120869e+02, 9.094955907186783e+02, 9.103543768120251e+02, 9.112086503902823e+02, 9.120584625480549e+02, - 9.129038634976043e+02, 9.137449025890116e+02, 9.145816283301801e+02, 9.154140884060544e+02, 9.162423296973360e+02, - 9.170663982986646e+02, 9.178863395362854e+02, 9.187021979852240e+02, 9.195140174859794e+02, 9.203218411607537e+02, - 9.211257114292367e+02, 9.219256700239521e+02, 9.227217580051904e+02, 9.235140157755329e+02, 9.243024830939852e+02, - 9.250871990897274e+02, 9.258682022755036e+02, 9.266455305606515e+02, 9.274192212637845e+02, 9.281893111251486e+02, - 9.289558363186492e+02, 9.297188324635679e+02, 9.304783346359750e+02, 9.312343773798505e+02, 9.319869947179175e+02, - 9.327362201621995e+02, 9.334820867243154e+02, 9.342246269255055e+02, 9.349638728064158e+02, 9.356998559366302e+02, - 9.364326074239722e+02, 9.371621579235715e+02, 9.378885376467108e+02, 9.386117763694575e+02, 9.393319034410773e+02, - 9.400489477922570e+02, 9.407629379431163e+02, 9.414739020110363e+02, 9.421818677182941e+02, 9.428868623995253e+02, - 9.435889130089982e+02, 9.442880461277275e+02, 9.449842879704147e+02, 9.456776643922324e+02, 9.463682008954404e+02, - 9.470559226358654e+02, 9.477408544292180e+02, 9.484230207572709e+02, 9.491024457738966e+02, 9.497791533109646e+02, - 9.504531668841142e+02, 9.511245096983870e+02, 9.517932046537381e+02, 9.524592743504293e+02, 9.531227410942953e+02, - 9.537836269018976e+02, 9.544419535055658e+02, 9.550977423583270e+02, 9.557510146387289e+02, 9.564017912555595e+02, - 9.570500928524611e+02, 9.576959398124517e+02, 9.583393522623431e+02, 9.589803500770696e+02, 9.596189528839235e+02, - 9.602551800667010e+02, 9.608890507697605e+02, 9.615205839019981e+02, 9.621497981407387e+02, 9.627767119355460e+02, - 9.634013435119560e+02, 9.640237108751311e+02, 9.646438318134416e+02, 9.652617239019725e+02, 9.658774045059610e+02, - 9.664908907841632e+02, 9.671021996921519e+02, 9.677113479855508e+02, 9.683183522232046e+02, 9.689232287702805e+02, - 9.695259938013155e+02, 9.701266633031996e+02, 9.707252530781013e+02, 9.713217787463342e+02, 9.719162557491716e+02, - 9.725086993516018e+02, 9.730991246450358e+02, 9.736875465499552e+02, 9.742739798185171e+02, 9.748584390371063e+02, - 9.754409386288346e+02, 9.760214928560004e+02, 9.766001158224969e+02, 9.771768214761756e+02, 9.777516236111677e+02, - 9.783245358701579e+02, 9.788955717466234e+02, 9.794647445870207e+02, 9.800320675929435e+02, 9.805975538232321e+02, - 9.811612161960501e+02, 9.817230674909174e+02, 9.822831203507141e+02, 9.828413872836395e+02, 9.833978806651430e+02, - 9.839526127398155e+02, 9.845055956232493e+02, 9.850568413038637e+02, 9.856063616447000e+02, 9.861541683851809e+02, - 9.867002731428448e+02, 9.872446874150435e+02, 9.877874225806132e+02, 9.883284899015180e+02, 9.888679005244603e+02, - 9.894056654824665e+02, 9.899417956964463e+02, 9.904763019767216e+02, 9.910091950245323e+02, 9.915404854335146e+02, - 9.920701836911545e+02, 9.925983001802181e+02, 9.931248451801558e+02, 9.936498288684835e+02, 9.941732613221411e+02, - 9.946951525188271e+02, 9.952155123383129e+02, 9.957343505637334e+02, 9.962516768828572e+02, 9.967675008893357e+02, - 9.972818320839311e+02, 9.977946798757253e+02, 9.983060535833087e+02, 9.988159624359477e+02, 9.993244155747385e+02, - 9.998314220537349e+02, 1.000336990841064e+03, 1.000841130820023e+03, 1.001343850790154e+03, 1.001845159468306e+03, - 1.002345065489681e+03, 1.002843577408859e+03, 1.003340703700811e+03, 1.003836452761893e+03, 1.004330832910825e+03, - 1.004823852389658e+03, 1.005315519364721e+03, 1.005805841927558e+03, 1.006294828095842e+03, 1.006782485814291e+03, - 1.007268822955551e+03, 1.007753847321078e+03, 1.008237566642002e+03, 1.008719988579981e+03, 1.009201120728034e+03, - 1.009680970611374e+03, 1.010159545688216e+03, 1.010636853350582e+03, 1.011112900925087e+03, 1.011587695673720e+03, - 1.012061244794604e+03, 1.012533555422758e+03, 1.013004634630836e+03, 1.013474489429857e+03, 1.013943126769931e+03, - 1.014410553540969e+03, 1.014876776573379e+03, 1.015341802638764e+03, 1.015805638450593e+03, 1.016268290664881e+03, - 1.016729765880840e+03, 1.017190070641538e+03, 1.017649211434536e+03, 1.018107194692522e+03, 1.018564026793933e+03, - 1.019019714063573e+03, 1.019474262773216e+03, 1.019927679142202e+03, 1.020379969338030e+03, 1.020831139476935e+03, - 1.021281195624460e+03, 1.021730143796025e+03, 1.022177989957476e+03, 1.022624740025641e+03, 1.023070399868867e+03, - 1.023514975307552e+03, 1.023958472114678e+03, 1.024400896016320e+03, 1.024842252692167e+03, 1.025282547776023e+03, - 1.025721786856302e+03, 1.026159975476524e+03, 1.026597119135798e+03, 1.027033223289298e+03, 1.027468293348736e+03, - 1.027902334682826e+03, 1.028335352617747e+03, 1.028767352437588e+03, 1.029198339384801e+03, 1.029628318660639e+03, - 1.030057295425594e+03, 1.030485274799820e+03, 1.030912261863562e+03, 1.031338261657570e+03, 1.031763279183516e+03, - 1.032187319404396e+03, 1.032610387244934e+03, 1.033032487591978e+03, 1.033453625294892e+03, 1.033873805165940e+03, - 1.034293031980671e+03, 1.034711310478290e+03, 1.035128645362034e+03, 1.035545041299538e+03, 1.035960502923193e+03, - 1.036375034830507e+03, 1.036788641584461e+03, 1.037201327713846e+03, 1.037613097713622e+03, 1.038023956045243e+03, - 1.038433907137004e+03, 1.038842955384365e+03, 1.039251105150280e+03, 1.039658360765521e+03, 1.040064726528995e+03, - 1.040470206708058e+03, 1.040874805538831e+03, 1.041278527226501e+03, 1.041681375945627e+03, 1.042083355840442e+03, - 1.042484471025143e+03, 1.042884725584190e+03, 1.043284123572589e+03, 1.043682669016180e+03, 1.044080365911919e+03, - 1.044477218228155e+03, 1.044873229904907e+03, 1.045268404854134e+03, 1.045662746960000e+03, 1.046056260079149e+03, - 1.046448948040954e+03, 1.046840814647788e+03, 1.047231863675272e+03, 1.047622098872528e+03, 1.048011523962436e+03, - 1.048400142641870e+03, 1.048787958581950e+03, 1.049174975428281e+03, 1.049561196801189e+03, 1.049946626295957e+03, - 1.050331267483062e+03, 1.050715123908398e+03, 1.051098199093507e+03, 1.051480496535805e+03, 1.051862019708801e+03, - 1.052242772062318e+03, 1.052622757022708e+03, 1.053001977993070e+03, 1.053380438353459e+03, 1.053758141461096e+03 - }, - { - 1.571346628207512e+00, 4.780938504751656e+00, 8.034336004785240e+00, 1.133292298495408e+01, 1.467815202195471e+01, - 1.807154873682211e+01, 2.151471644291932e+01, 2.500934115003089e+01, 2.855719695117989e+01, 3.216015182913897e+01, - 3.582017391901175e+01, 3.953933826802248e+01, 4.331983413744821e+01, 4.716397289593156e+01, 5.107419655809489e+01, - 5.505308702744671e+01, 5.910337610803370e+01, 6.322795635513025e+01, 6.742989284144389e+01, 7.171243592177883e+01, - 7.607903508573929e+01, 8.053335399469709e+01, 8.507928680564099e+01, 8.972097589029580e+01, 9.446283106251070e+01, - 9.930955042960311e+01, 1.042661429830365e+02, 1.093379530390032e+02, 1.145306866281021e+02, 1.198504399124584e+02, - 1.253037296743843e+02, 1.308975258676135e+02, 1.366392861426211e+02, 1.425369921423013e+02, 1.485991872147007e+02, - 1.548350148470039e+02, 1.612542570995767e+02, 1.678673713931658e+02, 1.746855238200707e+02, 1.817206160431119e+02, - 1.889853017976910e+02, 1.964929873911674e+02, 2.042578086576664e+02, 2.122945740830686e+02, 2.206186605099048e+02, - 2.292458437030329e+02, 2.381920412969867e+02, 2.474729406245533e+02, 2.571034795579598e+02, 2.670971464995504e+02, - 2.774650688281350e+02, 2.882148712753387e+02, 2.993493110117627e+02, 3.108647372160183e+02, 3.227494776212619e+02, - 3.349823139421919e+02, 3.475312563773099e+02, 3.603528470884648e+02, 3.733922025766612e+02, 3.865839460773752e+02, - 3.998540933235874e+02, 4.131228478067830e+02, 4.263081385260240e+02, 4.393295995590644e+02, 4.521125690142138e+02, - 4.645916194162013e+02, 4.767131966634489e+02, 4.884370325800800e+02, 4.997361355844736e+02, 5.105957349317188e+02, - 5.210114105000389e+02, 5.309869203095278e+02, 5.405320953884632e+02, 5.496610171202917e+02, 5.583905561489154e+02, - 5.667392605582032e+02, 5.747265364869448e+02, 5.823720539088271e+02, 5.896953184710962e+02, 5.967153638221075e+02, - 6.034505353876107e+02, 6.099183408729241e+02, 6.161353564139051e+02, 6.221171752397754e+02, 6.278783905202351e+02, - 6.334326045930749e+02, 6.387924577818018e+02, 6.439696709705931e+02, 6.489750970573391e+02, 6.538187773557165e+02, - 6.585099999119307e+02, 6.630573574990392e+02, 6.674688037269467e+02, 6.717517062522994e+02, 6.759128964957669e+02, - 6.799587155888379e+02, 6.838950564958494e+02, 6.877274024081046e+02, 6.914608616021449e+02, 6.951001990083972e+02, - 6.986498647611927e+02, 7.021140200059930e+02, 7.054965602315956e+02, 7.088011363792913e+02, 7.120311739610383e+02, - 7.151898903972020e+02, 7.182803107629029e+02, 7.213052821114667e+02, 7.242674865244519e+02, 7.271694530205358e+02, - 7.300135684400860e+02, 7.328020874086760e+02, 7.355371414707984e+02, 7.382207474745924e+02, 7.408548152712185e+02, - 7.434411548414946e+02, 7.459814827818387e+02, 7.484774283696920e+02, 7.509305391239559e+02, 7.533422859540973e+02, - 7.557140679253996e+02, 7.580472166732493e+02, 7.603430002826049e+02, 7.626026279699470e+02, 7.648272522383543e+02, - 7.670179731087158e+02, 7.691758409240225e+02, 7.713018591914253e+02, 7.733969872323916e+02, 7.754621426636136e+02, - 7.774982036973238e+02, 7.795060112896482e+02, 7.814863711537489e+02, 7.834400549837469e+02, 7.853678044355519e+02, - 7.872703299275562e+02, 7.891483138478802e+02, 7.910024116390489e+02, 7.928332531612479e+02, 7.946414439728143e+02, - 7.964275665337743e+02, 7.981921813377641e+02, 7.999358279772533e+02, 8.016590261466264e+02, 8.033622765873039e+02, - 8.050460619879235e+02, 8.067108477872923e+02, 8.083570830259242e+02, 8.099852010552521e+02, 8.115956202560034e+02, - 8.131887447075794e+02, 8.147649648212539e+02, 8.163246579394681e+02, 8.178681889033232e+02, 8.193959105902403e+02, - 8.209081644236055e+02, 8.224052808561038e+02, 8.238875798283156e+02, 8.253553712040602e+02, 8.268089551838511e+02, - 8.282486226977458e+02, 8.296746557787940e+02, 8.310873279181943e+02, 8.324869044032080e+02, 8.338736426388031e+02, - 8.352477924539521e+02, 8.366095963934225e+02, 8.379592899958820e+02, 8.392971020590510e+02, 8.406232548926160e+02, - 8.419379645595701e+02, 8.432414411065794e+02, 8.445338887839890e+02, 8.458155062559817e+02, 8.470864868014346e+02, - 8.483470185059304e+02, 8.495972844454049e+02, 8.508374628618293e+02, 8.520677273313610e+02, 8.532882469253163e+02, - 8.544991863643437e+02, 8.557007061661226e+02, 8.568929627869123e+02, 8.580761087572496e+02, 8.592502928120790e+02, - 8.604156600155859e+02, 8.615723518809846e+02, 8.627205064854977e+02, 8.638602582548764e+02, 8.649917393476125e+02, - 8.661150778761851e+02, 8.672303992352053e+02, 8.683378258936438e+02, 8.694374774853405e+02, 8.705294708960548e+02, - 8.716139203472311e+02, 8.726909374766055e+02, 8.737606314158080e+02, 8.748231088650859e+02, 8.758784741652805e+02, - 8.769268293671649e+02, 8.779682742982686e+02, 8.790029066272896e+02, 8.800308219262066e+02, 8.810521137301661e+02, - 8.820668735952688e+02, 8.830751911543173e+02, 8.840771541706229e+02, 8.850728485899517e+02, 8.860623585906727e+02, - 8.870457666322050e+02, 8.880231535018086e+02, 8.889945983597997e+02, 8.899601787832528e+02, 8.909199708082389e+02, - 8.918740489706754e+02, 8.928224863458246e+02, 8.937653545865029e+02, 8.947027239600518e+02, 8.956346633841118e+02, - 8.965612404612502e+02, 8.974825215124862e+02, 8.983985716097500e+02, 8.993094546073256e+02, 9.002152331723026e+02, - 9.011159688140874e+02, 9.020117219129955e+02, 9.029025517479714e+02, 9.037885165234559e+02, 9.046696733954416e+02, - 9.055460784967385e+02, 9.064177869614861e+02, 9.072848529489268e+02, 9.081473296664822e+02, 9.090052693921425e+02, - 9.098587234962038e+02, 9.107077424623687e+02, 9.115523759082382e+02, 9.123926726051562e+02, 9.132286804977530e+02, - 9.140604467224083e+02, 9.148880176257070e+02, 9.157114387821184e+02, 9.165307550112346e+02, 9.173460103945241e+02, - 9.181572482916258e+02, 9.189645113561903e+02, 9.197678415512860e+02, 9.205672801643932e+02, 9.213628678219800e+02, - 9.221546445036967e+02, 9.229426495561808e+02, 9.237269217064977e+02, 9.245074990752271e+02, 9.252844191891965e+02, - 9.260577189938896e+02, 9.268274348655245e+02, 9.275936026228193e+02, 9.283562575384544e+02, 9.291154343502417e+02, - 9.298711672720037e+02, 9.306234900041809e+02, 9.313724357441663e+02, 9.321180371963839e+02, 9.328603265821093e+02, - 9.335993356490507e+02, 9.343350956806898e+02, 9.350676375053901e+02, 9.357969915052872e+02, 9.365231876249554e+02, - 9.372462553798680e+02, 9.379662238646517e+02, 9.386831217611398e+02, 9.393969773462345e+02, 9.401078184995877e+02, - 9.408156727110835e+02, 9.415205670881614e+02, 9.422225283629583e+02, 9.429215828992843e+02, 9.436177566994355e+02, - 9.443110754108532e+02, 9.450015643326249e+02, 9.456892484218374e+02, 9.463741522997864e+02, 9.470563002580421e+02, - 9.477357162643807e+02, 9.484124239685779e+02, 9.490864467080772e+02, 9.497578075135294e+02, 9.504265291142075e+02, - 9.510926339433049e+02, 9.517561441431139e+02, 9.524170815700930e+02, 9.530754677998241e+02, 9.537313241318559e+02, - 9.543846715944524e+02, 9.550355309492302e+02, 9.556839226957028e+02, 9.563298670757216e+02, 9.569733840778295e+02, - 9.576144934415173e+02, 9.582532146613896e+02, 9.588895669912506e+02, 9.595235694480932e+02, 9.601552408160193e+02, - 9.607845996500627e+02, 9.614116642799456e+02, 9.620364528137553e+02, 9.626589831415405e+02, 9.632792729388394e+02, - 9.638973396701371e+02, 9.645132005922455e+02, 9.651268727576270e+02, 9.657383730176405e+02, 9.663477180257286e+02, - 9.669549242405410e+02, 9.675600079289939e+02, 9.681629851692719e+02, 9.687638718537698e+02, 9.693626836919733e+02, - 9.699594362132908e+02, 9.705541447698256e+02, 9.711468245390930e+02, 9.717374905266895e+02, 9.723261575689097e+02, - 9.729128403353094e+02, 9.734975533312258e+02, 9.740803109002452e+02, 9.746611272266274e+02, 9.752400163376815e+02, - 9.758169921061000e+02, 9.763920682522503e+02, 9.769652583464150e+02, 9.775365758110059e+02, 9.781060339227217e+02, - 9.786736458146769e+02, 9.792394244784864e+02, 9.798033827663123e+02, 9.803655333928784e+02, 9.809258889374404e+02, - 9.814844618457272e+02, 9.820412644318441e+02, 9.825963088801433e+02, 9.831496072470604e+02, 9.837011714629166e+02, - 9.842510133336943e+02, 9.847991445427749e+02, 9.853455766526511e+02, 9.858903211066041e+02, 9.864333892303584e+02, - 9.869747922337015e+02, 9.875145412120800e+02, 9.880526471481636e+02, 9.885891209133880e+02, 9.891239732694658e+02, - 9.896572148698750e+02, 9.901888562613228e+02, 9.907189078851786e+02, 9.912473800788923e+02, 9.917742830773802e+02, - 9.922996270143929e+02, 9.928234219238573e+02, 9.933456777411984e+02, 9.938664043046368e+02, 9.943856113564667e+02, - 9.949033085443153e+02, 9.954195054223723e+02, 9.959342114526110e+02, 9.964474360059800e+02, 9.969591883635823e+02, - 9.974694777178302e+02, 9.979783131735850e+02, 9.984857037492767e+02, 9.989916583780041e+02, 9.994961859086244e+02, - 9.999992951068139e+02, 1.000500994656123e+03, 1.001001293159004e+03, 1.001500199137840e+03, 1.001997721035931e+03, - 1.002493867218489e+03, 1.002988645973606e+03, 1.003482065513210e+03, 1.003974133973999e+03, 1.004464859418378e+03, - 1.004954249835357e+03, 1.005442313141459e+03, 1.005929057181598e+03, 1.006414489729948e+03, 1.006898618490805e+03, - 1.007381451099426e+03, 1.007862995122860e+03, 1.008343258060770e+03, 1.008822247346235e+03, 1.009299970346544e+03, - 1.009776434363985e+03, 1.010251646636603e+03, 1.010725614338970e+03, 1.011198344582927e+03, 1.011669844418323e+03, - 1.012140120833738e+03, 1.012609180757202e+03, 1.013077031056896e+03, 1.013543678541847e+03, 1.014009129962614e+03, - 1.014473392011962e+03, 1.014936471325524e+03, 1.015398374482460e+03, 1.015859108006095e+03, 1.016318678364567e+03, - 1.016777091971443e+03, 1.017234355186343e+03, 1.017690474315549e+03, 1.018145455612604e+03, 1.018599305278904e+03, - 1.019052029464286e+03, 1.019503634267598e+03, 1.019954125737271e+03, 1.020403509871878e+03, 1.020851792620683e+03, - 1.021298979884188e+03, 1.021745077514670e+03, 1.022190091316709e+03, 1.022634027047711e+03, 1.023076890418421e+03, - 1.023518687093433e+03, 1.023959422691691e+03, 1.024399102786978e+03, 1.024837732908413e+03, 1.025275318540922e+03, - 1.025711865125717e+03, 1.026147378060764e+03, 1.026581862701244e+03, 1.027015324360006e+03, 1.027447768308021e+03, - 1.027879199774822e+03, 1.028309623948940e+03, 1.028739045978341e+03, 1.029167470970846e+03, 1.029594903994556e+03, - 1.030021350078264e+03, 1.030446814211864e+03, 1.030871301346759e+03, 1.031294816396256e+03, 1.031717364235958e+03, - 1.032138949704158e+03, 1.032559577602218e+03, 1.032979252694950e+03, 1.033397979710986e+03, 1.033815763343152e+03, - 1.034232608248830e+03, 1.034648519050314e+03, 1.035063500335170e+03, 1.035477556656583e+03, 1.035890692533706e+03, - 1.036302912451996e+03, 1.036714220863561e+03, 1.037124622187482e+03, 1.037534120810150e+03, 1.037942721085584e+03, - 1.038350427335760e+03, 1.038757243850920e+03, 1.039163174889890e+03, 1.039568224680385e+03, 1.039972397419317e+03, - 1.040375697273097e+03, 1.040778128377927e+03, 1.041179694840102e+03, 1.041580400736295e+03, 1.041980250113845e+03, - 1.042379246991041e+03, 1.042777395357402e+03, 1.043174699173954e+03, 1.043571162373500e+03, 1.043966788860897e+03, - 1.044361582513313e+03, 1.044755547180500e+03, 1.045148686685048e+03, 1.045541004822646e+03, 1.045932505362332e+03, - 1.046323192046749e+03, 1.046713068592391e+03, 1.047102138689848e+03, 1.047490406004048e+03, 1.047877874174499e+03, - 1.048264546815522e+03, 1.048650427516489e+03, 1.049035519842051e+03, 1.049419827332370e+03, 1.049803353503339e+03, - 1.050186101846814e+03, 1.050568075830827e+03, 1.050949278899807e+03, 1.051329714474796e+03, 1.051709385953665e+03 - }, - { - 1.566564116482007e+00, 4.766056823452486e+00, 8.008752815123254e+00, 1.129599743257092e+01, 1.462920177256490e+01, - 1.800984674007315e+01, 2.143948739584824e+01, 2.491975762817655e+01, 2.845237517152109e+01, 3.203914700475203e+01, - 3.568197516043139e+01, 3.938286298074594e+01, 4.314392185873096e+01, 4.696737850688102e+01, 5.085558279895583e+01, - 5.481101623475199e+01, 5.883630108181168e+01, 6.293421025244154e+01, 6.710767797896831e+01, 7.135981135477280e+01, - 7.569390281319441e+01, 8.011344362069606e+01, 8.462213846445397e+01, 8.922392121741316e+01, 9.392297196530036e+01, - 9.872373537937828e+01, 1.036309405148690e+02, 1.086496221065917e+02, 1.137851434185989e+02, 1.190432206809279e+02, - 1.244299491105995e+02, 1.299518304610936e+02, 1.356158019685209e+02, 1.414292664553620e+02, 1.474001232176385e+02, - 1.535367990174622e+02, 1.598482784904135e+02, 1.663441324684224e+02, 1.730345425965102e+02, 1.799303196986687e+02, - 1.870429124886320e+02, 1.943844020172931e+02, 2.019674755974970e+02, 2.098053720263217e+02, 2.179117873088026e+02, - 2.263007270987208e+02, 2.349862885866232e+02, 2.439823509436982e+02, 2.533021502789096e+02, 2.629577135261766e+02, - 2.729591275860107e+02, 2.833136279545838e+02, 2.940245078836043e+02, 3.050898770314163e+02, 3.165013373168002e+02, - 3.282426885730280e+02, 3.402888177547219e+02, 3.526049498341542e+02, 3.651464348108332e+02, 3.778592092623190e+02, - 3.906810075960092e+02, 4.035433180091759e+02, 4.163739904847563e+02, 4.291003142526057e+02, 4.416522966320724e+02, - 4.539658094158094e+02, 4.659852487463553e+02, 4.776654061957935e+02, 4.889723997563259e+02, 4.998836007887445e+02, - 5.103866434022473e+02, 5.204778698218622e+02, 5.301605594666960e+02, 5.394432114228611e+02, 5.483380435449326e+02, - 5.568597728405382e+02, 5.650246729801767e+02, 5.728498688171981e+02, 5.803528171223236e+02, 5.875509268226451e+02, - 5.944612822266380e+02, 6.011004423134655e+02, 6.074843002412416e+02, 6.136279872669672e+02, 6.195458154101896e+02, - 6.252512495978441e+02, 6.307569037672358e+02, 6.360745553750186e+02, 6.412151734986844e+02, 6.461889563835150e+02, - 6.510053749752104e+02, 6.556732196574148e+02, 6.602006480480144e+02, 6.645952322707572e+02, 6.688640045946428e+02, - 6.730135007189299e+02, 6.770498002817161e+02, 6.809785643944311e+02, 6.848050701656417e+02, 6.885342422874952e+02, - 6.921706818286603e+02, 6.957186924185261e+02, 6.991823040271028e+02, 7.025652945500547e+02, 7.058712094034461e+02, - 7.091033793220737e+02, 7.122649365411052e+02, 7.153588295251620e+02, 7.183878363931783e+02, 7.213545771720144e+02, - 7.242615249975216e+02, 7.271110163686354e+02, 7.299052605482532e+02, 7.326463481871203e+02, 7.353362592875388e+02, - 7.379768704632767e+02, 7.405699617028610e+02, 7.431172225746319e+02, 7.456202579666765e+02, 7.480805933954994e+02, - 7.504996799209136e+02, 7.528788984864631e+02, 7.552195650318731e+02, 7.575229330364921e+02, 7.597901981204609e+02, - 7.620225011864592e+02, 7.642209315760249e+02, 7.663865300103962e+02, 7.685202913397547e+02, 7.706231671017260e+02, - 7.726960679029906e+02, 7.747398656508642e+02, 7.767553951426515e+02, 7.787434576727036e+02, 7.807048207551935e+02, - 7.826402210551414e+02, 7.845503657272121e+02, 7.864359339236596e+02, 7.882975782101618e+02, 7.901359258960168e+02, - 7.919515802846744e+02, 7.937451218500884e+02, 7.955171093439614e+02, 7.972680808385744e+02, 7.989985547184597e+02, - 8.007090305701703e+02, 8.023999901135415e+02, 8.040718979876649e+02, 8.057252025405083e+02, 8.073603365655168e+02, - 8.089777179980731e+02, 8.105777505743647e+02, 8.121608244550006e+02, 8.137273168155670e+02, 8.152775924061589e+02, - 8.168120040817687e+02, 8.183308933053053e+02, 8.198345906248753e+02, 8.213234161268624e+02, 8.227976798662257e+02, - 8.242576822753512e+02, 8.257037145527054e+02, 8.271360590324405e+02, 8.285549895360459e+02, 8.299607717070651e+02, - 8.313536633298120e+02, 8.327339146330033e+02, 8.341017685791077e+02, 8.354574611402312e+02, 8.368012215612313e+02, - 8.381332726107851e+02, 8.394538308210285e+02, 8.407631067163906e+02, 8.420613050321839e+02, 8.433486249234911e+02, - 8.446252601648455e+02, 8.458913993411878e+02, 8.471472260305400e+02, 8.483929189788175e+02, 8.496286522671726e+02, - 8.508545954722538e+02, 8.520709138197160e+02, 8.532777683313295e+02, 8.544753159659905e+02, 8.556637097549349e+02, - 8.568430989314345e+02, 8.580136290552356e+02, 8.591754421319959e+02, 8.603286764111118e+02, 8.614734677385121e+02, - 8.626099478340776e+02, 8.637382455893355e+02, 8.648584868716758e+02, 8.659707946182965e+02, 8.670752889265666e+02, - 8.681720871409485e+02, 8.692613039366514e+02, 8.703430514001438e+02, 8.714174391066806e+02, 8.724845741949594e+02, - 8.735445614390437e+02, 8.745975033176655e+02, 8.756435000810185e+02, 8.766826498151514e+02, 8.777150485040652e+02, - 8.787407900896072e+02, 8.797599665292521e+02, 8.807726678518659e+02, 8.817789822115333e+02, 8.827789959395164e+02, - 8.837727935944432e+02, 8.847604580107773e+02, 8.857420703456492e+02, 8.867177101241087e+02, 8.876874552828727e+02, - 8.886513822126067e+02, 8.896095657988225e+02, 8.905620794614275e+02, 8.915089951929887e+02, 8.924503835957516e+02, - 8.933863139174755e+02, 8.943168540861135e+02, 8.952420707433957e+02, 8.961620292773501e+02, 8.970767938538011e+02, - 8.979864274468803e+02, 8.988909918686006e+02, 8.997905477975092e+02, 9.006851548064642e+02, 9.015748713895659e+02, - 9.024597549882717e+02, 9.033398620167243e+02, 9.042152478863201e+02, 9.050859670295471e+02, 9.059520729231180e+02, - 9.068136181104225e+02, 9.076706542233198e+02, 9.085232320033014e+02, 9.093714013220384e+02, 9.102152112013398e+02, - 9.110547098325391e+02, 9.118899445952684e+02, 9.127209620760034e+02, 9.135478080854934e+02, 9.143705276762880e+02, - 9.151891651594873e+02, 9.160037641210878e+02, 9.168143674378781e+02, 9.176210172928984e+02, 9.184237551904807e+02, - 9.192226219708817e+02, 9.200176578245192e+02, 9.208089023058346e+02, 9.215963943467766e+02, 9.223801722699345e+02, - 9.231602738013231e+02, 9.239367360828339e+02, 9.247095956843585e+02, 9.254788886156001e+02, 9.262446503375812e+02, - 9.270069157738513e+02, 9.277657193214152e+02, 9.285210948613753e+02, 9.292730757693133e+02, 9.300216949254049e+02, - 9.307669847242825e+02, 9.315089770846536e+02, 9.322477034586828e+02, 9.329831948411356e+02, 9.337154817783062e+02, - 9.344445943767219e+02, 9.351705623116358e+02, 9.358934148353221e+02, 9.366131807851584e+02, 9.373298885915281e+02, - 9.380435662855247e+02, 9.387542415064790e+02, 9.394619415093071e+02, 9.401666931716850e+02, 9.408685230010567e+02, - 9.415674571414792e+02, 9.422635213803082e+02, 9.429567411547309e+02, 9.436471415581472e+02, 9.443347473464080e+02, - 9.450195829439097e+02, 9.457016724495505e+02, 9.463810396425544e+02, 9.470577079881638e+02, 9.477317006432053e+02, - 9.484030404615297e+02, 9.490717499993362e+02, 9.497378515203760e+02, 9.504013670010428e+02, 9.510623181353528e+02, - 9.517207263398138e+02, 9.523766127581955e+02, 9.530299982661900e+02, 9.536809034759752e+02, 9.543293487406828e+02, - 9.549753541587681e+02, 9.556189395782899e+02, 9.562601246010988e+02, 9.568989285869385e+02, 9.575353706574595e+02, - 9.581694697001543e+02, 9.588012443722048e+02, 9.594307131042543e+02, 9.600578941041014e+02, 9.606828053603180e+02, - 9.613054646457938e+02, 9.619258895212091e+02, 9.625440973384373e+02, 9.631601052438788e+02, 9.637739301817280e+02, - 9.643855888971773e+02, 9.649950979395538e+02, 9.656024736653966e+02, 9.662077322414726e+02, 9.668108896477340e+02, - 9.674119616802162e+02, 9.680109639538816e+02, 9.686079119054065e+02, 9.692028207959138e+02, 9.697957057136568e+02, - 9.703865815766449e+02, 9.709754631352280e+02, 9.715623649746241e+02, 9.721473015174007e+02, 9.727302870259155e+02, - 9.733113356046999e+02, 9.738904612028110e+02, 9.744676776161285e+02, 9.750429984896156e+02, 9.756164373195356e+02, - 9.761880074556291e+02, 9.767577221032481e+02, 9.773255943254557e+02, 9.778916370450843e+02, 9.784558630467561e+02, - 9.790182849788697e+02, 9.795789153555484e+02, 9.801377665585554e+02, 9.806948508391739e+02, 9.812501803200520e+02, - 9.818037669970178e+02, 9.823556227408624e+02, 9.829057592990871e+02, 9.834541882976263e+02, 9.840009212425339e+02, - 9.845459695216457e+02, 9.850893444062101e+02, 9.856310570524887e+02, 9.861711185033358e+02, 9.867095396897430e+02, - 9.872463314323625e+02, 9.877815044430030e+02, 9.883150693260983e+02, 9.888470365801555e+02, 9.893774165991739e+02, - 9.899062196740418e+02, 9.904334559939111e+02, 9.909591356475486e+02, 9.914832686246626e+02, 9.920058648172089e+02, - 9.925269340206780e+02, 9.930464859353543e+02, 9.935645301675620e+02, 9.940810762308861e+02, 9.945961335473746e+02, - 9.951097114487210e+02, 9.956218191774291e+02, 9.961324658879563e+02, 9.966416606478392e+02, 9.971494124388050e+02, - 9.976557301578591e+02, 9.981606226183585e+02, 9.986640985510695e+02, 9.991661666052064e+02, 9.996668353494521e+02, - 1.000166113272968e+03, 1.000664008786385e+03, 1.001160530222776e+03, 1.001655685838618e+03, 1.002149483814739e+03, - 1.002641932257246e+03, 1.003133039198445e+03, 1.003622812597737e+03, 1.004111260342514e+03, 1.004598390249029e+03, - 1.005084210063258e+03, 1.005568727461751e+03, 1.006051950052465e+03, 1.006533885375587e+03, 1.007014540904347e+03, - 1.007493924045812e+03, 1.007972042141678e+03, 1.008448902469040e+03, 1.008924512241160e+03, 1.009398878608212e+03, - 1.009872008658030e+03, 1.010343909416833e+03, 1.010814587849946e+03, 1.011284050862509e+03, 1.011752305300174e+03, - 1.012219357949795e+03, 1.012685215540104e+03, 1.013149884742380e+03, 1.013613372171109e+03, 1.014075684384630e+03, - 1.014536827885778e+03, 1.014996809122515e+03, 1.015455634488548e+03, 1.015913310323947e+03, 1.016369842915743e+03, - 1.016825238498531e+03, 1.017279503255049e+03, 1.017732643316766e+03, 1.018184664764445e+03, 1.018635573628710e+03, - 1.019085375890601e+03, 1.019534077482121e+03, 1.019981684286773e+03, 1.020428202140099e+03, 1.020873636830198e+03, - 1.021317994098246e+03, 1.021761279639009e+03, 1.022203499101345e+03, 1.022644658088699e+03, 1.023084762159599e+03, - 1.023523816828131e+03, 1.023961827564423e+03, 1.024398799795113e+03, 1.024834738903812e+03, 1.025269650231565e+03, - 1.025703539077299e+03, 1.026136410698274e+03, 1.026568270310517e+03, 1.026999123089259e+03, 1.027428974169366e+03, - 1.027857828645757e+03, 1.028285691573823e+03, 1.028712567969842e+03, 1.029138462811379e+03, 1.029563381037691e+03, - 1.029987327550124e+03, 1.030410307212500e+03, 1.030832324851505e+03, 1.031253385257071e+03, 1.031673493182747e+03, - 1.032092653346074e+03, 1.032510870428951e+03, 1.032928149077996e+03, 1.033344493904901e+03, 1.033759909486786e+03, - 1.034174400366548e+03, 1.034587971053203e+03, 1.035000626022226e+03, 1.035412369715885e+03, 1.035823206543573e+03, - 1.036233140882134e+03, 1.036642177076185e+03, 1.037050319438435e+03, 1.037457572250001e+03, 1.037863939760716e+03, - 1.038269426189439e+03, 1.038674035724354e+03, 1.039077772523273e+03, 1.039480640713932e+03, 1.039882644394278e+03, - 1.040283787632766e+03, 1.040684074468634e+03, 1.041083508912192e+03, 1.041482094945099e+03, 1.041879836520635e+03, - 1.042276737563974e+03, 1.042672801972454e+03, 1.043068033615839e+03, 1.043462436336584e+03, 1.043856013950089e+03, - 1.044248770244962e+03, 1.044640708983263e+03, 1.045031833900762e+03, 1.045422148707177e+03, 1.045811657086429e+03, - 1.046200362696869e+03, 1.046588269171531e+03, 1.046975380118356e+03, 1.047361699120427e+03, 1.047747229736203e+03, - 1.048131975499744e+03, 1.048515939920933e+03, 1.048899126485702e+03, 1.049281538656250e+03, 1.049663179871257e+03 - }, - { - 1.561810957233375e+00, 4.751270641176868e+00, 7.983341192497834e+00, 1.125933054417882e+01, 1.458060954825086e+01, - 1.794861577268057e+01, 2.136485756696350e+01, 2.483091842252994e+01, 2.834846164720122e+01, 3.191923538257836e+01, - 3.554507799146121e+01, 3.922792384598178e+01, 4.296980954954424e+01, 4.677288062839563e+01, 5.063939873154352e+01, - 5.457174938077113e+01, 5.857245031565090e+01, 6.264416048167309e+01, 6.678968971282434e+01, 7.101200916306769e+01, - 7.531426254405302e+01, 7.969977822882890e+01, 8.417208228305989e+01, 8.873491248591205e+01, 9.339223340184640e+01, - 9.814825256137601e+01, 1.030074378024830e+02, 1.079745358136249e+02, 1.130545919024418e+02, 1.182529709892086e+02, - 1.235753797878410e+02, 1.290278900859712e+02, 1.346169629641287e+02, 1.403494736955960e+02, 1.462327369478846e+02, - 1.522745316363618e+02, 1.584831247827405e+02, 1.648672930196001e+02, 1.714363403100944e+02, 1.782001096752598e+02, - 1.851689860385064e+02, 1.923538863162924e+02, 1.997662316713203e+02, 2.074178952236431e+02, 2.153211167068360e+02, - 2.234883731995692e+02, 2.319321925632184e+02, 2.406648935712274e+02, 2.496982344357295e+02, 2.590429502794090e+02, - 2.687081612904598e+02, 2.787006385509844e+02, 2.890239258595759e+02, 2.996773350156075e+02, 3.106548593894779e+02, - 3.219440838764505e+02, 3.335252026230468e+02, 3.453702802357654e+02, 3.574428980097273e+02, 3.696983079249529e+02, - 3.820841742049134e+02, 3.945419221521130e+02, 4.070086466611563e+02, 4.194194663091729e+02, 4.317101480113269e+02, - 4.438197766864187e+02, 4.556932135974009e+02, 4.672830896238900e+02, 4.785511091594258e+02, 4.894686759890935e+02, - 5.000167527506121e+02, 5.101849554743437e+02, 5.199702599653609e+02, 5.293755511287104e+02, 5.384082149497190e+02, - 5.470788975433853e+02, 5.554004838924639e+02, 5.633872970211829e+02, 5.710544895467217e+02, 5.784175894082275e+02, - 5.854921630893806e+02, 5.922935665032819e+02, 5.988367617028654e+02, 6.051361832976725e+02, 6.112056464541051e+02, - 6.170582848408643e+02, 6.227065165546040e+02, 6.281620307424529e+02, 6.334357912421719e+02, 6.385380532249721e+02, - 6.434783893639000e+02, 6.482657225428908e+02, 6.529083626237184e+02, 6.574140452794596e+02, 6.617899713586738e+02, - 6.660428456464107e+02, 6.701789142276291e+02, 6.742039999339015e+02, 6.781235355694876e+02, 6.819425947747883e+02, - 6.856659205023396e+02, 6.892979511613878e+02, 6.928428445396677e+02, 6.963044996422270e+02, 6.996865766027717e+02, - 7.029925148276741e+02, 7.062255495301256e+02, 7.093887268045381e+02, 7.124849173812776e+02, 7.155168291904314e+02, - 7.184870188516351e+02, 7.213979021885891e+02, 7.242517639050677e+02, 7.270507663998048e+02, 7.297969579417463e+02, - 7.324922801613727e+02, 7.351385749638322e+02, 7.377375909097577e+02, 7.402909891117177e+02, 7.428003486892109e+02, - 7.452671716069234e+02, 7.476928882430676e+02, 7.500788603599908e+02, 7.524263860944590e+02, 7.547367034626224e+02, - 7.570109938525577e+02, 7.592503852769565e+02, 7.614559554101827e+02, 7.636287344184568e+02, 7.657697075930903e+02, - 7.678798178157620e+02, 7.699599678635884e+02, 7.720110218913437e+02, 7.740338097577412e+02, 7.760291259061755e+02, - 7.779977329101621e+02, 7.799403627398524e+02, 7.818577183229571e+02, 7.837504750107840e+02, 7.856192819560242e+02, - 7.874647634083848e+02, 7.892875199336880e+02, 7.910881295616540e+02, 7.928671488758694e+02, 7.946251139969852e+02, - 7.963625415995471e+02, 7.980799297806370e+02, 7.997777589261379e+02, 8.014564925196682e+02, 8.031165779071468e+02, - 8.047584470198004e+02, 8.063825170582214e+02, 8.079891911399054e+02, 8.095788589125119e+02, 8.111518971349642e+02, - 8.127086702283306e+02, 8.142495307983016e+02, 8.157748201309761e+02, 8.172848686635214e+02, 8.187799964311907e+02, - 8.202605134920760e+02, 8.217267203308849e+02, 8.231789082429350e+02, 8.246173596995047e+02, 8.260423486955800e+02, - 8.274541410809942e+02, 8.288529948758718e+02, 8.302391605712540e+02, 8.316128814157046e+02, 8.329743936886640e+02, - 8.343239269612628e+02, 8.356617043452695e+02, 8.369879427307927e+02, 8.383028530133359e+02, 8.396066403107660e+02, - 8.408995041707070e+02, 8.421816387688572e+02, 8.434532330987004e+02, 8.447144711530358e+02, 8.459655320977448e+02, - 8.472065904381865e+02, 8.484378161785767e+02, 8.496593749747097e+02, 8.508714282803361e+02, 8.520741334875140e+02, - 8.532676440612200e+02, 8.544521096684942e+02, 8.556276763023810e+02, 8.567944860925804e+02, 8.579526786290141e+02, - 8.591023892922898e+02, 8.602437505230857e+02, 8.613768916378853e+02, 8.625019389264133e+02, 8.636190157453461e+02, - 8.647282426084473e+02, 8.658297372732981e+02, 8.669236148247752e+02, 8.680099877554118e+02, 8.690889660427813e+02, - 8.701606572240446e+02, 8.712251664677640e+02, 8.722825966431142e+02, 8.733330483866044e+02, 8.743766201664039e+02, - 8.754134083443855e+02, 8.764435072359754e+02, 8.774670091679043e+02, 8.784840045339395e+02, 8.794945818486956e+02, - 8.804988277995858e+02, 8.814968272969998e+02, 8.824886635227765e+02, 8.834744179770429e+02, 8.844541705234775e+02, - 8.854279994330692e+02, 8.863959814264241e+02, 8.873581917146822e+02, 8.883147040390955e+02, 8.892655907093177e+02, - 8.902109226404596e+02, 8.911507693889536e+02, 8.920851991872726e+02, 8.930142789775531e+02, 8.939380744441522e+02, - 8.948566500451867e+02, 8.957700690430937e+02, 8.966783935342397e+02, 8.975816844776203e+02, 8.984800017226866e+02, - 8.993734040363189e+02, 9.002619491289877e+02, 9.011456936801297e+02, 9.020246933627644e+02, 9.028990028673805e+02, - 9.037686759251153e+02, 9.046337653302517e+02, 9.054943229620671e+02, 9.063503998060366e+02, 9.072020459744310e+02, - 9.080493107263238e+02, 9.088922424870232e+02, 9.097308888669561e+02, 9.105652966800167e+02, 9.113955119613352e+02, - 9.122215799848839e+02, 9.130435452799314e+02, 9.138614516476977e+02, 9.146753421772305e+02, 9.154852592609075e+02, - 9.162912446095233e+02, 9.170933392669639e+02, 9.178915836244892e+02, 9.186860174346332e+02, 9.194766798247357e+02, - 9.202636093101133e+02, 9.210468438068881e+02, 9.218264206444752e+02, 9.226023765777530e+02, 9.233747477989077e+02, - 9.241435699489832e+02, 9.249088781291272e+02, 9.256707069115560e+02, 9.264290903502358e+02, 9.271840619912997e+02, - 9.279356548831979e+02, 9.286839015865997e+02, 9.294288341840439e+02, 9.301704842893547e+02, 9.309088830568232e+02, - 9.316440611901641e+02, 9.323760489512567e+02, 9.331048761686704e+02, 9.338305722459855e+02, 9.345531661699164e+02, - 9.352726865182373e+02, 9.359891614675212e+02, 9.367026188006956e+02, 9.374130859144185e+02, 9.381205898262842e+02, - 9.388251571818595e+02, 9.395268142615546e+02, 9.402255869873384e+02, 9.409215009292965e+02, 9.416145813120429e+02, - 9.423048530209791e+02, 9.429923406084172e+02, 9.436770682995624e+02, 9.443590599983590e+02, 9.450383392932092e+02, - 9.457149294625630e+02, 9.463888534803809e+02, 9.470601340214822e+02, 9.477287934667708e+02, 9.483948539083477e+02, - 9.490583371545124e+02, 9.497192647346579e+02, 9.503776579040566e+02, 9.510335376485434e+02, 9.516869246891034e+02, - 9.523378394863546e+02, 9.529863022449404e+02, 9.536323329178300e+02, 9.542759512105221e+02, 9.549171765851694e+02, - 9.555560282646089e+02, 9.561925252363130e+02, 9.568266862562597e+02, 9.574585298527176e+02, 9.580880743299601e+02, - 9.587153377718986e+02, 9.593403380456454e+02, 9.599630928050004e+02, 9.605836194938730e+02, 9.612019353496277e+02, - 9.618180574063725e+02, 9.624320024981713e+02, 9.630437872622015e+02, 9.636534281418425e+02, 9.642609413897094e+02, - 9.648663430706199e+02, 9.654696490645119e+02, 9.660708750692968e+02, 9.666700366036611e+02, 9.672671490098162e+02, - 9.678622274561883e+02, 9.684552869400649e+02, 9.690463422901838e+02, 9.696354081692803e+02, 9.702224990765772e+02, - 9.708076293502377e+02, 9.713908131697631e+02, 9.719720645583537e+02, 9.725513973852187e+02, 9.731288253678478e+02, - 9.737043620742403e+02, 9.742780209250910e+02, 9.748498151959377e+02, 9.754197580192680e+02, 9.759878623865930e+02, - 9.765541411504722e+02, 9.771186070265155e+02, 9.776812725953372e+02, 9.782421503044840e+02, 9.788012524703224e+02, - 9.793585912798953e+02, 9.799141787927448e+02, 9.804680269427042e+02, 9.810201475396558e+02, 9.815705522712616e+02, - 9.821192527046570e+02, 9.826662602881256e+02, 9.832115863527337e+02, 9.837552421139440e+02, 9.842972386731982e+02, - 9.848375870194743e+02, 9.853762980308148e+02, 9.859133824758312e+02, 9.864488510151830e+02, 9.869827142030263e+02, - 9.875149824884480e+02, 9.880456662168666e+02, 9.885747756314136e+02, 9.891023208742921e+02, 9.896283119881099e+02, - 9.901527589171960e+02, 9.906756715088881e+02, 9.911970595148051e+02, 9.917169325920956e+02, 9.922353003046654e+02, - 9.927521721243884e+02, 9.932675574322933e+02, 9.937814655197351e+02, 9.942939055895444e+02, 9.948048867571608e+02, - 9.953144180517476e+02, 9.958225084172856e+02, 9.963291667136539e+02, 9.968344017176923e+02, 9.973382221242440e+02, - 9.978406365471852e+02, 9.983416535204374e+02, 9.988412814989633e+02, 9.993395288597476e+02, 9.998364039027637e+02, - 1.000331914851921e+03, 1.000826069856005e+03, 1.001318876989594e+03, 1.001810344253971e+03, 1.002300479578013e+03, - 1.002789290819073e+03, 1.003276785763844e+03, 1.003762972129215e+03, 1.004247857563106e+03, 1.004731449645304e+03, - 1.005213755888269e+03, 1.005694783737940e+03, 1.006174540574529e+03, 1.006653033713296e+03, 1.007130270405315e+03, - 1.007606257838235e+03, 1.008081003137023e+03, 1.008554513364695e+03, 1.009026795523041e+03, 1.009497856553339e+03, - 1.009967703337054e+03, 1.010436342696534e+03, 1.010903781395687e+03, 1.011370026140656e+03, 1.011835083580480e+03, - 1.012298960307748e+03, 1.012761662859240e+03, 1.013223197716566e+03, 1.013683571306784e+03, 1.014142790003022e+03, - 1.014600860125083e+03, 1.015057787940047e+03, 1.015513579662854e+03, 1.015968241456896e+03, 1.016421779434584e+03, - 1.016874199657915e+03, 1.017325508139034e+03, 1.017775710840781e+03, 1.018224813677234e+03, 1.018672822514243e+03, - 1.019119743169963e+03, 1.019565581415369e+03, 1.020010342974772e+03, 1.020454033526326e+03, 1.020896658702527e+03, - 1.021338224090704e+03, 1.021778735233509e+03, 1.022218197629393e+03, 1.022656616733080e+03, 1.023093997956036e+03, - 1.023530346666926e+03, 1.023965668192073e+03, 1.024399967815899e+03, 1.024833250781376e+03, 1.025265522290456e+03, - 1.025696787504505e+03, 1.026127051544726e+03, 1.026556319492582e+03, 1.026984596390205e+03, 1.027411887240808e+03, - 1.027838197009089e+03, 1.028263530621625e+03, 1.028687892967268e+03, 1.029111288897532e+03, 1.029533723226977e+03, - 1.029955200733584e+03, 1.030375726159131e+03, 1.030795304209559e+03, 1.031213939555334e+03, 1.031631636831814e+03, - 1.032048400639594e+03, 1.032464235544858e+03, 1.032879146079728e+03, 1.033293136742604e+03, 1.033706211998499e+03, - 1.034118376279369e+03, 1.034529633984451e+03, 1.034939989480576e+03, 1.035349447102498e+03, 1.035758011153204e+03, - 1.036165685904231e+03, 1.036572475595972e+03, 1.036978384437982e+03, 1.037383416609279e+03, 1.037787576258640e+03, - 1.038190867504895e+03, 1.038593294437220e+03, 1.038994861115420e+03, 1.039395571570213e+03, 1.039795429803512e+03, - 1.040194439788697e+03, 1.040592605470893e+03, 1.040989930767235e+03, 1.041386419567140e+03, 1.041782075732563e+03, - 1.042176903098264e+03, 1.042570905472062e+03, 1.042964086635089e+03, 1.043356450342041e+03, 1.043748000321428e+03, - 1.044138740275815e+03, 1.044528673882071e+03, 1.044917804791599e+03, 1.045306136630582e+03, 1.045693673000213e+03, - 1.046080417476923e+03, 1.046466373612616e+03, 1.046851544934887e+03, 1.047235934947255e+03, 1.047619547129372e+03 - } -}; - -typedef TabulatedCO2Properties< TabulatedDensityTraits > TabulatedDensity; - -struct TabulatedEnthalpyTraits { - typedef double Scalar; - static const char *name; - static const int numTempSteps = 50; - static constexpr Scalar minTemp = 2.900000000000000e+02; - static constexpr Scalar maxTemp = 3.400000000000000e+02; - static const int numPressSteps = 495; - static constexpr Scalar minPress = 1.000000000000000e+05; - static constexpr Scalar maxPress = 1.000000000000000e+08; - static const Scalar vals[numTempSteps][numPressSteps]; -}; - -const char *TabulatedEnthalpyTraits::name = "enthalpy"; - -const double TabulatedEnthalpyTraits::vals[50][495] = -{ - { - 1.408170164632048e+04, 1.206094408005154e+04, 9.999072512842231e+03, 7.893568696047847e+03, 5.741654534329271e+03, - 3.540252931973033e+03, 1.285940716489019e+03, -1.025108403205529e+03, -3.397193547607618e+03, -5.835172655297544e+03, - -8.344569638992209e+03, -1.093170943112132e+04, -1.360389031381476e+04, -1.636960690529315e+04, -1.923884322708486e+04, - -2.222346472242436e+04, -2.533775326501835e+04, -2.859915436299174e+04, -3.202934911259839e+04, -3.565584148137851e+04, - -3.951439945650057e+04, -4.365298724826737e+04, -4.813847787068548e+04, -5.306900640130677e+04, -5.859914510016920e+04, - -6.499940358326967e+04, -2.394171990492217e+05, -2.402571596804630e+05, -2.410293867563451e+05, -2.417444362282047e+05, - -2.424104124259224e+05, -2.430337005425708e+05, -2.436194376744032e+05, -2.441718290563100e+05, -2.446943678697854e+05, - -2.451899924721747e+05, -2.456612016134948e+05, -2.461101406309721e+05, -2.465386670990346e+05, -2.469484016247012e+05, - -2.473407677010811e+05, -2.477170233674764e+05, -2.480782866434373e+05, -2.484255561689096e+05, -2.487597281088241e+05, - -2.490816101150538e+05, -2.493919329472170e+05, -2.496913602138078e+05, -2.499804965914476e+05, -2.502598948023235e+05, - -2.505300615710223e+05, -2.507914627369179e+05, -2.510445276634825e+05, -2.512896530587872e+05, -2.515272063001881e+05, - -2.517575283393337e+05, -2.519809362502368e+05, -2.521977254723610e+05, -2.524081717920010e+05, -2.526125330981728e+05, - -2.528110509434589e+05, -2.530039519355357e+05, -2.531914489811930e+05, -2.533737424014272e+05, -2.535510209334879e+05, - -2.537234626335108e+05, -2.538912356914616e+05, -2.540544991685349e+05, -2.542134036657877e+05, -2.543680919316462e+05, - -2.545186994149385e+05, -2.546653547692785e+05, -2.548081803138950e+05, -2.549472924553986e+05, -2.550828020744269e+05, - -2.552148148806621e+05, -2.553434317393068e+05, -2.554687489717571e+05, -2.555908586329046e+05, -2.557098487672442e+05, - -2.558258036457143e+05, -2.559388039850049e+05, -2.560489271508896e+05, -2.561562473469620e+05, -2.562608357900384e+05, - -2.563627608733511e+05, -2.564620883185477e+05, -2.565588813174136e+05, -2.566532006641569e+05, -2.567451048789950e+05, - -2.568346503237435e+05, -2.569218913100144e+05, -2.570068802005966e+05, -2.570896675045294e+05, -2.571703019663446e+05, - -2.572488306498998e+05, -2.573252990172009e+05, -2.573997510025698e+05, -2.574722290824874e+05, -2.575427743414188e+05, - -2.576114265338902e+05, -2.576782241430798e+05, -2.577432044361578e+05, -2.578064035165863e+05, -2.578678563735878e+05, - -2.579275969289572e+05, -2.579856580814001e+05, -2.580420717485421e+05, -2.580968689067650e+05, -2.581500796290021e+05, - -2.582017331206175e+05, -2.582518577534871e+05, -2.583004810983917e+05, -2.583476299558161e+05, -2.583933303852821e+05, - -2.584376077333342e+05, -2.584804866600372e+05, -2.585219911642595e+05, -2.585621446078119e+05, -2.586009697262858e+05, - -2.586384887010340e+05, -2.586747231031017e+05, -2.587096939461578e+05, -2.587434217646014e+05, -2.587759265324065e+05, - -2.588072277415807e+05, -2.588373444048451e+05, -2.588662950716779e+05, -2.588940978436808e+05, -2.589207703892972e+05, - -2.589463299579209e+05, -2.589707933934271e+05, -2.589941771471419e+05, -2.590164972902962e+05, -2.590377695259765e+05, - -2.590580092005963e+05, -2.590772313149243e+05, -2.590954505346712e+05, -2.591126812023242e+05, -2.591289373401782e+05, - -2.591442326701396e+05, -2.591585806156843e+05, -2.591719943123995e+05, -2.591844866163817e+05, -2.591960701123258e+05, - -2.592067571213089e+05, -2.592165597083049e+05, -2.592254896894162e+05, -2.592335586388542e+05, -2.592407778956699e+05, - -2.592471585702456e+05, -2.592527115505638e+05, -2.592574475082541e+05, -2.592613769044369e+05, -2.592645099953623e+05, - -2.592668568378623e+05, -2.592684272946167e+05, -2.592692310392434e+05, -2.592692775612216e+05, -2.592685761706487e+05, - -2.592671360028480e+05, -2.592649660228199e+05, -2.592620750295543e+05, -2.592584716602039e+05, -2.592541643941222e+05, - -2.592491615567781e+05, -2.592434713235436e+05, -2.592371017233669e+05, -2.592300606429729e+05, -2.592223558277077e+05, - -2.592139948888380e+05, -2.592049853041192e+05, -2.591953344216201e+05, -2.591850494627706e+05, -2.591741375253208e+05, - -2.591626055862138e+05, -2.591504605043725e+05, -2.591377090234058e+05, -2.591243577742355e+05, -2.591104132776496e+05, - -2.590958819467805e+05, -2.590807700895116e+05, -2.590650839108202e+05, -2.590488295150499e+05, -2.590320129081217e+05, - -2.590146399996835e+05, -2.589967166051996e+05, -2.589782484479840e+05, -2.589592411611768e+05, -2.589397002896686e+05, - -2.589196312919713e+05, -2.588990395420392e+05, -2.588779303310435e+05, -2.588563088690963e+05, -2.588341802869323e+05, - -2.588115496375450e+05, -2.587884218977790e+05, -2.587648019698842e+05, -2.587406946830280e+05, -2.587161047947690e+05, - -2.586910369924910e+05, -2.586654958948054e+05, -2.586394860529150e+05, -2.586130119519436e+05, -2.585860780122331e+05, - -2.585586885906090e+05, -2.585308479816131e+05, -2.585025604187089e+05, -2.584738300754529e+05, -2.584446610666421e+05, - -2.584150574494316e+05, -2.583850232244246e+05, -2.583545623367390e+05, -2.583236786770449e+05, -2.582923760825820e+05, - -2.582606583381478e+05, -2.582285291770684e+05, -2.581959922821414e+05, -2.581630512865618e+05, -2.581297097748214e+05, - -2.580959712835916e+05, -2.580618393025854e+05, -2.580273172753959e+05, -2.579924086003248e+05, -2.579571166311791e+05, - -2.579214446780625e+05, -2.578853960081427e+05, -2.578489738464018e+05, -2.578121813763715e+05, -2.577750217773675e+05, - -2.577374980807536e+05, -2.576996133849043e+05, -2.576613707145841e+05, -2.576227730565474e+05, -2.575838233601842e+05, - -2.575445245381474e+05, -2.575048794669730e+05, -2.574648909876826e+05, -2.574245619063729e+05, -2.573838949947980e+05, - -2.573428929909317e+05, -2.573015585995269e+05, -2.572598944926542e+05, -2.572179033102382e+05, -2.571755876605753e+05, - -2.571329501208472e+05, -2.570899932376183e+05, -2.570467195201521e+05, -2.570031314698643e+05, -2.569592315369147e+05, - -2.569150221502060e+05, -2.568705057103796e+05, -2.568256845902565e+05, -2.567805611352721e+05, -2.567351376639021e+05, - -2.566894164680786e+05, -2.566433998136017e+05, -2.565970899405371e+05, -2.565504890636129e+05, -2.565035993726031e+05, - -2.564564230327075e+05, -2.564089621849215e+05, -2.563612189464014e+05, -2.563131954108219e+05, -2.562648936487245e+05, - -2.562163157078640e+05, -2.561674636135427e+05, -2.561183393689465e+05, -2.560689449554636e+05, -2.560192823330098e+05, - -2.559693534403363e+05, -2.559191601953399e+05, -2.558687044953651e+05, -2.558179882174978e+05, -2.557670132188585e+05, - -2.557157813368864e+05, -2.556642943896213e+05, -2.556125541759772e+05, -2.555605624760145e+05, -2.555083210512043e+05, - -2.554558316446903e+05, -2.554030959815443e+05, -2.553501157690184e+05, -2.552968926967928e+05, -2.552434284372188e+05, - -2.551897246455562e+05, -2.551357829602101e+05, -2.550816050029602e+05, -2.550271923791877e+05, -2.549725466780981e+05, - -2.549176694729411e+05, -2.548625623212231e+05, -2.548072267649229e+05, -2.547516643306952e+05, -2.546958765300793e+05, - -2.546398648596963e+05, -2.545836308014505e+05, -2.545271758227196e+05, -2.544705013765504e+05, -2.544136089018431e+05, - -2.543564998235389e+05, -2.542991755527985e+05, -2.542416374871854e+05, -2.541838870108376e+05, -2.541259254946444e+05, - -2.540677542964124e+05, -2.540093747610375e+05, -2.539507882206669e+05, -2.538919959948622e+05, -2.538329993907577e+05, - -2.537737997032203e+05, -2.537143982150012e+05, -2.536547961968886e+05, -2.535949949078587e+05, -2.535349955952216e+05, - -2.534747994947672e+05, -2.534144078309069e+05, -2.533538218168159e+05, -2.532930426545693e+05, -2.532320715352795e+05, - -2.531709096392314e+05, -2.531095581360119e+05, -2.530480181846418e+05, -2.529862909337036e+05, -2.529243775214662e+05, - -2.528622790760110e+05, -2.527999967153534e+05, -2.527375315475622e+05, -2.526748846708796e+05, -2.526120571738372e+05, - -2.525490501353726e+05, -2.524858646249400e+05, -2.524225017026244e+05, -2.523589624192500e+05, -2.522952478164902e+05, - -2.522313589269732e+05, -2.521672967743874e+05, -2.521030623735855e+05, -2.520386567306871e+05, -2.519740808431767e+05, - -2.519093357000077e+05, -2.518444222816958e+05, -2.517793415604179e+05, -2.517140945001061e+05, -2.516486820565425e+05, - -2.515831051774487e+05, -2.515173648025814e+05, -2.514514618638173e+05, -2.513853972852442e+05, -2.513191719832503e+05, - -2.512527868666030e+05, -2.511862428365420e+05, -2.511195407868579e+05, -2.510526816039757e+05, -2.509856661670369e+05, - -2.509184953479780e+05, -2.508511700116114e+05, -2.507836910157024e+05, -2.507160592110454e+05, -2.506482754415416e+05, - -2.505803405442720e+05, -2.505122553495714e+05, -2.504440206811030e+05, -2.503756373559265e+05, -2.503071061845738e+05, - -2.502384279711142e+05, -2.501696035132260e+05, -2.501006336022637e+05, -2.500315190233255e+05, -2.499622605553191e+05, - -2.498928589710268e+05, -2.498233150371713e+05, -2.497536295144757e+05, -2.496838031577320e+05, -2.496138367158578e+05, - -2.495437309319592e+05, -2.494734865433924e+05, -2.494031042818219e+05, -2.493325848732790e+05, -2.492619290382215e+05, - -2.491911374915878e+05, -2.491202109428574e+05, -2.490491500961041e+05, -2.489779556500499e+05, -2.489066282981244e+05, - -2.488351687285118e+05, -2.487635776242093e+05, -2.486918556630766e+05, -2.486200035178883e+05, -2.485480218563847e+05, - -2.484759113413239e+05, -2.484036726305274e+05, -2.483313063769340e+05, -2.482588132286444e+05, -2.481861938289720e+05, - -2.481134488164878e+05, -2.480405788250697e+05, -2.479675844839456e+05, -2.478944664177416e+05, -2.478212252465250e+05, - -2.477478615858506e+05, -2.476743760468033e+05, -2.476007692360410e+05, -2.475270417558392e+05, -2.474531942041321e+05, - -2.473792271745547e+05, -2.473051412564835e+05, -2.472309370350788e+05, -2.471566150913236e+05, -2.470821760020631e+05, - -2.470076203400464e+05, -2.469329486739616e+05, -2.468581615684793e+05, -2.467832595842855e+05, -2.467082432781216e+05, - -2.466331132028221e+05, -2.465578699073490e+05, -2.464825139368301e+05, -2.464070458325937e+05, -2.463314661322050e+05, - -2.462557753694979e+05, -2.461799740746153e+05, -2.461040627740366e+05, -2.460280419906166e+05, -2.459519122436161e+05, - -2.458756740487366e+05, -2.457993279181504e+05, -2.457228743605356e+05, -2.456463138811057e+05, -2.455696469816439e+05, - -2.454928741605294e+05, -2.454159959127746e+05, -2.453390127300488e+05, -2.452619251007137e+05, -2.451847335098511e+05, - -2.451074384392897e+05, -2.450300403676404e+05, -2.449525397703172e+05, -2.448749371195730e+05, -2.447972328845221e+05, - -2.447194275311712e+05, -2.446415215224469e+05, -2.445635153182202e+05, -2.444854093753366e+05, -2.444072041476389e+05, - -2.443289000859990e+05, -2.442504976383377e+05, -2.441719972496550e+05, -2.440933993620535e+05, -2.440147044147634e+05, - -2.439359128441691e+05, -2.438570250838324e+05, -2.437780415645150e+05, -2.436989627142069e+05, -2.436197889581486e+05, - -2.435405207188506e+05, -2.434611584161232e+05, -2.433817024670968e+05, -2.433021532862405e+05, -2.432225112853935e+05, - -2.431427768737790e+05, -2.430629504580313e+05, -2.429830324422160e+05, -2.429030232278512e+05, -2.428229232139296e+05, - -2.427427327969408e+05, -2.426624523708893e+05, -2.425820823273173e+05, -2.425016230553256e+05, -2.424210749415919e+05, - -2.423404383703941e+05, -2.422597137236261e+05, -2.421789013808203e+05, -2.420980017191665e+05, -2.420170151135314e+05, - -2.419359419364764e+05, -2.418547825582773e+05, -2.417735373469440e+05, -2.416922066682370e+05, -2.416107908856878e+05, - -2.415292903606142e+05, -2.414477054521419e+05, -2.413660365172188e+05, -2.412842839106344e+05, -2.412024479850378e+05, - -2.411205290909527e+05, -2.410385275767967e+05, -2.409564437888954e+05, -2.408742780715031e+05, -2.407920307668155e+05, - -2.407097022149893e+05, -2.406272927541542e+05, -2.405448027204333e+05, -2.404622324479572e+05, -2.403795822688795e+05 - }, - { - 1.494233218995250e+04, 1.293773571180264e+04, 1.089296286396707e+04, 8.805598574580494e+03, 6.672983057102992e+03, - 4.492175670355582e+03, 2.259911618850659e+03, -2.745031208505466e+01, -2.373991362716449e+03, -4.784310899509553e+03, - -7.263623252962212e+03, -9.817879083148458e+03, -1.245391930009710e+04, -1.517967286103220e+04, -1.800441472478818e+04, - -2.093910788478931e+04, -2.399686549750557e+04, -2.719358886243985e+04, -3.054887036882754e+04, -3.408730923505473e+04, - -3.784049625429069e+04, -4.185013552182096e+04, -4.617321504649690e+04, -5.089115270295276e+04, -5.612744275382369e+04, - -6.208609784101752e+04, -6.915239613300648e+04, -2.365590649446803e+05, -2.374607154254610e+05, -2.382857779305339e+05, - -2.390468425256966e+05, -2.397534312375853e+05, -2.404129556857311e+05, -2.410313190546707e+05, -2.416133128022934e+05, - -2.421628881657728e+05, -2.426833478320314e+05, -2.431774848092592e+05, -2.436476852957051e+05, -2.440960063507838e+05, - -2.445242355292891e+05, -2.449339373479842e+05, -2.453264899708707e+05, -2.457031145153198e+05, -2.460648987135226e+05, - -2.464128162015927e+05, -2.467477423831286e+05, -2.470704675810238e+05, -2.473817080220554e+05, -2.476821150742292e+05, - -2.479722830640323e+05, -2.482527559308247e+05, -2.485240329223629e+05, -2.487865734945200e+05, -2.490408015465332e+05, - -2.492871090982782e+05, -2.495258594965133e+05, -2.497573902214920e+05, -2.499820153529182e+05, -2.502000277442344e+05, - -2.504117009461304e+05, -2.506172909135693e+05, -2.508170375252423e+05, -2.510111659399077e+05, -2.511998878104138e+05, - -2.513834023731365e+05, -2.515618974280270e+05, -2.517355502223281e+05, -2.519045282492135e+05, -2.520689899710993e+05, - -2.522290854760761e+05, -2.523849570748243e+05, -2.525367398444413e+05, -2.526845621247966e+05, -2.528285459723595e+05, - -2.529688075758360e+05, -2.531054576374473e+05, -2.532386017232412e+05, -2.533683405854268e+05, -2.534947704594064e+05, - -2.536179833378733e+05, -2.537380672240833e+05, -2.538551063661982e+05, -2.539691814743830e+05, -2.540803699221774e+05, - -2.541887459335014e+05, -2.542943807565187e+05, -2.543973428254639e+05, -2.544976979114299e+05, -2.545955092630140e+05, - -2.546908377376386e+05, -2.547837419242924e+05, -2.548742782583548e+05, -2.549625011291171e+05, -2.550484629805613e+05, - -2.551322144059009e+05, -2.552138042363367e+05, -2.552932796244697e+05, -2.553706861227403e+05, -2.554460677572588e+05, - -2.555194670973475e+05, -2.555909253210951e+05, -2.556604822771976e+05, -2.557281765433356e+05, -2.557940454813244e+05, - -2.558581252892497e+05, -2.559204510507843e+05, -2.559810567818727e+05, -2.560399754749498e+05, -2.560972391408510e+05, - -2.561528788485567e+05, -2.562069247629115e+05, -2.562594061804317e+05, -2.563103515633299e+05, -2.563597885718537e+05, - -2.564077440950945e+05, -2.564542442803184e+05, -2.564993145607374e+05, -2.565429796820360e+05, -2.565852637276670e+05, - -2.566261901430032e+05, -2.566657817468157e+05, -2.567040607836498e+05, -2.567410489322100e+05, -2.567767672939173e+05, - -2.568112364485099e+05, -2.568444764610743e+05, -2.568765068995597e+05, -2.569073468515418e+05, -2.569370149402716e+05, - -2.569655293400457e+05, -2.569929077909335e+05, -2.570191676128949e+05, -2.570443257193163e+05, -2.570683986299957e+05, - -2.570914024836027e+05, -2.571133530496410e+05, -2.571342657399351e+05, -2.571541556196654e+05, -2.571730374179726e+05, - -2.571909255396738e+05, -2.572078340688293e+05, -2.572237767877604e+05, -2.572387671795664e+05, -2.572528184385392e+05, - -2.572659434785775e+05, -2.572781549412857e+05, -2.572894652037765e+05, -2.572998863861940e+05, -2.573094303589630e+05, - -2.573181087497803e+05, -2.573259329503608e+05, -2.573329141229424e+05, -2.573390632065671e+05, -2.573443909231426e+05, - -2.573489077832983e+05, -2.573526240920376e+05, -2.573555499542018e+05, -2.573576952797508e+05, -2.573590697888645e+05, - -2.573596830168778e+05, -2.573595443190520e+05, -2.573586628751918e+05, -2.573570476941100e+05, -2.573547076179521e+05, - -2.573516513263788e+05, -2.573478873406174e+05, -2.573434240273866e+05, -2.573382696034624e+05, -2.573324321362556e+05, - -2.573259195520999e+05, -2.573187396365213e+05, -2.573109000384023e+05, -2.573024082732305e+05, -2.572932717262538e+05, - -2.572834976555416e+05, -2.572730931949512e+05, -2.572620653570107e+05, -2.572504210357142e+05, -2.572381670092381e+05, - -2.572253099425770e+05, -2.572118563901040e+05, -2.571978127980584e+05, -2.571831855069613e+05, -2.571679807539654e+05, - -2.571522046751369e+05, -2.571358633076721e+05, -2.571189625920579e+05, -2.571015083741652e+05, -2.570835064072942e+05, - -2.570649623541534e+05, -2.570458817887935e+05, -2.570262701984846e+05, -2.570061329855462e+05, -2.569854754691249e+05, - -2.569643028869277e+05, -2.569426203969089e+05, -2.569204330789131e+05, -2.568977459362748e+05, -2.568745638973772e+05, - -2.568508918171689e+05, -2.568267344786474e+05, -2.568020965942967e+05, -2.567769828074961e+05, -2.567513976938872e+05, - -2.567253457627119e+05, -2.566988314581137e+05, -2.566718591604081e+05, -2.566444331873214e+05, -2.566165577951992e+05, - -2.565882371801845e+05, -2.565594754793710e+05, -2.565302767719215e+05, -2.565006450801657e+05, -2.564705843706714e+05, - -2.564400985552860e+05, -2.564091914921552e+05, -2.563778669867228e+05, -2.563461287926975e+05, -2.563139806130059e+05, - -2.562814261007190e+05, -2.562484688599577e+05, -2.562151124467780e+05, -2.561813603700387e+05, -2.561472160922421e+05, - -2.561126830303649e+05, -2.560777645566641e+05, -2.560424639994642e+05, -2.560067846777747e+05, -2.559707297682354e+05, - -2.559343025042793e+05, -2.558975060460636e+05, -2.558603435135097e+05, -2.558228179869922e+05, -2.557849325080163e+05, - -2.557466900798786e+05, -2.557080936683138e+05, -2.556691462021290e+05, -2.556298505738224e+05, -2.555902096401904e+05, - -2.555502262229224e+05, -2.555099031091817e+05, -2.554692430521734e+05, -2.554282487645750e+05, -2.553869229478706e+05, - -2.553452682492806e+05, -2.553032872916440e+05, -2.552609826665173e+05, -2.552183569346784e+05, -2.551754126266164e+05, - -2.551321522430170e+05, -2.550885782552328e+05, -2.550446931057485e+05, -2.550004992086331e+05, -2.549559989499871e+05, - -2.549111946883766e+05, -2.548660887552630e+05, -2.548206834554207e+05, -2.547749810673498e+05, -2.547289838436771e+05, - -2.546826940115546e+05, -2.546361137730438e+05, -2.545892453054991e+05, -2.545420907619381e+05, -2.544946522714096e+05, - -2.544469319393524e+05, -2.543989318479463e+05, -2.543506540564592e+05, -2.543021006015848e+05, -2.542532734977773e+05, - -2.542041747375751e+05, -2.541548062919251e+05, -2.541051701104950e+05, -2.540552681219823e+05, -2.540051022344179e+05, - -2.539546743354652e+05, -2.539039862927096e+05, -2.538530399539482e+05, -2.538018371474708e+05, -2.537503796823357e+05, - -2.536986693486432e+05, -2.536467079178015e+05, -2.535944971427894e+05, -2.535420387584142e+05, -2.534893344815650e+05, - -2.534363860114591e+05, -2.533831950298916e+05, -2.533297632014682e+05, -2.532760921738482e+05, -2.532221835779718e+05, - -2.531680390282895e+05, -2.531136601229864e+05, -2.530590484442009e+05, -2.530042055582422e+05, -2.529491330158044e+05, - -2.528938323521721e+05, -2.528383050874279e+05, -2.527825527266558e+05, -2.527265767601382e+05, -2.526703786635510e+05, - -2.526139598981569e+05, -2.525573219109945e+05, -2.525004661350638e+05, -2.524433939895077e+05, -2.523861068797949e+05, - -2.523286061978925e+05, -2.522708933224449e+05, -2.522129696189421e+05, -2.521548364398871e+05, -2.520964951249643e+05, - -2.520379470012007e+05, -2.519791933831277e+05, -2.519202355729379e+05, -2.518610748606412e+05, -2.518017125242156e+05, - -2.517421498297619e+05, -2.516823880316480e+05, -2.516224283726557e+05, -2.515622720841254e+05, -2.515019203860966e+05, - -2.514413744874460e+05, -2.513806355860268e+05, -2.513197048688010e+05, -2.512585835119731e+05, -2.511972726811228e+05, - -2.511357735313298e+05, -2.510740872073038e+05, -2.510122148435086e+05, -2.509501575642829e+05, -2.508879164839656e+05, - -2.508254927070108e+05, -2.507628873281072e+05, -2.507001014322956e+05, -2.506371360950792e+05, -2.505739923825378e+05, - -2.505106713514394e+05, -2.504471740493477e+05, -2.503835015147299e+05, -2.503196547770630e+05, -2.502556348569376e+05, - -2.501914427661605e+05, -2.501270795078569e+05, -2.500625460765692e+05, -2.499978434583556e+05, -2.499329726308878e+05, - -2.498679345635455e+05, -2.498027302175109e+05, -2.497373605458624e+05, -2.496718264936639e+05, -2.496061289980585e+05, - -2.495402689883538e+05, -2.494742473861120e+05, -2.494080651052360e+05, -2.493417230520539e+05, -2.492752221254018e+05, - -2.492085632167115e+05, -2.491417472100856e+05, -2.490747749823846e+05, -2.490076474033006e+05, -2.489403653354407e+05, - -2.488729296343995e+05, -2.488053411488403e+05, -2.487376007205656e+05, -2.486697091845953e+05, -2.486016673692370e+05, - -2.485334760961599e+05, -2.484651361804640e+05, -2.483966484307542e+05, -2.483280136492047e+05, -2.482592326316308e+05, - -2.481903061675557e+05, -2.481212350402760e+05, -2.480520200269283e+05, -2.479826618985541e+05, -2.479131614201628e+05, - -2.478435193507962e+05, -2.477737364435902e+05, -2.477038134458351e+05, -2.476337510990374e+05, -2.475635501389809e+05, - -2.474932112957827e+05, -2.474227352939545e+05, -2.473521228524582e+05, -2.472813746847637e+05, -2.472104914989044e+05, - -2.471394739975335e+05, -2.470683228779785e+05, -2.469970388322931e+05, -2.469256225473136e+05, -2.468540747047102e+05, - -2.467823959810367e+05, -2.467105870477877e+05, -2.466386485714416e+05, -2.465665812135165e+05, -2.464943856306170e+05, - -2.464220624744839e+05, -2.463496123920421e+05, -2.462770360254467e+05, -2.462043340121323e+05, -2.461315069848590e+05, - -2.460585555717559e+05, -2.459854803963693e+05, -2.459122820777062e+05, -2.458389612302777e+05, -2.457655184641432e+05, - -2.456919543849544e+05, -2.456182695939964e+05, -2.455444646882311e+05, -2.454705402603364e+05, -2.453964968987511e+05, - -2.453223351877104e+05, -2.452480557072926e+05, -2.451736590334505e+05, -2.450991457380574e+05, -2.450245163889431e+05, - -2.449497715499309e+05, -2.448749117808779e+05, -2.447999376377095e+05, -2.447248496724588e+05, -2.446496484333019e+05, - -2.445743344645929e+05, -2.444989083069009e+05, -2.444233704970448e+05, -2.443477215681282e+05, -2.442719620495720e+05, - -2.441960924671520e+05, -2.441201133430278e+05, -2.440440251957799e+05, -2.439678285404405e+05, -2.438915238885256e+05, - -2.438151117480691e+05, -2.437385926236522e+05, -2.436619670164361e+05, -2.435852354241907e+05, -2.435083983413293e+05, - -2.434314562589353e+05, -2.433544096647931e+05, -2.432772590434180e+05, -2.432000048760863e+05, -2.431226476408608e+05, - -2.430451878126234e+05, -2.429676258631020e+05, -2.428899622608977e+05, -2.428121974715118e+05, -2.427343319573763e+05, - -2.426563661778766e+05, -2.425783005893821e+05, -2.425001356452707e+05, -2.424218717959549e+05, -2.423435094889076e+05, - -2.422650491686902e+05, -2.421864912769725e+05, -2.421078362525640e+05, -2.420290845314334e+05, -2.419502365467373e+05, - -2.418712927288412e+05, -2.417922535053445e+05, -2.417131193011055e+05, -2.416338905382627e+05, -2.415545676362606e+05, - -2.414751510118690e+05, -2.413956410792095e+05, -2.413160382497744e+05, -2.412363429324533e+05, -2.411565555335504e+05, - -2.410766764568090e+05, -2.409967061034336e+05, -2.409166448721074e+05, -2.408364931590185e+05, -2.407562513578776e+05, - -2.406759198599387e+05, -2.405954990540201e+05, -2.405149893265249e+05, -2.404343910614602e+05, -2.403537046404587e+05, - -2.402729304427945e+05, -2.401920688454081e+05, -2.401111202229200e+05, -2.400300849476522e+05, -2.399489633896477e+05, - -2.398677559166889e+05, -2.397864628943133e+05, -2.397050846858356e+05, -2.396236216523629e+05, -2.395420741528143e+05, - -2.394604425439368e+05, -2.393787271803248e+05, -2.392969284144360e+05, -2.392150465966090e+05, -2.391330820750805e+05, - -2.390510351960015e+05, -2.389689063034540e+05, -2.388866957394684e+05, -2.388044038440383e+05, -2.387220309551382e+05 - }, - { - 1.580396481253643e+04, 1.381531420616917e+04, 1.178739962878438e+04, 9.717904502768479e+03, 7.604281736063099e+03, - 5.443720354462670e+03, 3.233105661384819e+03, 9.689713285342059e+02, -1.352558672428035e+03, -3.735841053391670e+03, - -6.185800793802027e+03, -8.708040318691743e+03, -1.130897713859093e+04, -1.399601955366146e+04, -1.677779409506105e+04, - -1.966444457398082e+04, -2.266803228525191e+04, -2.580308245821799e+04, -2.908734784964687e+04, -3.254290483730186e+04, - -3.619777743651135e+04, -4.008843645902335e+04, -4.426382769660899e+04, -4.879225175406175e+04, -5.377402861196772e+04, - -5.936729833096786e+04, -6.584888855417217e+04, -7.379641865925108e+04, -2.336701904521194e+05, -2.346387851249729e+05, - -2.355206303976807e+05, -2.363307757721018e+05, -2.370804214241840e+05, -2.377781733780507e+05, -2.384308138260852e+05, - -2.390437989953858e+05, -2.396215944139615e+05, -2.401679083696576e+05, -2.406858590780143e+05, -2.411780972506385e+05, - -2.416468978134576e+05, -2.420942297693753e+05, -2.425218102515174e+05, -2.429311469288950e+05, -2.433235716897125e+05, - -2.437002676968913e+05, -2.440622913407705e+05, -2.444105902159893e+05, -2.447460179668651e+05, -2.450693466416705e+05, - -2.453812770471097e+05, -2.456824474838384e+05, -2.459734411611240e+05, -2.462547925260416e+05, -2.465269926946585e+05, - -2.467904941356130e+05, -2.470457147276505e+05, -2.472930412900389e+05, -2.475328326668484e+05, -2.477654224318244e+05, - -2.479911212691045e+05, -2.482102190758078e+05, -2.484229868249961e+05, -2.486296782213964e+05, -2.488305311772231e+05, - -2.490257691313015e+05, -2.492156022312340e+05, -2.494002283955062e+05, -2.495798342700086e+05, -2.497545960914492e+05, - -2.499246804684352e+05, -2.500902450895512e+05, -2.502514393665563e+05, -2.504084050197712e+05, -2.505612766118368e+05, - -2.507101820352712e+05, -2.508552429585810e+05, -2.509965752351266e+05, -2.511342892784475e+05, -2.512684904073243e+05, - -2.513992791634890e+05, -2.515267516045658e+05, -2.516509995745488e+05, -2.517721109538690e+05, -2.518901698908922e+05, - -2.520052570164873e+05, -2.521174496431516e+05, -2.522268219500132e+05, -2.523334451549108e+05, -2.524373876746302e+05, - -2.525387152742658e+05, -2.526374912065990e+05, -2.527337763422820e+05, -2.528276292915574e+05, -2.529191065181719e+05, - -2.530082624460808e+05, -2.530951495594921e+05, -2.531798184967435e+05, -2.532623181384746e+05, -2.533426956905017e+05, - -2.534209967617816e+05, -2.534972654378113e+05, -2.535715443497839e+05, -2.536438747397944e+05, -2.537142965223689e+05, - -2.537828483425590e+05, -2.538495676308397e+05, -2.539144906550156e+05, -2.539776525693346e+05, -2.540390874609868e+05, - -2.540988283941573e+05, -2.541569074517884e+05, -2.542133557751902e+05, -2.542682036016388e+05, -2.543214803000788e+05, - -2.543732144050517e+05, -2.544234336490379e+05, -2.544721649931378e+05, -2.545194346561904e+05, -2.545652681425678e+05, - -2.546096902686632e+05, -2.546527251881387e+05, -2.546943964043170e+05, -2.547347268216808e+05, -2.547737387640992e+05, - -2.548114539508355e+05, -2.548478935617810e+05, -2.548830782431822e+05, -2.549170281259340e+05, -2.549497628430778e+05, - -2.549813015465552e+05, -2.550116629232451e+05, -2.550408652103257e+05, -2.550689262099959e+05, -2.550958633035888e+05, - -2.551216934651017e+05, -2.551464332741830e+05, -2.551700989285906e+05, -2.551927062561547e+05, -2.552142707262653e+05, - -2.552348074609112e+05, -2.552543312452881e+05, -2.552728565393827e+05, -2.552903974820978e+05, -2.553069679094261e+05, - -2.553225813575517e+05, -2.553372510731263e+05, -2.553509900216866e+05, -2.553638108957603e+05, -2.553757261226783e+05, - -2.553867478721037e+05, -2.553968880632895e+05, -2.554061583720795e+05, -2.554145702376588e+05, -2.554221348690713e+05, - -2.554288632515065e+05, -2.554347661523715e+05, -2.554398541271535e+05, -2.554441375250829e+05, -2.554476264946054e+05, - -2.554503309886706e+05, -2.554522607698424e+05, -2.554534254152433e+05, -2.554538343213344e+05, -2.554534967085397e+05, - -2.554524216257220e+05, -2.554506179545132e+05, -2.554480944144340e+05, -2.554448595631951e+05, -2.554409218063465e+05, - -2.554362893972193e+05, -2.554309704415982e+05, -2.554249729012974e+05, -2.554183045976285e+05, -2.554109732147601e+05, - -2.554029863029798e+05, -2.553943512818541e+05, -2.553850754432969e+05, -2.553751659545436e+05, -2.553646298610434e+05, - -2.553534740892604e+05, -2.553417054493953e+05, -2.553293306380312e+05, -2.553163562407007e+05, -2.553027887343778e+05, - -2.552886344899040e+05, -2.552738997743413e+05, -2.552585907532629e+05, -2.552427134929765e+05, -2.552262739626880e+05, - -2.552092780366068e+05, -2.551917314959908e+05, -2.551736400311355e+05, -2.551550092433142e+05, -2.551358446466586e+05, - -2.551161516699959e+05, -2.550959356586319e+05, -2.550752018760903e+05, -2.550539555058045e+05, -2.550322016527671e+05, - -2.550099453451319e+05, -2.549871915357815e+05, -2.549639451038487e+05, -2.549402108562007e+05, -2.549159935288871e+05, - -2.548912977885501e+05, -2.548661282337981e+05, -2.548404893965470e+05, -2.548143857433276e+05, -2.547878216765583e+05, - -2.547608015357909e+05, -2.547333295989220e+05, -2.547054100833758e+05, -2.546770471472599e+05, -2.546482448904915e+05, - -2.546190073558957e+05, -2.545893385302828e+05, -2.545592423454919e+05, -2.545287226794172e+05, -2.544977833570051e+05, - -2.544664281512315e+05, -2.544346607840555e+05, -2.544024849273471e+05, -2.543699042038006e+05, -2.543369221878218e+05, - -2.543035424063960e+05, -2.542697683399369e+05, -2.542356034231179e+05, -2.542010510783695e+05, -2.541661145874537e+05, - -2.541307972838144e+05, -2.540951024270887e+05, -2.540590332350495e+05, -2.540225928843327e+05, -2.539857845111441e+05, - -2.539486112119533e+05, -2.539110760441734e+05, -2.538731820268246e+05, -2.538349321411842e+05, -2.537963293243632e+05, - -2.537573764984384e+05, -2.537180765278751e+05, -2.536784322492045e+05, -2.536384464642627e+05, -2.535981219407632e+05, - -2.535574614128544e+05, -2.535164675816707e+05, -2.534751431158695e+05, -2.534334906521531e+05, -2.533915127957893e+05, - -2.533492121211120e+05, -2.533065911720194e+05, -2.532636524624546e+05, -2.532203984768834e+05, -2.531768316707589e+05, - -2.531329544709772e+05, -2.530887692763245e+05, -2.530442784579152e+05, -2.529994843596233e+05, -2.529543892985000e+05, - -2.529089955651917e+05, -2.528633054243392e+05, -2.528173211149796e+05, -2.527710448509342e+05, -2.527244788211899e+05, - -2.526776251902740e+05, -2.526304860986234e+05, -2.525830636629436e+05, -2.525353599765640e+05, -2.524873771097837e+05, - -2.524391171102120e+05, -2.523905820031050e+05, -2.523417737916928e+05, -2.522926944574996e+05, -2.522433459606631e+05, - -2.521937302402417e+05, -2.521438492145219e+05, -2.520937047813163e+05, -2.520432988182567e+05, -2.519926331830838e+05, - -2.519417097139292e+05, -2.518905302295942e+05, -2.518390965298237e+05, -2.517874103955734e+05, -2.517354735892730e+05, - -2.516832878550858e+05, -2.516308549191646e+05, -2.515781764898987e+05, -2.515252542581610e+05, -2.514720898975488e+05, - -2.514186850646221e+05, -2.513650413991345e+05, -2.513111605242635e+05, -2.512570440468360e+05, -2.512026935575479e+05, - -2.511481106311833e+05, -2.510932968268269e+05, -2.510382536880738e+05, -2.509829827432383e+05, -2.509274855055552e+05, - -2.508717634733794e+05, -2.508158181303826e+05, -2.507596509457486e+05, -2.507032633743586e+05, -2.506466568569821e+05, - -2.505898328204602e+05, -2.505327926778829e+05, -2.504755378287712e+05, -2.504180696592504e+05, -2.503603895422199e+05, - -2.503024988375263e+05, -2.502443988921273e+05, -2.501860910402563e+05, -2.501275766035838e+05, -2.500688568913758e+05, - -2.500099332006507e+05, -2.499508068163315e+05, -2.498914790113989e+05, -2.498319510470388e+05, -2.497722241727889e+05, - -2.497122996266837e+05, -2.496521786353967e+05, -2.495918624143784e+05, -2.495313521679976e+05, -2.494706490896706e+05, - -2.494097543620025e+05, -2.493486691569125e+05, -2.492873946357664e+05, -2.492259319495012e+05, -2.491642822387561e+05, - -2.491024466339881e+05, -2.490404262556008e+05, -2.489782222140608e+05, -2.489158356100166e+05, -2.488532675344142e+05, - -2.487905190686135e+05, -2.487275912844988e+05, -2.486644852445924e+05, -2.486012020021616e+05, -2.485377426013296e+05, - -2.484741080771790e+05, -2.484102994558594e+05, -2.483463177546879e+05, -2.482821639822534e+05, -2.482178391385159e+05, - -2.481533442149037e+05, -2.480886801944144e+05, -2.480238480517077e+05, -2.479588487532023e+05, -2.478936832571675e+05, - -2.478283525138169e+05, -2.477628574653982e+05, -2.476971990462807e+05, -2.476313781830477e+05, -2.475653957945810e+05, - -2.474992527921446e+05, -2.474329500794731e+05, -2.473664885528535e+05, -2.472998691012052e+05, -2.472330926061646e+05, - -2.471661599421619e+05, -2.470990719765034e+05, -2.470318295694439e+05, -2.469644335742699e+05, -2.468968848373692e+05, - -2.468291841983096e+05, -2.467613324899115e+05, -2.466933305383182e+05, -2.466251791630697e+05, -2.465568791771736e+05, - -2.464884313871746e+05, -2.464198365932209e+05, -2.463510955891353e+05, -2.462822091624796e+05, -2.462131780946220e+05, - -2.461440031608023e+05, -2.460746851301955e+05, -2.460052247659758e+05, -2.459356228253783e+05, -2.458658800597620e+05, - -2.457959972146706e+05, -2.457259750298912e+05, -2.456558142395157e+05, -2.455855155719983e+05, -2.455150797502144e+05, - -2.454445074915157e+05, -2.453737995077886e+05, -2.453029565055096e+05, -2.452319791857991e+05, -2.451608682444769e+05, - -2.450896243721149e+05, -2.450182482540904e+05, -2.449467405706388e+05, -2.448751019969044e+05, -2.448033332029924e+05, - -2.447314348540151e+05, -2.446594076101496e+05, -2.445872521266792e+05, -2.445149690540443e+05, -2.444425590378924e+05, - -2.443700227191217e+05, -2.442973607339310e+05, -2.442245737138634e+05, -2.441516622858536e+05, -2.440786270722700e+05, - -2.440054686909638e+05, -2.439321877553081e+05, -2.438587848742434e+05, -2.437852606523213e+05, -2.437116156897442e+05, - -2.436378505824096e+05, -2.435639659219502e+05, -2.434899622957737e+05, -2.434158402871050e+05, -2.433416004750255e+05, - -2.432672434345110e+05, -2.431927697364718e+05, -2.431181799477919e+05, -2.430434746313643e+05, -2.429686543461305e+05, - -2.428937196471175e+05, -2.428186710854744e+05, -2.427435092085076e+05, -2.426682345597167e+05, -2.425928476788311e+05, - -2.425173491018434e+05, -2.424417393610450e+05, -2.423660189850600e+05, -2.422901884988787e+05, -2.422142484238895e+05, - -2.421381992779163e+05, -2.420620415752457e+05, -2.419857758266620e+05, -2.419094025394795e+05, -2.418329222175718e+05, - -2.417563353614056e+05, -2.416796424680699e+05, -2.416028440313046e+05, -2.415259405415356e+05, -2.414489324858999e+05, - -2.413718203482756e+05, -2.412946046093137e+05, -2.412172857464642e+05, -2.411398642340057e+05, -2.410623405430726e+05, - -2.409847151416844e+05, -2.409069884947717e+05, -2.408291610642036e+05, -2.407512333088155e+05, -2.406732056844355e+05, - -2.405950786439093e+05, -2.405168526371276e+05, -2.404385281110515e+05, -2.403601055097380e+05, -2.402815852743639e+05, - -2.402029678432541e+05, -2.401242536519016e+05, -2.400454431329945e+05, -2.399665367164420e+05, -2.398875348293926e+05, - -2.398084378962639e+05, -2.397292463387612e+05, -2.396499605759028e+05, -2.395705810240437e+05, -2.394911080968957e+05, - -2.394115422055513e+05, -2.393318837585048e+05, -2.392521331616766e+05, -2.391722908184318e+05, -2.390923571296024e+05, - -2.390123324935104e+05, -2.389322173059870e+05, -2.388520119603932e+05, -2.387717168476404e+05, -2.386913323562128e+05, - -2.386108588721846e+05, -2.385302967792409e+05, -2.384496464586994e+05, -2.383689082895248e+05, -2.382880826483555e+05, - -2.382071699095159e+05, -2.381261704450386e+05, -2.380450846246828e+05, -2.379639128159518e+05, -2.378826553841125e+05, - -2.378013126922135e+05, -2.377198851011020e+05, -2.376383729694423e+05, -2.375567766537324e+05, -2.374750965083243e+05, - -2.373933328854370e+05, -2.373114861351764e+05, -2.372295566055528e+05, -2.371475446424950e+05, -2.370654505898673e+05 - }, - { - 1.666659918993276e+04, 1.469368337128063e+04, 1.268239158583278e+04, 1.063050130939687e+04, 8.535572833564287e+03, - 6.394918449247592e+03, 4.205565776894477e+03, 1.964213830942384e+03, -3.328200204860501e+02, -2.689664611871535e+03, - -5.110974256254778e+03, -7.602027051680679e+03, -1.016884810175606e+04, -1.281836580708430e+04, -1.555861273303595e+04, - -1.839898759835578e+04, -2.135060269399423e+04, -2.442675333124493e+04, -2.764356596955805e+04, -3.102091554891727e+04, - -3.458376213792030e+04, -3.836416692918930e+04, -4.240446210395671e+04, -4.676249803229714e+04, -5.152091446918043e+04, - -5.680499270707036e+04, -6.282139643881178e+04, -6.995889793619969e+04, -2.295848671771139e+05, -2.307502186611415e+05, - -2.317913671715336e+05, -2.327341269094616e+05, -2.335965133090361e+05, -2.343917059550623e+05, -2.351296949267372e+05, - -2.358182663186951e+05, -2.364636264807655e+05, -2.370708154123387e+05, -2.376439905856254e+05, -2.381866277307758e+05, - -2.387016665161067e+05, -2.391916185654324e+05, -2.396586490732738e+05, -2.401046394997058e+05, -2.405312364414860e+05, - -2.409398902284136e+05, -2.413318857648067e+05, -2.417083674367500e+05, -2.420703594213357e+05, -2.424187823926400e+05, - -2.427544673745857e+05, -2.430781673131013e+05, -2.433905668091657e+05, -2.436922903567890e+05, -2.439839093564994e+05, - -2.442659481189509e+05, -2.445388890302360e+05, -2.448031770171234e+05, -2.450592234243246e+05, -2.453074093953284e+05, - -2.455480888319818e+05, -2.457815909949391e+05, -2.460082227965775e+05, -2.462282708294619e+05, -2.464420031664980e+05, - -2.466496709632461e+05, -2.468515098881754e+05, -2.470477414027810e+05, -2.472385739102686e+05, -2.474242037888263e+05, - -2.476048163232534e+05, -2.477805865468284e+05, -2.479516800036866e+05, -2.481182534406333e+05, -2.482804554361583e+05, - -2.484384269734279e+05, -2.485923019631938e+05, -2.487422077218264e+05, -2.488882654090578e+05, -2.490305904294744e+05, - -2.491692928013391e+05, -2.493044774959051e+05, -2.494362447500386e+05, -2.495646903546494e+05, -2.496899059211621e+05, - -2.498119791280242e+05, -2.499309939490290e+05, -2.500470308650621e+05, -2.501601670606981e+05, -2.502704766069497e+05, - -2.503780306313292e+05, -2.504828974762736e+05, -2.505851428468899e+05, -2.506848299488725e+05, -2.507820196173813e+05, - -2.508767704375858e+05, -2.509691388575179e+05, -2.510591792938239e+05, -2.511469442309458e+05, -2.512324843142266e+05, - -2.513158484373763e+05, -2.513970838247179e+05, -2.514762361085750e+05, -2.515533494021566e+05, -2.516284663682424e+05, - -2.517016282839650e+05, -2.517728751019525e+05, -2.518422455080780e+05, -2.519097769760377e+05, -2.519755058189736e+05, - -2.520394672383237e+05, -2.521016953700889e+05, -2.521622233286695e+05, -2.522210832484333e+05, -2.522783063231505e+05, - -2.523339228434314e+05, -2.523879622322995e+05, -2.524404530790941e+05, -2.524914231715419e+05, -2.525408995262725e+05, - -2.525889084179144e+05, -2.526354754068094e+05, -2.526806253654169e+05, -2.527243824916398e+05, -2.527667703587634e+05, - -2.528078119457604e+05, -2.528475295980284e+05, -2.528859451038449e+05, -2.529230796984684e+05, -2.529589540832315e+05, - -2.529935884437971e+05, -2.530270024676293e+05, -2.530592153607160e+05, -2.530902458635814e+05, -2.531201122666265e+05, - -2.531488324248316e+05, -2.531764237718495e+05, -2.532029033335264e+05, -2.532282877408698e+05, -2.532525932424972e+05, - -2.532758357165922e+05, -2.532980306823813e+05, -2.533191933111663e+05, -2.533393384369264e+05, -2.533584805677617e+05, - -2.533766338905812e+05, -2.533938122884003e+05, -2.534100293440399e+05, -2.534252983502465e+05, -2.534396323181119e+05, - -2.534530439851778e+05, -2.534655458232503e+05, -2.534771500459312e+05, -2.534878686158754e+05, -2.534977132517969e+05, - -2.535066954352224e+05, -2.535148264170101e+05, -2.535221172236419e+05, -2.535285786632992e+05, -2.535342213317306e+05, - -2.535390556179167e+05, -2.535430917095483e+05, -2.535463395983215e+05, -2.535488090850509e+05, -2.535505097846195e+05, - -2.535514511307647e+05, -2.535516423807077e+05, -2.535510926206619e+05, -2.535498107659989e+05, -2.535478055717942e+05, - -2.535450856325970e+05, -2.535416593874589e+05, -2.535375351237476e+05, -2.535327209808447e+05, -2.535272249537253e+05, - -2.535210548964331e+05, -2.535142185254462e+05, -2.535067234229429e+05, -2.534985770399693e+05, -2.534897866995106e+05, - -2.534803595994757e+05, -2.534703028155887e+05, -2.534596233041992e+05, -2.534483279050101e+05, -2.534364233437270e+05, - -2.534239162346303e+05, -2.534108130830750e+05, -2.533971202879187e+05, -2.533828441438829e+05, -2.533679908438463e+05, - -2.533525664810746e+05, -2.533365770513893e+05, -2.533200284552776e+05, -2.533029264999411e+05, -2.532852769012929e+05, - -2.532670852858994e+05, -2.532483571928672e+05, -2.532290980756835e+05, -2.532093133040072e+05, -2.531890081654080e+05, - -2.531681878670662e+05, -2.531468575374250e+05, -2.531250222277983e+05, -2.531026869139404e+05, -2.530798564975724e+05, - -2.530565358078728e+05, -2.530327296029269e+05, -2.530084425711420e+05, -2.529836793326240e+05, -2.529584444405250e+05, - -2.529327423823520e+05, -2.529065775812455e+05, -2.528799543972276e+05, -2.528528771284170e+05, -2.528253500122163e+05, - -2.527973772264717e+05, -2.527689628906010e+05, -2.527401110666984e+05, -2.527108257606103e+05, -2.526811109229880e+05, - -2.526509704503123e+05, -2.526204081858974e+05, -2.525894279208709e+05, -2.525580333951261e+05, -2.525262282982610e+05, - -2.524940162704880e+05, -2.524614009035259e+05, -2.524283857715026e+05, -2.523949743131503e+05, -2.523611700084728e+05, - -2.523269762637373e+05, -2.522923964408817e+05, -2.522574338582952e+05, -2.522220917915759e+05, -2.521863734670221e+05, - -2.521502820916641e+05, -2.521138208095761e+05, -2.520769927324757e+05, -2.520398009328511e+05, -2.520022484446292e+05, - -2.519643382638244e+05, -2.519260733491810e+05, -2.518874566227942e+05, -2.518484909707234e+05, -2.518091792435923e+05, - -2.517695242571724e+05, -2.517295287929578e+05, -2.516891955987281e+05, -2.516485273890974e+05, -2.516075268460555e+05, - -2.515661966194933e+05, -2.515245393277210e+05, -2.514825575579763e+05, -2.514402538669181e+05, -2.513976307811162e+05, - -2.513546907975254e+05, -2.513114363839536e+05, -2.512678699795194e+05, -2.512239939951026e+05, -2.511798108137819e+05, - -2.511353227912673e+05, -2.510905322563235e+05, -2.510454415111840e+05, -2.510000528319579e+05, -2.509543684690275e+05, - -2.509083906474419e+05, -2.508621215672992e+05, -2.508155634041229e+05, -2.507687183092300e+05, -2.507215884100957e+05, - -2.506741758107069e+05, -2.506264825919104e+05, -2.505785108117570e+05, -2.505302625058360e+05, -2.504817396876051e+05, - -2.504329443487131e+05, -2.503838784593189e+05, -2.503345439684025e+05, -2.502849428040704e+05, -2.502350768738568e+05, - -2.501849480650177e+05, -2.501345582448224e+05, -2.500839092608356e+05, -2.500330029411980e+05, -2.499818410949021e+05, - -2.499304255120585e+05, -2.498787579641618e+05, -2.498268402043535e+05, -2.497746739676730e+05, -2.497222609713118e+05, - -2.496696029148586e+05, -2.496167014805420e+05, -2.495635583334686e+05, -2.495101751218573e+05, -2.494565534772693e+05, - -2.494026950148329e+05, -2.493486013334686e+05, -2.492942740161036e+05, -2.492397146298898e+05, -2.491849247264129e+05, - -2.491299058419012e+05, -2.490746594974287e+05, -2.490191871991166e+05, -2.489634904383290e+05, -2.489075706918694e+05, - -2.488514294221691e+05, -2.487950680774765e+05, -2.487384880920403e+05, -2.486816908862932e+05, -2.486246778670271e+05, - -2.485674504275729e+05, -2.485100099479693e+05, -2.484523577951362e+05, -2.483944953230403e+05, -2.483364238728597e+05, - -2.482781447731464e+05, -2.482196593399859e+05, -2.481609688771531e+05, -2.481020746762683e+05, -2.480429780169472e+05, - -2.479836801669513e+05, -2.479241823823368e+05, -2.478644859075980e+05, -2.478045919758074e+05, -2.477445018087626e+05, - -2.476842166171185e+05, -2.476237376005258e+05, -2.475630659477660e+05, -2.475022028368821e+05, -2.474411494353086e+05, - -2.473799069000001e+05, -2.473184763775580e+05, -2.472568590043534e+05, -2.471950559066483e+05, -2.471330682007201e+05, - -2.470708969929763e+05, -2.470085433800729e+05, -2.469460084490302e+05, -2.468832932773456e+05, -2.468203989331039e+05, - -2.467573264750908e+05, -2.466940769528977e+05, -2.466306514070321e+05, -2.465670508690186e+05, -2.465032763615083e+05, - -2.464393288983759e+05, -2.463752094848235e+05, -2.463109191174795e+05, -2.462464587844947e+05, -2.461818294656420e+05, - -2.461170321324086e+05, -2.460520677480922e+05, -2.459869372678910e+05, -2.459216416389975e+05, -2.458561818006854e+05, - -2.457905586844016e+05, -2.457247732138498e+05, -2.456588263050796e+05, -2.455927188665706e+05, -2.455264517993149e+05, - -2.454600259969016e+05, -2.453934423455967e+05, -2.453267017244237e+05, -2.452598050052435e+05, -2.451927530528325e+05, - -2.451255467249576e+05, -2.450581868724559e+05, -2.449906743393058e+05, -2.449230099627031e+05, -2.448551945731347e+05, - -2.447872289944465e+05, -2.447191140439200e+05, -2.446508505323389e+05, -2.445824392640580e+05, -2.445138810370721e+05, - -2.444451766430842e+05, -2.443763268675700e+05, -2.443073324898459e+05, -2.442381942831306e+05, -2.441689130146109e+05, - -2.440994894455038e+05, -2.440299243311198e+05, -2.439602184209224e+05, -2.438903724585895e+05, -2.438203871820734e+05, - -2.437502633236597e+05, -2.436800016100248e+05, -2.436096027622930e+05, -2.435390674960964e+05, -2.434683965216252e+05, - -2.433975905436887e+05, -2.433266502617655e+05, -2.432555763700604e+05, -2.431843695575552e+05, -2.431130305080641e+05, - -2.430415599002811e+05, -2.429699584078350e+05, -2.428982266993400e+05, -2.428263654384423e+05, -2.427543752838728e+05, - -2.426822568894935e+05, -2.426100109043462e+05, -2.425376379727023e+05, -2.424651387341048e+05, -2.423925138234188e+05, - -2.423197638708758e+05, -2.422468895021186e+05, -2.421738913382466e+05, -2.421007699958589e+05, -2.420275260870979e+05, - -2.419541602196948e+05, -2.418806729970086e+05, -2.418070650180696e+05, -2.417333368776217e+05, -2.416594891661613e+05, - -2.415855224699798e+05, -2.415114373712024e+05, -2.414372344478290e+05, -2.413629142737714e+05, -2.412884774188923e+05, - -2.412139244490449e+05, -2.411392559261091e+05, -2.410644724080289e+05, -2.409895744488501e+05, -2.409145625987555e+05, - -2.408394374041019e+05, -2.407641994074542e+05, -2.406888491476228e+05, -2.406133871596960e+05, -2.405378139750745e+05, - -2.404621301215077e+05, -2.403863361231244e+05, -2.403104325004666e+05, -2.402344197705250e+05, -2.401582984467655e+05, - -2.400820690391675e+05, -2.400057320542522e+05, -2.399292879951133e+05, -2.398527373614503e+05, -2.397760806495974e+05, - -2.396993183525538e+05, -2.396224509600155e+05, -2.395454789584006e+05, -2.394684028308837e+05, -2.393912230574209e+05, - -2.393139401147801e+05, -2.392365544765691e+05, -2.391590666132631e+05, -2.390814769922332e+05, -2.390037860777716e+05, - -2.389259943311216e+05, -2.388481022105025e+05, -2.387701101711356e+05, -2.386920186652724e+05, -2.386138281422175e+05, - -2.385355390483578e+05, -2.384571518271833e+05, -2.383786669193173e+05, -2.383000847625363e+05, -2.382214057917981e+05, - -2.381426304392638e+05, -2.380637591343228e+05, -2.379847923036162e+05, -2.379057303710607e+05, -2.378265737578702e+05, - -2.377473228825805e+05, -2.376679781610710e+05, -2.375885400065895e+05, -2.375090088297704e+05, -2.374293850386583e+05, - -2.373496690387325e+05, -2.372698612329244e+05, -2.371899620216419e+05, -2.371099718027872e+05, -2.370298909717824e+05, - -2.369497199215851e+05, -2.368694590427127e+05, -2.367891087232603e+05, -2.367086693489215e+05, -2.366281413030077e+05, - -2.365475249664690e+05, -2.364668207179121e+05, -2.363860289336212e+05, -2.363051499875738e+05, -2.362241842514633e+05, - -2.361431320947151e+05, -2.360619938845070e+05, -2.359807699857837e+05, -2.358994607612803e+05, -2.358180665715354e+05, - -2.357365877749111e+05, -2.356550247276101e+05, -2.355733777836932e+05, -2.354916472950948e+05, -2.354098336116438e+05 - }, - { - 1.753023494309773e+04, 1.557284685304053e+04, 1.357794720946860e+04, 1.154340332839052e+04, 9.466877859217679e+03, - 7.345800317122452e+03, 5.177333320313007e+03, 2.958332282190817e+03, 6.852969393141030e+02, -1.645687395661817e+03, - -4.039021643335797e+03, -6.499681554398350e+03, -9.033328140610320e+03, -1.164644687913651e+04, -1.434652538947140e+04, - -1.714228338893244e+04, -2.004397498151955e+04, -2.306379308487430e+04, -2.621642145064916e+04, -2.951980568226143e+04, - -3.299625931150265e+04, -3.667410127484247e+04, -4.059017299032714e+04, -4.479388919069816e+04, -4.935414112597501e+04, - -5.437196204576319e+04, -6.000619388934156e+04, -6.653348602610327e+04, -7.452452577085026e+04, -2.265361464648133e+05, - -2.277991324079646e+05, -2.289187689609929e+05, -2.299267208291157e+05, -2.308445663906999e+05, -2.316878092973449e+05, - -2.324680353359897e+05, -2.331941709703912e+05, -2.338732642459103e+05, -2.345109931791723e+05, -2.351120098116751e+05, - -2.356801806242196e+05, -2.362187591224115e+05, -2.367305126198982e+05, -2.372178172534144e+05, -2.376827304454807e+05, - -2.381270470274866e+05, -2.385523433089663e+05, -2.389600121105733e+05, -2.393512909243557e+05, -2.397272847782959e+05, - -2.400889849716681e+05, -2.404372845558593e+05, -2.407729912245620e+05, -2.410968381229910e+05, -2.414094929714694e+05, - -2.417115658129745e+05, -2.420036156292945e+05, -2.422861560206847e+05, -2.425596601055034e+05, -2.428245647663572e+05, - -2.430812743457616e+05, -2.433301638757029e+05, -2.435715819106445e+05, -2.438058530216069e+05, -2.440332799993300e+05, - -2.442541458067112e+05, -2.444687153143327e+05, -2.446772368476362e+05, -2.448799435699907e+05, -2.450770547222965e+05, - -2.452687767367801e+05, -2.454553042401389e+05, -2.456368209590832e+05, -2.458135005395546e+05, -2.459855072893925e+05, - -2.461529968529531e+05, -2.463161168250882e+05, -2.464750073109637e+05, -2.466298014373994e+05, -2.467806258207258e+05, - -2.469276009955540e+05, -2.470708418083428e+05, -2.472104577792133e+05, -2.473465534350479e+05, -2.474792286165971e+05, - -2.476085787620067e+05, -2.477346951689237e+05, -2.478576652371094e+05, -2.479775726932851e+05, -2.480944977997693e+05, - -2.482085175482900e+05, -2.483197058402384e+05, -2.484281336544887e+05, -2.485338692038121e+05, -2.486369780808062e+05, - -2.487375233941855e+05, -2.488355658961877e+05, -2.489311641017873e+05, -2.490243744003532e+05, -2.491152511603146e+05, - -2.492038468273610e+05, -2.492902120166594e+05, -2.493743955995158e+05, -2.494564447848862e+05, -2.495364051961062e+05, - -2.496143209431703e+05, -2.496902346908682e+05, -2.497641877230709e+05, -2.498362200034182e+05, -2.499063702326549e+05, - -2.499746759028332e+05, -2.500411733485902e+05, -2.501058977956890e+05, -2.501688834069943e+05, -2.502301633260524e+05, - -2.502897697184197e+05, -2.503477338108789e+05, -2.504040859287237e+05, -2.504588555312270e+05, -2.505120712451624e+05, - -2.505637608967621e+05, -2.506139515421395e+05, -2.506626694962666e+05, -2.507099403605655e+05, -2.507557890186312e+05, - -2.508002397771155e+05, -2.508433162237525e+05, -2.508850413567680e+05, -2.509254375807997e+05, -2.509645267277258e+05, - -2.510023300765728e+05, -2.510388683725504e+05, -2.510741618452566e+05, -2.511082302261026e+05, -2.511410927649901e+05, - -2.511727682462866e+05, -2.512032750041295e+05, -2.512326309370962e+05, -2.512608535222690e+05, -2.512879598287270e+05, - -2.513139665304923e+05, -2.513388899189579e+05, -2.513627459148194e+05, -2.513855500795392e+05, -2.514073176263597e+05, - -2.514280634321216e+05, -2.514478020424145e+05, -2.514665476891034e+05, -2.514843142944601e+05, -2.515011154815929e+05, - -2.515169645831795e+05, -2.515318746498749e+05, -2.515458584584155e+05, -2.515589285194268e+05, -2.515710970849489e+05, - -2.515823761556942e+05, -2.515927774880475e+05, -2.516023126008196e+05, -2.516109927817639e+05, -2.516188290938688e+05, - -2.516258323814304e+05, -2.516320132759213e+05, -2.516373822016577e+05, -2.516419493812777e+05, -2.516457248410326e+05, - -2.516487184159101e+05, -2.516509397545780e+05, -2.516523983252897e+05, -2.516531034159966e+05, -2.516530641457090e+05, - -2.516522894641781e+05, -2.516507881572823e+05, -2.516485688510928e+05, -2.516456400158144e+05, -2.516420099696044e+05, - -2.516376868822710e+05, -2.516326787788585e+05, -2.516269935431250e+05, -2.516206389209104e+05, -2.516136225234075e+05, - -2.516059518303320e+05, -2.515976341929988e+05, -2.515886768373082e+05, -2.515790868666418e+05, -2.515688712646781e+05, - -2.515580368981231e+05, -2.515465905193606e+05, -2.515345387690332e+05, -2.515218881785416e+05, -2.515086451724792e+05, - -2.514948160709943e+05, -2.514804070920907e+05, -2.514654243538580e+05, -2.514498738766465e+05, -2.514337615851776e+05, - -2.514170933106007e+05, -2.513998747924908e+05, -2.513821116807931e+05, -2.513638095377177e+05, -2.513449738395803e+05, - -2.513256099785954e+05, -2.513057232646240e+05, -2.512853189268728e+05, -2.512644021155511e+05, -2.512429779034822e+05, - -2.512210512876761e+05, -2.511986271908607e+05, -2.511757104629729e+05, -2.511523058826146e+05, -2.511284181584682e+05, - -2.511040519306792e+05, -2.510792117722048e+05, -2.510539021901262e+05, -2.510281276269313e+05, -2.510018924617642e+05, - -2.509752010116455e+05, -2.509480575326616e+05, -2.509204662211241e+05, -2.508924312147078e+05, -2.508639565935507e+05, - -2.508350463813398e+05, -2.508057045463590e+05, -2.507759350025239e+05, -2.507457416103836e+05, -2.507151281781039e+05, - -2.506840984624257e+05, -2.506526561696016e+05, -2.506208049851349e+05, -2.505885484608205e+05, -2.505558901842884e+05, - -2.505228336616422e+05, -2.504893823745893e+05, -2.504555397375175e+05, -2.504213091277596e+05, -2.503866938789254e+05, - -2.503516972816673e+05, -2.503163225844258e+05, -2.502805729941579e+05, -2.502444516770530e+05, -2.502079617592316e+05, - -2.501711063274243e+05, -2.501338884296476e+05, -2.500963110758510e+05, -2.500583772385621e+05, -2.500200898535114e+05, - -2.499814518202473e+05, -2.499424660027334e+05, -2.499031352299422e+05, -2.498634622964246e+05, -2.498234499628781e+05, - -2.497831009566976e+05, -2.497424179725172e+05, -2.497014036727377e+05, -2.496600606880481e+05, -2.496183916179329e+05, - -2.495763990311701e+05, -2.495340854663199e+05, -2.494914534322038e+05, -2.494485054083713e+05, -2.494052438455606e+05, - -2.493616711661502e+05, -2.493177897645991e+05, -2.492736020078793e+05, -2.492291102359021e+05, -2.491843167619318e+05, - -2.491392238729963e+05, -2.490938338302852e+05, -2.490481488695441e+05, -2.490021712014598e+05, -2.489559030120344e+05, - -2.489093464629611e+05, -2.488625036919837e+05, -2.488153768132562e+05, -2.487679679176901e+05, -2.487202790732997e+05, - -2.486723123255381e+05, -2.486240696976290e+05, -2.485755531908909e+05, -2.485267647850553e+05, -2.484777064385804e+05, - -2.484283800889585e+05, -2.483787876530166e+05, -2.483289310272128e+05, -2.482788120879280e+05, -2.482284326917499e+05, - -2.481777946757552e+05, -2.481268998577846e+05, -2.480757500367118e+05, -2.480243469927105e+05, -2.479726924875166e+05, - -2.479207882646824e+05, -2.478686360498297e+05, -2.478162375508988e+05, -2.477635944583890e+05, -2.477107084455994e+05, - -2.476575811688634e+05, -2.476042142677807e+05, -2.475506093654432e+05, -2.474967680686571e+05, -2.474426919681641e+05, - -2.473883826388568e+05, -2.473338416399898e+05, -2.472790705153881e+05, -2.472240707936518e+05, -2.471688439883601e+05, - -2.471133915982648e+05, -2.470577151074893e+05, -2.470018159857188e+05, -2.469456956883862e+05, -2.468893556568634e+05, - -2.468327973186376e+05, -2.467760220874937e+05, -2.467190313636895e+05, -2.466618265341312e+05, -2.466044089725419e+05, - -2.465467800396306e+05, -2.464889410832583e+05, -2.464308934385993e+05, -2.463726384283015e+05, -2.463141773626459e+05, - -2.462555115396990e+05, -2.461966422454666e+05, -2.461375707540446e+05, -2.460782983277665e+05, -2.460188262173473e+05, - -2.459591556620303e+05, -2.458992878897245e+05, -2.458392241171467e+05, -2.457789655499552e+05, -2.457185133828872e+05, - -2.456578687998894e+05, -2.455970329742502e+05, -2.455360070687267e+05, -2.454747922356721e+05, -2.454133896171610e+05, - -2.453518003451116e+05, -2.452900255414057e+05, -2.452280663180104e+05, -2.451659237770941e+05, -2.451035990111400e+05, - -2.450410931030655e+05, -2.449784071263277e+05, -2.449155421450408e+05, -2.448524992140781e+05, -2.447892793791861e+05, - -2.447258836770863e+05, -2.446623131355800e+05, -2.445985687736513e+05, -2.445346516015693e+05, -2.444705626209865e+05, - -2.444063028250387e+05, -2.443418731984401e+05, -2.442772747175806e+05, -2.442125083506188e+05, -2.441475750575754e+05, - -2.440824757904260e+05, -2.440172114931883e+05, -2.439517831020128e+05, -2.438861915452732e+05, -2.438204377436475e+05, - -2.437545226102078e+05, -2.436884470505019e+05, -2.436222119626382e+05, -2.435558182373646e+05, -2.434892667581533e+05, - -2.434225584012764e+05, -2.433556940358861e+05, -2.432886745240934e+05, -2.432215007210413e+05, -2.431541734749835e+05, - -2.430866936273554e+05, -2.430190620128503e+05, -2.429512794594900e+05, -2.428833467886962e+05, -2.428152648153613e+05, - -2.427470343479181e+05, -2.426786561884073e+05, -2.426101311325459e+05, -2.425414599697932e+05, -2.424726434834180e+05, - -2.424036824505611e+05, -2.423345776423026e+05, -2.422653298237210e+05, -2.421959397539598e+05, -2.421264081862867e+05, - -2.420567358681549e+05, -2.419869235412622e+05, -2.419169719416123e+05, -2.418468817995720e+05, -2.417766538399282e+05, - -2.417062887819458e+05, -2.416357873394245e+05, -2.415651502207525e+05, -2.414943781289631e+05, -2.414234717617878e+05, - -2.413524318117100e+05, -2.412812589660175e+05, -2.412099539068557e+05, -2.411385173112768e+05, -2.410669498512927e+05, - -2.409952521939247e+05, -2.409234250012520e+05, -2.408514689304609e+05, -2.407793846338951e+05, -2.407071727590999e+05, - -2.406348339488723e+05, -2.405623688413060e+05, -2.404897780698379e+05, -2.404170622632935e+05, -2.403442220459311e+05, - -2.402712580374870e+05, -2.401981708532181e+05, -2.401249611039473e+05, -2.400516293961029e+05, -2.399781763317639e+05, - -2.399046025087001e+05, -2.398309085204130e+05, -2.397570949561783e+05, -2.396831624010827e+05, -2.396091114360678e+05, - -2.395349426379665e+05, -2.394606565795427e+05, -2.393862538295284e+05, -2.393117349526645e+05, -2.392371005097348e+05, - -2.391623510576056e+05, -2.390874871492594e+05, -2.390125093338350e+05, -2.389374181566599e+05, -2.388622141592859e+05, - -2.387868978795262e+05, -2.387114698514877e+05, -2.386359306056056e+05, -2.385602806686772e+05, -2.384845205638954e+05, - -2.384086508108807e+05, -2.383326719257160e+05, -2.382565844209757e+05, -2.381803888057602e+05, -2.381040855857243e+05, - -2.380276752631120e+05, -2.379511583367844e+05, -2.378745353022512e+05, -2.377978066517000e+05, -2.377209728740268e+05, - -2.376440344548663e+05, -2.375669918766169e+05, -2.374898456184753e+05, -2.374125961564593e+05, -2.373352439634407e+05, - -2.372577895091677e+05, -2.371802332602987e+05, -2.371025756804237e+05, -2.370248172300946e+05, -2.369469583668507e+05, - -2.368689995452451e+05, -2.367909412168701e+05, -2.367127838303845e+05, -2.366345278315358e+05, -2.365561736631899e+05, - -2.364777217653528e+05, -2.363991725751950e+05, -2.363205265270772e+05, -2.362417840525745e+05, -2.361629455804993e+05, - -2.360840115369246e+05, -2.360049823452094e+05, -2.359258584260189e+05, -2.358466401973494e+05, -2.357673280745499e+05, - -2.356879224703449e+05, -2.356084237948561e+05, -2.355288324556252e+05, -2.354491488576331e+05, -2.353693734033252e+05, - -2.352895064926284e+05, -2.352095485229754e+05, -2.351294998893231e+05, -2.350493609841760e+05, -2.349691321976018e+05, - -2.348888139172565e+05, -2.348084065284011e+05, -2.347279104139233e+05, -2.346473259543541e+05, -2.345666535278922e+05, - -2.344858935104159e+05, -2.344050462755091e+05, -2.343241121944752e+05, -2.342430916363580e+05, -2.341619849679587e+05, - -2.340807925538558e+05, -2.339995147564204e+05, -2.339181519358364e+05, -2.338367044501168e+05, -2.337551726551208e+05 - }, - { - 1.839487163940627e+04, 1.645280813882590e+04, 1.447407467743036e+04, 1.245662441260083e+04, 1.039821759345494e+04, - 8.296395256554382e+03, 6.148448130057817e+03, 3.951379639601249e+03, 1.701861589747157e+03, -6.038193280012223e+02, - -2.969826627477456e+03, -5.400853942618788e+03, -7.902224098526847e+03, -1.048001325062847e+04, -1.314120828266490e+04, - -1.589390900851201e+04, -1.874759176512137e+04, -2.171345874446511e+04, -2.480490967787966e+04, -2.803819246426630e+04, - -3.143332301570088e+04, -3.501542370021922e+04, -3.881673840573006e+04, -4.287979364699934e+04, -4.726261478408663e+04, - -5.204790253275794e+04, -5.736059070347127e+04, -6.340557024188227e+04, -7.056407609674087e+04, -7.972570650903856e+04, - -2.234472888767688e+05, -2.248173145322870e+05, -2.260216504967869e+05, -2.270991691659596e+05, -2.280757064638372e+05, - -2.289694792418775e+05, -2.297939020646117e+05, -2.305591888626523e+05, -2.312733262635755e+05, -2.319426964441634e+05, - -2.325724925780619e+05, -2.331670055634346e+05, -2.337298276644321e+05, -2.342640007206191e+05, -2.347721263147665e+05, - -2.352564491872255e+05, -2.357189214283076e+05, -2.361612525961885e+05, -2.365849493543450e+05, -2.369913471860740e+05, - -2.373816360374342e+05, -2.377568812495929e+05, -2.381180407951922e+05, -2.384659795848760e+05, -2.388014814293012e+05, - -2.391252591086590e+05, -2.394379629022789e+05, -2.397401878558528e+05, -2.400324800066230e+05, -2.403153417428721e+05, - -2.405892364398688e+05, -2.408545924876845e+05, -2.411118068051779e+05, -2.413612479176650e+05, -2.416032586623737e+05, - -2.418381585749637e+05, -2.420662460016265e+05, -2.422877999741414e+05, -2.425030818794070e+05, -2.427123369501475e+05, - -2.429157955995036e+05, -2.431136746188922e+05, -2.433061782557569e+05, -2.434934991854934e+05, -2.436758193898865e+05, - -2.438533109527307e+05, -2.440261367819086e+05, -2.441944512659993e+05, -2.443584008724668e+05, -2.445181246936110e+05, - -2.446737549456962e+05, -2.448254174260376e+05, -2.449732319322511e+05, -2.451173126473965e+05, -2.452577684943136e+05, - -2.453947034620821e+05, -2.455282169072181e+05, -2.456584038319347e+05, -2.457853551415427e+05, -2.459091578828621e+05, - -2.460298954653046e+05, -2.461476478661342e+05, -2.462624918212530e+05, -2.463745010027312e+05, -2.464837461841769e+05, - -2.465902953949426e+05, -2.466942140640648e+05, -2.467955651547545e+05, -2.468944092901764e+05, -2.469908048711956e+05, - -2.470848081866980e+05, -2.471764735170500e+05, -2.472658532312026e+05, -2.473529978779089e+05, -2.474379562714811e+05, - -2.475207755724812e+05, -2.476015013636926e+05, -2.476801777217189e+05, -2.477568472844972e+05, -2.478315513150121e+05, - -2.479043297614642e+05, -2.479752213141294e+05, -2.480442634591277e+05, -2.481114925293018e+05, -2.481769437523929e+05, - -2.482406512966842e+05, -2.483026483142732e+05, -2.483629669821208e+05, -2.484216385411004e+05, -2.484786933330271e+05, - -2.485341608357161e+05, -2.485880696963959e+05, -2.486404477635042e+05, -2.486913221169477e+05, -2.487407190969179e+05, - -2.487886642976177e+05, -2.488351827208166e+05, -2.488802986188938e+05, -2.489240356351046e+05, -2.489664167981370e+05, - -2.490074645438213e+05, -2.490472007358744e+05, -2.490856466857256e+05, -2.491228231714787e+05, -2.491587504560486e+05, - -2.491934483045253e+05, -2.492269360007911e+05, -2.492592323634458e+05, -2.492903557610606e+05, -2.493203241268038e+05, - -2.493491549724631e+05, -2.493768654019028e+05, -2.494034721239714e+05, -2.494289914648998e+05, -2.494534393802031e+05, - -2.494768314661176e+05, -2.494991829717813e+05, -2.495205088049210e+05, -2.495408235495158e+05, -2.495601414704370e+05, - -2.495784765241730e+05, -2.495958423678819e+05, -2.496122523681123e+05, -2.496277196091978e+05, -2.496422569013482e+05, - -2.496558767884470e+05, -2.496685915555674e+05, -2.496804132362206e+05, -2.496913536193509e+05, -2.497014242560775e+05, - -2.497106364662097e+05, -2.497190013445302e+05, -2.497265297668653e+05, -2.497332323959483e+05, -2.497391196870838e+05, - -2.497442018936214e+05, -2.497484890735012e+05, -2.497519910892790e+05, -2.497547176208279e+05, -2.497566781648726e+05, - -2.497578820409575e+05, -2.497583383959246e+05, -2.497580562082565e+05, -2.497570442922728e+05, -2.497553113022023e+05, - -2.497528657361209e+05, -2.497497159397714e+05, -2.497458701102630e+05, -2.497413362996576e+05, -2.497361224184487e+05, - -2.497302362389307e+05, -2.497236853984705e+05, -2.497164774026803e+05, -2.497086196284947e+05, -2.497001193271590e+05, - -2.496909836271273e+05, -2.496812195368797e+05, -2.496708339476541e+05, -2.496598336361015e+05, -2.496482252668650e+05, - -2.496360153950854e+05, -2.496232104688340e+05, -2.496098168314825e+05, -2.495958407239993e+05, -2.495812882871879e+05, - -2.495661655638618e+05, -2.495504785009575e+05, -2.495342329515948e+05, -2.495174346770737e+05, -2.495000893488272e+05, - -2.494822025503130e+05, -2.494637797788594e+05, -2.494448264474619e+05, -2.494253478865316e+05, -2.494053493455962e+05, - -2.493848359949623e+05, -2.493638129273281e+05, -2.493422851593575e+05, -2.493202576332150e+05, -2.492977352180591e+05, - -2.492747227115004e+05, -2.492512248410205e+05, -2.492272462653563e+05, -2.492027915758503e+05, -2.491778652977681e+05, - -2.491524718915798e+05, -2.491266157542158e+05, -2.491003012202857e+05, -2.490735325632722e+05, -2.490463139966945e+05, - -2.490186496752434e+05, -2.489905436958899e+05, -2.489620000989658e+05, -2.489330228692239e+05, -2.489036159368652e+05, - -2.488737831785574e+05, -2.488435284113578e+05, -2.488128554497016e+05, -2.487817679543500e+05, -2.487502696236291e+05, - -2.487183640807988e+05, -2.486860549011495e+05, -2.486533456128599e+05, -2.486202396978325e+05, -2.485867405925122e+05, - -2.485528516886866e+05, -2.485185763342673e+05, -2.484839178340565e+05, -2.484488794504925e+05, -2.484134644043842e+05, - -2.483776758756244e+05, -2.483415170038915e+05, -2.483049908893349e+05, -2.482681005932440e+05, -2.482308491387056e+05, - -2.481932395112447e+05, -2.481552746594550e+05, -2.481169574956120e+05, -2.480782908962767e+05, -2.480392777028847e+05, - -2.479999207223237e+05, -2.479602227274996e+05, -2.479201864578901e+05, -2.478798146200856e+05, -2.478391098883239e+05, - -2.477980749050064e+05, -2.477567122812127e+05, -2.477150245971964e+05, -2.476730144028771e+05, -2.476306842183188e+05, - -2.475880365342022e+05, -2.475450738122821e+05, -2.475017984858438e+05, -2.474582129601423e+05, -2.474143196128379e+05, - -2.473701207944230e+05, -2.473256188286375e+05, -2.472808160128804e+05, -2.472357146186093e+05, -2.471903168917359e+05, - -2.471446250530117e+05, -2.470986412984059e+05, -2.470523677994795e+05, -2.470058067037475e+05, -2.469589601350387e+05, - -2.469118301938454e+05, -2.468644189576695e+05, -2.468167284813591e+05, -2.467687607974412e+05, -2.467205179164480e+05, - -2.466720018272360e+05, -2.466232144973002e+05, -2.465741578730822e+05, -2.465248338802734e+05, -2.464752444241116e+05, - -2.464253913896721e+05, -2.463752766421567e+05, -2.463249020271726e+05, -2.462742693710092e+05, -2.462233804809121e+05, - -2.461722371453455e+05, -2.461208411342590e+05, -2.460691941993408e+05, -2.460172980742742e+05, -2.459651544749824e+05, - -2.459127650998771e+05, -2.458601316300931e+05, -2.458072557297297e+05, -2.457541390460778e+05, -2.457007832098512e+05, - -2.456471898354093e+05, -2.455933605209751e+05, -2.455392968488552e+05, -2.454850003856496e+05, -2.454304726824634e+05, - -2.453757152751100e+05, -2.453207296843155e+05, -2.452655174159147e+05, -2.452100799610514e+05, -2.451544187963648e+05, - -2.450985353841842e+05, -2.450424311727107e+05, -2.449861075962033e+05, -2.449295660751570e+05, -2.448728080164811e+05, - -2.448158348136732e+05, -2.447586478469898e+05, -2.447012484836165e+05, -2.446436380778324e+05, -2.445858179711736e+05, - -2.445277894925969e+05, -2.444695539586327e+05, -2.444111126735456e+05, -2.443524669294846e+05, -2.442936180066352e+05, - -2.442345671733679e+05, -2.441753156863834e+05, -2.441158647908581e+05, -2.440562157205837e+05, -2.439963696981085e+05, - -2.439363279348736e+05, -2.438760916313487e+05, -2.438156619771648e+05, -2.437550401512459e+05, -2.436942273219372e+05, - -2.436332246471325e+05, -2.435720332744013e+05, -2.435106543411081e+05, -2.434490889745390e+05, -2.433873382920170e+05, - -2.433254034010222e+05, -2.432632853993069e+05, -2.432009853750111e+05, -2.431385044067746e+05, -2.430758435638484e+05, - -2.430130039062018e+05, -2.429499864846358e+05, -2.428867923408823e+05, -2.428234225077146e+05, -2.427598780090473e+05, - -2.426961598600393e+05, -2.426322690671947e+05, -2.425682066284587e+05, -2.425039735333186e+05, -2.424395707628976e+05, - -2.423749992900491e+05, -2.423102600794531e+05, -2.422453540877024e+05, -2.421802822634003e+05, -2.421150455472443e+05, - -2.420496448721166e+05, -2.419840811631704e+05, -2.419183553379170e+05, -2.418524683063084e+05, -2.417864209708213e+05, - -2.417202142265395e+05, -2.416538489612345e+05, -2.415873260554462e+05, -2.415206463825598e+05, -2.414538108088869e+05, - -2.413868201937383e+05, -2.413196753895021e+05, -2.412523772417193e+05, -2.411849265891525e+05, -2.411173242638642e+05, - -2.410495710912856e+05, -2.409816678902871e+05, -2.409136154732489e+05, -2.408454146461293e+05, -2.407770662085330e+05, - -2.407085709537770e+05, -2.406399296689597e+05, -2.405711431350208e+05, -2.405022121268102e+05, -2.404331374131511e+05, - -2.403639197568997e+05, -2.402945599150101e+05, -2.402250586385947e+05, -2.401554166729827e+05, -2.400856347577821e+05, - -2.400157136269365e+05, -2.399456540087834e+05, -2.398754566261135e+05, -2.398051221962234e+05, -2.397346514309745e+05, - -2.396640450368470e+05, -2.395933037149937e+05, -2.395224281612951e+05, -2.394514190664108e+05, -2.393802771158323e+05, - -2.393090029899344e+05, -2.392375973640289e+05, -2.391660609084110e+05, -2.390943942884094e+05, -2.390225981644396e+05, - -2.389506731920485e+05, -2.388786200219624e+05, -2.388064393001368e+05, -2.387341316678011e+05, -2.386616977615041e+05, - -2.385891382131637e+05, -2.385164536501064e+05, -2.384436446951157e+05, -2.383707119664744e+05, -2.382976560780090e+05, - -2.382244776391311e+05, -2.381511772548819e+05, -2.380777555259714e+05, -2.380042130488226e+05, -2.379305504156101e+05, - -2.378567682143014e+05, -2.377828670286977e+05, -2.377088474384711e+05, -2.376347100192057e+05, -2.375604553424343e+05, - -2.374860839756793e+05, -2.374115964824862e+05, -2.373369934224635e+05, -2.372622753513195e+05, -2.371874428208976e+05, - -2.371124963792116e+05, -2.370374365704836e+05, -2.369622639351763e+05, -2.368869790100284e+05, -2.368115823280906e+05, - -2.367360744187562e+05, -2.366604558077978e+05, -2.365847270173988e+05, -2.365088885661850e+05, -2.364329409692601e+05, - -2.363568847382332e+05, -2.362807203812548e+05, -2.362044484030453e+05, -2.361280693049260e+05, -2.360515835848516e+05, - -2.359749917374374e+05, -2.358982942539918e+05, -2.358214916225447e+05, -2.357445843278757e+05, -2.356675728515450e+05, - -2.355904576719209e+05, -2.355132392642072e+05, -2.354359181004713e+05, -2.353584946496756e+05, -2.352809693776962e+05, - -2.352033427473602e+05, -2.351256152184646e+05, -2.350477872478068e+05, -2.349698592892081e+05, -2.348918317935418e+05, - -2.348137052087580e+05, -2.347354799799073e+05, -2.346571565491683e+05, -2.345787353558709e+05, -2.345002168365202e+05, - -2.344216014248225e+05, -2.343428895517077e+05, -2.342640816453530e+05, -2.341851781312083e+05, -2.341061794320161e+05, - -2.340270859678365e+05, -2.339478981560709e+05, -2.338686164114813e+05, -2.337892411462157e+05, -2.337097727698279e+05, - -2.336302116892998e+05, -2.335505583090640e+05, -2.334708130310240e+05, -2.333909762545740e+05, -2.333110483766232e+05, - -2.332310297916137e+05, -2.331509208915406e+05, -2.330707220659747e+05, -2.329904337020807e+05, -2.329100561846365e+05, - -2.328295898960542e+05, -2.327490352163989e+05, -2.326683925234076e+05, -2.325876621925084e+05, -2.325068445968390e+05, - -2.324259401072673e+05, -2.323449490924058e+05, -2.322638719186327e+05, -2.321827089501109e+05, -2.321014605488025e+05 - }, - { - 1.926050879403259e+04, 1.733357056137324e+04, 1.537078187867282e+04, 1.337017794784566e+04, 1.132961211115011e+04, - 9.246731540220675e+03, 7.118948587946905e+03, 4.943406823025757e+03, 2.716940490378647e+03, 4.360257768322313e+02, - -1.903278232531825e+03, -4.305401696993087e+03, -6.775352987536230e+03, -9.318829522226615e+03, -1.194235739778109e+04, - -1.465346949083428e+04, -1.746093578138160e+04, -2.037506584710749e+04, -2.340811312642730e+04, -2.657482600158358e+04, - -2.989321630612142e+04, -3.338565969599444e+04, -3.708052081889042e+04, -4.101464396765734e+04, -4.523734583952458e+04, - -4.981718453393519e+04, -5.485428976520725e+04, -6.050508808499263e+04, -6.703913923658527e+04, -7.500102458028450e+04, - -2.185585656577998e+05, -2.203184953515760e+05, -2.218056013861942e+05, -2.231010569985276e+05, -2.242525542326778e+05, - -2.252909810923273e+05, -2.262376998006507e+05, -2.271082062882168e+05, -2.279141580536755e+05, -2.286645812444755e+05, - -2.293666299843858e+05, -2.300260856027354e+05, -2.306476969687088e+05, -2.312354196500039e+05, -2.317925883683948e+05, - -2.323220441547454e+05, -2.328262299392315e+05, -2.333072636488026e+05, -2.337669949562415e+05, -2.342070499357919e+05, - -2.346288666308889e+05, -2.350337236950107e+05, -2.354227636845701e+05, -2.357970121743790e+05, -2.361573935750386e+05, - -2.365047443209250e+05, -2.368398239429463e+05, -2.371633244255198e+05, -2.374758781610640e+05, -2.377780647498939e+05, - -2.380704168432757e+05, -2.383534251886061e+05, -2.386275430054223e+05, -2.388931897971332e+05, -2.391507546845069e+05, - -2.394005993318859e+05, -2.396430605250070e+05, -2.398784524495221e+05, -2.401070687113665e+05, -2.403291841336123e+05, - -2.405450563591043e+05, -2.407549272837504e+05, -2.409590243416821e+05, -2.411575616604297e+05, -2.413507411017067e+05, - -2.415387532012398e+05, -2.417217780192603e+05, -2.418999859117368e+05, -2.420735382311165e+05, -2.422425879642219e+05, - -2.424072803140011e+05, -2.425677532309967e+05, -2.427241378996967e+05, -2.428765591843241e+05, -2.430251360380795e+05, - -2.431699818794033e+05, -2.433112049384137e+05, -2.434489085763401e+05, -2.435831915804453e+05, -2.437141484366847e+05, - -2.438418695820971e+05, -2.439664416387198e+05, -2.440879476306465e+05, -2.442064671856647e+05, -2.443220767227851e+05, - -2.444348496268344e+05, -2.445448564111817e+05, -2.446521648695513e+05, -2.447568402178027e+05, -2.448589452264647e+05, - -2.449585403447412e+05, -2.450556838166519e+05, -2.451504317898908e+05, -2.452428384179596e+05, -2.453329559560642e+05, - -2.454208348512331e+05, -2.455065238270737e+05, -2.455900699635447e+05, -2.456715187720986e+05, -2.457509142665132e+05, - -2.458282990297099e+05, -2.459037142768287e+05, -2.459771999148112e+05, -2.460487945987256e+05, -2.461185357850430e+05, - -2.461864597820648e+05, -2.462526017976845e+05, -2.463169959846512e+05, -2.463796754835046e+05, -2.464406724634209e+05, - -2.465000181608247e+05, -2.465577429160445e+05, -2.466138762082148e+05, -2.466684466884662e+05, -2.467214822115088e+05, - -2.467730098656895e+05, -2.468230559644033e+05, -2.468716462136345e+05, -2.469188055382711e+05, -2.469645582343246e+05, - -2.470089279618958e+05, -2.470519377677891e+05, -2.470936101071072e+05, -2.471339668638897e+05, -2.471730293708429e+05, - -2.472108184282113e+05, -2.472473543218297e+05, -2.472826568404094e+05, -2.473167452920877e+05, -2.473496385202810e+05, - -2.473813549188811e+05, -2.474119124468219e+05, -2.474413286420513e+05, -2.474696206349361e+05, -2.474968051611274e+05, - -2.475228985739154e+05, -2.475479168560921e+05, -2.475718756313526e+05, -2.475947901762810e+05, -2.476166754266667e+05, - -2.476375459941257e+05, -2.476574161714059e+05, -2.476762999429097e+05, -2.476942109937278e+05, -2.477111627183328e+05, - -2.477271682289589e+05, -2.477422403636744e+05, -2.477563916941612e+05, -2.477696345332183e+05, -2.477819809419944e+05, - -2.477934427369689e+05, -2.478040314966859e+05, -2.478137585682540e+05, -2.478226350736222e+05, -2.478306719156423e+05, - -2.478378797839203e+05, -2.478442691617846e+05, -2.478498503264386e+05, -2.478546333623398e+05, -2.478586281608275e+05, - -2.478618444264599e+05, -2.478642916817948e+05, -2.478659792720166e+05, -2.478669163694150e+05, -2.478671119777206e+05, - -2.478665749363015e+05, -2.478653139242294e+05, -2.478633374642205e+05, -2.478606539264482e+05, -2.478572715322449e+05, - -2.478531983576846e+05, -2.478484423370612e+05, -2.478430112662585e+05, -2.478369128060189e+05, -2.478301544851177e+05, - -2.478227437034386e+05, -2.478146877349631e+05, -2.478059937306675e+05, -2.477966687213420e+05, -2.477867196203212e+05, - -2.477761532261409e+05, -2.477649762251170e+05, -2.477531951938529e+05, -2.477408166016733e+05, -2.477278468129929e+05, - -2.477142920896169e+05, -2.477001585929776e+05, -2.476854523863127e+05, -2.476701794367777e+05, -2.476543456175079e+05, - -2.476379567096200e+05, -2.476210184041607e+05, -2.476035363040039e+05, -2.475855159256973e+05, -2.475669627012587e+05, - -2.475478819799288e+05, -2.475282790298729e+05, -2.475081590398427e+05, -2.474875271207931e+05, -2.474663883074579e+05, - -2.474447475598857e+05, -2.474226097649339e+05, -2.473999797377306e+05, -2.473768622230944e+05, -2.473532618969201e+05, - -2.473291833675313e+05, -2.473046311769986e+05, -2.472796098024254e+05, -2.472541236572015e+05, -2.472281770922272e+05, - -2.472017743971075e+05, -2.471749197941399e+05, -2.471476174684587e+05, -2.471198715251738e+05, -2.470916860200852e+05, - -2.470630649532523e+05, -2.470340122700260e+05, -2.470045318883803e+05, -2.469746275959957e+05, -2.469443032050508e+05, - -2.469135624519270e+05, -2.468824090231151e+05, -2.468508465561120e+05, -2.468188786403027e+05, -2.467865088178131e+05, - -2.467537405843522e+05, -2.467205773900291e+05, -2.466870226401570e+05, -2.466530796960353e+05, -2.466187518757173e+05, - -2.465840424547583e+05, -2.465489546669501e+05, -2.465134917050383e+05, -2.464776567214233e+05, -2.464414528288469e+05, - -2.464048831010662e+05, -2.463679505735079e+05, -2.463306582439140e+05, -2.462930090729719e+05, -2.462550059849303e+05, - -2.462166518682031e+05, -2.461779495759604e+05, -2.461389019267074e+05, -2.460995117048516e+05, -2.460597816612582e+05, - -2.460197145137929e+05, -2.459793129478553e+05, -2.459385796169010e+05, -2.458975171429510e+05, -2.458561281170960e+05, - -2.458144150999848e+05, -2.457723806223049e+05, -2.457300271852569e+05, -2.456873572610134e+05, -2.456443732931749e+05, - -2.456010776972116e+05, -2.455574728609003e+05, -2.455135611447496e+05, -2.454693448824225e+05, -2.454248263811411e+05, - -2.453800079220952e+05, -2.453348917608323e+05, -2.452894801276483e+05, -2.452437752279663e+05, -2.451977792427091e+05, - -2.451514943286659e+05, -2.451049226188503e+05, -2.450580662228528e+05, -2.450109272271864e+05, -2.449635076956263e+05, - -2.449158096695421e+05, -2.448678351682246e+05, -2.448195861892072e+05, -2.447710647085809e+05, -2.447222726813022e+05, - -2.446732120414980e+05, -2.446238847027627e+05, -2.445742925584521e+05, -2.445244374819698e+05, -2.444743213270498e+05, - -2.444239459280346e+05, -2.443733131001459e+05, -2.443224246397534e+05, -2.442712823246378e+05, -2.442198879142485e+05, - -2.441682431499571e+05, -2.441163497553064e+05, -2.440642094362585e+05, -2.440118238814303e+05, -2.439591947623345e+05, - -2.439063237336095e+05, -2.438532124332508e+05, -2.437998624828308e+05, -2.437462754877259e+05, -2.436924530373284e+05, - -2.436383967052629e+05, -2.435841080495948e+05, -2.435295886130372e+05, -2.434748399231536e+05, -2.434198634925580e+05, - -2.433646608191106e+05, -2.433092333861105e+05, -2.432535826624862e+05, -2.431977101029821e+05, -2.431416171483425e+05, - -2.430853052254903e+05, -2.430287757477084e+05, -2.429720301148110e+05, -2.429150697133182e+05, -2.428578959166232e+05, - -2.428005100851601e+05, -2.427429135665689e+05, -2.426851076958533e+05, -2.426270937955438e+05, -2.425688731758502e+05, - -2.425104471348185e+05, -2.424518169584793e+05, -2.423929839209992e+05, -2.423339492848268e+05, -2.422747143008353e+05, - -2.422152802084687e+05, -2.421556482358774e+05, -2.420958196000589e+05, -2.420357955069920e+05, -2.419755771517713e+05, - -2.419151657187380e+05, -2.418545623816114e+05, -2.417937683036132e+05, -2.417327846375963e+05, -2.416716125261668e+05, - -2.416102531018072e+05, -2.415487074869961e+05, -2.414869767943251e+05, -2.414250621266177e+05, -2.413629645770429e+05, - -2.413006852292282e+05, -2.412382251573722e+05, -2.411755854263531e+05, -2.411127670918372e+05, -2.410497712003868e+05, - -2.409865987895649e+05, -2.409232508880357e+05, -2.408597285156723e+05, -2.407960326836534e+05, -2.407321643945630e+05, - -2.406681246424885e+05, -2.406039144131175e+05, -2.405395346838324e+05, -2.404749864238049e+05, -2.404102705940860e+05, - -2.403453881476988e+05, -2.402803400297294e+05, -2.402151271774122e+05, -2.401497505202194e+05, -2.400842109799470e+05, - -2.400185094707978e+05, -2.399526468994675e+05, -2.398866241652260e+05, -2.398204421599976e+05, -2.397541017684437e+05, - -2.396876038680396e+05, -2.396209493291540e+05, -2.395541390151251e+05, -2.394871737823383e+05, -2.394200544802975e+05, - -2.393527819517031e+05, -2.392853570325222e+05, -2.392177805520614e+05, -2.391500533330387e+05, -2.390821761916503e+05, - -2.390141499376451e+05, -2.389459753743859e+05, -2.388776532989233e+05, -2.388091845020579e+05, -2.387405697684071e+05, - -2.386718098764695e+05, -2.386029055986893e+05, -2.385338577015186e+05, -2.384646669454797e+05, -2.383953340852256e+05, - -2.383258598696018e+05, -2.382562450417058e+05, -2.381864903389465e+05, -2.381165964930993e+05, -2.380465642303682e+05, - -2.379763942714389e+05, -2.379060873315377e+05, -2.378356441204834e+05, -2.377650653427441e+05, -2.376943516974913e+05, - -2.376235038786535e+05, -2.375525225749651e+05, -2.374814084700228e+05, -2.374101622423345e+05, -2.373387845653702e+05, - -2.372672761076116e+05, -2.371956375326032e+05, -2.371238694989988e+05, -2.370519726606108e+05, -2.369799476664575e+05, - -2.369077951608090e+05, -2.368355157832364e+05, -2.367631101686547e+05, -2.366905789473684e+05, -2.366179227451184e+05, - -2.365451421831241e+05, -2.364722378781267e+05, -2.363992104424342e+05, -2.363260604839619e+05, -2.362527886062761e+05, - -2.361793954086349e+05, -2.361058814860286e+05, -2.360322474292221e+05, -2.359584938247924e+05, -2.358846212551708e+05, - -2.358106302986799e+05, -2.357365215295741e+05, -2.356622955180756e+05, -2.355879528304149e+05, -2.355134940288657e+05, - -2.354389196717833e+05, -2.353642303136396e+05, -2.352894265050606e+05, -2.352145087928616e+05, -2.351394777200815e+05, - -2.350643338260191e+05, -2.349890776462649e+05, -2.349137097127388e+05, -2.348382305537210e+05, -2.347626406938852e+05, - -2.346869406543331e+05, -2.346111309526248e+05, -2.345352121028132e+05, -2.344591846154738e+05, -2.343830489977358e+05, - -2.343068057533160e+05, -2.342304553825452e+05, -2.341539983824030e+05, -2.340774352465440e+05, -2.340007664653293e+05, - -2.339239925258560e+05, -2.338471139119851e+05, -2.337701311043710e+05, -2.336930445804895e+05, -2.336158548146649e+05, - -2.335385622781002e+05, -2.334611674389023e+05, -2.333836707621101e+05, -2.333060727097196e+05, -2.332283737407126e+05, - -2.331505743110836e+05, -2.330726748738619e+05, -2.329946758791409e+05, -2.329165777741022e+05, -2.328383810030394e+05, - -2.327600860073859e+05, -2.326816932257370e+05, -2.326032030938744e+05, -2.325246160447911e+05, -2.324459325087172e+05, - -2.323671529131363e+05, -2.322882776828175e+05, -2.322093072398338e+05, -2.321302420035840e+05, -2.320510823908187e+05, - -2.319718288156600e+05, -2.318924816896237e+05, -2.318130414216426e+05, -2.317335084180871e+05, -2.316538830827859e+05, - -2.315741658170492e+05, -2.314943570196876e+05, -2.314144570870341e+05, -2.313344664129635e+05, -2.312543853889141e+05, - -2.311742144039065e+05, -2.310939538445642e+05, -2.310136040951323e+05, -2.309331655374996e+05, -2.308526385512135e+05, - -2.307720235135040e+05, -2.306913207992979e+05, -2.306105307812417e+05, -2.305296538297164e+05, -2.304486903128579e+05 - }, - { - 2.012714587139982e+04, 1.821513730289510e+04, 1.626807642155951e+04, 1.428407686735211e+04, 1.226108080553125e+04, - 1.019683645307303e+04, 8.088871678198354e+03, 5.934462804633700e+03, 3.730597512559985e+03, 1.473930415058227e+03, - -8.392705337264523e+02, -3.213189215903718e+03, -5.652541319016183e+03, -8.162673404954809e+03, -1.074968694789905e+04, - -1.342059546187678e+04, -1.618352614605308e+04, -1.904798243736725e+04, -2.202519147785538e+04, -2.512857250979661e+04, - -2.837438170249699e+04, -3.178262164722549e+04, -3.537836093231076e+04, -3.919371370117583e+04, -4.327093105237558e+04, - -4.766747237983417e+04, -5.246485725765522e+04, -5.778541730878131e+04, -6.382770606298401e+04, -7.095457585317583e+04, - -7.998078911026132e+04, -2.152109777000264e+05, -2.171505880641336e+05, -2.187653321138980e+05, -2.201584399337339e+05, - -2.213882922922000e+05, -2.224917175891272e+05, -2.234936932220004e+05, -2.244120648071305e+05, -2.252600959843795e+05, - -2.260479557188022e+05, -2.267836383641593e+05, -2.274735600925199e+05, -2.281229606167384e+05, -2.287361825615484e+05, - -2.293168710962072e+05, -2.298681199612735e+05, -2.303925804784587e+05, -2.308925443934405e+05, -2.313700078358323e+05, - -2.318267214007714e+05, -2.322642298617650e+05, -2.326839040218313e+05, -2.330869665238243e+05, -2.334745129625234e+05, - -2.338475293020980e+05, -2.342069063586250e+05, -2.345534519293748e+05, -2.348879010190477e+05, -2.352109245147830e+05, - -2.355231365874131e+05, -2.358251010396412e+05, -2.361173367780320e+05, -2.364003225516650e+05, -2.366745010735847e+05, - -2.369402826200856e+05, -2.371980481860631e+05, -2.374481522612114e+05, -2.376909252809739e+05, -2.379266757973548e+05, - -2.381556924074982e+05, -2.383782454720502e+05, -2.385945886504383e+05, -2.388049602761895e+05, -2.390095845920292e+05, - -2.392086728617118e+05, -2.394024243731654e+05, -2.395910273455501e+05, -2.397746597511469e+05, -2.399534900615615e+05, - -2.401276779265173e+05, -2.402973747924565e+05, -2.404627244672965e+05, -2.406238636368948e+05, -2.407809223381333e+05, - -2.409340243929470e+05, -2.410832878071287e+05, -2.412288251373061e+05, -2.413707438291090e+05, -2.415091465292189e+05, - -2.416441313736939e+05, -2.417757922547226e+05, -2.419042190677156e+05, -2.420294979404699e+05, -2.421517114459484e+05, - -2.422709388000684e+05, -2.423872560457610e+05, -2.425007362244328e+05, -2.426114495358577e+05, -2.427194634874309e+05, - -2.428248430336262e+05, -2.429276507064243e+05, -2.430279467374108e+05, -2.431257891721741e+05, -2.432212339775880e+05, - -2.433143351425028e+05, -2.434051447723299e+05, -2.434937131779640e+05, -2.435800889594427e+05, -2.436643190847207e+05, - -2.437464489638970e+05, -2.438265225192087e+05, -2.439045822510802e+05, -2.439806693004961e+05, -2.440548235079349e+05, - -2.441270834691011e+05, -2.441974865876573e+05, -2.442660691251477e+05, -2.443328662520870e+05, -2.443979120738967e+05, - -2.444612397114370e+05, -2.445228813033637e+05, -2.445828680633733e+05, -2.446412303128258e+05, -2.446979975153611e+05, - -2.447531983098309e+05, -2.448068605204335e+05, -2.448590112513830e+05, -2.449096768580799e+05, -2.449588829664941e+05, - -2.450066545327128e+05, -2.450530158552314e+05, -2.450979905984853e+05, -2.451416018153139e+05, -2.451838719684289e+05, - -2.452248229509237e+05, -2.452644761058931e+05, -2.453028522451958e+05, -2.453399716674105e+05, -2.453758541750262e+05, - -2.454105190909091e+05, -2.454439852740755e+05, -2.454762711348133e+05, -2.455073946491820e+05, -2.455373733729174e+05, - -2.455662244547793e+05, -2.455939646493609e+05, -2.456206103293902e+05, -2.456461774975460e+05, -2.456706817987887e+05, - -2.456941385272839e+05, -2.457165626430353e+05, -2.457379687777805e+05, -2.457583712457847e+05, -2.457777840531883e+05, - -2.457962209070117e+05, -2.458136952238233e+05, -2.458302201380926e+05, -2.458458085102381e+05, -2.458604729343868e+05, - -2.458742257458559e+05, -2.458870790283657e+05, -2.458990446210052e+05, -2.459101341249469e+05, -2.459203589099329e+05, - -2.459297301219697e+05, -2.459382586835553e+05, -2.459459553083887e+05, -2.459528305010101e+05, -2.459588945637805e+05, - -2.459641576021598e+05, -2.459686295298083e+05, -2.459723200735186e+05, -2.459752387779931e+05, -2.459773950104605e+05, - -2.459787979651502e+05, -2.459794566676182e+05, -2.459793799789442e+05, -2.459785765997876e+05, -2.459770550743249e+05, - -2.459748237940586e+05, -2.459718910015155e+05, -2.459682647938257e+05, -2.459639531261969e+05, -2.459589638152811e+05, - -2.459533045424438e+05, -2.459469828569312e+05, -2.459400061789481e+05, -2.459323818026423e+05, -2.459241168990028e+05, - -2.459152185186742e+05, -2.459056935946892e+05, -2.458955489451218e+05, -2.458847912756682e+05, -2.458734271821501e+05, - -2.458614631529507e+05, -2.458489055713819e+05, -2.458357607179842e+05, -2.458220347727649e+05, -2.458077338173728e+05, - -2.457928638372155e+05, -2.457774307235184e+05, -2.457614402753265e+05, -2.457448982014543e+05, -2.457278101223833e+05, - -2.457101815721091e+05, -2.456920179999394e+05, -2.456733247722443e+05, -2.456541071741616e+05, -2.456343704112587e+05, - -2.456141196111498e+05, -2.455933598250720e+05, -2.455720960294234e+05, -2.455503331272575e+05, -2.455280759497453e+05, - -2.455053292575966e+05, -2.454820977424478e+05, -2.454583860211889e+05, -2.454341986656811e+05, -2.454095401609878e+05, - -2.453844149356482e+05, -2.453588273555689e+05, -2.453327817252162e+05, -2.453062822887824e+05, -2.452793332313270e+05, - -2.452519386798862e+05, -2.452241027282897e+05, -2.451958293445916e+05, -2.451671225106465e+05, -2.451379861319971e+05, - -2.451084240613374e+05, -2.450784400994786e+05, -2.450480379962905e+05, -2.450172214516239e+05, -2.449859941162048e+05, - -2.449543595925197e+05, -2.449223214356698e+05, -2.448898831542133e+05, -2.448570482109861e+05, -2.448238200239021e+05, - -2.447902019667437e+05, -2.447561973699227e+05, -2.447218095212372e+05, -2.446870416666017e+05, -2.446518970107682e+05, - -2.446163787180279e+05, -2.445804899128995e+05, -2.445442336808035e+05, -2.445076130687173e+05, -2.444706310858239e+05, - -2.444332907041417e+05, -2.443955948591412e+05, -2.443575464503511e+05, -2.443191483419507e+05, -2.442804033633490e+05, - -2.442413143097531e+05, -2.442018839427246e+05, -2.441621149907254e+05, -2.441220101496482e+05, -2.440815720833444e+05, - -2.440408034241314e+05, -2.439997067732995e+05, -2.439582847015990e+05, -2.439165397497261e+05, -2.438744744287940e+05, - -2.438320912207955e+05, -2.437893925790581e+05, -2.437463809286894e+05, -2.437030586670117e+05, -2.436594281639922e+05, - -2.436154917626607e+05, -2.435712517795227e+05, -2.435267105049618e+05, -2.434818702036363e+05, -2.434367331148672e+05, - -2.433913014530195e+05, -2.433455774078749e+05, -2.432995631450009e+05, -2.432532608061070e+05, -2.432066725094015e+05, - -2.431598003499350e+05, -2.431126463999418e+05, -2.430652127091746e+05, -2.430175013052299e+05, -2.429695141938716e+05, - -2.429212533593455e+05, -2.428727207646900e+05, -2.428239183520403e+05, -2.427748480429274e+05, -2.427255117385708e+05, - -2.426759113201679e+05, -2.426260486491765e+05, -2.425759255675929e+05, -2.425255438982252e+05, -2.424749054449615e+05, - -2.424240119930330e+05, -2.423728653092737e+05, -2.423214671423748e+05, -2.422698192231344e+05, -2.422179232647028e+05, - -2.421657809628257e+05, -2.421133939960790e+05, -2.420607640261029e+05, -2.420078926978332e+05, -2.419547816397231e+05, - -2.419014324639681e+05, -2.418478467667201e+05, -2.417940261283064e+05, -2.417399721134344e+05, -2.416856862714040e+05, - -2.416311701363070e+05, -2.415764252272296e+05, -2.415214530484485e+05, -2.414662550896256e+05, -2.414108328259953e+05, - -2.413551877185554e+05, -2.412993212142498e+05, -2.412432347461486e+05, -2.411869297336291e+05, -2.411304075825490e+05, - -2.410736696854191e+05, -2.410167174215742e+05, -2.409595521573400e+05, -2.409021752461967e+05, -2.408445880289424e+05, - -2.407867918338499e+05, -2.407287879768255e+05, -2.406705777615637e+05, -2.406121624796964e+05, -2.405535434109453e+05, - -2.404947218232670e+05, -2.404356989729998e+05, -2.403764761050039e+05, -2.403170544528047e+05, -2.402574352387282e+05, - -2.401976196740393e+05, -2.401376089590756e+05, -2.400774042833773e+05, -2.400170068258211e+05, -2.399564177547440e+05, - -2.398956382280733e+05, -2.398346693934477e+05, -2.397735123883417e+05, -2.397121683401855e+05, -2.396506383664835e+05, - -2.395889235749315e+05, -2.395270250635323e+05, -2.394649439207083e+05, -2.394026812254146e+05, -2.393402380472487e+05, - -2.392776154465587e+05, -2.392148144745507e+05, -2.391518361733940e+05, -2.390886815763270e+05, -2.390253517077567e+05, - -2.389618475833606e+05, -2.388981702101875e+05, -2.388343205867551e+05, -2.387702997031454e+05, -2.387061085411015e+05, - -2.386417480741214e+05, -2.385772192675491e+05, -2.385125230786692e+05, -2.384476604567929e+05, -2.383826323433501e+05, - -2.383174396719758e+05, -2.382520833685944e+05, -2.381865643515092e+05, -2.381208835314827e+05, -2.380550418118201e+05, - -2.379890400884528e+05, -2.379228792500160e+05, -2.378565601779308e+05, -2.377900837464810e+05, -2.377234508228908e+05, - -2.376566622674005e+05, -2.375897189333434e+05, -2.375226216672173e+05, -2.374553713087599e+05, -2.373879686910205e+05, - -2.373204146404307e+05, -2.372527099768737e+05, -2.371848555137572e+05, -2.371168520580764e+05, -2.370487004104878e+05, - -2.369804013653701e+05, -2.369119557108930e+05, -2.368433642290824e+05, -2.367746276958818e+05, -2.367057468812189e+05, - -2.366367225490648e+05, -2.365675554574979e+05, -2.364982463587627e+05, -2.364287959993321e+05, -2.363592051199640e+05, - -2.362894744557619e+05, -2.362196047362309e+05, -2.361495966853354e+05, -2.360794510215568e+05, -2.360091684579447e+05, - -2.359387497021775e+05, -2.358681954566116e+05, -2.357975064183371e+05, -2.357266832792310e+05, -2.356557267260068e+05, - -2.355846374402691e+05, -2.355134160985621e+05, -2.354420633724209e+05, -2.353705799284203e+05, -2.352989664282242e+05, - -2.352272235286334e+05, -2.351553518816339e+05, -2.350833521344446e+05, -2.350112249295615e+05, -2.349389709048066e+05, - -2.348665906933716e+05, -2.347940849238622e+05, -2.347214542203447e+05, -2.346486992023870e+05, -2.345758204851041e+05, - -2.345028186792006e+05, -2.344296943910106e+05, -2.343564482225423e+05, -2.342830807715183e+05, -2.342095926314146e+05, - -2.341359843915041e+05, -2.340622566368922e+05, -2.339884099485612e+05, -2.339144449034036e+05, -2.338403620742652e+05, - -2.337661620299800e+05, -2.336918453354090e+05, -2.336174125514766e+05, -2.335428642352074e+05, -2.334682009397626e+05, - -2.333934232144760e+05, -2.333185316048886e+05, -2.332435266527831e+05, -2.331684088962201e+05, -2.330931788695709e+05, - -2.330178371035515e+05, -2.329423841252564e+05, -2.328668204581903e+05, -2.327911466223028e+05, -2.327153631340192e+05, - -2.326394705062714e+05, -2.325634692485314e+05, -2.324873598668422e+05, -2.324111428638459e+05, -2.323348187388187e+05, - -2.322583879876966e+05, -2.321818511031081e+05, -2.321052085744015e+05, -2.320284608876759e+05, -2.319516085258097e+05, - -2.318746519684862e+05, -2.317975916922266e+05, -2.317204281704133e+05, -2.316431618733202e+05, -2.315657932681398e+05, - -2.314883228190079e+05, -2.314107509870325e+05, -2.313330782303196e+05, -2.312553050039977e+05, -2.311774317602464e+05, - -2.310994589483202e+05, -2.310213870145730e+05, -2.309432164024838e+05, -2.308649475526822e+05, -2.307865809029719e+05, - -2.307081168883546e+05, -2.306295559410543e+05, -2.305508984905417e+05, -2.304721449635564e+05, -2.303932957841289e+05, - -2.303143513736074e+05, -2.302353121506762e+05, -2.301561785313814e+05, -2.300769509291505e+05, -2.299976297548146e+05, - -2.299182154166333e+05, -2.298387083203125e+05, -2.297591088690257e+05, -2.296794174634383e+05, -2.295996345017260e+05, - -2.295197603795943e+05, -2.294397954903019e+05, -2.293597402246784e+05, -2.292795949711457e+05, -2.291993601157369e+05, - -2.291190360421165e+05, -2.290386231315988e+05, -2.289581217631685e+05, -2.288775323134980e+05, -2.287968551569674e+05 - }, - { - 2.099478228670655e+04, 1.909751139945360e+04, 1.716596564246455e+04, 1.519833366668887e+04, 1.319264241252431e+04, - 1.114673633053598e+04, 9.058253045865617e+03, 6.924594696780082e+03, 4.742893970077908e+03, 2.509973586400410e+03, - 2.222976267637193e+02, -2.124087395856332e+03, -4.533624482002477e+03, -7.011334792394948e+03, -9.562927975283810e+03, - -1.219494100354300e+04, -1.491491503846420e+04, -1.773162382078368e+04, -2.065537312333451e+04, -2.369840016480853e+04, - -2.687541682510288e+04, -3.020436509724379e+04, -3.370749517788314e+04, -3.741295127569864e+04, -4.135718967713400e+04, - -4.558883036910943e+04, -5.017513236252034e+04, -5.521365661975791e+04, -6.085528225803022e+04, -6.735583953828135e+04, - -7.521710146052163e+04, -8.573772183782236e+04, -2.118051947232825e+05, -2.139451610012796e+05, -2.156984012134116e+05, - -2.171956695950975e+05, -2.185081303878303e+05, -2.196795145791855e+05, -2.207389108167730e+05, -2.217067919932384e+05, - -2.225981931835728e+05, -2.234245295873016e+05, -2.241947031852730e+05, -2.249158104610238e+05, -2.255936135798008e+05, - -2.262328647859035e+05, -2.268375361866654e+05, -2.274109865450157e+05, -2.279560849474490e+05, -2.284753042213292e+05, - -2.289707926727150e+05, -2.294444299891089e+05, -2.298978713777849e+05, -2.303325828293964e+05, -2.307498695937412e+05, - -2.311508993983793e+05, -2.315367215488669e+05, -2.319082827688161e+05, -2.322664404342890e+05, -2.326119737071662e+05, - -2.329455929605189e+05, -2.332679478049691e+05, -2.335796339610684e+05, -2.338811991735672e+05, -2.341731483253519e+05, - -2.344559478790312e+05, -2.347300297506604e+05, -2.349957947014640e+05, -2.352536153184853e+05, -2.355038386431228e+05, - -2.357467884967682e+05, -2.359827675448702e+05, -2.362120591342517e+05, -2.364349289331799e+05, -2.366516263992675e+05, - -2.368623860966146e+05, -2.370674288805445e+05, -2.372669629656905e+05, -2.374611848910658e+05, -2.376502803938781e+05, - -2.378344252023316e+05, -2.380137857563154e+05, -2.381885198637648e+05, -2.383587772995011e+05, -2.385247003525350e+05, - -2.386864243270965e+05, -2.388440780020325e+05, -2.389977840526829e+05, -2.391476594388726e+05, -2.392938157622497e+05, - -2.394363595958504e+05, -2.395753927884544e+05, -2.397110127460191e+05, -2.398433126922502e+05, -2.399723819101439e+05, - -2.400983059661542e+05, -2.402211669184711e+05, -2.403410435107533e+05, -2.404580113525175e+05, -2.405721430872861e+05, - -2.406835085494761e+05, -2.407921749109305e+05, -2.408982068179059e+05, -2.410016665192552e+05, -2.411026139864842e+05, - -2.412011070262903e+05, -2.412972013861498e+05, -2.413909508534627e+05, -2.414824073487254e+05, -2.415716210131605e+05, - -2.416586402911972e+05, -2.417435120081609e+05, -2.418262814435099e+05, -2.419069923999207e+05, -2.419856872684987e+05, - -2.420624070903846e+05, -2.421371916149836e+05, -2.422100793550469e+05, -2.422811076388039e+05, -2.423503126593374e+05, - -2.424177295214733e+05, -2.424833922861799e+05, -2.425473340125520e+05, -2.426095867977611e+05, -2.426701818150084e+05, - -2.427291493495969e+05, -2.427865188332336e+05, -2.428423188516172e+05, -2.428965772551076e+05, -2.429493211090199e+05, - -2.430005767298379e+05, -2.430503697405708e+05, -2.430987250846398e+05, -2.431456670503392e+05, -2.431912192941916e+05, - -2.432354048632527e+05, -2.432782462164233e+05, -2.433197652448239e+05, -2.433599832912780e+05, -2.433989211689562e+05, - -2.434365991792158e+05, -2.434730371286873e+05, -2.435082543456400e+05, -2.435422696956641e+05, -2.435751015967065e+05, - -2.436067680334872e+05, -2.436372865713334e+05, -2.436666743694538e+05, -2.436949481936828e+05, -2.437221244287221e+05, - -2.437482190908069e+05, -2.437732478352860e+05, -2.437972259732148e+05, -2.438201684778804e+05, -2.438420899958645e+05, - -2.438630048567140e+05, -2.438829270822545e+05, -2.439018703955545e+05, -2.439198482295634e+05, -2.439368737354308e+05, - -2.439529597905263e+05, -2.439681190061718e+05, -2.439823637350954e+05, -2.439957060786229e+05, -2.440081578951700e+05, - -2.440197308006353e+05, -2.440304361844716e+05, -2.440402852094186e+05, -2.440492888191888e+05, -2.440574577442940e+05, - -2.440648025076750e+05, -2.440713334301442e+05, -2.440770606356471e+05, -2.440819940563538e+05, -2.440861434375777e+05, - -2.440895183425425e+05, -2.440921281569894e+05, -2.440939820936414e+05, -2.440950891965217e+05, -2.440954583451404e+05, - -2.440950982585447e+05, -2.440940174992476e+05, -2.440922244770342e+05, -2.440897274526477e+05, -2.440865345413682e+05, - -2.440826537164773e+05, -2.440780928126248e+05, -2.440728595290887e+05, -2.440669614329409e+05, -2.440604059621211e+05, - -2.440532004284160e+05, -2.440453520203560e+05, -2.440368678060261e+05, -2.440277547357945e+05, -2.440180196449655e+05, - -2.440076692563558e+05, -2.439967101827971e+05, -2.439851489295707e+05, -2.439729918967705e+05, -2.439602453816041e+05, - -2.439469155806288e+05, -2.439330085919244e+05, -2.439185304172094e+05, -2.439034869639004e+05, -2.438878840471113e+05, - -2.438717273916051e+05, -2.438550226336874e+05, -2.438377753230559e+05, -2.438199909245961e+05, -2.438016748201328e+05, - -2.437828323101349e+05, -2.437634686153762e+05, -2.437435888713782e+05, -2.437231981589973e+05, -2.437023014619659e+05, - -2.436809036980504e+05, -2.436590097130095e+05, -2.436366242820181e+05, -2.436137521110542e+05, -2.435903978382532e+05, - -2.435665660352260e+05, -2.435422612083478e+05, -2.435174878000130e+05, -2.434922501898611e+05, -2.434665526959726e+05, - -2.434403995760357e+05, -2.434137950509498e+05, -2.433867432173462e+05, -2.433592481797101e+05, -2.433313139652867e+05, - -2.433029445463590e+05, -2.432741438412625e+05, -2.432449157153711e+05, -2.432152639820626e+05, -2.431851924036600e+05, - -2.431547046923545e+05, -2.431238045111037e+05, -2.430924954745146e+05, -2.430607811496993e+05, -2.430286650571178e+05, - -2.429961506714018e+05, -2.429632414221546e+05, -2.429299406947389e+05, -2.428962518310464e+05, -2.428621781302470e+05, - -2.428277228495273e+05, -2.427928892048066e+05, -2.427576803714434e+05, -2.427220994849227e+05, -2.426861496415310e+05, - -2.426498338990158e+05, -2.426131552772294e+05, -2.425761167587633e+05, -2.425387212895669e+05, -2.425009717795508e+05, - -2.424628711031829e+05, -2.424244221000671e+05, -2.423856275755131e+05, -2.423464903010942e+05, -2.423070130151917e+05, - -2.422671984235306e+05, -2.422270491997027e+05, -2.421865679856806e+05, -2.421457573923189e+05, -2.421046199998509e+05, - -2.420631583583656e+05, -2.420213749882871e+05, -2.419792723808348e+05, -2.419368529984792e+05, -2.418941192753893e+05, - -2.418510736178674e+05, -2.418077184047802e+05, -2.417640559879768e+05, -2.417200886927038e+05, -2.416758188180081e+05, - -2.416312486371327e+05, -2.415863803979086e+05, -2.415412163231330e+05, -2.414957586109474e+05, -2.414500094352016e+05, - -2.414039709458173e+05, -2.413576452691391e+05, -2.413110345082850e+05, -2.412641407434842e+05, -2.412169660324124e+05, - -2.411695124105223e+05, -2.411217818913618e+05, -2.410737764668949e+05, -2.410254981078097e+05, -2.409769487638228e+05, - -2.409281303639826e+05, -2.408790448169595e+05, -2.408296940113368e+05, -2.407800798158933e+05, -2.407302040798843e+05, - -2.406800686333129e+05, -2.406296752871998e+05, -2.405790258338482e+05, -2.405281220471021e+05, -2.404769656826034e+05, - -2.404255584780400e+05, -2.403739021533938e+05, -2.403219984111826e+05, -2.402698489366973e+05, -2.402174553982373e+05, - -2.401648194473369e+05, -2.401119427189954e+05, -2.400588268318965e+05, -2.400054733886280e+05, -2.399518839758949e+05, - -2.398980601647320e+05, -2.398440035107110e+05, -2.397897155541434e+05, -2.397351978202845e+05, -2.396804518195259e+05, - -2.396254790475931e+05, -2.395702809857367e+05, -2.395148591009178e+05, -2.394592148459942e+05, -2.394033496599025e+05, - -2.393472649678362e+05, -2.392909621814207e+05, -2.392344426988890e+05, -2.391777079052494e+05, -2.391207591724552e+05, - -2.390635978595673e+05, -2.390062253129189e+05, -2.389486428662732e+05, -2.388908518409831e+05, -2.388328535461414e+05, - -2.387746492787392e+05, -2.387162403238112e+05, -2.386576279545846e+05, -2.385988134326253e+05, -2.385397980079805e+05, - -2.384805829193182e+05, -2.384211693940688e+05, -2.383615586485584e+05, -2.383017518881451e+05, -2.382417503073522e+05, - -2.381815550899966e+05, -2.381211674093188e+05, -2.380605884281085e+05, -2.379998192988297e+05, -2.379388611637444e+05, - -2.378777151550303e+05, -2.378163823949045e+05, -2.377548639957373e+05, -2.376931610601687e+05, -2.376312746812239e+05, - -2.375692059424229e+05, -2.375069559178933e+05, -2.374445256724779e+05, -2.373819162618431e+05, -2.373191287325845e+05, - -2.372561641223299e+05, -2.371930234598440e+05, -2.371297077651289e+05, -2.370662180495237e+05, -2.370025553158024e+05, - -2.369387205582736e+05, -2.368747147628724e+05, -2.368105389072577e+05, -2.367461939609023e+05, -2.366816808851884e+05, - -2.366170006334948e+05, -2.365521541512865e+05, -2.364871423762034e+05, -2.364219662381465e+05, -2.363566266593634e+05, - -2.362911245545333e+05, -2.362254608308465e+05, -2.361596363880932e+05, -2.360936521187368e+05, -2.360275089079977e+05, - -2.359612076339326e+05, -2.358947491675099e+05, -2.358281343726858e+05, -2.357613641064812e+05, -2.356944392190573e+05, - -2.356273605537860e+05, -2.355601289473239e+05, -2.354927452296846e+05, -2.354252102243073e+05, -2.353575247481277e+05, - -2.352896896116468e+05, -2.352217056189982e+05, -2.351535735680136e+05, -2.350852942502919e+05, -2.350168684512608e+05, - -2.349482969502439e+05, -2.348795805205225e+05, -2.348107199293987e+05, -2.347417159382573e+05, -2.346725693026259e+05, - -2.346032807722361e+05, -2.345338510910829e+05, -2.344642809974830e+05, -2.343945712241313e+05, -2.343247224981613e+05, - -2.342547355411984e+05, -2.341846110694166e+05, -2.341143497935949e+05, -2.340439524191698e+05, -2.339734196462892e+05, - -2.339027521698659e+05, -2.338319506796300e+05, -2.337610158601795e+05, -2.336899483910324e+05, -2.336187489466766e+05, - -2.335474181966189e+05, -2.334759568054360e+05, -2.334043654328200e+05, -2.333326447336296e+05, -2.332607953579361e+05, - -2.331888179510677e+05, -2.331167131536598e+05, -2.330444816016983e+05, -2.329721239265644e+05, -2.328996407550798e+05, - -2.328270327095503e+05, -2.327543004078105e+05, -2.326814444632639e+05, -2.326084654849278e+05, -2.325353640774746e+05, - -2.324621408412727e+05, -2.323887963724268e+05, -2.323153312628196e+05, -2.322417461001520e+05, -2.321680414679805e+05, - -2.320942179457575e+05, -2.320202761088698e+05, -2.319462165286767e+05, -2.318720397725471e+05, -2.317977464038979e+05, - -2.317233369822281e+05, -2.316488120631578e+05, -2.315741721984634e+05, -2.314994179361124e+05, -2.314245498202991e+05, - -2.313495683914786e+05, -2.312744741864012e+05, -2.311992677381466e+05, -2.311239495761585e+05, -2.310485202262750e+05, - -2.309729802107628e+05, -2.308973300483507e+05, -2.308215702542588e+05, -2.307457013402332e+05, -2.306697238145744e+05, - -2.305936381821707e+05, -2.305174449445272e+05, -2.304411445997953e+05, -2.303647376428058e+05, -2.302882245650948e+05, - -2.302116058549344e+05, -2.301348819973622e+05, -2.300580534742097e+05, -2.299811207641287e+05, -2.299040843426226e+05, - -2.298269446820698e+05, -2.297497022517552e+05, -2.296723575178941e+05, -2.295949109436622e+05, -2.295173629892170e+05, - -2.294397141117291e+05, -2.293619647654057e+05, -2.292841154015153e+05, -2.292061664684164e+05, -2.291281184115774e+05, - -2.290499716736065e+05, -2.289717266942722e+05, -2.288933839105316e+05, -2.288149437565492e+05, -2.287364066637256e+05, - -2.286577730607180e+05, -2.285790433734639e+05, -2.285002180252061e+05, -2.284212974365110e+05, -2.283422820252969e+05, - -2.282631722068508e+05, -2.281839683938543e+05, -2.281046709964025e+05, -2.280252804220291e+05, -2.279457970757236e+05, - -2.278662213599556e+05, -2.277865536746937e+05, -2.277067944174275e+05, -2.276269439831876e+05, -2.275470027645652e+05, - -2.274669711517339e+05, -2.273868495324674e+05, -2.273066382921606e+05, -2.272263378138477e+05, -2.271459484782235e+05 - }, - { - 2.186341740753333e+04, 1.998069574559477e+04, 1.806445661479401e+04, 1.611296041921253e+04, 1.412431503557940e+04, - 1.209645659693792e+04, 1.002712705489240e+04, 7.913847838285516e+03, 5.753888746041501e+03, 3.544230979583151e+03, - 1.281522910412445e+03, -1.037973236280809e+03, -3.418446163595465e+03, -5.864614904721811e+03, -8.381827075009998e+03, - -1.097618172679815e+04, -1.365468474840482e+04, -1.642544795517680e+04, -1.929794781453031e+04, -2.228336707968448e+04, - -2.539505411318980e+04, -2.864915326700915e+04, -3.206549071445540e+04, -3.566885395211109e+04, -3.949090071321788e+04, - -4.357311967050466e+04, -4.797164497733285e+04, -5.276556374624390e+04, -5.807239248111154e+04, -6.408005680665883e+04, - -7.112363823504013e+04, -7.991984676319371e+04, -9.274801166807635e+04, -2.083430442934275e+05, -2.107047915380159e+05, - -2.126073254271227e+05, -2.142150459182425e+05, -2.156141357072992e+05, -2.168562243373400e+05, -2.179750143987370e+05, - -2.189938828438144e+05, -2.199297988196679e+05, -2.207955243229205e+05, -2.216009337737354e+05, -2.223538472151687e+05, - -2.230605789985438e+05, -2.237263119734326e+05, -2.243553603480603e+05, -2.249513590985074e+05, -2.255174034974633e+05, - -2.260561539059582e+05, -2.265699158323274e+05, -2.270607020320893e+05, -2.275302813364386e+05, -2.279802175176283e+05, - -2.284119005675748e+05, -2.288265721241094e+05, -2.292253463293508e+05, -2.296092270841878e+05, -2.299791224312119e+05, - -2.303358566287496e+05, -2.306801803527613e+05, -2.310127793689416e+05, -2.313342819457153e+05, -2.316452652239816e+05, - -2.319462607170328e+05, -2.322377590810168e+05, -2.325202142703150e+05, -2.327940471716131e+05, -2.330596487940181e+05, - -2.333173830793907e+05, -2.335675893863891e+05, -2.338105846930656e+05, -2.340466655557547e+05, -2.342761098561882e+05, - -2.344991783639369e+05, -2.347161161373000e+05, -2.349271537824295e+05, -2.351325085876771e+05, -2.353323855478196e+05, - -2.355269782908286e+05, -2.357164699181708e+05, -2.359010337682065e+05, -2.360808341110265e+05, -2.362560267820261e+05, - -2.364267597606268e+05, -2.365931736997737e+05, -2.367554024111761e+05, -2.369135733106825e+05, -2.370678078276713e+05, - -2.372182217819156e+05, -2.373649257309825e+05, -2.375080252909065e+05, -2.376476214325771e+05, -2.377838107560267e+05, - -2.379166857445758e+05, -2.380463350005911e+05, -2.381728434644435e+05, -2.382962926180829e+05, -2.384167606745177e+05, - -2.385343227543622e+05, -2.386490510504968e+05, -2.387610149817984e+05, -2.388702813368004e+05, -2.389769144080710e+05, - -2.390809761180229e+05, -2.391825261368018e+05, -2.392816219928567e+05, -2.393783191767198e+05, -2.394726712385079e+05, - -2.395647298795871e+05, -2.396545450388236e+05, -2.397421649737971e+05, -2.398276363373353e+05, -2.399110042496808e+05, - -2.399923123665997e+05, -2.400716029436933e+05, -2.401489168971744e+05, -2.402242938613345e+05, -2.402977722429211e+05, - -2.403693892726409e+05, -2.404391810540650e+05, -2.405071826098041e+05, -2.405734279252898e+05, -2.406379499903882e+05, - -2.407007808389253e+05, -2.407619515862290e+05, -2.408214924648300e+05, -2.408794328289153e+05, -2.409358012834333e+05, - -2.409906256097945e+05, -2.410439328217038e+05, -2.410957492153771e+05, -2.411461003851564e+05, -2.411950112489217e+05, - -2.412425060723441e+05, -2.412886084920447e+05, -2.413333415377183e+05, -2.413767276532773e+05, -2.414187887170661e+05, - -2.414595460612002e+05, -2.414990204900687e+05, -2.415372322980497e+05, -2.415742012864733e+05, -2.416099467798782e+05, - -2.416444876415853e+05, -2.416778422886386e+05, -2.417100287061293e+05, -2.417410644609415e+05, -2.417709667149491e+05, - -2.417997522376833e+05, -2.418274374193368e+05, -2.418540382790388e+05, -2.418795704813565e+05, -2.419040493434964e+05, - -2.419274898466287e+05, -2.419499066458841e+05, -2.419713140799832e+05, -2.419917261804985e+05, -2.420111566807819e+05, - -2.420296190245583e+05, -2.420471263742115e+05, -2.420636916187672e+05, -2.420793273815914e+05, -2.420940460293718e+05, - -2.421078596729565e+05, -2.421207801839062e+05, -2.421328191946301e+05, -2.421439881064889e+05, -2.421542980960165e+05, - -2.421637601209272e+05, -2.421723849259233e+05, -2.421801830483065e+05, -2.421871648234016e+05, -2.421933403898023e+05, - -2.421987196944466e+05, -2.422033124975222e+05, -2.422071283772169e+05, -2.422101767343167e+05, -2.422124667966541e+05, - -2.422140076234176e+05, -2.422148081093266e+05, -2.422148769886729e+05, -2.422142228392390e+05, -2.422128540860931e+05, - -2.422107790052722e+05, -2.422080057273484e+05, -2.422045422408889e+05, -2.422003963958141e+05, -2.421955759066515e+05, - -2.421900883556975e+05, -2.421839411960819e+05, -2.421771417547458e+05, -2.421696972353308e+05, -2.421616147209854e+05, - -2.421529011770914e+05, -2.421435634539097e+05, -2.421336082891556e+05, -2.421230423104977e+05, -2.421118720379860e+05, - -2.421001038864173e+05, -2.420877441676284e+05, -2.420747990927326e+05, -2.420612747742887e+05, -2.420471772284175e+05, - -2.420325123768546e+05, -2.420172860489519e+05, -2.420015039836260e+05, -2.419851718242441e+05, -2.419682951488052e+05, - -2.419508794287585e+05, -2.419329300597309e+05, -2.419144523559049e+05, -2.418954515516743e+05, -2.418759328032647e+05, - -2.418559011903071e+05, -2.418353617173746e+05, -2.418143193154792e+05, -2.417927788435308e+05, -2.417707450897602e+05, - -2.417482227731058e+05, -2.417252165445660e+05, -2.417017309885206e+05, -2.416777706240169e+05, -2.416533399060240e+05, - -2.416284432266612e+05, -2.416030849375756e+05, -2.415772692676021e+05, -2.415510004473699e+05, -2.415242826292676e+05, - -2.414971199085328e+05, -2.414695163243125e+05, -2.414414758606979e+05, -2.414130024477360e+05, -2.413840999624189e+05, - -2.413547722296462e+05, -2.413250230231709e+05, -2.412948560665185e+05, -2.412642750338903e+05, -2.412332835510407e+05, - -2.412018851961403e+05, -2.411700835006146e+05, -2.411378819499686e+05, -2.411052839845888e+05, -2.410722930005322e+05, - -2.410389123502927e+05, -2.410051453435556e+05, -2.409709952479325e+05, -2.409364652896809e+05, -2.409015586544098e+05, - -2.408662784877686e+05, -2.408306278961203e+05, -2.407946099472046e+05, -2.407582276707820e+05, -2.407214840592669e+05, - -2.406843820683470e+05, -2.406469246175900e+05, -2.406091145910376e+05, -2.405709548377858e+05, -2.405324481725563e+05, - -2.404935973762524e+05, -2.404544051965074e+05, -2.404148743482175e+05, -2.403750075140681e+05, -2.403348073450482e+05, - -2.402942764609515e+05, -2.402534174508725e+05, -2.402122328736876e+05, -2.401707252585321e+05, -2.401288971052616e+05, - -2.400867508849107e+05, -2.400442890401368e+05, -2.400015139856607e+05, -2.399584281086943e+05, -2.399150337693604e+05, - -2.398713333011099e+05, -2.398273290111230e+05, -2.397830231807072e+05, -2.397384180656884e+05, -2.396935158967925e+05, - -2.396483188800201e+05, -2.396028291970148e+05, -2.395570490054258e+05, -2.395109804392592e+05, -2.394646256092296e+05, - -2.394179866030980e+05, -2.393710654860098e+05, -2.393238643008218e+05, -2.392763850684257e+05, -2.392286297880669e+05, - -2.391806004376518e+05, -2.391322989740571e+05, -2.390837273334294e+05, -2.390348874314780e+05, -2.389857811637656e+05, - -2.389364104059940e+05, -2.388867770142812e+05, -2.388368828254368e+05, -2.387867296572301e+05, -2.387363193086584e+05, - -2.386856535602029e+05, -2.386347341740877e+05, -2.385835628945281e+05, -2.385321414479798e+05, -2.384804715433802e+05, - -2.384285548723874e+05, -2.383763931096143e+05, -2.383239879128581e+05, -2.382713409233282e+05, -2.382184537658691e+05, - -2.381653280491758e+05, -2.381119653660131e+05, -2.380583672934256e+05, -2.380045353929448e+05, -2.379504712107946e+05, - -2.378961762780926e+05, -2.378416521110472e+05, -2.377869002111526e+05, -2.377319220653807e+05, -2.376767191463681e+05, - -2.376212929126034e+05, -2.375656448086062e+05, -2.375097762651095e+05, -2.374536886992350e+05, -2.373973835146652e+05, - -2.373408621018160e+05, -2.372841258380038e+05, -2.372271760876112e+05, -2.371700142022496e+05, -2.371126415209192e+05, - -2.370550593701667e+05, -2.369972690642407e+05, -2.369392719052431e+05, -2.368810691832826e+05, -2.368226621766191e+05, - -2.367640521518106e+05, -2.367052403638583e+05, -2.366462280563450e+05, -2.365870164615775e+05, -2.365276068007199e+05, - -2.364680002839315e+05, -2.364081981104974e+05, -2.363482014689617e+05, -2.362880115372537e+05, -2.362276294828158e+05, - -2.361670564627296e+05, -2.361062936238380e+05, -2.360453421028649e+05, -2.359842030265387e+05, -2.359228775117060e+05, - -2.358613666654488e+05, -2.357996715852002e+05, -2.357377933588554e+05, -2.356757330648826e+05, -2.356134917724337e+05, - -2.355510705414491e+05, -2.354884704227686e+05, -2.354256924582298e+05, -2.353627376807781e+05, -2.352996071145617e+05, - -2.352363017750368e+05, -2.351728226690636e+05, -2.351091707950043e+05, -2.350453471428195e+05, -2.349813526941616e+05, - -2.349171884224697e+05, -2.348528552930602e+05, -2.347883542632176e+05, -2.347236862822848e+05, -2.346588522917502e+05, - -2.345938532253347e+05, -2.345286900090773e+05, -2.344633635614213e+05, -2.343978747932943e+05, -2.343322246081938e+05, - -2.342664139022660e+05, -2.342004435643872e+05, -2.341343144762405e+05, -2.340680275123971e+05, -2.340015835403892e+05, - -2.339349834207878e+05, -2.338682280072781e+05, -2.338013181467307e+05, -2.337342546792763e+05, -2.336670384383762e+05, - -2.335996702508942e+05, -2.335321509371658e+05, -2.334644813110658e+05, -2.333966621800792e+05, -2.333286943453660e+05, - -2.332605786018266e+05, -2.331923157381706e+05, -2.331239065369775e+05, -2.330553517747624e+05, -2.329866522220386e+05, - -2.329178086433788e+05, -2.328488217974773e+05, -2.327796924372094e+05, -2.327104213096916e+05, -2.326410091563390e+05, - -2.325714567129280e+05, -2.325017647096461e+05, -2.324319338711556e+05, -2.323619649166458e+05, -2.322918585598883e+05, - -2.322216155092928e+05, -2.321512364679595e+05, -2.320807221337344e+05, -2.320100731992589e+05, -2.319392903520233e+05, - -2.318683742744180e+05, -2.317973256437829e+05, -2.317261451324589e+05, -2.316548334078362e+05, -2.315833911324028e+05, - -2.315118189637915e+05, -2.314401175548314e+05, -2.313682875535894e+05, -2.312963296034212e+05, -2.312242443430139e+05, - -2.311520324064319e+05, -2.310796944231635e+05, -2.310072310181618e+05, -2.309346428118908e+05, -2.308619304203673e+05, - -2.307890944552037e+05, -2.307161355236498e+05, -2.306430542286346e+05, -2.305698511688077e+05, -2.304965269385781e+05, - -2.304230821281568e+05, -2.303495173235944e+05, -2.302758331068211e+05, -2.302020300556847e+05, -2.301281087439898e+05, - -2.300540697415342e+05, -2.299799136141476e+05, -2.299056409237274e+05, -2.298312522282761e+05, -2.297567480819359e+05, - -2.296821290350256e+05, -2.296073956340752e+05, -2.295325484218613e+05, -2.294575879374408e+05, -2.293825147161838e+05, - -2.293073292898111e+05, -2.292320321864220e+05, -2.291566239305320e+05, -2.290811050431012e+05, -2.290054760415702e+05, - -2.289297374398895e+05, -2.288538897485504e+05, -2.287779334746180e+05, -2.287018691217610e+05, -2.286256971902799e+05, - -2.285494181771421e+05, -2.284730325760059e+05, -2.283965408772529e+05, -2.283199435680172e+05, -2.282432411322115e+05, - -2.281664340505598e+05, -2.280895228006205e+05, -2.280125078568180e+05, -2.279353896904683e+05, -2.278581687698055e+05, - -2.277808455600110e+05, -2.277034205232380e+05, -2.276258941186375e+05, -2.275482668023869e+05, -2.274705390277125e+05, - -2.273927112449178e+05, -2.273147839014049e+05, -2.272367574417036e+05, -2.271586323074935e+05, -2.270804089376281e+05, - -2.270020877681602e+05, -2.269236692323662e+05, -2.268451537607666e+05, -2.267665417811521e+05, -2.266878337186066e+05, - -2.266090299955276e+05, -2.265301310316525e+05, -2.264511372440770e+05, -2.263720490472807e+05, -2.262928668531460e+05, - -2.262135910709824e+05, -2.261342221075446e+05, -2.260547603670584e+05, -2.259752062512365e+05, -2.258955601593038e+05, - -2.258158224880140e+05, -2.257359936316736e+05, -2.256560739821584e+05, -2.255760639289371e+05, -2.254959638590880e+05 - }, - { - 2.273305055551828e+04, 2.086469309921926e+04, 1.896355615838895e+04, 1.702796879198023e+04, 1.505611617110021e+04, - 1.304602180414245e+04, 1.099552684579879e+04, 8.902265879235158e+03, 6.763638416299155e+03, 4.576775150953789e+03, - 2.338497740361991e+03, 4.527053363297284e+01, -2.306857807074568e+03, -4.722325496533671e+03, -7.206145226210726e+03, - -9.764013027051828e+03, -1.240244503454520e+04, -1.512895138239183e+04, -1.795226027105181e+04, -2.088261101904083e+04, - -2.393214380426028e+04, -2.711542792180723e+04, -3.045019347650378e+04, -3.395837054014276e+04, -3.766760871454250e+04, - -4.161357760690431e+04, -4.584359790957146e+04, -5.042267526824482e+04, -5.544420115082611e+04, -6.105062242927185e+04, - -6.747836236106497e+04, -7.517423340046503e+04, -8.520375885432631e+04, -2.011482017164672e+05, -2.048289074284027e+05, - -2.074333253243537e+05, -2.094953348424258e+05, -2.112193159511093e+05, -2.127086842759275e+05, -2.140239311500864e+05, - -2.152038522625978e+05, -2.162749899973104e+05, -2.172564001223705e+05, -2.181622852125003e+05, -2.190035522155508e+05, - -2.197887845672668e+05, -2.205248759822454e+05, -2.212174589270517e+05, -2.218712033089457e+05, -2.224900302407497e+05, - -2.230772685585345e+05, -2.236357717364950e+05, -2.241680067739923e+05, -2.246761228419724e+05, -2.251620050463719e+05, - -2.256273170692480e+05, -2.260735353755820e+05, -2.265019769386449e+05, -2.269138219240782e+05, -2.273101324092674e+05, - -2.276918679529330e+05, -2.280598986389115e+05, -2.284150160770092e+05, -2.287579427382974e+05, -2.290893399224530e+05, - -2.294098145938599e+05, -2.297199252762255e+05, -2.300201871589626e+05, -2.303110765399469e+05, -2.305930347066481e+05, - -2.308664713396120e+05, -2.311317675078383e+05, -2.313892783139631e+05, -2.316393352376971e+05, -2.318822482182580e+05, - -2.321183075102132e+05, -2.323477853419215e+05, -2.325709374014289e+05, -2.327880041710840e+05, -2.329992121291049e+05, - -2.332047748338149e+05, -2.334048939041100e+05, -2.335997599079286e+05, -2.337895531689493e+05, -2.339744445004336e+05, - -2.341545958740124e+05, -2.343301610302507e+05, -2.345012860369997e+05, -2.346681098008284e+05, -2.348307645362129e+05, - -2.349893761966187e+05, -2.351440648711479e+05, -2.352949451500133e+05, -2.354421264617516e+05, -2.355857133847615e+05, - -2.357258059354939e+05, -2.358624998353659e+05, -2.359958867582719e+05, -2.361260545603556e+05, -2.362530874935662e+05, - -2.363770664043472e+05, -2.364980689186951e+05, -2.366161696146978e+05, -2.367314401835594e+05, -2.368439495800226e+05, - -2.369537641630269e+05, -2.370609478273477e+05, -2.371655621269081e+05, -2.372676663903966e+05, -2.373673178297497e+05, - -2.374645716420360e+05, -2.375594811052121e+05, -2.376520976681936e+05, -2.377424710356432e+05, -2.378306492478414e+05, - -2.379166787559848e+05, -2.380006044932230e+05, -2.380824699417208e+05, -2.381623171960056e+05, -2.382401870228647e+05, - -2.383161189179914e+05, -2.383901511608286e+05, -2.384623208671522e+05, -2.385326640111742e+05, -2.386012155346191e+05, - -2.386680093207156e+05, -2.387330782717089e+05, -2.387964543403913e+05, -2.388581685428582e+05, -2.389182510809195e+05, - -2.389767312488568e+05, -2.390336375739387e+05, -2.390889977730790e+05, -2.391428388213243e+05, -2.391951869693104e+05, - -2.392460677696348e+05, -2.392955061020240e+05, -2.393435261973539e+05, -2.393901516605964e+05, -2.394354054927427e+05, - -2.394793101117591e+05, -2.395218873726296e+05, -2.395631585865275e+05, -2.396031445391719e+05, -2.396418655083923e+05, - -2.396793412809648e+05, -2.397155911687399e+05, -2.397506340241023e+05, -2.397844882547981e+05, -2.398171718381578e+05, - -2.398487023347469e+05, -2.398790969014702e+05, -2.399083723049116e+05, -2.399365449303268e+05, -2.399636307980292e+05, - -2.399896455712933e+05, -2.400146045679371e+05, -2.400385227706518e+05, -2.400614148369471e+05, -2.400832951087179e+05, - -2.401041776214640e+05, -2.401240761131593e+05, -2.401430040328089e+05, -2.401609745503345e+05, -2.401780005578133e+05, - -2.401940946873677e+05, -2.402092693116170e+05, -2.402235365525708e+05, -2.402369082885076e+05, -2.402493961606194e+05, - -2.402610115794209e+05, -2.402717657309455e+05, -2.402816695827285e+05, -2.402907338895897e+05, -2.402989691992223e+05, - -2.403063858575967e+05, -2.403129940141857e+05, -2.403188036270202e+05, -2.403238244675790e+05, -2.403280661255217e+05, - -2.403315380132693e+05, -2.403342493704410e+05, -2.403362092681465e+05, -2.403374266131494e+05, -2.403379101518959e+05, - -2.403376684744208e+05, -2.403367100181332e+05, -2.403350430714870e+05, -2.403326757775373e+05, -2.403296161373943e+05, - -2.403258720135679e+05, -2.403214511332178e+05, -2.403163610913037e+05, -2.403106093536454e+05, -2.403042032598925e+05, - -2.402971500264067e+05, -2.402894567490629e+05, -2.402811304059696e+05, -2.402721778601091e+05, -2.402626058619077e+05, - -2.402524210517292e+05, -2.402416299623007e+05, -2.402302390210702e+05, -2.402182545525023e+05, -2.402056827734591e+05, - -2.401925298230424e+05, -2.401788017227318e+05, -2.401645044067424e+05, -2.401496437168600e+05, -2.401342254043870e+05, - -2.401182551320350e+05, -2.401017384757661e+05, -2.400846809265892e+05, -2.400670878923058e+05, -2.400489646992130e+05, - -2.400303165937606e+05, -2.400111487441690e+05, -2.399914662419994e+05, -2.399712741036918e+05, -2.399505772720602e+05, - -2.399293806177471e+05, -2.399076889406509e+05, -2.398855069713049e+05, -2.398628393722373e+05, -2.398396907392818e+05, - -2.398160656028716e+05, -2.397919684491880e+05, -2.397674036429827e+05, -2.397423755446410e+05, -2.397168884352310e+05, - -2.396909465363972e+05, -2.396645540114728e+05, -2.396377149665640e+05, -2.396104334516127e+05, -2.395827134614279e+05, - -2.395545589367004e+05, -2.395259737649879e+05, -2.394969617816840e+05, -2.394675267709565e+05, -2.394376724666715e+05, - -2.394074025532952e+05, -2.393767206667711e+05, -2.393456303953825e+05, -2.393141352805937e+05, -2.392822388178718e+05, - -2.392499444574919e+05, -2.392172556053231e+05, -2.391841756235975e+05, -2.391507078316644e+05, -2.391168555067243e+05, - -2.390826218845508e+05, -2.390480101601952e+05, -2.390130234886747e+05, -2.389776649856498e+05, -2.389419377280826e+05, - -2.389058447548837e+05, -2.388693890675475e+05, -2.388325736307698e+05, -2.387954013730543e+05, -2.387578751873086e+05, - -2.387199979314245e+05, -2.386817724288492e+05, -2.386432014691425e+05, -2.386042878085248e+05, -2.385650341704115e+05, - -2.385254432459386e+05, -2.384855176944777e+05, -2.384452601441389e+05, -2.384046731922651e+05, -2.383637594059164e+05, - -2.383225213223439e+05, -2.382809614494561e+05, -2.382390822662741e+05, -2.381968862233783e+05, -2.381543757433471e+05, - -2.381115532211880e+05, -2.380684210247571e+05, -2.380249814951748e+05, -2.379812369472285e+05, -2.379371896697728e+05, - -2.378928419261198e+05, -2.378481959544196e+05, -2.378032539680386e+05, -2.377580181559260e+05, -2.377124906829770e+05, - -2.376666736903866e+05, -2.376205692959986e+05, -2.375741795946473e+05, -2.375275066584929e+05, -2.374805525373517e+05, - -2.374333192590182e+05, -2.373858088295841e+05, -2.373380232337482e+05, -2.372899644351247e+05, -2.372416343765431e+05, - -2.371930349803409e+05, -2.371441681486589e+05, -2.370950357637204e+05, -2.370456396881150e+05, -2.369959817650711e+05, - -2.369460638187259e+05, -2.368958876543928e+05, -2.368454550588193e+05, -2.367947678004448e+05, -2.367438276296518e+05, - -2.366926362790127e+05, -2.366411954635338e+05, -2.365895068808925e+05, -2.365375722116746e+05, -2.364853931196016e+05, - -2.364329712517615e+05, -2.363803082388283e+05, -2.363274056952833e+05, -2.362742652196308e+05, -2.362208883946088e+05, - -2.361672767873968e+05, -2.361134319498242e+05, -2.360593554185695e+05, -2.360050487153565e+05, -2.359505133471534e+05, - -2.358957508063624e+05, -2.358407625710086e+05, -2.357855501049247e+05, -2.357301148579360e+05, -2.356744582660376e+05, - -2.356185817515728e+05, -2.355624867234049e+05, -2.355061745770907e+05, -2.354496466950479e+05, -2.353929044467205e+05, - -2.353359491887420e+05, -2.352787822650959e+05, -2.352214050072747e+05, -2.351638187344328e+05, -2.351060247535427e+05, - -2.350480243595443e+05, -2.349898188354925e+05, -2.349314094527036e+05, -2.348727974709004e+05, -2.348139841383522e+05, - -2.347549706920151e+05, -2.346957583576676e+05, -2.346363483500501e+05, -2.345767418729918e+05, -2.345169401195475e+05, - -2.344569442721225e+05, -2.343967555026026e+05, -2.343363749724788e+05, -2.342758038329686e+05, -2.342150432251412e+05, - -2.341540942800345e+05, -2.340929581187734e+05, -2.340316358526873e+05, -2.339701285834228e+05, -2.339084374030596e+05, - -2.338465633942172e+05, -2.337845076301694e+05, -2.337222711749477e+05, -2.336598550834522e+05, -2.335972604015525e+05, - -2.335344881661923e+05, -2.334715394054935e+05, -2.334084151388542e+05, -2.333451163770471e+05, -2.332816441223203e+05, - -2.332179993684902e+05, -2.331541831010379e+05, -2.330901962972023e+05, -2.330260399260726e+05, -2.329617149486789e+05, - -2.328972223180822e+05, -2.328325629794622e+05, -2.327677378702038e+05, -2.327027479199859e+05, -2.326375940508617e+05, - -2.325722771773459e+05, -2.325067982064966e+05, -2.324411580379949e+05, -2.323753575642264e+05, -2.323093976703590e+05, - -2.322432792344233e+05, -2.321770031273871e+05, -2.321105702132322e+05, -2.320439813490302e+05, -2.319772373850149e+05, - -2.319103391646551e+05, -2.318432875247286e+05, -2.317760832953905e+05, -2.317087273002459e+05, -2.316412203564157e+05, - -2.315735632746085e+05, -2.315057568591838e+05, -2.314378019082223e+05, -2.313696992135892e+05, -2.313014495609988e+05, - -2.312330537300793e+05, -2.311645124944348e+05, -2.310958266217078e+05, -2.310269968736426e+05, -2.309580240061404e+05, - -2.308889087693255e+05, -2.308196519076009e+05, -2.307502541597056e+05, -2.306807162587761e+05, -2.306110389323980e+05, - -2.305412229026668e+05, -2.304712688862403e+05, -2.304011775943940e+05, -2.303309497330755e+05, -2.302605860029578e+05, - -2.301900870994911e+05, -2.301194537129557e+05, -2.300486865285117e+05, -2.299777862262529e+05, -2.299067534812528e+05, - -2.298355889636168e+05, -2.297642933385306e+05, -2.296928672663078e+05, -2.296213114024376e+05, -2.295496263976306e+05, - -2.294778128978697e+05, -2.294058715444506e+05, -2.293338029740294e+05, -2.292616078186694e+05, -2.291892867058809e+05, - -2.291168402586691e+05, -2.290442690955750e+05, -2.289715738307184e+05, -2.288987550738413e+05, -2.288258134303465e+05, - -2.287527495013435e+05, -2.286795638836842e+05, -2.286062571700065e+05, -2.285328299487725e+05, -2.284592828043075e+05, - -2.283856163168408e+05, -2.283118310625408e+05, -2.282379276135560e+05, -2.281639065380504e+05, -2.280897684002416e+05, - -2.280155137604357e+05, -2.279411431750664e+05, -2.278666571967278e+05, -2.277920563742105e+05, -2.277173412525386e+05, - -2.276425123730005e+05, -2.275675702731855e+05, -2.274925154870175e+05, -2.274173485447876e+05, -2.273420699731870e+05, - -2.272666802953395e+05, -2.271911800308346e+05, -2.271155696957587e+05, -2.270398498027255e+05, -2.269640208609101e+05, - -2.268880833760756e+05, -2.268120378506086e+05, -2.267358847835439e+05, -2.266596246705978e+05, -2.265832580041978e+05, - -2.265067852735084e+05, -2.264302069644630e+05, -2.263535235597910e+05, -2.262767355390475e+05, -2.261998433786380e+05, - -2.261228475518487e+05, -2.260457485288731e+05, -2.259685467768380e+05, -2.258912427598308e+05, -2.258138369389260e+05, - -2.257363297722116e+05, -2.256587217148132e+05, -2.255810132189227e+05, -2.255032047338181e+05, -2.254252967058952e+05, - -2.253472895786867e+05, -2.252691837928902e+05, -2.251909797863898e+05, -2.251126779942812e+05, -2.250342788488967e+05, - -2.249557827798254e+05, -2.248771902139397e+05, -2.247985015754153e+05, -2.247197172857556e+05, -2.246408377638149e+05, - -2.245618634258176e+05, -2.244827946853829e+05, -2.244036319535449e+05, -2.243243756387765e+05, -2.242450261470063e+05, - -2.241655838816442e+05, -2.240860492435999e+05, -2.240064226313035e+05, -2.239267044407265e+05, -2.238468950654023e+05 - }, - { - 2.360368100809248e+04, 2.174950608665221e+04, 1.986327084924248e+04, 1.794337006203180e+04, 1.598806273332699e+04, - 1.399545567024282e+04, 1.196348439286822e+04, 9.889890864214562e+03, 7.772197369426436e+03, 5.607675696528574e+03, - 3.393310547661667e+03, 1.125755807779516e+03, -1.198718104323778e+03, -3.584288122022691e+03, -6.035656718898640e+03, - -8.558148499390278e+03, -1.115783075253390e+04, -1.384166562118860e+04, -1.661770459104665e+04, -1.949534054557951e+04, - -2.248563954355648e+04, -2.560178525422686e+04, -2.885968627411496e+04, -3.227882517965464e+04, -3.588347736417923e+04, - -3.970451581537531e+04, -4.378218439509439e+04, -4.817055486268138e+04, -5.294510112459124e+04, -5.821652390615277e+04, - -6.415850463981684e+04, -7.107144588405998e+04, -7.956281799525408e+04, -9.130062562052933e+04, -1.970762424942075e+05, - -2.012707721441617e+05, -2.041362179898310e+05, -2.063664894261267e+05, -2.082117045663316e+05, -2.097944563495409e+05, - -2.111849323080101e+05, -2.124274351478539e+05, -2.135518990225696e+05, -2.145795990038077e+05, -2.155262601650950e+05, - -2.164038746295650e+05, -2.172218241604505e+05, -2.179876056358344e+05, -2.187073177202923e+05, -2.193859977992967e+05, - -2.200278616379270e+05, -2.206364778913115e+05, -2.212148978119420e+05, -2.217657534193653e+05, -2.222913330068997e+05, - -2.227936400596451e+05, -2.232744398271691e+05, -2.237352965703112e+05, -2.241776036667707e+05, -2.246026081803143e+05, - -2.250114310890062e+05, -2.254050840742673e+05, -2.257844835591262e+05, -2.261504625267976e+05, -2.265037805335508e+05, - -2.268451322415027e+05, -2.271751547297275e+05, -2.274944337903635e+05, -2.278035093762845e+05, -2.281028803355385e+05, - -2.283930085429900e+05, -2.286743225199675e+05, -2.289472206169858e+05, -2.292120738219569e+05, -2.294692282460422e+05, - -2.297190073309497e+05, -2.299617138146207e+05, -2.301976314866135e+05, -2.304270267598236e+05, -2.306501500812891e+05, - -2.308672372015903e+05, -2.310785103196236e+05, -2.312841791172397e+05, -2.314844416962969e+05, -2.316794854290254e+05, - -2.318694877312080e+05, -2.320546167664706e+05, -2.322350320889592e+05, -2.324108852307854e+05, -2.325823202398699e+05, - -2.327494741731445e+05, -2.329124775495032e+05, -2.330714547664028e+05, -2.332265244835652e+05, -2.333777999768650e+05, - -2.335253894651518e+05, -2.336693964124594e+05, -2.338099198078047e+05, -2.339470544245431e+05, -2.340808910610606e+05, - -2.342115167643919e+05, -2.343390150382030e+05, -2.344634660364389e+05, -2.345849467438078e+05, -2.347035311441690e+05, - -2.348192903777805e+05, -2.349322928882910e+05, -2.350426045602656e+05, -2.351502888479730e+05, -2.352554068960942e+05, - -2.353580176529544e+05, -2.354581779768311e+05, -2.355559427358412e+05, -2.356513649018699e+05, -2.357444956389622e+05, - -2.358353843865714e+05, -2.359240789380134e+05, -2.360106255144610e+05, -2.360950688347845e+05, -2.361774521815021e+05, - -2.362578174631169e+05, -2.363362052731861e+05, -2.364126549484679e+05, -2.364872046212664e+05, -2.365598912670054e+05, - -2.366307506797515e+05, -2.366998177570733e+05, -2.367671262308348e+05, -2.368327089018103e+05, -2.368965975955033e+05, - -2.369588232977914e+05, -2.370194160865066e+05, -2.370784051916584e+05, -2.371358190478150e+05, -2.371916853137112e+05, - -2.372460309009243e+05, -2.372988820012188e+05, -2.373502641126289e+05, -2.374002020643589e+05, -2.374487200405573e+05, - -2.374958416030252e+05, -2.375415897129251e+05, -2.375859867515309e+05, -2.376290545400807e+05, -2.376708143587706e+05, - -2.377112869649399e+05, -2.377504926104867e+05, -2.377884510585507e+05, -2.378251815995049e+05, -2.378607030662894e+05, - -2.378950338491127e+05, -2.379281919095665e+05, -2.379601947941653e+05, -2.379910596480232e+05, -2.380208032245899e+05, - -2.380494419018944e+05, -2.380769916911710e+05, -2.381034682487023e+05, -2.381288868864821e+05, -2.381532625824810e+05, - -2.381766099905229e+05, -2.381989434497932e+05, -2.382202769957315e+05, -2.382406243617931e+05, -2.382599989987181e+05, - -2.382784140754167e+05, -2.382958824887282e+05, -2.383124168710373e+05, -2.383280295976216e+05, -2.383427327937425e+05, - -2.383565383414884e+05, -2.383694578863815e+05, -2.383815028437576e+05, -2.383926844049321e+05, -2.384030135431504e+05, - -2.384125010193463e+05, -2.384211573877045e+05, -2.384289930010391e+05, -2.384360180159979e+05, -2.384422423980918e+05, - -2.384476759265686e+05, -2.384523281991239e+05, -2.384562086364641e+05, -2.384593264867246e+05, -2.384616908297476e+05, - -2.384633105812272e+05, -2.384641944967258e+05, -2.384643511755636e+05, -2.384637890645939e+05, -2.384625164618577e+05, - -2.384605415201321e+05, -2.384578722503682e+05, -2.384545165250305e+05, -2.384504820813322e+05, -2.384457765243783e+05, - -2.384404073302160e+05, -2.384343818487965e+05, -2.384277073068481e+05, -2.384203908106709e+05, -2.384124393418670e+05, - -2.384038597882199e+05, -2.383946589033974e+05, -2.383848433383518e+05, -2.383744196364243e+05, -2.383633942356976e+05, - -2.383517734712826e+05, -2.383395635775431e+05, -2.383267706902613e+05, -2.383134008487409e+05, -2.382994599978570e+05, - -2.382849539900502e+05, -2.382698885872664e+05, -2.382542694628458e+05, -2.382381022033628e+05, -2.382213923104177e+05, - -2.382041452023789e+05, -2.381863662160863e+05, -2.381680606085022e+05, -2.381492335583280e+05, -2.381298901675734e+05, - -2.381100354630913e+05, -2.380896743980704e+05, -2.380688118534902e+05, -2.380474526395407e+05, -2.380256014970097e+05, - -2.380032630986301e+05, -2.379804420690119e+05, -2.379571429126275e+05, -2.379333701233336e+05, -2.379091281145057e+05, - -2.378844212377389e+05, -2.378592537840162e+05, -2.378336299848428e+05, -2.378075540133589e+05, -2.377810299854248e+05, - -2.377540619606789e+05, -2.377266539435747e+05, -2.376988098843883e+05, -2.376705336802079e+05, -2.376418291758980e+05, - -2.376127001650423e+05, -2.375831503908628e+05, -2.375531835471228e+05, -2.375228032790055e+05, -2.374920131839740e+05, - -2.374608168126131e+05, -2.374292176694511e+05, -2.373972192137641e+05, -2.373648248603630e+05, -2.373320379803619e+05, - -2.372988619019306e+05, -2.372652999110324e+05, -2.372313552521424e+05, -2.371970311289523e+05, -2.371623307050613e+05, - -2.371272571046522e+05, -2.370918134131468e+05, -2.370560026778607e+05, -2.370198279086281e+05, -2.369832920784276e+05, - -2.369463981239870e+05, -2.369091489463774e+05, -2.368715474115962e+05, -2.368335963511365e+05, -2.367952985625456e+05, - -2.367566568099728e+05, -2.367176738247052e+05, -2.366783523056912e+05, -2.366386949200580e+05, -2.365987043036135e+05, - -2.365583830613416e+05, -2.365177337678865e+05, -2.364767589680265e+05, -2.364354611771408e+05, -2.363938428816664e+05, - -2.363519065395422e+05, -2.363096545806521e+05, -2.362670894072517e+05, -2.362242133943919e+05, -2.361810288903323e+05, - -2.361375382169473e+05, -2.360937436701240e+05, -2.360496475201533e+05, -2.360052520121106e+05, -2.359605593662363e+05, - -2.359155717783007e+05, -2.358702914199680e+05, -2.358247204391506e+05, -2.357788609603593e+05, -2.357327150850437e+05, - -2.356862848919288e+05, -2.356395724373456e+05, -2.355925797555535e+05, -2.355453088590603e+05, -2.354977617389320e+05, - -2.354499403650997e+05, -2.354018466866628e+05, -2.353534826321822e+05, -2.353048501099710e+05, -2.352559510083797e+05, - -2.352067871960786e+05, -2.351573605223292e+05, -2.351076728172569e+05, -2.350577258921163e+05, -2.350075215395517e+05, - -2.349570615338538e+05, -2.349063476312113e+05, -2.348553815699600e+05, -2.348041650708233e+05, -2.347526998371551e+05, - -2.347009875551708e+05, -2.346490298941831e+05, -2.345968285068238e+05, -2.345443850292721e+05, -2.344917010814722e+05, - -2.344387782673480e+05, -2.343856181750169e+05, -2.343322223769985e+05, -2.342785924304199e+05, -2.342247298772169e+05, - -2.341706362443323e+05, -2.341163130439144e+05, -2.340617617735036e+05, -2.340069839162268e+05, -2.339519809409803e+05, - -2.338967543026128e+05, -2.338413054421061e+05, -2.337856357867529e+05, -2.337297467503285e+05, -2.336736397332662e+05, - -2.336173161228212e+05, -2.335607772932399e+05, -2.335040246059230e+05, -2.334470594095851e+05, -2.333898830404139e+05, - -2.333324968222254e+05, -2.332749020666182e+05, -2.332171000731230e+05, -2.331590921293529e+05, -2.331008795111483e+05, - -2.330424634827224e+05, -2.329838452968012e+05, -2.329250261947653e+05, -2.328660074067858e+05, -2.328067901519607e+05, - -2.327473756384480e+05, -2.326877650635967e+05, -2.326279596140769e+05, -2.325679604660069e+05, -2.325077687850793e+05, - -2.324473857266827e+05, -2.323868124360276e+05, -2.323260500482607e+05, -2.322650996885894e+05, -2.322039624723922e+05, - -2.321426395053392e+05, -2.320811318835003e+05, -2.320194406934606e+05, -2.319575670124275e+05, -2.318955119083398e+05, - -2.318332764399749e+05, -2.317708616570532e+05, -2.317082686003428e+05, -2.316454983017600e+05, -2.315825517844695e+05, - -2.315194300629887e+05, -2.314561341432777e+05, -2.313926650228422e+05, -2.313290236908245e+05, -2.312652111281007e+05, - -2.312012283073694e+05, -2.311370761932454e+05, -2.310727557423483e+05, -2.310082679033926e+05, -2.309436136172728e+05, - -2.308787938171508e+05, -2.308138094285417e+05, -2.307486613693950e+05, -2.306833505501808e+05, -2.306178778739678e+05, - -2.305522442365051e+05, -2.304864505263029e+05, -2.304204976247084e+05, -2.303543864059836e+05, -2.302881177373830e+05, - -2.302216924792262e+05, -2.301551114849735e+05, -2.300883756012982e+05, -2.300214856681603e+05, -2.299544425188756e+05, - -2.298872469801865e+05, -2.298198998723319e+05, -2.297524020091156e+05, -2.296847541979723e+05, -2.296169572400357e+05, - -2.295490119302039e+05, -2.294809190572033e+05, -2.294126794036537e+05, -2.293442937461307e+05, -2.292757628552281e+05, - -2.292070874956215e+05, -2.291382684261238e+05, -2.290693063997516e+05, -2.290002021637791e+05, -2.289309564598009e+05, - -2.288615700237854e+05, -2.287920435861348e+05, -2.287223778717401e+05, -2.286525736000371e+05, -2.285826314850611e+05, - -2.285125522355009e+05, -2.284423365547507e+05, -2.283719851409668e+05, -2.283014986871156e+05, -2.282308778810276e+05, - -2.281601234054466e+05, -2.280892359380814e+05, -2.280182161516539e+05, -2.279470647139483e+05, -2.278757822878630e+05, - -2.278043695314511e+05, -2.277328270979740e+05, -2.276611556359451e+05, -2.275893557891775e+05, -2.275174281968278e+05, - -2.274453734934396e+05, -2.273731923089941e+05, -2.273008852689458e+05, -2.272284529942728e+05, -2.271558961015142e+05, - -2.270832152028166e+05, -2.270104109059728e+05, -2.269374838144641e+05, -2.268644345275027e+05, -2.267912636400694e+05, - -2.267179717429550e+05, -2.266445594227995e+05, -2.265710272621296e+05, -2.264973758394005e+05, -2.264236057290290e+05, - -2.263497175014360e+05, -2.262757117230798e+05, -2.262015889564955e+05, -2.261273497603287e+05, -2.260529946893736e+05, - -2.259785242946072e+05, -2.259039391232250e+05, -2.258292397186745e+05, -2.257544266206898e+05, -2.256795003653279e+05, - -2.256044614849967e+05, -2.255293105084939e+05, -2.254540479610353e+05, -2.253786743642903e+05, -2.253031902364118e+05, - -2.252275960920678e+05, -2.251518924424736e+05, -2.250760797954232e+05, -2.250001586553172e+05, -2.249241295231959e+05, - -2.248479928967677e+05, -2.247717492704377e+05, -2.246953991353407e+05, -2.246189429793640e+05, -2.245423812871824e+05, - -2.244657145402813e+05, -2.243889432169875e+05, -2.243120677924960e+05, -2.242350887388967e+05, -2.241580065252036e+05, - -2.240808216173775e+05, -2.240035344783575e+05, -2.239261455680827e+05, -2.238486553435204e+05, -2.237710642586916e+05, - -2.236933727646954e+05, -2.236155813097343e+05, -2.235376903391388e+05, -2.234597002953944e+05, -2.233816116181608e+05, - -2.233034247443009e+05, -2.232251401079012e+05, -2.231467581402969e+05, -2.230682792700944e+05, -2.229897039231953e+05, - -2.229110325228177e+05, -2.228322654895192e+05, -2.227534032412199e+05, -2.226744461932234e+05, -2.225953947582393e+05, - -2.225162493464054e+05, -2.224370103653071e+05, -2.223576782199980e+05, -2.222782533130260e+05, -2.221987360444490e+05 - }, - { - 2.447530800025762e+04, 2.263513720785418e+04, 2.076360702942986e+04, 1.885917513289338e+04, 1.692017108108737e+04, - 1.494478111808595e+04, 1.293103056057888e+04, 1.087676331373441e+04, 8.779617923108111e+03, 6.636999417470033e+03, - 4.446046006119829e+03, 2.203589436808294e+03, -9.389252002448600e+01, -2.450333452378281e+03, -4.870148166572516e+03, - -7.358318495271956e+03, -9.920499718383358e+03, -1.256315395653101e+04, -1.529371934117063e+04, -1.812082735655914e+04, - -2.105458613464938e+04, -2.410695574928773e+04, -2.729225457210264e+04, -3.062785685788864e+04, -3.413517712034005e+04, - -3.784109846749695e+04, -4.178011457938814e+04, -4.599767092859287e+04, -5.055563425443113e+04, -5.554180378327566e+04, - -6.108779835432410e+04, -6.740646226733096e+04, -7.488308701179735e+04, -8.436078380464090e+04, -9.864281238091849e+04, - -1.929319770890749e+05, -1.976812617440289e+05, -2.008208707487659e+05, -2.032258060356727e+05, -2.051959590049906e+05, - -2.068744438162682e+05, -2.083417279463487e+05, -2.096479179840556e+05, -2.108265069539139e+05, -2.119010899802137e+05, - -2.128889783960049e+05, -2.138032913105161e+05, -2.146542369814747e+05, -2.154499348329112e+05, -2.161969632972669e+05, - -2.169007368774950e+05, -2.175657729249275e+05, -2.181958849582800e+05, -2.187943257166594e+05, -2.193638949929240e+05, - -2.199070222665406e+05, -2.204258309637772e+05, -2.209221890956053e+05, -2.213977496405866e+05, -2.218539831002675e+05, - -2.222922040042943e+05, -2.227135926847717e+05, -2.231192133123291e+05, -2.235100289492917e+05, -2.238869142012582e+05, - -2.242506659190059e+05, -2.246020123053830e+05, -2.249416207079798e+05, -2.252701043217137e+05, -2.255880279816201e+05, - -2.258959131919004e+05, -2.261942425103560e+05, -2.264834633859678e+05, -2.267639915303459e+05, -2.270362138900590e+05, - -2.273004912757685e+05, -2.275571606950775e+05, -2.278065374286181e+05, -2.280489168828355e+05, -2.282845762478997e+05, - -2.285137759850146e+05, -2.287367611639030e+05, -2.289537626683444e+05, -2.291649982851699e+05, -2.293706736900611e+05, - -2.295709833417243e+05, -2.297661112945367e+05, -2.299562319384533e+05, -2.301415106738973e+05, -2.303221045283935e+05, - -2.304981627209061e+05, -2.306698271791298e+05, -2.308372330143882e+05, -2.310005089582485e+05, -2.311597777645166e+05, - -2.313151565798587e+05, -2.314667572859623e+05, -2.316146868158165e+05, -2.317590474464411e+05, -2.318999370701412e+05, - -2.320374494461547e+05, -2.321716744343780e+05, -2.323026982126812e+05, -2.324306034791815e+05, -2.325554696407108e+05, - -2.326773729885958e+05, -2.327963868627680e+05, -2.329125818051182e+05, -2.330260257029371e+05, -2.331367839232055e+05, - -2.332449194384212e+05, -2.333504929446047e+05, -2.334535629720552e+05, -2.335541859893917e+05, -2.336524165013605e+05, - -2.337483071408539e+05, -2.338419087555498e+05, -2.339332704895463e+05, -2.340224398603311e+05, -2.341094628314124e+05, - -2.341943838808913e+05, -2.342772460662576e+05, -2.343580910863256e+05, -2.344369593418429e+05, -2.345138899876417e+05, - -2.345889209346381e+05, -2.346620890492935e+05, -2.347334300226167e+05, -2.348029785120725e+05, -2.348707681629415e+05, - -2.349368316482921e+05, -2.350012006986702e+05, -2.350639061725029e+05, -2.351249780375112e+05, -2.351844454398809e+05, - -2.352423367260204e+05, -2.352986794722675e+05, -2.353535005132114e+05, -2.354068259687086e+05, -2.354586812696576e+05, - -2.355090911826101e+05, -2.355580798332750e+05, -2.356056707289782e+05, -2.356518867801337e+05, -2.356967503207745e+05, - -2.357402831281973e+05, -2.357825064417641e+05, -2.358234409809071e+05, -2.358631069623713e+05, -2.359015241167403e+05, - -2.359387117042775e+05, -2.359746885301187e+05, -2.360094729588417e+05, -2.360430829284570e+05, -2.360755359644183e+05, - -2.361068491901063e+05, -2.361370393429310e+05, -2.361661227836884e+05, -2.361941155086597e+05, -2.362210331606180e+05, - -2.362468910394111e+05, -2.362717041139623e+05, -2.362954870247024e+05, -2.363182541042592e+05, -2.363400193789173e+05, - -2.363607965793214e+05, -2.363805991489178e+05, -2.363994402520937e+05, -2.364173327820208e+05, -2.364342893682297e+05, - -2.364503223839067e+05, -2.364654439529430e+05, -2.364796659567379e+05, -2.364930000407667e+05, -2.365054576209237e+05, - -2.365170498896526e+05, -2.365277878218674e+05, -2.365376821806764e+05, -2.365467435229171e+05, -2.365549822045065e+05, - -2.365624083856192e+05, -2.365690320356932e+05, -2.365748629382780e+05, -2.365799106957224e+05, -2.365841847337212e+05, - -2.365876943057073e+05, -2.365904484971144e+05, -2.365924562295032e+05, -2.365937262645580e+05, -2.365942672079655e+05, - -2.365940875131695e+05, -2.365931954850119e+05, -2.365915992832699e+05, -2.365893069260791e+05, -2.365863262932577e+05, - -2.365826651227275e+05, -2.365783310411891e+05, -2.365733315253522e+05, -2.365676739330968e+05, -2.365613654992006e+05, - -2.365544133381207e+05, -2.365468244466983e+05, -2.365386057067859e+05, -2.365297638878001e+05, -2.365203056492037e+05, - -2.365102375429183e+05, -2.364995660156691e+05, -2.364882974112673e+05, -2.364764379728275e+05, -2.364639938449269e+05, - -2.364509710757055e+05, -2.364373756189082e+05, -2.364232133358753e+05, -2.364084899974767e+05, -2.363932112859989e+05, - -2.363773827969770e+05, -2.363610100409857e+05, -2.363440984453767e+05, -2.363266533559771e+05, -2.363086800387397e+05, - -2.362901836813543e+05, -2.362711693948158e+05, -2.362516422149537e+05, -2.362316071039230e+05, -2.362110689516581e+05, - -2.361900325772892e+05, -2.361685027478552e+05, -2.361464841114470e+05, -2.361239812992082e+05, -2.361009988605442e+05, - -2.360775412806376e+05, -2.360536129816702e+05, -2.360292183240165e+05, -2.360043616074066e+05, -2.359790470720631e+05, - -2.359532788998102e+05, -2.359270612151582e+05, -2.359003980863618e+05, -2.358732935264519e+05, -2.358457514942457e+05, - -2.358177758953357e+05, -2.357893705830493e+05, -2.357605393593939e+05, -2.357312859759746e+05, -2.357016141348967e+05, - -2.356715274896408e+05, -2.356410296459277e+05, -2.356101241625540e+05, -2.355788145522167e+05, -2.355471042823161e+05, - -2.355149967757411e+05, -2.354824954116408e+05, -2.354496035261723e+05, -2.354163244132405e+05, -2.353826613252152e+05, - -2.353486174736384e+05, -2.353141960299096e+05, -2.352794001259651e+05, -2.352442328549367e+05, -2.352086972717965e+05, - -2.351727963939919e+05, -2.351365332020665e+05, -2.350999106402632e+05, -2.350629316171223e+05, -2.350255990060612e+05, - -2.349879156459458e+05, -2.349498843416478e+05, -2.349115078645926e+05, -2.348727889532965e+05, -2.348337303138885e+05, - -2.347943346206280e+05, -2.347546045164082e+05, -2.347145426132505e+05, -2.346741514927885e+05, -2.346334337067431e+05, - -2.345923917773886e+05, -2.345510281980085e+05, -2.345093454333444e+05, -2.344673459200318e+05, -2.344250320670341e+05, - -2.343824062560626e+05, -2.343394708419911e+05, -2.342962281532614e+05, -2.342526804922816e+05, -2.342088301358194e+05, - -2.341646793353804e+05, -2.341202303175897e+05, -2.340754852845569e+05, -2.340304464142419e+05, -2.339851158608061e+05, - -2.339394957549665e+05, -2.338935882043336e+05, -2.338473952937501e+05, -2.338009190856203e+05, -2.337541616202347e+05, - -2.337071249160861e+05, -2.336598109701852e+05, -2.336122217583648e+05, -2.335643592355824e+05, -2.335162253362149e+05, - -2.334678219743503e+05, -2.334191510440724e+05, -2.333702144197424e+05, -2.333210139562722e+05, -2.332715514893963e+05, - -2.332218288359390e+05, -2.331718477940723e+05, -2.331216101435764e+05, -2.330711176460884e+05, -2.330203720453529e+05, - -2.329693750674642e+05, -2.329181284211063e+05, -2.328666337977887e+05, -2.328148928720763e+05, -2.327629073018192e+05, - -2.327106787283738e+05, -2.326582087768245e+05, -2.326054990561994e+05, -2.325525511596821e+05, -2.324993666648224e+05, - -2.324459471337406e+05, -2.323922941133289e+05, -2.323384091354533e+05, -2.322842937171456e+05, -2.322299493607979e+05, - -2.321753775543526e+05, -2.321205797714848e+05, -2.320655574717912e+05, -2.320103121009646e+05, -2.319548450909748e+05, - -2.318991578602424e+05, -2.318432518138093e+05, -2.317871283435095e+05, -2.317307888281335e+05, -2.316742346335942e+05, - -2.316174671130840e+05, -2.315604876072387e+05, -2.315032974442902e+05, -2.314458979402194e+05, -2.313882903989093e+05, - -2.313304761122951e+05, -2.312724563605068e+05, -2.312142324120159e+05, -2.311558055237792e+05, -2.310971769413755e+05, - -2.310383478991450e+05, -2.309793196203248e+05, -2.309200933171825e+05, -2.308606701911493e+05, -2.308010514329456e+05, - -2.307412382227136e+05, -2.306812317301404e+05, -2.306210331145805e+05, -2.305606435251831e+05, -2.305000641010057e+05, - -2.304392959711374e+05, -2.303783402548140e+05, -2.303171980615332e+05, -2.302558704911670e+05, -2.301943586340754e+05, - -2.301326635712138e+05, -2.300707863742440e+05, -2.300087281056392e+05, -2.299464898187911e+05, -2.298840725581119e+05, - -2.298214773591371e+05, -2.297587052486275e+05, -2.296957572446681e+05, -2.296326343567643e+05, -2.295693375859422e+05, - -2.295058679248396e+05, -2.294422263578041e+05, -2.293784138609817e+05, -2.293144314024117e+05, -2.292502799421142e+05, - -2.291859604321795e+05, -2.291214738168574e+05, -2.290568210326397e+05, -2.289920030083496e+05, -2.289270206652228e+05, - -2.288618749169914e+05, -2.287965666699649e+05, -2.287310968231126e+05, -2.286654662681402e+05, -2.285996758895704e+05, - -2.285337265648197e+05, -2.284676191642734e+05, -2.284013545513632e+05, -2.283349335826395e+05, -2.282683571078457e+05, - -2.282016259699895e+05, -2.281347410054153e+05, -2.280677030438735e+05, -2.280005129085912e+05, -2.279331714163396e+05, - -2.278656793775016e+05, -2.277980375961396e+05, -2.277302468700599e+05, -2.276623079908795e+05, -2.275942217440874e+05, - -2.275259889091117e+05, -2.274576102593789e+05, -2.273890865623765e+05, -2.273204185797147e+05, -2.272516070671861e+05, - -2.271826527748241e+05, -2.271135564469626e+05, -2.270443188222941e+05, -2.269749406339241e+05, -2.269054226094316e+05, - -2.268357654709219e+05, -2.267659699350820e+05, -2.266960367132350e+05, -2.266259665113947e+05, -2.265557600303168e+05, - -2.264854179655519e+05, -2.264149410074977e+05, -2.263443298414487e+05, -2.262735851476486e+05, -2.262027076013362e+05, - -2.261316978727996e+05, -2.260605566274199e+05, -2.259892845257215e+05, -2.259178822234207e+05, -2.258463503714686e+05, - -2.257746896161008e+05, -2.257029005988811e+05, -2.256309839567466e+05, -2.255589403220540e+05, -2.254867703226210e+05, - -2.254144745817716e+05, -2.253420537183781e+05, -2.252695083469031e+05, -2.251968390774435e+05, -2.251240465157696e+05, - -2.250511312633664e+05, -2.249780939174746e+05, -2.249049350711316e+05, -2.248316553132085e+05, -2.247582552284505e+05, - -2.246847353975154e+05, -2.246110963970124e+05, -2.245373387995367e+05, -2.244634631737115e+05, -2.243894700842212e+05, - -2.243153600918489e+05, -2.242411337535109e+05, -2.241667916222957e+05, -2.240923342474949e+05, -2.240177621746417e+05, - -2.239430759455421e+05, -2.238682760983112e+05, -2.237933631674045e+05, -2.237183376836530e+05, -2.236432001742954e+05, - -2.235679511630090e+05, -2.234925911699446e+05, -2.234171207117560e+05, -2.233415403016309e+05, -2.232658504493246e+05, - -2.231900516611871e+05, -2.231141444401976e+05, -2.230381292859887e+05, -2.229620066948817e+05, -2.228857771599130e+05, - -2.228094411708628e+05, -2.227329992142852e+05, -2.226564517735356e+05, -2.225797993287988e+05, -2.225030423571167e+05, - -2.224261813324154e+05, -2.223492167255337e+05, -2.222721490042475e+05, -2.221949786332994e+05, -2.221177060744214e+05, - -2.220403317863637e+05, -2.219628562249182e+05, -2.218852798429466e+05, -2.218076030904030e+05, -2.217298264143598e+05, - -2.216519502590313e+05, -2.215739750657998e+05, -2.214959012732386e+05, -2.214177293171346e+05, -2.213394596305147e+05, - -2.212610926436671e+05, -2.211826287841637e+05, -2.211040684768852e+05, -2.210254121440417e+05, -2.209466602051962e+05, - -2.208678130772852e+05, -2.207888711746427e+05, -2.207098349090211e+05, -2.206307046896104e+05, -2.205514809230630e+05 - }, - { - 2.534793072638198e+04, 2.352158884170240e+04, 2.166457081712515e+04, 1.977539455111799e+04, 1.785245704263586e+04, - 1.589402031332272e+04, 1.389819515892830e+04, 1.186292230347190e+04, 9.785950436571540e+03, 7.664810478778211e+03, - 5.496785255851577e+03, 3.278873543310961e+03, 1.007747154236238e+03, -1.320300641426126e+03, -3.709417596690859e+03, - -6.164268805599175e+03, -8.690130778844750e+03, -1.129300857224392e+04, -1.397978322558540e+04, -1.675839961680609e+04, - -1.963810904835074e+04, -2.262978724709102e+04, -2.574635830835747e+04, -2.900337077083114e+04, -3.241979766567242e+04, - -3.601917593564211e+04, -3.983127747151411e+04, -4.389464677165993e+04, -4.826061942360825e+04, -5.300002295424601e+04, - -5.821510476481377e+04, -6.406266368182159e+04, -7.080453026136161e+04, -7.893886840206332e+04, -8.966054104124643e+04, - -1.082240590728471e+05, -1.887641314203832e+05, -1.940782527819983e+05, -1.974968495074145e+05, -2.000793621332083e+05, - -2.021763989302958e+05, -2.039519703335084e+05, -2.054970235635280e+05, -2.068675920403086e+05, -2.081008085734060e+05, - -2.092226434340377e+05, -2.102520324704064e+05, -2.112032486801834e+05, -2.120873459042710e+05, -2.129130797480216e+05, - -2.136875182018593e+05, -2.144164599432829e+05, -2.151047290117890e+05, -2.157563874865696e+05, -2.163748922741516e+05, - -2.169632128867054e+05, -2.175239214013370e+05, -2.180592622080171e+05, -2.185712068181956e+05, -2.190614974605613e+05, - -2.195316821423128e+05, -2.199831431311847e+05, -2.204171203059841e+05, -2.208347304617021e+05, -2.212369833937651e+05, - -2.216247953944630e+05, -2.219990006525651e+05, -2.223603609406457e+05, -2.227095738939227e+05, -2.230472801226593e+05, - -2.233740693524617e+05, -2.236904857496456e+05, -2.239970325596464e+05, -2.242941761633560e+05, -2.245823496378438e+05, - -2.248619558931536e+05, -2.251333704449270e+05, -2.253969438729101e+05, -2.256530040074798e+05, -2.259018578798114e+05, - -2.261437934659393e+05, -2.263790812505033e+05, -2.266079756322461e+05, -2.268307161902302e+05, -2.270475288271082e+05, - -2.272586268035829e+05, -2.274642116763233e+05, -2.276644741499931e+05, -2.278595948527153e+05, -2.280497450431120e+05, - -2.282350872560732e+05, -2.284157758935375e+05, -2.285919577658366e+05, -2.287637725884924e+05, -2.289313534388237e+05, - -2.290948271761991e+05, -2.292543148293755e+05, -2.294099319539703e+05, -2.295617889628021e+05, -2.297099914315351e+05, - -2.298546403818195e+05, -2.299958325438897e+05, -2.301336606003898e+05, -2.302682134130161e+05, -2.303995762334155e+05, - -2.305278308996331e+05, -2.306530560192896e+05, -2.307753271405473e+05, -2.308947169118337e+05, -2.310112952312012e+05, - -2.311251293861195e+05, -2.312362841844282e+05, -2.313448220771207e+05, -2.314508032735509e+05, -2.315542858496351e+05, - -2.316553258495426e+05, -2.317539773813493e+05, -2.318502927070741e+05, -2.319443223274953e+05, -2.320361150621072e+05, - -2.321257181245426e+05, -2.322131771937773e+05, -2.322985364814176e+05, -2.323818387972011e+05, -2.324631256099849e+05, - -2.325424371015808e+05, -2.326198121537568e+05, -2.326952886115746e+05, -2.327689030731583e+05, -2.328406910803346e+05, - -2.329106871311199e+05, -2.329789247128180e+05, -2.330454363756486e+05, -2.331102537171882e+05, -2.331734074545068e+05, - -2.332349274485073e+05, -2.332948427362704e+05, -2.333531815617812e+05, -2.334099714052329e+05, -2.334652390109726e+05, - -2.335190104141624e+05, -2.335713109662288e+05, -2.336221653591649e+05, -2.336715976487477e+05, -2.337196312767289e+05, - -2.337662890920505e+05, -2.338115933711431e+05, -2.338555658373473e+05, -2.338982276795084e+05, -2.339395995697846e+05, - -2.339797016807077e+05, -2.340185537015368e+05, -2.340561748539378e+05, -2.340925839070231e+05, -2.341277991917812e+05, - -2.341618386154315e+05, -2.341947196726591e+05, -2.342264594615722e+05, -2.342570746937948e+05, -2.342865817068272e+05, - -2.343149964772680e+05, -2.343423346240813e+05, -2.343686114307617e+05, -2.343938418475160e+05, -2.344180405030079e+05, - -2.344412217137231e+05, -2.344633994929913e+05, -2.344845875596787e+05, -2.345047993465684e+05, -2.345240480084383e+05, - -2.345423464298519e+05, -2.345597072326734e+05, -2.345761427833197e+05, -2.345916651997598e+05, -2.346062863582741e+05, - -2.346200178999761e+05, -2.346328712371194e+05, -2.346448575591862e+05, -2.346559878387749e+05, -2.346662728372863e+05, - -2.346757231104281e+05, -2.346843490135345e+05, -2.346921607067132e+05, -2.346991681598246e+05, -2.347053811573015e+05, - -2.347108093028165e+05, -2.347154620237976e+05, -2.347193485758051e+05, -2.347224780467666e+05, -2.347248593610876e+05, - -2.347265012836260e+05, -2.347274124169160e+05, -2.347276012317660e+05, -2.347270760301077e+05, -2.347258449760324e+05, - -2.347239160922388e+05, -2.347212972633387e+05, -2.347179962390731e+05, -2.347140206374274e+05, -2.347093779476601e+05, - -2.347040755332414e+05, -2.346981206347081e+05, -2.346915203724352e+05, -2.346842817493323e+05, -2.346764116534595e+05, - -2.346679168605701e+05, -2.346588040365874e+05, -2.346490797400052e+05, -2.346387504242273e+05, -2.346278224398425e+05, - -2.346163020368322e+05, -2.346041953667262e+05, -2.345915084846936e+05, -2.345782473515808e+05, -2.345644178358949e+05, - -2.345500257157329e+05, -2.345350766806633e+05, -2.345195763335531e+05, -2.345035301923536e+05, -2.344869436918336e+05, - -2.344698221852741e+05, -2.344521709461131e+05, -2.344339951695531e+05, -2.344152999741265e+05, -2.343960904032218e+05, - -2.343763714265692e+05, -2.343561479577424e+05, -2.343354247924441e+05, -2.343142067030191e+05, -2.342924983787197e+05, - -2.342703044420428e+05, -2.342476294500108e+05, -2.342244778954219e+05, -2.342008542080687e+05, -2.341767627559296e+05, - -2.341522078463302e+05, -2.341271937270784e+05, -2.341017245875714e+05, -2.340758045598785e+05, -2.340494377197967e+05, - -2.340226280878831e+05, -2.339953796304628e+05, -2.339676962606144e+05, -2.339395818391318e+05, -2.339110401754648e+05, - -2.338820750286386e+05, -2.338526901081510e+05, -2.338228890748534e+05, -2.337926755418059e+05, -2.337620530751192e+05, - -2.337310251947750e+05, -2.336995953754281e+05, -2.336677670471933e+05, -2.336355435964121e+05, -2.336029283664040e+05, - -2.335699246582027e+05, -2.335365357312748e+05, -2.335027648042245e+05, -2.334686150554811e+05, -2.334340896239744e+05, - -2.333991916097950e+05, -2.333639240748397e+05, -2.333282900434436e+05, -2.332922925030015e+05, -2.332559344045719e+05, - -2.332192186634741e+05, -2.331821481598665e+05, -2.331447257393196e+05, -2.331069542133718e+05, -2.330688363600780e+05, - -2.330303749245446e+05, -2.329915726194546e+05, -2.329524321255827e+05, -2.329129560922986e+05, -2.328731471380620e+05, - -2.328330078509068e+05, -2.327925407889149e+05, -2.327517484806843e+05, -2.327106334257823e+05, -2.326691980951957e+05, - -2.326274449317690e+05, -2.325853763506319e+05, -2.325429947396272e+05, -2.325003024597198e+05, -2.324573018454039e+05, - -2.324139952051031e+05, -2.323703848215596e+05, -2.323264729522179e+05, -2.322822618296025e+05, -2.322377536616846e+05, - -2.321929506322464e+05, -2.321478549012362e+05, -2.321024686051174e+05, -2.320567938572106e+05, -2.320108327480309e+05, - -2.319645873456178e+05, -2.319180596958589e+05, -2.318712518228079e+05, -2.318241657289984e+05, -2.317768033957502e+05, - -2.317291667834704e+05, -2.316812578319493e+05, -2.316330784606513e+05, -2.315846305690021e+05, -2.315359160366666e+05, - -2.314869367238266e+05, -2.314376944714495e+05, -2.313881911015572e+05, -2.313384284174848e+05, -2.312884082041390e+05, - -2.312381322282505e+05, -2.311876022386211e+05, -2.311368199663691e+05, -2.310857871251674e+05, -2.310345054114801e+05, - -2.309829765047937e+05, -2.309312020678451e+05, -2.308791837468453e+05, -2.308269231716986e+05, -2.307744219562213e+05, - -2.307216816983515e+05, -2.306687039803609e+05, -2.306154903690591e+05, -2.305620424159964e+05, -2.305083616576632e+05, - -2.304544496156856e+05, -2.304003077970180e+05, -2.303459376941313e+05, -2.302913407852026e+05, -2.302365185342945e+05, - -2.301814723915390e+05, -2.301262037933123e+05, -2.300707141624124e+05, -2.300150049082274e+05, -2.299590774269080e+05, - -2.299029331015314e+05, -2.298465733022675e+05, -2.297899993865388e+05, -2.297332126991795e+05, -2.296762145725902e+05, - -2.296190063268957e+05, -2.295615892700916e+05, -2.295039646981969e+05, -2.294461338953994e+05, -2.293880981342008e+05, - -2.293298586755577e+05, -2.292714167690239e+05, -2.292127736528862e+05, -2.291539305543017e+05, -2.290948886894313e+05, - -2.290356492635720e+05, -2.289762134712849e+05, -2.289165824965258e+05, -2.288567575127695e+05, -2.287967396831329e+05, - -2.287365301605010e+05, -2.286761300876429e+05, -2.286155405973333e+05, -2.285547628124690e+05, -2.284937978461826e+05, - -2.284326468019579e+05, -2.283713107737417e+05, -2.283097908460515e+05, -2.282480880940884e+05, -2.281862035838386e+05, - -2.281241383721859e+05, -2.280618935070080e+05, -2.279994700272861e+05, -2.279368689632010e+05, -2.278740913362343e+05, - -2.278111381592678e+05, -2.277480104366781e+05, -2.276847091644346e+05, -2.276212353301906e+05, -2.275575899133787e+05, - -2.274937738853001e+05, -2.274297882092181e+05, -2.273656338404421e+05, -2.273013117264193e+05, -2.272368228068209e+05, - -2.271721680136247e+05, -2.271073482712024e+05, -2.270423644963999e+05, -2.269772175986210e+05, -2.269119084799076e+05, - -2.268464380350191e+05, -2.267808071515115e+05, -2.267150167098124e+05, -2.266490675833025e+05, -2.265829606383853e+05, - -2.265166967345662e+05, -2.264502767245224e+05, -2.263837014541774e+05, -2.263169717627708e+05, -2.262500884829324e+05, - -2.261830524407463e+05, -2.261158644558240e+05, -2.260485253413702e+05, -2.259810359042505e+05, -2.259133969450563e+05, - -2.258456092581710e+05, -2.257776736318334e+05, -2.257095908482025e+05, -2.256413616834184e+05, -2.255729869076656e+05, - -2.255044672852326e+05, -2.254358035745731e+05, -2.253669965283659e+05, -2.252980468935723e+05, -2.252289554114953e+05, - -2.251597228178356e+05, -2.250903498427488e+05, -2.250208372109010e+05, -2.249511856415251e+05, -2.248813958484723e+05, - -2.248114685402695e+05, -2.247414044201682e+05, -2.246712041862015e+05, -2.246008685312312e+05, -2.245303981430020e+05, - -2.244597937041906e+05, -2.243890558924567e+05, -2.243181853804908e+05, -2.242471828360634e+05, -2.241760489220731e+05, - -2.241047842965930e+05, -2.240333896129210e+05, -2.239618655196202e+05, -2.238902126605707e+05, -2.238184316750096e+05, - -2.237465231975804e+05, -2.236744878583729e+05, -2.236023262829680e+05, -2.235300390924838e+05, -2.234576269036124e+05, - -2.233850903286680e+05, -2.233124299756222e+05, -2.232396464481511e+05, -2.231667403456712e+05, -2.230937122633815e+05, - -2.230205627923026e+05, -2.229472925193167e+05, -2.228739020272046e+05, -2.228003918946848e+05, -2.227267626964520e+05, - -2.226530150032127e+05, -2.225791493817236e+05, -2.225051663948263e+05, -2.224310666014867e+05, -2.223568505568255e+05, - -2.222825188121591e+05, -2.222080719150291e+05, -2.221335104092408e+05, -2.220588348348954e+05, -2.219840457284218e+05, - -2.219091436226152e+05, -2.218341290466631e+05, -2.217590025261839e+05, -2.216837645832550e+05, -2.216084157364463e+05, - -2.215329565008508e+05, -2.214573873881174e+05, -2.213817089064779e+05, -2.213059215607822e+05, -2.212300258525249e+05, - -2.211540222798744e+05, -2.210779113377068e+05, -2.210016935176291e+05, -2.209253693080127e+05, -2.208489391940184e+05, - -2.207724036576274e+05, -2.206957631776659e+05, -2.206190182298360e+05, -2.205421692867390e+05, -2.204652168179066e+05, - -2.203881612898244e+05, -2.203110031659585e+05, -2.202337429067827e+05, -2.201563809698041e+05, -2.200789178095861e+05, - -2.200013538777785e+05, -2.199236896231375e+05, -2.198459254915527e+05, -2.197680619260707e+05, -2.196900993669212e+05, - -2.196120382515370e+05, -2.195338790145817e+05, -2.194556220879707e+05, -2.193772679008944e+05, -2.192988168798418e+05, - -2.192202694486237e+05, -2.191416260283935e+05, -2.190628870376697e+05, -2.189840528923591e+05, -2.189051240057774e+05 - }, - { - 2.622154834199604e+04, 2.440886325126771e+04, 2.256616811657186e+04, 2.069203852266329e+04, 1.878493594100698e+04, - 1.684319470164424e+04, 1.486500699724814e+04, 1.284840554088299e+04, 1.079124341862551e+04, 8.691170560831059e+03, - 6.545606115386270e+03, 4.351705818885339e+03, 2.106323217267409e+03, -1.940367363749154e+02, -2.553273612588967e+03, - -4.975759457751220e+03, -7.466422065404632e+03, -1.003084798341610e+04, -1.267541125220476e+04, -1.540743613282032e+04, - -1.823540538786098e+04, -2.116923059786878e+04, -2.422060848362245e+04, -2.740349888554892e+04, -3.073477878704989e+04, - -3.423515779637044e+04, -3.793049369445227e+04, -4.185374219256538e+04, -4.604795436769114e+04, -5.057109429020502e+04, - -5.550422065804842e+04, -6.096639373303635e+04, -6.714449179048881e+04, -7.436117763868597e+04, -8.326401789506408e+04, - -9.557756240845456e+04, -1.234776048392778e+05, -1.846413394613802e+05, -1.904846384698059e+05, -1.941758607035946e+05, - -1.969343306830169e+05, -1.991579551536971e+05, -2.010307190057473e+05, -2.026537450510993e+05, -2.040888894733415e+05, - -2.053768932658028e+05, -2.065460972358819e+05, -2.076170666161593e+05, -2.086052357105312e+05, -2.095225112329253e+05, - -2.103782912161806e+05, -2.111801382198806e+05, -2.119342389621794e+05, -2.126457270727026e+05, -2.133189153186738e+05, - -2.139574663023142e+05, -2.145645203236504e+05, -2.151427927823036e+05, -2.156946495020439e+05, -2.162221657786214e+05, - -2.167271732403791e+05, -2.172112974544619e+05, -2.176759884148848e+05, -2.181225454907969e+05, -2.185521380164479e+05, - -2.189658224180132e+05, -2.193645565631308e+05, -2.197492118640773e+05, -2.201205835495849e+05, -2.204793994325926e+05, - -2.208263274342372e+05, -2.211619820727321e+05, -2.214869300856185e+05, -2.218016953223661e+05, -2.221067630194221e+05, - -2.224025835499949e+05, -2.226895757249998e+05, -2.229681297087822e+05, -2.232386096028595e+05, -2.235013557424412e+05, - -2.237566867435472e+05, -2.240049013327882e+05, -2.242462799871369e+05, -2.244810864070553e+05, -2.247095688430244e+05, - -2.249319612927559e+05, -2.251484845840067e+05, -2.253593473559418e+05, -2.255647469502959e+05, -2.257648702221515e+05, - -2.259598942789158e+05, -2.261499871550268e+05, -2.263353084290042e+05, -2.265160097886806e+05, -2.266922355497646e+05, - -2.268641231322990e+05, -2.270318034990614e+05, -2.271954015595114e+05, -2.273550365424849e+05, -2.275108223405062e+05, - -2.276628678282750e+05, -2.278112771576247e+05, -2.279561500310101e+05, -2.280975819553802e+05, -2.282356644781014e+05, - -2.283704854064331e+05, -2.285021290119231e+05, -2.286306762209426e+05, -2.287562047924831e+05, -2.288787894842208e+05, - -2.289985022077695e+05, -2.291154121739564e+05, -2.292295860288842e+05, -2.293410879814689e+05, -2.294499799230928e+05, - -2.295563215399483e+05, -2.296601704186034e+05, -2.297615821452771e+05, -2.298606103992677e+05, -2.299573070409449e+05, - -2.300517221946815e+05, -2.301439043270711e+05, -2.302339003207500e+05, -2.303217555445069e+05, -2.304075139220602e+05, - -2.304912179923732e+05, -2.305729089668026e+05, -2.306526266957354e+05, -2.307304100135570e+05, -2.308062964243368e+05, - -2.308803223566003e+05, -2.309525231633741e+05, -2.310229331578226e+05, -2.310915856837447e+05, -2.311585131082615e+05, - -2.312237468903222e+05, -2.312873176074898e+05, -2.313492549895357e+05, -2.314095879498999e+05, -2.314683446161746e+05, - -2.315255523589385e+05, -2.315812378193013e+05, -2.316354269351965e+05, -2.316881449664785e+05, -2.317394165189005e+05, - -2.317892655670268e+05, -2.318377154761349e+05, -2.318847890231662e+05, -2.319305084167705e+05, -2.319748953164913e+05, - -2.320179708511397e+05, -2.320597556363917e+05, -2.321002697916583e+05, -2.321395329562491e+05, -2.321775643048839e+05, - -2.322143825630366e+05, -2.322500060192788e+05, -2.322844525419704e+05, -2.323177395903765e+05, -2.323498842297756e+05, - -2.323809031357422e+05, -2.324108126178484e+05, -2.324396286227420e+05, -2.324673667470338e+05, -2.324940422476992e+05, - -2.325196700520892e+05, -2.325442647675727e+05, -2.325678406908180e+05, -2.325904118167430e+05, -2.326119918471324e+05, - -2.326325941989491e+05, -2.326522320123493e+05, -2.326709181584113e+05, -2.326886652465928e+05, -2.327054856319265e+05, - -2.327213914219701e+05, -2.327363944835118e+05, -2.327505064490506e+05, -2.327637387230562e+05, -2.327761024880140e+05, - -2.327876087102742e+05, -2.327982681457015e+05, -2.328080913451418e+05, -2.328170886597077e+05, -2.328252702458924e+05, - -2.328326460705204e+05, -2.328392259087362e+05, -2.328450193761743e+05, -2.328500358916419e+05, -2.328542847096923e+05, - -2.328577749176942e+05, -2.328605154399128e+05, -2.328625150414681e+05, -2.328637823321711e+05, -2.328643257702432e+05, - -2.328641536659248e+05, -2.328632741849723e+05, -2.328616953520546e+05, -2.328594250540467e+05, -2.328564710432255e+05, - -2.328528409403746e+05, -2.328485422377960e+05, -2.328435823022384e+05, -2.328379683777365e+05, -2.328317075883737e+05, - -2.328248069409634e+05, -2.328172733276562e+05, -2.328091135284731e+05, -2.328003342137699e+05, -2.327909419466297e+05, - -2.327809431851938e+05, -2.327703442849249e+05, -2.327591515008123e+05, -2.327473709895141e+05, -2.327350088114436e+05, - -2.327220709327997e+05, -2.327085632275433e+05, -2.326944914793202e+05, -2.326798613833353e+05, -2.326646785481757e+05, - -2.326489484975902e+05, -2.326326766722160e+05, -2.326158684312686e+05, -2.325985290541832e+05, -2.325806637422166e+05, - -2.325622776200074e+05, -2.325433757518785e+05, -2.325239630852253e+05, -2.325040445376109e+05, -2.324836249420446e+05, - -2.324627090621544e+05, -2.324413015935300e+05, -2.324194071650341e+05, -2.323970303400770e+05, -2.323741756178663e+05, - -2.323508474346205e+05, -2.323270501647610e+05, -2.323027881220662e+05, -2.322780655608092e+05, -2.322528866768604e+05, - -2.322272556087656e+05, -2.322011764388045e+05, -2.321746531940163e+05, -2.321476898472094e+05, -2.321202903179435e+05, - -2.320924584734887e+05, -2.320641981297661e+05, -2.320355130522661e+05, -2.320064069569418e+05, -2.319768835110903e+05, - -2.319469463342069e+05, -2.319165989988243e+05, -2.318858450313329e+05, -2.318546879127811e+05, -2.318231310796609e+05, - -2.317911779246751e+05, -2.317588317974860e+05, -2.317260960054509e+05, -2.316929738143407e+05, -2.316594684490432e+05, - -2.316255830942498e+05, -2.315913208951310e+05, -2.315566849579939e+05, -2.315216783509289e+05, -2.314863041044418e+05, - -2.314505652120719e+05, -2.314144646309978e+05, -2.313780052826327e+05, -2.313411900532028e+05, -2.313040217943197e+05, - -2.312665033235362e+05, -2.312286374248930e+05, -2.311904268494557e+05, -2.311518743158378e+05, -2.311129825107156e+05, - -2.310737540893314e+05, -2.310341916759892e+05, -2.309942978645369e+05, -2.309540752188414e+05, -2.309135262732555e+05, - -2.308726535330714e+05, -2.308314594749707e+05, -2.307899465474613e+05, -2.307481171713082e+05, -2.307059737399562e+05, - -2.306635186199420e+05, -2.306207541513024e+05, -2.305776826479705e+05, -2.305343063981686e+05, -2.304906276647892e+05, - -2.304466486857736e+05, -2.304023716744793e+05, -2.303577988200431e+05, -2.303129322877371e+05, -2.302677742193164e+05, - -2.302223267333637e+05, -2.301765919256230e+05, -2.301305718693328e+05, -2.300842686155472e+05, -2.300376841934577e+05, - -2.299908206107029e+05, -2.299436798536758e+05, -2.298962638878273e+05, -2.298485746579604e+05, -2.298006140885211e+05, - -2.297523840838850e+05, -2.297038865286376e+05, -2.296551232878502e+05, -2.296060962073488e+05, -2.295568071139843e+05, - -2.295072578158898e+05, -2.294574501027400e+05, -2.294073857460040e+05, -2.293570664991913e+05, -2.293064940980987e+05, - -2.292556702610477e+05, -2.292045966891206e+05, -2.291532750663942e+05, -2.291017070601647e+05, -2.290498943211745e+05, - -2.289978384838300e+05, -2.289455411664193e+05, -2.288930039713255e+05, -2.288402284852360e+05, -2.287872162793462e+05, - -2.287339689095665e+05, -2.286804879167170e+05, -2.286267748267261e+05, -2.285728311508221e+05, -2.285186583857241e+05, - -2.284642580138272e+05, -2.284096315033864e+05, -2.283547803086972e+05, -2.282997058702744e+05, -2.282444096150246e+05, - -2.281888929564212e+05, -2.281331572946705e+05, -2.280772040168814e+05, -2.280210344972268e+05, -2.279646500971078e+05, - -2.279080521653100e+05, -2.278512420381607e+05, -2.277942210396846e+05, -2.277369904817520e+05, -2.276795516642325e+05, - -2.276219058751375e+05, -2.275640543907683e+05, -2.275059984758561e+05, -2.274477393837038e+05, -2.273892783563247e+05, - -2.273306166245760e+05, -2.272717554082957e+05, -2.272126959164328e+05, -2.271534393471782e+05, -2.270939868880920e+05, - -2.270343397162301e+05, -2.269744989982691e+05, -2.269144658906277e+05, -2.268542415395864e+05, -2.267938270814103e+05, - -2.267332236424603e+05, -2.266724323393141e+05, -2.266114542788762e+05, -2.265502905584913e+05, -2.264889422660551e+05, - -2.264274104801217e+05, -2.263656962700116e+05, -2.263038006959185e+05, -2.262417248090112e+05, -2.261794696515377e+05, - -2.261170362569272e+05, -2.260544256498864e+05, -2.259916388465029e+05, -2.259286768543379e+05, -2.258655406725236e+05, - -2.258022312918577e+05, -2.257387496948949e+05, -2.256750968560412e+05, -2.256112737416397e+05, -2.255472813100654e+05, - -2.254831205118084e+05, -2.254187922895626e+05, -2.253542975783114e+05, -2.252896373054103e+05, -2.252248123906717e+05, - -2.251598237464463e+05, -2.250946722777042e+05, -2.250293588821137e+05, -2.249638844501205e+05, -2.248982498650268e+05, - -2.248324560030652e+05, -2.247665037334757e+05, -2.247003939185806e+05, -2.246341274138576e+05, -2.245677050680121e+05, - -2.245011277230482e+05, -2.244343962143418e+05, -2.243675113707065e+05, -2.243004740144663e+05, -2.242332849615213e+05, - -2.241659450214141e+05, -2.240984549973980e+05, -2.240308156865000e+05, -2.239630278795872e+05, -2.238950923614297e+05, - -2.238270099107627e+05, -2.237587813003481e+05, -2.236904072970382e+05, -2.236218886618329e+05, -2.235532261499407e+05, - -2.234844205108385e+05, -2.234154724883272e+05, -2.233463828205915e+05, -2.232771522402554e+05, -2.232077814744384e+05, - -2.231382712448093e+05, -2.230686222676430e+05, -2.229988352538728e+05, -2.229289109091439e+05, -2.228588499338663e+05, - -2.227886530232654e+05, -2.227183208674346e+05, -2.226478541513848e+05, -2.225772535550952e+05, -2.225065197535620e+05, - -2.224356534168474e+05, -2.223646552101276e+05, -2.222935257937399e+05, -2.222222658232302e+05, -2.221508759493994e+05, - -2.220793568183494e+05, -2.220077090715266e+05, -2.219359333457695e+05, -2.218640302733509e+05, -2.217920004820203e+05, - -2.217198445950524e+05, -2.216475632312822e+05, -2.215751570051531e+05, -2.215026265267554e+05, -2.214299724018682e+05, - -2.213571952320005e+05, -2.212842956144309e+05, -2.212112741422474e+05, -2.211381314043855e+05, -2.210648679856691e+05, - -2.209914844668474e+05, -2.209179814246316e+05, -2.208443594317354e+05, -2.207706190569091e+05, -2.206967608649781e+05, - -2.206227854168765e+05, -2.205486932696858e+05, -2.204744849766687e+05, -2.204001610873032e+05, -2.203257221473196e+05, - -2.202511686987304e+05, -2.201765012798693e+05, -2.201017204254198e+05, -2.200268266664509e+05, -2.199518205304490e+05, - -2.198767025413492e+05, -2.198014732195687e+05, -2.197261330820369e+05, -2.196506826422278e+05, -2.195751224101884e+05, - -2.194994528925735e+05, -2.194236745926710e+05, -2.193477880104345e+05, -2.192717936425113e+05, -2.191956919822733e+05, - -2.191194835198437e+05, -2.190431687421278e+05, -2.189667481328377e+05, -2.188902221725238e+05, -2.188135913386013e+05, - -2.187368561053753e+05, -2.186600169440702e+05, -2.185830743228557e+05, -2.185060287068733e+05, -2.184288805582602e+05, - -2.183516303361797e+05, -2.182742784968423e+05, -2.181968254935328e+05, -2.181192717766358e+05, -2.180416177936591e+05, - -2.179638639892589e+05, -2.178860108052638e+05, -2.178080586806996e+05, -2.177300080518103e+05, -2.176518593520859e+05, - -2.175736130122814e+05, -2.174952694604415e+05, -2.174168291219242e+05, -2.173382924194206e+05, -2.172596597729805e+05 - }, - { - 2.709615996555889e+04, 2.529696258901193e+04, 2.346840462786001e+04, 2.160911692889340e+04, 1.971762261849835e+04, - 1.779232504484198e+04, 1.583149393607736e+04, 1.383324943869939e+04, 1.179554363080009e+04, 9.716139003321139e+03, - 7.592583282061632e+03, 5.422179803210277e+03, 3.201952447932332e+03, 9.286038687978220e+02, -1.401534621588816e+03, - -3.792563616292295e+03, -6.249089412499000e+03, -8.776314732472731e+03, -1.138015132915631e+04, -1.406736124220275e+04, - -1.684573606983489e+04, -1.972432743811242e+04, -2.271374756620217e+04, -2.582656758697179e+04, -2.907785505249209e+04, - -3.248591433699333e+04, -3.607333083778806e+04, -3.986848462776672e+04, -4.390781628467683e+04, -4.823935186516915e+04, - -5.292844986588423e+04, -5.806773515156976e+04, -6.379561226557195e+04, -7.033442955955266e+04, -7.808127882360111e+04, - -8.787813121076948e+04, -1.022329651355804e+05, -1.529850558958266e+05, -1.806423826026857e+05, -1.869269711080251e+05, - -1.908714011263608e+05, -1.937989059281696e+05, -1.961461761252648e+05, -1.981147570508755e+05, -1.998150614277291e+05, - -2.013143986850930e+05, -2.026569526418286e+05, -2.038733578751499e+05, -2.049857729202796e+05, -2.060107766130032e+05, - -2.069611210526847e+05, -2.078468436506194e+05, -2.086760005397561e+05, -2.094551663606101e+05, -2.101897845219267e+05, - -2.108844187118538e+05, -2.115429373928393e+05, -2.121686517156520e+05, -2.127644203631321e+05, -2.133327304666131e+05, - -2.138757609125422e+05, -2.143954324871558e+05, -2.148934480444471e+05, -2.153713250140442e+05, -2.158304219579811e+05, - -2.162719604536309e+05, -2.166970432690014e+05, -2.171066695694690e+05, -2.175017477272061e+05, -2.178831061790948e+05, - -2.182515026841898e+05, -2.186076322595021e+05, -2.189521340172415e+05, -2.192855970834312e+05, -2.196085657439869e+05, - -2.199215439376434e+05, -2.202249991939012e+05, -2.205193660971933e+05, -2.208050493447802e+05, -2.210824264548251e+05, - -2.213518501720476e+05, -2.216136506109631e+05, -2.218681371706118e+05, -2.221156002496408e+05, -2.223563127863839e+05, - -2.225905316450952e+05, -2.228184988665297e+05, -2.230404427985943e+05, -2.232565791206837e+05, -2.234671117735380e+05, - -2.236722338049409e+05, -2.238721281402732e+05, -2.240669682858307e+05, -2.242569189718462e+05, -2.244421367413409e+05, - -2.246227704902054e+05, -2.247989619632915e+05, -2.249708462107610e+05, -2.251385520084543e+05, -2.253022022456476e+05, - -2.254619142831860e+05, -2.256178002846770e+05, -2.257699675231459e+05, -2.259185186653026e+05, -2.260635520353609e+05, - -2.262051618601498e+05, -2.263434384970903e+05, -2.264784686464565e+05, -2.266103355492089e+05, -2.267391191715549e+05, - -2.268648963773013e+05, -2.269877410889510e+05, -2.271077244384176e+05, -2.272249149081518e+05, -2.273393784634036e+05, - -2.274511786762798e+05, -2.275603768422043e+05, -2.276670320893303e+05, -2.277712014814123e+05, -2.278729401146029e+05, - -2.279723012086004e+05, -2.280693361925394e+05, -2.281640947859820e+05, -2.282566250753549e+05, -2.283469735876491e+05, - -2.284351853603875e+05, -2.285213040027516e+05, -2.286053716926583e+05, -2.286874294342579e+05, -2.287675168714927e+05, - -2.288456724740335e+05, -2.289219335577304e+05, -2.289963363242853e+05, -2.290689159343564e+05, -2.291397065050846e+05, - -2.292087411807890e+05, -2.292760521630613e+05, -2.293416707469612e+05, -2.294056273554692e+05, -2.294679515721666e+05, - -2.295286721730087e+05, -2.295878171554276e+05, -2.296454137672013e+05, -2.297014885334809e+05, -2.297560672826867e+05, - -2.298091751712420e+05, -2.298608367072061e+05, -2.299110757728626e+05, -2.299599156463217e+05, -2.300073790221857e+05, - -2.300534880313277e+05, -2.300982642598249e+05, -2.301417287671027e+05, -2.301839021033051e+05, -2.302248043259581e+05, - -2.302644550159431e+05, -2.303028732932007e+05, -2.303400778298560e+05, -2.303760868687500e+05, -2.304109182272613e+05, - -2.304445893230571e+05, -2.304771171782539e+05, -2.305085184335668e+05, -2.305388093598734e+05, -2.305680058693353e+05, - -2.305961235260961e+05, -2.306231775565843e+05, -2.306491828594233e+05, -2.306741540149832e+05, -2.306981052945772e+05, - -2.307210506693244e+05, -2.307430038186949e+05, -2.307639781387440e+05, -2.307839867500591e+05, -2.308030425054204e+05, - -2.308211579971965e+05, -2.308383455644821e+05, -2.308546172999877e+05, -2.308699850566965e+05, -2.308844604542891e+05, - -2.308980548853576e+05, -2.309107795214065e+05, -2.309226453120133e+05, -2.309336630173324e+05, -2.309438431726723e+05, - -2.309531961213304e+05, -2.309617320126822e+05, -2.309694608070987e+05, -2.309763922807033e+05, -2.309825360299810e+05, - -2.309879014762381e+05, -2.309924978699268e+05, -2.309963342948305e+05, -2.309994196721251e+05, -2.310017627643099e+05, - -2.310033721790232e+05, -2.310042563727388e+05, -2.310044236543550e+05, -2.310038821886707e+05, -2.310026399997650e+05, - -2.310007049742703e+05, -2.309980848645537e+05, -2.309947872918044e+05, -2.309908197490300e+05, -2.309861896039689e+05, - -2.309809041019185e+05, -2.309749703684804e+05, -2.309683954122328e+05, -2.309611861273223e+05, -2.309533492959877e+05, - -2.309448915910119e+05, -2.309358195781033e+05, -2.309261397182184e+05, -2.309158583698137e+05, -2.309049817910417e+05, - -2.308935161418849e+05, -2.308814674862330e+05, -2.308688417939061e+05, -2.308556449426220e+05, -2.308418827199134e+05, - -2.308275608249931e+05, -2.308126848705730e+05, -2.307972603846323e+05, -2.307812928121442e+05, -2.307647875167563e+05, - -2.307477497824252e+05, -2.307301848285408e+05, -2.307120977583632e+05, -2.306934936387877e+05, -2.306743774505786e+05, - -2.306547541024025e+05, -2.306346284322286e+05, -2.306140052087069e+05, -2.305928891325015e+05, -2.305712848375981e+05, - -2.305491968925790e+05, -2.305266298018636e+05, -2.305035880069253e+05, -2.304800758874739e+05, -2.304560977626115e+05, - -2.304316578919641e+05, -2.304067604767828e+05, -2.303814096610214e+05, -2.303556095323870e+05, -2.303293641233688e+05, - -2.303026774122423e+05, -2.302755533240492e+05, -2.302479957315567e+05, -2.302200084561929e+05, -2.301915952689646e+05, - -2.301627598913523e+05, -2.301335059961819e+05, -2.301038372084854e+05, -2.300737571063333e+05, -2.300432692216548e+05, - -2.300123770410378e+05, -2.299810840065119e+05, -2.299493935163136e+05, -2.299173089256348e+05, -2.298848335473588e+05, - -2.298519706527735e+05, -2.298187234722767e+05, -2.297850951960616e+05, -2.297510889747895e+05, -2.297167079202495e+05, - -2.296819551060006e+05, -2.296468335680049e+05, -2.296113463052451e+05, -2.295754962803296e+05, -2.295392864200857e+05, - -2.295027196161383e+05, -2.294657987254811e+05, -2.294285265710331e+05, -2.293909059421839e+05, -2.293529395953284e+05, - -2.293146302543917e+05, -2.292759806113434e+05, -2.292369933266981e+05, -2.291976710300134e+05, -2.291580163203690e+05, - -2.291180317668443e+05, -2.290777199089819e+05, -2.290370832572430e+05, -2.289961242934561e+05, -2.289548454712542e+05, - -2.289132492165046e+05, -2.288713379277297e+05, -2.288291139765243e+05, -2.287865797079574e+05, -2.287437374409708e+05, - -2.287005894687734e+05, -2.286571380592189e+05, -2.286133854551858e+05, -2.285693338749445e+05, -2.285249855125215e+05, - -2.284803425380520e+05, -2.284354070981314e+05, -2.283901813161563e+05, -2.283446672926609e+05, -2.282988671056477e+05, - -2.282527828109117e+05, -2.282064164423576e+05, -2.281597700123131e+05, -2.281128455118364e+05, -2.280656449110156e+05, - -2.280181701592674e+05, -2.279704231856266e+05, -2.279224058990300e+05, -2.278741201886010e+05, -2.278255679239220e+05, - -2.277767509553065e+05, -2.277276711140653e+05, -2.276783302127678e+05, -2.276287300454988e+05, -2.275788723881117e+05, - -2.275287589984768e+05, -2.274783916167250e+05, -2.274277719654866e+05, -2.273769017501287e+05, -2.273257826589874e+05, - -2.272744163635926e+05, -2.272228045188958e+05, -2.271709487634874e+05, -2.271188507198156e+05, -2.270665119943983e+05, - -2.270139341780323e+05, -2.269611188459988e+05, -2.269080675582690e+05, -2.268547818596999e+05, -2.268012632802318e+05, - -2.267475133350818e+05, -2.266935335249323e+05, -2.266393253361182e+05, -2.265848902408103e+05, -2.265302296971970e+05, - -2.264753451496609e+05, -2.264202380289538e+05, -2.263649097523699e+05, -2.263093617239140e+05, -2.262535953344692e+05, - -2.261976119619598e+05, -2.261414129715154e+05, -2.260849997156263e+05, -2.260283735343039e+05, -2.259715357552311e+05, - -2.259144876939169e+05, -2.258572306538448e+05, -2.257997659266190e+05, -2.257420947921107e+05, -2.256842185185991e+05, - -2.256261383629143e+05, -2.255678555705714e+05, -2.255093713759126e+05, -2.254506870022354e+05, -2.253918036619285e+05, - -2.253327225566006e+05, -2.252734448772085e+05, -2.252139718041846e+05, -2.251543045075590e+05, -2.250944441470838e+05, - -2.250343918723541e+05, -2.249741488229256e+05, -2.249137161284324e+05, -2.248530949087030e+05, -2.247922862738728e+05, - -2.247312913244995e+05, -2.246701111516673e+05, -2.246087468371032e+05, -2.245471994532796e+05, -2.244854700635209e+05, - -2.244235597221088e+05, -2.243614694743850e+05, -2.242992003568517e+05, -2.242367533972711e+05, -2.241741296147655e+05, - -2.241113300199142e+05, -2.240483556148463e+05, -2.239852073933402e+05, -2.239218863409111e+05, -2.238583934349071e+05, - -2.237947296445969e+05, -2.237308959312609e+05, -2.236668932482776e+05, -2.236027225412118e+05, -2.235383847478986e+05, - -2.234738807985288e+05, -2.234092116157332e+05, -2.233443781146614e+05, -2.232793812030660e+05, -2.232142217813821e+05, - -2.231489007428038e+05, -2.230834189733632e+05, -2.230177773520094e+05, -2.229519767506795e+05, -2.228860180343781e+05, - -2.228199020612474e+05, -2.227536296826410e+05, -2.226872017431961e+05, -2.226206190809049e+05, -2.225538825271802e+05, - -2.224869929069314e+05, -2.224199510386260e+05, -2.223527577343597e+05, -2.222854137999239e+05, -2.222179200348669e+05, - -2.221502772325617e+05, -2.220824861802697e+05, -2.220145476592023e+05, -2.219464624445822e+05, -2.218782313057068e+05, - -2.218098550060081e+05, -2.217413343031114e+05, -2.216726699488938e+05, -2.216038626895450e+05, -2.215349132656219e+05, - -2.214658224121065e+05, -2.213965908584627e+05, -2.213272193286901e+05, -2.212577085413795e+05, -2.211880592097662e+05, - -2.211182720417834e+05, -2.210483477401164e+05, -2.209782870022504e+05, -2.209080905205277e+05, -2.208377589821931e+05, - -2.207672930694463e+05, -2.206966934594903e+05, -2.206259608245820e+05, -2.205550958320781e+05, -2.204840991444860e+05, - -2.204129714195058e+05, -2.203417133100808e+05, -2.202703254644428e+05, -2.201988085261559e+05, -2.201271631341634e+05, - -2.200553899228298e+05, -2.199834895219862e+05, -2.199114625569727e+05, -2.198393096486814e+05, -2.197670314135988e+05, - -2.196946284638466e+05, -2.196221014072235e+05, -2.195494508472468e+05, -2.194766773831905e+05, -2.194037816101270e+05, - -2.193307641189649e+05, -2.192576254964890e+05, -2.191843663253984e+05, -2.191109871843438e+05, -2.190374886479646e+05, - -2.189638712869282e+05, -2.188901356679644e+05, -2.188162823539017e+05, -2.187423119037045e+05, -2.186682248725079e+05, - -2.185940218116508e+05, -2.185197032687146e+05, -2.184452697875520e+05, -2.183707219083252e+05, -2.182960601675379e+05, - -2.182212850980664e+05, -2.181463972291959e+05, -2.180713970866500e+05, -2.179962851926232e+05, -2.179210620658117e+05, - -2.178457282214484e+05, -2.177702841713272e+05, -2.176947304238406e+05, -2.176190674840046e+05, -2.175432958534895e+05, - -2.174674160306532e+05, -2.173914285105644e+05, -2.173153337850365e+05, -2.172391323426537e+05, -2.171628246687987e+05, - -2.170864112456829e+05, -2.170098925523716e+05, -2.169332690648132e+05, -2.168565412558657e+05, -2.167797095953217e+05, - -2.167027745499365e+05, -2.166257365834559e+05, -2.165485961566379e+05, -2.164713537272819e+05, -2.163940097502521e+05, - -2.163165646775027e+05, -2.162390189581043e+05, -2.161613730382652e+05, -2.160836273613599e+05, -2.160057823679490e+05, - -2.159278384958055e+05, -2.158497961799368e+05, -2.157716558526100e+05, -2.156934179433724e+05, -2.156150828790754e+05 - }, - { - 2.797176468017552e+04, 2.618588890181453e+04, 2.437128585639291e+04, 2.252663934199716e+04, 2.065053146019646e+04, - 1.874143145534568e+04, 1.679768293667763e+04, 1.481748918483899e+04, 1.279889618509193e+04, 1.073977294112855e+04, - 8.637788520391792e+03, 6.490385145164036e+03, 4.294746467888644e+03, 2.047759939348449e+03, -2.540281249065153e+02, - -2.614466578705247e+03, -5.037864923658994e+03, -7.529073318834619e+03, -1.009358123610624e+04, -1.273764031589108e+04, - -1.546841902864033e+04, -1.829419971720559e+04, -2.122463297735952e+04, -2.427107093595434e+04, -2.744701116676109e+04, - -3.076869909743456e+04, -3.425596304277178e+04, -3.793340022281723e+04, -4.183210999570073e+04, -4.599231280873382e+04, - -5.046746986836482e+04, -5.533108976337980e+04, -6.068868942010989e+04, -6.670055810453206e+04, -7.363000971531605e+04, - -8.196274099630211e+04, -9.278337467599897e+04, -1.096559146409427e+05, -1.577089034028970e+05, -1.768388817092807e+05, - -1.834330798255092e+05, -1.875980937456966e+05, -1.906821033004543e+05, -1.931471839753416e+05, -1.952085438835883e+05, - -1.969844063999051e+05, -1.985468851690504e+05, -1.999432960680409e+05, -2.012064098648687e+05, -2.023598952171012e+05, - -2.034214302463939e+05, -2.044045872191786e+05, -2.053200285504737e+05, -2.061762955503383e+05, -2.069803457240754e+05, - -2.077379290834160e+05, -2.084538581289493e+05, -2.091322056851237e+05, -2.097764526080158e+05, -2.103895999265633e+05, - -2.109742552704626e+05, -2.115327003914202e+05, -2.120669445680915e+05, -2.125787673232243e+05, -2.130697529448149e+05, - -2.135413186479570e+05, -2.139947377488010e+05, -2.144311588869793e+05, -2.148516220883701e+05, -2.152570722795568e+05, - -2.156483707305119e+05, -2.160263048003117e+05, -2.163915962831589e+05, -2.167449085923590e+05, -2.170868529736514e+05, - -2.174179939031125e+05, -2.177388537963413e+05, -2.180499171330009e+05, -2.183516340826988e+05, -2.186444237036368e+05, - -2.189286767736746e+05, -2.192047583038581e+05, -2.194730097766164e+05, -2.197337511443598e+05, -2.199872826188633e+05, - -2.202338862773907e+05, -2.204738275077782e+05, -2.207073563116158e+05, -2.209347084820234e+05, -2.211561066703141e+05, - -2.213717613539570e+05, -2.215818717166567e+05, -2.217866264499956e+05, -2.219862044849128e+05, -2.221807756602943e+05, - -2.223705013350751e+05, -2.225555349494984e+05, -2.227360225405397e+05, -2.229121032159181e+05, -2.230839095906444e+05, - -2.232515681896005e+05, -2.234151998192881e+05, -2.235749199115399e+05, -2.237308388416951e+05, -2.238830622234902e+05, - -2.240316911826794e+05, -2.241768226112041e+05, -2.243185494035500e+05, -2.244569606767684e+05, -2.245921419755036e+05, - -2.247241754632313e+05, -2.248531401008154e+05, -2.249791118133726e+05, -2.251021636463575e+05, -2.252223659116909e+05, - -2.253397863246883e+05, -2.254544901324721e+05, -2.255665402344974e+05, -2.256759972957691e+05, -2.257829198532702e+05, - -2.258873644160918e+05, -2.259893855597003e+05, -2.260890360147583e+05, -2.261863667508618e+05, -2.262814270558064e+05, - -2.263742646130669e+05, -2.264649255709132e+05, -2.265534546067427e+05, -2.266398949030644e+05, -2.267242884900814e+05, - -2.268066759511693e+05, -2.268870966751951e+05, -2.269655888641577e+05, -2.270421895755235e+05, -2.271169347920057e+05, - -2.271898594277779e+05, -2.272609973954043e+05, -2.273303816384445e+05, -2.273980441687913e+05, -2.274640161022103e+05, - -2.275283276921829e+05, -2.275910083621489e+05, -2.276520867359837e+05, -2.277115906682700e+05, -2.277695472709016e+05, - -2.278259829406287e+05, -2.278809233843439e+05, -2.279343936434300e+05, -2.279864181170340e+05, -2.280370205843154e+05, - -2.280862242257320e+05, -2.281340516434080e+05, -2.281805248806296e+05, -2.282256654405211e+05, -2.282694943039323e+05, - -2.283120319465842e+05, -2.283532983558506e+05, -2.283933130471352e+05, -2.284320950729654e+05, -2.284696630485488e+05, - -2.285060351575892e+05, -2.285412291678487e+05, -2.285752624440078e+05, -2.286081519600335e+05, -2.286399143110664e+05, - -2.286705657248508e+05, -2.287001220727379e+05, -2.287285988802648e+05, -2.287560113373487e+05, -2.287823743080944e+05, - -2.288077023402461e+05, -2.288320096742916e+05, -2.288553102522400e+05, -2.288776177260772e+05, -2.288989454659285e+05, - -2.289193065679245e+05, -2.289387138617940e+05, -2.289571799181917e+05, -2.289747170492832e+05, -2.289913373418575e+05, - -2.290070526239904e+05, -2.290218744983933e+05, -2.290358143417356e+05, -2.290488833105986e+05, -2.290610923472305e+05, - -2.290724521851136e+05, -2.290829733543454e+05, -2.290926661868496e+05, -2.291015408214158e+05, -2.291096072085782e+05, - -2.291168751153394e+05, -2.291233541297452e+05, -2.291290536653141e+05, -2.291339829653303e+05, -2.291381511070031e+05, - -2.291415670054968e+05, -2.291442394178380e+05, -2.291461769467088e+05, -2.291473880441152e+05, -2.291478810149550e+05, - -2.291476640204753e+05, -2.291467450816255e+05, -2.291451320823181e+05, -2.291428327725856e+05, -2.291398547716529e+05, - -2.291362055709158e+05, -2.291318925368378e+05, -2.291269229137613e+05, -2.291213038266386e+05, -2.291150422836917e+05, - -2.291081451789880e+05, -2.291006192949529e+05, -2.290924713048067e+05, -2.290837077749403e+05, -2.290743351672182e+05, - -2.290643598412257e+05, -2.290537880564517e+05, -2.290426259744146e+05, -2.290308796607285e+05, -2.290185550871168e+05, - -2.290056581333734e+05, -2.289921945892689e+05, -2.289781701564098e+05, -2.289635904500481e+05, -2.289484610008446e+05, - -2.289327872565860e+05, -2.289165745961442e+05, -2.288998282829052e+05, -2.288825535373007e+05, -2.288647554919408e+05, - -2.288464392045177e+05, -2.288276096592778e+05, -2.288082717684595e+05, -2.287884303736938e+05, -2.287680902473715e+05, - -2.287472560939774e+05, -2.287259325513903e+05, -2.287041241921537e+05, -2.286818355247157e+05, -2.286590709946370e+05, - -2.286358349857735e+05, -2.286121318214282e+05, -2.285879657654775e+05, -2.285633410234711e+05, -2.285382617437051e+05, - -2.285127320182704e+05, -2.284867558840805e+05, -2.284603373238674e+05, -2.284334802671660e+05, -2.284061885912651e+05, - -2.283784661221447e+05, -2.283503166353886e+05, -2.283217438570764e+05, -2.282927514646591e+05, -2.282633430878087e+05, - -2.282335223092567e+05, -2.282032926656087e+05, -2.281726576481428e+05, -2.281416207035904e+05, -2.281101852349011e+05, - -2.280783546019911e+05, -2.280461321224724e+05, -2.280135210723713e+05, -2.279805246868260e+05, -2.279471461607762e+05, - -2.279133886496306e+05, -2.278792552699274e+05, -2.278447490999744e+05, -2.278098731804824e+05, -2.277746305151798e+05, - -2.277390240714178e+05, -2.277030567807618e+05, -2.276667315395718e+05, -2.276300512095690e+05, -2.275930186183938e+05, - -2.275556365601489e+05, -2.275179077959355e+05, -2.274798350543749e+05, -2.274414210321235e+05, -2.274026683943732e+05, - -2.273635797753463e+05, -2.273241577787760e+05, -2.272844049783855e+05, -2.272443239183444e+05, -2.272039171137319e+05, - -2.271631870509768e+05, -2.271221361883009e+05, -2.270807669561441e+05, -2.270390817575884e+05, -2.269970829687709e+05, - -2.269547729392871e+05, -2.269121539925906e+05, -2.268692284263835e+05, -2.268259985129974e+05, -2.267824664997709e+05, - -2.267386346094176e+05, -2.266945050403883e+05, -2.266500799672260e+05, -2.266053615409140e+05, -2.265603518892193e+05, - -2.265150531170285e+05, -2.264694673066762e+05, -2.264235965182713e+05, -2.263774427900127e+05, -2.263310081385031e+05, - -2.262842945590564e+05, -2.262373040259968e+05, -2.261900384929564e+05, -2.261424998931662e+05, -2.260946901397398e+05, - -2.260466111259553e+05, -2.259982647255311e+05, -2.259496527928962e+05, -2.259007771634562e+05, -2.258516396538547e+05, - -2.258022420622309e+05, -2.257525861684715e+05, -2.257026737344596e+05, -2.256525065043174e+05, -2.256020862046478e+05, - -2.255514145447679e+05, -2.255004932169436e+05, -2.254493238966152e+05, -2.253979082426213e+05, -2.253462478974226e+05, - -2.252943444873120e+05, -2.252421996226347e+05, -2.251898148979930e+05, -2.251371918924537e+05, -2.250843321697518e+05, - -2.250312372784885e+05, -2.249779087523264e+05, -2.249243481101857e+05, -2.248705568564310e+05, -2.248165364810581e+05, - -2.247622884598799e+05, -2.247078142547047e+05, -2.246531153135159e+05, -2.245981930706442e+05, -2.245430489469449e+05, - -2.244876843499615e+05, -2.244321006740973e+05, -2.243762993007764e+05, -2.243202815986059e+05, -2.242640489235382e+05, - -2.242076026190228e+05, -2.241509440161630e+05, -2.240940744338677e+05, -2.240369951790012e+05, -2.239797075465288e+05, - -2.239222128196631e+05, -2.238645122700059e+05, -2.238066071576889e+05, -2.237484987315134e+05, -2.236901882290839e+05, - -2.236316768769434e+05, -2.235729658907081e+05, -2.235140564751940e+05, -2.234549498245471e+05, -2.233956471223684e+05, - -2.233361495418408e+05, -2.232764582458495e+05, -2.232165743871033e+05, -2.231564991082550e+05, -2.230962335420159e+05, - -2.230357788112753e+05, -2.229751360292099e+05, -2.229143062994000e+05, -2.228532907159383e+05, -2.227920903635377e+05, - -2.227307063176425e+05, -2.226691396445298e+05, -2.226073914014163e+05, -2.225454626365620e+05, -2.224833543893700e+05, - -2.224210676904863e+05, -2.223586035618996e+05, -2.222959630170389e+05, -2.222331470608661e+05, -2.221701566899746e+05, - -2.221069928926802e+05, -2.220436566491121e+05, -2.219801489313066e+05, -2.219164707032926e+05, -2.218526229211829e+05, - -2.217886065332583e+05, -2.217244224800558e+05, -2.216600716944516e+05, -2.215955551017445e+05, -2.215308736197390e+05, - -2.214660281588243e+05, -2.214010196220571e+05, -2.213358489052386e+05, -2.212705168969921e+05, -2.212050244788420e+05, - -2.211393725252869e+05, -2.210735619038752e+05, -2.210075934752804e+05, -2.209414680933710e+05, -2.208751866052850e+05, - -2.208087498514998e+05, -2.207421586659007e+05, -2.206754138758513e+05, -2.206085163022632e+05, -2.205414667596591e+05, - -2.204742660562432e+05, -2.204069149939633e+05, -2.203394143685775e+05, -2.202717649697176e+05, -2.202039675809524e+05, - -2.201360229798489e+05, -2.200679319380329e+05, -2.199996952212526e+05, -2.199313135894347e+05, -2.198627877967466e+05, - -2.197941185916522e+05, -2.197253067169712e+05, -2.196563529099340e+05, -2.195872579022406e+05, -2.195180224201136e+05, - -2.194486471843529e+05, -2.193791329103903e+05, -2.193094803083448e+05, -2.192396900830715e+05, -2.191697629342158e+05, - -2.190996995562651e+05, -2.190295006385985e+05, -2.189591668655366e+05, -2.188886989163925e+05, -2.188180974655200e+05, - -2.187473631823610e+05, -2.186764967314941e+05, -2.186054987726812e+05, -2.185343699609153e+05, -2.184631109464648e+05, - -2.183917223749195e+05, -2.183202048872360e+05, -2.182485591197820e+05, -2.181767857043785e+05, -2.181048852683459e+05, - -2.180328584345434e+05, -2.179607058214150e+05, -2.178884280430278e+05, -2.178160257091161e+05, -2.177434994251189e+05, - -2.176708497922238e+05, -2.175980774074046e+05, -2.175251828634611e+05, -2.174521667490586e+05, -2.173790296487646e+05, - -2.173057721430890e+05, -2.172323948085207e+05, -2.171588982175639e+05, -2.170852829387758e+05, -2.170115495368030e+05, - -2.169376985724167e+05, -2.168637306025483e+05, -2.167896461803243e+05, -2.167154458551019e+05, -2.166411301725013e+05, - -2.165666996744411e+05, -2.164921548991716e+05, -2.164174963813082e+05, -2.163427246518617e+05, -2.162678402382741e+05, - -2.161928436644483e+05, -2.161177354507806e+05, -2.160425161141909e+05, -2.159671861681560e+05, -2.158917461227363e+05, - -2.158161964846104e+05, -2.157405377571019e+05, -2.156647704402101e+05, -2.155888950306396e+05, -2.155129120218277e+05, - -2.154368219039737e+05, -2.153606251640700e+05, -2.152843222859249e+05, -2.152079137501931e+05, -2.151314000344049e+05, - -2.150547816129896e+05, -2.149780589573040e+05, -2.149012325356590e+05, -2.148243028133466e+05, -2.147472702526635e+05, - -2.146701353129373e+05, -2.145928984505555e+05, -2.145155601189854e+05, -2.144381207688017e+05, -2.143605808477112e+05, - -2.142829408005761e+05, -2.142052010694381e+05, -2.141273620935428e+05, -2.140494243093633e+05, -2.139713881506234e+05 - }, - { - 2.884836153524409e+04, 2.707564413578380e+04, 2.527481712187433e+04, 2.344461503967880e+04, 2.158367641628894e+04, - 1.969053342892682e+04, 1.776360010781751e+04, 1.580115880830681e+04, 1.380134463587059e+04, 1.176212743171901e+04, - 9.681290838128982e+03, 7.556407846010954e+03, 5.384812078041250e+03, 3.163563866917706e+03, 8.894099344392714e+02, - -1.441264858729205e+03, -3.832495671730911e+03, -6.288808336816864e+03, -8.815305924349186e+03, -1.141777578897984e+04, - -1.410282328798169e+04, -1.687804068052804e+04, -1.975222308768884e+04, -2.273564839014594e+04, -2.584044550752897e+04, - -2.908108723612148e+04, -3.247506251578164e+04, -3.604381360957849e+04, -3.981407594955107e+04, -4.381985037337420e+04, - -4.810540861875710e+04, -5.273006795213147e+04, -5.777617368385777e+04, -6.336333021957176e+04, -6.967597783134576e+04, - -7.702320505471015e+04, -8.599112785254672e+04, -9.794063185520006e+04, -1.174945377963296e+05, -1.573549858403111e+05, - -1.732760554246764e+05, -1.800290271577587e+05, -1.843708038527001e+05, -1.875934457030366e+05, -1.901675697629143e+05, - -1.923169091059061e+05, -1.941654873983673e+05, -1.957893095188069e+05, -1.972383684237275e+05, -1.985473297774371e+05, - -1.997412385065454e+05, -2.008387951259715e+05, -2.018543465867009e+05, -2.027991526809334e+05, -2.036822226711710e+05, - -2.045108858873931e+05, -2.052911916478586e+05, -2.060281962736821e+05, -2.067261734023938e+05, -2.073887709669692e+05, - -2.080191303140908e+05, -2.086199779449017e+05, -2.091936971264990e+05, -2.097423844783142e+05, -2.102678951877975e+05, - -2.107718795117459e+05, -2.112558125210724e+05, -2.117210185505268e+05, -2.121686914573447e+05, -2.125999115319254e+05, - -2.130156597110068e+05, -2.134168296000033e+05, -2.138042377026660e+05, -2.141786321736079e+05, -2.145407003457092e+05, - -2.148910752351830e+05, -2.152303411885967e+05, -2.155590388058361e+05, -2.158776692489648e+05, -2.161866980277300e+05, - -2.164865583370350e+05, -2.167776540092245e+05, -2.170603621338602e+05, -2.173350353893803e+05, -2.176020041241942e+05, - -2.178615782191203e+05, -2.181140487583942e+05, -2.183596895325625e+05, -2.185987583932993e+05, -2.188314984774317e+05, - -2.190581393151296e+05, -2.192788978352484e+05, -2.194939792791205e+05, -2.197035780326766e+05, -2.199078783855405e+05, - -2.201070552246764e+05, -2.203012746692831e+05, -2.204906946528163e+05, -2.206754654573560e+05, -2.208557302049412e+05, - -2.210316253099683e+05, -2.212032808963123e+05, -2.213708211824234e+05, -2.215343648373131e+05, -2.216940253100311e+05, - -2.218499111349776e+05, -2.220021262151407e+05, -2.221507700851581e+05, -2.222959381558981e+05, -2.224377219421024e+05, - -2.225762092744759e+05, -2.227114844974907e+05, -2.228436286540332e+05, -2.229727196579419e+05, -2.230988324553693e+05, - -2.232220391758322e+05, -2.233424092737289e+05, -2.234600096610334e+05, -2.235749048318291e+05, -2.236871569792642e+05, - -2.237968261054883e+05, -2.239039701250608e+05, -2.240086449622965e+05, -2.241109046429707e+05, -2.242108013807679e+05, - -2.243083856601634e+05, -2.244037063156579e+05, -2.244968106010731e+05, -2.245877441951824e+05, -2.246765514619772e+05, - -2.247632752777798e+05, -2.248479572194130e+05, -2.249306375916593e+05, -2.250113554741963e+05, -2.250901487936041e+05, - -2.251670543358985e+05, -2.252421078151721e+05, -2.253153439099472e+05, -2.253867963036199e+05, -2.254564977229321e+05, - -2.255244799745838e+05, -2.255907739800942e+05, -2.256554098090098e+05, -2.257184167105556e+05, -2.257798231438143e+05, - -2.258396568060744e+05, -2.258979446619836e+05, -2.259547129673937e+05, -2.260099872959385e+05, -2.260637925626209e+05, - -2.261161530467075e+05, -2.261670924136273e+05, -2.262166337359244e+05, -2.262647995133140e+05, -2.263116116918879e+05, - -2.263570916825088e+05, -2.264012603804815e+05, -2.264441381744141e+05, -2.264857449740411e+05, -2.265261002187998e+05, - -2.265652228938225e+05, -2.266031315445557e+05, -2.266398442905173e+05, -2.266753788385145e+05, -2.267097524953490e+05, - -2.267429821800250e+05, -2.267750844354937e+05, -2.268060754399489e+05, -2.268359710176960e+05, -2.268647866496135e+05, - -2.268925374832262e+05, -2.269192383424068e+05, -2.269449037367220e+05, -2.269695478704385e+05, -2.269931846448571e+05, - -2.270158276924054e+05, -2.270374903456205e+05, -2.270581856713498e+05, -2.270779264715760e+05, -2.270967252906697e+05, - -2.271145944223962e+05, -2.271315459166805e+05, -2.271475915861434e+05, -2.271627430124151e+05, -2.271770115522403e+05, - -2.271904083433771e+05, -2.272029443103021e+05, -2.272146301697300e+05, -2.272254764359497e+05, -2.272354934259910e+05, - -2.272446912646240e+05, -2.272530798891972e+05, -2.272606690543257e+05, -2.272674683364289e+05, -2.272734871381267e+05, - -2.272787346924994e+05, -2.272832200672170e+05, -2.272869521685396e+05, -2.272899397451968e+05, -2.272921913921518e+05, - -2.272937155542472e+05, -2.272945205297471e+05, -2.272946144737705e+05, -2.272940054016263e+05, -2.272927011920438e+05, - -2.272907095903203e+05, -2.272880382113653e+05, -2.272846945426651e+05, -2.272806859471603e+05, -2.272760196660399e+05, - -2.272707028214581e+05, -2.272647424191740e+05, -2.272581453511188e+05, -2.272509183978870e+05, -2.272430682311676e+05, - -2.272346014160993e+05, -2.272255244135655e+05, -2.272158435824298e+05, -2.272055651817047e+05, -2.271946953726675e+05, - -2.271832402209173e+05, -2.271712056983789e+05, -2.271585976852504e+05, -2.271454219719063e+05, -2.271316842607424e+05, - -2.271173901679797e+05, -2.271025452364833e+05, -2.270871548941081e+05, -2.270712245191173e+05, -2.270547594001378e+05, - -2.270377647479599e+05, -2.270202456970789e+05, -2.270022073072021e+05, -2.269836545647130e+05, -2.269645923841045e+05, - -2.269450256093744e+05, -2.269249590153859e+05, -2.269043973091974e+05, -2.268833451313582e+05, -2.268618070571731e+05, - -2.268397875979389e+05, -2.268172912021482e+05, -2.267943222566664e+05, -2.267708850878813e+05, -2.267469839628247e+05, - -2.267226230902681e+05, -2.266978066217938e+05, -2.266725386528388e+05, -2.266468232237182e+05, -2.266206643206225e+05, - -2.265940658765910e+05, -2.265670317724696e+05, -2.265395658378372e+05, -2.265116718519198e+05, -2.264833535444800e+05, - -2.264546145966874e+05, -2.264254586419693e+05, -2.263958892668436e+05, -2.263659100117338e+05, -2.263355243717648e+05, - -2.263047357975397e+05, -2.262735476959070e+05, -2.262419634307016e+05, -2.262099863234773e+05, -2.261776196542192e+05, - -2.261448666620447e+05, -2.261117305458863e+05, -2.260782144651615e+05, -2.260443215404290e+05, -2.260100548540306e+05, - -2.259754174507200e+05, -2.259404123382774e+05, -2.259050424881152e+05, -2.258693108358650e+05, -2.258332202819592e+05, - -2.257967736921965e+05, -2.257599738982966e+05, -2.257228236984455e+05, -2.256853258578278e+05, -2.256474831091506e+05, - -2.256092981531531e+05, -2.255707736591109e+05, -2.255319122653274e+05, -2.254927165796150e+05, -2.254531891797692e+05, - -2.254133326140327e+05, -2.253731494015486e+05, -2.253326420328068e+05, -2.252918129700825e+05, -2.252506646478632e+05, - -2.252091994732700e+05, -2.251674198264721e+05, -2.251253280610887e+05, -2.250829265045879e+05, -2.250402174586763e+05, - -2.249972031996816e+05, -2.249538859789279e+05, -2.249102680231020e+05, -2.248663515346191e+05, -2.248221386919733e+05, - -2.247776316500883e+05, -2.247328325406589e+05, -2.246877434724868e+05, -2.246423665318101e+05, -2.245967037826261e+05, - -2.245507572670107e+05, -2.245045290054295e+05, -2.244580209970439e+05, -2.244112352200133e+05, -2.243641736317904e+05, - -2.243168381694114e+05, -2.242692307497812e+05, -2.242213532699538e+05, -2.241732076074088e+05, -2.241247956203199e+05, - -2.240761191478236e+05, -2.240271800102785e+05, -2.239779800095222e+05, -2.239285209291245e+05, -2.238788045346351e+05, - -2.238288325738279e+05, -2.237786067769396e+05, -2.237281288569077e+05, -2.236774005095983e+05, -2.236264234140377e+05, - -2.235751992326345e+05, -2.235237296113999e+05, -2.234720161801651e+05, -2.234200605527929e+05, -2.233678643273883e+05, - -2.233154290865038e+05, -2.232627563973427e+05, -2.232098478119577e+05, -2.231567048674473e+05, -2.231033290861491e+05, - -2.230497219758280e+05, -2.229958850298646e+05, -2.229418197274381e+05, -2.228875275337074e+05, -2.228330098999883e+05, - -2.227782682639285e+05, -2.227233040496813e+05, -2.226681186680729e+05, -2.226127135167712e+05, -2.225570899804490e+05, - -2.225012494309446e+05, -2.224451932274239e+05, -2.223889227165342e+05, -2.223324392325591e+05, -2.222757440975730e+05, - -2.222188386215847e+05, -2.221617241026915e+05, -2.221044018272184e+05, -2.220468730698641e+05, -2.219891390938417e+05, - -2.219312011510143e+05, -2.218730604820345e+05, -2.218147183164760e+05, -2.217561758729686e+05, -2.216974343593262e+05, - -2.216384949726753e+05, -2.215793588995837e+05, -2.215200273161818e+05, -2.214605013882873e+05, -2.214007822715266e+05, - -2.213408711114518e+05, -2.212807690436597e+05, -2.212204771939072e+05, -2.211599966782242e+05, -2.210993286030277e+05, - -2.210384740652315e+05, -2.209774341523543e+05, -2.209162099426295e+05, -2.208548025051086e+05, -2.207932128997681e+05, - -2.207314421776104e+05, -2.206694913807666e+05, -2.206073615425965e+05, -2.205450536877852e+05, -2.204825688324442e+05, - -2.204199079842042e+05, -2.203570721423098e+05, -2.202940622977146e+05, -2.202308794331710e+05, -2.201675245233228e+05, - -2.201039985347922e+05, -2.200403024262705e+05, -2.199764371486038e+05, -2.199124036448777e+05, -2.198482028505041e+05, - -2.197838356933027e+05, -2.197193030935843e+05, -2.196546059642319e+05, -2.195897452107797e+05, -2.195247217314942e+05, - -2.194595364174492e+05, -2.193941901526050e+05, -2.193286838138847e+05, -2.192630182712449e+05, -2.191971943877552e+05, - -2.191312130196661e+05, -2.190650750164847e+05, -2.189987812210434e+05, -2.189323324695694e+05, -2.188657295917561e+05, - -2.187989734108288e+05, -2.187320647436144e+05, -2.186650044006058e+05, -2.185977931860272e+05, -2.185304318979016e+05, - -2.184629213281109e+05, -2.183952622624623e+05, -2.183274554807479e+05, -2.182595017568076e+05, -2.181914018585893e+05, - -2.181231565482085e+05, -2.180547665820080e+05, -2.179862327106161e+05, -2.179175556790025e+05, -2.178487362265387e+05, - -2.177797750870506e+05, -2.177106729888759e+05, -2.176414306549192e+05, -2.175720488027033e+05, -2.175025281444271e+05, - -2.174328693870137e+05, -2.173630732321655e+05, -2.172931403764147e+05, -2.172230715111735e+05, -2.171528673227861e+05, - -2.170825284925757e+05, -2.170120556968956e+05, -2.169414496071764e+05, -2.168707108899743e+05, -2.167998402070171e+05, - -2.167288382152539e+05, -2.166577055668968e+05, -2.165864429094699e+05, -2.165150508858524e+05, -2.164435301343241e+05, - -2.163718812886078e+05, -2.163001049779147e+05, -2.162282018269856e+05, -2.161561724561331e+05, -2.160840174812852e+05, - -2.160117375140241e+05, -2.159393331616301e+05, -2.158668050271187e+05, -2.157941537092835e+05, -2.157213798027320e+05, - -2.156484838979288e+05, -2.155754665812313e+05, -2.155023284349279e+05, -2.154290700372769e+05, -2.153556919625423e+05, - -2.152821947810321e+05, -2.152085790591323e+05, -2.151348453593454e+05, -2.150609942403249e+05, -2.149870262569083e+05, - -2.149129419601560e+05, -2.148387418973815e+05, -2.147644266121878e+05, -2.146899966444995e+05, -2.146154525305987e+05, - -2.145407948031533e+05, -2.144660239912517e+05, -2.143911406204368e+05, -2.143161452127347e+05, -2.142410382866865e+05, - -2.141658203573807e+05, -2.140904919364823e+05, -2.140150535322647e+05, -2.139395056496378e+05, -2.138638487901785e+05, - -2.137880834521609e+05, -2.137122101305832e+05, -2.136362293171984e+05, -2.135601415005413e+05, -2.134839471659572e+05, - -2.134076467956291e+05, -2.133312408686058e+05, -2.132547298608279e+05, -2.131781142451564e+05, -2.131013944913974e+05, - -2.130245710663296e+05, -2.129476444337293e+05, -2.128706150543975e+05, -2.127934833861833e+05, -2.127162498840110e+05, - -2.126389149999036e+05, -2.125614791830087e+05, -2.124839428796209e+05, -2.124063065332077e+05, -2.123285705844333e+05 - }, - { - 2.972594954801246e+04, 2.796623014077302e+04, 2.617900356677562e+04, 2.436305301886391e+04, 2.251707102301853e+04, - 2.063964987528787e+04, 1.872927074951303e+04, 1.678429124073834e+04, 1.480293106558801e+04, 1.278325557374901e+04, - 1.072315664982916e+04, 8.620330484747921e+03, 6.472251569345648e+03, 4.276142099464796e+03, 2.028935769128356e+03, - -2.727653507731169e+02, -2.632742521175590e+03, -5.055222800138918e+03, -7.544955106878785e+03, -1.010730365031195e+04, - -1.274836377280847e+04, -1.547510707361347e+04, -1.829556527788507e+04, -2.121906611463945e+04, -2.425654011829664e+04, - -2.742092586235540e+04, -3.072771452810911e+04, -3.419569609407177e+04, -3.784800491859678e+04, -4.171362279519073e+04, - -4.582960546195225e+04, -5.024449979531932e+04, -5.502381716429998e+04, -6.025927180883945e+04, -6.608543565914663e+04, - -7.271243086021869e+04, -8.049782872231257e+04, -9.013169814822206e+04, -1.032302907745508e+05, -1.247775664938363e+05, - -1.561571239794791e+05, -1.699628442228861e+05, -1.767359023504485e+05, -1.812036424933819e+05, -1.845425635436793e+05, - -1.872142257396880e+05, -1.894449894478637e+05, -1.913622703867281e+05, -1.930448327012898e+05, -1.945447624685436e+05, - -1.958982993563433e+05, -1.971316800154793e+05, -1.982645174295258e+05, -1.993118658297764e+05, -2.002855399824139e+05, - -2.011949897778662e+05, -2.020478983380477e+05, -2.028506020901831e+05, -2.036083927073032e+05, -2.043257385949272e+05, - -2.050064503200775e+05, -2.056538061828951e+05, -2.062706489321038e+05, -2.068594612457071e+05, -2.074224253525180e+05, - -2.079614706482680e+05, -2.084783121103325e+05, -2.089744815792348e+05, -2.094513534515760e+05, -2.099101659514772e+05, - -2.103520388719072e+05, -2.107779884735384e+05, -2.111889400766186e+05, -2.115857387665355e+05, -2.119691585462839e+05, - -2.123399102018302e+05, -2.126986480942694e+05, -2.130459760519479e+05, -2.133824525036996e+05, -2.137085949689185e+05, - -2.140248839999261e+05, -2.143317666557912e+05, -2.146296595736016e+05, -2.149189516924763e+05, -2.152000066768625e+05, - -2.154731650784695e+05, -2.157387462702586e+05, -2.159970501809720e+05, -2.162483588545887e+05, -2.164929378556467e+05, - -2.167310375384880e+05, -2.169628941960378e+05, -2.171887311016646e+05, -2.174087594559124e+05, -2.176231792483886e+05, - -2.178321800438212e+05, -2.180359417001801e+05, -2.182346350258165e+05, -2.184284223817597e+05, -2.186174582345808e+05, - -2.188018896646334e+05, -2.189818568339346e+05, -2.191574934174800e+05, -2.193289270013763e+05, -2.194962794508150e+05, - -2.196596672505909e+05, -2.198192018205917e+05, -2.199749898084364e+05, -2.201271333612237e+05, -2.202757303781545e+05, - -2.204208747456247e+05, -2.205626565562275e+05, -2.207011623129708e+05, -2.208364751198920e+05, -2.209686748601430e+05, - -2.210978383625227e+05, -2.212240395573438e+05, -2.213473496224459e+05, -2.214678371200877e+05, -2.215855681254039e+05, - -2.217006063470337e+05, -2.218130132404898e+05, -2.219228481147892e+05, -2.220301682328171e+05, -2.221350289058635e+05, - -2.222374835829473e+05, -2.223375839377696e+05, -2.224353799469622e+05, -2.225309199625158e+05, -2.226242506949164e+05, - -2.227154175641763e+05, -2.228044644116703e+05, -2.228914337588981e+05, -2.229763668163632e+05, -2.230593035577424e+05, - -2.231402827396112e+05, -2.232193419716609e+05, -2.232965177571566e+05, -2.233718455367236e+05, -2.234453597299703e+05, - -2.235170937750784e+05, -2.235870801664734e+05, -2.236553504906902e+05, -2.237219354605362e+05, -2.237868649476470e+05, - -2.238501680135240e+05, -2.239118729391442e+05, -2.239720072532127e+05, -2.240305977584186e+05, -2.240876705599364e+05, - -2.241432510861199e+05, -2.241973641145408e+05, -2.242500337938929e+05, -2.243012836655249e+05, -2.243511366840457e+05, - -2.243996152391101e+05, -2.244467411659660e+05, -2.244925357765316e+05, -2.245370198672290e+05, -2.245802137391666e+05, - -2.246221372131942e+05, -2.246628096454624e+05, -2.247022499421322e+05, -2.247404765735008e+05, -2.247775075875681e+05, - -2.248133606230771e+05, -2.248480529220435e+05, -2.248816013418075e+05, -2.249140223666260e+05, -2.249453321188208e+05, - -2.249755463632951e+05, -2.250046805430723e+05, -2.250327497509245e+05, -2.250597687648611e+05, -2.250857520507971e+05, - -2.251107137714554e+05, -2.251346677949510e+05, -2.251576277030670e+05, -2.251796067992415e+05, -2.252006181162716e+05, - -2.252206744237517e+05, -2.252397882352497e+05, -2.252579718152442e+05, -2.252752371858167e+05, -2.252915961331267e+05, - -2.253070602136607e+05, -2.253216407602793e+05, -2.253353488880583e+05, -2.253481954999429e+05, -2.253601912922135e+05, - -2.253713467597759e+05, -2.253816722012798e+05, -2.253911777240747e+05, -2.253998732490077e+05, -2.254077685150692e+05, - -2.254148730838938e+05, -2.254211963441200e+05, -2.254267475156153e+05, -2.254315356535725e+05, -2.254355696524773e+05, - -2.254388582499610e+05, -2.254414100305302e+05, -2.254432334291904e+05, -2.254443367349601e+05, -2.254447280942771e+05, - -2.254444155143110e+05, -2.254434068661729e+05, -2.254417098880359e+05, -2.254393321881637e+05, -2.254362812478530e+05, - -2.254325644242895e+05, -2.254281889533275e+05, -2.254231619521866e+05, -2.254174904220754e+05, -2.254111812507422e+05, - -2.254042412149530e+05, -2.253966769829036e+05, -2.253884951165642e+05, -2.253797020739600e+05, -2.253703042113927e+05, - -2.253603077855977e+05, -2.253497189558481e+05, -2.253385437860011e+05, -2.253267882464870e+05, -2.253144582162524e+05, - -2.253015594846477e+05, -2.252880977631308e+05, -2.252740786484462e+05, -2.252595076810672e+05, -2.252443903098886e+05, - -2.252287319029456e+05, -2.252125377490302e+05, -2.251958130592674e+05, -2.251785629686505e+05, -2.251607925375370e+05, - -2.251425067531143e+05, -2.251237105308178e+05, -2.251044087157258e+05, -2.250846060839112e+05, -2.250643073437684e+05, - -2.250435171372990e+05, -2.250222400413778e+05, -2.250004805689779e+05, -2.249782431703719e+05, -2.249555322343064e+05, - -2.249323520891438e+05, -2.249087070039812e+05, -2.248846011897439e+05, -2.248600388002463e+05, -2.248350239332400e+05, - -2.248095606314284e+05, -2.247836528834604e+05, -2.247573046249046e+05, -2.247305197391975e+05, -2.247033020585729e+05, - -2.246756553649690e+05, -2.246475833909163e+05, -2.246190898204058e+05, -2.245901782897357e+05, -2.245608523883434e+05, - -2.245311156596152e+05, -2.245009716016829e+05, -2.244704236681977e+05, -2.244394752690914e+05, -2.244081297713210e+05, - -2.243763904995959e+05, -2.243442607370883e+05, -2.243117437261322e+05, -2.242788426689061e+05, -2.242455607281000e+05, - -2.242119010275693e+05, -2.241778666529761e+05, -2.241434606524154e+05, -2.241086860370301e+05, -2.240735457816133e+05, - -2.240380428251943e+05, -2.240021800716190e+05, -2.239659603901157e+05, -2.239293866158452e+05, -2.238924615504480e+05, - -2.238551879625747e+05, -2.238175685884068e+05, -2.237796061321683e+05, -2.237413032666270e+05, -2.237026626335847e+05, - -2.236636868443596e+05, -2.236243784802570e+05, -2.235847400930339e+05, -2.235447742053508e+05, -2.235044833112187e+05, - -2.234638698764335e+05, -2.234229363390062e+05, -2.233816851095821e+05, -2.233401185718523e+05, -2.232982390829583e+05, - -2.232560489738888e+05, -2.232135505498686e+05, -2.231707460907403e+05, -2.231276378513386e+05, -2.230842280618604e+05, - -2.230405189282223e+05, -2.229965126324178e+05, -2.229522113328641e+05, -2.229076171647418e+05, -2.228627322403346e+05, - -2.228175586493539e+05, -2.227720984592644e+05, -2.227263537156016e+05, -2.226803264422819e+05, -2.226340186419112e+05, - -2.225874322960837e+05, -2.225405693656771e+05, -2.224934317911443e+05, -2.224460214927983e+05, -2.223983403710900e+05, - -2.223503903068863e+05, -2.223021731617394e+05, -2.222536907781511e+05, -2.222049449798364e+05, -2.221559375719781e+05, - -2.221066703414797e+05, -2.220571450572134e+05, -2.220073634702640e+05, -2.219573273141672e+05, -2.219070383051472e+05, - -2.218564981423463e+05, -2.218057085080532e+05, -2.217546710679274e+05, -2.217033874712180e+05, -2.216518593509811e+05, - -2.216000883242930e+05, -2.215480759924582e+05, -2.214958239412159e+05, -2.214433337409433e+05, -2.213906069468544e+05, - -2.213376450991939e+05, -2.212844497234341e+05, -2.212310223304607e+05, -2.211773644167611e+05, -2.211234774646084e+05, - -2.210693629422414e+05, -2.210150223040419e+05, -2.209604569907114e+05, -2.209056684294407e+05, -2.208506580340825e+05, - -2.207954272053147e+05, -2.207399773308078e+05, -2.206843097853850e+05, -2.206284259311803e+05, -2.205723271177974e+05, - -2.205160146824622e+05, -2.204594899501753e+05, -2.204027542338609e+05, -2.203458088345155e+05, -2.202886550413508e+05, - -2.202312941319367e+05, -2.201737273723440e+05, -2.201159560172802e+05, -2.200579813102282e+05, -2.199998044835776e+05, - -2.199414267587595e+05, -2.198828493463765e+05, -2.198240734463304e+05, -2.197651002479476e+05, -2.197059309301063e+05, - -2.196465666613567e+05, -2.195870086000439e+05, -2.195272578944244e+05, -2.194673156827872e+05, -2.194071830935662e+05, - -2.193468612454556e+05, -2.192863512475227e+05, -2.192256541993170e+05, -2.191647711909814e+05, -2.191037033033571e+05, - -2.190424516080927e+05, -2.189810171677467e+05, -2.189194010358902e+05, -2.188576042572105e+05, -2.187956278676089e+05, - -2.187334728942999e+05, -2.186711403559107e+05, -2.186086312625739e+05, -2.185459466160240e+05, -2.184830874096900e+05, - -2.184200546287883e+05, -2.183568492504113e+05, -2.182934722436198e+05, -2.182299245695288e+05, -2.181662071813950e+05, - -2.181023210247038e+05, -2.180382670372517e+05, -2.179740461492323e+05, -2.179096592833162e+05, -2.178451073547340e+05, - -2.177803912713566e+05, -2.177155119337715e+05, -2.176504702353633e+05, -2.175852670623918e+05, -2.175199032940632e+05, - -2.174543798026099e+05, -2.173886974533616e+05, -2.173228571048182e+05, -2.172568596087237e+05, -2.171907058101352e+05, - -2.171243965474936e+05, -2.170579326526930e+05, -2.169913149511480e+05, -2.169245442618635e+05, -2.168576213974971e+05, - -2.167905471644285e+05, -2.167233223628222e+05, -2.166559477866918e+05, -2.165884242239633e+05, -2.165207524565369e+05, - -2.164529332603502e+05, -2.163849674054355e+05, -2.163168556559827e+05, -2.162485987703975e+05, -2.161801975013600e+05, - -2.161116525958812e+05, -2.160429647953621e+05, -2.159741348356475e+05, -2.159051634470827e+05, -2.158360513545690e+05, - -2.157667992776167e+05, -2.156974079303998e+05, -2.156278780218065e+05, -2.155582102554933e+05, -2.154884053299361e+05, - -2.154184639384816e+05, -2.153483867693953e+05, -2.152781745059147e+05, -2.152078278262947e+05, -2.151373474038582e+05, - -2.150667339070430e+05, -2.149959879994497e+05, -2.149251103398871e+05, -2.148541015824214e+05, -2.147829623764177e+05, - -2.147116933665870e+05, -2.146402951930306e+05, -2.145687684912851e+05, -2.144971138923631e+05, -2.144253320227989e+05, - -2.143534235046886e+05, -2.142813889557334e+05, -2.142092289892806e+05, -2.141369442143649e+05, -2.140645352357482e+05, - -2.139920026539584e+05, -2.139193470653319e+05, -2.138465690620507e+05, -2.137736692321796e+05, -2.137006481597078e+05, - -2.136275064245834e+05, -2.135542446027521e+05, -2.134808632661943e+05, -2.134073629829598e+05, -2.133337443172056e+05, - -2.132600078292306e+05, -2.131861540755115e+05, -2.131121836087353e+05, -2.130380969778368e+05, -2.129638947280296e+05, - -2.128895774008421e+05, -2.128151455341494e+05, -2.127405996622065e+05, -2.126659403156796e+05, -2.125911680216805e+05, - -2.125162833037961e+05, -2.124412866821208e+05, -2.123661786732879e+05, -2.122909597904989e+05, -2.122156305435556e+05, - -2.121401914388882e+05, -2.120646429795867e+05, -2.119889856654293e+05, -2.119132199929112e+05, -2.118373464552745e+05, - -2.117613655425342e+05, -2.116852777415103e+05, -2.116090835358508e+05, -2.115327834060629e+05, -2.114563778295381e+05, - -2.113798672805794e+05, -2.113032522304292e+05, -2.112265331472942e+05, -2.111497104963711e+05, -2.110727847398737e+05, - -2.109957563370581e+05, -2.109186257442463e+05, -2.108413934148537e+05, -2.107640597994118e+05, -2.106866253455920e+05 - }, - { - 3.060452770503346e+04, 2.885764867456725e+04, 2.708385016415249e+04, 2.528196200844651e+04, 2.345072842195135e+04, - 2.158879914645084e+04, 1.969471939347908e+04, 1.776691837334579e+04, 1.580369616406083e+04, 1.380320861670236e+04, - 1.176344992788196e+04, 9.682232425845059e+03, 7.557163008703114e+03, 5.385615535628606e+03, 3.164698293662394e+03, - 8.912154305207096e+02, -1.438379061836557e+03, -3.828036634298865e+03, -6.282181105410697e+03, -8.805790332379658e+03, - -1.140449675690542e+04, -1.408471237711608e+04, -1.685378571033465e+04, -1.972020120715841e+04, -2.269383581640791e+04, - -2.578629372855727e+04, -2.901134997931415e+04, -3.238554869760952e+04, -3.592902595536263e+04, -3.966666754420035e+04, - -4.362978072414679e+04, -4.785858272112717e+04, -5.240604041609593e+04, -5.734405623349637e+04, -6.277397395368030e+04, - -6.884563409214758e+04, -7.579494437763091e+04, -8.402631961598818e+04, -9.431934884694619e+04, -1.084167096244107e+05, - -1.304178767621079e+05, -1.546880094246577e+05, -1.668808157459768e+05, -1.735673356865617e+05, -1.781089486152092e+05, - -1.815387330030774e+05, -1.842941171975480e+05, -1.865981176235160e+05, -1.885789305472508e+05, -1.903167989765897e+05, - -1.918652176310697e+05, -1.932616111781224e+05, -1.945331769115965e+05, -1.957002983015589e+05, -1.967786471972959e+05, - -1.977805353601950e+05, -1.987158149982058e+05, -1.995924971813974e+05, -2.004171876493014e+05, -2.011954009112663e+05, - -2.019317911455453e+05, -2.026303249407080e+05, -2.032944125756675e+05, -2.039270092159100e+05, -2.045306939319577e+05, - -2.051077321310240e+05, -2.056601254189667e+05, -2.061896518208942e+05, -2.066978985236553e+05, -2.071862887578487e+05, - -2.076561040427987e+05, -2.081085027295813e+05, -2.085445355638403e+05, -2.089651588306037e+05, -2.093712455228280e+05, - -2.097635948835599e+05, -2.101429406009804e+05, -2.105099578808417e+05, -2.108652695780101e+05, -2.112094515351528e+05, - -2.115430372498903e+05, -2.118665219704396e+05, -2.121803663026430e+05, -2.124849993974596e+05, -2.127808217767541e+05, - -2.130682078460434e+05, -2.133475081353071e+05, -2.136190513027623e+05, -2.138831459313242e+05, -2.141400821431878e+05, - -2.143901330543565e+05, -2.146335560879250e+05, -2.148705941623805e+05, -2.151014767690081e+05, -2.153264209506747e+05, - -2.155456321926853e+05, -2.157593052350639e+05, -2.159676248144785e+05, -2.161707663430226e+05, -2.163688965302230e+05, - -2.165621739538905e+05, -2.167507495848060e+05, -2.169347672696547e+05, -2.171143641761469e+05, -2.172896712038307e+05, - -2.174608133637266e+05, -2.176279101295868e+05, -2.177910757632906e+05, -2.179504196166286e+05, -2.181060464115101e+05, - -2.182580565004129e+05, -2.184065461087323e+05, -2.185516075605147e+05, -2.186933294889262e+05, -2.188317970326811e+05, - -2.189670920195365e+05, -2.190992931378641e+05, -2.192284760972172e+05, -2.193547137787293e+05, -2.194780763761041e+05, - -2.195986315279023e+05, -2.197164444417559e+05, -2.198315780110917e+05, -2.199440929249116e+05, -2.200540477711044e+05, - -2.201614991337559e+05, -2.202665016861943e+05, -2.203691082798426e+05, -2.204693700223563e+05, -2.205673362900737e+05, - -2.206630550005869e+05, -2.207565724420382e+05, -2.208479334710300e+05, -2.209371815416892e+05, -2.210243587819722e+05, - -2.211095060214295e+05, -2.211926628629147e+05, -2.212738677275078e+05, -2.213531579018930e+05, -2.214305695833658e+05, - -2.215061379226200e+05, -2.215798970644299e+05, -2.216518801863661e+05, -2.217221195356472e+05, -2.217906464642423e+05, - -2.218574914623161e+05, -2.219226841901140e+05, -2.219862535083759e+05, -2.220482275073530e+05, -2.221086335345106e+05, - -2.221674982209842e+05, -2.222248475068578e+05, -2.222807066640544e+05, -2.223351003243354e+05, -2.223880524963824e+05, - -2.224395865831363e+05, -2.224897254137321e+05, -2.225384912543593e+05, -2.225859058284281e+05, -2.226319903353679e+05, - -2.226767654670227e+05, -2.227202514242131e+05, -2.227624679324508e+05, -2.228034342570302e+05, -2.228431692175132e+05, - -2.228816912016438e+05, -2.229190181726124e+05, -2.229551677066592e+05, -2.229901569677874e+05, -2.230240027450946e+05, - -2.230567214577495e+05, -2.230883291659948e+05, -2.231188415817356e+05, -2.231482740787384e+05, -2.231766417024538e+05, - -2.232039591794804e+05, -2.232302409266872e+05, -2.232555010600063e+05, -2.232797534029121e+05, -2.233030114946021e+05, - -2.233252885978880e+05, -2.233465977068117e+05, -2.233669515539978e+05, -2.233863626177529e+05, -2.234048431289231e+05, - -2.234224050775176e+05, -2.234390602191109e+05, -2.234548200810293e+05, -2.234696959683328e+05, -2.234836989696008e+05, - -2.234968399625245e+05, -2.235091296193232e+05, -2.235205784119801e+05, -2.235311966173146e+05, -2.235409943218883e+05, - -2.235499814267610e+05, -2.235581676520930e+05, -2.235655625416034e+05, -2.235721754668952e+05, -2.235780156316404e+05, - -2.235830920756409e+05, -2.235874136787649e+05, -2.235909891647646e+05, -2.235938271049771e+05, -2.235959359219183e+05, - -2.235973238927669e+05, -2.235979991527474e+05, -2.235979696984136e+05, -2.235972433908366e+05, -2.235958279586986e+05, - -2.235937310013018e+05, -2.235909599914868e+05, -2.235875222784722e+05, -2.235834250906086e+05, -2.235786755380608e+05, - -2.235732806154127e+05, -2.235672472041988e+05, -2.235605820753672e+05, -2.235532918916750e+05, -2.235453832100181e+05, - -2.235368624836984e+05, -2.235277360646270e+05, -2.235180102054742e+05, -2.235076910617547e+05, -2.234967846938650e+05, - -2.234852970690598e+05, -2.234732340720753e+05, -2.234606014730392e+05, -2.234474049790915e+05, -2.234336502037172e+05, - -2.234193426764147e+05, -2.234044878443881e+05, -2.233890910741967e+05, -2.233731576533628e+05, -2.233566927919370e+05, - -2.233397016240298e+05, -2.233221892092967e+05, -2.233041605343963e+05, -2.232856205144050e+05, -2.232665739942009e+05, - -2.232470257498112e+05, -2.232269804897321e+05, -2.232064428562110e+05, -2.231854174265014e+05, -2.231639087140867e+05, - -2.231419211698772e+05, -2.231194591833741e+05, -2.230965270838105e+05, -2.230731291412664e+05, -2.230492695677518e+05, - -2.230249525182717e+05, -2.230001820918612e+05, -2.229749623326027e+05, -2.229492972306120e+05, -2.229231907230104e+05, - -2.228966466948687e+05, -2.228696689801322e+05, -2.228422613625268e+05, -2.228144275764411e+05, -2.227861713077916e+05, - -2.227574961948694e+05, -2.227284058291652e+05, -2.226989037561799e+05, -2.226689934762146e+05, -2.226386784451465e+05, - -2.226079620751835e+05, -2.225768477356083e+05, -2.225453387535024e+05, -2.225134384144559e+05, -2.224811499632635e+05, - -2.224484766046036e+05, -2.224154215037059e+05, -2.223819877870011e+05, -2.223481785427615e+05, -2.223139968217253e+05, - -2.222794456377106e+05, -2.222445279682123e+05, -2.222092467549935e+05, -2.221736049046578e+05, -2.221376052892150e+05, - -2.221012507466344e+05, -2.220645440813836e+05, -2.220274880649620e+05, -2.219900854364199e+05, -2.219523389028679e+05, - -2.219142511399768e+05, -2.218758247924686e+05, -2.218370624745939e+05, -2.217979667706072e+05, -2.217585402352245e+05, - -2.217187853940786e+05, -2.216787047441620e+05, -2.216383007542639e+05, -2.215975758653955e+05, -2.215565324912104e+05, - -2.215151730184161e+05, -2.214734998071765e+05, -2.214315151915075e+05, -2.213892214796665e+05, -2.213466209545330e+05, - -2.213037158739830e+05, -2.212605084712541e+05, -2.212170009553097e+05, -2.211731955111890e+05, -2.211290943003567e+05, - -2.210846994610422e+05, -2.210400131085757e+05, -2.209950373357161e+05, -2.209497742129740e+05, -2.209042257889287e+05, - -2.208583940905389e+05, -2.208122811234493e+05, -2.207658888722902e+05, -2.207192193009734e+05, -2.206722743529799e+05, - -2.206250559516471e+05, -2.205775660004468e+05, -2.205298063832612e+05, -2.204817789646517e+05, -2.204334855901251e+05, - -2.203849280863941e+05, -2.203361082616337e+05, -2.202870279057339e+05, -2.202376887905449e+05, -2.201880926701232e+05, - -2.201382412809699e+05, -2.200881363422657e+05, -2.200377795561015e+05, -2.199871726077080e+05, -2.199363171656772e+05, - -2.198852148821826e+05, -2.198338673931964e+05, -2.197822763187017e+05, -2.197304432629019e+05, -2.196783698144247e+05, - -2.196260575465275e+05, -2.195735080172932e+05, -2.195207227698289e+05, -2.194677033324569e+05, -2.194144512189037e+05, - -2.193609679284886e+05, -2.193072549463055e+05, -2.192533137434027e+05, -2.191991457769641e+05, -2.191447524904802e+05, - -2.190901353139219e+05, -2.190352956639096e+05, -2.189802349438804e+05, -2.189249545442515e+05, -2.188694558425828e+05, - -2.188137402037345e+05, -2.187578089800240e+05, -2.187016635113813e+05, -2.186453051254987e+05, -2.185887351379826e+05, - -2.185319548524991e+05, -2.184749655609185e+05, -2.184177685434584e+05, -2.183603650688263e+05, -2.183027563943540e+05, - -2.182449437661373e+05, -2.181869284191688e+05, -2.181287115774701e+05, -2.180702944542227e+05, -2.180116782518952e+05, - -2.179528641623712e+05, -2.178938533670733e+05, -2.178346470370846e+05, -2.177752463332712e+05, -2.177156524064012e+05, - -2.176558663972604e+05, -2.175958894367704e+05, -2.175357226461005e+05, -2.174753671367817e+05, -2.174148240108169e+05, - -2.173540943607877e+05, -2.172931792699668e+05, -2.172320798124194e+05, -2.171707970531100e+05, -2.171093320480052e+05, - -2.170476858441755e+05, -2.169858594798937e+05, -2.169238539847352e+05, -2.168616703796755e+05, -2.167993096771858e+05, - -2.167367728813259e+05, -2.166740609878409e+05, -2.166111749842500e+05, -2.165481158499380e+05, -2.164848845562472e+05, - -2.164214820665625e+05, -2.163579093363989e+05, -2.162941673134886e+05, -2.162302569378663e+05, -2.161661791419489e+05, - -2.161019348506224e+05, -2.160375249813206e+05, -2.159729504441056e+05, -2.159082121417471e+05, -2.158433109697994e+05, - -2.157782478166816e+05, -2.157130235637485e+05, -2.156476390853703e+05, -2.155820952490030e+05, -2.155163929152639e+05, - -2.154505329380012e+05, -2.153845161643673e+05, -2.153183434348881e+05, -2.152520155835297e+05, -2.151855334377715e+05, - -2.151188978186693e+05, -2.150521095409241e+05, -2.149851694129467e+05, -2.149180782369235e+05, -2.148508368088788e+05, - -2.147834459187395e+05, -2.147159063503967e+05, -2.146482188817677e+05, -2.145803842848559e+05, -2.145124033258113e+05, - -2.144442767649891e+05, -2.143760053570094e+05, -2.143075898508146e+05, -2.142390309897248e+05, -2.141703295114955e+05, - -2.141014861483734e+05, -2.140325016271494e+05, -2.139633766692162e+05, -2.138941119906178e+05, -2.138247083021055e+05, - -2.137551663091876e+05, -2.136854867121831e+05, -2.136156702062707e+05, -2.135457174815414e+05, -2.134756292230459e+05, - -2.134054061108443e+05, -2.133350488200552e+05, -2.132645580209035e+05, -2.131939343787663e+05, -2.131231785542224e+05, - -2.130522912030949e+05, -2.129812729764991e+05, -2.129101245208883e+05, -2.128388464780952e+05, -2.127674394853791e+05, - -2.126959041754680e+05, -2.126242411765995e+05, -2.125524511125679e+05, -2.124805346027624e+05, -2.124084922622096e+05, - -2.123363247016134e+05, -2.122640325273992e+05, -2.121916163417475e+05, -2.121190767426404e+05, -2.120464143238951e+05, - -2.119736296752059e+05, -2.119007233821808e+05, -2.118276960263799e+05, -2.117545481853519e+05, -2.116812804326717e+05, - -2.116078933379765e+05, -2.115343874670020e+05, -2.114607633816165e+05, -2.113870216398599e+05, -2.113131627959744e+05, - -2.112391874004399e+05, -2.111650960000105e+05, -2.110908891377439e+05, -2.110165673530384e+05, -2.109421311816645e+05, - -2.108675811557960e+05, -2.107929178040435e+05, -2.107181416514869e+05, -2.106432532197052e+05, -2.105682530268081e+05, - -2.104931415874667e+05, -2.104179194129446e+05, -2.103425870111276e+05, -2.102671448865515e+05, -2.101915935404353e+05, - -2.101159334707062e+05, -2.100401651720314e+05, -2.099642891358450e+05, -2.098883058503758e+05, -2.098122158006776e+05, - -2.097360194686526e+05, -2.096597173330834e+05, -2.095833098696544e+05, -2.095067975509842e+05, -2.094301808466475e+05, - -2.093534602232032e+05, -2.092766361442200e+05, -2.091997090703021e+05, -2.091226794591132e+05, -2.090455477654020e+05 - }, - { - 3.148409496350826e+04, 2.974990140670785e+04, 2.798936172477989e+04, 2.620135048088747e+04, 2.438466137770494e+04, - 2.253799906255073e+04, 2.065996984031343e+04, 1.874907110910724e+04, 1.680367930122838e+04, 1.482203606153694e+04, - 1.280223234113405e+04, 1.074219000978629e+04, 8.639640500837666e+03, 6.492099885235937e+03, 4.296839622242658e+03, - 2.050852041082415e+03, -2.491906446043295e+02, -2.606985320308407e+03, -5.026656925879188e+03, -7.512829952063737e+03, - -1.007071585923938e+04, -1.270622091741495e+04, -1.542608052885585e+04, -1.823802830983753e+04, -2.115101139994786e+04, - -2.417546814898699e+04, -2.732369133393331e+04, -3.061031077179259e+04, -3.405294590370497e+04, -3.767310606085608e+04, - -4.149746070725717e+04, -4.555967922803351e+04, -4.990317777003571e+04, -5.458536981845427e+04, -5.968453080495763e+04, - -6.531147117204228e+04, -7.163067110762575e+04, -7.890155515166293e+04, -8.756633452739402e+04, -9.845042818220980e+04, - -1.131805767890373e+05, -1.339745910077702e+05, -1.531084683181901e+05, -1.640015869888854e+05, -1.705288932020451e+05, - -1.750963946442325e+05, -1.785903779178377e+05, -1.814140003270152e+05, -1.837816611573917e+05, -1.858197627966290e+05, - -1.876086891075030e+05, -1.892025980729760e+05, -1.906396605957737e+05, -1.919477654728830e+05, -1.931478963020005e+05, - -1.942562319692897e+05, -1.952855079030445e+05, -1.962459290646650e+05, -1.971458003650857e+05, -1.979919729727590e+05, - -1.987901672156376e+05, -1.995452107028527e+05, -2.002612169304330e+05, -2.009417212999540e+05, -2.015897861384269e+05, - -2.022080828043441e+05, -2.027989566177369e+05, -2.033644787498252e+05, -2.039064880952333e+05, -2.044266253651508e+05, - -2.049263610786598e+05, -2.054070187228765e+05, -2.058697940544325e+05, -2.063157712937875e+05, -2.067459367982780e+05, - -2.071611906745681e+05, -2.075623566955646e+05, -2.079501908132610e+05, -2.083253885018782e+05, -2.086885911209916e+05, - -2.090403914531776e+05, -2.093813385427996e+05, -2.097119419403019e+05, -2.100326754384825e+05, -2.103439803727765e+05, - -2.106462685458304e+05, -2.109399248270667e+05, -2.112253094700532e+05, -2.115027601839987e+05, -2.117725939903093e+05, - -2.120351088906447e+05, -2.122905853691753e+05, -2.125392877485745e+05, -2.127814654166300e+05, -2.130173539381154e+05, - -2.132471760646362e+05, -2.134711426535517e+05, -2.136894535056757e+05, -2.139022981302596e+05, -2.141098564447394e+05, - -2.143122994158394e+05, -2.145097896478498e+05, -2.147024819232408e+05, -2.148905237001827e+05, -2.150740555710403e+05, - -2.152532116854734e+05, -2.154281201413698e+05, -2.155989033465151e+05, -2.157656783535885e+05, -2.159285571708173e+05, - -2.160876470503811e+05, -2.162430507564579e+05, -2.163948668146102e+05, -2.165431897440492e+05, -2.166881102741726e+05, - -2.168297155466361e+05, -2.169680893041015e+05, -2.171033120667037e+05, -2.172354612971839e+05, -2.173646115555506e+05, - -2.174908346440557e+05, -2.176141997432051e+05, -2.177347735394575e+05, -2.178526203452215e+05, -2.179678022116928e+05, - -2.180803790350422e+05, -2.181904086566755e+05, -2.182979469604999e+05, -2.184030479604976e+05, -2.185057638821606e+05, - -2.186061451501235e+05, -2.187042407600837e+05, -2.188000979814440e+05, -2.188937626289521e+05, -2.189852790959978e+05, - -2.190746903912301e+05, -2.191620382117195e+05, -2.192473629927188e+05, -2.193307039588938e+05, -2.194120991729653e+05, - -2.194915855819149e+05, -2.195691990609022e+05, -2.196449744550269e+05, -2.197189456190619e+05, -2.197911454552760e+05, - -2.198616059494533e+05, -2.199303582052128e+05, -2.199974324767265e+05, -2.200628581999179e+05, -2.201266640222331e+05, - -2.201888778310586e+05, -2.202495267808562e+05, -2.203086373190919e+05, -2.203662352130585e+05, -2.204223455652360e+05, - -2.204769928468642e+05, -2.205302009180601e+05, -2.205819930404990e+05, -2.206323919040232e+05, -2.206814196437443e+05, - -2.207290978588306e+05, -2.207754476296433e+05, -2.208204895286148e+05, -2.208642436607186e+05, -2.209067296418712e+05, - -2.209479666388384e+05, -2.209879733771344e+05, -2.210267681547170e+05, -2.210643688551529e+05, -2.211007929602728e+05, - -2.211360575623397e+05, -2.211701793757611e+05, -2.212031747483510e+05, -2.212350596721783e+05, -2.212658497940060e+05, - -2.212955604253505e+05, -2.213242065521707e+05, -2.213518028442038e+05, -2.213783636639699e+05, -2.214039030754490e+05, - -2.214284348524534e+05, -2.214519724867039e+05, -2.214745291956252e+05, -2.214961179298677e+05, -2.215167513805709e+05, - -2.215364419863814e+05, -2.215552019402284e+05, -2.215730431958721e+05, -2.215899774742315e+05, -2.216060162695063e+05, - -2.216211708550891e+05, -2.216354522892889e+05, -2.216488714208676e+05, -2.216614388943949e+05, -2.216731651554329e+05, - -2.216840604555550e+05, -2.216941348572047e+05, -2.217033982384011e+05, -2.217118602972998e+05, -2.217195305566071e+05, - -2.217264183678629e+05, -2.217325329155893e+05, -2.217378832213116e+05, -2.217424781474603e+05, -2.217463264011536e+05, - -2.217494365378686e+05, -2.217518169649993e+05, -2.217534759453163e+05, -2.217544216003150e+05, -2.217546619134778e+05, - -2.217542047334308e+05, -2.217530577770181e+05, -2.217512286322808e+05, -2.217487247613569e+05, -2.217455535032958e+05, - -2.217417220767941e+05, -2.217372375828564e+05, -2.217321070073785e+05, -2.217263372236649e+05, -2.217199349948705e+05, - -2.217129069763801e+05, -2.217052597181225e+05, -2.216969996668194e+05, -2.216881331681781e+05, -2.216786664690226e+05, - -2.216686057193670e+05, -2.216579569819818e+05, -2.216467262049414e+05, -2.216349192665799e+05, -2.216225419493622e+05, - -2.216095999485317e+05, -2.215960988738840e+05, -2.215820442514893e+05, -2.215674415253780e+05, -2.215522960591766e+05, - -2.215366131377087e+05, -2.215203979685520e+05, -2.215036556835575e+05, -2.214863913403325e+05, -2.214686099236840e+05, - -2.214503163470306e+05, -2.214315154537769e+05, -2.214122120186551e+05, -2.213924107490366e+05, -2.213721162862088e+05, - -2.213513332066220e+05, -2.213300660231114e+05, -2.213083191860814e+05, -2.212860970846707e+05, -2.212634040478844e+05, - -2.212402443457030e+05, -2.212166221901638e+05, -2.211925417364172e+05, -2.211680070837618e+05, -2.211430222766513e+05, - -2.211175913056815e+05, -2.210917181085545e+05, -2.210654065710203e+05, -2.210386605277999e+05, -2.210114837634833e+05, - -2.209838800134109e+05, -2.209558529645351e+05, -2.209274062562627e+05, -2.208985434812779e+05, -2.208692681863469e+05, - -2.208395838731105e+05, -2.208094939988495e+05, -2.207790019772444e+05, -2.207481111791104e+05, -2.207168249331228e+05, - -2.206851465265222e+05, -2.206530792058090e+05, -2.206206261774203e+05, -2.205877906083932e+05, -2.205545756270167e+05, - -2.205209843234651e+05, -2.204870197504249e+05, -2.204526849237026e+05, -2.204179828228231e+05, -2.203829163916167e+05, - -2.203474885387922e+05, -2.203117021384981e+05, -2.202755600308774e+05, -2.202390650226013e+05, -2.202022198874054e+05, - -2.201650273666022e+05, -2.201274901695936e+05, -2.200896109743677e+05, -2.200513924279868e+05, -2.200128371470678e+05, - -2.199739477182510e+05, -2.199347266986600e+05, -2.198951766163561e+05, -2.198552999707775e+05, -2.198150992331766e+05, - -2.197745768470458e+05, -2.197337352285343e+05, -2.196925767668601e+05, -2.196511038247105e+05, -2.196093187386389e+05, - -2.195672238194518e+05, -2.195248213525880e+05, -2.194821135984928e+05, -2.194391027929845e+05, -2.193957911476134e+05, - -2.193521808500154e+05, -2.193082740642583e+05, -2.192640729311816e+05, -2.192195795687315e+05, -2.191747960722877e+05, - -2.191297245149870e+05, -2.190843669480383e+05, -2.190387254010339e+05, -2.189928018822553e+05, -2.189465983789713e+05, - -2.189001168577345e+05, -2.188533592646687e+05, -2.188063275257547e+05, -2.187590235471078e+05, -2.187114492152544e+05, - -2.186636063973993e+05, -2.186154969416928e+05, -2.185671226774893e+05, -2.185184854156037e+05, -2.184695869485637e+05, - -2.184204290508574e+05, -2.183710134791738e+05, -2.183213419726453e+05, -2.182714162530788e+05, -2.182212380251914e+05, - -2.181708089768325e+05, -2.181201307792101e+05, -2.180692050871105e+05, -2.180180335391127e+05, -2.179666177578022e+05, - -2.179149593499789e+05, -2.178630599068635e+05, -2.178109210042989e+05, -2.177585442029493e+05, -2.177059310484965e+05, - -2.176530830718300e+05, -2.176000017892402e+05, -2.175466887026007e+05, -2.174931452995549e+05, -2.174393730536939e+05, - -2.173853734247353e+05, -2.173311478586982e+05, -2.172766977880737e+05, -2.172220246319956e+05, -2.171671297964070e+05, - -2.171120146742222e+05, -2.170566806454911e+05, -2.170011290775558e+05, -2.169453613252087e+05, -2.168893787308442e+05, - -2.168331826246137e+05, -2.167767743245717e+05, -2.167201551368248e+05, -2.166633263556760e+05, -2.166062892637671e+05, - -2.165490451322191e+05, -2.164915952207710e+05, -2.164339407779155e+05, -2.163760830410338e+05, -2.163180232365268e+05, - -2.162597625799465e+05, -2.162013022761228e+05, -2.161426435192919e+05, -2.160837874932189e+05, -2.160247353713209e+05, - -2.159654883167891e+05, -2.159060474827058e+05, -2.158464140121636e+05, -2.157865890383810e+05, -2.157265736848142e+05, - -2.156663690652721e+05, -2.156059762840250e+05, -2.155453964359157e+05, -2.154846306064634e+05, -2.154236798719760e+05, - -2.153625452996473e+05, -2.153012279476642e+05, -2.152397288653092e+05, -2.151780490930566e+05, -2.151161896626746e+05, - -2.150541515973210e+05, -2.149919359116395e+05, -2.149295436118553e+05, -2.148669756958659e+05, -2.148042331533351e+05, - -2.147413169657839e+05, -2.146782281066785e+05, -2.146149675415196e+05, -2.145515362279290e+05, -2.144879351157361e+05, - -2.144241651470611e+05, -2.143602272564002e+05, -2.142961223707070e+05, -2.142318514094736e+05, -2.141674152848113e+05, - -2.141028149015300e+05, -2.140380511572143e+05, -2.139731249423035e+05, -2.139080371401650e+05, -2.138427886271698e+05, - -2.137773802727679e+05, -2.137118129395586e+05, -2.136460874833649e+05, -2.135802047533043e+05, -2.135141655918573e+05, - -2.134479708349371e+05, -2.133816213119596e+05, -2.133151178459085e+05, -2.132484612534034e+05, -2.131816523447653e+05, - -2.131146919240797e+05, -2.130475807892630e+05, -2.129803197321246e+05, -2.129129095384286e+05, -2.128453509879555e+05, - -2.127776448545651e+05, -2.127097919062531e+05, -2.126417929052133e+05, -2.125736486078931e+05, -2.125053597650544e+05, - -2.124369271218286e+05, -2.123683514177735e+05, -2.122996333869291e+05, -2.122307737578718e+05, -2.121617732537685e+05, - -2.120926325924314e+05, -2.120233524863703e+05, -2.119539336428443e+05, -2.118843767639125e+05, -2.118146825464893e+05, - -2.117448516823879e+05, -2.116748848583760e+05, -2.116047827562218e+05, -2.115345460527437e+05, -2.114641754198560e+05, - -2.113936715246212e+05, -2.113230350292900e+05, -2.112522665913541e+05, -2.111813668635860e+05, -2.111103364940888e+05, - -2.110391761263380e+05, -2.109678863992264e+05, -2.108964679471066e+05, -2.108249213998365e+05, -2.107532473828192e+05, - -2.106814465170450e+05, -2.106095194191352e+05, -2.105374667013809e+05, -2.104652889717841e+05, -2.103929868340977e+05, - -2.103205608878658e+05, -2.102480117284617e+05, -2.101753399471264e+05, -2.101025461310084e+05, -2.100296308632002e+05, - -2.099565947227750e+05, -2.098834382848254e+05, -2.098101621204985e+05, -2.097367667970319e+05, -2.096632528777902e+05, - -2.095896209222996e+05, -2.095158714862828e+05, -2.094420051216940e+05, -2.093680223767520e+05, -2.092939237959743e+05, - -2.092197099202090e+05, -2.091453812866725e+05, -2.090709384289746e+05, -2.089963818771570e+05, -2.089217121577221e+05, - -2.088469297936658e+05, -2.087720353045059e+05, -2.086970292063168e+05, -2.086219120117576e+05, -2.085466842301012e+05, - -2.084713463672667e+05, -2.083958989258470e+05, -2.083203424051378e+05, -2.082446773011690e+05, -2.081689041067276e+05, - -2.080930233113927e+05, -2.080170354015584e+05, -2.079409408604623e+05, -2.078647401682148e+05, -2.077884338018241e+05, - -2.077120222352226e+05, -2.076355059392954e+05, -2.075588853819043e+05, -2.074821610279139e+05, -2.074053333392182e+05 - }, - { - 3.236465025251212e+04, 3.064298992193791e+04, 2.889554290357461e+04, 2.712122666267634e+04, 2.531888229389799e+04, - 2.348726693538015e+04, 2.162504519297798e+04, 1.973077941040580e+04, 1.780291859338989e+04, 1.583978575248779e+04, - 1.383956338142184e+04, 1.180027672700998e+04, 9.719774427228858e+03, 7.595705997811842e+03, 5.425495521541719e+03, - 3.206310733857400e+03, 9.350264898333940e+02, -1.391818675028482e+03, -3.778074537527182e+03, -6.228041859875209e+03, - -8.746548516100738e+03, -1.133904272507667e+04, -1.401170825840093e+04, -1.677160819048128e+04, -1.962686616969719e+04, - -2.258689766740468e+04, -2.566270876646565e+04, -2.886728769840966e+04, -3.221612597716089e+04, -3.572792439548606e+04, - -3.942556841775985e+04, -4.333750650075929e+04, -4.749974859419069e+04, -5.195885160385341e+04, -5.677653716403548e+04, - -6.203713186448383e+04, -6.786014198881719e+04, -7.442269973512330e+04, -8.200197758301484e+04, -9.105838111926366e+04, - -1.023864239621372e+05, -1.172421540400939e+05, -1.358693352165405e+05, -1.514819288752615e+05, -1.612978777664606e+05, - -1.676196311045143e+05, -1.721724478792715e+05, -1.757045880986882e+05, -1.785801028038237e+05, -1.810008167884175e+05, - -1.830890519756711e+05, -1.849240406578697e+05, -1.865598455555291e+05, -1.880349192662736e+05, -1.893775473328190e+05, - -1.906091211703735e+05, -1.917461984017082e+05, -1.928018509088821e+05, -1.937865761343992e+05, -1.947089305341794e+05, - -1.955759805856946e+05, -1.963936306736843e+05, -1.971668658849070e+05, -1.978999347539765e+05, -1.985964888412479e+05, - -1.992596907611229e+05, -1.998922988065423e+05, -2.004967339763254e+05, -2.010751336071783e+05, -2.016293946926552e+05, - -2.021612091785431e+05, -2.026720929549084e+05, -2.031634098511848e+05, -2.036363916362559e+05, -2.040921547991300e+05, - -2.045317147158307e+05, -2.049559976792371e+05, -2.053658511700786e+05, -2.057620526712748e+05, -2.061453172687589e+05, - -2.065163042356771e+05, -2.068756227604027e+05, -2.072238369498566e+05, -2.075614702165255e+05, -2.078890091389799e+05, - -2.082069068706908e+05, -2.085155861597326e+05, -2.088154420320055e+05, -2.091068441824023e+05, -2.093901391116110e+05, - -2.096656520406266e+05, -2.099336886304004e+05, -2.101945365301364e+05, -2.104484667744887e+05, -2.106957350471412e+05, - -2.109365828259241e+05, -2.111712384226322e+05, -2.113999179290276e+05, -2.116228260790599e+05, -2.118401570360969e+05, - -2.120520951129000e+05, -2.122588154311507e+05, -2.124604845265445e+05, -2.126572609047721e+05, -2.128492955531144e+05, - -2.130367324118487e+05, -2.132197088092019e+05, -2.133983558631963e+05, -2.135727988533671e+05, -2.137431575650301e+05, - -2.139095466085028e+05, -2.140720757154285e+05, -2.142308500141602e+05, -2.143859702859480e+05, -2.145375332035189e+05, - -2.146856315534821e+05, -2.148303544438571e+05, -2.149717874979058e+05, -2.151100130353373e+05, -2.152451102418623e+05, - -2.153771553279809e+05, -2.155062216778196e+05, -2.156323799887493e+05, -2.157556984024688e+05, -2.158762426281654e+05, - -2.159940760583250e+05, -2.161092598777155e+05, -2.162218531676099e+05, -2.163319130045269e+05, -2.164394945478581e+05, - -2.165446510569516e+05, -2.166474341870861e+05, -2.167478938075035e+05, -2.168460782148383e+05, -2.169420341830951e+05, - -2.170358070098884e+05, -2.171274405910858e+05, -2.172169774757810e+05, -2.173044589216561e+05, -2.173899249475171e+05, - -2.174734143831652e+05, -2.175549649167720e+05, -2.176346131399035e+05, -2.177123945903314e+05, -2.177883437927630e+05, - -2.178624942976114e+05, -2.179348787179102e+05, -2.180055287644918e+05, -2.180744752795118e+05, -2.181417482684245e+05, - -2.182073769304879e+05, -2.182713896900743e+05, -2.183338142155267e+05, -2.183946774594049e+05, -2.184540056745619e+05, - -2.185118244407913e+05, -2.185681586880413e+05, -2.186230327186299e+05, -2.186764702200523e+05, -2.187284943191933e+05, - -2.187791275509892e+05, -2.188283919110981e+05, -2.188763088653009e+05, -2.189228993666931e+05, -2.189681838721740e+05, - -2.190121823582753e+05, -2.190549143363539e+05, -2.190963988671860e+05, -2.191366545749846e+05, -2.191756996608724e+05, - -2.192135519158335e+05, -2.192502287331665e+05, -2.192857471204654e+05, -2.193201237111474e+05, -2.193533747755460e+05, - -2.193855162315970e+05, -2.194165636551232e+05, -2.194465322897490e+05, -2.194754370564503e+05, -2.195032925627585e+05, - -2.195301131116424e+05, -2.195559127100628e+05, -2.195807050772369e+05, -2.196045036526051e+05, -2.196273216035226e+05, - -2.196491718326884e+05, -2.196700669853158e+05, -2.196900194560593e+05, -2.197090413957117e+05, -2.197271447176677e+05, - -2.197443411041831e+05, -2.197606420124157e+05, -2.197760586802765e+05, -2.197906021320842e+05, -2.198042831840401e+05, - -2.198171124495221e+05, -2.198291003442148e+05, -2.198402570910723e+05, -2.198505927251253e+05, -2.198601170981390e+05, - -2.198688398831243e+05, -2.198767705787098e+05, -2.198839185133780e+05, -2.198902928495754e+05, -2.198959025876948e+05, - -2.199007565699363e+05, -2.199048634840570e+05, -2.199082318670060e+05, -2.199108701084510e+05, -2.199127864542030e+05, - -2.199139890095411e+05, -2.199144857424363e+05, -2.199142844866908e+05, -2.199133929449763e+05, -2.199118186917949e+05, - -2.199095691763510e+05, -2.199066517253424e+05, -2.199030735456756e+05, -2.198988417271039e+05, -2.198939632447901e+05, - -2.198884449618036e+05, -2.198822936315460e+05, -2.198755159001086e+05, -2.198681183085709e+05, -2.198601072952343e+05, - -2.198514891977967e+05, -2.198422702618901e+05, -2.198324566181569e+05, -2.198220543207175e+05, -2.198110693254666e+05, - -2.197995074977362e+05, -2.197873746141456e+05, -2.197746763644092e+05, -2.197614183530964e+05, -2.197476061013446e+05, - -2.197332450485311e+05, -2.197183405539035e+05, -2.197028978981653e+05, -2.196869222850277e+05, -2.196704188427162e+05, - -2.196533926254465e+05, -2.196358486148600e+05, -2.196177917214250e+05, -2.195992267858061e+05, -2.195801585801950e+05, - -2.195605918096174e+05, -2.195405311132024e+05, -2.195199810654214e+05, -2.194989461773027e+05, -2.194774308976128e+05, - -2.194554396140121e+05, -2.194329766541840e+05, -2.194100462869346e+05, -2.193866527232711e+05, -2.193628001174548e+05, - -2.193384925680247e+05, -2.193137341188069e+05, -2.192885287598914e+05, -2.192628804285957e+05, -2.192367930103985e+05, - -2.192102703398611e+05, -2.191833162015196e+05, -2.191559343307647e+05, -2.191281284146963e+05, -2.190999020929641e+05, - -2.190712589585871e+05, -2.190422025587565e+05, -2.190127363956188e+05, -2.189828639270457e+05, -2.189525885673855e+05, - -2.189219136881984e+05, -2.188908426189745e+05, -2.188593786478428e+05, -2.188275250222569e+05, -2.187952849496727e+05, - -2.187626615982084e+05, -2.187296580972933e+05, -2.186962775383008e+05, -2.186625229751698e+05, -2.186283974250135e+05, - -2.185939038687146e+05, -2.185590452515098e+05, -2.185238244835599e+05, -2.184882444405139e+05, -2.184523079640540e+05, - -2.184160178624359e+05, -2.183793769110161e+05, -2.183423878527700e+05, -2.183050533987950e+05, -2.182673762288118e+05, - -2.182293589916482e+05, -2.181910043057183e+05, -2.181523147594903e+05, -2.181132929119458e+05, -2.180739412930299e+05, - -2.180342624040941e+05, -2.179942587183267e+05, -2.179539326811823e+05, -2.179132867107946e+05, -2.178723231983876e+05, - -2.178310445086765e+05, -2.177894529802625e+05, -2.177475509260176e+05, -2.177053406334653e+05, -2.176628243651516e+05, - -2.176200043590127e+05, -2.175768828287314e+05, -2.175334619640899e+05, -2.174897439313174e+05, -2.174457308734262e+05, - -2.174014249105475e+05, -2.173568281402584e+05, -2.173119426379018e+05, -2.172667704569043e+05, -2.172213136290846e+05, - -2.171755741649580e+05, -2.171295540540371e+05, -2.170832552651237e+05, -2.170366797465994e+05, -2.169898294267070e+05, - -2.169427062138315e+05, -2.168953119967719e+05, -2.168476486450126e+05, -2.167997180089852e+05, -2.167515219203314e+05, - -2.167030621921549e+05, -2.166543406192758e+05, -2.166053589784768e+05, -2.165561190287428e+05, -2.165066225115035e+05, - -2.164568711508670e+05, -2.164068666538476e+05, -2.163566107105964e+05, -2.163061049946211e+05, -2.162553511630075e+05, - -2.162043508566348e+05, -2.161531057003855e+05, -2.161016173033579e+05, -2.160498872590680e+05, -2.159979171456516e+05, - -2.159457085260654e+05, -2.158932629482805e+05, -2.158405819454733e+05, -2.157876670362173e+05, -2.157345197246677e+05, - -2.156811415007455e+05, -2.156275338403158e+05, -2.155736982053662e+05, -2.155196360441823e+05, -2.154653487915178e+05, - -2.154108378687648e+05, -2.153561046841188e+05, -2.153011506327441e+05, -2.152459770969339e+05, -2.151905854462700e+05, - -2.151349770377776e+05, -2.150791532160809e+05, -2.150231153135541e+05, -2.149668646504689e+05, -2.149104025351442e+05, - -2.148537302640893e+05, -2.147968491221452e+05, -2.147397603826284e+05, -2.146824653074647e+05, -2.146249651473291e+05, - -2.145672611417774e+05, -2.145093545193796e+05, -2.144512464978499e+05, -2.143929382841739e+05, -2.143344310747361e+05, - -2.142757260554436e+05, -2.142168244018489e+05, -2.141577272792710e+05, -2.140984358429136e+05, -2.140389512379830e+05, - -2.139792745998044e+05, -2.139194070539328e+05, -2.138593497162701e+05, -2.137991036931714e+05, -2.137386700815562e+05, - -2.136780499690150e+05, -2.136172444339162e+05, -2.135562545455104e+05, -2.134950813640306e+05, -2.134337259407995e+05, - -2.133721893183239e+05, -2.133104725303957e+05, -2.132485766021895e+05, -2.131865025503583e+05, -2.131242513831277e+05, - -2.130618241003886e+05, -2.129992216937909e+05, -2.129364451468332e+05, -2.128734954349507e+05, -2.128103735256071e+05, - -2.127470803783782e+05, -2.126836169450381e+05, -2.126199841696470e+05, -2.125561829886301e+05, -2.124922143308639e+05, - -2.124280791177547e+05, -2.123637782633209e+05, -2.122993126742700e+05, -2.122346832500777e+05, -2.121698908830657e+05, - -2.121049364584756e+05, -2.120398208545463e+05, -2.119745449425843e+05, -2.119091095870424e+05, -2.118435156455856e+05, - -2.117777639691647e+05, -2.117118554020880e+05, -2.116457907820888e+05, -2.115795709403925e+05, -2.115131967017869e+05, - -2.114466688846868e+05, -2.113799883012004e+05, -2.113131557571930e+05, -2.112461720523526e+05, -2.111790379802515e+05, - -2.111117543284103e+05, -2.110443218783590e+05, -2.109767414056960e+05, -2.109090136801506e+05, -2.108411394656395e+05, - -2.107731195203298e+05, -2.107049545966914e+05, -2.106366454415571e+05, -2.105681927961792e+05, -2.104995973962829e+05, - -2.104308599721240e+05, -2.103619812485398e+05, -2.102929619450063e+05, -2.102238027756892e+05, -2.101545044494940e+05, - -2.100850676701231e+05, -2.100154931361218e+05, -2.099457815409295e+05, -2.098759335729327e+05, -2.098059499155091e+05, - -2.097358312470806e+05, -2.096655782411587e+05, -2.095951915663921e+05, -2.095246718866144e+05, -2.094540198608896e+05, - -2.093832361435585e+05, -2.093123213842812e+05, -2.092412762280864e+05, -2.091701013154116e+05, -2.090987972821467e+05, - -2.090273647596799e+05, -2.089558043749380e+05, -2.088841167504274e+05, -2.088123025042774e+05, -2.087403622502821e+05, - -2.086682965979383e+05, -2.085961061524868e+05, -2.085237915149525e+05, -2.084513532821828e+05, -2.083787920468861e+05, - -2.083061083976713e+05, -2.082333029190835e+05, -2.081603761916434e+05, -2.080873287918831e+05, -2.080141612923821e+05, - -2.079408742618056e+05, -2.078674682649371e+05, -2.077939438627157e+05, -2.077203016122702e+05, -2.076465420669549e+05, - -2.075726657763816e+05, -2.074986732864532e+05, -2.074245651393994e+05, -2.073503418738088e+05, -2.072760040246589e+05, - -2.072015521233527e+05, -2.071269866977456e+05, -2.070523082721813e+05, -2.069775173675194e+05, -2.069026145011698e+05, - -2.068276001871191e+05, -2.067524749359647e+05, -2.066772392549408e+05, -2.066018936479503e+05, -2.065264386155943e+05, - -2.064508746551973e+05, -2.063752022608419e+05, -2.062994219233902e+05, -2.062235341305169e+05, -2.061475393667329e+05, - -2.060714381134166e+05, -2.059952308488371e+05, -2.059189180481831e+05, -2.058425001835888e+05, -2.057659777241600e+05 - }, - { - 3.324619247410358e+04, 3.153691572327126e+04, 2.980239820530613e+04, 2.804159854365649e+04, 2.625340322742381e+04, - 2.443661958941129e+04, 2.258996788721430e+04, 2.071207234167081e+04, 1.880145096339894e+04, 1.685650396028121e+04, - 1.487550047840545e+04, 1.285656337605079e+04, 1.079765166336872e+04, 8.696540161102816e+03, 6.550795821568665e+03, - 4.357750026000669e+03, 2.114465997392746e+03, -1.822997547124956e+02, -2.536143333580675e+03, -4.951068461070666e+03, - -7.431552867183484e+03, -9.982629034953974e+03, -1.260998321875136e+04, -1.532007796040389e+04, -1.812030515473214e+04, - -2.101917930894638e+04, -2.402658437828975e+04, -2.715409304289817e+04, -3.041538549821814e+04, -3.382680727298876e+04, - -3.740812532401177e+04, -4.118357271675768e+04, -4.518332416453581e+04, -4.944563259766984e+04, -5.402001213975150e+04, - -5.897213641689941e+04, -6.439165779674161e+04, -7.040519446692755e+04, -7.719872638813211e+04, -8.505687516719379e+04, - -9.442692056179365e+04, -1.059799320744609e+05, -1.204520295201201e+05, -1.366990711119469e+05, -1.498389450984085e+05, - -1.587465550967448e+05, -1.648346546257838e+05, -1.693403667357137e+05, -1.728867450464038e+05, -1.757978031419935e+05, - -1.782603771810686e+05, -1.803909104043294e+05, -1.822663379060364e+05, -1.839399066871222e+05, -1.854498883176427e+05, - -1.868246602151992e+05, -1.880858161882322e+05, -1.892501515839687e+05, -1.903309764139573e+05, -1.913390110921947e+05, - -1.922830138538110e+05, -1.931702304213547e+05, -1.940067227891942e+05, -1.947976138947519e+05, -1.955472725691302e+05, - -1.962594553218303e+05, -1.969374164239010e+05, -1.975839943727674e+05, -1.982016805306831e+05, -1.987926741477301e+05, - -1.993589268715761e+05, -1.999021790571508e+05, -2.004239896203158e+05, -2.009257607641102e+05, -2.014087585993359e+05, - -2.018741304523359e+05, -2.023229194803431e+05, -2.027560770836633e+05, -2.031744735034110e+05, -2.035789069158271e+05, - -2.039701112736791e+05, -2.043487630978050e+05, -2.047154873843657e+05, -2.050708627635967e+05, -2.054154260220271e+05, - -2.057496760809714e+05, -2.060740775086057e+05, -2.063890636303296e+05, -2.066950392918187e+05, -2.069923833207024e+05, - -2.072814507258147e+05, -2.075625746671824e+05, -2.078360682250733e+05, -2.081022259924181e+05, -2.083613255115020e+05, - -2.086136285729988e+05, -2.088593823929779e+05, -2.090988206814853e+05, -2.093321646145334e+05, -2.095596237198592e+05, - -2.097813966855191e+05, -2.099976720992863e+05, -2.102086291258742e+05, -2.104144381281808e+05, -2.106152612380389e+05, - -2.108112528813349e+05, -2.110025602618217e+05, -2.111893238074716e+05, -2.113716775828103e+05, -2.115497496702999e+05, - -2.117236625235265e+05, -2.118935332946587e+05, -2.120594741384009e+05, -2.122215924944344e+05, -2.123799913501592e+05, - -2.125347694853523e+05, -2.126860217002275e+05, -2.128338390282244e+05, -2.129783089347405e+05, -2.131195155029028e+05, - -2.132575396073903e+05, -2.133924590772025e+05, -2.135243488482222e+05, -2.136532811063213e+05, -2.137793254217080e+05, - -2.139025488751486e+05, -2.140230161766520e+05, -2.141407897775479e+05, -2.142559299788440e+05, -2.143684950282703e+05, - -2.144785412116669e+05, -2.145861228417300e+05, -2.146912926657410e+05, -2.147941015379467e+05, -2.148945987322794e+05, - -2.149928319490140e+05, -2.150888473909929e+05, -2.151826898241885e+05, -2.152744026374973e+05, -2.153640278994378e+05, - -2.154516064119495e+05, -2.155371777614631e+05, -2.156207803674098e+05, -2.157024515283239e+05, -2.157822274656753e+05, - -2.158601433655695e+05, -2.159362334184372e+05, -2.160105308568291e+05, -2.160830679914205e+05, -2.161538762453320e+05, - -2.162229861890270e+05, -2.162904275626837e+05, -2.163562293195319e+05, -2.164204196450968e+05, -2.164830259808654e+05, - -2.165440750740677e+05, -2.166035929662753e+05, -2.166616050416792e+05, -2.167181360435679e+05, -2.167732100961774e+05, - -2.168268507253829e+05, -2.168790808752822e+05, -2.169299229407800e+05, -2.169793987662329e+05, -2.170275296758140e+05, - -2.170743364872655e+05, -2.171198395280839e+05, -2.171640586510594e+05, -2.172070132491974e+05, -2.172487222700529e+05, - -2.172892042295060e+05, -2.173284772250032e+05, -2.173665589482902e+05, -2.174034666976585e+05, -2.174392173897295e+05, - -2.174738275707971e+05, -2.175073134277449e+05, -2.175396907985625e+05, -2.175709751824760e+05, -2.176011817497065e+05, - -2.176303253508809e+05, -2.176584205261004e+05, -2.176854815136887e+05, -2.177115222586312e+05, -2.177365564207148e+05, - -2.177605973823893e+05, -2.177836582563534e+05, -2.178057518928787e+05, -2.178268908868897e+05, -2.178470875847975e+05, - -2.178663540911089e+05, -2.178847022748118e+05, -2.179021437755483e+05, -2.179186900095898e+05, -2.179343521756079e+05, - -2.179491412602675e+05, -2.179630680436307e+05, -2.179761431043944e+05, -2.179883768249571e+05, -2.179997793963254e+05, - -2.180103608228695e+05, -2.180201309269268e+05, -2.180290993532645e+05, -2.180372755734053e+05, -2.180446688898173e+05, - -2.180512884399809e+05, -2.180571432003312e+05, -2.180622419900782e+05, -2.180665934749194e+05, -2.180702061706376e+05, - -2.180730884465949e+05, -2.180752485291226e+05, -2.180766945048131e+05, -2.180774343237174e+05, -2.180774758024501e+05, - -2.180768266272042e+05, -2.180754943566830e+05, -2.180734864249459e+05, -2.180708101441758e+05, -2.180674727073719e+05, - -2.180634811909617e+05, -2.180588425573460e+05, -2.180535636573724e+05, -2.180476512327411e+05, -2.180411119183452e+05, - -2.180339522445489e+05, -2.180261786394034e+05, -2.180177974367977e+05, -2.180088148552857e+05, -2.179992370340318e+05, - -2.179890700128472e+05, -2.179783197394624e+05, -2.179669920714167e+05, -2.179550927778972e+05, -2.179426275415318e+05, - -2.179296019601378e+05, -2.179160215484224e+05, -2.179018917396432e+05, -2.178872178872271e+05, -2.178720052663471e+05, - -2.178562590754600e+05, -2.178399844378081e+05, -2.178231864028815e+05, -2.178058699478461e+05, -2.177880399789361e+05, - -2.177697013328138e+05, -2.177508587778952e+05, -2.177315170156445e+05, -2.177116806818390e+05, -2.176913543477998e+05, - -2.176705425215998e+05, -2.176492496492378e+05, -2.176274801157867e+05, -2.176052382465178e+05, -2.175825283079937e+05, - -2.175593545091416e+05, -2.175357210022977e+05, -2.175116318842299e+05, -2.174870911971383e+05, -2.174621029296278e+05, - -2.174366710176677e+05, -2.174107993455199e+05, -2.173844917466547e+05, -2.173577520046408e+05, -2.173305838540191e+05, - -2.173029909811542e+05, -2.172749770250699e+05, -2.172465455782661e+05, -2.172177001875156e+05, -2.171884443546474e+05, - -2.171587815373101e+05, -2.171287151497205e+05, -2.170982485633953e+05, -2.170673851078697e+05, -2.170361280713968e+05, - -2.170044807016360e+05, -2.169724462063247e+05, -2.169400277539370e+05, -2.169072284743296e+05, -2.168740514593715e+05, - -2.168404997635644e+05, -2.168065764046470e+05, -2.167722843641900e+05, -2.167376265881770e+05, -2.167026059875733e+05, - -2.166672254388868e+05, -2.166314877847118e+05, -2.165953958342684e+05, -2.165589523639252e+05, -2.165221601177170e+05, - -2.164850218078468e+05, -2.164475401151848e+05, -2.164097176897501e+05, -2.163715571511890e+05, -2.163330610892402e+05, - -2.162942320641940e+05, -2.162550726073401e+05, -2.162155852214083e+05, -2.161757723810014e+05, -2.161356365330159e+05, - -2.160951800970614e+05, -2.160544054658658e+05, -2.160133150056775e+05, -2.159719110566566e+05, -2.159301959332606e+05, - -2.158881719246226e+05, -2.158458412949239e+05, -2.158032062837555e+05, -2.157602691064803e+05, -2.157170319545795e+05, - -2.156734969960002e+05, -2.156296663754930e+05, -2.155855422149459e+05, -2.155411266137081e+05, -2.154964216489130e+05, - -2.154514293757926e+05, -2.154061518279852e+05, -2.153605910178410e+05, -2.153147489367196e+05, -2.152686275552841e+05, - -2.152222288237873e+05, -2.151755546723567e+05, -2.151286070112714e+05, -2.150813877312354e+05, -2.150338987036468e+05, - -2.149861417808615e+05, -2.149381187964509e+05, -2.148898315654601e+05, -2.148412818846554e+05, -2.147924715327719e+05, - -2.147434022707566e+05, -2.146940758420039e+05, -2.146444939725934e+05, -2.145946583715157e+05, -2.145445707309031e+05, - -2.144942327262482e+05, -2.144436460166263e+05, -2.143928122449072e+05, -2.143417330379701e+05, -2.142904100069099e+05, - -2.142388447472431e+05, -2.141870388391078e+05, -2.141349938474640e+05, -2.140827113222867e+05, -2.140301927987595e+05, - -2.139774397974621e+05, -2.139244538245559e+05, -2.138712363719688e+05, -2.138177889175726e+05, -2.137641129253625e+05, - -2.137102098456278e+05, -2.136560811151281e+05, -2.136017281572588e+05, -2.135471523822177e+05, -2.134923551871690e+05, - -2.134373379564052e+05, -2.133821020615046e+05, -2.133266488614865e+05, -2.132709797029679e+05, -2.132150959203109e+05, - -2.131589988357756e+05, -2.131026897596634e+05, -2.130461699904643e+05, -2.129894408149970e+05, -2.129325035085506e+05, - -2.128753593350225e+05, -2.128180095470532e+05, -2.127604553861618e+05, -2.127026980828760e+05, -2.126447388568648e+05, - -2.125865789170639e+05, -2.125282194618040e+05, -2.124696616789334e+05, -2.124109067459403e+05, -2.123519558300767e+05, - -2.122928100884730e+05, -2.122334706682583e+05, -2.121739387066735e+05, -2.121142153311880e+05, -2.120543016596085e+05, - -2.119941988001924e+05, -2.119339078517558e+05, -2.118734299037798e+05, -2.118127660365183e+05, -2.117519173211009e+05, - -2.116908848196364e+05, -2.116296695853146e+05, -2.115682726625046e+05, -2.115066950868556e+05, -2.114449378853940e+05, - -2.113830020766172e+05, -2.113208886705888e+05, -2.112585986690342e+05, -2.111961330654295e+05, -2.111334928450935e+05, - -2.110706789852772e+05, -2.110076924552515e+05, -2.109445342163943e+05, -2.108812052222769e+05, -2.108177064187475e+05, - -2.107540387440160e+05, -2.106902031287343e+05, -2.106262004960799e+05, -2.105620317618345e+05, -2.104976978344635e+05, - -2.104331996151940e+05, -2.103685379980917e+05, -2.103037138701364e+05, -2.102387281112983e+05, -2.101735815946098e+05, - -2.101082751862404e+05, -2.100428097455674e+05, -2.099771861252480e+05, -2.099114051712884e+05, -2.098454677231130e+05, - -2.097793746136340e+05, -2.097131266693173e+05, -2.096467247102495e+05, -2.095801695502040e+05, -2.095134619967061e+05, - -2.094466028510948e+05, -2.093795929085891e+05, -2.093124329583479e+05, -2.092451237835331e+05, -2.091776661613690e+05, - -2.091100608632033e+05, -2.090423086545672e+05, -2.089744102952302e+05, -2.089063665392637e+05, -2.088381781350919e+05, - -2.087698458255528e+05, -2.087013703479515e+05, -2.086327524341160e+05, -2.085639928104493e+05, -2.084950921979874e+05, - -2.084260513124473e+05, -2.083568708642836e+05, -2.082875515587358e+05, -2.082180940958831e+05, -2.081484991706921e+05, - -2.080787674730681e+05, -2.080088996879035e+05, -2.079388964951273e+05, -2.078687585697506e+05, -2.077984865819175e+05, - -2.077280811969482e+05, -2.076575430753887e+05, -2.075868728730534e+05, -2.075160712410727e+05, -2.074451388259361e+05, - -2.073740762695364e+05, -2.073028842092141e+05, -2.072315632777993e+05, -2.071601141036547e+05, -2.070885373107188e+05, - -2.070168335185440e+05, -2.069450033423425e+05, -2.068730473930222e+05, -2.068009662772298e+05, -2.067287605973888e+05, - -2.066564309517399e+05, -2.065839779343780e+05, -2.065114021352925e+05, -2.064387041404035e+05, -2.063658845315997e+05, - -2.062929438867754e+05, -2.062198827798667e+05, -2.061467017808888e+05, -2.060734014559689e+05, -2.059999823673853e+05, - -2.059264450735983e+05, -2.058527901292885e+05, -2.057790180853877e+05, -2.057051294891140e+05, -2.056311248840064e+05, - -2.055570048099538e+05, -2.054827698032329e+05, -2.054084203965354e+05, -2.053339571190040e+05, -2.052593804962607e+05, - -2.051846910504395e+05, -2.051098893002176e+05, -2.050349757608445e+05, -2.049599509441734e+05, -2.048848153586900e+05, - -2.048095695095426e+05, -2.047342138985714e+05, -2.046587490243365e+05, -2.045831753821474e+05, -2.045074934640904e+05, - -2.044317037590561e+05, -2.043558067527691e+05, -2.042798029278135e+05, -2.042036927636598e+05, -2.041274767366921e+05 - }, - { - 3.412872050432128e+04, 3.243168023469609e+04, 3.070993198962769e+04, 2.896247388525314e+04, 2.718823590110212e+04, - 2.538607338053189e+04, 2.355475971858923e+04, 2.169297810803935e+04, 1.979931219437825e+04, 1.787223545759280e+04, - 1.591009910407641e+04, 1.391111820672198e+04, 1.187335577578758e+04, 9.794704371770425e+03, 7.672864787890536e+03, - 5.505321211827550e+03, 3.289312139930722e+03, 1.021796130524287e+03, -1.300588753836038e+03, -3.681573276636886e+03, - -6.125315002671013e+03, -8.636468338803283e+03, -1.122026979924016e+04, -1.388264266057781e+04, -1.663032655964481e+04, - -1.947103952597876e+04, -2.241368268788326e+04, -2.546860184332046e+04, -2.864792587789434e+04, -3.196601056937056e+04, - -3.544002955802143e+04, -3.909077436333521e+04, -4.294375786097439e+04, -4.703076823713779e+04, -5.139210874907011e+04, - -5.607991027083900e+04, -6.116316953538065e+04, -6.673563403300321e+04, -7.292843948865394e+04, -7.993042481837040e+04, - -8.801851561578790e+04, -9.758783295593440e+04, -1.091136297712131e+05, -1.228003488271865e+05, -1.368700350935453e+05, - -1.481958461102909e+05, -1.563282174806615e+05, -1.621672348787905e+05, -1.666006762607415e+05, -1.701403462926937e+05, - -1.730713629266484e+05, -1.755644992689185e+05, -1.777290993250561e+05, -1.796388804549819e+05, -1.813456390144151e+05, - -1.828870327774303e+05, -1.842912331137460e+05, -1.855798281890854e+05, -1.867697038286478e+05, -1.878743027017289e+05, - -1.889044918343243e+05, -1.898691754077713e+05, -1.907757371743884e+05, -1.916303660251049e+05, -1.924382996423969e+05, - -1.932040096021997e+05, -1.939313438976084e+05, -1.946236380201633e+05, -1.952838024991071e+05, -1.959143925921125e+05, - -1.965176642888401e+05, -1.970956197080707e+05, -1.976500441958696e+05, -1.981825368717261e+05, -1.986945359583612e+05, - -1.991873399259126e+05, -1.996621252526857e+05, -2.001199614318494e+05, -2.005618237216217e+05, -2.009886040350674e+05, - -2.014011202870462e+05, -2.018001244544698e+05, -2.021863095577763e+05, -2.025603157333682e+05, -2.029227355363458e+05, - -2.032741185885304e+05, -2.036149756671555e+05, -2.039457823137162e+05, -2.042669820295389e+05, -2.045789891140535e+05, - -2.048821911930429e+05, -2.051769514769736e+05, -2.054636107835332e+05, -2.057424893535566e+05, -2.060138884853483e+05, - -2.062780920089337e+05, -2.065353676188298e+05, -2.067859680814248e+05, -2.070301323309680e+05, -2.072680864663441e+05, - -2.075000446592909e+05, -2.077262099833816e+05, -2.079467751719743e+05, -2.081619233123424e+05, -2.083718284823541e+05, - -2.085766563353428e+05, -2.087765646381608e+05, -2.089717037668622e+05, -2.091622171639659e+05, -2.093482417608306e+05, - -2.095299083682952e+05, -2.097073420384087e+05, -2.098806623997867e+05, -2.100499839688735e+05, -2.102154164391557e+05, - -2.103770649501864e+05, -2.105350303380799e+05, -2.106894093689985e+05, -2.108402949569912e+05, -2.109877763674339e+05, - -2.111319394071932e+05, -2.112728666025433e+05, -2.114106373657706e+05, -2.115453281513178e+05, -2.116770126022447e+05, - -2.118057616877185e+05, -2.119316438321865e+05, -2.120547250368567e+05, -2.121750689961282e+05, -2.122927372062811e+05, - -2.124077890634155e+05, -2.125202818822027e+05, -2.126302712289243e+05, -2.127378107099662e+05, -2.128429522227830e+05, - -2.129457459879643e+05, -2.130462406272169e+05, -2.131444832299083e+05, -2.132405194175962e+05, -2.133343934051888e+05, - -2.134261480589374e+05, -2.135158249514576e+05, -2.136034644139637e+05, -2.136891055858774e+05, -2.137727864619730e+05, - -2.138545439372052e+05, -2.139344138493477e+05, -2.140124310195783e+05, -2.140886292911232e+05, -2.141630415682089e+05, - -2.142356998366109e+05, -2.143066352340970e+05, -2.143758780372560e+05, -2.144434577186668e+05, -2.145094029697890e+05, - -2.145737417287498e+05, -2.146365012068956e+05, -2.146977079141752e+05, -2.147573876833416e+05, -2.148155656934950e+05, - -2.148722664918399e+05, -2.149275140152955e+05, -2.149813316108083e+05, -2.150337420548945e+05, -2.150847675678025e+05, - -2.151344298493158e+05, -2.151827500698685e+05, -2.152297489040818e+05, -2.152754465424895e+05, -2.153198627067797e+05, - -2.153630166644417e+05, -2.154049272428334e+05, -2.154456128427099e+05, -2.154850914512280e+05, -2.155233806544549e+05, - -2.155604976494028e+05, -2.155964592556118e+05, -2.156312819263018e+05, -2.156649817591092e+05, -2.156975745064307e+05, - -2.157290755853916e+05, -2.157595000874488e+05, -2.157888627876538e+05, -2.158171781535831e+05, -2.158444603539517e+05, - -2.158707232669268e+05, -2.158959804881476e+05, -2.159202453384710e+05, -2.159435308714492e+05, -2.159658498805521e+05, - -2.159872149061433e+05, -2.160076382422254e+05, -2.160271319429557e+05, -2.160457078289464e+05, -2.160633774933601e+05, - -2.160801523077993e+05, -2.160960434280116e+05, -2.161110617994063e+05, -2.161252181623929e+05, -2.161385230575534e+05, - -2.161509868306472e+05, -2.161626196374609e+05, -2.161734314485034e+05, -2.161834320535606e+05, -2.161926310661025e+05, - -2.162010379275609e+05, -2.162086619114743e+05, -2.162155121275066e+05, -2.162215975253476e+05, -2.162269268984938e+05, - -2.162315088879190e+05, -2.162353519856351e+05, -2.162384645381500e+05, -2.162408547498230e+05, -2.162425306861227e+05, - -2.162435002767949e+05, -2.162437713189328e+05, -2.162433514799673e+05, -2.162422483005666e+05, -2.162404691974575e+05, - -2.162380214661679e+05, -2.162349122836907e+05, -2.162311487110764e+05, -2.162267376959523e+05, -2.162216860749763e+05, - -2.162160005762185e+05, -2.162096878214851e+05, -2.162027543334620e+05, -2.161952065190133e+05, -2.161870506987325e+05, - -2.161782930913511e+05, -2.161689398200409e+05, -2.161589969143895e+05, -2.161484703123229e+05, -2.161373658619804e+05, - -2.161256893235411e+05, -2.161134463710011e+05, -2.161006425939102e+05, -2.160872834990593e+05, -2.160733745121279e+05, - -2.160589209792932e+05, -2.160439281687933e+05, -2.160284012724561e+05, -2.160123454071886e+05, -2.159957656164299e+05, - -2.159786668715701e+05, -2.159610540733333e+05, -2.159429320531260e+05, -2.159243055743579e+05, -2.159051793337241e+05, - -2.158855579624638e+05, -2.158654460275843e+05, -2.158448480330596e+05, -2.158237684209965e+05, -2.158022115727793e+05, - -2.157801818101820e+05, -2.157576833964609e+05, -2.157347205374163e+05, -2.157112973824328e+05, -2.156874180254977e+05, - -2.156630865061921e+05, -2.156383068106626e+05, -2.156130828725703e+05, -2.155874185740199e+05, -2.155613177464649e+05, - -2.155347841715963e+05, -2.155078215822100e+05, -2.154804336630562e+05, -2.154526240516671e+05, -2.154243963391728e+05, - -2.153957540710930e+05, -2.153667007481145e+05, -2.153372398268542e+05, -2.153073747206011e+05, -2.152771088000480e+05, - -2.152464453940015e+05, -2.152153877900823e+05, -2.151839392354095e+05, -2.151521029372684e+05, -2.151198820637677e+05, - -2.150872797444796e+05, -2.150542990710702e+05, -2.150209430979149e+05, -2.149872148427010e+05, -2.149531172870206e+05, - -2.149186533769465e+05, -2.148838260236027e+05, -2.148486381037194e+05, -2.148130924601766e+05, -2.147771919025406e+05, - -2.147409392075847e+05, -2.147043371198047e+05, -2.146673883519207e+05, -2.146300955853704e+05, -2.145924614707934e+05, - -2.145544886285036e+05, -2.145161796489568e+05, -2.144775370932043e+05, -2.144385634933421e+05, -2.143992613529480e+05, - -2.143596331475134e+05, -2.143196813248651e+05, -2.142794083055793e+05, -2.142388164833876e+05, -2.141979082255774e+05, - -2.141566858733819e+05, -2.141151517423644e+05, -2.140733081227975e+05, -2.140311572800291e+05, -2.139887014548488e+05, - -2.139459428638448e+05, -2.139028836997502e+05, -2.138595261317933e+05, -2.138158723060274e+05, -2.137719243456683e+05, - -2.137276843514178e+05, -2.136831544017824e+05, -2.136383365533884e+05, -2.135932328412906e+05, -2.135478452792739e+05, - -2.135021758601515e+05, -2.134562265560585e+05, -2.134099993187377e+05, -2.133634960798212e+05, -2.133167187511104e+05, - -2.132696692248460e+05, -2.132223493739775e+05, -2.131747610524251e+05, -2.131269060953392e+05, -2.130787863193542e+05, - -2.130304035228399e+05, -2.129817594861457e+05, -2.129328559718427e+05, -2.128836947249607e+05, -2.128342774732235e+05, - -2.127846059272767e+05, -2.127346817809138e+05, -2.126845067112993e+05, -2.126340823791868e+05, -2.125834104291324e+05, - -2.125324924897082e+05, -2.124813301737081e+05, -2.124299250783538e+05, -2.123782787854952e+05, -2.123263928618072e+05, - -2.122742688589875e+05, -2.122219083139438e+05, -2.121693127489857e+05, -2.121164836720098e+05, -2.120634225766794e+05, - -2.120101309426067e+05, -2.119566102355298e+05, -2.119028619074849e+05, -2.118488873969780e+05, -2.117946881291544e+05, - -2.117402655159638e+05, -2.116856209563233e+05, -2.116307558362793e+05, -2.115756715291645e+05, -2.115203693957545e+05, - -2.114648507844223e+05, -2.114091170312859e+05, -2.113531694603616e+05, -2.112970093837069e+05, -2.112406381015672e+05, - -2.111840569025164e+05, -2.111272670635976e+05, -2.110702698504606e+05, -2.110130665174983e+05, -2.109556583079800e+05, - -2.108980464541831e+05, -2.108402321775229e+05, -2.107822166886808e+05, -2.107240011877301e+05, -2.106655868642611e+05, - -2.106069748975010e+05, -2.105481664564369e+05, -2.104891626999337e+05, -2.104299647768514e+05, -2.103705738261591e+05, - -2.103109909770511e+05, -2.102512173490566e+05, -2.101912540521518e+05, -2.101311021868683e+05, -2.100707628443992e+05, - -2.100102371067073e+05, -2.099495260466269e+05, -2.098886307279686e+05, -2.098275522056188e+05, -2.097662915256419e+05, - -2.097048497253752e+05, -2.096432278335311e+05, -2.095814268702881e+05, -2.095194478473884e+05, -2.094572917682290e+05, - -2.093949596279548e+05, -2.093324524135491e+05, -2.092697711039226e+05, -2.092069166700012e+05, -2.091438900748137e+05, - -2.090806922735768e+05, -2.090173242137795e+05, -2.089537868352688e+05, -2.088900810703286e+05, -2.088262078437617e+05, - -2.087621680729726e+05, -2.086979626680432e+05, -2.086335925318121e+05, -2.085690585599524e+05, -2.085043616410456e+05, - -2.084395026566578e+05, -2.083744824814129e+05, -2.083093019830678e+05, -2.082439620225790e+05, -2.081784634541811e+05, - -2.081128071254496e+05, -2.080469938773749e+05, -2.079810245444284e+05, -2.079148999546313e+05, -2.078486209296192e+05, - -2.077821882847087e+05, -2.077156028289640e+05, -2.076488653652565e+05, -2.075819766903331e+05, -2.075149375948751e+05, - -2.074477488635600e+05, -2.073804112751234e+05, -2.073129256024197e+05, -2.072452926124782e+05, -2.071775130665651e+05, - -2.071095877202382e+05, -2.070415173234076e+05, -2.069733026203878e+05, -2.069049443499567e+05, -2.068364432454084e+05, - -2.067678000346085e+05, -2.066990154400478e+05, -2.066300901788936e+05, -2.065610249630441e+05, -2.064918204991790e+05, - -2.064224774888101e+05, -2.063529966283320e+05, -2.062833786090726e+05, -2.062136241173410e+05, -2.061437338344759e+05, - -2.060737084368952e+05, -2.060035485961427e+05, -2.059332549789332e+05, -2.058628282472005e+05, -2.057922690581433e+05, - -2.057215780642697e+05, -2.056507559134409e+05, -2.055798032489165e+05, -2.055087207093984e+05, -2.054375089290724e+05, - -2.053661685376515e+05, -2.052947001604177e+05, -2.052231044182645e+05, -2.051513819277359e+05, -2.050795333010689e+05, - -2.050075591462326e+05, -2.049354600669686e+05, -2.048632366628282e+05, -2.047908895292139e+05, -2.047184192574156e+05, - -2.046458264346491e+05, -2.045731116440929e+05, -2.045002754649277e+05, -2.044273184723680e+05, -2.043542412377022e+05, - -2.042810443283279e+05, -2.042077283077866e+05, -2.041342937357972e+05, -2.040607411682922e+05, -2.039870711574517e+05, - -2.039132842517363e+05, -2.038393809959211e+05, -2.037653619311285e+05, -2.036912275948607e+05, -2.036169785210317e+05, - -2.035426152400002e+05, -2.034681382785992e+05, -2.033935481601689e+05, -2.033188454045873e+05, -2.032440305282999e+05, - -2.031691040443506e+05, -2.030940664624107e+05, -2.030189182888083e+05, -2.029436600265604e+05, -2.028682921753966e+05, - -2.027928152317920e+05, -2.027172296889930e+05, -2.026415360370471e+05, -2.025657347628284e+05, -2.024898263500660e+05 - }, - { - 3.501223319407398e+04, 3.332728480353826e+04, 3.161814847546494e+04, 2.988386022768988e+04, 2.812339171481411e+04, - 2.633564421263157e+04, 2.451944186659091e+04, 2.267352408971105e+04, 2.079653697845314e+04, 1.888702358635296e+04, - 1.694341286588700e+04, 1.496400705034473e+04, 1.294696720027099e+04, 1.089029658053403e+04, 8.791821458525834e+03, - 6.649168826427946e+03, 4.459740424913783e+03, 2.220682302659466e+03, -7.115105142664291e+01, -2.419239215938049e+03, - -4.827446525635619e+03, -7.300082915012758e+03, -9.841977467570192e+03, -1.245856799787981e+04, -1.515601104950309e+04, - -1.794131814505699e+04, -2.082252614968970e+04, -2.380891246895616e+04, -2.691126990703330e+04, -3.014226192877386e+04, - -3.351688801719571e+04, -3.705310193110249e+04, -4.077264626101981e+04, -4.470219857071254e+04, -4.887497548700932e+04, - -5.333302386362277e+04, -5.813056323954253e+04, -6.333896044261804e+04, -6.905423472235879e+04, -7.540829959212309e+04, - -8.258461957390474e+04, -9.083373022636073e+04, -1.004623380471278e+05, -1.117234985450851e+05, -1.243851184306270e+05, - -1.366226325143851e+05, -1.465615378101451e+05, -1.540262037579635e+05, -1.596099247468449e+05, -1.639518558834899e+05, - -1.674670593619997e+05, -1.704037655911299e+05, -1.729165114115023e+05, -1.751068580695748e+05, -1.770446456337159e+05, - -1.787797052426035e+05, -1.803487026599487e+05, -1.817793287541259e+05, -1.830929664169835e+05, -1.843064457875635e+05, - -1.854332343978703e+05, -1.864842658244554e+05, -1.874685303221642e+05, -1.883935045911430e+05, -1.892654702366566e+05, - -1.900897535813126e+05, -1.908709088598876e+05, -1.916128599734298e+05, -1.923190114577873e+05, -1.929923362753899e+05, - -1.936354459472251e+05, -1.942506470804890e+05, -1.948399873103369e+05, -1.954052929278468e+05, -1.959481999223138e+05, - -1.964701797648389e+05, -1.969725609611628e+05, -1.974565471766715e+05, -1.979232325655420e+05, -1.983736148050987e+05, - -1.988086062353486e+05, -1.992290434250665e+05, -1.996356954242169e+05, -2.000292709139668e+05, -2.004104244270224e+05, - -2.007797617802973e+05, -2.011378448372346e+05, -2.014851956972171e+05, -2.018223003933185e+05, -2.021496121665054e+05, - -2.024675543735941e+05, -2.027765230773942e+05, -2.030768893601204e+05, -2.033690013950701e+05, -2.036531863064696e+05, - -2.039297518431511e+05, -2.041989878881343e+05, -2.044611678231811e+05, -2.047165497648429e+05, -2.049653776863406e+05, - -2.052078824377832e+05, -2.054442826756483e+05, -2.056747857110893e+05, -2.058995882854787e+05, -2.061188772805863e+05, - -2.063328303699224e+05, -2.065416166170276e+05, -2.067453970258296e+05, -2.069443250476211e+05, -2.071385470487125e+05, - -2.073282027423709e+05, -2.075134255882835e+05, -2.076943431624351e+05, -2.078710775000000e+05, -2.080437454135772e+05, - -2.082124587888742e+05, -2.083773248597317e+05, -2.085384464641966e+05, -2.086959222831978e+05, -2.088498470632171e+05, - -2.090003118242330e+05, -2.091474040540897e+05, -2.092912078903388e+05, -2.094318042905165e+05, -2.095692711917218e+05, - -2.097036836602956e+05, -2.098351140323276e+05, -2.099636320456589e+05, -2.100893049647872e+05, -2.102121977007528e+05, - -2.103323729180103e+05, -2.104498910786749e+05, -2.105648107180819e+05, -2.106771883262687e+05, -2.107870785522903e+05, - -2.108945342588429e+05, -2.109996066022690e+05, -2.111023451054643e+05, -2.112027977274821e+05, -2.113010109294621e+05, - -2.113970297371035e+05, -2.114908977999093e+05, -2.115826574473906e+05, -2.116723497424212e+05, -2.117600145319126e+05, - -2.118456904949688e+05, -2.119294151886721e+05, -2.120112250861758e+05, -2.120911556424131e+05, -2.121692412912578e+05, - -2.122455155190715e+05, -2.123200108858221e+05, -2.123927590615275e+05, -2.124637908588520e+05, -2.125331362642149e+05, - -2.126008244674926e+05, -2.126668838903893e+05, -2.127313422135497e+05, -2.127942264023465e+05, -2.128555627321991e+05, - -2.129153768114804e+05, -2.129736936047662e+05, -2.130305374544277e+05, -2.130859321014530e+05, -2.131399007053962e+05, - -2.131924658634982e+05, -2.132436496290275e+05, -2.132934735229690e+05, -2.133419585739811e+05, -2.133891253007360e+05, - -2.134349937495669e+05, -2.134795835040098e+05, -2.135229136991620e+05, -2.135650030354868e+05, -2.136058697920844e+05, - -2.136455318394564e+05, -2.136840066517862e+05, -2.137213113187584e+05, -2.137574625569350e+05, -2.137924767207128e+05, - -2.138263698128745e+05, -2.138591574947583e+05, -2.138908550960571e+05, -2.139214776242643e+05, -2.139510397737866e+05, - -2.139795559347283e+05, -2.140070402013721e+05, -2.140335063803586e+05, -2.140589679985863e+05, -2.140834383108383e+05, - -2.141069303071467e+05, -2.141294567199093e+05, -2.141510300307648e+05, -2.141716624772390e+05, -2.141913660591696e+05, - -2.142101525449174e+05, -2.142280334773771e+05, -2.142450201797889e+05, -2.142611237613643e+05, -2.142763551227299e+05, - -2.142907249611981e+05, -2.143042437758696e+05, -2.143169218725773e+05, -2.143287693686724e+05, -2.143397961976645e+05, - -2.143500121137151e+05, -2.143594266959977e+05, -2.143680493529203e+05, -2.143758893262218e+05, -2.143829556949470e+05, - -2.143892573792968e+05, -2.143948031443723e+05, -2.143996016037991e+05, -2.144036612232522e+05, -2.144069903238736e+05, - -2.144095970855935e+05, -2.144114895503544e+05, -2.144126756252408e+05, -2.144131630855241e+05, -2.144129595776163e+05, - -2.144120726219453e+05, -2.144105096157445e+05, -2.144082778357696e+05, -2.144053844409370e+05, -2.144018364748894e+05, - -2.143976408684947e+05, -2.143928044422723e+05, -2.143873339125749e+05, -2.143812358792202e+05, -2.143745168488614e+05, - -2.143671832236302e+05, -2.143592413065084e+05, -2.143506973033935e+05, -2.143415573251081e+05, -2.143318273893586e+05, - -2.143215134226427e+05, -2.143106212621082e+05, -2.142991566573634e+05, -2.142871252722420e+05, -2.142745326865226e+05, - -2.142613843976067e+05, -2.142476858221510e+05, -2.142334422976638e+05, -2.142186590840569e+05, -2.142033413651637e+05, - -2.141874942502156e+05, -2.141711227752873e+05, -2.141542319047007e+05, -2.141368265324017e+05, -2.141189114832993e+05, - -2.141004915145731e+05, -2.140815713169516e+05, -2.140621555159587e+05, -2.140422486731310e+05, -2.140218552872064e+05, - -2.140009797952865e+05, -2.139796265739693e+05, -2.139577999404575e+05, -2.139355041536414e+05, -2.139127434151556e+05, - -2.138895218704141e+05, -2.138658436096176e+05, -2.138417126687447e+05, -2.138171330305130e+05, -2.137921086253244e+05, - -2.137666433321883e+05, -2.137407409796221e+05, -2.137144053465337e+05, -2.136876401630862e+05, -2.136604491115383e+05, - -2.136328358270720e+05, -2.136048038986007e+05, -2.135763568695585e+05, -2.135474982386737e+05, -2.135182314607241e+05, - -2.134885599472815e+05, -2.134584870674332e+05, -2.134280161484925e+05, -2.133971504766942e+05, -2.133658932978744e+05, - -2.133342478181364e+05, -2.133022172045041e+05, -2.132698045855591e+05, -2.132370130520683e+05, -2.132038456575962e+05, - -2.131703054191035e+05, -2.131363953175394e+05, -2.131021182984143e+05, -2.130674772723655e+05, -2.130324751157129e+05, - -2.129971146709984e+05, -2.129613987475196e+05, -2.129253301218499e+05, -2.128889115383515e+05, -2.128521457096720e+05, - -2.128150353172410e+05, -2.127775830117474e+05, -2.127397914136137e+05, -2.127016631134580e+05, -2.126632006725502e+05, - -2.126244066232550e+05, -2.125852834694701e+05, -2.125458336870554e+05, -2.125060597242537e+05, -2.124659640021022e+05, - -2.124255489148379e+05, -2.123848168302963e+05, -2.123437700902996e+05, -2.123024110110407e+05, -2.122607418834575e+05, - -2.122187649736043e+05, -2.121764825230103e+05, -2.121338967490383e+05, -2.120910098452309e+05, -2.120478239816554e+05, - -2.120043413052387e+05, -2.119605639400985e+05, -2.119164939878669e+05, -2.118721335280102e+05, -2.118274846181407e+05, - -2.117825492943250e+05, -2.117373295713857e+05, -2.116918274431987e+05, -2.116460448829822e+05, -2.115999838435872e+05, - -2.115536462577757e+05, -2.115070340384986e+05, -2.114601490791672e+05, -2.114129932539194e+05, -2.113655684178843e+05, - -2.113178764074377e+05, -2.112699190404580e+05, -2.112216981165738e+05, -2.111732154174099e+05, -2.111244727068287e+05, - -2.110754717311648e+05, -2.110262142194615e+05, -2.109767018836964e+05, -2.109269364190100e+05, -2.108769195039237e+05, - -2.108266528005597e+05, -2.107761379548571e+05, -2.107253765967779e+05, -2.106743703405190e+05, -2.106231207847131e+05, - -2.105716295126310e+05, -2.105198980923783e+05, -2.104679280770905e+05, -2.104157210051216e+05, -2.103632784002355e+05, - -2.103106017717892e+05, -2.102576926149148e+05, -2.102045524106991e+05, -2.101511826263605e+05, -2.100975847154218e+05, - -2.100437601178802e+05, -2.099897102603783e+05, -2.099354365563673e+05, -2.098809404062701e+05, -2.098262231976434e+05, - -2.097712863053339e+05, -2.097161310916353e+05, -2.096607589064398e+05, -2.096051710873911e+05, -2.095493689600306e+05, - -2.094933538379457e+05, -2.094371270229126e+05, -2.093806898050382e+05, -2.093240434629014e+05, -2.092671892636886e+05, - -2.092101284633295e+05, -2.091528623066336e+05, -2.090953920274168e+05, -2.090377188486356e+05, -2.089798439825135e+05, - -2.089217686306638e+05, -2.088634939842190e+05, -2.088050212239479e+05, -2.087463515203781e+05, -2.086874860339164e+05, - -2.086284259149621e+05, -2.085691723040251e+05, -2.085097263318379e+05, -2.084500891194672e+05, -2.083902617784264e+05, - -2.083302454107824e+05, -2.082700411092624e+05, -2.082096499573610e+05, -2.081490730294441e+05, -2.080883113908510e+05, - -2.080273660979946e+05, -2.079662381984647e+05, -2.079049287311223e+05, -2.078434387261996e+05, -2.077817692053939e+05, - -2.077199211819625e+05, -2.076578956608165e+05, -2.075956936386121e+05, -2.075333161038403e+05, -2.074707640369156e+05, - -2.074080384102679e+05, -2.073451401884246e+05, -2.072820703280987e+05, -2.072188297782735e+05, -2.071554194802835e+05, - -2.070918403679013e+05, -2.070280933674132e+05, -2.069641793977022e+05, -2.069000993703281e+05, -2.068358541896015e+05, - -2.067714447526652e+05, -2.067068719495657e+05, -2.066421366633322e+05, -2.065772397700468e+05, -2.065121821389191e+05, - -2.064469646323587e+05, -2.063815881060445e+05, -2.063160534089960e+05, -2.062503613836425e+05, -2.061845128658898e+05, - -2.061185086851888e+05, -2.060523496646029e+05, -2.059860366208708e+05, -2.059195703644740e+05, -2.058529516996991e+05, - -2.057861814247015e+05, -2.057192603315680e+05, -2.056521892063781e+05, -2.055849688292640e+05, -2.055175999744713e+05, - -2.054500834104187e+05, -2.053824198997551e+05, -2.053146101994188e+05, -2.052466550606926e+05, -2.051785552292629e+05, - -2.051103114452724e+05, -2.050419244433767e+05, -2.049733949527983e+05, -2.049047236973793e+05, -2.048359113956352e+05, - -2.047669587608075e+05, -2.046978665009137e+05, -2.046286353187993e+05, -2.045592659121885e+05, -2.044897589737333e+05, - -2.044201151910632e+05, -2.043503352468319e+05, -2.042804198187683e+05, -2.042103695797211e+05, -2.041401851977070e+05, - -2.040698673359568e+05, -2.039994166529608e+05, -2.039288338025141e+05, -2.038581194337609e+05, -2.037872741912387e+05, - -2.037162987149217e+05, -2.036451936402648e+05, -2.035739595982456e+05, -2.035025972154035e+05, -2.034311071138875e+05, - -2.033594899114914e+05, -2.032877462216968e+05, -2.032158766537133e+05, -2.031438818125180e+05, -2.030717622988932e+05, - -2.029995187094679e+05, -2.029271516367532e+05, -2.028546616691818e+05, -2.027820493911459e+05, -2.027093153830311e+05, - -2.026364602212568e+05, -2.025634844783092e+05, -2.024903887227801e+05, -2.024171735193987e+05, -2.023438394290685e+05, - -2.022703870089027e+05, -2.021968168122554e+05, -2.021231293887583e+05, -2.020493252843526e+05, -2.019754050413209e+05, - -2.019013691983232e+05, -2.018272182904255e+05, -2.017529528491331e+05, -2.016785734024229e+05, -2.016040804747737e+05, - -2.015294745871965e+05, -2.014547562572667e+05, -2.013799259991528e+05, -2.013049843236462e+05, -2.012299317381923e+05, - -2.011547687469173e+05, -2.010794958506592e+05, -2.010041135469946e+05, -2.009286223302689e+05, -2.008530226916218e+05 - }, - { - 3.589672936993559e+04, 3.422373070251864e+04, 3.252705174483375e+04, 3.080576489628018e+04, 2.905888175528824e+04, - 2.728534755224072e+04, 2.548403491602926e+04, 2.365373687265440e+04, 2.179315896015971e+04, 1.990091031898099e+04, - 1.797549359206521e+04, 1.601529343594392e+04, 1.401856340404517e+04, 1.198341091392039e+04, 9.907779948844627e+03, - 7.789431064742359e+03, 5.625918182456448e+03, 3.414561512674411e+03, 1.152415812307066e+03, -1.163767035997658e+03, - -3.537582390024980e+03, -5.973025771131848e+03, -8.474556406537651e+03, -1.104717405239593e+04, -1.369651256391052e+04, - -1.642895476995049e+04, -1.925177470564953e+04, -2.217331533154248e+04, -2.520321278184733e+04, -2.835268234250931e+04, - -3.163488727113502e+04, -3.506542051801039e+04, -3.866294212460217e+04, -4.245003493203800e+04, -4.645437094330588e+04, - -5.071032651146170e+04, -5.526125417285447e+04, -6.016272049707567e+04, -6.548714687362534e+04, -7.133036167111533e+04, - -7.782018582021928e+04, -8.512477757438739e+04, -9.344954708675541e+04, -1.029914206783610e+05, -1.137977024395652e+05, - -1.253515186397472e+05, -1.360951904786920e+05, -1.449405666565018e+05, -1.518258633508130e+05, -1.571549413592553e+05, - -1.613909667811167e+05, -1.648669537478361e+05, -1.677966893734123e+05, -1.703187930383403e+05, -1.725267671400482e+05, - -1.744861633776584e+05, -1.762444684597508e+05, -1.778370493033047e+05, -1.792908788528442e+05, -1.806269535928783e+05, - -1.818619101805665e+05, -1.830091360566654e+05, -1.840795511918634e+05, -1.850821704882058e+05, -1.860245163371697e+05, - -1.869129265440006e+05, -1.877527877205594e+05, -1.885487146308952e+05, -1.893046897109769e+05, -1.900241728178663e+05, - -1.907101884362697e+05, -1.913653956159588e+05, -1.919921445395568e+05, -1.925925226393364e+05, -1.931683924717236e+05, - -1.937214230378050e+05, -1.942531158522868e+05, -1.947648267742827e+05, -1.952577843946586e+05, -1.957331056077829e+05, - -1.961918088671748e+05, -1.966348255250047e+05, -1.970630095777067e+05, -1.974771460788746e+05, -1.978779584323052e+05, - -1.982661147395991e+05, -1.986422333459596e+05, -1.990068877030665e+05, -1.993606106478700e+05, -1.997038981798661e+05, - -2.000372128061074e+05, -2.003609865122964e+05, -2.006756234092893e+05, -2.009815020969163e+05, -2.012789777807982e+05, - -2.015683841726970e+05, -2.018500352005968e+05, -2.021242265510640e+05, -2.023912370633729e+05, -2.026513299922725e+05, - -2.029047541540590e+05, -2.031517449687386e+05, -2.033925254094430e+05, -2.036273068688826e+05, -2.038562899514362e+05, - -2.040796651984364e+05, -2.042976137533361e+05, -2.045103079726614e+05, -2.047179119879900e+05, -2.049205822236079e+05, - -2.051184678739931e+05, -2.053117113448124e+05, -2.055004486607493e+05, -2.056848098431066e+05, -2.058649192598499e+05, - -2.060408959504690e+05, -2.062128539278076e+05, -2.063809024587960e+05, -2.065451463258320e+05, -2.067056860703965e+05, - -2.068626182203270e+05, -2.070160355020570e+05, -2.071660270389912e+05, -2.073126785370964e+05, -2.074560724586820e+05, - -2.075962881852589e+05, -2.077334021702961e+05, -2.078674880826094e+05, -2.079986169412397e+05, -2.081268572450021e+05, - -2.082522750909959e+05, -2.083749342840056e+05, -2.084948963527207e+05, -2.086122209379443e+05, -2.087269655298235e+05, - -2.088391857593179e+05, -2.089489354372587e+05, -2.090562666340139e+05, -2.091612297545241e+05, -2.092638736093206e+05, - -2.093642454817939e+05, -2.094623911919374e+05, -2.095583551567927e+05, -2.096521804423350e+05, -2.097439088400847e+05, - -2.098335808850125e+05, -2.099212359297957e+05, -2.100069121766253e+05, -2.100906467355422e+05, -2.101724756572533e+05, - -2.102524339758156e+05, -2.103305557469941e+05, -2.104068740848151e+05, -2.104814211964236e+05, -2.105542284153338e+05, - -2.106253262331607e+05, -2.106947443299186e+05, -2.107625116029598e+05, -2.108286561944482e+05, -2.108932055185304e+05, - -2.109561862854954e+05, -2.110176245267261e+05, -2.110775456176563e+05, -2.111359742999377e+05, -2.111929347026719e+05, - -2.112484503627561e+05, -2.113025442443839e+05, -2.113552387577459e+05, -2.114065557769660e+05, -2.114565166573160e+05, - -2.115051422442710e+05, -2.115524529186392e+05, -2.115984685687724e+05, -2.116432086333296e+05, -2.116866921084585e+05, - -2.117289375613244e+05, -2.117699631431242e+05, -2.118097866016085e+05, -2.118484252931278e+05, -2.118858961942319e+05, - -2.119222159128384e+05, -2.119574006989901e+05, -2.119914664552189e+05, -2.120244287465363e+05, -2.120563028100602e+05, - -2.120871035643021e+05, -2.121168456181215e+05, -2.121455432793692e+05, -2.121732105632225e+05, -2.121998612002379e+05, - -2.122255086441198e+05, -2.122501660792284e+05, -2.122738464278306e+05, -2.122965623571047e+05, -2.123183262859137e+05, - -2.123391503913495e+05, -2.123590466150648e+05, -2.123780266693931e+05, -2.123961020432715e+05, -2.124132840079720e+05, - -2.124295836226468e+05, -2.124450117396963e+05, -2.124595790099699e+05, -2.124732958877979e+05, -2.124861726358693e+05, - -2.124982193299564e+05, -2.125094458634927e+05, -2.125198619520119e+05, -2.125294771374490e+05, -2.125383007923129e+05, - -2.125463421237311e+05, -2.125536101773750e+05, -2.125601138412675e+05, -2.125658618494779e+05, -2.125708627857075e+05, - -2.125751250867712e+05, -2.125786570459784e+05, -2.125814668164131e+05, -2.125835624141243e+05, -2.125849517212229e+05, - -2.125856424888886e+05, -2.125856423402972e+05, -2.125849587734603e+05, -2.125835991639900e+05, -2.125815707677835e+05, - -2.125788807236385e+05, -2.125755360557896e+05, -2.125715436791643e+05, -2.125669103912194e+05, -2.125616428893317e+05, - -2.125557477635500e+05, -2.125492315010705e+05, -2.125421004883951e+05, -2.125343610134322e+05, -2.125260192675401e+05, - -2.125170813475232e+05, -2.125075532575690e+05, -2.124974409111420e+05, -2.124867501328221e+05, -2.124754866601025e+05, - -2.124636561451379e+05, -2.124512641564517e+05, -2.124383161805954e+05, -2.124248176237729e+05, -2.124107738134187e+05, - -2.123961899997416e+05, -2.123810713572273e+05, -2.123654229861046e+05, -2.123492499137794e+05, -2.123325570962286e+05, - -2.123153494193639e+05, -2.122976317003624e+05, -2.122794086889647e+05, -2.122606850687425e+05, -2.122414654583376e+05, - -2.122217544126685e+05, -2.122015564241127e+05, -2.121808759236582e+05, -2.121597172820302e+05, -2.121380848107921e+05, - -2.121159827634197e+05, -2.120934153363509e+05, -2.120703866700142e+05, -2.120469008498308e+05, -2.120229619071962e+05, - -2.119985738204370e+05, -2.119737405157512e+05, -2.119484658681231e+05, -2.119227537022205e+05, -2.118966077932697e+05, - -2.118700318679155e+05, -2.118430296050585e+05, -2.118156046366754e+05, -2.117877605486228e+05, -2.117595008814221e+05, - -2.117308291310299e+05, -2.117017487495873e+05, -2.116722631461596e+05, -2.116423756874558e+05, -2.116120896985342e+05, - -2.115814084634934e+05, -2.115503352261500e+05, -2.115188731907000e+05, -2.114870255223676e+05, -2.114547953480415e+05, - -2.114221857568973e+05, -2.113891998010064e+05, -2.113558404959344e+05, -2.113221108213266e+05, -2.112880137214803e+05, - -2.112535521059078e+05, -2.112187288498879e+05, -2.111835467950041e+05, -2.111480087496743e+05, -2.111121174896715e+05, - -2.110758757586284e+05, -2.110392862685404e+05, -2.110023517002514e+05, -2.109650747039348e+05, -2.109274578995621e+05, - -2.108895038773666e+05, -2.108512151982918e+05, -2.108125943944395e+05, -2.107736439695017e+05, -2.107343663991887e+05, - -2.106947641316476e+05, -2.106548395878739e+05, -2.106145951621149e+05, -2.105740332222643e+05, -2.105331561102520e+05, - -2.104919661424240e+05, -2.104504656099188e+05, -2.104086567790320e+05, -2.103665418915791e+05, -2.103241231652485e+05, - -2.102814027939501e+05, -2.102383829481545e+05, -2.101950657752308e+05, -2.101514533997749e+05, -2.101075479239314e+05, - -2.100633514277127e+05, -2.100188659693113e+05, -2.099740935854045e+05, -2.099290362914558e+05, -2.098836960820126e+05, - -2.098380749309933e+05, -2.097921747919761e+05, -2.097459975984771e+05, -2.096995452642275e+05, -2.096528196834435e+05, - -2.096058227310927e+05, -2.095585562631566e+05, -2.095110221168865e+05, -2.094632221110572e+05, -2.094151580462164e+05, - -2.093668317049269e+05, -2.093182448520085e+05, -2.092693992347736e+05, -2.092202965832601e+05, -2.091709386104589e+05, - -2.091213270125394e+05, -2.090714634690697e+05, -2.090213496432346e+05, -2.089709871820485e+05, -2.089203777165664e+05, - -2.088695228620897e+05, -2.088184242183712e+05, -2.087670833698141e+05, -2.087155018856682e+05, -2.086636813202253e+05, - -2.086116232130077e+05, -2.085593290889600e+05, -2.085068004586276e+05, -2.084540388183435e+05, -2.084010456504041e+05, - -2.083478224232472e+05, -2.082943705916231e+05, -2.082406915967666e+05, -2.081867868665648e+05, -2.081326578157212e+05, - -2.080783058459200e+05, -2.080237323459836e+05, -2.079689386920333e+05, -2.079139262476433e+05, -2.078586963639923e+05, - -2.078032503800155e+05, -2.077475896225533e+05, -2.076917154064945e+05, -2.076356290349243e+05, -2.075793317992619e+05, - -2.075228249794023e+05, -2.074661098438528e+05, -2.074091876498690e+05, -2.073520596435867e+05, -2.072947270601556e+05, - -2.072371911238657e+05, -2.071794530482773e+05, -2.071215140363461e+05, -2.070633752805448e+05, -2.070050379629882e+05, - -2.069465032555525e+05, -2.068877723199903e+05, -2.068288463080529e+05, -2.067697263616015e+05, -2.067104136127219e+05, - -2.066509091838354e+05, -2.065912141878101e+05, -2.065313297280682e+05, -2.064712568986938e+05, -2.064109967845385e+05, - -2.063505504613246e+05, -2.062899189957493e+05, -2.062291034455829e+05, -2.061681048597716e+05, -2.061069242785340e+05, - -2.060455627334575e+05, -2.059840212475955e+05, -2.059223008355615e+05, -2.058604025036200e+05, -2.057983272497797e+05, - -2.057360760638855e+05, -2.056736499277029e+05, -2.056110498150112e+05, -2.055482766916866e+05, -2.054853315157893e+05, - -2.054222152376482e+05, -2.053589287999428e+05, -2.052954731377863e+05, -2.052318491788062e+05, -2.051680578432244e+05, - -2.051041000439364e+05, -2.050399766865884e+05, -2.049756886696544e+05, -2.049112368845121e+05, -2.048466222155173e+05, - -2.047818455400781e+05, -2.047169077287275e+05, -2.046518096451948e+05, -2.045865521464775e+05, -2.045211360829101e+05, - -2.044555622982343e+05, -2.043898316296658e+05, -2.043239449079633e+05, -2.042579029574931e+05, -2.041917065962955e+05, - -2.041253566361510e+05, -2.040588538826412e+05, -2.039921991352134e+05, -2.039253931872437e+05, -2.038584368260978e+05, - -2.037913308331900e+05, -2.037240759840464e+05, -2.036566730483608e+05, -2.035891227900564e+05, -2.035214259673401e+05, - -2.034535833327614e+05, -2.033855956332693e+05, -2.033174636102660e+05, -2.032491879996629e+05, -2.031807695319345e+05, - -2.031122089321725e+05, -2.030435069201378e+05, -2.029746642103127e+05, -2.029056815119533e+05, -2.028365595291395e+05, - -2.027672989608267e+05, -2.026979005008934e+05, -2.026283648381923e+05, -2.025586926565976e+05, -2.024888846350529e+05, - -2.024189414476203e+05, -2.023488637635245e+05, -2.022786522472008e+05, -2.022083075583400e+05, -2.021378303519344e+05, - -2.020672212783212e+05, -2.019964809832272e+05, -2.019256101078128e+05, -2.018546092887134e+05, -2.017834791580836e+05, - -2.017122203436386e+05, -2.016408334686958e+05, -2.015693191522152e+05, -2.014976780088401e+05, -2.014259106489390e+05, - -2.013540176786422e+05, -2.012819996998829e+05, -2.012098573104365e+05, -2.011375911039557e+05, -2.010652016700123e+05, - -2.009926895941318e+05, -2.009200554578313e+05, -2.008472998386558e+05, -2.007744233102148e+05, -2.007014264422180e+05, - -2.006283098005097e+05, -2.005550739471039e+05, -2.004817194402199e+05, -2.004082468343153e+05, -2.003346566801198e+05, - -2.002609495246693e+05, -2.001871259113379e+05, -2.001131863798717e+05, -2.000391314664193e+05, -1.999649617035657e+05, - -1.998906776203618e+05, -1.998162797423578e+05, -1.997417685916318e+05, -1.996671446868225e+05, -1.995924085431566e+05, - -1.995175606724818e+05, -1.994426015832938e+05, -1.993675317807666e+05, -1.992923517667815e+05, -1.992170620399551e+05 - }, - { - 3.678220783485653e+04, 3.512101913154528e+04, 3.343664574615951e+04, 3.172819500692529e+04, 2.999471680468386e+04, - 2.823519844148643e+04, 2.644855887604939e+04, 2.463364227605219e+04, 2.278921077546874e+04, 2.091393631318025e+04, - 1.900639140797914e+04, 1.706503869702563e+04, 1.508821903084088e+04, 1.307413787630725e+04, 1.102084972753644e+04, - 8.926240160746585e+03, 6.788005086398483e+03, 4.603626658189640e+03, 2.370345159452881e+03, 8.512603488265924e+01, - -2.255378979503888e+03, -4.654877944014920e+03, -7.117493689185060e+03, -9.647829807714403e+03, -1.225105040983152e+04, - -1.493297720772834e+04, -1.770020860161929e+04, -2.056026694856594e+04, -2.352178227266180e+04, -2.659472357642561e+04, - -2.979069292503348e+04, -3.312330342275051e+04, -3.660867028843225e+04, -4.026605652698952e+04, -4.411873215098822e+04, - -4.819513142840976e+04, -5.253042866943603e+04, -5.716870030886318e+04, -6.216588906532488e+04, -6.759378104009667e+04, - -7.354494435901054e+04, -8.013738211568142e+04, -8.751369446937619e+04, -9.582029189677355e+04, -1.051430093382623e+05, - -1.153647361562206e+05, -1.258403726377046e+05, -1.353725867620255e+05, -1.433347871895553e+05, -1.497141447763632e+05, - -1.547942702262669e+05, -1.589140981158606e+05, -1.623388138146572e+05, -1.652506030939852e+05, -1.677727444261883e+05, - -1.699906664598082e+05, -1.719654217533375e+05, -1.737419024315971e+05, -1.753539473330729e+05, -1.768276195606884e+05, - -1.781833742770105e+05, -1.794375315168061e+05, -1.806033013824786e+05, -1.816915136410408e+05, -1.827111475472168e+05, - -1.836697236942848e+05, -1.845735986258634e+05, -1.854281896224763e+05, -1.862381484848800e+05, -1.870074974825986e+05, - -1.877397368430342e+05, -1.884379305637214e+05, -1.891047755264795e+05, -1.897426576165712e+05, -1.903536976341655e+05, - -1.909397891188324e+05, -1.915026297165408e+05, -1.920437473524423e+05, -1.925645221969332e+05, -1.930662052028225e+05, - -1.935499338306300e+05, -1.940167454547606e+05, -1.944675888465082e+05, -1.949033340539434e+05, -1.953247809388629e+05, - -1.957326665834076e+05, -1.961276717409937e+05, -1.965104264757044e+05, -1.968815151096785e+05, -1.972414805780716e+05, - -1.975908282748958e+05, -1.979300294597172e+05, -1.982595242842403e+05, -1.985797244887533e+05, -1.988910158109104e+05, - -1.991937601430776e+05, -1.994882974692429e+05, -1.997749476081157e+05, -2.000540117853522e+05, -2.003257740547260e+05, - -2.005905025854186e+05, -2.008484508303728e+05, -2.010998585887139e+05, -2.013449529736241e+05, -2.015839492956365e+05, - -2.018170518701107e+05, -2.020444547565980e+05, -2.022663424369111e+05, -2.024828904379193e+05, -2.026942659044088e+05, - -2.029006281267574e+05, -2.031021290276462e+05, -2.032989136115775e+05, -2.034911203805706e+05, -2.036788817190492e+05, - -2.038623242506283e+05, -2.040415691692325e+05, -2.042167325467329e+05, -2.043879256190804e+05, -2.045552550527108e+05, - -2.047188231928385e+05, -2.048787282950983e+05, -2.050350647418547e+05, -2.051879232443869e+05, -2.053373910320373e+05, - -2.054835520293238e+05, -2.056264870219234e+05, -2.057662738123539e+05, -2.059029873661178e+05, -2.060366999506855e+05, - -2.061674812665244e+05, -2.062953985649736e+05, -2.064205166913708e+05, -2.065428984159232e+05, -2.066626042625095e+05, - -2.067796927611377e+05, -2.068942205013059e+05, -2.070062422188342e+05, -2.071158108766970e+05, -2.072229777360025e+05, - -2.073277924506791e+05, -2.074303031020133e+05, -2.075305562866739e+05, -2.076285971724433e+05, -2.077244695566584e+05, - -2.078182159238529e+05, -2.079098774895953e+05, -2.079994942641087e+05, -2.080871050906386e+05, -2.081727476930917e+05, - -2.082564587191294e+05, -2.083382737811965e+05, -2.084182274956078e+05, -2.084963535198003e+05, -2.085726845878489e+05, - -2.086472525443519e+05, -2.087200883767637e+05, -2.087912222462687e+05, -2.088606835170417e+05, -2.089285007853523e+05, - -2.089947019050836e+05, -2.090593140144586e+05, -2.091223635604398e+05, -2.091838763223181e+05, -2.092438774342971e+05, - -2.093023914071278e+05, -2.093594421488348e+05, -2.094150529845878e+05, -2.094692466757497e+05, -2.095220454381539e+05, - -2.095734709596390e+05, -2.096235444168796e+05, -2.096722864915503e+05, -2.097197173765654e+05, -2.097658568274521e+05, - -2.098107241229884e+05, -2.098543381141420e+05, -2.098967172286955e+05, -2.099378794839971e+05, -2.099778424992343e+05, - -2.100166235072485e+05, -2.100542393659080e+05, -2.100907065690674e+05, -2.101260412571204e+05, -2.101602592271762e+05, - -2.101933759428635e+05, -2.102254065437886e+05, -2.102563658546548e+05, -2.102862683940618e+05, -2.103151283829981e+05, - -2.103429597530360e+05, -2.103697761542472e+05, -2.103955909628436e+05, -2.104204172885619e+05, -2.104442679817961e+05, - -2.104671556404933e+05, -2.104890926168167e+05, -2.105100910235903e+05, -2.105301627405323e+05, -2.105493194202840e+05, - -2.105675724942422e+05, -2.105849331782062e+05, -2.106014124778427e+05, -2.106170211939771e+05, -2.106317699277178e+05, - -2.106456690854195e+05, -2.106587288834939e+05, -2.106709593530667e+05, -2.106823703444974e+05, -2.106929715317543e+05, - -2.107027724166643e+05, -2.107117823330254e+05, -2.107200104506043e+05, -2.107274657790089e+05, -2.107341571714482e+05, - -2.107400933283822e+05, -2.107452828010633e+05, -2.107497339949753e+05, -2.107534551731736e+05, -2.107564544595287e+05, - -2.107587398418764e+05, -2.107603191750790e+05, -2.107612001840017e+05, -2.107613904664020e+05, -2.107608974957402e+05, - -2.107597286239153e+05, -2.107578910839166e+05, -2.107553919941930e+05, -2.107522383545545e+05, -2.107484370578025e+05, - -2.107439948864508e+05, -2.107389185163428e+05, -2.107332145189091e+05, -2.107268893633601e+05, -2.107199494188197e+05, - -2.107124009564107e+05, -2.107042501512746e+05, -2.106955030845497e+05, -2.106861657452902e+05, -2.106762440323412e+05, - -2.106657437561617e+05, -2.106546706406052e+05, -2.106430303246522e+05, -2.106308283641006e+05, -2.106180702332148e+05, - -2.106047613263299e+05, -2.105909069594213e+05, -2.105765123716313e+05, -2.105615827267623e+05, -2.105461231147288e+05, - -2.105301385529795e+05, -2.105136339878805e+05, -2.104966142960678e+05, -2.104790842857674e+05, -2.104610486980829e+05, - -2.104425122082541e+05, -2.104234794268836e+05, -2.104039549011377e+05, -2.103839431159181e+05, -2.103634484950036e+05, - -2.103424754021718e+05, -2.103210281422878e+05, -2.102991109623736e+05, -2.102767280526503e+05, -2.102538835475569e+05, - -2.102305815267470e+05, -2.102068260160644e+05, -2.101826209884916e+05, -2.101579703650862e+05, -2.101328780158843e+05, - -2.101073477607984e+05, -2.100813833704828e+05, -2.100549885671885e+05, -2.100281670255956e+05, -2.100009223736277e+05, - -2.099732581932520e+05, -2.099451780212580e+05, -2.099166853500223e+05, -2.098877836282565e+05, -2.098584762617398e+05, - -2.098287666140342e+05, -2.097986580071869e+05, -2.097681537224177e+05, -2.097372570007906e+05, -2.097059710438744e+05, - -2.096742990143846e+05, -2.096422440368193e+05, -2.096098091980754e+05, -2.095769975480568e+05, -2.095438121002663e+05, - -2.095102558323907e+05, -2.094763316868692e+05, -2.094420425714540e+05, -2.094073913597554e+05, -2.093723808917835e+05, - -2.093370139744702e+05, -2.093012933821888e+05, -2.092652218572561e+05, -2.092288021104333e+05, -2.091920368214083e+05, - -2.091549286392756e+05, -2.091174801830032e+05, -2.090796940418902e+05, -2.090415727760193e+05, -2.090031189166975e+05, - -2.089643349668872e+05, -2.089252234016356e+05, -2.088857866684870e+05, -2.088460271878946e+05, -2.088059473536221e+05, - -2.087655495331367e+05, -2.087248360679966e+05, -2.086838092742293e+05, -2.086424714427073e+05, -2.086008248395103e+05, - -2.085588717062862e+05, -2.085166142606040e+05, -2.084740546962992e+05, -2.084311951838142e+05, -2.083880378705322e+05, - -2.083445848811040e+05, -2.083008383177724e+05, -2.082568002606858e+05, -2.082124727682108e+05, -2.081678578772364e+05, - -2.081229576034751e+05, -2.080777739417558e+05, -2.080323088663144e+05, -2.079865643310779e+05, -2.079405422699443e+05, - -2.078942445970570e+05, -2.078476732070736e+05, -2.078008299754333e+05, -2.077537167586164e+05, -2.077063353944020e+05, - -2.076586877021165e+05, -2.076107754828858e+05, -2.075626005198761e+05, -2.075141645785341e+05, -2.074654694068231e+05, - -2.074165167354529e+05, -2.073673082781092e+05, -2.073178457316770e+05, -2.072681307764603e+05, -2.072181650763994e+05, - -2.071679502792835e+05, -2.071174880169605e+05, -2.070667799055430e+05, -2.070158275456118e+05, -2.069646325224140e+05, - -2.069131964060614e+05, -2.068615207517215e+05, -2.068096070998099e+05, -2.067574569761746e+05, -2.067050718922826e+05, - -2.066524533453999e+05, -2.065996028187692e+05, -2.065465217817873e+05, -2.064932116901759e+05, -2.064396739861525e+05, - -2.063859100985987e+05, -2.063319214432225e+05, -2.062777094227229e+05, -2.062232754269491e+05, -2.061686208330558e+05, - -2.061137470056622e+05, -2.060586552970001e+05, -2.060033470470670e+05, -2.059478235837718e+05, -2.058920862230826e+05, - -2.058361362691690e+05, -2.057799750145435e+05, -2.057236037401999e+05, -2.056670237157518e+05, -2.056102361995671e+05, - -2.055532424389011e+05, -2.054960436700256e+05, -2.054386411183624e+05, -2.053810359986057e+05, -2.053232295148513e+05, - -2.052652228607171e+05, -2.052070172194666e+05, -2.051486137641279e+05, -2.050900136576133e+05, -2.050312180528344e+05, - -2.049722280928172e+05, -2.049130449108155e+05, -2.048536696304216e+05, -2.047941033656782e+05, -2.047343472211836e+05, - -2.046744022922027e+05, -2.046142696647684e+05, -2.045539504157877e+05, -2.044934456131425e+05, -2.044327563157929e+05, - -2.043718835738733e+05, -2.043108284287942e+05, -2.042495919133359e+05, -2.041881750517456e+05, -2.041265788598311e+05, - -2.040648043450536e+05, -2.040028525066183e+05, -2.039407243355659e+05, -2.038784208148616e+05, -2.038159429194824e+05, - -2.037532916165028e+05, -2.036904678651818e+05, -2.036274726170467e+05, -2.035643068159755e+05, -2.035009713982801e+05, - -2.034374672927858e+05, -2.033737954209126e+05, -2.033099566967528e+05, -2.032459520271488e+05, -2.031817823117706e+05, - -2.031174484431910e+05, -2.030529513069602e+05, -2.029882917816795e+05, -2.029234707390727e+05, -2.028584890440605e+05, - -2.027933475548312e+05, -2.027280471229060e+05, -2.026625885932145e+05, -2.025969728041574e+05, -2.025312005876768e+05, - -2.024652727693220e+05, -2.023991901683148e+05, -2.023329535976124e+05, -2.022665638639747e+05, -2.022000217680239e+05, - -2.021333281043095e+05, -2.020664836613678e+05, -2.019994892217831e+05, -2.019323455622480e+05, -2.018650534536213e+05, - -2.017976136609887e+05, -2.017300269437176e+05, -2.016622940555163e+05, -2.015944157444887e+05, -2.015263927531904e+05, - -2.014582258186844e+05, -2.013899156725933e+05, -2.013214630411548e+05, -2.012528686452722e+05, -2.011841332005696e+05, - -2.011152574174405e+05, -2.010462420011011e+05, -2.009770876516387e+05, -2.009077950640614e+05, -2.008383649283502e+05, - -2.007687979295028e+05, -2.006990947475850e+05, -2.006292560577771e+05, -2.005592825304194e+05, -2.004891748310599e+05, - -2.004189336205003e+05, -2.003485595548383e+05, -2.002780532855167e+05, -2.002074154593617e+05, -2.001366467186325e+05, - -2.000657477010586e+05, -1.999947190398872e+05, -1.999235613639219e+05, -1.998522752975643e+05, -1.997808614608583e+05, - -1.997093204695262e+05, -1.996376529350120e+05, -1.995658594645189e+05, -1.994939406610503e+05, -1.994218971234471e+05, - -1.993497294464264e+05, -1.992774382206192e+05, -1.992050240326075e+05, -1.991324874649631e+05, -1.990598290962799e+05, - -1.989870495012153e+05, -1.989141492505221e+05, -1.988411289110843e+05, -1.987679890459543e+05, -1.986947302143844e+05, - -1.986213529718622e+05, -1.985478578701452e+05, -1.984742454572924e+05, -1.984005162776989e+05, -1.983266708721275e+05, - -1.982527097777403e+05, -1.981786335281330e+05, -1.981044426533636e+05, -1.980301376799858e+05, -1.979557191310776e+05, - -1.978811875262743e+05, -1.978065433817978e+05, -1.977317872104841e+05, -1.976569195218163e+05, -1.975819408219521e+05 - }, - { - 3.766866736880577e+04, 3.601915121928482e+04, 3.434693429718210e+04, 3.265115747094340e+04, 3.093090734818167e+04, - 2.918521150958800e+04, 2.741303319714723e+04, 2.561326537692458e+04, 2.378472408696217e+04, 2.192614096156060e+04, - 2.003615480550352e+04, 1.811330206761730e+04, 1.615600603464766e+04, 1.416256453119251e+04, 1.213113586840574e+04, - 1.005972273091343e+04, 7.946153625700093e+03, 5.788061430861091e+03, 3.582858486943028e+03, 1.327707529078886e+03, - -9.805123966726903e+02, -3.345246109974386e+03, -5.770309916532103e+03, -8.259948380889145e+03, -1.081890242850181e+04, - -1.345249157075257e+04, -1.616671386608407e+04, -1.896836832820341e+04, -2.186520597513634e+04, -2.486611774057680e+04, - -2.798137019466157e+04, -3.122290398913492e+04, -3.460471508463987e+04, -3.814334645187113e+04, -4.185852819428735e+04, - -4.577401822379154e+04, -4.991871406294471e+04, -5.432812746983259e+04, -5.904632810173272e+04, -6.412843647361444e+04, - -6.964357195474775e+04, -7.567752350894551e+04, -8.233252045273298e+04, -8.971709445462469e+04, -9.791342169618951e+04, - -1.069106915213053e+05, -1.164785818170083e+05, -1.259663707555690e+05, -1.345096832061930e+05, -1.417443995689220e+05, - -1.476793935947588e+05, -1.525197632366125e+05, -1.565166569947143e+05, -1.598804479783506e+05, -1.627649435981190e+05, - -1.652788422146064e+05, -1.674996386342475e+05, -1.694838161558455e+05, -1.712735291565141e+05, -1.729009324025090e+05, - -1.743910350477753e+05, -1.757636265177378e+05, -1.770346061733375e+05, -1.782169211703933e+05, -1.793212412796282e+05, - -1.803564535166776e+05, -1.813300309339727e+05, -1.822483118989956e+05, -1.831167145813694e+05, -1.839399037785706e+05, - -1.847219221566854e+05, -1.854662945615351e+05, -1.861761116999189e+05, -1.868540978418136e+05, -1.875026660218648e+05, - -1.881239633724256e+05, -1.887199086014578e+05, -1.892922231702044e+05, -1.898424573821219e+05, -1.903720123346243e+05, - -1.908821584866004e+05, -1.913740514416050e+05, -1.918487454277659e+05, -1.923072048624427e+05, -1.927503143164273e+05, - -1.931788871344263e+05, -1.935936729222811e+05, -1.939953640742907e+05, -1.943846014840971e+05, -1.947619795583905e+05, - -1.951280506329866e+05, -1.954833288747273e+05, -1.958282937394375e+05, -1.961633930452624e+05, -1.964890457117028e+05, - -1.968056442071517e+05, -1.971135567414911e+05, -1.974131292350682e+05, -1.977046870909690e+05, -1.979885367937997e+05, - -1.982649673550467e+05, -1.985342516224220e+05, -1.987966474683392e+05, -1.990523988707174e+05, -1.993017368976671e+05, - -1.995448806061748e+05, -1.997820378636853e+05, -2.000134061004155e+05, -2.002391729993190e+05, -2.004595171298278e+05, - -2.006746085307930e+05, -2.008846092474581e+05, -2.010896738267559e+05, -2.012899497747620e+05, -2.014855779797384e+05, - -2.016766931038261e+05, -2.018634239461476e+05, -2.020458937797871e+05, -2.022242206648835e+05, -2.023985177398325e+05, - -2.025688934924217e+05, -2.027354520125336e+05, -2.028982932278975e+05, -2.030575131242481e+05, -2.032132039511035e+05, - -2.033654544142810e+05, -2.035143498561629e+05, -2.036599724246345e+05, -2.038024012315426e+05, -2.039417125020956e+05, - -2.040779797177940e+05, -2.042112737450434e+05, -2.043416629572462e+05, -2.044692132447200e+05, -2.045939884721360e+05, - -2.047160501487217e+05, -2.048354577662270e+05, -2.049522688588895e+05, -2.050665390583066e+05, -2.051783221975344e+05, - -2.052876703833711e+05, -2.053946340700362e+05, -2.054992621289483e+05, -2.056016019148546e+05, -2.057016993306403e+05, - -2.057995988782242e+05, -2.058953437281921e+05, -2.059889757644610e+05, -2.060805356375379e+05, -2.061700628129753e+05, - -2.062575956174643e+05, -2.063431712826983e+05, -2.064268259871428e+05, -2.065085948958207e+05, -2.065885121982339e+05, - -2.066666111445190e+05, -2.067429240799383e+05, -2.068174824777950e+05, -2.068903169705888e+05, -2.069614573811384e+05, - -2.070309327495719e+05, -2.070987713619002e+05, -2.071650007759445e+05, -2.072296478464242e+05, -2.072927387489682e+05, - -2.073542990031048e+05, -2.074143534942809e+05, -2.074729264949623e+05, -2.075300416848555e+05, -2.075857221703022e+05, - -2.076399905028779e+05, -2.076928686972420e+05, -2.077443782482678e+05, -2.077945401474944e+05, -2.078433748989249e+05, - -2.078909025342080e+05, -2.079371426158686e+05, -2.079821142960343e+05, -2.080258362639808e+05, -2.080683268023531e+05, - -2.081096037890210e+05, -2.081496847091025e+05, -2.081885866665401e+05, -2.082263263952507e+05, -2.082629202698678e+05, - -2.082983843160944e+05, -2.083327342206815e+05, -2.083659853410509e+05, -2.083981527145768e+05, -2.084292510675379e+05, - -2.084592948237592e+05, -2.084882981129503e+05, -2.085162747787595e+05, -2.085432383865481e+05, -2.085692022309035e+05, - -2.085941793428966e+05, -2.086181824970951e+05, -2.086412242183455e+05, -2.086633167883286e+05, -2.086844722518991e+05, - -2.087047024232200e+05, -2.087240188916968e+05, -2.087424330277197e+05, -2.087599559882240e+05, -2.087765987220728e+05, - -2.087923719752671e+05, -2.088072862959976e+05, -2.088213520395339e+05, -2.088345793729640e+05, -2.088469782797895e+05, - -2.088585585643775e+05, -2.088693298562784e+05, -2.088793016144130e+05, -2.088884831311344e+05, -2.088968835361680e+05, - -2.089045118004340e+05, -2.089113767397591e+05, -2.089174870184778e+05, -2.089228511529294e+05, -2.089274775148531e+05, - -2.089313743346873e+05, -2.089345497047706e+05, -2.089370115824578e+05, -2.089387677931407e+05, -2.089398260331897e+05, - -2.089401938728110e+05, -2.089398787588224e+05, -2.089388880181728e+05, -2.089372288577711e+05, -2.089349083705736e+05, - -2.089319335361330e+05, -2.089283112234029e+05, -2.089240481930918e+05, -2.089191510999521e+05, -2.089136264950109e+05, - -2.089074808277418e+05, -2.089007204481772e+05, -2.088933516089687e+05, -2.088853804673915e+05, -2.088768130872966e+05, - -2.088676554410169e+05, -2.088579134112188e+05, -2.088475927927112e+05, -2.088366992942059e+05, -2.088252385400365e+05, - -2.088132160718314e+05, -2.088006373501450e+05, -2.087875077560541e+05, -2.087738325927053e+05, -2.087596170868339e+05, - -2.087448663902402e+05, -2.087295855812302e+05, -2.087137796660246e+05, -2.086974535801307e+05, -2.086806121896841e+05, - -2.086632602927556e+05, -2.086454026206294e+05, -2.086270438390504e+05, -2.086081885494431e+05, -2.085888412901001e+05, - -2.085690065373445e+05, -2.085486887066658e+05, -2.085278921538287e+05, -2.085066211759556e+05, -2.084848800125874e+05, - -2.084626728467179e+05, -2.084400038058051e+05, -2.084168769627601e+05, -2.083932963369144e+05, -2.083692658949647e+05, - -2.083447895518978e+05, -2.083198711718942e+05, -2.082945145692125e+05, -2.082687235090538e+05, -2.082425017084081e+05, - -2.082158528368817e+05, -2.081887805175072e+05, -2.081612883275363e+05, -2.081333797992145e+05, -2.081050584205416e+05, - -2.080763276360121e+05, -2.080471908473455e+05, -2.080176514141973e+05, -2.079877126548549e+05, -2.079573778469209e+05, - -2.079266502279841e+05, -2.078955329962694e+05, -2.078640293112835e+05, -2.078321422944408e+05, -2.077998750296795e+05, - -2.077672305640638e+05, -2.077342119083766e+05, -2.077008220376945e+05, -2.076670638919597e+05, -2.076329403765324e+05, - -2.075984543627373e+05, -2.075636086883968e+05, -2.075284061583560e+05, -2.074928495449955e+05, -2.074569415887329e+05, - -2.074206849985192e+05, -2.073840824523206e+05, -2.073471365975940e+05, -2.073098500517521e+05, -2.072722254026212e+05, - -2.072342652088867e+05, -2.071959720005342e+05, -2.071573482792808e+05, -2.071183965189963e+05, -2.070791191661198e+05, - -2.070395186400665e+05, -2.069995973336259e+05, -2.069593576133573e+05, -2.069188018199707e+05, -2.068779322687079e+05, - -2.068367512497119e+05, -2.067952610283909e+05, -2.067534638457772e+05, -2.067113619188766e+05, -2.066689574410141e+05, - -2.066262525821721e+05, -2.065832494893230e+05, -2.065399502867555e+05, -2.064963570763951e+05, -2.064524719381199e+05, - -2.064082969300687e+05, -2.063638340889464e+05, -2.063190854303215e+05, -2.062740529489203e+05, -2.062287386189146e+05, - -2.061831443942054e+05, -2.061372722087019e+05, -2.060911239765927e+05, -2.060447015926188e+05, -2.059980069323331e+05, - -2.059510418523648e+05, -2.059038081906711e+05, -2.058563077667905e+05, -2.058085423820896e+05, -2.057605138200038e+05, - -2.057122238462791e+05, -2.056636742092031e+05, -2.056148666398381e+05, -2.055658028522483e+05, -2.055164845437212e+05, - -2.054669133949897e+05, -2.054170910704434e+05, -2.053670192183472e+05, -2.053166994710442e+05, -2.052661334451657e+05, - -2.052153227418307e+05, -2.051642689468456e+05, -2.051129736309009e+05, -2.050614383497624e+05, -2.050096646444606e+05, - -2.049576540414791e+05, -2.049054080529354e+05, -2.048529281767642e+05, -2.048002158968931e+05, -2.047472726834186e+05, - -2.046940999927784e+05, -2.046406992679205e+05, -2.045870719384699e+05, -2.045332194208946e+05, -2.044791431186650e+05, - -2.044248444224145e+05, -2.043703247100962e+05, -2.043155853471378e+05, -2.042606276865931e+05, -2.042054530692906e+05, - -2.041500628239841e+05, -2.040944582674954e+05, -2.040386407048569e+05, -2.039826114294553e+05, -2.039263717231688e+05, - -2.038699228565029e+05, -2.038132660887264e+05, -2.037564026680040e+05, -2.036993338315271e+05, -2.036420608056418e+05, - -2.035845848059761e+05, -2.035269070375660e+05, -2.034690286949772e+05, -2.034109509624279e+05, -2.033526750139066e+05, - -2.032942020132932e+05, -2.032355331144711e+05, -2.031766694614452e+05, -2.031176121884537e+05, -2.030583624200783e+05, - -2.029989212713550e+05, -2.029392898478824e+05, -2.028794692459280e+05, -2.028194605525328e+05, -2.027592648456156e+05, - -2.026988831940748e+05, -2.026383166578891e+05, -2.025775662882168e+05, -2.025166331274946e+05, -2.024555182095324e+05, - -2.023942225596107e+05, -2.023327471945721e+05, -2.022710931229158e+05, -2.022092613448881e+05, -2.021472528525727e+05, - -2.020850686299795e+05, -2.020227096531325e+05, -2.019601768901557e+05, -2.018974713013586e+05, -2.018345938393211e+05, - -2.017715454489746e+05, -2.017083270676858e+05, -2.016449396253376e+05, -2.015813840444056e+05, -2.015176612400416e+05, - -2.014537721201469e+05, -2.013897175854514e+05, -2.013254985295882e+05, -2.012611158391680e+05, -2.011965703938538e+05, - -2.011318630664320e+05, -2.010669947228842e+05, -2.010019662224593e+05, -2.009367784177428e+05, -2.008714321547240e+05, - -2.008059282728664e+05, -2.007402676051726e+05, -2.006744509782531e+05, -2.006084792123893e+05, -2.005423531215996e+05, - -2.004760735137018e+05, -2.004096411903779e+05, -2.003430569472338e+05, -2.002763215738640e+05, -2.002094358539080e+05, - -2.001424005651133e+05, -2.000752164793934e+05, -2.000078843628864e+05, -1.999404049760106e+05, -1.998727790735260e+05, - -1.998050074045851e+05, -1.997370907127914e+05, -1.996690297362530e+05, -1.996008252076393e+05, -1.995324778542292e+05, - -1.994639883979697e+05, -1.993953575555242e+05, -1.993265860383248e+05, -1.992576745526236e+05, -1.991886237995436e+05, - -1.991194344751270e+05, -1.990501072703840e+05, -1.989806428713431e+05, -1.989110419590970e+05, -1.988413052098516e+05, - -1.987714332949708e+05, -1.987014268810238e+05, -1.986312866298313e+05, -1.985610131985096e+05, -1.984906072395144e+05, - -1.984200694006862e+05, -1.983494003252939e+05, -1.982786006520766e+05, -1.982076710152864e+05, -1.981366120447312e+05, - -1.980654243658143e+05, -1.979941085995778e+05, -1.979226653627416e+05, -1.978510952677431e+05, -1.977793989227784e+05, - -1.977075769318393e+05, -1.976356298947541e+05, -1.975635584072240e+05, -1.974913630608619e+05, -1.974190444432298e+05, - -1.973466031378743e+05, -1.972740397243664e+05, -1.972013547783331e+05, -1.971285488714961e+05, -1.970556225717065e+05, - -1.969825764429803e+05, -1.969094110455301e+05, -1.968361269358025e+05, -1.967627246665107e+05, -1.966892047866664e+05, - -1.966155678416149e+05, -1.965418143730662e+05, -1.964679449191277e+05, -1.963939600143367e+05, -1.963198601896910e+05, - -1.962456459726803e+05, -1.961713178873166e+05, -1.960968764541659e+05, -1.960223221903780e+05, -1.959476556097145e+05 - }, - { - 3.855610672935705e+04, 3.691812802456004e+04, 3.525792108753177e+04, 3.357465899936478e+04, 3.186746358076416e+04, - 3.013540098318754e+04, 2.837747678648532e+04, 2.659263053244938e+04, 2.477972961574392e+04, 2.293756243678855e+04, - 2.106483070620921e+04, 1.916014077005362e+04, 1.722199380066109e+04, 1.524877466886200e+04, 1.323873927697226e+04, - 1.119000008796648e+04, 9.100509531684456e+03, 6.968040901845228e+03, 4.790166269779366e+03, 2.564230844946635e+03, - 2.873230641304865e+02, -2.043760463742487e+03, -4.432556253274857e+03, -6.882982848753507e+03, -9.399399067890541e+03, - -1.198667377395223e+04, -1.465026997366532e+04, -1.739634683695931e+04, -2.023188429287058e+04, -2.316483627308107e+04, - -2.620432052430430e+04, -2.936085556145416e+04, -3.264665858861295e+04, -3.607602295413177e+04, -3.966579968427964e+04, - -4.343601541624252e+04, -4.741066817526644e+04, -5.161875092306572e+04, -5.609555357420466e+04, -6.088426606591623e+04, - -6.603778896018102e+04, -7.162029897947352e+04, -7.770715436085066e+04, -8.437956505009609e+04, -9.170723267938745e+04, - -9.971187237618711e+04, -1.083081966722645e+05, -1.172038624889172e+05, -1.258161634331764e+05, -1.335431031157475e+05, - -1.401686406725761e+05, -1.457112558540109e+05, -1.503233018466806e+05, -1.541935792064851e+05, -1.574889531931140e+05, - -1.603383263190371e+05, -1.628367581879226e+05, -1.650540532462805e+05, -1.670421467594064e+05, -1.688403911857731e+05, - -1.704791625091817e+05, -1.719823162230439e+05, -1.733688826025912e+05, -1.746542574426343e+05, -1.758510534956737e+05, - -1.769697199863278e+05, -1.780190009483111e+05, -1.790062796866375e+05, -1.799378414653454e+05, -1.808190765358123e+05, - -1.816546389776877e+05, -1.824485723454506e+05, -1.832044100507893e+05, -1.839252562856241e+05, -1.846138517936791e+05, - -1.852726277286055e+05, -1.859037500610742e+05, -1.865091564274487e+05, -1.870905868888065e+05, -1.876496097501932e+05, - -1.881876433475201e+05, -1.887059745234504e+05, -1.892057743695460e+05, -1.896881116995359e+05, -1.901539646302180e+05, - -1.906042305766142e+05, -1.910397349123517e+05, -1.914612385017025e+05, -1.918694442738652e+05, -1.922650029810562e+05, - -1.926485182584284e+05, -1.930205510845612e+05, -1.933816237254986e+05, -1.937322232323138e+05, -1.940728045514213e+05, - -1.944037932979529e+05, -1.947255882350734e+05, -1.950385634959076e+05, -1.953430705795306e+05, -1.956394401480957e+05, - -1.959279836484641e+05, -1.962089947785548e+05, -1.964827508159799e+05, -1.967495138242418e+05, -1.970095317498286e+05, - -1.972630394218820e+05, -1.975102594646679e+05, -1.977514031318563e+05, -1.979866710705351e+05, -1.982162540219695e+05, - -1.984403334653080e+05, -1.986590822097326e+05, -1.988726649399516e+05, -1.990812387193805e+05, -1.992849534549114e+05, - -1.994839523267337e+05, -1.996783721863289e+05, -1.998683439254244e+05, -2.000539928184252e+05, -2.002354388405767e+05, - -2.004127969638999e+05, -2.005861774327379e+05, -2.007556860205810e+05, -2.009214242696738e+05, -2.010834897147764e+05, - -2.012419760923189e+05, -2.013969735360803e+05, -2.015485687604232e+05, -2.016968452320157e+05, -2.018418833310842e+05, - -2.019837605055153e+05, -2.021225514121945e+05, -2.022583280478588e+05, -2.023911597831628e+05, -2.025211137774469e+05, - -2.026482547224251e+05, -2.027726451561037e+05, -2.028943455164963e+05, -2.030134142352853e+05, -2.031299078263126e+05, - -2.032438809692424e+05, -2.033553865886993e+05, -2.034644759314076e+05, -2.035711986280663e+05, -2.036756027744995e+05, - -2.037777349859327e+05, -2.038776404599087e+05, -2.039753630337120e+05, -2.040709452389032e+05, -2.041644283531491e+05, - -2.042558524494915e+05, -2.043452564432210e+05, -2.044326781364845e+05, -2.045181542607560e+05, -2.046017205173019e+05, - -2.046834116157384e+05, -2.047632613108039e+05, -2.048413024370928e+05, -2.049175669439150e+05, -2.049920859251298e+05, - -2.050648896511217e+05, -2.051360075975990e+05, -2.052054684734786e+05, -2.052733002475524e+05, -2.053395301740027e+05, - -2.054041848168182e+05, -2.054672900731752e+05, -2.055288711958299e+05, -2.055889528145763e+05, -2.056475589568119e+05, - -2.057047130672584e+05, -2.057604380268773e+05, -2.058147561710222e+05, -2.058676893068592e+05, -2.059192587300949e+05, - -2.059694852410452e+05, -2.060183891600721e+05, -2.060659903424223e+05, -2.061123081924904e+05, -2.061573616638274e+05, - -2.062011693263677e+05, -2.062437492993031e+05, -2.062851193157262e+05, -2.063252967214921e+05, -2.063642984865579e+05, - -2.064021412159059e+05, -2.064388411600679e+05, -2.064744142252750e+05, -2.065088759832399e+05, -2.065422416805933e+05, - -2.065745262479875e+05, -2.066057443088822e+05, -2.066359101880228e+05, -2.066650379196279e+05, -2.066931412552940e+05, - -2.067202336716352e+05, -2.067463283776583e+05, -2.067714383218961e+05, -2.067955761993008e+05, -2.068187544579068e+05, - -2.068409853052780e+05, -2.068622807147431e+05, -2.068826524314258e+05, -2.069021119780857e+05, -2.069206706607679e+05, - -2.069383395742732e+05, -2.069551296074580e+05, -2.069710514483662e+05, -2.069861155891987e+05, -2.070003323311324e+05, - -2.070137117889888e+05, -2.070262638957598e+05, -2.070379984069954e+05, -2.070489249050601e+05, -2.070590528032599e+05, - -2.070683913498468e+05, -2.070769496319035e+05, -2.070847365791152e+05, -2.070917609674287e+05, -2.070980314226070e+05, - -2.071035564236786e+05, -2.071083443062893e+05, -2.071124032659573e+05, -2.071157413612351e+05, -2.071183665167831e+05, - -2.071202865263555e+05, -2.071215090557034e+05, -2.071220416453986e+05, -2.071218917138806e+05, -2.071210665593582e+05, - -2.071195733629129e+05, -2.071174191910934e+05, -2.071146109982571e+05, -2.071111556289635e+05, -2.071070598202996e+05, - -2.071023302041455e+05, -2.070969733093775e+05, -2.070909955640189e+05, -2.070844032973284e+05, -2.070772027418374e+05, - -2.070694000353346e+05, -2.070610012227970e+05, -2.070520122582754e+05, -2.070424390067295e+05, -2.070322872458149e+05, - -2.070215626676298e+05, -2.070102708804119e+05, -2.069984174101998e+05, -2.069860077024466e+05, -2.069730471235981e+05, - -2.069595409626307e+05, -2.069454944325510e+05, -2.069309126718606e+05, -2.069158007459852e+05, -2.069001636486663e+05, - -2.068840063033250e+05, -2.068673335643888e+05, -2.068501502185880e+05, -2.068324609862239e+05, -2.068142705224029e+05, - -2.067955834182453e+05, -2.067764042020667e+05, -2.067567373405264e+05, -2.067365872397566e+05, -2.067159582464608e+05, - -2.066948546489882e+05, -2.066732806783858e+05, -2.066512405094239e+05, -2.066287382615998e+05, -2.066057780001192e+05, - -2.065823637368560e+05, -2.065584994312889e+05, -2.065341889914213e+05, -2.065094362746751e+05, -2.064842450887706e+05, - -2.064586191925849e+05, -2.064325622969903e+05, -2.064060780656775e+05, -2.063791701159585e+05, -2.063518420195545e+05, - -2.063240973033649e+05, -2.062959394502220e+05, -2.062673718996283e+05, -2.062383980484789e+05, -2.062090212517694e+05, - -2.061792448232869e+05, -2.061490720362903e+05, -2.061185061241721e+05, -2.060875502811115e+05, -2.060562076627086e+05, - -2.060244813866113e+05, -2.059923745331242e+05, -2.059598901458103e+05, -2.059270312320768e+05, -2.058938007637494e+05, - -2.058602016776380e+05, -2.058262368760889e+05, -2.057919092275249e+05, -2.057572215669778e+05, -2.057221766966086e+05, - -2.056867773862184e+05, -2.056510263737476e+05, -2.056149263657667e+05, -2.055784800379589e+05, -2.055416900355910e+05, - -2.055045589739761e+05, -2.054670894389285e+05, -2.054292839872087e+05, -2.053911451469604e+05, -2.053526754181393e+05, - -2.053138772729330e+05, -2.052747531561759e+05, -2.052353054857521e+05, -2.051955366529941e+05, -2.051554490230726e+05, - -2.051150449353803e+05, -2.050743267039069e+05, -2.050332966176082e+05, -2.049919569407701e+05, -2.049503099133620e+05, - -2.049083577513887e+05, -2.048661026472311e+05, -2.048235467699843e+05, -2.047806922657898e+05, -2.047375412581566e+05, - -2.046940958482856e+05, -2.046503581153782e+05, -2.046063301169480e+05, -2.045620138891215e+05, -2.045174114469359e+05, - -2.044725247846322e+05, -2.044273558759400e+05, -2.043819066743615e+05, -2.043361791134490e+05, -2.042901751070762e+05, - -2.042438965497056e+05, -2.041973453166535e+05, -2.041505232643471e+05, -2.041034322305812e+05, -2.040560740347644e+05, - -2.040084504781680e+05, -2.039605633441676e+05, -2.039124143984799e+05, -2.038640053893965e+05, -2.038153380480135e+05, - -2.037664140884591e+05, -2.037172352081144e+05, -2.036678030878323e+05, -2.036181193921527e+05, -2.035681857695149e+05, - -2.035180038524652e+05, -2.034675752578602e+05, -2.034169015870709e+05, -2.033659844261798e+05, -2.033148253461751e+05, - -2.032634259031433e+05, -2.032117876384583e+05, -2.031599120789677e+05, -2.031078007371741e+05, -2.030554551114166e+05, - -2.030028766860481e+05, -2.029500669316069e+05, -2.028970273049942e+05, -2.028437592496360e+05, -2.027902641956554e+05, - -2.027365435600333e+05, -2.026825987467695e+05, -2.026284311470445e+05, -2.025740421393725e+05, -2.025194330897563e+05, - -2.024646053518406e+05, -2.024095602670591e+05, -2.023542991647828e+05, -2.022988233624652e+05, -2.022431341657831e+05, - -2.021872328687801e+05, -2.021311207540014e+05, -2.020747990926344e+05, -2.020182691446379e+05, -2.019615321588797e+05, - -2.019045893732636e+05, -2.018474420148587e+05, -2.017900913000262e+05, -2.017325384345441e+05, -2.016747846137308e+05, - -2.016168310225642e+05, -2.015586788358027e+05, -2.015003292181031e+05, -2.014417833241356e+05, -2.013830422986979e+05, - -2.013241072768284e+05, -2.012649793839189e+05, -2.012056597358197e+05, -2.011461494389515e+05, -2.010864495904098e+05, - -2.010265612780710e+05, -2.009664855806940e+05, -2.009062235680243e+05, -2.008457763008933e+05, -2.007851448313158e+05, - -2.007243302025916e+05, -2.006633334493981e+05, -2.006021555978880e+05, -2.005407976657813e+05, -2.004792606624570e+05, - -2.004175455890492e+05, -2.003556534385293e+05, -2.002935851958005e+05, -2.002313418377838e+05, -2.001689243335037e+05, - -2.001063336441733e+05, -2.000435707232790e+05, -1.999806365166621e+05, -1.999175319626021e+05, -1.998542579918963e+05, - -1.997908155279391e+05, -1.997272054868023e+05, -1.996634287773094e+05, -1.995994863011146e+05, -1.995353789527786e+05, - -1.994711076198399e+05, -1.994066731828911e+05, -1.993420765156509e+05, -1.992773184850349e+05, -1.992123999512263e+05, - -1.991473217677459e+05, -1.990820847815211e+05, -1.990166898329523e+05, -1.989511377559833e+05, -1.988854293781626e+05, - -1.988195655207137e+05, -1.987535469985954e+05, -1.986873746205689e+05, -1.986210491892571e+05, -1.985545715012098e+05, - -1.984879423469641e+05, -1.984211625111026e+05, -1.983542327723170e+05, -1.982871539034636e+05, -1.982199266716246e+05, - -1.981525518381618e+05, -1.980850301587771e+05, -1.980173623835666e+05, -1.979495492570770e+05, -1.978815915183587e+05, - -1.978134899010205e+05, -1.977452451332860e+05, -1.976768579380403e+05, -1.976083290328882e+05, -1.975396591301994e+05, - -1.974708489371663e+05, -1.974018991558481e+05, -1.973328104832243e+05, -1.972635836112404e+05, -1.971942192268606e+05, - -1.971247180121112e+05, -1.970550806441297e+05, -1.969853077952127e+05, -1.969154001328597e+05, -1.968453583198200e+05, - -1.967751830141376e+05, -1.967048748691946e+05, -1.966344345337577e+05, -1.965638626520188e+05, -1.964931598636387e+05, - -1.964223268037909e+05, -1.963513641032021e+05, -1.962802723881943e+05, -1.962090522807244e+05, -1.961377043984279e+05, - -1.960662293546546e+05, -1.959946277585112e+05, -1.959229002148998e+05, -1.958510473245555e+05, -1.957790696840858e+05, - -1.957069678860079e+05, -1.956347425187849e+05, -1.955623941668652e+05, -1.954899234107170e+05, -1.954173308268641e+05, - -1.953446169879232e+05, -1.952717824626376e+05, -1.951988278159137e+05, -1.951257536088537e+05, -1.950525603987890e+05, - -1.949792487393189e+05, -1.949058191803370e+05, -1.948322722680680e+05, -1.947586085451016e+05, -1.946848285504206e+05, - -1.946109328194360e+05, -1.945369218840171e+05, -1.944627962725241e+05, -1.943885565098351e+05, -1.943142031173828e+05 - }, - { - 3.944452465223097e+04, 3.781795053761604e+04, 3.616960968105727e+04, 3.449870610682075e+04, 3.280439541337342e+04, - 3.108578069575783e+04, 2.934190802189547e+04, 2.757176140035370e+04, 2.577425717073657e+04, 2.394823773298898e+04, - 2.209246451938491e+04, 2.020561009553046e+04, 1.828624925642311e+04, 1.633284895871718e+04, 1.434375690062696e+04, - 1.231718852402605e+04, 1.025121216859085e+04, 8.143732052535047e+03, 5.992468686916972e+03, 3.794936241297009e+03, - 1.548416283996246e+03, -7.500728305165189e+02, -3.103811806231278e+03, -5.516422583604591e+03, -7.991918221090707e+03, - -1.053476219886397e+04, -1.314993931176650e+04, -1.584304089872681e+04, -1.862036790989146e+04, -2.148905629582575e+04, - -2.445723049735617e+04, -2.753419242997337e+04, -3.073065570226338e+04, -3.405903734946949e+04, -3.753382308962905e+04, - -4.117202608712520e+04, -4.499376342643698e+04, -4.902297692523543e+04, -5.328832053087141e+04, -5.782421208188579e+04, - -6.267196936298938e+04, -6.788073931790850e+04, -7.350741171074614e+04, -7.961359768104495e+04, -8.625597273612056e+04, - -9.346535183767053e+04, -1.012130055546949e+05, -1.093629562287535e+05, -1.176045437386157e+05, -1.254534838240851e+05, - -1.324979951256666e+05, -1.386062521066816e+05, -1.438006187132492e+05, -1.481969976223502e+05, -1.519395176001627e+05, - -1.551609316023159e+05, -1.579687520411946e+05, -1.604455113982180e+05, -1.626536571147486e+05, -1.646406597385879e+05, - -1.664430599716110e+05, -1.680894067335415e+05, -1.696023392454517e+05, -1.710000634691662e+05, -1.722974095885436e+05, - -1.735065995271986e+05, -1.746378120256076e+05, -1.756996047200638e+05, -1.766992338923785e+05, -1.776428999883584e+05, - -1.785359385361976e+05, -1.793829703494491e+05, -1.801880209636549e+05, -1.809546165319601e+05, -1.816858614978208e+05, - -1.823845020104640e+05, -1.830529780770846e+05, -1.836934667383881e+05, -1.843079180325199e+05, -1.848980851230482e+05, - -1.854655496727259e+05, -1.860117433204233e+05, -1.865379659457982e+05, -1.870454012719259e+05, -1.875351302508510e+05, - -1.880081425939426e+05, -1.884653467429192e+05, -1.889075785246359e+05, -1.893356086903023e+05, -1.897501495055122e+05, - -1.901518605296102e+05, -1.905413537002059e+05, -1.909191978200280e+05, -1.912859225279747e+05, -1.916420218235751e+05, - -1.919879572035659e+05, -1.923241604605525e+05, -1.926510361864226e+05, -1.929689640170669e+05, -1.932783006498080e+05, - -1.935793816606053e+05, -1.938725231444253e+05, -1.941580231990484e+05, -1.944361632699312e+05, -1.947072093714731e+05, - -1.949714131980929e+05, -1.952290131368621e+05, -1.954802351919993e+05, -1.957252938302936e+05, -1.959643927554551e+05, - -1.961977256184617e+05, -1.964254766701600e+05, -1.966478213616780e+05, -1.968649268975873e+05, -1.970769527462206e+05, - -1.972840511110727e+05, -1.974863673667977e+05, -1.976840404629560e+05, -1.978772032983327e+05, -1.980659830683711e+05, - -1.982505015880069e+05, -1.984308755919696e+05, -1.986072170144100e+05, -1.987796332495445e+05, -1.989482273948418e+05, - -1.991130984781346e+05, -1.992743416699219e+05, -1.994320484819989e+05, -1.995863069534644e+05, -1.997372018200572e+05, - -1.998848147000667e+05, -2.000292242180654e+05, -2.001705061669625e+05, -2.003087335672443e+05, -2.004439770135175e+05, - -2.005763045342444e+05, -2.007057818472394e+05, -2.008324724365509e+05, -2.009564376531984e+05, -2.010777368102893e+05, - -2.011964272728913e+05, -2.013125645451432e+05, -2.014262023418729e+05, -2.015373926781171e+05, -2.016461859320284e+05, - -2.017526309155158e+05, -2.018567749390089e+05, -2.019586638729020e+05, -2.020583422058822e+05, -2.021558531003309e+05, - -2.022512384449683e+05, -2.023445389049089e+05, -2.024357939692763e+05, -2.025250419965193e+05, -2.026123202575608e+05, - -2.026976649769019e+05, -2.027811113718010e+05, -2.028626936892499e+05, -2.029424452431508e+05, -2.030203984459580e+05, - -2.030965848427634e+05, -2.031710351418972e+05, -2.032437792445637e+05, -2.033148462731735e+05, -2.033842645984383e+05, - -2.034520618652914e+05, -2.035182650177002e+05, -2.035829003224190e+05, -2.036459933917423e+05, -2.037075692053069e+05, - -2.037676521309865e+05, -2.038262659449315e+05, -2.038834338507871e+05, -2.039391784981361e+05, -2.039935220002010e+05, - -2.040464859508402e+05, -2.040980914408735e+05, -2.041483590737696e+05, -2.041973089807198e+05, -2.042449608351331e+05, - -2.042913338665771e+05, -2.043364468576207e+05, -2.043803182220305e+05, -2.044229659219639e+05, -2.044644075383156e+05, - -2.045046602739993e+05, -2.045437409602108e+05, -2.045816660683125e+05, -2.046184517201406e+05, -2.046541136979478e+05, - -2.046886674539887e+05, -2.047221281197702e+05, -2.047545105149759e+05, -2.047858291560815e+05, -2.048160982646717e+05, - -2.048453317754714e+05, -2.048735433441066e+05, -2.049007463545976e+05, -2.049269539266055e+05, -2.049521789224338e+05, - -2.049764339537998e+05, -2.049997313883822e+05, -2.050220833561546e+05, -2.050435017555128e+05, -2.050639982592082e+05, - -2.050835843200835e+05, -2.051022711766350e+05, -2.051200698583907e+05, -2.051369911911250e+05, -2.051530458019073e+05, - -2.051682441239961e+05, -2.051825964015804e+05, -2.051961126943768e+05, -2.052088028820867e+05, -2.052206766687182e+05, - -2.052317435867784e+05, -2.052420130013397e+05, -2.052514941139862e+05, -2.052601959666428e+05, -2.052681274452928e+05, - -2.052752972835860e+05, -2.052817140663436e+05, -2.052873862329597e+05, -2.052923220807082e+05, -2.052965297679535e+05, - -2.053000173172707e+05, -2.053027926184791e+05, -2.053048634315880e+05, -2.053062373890350e+05, -2.053069220013984e+05, - -2.053069246551360e+05, -2.053062526188995e+05, -2.053049130450925e+05, -2.053029129723646e+05, -2.053002593280391e+05, - -2.052969589304748e+05, -2.052930184913664e+05, -2.052884446179819e+05, -2.052832438153440e+05, -2.052774224883501e+05, - -2.052709869438434e+05, -2.052639433926225e+05, -2.052562979514072e+05, -2.052480566447476e+05, -2.052392254068881e+05, - -2.052298100835831e+05, -2.052198164338668e+05, -2.052092501317794e+05, -2.051981167680476e+05, -2.051864218517280e+05, - -2.051741708118058e+05, -2.051613689987549e+05, -2.051480216860622e+05, -2.051341340717122e+05, -2.051197112796361e+05, - -2.051047583611295e+05, -2.050892802962285e+05, -2.050732819950613e+05, -2.050567682991635e+05, -2.050397439827611e+05, - -2.050222137540275e+05, -2.050041822563066e+05, -2.049856540693121e+05, -2.049666337102935e+05, -2.049471256351811e+05, - -2.049271342396998e+05, -2.049066638604611e+05, -2.048857187760266e+05, -2.048643032079533e+05, -2.048424213218069e+05, - -2.048200772281609e+05, -2.047972749835680e+05, -2.047740185915123e+05, -2.047503120033377e+05, -2.047261591191620e+05, - -2.047015637887623e+05, -2.046765298124491e+05, -2.046510609419167e+05, -2.046251608810759e+05, -2.045988332868710e+05, - -2.045720817700766e+05, -2.045449098960788e+05, -2.045173211856400e+05, -2.044893191156469e+05, -2.044609071198426e+05, - -2.044320885895441e+05, -2.044028668743454e+05, -2.043732452828027e+05, -2.043432270831113e+05, -2.043128155037610e+05, - -2.042820137341860e+05, -2.042508249253948e+05, -2.042192521905923e+05, -2.041872986057859e+05, -2.041549672103807e+05, - -2.041222610077632e+05, -2.040891829658736e+05, -2.040557360177639e+05, -2.040219230621491e+05, -2.039877469639440e+05, - -2.039532105547911e+05, -2.039183166335798e+05, -2.038830679669490e+05, -2.038474672897916e+05, -2.038115173057345e+05, - -2.037752206876224e+05, -2.037385800779851e+05, -2.037015980894978e+05, -2.036642773054314e+05, -2.036266202800981e+05, - -2.035886295392837e+05, -2.035503075806742e+05, -2.035116568742749e+05, -2.034726798628202e+05, -2.034333789621769e+05, - -2.033937565617397e+05, -2.033538150248190e+05, -2.033135566890223e+05, -2.032729838666277e+05, -2.032320988449509e+05, - -2.031909038867068e+05, -2.031494012303629e+05, -2.031075930904863e+05, -2.030654816580859e+05, -2.030230691009471e+05, - -2.029803575639605e+05, -2.029373491694479e+05, -2.028940460174757e+05, -2.028504501861717e+05, -2.028065637320272e+05, - -2.027623886902016e+05, -2.027179270748167e+05, -2.026731808792471e+05, -2.026281520764080e+05, -2.025828426190329e+05, - -2.025372544399534e+05, -2.024913894523669e+05, -2.024452495501052e+05, -2.023988366078963e+05, -2.023521524816209e+05, - -2.023051990085687e+05, -2.022579780076818e+05, -2.022104912798066e+05, -2.021627406079290e+05, -2.021147277574133e+05, - -2.020664544762348e+05, -2.020179224952093e+05, -2.019691335282160e+05, -2.019200892724221e+05, -2.018707914084985e+05, - -2.018212416008343e+05, -2.017714414977483e+05, -2.017213927316958e+05, -2.016710969194721e+05, -2.016205556624151e+05, - -2.015697705465998e+05, -2.015187431430363e+05, -2.014674750078565e+05, -2.014159676825067e+05, -2.013642226939301e+05, - -2.013122415547507e+05, -2.012600257634502e+05, -2.012075768045474e+05, -2.011548961487711e+05, -2.011019852532292e+05, - -2.010488455615805e+05, -2.009954785041979e+05, -2.009418854983337e+05, -2.008880679482777e+05, -2.008340272455186e+05, - -2.007797647688970e+05, -2.007252818847612e+05, -2.006705799471167e+05, -2.006156602977762e+05, -2.005605242665048e+05, - -2.005051731711669e+05, -2.004496083178649e+05, -2.003938310010830e+05, -2.003378425038218e+05, -2.002816440977373e+05, - -2.002252370432719e+05, -2.001686225897899e+05, -2.001118019757043e+05, -2.000547764286048e+05, -1.999975471653877e+05, - -1.999401153923769e+05, -1.998824823054466e+05, -1.998246490901442e+05, -1.997666169218069e+05, -1.997083869656814e+05, - -1.996499603770371e+05, -1.995913383012817e+05, -1.995325218740736e+05, -1.994735122214312e+05, -1.994143104598437e+05, - -1.993549176963779e+05, -1.992953350287835e+05, -1.992355635455999e+05, -1.991756043262569e+05, -1.991154584411781e+05, - -1.990551269518803e+05, -1.989946109110717e+05, -1.989339113627517e+05, -1.988730293423046e+05, -1.988119658765956e+05, - -1.987507219840643e+05, -1.986892986748158e+05, -1.986276969507132e+05, -1.985659178054665e+05, -1.985039622247207e+05, - -1.984418311861448e+05, -1.983795256595152e+05, -1.983170466068022e+05, -1.982543949822543e+05, -1.981915717324800e+05, - -1.981285777965290e+05, -1.980654141059738e+05, -1.980020815849887e+05, -1.979385811504269e+05, -1.978749137118995e+05, - -1.978110801718509e+05, -1.977470814256345e+05, -1.976829183615861e+05, -1.976185918610984e+05, -1.975541027986926e+05, - -1.974894520420891e+05, -1.974246404522807e+05, -1.973596688835984e+05, -1.972945381837829e+05, -1.972292491940505e+05, - -1.971638027491616e+05, -1.970981996774867e+05, -1.970324408010688e+05, -1.969665269356918e+05, -1.969004588909416e+05, - -1.968342374702685e+05, -1.967678634710510e+05, -1.967013376846554e+05, -1.966346608964965e+05, -1.965678338860977e+05, - -1.965008574271496e+05, -1.964337322875687e+05, -1.963664592295526e+05, -1.962990390096392e+05, -1.962314723787633e+05, - -1.961637600823075e+05, -1.960959028601621e+05, -1.960279014467761e+05, -1.959597565712104e+05, -1.958914689571910e+05, - -1.958230393231627e+05, -1.957544683823371e+05, -1.956857568427456e+05, -1.956169054072892e+05, -1.955479147737879e+05, - -1.954787856350284e+05, -1.954095186788146e+05, -1.953401145880142e+05, -1.952705740406048e+05, -1.952008977097226e+05, - -1.951310862637074e+05, -1.950611403661471e+05, -1.949910606759255e+05, -1.949208478472632e+05, -1.948505025297629e+05, - -1.947800253684553e+05, -1.947094170038375e+05, -1.946386780719192e+05, -1.945678092042611e+05, -1.944968110280202e+05, - -1.944256841659878e+05, -1.943544292366309e+05, -1.942830468541311e+05, -1.942115376284259e+05, -1.941399021652479e+05, - -1.940681410661602e+05, -1.939962549285977e+05, -1.939242443459046e+05, -1.938521099073695e+05, -1.937798521982651e+05, - -1.937074717998816e+05, -1.936349692895656e+05, -1.935623452407544e+05, -1.934896002230098e+05, -1.934167348020555e+05, - -1.933437495398110e+05, -1.932706449944232e+05, -1.931974217203042e+05, -1.931240802681591e+05, -1.930506211850251e+05, - -1.929770450142996e+05, -1.929033522957734e+05, -1.928295435656644e+05, -1.927556193566451e+05, -1.926815801978791e+05 - }, - { - 4.033391985181019e+04, 3.871861968130223e+04, 3.708200351798967e+04, 3.542330511515377e+04, 3.374171247862647e+04, - 3.203636409633547e+04, 3.030634476487550e+04, 2.855068095786316e+04, 2.676833567581794e+04, 2.495820270419242e+04, - 2.311910019574708e+04, 2.124976347864337e+04, 1.934883697448229e+04, 1.741486508991632e+04, 1.544628192026417e+04, - 1.344139957362828e+04, 1.139839488685013e+04, 9.315294259788372e+03, 7.189956279057192e+03, 5.020051735091258e+03, - 2.803040547256334e+03, 5.361450198986795e+02, -1.783681298235891e+03, -4.159790024768661e+03, -6.595880714390887e+03, - -9.096051337172830e+03, -1.166485814294211e+04, -1.430738701051556e+04, -1.702933891585727e+04, -1.983713283536701e+04, - -2.273803027647484e+04, -2.574028667331455e+04, -2.885333639724308e+04, -3.208801959004973e+04, -3.545686117228876e+04, - -3.897441430485901e+04, -4.265768218471586e+04, -4.652663169506539e+04, -5.060480660357802e+04, -5.492002833387237e+04, - -5.950511955260285e+04, -6.439845718779157e+04, -6.964386994552567e+04, -7.528879904031586e+04, -8.137865906355182e+04, - -8.794450992459479e+04, -9.498237385841347e+04, -1.024257289602935e+05, -1.101100016795137e+05, -1.177377158453914e+05, - -1.249250599911720e+05, -1.313920867709011e+05, -1.370557918006403e+05, -1.419395518836039e+05, -1.461333829071583e+05, - -1.497490262816589e+05, -1.528926717805148e+05, -1.556537909207259e+05, -1.581036268184157e+05, -1.602976903754740e+05, - -1.622791209126079e+05, -1.640816754896436e+05, -1.657320607066307e+05, -1.672516653219475e+05, -1.686578292570618e+05, - -1.699647736663851e+05, -1.711842876063385e+05, -1.723262402489398e+05, -1.733989674315564e+05, -1.744095669303095e+05, - -1.753641267536758e+05, -1.762679037256371e+05, -1.771254647342321e+05, -1.779407996023794e+05, -1.787174121351745e+05, - -1.794583941960509e+05, -1.801664864472005e+05, -1.808441285099643e+05, -1.814935006576167e+05, -1.821165586770062e+05, - -1.827150631791953e+05, -1.832906043694733e+05, -1.838446230807076e+05, -1.843784287144749e+05, -1.848932146100454e+05, - -1.853900712634880e+05, -1.858699977416940e+05, -1.863339115743320e+05, -1.867826573571466e+05, -1.872170142599870e+05, - -1.876377026004751e+05, -1.880453896177373e+05, -1.884406945589274e+05, -1.888241931734383e+05, -1.891964216949473e+05, - -1.895578803792491e+05, -1.899090366556273e+05, -1.902503279410764e+05, -1.905821641595290e+05, -1.909049300022992e+05, - -1.912189869609009e+05, -1.915246751591337e+05, -1.918223150077281e+05, -1.921122087017490e+05, -1.923946415783478e+05, - -1.926698833501990e+05, -1.929381892280376e+05, -1.931998009440577e+05, -1.934549476864985e+05, -1.937038469545265e+05, - -1.939467053414319e+05, -1.941837192532494e+05, -1.944150755690963e+05, -1.946409522488118e+05, -1.948615188928808e+05, - -1.950769372590646e+05, -1.952873617397079e+05, -1.954929398032607e+05, -1.956938124031901e+05, -1.958901143571365e+05, - -1.960819746988737e+05, -1.962695170053876e+05, -1.964528597011519e+05, -1.966321163414875e+05, -1.968073958767064e+05, - -1.969788028985834e+05, -1.971464378657666e+05, -1.973103973384864e+05, -1.974707741501212e+05, -1.976276576160160e+05, - -1.977811337061395e+05, -1.979312852136367e+05, -1.980781919121200e+05, -1.982219306197034e+05, -1.983625755564891e+05, - -1.985001982276146e+05, -1.986348676747601e+05, -1.987666505645186e+05, -1.988956112966844e+05, -1.990218121086984e+05, - -1.991453131629045e+05, -1.992661726518814e+05, -1.993844468749817e+05, -1.995001903223546e+05, -1.996134557521439e+05, - -1.997242942636081e+05, -1.998327553664192e+05, -1.999388870463769e+05, -2.000427358277583e+05, -2.001443468325078e+05, - -2.002437638364558e+05, -2.003410293227469e+05, -2.004361845326353e+05, -2.005292695138108e+05, -2.006203231663868e+05, - -2.007093832866967e+05, -2.007964866090119e+05, -2.008816688448956e+05, -2.009649647227944e+05, -2.010464080216335e+05, - -2.011260316070961e+05, -2.012038674641293e+05, -2.012799467284272e+05, -2.013542997165138e+05, -2.014269559545031e+05, - -2.014979442056027e+05, -2.015672924964293e+05, -2.016350281421932e+05, -2.017011777708139e+05, -2.017657673460183e+05, - -2.018288221894717e+05, -2.018903670019929e+05, -2.019504258838963e+05, -2.020090223545028e+05, -2.020661793708643e+05, - -2.021219193457331e+05, -2.021762641648185e+05, -2.022292352033618e+05, -2.022808533420596e+05, -2.023311389823708e+05, - -2.023801120612312e+05, -2.024277920652045e+05, -2.024741980264893e+05, -2.025193486054379e+05, -2.025632620005484e+05, - -2.026059560280280e+05, -2.026474481184393e+05, -2.026877553218161e+05, -2.027268943276013e+05, -2.027648814691576e+05, - -2.028017327353243e+05, -2.028374637801494e+05, -2.028720899322816e+05, -2.029056262040303e+05, -2.029380873001117e+05, - -2.029694876260921e+05, -2.029998412965428e+05, -2.030291621429163e+05, -2.030574637211561e+05, -2.030847593190515e+05, - -2.031110619633458e+05, -2.031363844266111e+05, -2.031607392338927e+05, -2.031841386691426e+05, -2.032065947814371e+05, - -2.032281193909982e+05, -2.032487240950206e+05, -2.032684202733136e+05, -2.032872190937629e+05, -2.033051315176235e+05, - -2.033221683046434e+05, -2.033383400180324e+05, -2.033536570292751e+05, -2.033681295227959e+05, -2.033817675004838e+05, - -2.033945807860801e+05, -2.034065790294300e+05, -2.034177717106156e+05, -2.034281681439555e+05, -2.034377774818949e+05, - -2.034466087187769e+05, -2.034546706945056e+05, -2.034619720981017e+05, -2.034685214711560e+05, -2.034743272111850e+05, - -2.034793975748893e+05, -2.034837406813192e+05, -2.034873645149540e+05, -2.034902769271648e+05, -2.034924856455975e+05, - -2.034939982667743e+05, -2.034948222659807e+05, -2.034949649980820e+05, -2.034944337001227e+05, -2.034932354938591e+05, - -2.034913773882203e+05, -2.034888662817072e+05, -2.034857089647243e+05, -2.034819121218516e+05, -2.034774823340559e+05, - -2.034724260808438e+05, -2.034667497423605e+05, -2.034604596014323e+05, -2.034535618455557e+05, -2.034460625688391e+05, - -2.034379677738913e+05, -2.034292833736636e+05, -2.034200151932455e+05, -2.034101689716153e+05, -2.033997503633468e+05, - -2.033887649402723e+05, -2.033772181931076e+05, -2.033651155330344e+05, -2.033524622932439e+05, -2.033392637304454e+05, - -2.033255250263345e+05, -2.033112512890300e+05, -2.032964475544729e+05, -2.032811187877945e+05, -2.032652698846497e+05, - -2.032489056725217e+05, -2.032320309119927e+05, -2.032146502979875e+05, -2.031967684609864e+05, -2.031783899682118e+05, - -2.031595193247854e+05, -2.031401609748592e+05, -2.031203193027243e+05, -2.030999986338864e+05, -2.030792032361268e+05, - -2.030579373205317e+05, -2.030362050425020e+05, -2.030140105027402e+05, -2.029913577482156e+05, -2.029682507731058e+05, - -2.029446935197221e+05, -2.029206898794087e+05, -2.028962436934276e+05, -2.028713587538219e+05, -2.028460388042582e+05, - -2.028202875408574e+05, -2.027941086129998e+05, -2.027675056241190e+05, -2.027404821324750e+05, -2.027130416519147e+05, - -2.026851876526132e+05, -2.026569235617999e+05, -2.026282527644717e+05, -2.025991786040892e+05, -2.025697043832597e+05, - -2.025398333644047e+05, -2.025095687704155e+05, -2.024789137852942e+05, -2.024478715547816e+05, -2.024164451869744e+05, - -2.023846377529255e+05, -2.023524522872376e+05, -2.023198917886415e+05, -2.022869592205636e+05, -2.022536575116820e+05, - -2.022199895564727e+05, -2.021859582157432e+05, -2.021515663171582e+05, -2.021168166557513e+05, -2.020817119944317e+05, - -2.020462550644762e+05, -2.020104485660144e+05, -2.019742951685045e+05, -2.019377975111998e+05, -2.019009582036039e+05, - -2.018637798259227e+05, -2.018262649295016e+05, -2.017884160372593e+05, -2.017502356441113e+05, -2.017117262173837e+05, - -2.016728901972244e+05, -2.016337299970027e+05, -2.015942480037000e+05, -2.015544465782996e+05, -2.015143280561624e+05, - -2.014738947474005e+05, -2.014331489372411e+05, -2.013920928863874e+05, -2.013507288313674e+05, -2.013090589848816e+05, - -2.012670855361423e+05, -2.012248106512068e+05, -2.011822364733046e+05, -2.011393651231602e+05, -2.010961986993072e+05, - -2.010527392784008e+05, -2.010089889155218e+05, -2.009649496444759e+05, -2.009206234780892e+05, -2.008760124084957e+05, - -2.008311184074253e+05, -2.007859434264779e+05, -2.007404893974036e+05, -2.006947582323681e+05, -2.006487518242209e+05, - -2.006024720467553e+05, -2.005559207549646e+05, -2.005090997852938e+05, -2.004620109558885e+05, -2.004146560668381e+05, - -2.003670369004153e+05, -2.003191552213124e+05, -2.002710127768711e+05, -2.002226112973137e+05, -2.001739524959646e+05, - -2.001250380694705e+05, -2.000758696980204e+05, -2.000264490455551e+05, -1.999767777599809e+05, -1.999268574733717e+05, - -1.998766898021760e+05, -1.998262763474153e+05, -1.997756186948798e+05, -1.997247184153248e+05, -1.996735770646565e+05, - -1.996221961841250e+05, -1.995705773005032e+05, -1.995187219262740e+05, -1.994666315598036e+05, -1.994143076855211e+05, - -1.993617517740906e+05, -1.993089652825809e+05, -1.992559496546336e+05, -1.992027063206299e+05, -1.991492366978511e+05, - -1.990955421906395e+05, -1.990416241905567e+05, -1.989874840765390e+05, -1.989331232150478e+05, -1.988785429602249e+05, - -1.988237446540357e+05, -1.987687296264202e+05, -1.987134991954320e+05, -1.986580546673841e+05, -1.986023973369870e+05, - -1.985465284874853e+05, -1.984904493907943e+05, -1.984341613076349e+05, -1.983776654876608e+05, -1.983209631695928e+05, - -1.982640555813435e+05, -1.982069439401457e+05, -1.981496294526726e+05, -1.980921133151636e+05, -1.980343967135440e+05, - -1.979764808235407e+05, -1.979183668108030e+05, -1.978600558310170e+05, -1.978015490300170e+05, -1.977428475438995e+05, - -1.976839524991346e+05, -1.976248650126710e+05, -1.975655861920481e+05, -1.975061171354973e+05, -1.974464589320502e+05, - -1.973866126616384e+05, -1.973265793951971e+05, -1.972663601947630e+05, -1.972059561135751e+05, -1.971453681961697e+05, - -1.970845974784791e+05, -1.970236449879223e+05, -1.969625117435020e+05, -1.969011987558941e+05, -1.968397070275395e+05, - -1.967780375527338e+05, -1.967161913177143e+05, -1.966541693007483e+05, -1.965919724722188e+05, -1.965296017947085e+05, - -1.964670582230834e+05, -1.964043427045771e+05, -1.963414561788693e+05, -1.962783995781683e+05, -1.962151738272892e+05, - -1.961517798437327e+05, -1.960882185377608e+05, -1.960244908124747e+05, -1.959605975638885e+05, -1.958965396810051e+05, - -1.958323180458867e+05, -1.957679335337292e+05, -1.957033870129321e+05, -1.956386793451699e+05, -1.955738113854613e+05, - -1.955087839822361e+05, -1.954435979774054e+05, -1.953782542064264e+05, -1.953127534983695e+05, -1.952470966759822e+05, - -1.951812845557548e+05, -1.951153179479816e+05, -1.950491976568266e+05, -1.949829244803826e+05, -1.949164992107332e+05, - -1.948499226340137e+05, -1.947831955304697e+05, -1.947163186745158e+05, -1.946492928347947e+05, -1.945821187742338e+05, - -1.945147972501011e+05, -1.944473290140626e+05, -1.943797148122363e+05, -1.943119553852476e+05, -1.942440514682820e+05, - -1.941760037911398e+05, -1.941078130782873e+05, -1.940394800489091e+05, -1.939710054169601e+05, -1.939023898912151e+05, - -1.938336341753197e+05, -1.937647389678390e+05, -1.936957049623062e+05, -1.936265328472726e+05, -1.935572233063529e+05, - -1.934877770182739e+05, -1.934181946569210e+05, -1.933484768913827e+05, -1.932786243859985e+05, -1.932086378004002e+05, - -1.931385177895606e+05, -1.930682650038339e+05, -1.929978800890015e+05, -1.929273636863114e+05, -1.928567164325248e+05, - -1.927859389599544e+05, -1.927150318965083e+05, -1.926439958657290e+05, -1.925728314868347e+05, -1.925015393747585e+05, - -1.924301201401888e+05, -1.923585743896074e+05, -1.922869027253287e+05, -1.922151057455381e+05, -1.921431840443277e+05, - -1.920711382117364e+05, -1.919989688337844e+05, -1.919266764925109e+05, -1.918542617660087e+05, -1.917817252284619e+05, - -1.917090674501796e+05, -1.916362889976296e+05, -1.915633904334769e+05, -1.914903723166123e+05, -1.914172352021896e+05, - -1.913439796416580e+05, -1.912706061827950e+05, -1.911971153697388e+05, -1.911235077430198e+05, -1.910497838395940e+05 - }, - { - 4.122429102163507e+04, 3.962013631220405e+04, 3.799510591700755e+04, 3.634846215685370e+04, 3.467942413624163e+04, - 3.298716425779231e+04, 3.127080437286857e+04, 2.952941151955814e+04, 2.776199319536409e+04, 2.596749210033833e+04, - 2.414478027776377e+04, 2.229265256690099e+04, 2.040981926792500e+04, 1.849489790188170e+04, 1.654640392784696e+04, - 1.456274025422784e+04, 1.254218535134551e+04, 1.048287973543430e+04, 8.382810549792666e+03, 6.239793914220541e+03, - 4.051454647965308e+03, 1.815202883705229e+03, -4.717929969315513e+02, -2.812637823804305e+03, -5.210746347858951e+03, - -7.669886259467610e+03, -1.019422881370223e+04, -1.278840866463946e+04, -1.545759488831072e+04, -1.820757564377361e+04, - -2.104485950918958e+04, -2.397679719412394e+04, -2.701172829437414e+04, -3.015915854058033e+04, -3.342997417993272e+04, - -3.683670090251642e+04, -4.039381497993581e+04, -4.411811275527113e+04, -4.802913889373885e+04, -5.214965853265496e+04, - -5.650612224521797e+04, -6.112899191605941e+04, -6.605262475872987e+04, -7.131407957668992e+04, -7.694966004459969e+04, - -8.298743565529390e+04, -8.943427237794305e+04, -9.625806426591428e+04, -1.033671423719921e+05, -1.105868959171387e+05, - -1.176514633100217e+05, -1.242654389364086e+05, -1.302381951904423e+05, -1.355158326477047e+05, -1.401212353112733e+05, - -1.441255589343177e+05, -1.476167334524791e+05, -1.506803053158567e+05, -1.533907386740432e+05, -1.558092825364715e+05, - -1.579850093331324e+05, -1.599569074287030e+05, -1.617560081702530e+05, -1.634071841502114e+05, -1.649305600627288e+05, - -1.663425860603787e+05, -1.676568461432743e+05, -1.688846670695245e+05, -1.700355794747414e+05, -1.711176699226938e+05, - -1.721378522794829e+05, -1.731020790634643e+05, -1.740155077755518e+05, -1.748826331433698e+05, -1.757073932922407e+05, - -1.764932557616447e+05, -1.772432877795318e+05, -1.779602141174657e+05, -1.786464650557079e+05, -1.793042164035231e+05, - -1.799354230862977e+05, -1.805418474854574e+05, -1.811250834701147e+05, -1.816865768699464e+05, -1.822276429921284e+05, - -1.827494816705031e+05, -1.832531902448063e+05, -1.837397747959879e+05, -1.842101599062195e+05, -1.846651971659458e+05, - -1.851056726128582e+05, -1.855323132571692e+05, -1.859457928225955e+05, -1.863467368119340e+05, -1.867357269891565e+05, - -1.871133053559305e+05, -1.874799776887530e+05, -1.878362166931555e+05, -1.881824648232547e+05, -1.885191368080556e+05, - -1.888466219201255e+05, -1.891652860173595e+05, -1.894754733844092e+05, -1.897775083968159e+05, -1.900716970278727e+05, - -1.903583282156762e+05, -1.906376751056158e+05, -1.909099961816500e+05, -1.911755362980931e+05, -1.914345276222188e+05, - -1.916871904967663e+05, -1.919337342303813e+05, -1.921743578230928e+05, -1.924092506331301e+05, -1.926385929906853e+05, - -1.928625567636034e+05, -1.930813058794537e+05, -1.932949968079582e+05, -1.935037790073333e+05, -1.937077953377422e+05, - -1.939071824447221e+05, -1.941020711151659e+05, -1.942925866081841e+05, -1.944788489583498e+05, -1.946609732811304e+05, - -1.948390700115859e+05, -1.950132451732631e+05, -1.951836006062451e+05, -1.953502341850003e+05, -1.955132400222422e+05, - -1.956727086603613e+05, -1.958287272535126e+05, -1.959813797388757e+05, -1.961307469695705e+05, -1.962769067969387e+05, - -1.964199345162988e+05, -1.965599025916090e+05, -1.966968810136091e+05, -1.968309373672398e+05, -1.969621369324902e+05, - -1.970905428015448e+05, -1.972162159672711e+05, -1.973392154179890e+05, -1.974595982248274e+05, -1.975774196243730e+05, - -1.976927330969115e+05, -1.978055904405412e+05, -1.979160418414153e+05, -1.980241359403557e+05, -1.981299198960562e+05, - -1.982334394450872e+05, -1.983347389588921e+05, -1.984338614979505e+05, -1.985308488632829e+05, -1.986257416454448e+05, - -1.987185792711609e+05, -1.988094000477242e+05, -1.988982412048861e+05, -1.989851389369219e+05, -1.990701284383779e+05, - -1.991532439426048e+05, -1.992345187562884e+05, -1.993139852928734e+05, -1.993916751044943e+05, -1.994676189124832e+05, - -1.995418466365399e+05, -1.996143874226277e+05, -1.996852696696634e+05, -1.997545210550626e+05, -1.998221685591993e+05, - -1.998882384888348e+05, -1.999527564995671e+05, -2.000157476173495e+05, -2.000772362591242e+05, -2.001372462526167e+05, - -2.001958008553260e+05, -2.002529227727556e+05, -2.003086341759186e+05, -2.003629567181504e+05, -2.004159115512630e+05, - -2.004675193410730e+05, -2.005178002823280e+05, -2.005667740954154e+05, -2.006144601097203e+05, -2.006608771741487e+05, - -2.007060437374129e+05, -2.007499778437282e+05, -2.007926971446764e+05, -2.008342189106368e+05, -2.008745600436979e+05, - -2.009137370808027e+05, -2.009517662150294e+05, -2.009886632982146e+05, -2.010244438522638e+05, -2.010591230783448e+05, - -2.010927158657609e+05, -2.011252368005152e+05, -2.011567001735853e+05, -2.011871199889125e+05, -2.012165099711220e+05, - -2.012448835729847e+05, -2.012722539826281e+05, -2.012986341305100e+05, -2.013240366961607e+05, -2.013484741147073e+05, - -2.013719585831827e+05, -2.013945020666336e+05, -2.014161163040326e+05, -2.014368128139992e+05, -2.014566029003432e+05, - -2.014754976574318e+05, -2.014935079753888e+05, -2.015106445451339e+05, -2.015269178632643e+05, -2.015423382367887e+05, - -2.015569157877168e+05, -2.015706604575074e+05, -2.015835820113859e+05, -2.015956900425306e+05, -2.016069939761356e+05, - -2.016175030733524e+05, -2.016272264351165e+05, -2.016361730058637e+05, -2.016443515771344e+05, -2.016517707910795e+05, - -2.016584391438604e+05, -2.016643649889562e+05, -2.016695565403744e+05, -2.016740218733838e+05, -2.016777689374226e+05, - -2.016808055437871e+05, -2.016831393789540e+05, -2.016847780046866e+05, -2.016857288607501e+05, -2.016859992675475e+05, - -2.016855964286897e+05, -2.016845274334893e+05, -2.016827992593938e+05, -2.016804187743505e+05, -2.016773927391108e+05, - -2.016737278094704e+05, -2.016694305384563e+05, -2.016645073784506e+05, -2.016589646832644e+05, -2.016528087101548e+05, - -2.016460456217919e+05, -2.016386814881750e+05, -2.016307222885001e+05, -2.016221739129796e+05, -2.016130421646188e+05, - -2.016033327609447e+05, -2.015930513356939e+05, -2.015822034404581e+05, -2.015707945462891e+05, -2.015588300452644e+05, - -2.015463152520149e+05, -2.015332554052158e+05, -2.015196556690414e+05, -2.015055211345829e+05, -2.014908568212366e+05, - -2.014756676780553e+05, -2.014599585850689e+05, -2.014437343545757e+05, -2.014269997324006e+05, -2.014097593991253e+05, - -2.013920179712898e+05, -2.013737800025670e+05, -2.013550499849095e+05, -2.013358323496697e+05, -2.013161314686948e+05, - -2.012959516553984e+05, -2.012752971658050e+05, -2.012541721995738e+05, -2.012325809009983e+05, -2.012105273599840e+05, - -2.011880156130044e+05, -2.011650496440354e+05, -2.011416333854704e+05, -2.011177707190141e+05, -2.010934654765582e+05, - -2.010687214410364e+05, -2.010435423472635e+05, -2.010179318827537e+05, -2.009918936885227e+05, -2.009654313598736e+05, - -2.009385484471661e+05, -2.009112484565661e+05, -2.008835348507841e+05, -2.008554110497962e+05, -2.008268804315496e+05, - -2.007979463326541e+05, -2.007686120490609e+05, -2.007388808367219e+05, -2.007087559122442e+05, -2.006782404535232e+05, - -2.006473376003679e+05, -2.006160504551107e+05, -2.005843820832069e+05, -2.005523355138211e+05, -2.005199137404024e+05, - -2.004871197212473e+05, -2.004539563800530e+05, -2.004204266064582e+05, -2.003865332565749e+05, -2.003522791535077e+05, - -2.003176670878651e+05, -2.002826998182597e+05, -2.002473800717991e+05, -2.002117105445667e+05, -2.001756939020956e+05, - -2.001393327798301e+05, -2.001026297835791e+05, -2.000655874899659e+05, -2.000282084468608e+05, -1.999904951738138e+05, - -1.999524501624730e+05, -1.999140758770006e+05, -1.998753747544755e+05, -1.998363492052938e+05, -1.997970016135582e+05, - -1.997573343374626e+05, -1.997173497096674e+05, -1.996770500376699e+05, -1.996364376041678e+05, -1.995955146674148e+05, - -1.995542834615699e+05, -1.995127461970439e+05, -1.994709050608338e+05, -1.994287622168550e+05, -1.993863198062690e+05, - -1.993435799478024e+05, -1.993005447380587e+05, -1.992572162518312e+05, -1.992135965424019e+05, -1.991696876418446e+05, - -1.991254915613129e+05, -1.990810102913312e+05, -1.990362458020762e+05, -1.989912000436547e+05, -1.989458749463790e+05, - -1.989002724210318e+05, -1.988543943591333e+05, -1.988082426332006e+05, -1.987618190969994e+05, -1.987151255857991e+05, - -1.986681639166177e+05, -1.986209358884638e+05, -1.985734432825758e+05, -1.985256878626554e+05, -1.984776713751010e+05, - -1.984293955492302e+05, -1.983808620975073e+05, -1.983320727157598e+05, -1.982830290833957e+05, -1.982337328636150e+05, - -1.981841857036199e+05, -1.981343892348187e+05, -1.980843450730289e+05, -1.980340548186770e+05, -1.979835200569922e+05, - -1.979327423582023e+05, -1.978817232777193e+05, -1.978304643563300e+05, -1.977789671203770e+05, -1.977272330819397e+05, - -1.976752637390147e+05, -1.976230605756872e+05, -1.975706250623068e+05, -1.975179586556553e+05, -1.974650627991146e+05, - -1.974119389228308e+05, -1.973585884438776e+05, -1.973050127664132e+05, -1.972512132818398e+05, -1.971971913689579e+05, - -1.971429483941171e+05, -1.970884857113685e+05, -1.970338046626102e+05, -1.969789065777350e+05, -1.969237927747714e+05, - -1.968684645600276e+05, -1.968129232282279e+05, -1.967571700626516e+05, -1.967012063352672e+05, -1.966450333068666e+05, - -1.965886522271935e+05, -1.965320643350758e+05, -1.964752708585506e+05, -1.964182730149900e+05, -1.963610720112262e+05, - -1.963036690436708e+05, -1.962460652984370e+05, -1.961882619514560e+05, -1.961302601685961e+05, -1.960720611057736e+05, - -1.960136659090712e+05, -1.959550757148447e+05, -1.958962916498371e+05, -1.958373148312843e+05, -1.957781463670233e+05, - -1.957187873555972e+05, -1.956592388863599e+05, -1.955995020395786e+05, -1.955395778865331e+05, -1.954794674896176e+05, - -1.954191719024384e+05, -1.953586921699102e+05, -1.952980293283523e+05, -1.952371844055831e+05, -1.951761584210120e+05, - -1.951149523857329e+05, -1.950535673026122e+05, -1.949920041663803e+05, -1.949302639637186e+05, -1.948683476733464e+05, - -1.948062562661065e+05, -1.947439907050500e+05, -1.946815519455187e+05, -1.946189409352294e+05, -1.945561586143527e+05, - -1.944932059155941e+05, -1.944300837642738e+05, -1.943667930784031e+05, -1.943033347687621e+05, -1.942397097389761e+05, - -1.941759188855897e+05, -1.941119630981408e+05, -1.940478432592339e+05, -1.939835602446117e+05, -1.939191149232278e+05, - -1.938545081573138e+05, -1.937897408024517e+05, -1.937248137076393e+05, -1.936597277153604e+05, -1.935944836616498e+05, - -1.935290823761602e+05, -1.934635246822245e+05, -1.933978113969235e+05, -1.933319433311467e+05, -1.932659212896557e+05, - -1.931997460711461e+05, -1.931334184683074e+05, -1.930669392678834e+05, -1.930003092507328e+05, -1.929335291918865e+05, - -1.928665998606065e+05, -1.927995220204420e+05, -1.927322964292862e+05, -1.926649238394337e+05, -1.925974049976323e+05, - -1.925297406451412e+05, -1.924619315177824e+05, -1.923939783459935e+05, -1.923258818548812e+05, -1.922576427642737e+05, - -1.921892617887706e+05, -1.921207396377931e+05, -1.920520770156363e+05, -1.919832746215147e+05, -1.919143331496159e+05, - -1.918452532891431e+05, -1.917760357243689e+05, -1.917066811346764e+05, -1.916371901946086e+05, -1.915675635739157e+05, - -1.914978019375973e+05, -1.914279059459486e+05, -1.913578762546055e+05, -1.912877135145870e+05, -1.912174183723396e+05, - -1.911469914697793e+05, -1.910764334443338e+05, -1.910057449289841e+05, -1.909349265523074e+05, -1.908639789385160e+05, - -1.907929027074980e+05, -1.907216984748582e+05, -1.906503668519552e+05, -1.905789084459436e+05, -1.905073238598095e+05, - -1.904356136924109e+05, -1.903637785385127e+05, -1.902918189888266e+05, -1.902197356300461e+05, -1.901475290448834e+05, - -1.900751998121054e+05, -1.900027485065695e+05, -1.899301756992576e+05, -1.898574819573116e+05, -1.897846678440689e+05, - -1.897117339190942e+05, -1.896386807382141e+05, -1.895655088535504e+05, -1.894922188135528e+05, -1.894188111630322e+05 - }, - { - 4.211563683489135e+04, 4.052250122175880e+04, 3.890892007726600e+04, 3.727418317841686e+04, 3.561753947831363e+04, - 3.393819388483291e+04, 3.223530371107669e+04, 3.050797475447155e+04, 2.875525695859349e+04, 2.697613960148613e+04, - 2.516954594715964e+04, 2.333432728627266e+04, 2.146925627994471e+04, 1.957301950624022e+04, 1.764420909166132e+04, - 1.568131328953269e+04, 1.368270584217467e+04, 1.164663393449459e+04, 9.571204510297641e+03, 7.454368679360799e+03, - 5.293903890405115e+03, 3.087393481640316e+03, 8.322031361978794e+02, -1.474546310546572e+03, -3.836010406961034e+03, - -6.255657781540705e+03, -8.737313006427165e+03, -1.128520684809766e+04, -1.390403538930977e+04, -1.659902982688004e+04, - -1.937603913766847e+04, -2.224162821463853e+04, -2.520319468065477e+04, -2.826910795745835e+04, -3.144887477955638e+04, - -3.475333548057598e+04, -3.819489497798423e+04, -4.178779047890301e+04, -4.554839286519070e+04, -4.949552704893480e+04, - -5.365077142195892e+04, -5.803864440145907e+04, -6.268648246965382e+04, -6.762362122469244e+04, -7.287917666039101e+04, - -7.847735675502229e+04, -8.442920912107699e+04, -9.072076910743465e+04, -9.729934939342903e+04, -1.040593724728920e+05, - -1.108301531166199e+05, -1.173850614722618e+05, -1.235005615052627e+05, -1.290458233864094e+05, -1.339850798625063e+05, - -1.383398707730314e+05, -1.421672887051440e+05, -1.455374885464842e+05, -1.485199422470145e+05, -1.511767463508706e+05, - -1.535604366406203e+05, -1.557142019943009e+05, -1.576731038406767e+05, -1.594655325371105e+05, -1.611145533177146e+05, - -1.626390281068134e+05, -1.640545067118820e+05, -1.653739195703886e+05, -1.666081119428189e+05, -1.677662556626014e+05, - -1.688561677570428e+05, -1.698845586140357e+05, -1.708572268308154e+05, -1.717792135543712e+05, -1.726549258507621e+05, - -1.734882362078619e+05, -1.742825634835325e+05, -1.750409392950204e+05, -1.757660628785652e+05, -1.764603467355605e+05, - -1.771259548532814e+05, -1.777648348935490e+05, -1.783787454453219e+05, -1.789692792110037e+05, -1.795378828225287e+05, - -1.800858738485525e+05, -1.806144554486386e+05, -1.811247290470753e+05, -1.816177053327013e+05, -1.820943138379847e+05, - -1.825554113076971e+05, -1.830017890326941e+05, -1.834341792958376e+05, -1.838532610537315e+05, -1.842596649586702e+05, - -1.846539778092220e+05, -1.850367465045957e+05, -1.854084815668457e+05, -1.857696602856902e+05, -1.861207295329000e+05, - -1.864621082866500e+05, -1.867941899006448e+05, -1.871173441481230e+05, -1.874319190668199e+05, -1.877382426275625e+05, - -1.880366242462254e+05, -1.883273561562873e+05, -1.886107146570582e+05, -1.888869612508104e+05, -1.891563436804217e+05, - -1.894190968777741e+05, -1.896754438319415e+05, -1.899255963851495e+05, -1.901697559635938e+05, -1.904081142493983e+05, - -1.906408537993053e+05, -1.908681486150811e+05, -1.910901646700848e+05, -1.913070603959781e+05, -1.915189871331413e+05, - -1.917260895435646e+05, -1.919285060159836e+05, -1.921263689977588e+05, -1.923198053477915e+05, -1.925089366427007e+05, - -1.926938794664945e+05, -1.928747456806752e+05, -1.930516426763412e+05, -1.932246736097057e+05, -1.933939376223240e+05, - -1.935595300474141e+05, -1.937215426058108e+05, -1.938800635920934e+05, -1.940351780166902e+05, -1.941869677161381e+05, - -1.943355117608674e+05, -1.944808862512489e+05, -1.946231646509775e+05, -1.947624178604688e+05, -1.948987143476296e+05, - -1.950321202499964e+05, -1.951626994818152e+05, -1.952905138330079e+05, -1.954156230626977e+05, -1.955380849876442e+05, - -1.956579555659194e+05, -1.957752889761251e+05, -1.958901376924372e+05, -1.960025525557323e+05, -1.961125828410459e+05, - -1.962202763215798e+05, -1.963256793294724e+05, -1.964288368135260e+05, -1.965297923940684e+05, -1.966285884151220e+05, - -1.967252659940337e+05, -1.968198650682099e+05, -1.969124244421690e+05, -1.970029818272207e+05, -1.970915738844911e+05, - -1.971782362633211e+05, -1.972630036384278e+05, -1.973459097453761e+05, -1.974269874144490e+05, -1.975062686029985e+05, - -1.975837844263650e+05, -1.976595651874340e+05, -1.977336404049071e+05, -1.978060388403504e+05, -1.978767885240820e+05, - -1.979459167799623e+05, -1.980134502491386e+05, -1.980794149127984e+05, -1.981438361139777e+05, -1.982067385784779e+05, - -1.982681464349246e+05, -1.983280832340198e+05, -1.983865719670184e+05, -1.984436350834737e+05, -1.984992945082784e+05, - -1.985535716580408e+05, -1.986064874568234e+05, -1.986580623336216e+05, -1.987083163064556e+05, -1.987572688936556e+05, - -1.988049391947674e+05, -1.988513458869215e+05, -1.988965072373177e+05, -1.989404411152554e+05, -1.989831650037201e+05, - -1.990246960105509e+05, -1.990650508792044e+05, -1.991042460014083e+05, -1.991422974181999e+05, -1.991792208428580e+05, - -1.992150316614939e+05, -1.992497449441967e+05, -1.992833754537206e+05, -1.993159376538695e+05, -1.993474457175987e+05, - -1.993779135348413e+05, -1.994073547200719e+05, -1.994357826196185e+05, -1.994632103187316e+05, -1.994896506484202e+05, - -1.995151161920649e+05, -1.995396192918143e+05, -1.995631720547790e+05, -1.995857863590227e+05, -1.996074738593633e+05, - -1.996282459929929e+05, -1.996481139849178e+05, -1.996670888532314e+05, -1.996851814142196e+05, -1.997024022873136e+05, - -1.997187618998862e+05, -1.997342704919035e+05, -1.997489381204384e+05, -1.997627746640429e+05, -1.997757898269953e+05, - -1.997879931434151e+05, -1.997993939812628e+05, -1.998100015462170e+05, -1.998198248854394e+05, -1.998288728912338e+05, - -1.998371543045936e+05, -1.998446777186545e+05, -1.998514515820410e+05, -1.998574842021252e+05, -1.998627837452568e+05, - -1.998673582518760e+05, -1.998712156210164e+05, -1.998743636258017e+05, -1.998768099130639e+05, -1.998785620060905e+05, - -1.998796273072999e+05, -1.998800131008423e+05, -1.998797265551316e+05, -1.998787747253076e+05, -1.998771645556362e+05, - -1.998749028818416e+05, -1.998719964333808e+05, -1.998684518356553e+05, -1.998642756121677e+05, -1.998594741866205e+05, - -1.998540538849622e+05, -1.998480209373793e+05, -1.998413814802390e+05, -1.998341415579809e+05, -1.998263071249633e+05, - -1.998178840472604e+05, -1.998088781044153e+05, -1.997992949911514e+05, -1.997891403190392e+05, -1.997784196181219e+05, - -1.997671383385031e+05, -1.997553018518933e+05, -1.997429154531222e+05, -1.997299843616103e+05, -1.997165137228096e+05, - -1.997025086096056e+05, -1.996879740236893e+05, -1.996729148968951e+05, -1.996573360925065e+05, -1.996412424065341e+05, - -1.996246385689609e+05, -1.996075292449587e+05, -1.995899190360787e+05, -1.995718124814133e+05, -1.995532140587305e+05, - -1.995341281855838e+05, -1.995145592203976e+05, -1.994945114635237e+05, -1.994739891582825e+05, -1.994529964919703e+05, - -1.994315375968534e+05, -1.994096165511348e+05, -1.993872373799016e+05, -1.993644040560513e+05, -1.993411205011974e+05, - -1.993173905865566e+05, -1.992932181338136e+05, -1.992686069159725e+05, -1.992435606581843e+05, -1.992180830385615e+05, - -1.991921776889710e+05, -1.991658481958137e+05, -1.991390981007868e+05, -1.991119309016275e+05, -1.990843500528467e+05, - -1.990563589664403e+05, -1.990279610125914e+05, -1.989991595203561e+05, -1.989699577783351e+05, -1.989403590353306e+05, - -1.989103665009919e+05, -1.988799833464467e+05, -1.988492127049193e+05, -1.988180576723361e+05, -1.987865213079226e+05, - -1.987546066347811e+05, -1.987223166404653e+05, -1.986896542775373e+05, -1.986566224641175e+05, -1.986232240844198e+05, - -1.985894619892811e+05, -1.985553389966766e+05, -1.985208578922271e+05, -1.984860214296951e+05, -1.984508323314729e+05, - -1.984152932890612e+05, -1.983794069635350e+05, -1.983431759860084e+05, -1.983066029580814e+05, -1.982696904522848e+05, - -1.982324410125139e+05, -1.981948571544559e+05, -1.981569413660056e+05, -1.981186961076795e+05, -1.980801238130159e+05, - -1.980412268889714e+05, -1.980020077163086e+05, -1.979624686499790e+05, -1.979226120194943e+05, -1.978824401292966e+05, - -1.978419552591175e+05, -1.978011596643323e+05, -1.977600555763085e+05, -1.977186452027471e+05, -1.976769307280183e+05, - -1.976349143134913e+05, -1.975925980978573e+05, -1.975499841974473e+05, -1.975070747065464e+05, -1.974638716976991e+05, - -1.974203772220111e+05, -1.973765933094462e+05, -1.973325219691167e+05, -1.972881651895712e+05, -1.972435249390737e+05, - -1.971986031658828e+05, -1.971534017985194e+05, -1.971079227460385e+05, -1.970621678982887e+05, -1.970161391261711e+05, - -1.969698382818933e+05, -1.969232671992191e+05, -1.968764276937127e+05, -1.968293215629820e+05, -1.967819505869137e+05, - -1.967343165279084e+05, -1.966864211311091e+05, -1.966382661246273e+05, -1.965898532197644e+05, -1.965411841112311e+05, - -1.964922604773620e+05, -1.964430839803248e+05, -1.963936562663328e+05, -1.963439789658451e+05, -1.962940536937692e+05, - -1.962438820496602e+05, -1.961934656179148e+05, -1.961428059679636e+05, -1.960919046544587e+05, -1.960407632174611e+05, - -1.959893831826214e+05, -1.959377660613632e+05, -1.958859133510565e+05, -1.958338265351946e+05, -1.957815070835647e+05, - -1.957289564524167e+05, -1.956761760846326e+05, -1.956231674098843e+05, -1.955699318448015e+05, -1.955164707931263e+05, - -1.954627856458714e+05, -1.954088777814737e+05, -1.953547485659458e+05, -1.953003993530264e+05, -1.952458314843260e+05, - -1.951910462894738e+05, -1.951360450862586e+05, -1.950808291807705e+05, -1.950253998675394e+05, -1.949697584296712e+05, - -1.949139061389831e+05, -1.948578442561348e+05, -1.948015740307602e+05, -1.947450967015964e+05, -1.946884134966077e+05, - -1.946315256331150e+05, -1.945744343179154e+05, -1.945171407474042e+05, -1.944596461076962e+05, -1.944019515747408e+05, - -1.943440583144411e+05, -1.942859674827656e+05, -1.942276802258643e+05, -1.941691976801756e+05, -1.941105209725412e+05, - -1.940516512203094e+05, -1.939925895314451e+05, -1.939333370046329e+05, -1.938738947293822e+05, -1.938142637861276e+05, - -1.937544452463328e+05, -1.936944401725852e+05, -1.936342496186986e+05, -1.935738746298070e+05, -1.935133162424609e+05, - -1.934525754847209e+05, -1.933916533762511e+05, -1.933305509284092e+05, -1.932692691443380e+05, -1.932078090190546e+05, - -1.931461715395355e+05, -1.930843576848070e+05, -1.930223684260274e+05, -1.929602047265733e+05, -1.928978675421213e+05, - -1.928353578207310e+05, -1.927726765029261e+05, -1.927098245217722e+05, -1.926468028029590e+05, -1.925836122648744e+05, - -1.925202538186836e+05, -1.924567283684048e+05, -1.923930368109821e+05, -1.923291800363614e+05, -1.922651589275608e+05, - -1.922009743607453e+05, -1.921366272052947e+05, -1.920721183238766e+05, -1.920074485725125e+05, -1.919426188006483e+05, - -1.918776298512198e+05, -1.918124825607209e+05, -1.917471777592679e+05, -1.916817162706644e+05, -1.916160989124660e+05, - -1.915503264960430e+05, -1.914843998266419e+05, -1.914183197034481e+05, -1.913520869196468e+05, -1.912857022624814e+05, - -1.912191665133148e+05, -1.911524804476861e+05, -1.910856448353700e+05, -1.910186604404322e+05, -1.909515280212872e+05, - -1.908842483307532e+05, -1.908168221161074e+05, -1.907492501191398e+05, -1.906815330762077e+05, -1.906136717182875e+05, - -1.905456667710287e+05, -1.904775189548037e+05, -1.904092289847605e+05, -1.903407975708711e+05, -1.902722254179838e+05, - -1.902035132258716e+05, -1.901346616892793e+05, -1.900656714979739e+05, -1.899965433367908e+05, -1.899272778856797e+05, - -1.898578758197537e+05, -1.897883378093327e+05, -1.897186645199899e+05, -1.896488566125965e+05, -1.895789147433644e+05, - -1.895088395638924e+05, -1.894386317212074e+05, -1.893682918578079e+05, -1.892978206117055e+05, -1.892272186164675e+05, - -1.891564865012583e+05, -1.890856248908778e+05, -1.890146344058047e+05, -1.889435156622344e+05, -1.888722692721192e+05, - -1.888008958432059e+05, -1.887293959790758e+05, -1.886577702791819e+05, -1.885860193388872e+05, -1.885141437494995e+05, - -1.884421440983108e+05, -1.883700209686339e+05, -1.882977749398336e+05, -1.882254065873692e+05, -1.881529164828231e+05, - -1.880803051939399e+05, -1.880075732846585e+05, -1.879347213151463e+05, -1.878617498418339e+05, -1.877886594174457e+05 - }, - { - 4.300795594489851e+04, 4.142571513738297e+04, 3.982344908043953e+04, 3.820047394370488e+04, 3.655606733454882e+04, - 3.488946532187230e+04, 3.319985916401432e+04, 3.148639170270073e+04, 2.974815338307474e+04, 2.798417785065578e+04, - 2.619343707032506e+04, 2.437483590337992e+04, 2.252720606862778e+04, 2.064929940151396e+04, 1.873978031107850e+04, - 1.679721731763999e+04, 1.482007353411173e+04, 1.280669592947692e+04, 1.075530318467294e+04, 8.663971916075929e+03, - 6.530621000444074e+03, 4.352993684959451e+03, 2.128637106489432e+03, -1.451212352680642e+02, -2.471200576898266e+03, - -4.852798222198991e+03, -7.293425867707143e+03, -9.796951853172950e+03, -1.236765044513798e+04, -1.501025947695466e+04, - -1.773004791311764e+04, -2.053289518762309e+04, -2.342538439076305e+04, -2.641491178606772e+04, -2.950981504670278e+04, - -3.271952269416354e+04, -3.605472638999104e+04, -3.952757587018832e+04, -4.315189204956708e+04, -4.694338497001690e+04, - -5.091984557115335e+04, -5.510124587748051e+04, -5.950961750385691e+04, -6.416846307758678e+04, -6.910127084880543e+04, - -7.432847451815649e+04, -7.986210383399759e+04, -8.569782192452624e+04, -9.180526154257040e+04, -9.811838156236275e+04, - -1.045268948415449e+05, -1.108731690542107e+05, -1.169701449505198e+05, -1.226501475762921e+05, -1.278221960262808e+05, - -1.324624310588949e+05, -1.365905817345317e+05, -1.402530365405397e+05, -1.435064731790456e+05, -1.464077837564535e+05, - -1.490089263246167e+05, -1.513549313697064e+05, -1.534836881577086e+05, -1.554265921602762e+05, -1.572095027096712e+05, - -1.588537204225480e+05, -1.603768573049486e+05, -1.617935618353238e+05, -1.631161030693319e+05, -1.643548333707144e+05, - -1.655185524847770e+05, -1.666147937374118e+05, -1.676500496652375e+05, -1.686299508359089e+05, -1.695594085316430e+05, - -1.704427294670055e+05, -1.712837087581030e+05, -1.720857058668492e+05, -1.728517071163551e+05, -1.735843775273921e+05, - -1.742861040921802e+05, -1.749590321264225e+05, -1.756050959824849e+05, -1.762260451353488e+05, -1.768234664458444e+05, - -1.773988032462549e+05, -1.779533717695769e+05, -1.784883753467186e+05, -1.790049167192794e+05, -1.795040087544719e+05, - -1.799865837997174e+05, -1.804535018747921e+05, -1.809055578671258e+05, -1.813434878694332e+05, -1.817679747771043e+05, - -1.821796532447887e+05, -1.825791140866592e+05, -1.829669081923687e+05, -1.833435500202671e+05, -1.837095207206705e+05, - -1.840652709345707e+05, -1.844112233069198e+05, -1.847477747483089e+05, -1.850752984743515e+05, -1.853941458482246e+05, - -1.857046480485364e+05, -1.860071175818531e+05, -1.863018496568130e+05, -1.865891234346432e+05, -1.868692031691120e+05, - -1.871423392473799e+05, -1.874087691418581e+05, -1.876687182820182e+05, -1.879224008540596e+05, -1.881700205354653e+05, - -1.884117711706758e+05, -1.886478373934515e+05, -1.888783951965834e+05, -1.891036124794333e+05, -1.893236495113022e+05, - -1.895386594033165e+05, -1.897487885242505e+05, -1.899541768906532e+05, -1.901549585292162e+05, -1.903512618137083e+05, - -1.905432097785966e+05, -1.907309204112559e+05, -1.909145069244885e+05, -1.910940780109354e+05, -1.912697380807901e+05, - -1.914415874841936e+05, -1.916097227293311e+05, -1.917742366463430e+05, -1.919352186155627e+05, -1.920927546277893e+05, - -1.922469277044683e+05, -1.923978177363909e+05, -1.925455018102168e+05, -1.926900542964283e+05, -1.928315469779815e+05, - -1.929700491693175e+05, -1.931056278286133e+05, -1.932383476637325e+05, -1.933682712322932e+05, -1.934954590362399e+05, - -1.936199696112777e+05, -1.937418596114983e+05, -1.938611838895052e+05, -1.939779955723228e+05, -1.940923461333484e+05, - -1.942042854605957e+05, -1.943138619214559e+05, -1.944211224241842e+05, -1.945261124763111e+05, -1.946288762401597e+05, - -1.947294565856387e+05, -1.948278951399499e+05, -1.949242323375336e+05, -1.950185074623164e+05, -1.951107586933390e+05, - -1.952010231455296e+05, -1.952893369091385e+05, -1.953757350873599e+05, -1.954602518322420e+05, -1.955429203789753e+05, - -1.956237730786499e+05, -1.957028414295591e+05, -1.957801561071280e+05, -1.958557469925381e+05, -1.959296432001176e+05, - -1.960018731035559e+05, -1.960724643610072e+05, -1.961414439391371e+05, -1.962088381361646e+05, -1.962746726039508e+05, - -1.963389723691785e+05, -1.964017618536725e+05, -1.964630648938957e+05, -1.965229047596641e+05, -1.965813041721205e+05, - -1.966382853209952e+05, -1.966938698811934e+05, -1.967480790287376e+05, -1.968009334373664e+05, -1.968524533670653e+05, - -1.969026585692349e+05, -1.969515683719210e+05, -1.969992016753265e+05, -1.970455769644605e+05, -1.970907123213229e+05, - -1.971346254366435e+05, -1.971773336211956e+05, -1.972188538167001e+05, -1.972592026063407e+05, -1.972983962249065e+05, - -1.973364505712727e+05, -1.973733812071857e+05, -1.974092033821595e+05, -1.974439320318857e+05, -1.974775817892926e+05, - -1.975101669927538e+05, -1.975417016940183e+05, -1.975721996658721e+05, -1.976016744095470e+05, -1.976301391618823e+05, - -1.976576069022504e+05, -1.976840903592582e+05, -1.977096020172259e+05, -1.977341541224638e+05, -1.977577586893407e+05, - -1.977804275061634e+05, -1.978021721408686e+05, -1.978230039465360e+05, -1.978429340667288e+05, -1.978619734406687e+05, - -1.978801328082512e+05, -1.978974227149062e+05, -1.979138535163115e+05, -1.979294353829639e+05, -1.979441783046103e+05, - -1.979580920945501e+05, -1.979711863938042e+05, -1.979834706751666e+05, -1.979949542471344e+05, -1.980056462577199e+05, - -1.980155556981575e+05, -1.980246914065004e+05, -1.980330620711149e+05, -1.980406762340734e+05, -1.980475422906962e+05, - -1.980536685080538e+05, -1.980590630047679e+05, -1.980637337698080e+05, -1.980676886614423e+05, -1.980709354100998e+05, - -1.980734816211564e+05, -1.980753347776430e+05, -1.980765022428807e+05, -1.980769912630456e+05, -1.980768089696640e+05, - -1.980759623820421e+05, -1.980744584096299e+05, -1.980723038543239e+05, -1.980695054127075e+05, -1.980660696782380e+05, - -1.980620031433681e+05, -1.980573122016224e+05, -1.980520031496130e+05, -1.980460821890081e+05, -1.980395554284480e+05, - -1.980324288854136e+05, -1.980247084880491e+05, -1.980164000769366e+05, -1.980075094068287e+05, -1.979980421483370e+05, - -1.979880038895786e+05, -1.979774001377849e+05, -1.979662363208676e+05, -1.979545177889481e+05, -1.979422498158519e+05, - -1.979294376005635e+05, -1.979160862686486e+05, -1.979022008736441e+05, -1.978877863984102e+05, -1.978728477564563e+05, - -1.978573897932319e+05, -1.978414172873889e+05, -1.978249349520152e+05, -1.978079474358365e+05, -1.977904593243971e+05, - -1.977724751412038e+05, -1.977539993488548e+05, -1.977350363501348e+05, -1.977155904890870e+05, -1.976956660520660e+05, - -1.976752672687584e+05, -1.976543983131899e+05, -1.976330633047027e+05, -1.976112663089162e+05, -1.975890113386628e+05, - -1.975663023549076e+05, -1.975431432676438e+05, -1.975195379367703e+05, -1.974954901729519e+05, -1.974710037384600e+05, - -1.974460823479929e+05, -1.974207296694827e+05, -1.973949493248818e+05, -1.973687448909355e+05, -1.973421198999361e+05, - -1.973150778404617e+05, -1.972876221581015e+05, -1.972597562561634e+05, -1.972314834963684e+05, -1.972028071995305e+05, - -1.971737306462228e+05, -1.971442570774301e+05, -1.971143896951865e+05, -1.970841316632039e+05, -1.970534861074839e+05, - -1.970224561169198e+05, -1.969910447438854e+05, -1.969592550048121e+05, -1.969270898807567e+05, -1.968945523179543e+05, - -1.968616452283634e+05, -1.968283714901990e+05, -1.967947339484561e+05, -1.967607354154202e+05, -1.967263786711737e+05, - -1.966916664640870e+05, -1.966566015113007e+05, -1.966211864992043e+05, -1.965854240838975e+05, -1.965493168916488e+05, - -1.965128675193440e+05, -1.964760785349231e+05, -1.964389524778156e+05, -1.964014918593601e+05, -1.963636991632217e+05, - -1.963255768457988e+05, -1.962871273366238e+05, -1.962483530387563e+05, -1.962092563291674e+05, -1.961698395591185e+05, - -1.961301050545350e+05, -1.960900551163687e+05, -1.960496920209573e+05, -1.960090180203758e+05, -1.959680353427836e+05, - -1.959267461927625e+05, -1.958851527516492e+05, -1.958432571778662e+05, -1.958010616072402e+05, -1.957585681533193e+05, - -1.957157789076839e+05, -1.956726959402515e+05, -1.956293212995764e+05, -1.955856570131446e+05, -1.955417050876627e+05, - -1.954974675093432e+05, -1.954529462441834e+05, -1.954081432382405e+05, -1.953630604179030e+05, -1.953176996901529e+05, - -1.952720629428316e+05, -1.952261520448927e+05, -1.951799688466550e+05, -1.951335151800534e+05, -1.950867928588789e+05, - -1.950398036790222e+05, -1.949925494187072e+05, -1.949450318387230e+05, -1.948972526826553e+05, -1.948492136771067e+05, - -1.948009165319210e+05, -1.947523629403985e+05, -1.947035545795090e+05, -1.946544931101055e+05, -1.946051801771273e+05, - -1.945556174098064e+05, -1.945058064218650e+05, -1.944557488117150e+05, -1.944054461626515e+05, -1.943549000430415e+05, - -1.943041120065157e+05, -1.942530835921499e+05, -1.942018163246483e+05, -1.941503117145227e+05, -1.940985712582683e+05, - -1.940465964385397e+05, -1.939943887243168e+05, -1.939419495710786e+05, -1.938892804209650e+05, -1.938363827029415e+05, - -1.937832578329601e+05, -1.937299072141169e+05, -1.936763322368071e+05, -1.936225342788797e+05, -1.935685147057881e+05, - -1.935142748707403e+05, -1.934598161148410e+05, -1.934051397672420e+05, -1.933502471452793e+05, -1.932951395546164e+05, - -1.932398182893813e+05, -1.931842846323022e+05, -1.931285398548410e+05, -1.930725852173269e+05, -1.930164219690853e+05, - -1.929600513485654e+05, -1.929034745834682e+05, -1.928466928908693e+05, -1.927897074773419e+05, -1.927325195390790e+05, - -1.926751302620110e+05, -1.926175408219231e+05, -1.925597523845722e+05, -1.925017661058003e+05, -1.924435831316456e+05, - -1.923852045984569e+05, -1.923266316329999e+05, -1.922678653525641e+05, -1.922089068650731e+05, -1.921497572691854e+05, - -1.920904176543997e+05, -1.920308891011559e+05, -1.919711726809362e+05, -1.919112694563633e+05, -1.918511804812987e+05, - -1.917909068009382e+05, -1.917304494519093e+05, -1.916698094623605e+05, -1.916089878520571e+05, -1.915479856324726e+05, - -1.914868038068759e+05, -1.914254433704221e+05, -1.913639053102395e+05, -1.913021906055155e+05, -1.912403002275811e+05, - -1.911782351399977e+05, -1.911159962986364e+05, -1.910535846517617e+05, -1.909910011401118e+05, -1.909282466969796e+05, - -1.908653222482870e+05, -1.908022287126677e+05, -1.907389670015403e+05, -1.906755380191848e+05, -1.906119426628170e+05, - -1.905481818226619e+05, -1.904842563820265e+05, -1.904201672173714e+05, -1.903559151983818e+05, -1.902915011880359e+05, - -1.902269260426749e+05, -1.901621906120723e+05, -1.900972957394972e+05, -1.900322422617845e+05, -1.899670310093989e+05, - -1.899016628064977e+05, -1.898361384709982e+05, -1.897704588146373e+05, -1.897046246430351e+05, -1.896386367557570e+05, - -1.895724959463721e+05, -1.895062030025159e+05, -1.894397587059471e+05, -1.893731638326067e+05, -1.893064191526761e+05, - -1.892395254306337e+05, -1.891724834253109e+05, -1.891052938899480e+05, -1.890379575722477e+05, -1.889704752144324e+05, - -1.889028475532948e+05, -1.888350753202512e+05, -1.887671592413945e+05, -1.886991000375457e+05, -1.886308984243045e+05, - -1.885625551120997e+05, -1.884940708062394e+05, -1.884254462069588e+05, -1.883566820094703e+05, -1.882877789040111e+05, - -1.882187375758892e+05, -1.881495587055323e+05, -1.880802429685331e+05, -1.880107910356932e+05, -1.879412035730730e+05, - -1.878714812420315e+05, -1.878016246992724e+05, -1.877316345968881e+05, -1.876615115824021e+05, -1.875912562988116e+05, - -1.875208693846304e+05, -1.874503514739286e+05, -1.873797031963763e+05, -1.873089251772827e+05, -1.872380180376356e+05, - -1.871669823941428e+05, -1.870958188592703e+05, -1.870245280412817e+05, -1.869531105442752e+05, -1.868815669682233e+05, - -1.868098979090097e+05, -1.867381039584653e+05, -1.866661857044061e+05, -1.865941437306702e+05, -1.865219786171498e+05, - -1.864496909398318e+05, -1.863772812708286e+05, -1.863047501784150e+05, -1.862320982270630e+05, -1.861593259774711e+05 - }, - { - 4.390124698560454e+04, 4.232977872363047e+04, 4.073869589281546e+04, 3.912734003736221e+04, 3.749501627754574e+04, - 3.584099056091224e+04, 3.416448664696286e+04, 3.246468279174657e+04, 3.074070809767990e+04, 2.899163848567631e+04, - 2.721649224206575e+04, 2.541422508511863e+04, 2.358372468760192e+04, 2.172380458187055e+04, 1.983319736230579e+04, - 1.791054708610979e+04, 1.595440075711147e+04, 1.396319875801624e+04, 1.193526407315293e+04, 9.868790116995036e+03, - 7.761826950604773e+03, 5.612265629605919e+03, 3.417820380893992e+03, 1.176008251217521e+03, -1.115874201818123e+03, - -3.460777664413730e+03, -5.861930876108517e+03, -8.322876183201270e+03, -1.084751066391262e+04, -1.344013378775200e+04, - -1.610550272360655e+04, -1.884889657485797e+04, -2.167619090928309e+04, -2.459394417136249e+04, -2.760949732112327e+04, - -3.073108793734610e+04, -3.396797912234766e+04, -3.733060184313914e+04, -4.083070585461760e+04, -4.448150764466684e+04, - -4.829781125734033e+04, -5.229605471390095e+04, -5.649419331085367e+04, -6.091126016299531e+04, -6.556633356371362e+04, - -7.047649950412424e+04, -7.565330587354350e+04, -8.109737706354952e+04, -8.679153801156671e+04, -9.269368740256448e+04, - -9.873069622274923e+04, -1.047944919789227e+05, -1.107453380787749e+05, -1.164320963048679e+05, -1.217293690237187e+05, - -1.265729422351551e+05, -1.309469972659969e+05, -1.348693061691985e+05, -1.383779638318116e+05, -1.415192726047295e+05, - -1.443402094201605e+05, -1.468844363558578e+05, -1.491905754137339e+05, -1.512918008972361e+05, -1.532161295167650e+05, - -1.549870222467785e+05, -1.566240729421884e+05, -1.581436665473834e+05, -1.595595566678117e+05, -1.608833494514397e+05, - -1.621248986867037e+05, -1.632926240353793e+05, -1.643937657937690e+05, -1.654345885989204e+05, -1.664205446540249e+05, - -1.673564050822356e+05, -1.682463662407259e+05, -1.690941363368371e+05, -1.699030064904663e+05, -1.706759094480094e+05, - -1.714154684282352e+05, -1.721240380255532e+05, -1.728037386729548e+05, -1.734564858442867e+05, -1.740840149289240e+05, - -1.746879025225532e+05, -1.752695847314530e+05, -1.758303729737980e+05, -1.763714676721663e+05, -1.768939701607932e+05, - -1.773988930747927e+05, -1.778871694433312e+05, -1.783596606721171e+05, -1.788171635707305e+05, -1.792604165558659e+05, - -1.796901051413829e+05, -1.801068668093293e+05, -1.805112953421934e+05, -1.809039446849764e+05, -1.812853323959014e+05, - -1.816559427363334e+05, -1.820162294435071e+05, -1.823666182237544e+05, -1.827075089988843e+05, -1.830392779340895e+05, - -1.833622792720647e+05, -1.836768469948987e+05, -1.839832963325775e+05, -1.842819251346174e+05, -1.845730151193292e+05, - -1.848568330134805e+05, -1.851336315936045e+05, -1.854036506389008e+05, -1.856671178045276e+05, -1.859242494189175e+05, - -1.861752512373982e+05, -1.864203190940605e+05, -1.866596395441965e+05, -1.868933904361797e+05, -1.871217414439798e+05, - -1.873448545597181e+05, -1.875628845497949e+05, -1.877759793777614e+05, -1.879842805968002e+05, -1.881879237143891e+05, - -1.883870385314671e+05, -1.885817494582212e+05, -1.887721758083808e+05, -1.889584320737580e+05, -1.891406281805953e+05, - -1.893188697291698e+05, -1.894932582279368e+05, -1.896638912710211e+05, -1.898308627834840e+05, -1.899942631021691e+05, - -1.901541793693283e+05, -1.903106954415018e+05, -1.904638921821692e+05, -1.906138475758131e+05, -1.907606368632203e+05, - -1.909043326689395e+05, -1.910450051214393e+05, -1.911827219664567e+05, -1.913175486739974e+05, -1.914495485394032e+05, - -1.915787827788818e+05, -1.917053106198540e+05, -1.918291893864535e+05, -1.919504745804866e+05, -1.920692199581378e+05, - -1.921854776026847e+05, -1.922992979934711e+05, -1.924107300713634e+05, -1.925198213009045e+05, -1.926266177293625e+05, - -1.927311640422681e+05, -1.928335036192077e+05, -1.929336785808932e+05, -1.930317298400525e+05, -1.931276971468183e+05, - -1.932216191325992e+05, -1.933135333519027e+05, -1.934034763222176e+05, -1.934914835620679e+05, -1.935775896273396e+05, - -1.936618281459620e+05, -1.937442318510482e+05, -1.938248326125638e+05, -1.939036614676054e+05, -1.939807486493619e+05, - -1.940561236148284e+05, -1.941298150713291e+05, -1.942018510019228e+05, -1.942722586897321e+05, -1.943410647412624e+05, - -1.944082951087539e+05, -1.944739751116180e+05, -1.945381294569998e+05, -1.946007822595103e+05, -1.946619570601692e+05, - -1.947216768445938e+05, -1.947799640604720e+05, -1.948368406343504e+05, -1.948923279690751e+05, -1.949464470329384e+05, - -1.949992182658580e+05, -1.950506616651152e+05, -1.951007967815966e+05, -1.951496427330957e+05, -1.951972182171175e+05, - -1.952435415232149e+05, -1.952886305448713e+05, -1.953325027909544e+05, -1.953751753967557e+05, -1.954166651346368e+05, - -1.954569884242958e+05, -1.954961613426741e+05, -1.955341996335142e+05, -1.955711187197561e+05, -1.956069336999116e+05, - -1.956416593752500e+05, -1.956753102458633e+05, -1.957079005217190e+05, -1.957394441304212e+05, -1.957699547247095e+05, - -1.957994456897105e+05, -1.958279301499507e+05, -1.958554209761406e+05, -1.958819307917373e+05, -1.959074719792962e+05, - -1.959320566866182e+05, -1.959556968327024e+05, -1.959784041135088e+05, -1.960001900075403e+05, -1.960210657812510e+05, - -1.960410424942859e+05, -1.960601310045582e+05, -1.960783419731726e+05, -1.960956858691965e+05, -1.961121729742886e+05, - -1.961278133871867e+05, -1.961426170280617e+05, -1.961565936427420e+05, -1.961697528068140e+05, -1.961821039296002e+05, - -1.961936562580217e+05, -1.962044188803510e+05, -1.962144007298518e+05, -1.962236105883187e+05, -1.962320570849665e+05, - -1.962397487181789e+05, -1.962466938308356e+05, -1.962529006322637e+05, -1.962583771965625e+05, -1.962631314655833e+05, - -1.962671712518309e+05, -1.962705042412812e+05, -1.962731379961243e+05, -1.962750799574327e+05, -1.962763374477583e+05, - -1.962769176736579e+05, -1.962768277281535e+05, -1.962760745931249e+05, -1.962746651416431e+05, -1.962726061402370e+05, - -1.962699042511057e+05, -1.962665660342716e+05, -1.962625979496765e+05, -1.962580063592263e+05, -1.962527975287825e+05, - -1.962469776301020e+05, -1.962405527427293e+05, -1.962335288558400e+05, -1.962259118700403e+05, -1.962177075991170e+05, - -1.962089217717503e+05, -1.961995600331796e+05, -1.961896279468305e+05, -1.961791309959017e+05, -1.961680745849136e+05, - -1.961564640412187e+05, -1.961443046164762e+05, -1.961316014880922e+05, -1.961183597606240e+05, -1.961045844671520e+05, - -1.960902805706196e+05, -1.960754529651396e+05, -1.960601064772749e+05, -1.960442458672810e+05, -1.960278758303319e+05, - -1.960110009977039e+05, -1.959936259379445e+05, -1.959757551580058e+05, -1.959573931043575e+05, -1.959385441640729e+05, - -1.959192126658905e+05, -1.958994028812507e+05, -1.958791190253130e+05, -1.958583652579456e+05, -1.958371456846971e+05, - -1.958154643577456e+05, -1.957933252768267e+05, -1.957707323901406e+05, -1.957476895952439e+05, -1.957242007399127e+05, - -1.957002696229994e+05, -1.956758999952603e+05, -1.956510955601730e+05, -1.956258599747320e+05, -1.956001968502297e+05, - -1.955741097530214e+05, -1.955476022052704e+05, -1.955206776856835e+05, -1.954933396302273e+05, -1.954655914328292e+05, - -1.954374364460669e+05, -1.954088779818422e+05, -1.953799193120388e+05, -1.953505636691723e+05, -1.953208142470208e+05, - -1.952906742012486e+05, -1.952601466500107e+05, -1.952292346745531e+05, -1.951979413197929e+05, -1.951662695948955e+05, - -1.951342224738321e+05, -1.951018028959315e+05, -1.950690137664201e+05, -1.950358579569513e+05, -1.950023383061217e+05, - -1.949684576199830e+05, -1.949342186725390e+05, -1.948996242062355e+05, -1.948646769324397e+05, -1.948293795319122e+05, - -1.947937346552679e+05, -1.947577449234284e+05, -1.947214129280686e+05, -1.946847412320525e+05, -1.946477323698590e+05, - -1.946103888480050e+05, -1.945727131454567e+05, -1.945347077140335e+05, -1.944963749788066e+05, -1.944577173384884e+05, - -1.944187371658143e+05, -1.943794368079211e+05, -1.943398185867139e+05, -1.942998847992299e+05, -1.942596377179932e+05, - -1.942190795913649e+05, -1.941782126438866e+05, -1.941370390766178e+05, -1.940955610674652e+05, -1.940537807715108e+05, - -1.940117003213300e+05, -1.939693218273050e+05, -1.939266473779354e+05, -1.938836790401385e+05, -1.938404188595505e+05, - -1.937968688608160e+05, -1.937530310478788e+05, -1.937089074042611e+05, -1.936644998933450e+05, -1.936198104586437e+05, - -1.935748410240694e+05, -1.935295934941994e+05, -1.934840697545348e+05, -1.934382716717544e+05, -1.933922010939672e+05, - -1.933458598509580e+05, -1.932992497544311e+05, -1.932523725982485e+05, -1.932052301586635e+05, -1.931578241945527e+05, - -1.931101564476429e+05, -1.930622286427340e+05, -1.930140424879183e+05, -1.929655996747971e+05, -1.929169018786938e+05, - -1.928679507588611e+05, -1.928187479586893e+05, -1.927692951059068e+05, -1.927195938127800e+05, -1.926696456763097e+05, - -1.926194522784232e+05, -1.925690151861654e+05, -1.925183359518851e+05, -1.924674161134174e+05, -1.924162571942677e+05, - -1.923648607037878e+05, -1.923132281373526e+05, -1.922613609765313e+05, -1.922092606892591e+05, -1.921569287300036e+05, - -1.921043665399310e+05, -1.920515755470661e+05, -1.919985571664536e+05, -1.919453128003168e+05, -1.918918438382104e+05, - -1.918381516571738e+05, -1.917842376218819e+05, -1.917301030847936e+05, -1.916757493862962e+05, -1.916211778548512e+05, - -1.915663898071339e+05, -1.915113865481736e+05, -1.914561693714923e+05, -1.914007395592371e+05, -1.913450983823168e+05, - -1.912892471005312e+05, -1.912331869627011e+05, -1.911769192067969e+05, -1.911204450600627e+05, -1.910637657391413e+05, - -1.910068824501956e+05, -1.909497963890309e+05, -1.908925087412098e+05, -1.908350206821740e+05, -1.907773333773541e+05, - -1.907194479822889e+05, -1.906613656427329e+05, -1.906030874947681e+05, -1.905446146649146e+05, -1.904859482702359e+05, - -1.904270894184442e+05, -1.903680392080076e+05, -1.903087987282502e+05, -1.902493690594551e+05, -1.901897512729623e+05, - -1.901299464312717e+05, -1.900699555881355e+05, -1.900097797886566e+05, -1.899494200693834e+05, -1.898888774584029e+05, - -1.898281529754313e+05, -1.897672476319073e+05, -1.897061624310788e+05, -1.896448983680952e+05, -1.895834564300902e+05, - -1.895218375962696e+05, -1.894600428379985e+05, -1.893980731188802e+05, -1.893359293948434e+05, -1.892736126142202e+05, - -1.892111237178290e+05, -1.891484636390525e+05, -1.890856333039160e+05, -1.890226336311655e+05, -1.889594655323431e+05, - -1.888961299118620e+05, -1.888326276670816e+05, -1.887689596883816e+05, -1.887051268592314e+05, -1.886411300562645e+05, - -1.885769701493472e+05, -1.885126480016483e+05, -1.884481644697102e+05, -1.883835204035116e+05, -1.883187166465408e+05, - -1.882537540358559e+05, -1.881886334021534e+05, -1.881233555698324e+05, -1.880579213570563e+05, -1.879923315758186e+05, - -1.879265870320015e+05, -1.878606885254395e+05, -1.877946368499793e+05, -1.877284327935386e+05, -1.876620771381654e+05, - -1.875955706600980e+05, -1.875289141298202e+05, -1.874621083121176e+05, -1.873951539661374e+05, -1.873280518454389e+05, - -1.872608026980525e+05, -1.871934072665305e+05, -1.871258662880023e+05, -1.870581804942270e+05, -1.869903506116449e+05, - -1.869223773614286e+05, -1.868542614595348e+05, -1.867860036167543e+05, -1.867176045387610e+05, -1.866490649261612e+05, - -1.865803854745428e+05, -1.865115668745220e+05, -1.864426098117912e+05, -1.863735149671646e+05, -1.863042830166268e+05, - -1.862349146313760e+05, -1.861654104778700e+05, -1.860957712178713e+05, -1.860259975084901e+05, -1.859560900022274e+05, - -1.858860493470206e+05, -1.858158761862830e+05, -1.857455711589473e+05, -1.856751348995064e+05, -1.856045680380556e+05, - -1.855338712003318e+05, -1.854630450077544e+05, -1.853920900774651e+05, -1.853210070223653e+05, -1.852497964511578e+05, - -1.851784589683824e+05, -1.851069951744551e+05, -1.850354056657062e+05, -1.849636910344138e+05, -1.848918518688453e+05, - -1.848198887532895e+05, -1.847478022680960e+05, -1.846755929897052e+05, -1.846032614906899e+05, -1.845308083397846e+05 - }, - { - 4.479550857208960e+04, 4.323469258339491e+04, 4.165466336746298e+04, 4.005478686833201e+04, 3.843439462818020e+04, - 3.679278124949956e+04, 3.512920161744067e+04, 3.344286785273626e+04, 3.173294596519273e+04, 2.999855217032275e+04, - 2.823874882807753e+04, 2.645253995615391e+04, 2.463886626339589e+04, 2.279659964061707e+04, 2.092453703658148e+04, - 1.902139363564054e+04, 1.708579524032563e+04, 1.511626974665037e+04, 1.311123758176098e+04, 1.106900095162789e+04, - 8.987731721751059e+03, 6.865457723374632e+03, 4.700047242887724e+03, 2.489191410723351e+03, 2.303841578597527e+02, - -2.079100645910106e+03, -4.442235335699490e+03, -6.862268377367741e+03, -9.342758713411435e+03, -1.188761520137405e+04, - -1.450114193437441e+04, -1.718809030859988e+04, -1.995371871212594e+04, -2.280386080965038e+04, -2.574500308538336e+04, - -2.878437210413679e+04, -3.193003107950489e+04, -3.519098385270774e+04, -3.857728157139412e+04, -4.210012227358130e+04, - -4.577192453761114e+04, -4.960634051723105e+04, -5.361814653420170e+04, -5.782290467937085e+04, -6.223622069753599e+04, - -6.687233550312778e+04, -7.174171756590325e+04, -7.684737991976016e+04, -8.217999490094141e+04, -8.771251911074221e+04, - -9.339545517972173e+04, -9.915362889636282e+04, -1.048858728435299e+05, -1.104719335925171e+05, -1.157913254416541e+05, - -1.207501981156212e+05, -1.253025511920398e+05, -1.294380985119644e+05, -1.331726888452053e+05, -1.365378929325672e+05, - -1.395719104896798e+05, -1.423138379262768e+05, -1.448005429329999e+05, -1.470652064488142e+05, -1.491368494944543e+05, - -1.510404106932869e+05, -1.527971036845789e+05, -1.544248874580907e+05, -1.559389521220548e+05, -1.573521692629867e+05, - -1.586754854827563e+05, -1.599182545212800e+05, -1.610885118398753e+05, -1.621931990234506e+05, -1.632383461576744e+05, - -1.642292198449140e+05, -1.651704435153852e+05, -1.660660955663028e+05, -1.669197898082219e+05, -1.677347417873978e+05, - -1.685138238017228e+05, -1.692596108250946e+05, -1.699744190799867e+05, -1.706603386274760e+05, -1.713192610566486e+05, - -1.719529031328820e+05, -1.725628270921311e+05, -1.731504581343386e+05, -1.737170995643438e+05, -1.742639459463271e+05, - -1.747920945726066e+05, -1.753025554955913e+05, -1.757962603298970e+05, -1.762740699977903e+05, -1.767367815635502e+05, - -1.771851342797044e+05, -1.776198149494188e+05, -1.780414626938236e+05, -1.784506732001131e+05, -1.788480025154314e+05, - -1.792339704424311e+05, -1.796090635846789e+05, -1.799737380835649e+05, -1.803284220828079e+05, -1.806735179519086e+05, - -1.810094042958581e+05, -1.813364377749266e+05, -1.816549547553693e+05, -1.819652728093145e+05, -1.822676920798694e+05, - -1.825624965255587e+05, -1.828499550524577e+05, -1.831303225698268e+05, -1.834038409160599e+05, -1.836707397486599e+05, - -1.839312373411447e+05, -1.841855413199897e+05, -1.844338493432263e+05, -1.846763497261212e+05, -1.849132220187800e+05, - -1.851446375400168e+05, -1.853707598713822e+05, -1.855917453148491e+05, -1.858077433172994e+05, -1.860188968646492e+05, - -1.862253428481706e+05, -1.864272124053205e+05, -1.866246312371647e+05, -1.868177199043003e+05, -1.870065941029835e+05, - -1.871913649326992e+05, -1.873721390990275e+05, -1.875490192045159e+05, -1.877221039057895e+05, -1.878914880721283e+05, - -1.880572631602982e+05, -1.882195171522402e+05, -1.883783348516031e+05, -1.885337980093053e+05, -1.886859854684055e+05, - -1.888349733005095e+05, -1.889808349342866e+05, -1.891236412766463e+05, -1.892634608270640e+05, -1.894003597855168e+05, - -1.895344021544517e+05, -1.896656498351741e+05, -1.897941627190245e+05, -1.899199987736673e+05, -1.900432141248112e+05, - -1.901638631336409e+05, -1.902819984702295e+05, -1.903976711831811e+05, -1.905109307657252e+05, -1.906218252184862e+05, - -1.907304011085256e+05, -1.908367036284696e+05, -1.909407766466773e+05, -1.910426627611136e+05, -1.911424033475337e+05, - -1.912400386060001e+05, -1.913356076052154e+05, -1.914291483247799e+05, -1.915206976954991e+05, -1.916102916378403e+05, - -1.916979650986467e+05, -1.917837520861943e+05, -1.918676857036876e+05, -1.919497981812736e+05, -1.920301209066497e+05, - -1.921086844543435e+05, -1.921855186137304e+05, -1.922606524158513e+05, -1.923341141590978e+05, -1.924059314338138e+05, - -1.924761311458763e+05, -1.925447395392964e+05, -1.926117822178975e+05, -1.926772841661106e+05, -1.927412697689297e+05, - -1.928037628310707e+05, -1.928647865953660e+05, -1.929243637604383e+05, -1.929825164976823e+05, -1.930392664477731e+05, - -1.930946348144018e+05, -1.931486422640915e+05, -1.932013090164068e+05, -1.932526548392935e+05, -1.933026990625317e+05, - -1.933514605906937e+05, -1.933989579156195e+05, -1.934452091284420e+05, -1.934902319311726e+05, -1.935340436478713e+05, - -1.935766612354176e+05, -1.936181012938977e+05, -1.936583800766275e+05, -1.936975134998231e+05, -1.937355171519372e+05, - -1.937724063026718e+05, -1.938081959153714e+05, -1.938429006408296e+05, -1.938765348470821e+05, -1.939091126129674e+05, - -1.939406477392495e+05, -1.939711537559563e+05, -1.940006439294741e+05, -1.940291312694143e+05, -1.940566285352531e+05, - -1.940831482427596e+05, -1.941087026702157e+05, -1.941333038644402e+05, -1.941569636466196e+05, -1.941796936179588e+05, - -1.942015051651506e+05, -1.942224094656818e+05, -1.942424174929677e+05, -1.942615400213378e+05, -1.942797876308610e+05, - -1.942971707120310e+05, -1.943136994703076e+05, -1.943293839305237e+05, -1.943442339411580e+05, -1.943582591784870e+05, - -1.943714691506091e+05, -1.943838732013557e+05, -1.943954805140839e+05, -1.944063001153661e+05, -1.944163408732719e+05, - -1.944256115222108e+05, -1.944341206340230e+05, -1.944418766429332e+05, -1.944488878432927e+05, -1.944551623926832e+05, - -1.944607083149330e+05, -1.944655335030501e+05, -1.944696457220767e+05, -1.944730526118638e+05, -1.944757616897704e+05, - -1.944777803532925e+05, -1.944791158826194e+05, -1.944797754431204e+05, -1.944797660877710e+05, -1.944790947595076e+05, - -1.944777682935279e+05, -1.944757934195241e+05, -1.944731767638644e+05, -1.944699248517138e+05, -1.944660441091030e+05, - -1.944615408649424e+05, -1.944564213529863e+05, -1.944506917137469e+05, -1.944443579963608e+05, -1.944374261604062e+05, - -1.944299020776798e+05, -1.944217915339237e+05, -1.944131002305150e+05, -1.944038337861098e+05, -1.943939977382490e+05, - -1.943835975449275e+05, -1.943726385861191e+05, -1.943611261652708e+05, -1.943490655107591e+05, -1.943364617773111e+05, - -1.943233200473914e+05, -1.943096453325591e+05, -1.942954425747910e+05, -1.942807166477719e+05, -1.942654723581584e+05, - -1.942497144468137e+05, -1.942334475900090e+05, -1.942166764006026e+05, -1.941994054291906e+05, -1.941816391652304e+05, - -1.941633820381383e+05, -1.941446384183661e+05, -1.941254126184478e+05, -1.941057088940296e+05, -1.940855314448713e+05, - -1.940648844158292e+05, -1.940437718978143e+05, -1.940221979287334e+05, -1.940001664944070e+05, -1.939776815294667e+05, - -1.939547469182363e+05, -1.939313664955901e+05, -1.939075440477966e+05, -1.938832833133414e+05, -1.938585879837334e+05, - -1.938334617042937e+05, -1.938079080749315e+05, -1.937819306508961e+05, -1.937555329435212e+05, -1.937287184209481e+05, - -1.937014905088375e+05, -1.936738525910653e+05, -1.936458080104023e+05, -1.936173600691842e+05, -1.935885120299637e+05, - -1.935592671161522e+05, -1.935296285126469e+05, -1.934995993664470e+05, -1.934691827872565e+05, -1.934383818480730e+05, - -1.934071995857706e+05, -1.933756390016634e+05, -1.933437030620661e+05, -1.933113946988362e+05, -1.932787168099110e+05, - -1.932456722598324e+05, -1.932122638802592e+05, -1.931784944704737e+05, -1.931443667978756e+05, -1.931098835984679e+05, - -1.930750475773315e+05, -1.930398614090948e+05, -1.930043277383886e+05, -1.929684491802989e+05, -1.929322283208054e+05, - -1.928956677172169e+05, -1.928587698985934e+05, -1.928215373661649e+05, -1.927839725937405e+05, -1.927460780281085e+05, - -1.927078560894336e+05, -1.926693091716409e+05, -1.926304396427976e+05, -1.925912498454865e+05, -1.925517420971714e+05, - -1.925119186905576e+05, -1.924717818939447e+05, -1.924313339515742e+05, -1.923905770839699e+05, -1.923495134882735e+05, - -1.923081453385726e+05, -1.922664747862239e+05, -1.922245039601716e+05, -1.921822349672579e+05, -1.921396698925298e+05, - -1.920968107995425e+05, -1.920536597306517e+05, -1.920102187073055e+05, -1.919664897303321e+05, -1.919224747802195e+05, - -1.918781758173913e+05, -1.918335947824772e+05, -1.917887335965830e+05, -1.917435941615495e+05, -1.916981783602118e+05, - -1.916524880566542e+05, -1.916065250964579e+05, -1.915602913069453e+05, -1.915137884974246e+05, -1.914670184594231e+05, - -1.914199829669227e+05, -1.913726837765888e+05, -1.913251226279959e+05, -1.912773012438495e+05, -1.912292213302047e+05, - -1.911808845766803e+05, -1.911322926566713e+05, -1.910834472275559e+05, -1.910343499309000e+05, -1.909850023926603e+05, - -1.909354062233795e+05, -1.908855630183834e+05, -1.908354743579727e+05, -1.907851418076113e+05, -1.907345669181113e+05, - -1.906837512258178e+05, -1.906326962527891e+05, -1.905814035069701e+05, -1.905298744823729e+05, -1.904781106592442e+05, - -1.904261135042353e+05, -1.903738844705703e+05, -1.903214249982082e+05, -1.902687365140056e+05, -1.902158204318746e+05, - -1.901626781529425e+05, -1.901093110657008e+05, -1.900557205461621e+05, -1.900019079580070e+05, -1.899478746527330e+05, - -1.898936219697986e+05, -1.898391512367662e+05, -1.897844637694434e+05, -1.897295608720236e+05, -1.896744438372187e+05, - -1.896191139463985e+05, -1.895635724697194e+05, -1.895078206662574e+05, -1.894518597841378e+05, -1.893956910606596e+05, - -1.893393157224224e+05, -1.892827349854497e+05, -1.892259500553109e+05, -1.891689621272395e+05, -1.891117723862521e+05, - -1.890543820072663e+05, -1.889967921552137e+05, -1.889390039851516e+05, -1.888810186423793e+05, -1.888228372625436e+05, - -1.887644609717488e+05, -1.887058908866633e+05, -1.886471281146266e+05, -1.885881737537505e+05, -1.885290288930232e+05, - -1.884696946124101e+05, -1.884101719829537e+05, -1.883504620668715e+05, -1.882905659176525e+05, -1.882304845801534e+05, - -1.881702190906930e+05, -1.881097704771447e+05, -1.880491397590275e+05, -1.879883279475992e+05, -1.879273360459415e+05, - -1.878661650490524e+05, -1.878048159439294e+05, -1.877432897096574e+05, -1.876815873174923e+05, -1.876197097309448e+05, - -1.875576579058623e+05, -1.874954327905104e+05, -1.874330353256533e+05, -1.873704664446315e+05, -1.873077270734415e+05, - -1.872448181308115e+05, -1.871817405282791e+05, -1.871184951702643e+05, -1.870550829541440e+05, -1.869915047703256e+05, - -1.869277615023195e+05, -1.868638540268083e+05, -1.867997832137200e+05, -1.867355499262941e+05, -1.866711550211531e+05, - -1.866065993483673e+05, -1.865418837515233e+05, -1.864770090677898e+05, -1.864119761279816e+05, -1.863467857566246e+05, - -1.862814387720191e+05, -1.862159359863020e+05, -1.861502782055087e+05, -1.860844662296343e+05, -1.860185008526947e+05, - -1.859523828627838e+05, -1.858861130421350e+05, -1.858196921671767e+05, -1.857531210085921e+05, -1.856864003313732e+05, - -1.856195308948791e+05, -1.855525134528901e+05, -1.854853487536614e+05, -1.854180375399790e+05, -1.853505805492110e+05, - -1.852829785133617e+05, -1.852152321591220e+05, -1.851473422079228e+05, -1.850793093759825e+05, -1.850111343743613e+05, - -1.849428179090058e+05, -1.848743606808031e+05, -1.848057633856239e+05, -1.847370267143752e+05, -1.846681513530428e+05, - -1.845991379827415e+05, -1.845299872797597e+05, -1.844606999156038e+05, -1.843912765570455e+05, -1.843217178661640e+05, - -1.842520245003920e+05, -1.841821971125571e+05, -1.841122363509263e+05, -1.840421428592470e+05, -1.839719172767898e+05, - -1.839015602383897e+05, -1.838310723744881e+05, -1.837604543111699e+05, -1.836897066702070e+05, -1.836188300690981e+05, - -1.835478251211030e+05, -1.834766924352877e+05, -1.834054326165568e+05, -1.833340462656959e+05, -1.832625339794050e+05, - -1.831908963503393e+05, -1.831191339671417e+05, -1.830472474144826e+05, -1.829752372730925e+05, -1.829031041197992e+05 - }, - { - 4.569073930108565e+04, 4.414045725916783e+04, 4.257135424649754e+04, 4.098281967349993e+04, 3.937421046113632e+04, - 3.774484869882437e+04, 3.609401908676824e+04, 3.442096613663814e+04, 3.272489110472038e+04, 3.100494862494426e+04, - 2.926024300642404e+04, 2.748982415468067e+04, 2.569268306996386e+04, 2.386774686936163e+04, 2.201387327155770e+04, - 2.012984447398986e+04, 1.821436034155416e+04, 1.626603081363392e+04, 1.428336742181108e+04, 1.226477379375835e+04, - 1.020853499951960e+04, 8.112805572808897e+03, 5.975596014784461e+03, 3.794757556135735e+03, 1.567964919028608e+03, - -7.073032193776428e+02, -3.033786402150852e+03, -5.414467609729673e+03, -7.852601933609595e+03, -1.035174923261583e+04, - -1.291581128569096e+04, -1.554907402048066e+04, -1.825625534463617e+04, -2.104255913815550e+04, -2.391373562879918e+04, - -2.687614813425839e+04, -2.993684535935984e+04, -3.310363717451649e+04, -3.638516955051330e+04, -3.979099046019723e+04, - -4.333159199235744e+04, -4.701840290689525e+04, -5.086368772327054e+04, -5.488027959196223e+04, -5.908103132514931e+04, - -6.347781360606218e+04, -6.807983996811739e+04, -7.289111018852850e+04, -7.790693616554802e+04, -8.310990808472877e+04, - -8.846609050861324e+04, -9.392229154922691e+04, -9.940506451408232e+04, -1.048228719141936e+05, -1.100743968092864e+05, - -1.150643344314581e+05, -1.197222315461724e+05, -1.240146790917013e+05, -1.279352439669842e+05, -1.314979769839987e+05, - -1.347292505770824e+05, -1.376608534234542e+05, -1.403255626251023e+05, -1.427546651887688e+05, -1.449767362309655e+05, - -1.470171655454925e+05, -1.488981154181420e+05, -1.506387157619305e+05, -1.522553747897153e+05, -1.537621288770748e+05, - -1.551709864339554e+05, -1.564922420739312e+05, -1.577347512916584e+05, -1.589061640929295e+05, -1.600131203433852e+05, - -1.610614114755236e+05, -1.620561136681885e+05, -1.630016973652020e+05, -1.639021174337190e+05, -1.647608876023348e+05, - -1.655811421785677e+05, -1.663656874764044e+05, -1.671170449036301e+05, -1.678374872645061e+05, -1.685290695166066e+05, - -1.691936549692802e+05, -1.698329377131602e+05, -1.704484619146552e+05, -1.710416384872400e+05, -1.716137595553379e+05, - -1.721660110507035e+05, -1.726994837209843e+05, -1.732151827820285e+05, -1.737140364068059e+05, -1.741969032124952e+05, - -1.746645788817448e+05, -1.751178020331737e+05, -1.755572594388796e+05, -1.759835906723509e+05, -1.763973922581945e+05, - -1.767992213850256e+05, -1.771895992343788e+05, -1.775690139713364e+05, -1.779379234364575e+05, -1.782967575734094e+05, - -1.786459206222485e+05, -1.789857931045024e+05, -1.793167336229129e+05, -1.796390804918754e+05, -1.799531532406339e+05, - -1.802592539427003e+05, -1.805576684690940e+05, -1.808486676135645e+05, -1.811325081264412e+05, -1.814094336621843e+05, - -1.816796756490442e+05, -1.819434540883156e+05, -1.822009782898483e+05, -1.824524475497667e+05, -1.826980517757185e+05, - -1.829379720644115e+05, -1.831723812357101e+05, -1.834014443271269e+05, -1.836253190521594e+05, -1.838441562255736e+05, - -1.840581001584406e+05, -1.842672890254549e+05, -1.844718552068236e+05, -1.846719256067948e+05, -1.848676219507102e+05, - -1.850590610723039e+05, -1.852463551348447e+05, -1.854296119306727e+05, -1.856089350741643e+05, -1.857844242159377e+05, - -1.859561751324910e+05, -1.861242802833418e+05, -1.862888285180345e+05, -1.864499055099649e+05, -1.866075938523631e+05, - -1.867619732041385e+05, -1.869131204272233e+05, -1.870611097160063e+05, -1.872060127193853e+05, -1.873478986559474e+05, - -1.874868344227235e+05, -1.876228846979479e+05, -1.877561120382100e+05, -1.878865769703641e+05, -1.880143380785272e+05, - -1.881394520864760e+05, -1.882619739357362e+05, -1.883819568596243e+05, -1.884994524534908e+05, -1.886145107407438e+05, - -1.887271802388750e+05, -1.888375080154748e+05, -1.889455397482919e+05, -1.890513197789114e+05, -1.891548911645403e+05, - -1.892562957273065e+05, -1.893555741012223e+05, -1.894527657769350e+05, -1.895479091443960e+05, -1.896410415335566e+05, - -1.897321992532036e+05, -1.898214176280331e+05, -1.899087310340562e+05, -1.899941729324293e+05, -1.900777759017891e+05, - -1.901595716691699e+05, -1.902395911395831e+05, -1.903178644243182e+05, -1.903944208680396e+05, -1.904692890747342e+05, - -1.905424969325702e+05, -1.906140716377228e+05, -1.906840397172129e+05, -1.907524270508124e+05, -1.908192588920604e+05, - -1.908845598884296e+05, -1.909483541006883e+05, -1.910106650214934e+05, -1.910715155932531e+05, -1.911309282055436e+05, - -1.911889247893629e+05, -1.912455267181728e+05, -1.913007548985230e+05, -1.913546297661789e+05, -1.914071713002524e+05, - -1.914583990368012e+05, -1.915083320819262e+05, -1.915569891243894e+05, -1.916043884477670e+05, -1.916505479421660e+05, - -1.916954851155164e+05, -1.917392171044614e+05, -1.917817606848615e+05, -1.918231322819273e+05, -1.918633479800001e+05, - -1.919024235319898e+05, -1.919403743684907e+05, -1.919772156065820e+05, -1.920129620583311e+05, -1.920476282432655e+05, - -1.920812283794465e+05, -1.921137764161958e+05, -1.921452860249795e+05, -1.921757706106780e+05, -1.922052433185278e+05, - -1.922337170408368e+05, -1.922612044234859e+05, -1.922877178722188e+05, -1.923132695587355e+05, -1.923378714265875e+05, - -1.923615351968938e+05, -1.923842723738739e+05, -1.924060942502105e+05, -1.924270119122477e+05, -1.924470362450273e+05, - -1.924661779371746e+05, -1.924844474856344e+05, -1.925018552002645e+05, -1.925184112082921e+05, -1.925341254586387e+05, - -1.925490077261144e+05, -1.925630676154919e+05, -1.925763145654601e+05, -1.925887578524631e+05, -1.926004065944270e+05, - -1.926112697485168e+05, -1.926213561382861e+05, -1.926306744214215e+05, -1.926392331169791e+05, -1.926470406026038e+05, - -1.926541051176700e+05, -1.926604347663303e+05, -1.926660375204839e+05, -1.926709212226638e+05, -1.926750935888406e+05, - -1.926785622111575e+05, -1.926813345605829e+05, -1.926834179895001e+05, -1.926848197342237e+05, -1.926855469174480e+05, - -1.926856065506348e+05, -1.926850055363342e+05, -1.926837506704490e+05, -1.926818486444365e+05, -1.926793060474550e+05, - -1.926761293684582e+05, -1.926723249982283e+05, -1.926678992313660e+05, -1.926628582682247e+05, -1.926572082167973e+05, - -1.926509550945578e+05, -1.926441048302535e+05, -1.926366632656542e+05, -1.926286361572614e+05, -1.926200291779693e+05, - -1.926108479186902e+05, -1.926010978899406e+05, -1.925907845233833e+05, -1.925799131733408e+05, -1.925684891182634e+05, - -1.925565175621716e+05, -1.925440036360551e+05, -1.925309523992469e+05, -1.925173688407599e+05, -1.925032578805935e+05, - -1.924886243710121e+05, -1.924734730977887e+05, -1.924578087814274e+05, -1.924416360783508e+05, -1.924249595820635e+05, - -1.924077838242912e+05, -1.923901132760880e+05, -1.923719523489260e+05, -1.923533053957549e+05, -1.923341767120411e+05, - -1.923145705367810e+05, -1.922944910534967e+05, -1.922739423912032e+05, -1.922529286253602e+05, -1.922314537788007e+05, - -1.922095218226374e+05, -1.921871366771552e+05, -1.921643022126782e+05, -1.921410222504215e+05, -1.921173005633254e+05, - -1.920931408768692e+05, -1.920685468698704e+05, -1.920435221752661e+05, -1.920180703808762e+05, -1.919921950301550e+05, - -1.919658996229222e+05, -1.919391876160830e+05, -1.919120624243304e+05, -1.918845274208339e+05, -1.918565859379154e+05, - -1.918282412677106e+05, -1.917994966628143e+05, -1.917703553369193e+05, -1.917408204654337e+05, -1.917108951860940e+05, - -1.916805825995607e+05, -1.916498857700042e+05, -1.916188077256782e+05, -1.915873514594838e+05, -1.915555199295188e+05, - -1.915233160596203e+05, -1.914907427398948e+05, -1.914578028272375e+05, -1.914244991458421e+05, -1.913908344877026e+05, - -1.913568116131009e+05, -1.913224332510917e+05, -1.912877020999713e+05, -1.912526208277429e+05, -1.912171920725703e+05, - -1.911814184432226e+05, -1.911453025195140e+05, -1.911088468527317e+05, -1.910720539660579e+05, -1.910349263549822e+05, - -1.909974664877092e+05, -1.909596768055564e+05, -1.909215597233451e+05, -1.908831176297846e+05, -1.908443528878501e+05, - -1.908052678351517e+05, -1.907658647843002e+05, -1.907261460232610e+05, -1.906861138157081e+05, -1.906457704013662e+05, - -1.906051179963511e+05, -1.905641587934995e+05, -1.905228949626979e+05, -1.904813286512031e+05, -1.904394619839555e+05, - -1.903972970638910e+05, -1.903548359722435e+05, -1.903120807688458e+05, -1.902690334924208e+05, -1.902256961608740e+05, - -1.901820707715745e+05, -1.901381593016338e+05, -1.900939637081827e+05, -1.900494859286383e+05, -1.900047278809696e+05, - -1.899596914639605e+05, -1.899143785574629e+05, -1.898687910226494e+05, -1.898229307022623e+05, -1.897767994208569e+05, - -1.897303989850393e+05, -1.896837311837042e+05, -1.896367977882666e+05, -1.895896005528884e+05, -1.895421412147019e+05, - -1.894944214940349e+05, -1.894464430946218e+05, -1.893982077038223e+05, -1.893497169928271e+05, -1.893009726168681e+05, - -1.892519762154197e+05, -1.892027294124004e+05, -1.891532338163683e+05, -1.891034910207151e+05, -1.890535026038586e+05, - -1.890032701294291e+05, -1.889527951464535e+05, -1.889020791895393e+05, -1.888511237790516e+05, -1.887999304212916e+05, - -1.887485006086671e+05, -1.886968358198678e+05, -1.886449375200281e+05, -1.885928071608984e+05, -1.885404461810042e+05, - -1.884878560058080e+05, -1.884350380478680e+05, -1.883819937069938e+05, -1.883287243703993e+05, -1.882752314128544e+05, - -1.882215161968331e+05, -1.881675800726617e+05, -1.881134243786613e+05, -1.880590504412913e+05, -1.880044595752900e+05, - -1.879496530838110e+05, -1.878946322585616e+05, -1.878393983799352e+05, -1.877839527171426e+05, -1.877282965283461e+05, - -1.876724310607829e+05, -1.876163575508944e+05, -1.875600772244509e+05, -1.875035912966726e+05, -1.874469009723525e+05, - -1.873900074459748e+05, -1.873329119018323e+05, -1.872756155141422e+05, -1.872181194471618e+05, -1.871604248552987e+05, - -1.871025328832245e+05, -1.870444446659826e+05, -1.869861613290958e+05, -1.869276839886740e+05, -1.868690137515182e+05, - -1.868101517152246e+05, -1.867510989682863e+05, -1.866918565901939e+05, -1.866324256515345e+05, -1.865728072140893e+05, - -1.865130023309321e+05, -1.864530120465214e+05, -1.863928373967970e+05, -1.863324794092704e+05, -1.862719391031178e+05, - -1.862112174892700e+05, -1.861503155704997e+05, -1.860892343415105e+05, -1.860279747890249e+05, -1.859665378918654e+05, - -1.859049246210432e+05, -1.858431359398380e+05, -1.857811728038829e+05, -1.857190361612426e+05, -1.856567269524938e+05, - -1.855942461108053e+05, -1.855315945620148e+05, -1.854687732247060e+05, -1.854057830102826e+05, -1.853426248230459e+05, - -1.852792995602668e+05, -1.852158081122579e+05, -1.851521513624463e+05, -1.850883301874454e+05, -1.850243454571238e+05, - -1.849601980346737e+05, -1.848958887766801e+05, -1.848314185331886e+05, -1.847667881477707e+05, -1.847019984575908e+05, - -1.846370502934687e+05, -1.845719444799457e+05, -1.845066818353486e+05, -1.844412631718483e+05, -1.843756892955252e+05, - -1.843099610064279e+05, -1.842440790986337e+05, -1.841780443603094e+05, -1.841118575737669e+05, -1.840455195155230e+05, - -1.839790309563582e+05, -1.839123926613683e+05, -1.838456053900249e+05, -1.837786698962284e+05, -1.837115869283625e+05, - -1.836443572293471e+05, -1.835769815366933e+05, -1.835094605825545e+05, -1.834417950937780e+05, -1.833739857919569e+05, - -1.833060333934814e+05, -1.832379386095850e+05, -1.831697021463992e+05, -1.831013247049982e+05, -1.830328069814481e+05, - -1.829641496668560e+05, -1.828953534474143e+05, -1.828264190044503e+05, -1.827573470144693e+05, -1.826881381492009e+05, - -1.826187930756453e+05, -1.825493124561147e+05, -1.824796969482804e+05, -1.824099472052140e+05, -1.823400638754297e+05, - -1.822700476029284e+05, -1.821998990272381e+05, -1.821296187834570e+05, -1.820592075022903e+05, -1.819886658100959e+05, - -1.819179943289201e+05, -1.818471936765397e+05, -1.817762644664981e+05, -1.817052073081481e+05, -1.816340228066851e+05, - -1.815627115631886e+05, -1.814912741746576e+05, -1.814197112340473e+05, -1.813480233303074e+05, -1.812762110484148e+05 - }, - { - 4.658693775150731e+04, 4.504707323435106e+04, 4.348877116344112e+04, 4.191144352147035e+04, 4.031447161059469e+04, - 3.869720389197853e+04, 3.705895363176247e+04, 3.539899633052156e+04, 3.371656691398919e+04, 3.201085665670363e+04, - 3.028100980819414e+04, 2.852611988670797e+04, 2.674522560076246e+04, 2.493730635330076e+04, 2.310127727687689e+04, - 2.123598374096341e+04, 1.934019526400339e+04, 1.741259875304723e+04, 1.545179098252474e+04, 1.345627021068801e+04, - 1.142442681724354e+04, 9.354532828852511e+03, 7.244730178753882e+03, 5.093017525953926e+03, 2.897235433407403e+03, - 6.550496779943096e+02, -1.636067564518083e+03, -3.978858944237107e+03, -6.376305901816533e+03, -8.831655685553716e+03, - -1.134845181488352e+04, -1.393056831923451e+04, -1.658224808506169e+04, -1.930814548068629e+04, -2.211337337873021e+04, - -2.500355410297463e+04, -2.798487340500836e+04, -3.106413537893646e+04, -3.424881447162836e+04, -3.754709779212177e+04, - -4.096790611426061e+04, -4.452087419952125e+04, -4.821625873589566e+04, -5.206472321326363e+04, -5.607692154947304e+04, - -6.026276696497569e+04, -6.463023889899319e+04, -6.918357760181953e+04, -7.392079955408929e+04, -7.883069353426924e+04, - -8.388978384904735e+04, -8.905994462162525e+04, -9.428723892740053e+04, -9.950253161593071e+04, -1.046250874134351e+05, - -1.095707961982879e+05, -1.142645618540401e+05, -1.186532659612693e+05, -1.227123577290506e+05, -1.264381038007788e+05, - -1.298429227227084e+05, -1.329490002431371e+05, -1.357829929207343e+05, -1.383725653091939e+05, -1.407444012988865e+05, - -1.429231805747553e+05, -1.449311346170721e+05, -1.467879418283544e+05, -1.485108183113010e+05, -1.501147151030226e+05, - -1.516125640177691e+05, -1.530155348909246e+05, -1.543332818432149e+05, -1.555741667476968e+05, -1.567454551424534e+05, - -1.578534841501051e+05, -1.589038043222300e+05, -1.599012983999051e+05, -1.608502802820459e+05, -1.617545773700971e+05, - -1.626175991318128e+05, -1.634423943290857e+05, -1.642316989568281e+05, -1.649879765771667e+05, -1.657134524196785e+05, - -1.664101423562710e+05, -1.670798776448899e+05, -1.677243261632558e+05, -1.683450107155188e+05, -1.689433248846174e+05, - -1.695205468156000e+05, -1.700778512455543e+05, -1.706163200402168e+05, -1.711369514528331e+05, -1.716406682849689e+05, - -1.721283250999314e+05, -1.726007146157619e+05, -1.730585733853380e+05, -1.735025868550738e+05, -1.739333938803889e+05, - -1.743515907649931e+05, -1.747577348816897e+05, -1.751523479245325e+05, -1.755359188354916e+05, -1.759089064431080e+05, - -1.762717418457763e+05, -1.766248305645023e+05, -1.769685545121897e+05, -1.773032737451533e+05, -1.776293280920552e+05, - -1.779470386192669e+05, -1.782567089710907e+05, -1.785586265940148e+05, -1.788530638566584e+05, -1.791402790757398e+05, - -1.794205174572468e+05, -1.796940119609714e+05, -1.799609840956891e+05, -1.802216446514729e+05, -1.804761943749516e+05, - -1.807248245927051e+05, -1.809677177874602e+05, -1.812050481312681e+05, -1.814369819794288e+05, -1.816636783285473e+05, - -1.818852892417799e+05, -1.821019602440240e+05, -1.823138306895538e+05, -1.825210341043485e+05, -1.827236985189272e+05, - -1.829219467094289e+05, -1.831158965641202e+05, -1.833056612851990e+05, -1.834913496445241e+05, -1.836730662104905e+05, - -1.838509114544211e+05, -1.840249823037385e+05, -1.841953718834602e+05, -1.843621699483711e+05, -1.845254629925483e+05, - -1.846853344051428e+05, -1.848418646170119e+05, -1.849951312388376e+05, -1.851452091913129e+05, -1.852921708279352e+05, - -1.854360860509022e+05, -1.855770224205684e+05, -1.857150452588818e+05, -1.858502177471957e+05, -1.859826010188156e+05, - -1.861122542466160e+05, -1.862392347260354e+05, -1.863635979537441e+05, -1.864853977015164e+05, -1.866046860899946e+05, - -1.867215136513014e+05, -1.868359293960134e+05, -1.869479808730102e+05, -1.870577142271500e+05, -1.871651742541329e+05, - -1.872704044527192e+05, -1.873734470744475e+05, -1.874743431710008e+05, -1.875731326393454e+05, -1.876698542647747e+05, - -1.877645457619647e+05, -1.878572438141571e+05, -1.879479841105671e+05, -1.880368013821118e+05, -1.881237294355510e+05, - -1.882088011861196e+05, -1.882920486887362e+05, -1.883735031678568e+05, -1.884531950460445e+05, -1.885311539713246e+05, - -1.886074088433795e+05, -1.886819878386479e+05, -1.887549184343808e+05, -1.888262274317020e+05, -1.888959409777291e+05, - -1.889640845867958e+05, -1.890306831608169e+05, -1.890957610088449e+05, -1.891593418658467e+05, -1.892214488910885e+05, - -1.892821047628542e+05, -1.893413315808706e+05, -1.893991509572949e+05, -1.894555840136817e+05, -1.895106513958144e+05, - -1.895643732879764e+05, -1.896167694266929e+05, -1.896678591139656e+05, -1.897176612300155e+05, -1.897661942455681e+05, - -1.898134762336879e+05, -1.898595248811899e+05, -1.899043574996433e+05, -1.899479910359865e+05, -1.899904420827653e+05, - -1.900317268880169e+05, -1.900718613648085e+05, -1.901108611004464e+05, -1.901487413653744e+05, -1.901855171217623e+05, - -1.902212030318123e+05, -1.902558134657797e+05, -1.902893625146054e+05, -1.903218639780912e+05, -1.903533314008788e+05, - -1.903837780604905e+05, -1.904132169788170e+05, -1.904416609286874e+05, -1.904691224402294e+05, -1.904956138070243e+05, - -1.905211470920713e+05, -1.905457341335599e+05, -1.905693865504662e+05, -1.905921157479715e+05, -1.906139329227182e+05, - -1.906348490678997e+05, -1.906548749782000e+05, -1.906740212545799e+05, -1.906922983089216e+05, -1.907097163685331e+05, - -1.907262854805192e+05, -1.907420155160233e+05, -1.907569161743439e+05, -1.907709969869325e+05, -1.907842673212728e+05, - -1.907967363780708e+05, -1.908084132213633e+05, -1.908193067422357e+05, -1.908294256889305e+05, -1.908387786635207e+05, - -1.908473741251754e+05, -1.908552203933308e+05, -1.908623256507756e+05, -1.908686979466506e+05, -1.908743451993650e+05, - -1.908792751994358e+05, -1.908834956122471e+05, -1.908870139807370e+05, -1.908898377280119e+05, -1.908919741598904e+05, - -1.908934304673818e+05, -1.908942137290954e+05, -1.908943309135911e+05, -1.908937888816642e+05, -1.908925943885748e+05, - -1.908907540862162e+05, -1.908882745252312e+05, -1.908851621570699e+05, -1.908814233359989e+05, -1.908770643210576e+05, - -1.908720912779664e+05, -1.908665102809869e+05, -1.908603273147332e+05, -1.908535482759436e+05, -1.908461789752038e+05, - -1.908382251386291e+05, -1.908296924095074e+05, -1.908205863498995e+05, -1.908109124422025e+05, -1.908006760906747e+05, - -1.907898826229252e+05, -1.907785372913657e+05, -1.907666452746315e+05, -1.907542116789638e+05, -1.907412415395655e+05, - -1.907277398219201e+05, -1.907137114230834e+05, -1.906991611729439e+05, -1.906840938354529e+05, -1.906685141098296e+05, - -1.906524266317363e+05, -1.906358359744260e+05, -1.906187466498684e+05, -1.906011631098442e+05, -1.905830897470209e+05, - -1.905645308960007e+05, -1.905454908343473e+05, -1.905259737835882e+05, -1.905059839101956e+05, -1.904855253265481e+05, - -1.904646020918671e+05, -1.904432182131370e+05, -1.904213776460007e+05, -1.903990842956428e+05, -1.903763420176471e+05, - -1.903531546188399e+05, -1.903295258581123e+05, -1.903054594472291e+05, -1.902809590516169e+05, -1.902560282911376e+05, - -1.902306707408453e+05, -1.902048899317280e+05, -1.901786893514328e+05, -1.901520724449762e+05, -1.901250426154423e+05, - -1.900976032246640e+05, -1.900697575938893e+05, -1.900415090044391e+05, -1.900128606983456e+05, -1.899838158789840e+05, - -1.899543777116863e+05, -1.899245493243437e+05, -1.898943338080016e+05, -1.898637342174374e+05, -1.898327535717294e+05, - -1.898013948548136e+05, -1.897696610160324e+05, -1.897375549706671e+05, -1.897050796004657e+05, -1.896722377541587e+05, - -1.896390322479612e+05, -1.896054658660728e+05, -1.895715413611608e+05, -1.895372614548383e+05, -1.895026288381323e+05, - -1.894676461719427e+05, -1.894323160874923e+05, -1.893966411867696e+05, -1.893606240429626e+05, -1.893242672008840e+05, - -1.892875731773893e+05, -1.892505444617873e+05, -1.892131835162430e+05, -1.891754927761714e+05, -1.891374746506277e+05, - -1.890991315226865e+05, -1.890604657498172e+05, -1.890214796642505e+05, -1.889821755733400e+05, -1.889425557599158e+05, - -1.889026224826328e+05, -1.888623779763130e+05, -1.888218244522806e+05, -1.887809640986917e+05, -1.887397990808600e+05, - -1.886983315415726e+05, -1.886565636014050e+05, -1.886144973590274e+05, -1.885721348915077e+05, -1.885294782546064e+05, - -1.884865294830718e+05, -1.884432905909226e+05, -1.883997635717327e+05, -1.883559503989074e+05, -1.883118530259554e+05, - -1.882674733867574e+05, -1.882228133958280e+05, -1.881778749485762e+05, -1.881326599215579e+05, -1.880871701727276e+05, - -1.880414075416855e+05, -1.879953738499164e+05, -1.879490709010300e+05, -1.879025004809941e+05, -1.878556643583670e+05, - -1.878085642845193e+05, -1.877612019938624e+05, -1.877135792040627e+05, -1.876656976162616e+05, -1.876175589152836e+05, - -1.875691647698486e+05, -1.875205168327743e+05, -1.874716167411817e+05, -1.874224661166898e+05, -1.873730665656155e+05, - -1.873234196791633e+05, -1.872735270336171e+05, -1.872233901905251e+05, -1.871730106968845e+05, -1.871223900853225e+05, - -1.870715298742731e+05, -1.870204315681538e+05, -1.869690966575384e+05, -1.869175266193256e+05, -1.868657229169064e+05, - -1.868136870003299e+05, -1.867614203064656e+05, -1.867089242591608e+05, -1.866562002694021e+05, -1.866032497354654e+05, - -1.865500740430735e+05, -1.864966745655428e+05, -1.864430526639318e+05, -1.863892096871894e+05, -1.863351469722964e+05, - -1.862808658444070e+05, -1.862263676169901e+05, -1.861716535919635e+05, -1.861167250598338e+05, -1.860615832998257e+05, - -1.860062295800149e+05, -1.859506651574584e+05, -1.858948912783214e+05, -1.858389091780029e+05, -1.857827200812600e+05, - -1.857263252023302e+05, -1.856697257450520e+05, -1.856129229029824e+05, -1.855559178595153e+05, -1.854987117879963e+05, - -1.854413058518369e+05, -1.853837012046256e+05, -1.853258989902396e+05, -1.852679003429517e+05, -1.852097063875408e+05, - -1.851513182393957e+05, -1.850927370046192e+05, -1.850339637801325e+05, -1.849749996537772e+05, -1.849158457044122e+05, - -1.848565030020164e+05, -1.847969726077846e+05, -1.847372555742215e+05, -1.846773529452408e+05, -1.846172657562546e+05, - -1.845569950342672e+05, -1.844965417979676e+05, -1.844359070578157e+05, -1.843750918161342e+05, -1.843140970671939e+05, - -1.842529237973008e+05, -1.841915729848800e+05, -1.841300456005613e+05, -1.840683426072604e+05, -1.840064649602607e+05, - -1.839444136072948e+05, -1.838821894886236e+05, -1.838197935371133e+05, -1.837572266783155e+05, -1.836944898305415e+05, - -1.836315839049384e+05, -1.835685098055637e+05, -1.835052684294575e+05, -1.834418606667184e+05, -1.833782874005701e+05, - -1.833145495074360e+05, -1.832506478570075e+05, -1.831865833123128e+05, -1.831223567297851e+05, -1.830579689593286e+05, - -1.829934208443878e+05, -1.829287132220082e+05, -1.828638469229057e+05, -1.827988227715268e+05, -1.827336415861134e+05, - -1.826683041787639e+05, -1.826028113554959e+05, -1.825371639163054e+05, -1.824713626552272e+05, -1.824054083603951e+05, - -1.823393018140973e+05, -1.822730437928383e+05, -1.822066350673919e+05, -1.821400764028598e+05, -1.820733685587266e+05, - -1.820065122889137e+05, -1.819395083418350e+05, -1.818723574604502e+05, -1.818050603823162e+05, -1.817376178396410e+05, - -1.816700305593353e+05, -1.816022992630608e+05, -1.815344246672858e+05, -1.814664074833296e+05, -1.813982484174143e+05, - -1.813299481707141e+05, -1.812615074394013e+05, -1.811929269146939e+05, -1.811242072829056e+05, -1.810553492254881e+05, - -1.809863534190788e+05, -1.809172205355456e+05, -1.808479512420333e+05, -1.807785462010039e+05, -1.807090060702848e+05, - -1.806393315031088e+05, -1.805695231481575e+05, -1.804995816496045e+05, -1.804295076471560e+05, -1.803593017760917e+05, - -1.802889646673070e+05, -1.802184969473518e+05, -1.801478992384712e+05, -1.800771721586432e+05, -1.800063163216210e+05, - -1.799353323369675e+05, -1.798642208100948e+05, -1.797929823423043e+05, -1.797216175308191e+05, -1.796501269688248e+05 - }, - { - 4.748410248499794e+04, 4.595454093462567e+04, 4.440691664568063e+04, 4.284066331647729e+04, 4.125518567608072e+04, - 3.964985749238003e+04, 3.802401940657062e+04, 3.637697657388280e+04, 3.470799609156186e+04, 3.301630418949209e+04, - 3.130108315744370e+04, 2.956146797903315e+04, 2.779654263863901e+04, 2.600533606304199e+04, 2.418681765443722e+04, - 2.233989236560477e+04, 2.046339526131645e+04, 1.855608550238942e+04, 1.661663968004697e+04, 1.464364441828822e+04, - 1.263558815068140e+04, 1.059085196521964e+04, 8.507699396995371e+03, 6.384265031810531e+03, 4.218541768189365e+03, - 2.008366565850739e+03, -2.485955089876093e+02, -2.554869148881206e+03, -4.913188800318600e+03, -7.326521033161651e+03, - -9.798089479889644e+03, -1.233140258651690e+04, -1.493028430304854e+04, -1.759890771961647e+04, -2.034183157483606e+04, - -2.316403903050044e+04, -2.607097774213883e+04, -2.906859925945408e+04, -3.216339440229230e+04, -3.536241899321274e+04, - -3.867330077641104e+04, -4.210421280662213e+04, -4.566379007714239e+04, -4.936095344800831e+04, -5.320458696354205e+04, - -5.720299180214934e+04, -6.136301742029440e+04, -6.568876340742380e+04, -7.017978564107350e+04, -7.482886718147881e+04, - -7.961963152576209e+04, -8.452448254549236e+04, -8.950338217477036e+04, -9.450384580754898e+04, -9.946260948517073e+04, - -1.043098127778527e+05, -1.089763219549185e+05, -1.134030367548735e+05, -1.175497102242094e+05, -1.213981374898296e+05, - -1.249464777406686e+05, -1.282056944209809e+05, -1.311945706650532e+05, -1.339356123862216e+05, -1.364523127651564e+05, - -1.387675399547995e+05, -1.409026765673152e+05, -1.428772159507971e+05, -1.447086282338765e+05, -1.464123860368887e+05, - -1.480020831424942e+05, -1.494896027707134e+05, -1.508853061911231e+05, -1.521982223636593e+05, -1.534362268246496e+05, - -1.546062035756193e+05, -1.557141875418603e+05, -1.567654875688747e+05, -1.577647912815355e+05, -1.587162537762841e+05, - -1.596235723149260e+05, -1.604900491289687e+05, -1.613186442520182e+05, -1.621120200530827e+05, -1.628725788914669e+05, - -1.636024950785023e+05, -1.643037421236301e+05, -1.649781160654146e+05, -1.656272555408938e+05, -1.662526591260956e+05, - -1.668557003827833e+05, -1.674376409676197e+05, -1.679996420965501e+05, -1.685427746061924e+05, -1.690680278129442e+05, - -1.695763173372982e+05, -1.700684920338969e+05, -1.705453401458475e+05, -1.710075947837556e+05, -1.714559388150357e+05, - -1.718910092366632e+05, -1.723134010942213e+05, -1.727236710013990e+05, -1.731223403031778e+05, -1.735098979453938e+05, - -1.738868030300967e+05, -1.742534871633356e+05, -1.746103565646118e+05, -1.749577939851435e+05, -1.752961604517481e+05, - -1.756257968546409e+05, -1.759470253952957e+05, -1.762601509086316e+05, -1.765654620721571e+05, -1.768632325132790e+05, - -1.771537218247203e+05, -1.774371764969099e+05, -1.777138307752366e+05, -1.779839074492109e+05, -1.782476185798368e+05, - -1.785051661708321e+05, -1.787567427887561e+05, -1.790025321365856e+05, -1.792427095848193e+05, -1.794774426637960e+05, - -1.797068915205324e+05, -1.799312093430777e+05, -1.801505427550931e+05, -1.803650321851418e+05, -1.805748122122072e+05, - -1.807800118492705e+05, -1.809807549081455e+05, -1.811771602304695e+05, -1.813693419584066e+05, -1.815574097774448e+05, - -1.817414690402701e+05, -1.819216213247282e+05, -1.820979641993842e+05, -1.822705916612398e+05, -1.824395942578127e+05, - -1.826050592533404e+05, -1.827670707851510e+05, -1.829257100108936e+05, -1.830810552472500e+05, -1.832331821007180e+05, - -1.833821635909903e+05, -1.835280702674342e+05, -1.836709703191180e+05, -1.838109296788111e+05, -1.839480121213474e+05, - -1.840822793567081e+05, -1.842137911181656e+05, -1.843426052457918e+05, -1.844687777649115e+05, -1.845923629641010e+05, - -1.847134134619568e+05, -1.848319802778265e+05, -1.849481128952921e+05, -1.850618593232541e+05, -1.851732661540264e+05, - -1.852823786185992e+05, -1.853892406392483e+05, -1.854938948796290e+05, -1.855963827925042e+05, -1.856967446652391e+05, - -1.857950196631810e+05, -1.858912458710447e+05, -1.859854603324128e+05, -1.860776990874485e+05, -1.861679972089207e+05, - -1.862563888366293e+05, -1.863429072103139e+05, -1.864275847011277e+05, -1.865104528417480e+05, -1.865915423551934e+05, - -1.866708831824190e+05, -1.867485045087414e+05, -1.868244347891607e+05, -1.868987017726315e+05, -1.869713325253318e+05, - -1.870423534529845e+05, -1.871117903222718e+05, -1.871796682813893e+05, -1.872460118797808e+05, -1.873108450870909e+05, - -1.873741912905654e+05, -1.874360733944896e+05, -1.874965137160113e+05, -1.875555340807361e+05, -1.876131558187403e+05, - -1.876693997795406e+05, -1.877242863465060e+05, -1.877778354507312e+05, -1.878300665843960e+05, -1.878809988136376e+05, - -1.879306507909496e+05, -1.879790407671357e+05, -1.880261866028316e+05, -1.880721057796185e+05, -1.881168154107406e+05, - -1.881603322514456e+05, -1.882026727089678e+05, -1.882438528521587e+05, -1.882838884207924e+05, -1.883227948345478e+05, - -1.883605872016876e+05, -1.883972803274446e+05, -1.884328887221259e+05, -1.884674266089485e+05, -1.885009079316134e+05, - -1.885333463671692e+05, -1.885647553111337e+05, -1.885951479170310e+05, -1.886245370814216e+05, -1.886529354556839e+05, - -1.886803554522323e+05, -1.887068092505416e+05, -1.887323088029797e+05, -1.887568658404596e+05, -1.887804918779160e+05, - -1.888031982196122e+05, -1.888249959642854e+05, -1.888458960101348e+05, -1.888659090596589e+05, -1.888850456243465e+05, - -1.889033160292287e+05, -1.889207304172945e+05, -1.889372987537775e+05, -1.889530308303133e+05, -1.889679362689803e+05, - -1.889820245189622e+05, -1.889953048894716e+05, -1.890077865096691e+05, -1.890194783614984e+05, -1.890303892758563e+05, - -1.890405279359855e+05, -1.890499028807722e+05, -1.890585225079515e+05, -1.890663950772256e+05, -1.890735287132921e+05, - -1.890799314087930e+05, -1.890856110271826e+05, -1.890905753055160e+05, -1.890948318571637e+05, -1.890983881744539e+05, - -1.891012516312416e+05, -1.891034294854141e+05, -1.891049288813253e+05, -1.891057568521702e+05, -1.891059203222944e+05, - -1.891054261094456e+05, -1.891042809269671e+05, -1.891024913859318e+05, -1.891000639972259e+05, -1.890970051735773e+05, - -1.890933212315323e+05, -1.890890183933823e+05, -1.890841027890462e+05, -1.890785804578997e+05, -1.890724573505636e+05, - -1.890657393306468e+05, -1.890584321764463e+05, -1.890505415826054e+05, -1.890420731617330e+05, -1.890330324459817e+05, - -1.890234248885890e+05, -1.890132558653826e+05, -1.890025306762476e+05, -1.889912545465606e+05, -1.889794326285893e+05, - -1.889670700028597e+05, -1.889541716794899e+05, -1.889407425994950e+05, -1.889267876360605e+05, -1.889123115957864e+05, - -1.888973192199024e+05, -1.888818151854572e+05, -1.888658041064778e+05, -1.888492905351054e+05, -1.888322789627039e+05, - -1.888147738209450e+05, -1.887967794828667e+05, -1.887783002639114e+05, -1.887593404229390e+05, -1.887399041632176e+05, - -1.887199956333936e+05, -1.886996189284399e+05, -1.886787780905846e+05, -1.886574771102174e+05, -1.886357199267774e+05, - -1.886135104296252e+05, -1.885908524588895e+05, -1.885677498063032e+05, -1.885442062160158e+05, -1.885202253853922e+05, - -1.884958109657942e+05, -1.884709665633436e+05, -1.884456957396729e+05, -1.884200020126573e+05, -1.883938888571329e+05, - -1.883673597056012e+05, -1.883404179489166e+05, -1.883130669369628e+05, -1.882853099793126e+05, -1.882571503458779e+05, - -1.882285912675421e+05, -1.881996359367848e+05, -1.881702875082897e+05, -1.881405490995435e+05, -1.881104237914203e+05, - -1.880799146287578e+05, -1.880490246209187e+05, -1.880177567423434e+05, -1.879861139330916e+05, -1.879540990993723e+05, - -1.879217151140644e+05, -1.878889648172284e+05, -1.878558510166046e+05, -1.878223764881081e+05, -1.877885439763058e+05, - -1.877543561948930e+05, -1.877198158271558e+05, -1.876849255264257e+05, -1.876496879165267e+05, -1.876141055922131e+05, - -1.875781811195994e+05, -1.875419170365837e+05, -1.875053158532601e+05, -1.874683800523267e+05, -1.874311120894847e+05, - -1.873935143938292e+05, -1.873555893682355e+05, -1.873173393897365e+05, -1.872787668098938e+05, -1.872398739551607e+05, - -1.872006631272430e+05, -1.871611366034471e+05, -1.871212966370284e+05, -1.870811454575277e+05, -1.870406852711061e+05, - -1.869999182608715e+05, -1.869588465871998e+05, -1.869174723880533e+05, -1.868757977792866e+05, -1.868338248549560e+05, - -1.867915556876170e+05, -1.867489923286190e+05, -1.867061368083959e+05, -1.866629911367505e+05, -1.866195573031324e+05, - -1.865758372769157e+05, -1.865318330076685e+05, -1.864875464254166e+05, -1.864429794409094e+05, -1.863981339458716e+05, - -1.863530118132601e+05, -1.863076148975091e+05, -1.862619450347779e+05, -1.862160040431889e+05, -1.861697937230646e+05, - -1.861233158571596e+05, -1.860765722108901e+05, -1.860295645325594e+05, -1.859822945535762e+05, -1.859347639886771e+05, - -1.858869745361369e+05, -1.858389278779807e+05, -1.857906256801915e+05, -1.857420695929139e+05, -1.856932612506561e+05, - -1.856442022724860e+05, -1.855948942622249e+05, -1.855453388086433e+05, -1.854955374856443e+05, -1.854454918524520e+05, - -1.853952034537933e+05, -1.853446738200770e+05, -1.852939044675735e+05, -1.852428968985835e+05, -1.851916526016172e+05, - -1.851401730515562e+05, -1.850884597098226e+05, -1.850365140245457e+05, -1.849843374307169e+05, -1.849319313503546e+05, - -1.848792971926566e+05, -1.848264363541564e+05, -1.847733502188740e+05, -1.847200401584663e+05, -1.846665075323728e+05, - -1.846127536879613e+05, -1.845587799606719e+05, -1.845045876741566e+05, -1.844501781404181e+05, -1.843955526599462e+05, - -1.843407125218538e+05, -1.842856590040085e+05, -1.842303933731628e+05, -1.841749168850841e+05, -1.841192307846817e+05, - -1.840633363061309e+05, -1.840072346729966e+05, -1.839509270983562e+05, -1.838944147849172e+05, -1.838376989251369e+05, - -1.837807807013389e+05, -1.837236612858269e+05, -1.836663418409987e+05, -1.836088235194559e+05, -1.835511074641173e+05, - -1.834931948083241e+05, -1.834350866759486e+05, -1.833767841814985e+05, -1.833182884302219e+05, -1.832596005182090e+05, - -1.832007215324937e+05, -1.831416525511523e+05, -1.830823946434041e+05, -1.830229488697055e+05, -1.829633162818469e+05, - -1.829034979230483e+05, -1.828434948280501e+05, -1.827833080232061e+05, -1.827229385265739e+05, -1.826623873480045e+05, - -1.826016554892297e+05, -1.825407439439494e+05, -1.824796536979174e+05, -1.824183857290264e+05, -1.823569410073902e+05, - -1.822953204954277e+05, -1.822335251479431e+05, -1.821715559122065e+05, -1.821094137280332e+05, -1.820470995278617e+05, - -1.819846142368300e+05, -1.819219587728534e+05, -1.818591340466975e+05, -1.817961409620541e+05, -1.817329804156142e+05, - -1.816696532971385e+05, -1.816061604895305e+05, -1.815425028689064e+05, -1.814786813046639e+05, -1.814146966595514e+05, - -1.813505497897357e+05, -1.812862415448684e+05, -1.812217727681520e+05, -1.811571442964065e+05, -1.810923569601303e+05, - -1.810274115835672e+05, -1.809623089847676e+05, -1.808970499756501e+05, -1.808316353620638e+05, -1.807660659438473e+05, - -1.807003425148897e+05, -1.806344658631882e+05, -1.805684367709072e+05, -1.805022560144355e+05, -1.804359243644428e+05, - -1.803694425859366e+05, -1.803028114383164e+05, -1.802360316754281e+05, -1.801691040456207e+05, -1.801020292917956e+05, - -1.800348081514631e+05, -1.799674413567921e+05, -1.798999296346628e+05, -1.798322737067160e+05, -1.797644742894053e+05, - -1.796965320940453e+05, -1.796284478268615e+05, -1.795602221890369e+05, -1.794918558767636e+05, -1.794233495812859e+05, - -1.793547039889482e+05, -1.792859197812442e+05, -1.792169976348582e+05, -1.791479382217132e+05, -1.790787422090137e+05, - -1.790094102592909e+05, -1.789399430304458e+05, -1.788703411757920e+05, -1.788006053440988e+05, -1.787307361796313e+05, - -1.786607343221963e+05, -1.785906004071784e+05, -1.785203350655832e+05, -1.784499389240778e+05, -1.783794126050282e+05, - -1.783087567265418e+05, -1.782379719025024e+05, -1.781670587426121e+05, -1.780960178524268e+05, -1.780248498333941e+05 - }, - { - 4.838223204648915e+04, 4.686286072937273e+04, 4.532579311701562e+04, 4.377048380241746e+04, 4.219636002845725e+04, - 4.060281985234530e+04, 3.898923015462653e+04, 3.735492447502250e+04, 3.569920065896976e+04, 3.402131829352879e+04, - 3.232049591045951e+04, 3.059590793098950e+04, 2.884668132368445e+04, 2.707189194322403e+04, 2.527056051379206e+04, - 2.344164821614722e+04, 2.158405183218202e+04, 1.969659839483580e+04, 1.777803928453326e+04, 1.582704370581420e+04, - 1.384219146945651e+04, 1.182196499615902e+04, 9.764740447721590e+03, 7.668777881235439e+03, 5.532210309570239e+03, - 3.353031541725652e+03, 1.129082664780803e+03, -1.141962978384239e+03, -3.462616465906081e+03, -5.835591772762487e+03, - -8.263826192327542e+03, -1.075050276867256e+04, -1.329907481772252e+04, -1.591329239521148e+04, -1.859723053322233e+04, - -2.135531858184339e+04, -2.419236968709554e+04, -2.711360861191570e+04, -3.012469500526747e+04, -3.323173748404397e+04, - -3.644129124786083e+04, -3.976032794043957e+04, -4.319616051294647e+04, -4.675629719516531e+04, -5.044818674248845e+04, - -5.427880214284294e+04, -5.825399475596284e+04, -6.237754393327708e+04, -6.664984627617372e+04, -7.106625915138761e+04, - -7.561524903991884e+04, -8.027666008375124e+04, -8.502050833559713e+04, -8.980664760785646e+04, -9.458555744195044e+04, - -9.930058995306041e+04, -1.038921410547020e+05, -1.083037487894592e+05, -1.124888800951028e+05, -1.164168849629644e+05, - -1.200741864575752e+05, -1.234602636851847e+05, -1.265847979192365e+05, -1.294637855494784e+05, -1.321163455763266e+05, - -1.345625409161904e+05, -1.368220599594338e+05, -1.389134894163074e+05, -1.408539526192878e+05, -1.426589654957211e+05, - -1.443424230191888e+05, -1.459166646792544e+05, -1.473925862166767e+05, -1.487797751402521e+05, -1.500866542740060e+05, - -1.513206227269286e+05, -1.524881877434990e+05, -1.535950839711835e+05, -1.546463788483413e+05, -1.556465642174406e+05, - -1.565996350842523e+05, -1.575091568471356e+05, -1.583783224550635e+05, -1.592100009258461e+05, -1.600067785415453e+05, - -1.607709938847533e+05, -1.615047677168201e+05, -1.622100285438484e+05, -1.628885345766148e+05, -1.635418926695276e+05, - -1.641715747214484e+05, -1.647789319361728e+05, -1.653652072704993e+05, -1.659315463407502e+05, -1.664790070122234e+05, - -1.670085678583481e+05, -1.675211356456612e+05, -1.680175519757266e+05, -1.684985991946770e+05, -1.689650056642468e+05, - -1.694174504742921e+05, -1.698565676619770e+05, -1.702829500165253e+05, -1.706971524694175e+05, -1.710996951829763e+05, - -1.714910663229649e+05, -1.718717245698852e+05, -1.722421013944474e+05, -1.726026031227035e+05, -1.729536128132394e+05, - -1.732954919661290e+05, -1.736285820810446e+05, -1.739532060798781e+05, -1.742696696074928e+05, -1.745782622226658e+05, - -1.748792584899510e+05, -1.751729189820124e+05, -1.754594912009318e+05, -1.757392104261009e+05, -1.760123004954799e+05, - -1.762789745263257e+05, -1.765394355808304e+05, -1.767938772815863e+05, -1.770424843812770e+05, -1.772854332905680e+05, - -1.775228925677768e+05, -1.777550233756857e+05, -1.779819798954096e+05, -1.782039097463909e+05, -1.784209542883608e+05, - -1.786332490501238e+05, -1.788409239905655e+05, -1.790441038129289e+05, -1.792429082401014e+05, -1.794374522741037e+05, - -1.796278463358749e+05, -1.798141968366677e+05, -1.799966059573288e+05, -1.801751720986711e+05, -1.803499900151110e+05, - -1.805211509917585e+05, -1.806887430109635e+05, -1.808528509090657e+05, -1.810135565240198e+05, -1.811709388345225e+05, - -1.813250740912184e+05, -1.814760359405163e+05, -1.816238955415028e+05, -1.817687216764119e+05, -1.819105808550658e+05, - -1.820495374136741e+05, -1.821856536083536e+05, -1.823189897029294e+05, -1.824496040560271e+05, -1.825775531957813e+05, - -1.827028918986711e+05, -1.828256732603121e+05, -1.829459487635053e+05, -1.830637683428893e+05, -1.831791804464009e+05, - -1.832922320937270e+05, -1.834029689319249e+05, -1.835114352883700e+05, -1.836176742211854e+05, -1.837217275672922e+05, - -1.838236359882177e+05, -1.839234390137782e+05, -1.840211750837625e+05, -1.841168815877140e+05, -1.842105949029228e+05, - -1.843023504307182e+05, -1.843921826311524e+05, -1.844801250561622e+05, -1.845662103812840e+05, -1.846504704360005e+05, - -1.847329362327853e+05, -1.848136379949180e+05, -1.848926051831207e+05, -1.849698665210887e+05, -1.850454500199572e+05, - -1.851193830017652e+05, -1.851916921219617e+05, -1.852624033909994e+05, -1.853315421950649e+05, -1.853991333159806e+05, - -1.854652009296209e+05, -1.855297687057628e+05, -1.855928597054403e+05, -1.856544964768539e+05, -1.857147010522622e+05, - -1.857734949636799e+05, -1.858308992579836e+05, -1.858869345114503e+05, -1.859416208437561e+05, -1.859949779314578e+05, - -1.860470250209787e+05, -1.860977809411234e+05, -1.861472641151395e+05, -1.861954925723456e+05, -1.862424839593469e+05, - -1.862882555508518e+05, -1.863328242601097e+05, -1.863762066489848e+05, -1.864184189376791e+05, -1.864594770141231e+05, - -1.864993964430441e+05, -1.865381924747253e+05, -1.865758800534730e+05, -1.866124738257976e+05, -1.866479881483217e+05, - -1.866824370954290e+05, -1.867158344666611e+05, -1.867481937938723e+05, -1.867795283543933e+05, -1.868098511529491e+05, - -1.868391749650453e+05, -1.868675123188318e+05, -1.868948755072437e+05, -1.869212765938877e+05, -1.869467274187525e+05, - -1.869712396037353e+05, -1.869948245580028e+05, -1.870174934831855e+05, -1.870392573784153e+05, -1.870601270452084e+05, - -1.870801130922044e+05, -1.870992259397619e+05, -1.871174758244179e+05, -1.871348728032150e+05, -1.871514267579024e+05, - -1.871671473911178e+05, -1.871820442619823e+05, -1.871961267424416e+05, -1.872094040526889e+05, -1.872218852568722e+05, - -1.872335792666177e+05, -1.872444948444572e+05, -1.872546406071582e+05, -1.872640250289608e+05, -1.872726564447269e+05, - -1.872805430529982e+05, -1.872876929189766e+05, -1.872941139774171e+05, -1.872998140354463e+05, -1.873048007753048e+05, - -1.873090817570127e+05, -1.873126644209683e+05, -1.873155560904742e+05, -1.873177639741993e+05, -1.873192951685760e+05, - -1.873201566601313e+05, -1.873203553277632e+05, -1.873198979449535e+05, -1.873187911819253e+05, -1.873170416077464e+05, - -1.873146556923776e+05, -1.873116398086695e+05, -1.873080002343101e+05, -1.873037431537221e+05, -1.872988746599146e+05, - -1.872934007562859e+05, -1.872873273583870e+05, -1.872806602956359e+05, -1.872734053129938e+05, -1.872655680725999e+05, - -1.872571541553658e+05, -1.872481690625315e+05, -1.872386182171872e+05, -1.872285069657520e+05, -1.872178405794258e+05, - -1.872066242556004e+05, -1.871948631192413e+05, -1.871825622242360e+05, -1.871697265547089e+05, -1.871563610263102e+05, - -1.871424704874703e+05, -1.871280597206297e+05, -1.871131334434364e+05, -1.870976963099215e+05, -1.870817529116411e+05, - -1.870653077788003e+05, -1.870483653813465e+05, -1.870309301300392e+05, -1.870130063774989e+05, -1.869945984192289e+05, - -1.869757104946170e+05, -1.869563467879159e+05, -1.869365114291987e+05, -1.869162084952976e+05, -1.868954420107206e+05, - -1.868742159485466e+05, -1.868525342313070e+05, -1.868304007318395e+05, -1.868078192741339e+05, -1.867847936341513e+05, - -1.867613275406324e+05, -1.867374246758845e+05, -1.867130886765537e+05, -1.866883231343836e+05, -1.866631315969517e+05, - -1.866375175683975e+05, -1.866114845101337e+05, -1.865850358415382e+05, -1.865581749406394e+05, -1.865309051447817e+05, - -1.865032297512821e+05, -1.864751520180682e+05, -1.864466751643099e+05, -1.864178023710321e+05, -1.863885367817207e+05, - -1.863588815029124e+05, -1.863288396047758e+05, -1.862984141216790e+05, -1.862676080527481e+05, -1.862364243624122e+05, - -1.862048659809411e+05, -1.861729358049697e+05, -1.861406366980135e+05, -1.861079714909742e+05, -1.860749429826374e+05, - -1.860415539401557e+05, -1.860078070995294e+05, -1.859737051660719e+05, -1.859392508148708e+05, -1.859044466912401e+05, - -1.858692954111580e+05, -1.858337995617068e+05, -1.857979617014939e+05, -1.857617843610745e+05, -1.857252700433591e+05, - -1.856884212240180e+05, -1.856512403518768e+05, -1.856137298493046e+05, -1.855758921125964e+05, -1.855377295123465e+05, - -1.854992443938173e+05, -1.854604390773002e+05, -1.854213158584703e+05, -1.853818770087358e+05, -1.853421247755791e+05, - -1.853020613828943e+05, -1.852616890313165e+05, -1.852210098985474e+05, -1.851800261396735e+05, -1.851387398874805e+05, - -1.850971532527600e+05, -1.850552683246123e+05, -1.850130871707448e+05, -1.849706118377646e+05, -1.849278443514635e+05, - -1.848847867171024e+05, -1.848414409196885e+05, -1.847978089242484e+05, -1.847538926760960e+05, -1.847096941010970e+05, - -1.846652151059268e+05, -1.846204575783283e+05, -1.845754233873592e+05, -1.845301143836419e+05, -1.844845323996033e+05, - -1.844386792497170e+05, -1.843925567307337e+05, -1.843461666219158e+05, -1.842995106852614e+05, -1.842525906657311e+05, - -1.842054082914630e+05, -1.841579652739944e+05, -1.841102633084717e+05, -1.840623040738576e+05, -1.840140892331426e+05, - -1.839656204335424e+05, -1.839168993067006e+05, -1.838679274688838e+05, -1.838187065211750e+05, -1.837692380496637e+05, - -1.837195236256341e+05, -1.836695648057477e+05, -1.836193631322260e+05, -1.835689201330283e+05, -1.835182373220294e+05, - -1.834673161991897e+05, -1.834161582507275e+05, -1.833647649492880e+05, -1.833131377541056e+05, -1.832612781111692e+05, - -1.832091874533817e+05, -1.831568672007167e+05, -1.831043187603766e+05, -1.830515435269436e+05, -1.829985428825303e+05, - -1.829453181969306e+05, -1.828918708277638e+05, -1.828382021206199e+05, -1.827843134092007e+05, -1.827302060154624e+05, - -1.826758812497494e+05, -1.826213404109335e+05, -1.825665847865470e+05, -1.825116156529133e+05, -1.824564342752785e+05, - -1.824010419079390e+05, -1.823454397943679e+05, -1.822896291673378e+05, -1.822336112490474e+05, -1.821773872512380e+05, - -1.821209583753155e+05, -1.820643258124669e+05, -1.820074907437754e+05, -1.819504543403366e+05, -1.818932177633690e+05, - -1.818357821643253e+05, -1.817781486850037e+05, -1.817203184576535e+05, -1.816622926050819e+05, -1.816040722407594e+05, - -1.815456584689240e+05, -1.814870523846812e+05, -1.814282550741063e+05, -1.813692676143427e+05, -1.813100910737001e+05, - -1.812507265117500e+05, -1.811911749794234e+05, -1.811314375191015e+05, -1.810715151647104e+05, -1.810114089418124e+05, - -1.809511198676945e+05, -1.808906489514593e+05, -1.808299971941105e+05, -1.807691655886423e+05, -1.807081551201216e+05, - -1.806469667657745e+05, -1.805856014950692e+05, -1.805240602697970e+05, -1.804623440441533e+05, -1.804004537648181e+05, - -1.803383903710349e+05, -1.802761547946880e+05, -1.802137479603798e+05, -1.801511707855047e+05, -1.800884241803275e+05, - -1.800255090480532e+05, -1.799624262849024e+05, -1.798991767801825e+05, -1.798357614163588e+05, -1.797721810691241e+05, - -1.797084366074679e+05, -1.796445288937457e+05, -1.795804587837452e+05, -1.795162271267536e+05, -1.794518347656228e+05, - -1.793872825368342e+05, -1.793225712705649e+05, -1.792577017907462e+05, -1.791926749151319e+05, -1.791274914553550e+05, - -1.790621522169922e+05, -1.789966579996210e+05, -1.789310095968827e+05, -1.788652077965371e+05, -1.787992533805241e+05, - -1.787331471250175e+05, -1.786668898004853e+05, -1.786004821717415e+05, -1.785339249980038e+05, -1.784672190329490e+05, - -1.784003650247635e+05, -1.783333637161991e+05, -1.782662158446250e+05, -1.781989221420791e+05, -1.781314833353188e+05, - -1.780639001458740e+05, -1.779961732900941e+05, -1.779283034792000e+05, -1.778602914193312e+05, -1.777921378115948e+05, - -1.777238433521132e+05, -1.776554087320710e+05, -1.775868346377615e+05, -1.775181217506340e+05, -1.774492707473365e+05, - -1.773802822997636e+05, -1.773111570750989e+05, -1.772418957358602e+05, -1.771724989399422e+05, -1.771029673406591e+05, - -1.770333015867879e+05, -1.769635023226098e+05, -1.768935701879513e+05, -1.768235058182248e+05, -1.767533098444726e+05, - -1.766829828933995e+05, -1.766125255874210e+05, -1.765419385446954e+05, -1.764712223791672e+05, -1.764003777006024e+05 - }, - { - 4.928132496476737e+04, 4.777203293313359e+04, 4.624540290027717e+04, 4.470090956698103e+04, 4.313800181603081e+04, - 4.155610102177271e+04, 3.995459922068705e+04, 3.833285712742958e+04, 3.669020198271707e+04, 3.502592521460971e+04, - 3.333927989432645e+04, 3.162947796497980e+04, 2.989568721911910e+04, 2.813702799808882e+04, 2.635256958297003e+04, - 2.454132624323702e+04, 2.270225290519184e+04, 2.083424039770267e+04, 1.893611022773671e+04, 1.700660883263362e+04, - 1.504440125001804e+04, 1.304806413974137e+04, 1.101607808538369e+04, 8.946819095758350e+03, 6.838549220376558e+03, - 4.689406185617098e+03, 2.497391955268242e+03, 2.603601157363187e+02, -2.023998010172171e+03, -4.358168606928843e+03, - -6.744832028406961e+03, -9.186880917310529e+03, -1.168743970976915e+04, -1.424988538274170e+04, -1.687786916278923e+04, - -1.957533853609446e+04, -2.234655863454035e+04, -2.519613139260255e+04, -2.812900999641668e+04, -3.115050480276153e+04, - -3.426627491974948e+04, -3.748229672137052e+04, -4.080479634440685e+04, -4.424012724202839e+04, -4.779456582243962e+04, - -5.147398824087581e+04, -5.528338119375909e+04, -5.922613391058637e+04, -6.330306759427260e+04, -6.751119789129033e+04, - -7.184230885389331e+04, -7.628153369929368e+04, -8.080623573679327e+04, -8.538549032342542e+04, -8.998038437622057e+04, - -9.454529133717256e+04, -9.903032769044364e+04, -1.033851566025143e+05, -1.075638406624708e+05, -1.115296885773022e+05, - -1.152592432366255e+05, -1.187423601683237e+05, -1.219794285199245e+05, -1.249790081188866e+05, -1.277547978171435e+05, - -1.303231314489244e+05, -1.327012310178136e+05, -1.349061211140281e+05, -1.369540113270817e+05, -1.388599743621449e+05, - -1.406378022329958e+05, -1.422999699628333e+05, -1.438576657482545e+05, -1.453208622833985e+05, -1.466984120535853e+05, - -1.479981541737852e+05, -1.492270238125823e+05, -1.503911580808252e+05, -1.514959945872672e+05, -1.525463606593549e+05, - -1.535465525161116e+05, -1.545004045312921e+05, -1.554113492331614e+05, -1.562824689472739e+05, -1.571165400818105e+05, - -1.579160710442716e+05, -1.586833347088551e+05, -1.594203962561769e+05, -1.601291371005122e+05, -1.608112755158638e+05, - -1.614683844770153e+05, -1.621019071478946e+05, -1.627131703776775e+05, -1.633033965044713e+05, -1.638737137159767e+05, - -1.644251651748687e+05, -1.649587170823838e+05, -1.654752658255005e+05, -1.659756443267214e+05, -1.664606277200068e+05, - -1.669309383893232e+05, -1.673872505141451e+05, -1.678301941329488e+05, -1.682603588014015e+05, -1.686782968891661e+05, - -1.690845265565696e+05, -1.694795344470017e+05, -1.698637781263390e+05, -1.702376882967846e+05, -1.706016708091460e+05, - -1.709561084946912e+05, -1.713013628352200e+05, -1.716377754878155e+05, -1.719656696788548e+05, -1.722853514802172e+05, - -1.725971109791804e+05, -1.729012233522387e+05, -1.731979498519693e+05, -1.734875387150943e+05, -1.737702259990292e+05, - -1.740462363534473e+05, -1.743157837327163e+05, -1.745790720544721e+05, -1.748362958090604e+05, -1.750876406241116e+05, - -1.753332837900989e+05, -1.755733947381131e+05, -1.758081355191897e+05, -1.760376611535320e+05, -1.762621201199724e+05, - -1.764816546540318e+05, -1.766964011063921e+05, -1.769064902613382e+05, -1.771120476306863e+05, -1.773131937306352e+05, - -1.775100442357759e+05, -1.777027105727730e+05, -1.778912997025976e+05, -1.780759145908812e+05, -1.782566543520187e+05, - -1.784336144375797e+05, -1.786068868134452e+05, -1.787765601264629e+05, -1.789427198613469e+05, -1.791054484884955e+05, - -1.792648256033428e+05, -1.794209280578184e+05, -1.795738300844331e+05, -1.797236034134873e+05, -1.798703173838422e+05, - -1.800140390476747e+05, -1.801548332687703e+05, -1.802927628197719e+05, -1.804278884658325e+05, -1.805602690524790e+05, - -1.806899615845925e+05, -1.808170213022302e+05, -1.809415017526045e+05, -1.810634548584528e+05, -1.811829309830070e+05, - -1.812999789917651e+05, -1.814146463112523e+05, -1.815269789849375e+05, -1.816370217264782e+05, -1.817448179704375e+05, - -1.818504099206140e+05, -1.819538385961231e+05, -1.820551438753512e+05, -1.821543645378943e+05, -1.822515383045956e+05, - -1.823467018757842e+05, -1.824398909678061e+05, -1.825311403479406e+05, -1.826204838677881e+05, -1.827079544952040e+05, - -1.827935843448578e+05, -1.828774047074861e+05, -1.829594460779038e+05, -1.830397381818396e+05, -1.831183100016509e+05, - -1.831951898009751e+05, -1.832704051483682e+05, -1.833439829399845e+05, -1.834159494213348e+05, -1.834863302081777e+05, - -1.835551502860018e+05, -1.836224341102666e+05, -1.836882055053979e+05, -1.837524877609913e+05, -1.838153036296276e+05, - -1.838766753433209e+05, -1.839366246293478e+05, -1.839951727254764e+05, -1.840523403946267e+05, -1.841081479389842e+05, - -1.841626152135953e+05, -1.842157616394634e+05, -1.842676062161690e+05, -1.843181675340340e+05, -1.843674637858498e+05, - -1.844155127781892e+05, -1.844623319423169e+05, -1.845079383447175e+05, -1.845523486972561e+05, -1.845955793669893e+05, - -1.846376463856347e+05, -1.846785654587222e+05, -1.847183519744292e+05, -1.847570210121234e+05, -1.847945873506159e+05, - -1.848310654761414e+05, -1.848664695900748e+05, -1.849008136163941e+05, -1.849341112089010e+05, -1.849663757582050e+05, - -1.849976203984875e+05, -1.850278580210306e+05, -1.850571012527877e+05, -1.850853625038945e+05, -1.851126539462201e+05, - -1.851389875259239e+05, -1.851643749690383e+05, -1.851888277868762e+05, -1.852123572812745e+05, -1.852349745496761e+05, - -1.852566904900619e+05, -1.852775158057305e+05, -1.852974610099379e+05, -1.853165364303980e+05, -1.853347522136499e+05, - -1.853521183293000e+05, -1.853686445656488e+05, -1.853843405676710e+05, -1.853992157898947e+05, -1.854132795341774e+05, - -1.854265409448687e+05, -1.854390090123718e+05, -1.854506925765986e+05, -1.854616003303339e+05, -1.854717408225015e+05, - -1.854811224613427e+05, -1.854897535175060e+05, -1.854976421270521e+05, -1.855047962943764e+05, -1.855112238950533e+05, - -1.855169326786043e+05, -1.855219302711915e+05, -1.855262241782355e+05, -1.855298217869715e+05, -1.855327303689309e+05, - -1.855349570823618e+05, -1.855365089745838e+05, -1.855373929842848e+05, -1.855376159437545e+05, -1.855371845810636e+05, - -1.855361055221868e+05, -1.855343852930699e+05, -1.855320303216464e+05, -1.855290469398039e+05, -1.855254413852995e+05, - -1.855212198036273e+05, -1.855163882498408e+05, -1.855109526903327e+05, -1.855049190045638e+05, -1.854982929867579e+05, - -1.854910803475505e+05, -1.854832867155976e+05, -1.854749176391501e+05, -1.854659785875845e+05, -1.854564749529018e+05, - -1.854464120511893e+05, -1.854357951240464e+05, -1.854246293399797e+05, -1.854129197957625e+05, -1.854006715177668e+05, - -1.853878894632584e+05, -1.853745785216676e+05, -1.853607435158295e+05, -1.853463892031932e+05, -1.853315202770068e+05, - -1.853161413674734e+05, -1.853002570428830e+05, -1.852838718107176e+05, -1.852669901187319e+05, -1.852496163560088e+05, - -1.852317548539959e+05, -1.852134098875126e+05, -1.851945856757418e+05, -1.851752863831941e+05, -1.851555161206562e+05, - -1.851352789461139e+05, -1.851145788656593e+05, -1.850934198343765e+05, -1.850718057572088e+05, -1.850497404898076e+05, - -1.850272278393616e+05, -1.850042715654132e+05, -1.849808753806515e+05, -1.849570429516942e+05, -1.849327778998495e+05, - -1.849080838018641e+05, -1.848829641906560e+05, -1.848574225560300e+05, -1.848314623453816e+05, -1.848050869643844e+05, - -1.847782997776646e+05, -1.847511041094603e+05, -1.847235032442705e+05, -1.846955004274880e+05, -1.846670988660216e+05, - -1.846383017289047e+05, -1.846091121478933e+05, -1.845795332180512e+05, -1.845495679983229e+05, -1.845192195120975e+05, - -1.844884907477600e+05, -1.844573846592309e+05, -1.844259041664994e+05, -1.843940521561423e+05, -1.843618314818334e+05, - -1.843292449648445e+05, -1.842962953945395e+05, -1.842629855288503e+05, -1.842293180947551e+05, -1.841952957887386e+05, - -1.841609212772489e+05, -1.841261971971430e+05, -1.840911261561246e+05, -1.840557107331774e+05, -1.840199534789830e+05, - -1.839838569163379e+05, -1.839474235405598e+05, -1.839106558198873e+05, -1.838735561958713e+05, -1.838361270837606e+05, - -1.837983708728804e+05, -1.837602899270021e+05, -1.837218865847104e+05, -1.836831631597588e+05, -1.836441219414233e+05, - -1.836047651948464e+05, -1.835650951613782e+05, -1.835251140589085e+05, -1.834848240821952e+05, -1.834442274031855e+05, - -1.834033261713329e+05, -1.833621225139079e+05, -1.833206185363029e+05, -1.832788163223326e+05, -1.832367179345291e+05, - -1.831943254144322e+05, -1.831516407828738e+05, -1.831086660402581e+05, -1.830654031668382e+05, -1.830218541229850e+05, - -1.829780208494555e+05, -1.829339052676521e+05, -1.828895092798827e+05, -1.828448347696116e+05, -1.827998836017108e+05, - -1.827546576227014e+05, -1.827091586609980e+05, -1.826633885271435e+05, -1.826173490140419e+05, -1.825710418971887e+05, - -1.825244689348951e+05, -1.824776318685114e+05, -1.824305324226423e+05, -1.823831723053651e+05, -1.823355532084384e+05, - -1.822876768075110e+05, -1.822395447623261e+05, -1.821911587169237e+05, -1.821425202998358e+05, -1.820936311242857e+05, - -1.820444927883756e+05, -1.819951068752787e+05, -1.819454749534239e+05, -1.818955985766783e+05, -1.818454792845286e+05, - -1.817951186022575e+05, -1.817445180411192e+05, -1.816936790985110e+05, -1.816426032581424e+05, -1.815912919902030e+05, - -1.815397467515246e+05, -1.814879689857453e+05, -1.814359601234672e+05, -1.813837215824143e+05, -1.813312547675866e+05, - -1.812785610714112e+05, -1.812256418738935e+05, -1.811724985427659e+05, -1.811191324336306e+05, -1.810655448901055e+05, - -1.810117372439634e+05, -1.809577108152716e+05, -1.809034669125304e+05, -1.808490068328067e+05, -1.807943318618675e+05, - -1.807394432743117e+05, -1.806843423336974e+05, -1.806290302926722e+05, -1.805735083930957e+05, -1.805177778661664e+05, - -1.804618399325410e+05, -1.804056958024557e+05, -1.803493466758447e+05, -1.802927937424572e+05, -1.802360381819725e+05, - -1.801790811641125e+05, -1.801219238487554e+05, -1.800645673860446e+05, -1.800070129164984e+05, -1.799492615711173e+05, - -1.798913144714890e+05, -1.798331727298921e+05, -1.797748374494026e+05, -1.797163097239904e+05, -1.796575906386234e+05, - -1.795986812693632e+05, -1.795395826834656e+05, -1.794802959394730e+05, -1.794208220873118e+05, -1.793611621683840e+05, - -1.793013172156615e+05, -1.792412882537750e+05, -1.791810762991041e+05, -1.791206823598663e+05, -1.790601074362038e+05, - -1.789993525202707e+05, -1.789384185963161e+05, -1.788773066407680e+05, -1.788160176223198e+05, -1.787545525020054e+05, - -1.786929122332864e+05, -1.786310977621271e+05, -1.785691100270742e+05, -1.785069499593346e+05, -1.784446184828522e+05, - -1.783821165143824e+05, -1.783194449635663e+05, -1.782566047330050e+05, -1.781935967183320e+05, -1.781304218082845e+05, - -1.780670808847748e+05, -1.780035748229574e+05, -1.779399044913022e+05, -1.778760707516597e+05, -1.778120744593270e+05, - -1.777479164631177e+05, -1.776835976054236e+05, -1.776191187222826e+05, -1.775544806434397e+05, -1.774896841924117e+05, - -1.774247301865486e+05, -1.773596194370960e+05, -1.772943527492539e+05, -1.772289309222396e+05, -1.771633547493436e+05, - -1.770976250179900e+05, -1.770317425097934e+05, -1.769657080006161e+05, -1.768995222606263e+05, -1.768331860543491e+05, - -1.767667001407269e+05, -1.767000652731692e+05, -1.766332821996092e+05, -1.765663516625552e+05, -1.764992743991435e+05, - -1.764320511411890e+05, -1.763646826152391e+05, -1.762971695426200e+05, -1.762295126394912e+05, -1.761617126168899e+05, - -1.760937701807841e+05, -1.760256860321175e+05, -1.759574608668592e+05, -1.758890953760481e+05, -1.758205902458433e+05, - -1.757519461575645e+05, -1.756831637877436e+05, -1.756142438081637e+05, -1.755451868859068e+05, -1.754759936833974e+05, - -1.754066648584439e+05, -1.753372010642826e+05, -1.752676029496206e+05, -1.751978711586751e+05, -1.751280063312182e+05, - -1.750580091026148e+05, -1.749878801038639e+05, -1.749176199616387e+05, -1.748472292983254e+05, -1.747767087320632e+05 - }, - { - 5.018137975305086e+04, 4.868205780710693e+04, 4.716574822000760e+04, 4.563194504586121e+04, 4.408011797074359e+04, - 4.250971075690060e+04, 4.092013956290370e+04, 3.931079112612073e+04, 3.768102079610123e+04, 3.603015040295141e+04, - 3.435746594475340e+04, 3.266221507577393e+04, 3.094360437522843e+04, 2.920079637409106e+04, 2.743290631491141e+04, - 2.563899861679251e+04, 2.381808301458931e+04, 2.196911033798767e+04, 2.009096789242591e+04, 1.818247439983564e+04, - 1.624237445295792e+04, 1.426933243260701e+04, 1.226192583286121e+04, 1.021863793497993e+04, 8.137849767172018e+03, - 6.017831285241561e+03, 3.856731707475447e+03, 1.652568941328035e+03, -5.967819547060031e+02, -2.893601315009715e+03, - -5.240338431980699e+03, -7.639626112579272e+03, -1.009429615391863e+04, -1.260739548127037e+04, -1.518220270544600e+04, - -1.782224442081657e+04, -2.053131039862966e+04, -2.331346625515400e+04, -2.617306148286074e+04, -2.911472969062485e+04, - -3.214337639861444e+04, -3.526414758592656e+04, -3.848236915857267e+04, -4.180344333038462e+04, -4.523268241005363e+04, - -4.877505378139192e+04, -5.243480297299970e+04, -5.621491743783836e+04, -6.011639791918639e+04, -6.413732651836679e+04, - -6.827177070979550e+04, -7.250864077591240e+04, -7.683070060289549e+04, -8.121397094362394e+04, -8.562772719234832e+04, - -9.003521501710413e+04, -9.439516860196443e+04, -9.866421829169214e+04, -1.028001595347562e+05, -1.067656921739018e+05, - -1.105318311137916e+05, -1.140805355121557e+05, -1.174042518003322e+05, -1.205039823989707e+05, -1.233873107200600e+05, - -1.260660303285404e+05, -1.285541692565334e+05, -1.308665817049535e+05, -1.330180493781456e+05, -1.350227546949136e+05, - -1.368939951167088e+05, -1.386440448444601e+05, -1.402841061160829e+05, -1.418243163836226e+05, -1.432737912365391e+05, - -1.446406897726777e+05, -1.459322927678452e+05, -1.471550863806857e+05, -1.483148460525070e+05, -1.494167169228027e+05, - -1.504652884727611e+05, -1.514646622007118e+05, -1.524185119284320e+05, -1.533301368715070e+05, -1.542025079328599e+05, - -1.550383078503989e+05, -1.558399658953101e+05, -1.566096878148915e+05, -1.573494816711502e+05, -1.580611801632375e+05, - -1.587464599510900e+05, -1.594068584272375e+05, -1.600437883181236e+05, -1.606585504375914e+05, -1.612523448641124e+05, - -1.618262807697489e+05, -1.623813850890655e+05, -1.629186102070130e+05, -1.634388407539795e+05, -1.639428996855533e+05, - -1.644315536949617e+05, -1.649055180599616e+05, -1.653654609908163e+05, -1.658120075393444e+05, -1.662457431206519e+05, - -1.666672166921477e+05, -1.670769436285081e+05, -1.674754083262551e+05, -1.678630665673288e+05, -1.682403476674071e+05, - -1.686076564315774e+05, -1.689653749372771e+05, -1.693138641620947e+05, -1.696534654719780e+05, -1.699845019836611e+05, - -1.703072798135607e+05, -1.706220892240618e+05, -1.709292056769201e+05, -1.712288908024781e+05, -1.715213932924696e+05, - -1.718069497233818e+05, -1.720857853166279e+05, -1.723581146411462e+05, -1.726241422634849e+05, -1.728840633518021e+05, - -1.731380642264242e+05, -1.733863228898473e+05, -1.736290095147286e+05, -1.738662868325831e+05, -1.740983106448695e+05, - -1.743252301459792e+05, -1.745471883037829e+05, -1.747643221977528e+05, -1.749767633322846e+05, -1.751846379314537e+05, - -1.753880671053320e+05, -1.755871674753889e+05, -1.757820509479062e+05, -1.759728252122110e+05, -1.761595938939572e+05, - -1.763424567552572e+05, -1.765215098827865e+05, -1.766968458646978e+05, -1.768685539571350e+05, -1.770367202410595e+05, - -1.772014277700483e+05, -1.773627567096797e+05, -1.775207844690636e+05, -1.776755858250394e+05, -1.778272330395188e+05, - -1.779757959704248e+05, -1.781213421758364e+05, -1.782639370165615e+05, -1.784036437451866e+05, -1.785405235986427e+05, - -1.786746358818137e+05, -1.788060380476881e+05, -1.789347857734235e+05, -1.790609330325773e+05, -1.791845321637225e+05, - -1.793056339356716e+05, -1.794242876094954e+05, -1.795405409975335e+05, -1.796544405195579e+05, -1.797660312562613e+05, - -1.798753570002129e+05, -1.799824603044280e+05, -1.800873825286813e+05, -1.801901638836879e+05, -1.802908434732679e+05, - -1.803894593346037e+05, -1.804860484766910e+05, -1.805806469170815e+05, -1.806732897170034e+05, -1.807640110149478e+05, - -1.808528440587985e+05, -1.809398212365808e+05, -1.810249741058968e+05, -1.811083334221191e+05, -1.811899291653990e+05, - -1.812697905665514e+05, -1.813479461318721e+05, -1.814244236669368e+05, -1.814992502994345e+05, -1.815724525010801e+05, - -1.816440561086498e+05, -1.817140863224130e+05, -1.817825678112384e+05, -1.818495246047096e+05, -1.819149801940852e+05, - -1.819789575290930e+05, -1.820414790345068e+05, -1.821025666260897e+05, -1.821622417259409e+05, -1.822205252772671e+05, - -1.822774377586053e+05, -1.823329991975237e+05, -1.823872291838191e+05, -1.824401468822363e+05, -1.824917710447290e+05, - -1.825421200222815e+05, -1.825912117763094e+05, -1.826390638896594e+05, -1.826856935772212e+05, -1.827311176961722e+05, - -1.827753527558666e+05, -1.828184149273846e+05, -1.828603200527564e+05, -1.829010836538737e+05, -1.829407209411011e+05, - -1.829792468215993e+05, -1.830166759073707e+05, -1.830530225230434e+05, -1.830883007133944e+05, -1.831225242506322e+05, - -1.831557066414418e+05, -1.831878611338037e+05, -1.832190007235937e+05, -1.832491381609751e+05, -1.832782859643587e+05, - -1.833064563954935e+05, -1.833336615113558e+05, -1.833599131392488e+05, -1.833852228898384e+05, -1.834096021624462e+05, - -1.834330621501733e+05, -1.834556138448772e+05, -1.834772680419917e+05, -1.834980353452088e+05, -1.835179261710178e+05, - -1.835369507531123e+05, -1.835551191375772e+05, -1.835724412234030e+05, -1.835889267119977e+05, -1.836045851474206e+05, - -1.836194259111168e+05, -1.836334582256129e+05, -1.836466911581069e+05, -1.836591336239574e+05, -1.836707943900776e+05, - -1.836816820782290e+05, -1.836918051682298e+05, -1.837011720010714e+05, -1.837097907819511e+05, -1.837176695832206e+05, - -1.837248163472567e+05, -1.837312388892529e+05, -1.837369448999361e+05, -1.837419419482140e+05, -1.837462374837469e+05, - -1.837498388394564e+05, -1.837527532339658e+05, -1.837549877739778e+05, -1.837565494565906e+05, -1.837574451715526e+05, - -1.837576817034612e+05, -1.837572657339039e+05, -1.837562038435465e+05, -1.837545025141672e+05, -1.837521681306384e+05, - -1.837492069828628e+05, -1.837456252676567e+05, -1.837414290905901e+05, -1.837366244677790e+05, -1.837312173276349e+05, - -1.837252135125718e+05, -1.837186187806714e+05, -1.837114388073065e+05, -1.837036791867287e+05, -1.836953454336151e+05, - -1.836864429845788e+05, -1.836769771996445e+05, -1.836669533636890e+05, -1.836563766878467e+05, -1.836452523108831e+05, - -1.836335853005383e+05, -1.836213806548339e+05, -1.836086433033564e+05, -1.835953781085068e+05, -1.835815898667223e+05, - -1.835672833096723e+05, -1.835524631054243e+05, -1.835371338595868e+05, -1.835213001164224e+05, -1.835049663599410e+05, - -1.834881370149651e+05, -1.834708164481727e+05, -1.834530089691172e+05, -1.834347188312246e+05, -1.834159502327703e+05, - -1.833967073178328e+05, -1.833769941772279e+05, -1.833568148494215e+05, -1.833361733214258e+05, -1.833150735296724e+05, - -1.832935193608707e+05, -1.832715146528437e+05, -1.832490631953515e+05, -1.832261687308926e+05, -1.832028349554929e+05, - -1.831790655194721e+05, -1.831548640282026e+05, -1.831302340428442e+05, -1.831051790810723e+05, -1.830797026177818e+05, - -1.830538080857836e+05, -1.830274988764868e+05, -1.830007783405612e+05, -1.829736497885939e+05, -1.829461164917275e+05, - -1.829181816822869e+05, -1.828898485543961e+05, -1.828611202645786e+05, -1.828319999323492e+05, -1.828024906407929e+05, - -1.827725954371334e+05, -1.827423173332871e+05, -1.827116593064130e+05, -1.826806242994448e+05, -1.826492152216167e+05, - -1.826174349489799e+05, -1.825852863249048e+05, -1.825527721605801e+05, -1.825198952354950e+05, -1.824866582979200e+05, - -1.824530640653712e+05, -1.824191152250717e+05, -1.823848144344020e+05, -1.823501643213421e+05, -1.823151674849042e+05, - -1.822798264955604e+05, -1.822441438956605e+05, -1.822081221998420e+05, -1.821717638954330e+05, -1.821350714428488e+05, - -1.820980472759792e+05, -1.820606938025718e+05, -1.820230134046037e+05, -1.819850084386526e+05, -1.819466812362560e+05, - -1.819080341042671e+05, -1.818690693252033e+05, -1.818297891575879e+05, -1.817901958362883e+05, -1.817502915728439e+05, - -1.817100785557936e+05, -1.816695589509931e+05, -1.816287349019291e+05, -1.815876085300276e+05, -1.815461819349565e+05, - -1.815044571949219e+05, -1.814624363669646e+05, -1.814201214872427e+05, -1.813775145713179e+05, -1.813346176144318e+05, - -1.812914325917791e+05, -1.812479614587769e+05, -1.812042061513280e+05, -1.811601685860813e+05, -1.811158506606870e+05, - -1.810712542540469e+05, -1.810263812265631e+05, -1.809812334203787e+05, -1.809358126596181e+05, -1.808901207506232e+05, - -1.808441594821810e+05, -1.807979306257545e+05, -1.807514359357048e+05, -1.807046771495122e+05, -1.806576559879897e+05, - -1.806103741555018e+05, -1.805628333401683e+05, -1.805150352140748e+05, -1.804669814334730e+05, -1.804186736389822e+05, - -1.803701134557857e+05, -1.803213024938240e+05, -1.802722423479855e+05, -1.802229345982946e+05, -1.801733808100952e+05, - -1.801235825342336e+05, -1.800735413072373e+05, -1.800232586514903e+05, -1.799727360754081e+05, -1.799219750736071e+05, - -1.798709771270732e+05, -1.798197437033286e+05, -1.797682762565938e+05, -1.797165762279472e+05, -1.796646450454861e+05, - -1.796124841244805e+05, -1.795600948675276e+05, -1.795074786647017e+05, -1.794546368937048e+05, -1.794015709200125e+05, - -1.793482820970189e+05, -1.792947717661779e+05, -1.792410412571450e+05, -1.791870918879153e+05, -1.791329249649586e+05, - -1.790785417833555e+05, -1.790239436269279e+05, -1.789691317683705e+05, -1.789141074693786e+05, -1.788588719807758e+05, - -1.788034265426364e+05, -1.787477723844117e+05, -1.786919107250490e+05, -1.786358427731117e+05, -1.785795697268969e+05, - -1.785230927745525e+05, -1.784664130941899e+05, -1.784095318539990e+05, -1.783524502123581e+05, -1.782951693179437e+05, - -1.782376903098395e+05, -1.781800143176420e+05, -1.781221424615673e+05, -1.780640758525530e+05, -1.780058155923614e+05, - -1.779473627736801e+05, -1.778887184802234e+05, -1.778298837868274e+05, -1.777708597595482e+05, -1.777116474557579e+05, - -1.776522479242384e+05, -1.775926622052742e+05, -1.775328913307436e+05, -1.774729363242101e+05, -1.774127982010116e+05, - -1.773524779683464e+05, -1.772919766253628e+05, -1.772312951632433e+05, -1.771704345652897e+05, -1.771093958070045e+05, - -1.770481798561771e+05, -1.769867876729616e+05, -1.769252202099577e+05, -1.768634784122910e+05, -1.768015632176904e+05, - -1.767394755565636e+05, -1.766772163520768e+05, -1.766147865202258e+05, -1.765521869699124e+05, -1.764894186030162e+05, - -1.764264823144688e+05, -1.763633789923228e+05, -1.763001095178232e+05, -1.762366747654766e+05, -1.761730756031205e+05, - -1.761093128919889e+05, -1.760453874867822e+05, -1.759813002357311e+05, -1.759170519806613e+05, -1.758526435570593e+05, - -1.757880757941359e+05, -1.757233495148870e+05, -1.756584655361578e+05, -1.755934246687026e+05, -1.755282277172463e+05, - -1.754628754805423e+05, -1.753973687514333e+05, -1.753317083169085e+05, -1.752658949581612e+05, -1.751999294506455e+05, - -1.751338125641327e+05, -1.750675450627665e+05, -1.750011277051170e+05, -1.749345612442363e+05, -1.748678464277113e+05, - -1.748009839977149e+05, -1.747339746910602e+05, -1.746668192392509e+05, -1.745995183685330e+05, -1.745320727999436e+05, - -1.744644832493621e+05, -1.743967504275582e+05, -1.743288750402411e+05, -1.742608577881068e+05, -1.741926993668859e+05, - -1.741244004673898e+05, -1.740559617755582e+05, -1.739873839725030e+05, -1.739186677345549e+05, -1.738498137333071e+05, - -1.737808226356595e+05, -1.737116951038641e+05, -1.736424317955641e+05, -1.735730333638414e+05, -1.735035004572542e+05, - -1.734338337198819e+05, -1.733640337913652e+05, -1.732941013069446e+05, -1.732240368975034e+05, -1.731538411896089e+05 - }, - { - 5.108239490956829e+04, 4.959293556066578e+04, 4.808683120517564e+04, 4.656359452700838e+04, 4.502271521440704e+04, - 4.346365852908536e+04, 4.188586376486517e+04, 4.028874258386099e+04, 3.867167722076923e+04, 3.703401854154631e+04, - 3.537508394307827e+04, 3.369415507850445e+04, 3.199047539131413e+04, 3.026324743956532e+04, 2.851162998963027e+04, - 2.673473485675007e+04, 2.493162346737668e+04, 2.310130311580308e+04, 2.124272288495293e+04, 1.935476919845421e+04, - 1.743626096832916e+04, 1.548594429989541e+04, 1.350248671296018e+04, 1.148447083634158e+04, 9.430387531535294e+03, - 7.338628401418610e+03, 5.207477642553080e+03, 3.035103203995689e+03, 8.195472274818699e+02, -1.441284240543247e+03, - -3.749632246347503e+03, -6.107896575488397e+03, -8.518647925475814e+03, -1.098464039081004e+04, -1.350882389931557e+04, - -1.609435608040154e+04, -1.874461270676455e+04, -2.146319550767328e+04, -2.425393554787941e+04, -2.712088956823370e+04, - -3.006832554194852e+04, -3.310069210691934e+04, -3.622256433942145e+04, -3.943855538240413e+04, -4.275317963270876e+04, - -4.617064863018710e+04, -4.969457611587922e+04, -5.332756561324805e+04, -5.707065587239750e+04, -6.092261232385362e+04, - -6.487908311684231e+04, -6.893168927428295e+04, -7.306718042100481e+04, -7.726683339823216e+04, -8.150626924734803e+04, - -8.575581061959040e+04, -8.998143747204605e+04, -9.414636713472223e+04, -9.821325550096251e+04, -1.021468914303310e+05, - -1.059170110326836e+05, -1.095006717073073e+05, -1.128839350279359e+05, -1.160612294005725e+05, -1.190339571190197e+05, - -1.218088535830199e+05, -1.243961240482471e+05, -1.268078762745512e+05, -1.290569797917817e+05, -1.311563188613879e+05, - -1.331183416744820e+05, -1.349548070150498e+05, -1.366766540507882e+05, -1.382939475646867e+05, -1.398158704761083e+05, - -1.412507470935882e+05, -1.426060865696011e+05, -1.438886390605769e+05, -1.451044588429357e+05, -1.462589699361270e+05, - -1.473570309250014e+05, -1.484029966942820e+05, -1.494007756545208e+05, -1.503538817253308e+05, -1.512654808471528e+05, - -1.521384321374440e+05, -1.529753240213452e+05, -1.537785057828440e+05, -1.545501150292146e+05, -1.552921015627119e+05, - -1.560062481270063e+05, -1.566941884545118e+05, -1.573574229931778e+05, -1.579973326399715e+05, -1.586151907843255e+05, - -1.592121738569200e+05, -1.597893706548619e+05, -1.603477905686224e+05, -1.608883708786427e+05, -1.614119832431822e+05, - -1.619194394833087e+05, -1.624114967549434e+05, -1.628888621845562e+05, -1.633521970339615e+05, -1.638021204503681e+05, - -1.642392128500346e+05, -1.646640189773290e+05, -1.650770506754547e+05, -1.654787894004224e+05, -1.658696885058579e+05, - -1.662501753228292e+05, -1.666206530559544e+05, -1.669815025145316e+05, -1.673330836952603e+05, -1.676757372312271e+05, - -1.680097857201919e+05, -1.683355349437679e+05, -1.686532749878308e+05, -1.689632812733944e+05, -1.692658155062043e+05, - -1.695611265524580e+05, -1.698494512472830e+05, -1.701310151439131e+05, -1.704060331969540e+05, -1.706747104150481e+05, - -1.709372424459383e+05, -1.711938161459421e+05, -1.714446100237446e+05, -1.716897948213121e+05, -1.719295338840051e+05, - -1.721639835919638e+05, -1.723932937466022e+05, -1.726176079286707e+05, -1.728370638316849e+05, -1.730517935098631e+05, - -1.732619238801169e+05, -1.734675767383191e+05, -1.736688691617651e+05, -1.738659137185103e+05, -1.740588186933658e+05, - -1.742476883001044e+05, -1.744326228808587e+05, -1.746137190936192e+05, -1.747910700886594e+05, -1.749647656746559e+05, - -1.751348924752105e+05, -1.753015340764167e+05, -1.754647711660818e+05, -1.756246816651477e+05, -1.757813408518289e+05, - -1.759348214781009e+05, -1.760851938841070e+05, -1.762325260978215e+05, -1.763768839381076e+05, -1.765183311079344e+05, - -1.766569292836221e+05, -1.767927381994748e+05, -1.769258157280777e+05, -1.770562179565266e+05, -1.771839992588219e+05, - -1.773092123646653e+05, -1.774319084248608e+05, -1.775521370735245e+05, -1.776699464872782e+05, -1.777853834416084e+05, - -1.778984933645431e+05, -1.780093203878008e+05, -1.781179073955514e+05, -1.782242960709193e+05, -1.783285269403528e+05, - -1.784306394159762e+05, -1.785306718360314e+05, -1.786286615035101e+05, -1.787246447230756e+05, -1.788186568363583e+05, - -1.789107322557161e+05, -1.790009044965317e+05, -1.790892062081266e+05, -1.791756692033602e+05, -1.792603244869804e+05, - -1.793432022827856e+05, -1.794243320596628e+05, -1.795037425565496e+05, -1.795814618063787e+05, -1.796575171590498e+05, - -1.797319353034792e+05, -1.798047422671354e+05, -1.798759635215142e+05, -1.799456238759829e+05, -1.800137475790182e+05, - -1.800803583159515e+05, -1.801454792263204e+05, -1.802091329205537e+05, -1.802713414960266e+05, -1.803321265525125e+05, - -1.803915092070585e+05, -1.804495101083072e+05, -1.805061494502958e+05, -1.805614469857476e+05, -1.806154220388838e+05, - -1.806680935177739e+05, -1.807194799262426e+05, -1.807695993753564e+05, -1.808184695945035e+05, -1.808661079420874e+05, - -1.809125314158459e+05, -1.809577566628175e+05, -1.810017999889615e+05, -1.810446773684541e+05, -1.810864044526677e+05, - -1.811269965788487e+05, -1.811664687785062e+05, -1.812048357855213e+05, -1.812421120439882e+05, -1.812783117158023e+05, - -1.813134486879963e+05, -1.813475365798432e+05, -1.813805887497277e+05, -1.814126183018022e+05, -1.814436380924272e+05, - -1.814736607364128e+05, -1.815026986130606e+05, -1.815307638806074e+05, -1.815578684477260e+05, -1.815840240300163e+05, - -1.816092421215294e+05, -1.816335340083401e+05, -1.816569107735628e+05, -1.816793833022144e+05, -1.817009622859313e+05, - -1.817216582275484e+05, -1.817414814358834e+05, -1.817604420686516e+05, -1.817785500788240e+05, -1.817958152571835e+05, - -1.818122472266688e+05, -1.818278554462124e+05, -1.818426492144651e+05, -1.818566376734164e+05, -1.818698298119152e+05, - -1.818822344690905e+05, -1.818938603376734e+05, -1.819047159672333e+05, -1.819148097673211e+05, -1.819241500105266e+05, - -1.819327448354537e+05, -1.819406022496138e+05, -1.819477301322439e+05, -1.819541362370440e+05, -1.819598281948481e+05, - -1.819648135162185e+05, -1.819690995939756e+05, -1.819726937056602e+05, -1.819756030159299e+05, -1.819778345788969e+05, - -1.819793953404012e+05, -1.819802921402286e+05, -1.819805317142715e+05, -1.819801206966329e+05, -1.819790656216789e+05, - -1.819773729260396e+05, -1.819750489505594e+05, -1.819720999421978e+05, -1.819685320558854e+05, -1.819643513563325e+05, - -1.819595638197918e+05, -1.819541753357825e+05, -1.819481917087688e+05, -1.819416186597977e+05, -1.819344618280996e+05, - -1.819267267726503e+05, -1.819184189736940e+05, -1.819095438342307e+05, -1.819001066814703e+05, -1.818901127682503e+05, - -1.818795672744219e+05, -1.818684753082023e+05, -1.818568419074976e+05, -1.818446720411935e+05, -1.818319706104179e+05, - -1.818187424497732e+05, -1.818049923285409e+05, -1.817907249518604e+05, -1.817759449618795e+05, -1.817606569388798e+05, - -1.817448654023763e+05, -1.817285748121947e+05, -1.817117895695221e+05, -1.816945140179364e+05, -1.816767524444121e+05, - -1.816585090803046e+05, -1.816397881023141e+05, -1.816205936334262e+05, -1.816009297438356e+05, -1.815808004518452e+05, - -1.815602097247521e+05, -1.815391614797096e+05, -1.815176595845725e+05, -1.814957078587275e+05, -1.814733100739007e+05, - -1.814504699549529e+05, -1.814271911806567e+05, -1.814034773844560e+05, -1.813793321552131e+05, -1.813547590379373e+05, - -1.813297615344997e+05, -1.813043431043362e+05, -1.812785071651288e+05, -1.812522570934833e+05, -1.812255962255843e+05, - -1.811985278578424e+05, -1.811710552475268e+05, -1.811431816133848e+05, -1.811149101362503e+05, -1.810862439596391e+05, - -1.810571861903332e+05, -1.810277398989543e+05, -1.809979081205234e+05, -1.809676938550140e+05, -1.809371000678898e+05, - -1.809061296906359e+05, -1.808747856212765e+05, -1.808430707248868e+05, -1.808109878340902e+05, -1.807785397495507e+05, - -1.807457292404528e+05, -1.807125590449738e+05, -1.806790318707472e+05, -1.806451503953164e+05, -1.806109172665820e+05, - -1.805763351032387e+05, -1.805414064952050e+05, -1.805061340040451e+05, -1.804705201633838e+05, -1.804345674793109e+05, - -1.803982784307831e+05, -1.803616554700136e+05, -1.803247010228573e+05, -1.802874174891903e+05, -1.802498072432782e+05, - -1.802118726341440e+05, -1.801736159859226e+05, -1.801350395982148e+05, -1.800961457464320e+05, -1.800569366821349e+05, - -1.800174146333682e+05, -1.799775818049870e+05, -1.799374403789797e+05, -1.798969925147825e+05, -1.798562403495926e+05, - -1.798151859986715e+05, -1.797738315556473e+05, -1.797321790928065e+05, -1.796902306613878e+05, -1.796479882918652e+05, - -1.796054539942281e+05, -1.795626297582574e+05, -1.795195175537961e+05, -1.794761193310162e+05, -1.794324370206799e+05, - -1.793884725343978e+05, -1.793442277648816e+05, -1.792997045861934e+05, -1.792549048539908e+05, -1.792098304057681e+05, - -1.791644830610919e+05, -1.791188646218365e+05, -1.790729768724116e+05, -1.790268215799886e+05, -1.789804004947220e+05, - -1.789337153499682e+05, -1.788867678625011e+05, -1.788395597327217e+05, -1.787920926448689e+05, -1.787443682672212e+05, - -1.786963882523003e+05, -1.786481542370696e+05, -1.785996678431281e+05, -1.785509306769038e+05, -1.785019443298412e+05, - -1.784527103785898e+05, -1.784032303851860e+05, -1.783535058972336e+05, -1.783035384480821e+05, -1.782533295570007e+05, - -1.782028807293511e+05, -1.781521934567586e+05, -1.781012692172760e+05, -1.780501094755511e+05, -1.779987156829864e+05, - -1.779470892779002e+05, -1.778952316856838e+05, -1.778431443189557e+05, -1.777908285777131e+05, -1.777382858494849e+05, - -1.776855175094759e+05, -1.776325249207164e+05, -1.775793094342035e+05, -1.775258723890423e+05, -1.774722151125876e+05, - -1.774183389205785e+05, -1.773642451172763e+05, -1.773099349955959e+05, -1.772554098372378e+05, -1.772006709128189e+05, - -1.771457194819986e+05, -1.770905567936050e+05, -1.770351840857591e+05, -1.769796025859982e+05, -1.769238135113936e+05, - -1.768678180686728e+05, -1.768116174543333e+05, -1.767552128547608e+05, -1.766986054463419e+05, -1.766417963955754e+05, - -1.765847868591845e+05, -1.765275779842257e+05, -1.764701709081939e+05, -1.764125667591335e+05, -1.763547666557374e+05, - -1.762967717074541e+05, -1.762385830145877e+05, -1.761802016683983e+05, -1.761216287512016e+05, -1.760628653364670e+05, - -1.760039124889113e+05, -1.759447712645962e+05, -1.758854427110218e+05, -1.758259278672175e+05, -1.757662277638344e+05, - -1.757063434232349e+05, -1.756462758595813e+05, -1.755860260789238e+05, -1.755255950792849e+05, -1.754649838507487e+05, - -1.754041933755409e+05, -1.753432246281132e+05, -1.752820785752270e+05, -1.752207561760301e+05, -1.751592583821411e+05, - -1.750975861377243e+05, -1.750357403795700e+05, -1.749737220371695e+05, -1.749115320327914e+05, -1.748491712815571e+05, - -1.747866406915124e+05, -1.747239411637017e+05, -1.746610735922409e+05, -1.745980388643852e+05, -1.745348378606020e+05, - -1.744714714546391e+05, -1.744079405135922e+05, -1.743442458979731e+05, -1.742803884617759e+05, -1.742163690525423e+05, - -1.741521885114273e+05, -1.740878476732626e+05, -1.740233473666199e+05, -1.739586884138737e+05, -1.738938716312626e+05, - -1.738288978289495e+05, -1.737637678110832e+05, -1.736984823758569e+05, -1.736330423155670e+05, -1.735674484166716e+05, - -1.735017014598454e+05, -1.734358022200404e+05, -1.733697514665372e+05, -1.733035499630031e+05, -1.732371984675464e+05, - -1.731706977327688e+05, -1.731040485058186e+05, -1.730372515284456e+05, -1.729703075370503e+05, -1.729032172627358e+05, - -1.728359814313603e+05, -1.727686007635836e+05, -1.727010759749211e+05, -1.726334077757880e+05, -1.725655968715516e+05, - -1.724976439625748e+05, -1.724295497442684e+05, -1.723613149071338e+05, -1.722929401368086e+05, -1.722244261141169e+05, - -1.721557735151085e+05, -1.720869830111065e+05, -1.720180552687507e+05, -1.719489909500415e+05, -1.718797907123817e+05, - -1.718104552086194e+05, -1.717409850870903e+05, -1.716713809916591e+05, -1.716016435617593e+05, -1.715317734324357e+05 - }, - { - 5.198436891813945e+04, 5.050466635288760e+04, 4.900865389191164e+04, 4.749586215490290e+04, 4.596580006494057e+04, - 4.441795353355158e+04, 4.285178404755135e+04, 4.126672714719625e+04, 3.966219078793075e+04, 3.803755357394519e+04, - 3.639216285236784e+04, 3.472533265528574e+04, 3.303634147560907e+04, 3.132442986144292e+04, 2.958879781217015e+04, - 2.782860195788491e+04, 2.604295250215495e+04, 2.423090990635589e+04, 2.239148129203981e+04, 2.052361653603173e+04, - 1.862620403126492e+04, 1.669806608489245e+04, 1.473795392411773e+04, 1.274454227971820e+04, 1.071642351774802e+04, - 8.652101291894583e+03, 6.549983693128698e+03, 4.408375880498234e+03, 2.225472189480957e+03, -6.522693718942207e-01, - -2.272050478380635e+03, -4.590912766824449e+03, -6.959576311119047e+03, -9.380534664923945e+03, -1.185644693853808e+04, - -1.439014622856431e+04, -1.698464639561314e+04, -1.964314626796559e+04, -2.236902966920086e+04, -2.516585913746470e+04, - -2.803736030574881e+04, -3.098739272398119e+04, -3.401990129925421e+04, -3.713884042038076e+04, -4.034806016696902e+04, - -4.365114086730103e+04, -4.705115907266087e+04, -5.055036580611918e+04, -5.414975886045396e+04, -5.784853846180581e+04, - -6.164345429283773e+04, -6.552808471666666e+04, -6.949213294388499e+04, -7.352086577175674e+04, -7.759483608187687e+04, - -8.169000557385641e+04, -8.577833032739411e+04, -8.982882152168704e+04, -9.380906378527751e+04, -9.768713218695958e+04, - -1.014337460964565e+05, -1.050243496461944e+05, -1.084407468750799e+05, -1.116721347658890e+05, -1.147144645843050e+05, - -1.175693887640633e+05, -1.202429069397989e+05, -1.227438938912961e+05, -1.250828497147594e+05, -1.272709719931017e+05, - -1.293195327748359e+05, -1.312394918900178e+05, -1.330412723477924e+05, -1.347346393718176e+05, -1.363286433214832e+05, - -1.378316031697431e+05, -1.392511162983431e+05, -1.405940861118569e+05, -1.418667615491009e+05, -1.430747839823900e+05, - -1.442232379071750e+05, -1.453167025932198e+05, -1.463593025840985e+05, -1.473547555834407e+05, -1.483064168233927e+05, - -1.492173194545790e+05, -1.500902108265038e+05, -1.509275847548045e+05, -1.517317100154495e+05, -1.525046553856405e+05, - -1.532483115849058e+05, -1.539644104698576e+05, -1.546545418394642e+05, -1.553201681196047e+05, -1.559626372660034e+05, - -1.565831940868419e+05, -1.571829902177302e+05, -1.577630929304964e+05, -1.583244929339134e+05, -1.588681113013083e+05, - -1.593948056400339e+05, -1.599053756007754e+05, -1.604005678102132e+05, -1.608810802984341e+05, -1.613475664822174e+05, - -1.618006387567370e+05, -1.622408717409619e+05, -1.626688052159325e+05, -1.630849467899246e+05, -1.634897743201277e+05, - -1.638837381167454e+05, -1.642672629522222e+05, -1.646407498955864e+05, -1.650045779895314e+05, -1.653591057858297e+05, - -1.657046727529055e+05, -1.660416005678591e+05, -1.663701943038873e+05, -1.666907435228748e+05, -1.670035232818936e+05, - -1.673087950614400e+05, -1.676068076242596e+05, -1.678977977999101e+05, -1.681819912291636e+05, -1.684596030347686e+05, - -1.687308384708817e+05, -1.689958934318890e+05, -1.692549551111412e+05, -1.695082024247748e+05, -1.697558065017929e+05, - -1.699979311215250e+05, -1.702347331230047e+05, -1.704663627833964e+05, -1.706929641720517e+05, -1.709146754093859e+05, - -1.711316292143568e+05, -1.713439528983523e+05, -1.715517688060351e+05, -1.717551945335175e+05, -1.719543431675625e+05, - -1.721493235101537e+05, -1.723402402894692e+05, -1.725271943582285e+05, -1.727102828802899e+05, -1.728895995063136e+05, - -1.730652345392386e+05, -1.732372750902650e+05, -1.734058052259786e+05, -1.735709061072052e+05, -1.737326561192537e+05, - -1.738911309994728e+05, -1.740464039487713e+05, -1.741985457463168e+05, -1.743476248534381e+05, -1.744937075129805e+05, - -1.746368578434466e+05, -1.747771379282530e+05, -1.749146079003973e+05, -1.750493260228117e+05, -1.751813487646600e+05, - -1.753107308738248e+05, -1.754375254458006e+05, -1.755617839892070e+05, -1.756835564881170e+05, -1.758028914613787e+05, - -1.759198360191064e+05, -1.760344359164966e+05, -1.761467356051168e+05, -1.762567782818114e+05, -1.763646059353516e+05, - -1.764702593909513e+05, -1.765737783527675e+05, -1.766752014444897e+05, -1.767745662481216e+05, -1.768719093410462e+05, - -1.769672663314715e+05, -1.770606718923310e+05, -1.771521597937262e+05, -1.772417629339801e+05, -1.773295133693750e+05, - -1.774154423426386e+05, -1.774995803102423e+05, -1.775819569685659e+05, -1.776626012789932e+05, -1.777415414919791e+05, - -1.778188051701472e+05, -1.778944191889703e+05, -1.779684098426193e+05, -1.780408027396031e+05, -1.781116229042888e+05, - -1.781808947756351e+05, -1.782486422253399e+05, -1.783148885752945e+05, -1.783796566143717e+05, -1.784429686145802e+05, - -1.785048463466127e+05, -1.785653110948139e+05, -1.786243836715967e+05, -1.786820844313287e+05, -1.787384332837111e+05, - -1.787934497066745e+05, -1.788471527588114e+05, -1.788995610913634e+05, -1.789506929597865e+05, -1.790005662349041e+05, - -1.790491984136763e+05, -1.790966066295904e+05, -1.791428076626950e+05, -1.791878179492909e+05, -1.792316535912895e+05, - -1.792743303652587e+05, -1.793158637311617e+05, -1.793562688408065e+05, -1.793955605460134e+05, -1.794337534065151e+05, - -1.794708616975982e+05, -1.795068994174945e+05, -1.795418802945372e+05, -1.795758177940824e+05, -1.796087251252143e+05, - -1.796406152472365e+05, -1.796715008759572e+05, -1.797013944897800e+05, -1.797303083356031e+05, -1.797582544345398e+05, - -1.797852445968863e+05, -1.798112903899434e+05, -1.798364031992995e+05, -1.798605941966785e+05, -1.798838743540970e+05, - -1.799062544486179e+05, -1.799277450567696e+05, -1.799483565997370e+05, -1.799680992867630e+05, -1.799869831599031e+05, - -1.800050180880178e+05, -1.800222137707507e+05, -1.800385797423965e+05, -1.800541253756555e+05, -1.800688598852844e+05, - -1.800827923316424e+05, -1.800959316241404e+05, -1.801082865245913e+05, -1.801198656504696e+05, -1.801306774780818e+05, - -1.801407303456472e+05, -1.801500324562979e+05, -1.801585918809962e+05, -1.801664165613730e+05, -1.801735143124908e+05, - -1.801798928255341e+05, -1.801855596704262e+05, -1.801905222983784e+05, -1.801947880443728e+05, -1.801983641295797e+05, - -1.802012576637118e+05, -1.802034756473187e+05, -1.802050249740219e+05, -1.802059124326924e+05, -1.802061447095747e+05, - -1.802057283903534e+05, -1.802046699621719e+05, -1.802029758155995e+05, -1.802006522465461e+05, -1.801977054581351e+05, - -1.801941415625251e+05, -1.801899665826907e+05, -1.801851864541573e+05, -1.801798070266941e+05, -1.801738340659680e+05, - -1.801672732551551e+05, -1.801601301965159e+05, -1.801524104129318e+05, -1.801441193494047e+05, -1.801352623745227e+05, - -1.801258447818893e+05, -1.801158717915229e+05, -1.801053485512189e+05, -1.800942801378830e+05, -1.800826715588343e+05, - -1.800705277530778e+05, -1.800578535925461e+05, -1.800446538833161e+05, -1.800309333667953e+05, -1.800166967208835e+05, - -1.800019485611072e+05, -1.799866934417288e+05, -1.799709358568317e+05, -1.799546802413809e+05, -1.799379309722602e+05, - -1.799206923692881e+05, -1.799029686962088e+05, -1.798847641616636e+05, -1.798660829201415e+05, -1.798469290729086e+05, - -1.798273066689167e+05, -1.798072197056945e+05, -1.797866721302180e+05, -1.797656678397652e+05, -1.797442106827477e+05, - -1.797223044595304e+05, -1.796999529232313e+05, -1.796771597805051e+05, -1.796539286923098e+05, -1.796302632746581e+05, - -1.796061670993553e+05, -1.795816436947173e+05, -1.795566965462803e+05, -1.795313290974899e+05, -1.795055447503802e+05, - -1.794793468662383e+05, -1.794527387662549e+05, -1.794257237321629e+05, -1.793983050068615e+05, -1.793704857950299e+05, - -1.793422692637293e+05, -1.793136585429893e+05, -1.792846567263876e+05, -1.792552668716156e+05, -1.792254920010326e+05, - -1.791953351022124e+05, -1.791647991284755e+05, -1.791338869994136e+05, -1.791026016014033e+05, -1.790709457881099e+05, - -1.790389223809826e+05, -1.790065341697385e+05, -1.789737839128390e+05, -1.789406743379569e+05, -1.789072081424349e+05, - -1.788733879937346e+05, -1.788392165298786e+05, -1.788046963598842e+05, -1.787698300641874e+05, -1.787346201950614e+05, - -1.786990692770268e+05, -1.786631798072524e+05, -1.786269542559525e+05, -1.785903950667728e+05, -1.785535046571731e+05, - -1.785162854188012e+05, -1.784787397178588e+05, -1.784408698954647e+05, -1.784026782680079e+05, -1.783641671274961e+05, - -1.783253387418991e+05, -1.782861953554827e+05, -1.782467391891412e+05, -1.782069724407199e+05, -1.781668972853362e+05, - -1.781265158756911e+05, -1.780858303423775e+05, -1.780448427941847e+05, -1.780035553183928e+05, -1.779619699810681e+05, - -1.779200888273482e+05, -1.778779138817263e+05, -1.778354471483286e+05, -1.777926906111857e+05, -1.777496462345046e+05, - -1.777063159629293e+05, -1.776627017218033e+05, -1.776188054174222e+05, -1.775746289372873e+05, -1.775301741503511e+05, - -1.774854429072615e+05, -1.774404370405986e+05, -1.773951583651124e+05, -1.773496086779520e+05, -1.773037897588953e+05, - -1.772577033705689e+05, -1.772113512586725e+05, -1.771647351521941e+05, -1.771178567636222e+05, -1.770707177891565e+05, - -1.770233199089143e+05, -1.769756647871338e+05, -1.769277540723735e+05, -1.768795893977097e+05, -1.768311723809302e+05, - -1.767825046247246e+05, -1.767335877168720e+05, -1.766844232304261e+05, -1.766350127238974e+05, -1.765853577414324e+05, - -1.765354598129885e+05, -1.764853204545106e+05, -1.764349411680974e+05, -1.763843234421762e+05, -1.763334687516635e+05, - -1.762823785581293e+05, -1.762310543099606e+05, -1.761794974425169e+05, -1.761277093782878e+05, -1.760756915270463e+05, - -1.760234452859994e+05, -1.759709720399396e+05, -1.759182731613892e+05, -1.758653500107466e+05, -1.758122039364290e+05, - -1.757588362750108e+05, -1.757052483513661e+05, -1.756514414788017e+05, -1.755974169591921e+05, -1.755431760831147e+05, - -1.754887201299758e+05, -1.754340503681435e+05, -1.753791680550732e+05, -1.753240744374303e+05, -1.752687707512177e+05, - -1.752132582218937e+05, -1.751575380644936e+05, -1.751016114837474e+05, -1.750454796741954e+05, -1.749891438203038e+05, - -1.749326050965783e+05, -1.748758646676731e+05, -1.748189236885053e+05, -1.747617833043587e+05, -1.747044446509929e+05, - -1.746469088547490e+05, -1.745891770326532e+05, -1.745312502925193e+05, -1.744731297330494e+05, -1.744148164439346e+05, - -1.743563115059526e+05, -1.742976159910644e+05, -1.742387309625119e+05, -1.741796574749095e+05, -1.741203965743404e+05, - -1.740609492984453e+05, -1.740013166765158e+05, -1.739414997295812e+05, -1.738814994704999e+05, -1.738213169040434e+05, - -1.737609530269839e+05, -1.737004088281783e+05, -1.736396852886534e+05, -1.735787833816851e+05, -1.735177040728836e+05, - -1.734564483202721e+05, -1.733950170743644e+05, -1.733334112782473e+05, -1.732716318676535e+05, -1.732096797710409e+05, - -1.731475559096661e+05, -1.730852611976598e+05, -1.730227965420990e+05, -1.729601628430815e+05, -1.728973609937945e+05, - -1.728343918805872e+05, -1.727712563830398e+05, -1.727079553740320e+05, -1.726444897198119e+05, -1.725808602800612e+05, - -1.725170679079631e+05, -1.724531134502671e+05, -1.723889977473537e+05, -1.723247216332971e+05, -1.722602859359292e+05, - -1.721956914769018e+05, -1.721309390717465e+05, -1.720660295299380e+05, -1.720009636549510e+05, -1.719357422443210e+05, - -1.718703660897026e+05, -1.718048359769264e+05, -1.717391526860566e+05, -1.716733169914472e+05, -1.716073296617972e+05, - -1.715411914602068e+05, -1.714749031442286e+05, -1.714084654659251e+05, -1.713418791719186e+05, -1.712751450034450e+05, - -1.712082636964048e+05, -1.711412359814147e+05, -1.710740625838579e+05, -1.710067442239332e+05, -1.709392816167049e+05, - -1.708716754721508e+05, -1.708039264952133e+05, -1.707360353858410e+05, -1.706680028390419e+05, -1.705998295449252e+05, - -1.705315161887503e+05, -1.704630634509686e+05, -1.703944720072733e+05, -1.703257425286385e+05, -1.702568756813670e+05, - -1.701878721271300e+05, -1.701187325230132e+05, -1.700494575215569e+05, -1.699800477707980e+05, -1.699105039143123e+05 - }, - { - 5.288730024875355e+04, 5.141725029408513e+04, 4.993121822624127e+04, 4.842875193481609e+04, 4.690937884257387e+04, - 4.537260469806220e+04, 4.381791228113525e+04, 4.224476001222261e+04, 4.065258045914466e+04, 3.904077873137681e+04, - 3.740873075252078e+04, 3.575578140037129e+04, 3.408124250308913e+04, 3.238439067898921e+04, 3.066446500638787e+04, - 2.892066450884496e+04, 2.715214543999484e+04, 2.535801835101641e+04, 2.353734492268718e+04, 2.168913454295714e+04, - 1.981234061015583e+04, 1.790585654142838e+04, 1.596851146595871e+04, 1.399906558321795e+04, 1.199620516820922e+04, - 9.958537208919894e+03, 7.884583666577449e+03, 5.772775357699295e+03, 3.621445469400761e+03, 1.428822738579409e+03, - -8.069756499402167e+02, -3.087951350570581e+03, -5.416232183760208e+03, -7.794079287141397e+03, -1.022389373737283e+04, - -1.270822224355900e+04, -1.524976119512467e+04, -1.785135813428268e+04, -2.051600941861169e+04, -2.324685223532549e+04, - -2.604714853154918e+04, -2.892025750260283e+04, -3.186959210204155e+04, -3.489855351419574e+04, -3.801043564519225e+04, - -4.120828951072337e+04, -4.449473520205129e+04, -4.787170756319811e+04, -5.134012213120011e+04, -5.489945246157639e+04, - -5.854722160101658e+04, -6.227843164109733e+04, -6.608498551839594e+04, -6.995518763989458e+04, -7.387343073212549e+04, - -7.782017111083599e+04, -8.177226055552762e+04, -8.570365559971004e+04, -8.958648607092562e+04, -9.339243733579291e+04, - -9.709436122989209e+04, -1.006679584694841e+05, -1.040932944682872e+05, -1.073559113228848e+05, -1.104474238987166e+05, - -1.133649556596708e+05, -1.161103044902320e+05, -1.186888315421314e+05, -1.211082920128278e+05, -1.233778335891933e+05, - -1.255072389462936e+05, -1.275064047828203e+05, -1.293850095832954e+05, -1.311523147094791e+05, -1.328170526661417e+05, - -1.343873703423821e+05, -1.358708069562600e+05, -1.372742948077501e+05, -1.386041755708039e+05, -1.398662273700037e+05, - -1.410656990866928e+05, -1.422073490329447e+05, -1.432954856546796e+05, -1.443340084115317e+05, -1.453264474490408e+05, - -1.462760011077762e+05, -1.471855706813711e+05, -1.480577921291934e+05, -1.488950646661690e+05, -1.496995763256994e+05, - -1.504733266279657e+05, -1.512181466460826e+05, -1.519357166808647e+05, -1.526275818230599e+05, -1.532951656495249e+05, - -1.539397822846789e+05, -1.545626470362938e+05, -1.551648857912421e+05, -1.557475433338996e+05, -1.563115907285410e+05, - -1.568579318877404e+05, -1.573874094317142e+05, -1.579008099286594e+05, -1.583988685933300e+05, -1.588822735101398e+05, - -1.593516694377651e+05, -1.598076612443134e+05, -1.602508170154400e+05, -1.606816708721108e+05, -1.611007255299122e+05, - -1.615084546276982e+05, -1.619053048499049e+05, -1.622916978638552e+05, -1.626680320908318e+05, -1.630346843274951e+05, - -1.633920112323076e+05, -1.637403506899893e+05, -1.640800230655748e+05, -1.644113323584056e+05, -1.647345672671786e+05, - -1.650500021626767e+05, -1.653578980052181e+05, -1.656585031732156e+05, -1.659520542396248e+05, -1.662387766891086e+05, - -1.665188856003127e+05, -1.667925861911245e+05, -1.670600745031274e+05, -1.673215378575544e+05, -1.675771553711321e+05, - -1.678270984189770e+05, -1.680715310661694e+05, -1.683106104675031e+05, -1.685444872422371e+05, -1.687733057412670e+05, - -1.689972046508588e+05, -1.692163169497544e+05, -1.694307703976617e+05, -1.696406877604023e+05, -1.698461870625469e+05, - -1.700473818245682e+05, -1.702443812856117e+05, -1.704372906129028e+05, -1.706262110987233e+05, -1.708112403458178e+05, - -1.709924724420241e+05, -1.711699981248556e+05, -1.713439049367137e+05, -1.715142773704185e+05, -1.716811970113365e+05, - -1.718447426621098e+05, -1.720049904702329e+05, -1.721620140438192e+05, -1.723158845621546e+05, -1.724666708803773e+05, - -1.726144396286538e+05, -1.727592553061853e+05, -1.729011803703638e+05, -1.730402753213697e+05, -1.731765987824838e+05, - -1.733102075763695e+05, -1.734411567975595e+05, -1.735694998813756e+05, -1.736952886694774e+05, -1.738185734722422e+05, - -1.739394031281525e+05, -1.740578250603590e+05, -1.741738853305794e+05, -1.742876286904775e+05, -1.743990986306652e+05, - -1.745083374274508e+05, -1.746153861874632e+05, -1.747202848902583e+05, -1.748230724290198e+05, -1.749237866494520e+05, - -1.750224643869626e+05, -1.751191415022185e+05, -1.752138529151651e+05, -1.753066326375813e+05, -1.753975138042503e+05, - -1.754865287028099e+05, -1.755737088023524e+05, -1.756590847808340e+05, -1.757426865513543e+05, -1.758245432873566e+05, - -1.759046834468063e+05, -1.759831347953931e+05, -1.760599244060711e+05, -1.761350787699413e+05, -1.762086236846741e+05, - -1.762805843609551e+05, -1.763509854201205e+05, -1.764198509124022e+05, -1.764872043344728e+05, -1.765530686463245e+05, - -1.766174662875128e+05, -1.766804191927909e+05, -1.767419488071642e+05, -1.768020761003855e+05, -1.768608215809259e+05, - -1.769182053094297e+05, -1.769742469116894e+05, -1.770289655911508e+05, -1.770823801409752e+05, -1.771345089556736e+05, - -1.771853700423326e+05, -1.772349810314461e+05, -1.772833591873773e+05, -1.773305214184526e+05, -1.773764842867166e+05, - -1.774212640173522e+05, -1.774648765077834e+05, -1.775073373364749e+05, -1.775486617714344e+05, -1.775888647784373e+05, - -1.776279610289789e+05, -1.776659649079680e+05, -1.777028905211682e+05, -1.777387517024039e+05, -1.777735620205294e+05, - -1.778073347861810e+05, -1.778400830583115e+05, -1.778718196505228e+05, -1.779025571371972e+05, -1.779323078594402e+05, - -1.779610839308387e+05, -1.779888972430434e+05, -1.780157594711796e+05, -1.780416820893877e+05, -1.780666763348923e+05, - -1.780907532742286e+05, -1.781139237673408e+05, -1.781361984715581e+05, -1.781575878892254e+05, -1.781781023075473e+05, - -1.781977518457539e+05, -1.782165464485307e+05, -1.782344958900279e+05, -1.782516097777565e+05, -1.782678975563704e+05, - -1.782833685113460e+05, -1.782980317725539e+05, -1.783118963177337e+05, -1.783249709758711e+05, -1.783372644304814e+05, - -1.783487852228035e+05, -1.783595417549051e+05, -1.783695422927056e+05, -1.783787949689144e+05, -1.783873077858925e+05, - -1.783950886184375e+05, -1.784021452164911e+05, -1.784084852077801e+05, -1.784141161003839e+05, -1.784190452852347e+05, - -1.784232800385570e+05, -1.784268275242368e+05, -1.784296947961366e+05, -1.784318888003454e+05, -1.784334163773755e+05, - -1.784342842643008e+05, -1.784344990968418e+05, -1.784340674114003e+05, -1.784329956470372e+05, -1.784312901474090e+05, - -1.784289571626511e+05, -1.784260028512143e+05, -1.784224332816612e+05, -1.784182544344127e+05, -1.784134722034564e+05, - -1.784080923980118e+05, -1.784021207441550e+05, -1.783955628864078e+05, -1.783884243892836e+05, -1.783807107388013e+05, - -1.783724273439624e+05, -1.783635795381906e+05, -1.783541725807418e+05, -1.783442116580786e+05, -1.783337018852145e+05, - -1.783226483070254e+05, -1.783110558995334e+05, -1.782989295711585e+05, -1.782862741639451e+05, -1.782730944547580e+05, - -1.782593951564514e+05, -1.782451809190150e+05, -1.782304563306898e+05, -1.782152259190643e+05, -1.781994941521420e+05, - -1.781832654393869e+05, -1.781665441327474e+05, -1.781493345276563e+05, -1.781316408640094e+05, -1.781134673271231e+05, - -1.780948180486721e+05, -1.780756971076054e+05, -1.780561085310439e+05, -1.780360562951578e+05, -1.780155443260288e+05, - -1.779945765004889e+05, -1.779731566469448e+05, -1.779512885461857e+05, -1.779289759321724e+05, -1.779062224928100e+05, - -1.778830318707078e+05, -1.778594076639177e+05, -1.778353534266647e+05, -1.778108726700565e+05, -1.777859688627816e+05, - -1.777606454317927e+05, -1.777349057629763e+05, -1.777087532018099e+05, -1.776821910540035e+05, -1.776552225861308e+05, - -1.776278510262468e+05, -1.776000795644947e+05, -1.775719113536973e+05, -1.775433495099414e+05, -1.775143971131476e+05, - -1.774850572076287e+05, -1.774553328026424e+05, -1.774252268729252e+05, -1.773947423592230e+05, -1.773638821688087e+05, - -1.773326491759892e+05, -1.773010462226053e+05, -1.772690761185189e+05, -1.772367416420950e+05, -1.772040455406703e+05, - -1.771709905310163e+05, -1.771375792997928e+05, -1.771038145039917e+05, -1.770696987713764e+05, -1.770352347009069e+05, - -1.770004248631630e+05, -1.769652718007583e+05, -1.769297780287431e+05, -1.768939460350050e+05, -1.768577782806589e+05, - -1.768212772004309e+05, -1.767844452030374e+05, -1.767472846715530e+05, -1.767097979637749e+05, -1.766719874125824e+05, - -1.766338553262861e+05, -1.765954039889715e+05, -1.765566356608424e+05, -1.765175525785482e+05, -1.764781569555147e+05, - -1.764384509822661e+05, -1.763984368267366e+05, -1.763581166345857e+05, -1.763174925295006e+05, -1.762765666134966e+05, - -1.762353409672116e+05, -1.761938176501971e+05, -1.761519987012017e+05, -1.761098861384509e+05, -1.760674819599245e+05, - -1.760247881436247e+05, -1.759818066478436e+05, -1.759385394114255e+05, -1.758949883540232e+05, -1.758511553763515e+05, - -1.758070423604358e+05, -1.757626511698588e+05, -1.757179836499984e+05, -1.756730416282669e+05, -1.756278269143436e+05, - -1.755823413004035e+05, -1.755365865613426e+05, -1.754905644550023e+05, -1.754442767223837e+05, -1.753977250878666e+05, - -1.753509112594189e+05, -1.753038369288038e+05, -1.752565037717871e+05, -1.752089134483364e+05, -1.751610676028212e+05, - -1.751129678642073e+05, -1.750646158462492e+05, -1.750160131476792e+05, -1.749671613523940e+05, -1.749180620296376e+05, - -1.748687167341834e+05, -1.748191270065081e+05, -1.747692943729725e+05, -1.747192203459890e+05, -1.746689064241924e+05, - -1.746183540926105e+05, -1.745675648228225e+05, -1.745165400731278e+05, -1.744652812886999e+05, -1.744137899017484e+05, - -1.743620673316694e+05, -1.743101149852030e+05, -1.742579342565791e+05, -1.742055265276691e+05, -1.741528931681296e+05, - -1.741000355355471e+05, -1.740469549755783e+05, -1.739936528220922e+05, -1.739401303973047e+05, -1.738863890119174e+05, - -1.738324299652487e+05, -1.737782545453640e+05, -1.737238640292111e+05, -1.736692596827415e+05, -1.736144427610399e+05, - -1.735594145084499e+05, -1.735041761586913e+05, -1.734487289349857e+05, -1.733930740501731e+05, -1.733372127068296e+05, - -1.732811460973838e+05, -1.732248754042288e+05, -1.731684017998369e+05, -1.731117264468692e+05, -1.730548504982847e+05, - -1.729977750974493e+05, -1.729405013782397e+05, -1.728830304651518e+05, -1.728253634734000e+05, -1.727675015090225e+05, - -1.727094456689784e+05, -1.726511970412512e+05, -1.725927567049429e+05, -1.725341257303715e+05, -1.724753051791673e+05, - -1.724162961043653e+05, -1.723570995504977e+05, -1.722977165536868e+05, -1.722381481417349e+05, -1.721783953342103e+05, - -1.721184591425393e+05, -1.720583405700896e+05, -1.719980406122569e+05, -1.719375602565496e+05, -1.718769004826708e+05, - -1.718160622626010e+05, -1.717550465606798e+05, -1.716938543336838e+05, -1.716324865309082e+05, -1.715709440942424e+05, - -1.715092279582474e+05, -1.714473390502325e+05, -1.713852782903297e+05, -1.713230465915659e+05, -1.712606448599398e+05, - -1.711980739944892e+05, -1.711353348873659e+05, -1.710724284239039e+05, -1.710093554826885e+05, -1.709461169356262e+05, - -1.708827136480113e+05, -1.708191464785917e+05, -1.707554162796369e+05, -1.706915238970016e+05, -1.706274701701881e+05, - -1.705632559324158e+05, -1.704988820106749e+05, -1.704343492257972e+05, -1.703696583925103e+05, -1.703048103195015e+05, - -1.702398058094764e+05, -1.701746456592180e+05, -1.701093306596436e+05, -1.700438615958647e+05, -1.699782392472411e+05, - -1.699124643874377e+05, -1.698465377844809e+05, -1.697804602008120e+05, -1.697142323933407e+05, -1.696478551135011e+05, - -1.695813291073005e+05, -1.695146551153757e+05, -1.694478338730407e+05, -1.693808661103389e+05, -1.693137525520950e+05, - -1.692464939179616e+05, -1.691790909224702e+05, -1.691115442750796e+05, -1.690438546802218e+05, -1.689760228373531e+05, - -1.689080494409966e+05, -1.688399351807914e+05, -1.687716807415360e+05, -1.687032868032359e+05, -1.686347540411470e+05, - -1.685660831258183e+05, -1.684972747231377e+05, -1.684283294943738e+05, -1.683592480962183e+05, -1.682900311808304e+05 - }, - { - 5.379118735814024e+04, 5.233068744732587e+04, 5.085452606679797e+04, 4.936226773702975e+04, 4.785345767597408e+04, - 4.632762069145877e+04, 4.478425999657267e+04, 4.322285594002286e+04, 4.164286464659928e+04, 4.004371655911829e+04, - 3.842481487428589e+04, 3.678553386376602e+04, 3.512521707111545e+04, 3.344317537452702e+04, 3.173868490458740e+04, - 3.001098480551163e+04, 2.825927482759457e+04, 2.648271273794483e+04, 2.468041153599033e+04, 2.285143645982596e+04, - 2.099480176930471e+04, 1.910946729197255e+04, 1.719433471868200e+04, 1.524824363721610e+04, 1.326996729481845e+04, - 1.125820808457466e+04, 9.211592756686854e+03, 7.128667364585354e+03, 5.007891968554592e+03, 2.847635137376500e+03, - 6.461683142411090e+02, -1.598339854276670e+03, -3.887829076776871e+03, -6.224352656820571e+03, -8.610082085013310e+03, - -1.104731062597262e+04, -1.353845523421001e+04, -1.608605608134420e+04, -1.869277251666221e+04, -2.136137405891443e+04, - -2.409472436291365e+04, -2.689575550101736e+04, -2.976742899629839e+04, -3.271267894034141e+04, -3.573433118354299e+04, - -3.883499106032593e+04, -4.201689059344206e+04, -4.528168504467124e+04, -4.863018887863543e+04, -5.206204405912039e+04, - -5.557532098268929e+04, -5.916606610561153e+04, -6.282783085880367e+04, -6.655124062974534e+04, -7.032368254114113e+04, - -7.412919571333370e+04, -7.794863075658103e+04, -8.176011028824786e+04, -8.553978351392846e+04, -8.926283814668233e+04, - -9.290471016012890e+04, -9.644240134497621e+04, -9.985576995347416e+04, -1.031286210186468e+05, -1.062494491419619e+05, - -1.092117492399932e+05, -1.120135471082024e+05, -1.146567131189946e+05, -1.171460537661463e+05, -1.194883779941730e+05, - -1.216916907491087e+05, -1.237645723525678e+05, -1.257157418981743e+05, -1.275537715054290e+05, -1.292869102319567e+05, - -1.309229815891094e+05, -1.324693283236724e+05, -1.339327873594203e+05, -1.353196845145101e+05, -1.366358427907864e+05, - -1.378866002625281e+05, -1.390768347227298e+05, -1.402109928195139e+05, -1.412931217903579e+05, -1.423269022287538e+05, - -1.433156806417369e+05, -1.442625008699294e+05, -1.451701337494118e+05, -1.460411045863833e+05, -1.468777183083919e+05, - -1.476820822089421e+05, -1.484561263657424e+05, -1.492016218610903e+05, -1.499201969750842e+05, -1.506133515404294e+05, - -1.512824696507913e+05, -1.519288309081261e+05, -1.525536203819909e+05, -1.531579374383926e+05, -1.537428035791350e+05, - -1.543091694162058e+05, -1.548579208902056e+05, -1.553898848276346e+05, -1.559058339191567e+05, -1.564064911898095e+05, - -1.568925340224033e+05, -1.573645977870133e+05, -1.578232791222627e+05, -1.582691389079847e+05, -1.587027049636074e+05, - -1.591244745021478e+05, -1.595349163658934e+05, -1.599344730665966e+05, -1.603235626502172e+05, -1.607025804038549e+05, - -1.610719004204516e+05, -1.614318770350586e+05, -1.617828461449178e+05, -1.621251264260267e+05, -1.624590204451183e+05, - -1.627848157032519e+05, -1.631027855814375e+05, -1.634131902238790e+05, -1.637162773534554e+05, -1.640122830460429e+05, - -1.643014323526392e+05, -1.645839400708536e+05, -1.648600112647760e+05, -1.651298418482525e+05, -1.653936191075294e+05, - -1.656515221895891e+05, -1.659037225552166e+05, -1.661503844010843e+05, -1.663916650549393e+05, -1.666277152476310e+05, - -1.668586797864609e+05, -1.670846974570173e+05, -1.673059015710538e+05, -1.675224201960321e+05, -1.677343764213336e+05, - -1.679418886081427e+05, -1.681450706241609e+05, -1.683440320642236e+05, -1.685388784578044e+05, -1.687297114643146e+05, - -1.689166290570305e+05, -1.690997256964239e+05, -1.692790924926286e+05, -1.694548173636616e+05, -1.696269851748188e+05, - -1.697956778804619e+05, -1.699609746529089e+05, -1.701229520053642e+05, -1.702816839082428e+05, -1.704372418992999e+05, - -1.705896951879483e+05, -1.707391107541284e+05, -1.708855534420586e+05, -1.710290860491781e+05, -1.711697694105720e+05, - -1.713076624791448e+05, -1.714428224017918e+05, -1.715753045918091e+05, -1.717051627977517e+05, -1.718324491689498e+05, - -1.719572143178696e+05, -1.720795073795000e+05, -1.721993760679289e+05, -1.723168667302677e+05, -1.724320243980673e+05, - -1.725448928363657e+05, -1.726555145904914e+05, -1.727639310307478e+05, -1.728701823950876e+05, -1.729743078298848e+05, - -1.730763454289062e+05, -1.731763322705712e+05, -1.732743044535930e+05, -1.733702971310815e+05, -1.734643445431871e+05, - -1.735564800483569e+05, -1.736467361532771e+05, -1.737351445415611e+05, -1.738217361012496e+05, -1.739065409511796e+05, - -1.739895884662756e+05, -1.740709073018159e+05, -1.741505253941374e+05, -1.742284700719003e+05, -1.743047679463296e+05, - -1.743794450179574e+05, -1.744525266752583e+05, -1.745240377137078e+05, -1.745940023541095e+05, -1.746624442602212e+05, - -1.747293865557142e+05, -1.747948518404932e+05, -1.748588622064086e+05, -1.749214392523852e+05, -1.749826040989922e+05, - -1.750423774024842e+05, -1.751007793683280e+05, -1.751578297642457e+05, -1.752135479327882e+05, -1.752679528034616e+05, - -1.753210629044276e+05, -1.753728963737899e+05, -1.754234709704916e+05, -1.754728040848316e+05, -1.755209127486208e+05, - -1.755678136449931e+05, -1.756135231178816e+05, -1.756580571811754e+05, -1.757014315275711e+05, -1.757436615371295e+05, - -1.757847622855484e+05, -1.758247485521642e+05, -1.758636348276943e+05, -1.759014353217259e+05, -1.759381639699641e+05, - -1.759738344412496e+05, -1.760084601443506e+05, -1.760420542345429e+05, -1.760746296199794e+05, -1.761061989678653e+05, - -1.761367747104380e+05, -1.761663690507633e+05, -1.761949939683556e+05, -1.762226612246243e+05, -1.762493823681573e+05, - -1.762751687398444e+05, -1.763000314890164e+05, -1.763239815224185e+05, -1.763470296205911e+05, -1.763691863307075e+05, - -1.763904620268367e+05, -1.764108669030529e+05, -1.764304109775920e+05, -1.764491040968919e+05, -1.764669559395104e+05, - -1.764839760199404e+05, -1.765001736923089e+05, -1.765155581539790e+05, -1.765301384490476e+05, -1.765439234717452e+05, - -1.765569219697451e+05, -1.765691425473781e+05, -1.765805936687618e+05, -1.765912836608435e+05, -1.766012207163621e+05, - -1.766104128967274e+05, -1.766188681348267e+05, -1.766265942377532e+05, -1.766335988894640e+05, -1.766398896533675e+05, - -1.766454739748425e+05, -1.766503591836930e+05, -1.766545524965387e+05, -1.766580610191433e+05, -1.766608917486830e+05, - -1.766630515759597e+05, -1.766645472875541e+05, -1.766653855679266e+05, -1.766655730014669e+05, -1.766651160744872e+05, - -1.766640211771725e+05, -1.766622946054773e+05, -1.766599425629780e+05, -1.766569711626797e+05, -1.766533864287779e+05, - -1.766491942983797e+05, -1.766444006231797e+05, -1.766390111710997e+05, -1.766330316278864e+05, -1.766264675986726e+05, - -1.766193246094995e+05, -1.766116081088049e+05, -1.766033234688782e+05, -1.765944759872740e+05, -1.765850708882036e+05, - -1.765751133238844e+05, -1.765646083758650e+05, -1.765535610563164e+05, -1.765419763092945e+05, -1.765298590119746e+05, - -1.765172139758573e+05, -1.765040459479480e+05, -1.764903596119085e+05, -1.764761595891838e+05, -1.764614504401060e+05, - -1.764462366649685e+05, -1.764305227050827e+05, -1.764143129438060e+05, -1.763976117075520e+05, -1.763804232667765e+05, - -1.763627518369413e+05, -1.763446015794589e+05, -1.763259766026167e+05, -1.763068809624813e+05, -1.762873186637829e+05, - -1.762672936607816e+05, -1.762468098581159e+05, -1.762258711116323e+05, -1.762044812291983e+05, -1.761826439714992e+05, - -1.761603630528156e+05, -1.761376421417890e+05, -1.761144848621674e+05, -1.760908947935398e+05, -1.760668754720518e+05, - -1.760424303911084e+05, -1.760175630020654e+05, -1.759922767149010e+05, -1.759665748988785e+05, -1.759404608831949e+05, - -1.759139379576146e+05, -1.758870093730936e+05, -1.758596783423890e+05, -1.758319480406572e+05, -1.758038216060411e+05, - -1.757753021402453e+05, -1.757463927090994e+05, -1.757170963431116e+05, -1.756874160380115e+05, -1.756573547552818e+05, - -1.756269154226806e+05, -1.755961009347517e+05, -1.755649141533298e+05, -1.755333579080303e+05, -1.755014349967347e+05, - -1.754691481860643e+05, -1.754365002118461e+05, -1.754034937795690e+05, -1.753701315648331e+05, -1.753364162137885e+05, - -1.753023503435697e+05, -1.752679365427172e+05, -1.752331773715951e+05, -1.751980753627996e+05, -1.751626330215608e+05, - -1.751268528261367e+05, -1.750907372281996e+05, -1.750542886532173e+05, -1.750175095008248e+05, -1.749804021451931e+05, - -1.749429689353877e+05, -1.749052121957223e+05, -1.748671342261080e+05, -1.748287373023933e+05, -1.747900236766995e+05, - -1.747509955777516e+05, -1.747116552112015e+05, -1.746720047599458e+05, -1.746320463844390e+05, -1.745917822230019e+05, - -1.745512143921219e+05, -1.745103449867525e+05, -1.744691760806019e+05, -1.744277097264241e+05, -1.743859479562978e+05, - -1.743438927819053e+05, -1.743015461948046e+05, -1.742589101666993e+05, -1.742159866496999e+05, -1.741727775765844e+05, - -1.741292848610541e+05, -1.740855103979831e+05, -1.740414560636662e+05, -1.739971237160609e+05, -1.739525151950261e+05, - -1.739076323225577e+05, -1.738624769030189e+05, -1.738170507233678e+05, -1.737713555533809e+05, -1.737253931458738e+05, - -1.736791652369173e+05, -1.736326735460492e+05, -1.735859197764872e+05, -1.735389056153313e+05, -1.734916327337709e+05, - -1.734441027872809e+05, -1.733963174158221e+05, -1.733482782440306e+05, -1.732999868814143e+05, -1.732514449225341e+05, - -1.732026539471944e+05, -1.731536155206206e+05, -1.731043311936409e+05, -1.730548025028626e+05, -1.730050309708433e+05, - -1.729550181062656e+05, -1.729047654041027e+05, -1.728542743457851e+05, -1.728035463993649e+05, -1.727525830196753e+05, - -1.727013856484891e+05, -1.726499557146768e+05, -1.725982946343579e+05, -1.725464038110532e+05, -1.724942846358352e+05, - -1.724419384874737e+05, -1.723893667325809e+05, -1.723365707257550e+05, -1.722835518097196e+05, -1.722303113154632e+05, - -1.721768505623755e+05, -1.721231708583810e+05, -1.720692735000734e+05, -1.720151597728451e+05, -1.719608309510166e+05, - -1.719062882979620e+05, -1.718515330662373e+05, -1.717965664976997e+05, -1.717413898236323e+05, -1.716860042648623e+05, - -1.716304110318808e+05, -1.715746113249565e+05, -1.715186063342547e+05, -1.714623972399455e+05, -1.714059852123199e+05, - -1.713493714118977e+05, -1.712925569895366e+05, -1.712355430865383e+05, -1.711783308347558e+05, -1.711209213566967e+05, - -1.710633157656245e+05, -1.710055151656628e+05, -1.709475206518924e+05, -1.708893333104514e+05, -1.708309542186320e+05, - -1.707723844449763e+05, -1.707136250493707e+05, -1.706546770831395e+05, -1.705955415891366e+05, -1.705362196018373e+05, - -1.704767121474249e+05, -1.704170202438833e+05, -1.703571449010825e+05, -1.702970871208615e+05, -1.702368478971190e+05, - -1.701764282158919e+05, -1.701158290554417e+05, -1.700550513863339e+05, -1.699940961715189e+05, -1.699329643664130e+05, - -1.698716569189739e+05, -1.698101747697810e+05, -1.697485188521107e+05, -1.696866900920112e+05, -1.696246894083778e+05, - -1.695625177130252e+05, -1.695001759107619e+05, -1.694376648994605e+05, -1.693749855701294e+05, -1.693121388069801e+05, - -1.692491254874996e+05, -1.691859464825155e+05, -1.691226026562656e+05, -1.690590948664621e+05, -1.689954239643587e+05, - -1.689315907948142e+05, -1.688675961963568e+05, -1.688034410012469e+05, -1.687391260355403e+05, -1.686746521191487e+05, - -1.686100200659006e+05, -1.685452306836011e+05, -1.684802847740922e+05, -1.684151831333107e+05, -1.683499265513457e+05, - -1.682845158124955e+05, -1.682189516953249e+05, -1.681532349727207e+05, -1.680873664119462e+05, -1.680213467746957e+05, - -1.679551768171490e+05, -1.678888572900229e+05, -1.678223889386261e+05, -1.677557725029078e+05, -1.676890087175123e+05, - -1.676220983118260e+05, -1.675550420100306e+05, -1.674878405311515e+05, -1.674204945891046e+05, -1.673530048927469e+05, - -1.672853721459238e+05, -1.672175970475152e+05, -1.671496802914831e+05, -1.670816225669164e+05, -1.670134245580768e+05, - -1.669450869444453e+05, -1.668766104007641e+05, -1.668079955970815e+05, -1.667392431987964e+05, -1.666703538666989e+05 - }, - { - 5.469602869033446e+04, 5.324497782993484e+04, 5.177857918750094e+04, 5.029641330099323e+04, 4.879804250826711e+04, - 4.728300993203242e+04, 4.575083839693030e+04, 4.420102927171091e+04, 4.263306123282007e+04, 4.104638894204536e+04, - 3.944044163212249e+04, 3.781462159322647e+04, 3.616830255285421e+04, 3.450082794112273e+04, 3.281150903303202e+04, - 3.109962295879699e+04, 2.936441057296110e+04, 2.760507417270163e+04, 2.582077505556899e+04, 2.401063090693709e+04, - 2.217371300776200e+04, 2.030904325397137e+04, 1.841559098009301e+04, 1.649226958178672e+04, 1.453793293504618e+04, - 1.255137161436607e+04, 1.053130891860740e+04, 8.476396722313011e+03, 6.385211182689428e+03, 4.256248349550102e+03, - 2.087919748627367e+03, -1.214519591767171e+02, -2.373637099734722e+03, -4.670502690631903e+03, -7.014015428571931e+03, - -9.406243637337788e+03, -1.184935759357117e+04, -1.434562758297282e+04, -1.689741877055586e+04, -1.950718158989437e+04, - -2.217743609167453e+04, -2.491074804486097e+04, -2.770969399795992e+04, -3.057681167563410e+04, -3.351453111877094e+04, - -3.652508090078986e+04, -3.961036269769873e+04, -4.277178674571175e+04, -4.601006082682316e+04, -4.932492725975340e+04, - -5.271484716085373e+04, -5.617664027098176e+04, -5.970510254636917e+04, -6.329264119448927e+04, -6.692898357214495e+04, - -7.060102523137291e+04, -7.429287669781124e+04, -7.798614670055105e+04, -8.166046804780785e+04, -8.529424218117143e+04, - -8.886555656107643e+04, -9.235321226468140e+04, -9.573777909438752e+04, -9.900257118029459e+04, -1.021344212986088e+05, - -1.051241636121857e+05, -1.079667655853874e+05, -1.106609466511270e+05, -1.132085990859939e+05, -1.156140466842974e+05, - -1.178832951996090e+05, -1.200233799470129e+05, -1.220418555875746e+05, -1.239464294844097e+05, -1.257447157700089e+05, - -1.274440796025037e+05, -1.290515436035254e+05, -1.305737348873202e+05, -1.320168588522960e+05, -1.333866896952500e+05, - -1.346885732384722e+05, -1.359274380643386e+05, -1.371078128292981e+05, -1.382338479165568e+05, -1.393093399280163e+05, - -1.403377576853093e+05, -1.413222687227571e+05, -1.422657653829338e+05, -1.431708899020408e+05, -1.440400580514325e+05, - -1.448754810742431e+05, -1.456791857921930e+05, -1.464530328604818e+05, -1.471987332215972e+05, -1.479178628567589e+05, - -1.486118759618691e+05, -1.492821166882347e+05, -1.499298295912239e+05, -1.505561689258993e+05, -1.511622069202135e+05, - -1.517489411455056e+05, -1.523173010922157e+05, -1.528681540468456e+05, -1.534023103548161e+05, -1.539205281433862e+05, - -1.544235175692858e+05, -1.549119446472991e+05, -1.553864347086435e+05, -1.558475755315507e+05, -1.562959201809114e+05, - -1.567319895890536e+05, -1.571562749056207e+05, -1.575692396409841e+05, -1.579713216246106e+05, -1.583629347971862e+05, - -1.587444708530838e+05, -1.591163007496423e+05, -1.594787760850135e+05, -1.598322303846963e+05, -1.601769802681403e+05, - -1.605133265343281e+05, -1.608415551623912e+05, -1.611619382366672e+05, -1.614747348233472e+05, -1.617801916787128e+05, - -1.620785441163767e+05, -1.623700165987875e+05, -1.626548233951730e+05, -1.629331691713131e+05, -1.632052495392147e+05, - -1.634712515695555e+05, -1.637313542668403e+05, -1.639857290139080e+05, -1.642345399193671e+05, -1.644779444295577e+05, - -1.647160934092034e+05, -1.649491316432379e+05, -1.651771981195771e+05, -1.654004263274550e+05, -1.656189445372682e+05, - -1.658328760632489e+05, -1.660423395101941e+05, -1.662474490053736e+05, -1.664483144166453e+05, -1.666450415577361e+05, - -1.668377323815620e+05, -1.670264851613845e+05, -1.672113946667494e+05, -1.673925523191014e+05, -1.675700463491989e+05, - -1.677439619404723e+05, -1.679143813655935e+05, -1.680813841156186e+05, -1.682450470221766e+05, -1.684054443731365e+05, - -1.685626480221643e+05, -1.687167274925401e+05, -1.688677500755938e+05, -1.690157809240767e+05, -1.691608831407810e+05, - -1.693031178626837e+05, -1.694425443408845e+05, -1.695792200165774e+05, -1.697132005932936e+05, -1.698445401056205e+05, - -1.699732909846096e+05, -1.700995041200470e+05, -1.702232289197757e+05, -1.703445133662213e+05, -1.704634040702862e+05, - -1.705799463227472e+05, -1.706941841432984e+05, -1.708061603273622e+05, -1.709159164907886e+05, -1.710234931125564e+05, - -1.711289295755783e+05, -1.712322642057098e+05, -1.713335343090562e+05, -1.714327762076641e+05, -1.715300252736767e+05, - -1.716253159620379e+05, -1.717186818418084e+05, -1.718101556261717e+05, -1.718997692011874e+05, -1.719875536533599e+05, - -1.720735392960752e+05, -1.721577556949605e+05, -1.722402316697823e+05, -1.723209954061199e+05, -1.724000743474538e+05, - -1.724774953022270e+05, -1.725532844435066e+05, -1.726274673288803e+05, -1.727000689195849e+05, -1.727711135989021e+05, - -1.728406251898537e+05, -1.729086269722292e+05, -1.729751416989714e+05, -1.730401916119554e+05, -1.731037984571830e+05, - -1.731659834994149e+05, -1.732267675362766e+05, -1.732861709118472e+05, -1.733442135297608e+05, -1.734009148658421e+05, - -1.734562939802908e+05, -1.735103695294387e+05, -1.735631597770937e+05, -1.736146826054898e+05, -1.736649555258598e+05, - -1.737139956886430e+05, -1.737618198933485e+05, -1.738084445980811e+05, -1.738538859287480e+05, -1.738981596879585e+05, - -1.739412813636271e+05, -1.739832661372932e+05, -1.740241288921681e+05, -1.740638842209199e+05, -1.741025464332051e+05, - -1.741401295629615e+05, -1.741766473754627e+05, -1.742121133741529e+05, -1.742465408072642e+05, -1.742799426742260e+05, - -1.743123317318748e+05, -1.743437205004723e+05, -1.743741212695366e+05, -1.744035461034950e+05, -1.744320068471672e+05, - -1.744595151310791e+05, -1.744860823766192e+05, -1.745117198010384e+05, -1.745364384223056e+05, -1.745602490638117e+05, - -1.745831623589494e+05, -1.746051887555403e+05, -1.746263385201498e+05, -1.746466217422689e+05, -1.746660483383790e+05, - -1.746846280558984e+05, -1.747023704770199e+05, -1.747192850224367e+05, -1.747353809549648e+05, -1.747506673830667e+05, - -1.747651532642741e+05, -1.747788474085159e+05, -1.747917584813581e+05, -1.748038950071526e+05, -1.748152653721002e+05, - -1.748258778272329e+05, -1.748357404913133e+05, -1.748448613536608e+05, -1.748532482768963e+05, -1.748609089996208e+05, - -1.748678511390189e+05, -1.748740821933966e+05, -1.748796095446525e+05, -1.748844404606840e+05, -1.748885820977332e+05, - -1.748920415026707e+05, -1.748948256152232e+05, -1.748969412701431e+05, -1.748983951993232e+05, -1.748991940338605e+05, - -1.748993443060648e+05, -1.748988524514208e+05, -1.748977248104996e+05, -1.748959676308237e+05, -1.748935870686857e+05, - -1.748905891909253e+05, -1.748869799766585e+05, -1.748827653189694e+05, -1.748779510265592e+05, -1.748725428253563e+05, - -1.748665463600877e+05, -1.748599671958136e+05, -1.748528108194258e+05, -1.748450826411105e+05, -1.748367879957776e+05, - -1.748279321444572e+05, -1.748185202756605e+05, -1.748085575067152e+05, -1.747980488850642e+05, -1.747869993895395e+05, - -1.747754139316039e+05, -1.747632973565660e+05, -1.747506544447685e+05, -1.747374899127486e+05, -1.747238084143720e+05, - -1.747096145419453e+05, -1.746949128272977e+05, -1.746797077428463e+05, -1.746640037026312e+05, -1.746478050633325e+05, - -1.746311161252627e+05, -1.746139411333409e+05, -1.745962842780407e+05, -1.745781496963234e+05, -1.745595414725477e+05, - -1.745404636393611e+05, -1.745209201785730e+05, -1.745009150220087e+05, -1.744804520523455e+05, -1.744595351039309e+05, - -1.744381679635869e+05, -1.744163543713916e+05, -1.743940980214502e+05, -1.743714025626489e+05, -1.743482715993910e+05, - -1.743247086923206e+05, -1.743007173590298e+05, -1.742763010747540e+05, -1.742514632730496e+05, -1.742262073464623e+05, - -1.742005366471789e+05, -1.741744544876665e+05, -1.741479641413014e+05, -1.741210688429827e+05, -1.740937717897353e+05, - -1.740660761413013e+05, -1.740379850207192e+05, -1.740095015148919e+05, -1.739806286751444e+05, -1.739513695177694e+05, - -1.739217270245644e+05, -1.738917041433569e+05, -1.738613037885202e+05, -1.738305288414796e+05, -1.737993821512084e+05, - -1.737678665347150e+05, -1.737359847775211e+05, -1.737037396341306e+05, -1.736711338284904e+05, -1.736381700544409e+05, - -1.736048509761597e+05, -1.735711792285990e+05, -1.735371574179101e+05, -1.735027881218634e+05, -1.734680738902618e+05, - -1.734330172453430e+05, -1.733976206821779e+05, -1.733618866690611e+05, -1.733258176478915e+05, -1.732894160345502e+05, - -1.732526842192698e+05, -1.732156245669969e+05, -1.731782394177483e+05, -1.731405310869608e+05, -1.731025018658367e+05, - -1.730641540216800e+05, -1.730254897982301e+05, -1.729865114159867e+05, -1.729472210725316e+05, -1.729076209428429e+05, - -1.728677131796049e+05, -1.728274999135142e+05, -1.727869832535762e+05, -1.727461652874011e+05, -1.727050480814927e+05, - -1.726636336815323e+05, -1.726219241126586e+05, -1.725799213797424e+05, -1.725376274676566e+05, -1.724950443415424e+05, - -1.724521739470696e+05, -1.724090182106951e+05, -1.723655790399142e+05, -1.723218583235102e+05, -1.722778579317980e+05, - -1.722335797168657e+05, -1.721890255128096e+05, -1.721441971359694e+05, -1.720990963851548e+05, -1.720537250418720e+05, - -1.720080848705449e+05, -1.719621776187341e+05, -1.719160050173509e+05, -1.718695687808677e+05, -1.718228706075278e+05, - -1.717759121795494e+05, -1.717286951633252e+05, -1.716812212096233e+05, -1.716334919537802e+05, -1.715855090158948e+05, - -1.715372740010152e+05, -1.714887884993269e+05, -1.714400540863347e+05, -1.713910723230449e+05, -1.713418447561402e+05, - -1.712923729181574e+05, -1.712426583276582e+05, -1.711927024893995e+05, -1.711425068944990e+05, -1.710920730206026e+05, - -1.710414023320441e+05, -1.709904962800060e+05, -1.709393563026758e+05, -1.708879838254013e+05, -1.708363802608445e+05, - -1.707845470091296e+05, -1.707324854579934e+05, -1.706801969829287e+05, -1.706276829473310e+05, -1.705749447026379e+05, - -1.705219835884694e+05, -1.704688009327653e+05, -1.704153980519215e+05, -1.703617762509223e+05, -1.703079368234737e+05, - -1.702538810521318e+05, -1.701996102084302e+05, -1.701451255530085e+05, -1.700904283357341e+05, -1.700355197958261e+05, - -1.699804011619743e+05, -1.699250736524612e+05, -1.698695384752766e+05, -1.698137968282342e+05, -1.697578498990864e+05, - -1.697016988656356e+05, -1.696453448958461e+05, -1.695887891479527e+05, -1.695320327705684e+05, -1.694750769027928e+05, - -1.694179226743128e+05, -1.693605712055115e+05, -1.693030236075643e+05, -1.692452809825452e+05, -1.691873444235219e+05, - -1.691292150146549e+05, -1.690708938312954e+05, -1.690123819400786e+05, -1.689536803990185e+05, -1.688947902576011e+05, - -1.688357125568744e+05, -1.687764483295407e+05, -1.687169986000437e+05, -1.686573643846569e+05, -1.685975466915720e+05, - -1.685375465209801e+05, -1.684773648651619e+05, -1.684170027085661e+05, -1.683564610278941e+05, -1.682957407921794e+05, - -1.682348429628702e+05, -1.681737684939055e+05, -1.681125183317952e+05, -1.680510934156963e+05, -1.679894946774882e+05, - -1.679277230418484e+05, -1.678657794263274e+05, -1.678036647414191e+05, -1.677413798906359e+05, -1.676789257705786e+05, - -1.676163032710060e+05, -1.675535132749046e+05, -1.674905566585591e+05, -1.674274342916172e+05, -1.673641470371580e+05, - -1.673006957517579e+05, -1.672370812855554e+05, -1.671733044823151e+05, -1.671093661794920e+05, -1.670452672082941e+05, - -1.669810083937435e+05, -1.669165905547383e+05, -1.668520145041129e+05, -1.667872810486983e+05, -1.667223909893798e+05, - -1.666573451211557e+05, -1.665921442331951e+05, -1.665267891088946e+05, -1.664612805259351e+05, -1.663956192563349e+05, - -1.663298060665080e+05, -1.662638417173145e+05, -1.661977269641169e+05, -1.661314625568309e+05, -1.660650492399800e+05, - -1.659984877527439e+05, -1.659317788290123e+05, -1.658649231974327e+05, -1.657979215814624e+05, -1.657307746994176e+05, - -1.656634832645181e+05, -1.655960479849405e+05, -1.655284695638635e+05, -1.654607486995130e+05, -1.653928860852109e+05, - -1.653248824094201e+05, -1.652567383557888e+05, -1.651884546031971e+05, -1.651200318257988e+05, -1.650514706930676e+05 - }, - { - 5.560182267722881e+04, 5.416012141496845e+04, 5.270337928018007e+04, 5.123119223939248e+04, 4.974313910292042e+04, - 4.823878059568405e+04, 4.671765836840340e+04, 4.517929394302872e+04, 4.362318758974281e+04, 4.204881712929553e+04, - 4.045563665583739e+04, 3.884307517458804e+04, 3.721053514842916e+04, 3.555739094721946e+04, 3.388298719336688e+04, - 3.218663699698600e+04, 3.046762007383806e+04, 2.872518073923768e+04, 2.695852577125734e+04, 2.516682213693468e+04, - 2.334919457586985e+04, 2.150472303670022e+04, 1.963243996360568e+04, 1.773132743241432e+04, 1.580031413930378e+04, - 1.383827224984891e+04, 1.184401412269155e+04, 9.816288930963990e+03, 7.753779216531502e+03, 5.655097428101974e+03, - 3.518782515559472e+03, 1.343296681056380e+03, -8.729775744144704e+02, -3.131739922821129e+03, -5.434773951357826e+03, - -7.783947803475278e+03, -1.018121334853291e+04, -1.262860318542353e+04, -1.512822476456390e+04, -1.768225056366767e+04, - -2.029290302664068e+04, -2.296243241892426e+04, -2.569308549745915e+04, -2.848706207061731e+04, -3.134645594922343e+04, - -3.427317598280623e+04, -3.726884214593892e+04, -4.033465112862595e+04, -4.347120595511513e+04, -4.667830537808449e+04, - -4.995469196737470e+04, -5.329776382652707e+04, -5.670326431403836e+04, -6.016497657697575e+04, -6.367446282377231e+04, - -6.722089768042762e+04, -7.079104543967577e+04, -7.436941929822680e+04, -7.793863832912251e+04, -8.147997169092923e+04, - -8.497403717915074e+04, -8.840160617337043e+04, -9.174445635710754e+04, -9.498620247576693e+04, -9.811302436751952e+04, - -1.011142090902158e+05, -1.039824508925680e+05, -1.067138776810138e+05, -1.093077406543157e+05, -1.117659192323605e+05, - -1.140923161456786e+05, -1.162922524931817e+05, -1.183719375269228e+05, -1.203380477981738e+05, -1.221974186679407e+05, - -1.239568325279446e+05, -1.256228811895179e+05, -1.272018807322823e+05, -1.286998215665145e+05, -1.301223414316599e+05, - -1.314747139577539e+05, -1.327618472501671e+05, -1.339882902852138e+05, -1.351582446736654e+05, -1.362755805174062e+05, - -1.373438550898832e+05, -1.383663333075094e+05, -1.393460090897868e+05, -1.402856268619475e+05, -1.411877026121837e+05, - -1.420545440689311e+05, -1.428882697026360e+05, -1.436908263746231e+05, -1.444640055505285e+05, -1.452094580677148e+05, - -1.459287074974647e+05, -1.466231621768562e+05, -1.472941260056233e+05, -1.479428081132768e+05, -1.485703315043056e+05, - -1.491777407866718e+05, -1.497660090830062e+05, -1.503360442162445e+05, -1.508886942529326e+05, -1.514247524787640e+05, - -1.519449618725334e+05, -1.524500191368485e+05, -1.529405783368117e+05, -1.534172541914701e+05, -1.538806250571817e+05, - -1.543312356370681e+05, -1.547695994464066e+05, -1.551962010600705e+05, -1.556114981648771e+05, -1.560159234388148e+05, - -1.564098862631378e+05, -1.567937743126266e+05, -1.571679549973280e+05, -1.575327767989391e+05, -1.578885705000177e+05, - -1.582356503178393e+05, -1.585743149515186e+05, -1.589048485722491e+05, -1.592275216278411e+05, -1.595425918150242e+05, - -1.598503047510046e+05, -1.601508947138085e+05, -1.604445853064050e+05, -1.607315900745725e+05, -1.610121130832723e+05, - -1.612863494515012e+05, -1.615544858509925e+05, -1.618167009722755e+05, -1.620731658737751e+05, -1.623240446797505e+05, - -1.625694945858536e+05, -1.628096664338679e+05, -1.630447049969306e+05, -1.632747492923318e+05, -1.634999328749441e+05, - -1.637203841126672e+05, -1.639362264451612e+05, -1.641475786270475e+05, -1.643545549566539e+05, -1.645572654913017e+05, - -1.647558162490040e+05, -1.649503094038290e+05, -1.651408434593792e+05, -1.653275134233294e+05, -1.655104109666774e+05, - -1.656896245752797e+05, -1.658652396930627e+05, -1.660373388574394e+05, -1.662060018274260e+05, -1.663713057049157e+05, - -1.665333250495359e+05, -1.666921319874827e+05, -1.668477963147016e+05, -1.670003855947583e+05, -1.671499652517119e+05, - -1.672965986582983e+05, -1.674403472196889e+05, -1.675812704530920e+05, -1.677194260634347e+05, -1.678548700153491e+05, - -1.679876566016757e+05, -1.681178385086828e+05, -1.682454668781789e+05, -1.683705913667016e+05, -1.684932602019325e+05, - -1.686135202365006e+05, -1.687314169993078e+05, -1.688469947445155e+05, -1.689602964983137e+05, -1.690713641035915e+05, - -1.691802382626215e+05, -1.692869585778562e+05, -1.693915635909397e+05, -1.694940908200251e+05, -1.695945767954805e+05, - -1.696930570940700e+05, -1.697895663716837e+05, -1.698841383946890e+05, -1.699768060699716e+05, -1.700676014737328e+05, - -1.701565558790989e+05, -1.702436997826054e+05, -1.703290629296063e+05, -1.704126743149165e+05, -1.704945622997054e+05, - -1.705747544959659e+05, -1.706532778786922e+05, -1.707301587843441e+05, -1.708054229307992e+05, -1.708790954365365e+05, - -1.709512008390887e+05, -1.710217631127933e+05, -1.710908056858738e+05, -1.711583514568854e+05, -1.712244228105452e+05, - -1.712890416329824e+05, -1.713522293264269e+05, -1.714140068233662e+05, -1.714743946001878e+05, -1.715334126903353e+05, - -1.715910806969933e+05, -1.716474178053240e+05, -1.717024427942730e+05, -1.717561740479647e+05, -1.718086295666997e+05, - -1.718598269775752e+05, -1.719097835447400e+05, -1.719585161793033e+05, -1.720060414489052e+05, -1.720523755869692e+05, - -1.720975345016428e+05, -1.721415337844462e+05, -1.721843887186304e+05, -1.722261142872671e+05, -1.722667251810713e+05, - -1.723062358059757e+05, -1.723446602904562e+05, -1.723820124926287e+05, -1.724183060071180e+05, -1.724535541717110e+05, - -1.724877700738003e+05, -1.725209665566302e+05, -1.725531562253454e+05, -1.725843514528569e+05, -1.726145643855260e+05, - -1.726438069486776e+05, -1.726720908519452e+05, -1.726994275944566e+05, -1.727258284698636e+05, -1.727513045712240e+05, - -1.727758667957368e+05, -1.727995258493412e+05, -1.728222922511806e+05, -1.728441763379338e+05, -1.728651882680317e+05, - -1.728853380257347e+05, -1.729046354251131e+05, -1.729230901139028e+05, -1.729407115772556e+05, -1.729575091413851e+05, - -1.729734919771096e+05, -1.729886691032980e+05, -1.730030493902178e+05, -1.730166415627956e+05, -1.730294542037850e+05, - -1.730414957568508e+05, -1.730527745295672e+05, -1.730632986963388e+05, -1.730730763012417e+05, -1.730821152607891e+05, - -1.730904233666238e+05, -1.730980082881414e+05, -1.731048775750431e+05, -1.731110386598216e+05, -1.731164988601863e+05, - -1.731212653814209e+05, -1.731253453186851e+05, -1.731287456592548e+05, -1.731314732847065e+05, -1.731335349730474e+05, - -1.731349374007897e+05, -1.731356871449756e+05, -1.731357906851512e+05, -1.731352544052904e+05, -1.731340845956720e+05, - -1.731322874547129e+05, -1.731298690907539e+05, -1.731268355238025e+05, -1.731231926872353e+05, -1.731189464294585e+05, - -1.731141025155291e+05, -1.731086666287350e+05, -1.731026443721432e+05, -1.730960412701060e+05, -1.730888627697345e+05, - -1.730811142423377e+05, -1.730728009848277e+05, -1.730639282210917e+05, -1.730545011033340e+05, -1.730445247133873e+05, - -1.730340040639903e+05, -1.730229441000423e+05, -1.730113496998254e+05, -1.729992256761990e+05, -1.729865767777704e+05, - -1.729734076900368e+05, -1.729597230365029e+05, -1.729455273797739e+05, -1.729308252226238e+05, -1.729156210090411e+05, - -1.728999191252514e+05, -1.728837239007181e+05, -1.728670396091194e+05, -1.728498704693088e+05, -1.728322206462500e+05, - -1.728140942519350e+05, -1.727954953462809e+05, -1.727764279380101e+05, -1.727568959855095e+05, -1.727369033976724e+05, - -1.727164540347234e+05, -1.726955517090264e+05, -1.726742001858747e+05, -1.726524031842644e+05, -1.726301643776551e+05, - -1.726074873947109e+05, -1.725843758200289e+05, -1.725608331948526e+05, -1.725368630177701e+05, -1.725124687453993e+05, - -1.724876537930572e+05, -1.724624215354197e+05, -1.724367753071643e+05, -1.724107184036017e+05, -1.723842540812969e+05, - -1.723573855586739e+05, -1.723301160166121e+05, -1.723024485990293e+05, -1.722743864134554e+05, -1.722459325315913e+05, - -1.722170899898607e+05, -1.721878617899498e+05, -1.721582508993364e+05, -1.721282602518099e+05, -1.720978927479805e+05, - -1.720671512557783e+05, -1.720360386109454e+05, -1.720045576175167e+05, -1.719727110482910e+05, -1.719405016452968e+05, - -1.719079321202449e+05, -1.718750051549771e+05, -1.718417234019028e+05, -1.718080894844302e+05, -1.717741059973891e+05, - -1.717397755074449e+05, -1.717051005535053e+05, -1.716700836471224e+05, -1.716347272728830e+05, -1.715990338887954e+05, - -1.715630059266681e+05, -1.715266457924818e+05, -1.714899558667544e+05, -1.714529385049012e+05, -1.714155960375851e+05, - -1.713779307710661e+05, -1.713399449875391e+05, -1.713016409454705e+05, -1.712630208799244e+05, -1.712240870028881e+05, - -1.711848415035882e+05, -1.711452865488018e+05, -1.711054242831659e+05, -1.710652568294742e+05, -1.710247862889784e+05, - -1.709840147416761e+05, -1.709429442465982e+05, -1.709015768420894e+05, -1.708599145460874e+05, -1.708179593563929e+05, - -1.707757132509367e+05, -1.707331781880455e+05, -1.706903561066980e+05, -1.706472489267811e+05, -1.706038585493400e+05, - -1.705601868568234e+05, -1.705162357133275e+05, -1.704720069648327e+05, -1.704275024394387e+05, -1.703827239475955e+05, - -1.703376732823291e+05, -1.702923522194666e+05, -1.702467625178545e+05, -1.702009059195748e+05, -1.701547841501587e+05, - -1.701083989187952e+05, -1.700617519185382e+05, -1.700148448265081e+05, -1.699676793040912e+05, -1.699202569971384e+05, - -1.698725795361565e+05, -1.698246485364992e+05, -1.697764655985543e+05, -1.697280323079300e+05, -1.696793502356342e+05, - -1.696304209382551e+05, -1.695812459581371e+05, -1.695318268235532e+05, -1.694821650488778e+05, -1.694322621347532e+05, - -1.693821195682565e+05, -1.693317388230625e+05, -1.692811213596046e+05, -1.692302686252323e+05, -1.691791820543679e+05, - -1.691278630686612e+05, -1.690763130771391e+05, -1.690245334763554e+05, -1.689725256505386e+05, -1.689202909717355e+05, - -1.688678307999538e+05, -1.688151464833045e+05, -1.687622393581380e+05, -1.687091107491822e+05, -1.686557619696770e+05, - -1.686021943215054e+05, -1.685484090953263e+05, -1.684944075707020e+05, -1.684401910162241e+05, -1.683857606896423e+05, - -1.683311178379834e+05, -1.682762636976758e+05, -1.682211994946675e+05, -1.681659264445462e+05, -1.681104457526548e+05, - -1.680547586142054e+05, -1.679988662143945e+05, -1.679427697285129e+05, -1.678864703220566e+05, -1.678299691508362e+05, - -1.677732673610814e+05, -1.677163660895506e+05, -1.676592664636312e+05, -1.676019696014446e+05, -1.675444766119467e+05, - -1.674867885950283e+05, -1.674289066416129e+05, -1.673708318337549e+05, -1.673125652447343e+05, -1.672541079391533e+05, - -1.671954609730272e+05, -1.671366253938785e+05, -1.670776022408264e+05, -1.670183925446776e+05, -1.669589973280133e+05, - -1.668994176052781e+05, -1.668396543828649e+05, -1.667797086592002e+05, -1.667195814248292e+05, -1.666592736624954e+05, - -1.665987863472261e+05, -1.665381204464097e+05, -1.664772769198786e+05, -1.664162567199841e+05, -1.663550607916762e+05, - -1.662936900725796e+05, -1.662321454930694e+05, -1.661704279763453e+05, -1.661085384385041e+05, -1.660464777886149e+05, - -1.659842469287888e+05, -1.659218467542501e+05, -1.658592781534065e+05, -1.657965420079181e+05, -1.657336391927646e+05, - -1.656705705763145e+05, -1.656073370203892e+05, -1.655439393803309e+05, -1.654803785050642e+05, -1.654166552371654e+05, - -1.653527704129187e+05, -1.652887248623848e+05, -1.652245194094587e+05, -1.651601548719318e+05, -1.650956320615524e+05, - -1.650309517840848e+05, -1.649661148393665e+05, -1.649011220213683e+05, -1.648359741182509e+05, -1.647706719124201e+05, - -1.647052161805837e+05, -1.646396076938072e+05, -1.645738472175674e+05, -1.645079355118050e+05, -1.644418733309812e+05, - -1.643756614241269e+05, -1.643093005348962e+05, -1.642427914016175e+05, -1.641761347573441e+05, -1.641093313299036e+05, - -1.640423818419492e+05, -1.639752870110051e+05, -1.639080475495202e+05, -1.638406641649107e+05, -1.637731375596095e+05, - -1.637054684311131e+05, -1.636376574720271e+05, -1.635697053701115e+05, -1.635016128083265e+05, -1.634333804648770e+05 - }, - { - 5.650856773911305e+04, 5.507611813265464e+04, 5.362892795713789e+04, 5.216660804211457e+04, 5.068875304946429e+04, - 4.919494062384540e+04, 4.768473049098781e+04, 4.615766349845439e+04, 4.461326059710691e+04, 4.305102175799836e+04, - 4.147042482095304e+04, 3.987092427038329e+04, 3.825194993378627e+04, 3.661290559822469e+04, 3.495316754000566e+04, - 3.327208296274890e+04, 3.156896833911293e+04, 2.984310765165276e+04, 2.809375052866956e+04, 2.632011027153549e+04, - 2.452136177091806e+04, 2.269663931068698e+04, 2.084503426019686e+04, 1.896559265827250e+04, 1.705731269579969e+04, - 1.511914210863934e+04, 1.314997549900212e+04, 1.114865161193647e+04, 9.113950604819878e+03, 7.044591362515169e+03, - 4.939228930207950e+03, 2.796452161234246e+03, 6.147817101739931e+02, -1.607331455831471e+03, -3.871506803465550e+03, - -6.179433907615366e+03, -8.532870729241768e+03, -1.093363989658008e+04, -1.338362238554822e+04, -1.588474771595184e+04, - -1.843897955345714e+04, -2.104829535304054e+04, -2.371465815691403e+04, -2.643997844263183e+04, -2.922606319467117e+04, - -3.207454894156400e+04, -3.498681495222524e+04, -3.796387243847050e+04, -4.100622567096080e+04, -4.411370175587559e+04, - -4.728524796947298e+04, -5.051869961622734e+04, -5.381052783935015e+04, -5.715558559187029e+04, -6.054687989351335e+04, - -6.397540693331555e+04, -6.743008986809517e+04, -7.089785408264890e+04, -7.436386049265135e+04, -7.781189720047444e+04, - -8.122490923829605e+04, -8.458563039557524e+04, -8.787727180122792e+04, -9.108421642167872e+04, -9.419266401323261e+04, - -9.719116782351924e+04, -1.000710075106382e+05, -1.028263612136320e+05, -1.054542757452662e+05, -1.079544083056938e+05, - -1.103286019096379e+05, -1.125803909654438e+05, -1.147145104872807e+05, -1.167364632081599e+05, -1.186521712747908e+05, - -1.204677161870929e+05, -1.221891563393953e+05, -1.238224055547129e+05, -1.253731558617401e+05, -1.268468306559529e+05, - -1.282485581081486e+05, -1.295831579725005e+05, -1.308551379287884e+05, -1.320686961516094e+05, -1.332277290887990e+05, - -1.343358428198480e+05, -1.353963671488691e+05, -1.364123715686302e+05, -1.373866823535142e+05, -1.383219001432997e+05, - -1.392204174907733e+05, -1.400844359602006e+05, -1.409159824730884e+05, -1.417169246960415e+05, -1.424889853489276e+05, - -1.432337553785198e+05, -1.439527059937697e+05, -1.446471995955117e+05, -1.453184996579740e+05, -1.459677796343690e+05, - -1.465961309663676e+05, -1.472045702793706e+05, -1.477940458438922e+05, -1.483654433793481e+05, -1.489195912710496e+05, - -1.494572652650664e+05, -1.499791926992308e+05, -1.504860563223395e+05, -1.509784977477389e+05, -1.514571205820556e+05, - -1.519224932649554e+05, -1.523751516514533e+05, -1.528156013644325e+05, -1.532443199434154e+05, -1.536617588002004e+05, - -1.540683450274520e+05, -1.544644830396188e+05, -1.548505560892352e+05, -1.552269276599042e+05, -1.555939427494011e+05, - -1.559519290530982e+05, -1.563011980804940e+05, -1.566420460675195e+05, -1.569747550640650e+05, -1.572995936949267e+05, - -1.576168179909375e+05, -1.579266721350948e+05, -1.582293891559923e+05, -1.585251915738415e+05, -1.588142920009422e+05, - -1.590968937001846e+05, -1.593731911067566e+05, -1.596433702486756e+05, -1.599076094233746e+05, -1.601660793400004e+05, - -1.604189436809171e+05, -1.606663594380000e+05, -1.609084772615368e+05, -1.611454417873285e+05, -1.613773919435662e+05, - -1.616044612389318e+05, -1.618267780332455e+05, -1.620444657918864e+05, -1.622576433251104e+05, -1.624664250122254e+05, - -1.626709210181687e+05, -1.628712374865701e+05, -1.630674767329783e+05, -1.632597374214950e+05, -1.634481147326702e+05, - -1.636327005220893e+05, -1.638135834702470e+05, -1.639908492242645e+05, -1.641645805319660e+05, -1.643348573687933e+05, - -1.645017570579998e+05, -1.646653543845405e+05, -1.648257217030435e+05, -1.649829290402147e+05, -1.651370441920173e+05, - -1.652881328159301e+05, -1.654362585185783e+05, -1.655814829390053e+05, -1.657238658278404e+05, -1.658634651225948e+05, - -1.660003370193079e+05, -1.661345360407548e+05, -1.662661151013974e+05, -1.663951255692725e+05, -1.665216173249744e+05, - -1.666456388179024e+05, -1.667672371199090e+05, -1.668864579765012e+05, -1.670033458557174e+05, -1.671179439948059e+05, - -1.672302944448213e+05, -1.673404381132459e+05, -1.674484148047404e+05, -1.675542632601183e+05, -1.676580211936368e+05, - -1.677597253286851e+05, -1.678594114319571e+05, -1.679571143461793e+05, -1.680528680214662e+05, -1.681467055453730e+05, - -1.682386591717066e+05, -1.683287603481564e+05, -1.684170397428018e+05, -1.685035272459442e+05, -1.685882520874418e+05, - -1.686712427229821e+05, -1.687525269466217e+05, -1.688321318902684e+05, -1.689100840444775e+05, -1.689864092784447e+05, - -1.690611328592317e+05, -1.691342794702594e+05, -1.692058732291039e+05, -1.692759377046201e+05, -1.693444959334302e+05, - -1.694115704358000e+05, -1.694771832309327e+05, -1.695413558517013e+05, -1.696041093588500e+05, -1.696654643546821e+05, - -1.697254409962578e+05, -1.697840590081236e+05, -1.698413376945928e+05, -1.698972959515929e+05, -1.699519522781047e+05, - -1.700053247871997e+05, -1.700574312167035e+05, -1.701082889394918e+05, -1.701579149734361e+05, -1.702063259910189e+05, - -1.702535383286203e+05, -1.702995679955004e+05, -1.703444306824824e+05, -1.703881417703511e+05, -1.704307163379761e+05, - -1.704721691701727e+05, -1.705125147653080e+05, -1.705517673426645e+05, -1.705899408495675e+05, -1.706270489682883e+05, - -1.706631051227287e+05, -1.706981224848982e+05, -1.707321139811892e+05, -1.707650922984561e+05, -1.707970698899117e+05, - -1.708280589808397e+05, -1.708580715741369e+05, -1.708871194556858e+05, -1.709152141995664e+05, -1.709423671731153e+05, - -1.709685895418304e+05, -1.709938922741342e+05, -1.710182861459967e+05, -1.710417817454228e+05, -1.710643894768107e+05, - -1.710861195651844e+05, -1.711069820603025e+05, -1.711269868406594e+05, -1.711461436173565e+05, -1.711644619378791e+05, - -1.711819511897626e+05, -1.711986206041542e+05, -1.712144792592787e+05, -1.712295360838079e+05, -1.712437998601383e+05, - -1.712572792275778e+05, -1.712699826854471e+05, -1.712819185960988e+05, -1.712930951878527e+05, -1.713035205578535e+05, - -1.713132026748557e+05, -1.713221493819304e+05, -1.713303683991039e+05, -1.713378673259265e+05, -1.713446536439755e+05, - -1.713507347192905e+05, -1.713561178047509e+05, -1.713608100423871e+05, -1.713648184656367e+05, -1.713681500015433e+05, - -1.713708114728974e+05, -1.713728096003249e+05, -1.713741510043252e+05, -1.713748422072559e+05, -1.713748896352702e+05, - -1.713742996202055e+05, -1.713730784014277e+05, -1.713712321276272e+05, -1.713687668585763e+05, -1.713656885668384e+05, - -1.713620031394415e+05, -1.713577163795076e+05, -1.713528340078468e+05, -1.713473616645108e+05, -1.713413049103109e+05, - -1.713346692283020e+05, -1.713274600252292e+05, -1.713196826329428e+05, -1.713113423097792e+05, -1.713024442419116e+05, - -1.712929935446691e+05, -1.712829952638239e+05, -1.712724543768533e+05, -1.712613757941695e+05, -1.712497643603226e+05, - -1.712376248551789e+05, -1.712249619950695e+05, -1.712117804339162e+05, -1.711980847643310e+05, -1.711838795186924e+05, - -1.711691691701966e+05, -1.711539581338881e+05, -1.711382507676653e+05, -1.711220513732674e+05, -1.711053641972369e+05, - -1.710881934318636e+05, -1.710705432161078e+05, -1.710524176365040e+05, -1.710338207280454e+05, -1.710147564750496e+05, - -1.709952288120069e+05, -1.709752416244098e+05, -1.709547987495656e+05, -1.709339039773936e+05, -1.709125610512035e+05, - -1.708907736684587e+05, -1.708685454815257e+05, -1.708458800984053e+05, -1.708227810834512e+05, -1.707992519580736e+05, - -1.707752962014278e+05, -1.707509172510896e+05, -1.707261185037181e+05, -1.707009033157027e+05, -1.706752750038010e+05, - -1.706492368457615e+05, -1.706227920809342e+05, -1.705959439108697e+05, -1.705686954999077e+05, -1.705410499757525e+05, - -1.705130104300382e+05, -1.704845799188822e+05, -1.704557614634297e+05, -1.704265580503854e+05, -1.703969726325385e+05, - -1.703670081292729e+05, -1.703366674270740e+05, -1.703059533800188e+05, -1.702748688102636e+05, -1.702434165085181e+05, - -1.702115992345120e+05, -1.701794197174538e+05, -1.701468806564801e+05, -1.701139847210963e+05, -1.700807345516113e+05, - -1.700471327595612e+05, -1.700131819281281e+05, -1.699788846125490e+05, -1.699442433405200e+05, -1.699092606125904e+05, - -1.698739389025508e+05, -1.698382806578162e+05, -1.698022882997982e+05, -1.697659642242746e+05, -1.697293108017505e+05, - -1.696923303778131e+05, -1.696550252734803e+05, -1.696173977855438e+05, -1.695794501869061e+05, -1.695411847269108e+05, - -1.695026036316681e+05, -1.694637091043746e+05, -1.694245033256262e+05, -1.693849884537295e+05, -1.693451666250018e+05, - -1.693050399540719e+05, -1.692646105341723e+05, -1.692238804374277e+05, -1.691828517151385e+05, -1.691415263980590e+05, - -1.690999064966718e+05, -1.690579940014576e+05, -1.690157908831600e+05, -1.689732990930449e+05, -1.689305205631586e+05, - -1.688874572065788e+05, -1.688441109176629e+05, -1.688004835722914e+05, -1.687565770281088e+05, -1.687123931247584e+05, - -1.686679336841163e+05, -1.686232005105177e+05, -1.685781953909828e+05, -1.685329200954384e+05, -1.684873763769356e+05, - -1.684415659718624e+05, -1.683954906001567e+05, -1.683491519655122e+05, -1.683025517555833e+05, -1.682556916421865e+05, - -1.682085732814969e+05, -1.681611983142448e+05, -1.681135683659062e+05, -1.680656850468908e+05, -1.680175499527304e+05, - -1.679691646642600e+05, -1.679205307477982e+05, -1.678716497553244e+05, -1.678225232246544e+05, -1.677731526796121e+05, - -1.677235396301980e+05, -1.676736855727579e+05, -1.676235919901458e+05, -1.675732603518858e+05, -1.675226921143326e+05, - -1.674718887208274e+05, -1.674208516018534e+05, -1.673695821751881e+05, -1.673180818460539e+05, -1.672663520072646e+05, - -1.672143940393720e+05, -1.671622093108110e+05, -1.671097991780385e+05, -1.670571649856754e+05, -1.670043080666419e+05, - -1.669512297422937e+05, -1.668979313225567e+05, -1.668444141060571e+05, -1.667906793802515e+05, -1.667367284215543e+05, - -1.666825624954650e+05, -1.666281828566906e+05, -1.665735907492700e+05, -1.665187874066928e+05, -1.664637740520194e+05, - -1.664085518979981e+05, -1.663531221471809e+05, -1.662974859920371e+05, -1.662416446150656e+05, -1.661855991889072e+05, - -1.661293508764519e+05, -1.660729008309484e+05, -1.660162501961091e+05, -1.659594001062171e+05, -1.659023516862260e+05, - -1.658451060518659e+05, -1.657876643097414e+05, -1.657300275574315e+05, -1.656721968835880e+05, -1.656141733680324e+05, - -1.655559580818489e+05, -1.654975520874804e+05, -1.654389564388221e+05, -1.653801721813102e+05, -1.653212003520146e+05, - -1.652620419797255e+05, -1.652026980850450e+05, -1.651431696804692e+05, -1.650834577704776e+05, -1.650235633516155e+05, - -1.649634874125778e+05, -1.649032309342911e+05, -1.648427948899955e+05, -1.647821802453238e+05, -1.647213879583804e+05, - -1.646604189798215e+05, -1.645992742529283e+05, -1.645379547136868e+05, -1.644764612908604e+05, -1.644147949060655e+05, - -1.643529564738424e+05, -1.642909469017303e+05, -1.642287670903370e+05, -1.641664179334095e+05, -1.641039003179030e+05, - -1.640412151240500e+05, -1.639783632254295e+05, -1.639153454890301e+05, -1.638521627753191e+05, -1.637888159383080e+05, - -1.637253058256144e+05, -1.636616332785276e+05, -1.635977991320703e+05, -1.635338042150615e+05, -1.634696493501774e+05, - -1.634053353540117e+05, -1.633408630371354e+05, -1.632762332041561e+05, -1.632114466537758e+05, -1.631465041788495e+05, - -1.630814065664403e+05, -1.630161545978776e+05, -1.629507490488109e+05, -1.628851906892663e+05, -1.628194802836993e+05, - -1.627536185910490e+05, -1.626876063647899e+05, -1.626214443529870e+05, -1.625551332983438e+05, -1.624886739382561e+05, - -1.624220670048602e+05, -1.623553132250842e+05, -1.622884133206979e+05, -1.622213680083585e+05, -1.621541779996621e+05, - -1.620868440011892e+05, -1.620193667145515e+05, -1.619517468364395e+05, -1.618839850586674e+05, -1.618160820682193e+05 - }, - { - 5.741626228520098e+04, 5.599296787179508e+04, 5.455522675363980e+04, 5.310266408009524e+04, 5.163488976903445e+04, - 5.015149773113826e+04, 4.865206504877997e+04, 4.713615110479181e+04, 4.560329666013728e+04, 4.405302287604062e+04, - 4.248483027778000e+04, 4.089819765673283e+04, 3.929258090727025e+04, 3.766741179508180e+04, 3.602209665355594e+04, - 3.435601500496624e+04, 3.266851810344643e+04, 3.095892739711074e+04, 2.922653290723699e+04, 2.747059152323202e+04, - 2.569032521321649e+04, 2.388491915159335e+04, 2.205351976701679e+04, 2.019523271691422e+04, 1.830912079832606e+04, - 1.639420180956868e+04, 1.444944638341992e+04, 1.247377582058252e+04, 1.046605996263347e+04, 8.425115157182943e+03, - 6.349702385418599e+03, 4.238525644683012e+03, 2.090230707629011e+03, -9.659558343118135e+01, -2.323425286246430e+03, - -4.591788296570403e+03, -6.903269977598807e+03, -9.259506956067309e+03, -1.166218057804869e+04, -1.411300728255687e+04, - -1.661372498412828e+04, -1.916607430805103e+04, -2.177177328961081e+04, -2.443248367405961e+04, -2.714976679641737e+04, - -2.992502642566632e+04, -3.275943570700898e+04, -3.565384506931819e+04, -3.860866802100338e+04, -4.162374235605820e+04, - -4.469816578111260e+04, -4.783010777309738e+04, -5.101660394554744e+04, -5.425334540140365e+04, -5.753448289741818e+04, - -6.085247261380511e+04, -6.419799449861069e+04, -6.755997293228804e+04, -7.092572131586999e+04, -7.428121793428986e+04, - -7.761150343576216e+04, -8.090117500902405e+04, -8.413494210400955e+04, -8.729820365283200e+04, -9.037760507518030e+04, - -9.336153283096445e+04, -9.624050510447998e+04, -9.900742225889362e+04, -1.016576502009381e+05, -1.041889659033896e+05, - -1.066013347917434e+05, -1.088965478858790e+05, -1.110778164028392e+05, -1.131493715212430e+05, -1.151161093626967e+05, - -1.169833017467753e+05, -1.187563765289645e+05, -1.204407603134150e+05, -1.220417713384050e+05, -1.235645496470805e+05, - -1.250140134503774e+05, -1.263948332801349e+05, -1.277114181542907e+05, -1.289679098353395e+05, -1.301681833171580e+05, - -1.313158512278023e+05, -1.324142719005034e+05, -1.334665598462885e+05, -1.344755980886968e+05, -1.354440517384964e+05, - -1.363743822726692e+05, -1.372688620591772e+05, -1.381295887510403e+05, -1.389584992564265e+05, -1.397573830703926e+05, - -1.405278948243682e+05, -1.412715659690346e+05, -1.419898155540813e+05, -1.426839601048643e+05, -1.433552226224174e+05, - -1.440047407511566e+05, -1.446335741696029e+05, -1.452427112651524e+05, -1.458330751556783e+05, -1.464055291197678e+05, - -1.469608814945827e+05, -1.474998900964033e+05, -1.480232662144080e+05, -1.485316782235339e+05, -1.490257548576008e+05, - -1.495060881794549e+05, -1.499732362825684e+05, -1.504277257418864e+05, -1.508700538676865e+05, -1.513006907464742e+05, - -1.517200811182162e+05, -1.521286460953713e+05, -1.525267847412331e+05, -1.529148755212668e+05, -1.532932776395583e+05, - -1.536623322963819e+05, -1.540223637215716e+05, -1.543736803886949e+05, -1.547165758760137e+05, -1.550513297977422e+05, - -1.553782086406244e+05, -1.556974665407002e+05, -1.560093460059896e+05, -1.563140785883720e+05, -1.566118855079601e+05, - -1.569029782357542e+05, -1.571875590371517e+05, -1.574658213882255e+05, -1.577379507626675e+05, -1.580041246658122e+05, - -1.582645132905500e+05, -1.585192798515840e+05, -1.587685809492447e+05, -1.590125669106310e+05, -1.592513821097064e+05, - -1.594851652678531e+05, -1.597140497362588e+05, -1.599381637614078e+05, -1.601576307337387e+05, -1.603725694272915e+05, - -1.605830942141386e+05, -1.607893152779234e+05, -1.609913388094253e+05, -1.611892671922622e+05, -1.613831991782108e+05, - -1.615732300528134e+05, -1.617594517918968e+05, -1.619419532095786e+05, -1.621208200982985e+05, -1.622961353613731e+05, - -1.624679791385358e+05, -1.626364289248925e+05, -1.628015596836946e+05, -1.629634439533024e+05, -1.631221519486850e+05, - -1.632777516577799e+05, -1.634303089330216e+05, -1.635798875783083e+05, -1.637265494316851e+05, -1.638703544439768e+05, - -1.640113607536111e+05, -1.641496247578383e+05, -1.642852011805583e+05, -1.644181431369343e+05, -1.645485021949773e+05, - -1.646763284342649e+05, -1.648016705019492e+05, -1.649245756661976e+05, -1.650450898672099e+05, -1.651632577659353e+05, - -1.652791227906099e+05, -1.653927271812327e+05, -1.655041120320814e+05, -1.656133173323753e+05, -1.657203820051736e+05, - -1.658253439446020e+05, -1.659282400514923e+05, -1.660291062675110e+05, -1.661279776078555e+05, -1.662248881925858e+05, - -1.663198712766597e+05, -1.664129592787335e+05, -1.665041838087880e+05, -1.665935756711687e+05, -1.666811649824038e+05, - -1.667669810592652e+05, -1.668510525317119e+05, -1.669334073434052e+05, -1.670140727733665e+05, -1.670930754567963e+05, - -1.671704414050909e+05, -1.672461960250950e+05, -1.673203641376248e+05, -1.673929699952888e+05, -1.674640372996482e+05, - -1.675335892177329e+05, -1.676016483979541e+05, -1.676682369854280e+05, -1.677333766367458e+05, -1.677970885342078e+05, - -1.678593933995460e+05, -1.679203115071571e+05, -1.679798626968695e+05, -1.680380663862542e+05, -1.680949415825134e+05, - -1.681505068939491e+05, -1.682047805410400e+05, -1.682577803671369e+05, -1.683095238487933e+05, -1.683600281057482e+05, - -1.684093099105704e+05, -1.684573856979835e+05, -1.685042715738782e+05, -1.685499833240291e+05, -1.685945364225253e+05, - -1.686379460399259e+05, -1.686802270511522e+05, -1.687213940431238e+05, -1.687614613221528e+05, -1.688004429211014e+05, - -1.688383526063156e+05, -1.688752038843357e+05, -1.689110100084046e+05, -1.689457839847685e+05, -1.689795385787858e+05, - -1.690122863208477e+05, -1.690440395121193e+05, -1.690748102301052e+05, -1.691046103340491e+05, -1.691334514701713e+05, - -1.691613450767478e+05, -1.691883023890440e+05, -1.692143344440977e+05, -1.692394520853666e+05, -1.692636659672365e+05, - -1.692869865594032e+05, -1.693094241511255e+05, -1.693309888553570e+05, -1.693516906127606e+05, -1.693715391956086e+05, - -1.693905442115795e+05, -1.694087151074338e+05, -1.694260611726027e+05, -1.694425915426702e+05, -1.694583152027605e+05, - -1.694732409908322e+05, -1.694873776008841e+05, -1.695007335860731e+05, -1.695133173617480e+05, -1.695251372084024e+05, - -1.695362012745494e+05, -1.695465175795194e+05, -1.695560940161841e+05, -1.695649383536078e+05, -1.695730582396331e+05, - -1.695804612033964e+05, -1.695871546577774e+05, -1.695931459017905e+05, -1.695984421229086e+05, -1.696030503993342e+05, - -1.696069777022064e+05, -1.696102308977591e+05, -1.696128167494205e+05, -1.696147419198609e+05, -1.696160129729903e+05, - -1.696166363759084e+05, -1.696166185008026e+05, -1.696159656268036e+05, -1.696146839417932e+05, -1.696127795441700e+05, - -1.696102584445705e+05, -1.696071265675528e+05, -1.696033897532344e+05, -1.695990537588969e+05, -1.695941242605481e+05, - -1.695886068544502e+05, -1.695825070586121e+05, -1.695758303142449e+05, -1.695685819871848e+05, -1.695607673692848e+05, - -1.695523916797703e+05, -1.695434600665686e+05, -1.695339776076044e+05, -1.695239493120667e+05, -1.695133801216493e+05, - -1.695022749117601e+05, -1.694906384927059e+05, -1.694784756108494e+05, -1.694657909497408e+05, -1.694525891312255e+05, - -1.694388747165258e+05, -1.694246522073009e+05, -1.694099260466796e+05, -1.693947006202780e+05, -1.693789802571873e+05, - -1.693627692309459e+05, -1.693460717604875e+05, -1.693288920110705e+05, -1.693112340951886e+05, -1.692931020734586e+05, - -1.692744999554937e+05, -1.692554317007557e+05, -1.692359012193916e+05, -1.692159123730489e+05, -1.691954689756791e+05, - -1.691745747943223e+05, -1.691532335498735e+05, -1.691314489178368e+05, -1.691092245290634e+05, -1.690865639704723e+05, - -1.690634707857596e+05, -1.690399484760909e+05, -1.690160005007826e+05, -1.689916302779673e+05, -1.689668411852452e+05, - -1.689416365603274e+05, -1.689160197016603e+05, -1.688899938690422e+05, -1.688635622842257e+05, -1.688367281315095e+05, - -1.688094945583188e+05, -1.687818646757720e+05, -1.687538415592398e+05, -1.687254282488931e+05, -1.686966277502368e+05, - -1.686674430346392e+05, -1.686378770398456e+05, -1.686079326704878e+05, -1.685776127985784e+05, -1.685469202639993e+05, - -1.685158578749828e+05, -1.684844284085778e+05, -1.684526346111124e+05, -1.684204791986480e+05, -1.683879648574202e+05, - -1.683550942442776e+05, -1.683218699871089e+05, -1.682882946852637e+05, -1.682543709099636e+05, -1.682201012047105e+05, - -1.681854880856806e+05, -1.681505340421194e+05, -1.681152415367225e+05, -1.680796130060143e+05, -1.680436508607168e+05, - -1.680073574861147e+05, -1.679707352424134e+05, -1.679337864650873e+05, -1.678965134652281e+05, -1.678589185298814e+05, - -1.678210039223811e+05, -1.677827718826764e+05, -1.677442246276529e+05, -1.677053643514489e+05, -1.676661932257678e+05, - -1.676267134001807e+05, -1.675869270024295e+05, -1.675468361387191e+05, -1.675064428940109e+05, -1.674657493323049e+05, - -1.674247574969228e+05, -1.673834694107821e+05, -1.673418870766681e+05, -1.673000124775003e+05, -1.672578475765957e+05, - -1.672153943179245e+05, -1.671726546263663e+05, -1.671296304079588e+05, -1.670863235501424e+05, -1.670427359220032e+05, - -1.669988693745098e+05, -1.669547257407468e+05, -1.669103068361459e+05, -1.668656144587102e+05, -1.668206503892398e+05, - -1.667754163915472e+05, -1.667299142126778e+05, -1.666841455831167e+05, -1.666381122170009e+05, -1.665918158123250e+05, - -1.665452580511415e+05, -1.664984405997622e+05, -1.664513651089518e+05, -1.664040332141240e+05, -1.663564465355295e+05, - -1.663086066784417e+05, -1.662605152333445e+05, -1.662121737761115e+05, -1.661635838681844e+05, -1.661147470567497e+05, - -1.660656648749111e+05, -1.660163388418612e+05, -1.659667704630485e+05, -1.659169612303424e+05, -1.658669126221984e+05, - -1.658166261038158e+05, -1.657661031272977e+05, -1.657153451318064e+05, -1.656643535437156e+05, -1.656131297767638e+05, - -1.655616752322017e+05, -1.655099912989389e+05, -1.654580793536892e+05, -1.654059407611130e+05, -1.653535768739572e+05, - -1.653009890331931e+05, -1.652481785681550e+05, -1.651951467966722e+05, -1.651418950252022e+05, -1.650884245489612e+05, - -1.650347366520537e+05, -1.649808326075975e+05, -1.649267136778504e+05, -1.648723811143327e+05, -1.648178361579484e+05, - -1.647630800391058e+05, -1.647081139778346e+05, -1.646529391839028e+05, -1.645975568569328e+05, -1.645419681865112e+05, - -1.644861743523042e+05, -1.644301765241653e+05, -1.643739758622454e+05, -1.643175735170972e+05, -1.642609706297844e+05, - -1.642041683319826e+05, -1.641471677460842e+05, -1.640899699852986e+05, -1.640325761537520e+05, -1.639749873465867e+05, - -1.639172046500572e+05, -1.638592291416279e+05, -1.638010618900650e+05, -1.637427039555330e+05, -1.636841563896841e+05, - -1.636254202357500e+05, -1.635664965286329e+05, -1.635073862949915e+05, -1.634480905533301e+05, -1.633886103140833e+05, - -1.633289465797032e+05, -1.632691003447404e+05, -1.632090725959289e+05, -1.631488643122670e+05, -1.630884764650976e+05, - -1.630279100181895e+05, -1.629671659278122e+05, -1.629062451428180e+05, -1.628451486047158e+05, -1.627838772477461e+05, - -1.627224319989578e+05, -1.626608137782800e+05, -1.625990234985958e+05, -1.625370620658128e+05, -1.624749303789346e+05, - -1.624126293301320e+05, -1.623501598048090e+05, -1.622875226816741e+05, -1.622247188328057e+05, -1.621617491237190e+05, - -1.620986144134322e+05, -1.620353155545309e+05, -1.619718533932313e+05, -1.619082287694452e+05, -1.618444425168403e+05, - -1.617804954629040e+05, -1.617163884290034e+05, -1.616521222304438e+05, -1.615876976765313e+05, -1.615231155706285e+05, - -1.614583767102148e+05, -1.613934818869419e+05, -1.613284318866917e+05, -1.612632274896306e+05, -1.611978694702662e+05, - -1.611323585975020e+05, -1.610666956346886e+05, -1.610008813396812e+05, -1.609349164648881e+05, -1.608688017573257e+05, - -1.608025379586670e+05, -1.607361258052957e+05, -1.606695660283536e+05, -1.606028593537911e+05, -1.605360065024160e+05, - -1.604690081899425e+05, -1.604018651270380e+05, -1.603345780193713e+05, -1.602671475676586e+05, -1.601995744677101e+05 - } -}; - -typedef TabulatedCO2Properties< TabulatedEnthalpyTraits > TabulatedEnthalpy; - - -// this class collects all the tabulated quantities in one convenient place -struct CO2Tables { - static const TabulatedEnthalpy tabulatedEnthalpy; - static const TabulatedDensity tabulatedDensity; -}; - -const TabulatedEnthalpy CO2Tables::tabulatedEnthalpy; -const TabulatedDensity CO2Tables::tabulatedDensity; - diff --git a/test/geomechanics/el2p/el2pco2tables.hh b/test/geomechanics/el2p/el2pco2tables.hh deleted file mode 100644 index 74b3a6f958278623fc586bb433f50a383e7ffaff..0000000000000000000000000000000000000000 --- a/test/geomechanics/el2p/el2pco2tables.hh +++ /dev/null @@ -1,40 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/** - * \file - * - * \brief Provides the class with the tabulated values of CO2 - */ -#ifndef DUMUX_EL2P_CO2TABLES_HH -#define DUMUX_EL2P_CO2TABLES_HH - -#include <cassert> -#include <dumux/material/components/co2tablereader.hh> - -namespace Dumux -{ -namespace El2P -{ -// the real work is done by some external program which provides -// ready-to-use tables. -#include "co2values.inc" -} -} - -#endif diff --git a/test/geomechanics/el2p/el2pproblem.hh b/test/geomechanics/el2p/el2pproblem.hh deleted file mode 100644 index f87399f2e411b405035e2678850471f5f6ffaa60..0000000000000000000000000000000000000000 --- a/test/geomechanics/el2p/el2pproblem.hh +++ /dev/null @@ -1,858 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/** - * \file - * \brief Definition of a problem, for the two-phase flow linear elasticity problem: - * Problem definition for the deformation of an elastic solid. - */ -#ifndef DUMUX_EL2P_TESTPROBLEM_HH -#define DUMUX_EL2P_TESTPROBLEM_HH - -#include <dune/pdelab/finiteelementmap/qkfem.hh> - -#include <dumux/material/fluidsystems/brineco2.hh> -#include <dumux/porousmediumflow/implicit/problem.hh> -#include <dumux/geomechanics/el2p/model.hh> -#include <dumux/geomechanics/el2p/amgbackend.hh> - -#include "el2pco2tables.hh" -#include "el2pspatialparams.hh" - -#include <dune/common/version.hh> - -namespace Dumux -{ -template<class TypeTag> -class El2P_TestProblem; - - -// initial conditions for momentum balance equation -template<class TypeTag, int dim> -class InitialDisplacement; - -// initial conditions for mass balance equations -template<class TypeTag> -class InitialPressSat; - -namespace Properties { -NEW_TYPE_TAG(El2P_TestProblem, INHERITS_FROM(BoxModel, BoxElasticTwoP, El2PSpatialParams)); -NEW_PROP_TAG(InitialDisplacement); //!< The initial displacement function -NEW_PROP_TAG(InitialPressSat); //!< The initial pressure and saturation function - -// Set the grid type -SET_TYPE_PROP(El2P_TestProblem, Grid, Dune::YaspGrid<3>); - - -SET_PROP(El2P_TestProblem, PressureFEM) -{ - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - -public: - typedef Dune::PDELab::QkLocalFiniteElementMap<GridView,Scalar,Scalar,1> type; -}; - -SET_PROP(El2P_TestProblem, DisplacementFEM) -{ - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - -public: - typedef Dune::PDELab::QkLocalFiniteElementMap<GridView,Scalar,Scalar,1> type; -}; - -// Set the problem property -SET_TYPE_PROP(El2P_TestProblem, Problem, El2P_TestProblem<TypeTag>); - -// Set fluid configuration -SET_PROP(El2P_TestProblem, FluidSystem) -{ - typedef BrineCO2FluidSystem<TypeTag> type; -}; - -// Set the CO2 table to be used; in this case not the the default table -SET_TYPE_PROP(El2P_TestProblem, CO2Table, El2P::CO2Tables); -// Set the salinity mass fraction of the brine in the reservoir -SET_SCALAR_PROP(El2P_TestProblem, ProblemSalinity, 1e-1); - -// Set the soil properties -SET_TYPE_PROP(El2P_TestProblem, SpatialParams, El2PSpatialParams<TypeTag>); - -// Set the initial displacement function -SET_PROP(El2P_TestProblem, InitialDisplacement) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - enum{dim = GridView::dimension}; -public: - typedef InitialDisplacement<TypeTag, dim> type; -}; - -// Set the initial pressure and saturation function -SET_PROP(El2P_TestProblem, InitialPressSat) -{ -private: - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; -public: - typedef InitialPressSat<TypeTag> type; -}; - -SET_SCALAR_PROP(El2P_TestProblem, NewtonMaxRelativeShift, 1e-5); - -// use the algebraic multigrid -SET_TYPE_PROP(El2P_TestProblem, LinearSolver, El2PAMGBackend<TypeTag>); - -// central differences to calculate the jacobian by default -SET_INT_PROP(El2P_TestProblem, ImplicitNumericDifferenceMethod, 0); - -// write the stress and displacement output according to rock mechanics -// sign convention (compressive stresses > 0) -SET_BOOL_PROP(El2P_TestProblem, VtkRockMechanicsSignConvention, true); -} - -/*! - * \ingroup ElTwoPBoxProblems - * - * \brief Problem definition for a two-phase flow process - * in an elastic deformable matrix. - * - * This problem simulates an injection of CO2 into the center of a cube with 1000 m x 1000 m x 1000 m - * dimension. The bottom boundary of this cube is in 2000 m depth. The initialization period is 1e6 s, - * the real injection period is 1e6 s, the initial timestep is 10 s. - * Apart from the pressure and the saturation distribution this problems solves for the changes in - * solid displacement (ux, uy, uz [m]) due to injection. Based on the solid displacement vector - * the injection-induced changes in the strain and stress tensors are evaluated. - * Further the porosity and permeability are functions of the solid displacement. - * - * During an initialization period of length tInit [s] the pressure field is initialized. - * - * After the initialization the real simulation starts and the pressure field from the initialization - * period is applied as initial condition and for the definition of the lateral Dirichlet - * boundary conditions. The solid displacement field is set to zero and the CO2 injection is started. - */ -template<class TypeTag = TTAG(El2P_TestProblem)> -class El2P_TestProblem : public ImplicitPorousMediaProblem<TypeTag> -{ - typedef ImplicitPorousMediaProblem<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Grid) Grid; - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - - enum { - // Grid and world dimension - dim = GridView::dimension, - dimWorld = GridView::dimensionworld, - }; - - enum { - // indices of the primary variables - pressureIdx = Indices::pwIdx, - saturationIdx = Indices::snIdx, - uxIdx = Indices::uxIdx, - uyIdx = Indices::uyIdx, - uzIdx = Indices::uzIdx - - }; - enum { - // indices of the equations+ - contiWEqIdx = Indices::contiWEqIdx, - contiNEqIdx = Indices::contiNEqIdx - }; - - - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; - typedef typename GET_PROP_TYPE(TypeTag, GridCreator) GridCreator; - typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; - - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename GridView::template Codim<dim>::Entity Vertex; - typedef typename GridView::Intersection Intersection; - typedef typename GET_PROP_TYPE(TypeTag, VertexMapper) VertexMapper; - - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename Grid::ctype CoordScalar; - typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; - typedef Dune::BlockVector<GlobalPosition> InitialStressField; - - typedef typename GET_PROP_TYPE(TypeTag, LocalFEMSpace) LocalFEMSpace; - typedef typename GET_PROP_TYPE(TypeTag, PTAG(Problem)) Problem; - - typedef typename GET_PROP_TYPE(TypeTag, CO2Table) CO2Table; - typedef Dumux::CO2<Scalar, CO2Table> CO2; - -public: - /*! - * \brief The constructor - * - * \param timeManager The time manager - * \param gridView The grid view - */ - El2P_TestProblem(TimeManager &timeManager, - const GridView &gridView) - : ParentType(timeManager, gridView), - gridView_(gridView) - { - std::cout << "El2P_TestProblem: Initializing the fluid system for the el2p model\n"; - - // initialize the tables of the fluid system -// FluidSystem::init(/*Tmin=*/273, -// /*Tmax=*/400, -// /*nT=*/120, -// /*pmin=*/1e5, -// /*pmax=*/1e8, -// /*np=*/200); - - // resize the pressure field vector with the number of vertices - pInit_.resize(gridView.size(dim)); - // fill the pressure field vector with zeros - std::fill( pInit_.begin(), pInit_.end(), 0.0 ); - - // variable which determines if output should be written (initially set to false) - output_ = false; - // define if current run is initialization run - // (initially set to true, will be set to false if initialization is over) - initializationRun_ = true; - // defines if feedback from geomechanics on flow is taken into account or not - // (usually the coupling is switched off for the initialization run) - coupled_ = false; - // set initial episode length equal to length of initialization period - Scalar tInitEnd = GET_RUNTIME_PARAM(TypeTag, Scalar,TimeManager.TInitEnd); - this->timeManager().startNextEpisode(tInitEnd); - // transfer the episode index to spatial parameters - // (during intialization episode hydraulic different parameters might be applied) - this->spatialParams().setEpisode(this->timeManager().episodeIndex()); - - depthBOR_ = GET_RUNTIME_PARAM(TypeTag, Scalar, Injection.DepthBOR); - episodeLength_ = GET_RUNTIME_PARAM(TypeTag, Scalar, TimeManager.EpisodeLength); - - dt_ = GET_RUNTIME_PARAM(TypeTag, Scalar, TimeManager.DtInitial); - } - - void init() - { - if (this->timeManager().time() < 1e-8) - { - // set the initial approximated hydrostatic pressure distribution - // based on an averaged brine density - // or based on a pressure polynomial - this->initializePressure(); - // output is written - this->setOutput(true); - } - - ParentType::init(); - } - - // note: pInit is < 0 (just due to geomechanics sign convention applied here) - // initialize the pressure field for initialization run - // first an approximate hydrostatic pressure field is calculated based on an - // averaged density. Then the model runs for the initialization period and - // calculates the real hydrostatic pressure distribution based on the real - // density distribution. The calculated pressure field is than applied for - // initialization of the actual model run and for the pressure Dirichlet boundary values. - - void initializePressure() - { - for(const auto& vertex : vertices(gridView_)) - { - int vIdxGlobal = this->vertexMapper().index(vertex); - GlobalPosition globalPos = vertex.geometry().corner(0); - - // initial approximate pressure distribution at start of initialization run - pInit_[vIdxGlobal] = -(1.013e5 + (depthBOR_ - globalPos[dimWorld-1]) * brineDensity_ * 9.81); - } - } - - // allows to change the coupled_ variable which defines if geomechanical feedback on flow is taken - // into account - void setCoupled(bool coupled) - { - coupled_ = coupled; - } - - // returns the coupled_ variable which defines if geomechanical feedback on flow is taken - // into account - bool coupled() const - { - return coupled_; - } - - // allows to change the output_ variable which defines if output is written - void setOutput(bool output) - { - output_ = output; - } - - // note: pInit is < 0 (just due to geomechanics sign convention applied here) - // function which is called after the initialization run in - // order to fill the pressure field vector pInit_ with the - // pressure result of the initialization - void setPressure() - { - initializationRun_ = false; // initialization run is now finished - - this->setInitializationRun(initializationRun_); - std::cout<<"El2P_TestProblem: initialized pressure field copied to pInit_"<<std::endl; - for(const auto& vertex : vertices(gridView_)) - { - int vIdxGlobal = this->vertexMapper().index(vertex); - pInit_[vIdxGlobal] = -this->model().curSol().base()[vIdxGlobal*2][0]; - } - } - - // returns the initializationRun_ variable which defines if this is an initialization run - bool initializationRun() - { - return initializationRun_; - } - - // allows to set the initializationRun_ variable which defines if this is an initialization run - void setInitializationRun(bool initializationRun) - { - initializationRun_ = initializationRun; - } - - // function which returns an in-situ stress field that needs to be provided - // for the principal stress calculation - GlobalPosition initialStress(const GlobalPosition globalPos, const int dofIdxGlobal) const - { - GlobalPosition stress; - Scalar porosity, rockDensity, gravity; - gravity = -this->gravity()[dimWorld-1]; - porosity = this->spatialParams().porosity(globalPos); - rockDensity = this->spatialParams().rockDensity(globalPos); - - // initial total stress field here assumed to be isotropic, lithostatic - stress[0] = brineDensity_ * porosity * gravity * (depthBOR_ - globalPos[dim-1]) - + (1 - porosity) * rockDensity * gravity * (depthBOR_ - globalPos[dim-1]); - if(dim >=2) - stress[1] = brineDensity_ * porosity * gravity * (depthBOR_ - globalPos[dim-1]) - + (1 - porosity) * rockDensity * gravity * (depthBOR_ - globalPos[dim-1]); - if(dim == 3) - stress[2] = brineDensity_ * porosity * gravity * (depthBOR_ - globalPos[dim-1]) - + (1 - porosity) * rockDensity * gravity * (depthBOR_ - globalPos[dim-1]); - - return stress; - } - /*! - * \name Problem parameters - */ - // \{ - - /*! - * \brief The problem name. - * - * This is used as a prefix for files generated by the simulation. - */ - std::string name() const - { - return "el2p"; - } - - /*! - * \brief Returns the temperature within the domain. - * - * This problem assumes a temperature of 10 degrees Celsius at the ground surface - * and a geothermal gradient of 0.03 K/m. - */ - Scalar temperatureAtPos(const GlobalPosition &globalPos) const - { - Scalar T; - T = 283.15 + (depthBOR_ - globalPos[dimWorld-1]) * 0.03; - - return T; - }; - - - // returns the bottom of reservoir value (depth in m) - const Scalar depthBOR() const - { - return depthBOR_; - } - - // note: pInit is < 0 (just due to geomechanics sign convention applied here) - // function which returns the initialized pressure at an arbitrary location within the element - // called from finite element method (el2plocaloperator.hh) and evaluated at Gauss points - Scalar pInit(const GlobalPosition& globalPos, const GlobalPosition& localPos, const Element& element) const - { - Scalar pValue = 0.0; - - typename El2P_TestProblem<TypeTag>::LocalFEMSpace feMap(this->gridView()); - const typename LocalFEMSpace::Traits::FiniteElementType - &localFiniteElement = feMap.find(element.geometry().type()); - typedef Dune::FieldVector<CoordScalar, 1> ShapeValue; - std::vector<ShapeValue> shapeVal; - localFiniteElement.localBasis().evaluateFunction(localPos, shapeVal); - - for (int i = 0; i < element.subEntities(dim); i++) - { - int vIdxGlobal = this->vertexMapper().subIndex(element, i, dim); - pValue += pInit_[vIdxGlobal] * shapeVal[i]; - } - - return pValue; - } - - // note: pInit is < 0 - // function which returns initial pressure distribution - std::vector<Scalar> pInit() - { - return pInit_; - } - - // returns true if the current solution should be written to - // disk (i.e. as a VTK file) - // during initialization no output is written - // during actual simulation output is written initially and - // at episode/simulation end - bool shouldWriteOutput() - { - return output_; - } - - // returns true if the current solution should be written to - // disk (i.e. as a drs file) - bool shouldWriteRestartFile() const - { - return output_; - } - - // \} - - /*! - * \name Boundary conditions - */ - // \{ - - /*! - * \brief Specifies which kind of boundary condition should be - * used for which equation on a given boundary control volume. - * - * \param values The boundary types for the conservation equations - * \param globalPos The center of the finite volume which ought to be set. - * - * This function is called directly from dumux/geomechanics/el2p/localoperator.hh - * If it is renamed to boundaryTypesAtPos it should be adjusted there as well. - */ - void boundaryTypesAtPos(BoundaryTypes &values, const GlobalPosition& globalPos) const - { - values.setAllNeumann(); - - // The solid displacement normal to the lateral boundaries is fixed. - if(globalPos[0] < eps_ || globalPos[0] > this->bBoxMax()[0]-eps_) - { - values.setDirichlet(uxIdx); - if(initializationRun_ == false) - { - values.setDirichlet(pressureIdx); - values.setDirichlet(saturationIdx); - } - } - // The solid displacement normal to the lateral boundaries is fixed. - if(globalPos[1] < eps_ || globalPos[1] > this->bBoxMax()[1]-eps_) - { - values.setDirichlet(uyIdx); - if(initializationRun_ == false) - { - values.setDirichlet(pressureIdx); - values.setDirichlet(saturationIdx); - } - } - - // Lower boundary closed for brine and CO2 flux, uz is fixed. - if(globalPos[dimWorld-1] < eps_) - { - values.setDirichlet(uzIdx); - } - - // for the initialization run the pressure and saturation - // values are only given at the top boundary. - if(globalPos[dimWorld-1] > this->bBoxMax()[dimWorld-1]-eps_) - { - values.setDirichlet(pressureIdx); - values.setDirichlet(saturationIdx); - } - } - - /*! - * \brief Evaluate the boundary conditions for a dirichlet - * control volume. - * - * \param values The dirichlet values for the primary variables - * \param vertex The vertex representing the "half volume on the boundary" - * - * For this method, the \a values parameter stores primary variables. - */ - void dirichlet(PrimaryVariables &values, const Vertex &vertex) const - { - const GlobalPosition globalPos = vertex.geometry().center(); - - dirichletAtPos(values, globalPos); - values[0] = -pInit_[this->vertexMapper().index(vertex)]; - } - - /*! - * \brief Evaluate the boundary conditions for a dirichlet - * control volume. - * - * \param values The dirichlet values for the primary variables - * \param globalPos The center of the finite volume which ought to be set. - * - * This function is called directly from dumux/geomechanics/el2p/localoperator.hh - * If it is renamed to dirichletAtPos it should be adjusted there as well. - */ - void dirichletAtPos(PrimaryVariables &values, const GlobalPosition& globalPos) const - { - values = 0.0; - } - - /*! - * \brief Evaluate the boundary conditions for a neumann - * boundary segment. - * - * \param values The neumann values for the conservation equations in units of - * \f$ [ \textnormal{unit of conserved quantity} / (m^2 \cdot s )] \f$ - * \param globalPos The position of the integration point of the boundary segment. - * - * This function is called directly from dumux/geomechanics/el2p/localoperator.hh - * If it is renamed to neumannAtPos it should be adjusted there as well. - * For this method, the \a values parameter stores the mass flux - * in normal direction of each phase. Negative values mean influx. - */ - void neumannAtPos(PrimaryVariables &values, const GlobalPosition& globalPos) const - { - values = 0; - } - // \} - - /*! - * \name Volume terms - */ - // \{ - - /*! - * \brief Evaluate the source term for all phases within a given - * sub-control-volume. - * - * \param values The source values for the conservation equations in units of - * \f$ [ \textnormal{unit of conserved quantity} / (m^3 \cdot s )] \f$ - * \param element The finite element - * \param fvGeometry The finite-volume geometry in the box scheme - * \param scvIdx The local vertex index - * - * For this method, the \a values parameter stores the rate mass - * generated or annihilate per volume unit. Positive values mean - * that mass is created, negative ones mean that it vanishes. - */ - void source(PrimaryVariables &values, - const Element &element, - const FVElementGeometry &fvGeometry, - int scvIdx) const - { - const GlobalPosition globalPos = element.geometry().corner(scvIdx); - - source(values, globalPos); - } - - /*! - * \brief Evaluate the source term for all phases within a given - * sub-control-volume. - * - * \param values The source values for the conservation equations in units of - * \f$ [ \textnormal{unit of conserved quantity} / (m^3 \cdot s )] \f$ - * \param globalPos The position of the integration point of the boundary segment. - * - * For this method, the \a values parameter stores the rate mass - * generated or annihilate per volume unit. Positive values mean - * that mass is created, negative ones mean that it vanishes. - */ - void source(PrimaryVariables &values, const GlobalPosition& globalPos) const - { - values = 0.0; - if(initializationRun_ == false){ - if(globalPos[0] > 490-eps_ && globalPos[0] < 510+eps_ - && globalPos[1] > 490-eps_ && globalPos[1] < 510+eps_ - && globalPos[dimWorld-1] > 490-eps_ && globalPos[dimWorld-1] < 510+eps_) - values[saturationIdx] = 1.e-5; // injection - } - } - - // \} - - /*! - * \brief Transfer episode index to spatial parameters in order to apply different - * hydraulic parameters during pressure initialization - */ - void preTimeStep() - { - this->spatialParams().setEpisode(this->timeManager().episodeIndex()); - } - - /*! - * \brief Write mass balance information for both fluid phases - */ - void postTimeStep() - { - PrimaryVariables mass; - this->model().globalStorage(mass); - double time = this->timeManager().time()+this->timeManager().timeStepSize(); - - // Write mass balance information for rank 0 - if (this->gridView().comm().rank() == 0) { - std::cout << "TIME, MASS NPhase (kg), MASS WPhase (kg): \n" - <<"mass: " - <<time<< " , " - <<mass[1] << " , " - <<mass[0] - <<"\n" - <<"***************************************" <<std::endl; - } - - - } - - /*! - * \brief Define length of next episode - */ - void episodeEnd() - { - this->timeManager().startNextEpisode(episodeLength_); - // At the end of the initializationRun - if (this->timeManager().time() == GET_RUNTIME_PARAM(TypeTag, Scalar,TimeManager.TInitEnd)) - { - this->timeManager().setTimeStepSize(dt_); - - this->setCoupled(true); - // pressure field resulting from the initialization period is applied for the initial - // and the Dirichlet boundary conditions - this->setPressure(); - // output is written - this->setOutput(true); - } - } - -private: - static constexpr Scalar eps_ = 3e-6; - Scalar depthBOR_; - static constexpr Scalar brineDensity_ = 1059; - Scalar episodeLength_;// = GET_RUNTIME_PARAM(TypeTag, Scalar, TimeManager.EpisodeLength); - - std::vector<Scalar> pInit_; - GridView gridView_; - Scalar dt_; -public: - bool initializationRun_, coupled_, output_; - InitialStressField initialStressField_; -}; - - -/*! - * \ingroup ElTwoPBoxProblems - * - * \brief Initial conditions for momentum balance equation. - * - * Set initial conditions for solution of momentum balance equation - * i.e. initialize solid displacement - * This function is called from dumux/geomechanics/el2p/model.hh - * * This function is called from dumux/geomechanics/el2p/model.hh. - * - * The primary variables are initialized two times: - * 1. before the initialization run. - * 2. at the start of the actual simulation the solid displacement values which have - * changed during initialization of the pressure field are set to zero again. - * - */ -template<class TypeTag, int dim> -class InitialDisplacement : -public Dune::PDELab::AnalyticGridFunctionBase< - Dune::PDELab::AnalyticGridFunctionTraits<typename GET_PROP_TYPE(TypeTag, GridView),typename GET_PROP_TYPE(TypeTag, Scalar),dim>, - InitialDisplacement<TypeTag,dim> > -{ -public: - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef Dune::PDELab::AnalyticGridFunctionTraits<typename GET_PROP_TYPE(TypeTag, GridView),typename GET_PROP_TYPE(TypeTag, Scalar),dim> Traits; - typedef Dune::PDELab::AnalyticGridFunctionBase<Traits, InitialDisplacement<TypeTag,dim> > BaseT; - - typedef typename Traits::DomainType DomainType; - typedef typename Traits::RangeType RangeType; - - /*! - * \brief The constructor - * - * \param gridView The grid view - */ - InitialDisplacement(const GridView & gridView) : BaseT(gridView) {} - - /*! - * \brief Evaluate initial conditions for the momentum balance equation. - * - * \param position The position of the vertex - * \param values The initial solid displacement vector at the vertex - */ - inline void evaluateGlobal(const DomainType & position, RangeType & values) const - { - values = 0; - } -}; - -/*! - * \ingroup ElTwoPBoxProblems - * - * \brief Initial conditions for mass balance equations. - * - * Set initial conditions for solution of the mass balance equations - * i.e. initialize wetting phase pressure and nonwetting phase saturation - * - * This function is called from dumux/geomechanics/el2p/model.hh. - * The primary variables are initialized two times: - * 1. before the initialization run. - * 2. at the start of the actual simulation applying pressure field - * calculated during initialization - * - */ -template<class TypeTag> -class InitialPressSat : -public Dune::PDELab::AnalyticGridFunctionBase< - Dune::PDELab::AnalyticGridFunctionTraits<typename GET_PROP_TYPE(TypeTag, GridView),typename GET_PROP_TYPE(TypeTag, Scalar),2>, - InitialPressSat<TypeTag> > -{ -public: - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef Dune::PDELab::AnalyticGridFunctionTraits<GridView,Scalar,2> Traits; - typedef Dune::PDELab::AnalyticGridFunctionBase<Traits, InitialPressSat<TypeTag>> BaseT; - - typedef typename Traits::DomainType DomainType; - typedef typename Traits::RangeType RangeType; - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - - enum { - // indices of the primary variables - pressureIdx = Indices::pwIdx, - saturationIdx = Indices::snIdx, - - dimWorld = GridView::dimensionworld - }; - - typedef typename Dune::MultipleCodimMultipleGeomTypeMapper<GridView, - Dune::MCMGVertexLayout> VertexMapper; - - /*! - * \brief The constructor - * - * \param gridView The grid view - */ - InitialPressSat(const GridView & gridView) - : BaseT(gridView) - , gridView_(gridView) -#if DUNE_VERSION_NEWER(DUNE_COMMON,2,6) - , vertexMapper_(gridView, Dune::mcmgVertexLayout()) -#else - , vertexMapper_(gridView) -#endif - { - // resize the pressure field vector with the number of vertices - pInit_.resize(gridView.size(GridView::dimension)); - // fill the pressure field vector with zeros - std::fill(pInit_.begin(), pInit_.end(), 0.0); - } - - /*! - * \brief Evaluate initial conditions for the mass balance equations. - * - * \param position The position of the vertex - * \param values The initial pressure and saturation values at the vertex - * - * This function applies the pressure field pInit_ which is defined - * in the problem. - */ - inline void evaluateGlobal(const DomainType & position, RangeType & values) const - { - bool valueSet; - valueSet = false; - - // loop over all vertices - for (const auto& vertex : vertices(gridView_)) - { - // get global index of current vertex - int vIdxGlobal = vertexMapper_.index(vertex); - Dune::FieldVector<double, dimWorld> globalPos = - (vertex).geometry().corner(0); - - // compare coordinates of current vertex with position coordinates - if (globalPos[0] >= position[0] - eps_ && globalPos[0] <= position[0] + eps_ - && globalPos[1] >= position[1] - eps_ && globalPos[1] - <= position[1] + eps_ && globalPos[dimWorld-1] >= position[dimWorld-1] - eps_ - && globalPos[dimWorld-1] <= position[dimWorld-1] + eps_) - { - // if coordinates are identical write the pressure value for this - // vertex (with index vIdxGlobal) into the values vector - values[pressureIdx] = pInit_[vIdxGlobal]; - // the value of this vertex is set - valueSet = true; - } - } - - // check if the pressure value for this vertex has been initialized - if (valueSet == false) - { - std::cout << " pressure value not initialized correctly " - << std::endl; - } - - // initialize saturation values - values[saturationIdx] = 0; - } - - /*! - * \brief Fill the vector pInit_ for initialization - * - * \param pInit The pressure field vector defined in the problem class - * - * This function is called from dumux/geomechanics/el2p/model.hh. - */ - void setPressure(std::vector<Scalar> pInit) - { - std::cout << "InitialPressSat: setPressure function called" << std::endl; - for (const auto& vertex : vertices(gridView_)) - { - int vIdxGlobal = vertexMapper_.index(vertex); - pInit_[vIdxGlobal] = -pInit[vIdxGlobal]; - } - } - -private: - static constexpr Scalar eps_ = 3e-6; - Scalar depthBOR_; - std::vector<Scalar> pInit_; - GridView gridView_; - VertexMapper vertexMapper_; -}; - -} //end namespace - -#endif diff --git a/test/geomechanics/el2p/el2pspatialparams.hh b/test/geomechanics/el2p/el2pspatialparams.hh deleted file mode 100644 index 86f5e05addea4a0ce4b7abb91f55fce8c3498482..0000000000000000000000000000000000000000 --- a/test/geomechanics/el2p/el2pspatialparams.hh +++ /dev/null @@ -1,276 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief The spatial parameters for the El2P_TestProblem which uses the - * linear elastic two-phase model - */ -#ifndef DUMUX_ELTWOPSPARAMETERS_HH -#define DUMUX_ELTWOPSPARAMETERS_HH - -#include <dumux/material/spatialparams/implicit.hh> -#include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh> -#include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh> -#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> - -#include <dumux/geomechanics/el2p/model.hh> - -namespace Dumux -{ - -//forward declaration -template<class TypeTag> -class El2PSpatialParams; - -namespace Properties -{ -// The spatial parameters TypeTag -NEW_TYPE_TAG(El2PSpatialParams); - -// Set the spatial parameters -SET_TYPE_PROP(El2PSpatialParams, SpatialParams, El2PSpatialParams<TypeTag>); - -// Set the material Law -SET_PROP(El2PSpatialParams, MaterialLaw) -{ -private: - // define the material law which is parameterized by effective - // saturations - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef RegularizedBrooksCorey<Scalar> EffectiveLaw; -public: - // define the material law parameterized by absolute saturations - typedef EffToAbsLaw<EffectiveLaw> type; -}; -} -/*! - * \ingroup ElTwoPBoxModel - * \brief The spatial parameters for the El2P_TestProblem which uses the - * linear elastic two-phase model - */ -template<class TypeTag> -class El2PSpatialParams : public ImplicitSpatialParams<TypeTag> -{ - typedef ImplicitSpatialParams<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, Grid) Grid; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename Grid::ctype CoordScalar; - enum { - dim=GridView::dimension, - dimWorld=GridView::dimensionworld, - }; - - typedef Dune::FieldVector<CoordScalar,dimWorld> GlobalPosition; - typedef Dune::FieldMatrix<Scalar,dim,dim> DimMatrix; - - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GridView::template Codim<0>::Entity Element; - -public: - //get the material law from the property system - typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw; - typedef typename MaterialLaw::Params MaterialLawParams; - - - El2PSpatialParams(const GridView &gridView) - : ParentType(gridView) - { - // episode index - episode_ = 0; - // intrinsic permeabilities [m^2] - Kinit_ = Scalar(0.0); // init permeability - K_ = Scalar(0.0); // permeability - for (int i = 0; i < dim; i++){ - Kinit_[i][i] = 1.E-12; //[m²] - K_[i][i] = 1.E-14; //[m²] - } - - // porosities [-] - phi_ = 0.2; - - // rock density [kg/m^3] - rockDensity_ = 2650.0; - - // Young's modulus [Pa] - E_ = 6e9; - // Poisson's ratio [-] - nu_ = 0.2; - // Lame parameters [Pa] - lambda_ = (E_ * nu_) / ((1 + nu_)*(1 - 2 * nu_)); - mu_ = E_ / (2 * (1 + nu_)); - - - // given Van Genuchten m - m_ = 0.457; - // Brooks Corey lambda - using std::pow; - BrooksCoreyLambda_ = m_ / (1 - m_) * (1 - pow(0.5,1/m_)); - - // residual saturations - MaterialParams_.setSwr(0.3); - MaterialParams_.setSnr(0.05); - - // parameters for the Brooks Corey law - MaterialParams_.setPe(1.99e4); - MaterialParams_.setLambda(BrooksCoreyLambda_); - - - } - - ~El2PSpatialParams() - {} - - /*! - * \brief This function sets the private variable episode_ to the current episode index - * which is checked in the hydraulic parameter functions to identify if we are still in the - * initialization run (episode_ == 1) - * - * \param episode The episode index - */ - void setEpisode(const int& episode) - { - episode_ = episode; - std::cout<< "episode set to: "<< episode_<<std::endl; - } - - /*! - * \brief Apply the intrinsic permeability tensor \f$[m^2]\f$ to a pressure - * potential gradient. - * - * \param element The current finite element - * \param fvGeometry The current finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume where - * the porosity needs to be defined - * - * During the initialization period the intrinsic permeability can be set to a larger - * value in order to accelerate the calculation of the hydrostatic pressure distribution. - */ - const DimMatrix intrinsicPermeability(const Element &element, - const FVElementGeometry &fvGeometry, - int scvIdx) const - { - if(episode_ <= 1) - return Kinit_; // intrinsic permeability applied during initialization - else - return K_; // intrinsic permeability - } - - /*! - * \brief Define the porosity \f$[-]\f$ of the soil - * - * \param element The finite element - * \param fvGeometry The finite volume geometry - * \param scvIdx The local index of the sub-control volume where - * the porosity needs to be defined - */ - double porosity(const Element &element, - const FVElementGeometry &fvGeometry, - int scvIdx) const - { - return phi_; - } - - /*! - * \brief Define the porosity \f$[-]\f$ of the soil - * - * \param globalPos The global position of the vertex - */ - double porosity(const GlobalPosition& globalPos) const - { - return phi_; - } - - /*! - * \brief Define the density \f$[kg/m^3]\f$ of the rock - * - * \param element The finite element - * \param scvIdx The local index of the sub-control volume where - * the porosity needs to be defined - */ - const Scalar rockDensity(const Element &element, - int scvIdx) const - { - return rockDensity_; - } - - /*! - * \brief Define the density \f$[kg/m^3]\f$ of the rock - * - * \param globalPos The global position of the vertex - */ - const Scalar rockDensity(const GlobalPosition &globalPos) const - { - return rockDensity_; - } - - /*! - * \brief Define the Lame parameters \f$[Pa]\f$ linear elastic rock - * - * \param element The finite element - * \param fvGeometry The finite volume geometry - * \param scvIdx The local index of the sub-control volume where - * the porosity needs to be defined - */ - const Dune::FieldVector<Scalar,2> lameParams(const Element &element, - const FVElementGeometry &fvGeometry, - int scvIdx) const - { - // Lame parameters - Dune::FieldVector<Scalar, 2> param; - - param[0] = lambda_; - param[1] = mu_; - - return param; - } - - /*! - * \brief Function for defining the parameters needed by constitutive relationships (kr-Sw, pc-Sw, etc.). - * - * \param element The current element - * \param fvGeometry The current finite volume geometry of the element - * \param scvIdx The index of the sub-control volume. - * \return the material parameters object - */ - const MaterialLawParams& materialLawParams(const Element &element, - const FVElementGeometry &fvGeometry, - int scvIdx) const - { - return MaterialParams_; - } - -private: - Dune::FieldMatrix<Scalar,dim,dim> K_, Kinit_; - Scalar layerBottom_; - Scalar rockDensity_; - Scalar phi_, phiInit_; - Scalar lambda_; - Scalar mu_; - Scalar E_; - Scalar nu_; - Scalar BrooksCoreyLambda_, m_; - MaterialLawParams MaterialParams_; - static constexpr Scalar eps_ = 3e-6; - int episode_; - -}; -} -#endif diff --git a/test/geomechanics/el2p/test_el2p.cc b/test/geomechanics/el2p/test_el2p.cc deleted file mode 100644 index 3b02a3c00af484c84aa9fc245f96e1acef3b152c..0000000000000000000000000000000000000000 --- a/test/geomechanics/el2p/test_el2p.cc +++ /dev/null @@ -1,75 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Test for the el2p cell centered model - */ -#include <config.h> - -#include <dune/common/precision.hh> -#include <dune/common/version.hh> -#if HAVE_DUNE_PDELAB -#include "el2pproblem.hh" -#endif -#include <dumux/common/start.hh> - -/*! - * \brief Provides an interface for customizing error messages associated with - * reading in parameters. - * - * \param progName The name of the program, that was tried to be started. - * \param errorMsg The error message that was issued by the start function. - * Comprises the thing that went wrong and a general help message. - */ -void usage(const char *progName, const std::string &errorMsg) -{ - if (errorMsg.size() > 0) { - std::string errorMessageOut = "\nUsage: "; - errorMessageOut += progName; - errorMessageOut += " [options]\n"; - errorMessageOut += errorMsg; - errorMessageOut += "\n\nThe list of mandatory options for this program is:\n" - "\t-TimeManager.TInitEnd End of the initialization [s] \n" - "\t-TimeManager.TEnd End of the simulation [s] \n" - "\t-TimeManager.DtInitial Initial timestep size [s] \n" - "\t-Grid.File Name of the file containing the grid \n" - "\t definition in DGF format\n" - "\t-Problem.Name String for naming of the output files \n" - "\n"; - - std::cout << errorMessageOut << std::endl; - } -} - -//////////////////////// -// the main function -//////////////////////// -int main(int argc, char** argv) -{ -#if HAVE_DUNE_PDELAB - typedef TTAG(El2P_TestProblem) TypeTag; - return Dumux::start<TypeTag>(argc, argv, usage); - -#else // HAVE_DUNE_PDELAB -#warning You need to have dune-pdelab to run this test. - std::cerr << "You need to have dune-pdelab to run this test." << std::endl; - return 77; -#endif // HAVE_DUNE_PDELAB -} diff --git a/test/geomechanics/el2p/test_el2p.input b/test/geomechanics/el2p/test_el2p.input deleted file mode 100644 index f7432f9007cb6508c6d842c6c987ff19fa705fef..0000000000000000000000000000000000000000 --- a/test/geomechanics/el2p/test_el2p.input +++ /dev/null @@ -1,13 +0,0 @@ -[TimeManager] -TInitEnd = 1e6 # [s] -TEnd = 2e6 # [s] -DtInitial = 10 # [s] -EpisodeLength = 1e6 # [s] - -[Grid] -UpperRight = 1000 1000 1000 -Cells = 4 4 4 -Refinement = 0 - -[Injection] -DepthBOR = 2000 # Depth at the bottom of the scenario [m] diff --git a/test/geomechanics/elastic/CMakeLists.txt b/test/geomechanics/elastic/CMakeLists.txt deleted file mode 100644 index 8e4bc67635aaeb77375e6335d2ec99f5bd1f626e..0000000000000000000000000000000000000000 --- a/test/geomechanics/elastic/CMakeLists.txt +++ /dev/null @@ -1,16 +0,0 @@ -add_input_file_links() - -add_dumux_test(test_elastic test_elastic test_elastic.cc - python ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py - --script fuzzy - --files ${CMAKE_SOURCE_DIR}/test/references/elasticmatrix-reference.vtu - ${CMAKE_CURRENT_BINARY_DIR}/elasticmatrix-00001.vtu - --command "${CMAKE_CURRENT_BINARY_DIR}/test_elastic" - --zeroThreshold {"uy":1e-15,"uz":1e-15,"stress X":1e-8,"stress Y":1e-8,"stress Z":1e-8}) - -#install sources -install(FILES -elasticmatrixproblem.hh -elasticspatialparams.hh -test_elastic.cc -DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/test/geomechanics/elastic) diff --git a/test/geomechanics/elastic/elasticmatrixproblem.hh b/test/geomechanics/elastic/elasticmatrixproblem.hh deleted file mode 100644 index 9a88e31e5df13cf832e73f0d4ec6f0b59da21f85..0000000000000000000000000000000000000000 --- a/test/geomechanics/elastic/elasticmatrixproblem.hh +++ /dev/null @@ -1,265 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/** - * \file - * \brief Definition of a problem, for the linear elasticity problem: - * Problem definition for the deformation of an elastic solid. - */ -#ifndef DUMUX_ELASTICMATRIXPROBLEM_HH -#define DUMUX_ELASTICMATRIXPROBLEM_HH - -#include <dumux/geomechanics/elastic/model.hh> -#include <dumux/porousmediumflow/implicit/problem.hh> - -#include "elasticspatialparams.hh" - -namespace Dumux -{ - -template <class TypeTag> -class ElasticMatrixProblem; - -namespace Properties -{ -NEW_TYPE_TAG(ElasticMatrixProblem, INHERITS_FROM(CCTpfaModel, Elastic, ElSpatialParams)); - -// Set the grid type -SET_TYPE_PROP(ElasticMatrixProblem, Grid, Dune::YaspGrid<2>); - -// Set the problem property -SET_TYPE_PROP(ElasticMatrixProblem, Problem, ElasticMatrixProblem<TypeTag>); - -} - -/*! - * \ingroup ElasticBoxProblems - * \ingroup ImplicitTestProblems - * - * \brief Problem definition for the deformation of an elastic matrix. - * - * The problem defined here leads to the following linear distribution of the - * solid displacement: u(x,y,z) = 1/E * (x,0,-nu*z) which for the given grid - * The numerical results can be verified analytically. - * - * The 3D domain given in linearelastic.dgf spans from (0,0,0) to (10,1,10). - * - * Dirichlet boundary conditions (u=0.0) are applied for the displacement in y-direction - * in the whole domain, for the displacement in x-direction on the left boundary (x < eps) - * and for the displacement in z-direction for the lower left edge (x<eps && z<eps). - * On the remaining boundaries Neumann boundary conditions are applied. - * The normal stress applied on each boundary results from solving the momentum balance - * analytically for the solid displacement function u(x,y,z) = 1/E * (x,0,-nu*z). - * This leads to the normal stresses: \f$ \boldsymbol{\sigma_{xx}} = 2\,\frac{\mu}{E} + \frac{\lambda}{E} ( 1-\nu)\f$, - * \f$ \boldsymbol{\sigma_{yy}} = \frac{\lambda}{E} ( 1-\nu)\f$, - * \f$ \boldsymbol{\sigma_{zz}} = -2\,\frac{\mu \nu}{E} + \frac{\lambda}{E}\f$. - * The shear stresses are set to zero. - * - * This problem uses the \ref ElasticModel model. - * - * To run the simulation execute the following line in shell: - * <tt>./test_elastic -parameterFile ./test_elastic.input</tt> - */ - -template <class TypeTag> -class ElasticMatrixProblem: public ImplicitPorousMediaProblem<TypeTag> -{ - typedef ImplicitPorousMediaProblem<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; - typedef typename GET_PROP_TYPE(TypeTag, SubControlVolume) SubControlVolume; - typedef typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace) SubControlVolumeFace; - - // copy some indices for convenience - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - enum { - // Grid and world dimension - dim = GridView::dimension, - dimWorld = GridView::dimensionworld, - }; - enum { - // indices of the primary variables - uxIdx = Indices::uxIdx, - uyIdx = Indices::uyIdx, - uzIdx = Indices::uzIdx, - }; - enum { - // indices of the equations - momentumXEqIdx = Indices::momentumXEqIdx, - momentumYEqIdx = Indices::momentumYEqIdx, - momentumZEqIdx = Indices::momentumZEqIdx, - }; - - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename GridView::template Codim<dim>::Entity Vertex; - typedef typename GridView::Intersection Intersection; - - typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; - -public: - ElasticMatrixProblem(TimeManager &timeManager, const GridView &gridView) - : ParentType(timeManager, gridView) - {} - - /*! - * \name Problem parameters - */ - // \{ - - /*! - * \brief The problem name. - * - * This is used as a prefix for files generated by the simulation. - */ - std::string name() const - { return "elasticmatrix";} - // \} - - /*! - * \name Boundary conditions - */ - // \{ - - /*! - * \brief Specifies which kind of boundary condition should be - * used for which equation on a given boundary segment. - * - * \param values The boundary types for the conservation equations - * \param globalPos The global position - */ - BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const - { - BoundaryTypes values; - - values.setAllNeumann(); - - if(globalPos[0] < eps_) - { - values.setDirichlet(uyIdx); - values.setDirichlet(uxIdx); - if(globalPos[2] < eps_) - values.setDirichlet(uzIdx); - } - - return values; - } - - /*! - * \brief Evaluate the boundary conditions for a Dirichlet - * boundary segment. - * - * \param values The Dirichlet values for the primary variables - * \param vertex The vertex for which the boundary type is set - * - * For this method, the \a values parameter stores primary variables. - */ - PrimaryVariables dirichletAtPos(const GlobalPosition& globalPos) const - { - return PrimaryVariables(0.0); - } - - /*! - * \brief Evaluate the boundary conditions for a Neumann - * boundary segment. - * - * For this method, the \a values parameter stores the mass flux - * in normal direction of each phase. Negative values mean influx. - */ - PrimaryVariables neumann(const Element &element, const SubControlVolumeFace &scvFace) const - { - PrimaryVariables values(0.0); - - // inside scv - auto&& scv = this->model().fvGeometries().subControlVolume(scvFace.insideScvIdx()); - - // get Lame parameters - Scalar lambda = this->spatialParams().lameParams(element, scv)[0]; - Scalar mu = this->spatialParams().lameParams(element, scv)[1]; - Scalar E = this->spatialParams().E(element, scv); - Scalar nu = this->spatialParams().nu(element, scv); - - // calculate values of sigma in normal direction - Dune::FieldMatrix<Scalar, dim, dim> sigma(0); - sigma[0][0] = 2.0*mu + lambda*(1 - nu); - sigma[1][1] = lambda*(1 - nu); - sigma[2][2] = -2.0*mu*nu + lambda*(1 - nu); - - sigma *= -1.0/E; - - // determine normal vector of current face - Dune::FieldVector<Scalar,dim> normal = scvFace.unitOuterNormal(); - - // use stress in normal direction as boundary condition - sigma.mv(normal, values); - - return values; - } - // \} - - /*! - * \name Volume terms - */ - // \{ - - /*! - * \brief Evaluate the source term for all phases within a given - * sub-control-volume. - * - * For this method, the \a priVars parameter stores the rate momentum - * is generated or annihilate per volume - * unit. Positive values mean that momentum is created, negative ones - * mean that it vanishes. - */ - PrimaryVariables sourceAtPos(const GlobalPosition &globalPos) const - { - return PrimaryVariables(0.0); - } - - /*! - * \brief Evaluate the initial value for a control volume. - * - * \param values The initial values for the primary variables - * \param globalPos The position for which the initial condition should be evaluated - * - * For this method, the \a values parameter stores primary - * variables. - */ - PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const - { - return initial_(globalPos); - } - - // \} - - -private: - // the internal method for the initial condition - PrimaryVariables initial_(const GlobalPosition &globalPos) const - { - return PrimaryVariables(0.0); // initial condition for the solid displacement - } - - static constexpr Scalar eps_ = 3e-6; -}; -} //end namespace - -#endif diff --git a/test/geomechanics/elastic/elasticspatialparams.hh b/test/geomechanics/elastic/elasticspatialparams.hh deleted file mode 100644 index 3fe626f3b4133776ace21ad6dd4a3294ca229b1f..0000000000000000000000000000000000000000 --- a/test/geomechanics/elastic/elasticspatialparams.hh +++ /dev/null @@ -1,159 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Definition of the spatial parameters for the linear elasticity problem. - */ -#ifndef DUMUX_ELASTIC_SPATIAL_PARAMS_HH -#define DUMUX_ELASTIC_SPATIAL_PARAMS_HH - -#include <dumux/geomechanics/el2p/properties.hh> - -namespace Dumux -{ - -/*! - * \ingroup ElasticBoxModel - * \ingroup ImplicitTestProblems - * - * \brief Definition of the spatial parameters for the linear elasticity - * problem. - */ - -template<class TypeTag> -class ElSpatialParams; - -namespace Properties -{ -// The spatial parameters TypeTag -NEW_TYPE_TAG(ElSpatialParams); - -// Set the spatial parameters -SET_TYPE_PROP(ElSpatialParams, SpatialParams, ElSpatialParams<TypeTag>); - -} - -template<class TypeTag> -class ElSpatialParams -{ - typedef typename GET_PROP_TYPE(TypeTag, Grid) Grid; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, SubControlVolume) SubControlVolume; - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename Grid::ctype CoordScalar; - - enum { dimWorld=GridView::dimensionworld }; - - typedef Dune::FieldVector<CoordScalar,dimWorld> GlobalPosition; - -public: - - ElSpatialParams(const Problem& problem, const GridView &gridView) - { - // rock density - rockDensity_ = 2650.0; - // Lame Parameters - lambda_ = 3e9; - mu_ = 3e9; - // Young's modulus - E_ = 1e7; - // Poisson's ration - nu_ = 0.3; - } - - ~ElSpatialParams() - {} - - /*! - * \brief Define the rock density \f$\mathrm{[kg/m^3]}\f$. - * - * \param element The finite element - * \param scvIdx The local index of the sub-control volume where - */ - const Scalar rockDensity(const Element &element, const SubControlVolume& scv) const - { - return rockDensity_; - } - - /*! - * \brief Define the rock density \f$\mathrm{[kg/m^3]}\f$. - * - * \param globalPos The position for which the rock density should be returned - */ - const Scalar rockDensity(const GlobalPosition &globalPos) const - { - return rockDensity_; - } - - /*! - * \brief Define the Lame parameters \f$\mathrm{[Pa]}\f$. - * - * \param element The finite element - * \param fvGeometry The current finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume where - */ - const Dune::FieldVector<Scalar,2> lameParams(const Element &element, const SubControlVolume& scv) const - { - // Lame parameters - Dune::FieldVector<Scalar, 2> param; - - param[0] = lambda_; - param[1] = mu_; - - return param; - } - - /*! - * \brief Define Young's modulus E \f$\mathrm{[Pa]}\f$. - * - * \param element The finite element - * \param fvGeometry The current finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume where - */ - const Scalar E(const Element &element, const SubControlVolume& scv) const - { - return E_; - } - - /*! - * \brief Define Poisson's ratio \f$\mathrm{[-]}\f$. - * - * \param element The finite element - * \param fvGeometry The current finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume where - */ - const Scalar nu(const Element &element, const SubControlVolume& scv) const - { - return nu_; - } - -private: - Scalar rockDensity_; - Scalar lambda_; - Scalar mu_; - Scalar E_; - Scalar nu_; - static constexpr Scalar eps_ = 3e-6; -}; -} -#endif diff --git a/test/geomechanics/elastic/test_elastic.cc b/test/geomechanics/elastic/test_elastic.cc deleted file mode 100644 index eec98819a6d0e48472fa2b0e570693d50b0e15bb..0000000000000000000000000000000000000000 --- a/test/geomechanics/elastic/test_elastic.cc +++ /dev/null @@ -1,69 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Test for the elastic model. - */ -#include <config.h> - -#include "elasticmatrixproblem.hh" - -#include <dumux/common/start.hh> - -/*! - * \brief Provides an interface for customizing error messages associated with - * reading in parameters. - * - * \param progName The name of the program, that was tried to be started. - * \param errorMsg The error message that was issued by the start function. - * Comprises the thing that went wrong and a general help message. - */ -void usage(const char *progName, const std::string &errorMsg) -{ - if (errorMsg.size() > 0) { - std::string errorMessageOut = "\nUsage: "; - errorMessageOut += progName; - errorMessageOut += " [options]\n"; - errorMessageOut += errorMsg; - errorMessageOut += "\n\nThe List of Mandatory arguments for this program is:\n" - "\t-tEnd The end of the simulation. [s] \n" - "\t-dtInitial The initial timestep size. [s] \n" - "\t-gridFile The file name of the file containing the grid \n" - "\t definition in DGF format\n" - "\t-FluidSystem.nTemperature Number of tabularization entries [-] \n" - "\t-FluidSystem.nPressure Number of tabularization entries [-] \n" - "\t-FluidSystem.pressureLow Low end for tabularization of fluid properties [Pa] \n" - "\t-FluidSystem.pressureHigh High end for tabularization of fluid properties [Pa] \n" - "\t-FluidSystem.temperatureLow Low end for tabularization of fluid properties [Pa] \n" - "\t-FluidSystem.temperatureHigh High end for tabularization of fluid properties [Pa] \n" - "\t-SimulationControl.name The name of the output files [-] \n" - "\t-InitialConditions.temperature Initial temperature in the reservoir [K] \n" - "\t-InitialConditions.depthBOR Depth below ground surface [m] \n"; - - std::cout << errorMessageOut - << "\n"; - } -} - -int main(int argc, char** argv) -{ - typedef TTAG(ElasticMatrixProblem) ProblemTypeTag; - return Dumux::start<ProblemTypeTag>(argc, argv, usage); -} diff --git a/test/geomechanics/elastic/test_elastic.input b/test/geomechanics/elastic/test_elastic.input deleted file mode 100644 index 1090dd16e742cb318289a045e642b1a9c1d7d839..0000000000000000000000000000000000000000 --- a/test/geomechanics/elastic/test_elastic.input +++ /dev/null @@ -1,10 +0,0 @@ -[TimeManager] -DtInitial = 1 # [s] -TEnd = 1 # [s] - -[Problem] -EnableGravity = 0 - -[Grid] -UpperRight = 10 1 10 -Cells = 10 10 10 diff --git a/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh b/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh deleted file mode 100644 index 78333f809b408c4b38e92e00847329c14d7de94f..0000000000000000000000000000000000000000 --- a/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cniproblem.hh +++ /dev/null @@ -1,259 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief The problem class for the coupling of a non-isothermal two-component Stokes - * and a non-isothermal two-phase two-component Darcy model. - * - * The problem class for the coupling of a non-isothermal two-component Stokes (stokes2cn) - * and a non-isothermal two-phase two-component Darcy model (2p2cni). - * It uses the 2p2cniCoupling model and the Stokes2cnicoupling model and provides - * the problem specifications for common parameters of the two submodels. - * The initial and boundary conditions of the submodels are specified in the two subproblems, - * 2p2cnisubproblem.hh and stokes2cnisubproblem.hh, which are accessible via the coupled problem. - */ - -#ifndef DUMUX_2CNISTOKES2P2CNIPROBLEM_HH -#define DUMUX_2CNISTOKES2P2CNIPROBLEM_HH - -#include <dune/common/float_cmp.hh> -#include <dune/grid/common/gridinfo.hh> -#include <dune/grid/multidomaingrid.hh> - -#include <dumux/material/fluidsystems/h2oair.hh> -#include <dumux/multidomain/2cnistokes2p2cni/localoperator.hh> -#include <dumux/multidomain/2cnistokes2p2cni/problem.hh> -#include <dumux/multidomain/2cnistokes2p2cni/propertydefaults.hh> - -#include <dumux/linear/seqsolverbackend.hh> -#ifdef HAVE_PARDISO -#include <dumux/linear/pardisobackend.hh> -#endif // HAVE_PARDISO - -#include "stokes2cnisubproblem.hh" -#include "2p2cnisubproblem.hh" - -namespace Dumux -{ -template <class TypeTag> -class TwoCNIStokesTwoPTwoCNITestProblem; - -namespace Properties -{ -NEW_TYPE_TAG(TwoCNIStokesTwoPTwoCNITestProblem, INHERITS_FROM(TwoCNIStokesTwoPTwoCNI)); - -// Set the grid type -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNITestProblem, Grid, Dune::YaspGrid<2, Dune::TensorProductCoordinates<typename GET_PROP_TYPE(TypeTag, Scalar), 2> >); - -// Set the global problem -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNITestProblem, Problem, TwoCNIStokesTwoPTwoCNITestProblem<TypeTag>); - -// Set the local coupling operator -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNITestProblem, MultiDomainCouplingLocalOperator, - TwoCNIStokesTwoPTwoCNILocalOperator<TypeTag>); - -// Set the two sub-problems of the global problem -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNITestProblem, SubDomain1TypeTag, TTAG(Stokes2cniSubProblem)); -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNITestProblem, SubDomain2TypeTag, TTAG(TwoPTwoCNISubProblem)); - -// Set the global problem in the context of the two sub-problems -SET_TYPE_PROP(Stokes2cniSubProblem, MultiDomainTypeTag, TTAG(TwoCNIStokesTwoPTwoCNITestProblem)); -SET_TYPE_PROP(TwoPTwoCNISubProblem, MultiDomainTypeTag, TTAG(TwoCNIStokesTwoPTwoCNITestProblem)); - -// Set the other sub-problem for each of the two sub-problems -SET_TYPE_PROP(Stokes2cniSubProblem, OtherSubDomainTypeTag, TTAG(TwoPTwoCNISubProblem)); -SET_TYPE_PROP(TwoPTwoCNISubProblem, OtherSubDomainTypeTag, TTAG(Stokes2cniSubProblem)); - -// Set the spatial parameters used for the problems -SET_TYPE_PROP(TwoPTwoCNISubProblem, SpatialParams, TwoCNIStokesTwoPTwoCNISpatialParams<TypeTag>); - -// Set the fluid system to use complex relations (last argument) -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNITestProblem, FluidSystem, - FluidSystems::H2OAir<typename GET_PROP_TYPE(TypeTag, Scalar)>); - -#ifdef HAVE_PARDISO -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNITestProblem, LinearSolver, PardisoBackend<TypeTag>); -#else -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNITestProblem, LinearSolver, SuperLUBackend<TypeTag>); -#endif // HAVE_PARDISO -} - -/*! - * \ingroup ImplicitTestProblems - * \ingroup TwoPTwoCNIStokesTwoCNIModel - * \brief The problem class for the coupling of a non-isothermal two-component Stokes - * and a non-isothermal two-phase two-component Darcy model. - * - * The problem class for the coupling of a non-isothermal two-component Stokes (stokes2cn) - * and a non-isothermal two-phase two-component Darcy model (2p2cni). - * It uses the 2p2cniCoupling model and the Stokes2cnicoupling model and provides - * the problem specifications for common parameters of the two submodels. - * The initial and boundary conditions of the submodels are specified in the two subproblems, - * 2p2cnisubproblem.hh and stokes2cnisubproblem.hh, which are accessible via the coupled problem. - */ -template <class TypeTag = TTAG(TwoCNIStokesTwoPTwoCNITestProblem) > -class TwoCNIStokesTwoPTwoCNITestProblem : public TwoCNIStokesTwoPTwoCNIProblem<TypeTag> -{ - typedef TwoCNIStokesTwoPTwoCNITestProblem<TypeTag> ThisType; - typedef TwoCNIStokesTwoPTwoCNIProblem<TypeTag> ParentType; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; - - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGrid) MDGrid; - typedef typename MDGrid::LeafGridView MDGridView; - enum { dim = MDGridView::dimension }; - typedef Dune::FieldVector<Scalar, dim> GlobalPosition; - - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - - -public: - /*! - * \brief The problem for the coupling of Stokes and Darcy flow - * - * \param timeManager The time manager - * \param gridView The grid view - */ - template<class GridView> - TwoCNIStokesTwoPTwoCNITestProblem(TimeManager &timeManager, - GridView gridView) - : ParentType(timeManager, gridView) - { - interfacePosY_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, InterfacePosY); - noDarcyX_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, NoDarcyX); - episodeLength_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, TimeManager, EpisodeLength); - initializationTime_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, TimeManager, InitTime); - dtInit_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, TimeManager, DtInitial); - - // define output options - freqRestart_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, int, Output, FreqRestart); - freqOutput_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, int, Output, FreqOutput); - - stokes2cni_ = this->sdID1(); - twoPtwoCNI_ = this->sdID2(); - - initializeGrid(); - - // initialize the tables of the fluid system - FluidSystem::init(/*tempMin=*/273.15, /*tempMax=*/323.15, /*numTemp=*/50, - /*pMin=*/5e4, /*pMax=*/1.5e5, /*numP=*/100); - - if (initializationTime_ > 0.0) - this->timeManager().startNextEpisode(initializationTime_); - else - this->timeManager().startNextEpisode(episodeLength_); - } - - /*! - * \brief Initialization of the grids - * - * This function splits the multidomain grid in the two - * individual subdomain grids and takes care of parallelization. - */ - void initializeGrid() - { - MDGrid& mdGrid = this->mdGrid(); - mdGrid.startSubDomainMarking(); - - // subdivide grid in two subdomains - for (const auto& element : elements(mdGrid.leafGridView(), Dune::Partitions::interior)) - { - GlobalPosition globalPos = element.geometry().center(); - - if (globalPos[1] > interfacePosY_) - mdGrid.addToSubDomain(stokes2cni_,element); - else - if(globalPos[0] > noDarcyX_) - mdGrid.addToSubDomain(twoPtwoCNI_,element); - } - mdGrid.preUpdateSubDomains(); - mdGrid.updateSubDomains(); - mdGrid.postUpdateSubDomains(); - - gridinfo(this->sdGrid1()); - gridinfo(this->sdGrid2()); - } - - /*! - * \brief Called by the time manager after the time integration to - * do some post processing on the solution. - */ - void postTimeStep() - { - // call the postTimeStep function of the subproblems - this->sdProblem1().postTimeStep(); - this->sdProblem2().postTimeStep(); - } - - /*! - * \brief Called when the end of an simulation episode is reached. - * - * Typically a new episode should be started in this method. - */ - void episodeEnd() - { this->timeManager().startNextEpisode(episodeLength_); } - - /*! - * \brief Returns true if a restart file should be written to - * disk. - * - * The default behavior is to write one restart file every 5 time - * steps. This file is intended to be overwritten by the - * implementation. - */ - bool shouldWriteRestartFile() const - { - return (this->timeManager().timeStepIndex() % freqRestart_ == 0 - || this->timeManager().episodeWillBeFinished() - || this->timeManager().willBeFinished()); - } - - /*! - * \brief Returns true if the current solution should be written to - * disk (i.e. as a VTK file) - * - * The default behavior is to write out the solution for - * every time step. This function is intended to be overwritten by the - * implementation. - */ - bool shouldWriteOutput() const - { - return (this->timeManager().timeStepIndex() % freqOutput_ == 0 - || this->timeManager().episodeWillBeFinished() - || this->timeManager().willBeFinished()); - } - -private: - typename MDGrid::SubDomainIndex stokes2cni_; - typename MDGrid::SubDomainIndex twoPtwoCNI_; - - unsigned freqRestart_; - unsigned freqOutput_; - - Scalar interfacePosY_; - Scalar noDarcyX_; - Scalar episodeLength_; - Scalar initializationTime_; - Scalar dtInit_; -}; - -} // namespace Dumux - -#endif // DUMUX_2CNISTOKES2P2CNIPROBLEM_HH diff --git a/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cnispatialparams.hh b/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cnispatialparams.hh deleted file mode 100644 index 84f166fbb9b97ee042ced23026326a1625626b76..0000000000000000000000000000000000000000 --- a/test/multidomain/2cnistokes2p2cni/2cnistokes2p2cnispatialparams.hh +++ /dev/null @@ -1,221 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Spatial parameters for the - * coupling of an non-isothermal two-component Stokes - * and an non-isothermal two-phase two-component Darcy model. - */ - -#ifndef DUMUX_TWOCNISTOKES2P2CNISPATIALPARAMS_HH -#define DUMUX_TWOCNISTOKES2P2CNISPATIALPARAMS_HH - -#include <dumux/material/spatialparams/implicit.hh> -#include <dumux/material/fluidmatrixinteractions/2p/regularizedvangenuchten.hh> -#include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh> -#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> - -namespace Dumux -{ -//forward declaration -template<class TypeTag> -class TwoCNIStokesTwoPTwoCNISpatialParams; - -namespace Properties -{ -// The spatial parameters TypeTag -NEW_TYPE_TAG(TwoCNIStokesTwoPTwoCNISpatialParams); - -// Set the spatial parameters -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNISpatialParams, SpatialParams, - TwoCNIStokesTwoPTwoCNISpatialParams<TypeTag>); - -// Set the material law parametrized by absolute saturations -SET_TYPE_PROP(TwoCNIStokesTwoPTwoCNISpatialParams, - MaterialLaw, - EffToAbsLaw<RegularizedVanGenuchten<typename GET_PROP_TYPE(TypeTag, Scalar)>>); -// EffToAbsLaw<RegularizedBrooksCorey<typename GET_PROP_TYPE(TypeTag, Scalar)> >); -} - - -/*! - * \ingroup ImplicitTestProblems - * \ingroup TwoPTwoCNIStokesTwoCNIModel - * \brief Definition of the spatial parameters for - * the coupling of an non-isothermal two-component Stokes - * and an non-isothermal two-phase two-component Darcy model. - */ -template<class TypeTag> -class TwoCNIStokesTwoPTwoCNISpatialParams : public ImplicitSpatialParams<TypeTag> -{ - typedef ImplicitSpatialParams<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GridView::ctype CoordScalar; - - enum { - dim=GridView::dimension, - dimWorld=GridView::dimensionworld - }; - typedef Dune::FieldVector<CoordScalar,dimWorld> GlobalPosition; - - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - - typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw; - typedef typename MaterialLaw::Params MaterialLawParams; - -public: - /*! - * \brief Spatial parameters for the - * coupling of an isothermal two-component Stokes - * and an isothermal two-phase two-component Darcy model. - * - * \param gridView The GridView which is used by the problem - */ - TwoCNIStokesTwoPTwoCNISpatialParams(const GridView& gridView) - : ParentType(gridView) - { - porosity_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, Porosity); - permeability_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, Permeability); - lambdaSolid_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, LambdaSolid); - alphaBJ_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, AlphaBJ); - - // residual saturations - params_.setSwr(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, Swr)); - params_.setSnr(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, Snr)); - // parameters for the vanGenuchten law - params_.setVgAlpha(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, VgAlpha)); - params_.setVgn(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, VgN)); - } - - /*! - * \brief Returns the intrinsic permeability tensor \f$[m^2]\f$ - * - * \param element The finite element - * \param fvGeometry The finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume - */ - const Scalar intrinsicPermeability(const Element &element, - const FVElementGeometry &fvGeometry, - const int scvIdx) const - { - return permeability_; - } - - /*! - * \brief Returns the porosity \f$[-]\f$ - * - * \param element The finite element - * \param fvGeometry The finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume - */ - Scalar porosity(const Element &element, - const FVElementGeometry &fvGeometry, - const int scvIdx) const - { - return porosity_; - } - - /*! - * \brief Returns the parameter object for the material law - * - * \param element The finite element - * \param fvGeometry The finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume - */ - const MaterialLawParams& materialLawParams(const Element &element, - const FVElementGeometry &fvGeometry, - const int scvIdx) const - { - return params_; - } - - /*! - * \brief Returns the heat capacity \f$[J / (kg K)]\f$ of the rock matrix. - * - * This is only required for non-isothermal models. - * - * \param element The finite element - * \param fvGeometry The finite volume geometry - * \param scvIdx The local index of the sub-control volume - */ - Scalar solidHeatCapacity(const Element &element, - const FVElementGeometry &fvGeometry, - const int scvIdx) const - { - return 790; - } - - /*! - * \brief Returns the mass density \f$[kg / m^3]\f$ of the rock matrix. - * - * This is only required for non-isothermal models. - * - * \param element The finite element - * \param fvGeometry The finite volume geometry - * \param scvIdx The local index of the sub-control volume - */ - Scalar solidDensity(const Element &element, - const FVElementGeometry &fvGeometry, - const int scvIdx) const - { - return 2700; // density of granite [kg/m^3] - } - - /*! - * \brief Returns the thermal conductivity \f$\mathrm{[W/(m K)]}\f$ of the solid - * - * This is only required for non-isothermal models. - * - * \param element The finite element - * \param fvGeometry The finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume - */ - Scalar solidThermalConductivity(const Element &element, - const FVElementGeometry &fvGeometry, - const int scvIdx) const - { - return lambdaSolid_; - } - - /*! - * \brief Evaluate the Beavers-Joseph coefficient at given position - * - * \param globalPos The global position - * - * \return Beavers-Joseph coefficient - */ - Scalar beaversJosephCoeffAtPos(const GlobalPosition &globalPos) const - { - return alphaBJ_; - } - -private: - Scalar permeability_; - Scalar porosity_; - Scalar lambdaSolid_; - Scalar alphaBJ_; - MaterialLawParams params_; -}; - -} // end namespace Dumux - -#endif // DUMUX_TWOCNISTOKES2P2CNISPATIALPARAMS_HH diff --git a/test/multidomain/2cnistokes2p2cni/2p2cnisubproblem.hh b/test/multidomain/2cnistokes2p2cni/2p2cnisubproblem.hh deleted file mode 100644 index 4682537c38fcabe7be99dce4d323cc0613b84310..0000000000000000000000000000000000000000 --- a/test/multidomain/2cnistokes2p2cni/2p2cnisubproblem.hh +++ /dev/null @@ -1,458 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Non-isothermal two-phase two-component porous-medium subproblem - * with coupling at the top boundary. - */ -#ifndef DUMUX_2P2CNISUB_PROBLEM_HH -#define DUMUX_2P2CNISUB_PROBLEM_HH - -#include <dune/common/float_cmp.hh> - -#include <dumux/porousmediumflow/implicit/problem.hh> -#include <dumux/porousmediumflow/2p2c/implicit/model.hh> -#include <dumux/io/gnuplotinterface.hh> -#include <dumux/multidomain/2cnistokes2p2cni/2p2cnicouplinglocalresidual.hh> -#include <dumux/multidomain/subdomainpropertydefaults.hh> -#include <dumux/multidomain/localoperator.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh> - -#include "2cnistokes2p2cnispatialparams.hh" - -namespace Dumux -{ -template <class TypeTag> -class TwoPTwoCNISubProblem; - -namespace Properties -{ -NEW_TYPE_TAG(TwoPTwoCNISubProblem, - INHERITS_FROM(BoxTwoPTwoCNI, SubDomain, TwoCNIStokesTwoPTwoCNISpatialParams)); - -// Set the problem property -SET_TYPE_PROP(TwoPTwoCNISubProblem, Problem, TwoPTwoCNISubProblem<TTAG(TwoPTwoCNISubProblem)>); - -// Use the 2p2cni local jacobian operator for the 2p2cniCoupling model -SET_TYPE_PROP(TwoPTwoCNISubProblem, LocalResidual, TwoPTwoCNICouplingLocalResidual<TypeTag>); - -// choose pn and Sw as primary variables -SET_INT_PROP(TwoPTwoCNISubProblem, Formulation, TwoPTwoCFormulation::pnsw); - -// the gas component balance (air) is replaced by the total mass balance -SET_INT_PROP(TwoPTwoCNISubProblem, ReplaceCompEqIdx, GET_PROP_TYPE(TypeTag, Indices)::contiNEqIdx); - -// Used the fluid system from the coupled problem -SET_TYPE_PROP(TwoPTwoCNISubProblem, - FluidSystem, - typename GET_PROP_TYPE(typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag), FluidSystem)); - -// Somerton is used as model to compute the effective thermal heat conductivity -SET_TYPE_PROP(TwoPTwoCNISubProblem, ThermalConductivityModel, - ThermalConductivitySomerton<typename GET_PROP_TYPE(TypeTag, Scalar)>); - -// use formulation based on mass fractions -SET_BOOL_PROP(TwoPTwoCNISubProblem, UseMoles, false); - -// enable/disable velocity output -SET_BOOL_PROP(TwoPTwoCNISubProblem, VtkAddVelocity, true); - -// Enable gravity -SET_BOOL_PROP(TwoPTwoCNISubProblem, ProblemEnableGravity, true); -} - -/*! - * \ingroup ImplicitTestProblems - * \ingroup TwoPTwoCNIStokesTwoCNIModel - * \brief Non-isothermal two-phase two-component porous-medium subproblem - * with coupling at the top boundary. - * - * The Darcy subdomain is sized 0.25m times 0.25m. All BCs for the balance - * equations are set to Neumann no-flow, except for the top, where couplingInflow - * conditions are applied. - * - * This sub problem uses the \ref TwoPTwoCNIModel. It is part of the 2p2cni model and - * is combined with the stokes2cnisubproblem for the free flow domain. - */ -template <class TypeTag = TTAG(TwoPTwoCNISubProblem) > -class TwoPTwoCNISubProblem : public ImplicitPorousMediaProblem<TypeTag> -{ - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - - typedef TwoPTwoCNISubProblem<TypeTag> ThisType; - typedef ImplicitPorousMediaProblem<TypeTag> ParentType; - - // copy some indices for convenience - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - - enum { numEq = GET_PROP_VALUE(TypeTag, NumEq) }; - enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) }; - enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) }; - enum { // the equation indices - contiTotalMassIdx = Indices::contiNEqIdx, - contiWEqIdx = Indices::contiWEqIdx, - energyEqIdx = Indices::energyEqIdx - }; - enum { // the indices of the primary variables - pNIdx = Indices::pressureIdx, - sWIdx = Indices::switchIdx, - temperatureIdx = Indices::temperatureIdx - }; - enum { // the indices for the phase presence - wCompIdx = Indices::wCompIdx, - nCompIdx = Indices::nCompIdx - }; - enum { // the indices for the phase presence - wPhaseOnly = Indices::wPhaseOnly, - nPhaseOnly = Indices::nPhaseOnly, - bothPhases = Indices::bothPhases - }; - enum { - wPhaseIdx = Indices::wPhaseIdx, - nPhaseIdx = Indices::nPhaseIdx - }; - enum { // grid and world dimension - dim = GridView::dimension, - dimWorld = GridView::dimensionworld - }; - - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; - typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; - - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename GridView::template Codim<dim>::Entity Vertex; - typedef typename GridView::Intersection Intersection; - - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - - typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw; - typedef typename GET_PROP_TYPE(TypeTag, MaterialLawParams) MaterialLawParams; - - typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; - -public: - /*! - * \brief The sub-problem for the porous-medium subdomain - * - * \param timeManager The TimeManager which is used by the simulation - * \param gridView The simulation's idea about physical space - */ - TwoPTwoCNISubProblem(TimeManager &timeManager, const GridView &gridView) - : ParentType(timeManager, gridView) - { - Scalar noDarcyX = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, NoDarcyX); - std::vector<Scalar> positions0 = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::vector<Scalar>, Grid, Positions0); - std::vector<Scalar> positions1 = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::vector<Scalar>, Grid, Positions1); - - using std::max; - bBoxMin_[0] = max(positions0.front(),noDarcyX); - bBoxMax_[0] = positions0.back(); - - bBoxMin_[1] = positions1.front(); - bBoxMax_[1] = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, InterfacePosY); - - runUpDistanceX_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, RunUpDistanceX); // first part of the interface without coupling - initializationTime_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, TimeManager, InitTime); - - refTemperature_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, PorousMedium, RefTemperature); - refPressure_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, PorousMedium, RefPressure); - initialSw_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, PorousMedium, InitialSw); - - freqMassOutput_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, int, Output, FreqMassOutput); - - storageLastTimestep_ = Scalar(0); - lastMassOutputTime_ = Scalar(0); - - evaporationFile.open("evaporation.out"); - evaporationFile << "#Time[d]" << " " - << "WaterMass[kg]" - << std::endl; - liveEvaporationRates_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, bool, Output, LiveEvaporationRates); - - outfile.open("storage.out"); - outfile << "Time;" - << "TotalMassChange;" - << "WaterMassChange;" - << "IntEnergyChange;" - << "WaterMass" - << std::endl; - } - //! \brief The destructor - ~TwoPTwoCNISubProblem() - { - evaporationFile.close(); - outfile.close(); - } - - // functions have to be overwritten, otherwise they remain uninitialized - //! \copydoc ImplicitProblem::bBoxMin() - const GlobalPosition &bBoxMin() const - { return bBoxMin_; } - - //! \copydoc ImplicitProblem::bBoxMax() - const GlobalPosition &bBoxMax() const - { return bBoxMax_; } - - /*! - * \name Problem parameters - */ - // \{ - - /*! - * \brief Returns the problem name - * - * This is used as a prefix for files generated by the simulation. - */ - const std::string &name() const - { return GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::string, Output, NamePM); } - - /*! - * \brief Called by the TimeManager in order to - * initialize the problem. - * - * If you overload this method don't forget to call - * ParentType::init() - */ - void init() - { - ParentType::init(); - - this->model().globalStorage(storageLastTimestep_); - } - // \} - - /*! - * \name Boundary conditions - */ - // \{ - - /*! - * \brief Specifies which kind of boundary condition should be - * used for which equation on a given boundary segment - * - * \param values Stores the value of the boundary type - * \param globalPos The global position - */ - void boundaryTypesAtPos(BoundaryTypes &values, - const GlobalPosition &globalPos) const - { - Scalar time = this->timeManager().time(); - - values.setAllNeumann(); - - if (onLowerBoundary_(globalPos)) - { - values.setDirichlet(temperatureIdx); - } - else if (onUpperBoundary_(globalPos) - && (globalPos[0] > runUpDistanceX_ - eps_) - && (time > initializationTime_)) - { - values.setAllCouplingNeumann(); - } - } - - /*! - * \brief Evaluate the boundary conditions for a Dirichlet - * boundary segment - * - * \param values Stores the Dirichlet values for the conservation equations in - * \f$ [ \textnormal{unit of primary variable} ] \f$ - * \param globalPos The global position - */ - void dirichletAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - initial_(values, globalPos); - } - - /*! - * \brief Evaluate the boundary conditions for a Neumann - * boundary segment. - * - * \param values The Neumann values for the conservation equations in units of - * \f$ [ \textnormal{unit of conserved quantity} / (m^{\textrm{dim}-1} \cdot s )] \f$ - * \param globalPos The global position - */ - void neumannAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - values = 0.; - } - - // \} - - /*! - * \name Volume terms - */ - // \{ - - /*! - * \brief Returns the source term - * - * \param values Stores the source values for the conservation equations in - * \f$ [ \textnormal{unit of primary variable} / (m^\textrm{dim} \cdot s )] \f$ - * \param globalPos The global position - */ - void sourceAtPos(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - values = Scalar(0); - } - - /*! - * \brief Evaluates the initial values for a control volume - * - * \param values Stores the initial values for the conservation equations in - * \f$ [ \textnormal{unit of primary variables} ] \f$ - * \param globalPos The global position - */ - void initialAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - values = 0.; - - initial_(values, globalPos); - } - - /*! - * \brief Return the initial phase state inside a control volume. - * - * \param vertex The vertex - * \param vIdxGlobal The global index of the vertex - * \param globalPos The global position - */ - int initialPhasePresence(const Vertex &vertex, - const int &vIdxGlobal, - const GlobalPosition &globalPos) const - { - return bothPhases; - } - - /*! - * \brief Called by the time manager after the time integration to - * do some post processing on the solution. - */ - void postTimeStep() - { - // Calculate masses - PrimaryVariables storage; - - this->model().globalStorage(storage); - const Scalar time = this->timeManager().time() + this->timeManager().timeStepSize(); - - // Write mass balance information for rank 0 - if (this->gridView().comm().rank() == 0) - { - if (this->timeManager().timeStepIndex() % freqMassOutput_ == 0 - || this->timeManager().episodeWillBeFinished()) - { - PrimaryVariables storageChange(0.); - storageChange = storageLastTimestep_ - storage; - - assert( (Dune::FloatCmp::ne<Scalar, Dune::FloatCmp::absolute>(time - lastMassOutputTime_, 0.0, 1.0e-30)) ); - storageChange /= (time - lastMassOutputTime_); - // 2d: interface length has to be accounted for - // in order to obtain kg/m²s - storageChange /= (bBoxMax_[0]-bBoxMin_[0]); - - std::cout << "Time: " << time - << " TotalMass: " << storage[contiTotalMassIdx] - << " WaterMass: " << storage[contiWEqIdx] - << " IntEnergy: " << storage[energyEqIdx] - << " WaterMassChange: " << storageChange[contiWEqIdx] - << std::endl; - if (Dune::FloatCmp::ne<Scalar, Dune::FloatCmp::absolute>(this->timeManager().time(), 0.0, 1.0e-30)) - { - outfile << time << ";" - << storageChange[contiTotalMassIdx] << ";" - << storageChange[contiWEqIdx] << ";" - << storageChange[energyEqIdx] << ";" - << storage[contiWEqIdx] - << std::endl; - - evaporationFile << time/86400.0 << " " << storageChange[contiWEqIdx]*86400.0 << std::endl; - gnuplot_.resetPlot(); - gnuplot_.setOpenPlotWindow(liveEvaporationRates_); - gnuplot_.setXRange(0.0, time/86400.0); - gnuplot_.setYRange(0.0, 12.0); - gnuplot_.setXlabel("time [d]"); - gnuplot_.setYlabel("evaporation rate [mm/d]"); - gnuplot_.addFileToPlot("evaporation.out", "evaporation.out"); - gnuplot_.plot("evaporation"); - } - - storageLastTimestep_ = storage; - lastMassOutputTime_ = time; - } - } - } - - // \} - -private: - /*! - * \brief Internal method for the initial condition - * (reused for the dirichlet conditions!) - */ - void initial_(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - values[pNIdx] = refPressure_ - + 1000.*this->gravity()[1]*(globalPos[1]-bBoxMax_[1]); - values[sWIdx] = initialSw_; - values[temperatureIdx] = refTemperature_; - } - - bool onLeftBoundary_(const GlobalPosition &globalPos) const - { return globalPos[0] < bBoxMin_[0] + eps_; } - - bool onRightBoundary_(const GlobalPosition &globalPos) const - { return globalPos[0] > bBoxMax_[0] - eps_; } - - bool onLowerBoundary_(const GlobalPosition &globalPos) const - { return globalPos[1] < bBoxMin_[1] + eps_; } - - bool onUpperBoundary_(const GlobalPosition &globalPos) const - { return globalPos[1] > bBoxMax_[1] - eps_; } - - static constexpr Scalar eps_ = 1e-8; - GlobalPosition bBoxMin_; - GlobalPosition bBoxMax_; - - int freqMassOutput_; - - PrimaryVariables storageLastTimestep_; - Scalar lastMassOutputTime_; - - Scalar refTemperature_; - Scalar refPressure_; - Scalar initialSw_; - - Scalar runUpDistanceX_; - Scalar initializationTime_; - std::ofstream outfile; - - GnuplotInterface<Scalar> gnuplot_; - std::ofstream evaporationFile; - bool liveEvaporationRates_; -}; -} //end namespace Dumux - -#endif diff --git a/test/multidomain/2cnistokes2p2cni/CMakeLists.txt b/test/multidomain/2cnistokes2p2cni/CMakeLists.txt deleted file mode 100644 index bd2a5c84800930a42f82f147ff1f45f4c9334384..0000000000000000000000000000000000000000 --- a/test/multidomain/2cnistokes2p2cni/CMakeLists.txt +++ /dev/null @@ -1,30 +0,0 @@ -add_input_file_links() - -add_dumux_test(test_2cnistokes2p2cni test_2cnistokes2p2cni test_2cnistokes2p2cni.cc - python ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py - --script fuzzy - --command "${CMAKE_CURRENT_BINARY_DIR}/test_2cnistokes2p2cni -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_2cnistokes2p2cni_reference.input" - --files ${CMAKE_SOURCE_DIR}/test/references/2cnistokes2p2cni-ff-reference.vtu - ${CMAKE_CURRENT_BINARY_DIR}/stokes2cni-00007.vtu - ${CMAKE_SOURCE_DIR}/test/references/2cnistokes2p2cni-pm-reference.vtu - ${CMAKE_CURRENT_BINARY_DIR}/2p2cni-00007.vtu - --zeroThreshold {"v_1":1e-6,"velocityN_0":5e-11,"velocityW_0":5e-10,"velocityW_1":5e-9}) - -add_dumux_test(test_2cnistokes2p2cni_boundarylayer test_2cnistokes2p2cni test_2cnistokes2p2cni.cc - python ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py - --script fuzzy - --command "${CMAKE_CURRENT_BINARY_DIR}/test_2cnistokes2p2cni -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_2cnistokes2p2cni_boundarylayer.input" - --files ${CMAKE_SOURCE_DIR}/test/references/2cnistokes2p2cniboundarylayer-ff-reference.vtu - ${CMAKE_CURRENT_BINARY_DIR}/stokes2cni_boundarylayer-00008.vtu - ${CMAKE_SOURCE_DIR}/test/references/2cnistokes2p2cniboundarylayer-pm-reference.vtu - ${CMAKE_CURRENT_BINARY_DIR}/2p2cni_boundarylayer-00008.vtu - --zeroThreshold {"v_1":1e-6,"velocityN_0":1e-8,"velocityN_1":1e-8,"velocityW_0":1e-8,"velocityW_1":1e-8,"pc":1e2,"mobN":1e-2}) - -#install sources -install(FILES -2cnistokes2p2cniproblem.hh -2cnistokes2p2cnispatialparams.hh -2p2cnisubproblem.hh -stokes2cnisubproblem.hh -test_2cnistokes2p2cni.cc -DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/test/multidomain/2cnistokes2p2cni) diff --git a/test/multidomain/2cnistokes2p2cni/stokes2cnisubproblem.hh b/test/multidomain/2cnistokes2p2cni/stokes2cnisubproblem.hh deleted file mode 100644 index 0413c125ced24cd581a923fcf04531e9ba30f128..0000000000000000000000000000000000000000 --- a/test/multidomain/2cnistokes2p2cni/stokes2cnisubproblem.hh +++ /dev/null @@ -1,483 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/** - * \file - * \brief Non-isothermal two-component stokes subproblem with air flowing - * from the left to the right and coupling at the bottom. - */ -#ifndef DUMUX_STOKES2CNI_SUBPROBLEM_HH -#define DUMUX_STOKES2CNI_SUBPROBLEM_HH - -#include <dumux/freeflow/stokesncni/model.hh> -#include <dumux/multidomain/2cnistokes2p2cni/stokesncnicouplinglocalresidual.hh> -#include <dumux/multidomain/subdomainpropertydefaults.hh> - -namespace Dumux -{ - -template <class TypeTag> -class Stokes2cniSubProblem; - -////////// -// Specify the properties for the Stokes problem -////////// -namespace Properties -{ -NEW_TYPE_TAG(Stokes2cniSubProblem, - INHERITS_FROM(BoxStokesncni, SubDomain)); - -// Set the problem property -SET_TYPE_PROP(Stokes2cniSubProblem, Problem, Stokes2cniSubProblem<TypeTag>); - -// Use the Stokes2cniCouplingLocalResidual for the computation of the local residual in the Stokes domain -SET_TYPE_PROP(Stokes2cniSubProblem, LocalResidual, StokesncniCouplingLocalResidual<TypeTag>); - -// Used the fluid system from the coupled problem -SET_TYPE_PROP(Stokes2cniSubProblem, - FluidSystem, - typename GET_PROP_TYPE(typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag), FluidSystem)); - -// use formulation based on mass fractions -SET_BOOL_PROP(Stokes2cniSubProblem, UseMoles, false); - -// Disable gravity in the Stokes domain -SET_BOOL_PROP(Stokes2cniSubProblem, ProblemEnableGravity, false); - -// switch inertia term on or off -SET_BOOL_PROP(Stokes2cniSubProblem, EnableNavierStokes, false); -} - -/*! - * \ingroup ImplicitTestProblems - * \ingroup TwoPTwoCNIStokesTwoCNIModel - * \brief Non-isothermal two-component stokes subproblem with air flowing - * from the left to the right and coupling at the bottom. - * - * The Stokes subdomain is sized 0.25m times 0.25m. The boundary conditions - * for the momentum balances are all set to Dirichlet, except on the right - * boundary, where outflow conditions are set. The mass balance receives - * outflow BCs, which are replaced in the localresidual by the sum - * of the two momentum balances. In the middle of the right boundary, - * one vertex receives Dirichlet BCs, to set the pressure level. - * - * This sub problem uses the \ref StokesncniModel. It is part of the - * 2cnistokes2p2cni model and is combined with the 2p2cnisubproblem for - * the Darcy domain. - */ -template <class TypeTag> -class Stokes2cniSubProblem : public StokesProblem<TypeTag> -{ - typedef Stokes2cniSubProblem<TypeTag> ThisType; - typedef StokesProblem<TypeTag> ParentType; - - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; - - enum { - // Number of equations and grid dimension - numEq = GET_PROP_VALUE(TypeTag, NumEq), - dim = GridView::dimension - }; - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - enum { - // equation indices - massBalanceIdx = Indices::massBalanceIdx, - momentumXIdx = Indices::momentumXIdx, //!< Index of the x-component of the momentum balance - momentumYIdx = Indices::momentumYIdx, //!< Index of the y-component of the momentum balance - momentumZIdx = Indices::momentumZIdx, //!< Index of the z-component of the momentum balance - transportEqIdx = Indices::transportEqIdx, //!< Index of the transport equation (massfraction) - energyEqIdx = Indices::energyEqIdx //!< Index of the energy equation (temperature) - }; - enum { // primary variable indices - pressureIdx = Indices::pressureIdx, - velocityXIdx = Indices::velocityXIdx, - velocityYIdx = Indices::velocityYIdx, - velocityZIdx = Indices::velocityZIdx, - massOrMoleFracIdx = Indices::massOrMoleFracIdx, - temperatureIdx = Indices::temperatureIdx - }; - enum { phaseIdx = Indices::phaseIdx }; - enum { numComponents = Indices::numComponents }; - enum { - transportCompIdx = Indices::transportCompIdx, //!< water component index - phaseCompIdx = Indices::phaseCompIdx //!< air component index - }; - - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; - - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename GridView::template Codim<dim>::Entity Vertex; - typedef typename GridView::ctype CoordScalar; - typedef typename GridView::Intersection Intersection; - - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - typedef typename GET_PROP_TYPE(TypeTag, FluidState) FluidState; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef Dune::FieldVector<CoordScalar, dim> GlobalPosition; - -public: - /*! - * \brief The sub-problem for the Stokes subdomain - * - * \param timeManager The TimeManager which is used by the simulation - * \param gridView The simulation's idea about physical space - */ - Stokes2cniSubProblem(TimeManager &timeManager, const GridView &gridView) - : ParentType(timeManager, gridView) - { - std::vector<Scalar> positions0 = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::vector<Scalar>, Grid, Positions0); - std::vector<Scalar> positions1 = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::vector<Scalar>, Grid, Positions1); - - bBoxMin_[0] = positions0.front(); - bBoxMax_[0] = positions0.back(); - bBoxMin_[1] = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, InterfacePosY); - bBoxMax_[1] = positions1.back(); - runUpDistanceX_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, RunUpDistanceX); // first part of the interface without coupling - - refVelocity_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefVelocity); - refPressure_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefPressure); - refMassfrac_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefMassfrac); - refTemperature_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefTemperature); - - sinusVAmplitude_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusVelAmplitude); - sinusVPeriod_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusVelPeriod); - sinusPAmplitude_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusPressureAmplitude); - sinusPPeriod_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusPressurePeriod); - sinusXAmplitude_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusConcentrationAmplitude); - sinusXPeriod_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusConcentrationPeriod); - sinusTAmplitude_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusTemperatureAmplitude); - sinusTPeriod_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusTemperaturePeriod); - useDirichletBC_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, bool, FreeFlow, UseDirichletBC); - - initializationTime_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, TimeManager, InitTime); - } - - // functions have to be overwritten, otherwise they remain uninitialized - //! \copydoc ImplicitProblem::bBoxMin() - const GlobalPosition &bBoxMin() const - { return bBoxMin_; } - - //! \copydoc ImplicitProblem::bBoxMax() - const GlobalPosition &bBoxMax() const - { return bBoxMax_; } - - /*! - * \name Problem parameters - */ - // \{ - - /*! - * \brief Returns the problem name - * - * This is used as a prefix for files generated by the simulation. - */ - const std::string &name() const - { return GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::string, Output, NameFF); } - - // \} - - /*! - * \name Boundary conditions - */ - // \{ - - /*! - * \brief Specifies which kind of boundary condition should be - * used for which equation on a given boundary segment - * - * \param values Stores the value of the boundary type - * \param globalPos The global position - */ - void boundaryTypesAtPos(BoundaryTypes &values, - const GlobalPosition &globalPos) const - { - const Scalar time = this->timeManager().time(); - - values.setAllDirichlet(); - - if (onUpperBoundary_(globalPos)) - { - if (useDirichletBC_) - { - values.setNeumann(transportEqIdx); - values.setDirichlet(temperatureIdx); - } - else - { - values.setNeumann(transportEqIdx); - values.setNeumann(energyEqIdx); - } - } - - // Left inflow boundaries should be Neumann, otherwise the - // evaporative fluxes are much more grid dependent - if (onLeftBoundary_(globalPos)) - { - if (useDirichletBC_) - { - values.setDirichlet(massOrMoleFracIdx); - values.setDirichlet(temperatureIdx); - } - else - { - values.setNeumann(transportEqIdx); - values.setNeumann(energyEqIdx); - if (onUpperBoundary_(globalPos)) // corner point - values.setAllDirichlet(); - } - } - - if (onRightBoundary_(globalPos)) - { - values.setAllOutflow(); - - if (onUpperBoundary_(globalPos)) // corner point - values.setAllDirichlet(); - } - - if (onLowerBoundary_(globalPos)) - { - values.setAllDirichlet(); - if (useDirichletBC_) - { - values.setNeumann(transportEqIdx); - values.setDirichlet(temperatureIdx); - } - else - { - values.setNeumann(transportEqIdx); - values.setNeumann(energyEqIdx); - if (onLeftBoundary_(globalPos)) // corner point - values.setAllDirichlet(); - } - - if (globalPos[0] > runUpDistanceX_-eps_ && time > initializationTime_) - { - values.setAllCouplingDirichlet(); - values.setCouplingNeumann(momentumXIdx); - values.setCouplingNeumann(momentumYIdx); - } - } - - // the mass balance has to be of type outflow - // it does not get a coupling condition, since pn is a condition for stokes - values.setOutflow(massBalanceIdx); - - // set pressure at one point, do NOT specify this - // if the Darcy domain has a Dirichlet condition for pressure - if (onRightBoundary_(globalPos)) - { - if (time > initializationTime_) - values.setDirichlet(pressureIdx); - else - if (!onLowerBoundary_(globalPos) && !onUpperBoundary_(globalPos)) - values.setDirichlet(pressureIdx); - } - } - - /*! - * \brief Evaluates the boundary conditions for a Dirichlet - * boundary segment - * - * \param values Stores the Dirichlet values for the conservation equations in - * \f$ [ \textnormal{unit of primary variable} ] \f$ - * \param globalPos The global position - */ - void dirichletAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - values = 0.0; - - FluidState fluidState; - updateFluidStateForBC_(fluidState); - - const Scalar density = - FluidSystem::density(fluidState, phaseIdx); - - values[velocityXIdx] = xVelocity_(globalPos); - values[velocityYIdx] = 0.0; - values[pressureIdx] = refPressure() + - density*this->gravity()[1]*(globalPos[1] - bBoxMin_[1]); - values[massOrMoleFracIdx] = refMassfrac(); - values[temperatureIdx] = refTemperature(); - } - - /*! - * \brief Evaluate the boundary conditions for a Neumann - * boundary segment. - * - * \param values The Neumann values for the conservation equations in units of - * \f$ [ \textnormal{unit of conserved quantity} / (m^{\textrm{dim}-1} \cdot s )] \f$ - * \param globalPos The global position - */ - void neumannAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - values = 0.; - - FluidState fluidState; - updateFluidStateForBC_(fluidState); - - const Scalar density = - FluidSystem::density(fluidState, phaseIdx); - const Scalar enthalpy = - FluidSystem::enthalpy(fluidState, phaseIdx); - const Scalar xVelocity = xVelocity_(globalPos); - - if (onLeftBoundary_(globalPos) - && globalPos[1] > bBoxMin_[1] - eps_ && globalPos[1] < bBoxMax_[1] + eps_) - { - values[transportEqIdx] = -xVelocity*density*refMassfrac(); - values[energyEqIdx] = -xVelocity*density*enthalpy; - } - } - - // \} - - /*! - * \brief Returns the source term - * - * \param values Stores the source values for the conservation equations in - * \f$ [ \textnormal{unit of primary variable} / (m^\textrm{dim} \cdot s )] \f$ - * \param globalPos The global position - */ - void sourceAtPos(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - // The source term of the mass balance has to be chosen as - // div (q_momentum) in the problem file - values = Scalar(0); - } - - /*! - * \brief Evaluate the initial value for a control volume. - * - * \param values Stores the initial values for the conservation equations in - * \f$ [ \textnormal{unit of primary variables} ] \f$ - * \param globalPos The global position - */ - void initialAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - initial_(values, globalPos); - } - // \} - - //! \brief Returns the reference velocity. - const Scalar refVelocity() const - { return refVelocity_ + variation_(sinusVAmplitude_, sinusVPeriod_); } - - //! \brief Returns the reference pressure. - const Scalar refPressure() const - { return refPressure_ + variation_(sinusPAmplitude_, sinusPPeriod_); } - - //! \brief Returns the reference mass fraction. - const Scalar refMassfrac() const - { return refMassfrac_ + variation_(sinusXAmplitude_, sinusXPeriod_); } - - //! \brief Returns the reference temperature. - const Scalar refTemperature() const - { return refTemperature_+ variation_(sinusTAmplitude_, sinusTPeriod_); } - -private: - /*! - * \brief Internal method for the initial condition - * (reused for the dirichlet conditions!) - */ - void initial_(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - FluidState fluidState; - updateFluidStateForBC_(fluidState); - - const Scalar density = - FluidSystem::density(fluidState, phaseIdx); - - values[velocityXIdx] = xVelocity_(globalPos); - values[velocityYIdx] = 0.; - - values[pressureIdx] = refPressure() - + density*this->gravity()[1]*(globalPos[1] - bBoxMin_[1]); - values[massOrMoleFracIdx] = refMassfrac(); - values[temperatureIdx] = refTemperature(); - } - - //! \brief set the profile of the inflow velocity (horizontal direction) - const Scalar xVelocity_(const GlobalPosition &globalPos) const - { - const Scalar vmax = refVelocity(); - return 4*vmax*(globalPos[1] - bBoxMin_[1])*(bBoxMax_[1] - globalPos[1]) - / (height_()*height_()) + 0.00134; - } - - //! \brief updates the fluid state to obtain required quantities for IC/BC - void updateFluidStateForBC_(FluidState& fluidState) const - { - fluidState.setTemperature(refTemperature()); - fluidState.setPressure(phaseIdx, refPressure()); - // setMassFraction() has only to be called 1-numComponents times - fluidState.setMassFraction(phaseIdx, transportCompIdx, refMassfrac()); - } - - // can be used for the variation of a boundary condition - const Scalar variation_(const Scalar amplitude, const Scalar period) const - { return sin(2*M_PI*this->timeManager().time()/period) * amplitude; } - - bool onLeftBoundary_(const GlobalPosition &globalPos) const - { return globalPos[0] < bBoxMin_[0] + eps_; } - - bool onRightBoundary_(const GlobalPosition &globalPos) const - { return globalPos[0] > bBoxMax_[0] - eps_; } - - bool onLowerBoundary_(const GlobalPosition &globalPos) const - { return globalPos[1] < bBoxMin_[1] + eps_; } - - bool onUpperBoundary_(const GlobalPosition &globalPos) const - { return globalPos[1] > bBoxMax_[1] - eps_; } - - const Scalar height_() const - { return bBoxMax_[1] - bBoxMin_[1]; } - - static constexpr Scalar eps_ = 1e-8; - - GlobalPosition bBoxMin_; - GlobalPosition bBoxMax_; - - Scalar refVelocity_; - Scalar refPressure_; - Scalar refMassfrac_; - Scalar refTemperature_; - - Scalar sinusVAmplitude_; - Scalar sinusVPeriod_; - Scalar sinusPAmplitude_; - Scalar sinusPPeriod_; - Scalar sinusXAmplitude_; - Scalar sinusXPeriod_; - Scalar sinusTAmplitude_; - Scalar sinusTPeriod_; - - bool useDirichletBC_; - - Scalar runUpDistanceX_; - Scalar initializationTime_; -}; -} //end namespace - -#endif // DUMUX_STOKES2CNI_SUBPROBLEM_HH diff --git a/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni.cc b/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni.cc deleted file mode 100644 index 3718717de818bd6f78ee264f01d94ed02c843720..0000000000000000000000000000000000000000 --- a/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni.cc +++ /dev/null @@ -1,88 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Test for the coupled non-isothermal two-component Stokes and - * non-isothermal two-phase two-component Darcy model - */ - -#include <config.h> -#include <iostream> - -#include <dune/common/parallel/mpihelper.hh> - -#if HAVE_DUNE_MULTIDOMAIN - -#include <dumux/common/start.hh> - -#include "2cnistokes2p2cniproblem.hh" - -/*! - * \brief Print a usage string for simulations. - * - * \param progName The name of the program, that was tried to be started. - * \param errorMsg The error message that was issued by the start function. - * Comprises the thing that went wrong and a general help message. - */ -void printUsage(const char *progName, const std::string &errorMsg) -{ - if (errorMsg.size() > 0) { - std::string errorMessageOut = "\nUsage: "; - errorMessageOut += progName; - errorMessageOut += " [options]\n"; - errorMessageOut += errorMsg; - errorMessageOut += "\n\nThe list of optional options for this program is:\n" - "[BoundaryLayer]\n" - "Model Number/ID of the used model\n" - "Offset Virtual run-up distance for BL models [m]\n" - "ConstThickness Constant BL thickness (model 1) [m]\n" - "YPlus Conversion value (model 4-6) [-]\n" - "RoughnessLength Characteristic roughness length (model 6)\n" - "\n" - "[MassTransferModel]\n" - "Coefficient Coeffient used for the exponential law (model 1) [-]\n" - "CharPoreRadius Characteristic pore radius for Schluender model (model 2+4) [m]\n" - "\n"; - - std::cout << errorMessageOut - << "\n"; - } -} - -int main(int argc, char** argv) -{ -#if (HAVE_SUPERLU || HAVE_UMFPACK) - typedef TTAG(TwoCNIStokesTwoPTwoCNITestProblem) ProblemTypeTag; - return Dumux::start<ProblemTypeTag>(argc, argv, printUsage); -#else -#warning "You need to have SuperLU or UMFPack installed to run this test." - std::cerr << "You need to have SuperLU or UMFPack installed to run this test\n"; - return 77; -#endif -} - -#else -int main(int argc, char** argv) -{ -#warning You need to have dune-multidomain installed to run this test - std::cerr << "You need to have dune-multidomain installed to run this test\n"; - return 77; -} -#endif diff --git a/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni.input b/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni.input deleted file mode 100644 index d15c13e65e334c9cefec74a69ce5d615e7ab803d..0000000000000000000000000000000000000000 --- a/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni.input +++ /dev/null @@ -1,76 +0,0 @@ -[TimeManager] -DtInitial = 5e-1 # [s] -MaxTimeStepSize = 360 # [s] -InitTime = 864 # [s] Initialization time without coupling -TEnd= 0.864e6 # [s] -EpisodeLength = 43200 # [s] - -[Grid] -Cells0 = 30 -Cells1 = 30 30 -Grading0 = 1.0 -Grading1 = -1.1 1.1 -Positions0 = 0.0 0.25 -Positions1 = 0.0 0.25 0.5 - -RunUpDistanceX = 0.0 # [m] Horizontal position without coupling to PM -NoDarcyX = 0.0 # [m] Horizontal position without PM below -InterfacePosY = 0.25 # [m] Vertical position of coupling interface - -[Output] -NameFF = stokes2cni -NamePM = 2p2cni -#Frequency of restart file, flux and VTK output -FreqRestart = 1000 # how often restart files are written out -FreqOutput = 10 # frequency of VTK output -FreqMassOutput = 2 # frequency of mass and evaporation rate output (Darcy) -LiveEvaporationRates = true # plot evaporation rates using gnuplot interface - -[Stokes] -StabilizationAlpha = -1.0 - -[FreeFlow] -UseDirichletBC = true # dirichlet values are set at the inflow boundary -RefVelocity = 3.5 # [m/s] -RefPressure = 1e5 # [Pa] -RefMassfrac = 0.008 # [-] -RefTemperature = 298.15 # [K] -SinusVelAmplitude = 0.0 # [m/s] -SinusVelPeriod = 3600 # [s] -SinusPressureAmplitude = 0.0 # [Pa] -SinusPressurePeriod = 3600 # [s] -SinusConcentrationAmplitude = 0.0 # [-] -SinusConcentrationPeriod = 3600 # [s] -SinusTemperatureAmplitude = 0.0 # [K] -SinusTemperaturePeriod = 3600 # [s] - -[BoundaryLayer] -Model = 0 - -[MassTransfer] -Model = 0 - -[PorousMedium] -RefPressure = 1e5 # [Pa] -RefTemperature = 298.15 # [K] -InitialSw = 0.98 # [-] - -[SpatialParams] -AlphaBJ = 1.0 # [-] -Permeability = 2.65e-10 # [m^2] -Porosity = 0.41 # [-] -Swr = 0.005 # [-] -Snr = 0.01 # [-] -VgAlpha = 6.371e-4 # [1/Pa] -VgN = 8.0 # [-] -LambdaSolid = 5.26 # [W/(m*K)] - -[Newton] -MaxRelativeShift = 1e-5 -TargetSteps = 8 -MaxSteps = 12 -WriteConvergence = false -MaxTimeStepDivisions = 20 - -[LinearSolver] -Verbosity = 0 diff --git a/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni_boundarylayer.input b/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni_boundarylayer.input deleted file mode 100644 index 17f916f6a62dbe7650c7726ccbd3fac938dafad1..0000000000000000000000000000000000000000 --- a/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni_boundarylayer.input +++ /dev/null @@ -1,79 +0,0 @@ -[TimeManager] -DtInitial = 50 # [s] -MaxTimeStepSize = 360 # [s] -InitTime = 0 # [s] Initialization time without coupling -TEnd= 3600 # [s] -EpisodeLength = 43200 # [s] - -[Grid] -Cells0 = 6 -Cells1 = 4 4 4 -Grading0 = 1.0 -Grading1 = -1.5 1.5 -1.5 -Positions0 = 0.0 0.25 -Positions1 = 0.0 0.25 0.375 0.5 - -RunUpDistanceX = 0.0 # [m] Horizontal position without coupling to PM -NoDarcyX = 0.0 # [m] Horizontal position without PM below -InterfacePosY = 0.25 # [m] Vertical position of coupling interface - -[Output] -NameFF = stokes2cni_boundarylayer -NamePM = 2p2cni_boundarylayer -#Frequency of restart file, flux and VTK output -FreqRestart = 1000 # how often restart files are written out -FreqOutput = 2 # frequency of VTK output -FreqMassOutput = 2 # frequency of mass and evaporation rate output (Darcy) -LiveEvaporationRates = false # plot evaporation rates using gnuplot interface - -[Stokes] -StabilizationAlpha = -1.0 - -[FreeFlow] -UseDirichletBC = true # dirichlet values are set at the inflow boundary -RefVelocity = 3.5 # [m/s] -RefPressure = 1e5 # [Pa] -RefMassfrac = 0.008 # [-] -RefTemperature = 298.15 # [K] -SinusVelAmplitude = 0.0 # [m/s] -SinusVelPeriod = 3600 # [s] -SinusPressureAmplitude = 0.0 # [Pa] -SinusPressurePeriod = 3600 # [s] -SinusConcentrationAmplitude = 0.0 # [-] -SinusConcentrationPeriod = 3600 # [s] -SinusTemperatureAmplitude = 0.0 # [K] -SinusTemperaturePeriod = 3600 # [s] - -[BoundaryLayer] -Model = 4 # Number/ID of the used model -Offset = 0.25 # Virtual run-up distance for BL models [m] -YPlus = 10 # Conversion value (model 4-6) [-] - -[MassTransfer] -Model = 4 -CharPoreRadius = 0.001 # Characteristic pore radius for Schluender model (model 2+4) [m] - -[PorousMedium] -RefPressure = 1e5 # [Pa] -RefTemperature = 298.15 # [K] -InitialSw = 0.98 # [-] - -[SpatialParams] -AlphaBJ = 1.0 # [-] -Permeability = 2.65e-10 # [m^2] -Porosity = 0.41 # [-] -Swr = 0.005 # [-] -Snr = 0.01 # [-] -VgAlpha = 6.371e-4 # [1/Pa] -VgN = 8.0 # [-] -LambdaSolid = 5.26 # [W/(m*K)] - -[Newton] -MaxRelativeShift = 1e-5 -TargetSteps = 8 -MaxSteps = 12 -WriteConvergence = false -MaxTimeStepDivisions = 20 - -[LinearSolver] -Verbosity = 0 diff --git a/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni_reference.input b/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni_reference.input deleted file mode 100644 index 71f10f74ef6ed4b9ce9a237bd5b2a7110ecbd3fd..0000000000000000000000000000000000000000 --- a/test/multidomain/2cnistokes2p2cni/test_2cnistokes2p2cni_reference.input +++ /dev/null @@ -1,76 +0,0 @@ -[TimeManager] -DtInitial = 50 # [s] -MaxTimeStepSize = 360 # [s] -InitTime = 0 # [s] Initialization time without coupling -TEnd= 3600 # [s] -EpisodeLength = 43200 # [s] - -[Grid] -Cells0 = 6 -Cells1 = 4 4 4 -Grading0 = 1.0 -Grading1 = -1.5 1.5 -1.5 -Positions0 = 0.0 0.25 -Positions1 = 0.0 0.25 0.375 0.5 - -RunUpDistanceX = 0.0 # [m] Horizontal position without coupling to PM -NoDarcyX = 0.0 # [m] Horizontal position without PM below -InterfacePosY = 0.25 # [m] Vertical position of coupling interface - -[Output] -NameFF = stokes2cni -NamePM = 2p2cni -#Frequency of restart file, flux and VTK output -FreqRestart = 1000 # how often restart files are written out -FreqOutput = 2 # frequency of VTK output -FreqMassOutput = 2 # frequency of mass and evaporation rate output (Darcy) -LiveEvaporationRates = false # plot evaporation rates using gnuplot interface - -[Stokes] -StabilizationAlpha = -1.0 - -[FreeFlow] -UseDirichletBC = true # dirichlet values are set at the inflow boundary -RefVelocity = 3.5 # [m/s] -RefPressure = 1e5 # [Pa] -RefMassfrac = 0.008 # [-] -RefTemperature = 298.15 # [K] -SinusVelAmplitude = 0.0 # [m/s] -SinusVelPeriod = 3600 # [s] -SinusPressureAmplitude = 0.0 # [Pa] -SinusPressurePeriod = 3600 # [s] -SinusConcentrationAmplitude = 0.0 # [-] -SinusConcentrationPeriod = 3600 # [s] -SinusTemperatureAmplitude = 0.0 # [K] -SinusTemperaturePeriod = 3600 # [s] - -[BoundaryLayer] -Model = 0 - -[MassTransfer] -Model = 0 - -[PorousMedium] -RefPressure = 1e5 # [Pa] -RefTemperature = 298.15 # [K] -InitialSw = 0.98 # [-] - -[SpatialParams] -AlphaBJ = 1.0 # [-] -Permeability = 2.65e-10 # [m^2] -Porosity = 0.41 # [-] -Swr = 0.005 # [-] -Snr = 0.01 # [-] -VgAlpha = 6.371e-4 # [1/Pa] -VgN = 8.0 # [-] -LambdaSolid = 5.26 # [W/(m*K)] - -[Newton] -MaxRelativeShift = 1e-5 -TargetSteps = 8 -MaxSteps = 12 -WriteConvergence = false -MaxTimeStepDivisions = 20 - -[LinearSolver] -Verbosity = 0 diff --git a/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh b/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh deleted file mode 100644 index 5584e7b172be73018b588bfa82c5c5a4fa6ff6c4..0000000000000000000000000000000000000000 --- a/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cniproblem.hh +++ /dev/null @@ -1,216 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/** - * \file - * \brief The problem which couples a non-isothermal two-component ZeroEq - * and a non-isothermal two-phase two-component Darcy model. - */ -#ifndef DUMUX_TWOCNIZEROEQTWOPTWOCNIPROBLEM_HH -#define DUMUX_TWOCNIZEROEQTWOPTWOCNIPROBLEM_HH - -#include <dune/grid/multidomaingrid.hh> -#include <dune/grid/common/gridinfo.hh> - -#include <dumux/material/fluidsystems/h2oair.hh> -#include <dumux/multidomain/2cnistokes2p2cni/localoperator.hh> -#include <dumux/multidomain/2cnistokes2p2cni/problem.hh> -#include <dumux/multidomain/2cnistokes2p2cni/propertydefaults.hh> - -#include "2cnizeroeq2p2cnispatialparameters.hh" -#include "zeroeq2cnisubproblem.hh" -#include "2p2cnisubproblem.hh" - -namespace Dumux -{ -template <class TypeTag> -class TwoCNIZeroEqTwoPTwoCNITestProblem; - -namespace Properties -{ -NEW_TYPE_TAG(TwoCNIZeroEqTwoPTwoCNITestProblem, INHERITS_FROM(TwoCNIStokesTwoPTwoCNI)); - -// Set the grid type -SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNITestProblem, Grid, Dune::YaspGrid<2, Dune::TensorProductCoordinates<typename GET_PROP_TYPE(TypeTag, Scalar), 2> >); - -// Set the global problem -SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNITestProblem, Problem, TwoCNIZeroEqTwoPTwoCNITestProblem<TypeTag>); - -// Set the local coupling operator -SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNITestProblem, MultiDomainCouplingLocalOperator, - TwoCNIStokesTwoPTwoCNILocalOperator<TypeTag>); - -// Set the two sub-problems of the global problem -SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNITestProblem, SubDomain1TypeTag, TTAG(ZeroEq2cniSubProblem)); -SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNITestProblem, SubDomain2TypeTag, TTAG(TwoPTwoCNISubProblem)); - -// Set the global problem in the context of the two sub-problems -SET_TYPE_PROP(ZeroEq2cniSubProblem, MultiDomainTypeTag, TTAG(TwoCNIZeroEqTwoPTwoCNITestProblem)); -SET_TYPE_PROP(TwoPTwoCNISubProblem, MultiDomainTypeTag, TTAG(TwoCNIZeroEqTwoPTwoCNITestProblem)); - -// Set the other sub-problem for each of the two sub-problems -SET_TYPE_PROP(ZeroEq2cniSubProblem, OtherSubDomainTypeTag, TTAG(TwoPTwoCNISubProblem)); -SET_TYPE_PROP(TwoPTwoCNISubProblem, OtherSubDomainTypeTag, TTAG(ZeroEq2cniSubProblem)); - -// Set the same spatial parameters for both sub-problems -SET_TYPE_PROP(TwoPTwoCNISubProblem, SpatialParams, TwoCNIZeroEqTwoPTwoCNISpatialParams<TypeTag>); - -// Set the fluid system to use complex relations (last argument) -SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNITestProblem, FluidSystem, - FluidSystems::H2OAir<typename GET_PROP_TYPE(TypeTag, Scalar)>); - -// If SuperLU is not available, the UMFPack solver is used: -#ifdef HAVE_SUPERLU -SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNITestProblem, LinearSolver, SuperLUBackend<TypeTag>); -#else -SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNITestProblem, LinearSolver, UMFPackBackend<TypeTag>); -#endif -} - -/*! - * \ingroup ImplicitTestProblems - * \ingroup TwoPTwoCNIZeroEqTwoCNIModel - * - * \brief The problem which couples a non-isothermal two-component ZeroEq (zeroeq2cni) - * and a non-isothermal two-phase two-component Darcy model (2p2cni). - * - * It uses the multidomain problem and specifies parameters for the two submodels. - * The initial and boundary conditions of the submodels are specified in the two subproblems, - * 2p2csubproblem.hh and zeroeq2csubproblem.hh, which are accessible via the coupled problem. - */ -template <class TypeTag = TTAG(TwoCNIZeroEqTwoPTwoCNITestProblem) > -class TwoCNIZeroEqTwoPTwoCNITestProblem : public TwoCNIStokesTwoPTwoCNIProblem<TypeTag> -{ - typedef TwoCNIZeroEqTwoPTwoCNITestProblem<TypeTag> ThisType; - typedef TwoCNIStokesTwoPTwoCNIProblem<TypeTag> ParentType; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; - - typedef typename GET_PROP_TYPE(TypeTag, GridCreator) GridCreator; - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGrid) MDGrid; - typedef typename MDGrid::LeafGridView MDGridView; - enum { dim = MDGridView::dimension }; - typedef Dune::FieldVector<Scalar, dim> GlobalPosition; - - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - -public: - /*! - * \brief The problem for the coupling of Stokes and Darcy flow - * - * \param timeManager The time manager - * \param gridView The grid view - */ - template<class GridView> - TwoCNIZeroEqTwoPTwoCNITestProblem(TimeManager &timeManager, - GridView gridView) - : ParentType(timeManager, gridView) - { - dtInit_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, TimeManager, DtInitial); - episodeLength_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, TimeManager, EpisodeLength); - - // define location of the interface - interfacePosY_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, InterfacePosY); - noDarcyX1_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, NoDarcyX1); - noDarcyX2_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, NoDarcyX2); - - // define output options - freqRestart_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, int, Output, FreqRestart); - freqOutput_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, int, Output, FreqOutput); - - zeroeq2cni_ = this->sdID1(); - twoPtwoCNI_ = this->sdID2(); - - initializeGrid(); - - // initialize the tables of the fluid system - FluidSystem::init(/*tempMin=*/273.15, /*tempMax=*/323.15, /*numTemp=*/50, - /*pMin=*/5e4, /*pMax=*/1.5e5, /*numP=*/100); - - this->timeManager().startNextEpisode(episodeLength_); - } - - /*! - * \brief Initialization of the grids - * - * This function splits the multidomain grid in the two - * individual subdomain grids and takes care of parallelization. - */ - void initializeGrid() - { - MDGrid& mdGrid = this->mdGrid(); - mdGrid.startSubDomainMarking(); - - // subdivide grid in two subdomains - for (const auto& element : elements(mdGrid.leafGridView(), Dune::Partitions::interior)) - { - GlobalPosition globalPos = element.geometry().center(); - - if (globalPos[1] > interfacePosY_) - mdGrid.addToSubDomain(zeroeq2cni_,element); - else - if(globalPos[0] > noDarcyX1_ && globalPos[0] < noDarcyX2_) - mdGrid.addToSubDomain(twoPtwoCNI_,element); - } - mdGrid.preUpdateSubDomains(); - mdGrid.updateSubDomains(); - mdGrid.postUpdateSubDomains(); - - gridinfo(this->sdGrid1()); - gridinfo(this->sdGrid2()); - } - - //! \copydoc ImplicitProblem::episodeEnd() - void episodeEnd() - { this->timeManager().startNextEpisode(episodeLength_); } - - //! \copydoc ImplicitProblem::shouldWriteRestartFile() - bool shouldWriteRestartFile() const - { - return (((this->timeManager().timeStepIndex() > 0) - && (this->timeManager().timeStepIndex() % freqRestart_ == 0)) - || this->timeManager().episodeWillBeFinished() - || this->timeManager().willBeFinished()); - } - - //! \copydoc ImplicitProblem::shouldWriteOutput() - bool shouldWriteOutput() const - { - return (this->timeManager().timeStepIndex() % freqOutput_ == 0 - || this->timeManager().episodeWillBeFinished() - || this->timeManager().willBeFinished()); - } - -private: - typename MDGrid::SubDomainType zeroeq2cni_; - typename MDGrid::SubDomainType twoPtwoCNI_; - - unsigned freqRestart_; - unsigned freqOutput_; - - Scalar interfacePosY_; - Scalar noDarcyX1_; - Scalar noDarcyX2_; - Scalar episodeLength_; - Scalar dtInit_; -}; - -} //end namespace - -#endif // DUMUX_TWOCNIZEROEQTWOPTWOCNIPROBLEM_HH diff --git a/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cnispatialparameters.hh b/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cnispatialparameters.hh deleted file mode 100644 index 55a885c9f9d0c694f799c75d61c8514c07b85f81..0000000000000000000000000000000000000000 --- a/test/multidomain/2cnizeroeq2p2cni/2cnizeroeq2p2cnispatialparameters.hh +++ /dev/null @@ -1,217 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Spatial parameters for the - * coupling of a non-isothermal two-component ZeroEq - * and a non-isothermal two-phase two-component Darcy model. - */ -#ifndef DUMUX_TWOCNIZEROEQTWOPTWOCNISPATIALPARAMS_HH -#define DUMUX_TWOCNIZEROEQTWOPTWOCNISPATIALPARAMS_HH - -#include <dumux/material/spatialparams/implicit.hh> -#include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh> -#include <dumux/material/fluidmatrixinteractions/2p/regularizedvangenuchten.hh> -#include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh> -#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> - -namespace Dumux -{ -//forward declaration -template<class TypeTag> -class TwoCNIZeroEqTwoPTwoCNISpatialParams; - -namespace Properties -{ -// The spatial parameters TypeTag -NEW_TYPE_TAG(TwoCNIZeroEqTwoPTwoCNISpatialParams); - -// Set the spatial parameters -SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNISpatialParams, SpatialParams, - TwoCNIZeroEqTwoPTwoCNISpatialParams<TypeTag>); - -// Set the material law parameterized by absolute saturations -SET_TYPE_PROP(TwoCNIZeroEqTwoPTwoCNISpatialParams, - MaterialLaw, - EffToAbsLaw<RegularizedVanGenuchten<typename GET_PROP_TYPE(TypeTag, Scalar)>>); -// EffToAbsLaw<RegularizedBrooksCorey<typename GET_PROP_TYPE(TypeTag, Scalar)> >); -} - - -/*! - * \ingroup ImplicitTestProblems - * \ingroup TwoPTwoCNIZeroEqTwoCNIModel - * \brief Definition of the spatial parameters for - * the coupling of a non-isothermal two-component ZeroEq - * and a non-isothermal two-phase two-component Darcy model. - */ -template<class TypeTag> -class TwoCNIZeroEqTwoPTwoCNISpatialParams : public ImplicitSpatialParams<TypeTag> -{ - typedef ImplicitSpatialParams<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GridView::ctype CoordScalar; - - enum { - dim=GridView::dimension, - dimWorld=GridView::dimensionworld - }; - typedef Dune::FieldVector<CoordScalar, dimWorld> GlobalPosition; - - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - - typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw; - typedef typename MaterialLaw::Params MaterialLawParams; - -public: - /*! - * \brief Spatial parameters for the - * coupling of a non-isothermal two-component ZeroEq - * and a non-isothermal two-phase two-component Darcy model. - * - * \param gridView The GridView which is used by the problem - */ - TwoCNIZeroEqTwoPTwoCNISpatialParams(const GridView& gridView) - : ParentType(gridView) - { - permeability_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, Permeability); - porosity_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, Porosity); - thermalConductivitySolid_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, ThermalConductivitySolid); - alphaBJ_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, AlphaBJ); - - spatialParams_.setSwr(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, Swr)); - spatialParams_.setSnr(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, Snr)); - spatialParams_.setVgAlpha(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, VgAlpha)); - spatialParams_.setVgn(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, VgN)); - } - - /*! - * \brief Returns the intrinsic permeability tensor \f$[m^2]\f$ - * - * \param element The finite element - * \param fvGeometry The finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume - */ - Scalar intrinsicPermeability(const Element &element, - const FVElementGeometry &fvGeometry, - const int scvIdx) const - { - return permeability_; - } - - /*! - * \brief Returns the porosity \f$[-]\f$ - * - * \param element The finite element - * \param fvGeometry The finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume - */ - Scalar porosity(const Element &element, - const FVElementGeometry &fvGeometry, - const int scvIdx) const - { - return porosity_; - } - - /*! - * \brief Returns the parameter object for the material law - * - * \param element The finite element - * \param fvGeometry The finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume - */ - const MaterialLawParams& materialLawParams(const Element &element, - const FVElementGeometry &fvGeometry, - const int scvIdx) const - { - return spatialParams_; - } - - /*! - * \brief Returns the heat capacity \f$[J / (kg K)]\f$ of the rock matrix. - * - * This is only required for non-isothermal models. - * - * \param element The finite element - * \param fvGeometry The finite volume geometry - * \param scvIdx The local index of the sub-control volume - */ - Scalar solidHeatCapacity(const Element &element, - const FVElementGeometry &fvGeometry, - const int scvIdx) const - { - return 790.0; - } - - /*! - * \brief Returns the density of the solid material (not the bulk density) \f$[kg/m^3]\f$ - * - * \param element The finite element - * \param fvGeometry The finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume - */ - Scalar solidDensity(const Element &element, - const FVElementGeometry &fvGeometry, - const int scvIdx) const - { - return 2650.0; - } - - /*! - * \brief Returns the thermal conductivity \f$[W/(m*K)]\f$ of the solid - * - * This is only required for non-isothermal models. - * - * \param element The finite element - * \param fvGeometry The finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume - */ - Scalar solidThermalConductivity(const Element &element, - const FVElementGeometry &fvGeometry, - const int scvIdx) const - { - return thermalConductivitySolid_; - } - - /*! - * \brief Evaluate the Beavers-Joseph coefficient at given position - * - * \param globalPos The global position - * - * \return Beavers-Joseph coefficient - */ - Scalar beaversJosephCoeffAtPos(const GlobalPosition &globalPos) const - { - return alphaBJ_; - } - -private: - Scalar permeability_; - Scalar porosity_; - Scalar thermalConductivitySolid_; - Scalar alphaBJ_; - - MaterialLawParams spatialParams_; -}; -} // end namespace - -#endif // DUMUX_TWOCNIZEROEQTWOPTWOCNISPATIALPARAMS_HH diff --git a/test/multidomain/2cnizeroeq2p2cni/2p2cnisubproblem.hh b/test/multidomain/2cnizeroeq2p2cni/2p2cnisubproblem.hh deleted file mode 100644 index 8b89135c31e8daa95ca5922a0466a7f8e2004e86..0000000000000000000000000000000000000000 --- a/test/multidomain/2cnizeroeq2p2cni/2p2cnisubproblem.hh +++ /dev/null @@ -1,390 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Non-isothermal two-phase two-component porous-medium subproblem - * with coupling at the top boundary. - */ -#ifndef DUMUX_2P2CNISUB_PROBLEM_HH -#define DUMUX_2P2CNISUB_PROBLEM_HH - -#include <dumux/porousmediumflow/2p2c/implicit/indices.hh> -#include <dumux/porousmediumflow/implicit/problem.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivityjohansen.hh> -#include <dumux/material/fluidmatrixinteractions/2p/thermalconductivitysomerton.hh> -#include <dumux/multidomain/subdomainpropertydefaults.hh> -#include <dumux/multidomain/localoperator.hh> -#include <dumux/multidomain/2cnistokes2p2cni/2p2cnicouplinglocalresidual.hh> - -#include "2cnizeroeq2p2cnispatialparameters.hh" - -namespace Dumux -{ -template <class TypeTag> -class TwoPTwoCNISubProblem; - -namespace Properties -{ -NEW_TYPE_TAG(TwoPTwoCNISubProblem, - INHERITS_FROM(BoxTwoPTwoCNI, SubDomain, TwoCNIZeroEqTwoPTwoCNISpatialParams)); - -// Set the problem property -SET_TYPE_PROP(TwoPTwoCNISubProblem, Problem, TwoPTwoCNISubProblem<TTAG(TwoPTwoCNISubProblem)>); - -// Use the 2p2cni local jacobian operator for the 2p2cniCoupling model -SET_TYPE_PROP(TwoPTwoCNISubProblem, LocalResidual, TwoPTwoCNICouplingLocalResidual<TypeTag>); - -// Choose pn and Sw as primary variables -SET_INT_PROP(TwoPTwoCNISubProblem, Formulation, TwoPTwoCFormulation::pnsw); - -// The gas component balance (air) is replaced by the total mass balance -SET_INT_PROP(TwoPTwoCNISubProblem, ReplaceCompEqIdx, GET_PROP_TYPE(TypeTag, Indices)::contiNEqIdx); - -// Use the fluid system from the coupled problem -SET_TYPE_PROP(TwoPTwoCNISubProblem, - FluidSystem, - typename GET_PROP_TYPE(typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag), FluidSystem)); - -// Johanson is used as model to compute the effective thermal heat conductivity -SET_TYPE_PROP(TwoPTwoCNISubProblem, ThermalConductivityModel, - ThermalConductivityJohansen<typename GET_PROP_TYPE(TypeTag, Scalar)>); - -// Use formulation based on mass fractions -SET_BOOL_PROP(TwoPTwoCNISubProblem, UseMoles, false); - -// Enable/disable velocity output -SET_BOOL_PROP(TwoPTwoCNISubProblem, VtkAddVelocity, true); - -// Enable gravity -SET_BOOL_PROP(TwoPTwoCNISubProblem, ProblemEnableGravity, true); -} - -/*! - * \ingroup ImplicitTestProblems - * \ingroup TwoPTwoCNIZeroEqTwoCNIModel - * \brief Non-isothermal two-phase two-component porous-medium subproblem - * with coupling at the top boundary. - * - * The porous-medium subdomain is sized 0.25m times 0.25m. The boundary conditions - * are Neumann no-flow everywhere, except at the top, where coupling conditions - * are applied to all balance equations. They handle the exchange to the free-flow - * subdomain. At the bottom of the porous-medium subdomain a constant temperature is - * set. - * - * This subproblem uses the \ref TwoPTwoCModel. It is part of a multidomain model and - * combined with the zeroeq2cnisubproblem for the free flow domain. - */ -template <class TypeTag = TTAG(TwoPTwoCNISubProblem) > -class TwoPTwoCNISubProblem : public ImplicitPorousMediaProblem<TypeTag> -{ - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - - typedef TwoPTwoCNISubProblem<TypeTag> ThisType; - typedef ImplicitPorousMediaProblem<TypeTag> ParentType; - - // copy some indices for convenience - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - - // the type tag of the coupled problem - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag) CoupledTypeTag; - - enum { numEq = GET_PROP_VALUE(TypeTag, NumEq) }; - enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) }; - enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) }; - enum { // the equation indices - contiTotalMassIdx = Indices::contiNEqIdx, - contiWEqIdx = Indices::contiWEqIdx, - energyEqIdx = Indices::energyEqIdx - }; - enum { // the indices of the primary variables - pressureIdx = Indices::pressureIdx, - switchIdx = Indices::switchIdx, - temperatureIdx = Indices::temperatureIdx - }; - enum { - wPhaseOnly = Indices::wPhaseOnly, - nPhaseOnly = Indices::nPhaseOnly, - bothPhases = Indices::bothPhases - }; - enum { - wPhaseIdx = Indices::wPhaseIdx, - nPhaseIdx = Indices::nPhaseIdx - }; - enum { // grid and world dimension - dim = GridView::dimension, - dimWorld = GridView::dimensionworld - }; - - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; - typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; - - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename GridView::template Codim<dim>::Entity Vertex; - typedef typename GridView::Intersection Intersection; - - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - - typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; - -public: - /*! - * \brief The sub-problem for the porous-medium subdomain - * - * \param timeManager The TimeManager which is used by the simulation - * \param gridView The simulation's idea about physical space - */ - TwoPTwoCNISubProblem(TimeManager &timeManager, const GridView &gridView) - : ParentType(timeManager, gridView) - { - Scalar noDarcyX1 = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, NoDarcyX1); - Scalar noDarcyX2 = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, NoDarcyX2); - std::vector<Scalar> positions0 = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::vector<Scalar>, Grid, Positions0); - std::vector<Scalar> positions1 = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::vector<Scalar>, Grid, Positions1); - - using std::max; - using std::min; - bBoxMin_[0] = max(positions0.front(),noDarcyX1); - bBoxMax_[0] = min(positions0.back(),noDarcyX2); - - bBoxMin_[1] = positions1.front(); - bBoxMax_[1] = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, InterfacePosY); - runUpDistanceX1_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, RunUpDistanceX1); // first part of the interface without coupling - runUpDistanceX2_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, RunUpDistanceX2); // second part of the interface without coupling - - refTemperature_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, PorousMedium, RefTemperaturePM); - refPressure_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, PorousMedium, RefPressurePM); - refSw_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, PorousMedium, RefSw); - - freqMassOutput_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, int, Output, FreqMassOutput); - - storageLastTimestep_ = Scalar(0); - lastMassOutputTime_ = Scalar(0); - - outfile.open("storage.out"); - outfile << "Time[s]" << ";" - << "TotalMassChange[kg/(s*mDepth)]" << ";" - << "WaterMassChange[kg/(s*mDepth))]" << ";" - << "IntEnergyChange[J/(m^3*s*mDepth)]" << ";" - << "WaterMass[kg/mDepth]" << ";" - << "WaterMassLoss[kg/mDepth]" << ";" - << "EvaporationRate[mm/s]" - << std::endl; - } - - //! \brief The destructor - ~TwoPTwoCNISubProblem() - { - outfile.close(); - } - - // functions have to be overwritten, otherwise they remain uninitialized - //! \copydoc ImplicitProblem::bBoxMin() - const GlobalPosition &bBoxMin() const - { return bBoxMin_; } - - //! \copydoc ImplicitProblem::bBoxMax() - const GlobalPosition &bBoxMax() const - { return bBoxMax_; } - - /*! - * \name Problem parameters - */ - // \{ - - //! \copydoc ImplicitProblem::name() - const std::string &name() const - { return GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::string, Output, NamePM); } - - //! \copydoc ImplicitProblem::init() - void init() - { - ParentType::init(); - this->model().globalStorage(storageLastTimestep_); - } - - // \} - - /*! - * \name Boundary conditions - */ - // \{ - - //! \copydoc ImplicitProblem::boundaryTypesAtPos() - void boundaryTypesAtPos(BoundaryTypes &values, - const GlobalPosition &globalPos) const - { - values.setAllNeumann(); - - if (onLowerBoundary_(globalPos)) - { - values.setDirichlet(temperatureIdx); - } - else if (onUpperBoundary_(globalPos) - && (globalPos[0] > runUpDistanceX1_ - eps_) - && (globalPos[0] < runUpDistanceX2_ + eps_)) - { - values.setAllCouplingNeumann(); - } - } - - //! \copydoc ImplicitProblem::dirichletAtPos() - void dirichletAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - initial_(values, globalPos); - } - - //! \copydoc ImplicitProblem::neumannAtPos() - void neumannAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - values = 0.; - } - - // \} - - /*! - * \name Volume terms - */ - // \{ - //! \copydoc ImplicitProblem::sourceAtPos() - void sourceAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - values = 0.; - } - - //! \copydoc ImplicitProblem::initialAtPos() - void initialAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - initial_(values, globalPos); - } - - /*! - * \brief Return the initial phase state inside a control volume. - * - * \param vertex The vertex - * \param vIdxGlobal The global index of the vertex - * \param globalPos The global position - */ - int initialPhasePresence(const Vertex &vertex, - const int &vIdxGlobal, - const GlobalPosition &globalPos) const - { - return bothPhases; - } - - /*! - * \brief Called by the time manager after the time integration to - * do some post processing on the solution. - */ - void postTimeStep() - { - // Calculate masses - PrimaryVariables storage; - - this->model().globalStorage(storage); - const Scalar time = this->timeManager().time() + this->timeManager().timeStepSize(); - - static Scalar initialWaterContent = 0.0; ; - if (this->timeManager().time() < this->timeManager().timeStepSize() + 1e-10) - initialWaterContent = storage[contiWEqIdx]; - - // Write mass balance information for rank 0 - if (this->gridView().comm().rank() == 0) - { - if (this->timeManager().timeStepIndex() % freqMassOutput_ == 0 - || this->timeManager().episodeWillBeFinished()) - { - PrimaryVariables storageChange(0.); - storageChange = storageLastTimestep_ - storage; - - assert(time - lastMassOutputTime_ != 0); - storageChange /= (time - lastMassOutputTime_); - - std::cout << "Time[s]: " << time - << " TotalMass[kg]: " << storage[contiTotalMassIdx] - << " WaterMass[kg]: " << storage[contiWEqIdx] - << " IntEnergy[J/m^3]: " << storage[energyEqIdx] - << " WaterMassChange[kg/s]: " << storageChange[contiWEqIdx] - << std::endl; - if (this->timeManager().time() != 0.) - outfile << time << ";" - << storageChange[contiTotalMassIdx] << ";" - << storageChange[contiWEqIdx] << ";" - << storageChange[energyEqIdx] << ";" - << storage[contiWEqIdx] << ";" - << initialWaterContent - storage[contiWEqIdx] << ";" - << storageChange[contiWEqIdx] / (bBoxMax_[0]-bBoxMin_[0]) - << std::endl; - - storageLastTimestep_ = storage; - lastMassOutputTime_ = time; - } - } - } - - // \} - -private: - /*! - * \brief Internal method for the initial condition - * (reused for the dirichlet conditions!) - */ - void initial_(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - values[pressureIdx] = refPressure_ - + 1000. * this->gravity()[1] * (globalPos[1] - bBoxMax_[1]); - values[switchIdx] = refSw_; - values[temperatureIdx] = refTemperature_; - } - - bool onLeftBoundary_(const GlobalPosition &globalPos) const - { return globalPos[0] < bBoxMin_[0] + eps_; } - - bool onRightBoundary_(const GlobalPosition &globalPos) const - { return globalPos[0] > bBoxMax_[0] - eps_; } - - bool onLowerBoundary_(const GlobalPosition &globalPos) const - { return globalPos[1] < bBoxMin_[1] + eps_; } - - bool onUpperBoundary_(const GlobalPosition &globalPos) const - { return globalPos[1] > bBoxMax_[1] - eps_; } - - static constexpr Scalar eps_ = 1e-8; - GlobalPosition bBoxMin_; - GlobalPosition bBoxMax_; - - int freqMassOutput_; - - PrimaryVariables storageLastTimestep_; - Scalar lastMassOutputTime_; - - Scalar refTemperature_; - Scalar refPressure_; - Scalar refSw_; - - Scalar runUpDistanceX1_; - Scalar runUpDistanceX2_; - std::ofstream outfile; -}; -} //end namespace Dumux - -#endif // DUMUX_TWOPTWOCNI_SUBPROBLEM_HH diff --git a/test/multidomain/2cnizeroeq2p2cni/CMakeLists.txt b/test/multidomain/2cnizeroeq2p2cni/CMakeLists.txt deleted file mode 100644 index 09a2dea7f78f0f181f4417efec9f5a6f7eb3a80c..0000000000000000000000000000000000000000 --- a/test/multidomain/2cnizeroeq2p2cni/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -add_input_file_links() - -dune_symlink_to_source_files(FILES evaporationRates.gp) - -add_dumux_test(test_2cnizeroeq2p2cni test_2cnizeroeq2p2cni test_2cnizeroeq2p2cni.cc - python ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py - --script fuzzy - --command "${CMAKE_CURRENT_BINARY_DIR}/test_2cnizeroeq2p2cni -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_2cnizeroeq2p2cni_reference.input" - --files ${CMAKE_SOURCE_DIR}/test/references/2cnizeroeq2p2cni-ff-reference.vtu - ${CMAKE_CURRENT_BINARY_DIR}/zeroeq2cni-00007.vtu - ${CMAKE_SOURCE_DIR}/test/references/2cnizeroeq2p2cni-pm-reference.vtu - ${CMAKE_CURRENT_BINARY_DIR}/2p2cni-00007.vtu) - -#install sources -install(FILES -2cnizeroeq2p2cniproblem.hh -2cnizeroeq2p2cnispatialparameters.hh -2p2cnisubproblem.hh -test_2cnizeroeq2p2cni.cc -zeroeq2cnisubproblem.hh -DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/test/multidomain/2cnizeroeq2p2cni) diff --git a/test/multidomain/2cnizeroeq2p2cni/evaporationRates.gp b/test/multidomain/2cnizeroeq2p2cni/evaporationRates.gp deleted file mode 100644 index 3b50921549ee3a0bf0932867c513b922b87c3462..0000000000000000000000000000000000000000 --- a/test/multidomain/2cnizeroeq2p2cni/evaporationRates.gp +++ /dev/null @@ -1,13 +0,0 @@ -reset -set datafile separator ';' - -set xlabel 'Time [d]' -set ylabel 'Evaporation rate [mm/d]' -set xrange [0:5] -set yrange [0:5] -plot \ -'storage.out' u ($1/86400):($3*86400) w l lw 2 t 'current' - -set terminal pngcairo size 1200,900 -set output 'evaporationRates.png' -replot \ No newline at end of file diff --git a/test/multidomain/2cnizeroeq2p2cni/test_2cnizeroeq2p2cni.cc b/test/multidomain/2cnizeroeq2p2cni/test_2cnizeroeq2p2cni.cc deleted file mode 100644 index d7d4d24f70e5421282dbd9f22c273c3940278b89..0000000000000000000000000000000000000000 --- a/test/multidomain/2cnizeroeq2p2cni/test_2cnizeroeq2p2cni.cc +++ /dev/null @@ -1,123 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Test for the coupled non-isothermal two-component ZeroEq and - * non-isothermal two-phase two-component Darcy model - */ - -#include <config.h> -#include <iostream> - -#include <dune/common/parallel/mpihelper.hh> - -#if HAVE_DUNE_MULTIDOMAIN - -#include <dumux/common/start.hh> - -#include "2cnizeroeq2p2cniproblem.hh" - -/*! - * \brief Print a usage string for simulations. - * - * \param progName The name of the program, that was tried to be started. - * \param errorMsg The error message that was issued by the start function. - * Comprises the thing that went wrong and a general help message. - */ -void printUsage(const char *progName, const std::string &errorMsg) -{ - if (errorMsg.size() > 0) { - std::string errorMessageOut = "\nUsage: "; - errorMessageOut += progName; - errorMessageOut += " [options]\n"; - errorMessageOut += errorMsg; - errorMessageOut += "\nThe list of mandatory options for this program is:\n" - "[Grid]\n" - "InterfacePosY Vertical position of the interface [m]\n" - "NoDarcyX1 Horizontal position where the porous medium starts [m]\n" - "NoDarcyX2 Horizontal position where the porous medium ends [m]\n" - "RunUpDistanceX1 Horizontal position where the coupling starts [m]\n" - "RunUpDistanceX2 Horizontal position where the coupling ends [m]\n" - "\n" - "[SpatialParams]\n" - "AlphaBJ Beavers-Joseph coefficient [-]\n" - "Permeability Hydraulic conductivity [m^2]\n" - "Porosity Porosity [-]\n" - "Swr Residual water saturation [-]\n" - "Snr Residual gas saturation [-]\n" - "VgAlpha Van-Genuchten parameter [1/Pa]\n" - "VgN Van-Genuchten parameter [-]\n" - "ThermalConductivitySolid Thermal conductivity of the solid material [W/(m*K)]\n" - "\n" - "[FreeFlow]\n" - "RefVelocity Inflow velocity [m/s]\n" - "RefPressure Reference pressure [Pa]\n" - "RefMassfrac Inflow water mass fraction [-]\n" - "RefTemperature Inflow temperature [K]\n" - "\n" - "[PorousMedium]\n" - "RefSw Initial water saturation [-]\n" - "RefPressurePM Initial pressure [Pa]\n" - "RefTemperaturePM Initial temperature [K]\n" - "\n" - "[Output]\n" - "NameFF Name free flow .vtu files\n" - "NamePM Name porous medium .vtu files\n" - "FreqRestart Frequency of writting restart information\n" - "FreqOutput Frequency of writting vtu output\n" - "FreqMassOutput Frequency of writting storage output\n" - "FreqFluxOutput Frequency of writting flux output\n" - "FreqVaporFluxOutput Frequency of writting vapor flux output\n" - "\n" - "[TimeManager]\n" - "EpisodeLength Length of one episode [s]\n" - "\n" - "[BoundaryLayer]\n" - "Model Enable use of boundary layer models (discouraged)\n" - "\n" - "[MassTransfer]\n" - "Model Enable use of mass transfer models (discouraged)\n" - "\n"; - - std::cout << errorMessageOut - << "\n"; - } -} - -int main(int argc, char** argv) -{ -#if (HAVE_SUPERLU || HAVE_UMFPACK) - typedef TTAG(TwoCNIZeroEqTwoPTwoCNITestProblem) ProblemTypeTag; - return Dumux::start<ProblemTypeTag>(argc, argv, printUsage); -#else -#warning "You need to have SuperLU or UMFPack installed to run this test." - std::cerr << "You need to have SuperLU or UMFPack installed to run this test\n"; - return 77; -#endif -} - -#else -int main(int argc, char** argv) -{ -#warning You need to have dune-multidomain installed to run this test - std::cerr << "You need to have dune-multidomain installed to run this test\n"; - return 77; -} -#endif diff --git a/test/multidomain/2cnizeroeq2p2cni/test_2cnizeroeq2p2cni.input b/test/multidomain/2cnizeroeq2p2cni/test_2cnizeroeq2p2cni.input deleted file mode 100644 index 50d97654203a3b0db56e1ee4b2ed8cf446901538..0000000000000000000000000000000000000000 --- a/test/multidomain/2cnizeroeq2p2cni/test_2cnizeroeq2p2cni.input +++ /dev/null @@ -1,81 +0,0 @@ -[TimeManager] -DtInitial = 5e-5 # [s] -MaxTimeStepSize = 360 # [s] -TEnd = 3600 # [s] -EpisodeLength = 14400 # [s] # 14400s = 4h - -[Grid] -Cells0 = 15 -Cells1 = 10 10 10 -Grading0 = 1.0 -Grading1 = -1.1 1.1 -1.1 -Positions0 = 0.0 0.75 -Positions1 = 0.0 0.25 0.5 0.75 - -NoDarcyX1 = 0.25 # [m] # Beginning of PM below -NoDarcyX2 = 0.5 # [m] # End of PM below -RunUpDistanceX1 = 0.251 # [m] # Beginning of without Coupling to PM (x-coordinate) -RunUpDistanceX2 = 0.499 # [m] # End of without Coupling to PM (x-coordinate) -InterfacePosY = 0.25 # [m] # Vertical position of coupling interface - -[Output] -NameFF = zeroeq2cni -NamePM = 2p2cni -# Frequency of restart file, flux and VTK output -FreqRestart = 5 # how often restart files are written out -FreqOutput = 5 # 10 # frequency of VTK output -FreqMassOutput = 5 # 20 # frequency of mass and evaporation rate output (Darcy) - -[FreeFlow] -RefVelocity = 1.0 # [m/s] -RefPressure = 1e5 # [Pa] -RefMassfrac = 0.008 # [-] -RefTemperature = 298.15 # [K] - -[BoundaryLayer] -Model = 0 # disable boundary layer models - -[MassTransfer] -Model = 0 # disable mass transfer models - -[PorousMedium] -RefPressurePM = 1e5 # [Pa] -RefTemperaturePM = 298.15 # [K] -RefSw = 0.98 # [-] - -[SpatialParams] -AlphaBJ = 1.0 # [-] -Permeability = 2.65e-10 # [m^2] -Porosity = 0.41 # [-] -Swr = 0.005 # [-] -Snr = 0.01 # [-] -VgAlpha = 6.371e-4 # [1/Pa] -VgN = 8.0 # [-] -ThermalConductivitySolid = 5.26 # [W/(m*K)] - -[Newton] -MaxRelativeShift = 1e-5 -TargetSteps = 8 -MaxSteps = 12 -WriteConvergence = false - -[LinearSolver] -Verbosity = 0 - -[ZeroEq] -# Eddy Viscosity Models -# 0 = none -# 1 = Prandtl -# 2 = modified Van Driest -# 3 = Baldwin Lomax -EddyViscosityModel = 2 -# Eddy Diffusivity and Eddy Conductivity Models -# 0 = none -# 1 = Reynolds analogy -# 2 = modified Van Driest -# 3 = Deissler -# 4 = Meier and Rotta -EddyDiffusivityModel = 3 -EddyConductivityModel = 3 -BBoxMinSandGrainRoughness = 0.0 # [m] -BBoxMaxSandGrainRoughness = 0.0 # [m] diff --git a/test/multidomain/2cnizeroeq2p2cni/test_2cnizeroeq2p2cni_reference.input b/test/multidomain/2cnizeroeq2p2cni/test_2cnizeroeq2p2cni_reference.input deleted file mode 100644 index 8813143a278014bbf15a173bd62a4698173185f6..0000000000000000000000000000000000000000 --- a/test/multidomain/2cnizeroeq2p2cni/test_2cnizeroeq2p2cni_reference.input +++ /dev/null @@ -1,81 +0,0 @@ -[TimeManager] -DtInitial = 1e1 # [s] -MaxTimeStepSize = 360 # [s] -TEnd = 1800 # [s] -EpisodeLength = 14400 # [s] # 14400s = 4h - -[Grid] -Cells0 = 7 -Cells1 = 4 4 4 -Grading0 = 1.0 -Grading1 = -1.5 1.5 -1.5 -Positions0 = 0.0 0.35 -Positions1 = 0.0 0.25 0.375 0.5 - -NoDarcyX1 = 0.05 # [m] # Beginning of PM below -NoDarcyX2 = 0.30 # [m] # End of PM below -RunUpDistanceX1 = 0.051 # [m] # Beginning of without Coupling to PM (x-coordinate) -RunUpDistanceX2 = 0.299 # [m] # End of without Coupling to PM (x-coordinate) -InterfacePosY = 0.25 # [m] # Vertical position of coupling interface - -[Output] -NameFF = zeroeq2cni -NamePM = 2p2cni -# Frequency of restart file, flux and VTK output -FreqRestart = 1000 # how often restart files are written out -FreqOutput = 2 # 10 # frequency of VTK output -FreqMassOutput = 2 # 20 # frequency of mass and evaporation rate output (Darcy) - -[FreeFlow] -RefVelocity = 3.5 # [m/s] -RefPressure = 1e5 # [Pa] -RefMassfrac = 0.008 # [-] -RefTemperature = 298.15 # [K] - -[BoundaryLayer] -Model = 0 # disable boundary layer models - -[MassTransfer] -Model = 0 # disable mass transfer models - -[PorousMedium] -RefPressurePM = 1e5 # [Pa] -RefTemperaturePM = 298.15 # [K] -RefSw = 0.28 # [-] - -[SpatialParams] -AlphaBJ = 1.0 # [-] -Permeability = 2.65e-10 # [m^2] -Porosity = 0.41 # [-] -Swr = 0.005 # [-] -Snr = 0.01 # [-] -VgAlpha = 6.371e-4 # [1/Pa] -VgN = 8.0 # [-] -ThermalConductivitySolid = 5.26 # [W/(m*K)] - -[Newton] -MaxRelativeShift = 1e-5 -TargetSteps = 8 -MaxSteps = 12 -WriteConvergence = false - -[LinearSolver] -Verbosity = 0 - -[ZeroEq] -# Eddy Viscosity Models -# 0 = none -# 1 = Prandtl -# 2 = modified Van Driest -# 3 = Baldwin Lomax -EddyViscosityModel = 2 -# Eddy Diffusivity and Eddy Conductivity Models -# 0 = none -# 1 = Reynolds analogy -# 2 = modified Van Driest -# 3 = Deissler -# 4 = Meier and Rotta -EddyDiffusivityModel = 3 -EddyConductivityModel = 3 -BBoxMinSandGrainRoughness = 0.0 # [m] -BBoxMaxSandGrainRoughness = 0.0 # [m] diff --git a/test/multidomain/2cnizeroeq2p2cni/zeroeq2cnisubproblem.hh b/test/multidomain/2cnizeroeq2p2cni/zeroeq2cnisubproblem.hh deleted file mode 100644 index aa1297d854021ab0ae5fe47c86c0915e60985265..0000000000000000000000000000000000000000 --- a/test/multidomain/2cnizeroeq2p2cni/zeroeq2cnisubproblem.hh +++ /dev/null @@ -1,362 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/** - * \file - * \brief Non-isothermal two-component ZeroEq subproblem with air flowing - * from the left to the right and coupling at the bottom. - */ -#ifndef DUMUX_ZEROEQTWOCNI_SUBPROBLEM_HH -#define DUMUX_ZEROEQTWOCNI_SUBPROBLEM_HH - -#include <dumux/freeflow/zeroeqncni/model.hh> -#include <dumux/multidomain/subdomainpropertydefaults.hh> -#include <dumux/multidomain/2cnistokes2p2cni/stokesncnicouplinglocalresidual.hh> - -namespace Dumux -{ - -template <class TypeTag> -class ZeroEq2cniSubProblem; - -namespace Properties -{ -NEW_TYPE_TAG(ZeroEq2cniSubProblem, - INHERITS_FROM(BoxZeroEqncni, SubDomain)); - -// Set the problem property -SET_TYPE_PROP(ZeroEq2cniSubProblem, Problem, ZeroEq2cniSubProblem<TypeTag>); - -// Use the StokesncniCouplingLocalResidual for the computation of the local residual in the ZeroEq domain -SET_TYPE_PROP(ZeroEq2cniSubProblem, LocalResidual, StokesncniCouplingLocalResidual<TypeTag>); - -// Use the fluid system from the coupled problem -SET_TYPE_PROP(ZeroEq2cniSubProblem, - FluidSystem, - typename GET_PROP_TYPE(typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag), FluidSystem)); - -// Disable use of mole formulation -SET_BOOL_PROP(ZeroEq2cniSubProblem, UseMoles, false); - -// Disable gravity -SET_BOOL_PROP(ZeroEq2cniSubProblem, ProblemEnableGravity, false); - -// Enable Navier-Stokes -SET_BOOL_PROP(ZeroEq2cniSubProblem, EnableNavierStokes, true); - -// Set the properties for variable inflow BC -NEW_PROP_TAG(FreeFlowSinusVelocityAmplitude); -NEW_PROP_TAG(FreeFlowSinusVelocityPeriod); -SET_SCALAR_PROP(ZeroEq2cniSubProblem, FreeFlowSinusVelocityAmplitude, 0.0); -SET_SCALAR_PROP(ZeroEq2cniSubProblem, FreeFlowSinusVelocityPeriod, 3600.0); -NEW_PROP_TAG(FreeFlowSinusPressureAmplitude); -NEW_PROP_TAG(FreeFlowSinusPressurePeriod); -SET_SCALAR_PROP(ZeroEq2cniSubProblem, FreeFlowSinusPressureAmplitude, 0.0); -SET_SCALAR_PROP(ZeroEq2cniSubProblem, FreeFlowSinusPressurePeriod, 3600.0); -NEW_PROP_TAG(FreeFlowSinusConcentrationAmplitude); -NEW_PROP_TAG(FreeFlowSinusConcentrationPeriod); -SET_SCALAR_PROP(ZeroEq2cniSubProblem, FreeFlowSinusConcentrationAmplitude, 0.0); -SET_SCALAR_PROP(ZeroEq2cniSubProblem, FreeFlowSinusConcentrationPeriod, 3600.0); -NEW_PROP_TAG(FreeFlowSinusTemperatureAmplitude); -NEW_PROP_TAG(FreeFlowSinusTemperaturePeriod); -SET_SCALAR_PROP(ZeroEq2cniSubProblem, FreeFlowSinusTemperatureAmplitude, 0.0); -SET_SCALAR_PROP(ZeroEq2cniSubProblem, FreeFlowSinusTemperaturePeriod, 3600.0); -} - -/*! - * \ingroup ImplicitTestProblems - * \ingroup TwoPTwoCNIZeroEqTwoCNIModel - * \brief Non-isothermal two-component ZeroEq subproblem with air flowing - * from the left to the right and coupling at the bottom. - * - * The free-flow subdomain is sized 0.75m times 0.5m. Dry and hot air is flowing from left (Dirichlet) - * to right (outflow), at the middle third of the bottom the coupling conditions - * are applied to all balance equations. They handle the exchange to the porous-medium - * subdomain. - * - * This subproblem uses the \ref ZeroEqncniModel. It is part of a multidomain model and - * combined with the 2p2cnisubproblem for the porous-medium domain. - */ -template <class TypeTag> -class ZeroEq2cniSubProblem : public ZeroEqProblem<TypeTag> -{ - typedef ZeroEq2cniSubProblem<TypeTag> ThisType; - typedef ZeroEqProblem<TypeTag> ParentType; - - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; - - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - - enum { - dim = GridView::dimension - }; - enum { // equation indices - massBalanceIdx = Indices::massBalanceIdx, - momentumXIdx = Indices::momentumXIdx, // Index of the x-component of the momentum balance - momentumYIdx = Indices::momentumYIdx, // Index of the y-component of the momentum balance - momentumZIdx = Indices::momentumZIdx, // Index of the z-component of the momentum balance - transportEqIdx = Indices::transportEqIdx, // Index of the transport equation (massfraction) - energyEqIdx = Indices::energyEqIdx // Index of the energy equation (temperature) - }; - enum { // primary variable indices - pressureIdx = Indices::pressureIdx, - velocityXIdx = Indices::velocityXIdx, - velocityYIdx = Indices::velocityYIdx, - velocityZIdx = Indices::velocityZIdx, - massOrMoleFracIdx = Indices::massOrMoleFracIdx, - temperatureIdx = Indices::temperatureIdx - }; - enum { - transportCompIdx = Indices::transportCompIdx, // water component index - phaseCompIdx = Indices::phaseCompIdx // air component index - }; - - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; - - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename GridView::template Codim<dim>::Entity Vertex; - typedef typename GridView::ctype CoordScalar; - - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - typedef typename GET_PROP_TYPE(TypeTag, FluidState) FluidState; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef Dune::FieldVector<CoordScalar, dim> GlobalPosition; - - -public: - /*! - * \brief The sub-problem for the ZeroEq subdomain - * - * \param timeManager The TimeManager which is used by the simulation - * \param gridView The simulation's idea about physical space - */ - ZeroEq2cniSubProblem(TimeManager &timeManager, const GridView &gridView) - : ParentType(timeManager, gridView) - { - std::vector<Scalar> positions0 = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::vector<Scalar>, Grid, Positions0); - std::vector<Scalar> positions1 = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::vector<Scalar>, Grid, Positions1); - - bBoxMin_[0] = positions0.front(); - bBoxMax_[0] = positions0.back(); - bBoxMin_[1] = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, InterfacePosY); - bBoxMax_[1] = positions1.back(); - runUpDistanceX1_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, RunUpDistanceX1); // first part of the interface without coupling - runUpDistanceX2_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, RunUpDistanceX2); // second part of the interface without coupling - - refVelocity_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefVelocity); - refPressure_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefPressure); - refMassfrac_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefMassfrac); - refTemperature_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefTemperature); - } - - // functions have to be overwritten, otherwise they remain uninitialized - //! \copydoc ImplicitProblem::bBoxMin() - const GlobalPosition &bBoxMin() const - { return bBoxMin_; } - - //! \copydoc ImplicitProblem::bBoxMax() - const GlobalPosition &bBoxMax() const - { return bBoxMax_; } - - /*! - * \name Problem parameters - */ - // \{ - - //! \copydoc ImplicitProblem::name() - const std::string &name() const - { return GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::string, Output, NameFF); } - - // \} - - /*! - * \name Boundary conditions - */ - // \{ - - //! \copydoc ImplicitProblem::boundaryTypesAtPos() - void boundaryTypesAtPos(BoundaryTypes &values, - const GlobalPosition &globalPos) const - { - values.setAllDirichlet(); - - - if (onUpperBoundary_(globalPos)) - { - values.setNeumann(transportEqIdx); - values.setDirichlet(temperatureIdx); - } - - if (onLowerBoundary_(globalPos)) - { - values.setNeumann(transportEqIdx); - values.setDirichlet(temperatureIdx); - - if (globalPos[0] > runUpDistanceX1_ - eps_ - && globalPos[0] < runUpDistanceX2_ + eps_) - { - values.setAllCouplingDirichlet(); - values.setCouplingNeumann(momentumXIdx); - values.setCouplingNeumann(momentumYIdx); - } - } - - if (onRightBoundary_(globalPos)) - { - values.setAllOutflow(); - - if (onUpperBoundary_(globalPos) || onLowerBoundary_(globalPos)) // corner points - values.setAllDirichlet(); - } - - if (onLeftBoundary_(globalPos)) - { - values.setAllDirichlet(); - } - - // the mass balance has to be of type outflow - // it does not get a coupling condition, since pn is a condition for stokes - values.setOutflow(massBalanceIdx); - - if (onRightBoundary_(globalPos)) - { - values.setAllOutflow(); - values.setDirichlet(pressureIdx); - } - } - - //! \copydoc ImplicitProblem::dirichletAtPos() - void dirichletAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - values = 0.0; - - values[velocityXIdx] = xVelocity_(globalPos); - values[velocityYIdx] = 0.0; - values[pressureIdx] = refPressure() - + 1.189 * this->gravity()[1] * (globalPos[1] - bBoxMin_[1]); - values[massOrMoleFracIdx] = refMassfrac(); - values[temperatureIdx] = refTemperature(); - } - - //! \copydoc ImplicitProblem::neumannAtPos() - void neumannAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - values = 0.; - } - - //! \copydoc ImplicitProblem::sourceAtPos() - void sourceAtPos(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - // The source term of the mass balance has to be chosen as - // div (q_momentum) in the problem file - values = 0.0; - } - - //! \copydoc ImplicitProblem::initialAtPos() - void initialAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - initial_(values, globalPos); - } - - // \} - - //! \brief Returns the velocity at the inflow. - const Scalar refVelocity() const - { - return refVelocity_ + variation_(GET_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusVelocityAmplitude), - GET_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusVelocityPeriod)); - } - - //! \brief Returns the pressure at the inflow. - const Scalar refPressure() const - { - return refPressure_ + variation_(GET_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusPressureAmplitude), - GET_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusPressurePeriod)); - } - - //! \brief Returns the mass fraction at the inflow. - const Scalar refMassfrac() const - { - return refMassfrac_ + variation_(GET_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusConcentrationAmplitude), - GET_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusConcentrationPeriod)); - } - - //! \brief Returns the temperature at the inflow. - const Scalar refTemperature() const - { - return refTemperature_ + variation_(GET_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusTemperatureAmplitude), - GET_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusTemperaturePeriod)); - } - -private: - // Internal method for the initial and Dirichlet conditions - void initial_(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - values[velocityXIdx] = xVelocity_(globalPos); - values[velocityYIdx] = 0.; - - values[pressureIdx] = refPressure() + 1.189 * this->gravity()[1] * (globalPos[1] - bBoxMin_[1]); - values[massOrMoleFracIdx] = refMassfrac(); - values[temperatureIdx] = refTemperature(); - } - - // returns the inflow velocity profile - const Scalar xVelocity_(const GlobalPosition &globalPos) const - { - if (onUpperBoundary_(globalPos) || onLowerBoundary_(globalPos)) - return 0.0; - return refVelocity(); - } - - // can be used for the variation of a boundary condition - const Scalar variation_(const Scalar amplitude, const Scalar period) const - { return sin(2*M_PI*this->timeManager().time()/period) * amplitude; } - - bool onLeftBoundary_(const GlobalPosition &globalPos) const - { return globalPos[0] < bBoxMin_[0] + eps_; } - - bool onRightBoundary_(const GlobalPosition &globalPos) const - { return globalPos[0] > bBoxMax_[0] - eps_; } - - bool onLowerBoundary_(const GlobalPosition &globalPos) const - { return globalPos[1] < bBoxMin_[1] + eps_; } - - bool onUpperBoundary_(const GlobalPosition &globalPos) const - { return globalPos[1] > bBoxMax_[1] - eps_; } - - static constexpr Scalar eps_ = 1e-8; - GlobalPosition bBoxMin_; - GlobalPosition bBoxMax_; - - Scalar refVelocity_; - Scalar refPressure_; - Scalar refMassfrac_; - Scalar refTemperature_; - - Scalar runUpDistanceX1_; - Scalar runUpDistanceX2_; -}; -} //end namespace - -#endif // DUMUX_ZEROEQTWOCNI_SUBPROBLEM_HH diff --git a/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh b/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh deleted file mode 100644 index d7c5260a54d95af5920a3cb6d40d3f11cbd1049d..0000000000000000000000000000000000000000 --- a/test/multidomain/2cstokes2p2c/2cstokes2p2cproblem.hh +++ /dev/null @@ -1,259 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief The problem class for the coupling of an isothermal two-component Stokes - * and an isothermal two-phase two-component Darcy model. - * - * The problem class for the coupling of an isothermal two-component Stokes (stokes2c) - * and an isothermal two-phase two-component Darcy model (2p2c). - * It uses the 2p2cCoupling model and the Stokes2ccoupling model and provides - * the problem specifications for common parameters of the two submodels. - * The initial and boundary conditions of the submodels are specified in the two subproblems, - * 2p2csubproblem.hh and stokes2csubproblem.hh, which are accessible via the coupled problem. - */ - -#ifndef DUMUX_2CSTOKES2P2CPROBLEM_HH -#define DUMUX_2CSTOKES2P2CPROBLEM_HH - -#include <dune/common/float_cmp.hh> -#include <dune/grid/common/gridinfo.hh> -#include <dune/grid/multidomaingrid.hh> - -#include <dumux/material/fluidsystems/h2oair.hh> -#include <dumux/multidomain/2cstokes2p2c/localoperator.hh> -#include <dumux/multidomain/2cstokes2p2c/problem.hh> -#include <dumux/multidomain/2cstokes2p2c/propertydefaults.hh> - -#ifdef HAVE_PARDISO -#include <dumux/linear/pardisobackend.hh> -#endif // HAVE_PARDISO - -#include "2cstokes2p2cspatialparams.hh" -#include "stokes2csubproblem.hh" -#include "2p2csubproblem.hh" - -namespace Dumux -{ -template <class TypeTag> -class TwoCStokesTwoPTwoCTestProblem; - -namespace Properties -{ -NEW_TYPE_TAG(TwoCStokesTwoPTwoCTestProblem, INHERITS_FROM(TwoCStokesTwoPTwoC)); - -// Set the grid type -SET_TYPE_PROP(TwoCStokesTwoPTwoCTestProblem, Grid, Dune::YaspGrid<2, Dune::TensorProductCoordinates<typename GET_PROP_TYPE(TypeTag, Scalar), 2> >); - -// Set the global problem -SET_TYPE_PROP(TwoCStokesTwoPTwoCTestProblem, Problem, TwoCStokesTwoPTwoCTestProblem<TypeTag>); - -// Set the local coupling operator -SET_TYPE_PROP(TwoCStokesTwoPTwoCTestProblem, MultiDomainCouplingLocalOperator, - TwoCStokesTwoPTwoCLocalOperator<TypeTag>); - -// Set the two sub-problems of the global problem -SET_TYPE_PROP(TwoCStokesTwoPTwoCTestProblem, SubDomain1TypeTag, TTAG(Stokes2cSubProblem)); -SET_TYPE_PROP(TwoCStokesTwoPTwoCTestProblem, SubDomain2TypeTag, TTAG(TwoPTwoCSubProblem)); - -// Set the global problem in the context of the two sub-problems -SET_TYPE_PROP(Stokes2cSubProblem, MultiDomainTypeTag, TTAG(TwoCStokesTwoPTwoCTestProblem)); -SET_TYPE_PROP(TwoPTwoCSubProblem, MultiDomainTypeTag, TTAG(TwoCStokesTwoPTwoCTestProblem)); - -// Set the other sub-problem for each of the two sub-problems -SET_TYPE_PROP(Stokes2cSubProblem, OtherSubDomainTypeTag, TTAG(TwoPTwoCSubProblem)); -SET_TYPE_PROP(TwoPTwoCSubProblem, OtherSubDomainTypeTag, TTAG(Stokes2cSubProblem)); - -// Set the spatial parameters used for the problems -SET_TYPE_PROP(TwoPTwoCSubProblem, SpatialParams, TwoCStokesTwoPTwoCSpatialParams<TypeTag>); - -// Set the fluid system to use simple relations (last argument) -SET_TYPE_PROP(TwoCStokesTwoPTwoCTestProblem, FluidSystem, - FluidSystems::H2OAir<typename GET_PROP_TYPE(TypeTag, Scalar)>); - -// if you do not have PARDISO, the SuperLU solver is used: -#ifdef HAVE_PARDISO -SET_TYPE_PROP(TwoCStokesTwoPTwoCTestProblem, LinearSolver, PardisoBackend<TypeTag>); -#else -SET_TYPE_PROP(TwoCStokesTwoPTwoCTestProblem, LinearSolver, SuperLUBackend<TypeTag>); -#endif // HAVE_PARDISO -} - -/*! - * \ingroup ImplicitTestProblems - * \ingroup TwoPTwoCStokesTwoCModel - * \brief The problem class for the coupling of an isothermal two-component Stokes - * and an isothermal two-phase two-component Darcy model. - * - * The problem class for the coupling of an isothermal two-component Stokes (stokes2c) - * and an isothermal two-phase two-component Darcy model (2p2c). - * It uses the 2p2cCoupling model and the Stokes2ccoupling model and provides - * the problem specifications for common parameters of the two submodels. - * The initial and boundary conditions of the submodels are specified in the two subproblems, - * 2p2csubproblem.hh and stokes2csubproblem.hh, which are accessible via the coupled problem. - */ -template <class TypeTag = TTAG(TwoCStokesTwoPTwoCTestProblem) > -class TwoCStokesTwoPTwoCTestProblem : public TwoCStokesTwoPTwoCProblem<TypeTag> -{ - typedef TwoCStokesTwoPTwoCTestProblem<TypeTag> ThisType; - typedef TwoCStokesTwoPTwoCProblem<TypeTag> ParentType; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; - - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGrid) MDGrid; - typedef typename MDGrid::LeafGridView MDGridView; - enum { dim = MDGridView::dimension }; - typedef Dune::FieldVector<Scalar, dim> GlobalPosition; - - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - -public: - /*! - * \brief The problem for the coupling of Stokes and Darcy flow - * - * \param timeManager The time manager - * \param gridView The grid view - */ - template<class GridView> - TwoCStokesTwoPTwoCTestProblem(TimeManager &timeManager, - GridView gridView) - : ParentType(timeManager, gridView) - { - interfacePosY_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, InterfacePosY); - noDarcyX_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, NoDarcyX); - episodeLength_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, TimeManager, EpisodeLength); - initializationTime_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, TimeManager, InitTime); - - // define output options - freqRestart_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, int, Output, FreqRestart); - freqOutput_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, int, Output, FreqOutput); - - stokes2c_ = this->sdID1(); - twoPtwoC_ = this->sdID2(); - - initializeGrid(); - - // initialize the tables of the fluid system - FluidSystem::init(/*tempMin=*/273.15, /*tempMax=*/323.15, /*numTemp=*/50, - /*pMin=*/5e4, /*pMax=*/1.5e5, /*numP=*/100); - - if (initializationTime_ > 0.0) - this->timeManager().startNextEpisode(initializationTime_); - else - this->timeManager().startNextEpisode(episodeLength_); - } - - /*! - * \brief Initialization of the grids - * - * This function splits the multidomain grid in the two - * individual subdomain grids and takes care of parallelization. - */ - void initializeGrid() - { - MDGrid& mdGrid = this->mdGrid(); - mdGrid.startSubDomainMarking(); - - // subdivide grid in two subdomains - for (const auto& element : elements(mdGrid.leafGridView(), Dune::Partitions::interior)) - { - GlobalPosition globalPos = element.geometry().center(); - - if (globalPos[1] > interfacePosY_ - eps_) - mdGrid.addToSubDomain(stokes2c_,element); - else - if(globalPos[0] > noDarcyX_ - eps_) - mdGrid.addToSubDomain(twoPtwoC_,element); - } - mdGrid.preUpdateSubDomains(); - mdGrid.updateSubDomains(); - mdGrid.postUpdateSubDomains(); - - gridinfo(this->sdGrid1()); - gridinfo(this->sdGrid2()); - } - - /*! - * \brief Called by the time manager after the time integration to - * do some post processing on the solution. - */ - void postTimeStep() - { - // call the postTimeStep function of the subproblems - this->sdProblem1().postTimeStep(); - this->sdProblem2().postTimeStep(); - } - - /*! - * \brief Called when the end of an simulation episode is reached. - * - * Typically a new episode should be started in this method. - */ - void episodeEnd() - { this->timeManager().startNextEpisode(episodeLength_); } - - /*! - * \brief Returns true if a restart file should be written to - * disk. - * - * The default behavior is to write one restart file every 5 time - * steps. This file is intended to be overwritten by the - * implementation. - */ - bool shouldWriteRestartFile() const - { - return (this->timeManager().timeStepIndex() % freqRestart_ == 0 - || this->timeManager().episodeWillBeFinished() - || this->timeManager().willBeFinished()); - } - - /*! - * \brief Returns true if the current solution should be written to - * disk (i.e. as a VTK file) - * - * The default behavior is to write out the solution for - * every time step. This function is intended to be overwritten by the - * implementation. - */ - bool shouldWriteOutput() const - { - return (this->timeManager().timeStepIndex() % freqOutput_ == 0 - || this->timeManager().episodeWillBeFinished() - || this->timeManager().willBeFinished()); - } - -private: - typename MDGrid::SubDomainIndex stokes2c_; - typename MDGrid::SubDomainIndex twoPtwoC_; - - unsigned freqRestart_; - unsigned freqOutput_; - - Scalar interfacePosY_; - Scalar noDarcyX_; - Scalar episodeLength_; - Scalar initializationTime_; - - static constexpr Scalar eps_ = 1e-8; -}; - -} // namespace Dumux - -#endif // DUMUX_2CSTOKES2P2CPROBLEM_HH diff --git a/test/multidomain/2cstokes2p2c/2cstokes2p2cspatialparams.hh b/test/multidomain/2cstokes2p2c/2cstokes2p2cspatialparams.hh deleted file mode 100644 index 1cc4fab22c0939517f8064c4492085cc6d768432..0000000000000000000000000000000000000000 --- a/test/multidomain/2cstokes2p2c/2cstokes2p2cspatialparams.hh +++ /dev/null @@ -1,174 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Spatial parameters for the - * coupling of an isothermal two-component Stokes - * and an isothermal two-phase two-component Darcy model. - */ - -#ifndef DUMUX_TWOCSTOKES_2P2C_SPATIALPARAMS_HH -#define DUMUX_TWOCSTOKES_2P2C_SPATIALPARAMS_HH - -#include <dune/grid/io/file/vtk/common.hh> - -#include <dumux/material/spatialparams/implicit.hh> -#include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh> -#include <dumux/material/fluidmatrixinteractions/2p/regularizedvangenuchten.hh> -#include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh> -#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> - -namespace Dumux -{ -//forward declaration -template<class TypeTag> -class TwoCStokesTwoPTwoCSpatialParams; - -namespace Properties -{ -// The spatial parameters TypeTag -NEW_TYPE_TAG(TwoCStokesTwoPTwoCSpatialParams); - -// Set the spatial parameters -SET_TYPE_PROP(TwoCStokesTwoPTwoCSpatialParams, SpatialParams, - TwoCStokesTwoPTwoCSpatialParams<TypeTag>); - -// Set the material law parameterized by absolute saturations -SET_TYPE_PROP(TwoCStokesTwoPTwoCSpatialParams, - MaterialLaw, - EffToAbsLaw<RegularizedVanGenuchten<typename GET_PROP_TYPE(TypeTag, Scalar)>>); -// EffToAbsLaw<RegularizedBrooksCorey<typename GET_PROP_TYPE(TypeTag, Scalar)> >); -} - - -/*! - * \ingroup ImplicitTestProblems - * \ingroup TwoPTwoCStokesTwoCModel - * \brief Definition of the spatial parameters for - * the coupling of an isothermal two-component Stokes - * and an isothermal two-phase two-component Darcy model. - */ -template<class TypeTag> -class TwoCStokesTwoPTwoCSpatialParams : public ImplicitSpatialParams<TypeTag> -{ - typedef ImplicitSpatialParams<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GridView::ctype CoordScalar; - - enum { - dim=GridView::dimension, - dimWorld=GridView::dimensionworld - }; - typedef Dune::FieldVector<CoordScalar, dimWorld> GlobalPosition; - - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - - typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw; - typedef typename MaterialLaw::Params MaterialLawParams; - -public: - /*! - * \brief Spatial parameters for the - * coupling of an isothermal two-component Stokes - * and an isothermal two-phase two-component Darcy model. - * - * \param gridView The GridView which is used by the problem - */ - TwoCStokesTwoPTwoCSpatialParams(const GridView& gridView) - : ParentType(gridView) - { - porosity_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, Porosity); - permeability_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, Permeability); - alphaBJ_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, AlphaBJ); - - // residual saturations - params_.setSwr(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, Swr)); - params_.setSnr(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, Snr)); - // parameters for the vanGenuchten law - params_.setVgAlpha(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, VgAlpha)); - params_.setVgn(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, VgN)); - } - - /*! - * \brief Returns the intrinsic permeability tensor \f$[m^2]\f$ - * - * \param element The finite element - * \param fvGeometry The finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume - */ - const Scalar intrinsicPermeability(const Element &element, - const FVElementGeometry &fvGeometry, - const int scvIdx) const - { - return permeability_; - } - - /*! - * \brief Returns the porosity \f$[-]\f$ - * - * \param element The finite element - * \param fvGeometry The finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume - */ - Scalar porosity(const Element &element, - const FVElementGeometry &fvGeometry, - const int scvIdx) const - { - return porosity_; - } - - /*! - * \brief Returns the parameter object for the material law - * - * \param element The finite element - * \param fvGeometry The finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume - */ - const MaterialLawParams& materialLawParams(const Element &element, - const FVElementGeometry &fvGeometry, - const int scvIdx) const - { - return params_; - } - - /*! - * \brief Evaluate the Beavers-Joseph coefficient at given position - * - * \param globalPos The global position - * - * \return Beavers-Joseph coefficient - */ - Scalar beaversJosephCoeffAtPos(const GlobalPosition &globalPos) const - { - return alphaBJ_; - } - -private: - Scalar permeability_; - Scalar porosity_; - Scalar alphaBJ_; - MaterialLawParams params_; -}; - -} // end namespace Dumux - -#endif // DUMUX_TWOCSTOKES_2P2C_SPATIALPARAMS_HH diff --git a/test/multidomain/2cstokes2p2c/2p2csubproblem.hh b/test/multidomain/2cstokes2p2c/2p2csubproblem.hh deleted file mode 100644 index cbae1065eb39957d6c5fe1c5ac8cf805db542977..0000000000000000000000000000000000000000 --- a/test/multidomain/2cstokes2p2c/2p2csubproblem.hh +++ /dev/null @@ -1,415 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * \brief Isothermal two-phase two-component porous-medium subproblem - * with coupling at the top boundary. - */ -#ifndef DUMUX_2P2C_SUBPROBLEM_HH -#define DUMUX_2P2C_SUBPROBLEM_HH - -#include <dune/common/float_cmp.hh> - -#include <dumux/porousmediumflow/2p2c/implicit/indices.hh> -#include <dumux/porousmediumflow/implicit/problem.hh> -#include <dumux/multidomain/2cstokes2p2c/2p2ccouplinglocalresidual.hh> -#include <dumux/multidomain/subdomainpropertydefaults.hh> -#include <dumux/multidomain/localoperator.hh> - -#include "2cstokes2p2cspatialparams.hh" - -namespace Dumux -{ -template <class TypeTag> -class TwoPTwoCSubProblem; - -namespace Properties -{ -NEW_TYPE_TAG(TwoPTwoCSubProblem, - INHERITS_FROM(BoxTwoPTwoC, SubDomain, TwoCStokesTwoPTwoCSpatialParams)); - -// Set the problem property -SET_TYPE_PROP(TwoPTwoCSubProblem, Problem, TwoPTwoCSubProblem<TTAG(TwoPTwoCSubProblem)>); - -// Use the local residual extended for the coupling -SET_TYPE_PROP(TwoPTwoCSubProblem, LocalResidual, TwoPTwoCCouplingLocalResidual<TypeTag>); - -// Choose pn and Sw as primary variables -SET_INT_PROP(TwoPTwoCSubProblem, Formulation, TwoPTwoCFormulation::pnsw); - -// The gas component balance (air) is replaced by the total mass balance -SET_INT_PROP(TwoPTwoCSubProblem, ReplaceCompEqIdx, GET_PROP_TYPE(TypeTag, Indices)::contiNEqIdx); - -// Used the fluid system from the coupled problem -SET_TYPE_PROP(TwoPTwoCSubProblem, - FluidSystem, - typename GET_PROP_TYPE(typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag), FluidSystem)); - -// Use formulation based on mass fractions -SET_BOOL_PROP(TwoPTwoCSubProblem, UseMoles, false); - -// Enable velocity output -SET_BOOL_PROP(TwoPTwoCSubProblem, VtkAddVelocity, true); - -// Enable gravity -SET_BOOL_PROP(TwoPTwoCSubProblem, ProblemEnableGravity, true); -} - -/*! - * \ingroup ImplicitTestProblems - * \ingroup TwoPTwoCStokesTwoCModel - * \brief Isothermal two-phase two-component porous-medium subproblem - * with coupling at the top boundary. - * - * The Darcy subdomain is sized 0.25m times 0.25m. All BCs for the balance - * equations are set to Neumann no-flow, except for the top, where couplingInflow - * conditions are applied. - * - * This sub problem uses the \ref TwoPTwoCModel. It is part of the 2p2c model and - * is combined with the stokes2csubproblem for the free flow domain. - */ -template <class TypeTag = TTAG(TwoPTwoCSubProblem) > -class TwoPTwoCSubProblem : public ImplicitPorousMediaProblem<TypeTag> -{ - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - - typedef TwoPTwoCSubProblem<TypeTag> ThisType; - typedef ImplicitPorousMediaProblem<TypeTag> ParentType; - - // copy some indices for convenience - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - - enum { numEq = GET_PROP_VALUE(TypeTag, NumEq)}; - enum { // the equation indices - contiTotalMassIdx = Indices::contiNEqIdx, - contiWEqIdx = Indices::contiWEqIdx, - }; - enum { // the indices of the primary variables - pressureIdx = Indices::pressureIdx, - switchIdx = Indices::switchIdx, - }; - enum { // the indices for the phase presence - wPhaseOnly = Indices::wPhaseOnly, - nPhaseOnly = Indices::nPhaseOnly, - bothPhases = Indices::bothPhases - }; - enum { // grid and world dimension - dim = GridView::dimension, - dimWorld = GridView::dimensionworld - }; - - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; - typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; - - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename GridView::template Codim<dim>::Entity Vertex; - typedef typename GridView::Intersection Intersection; - - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - - typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; - -public: - /*! - * \brief The sub-problem for the porous-medium subdomain - * - * \param timeManager The TimeManager which is used by the simulation - * \param gridView The simulation's idea about physical space - */ - TwoPTwoCSubProblem(TimeManager &timeManager, const GridView gridView) - : ParentType(timeManager, gridView) - { - Scalar noDarcyX = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, NoDarcyX); - std::vector<Scalar> positions0 = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::vector<Scalar>, Grid, Positions0); - std::vector<Scalar> positions1 = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::vector<Scalar>, Grid, Positions1); - - using std::max; - bBoxMin_[0] = max(positions0.front(),noDarcyX); - bBoxMax_[0] = positions0.back(); - - bBoxMin_[1] = positions1.front(); - bBoxMax_[1] = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, InterfacePosY); - - runUpDistanceX_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, RunUpDistanceX); // first part of the interface without coupling - initializationTime_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, TimeManager, InitTime); - - refTemperature_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, PorousMedium, RefTemperature); - refPressure_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, PorousMedium, RefPressure); - initialSw_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, PorousMedium, InitialSw); - - freqMassOutput_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, int, Output, FreqMassOutput); - - storageLastTimestep_ = Scalar(0); - lastMassOutputTime_ = Scalar(0); - - outfile.open("storage.out"); - outfile << "Time;" - << "TotalMassChange;" - << "WaterMassChange;" - << "WaterMass" - << std::endl; - } - - ~TwoPTwoCSubProblem() - { - outfile.close(); - } - - // functions have to be overwritten, otherwise they remain uninitialized - //! \copydoc ImplicitProblem::bBoxMin() - const GlobalPosition &bBoxMin() const - { return bBoxMin_; } - - //! \copydoc ImplicitProblem::bBoxMax() - const GlobalPosition &bBoxMax() const - { return bBoxMax_; } - - /*! - * \name Problem parameters - */ - // \{ - - /*! - * \brief Returns the problem name - * - * This is used as a prefix for files generated by the simulation. - */ - const std::string &name() const - { return GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::string, Output, NamePM); } - - /*! - * \brief Called by the TimeManager in order to - * initialize the problem. - * - * If you overload this method don't forget to call - * ParentType::init() - */ - void init() - { - ParentType::init(); - - this->model().globalStorage(storageLastTimestep_); - } - - /*! - * \brief Returns the temperature \f$ K \f$ - * - * \param globalPos The global position - */ - Scalar temperatureAtPos(const GlobalPosition &globalPos) const - { - return refTemperature_; - } - // \} - - /*! - * \name Boundary conditions - */ - // \{ - - /*! - * \brief Specifies which kind of boundary condition should be - * used for which equation on a given boundary segment - * - * \param values Stores the value of the boundary type - * \param globalPos The global position - */ - void boundaryTypesAtPos(BoundaryTypes &values, - const GlobalPosition &globalPos) const - { - Scalar time = this->timeManager().time(); - - values.setAllNeumann(); - - if (onUpperBoundary_(globalPos) - && (globalPos[0] > runUpDistanceX_ - eps_) - && (time > initializationTime_)) - { - values.setAllCouplingNeumann(); - } - } - - /*! - * \brief Evaluate the boundary conditions for a Dirichlet - * boundary segment - * - * \param values Stores the Dirichlet values for the conservation equations in - * \f$ [ \textnormal{unit of primary variable} ] \f$ - * \param globalPos The global position - */ - void dirichletAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - initial_(values, globalPos); - } - - /*! - * \brief Evaluate the boundary conditions for a Neumann - * boundary segment. - * - * \param values The Neumann values for the conservation equations in units of - * \f$ [ \textnormal{unit of conserved quantity} / (m^{\textrm{dim}-1} \cdot s )] \f$ - * \param globalPos The global position - */ - void neumannAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - values = Scalar(0); - } - - // \} - - /*! - * \name Volume terms - */ - // \{ - - /*! - * \brief Returns the source term - * - * \param values Stores the source values for the conservation equations in - * \f$ [ \textnormal{unit of primary variable} / (m^\textrm{dim} \cdot s )] \f$ - * \param globalPos The global position - */ - void sourceAtPos(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - values = Scalar(0); - } - - /*! - * \brief Evaluates the initial values for a control volume - * - * \param values Stores the initial values for the conservation equations in - * \f$ [ \textnormal{unit of primary variables} ] \f$ - * \param globalPos The global position - */ - void initialAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - values = Scalar(0); - - initial_(values, globalPos); - } - - /*! - * \brief Return the initial phase state inside a control volume. - * - * \param vertex The vertex - * \param vIdxGlobal The global index of the vertex - * \param globalPos The global position - */ - int initialPhasePresence(const Vertex &vertex, - const int &vIdxGlobal, - const GlobalPosition &globalPos) const - { - return bothPhases; - } - - /*! - * \brief Called by the time manager after the time integration to - * do some post processing on the solution. - */ - void postTimeStep() - { - // Calculate masses - PrimaryVariables storage; - - this->model().globalStorage(storage); - const Scalar time = this->timeManager().time() + this->timeManager().timeStepSize(); - - // Write mass balance information for rank 0 - if (this->gridView().comm().rank() == 0) - { - if (this->timeManager().timeStepIndex() % freqMassOutput_ == 0 - || this->timeManager().episodeWillBeFinished()) - { - PrimaryVariables storageChange(0.); - storageChange = storageLastTimestep_ - storage; - - assert( (Dune::FloatCmp::ne<Scalar, Dune::FloatCmp::absolute>(time - lastMassOutputTime_, 0.0, 1.0e-30)) ); - storageChange /= (time - lastMassOutputTime_); - // 2d: interface length has to be accounted for - // in order to obtain kg/m²s - storageChange /= (bBoxMax_[0]-bBoxMin_[0]); - - std::cout << "Time: " << time - << " TotalMass: " << storage[contiTotalMassIdx] - << " WaterMass: " << storage[contiWEqIdx] - << " WaterMassChange: " << storageChange[contiWEqIdx] - << std::endl; - if (Dune::FloatCmp::ne<Scalar, Dune::FloatCmp::absolute>(this->timeManager().time(), 0.0, 1.0e-30)) - outfile << time << ";" - << storageChange[contiTotalMassIdx] << ";" - << storageChange[contiWEqIdx] << ";" - << storage[contiWEqIdx] - << std::endl; - - storageLastTimestep_ = storage; - lastMassOutputTime_ = time; - } - } - } - - // \} -private: - /*! - * \brief Internal method for the initial condition - * (reused for the dirichlet conditions!) - */ - void initial_(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - values[pressureIdx] = refPressure_ - + 1000.*this->gravity()[1]*(globalPos[1]-bBoxMax_[1]); - values[switchIdx] = initialSw_; - } - - bool onLeftBoundary_(const GlobalPosition &globalPos) const - { return globalPos[0] < bBoxMin_[0] + eps_; } - - bool onRightBoundary_(const GlobalPosition &globalPos) const - { return globalPos[0] > bBoxMax_[0] - eps_; } - - bool onLowerBoundary_(const GlobalPosition &globalPos) const - { return globalPos[1] < bBoxMin_[1] + eps_; } - - bool onUpperBoundary_(const GlobalPosition &globalPos) const - { return globalPos[1] > bBoxMax_[1] - eps_; } - - static constexpr Scalar eps_ = 1e-8; - GlobalPosition bBoxMin_; - GlobalPosition bBoxMax_; - - int freqMassOutput_; - - PrimaryVariables storageLastTimestep_; - Scalar lastMassOutputTime_; - - Scalar refTemperature_; - Scalar refPressure_; - Scalar initialSw_; - - Scalar runUpDistanceX_; - Scalar initializationTime_; - std::ofstream outfile; -}; -} //end namespace Dumux - -#endif // DUMUX_2P2C_SUBPROBLEM_HH diff --git a/test/multidomain/2cstokes2p2c/CMakeLists.txt b/test/multidomain/2cstokes2p2c/CMakeLists.txt deleted file mode 100644 index db793194a125c8c099a9cdc104154d614d704fe1..0000000000000000000000000000000000000000 --- a/test/multidomain/2cstokes2p2c/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -add_input_file_links() - -add_dumux_test(test_2cstokes2p2c test_2cstokes2p2c test_2cstokes2p2c.cc - python ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py - --script fuzzy - --command "${CMAKE_CURRENT_BINARY_DIR}/test_2cstokes2p2c -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_2cstokes2p2c_reference.input" - --files ${CMAKE_SOURCE_DIR}/test/references/2cstokes2p2c-ff-reference.vtu - ${CMAKE_CURRENT_BINARY_DIR}/stokes2c-00007.vtu - ${CMAKE_SOURCE_DIR}/test/references/2cstokes2p2c-pm-reference.vtu - ${CMAKE_CURRENT_BINARY_DIR}/2p2c-00007.vtu - --zeroThreshold {"velocityN_0":1e-8,"velocityN_1":1e-8,"velocityW_0":1e-8,"velocityW_1":1e-8,"pc":1e2}) -#install sources -install(FILES -2cstokes2p2cproblem.hh -2cstokes2p2cspatialparams.hh -2p2csubproblem.hh -stokes2csubproblem.hh -test_2cstokes2p2c.cc -DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/test/multidomain/2cstokes2p2c) diff --git a/test/multidomain/2cstokes2p2c/stokes2csubproblem.hh b/test/multidomain/2cstokes2p2c/stokes2csubproblem.hh deleted file mode 100644 index e6e61f16bad63d1601942a01b48cfd5d6b0f4c0a..0000000000000000000000000000000000000000 --- a/test/multidomain/2cstokes2p2c/stokes2csubproblem.hh +++ /dev/null @@ -1,456 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/** - * \file - * \brief Isothermal two-component stokes subproblem with air flowing - * from the left to the right and coupling at the bottom. - */ -#ifndef DUMUX_STOKES2C_SUBPROBLEM_HH -#define DUMUX_STOKES2C_SUBPROBLEM_HH - -#include <dumux/freeflow/stokesnc/model.hh> -#include <dumux/multidomain/2cstokes2p2c/stokesnccouplinglocalresidual.hh> -#include <dumux/multidomain/subdomainpropertydefaults.hh> - -namespace Dumux -{ - -template <class TypeTag> -class Stokes2cSubProblem; - -namespace Properties -{ -NEW_TYPE_TAG(Stokes2cSubProblem, - INHERITS_FROM(BoxStokesnc, SubDomain)); - -// Set the problem property -SET_TYPE_PROP(Stokes2cSubProblem, Problem, Stokes2cSubProblem<TypeTag>); - -// Use the local residual extended for the coupling the local residual extended for the coupling -SET_TYPE_PROP(Stokes2cSubProblem, LocalResidual, StokesncCouplingLocalResidual<TypeTag>); - -// Used the fluid system from the coupled problem -SET_TYPE_PROP(Stokes2cSubProblem, - FluidSystem, - typename GET_PROP_TYPE(typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag), FluidSystem)); - -// Use formulation based on mass fractions -SET_BOOL_PROP(Stokes2cSubProblem, UseMoles, false); - -// Disable gravity -SET_BOOL_PROP(Stokes2cSubProblem, ProblemEnableGravity, false); - -// Switch inertia term off -SET_BOOL_PROP(Stokes2cSubProblem, EnableNavierStokes, false); -} - -/*! - * \ingroup ImplicitTestProblems - * \ingroup TwoPTwoCStokesTwoCModel - * \brief Isothermal two-component stokes subproblem with air flowing - * from the left to the right and coupling at the bottom. - * - * The Stokes subdomain is sized 0.25m times 0.25m. The boundary conditions - * for the momentum balances are all set to Dirichlet, except on the right - * boundary, where outflow conditions are set. The mass balance receives - * outflow BCs, which are replaced in the localresidual by the sum - * of the two momentum balances. On the right boundary Dirichlet BCs are - * set for the pressure. - * - * This sub problem uses the \ref StokesncModel. It is part of the - * 2cstokes2p2c model and is combined with the 2p2csubproblem for - * the Darcy domain. - */ -template <class TypeTag> -class Stokes2cSubProblem : public StokesProblem<TypeTag> -{ - typedef Stokes2cSubProblem<TypeTag> ThisType; - typedef StokesProblem<TypeTag> ParentType; - - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; - - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - - enum { - // Number of equations and grid dimension - numEq = GET_PROP_VALUE(TypeTag, NumEq), - dim = GridView::dimension - }; - enum { // equation indices - massBalanceIdx = Indices::massBalanceIdx, - - momentumXIdx = Indices::momentumXIdx, //!< Index of the x-component of the momentum balance - momentumYIdx = Indices::momentumYIdx, //!< Index of the y-component of the momentum balance - momentumZIdx = Indices::momentumZIdx, //!< Index of the z-component of the momentum balance - - transportEqIdx = Indices::transportEqIdx //!< Index of the transport equation (massfraction) - }; - enum { // primary variable indices - pressureIdx = Indices::pressureIdx, - velocityXIdx = Indices::velocityXIdx, - velocityYIdx = Indices::velocityYIdx, - velocityZIdx = Indices::velocityZIdx, - massOrMoleFracIdx = Indices::massOrMoleFracIdx - }; - enum { phaseIdx = Indices::phaseIdx }; - enum { numComponents = Indices::numComponents }; - enum { - transportCompIdx = Indices::transportCompIdx, //!< water component index - phaseCompIdx = Indices::phaseCompIdx //!< air component index - }; - - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; - - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename GridView::template Codim<dim>::Entity Vertex; - typedef typename GridView::ctype CoordScalar; - typedef typename GridView::Intersection Intersection; - - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - typedef typename GET_PROP_TYPE(TypeTag, FluidState) FluidState; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef Dune::FieldVector<CoordScalar, dim> GlobalPosition; - -public: - /*! - * \brief The sub-problem for the Stokes subdomain - * - * \param timeManager The TimeManager which is used by the simulation - * \param gridView The simulation's idea about physical space - */ - Stokes2cSubProblem(TimeManager &timeManager, const GridView gridView) - : ParentType(timeManager, gridView) - { - std::vector<Scalar> positions0 = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::vector<Scalar>, Grid, Positions0); - std::vector<Scalar> positions1 = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::vector<Scalar>, Grid, Positions1); - - bBoxMin_[0] = positions0.front(); - bBoxMax_[0] = positions0.back(); - bBoxMin_[1] = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, InterfacePosY); - bBoxMax_[1] = positions1.back(); - runUpDistanceX_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, RunUpDistanceX); // first part of the interface without coupling - - refVelocity_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefVelocity); - refPressure_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefPressure); - refMassfrac_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefMassfrac); - refTemperature_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefTemperature); - - sinusVAmplitude_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusVelAmplitude); - sinusVPeriod_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusVelPeriod); - sinusPAmplitude_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusPressureAmplitude); - sinusPPeriod_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusPressurePeriod); - sinusXAmplitude_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusConcentrationAmplitude); - sinusXPeriod_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusConcentrationPeriod); - sinusTAmplitude_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusTemperatureAmplitude); - sinusTPeriod_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusTemperaturePeriod); - - initializationTime_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, TimeManager, InitTime); - } - - // functions have to be overwritten, otherwise they remain uninitialized - //! \copydoc ImplicitProblem::bBoxMin() - const GlobalPosition &bBoxMin() const - { return bBoxMin_; } - - //! \copydoc ImplicitProblem::bBoxMax() - const GlobalPosition &bBoxMax() const - { return bBoxMax_; } - - /*! - * \name Problem parameters - */ - // \{ - - /*! - * \brief Returns the problem name - * - * This is used as a prefix for files generated by the simulation. - */ - const std::string &name() const - { return GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::string, Output, NameFF); } - - /*! - * \brief Returns the temperature within the domain. - * - * This problem assumes a constant temperature, which can - * be set in the parameter file. - */ - Scalar temperature() const - { - return refTemperature_; - }; - - // \} - - /*! - * \name Boundary conditions - */ - // \{ - - /*! - * \brief Specifies which kind of boundary condition should be - * used for which equation on a given boundary segment - * - * \param values Stores the value of the boundary type - * \param globalPos The global position - */ - void boundaryTypesAtPos(BoundaryTypes &values, - const GlobalPosition &globalPos) const - { - const Scalar time = this->timeManager().time(); - - values.setAllDirichlet(); - - if (onUpperBoundary_(globalPos)) - values.setNeumann(transportEqIdx); - - // Left inflow boundaries should be Neumann, otherwise the - // evaporative fluxes are much more grid dependent - if (onLeftBoundary_(globalPos)) - { - values.setNeumann(transportEqIdx); - - if (onUpperBoundary_(globalPos)) // corner point - values.setAllDirichlet(); - } - - if (onRightBoundary_(globalPos)) - { - values.setAllOutflow(); - - if (onUpperBoundary_(globalPos)) // corner point - values.setAllDirichlet(); - } - - if (onLowerBoundary_(globalPos)) - { - values.setAllDirichlet(); - values.setNeumann(transportEqIdx); - - if (globalPos[0] > runUpDistanceX_-eps_ && time > initializationTime_) - { - values.setAllCouplingDirichlet(); - values.setCouplingNeumann(momentumXIdx); - values.setCouplingNeumann(momentumYIdx); - } - } - - // the mass balance has to be of type outflow - // it does not get a coupling condition, since pn is a condition for stokes - values.setOutflow(massBalanceIdx); - - // set pressure at one point, do NOT specify this - // if the Darcy domain has a Dirichlet condition for pressure - if (onRightBoundary_(globalPos)) - { - if (time > initializationTime_) - values.setDirichlet(pressureIdx); - else - if (!onLowerBoundary_(globalPos) && !onUpperBoundary_(globalPos)) - values.setDirichlet(pressureIdx); - } - } - - /*! - * \brief Evaluates the boundary conditions for a Dirichlet - * boundary segment - * - * \param values Stores the Dirichlet values for the conservation equations in - * \f$ [ \textnormal{unit of primary variable} ] \f$ - * \param globalPos The global position - */ - void dirichletAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - FluidState fluidState; - updateFluidStateForBC_(fluidState); - - const Scalar density = - FluidSystem::density(fluidState, phaseIdx); - - values[velocityXIdx] = xVelocity_(globalPos); - values[velocityYIdx] = 0.0; - values[pressureIdx] = refPressure() - + density*this->gravity()[1]*(globalPos[1] - bBoxMin_[1]); - values[massOrMoleFracIdx] = refMassfrac(); - } - - /*! - * \brief Evaluate the boundary conditions for a Neumann - * boundary segment. - * - * \param values The Neumann values for the conservation equations in units of - * \f$ [ \textnormal{unit of conserved quantity} / (m^{\textrm{dim}-1} \cdot s )] \f$ - * \param globalPos The global position - */ - void neumannAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - values = 0.; - - FluidState fluidState; - updateFluidStateForBC_(fluidState); - - const Scalar density = - FluidSystem::density(fluidState, phaseIdx); - const Scalar xVelocity = xVelocity_(globalPos); - - if (onLeftBoundary_(globalPos) - && globalPos[1] > bBoxMin_[1] - eps_ && globalPos[1] < bBoxMax_[1] + eps_) - { - // rho*v*X at inflow - values[transportEqIdx] = -xVelocity * density * refMassfrac(); - } - } - - // \} - - /*! - * \name Volume terms - */ - // \{ - - /*! - * \brief Returns the source term - * - * \param values Stores the source values for the conservation equations in - * \f$ [ \textnormal{unit of primary variable} / (m^\textrm{dim} \cdot s )] \f$ - * \param globalPos The global position - */ - void sourceAtPos(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - // The source term of the mass balance has to be chosen as - // div (q_momentum) in the problem file - values = Scalar(0); - } - - /*! - * \brief Evaluate the initial value for a control volume. - * - * \param values Stores the initial values for the conservation equations in - * \f$ [ \textnormal{unit of primary variables} ] \f$ - * \param globalPos The global position - */ - void initialAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const - { - initial_(values, globalPos); - } - // \} - - //! \brief Returns the reference velocity. - const Scalar refVelocity() const - { return refVelocity_ + variation_(sinusVAmplitude_, sinusVPeriod_); } - - //! \brief Returns the reference pressure. - const Scalar refPressure() const - { return refPressure_ + variation_(sinusPAmplitude_, sinusPPeriod_); } - - //! \brief Returns the reference mass fraction. - const Scalar refMassfrac() const - { return refMassfrac_ + variation_(sinusXAmplitude_, sinusXPeriod_); } - - //! \brief Returns the reference temperature. - const Scalar refTemperature() const - { return refTemperature_+ variation_(sinusTAmplitude_, sinusTPeriod_); } - -private: - /*! - * \brief Internal method for the initial condition - * (reused for the dirichlet conditions!) - */ - void initial_(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - FluidState fluidState; - updateFluidStateForBC_(fluidState); - - const Scalar density = - FluidSystem::density(fluidState, phaseIdx); - - values[velocityXIdx] = xVelocity_(globalPos); - values[velocityYIdx] = 0.; - - values[pressureIdx] = refPressure() - + density*this->gravity()[1]*(globalPos[1] - bBoxMin_[1]); - values[massOrMoleFracIdx] = refMassfrac(); - } - - //! \brief set the profile of the inflow velocity (horizontal direction) - const Scalar xVelocity_(const GlobalPosition &globalPos) const - { - const Scalar vmax = refVelocity(); - return 4*vmax*(globalPos[1] - bBoxMin_[1])*(bBoxMax_[1] - globalPos[1]) - / (height_()*height_()) + 0.00134; - } - - //! \brief updates the fluid state to obtain required quantities for IC/BC - void updateFluidStateForBC_(FluidState& fluidState) const - { - fluidState.setTemperature(refTemperature()); - fluidState.setPressure(phaseIdx, refPressure()); - // setMassFraction() has only to be called 1-numComponents times - fluidState.setMassFraction(phaseIdx, transportCompIdx, refMassfrac()); - } - - // can be used for the variation of a boundary condition - const Scalar variation_(const Scalar amplitude, const Scalar period) const - { return sin(2*M_PI*this->timeManager().time()/period) * amplitude; } - - bool onLeftBoundary_(const GlobalPosition &globalPos) const - { return globalPos[0] < bBoxMin_[0] + eps_; } - - bool onRightBoundary_(const GlobalPosition &globalPos) const - { return globalPos[0] > bBoxMax_[0] - eps_; } - - bool onLowerBoundary_(const GlobalPosition &globalPos) const - { return globalPos[1] < bBoxMin_[1] + eps_; } - - bool onUpperBoundary_(const GlobalPosition &globalPos) const - { return globalPos[1] > bBoxMax_[1] - eps_; } - - // the height of the free-flow domain - const Scalar height_() const - { return bBoxMax_[1] - bBoxMin_[1]; } - - static constexpr Scalar eps_ = 1e-8; - GlobalPosition bBoxMin_; - GlobalPosition bBoxMax_; - - Scalar refVelocity_; - Scalar refPressure_; - Scalar refMassfrac_; - Scalar refTemperature_; - - Scalar sinusVAmplitude_; - Scalar sinusVPeriod_; - Scalar sinusPAmplitude_; - Scalar sinusPPeriod_; - Scalar sinusXAmplitude_; - Scalar sinusXPeriod_; - Scalar sinusTAmplitude_; - Scalar sinusTPeriod_; - - Scalar runUpDistanceX_; - Scalar initializationTime_; -}; -} //end namespace Dumux - -#endif // DUMUX_STOKES2C_SUBPROBLEM_HH diff --git a/test/multidomain/2cstokes2p2c/test_2cstokes2p2c.cc b/test/multidomain/2cstokes2p2c/test_2cstokes2p2c.cc deleted file mode 100644 index e9deb26bca2b27a5db4f9d3d7da4ba6a5c6f8144..0000000000000000000000000000000000000000 --- a/test/multidomain/2cstokes2p2c/test_2cstokes2p2c.cc +++ /dev/null @@ -1,88 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Test for the coupled isothermal two-component Stokes and - * isothermal two-phase two-component Darcy model - */ - -#include <config.h> -#include <iostream> - -#include <dune/common/parallel/mpihelper.hh> - -#if HAVE_DUNE_MULTIDOMAIN - -#include <dumux/common/start.hh> - -#include "2cstokes2p2cproblem.hh" - -/*! - * \brief Print a usage string for simulations. - * - * \param progName The name of the program, that was tried to be started. - * \param errorMsg The error message that was issued by the start function. - * Comprises the thing that went wrong and a general help message. - */ -void printUsage(const char *progName, const std::string &errorMsg) -{ - if (errorMsg.size() > 0) { - std::string errorMessageOut = "\nUsage: "; - errorMessageOut += progName; - errorMessageOut += " [options]\n"; - errorMessageOut += errorMsg; - errorMessageOut += "\n\nThe list of optional options for this program is:\n" - "[BoundaryLayer]\n" - "Model Number/ID of the used model\n" - "Offset Virtual run-up distance for BL models [m]\n" - "ConstThickness Constant BL thickness (model 1) [m]\n" - "YPlus Conversion value (model 4-6) [-]\n" - "RoughnessLength Characteristic roughness length (model 6)\n" - "\n" - "[MassTransferModel]\n" - "Coefficient Coeffient used for the exponential law (model 1) [-]\n" - "CharPoreRadius Characteristic pore radius for Schluender model (model 2+4) [m]\n" - "\n"; - - std::cout << errorMessageOut - << "\n"; - } -} - -int main(int argc, char** argv) -{ -#if (HAVE_SUPERLU || HAVE_PARDISO) - typedef TTAG(TwoCStokesTwoPTwoCTestProblem) ProblemTypeTag; - return Dumux::start<ProblemTypeTag>(argc, argv, printUsage); -#else -#warning "You need to have SuperLU or Pardiso installed to run this test." - std::cerr << "You need to have SuperLU or Pardiso installed to run this test\n"; - return 77; -#endif -} - -#else -int main(int argc, char** argv) -{ -#warning You need to have dune-multidomain installed to run this test - std::cerr << "You need to have dune-multidomain installed to run this test\n"; - return 77; -} -#endif diff --git a/test/multidomain/2cstokes2p2c/test_2cstokes2p2c.input b/test/multidomain/2cstokes2p2c/test_2cstokes2p2c.input deleted file mode 100644 index 6f611d5885d316d2a434f7983fada2f2d837854a..0000000000000000000000000000000000000000 --- a/test/multidomain/2cstokes2p2c/test_2cstokes2p2c.input +++ /dev/null @@ -1,74 +0,0 @@ -[TimeManager] -DtInitial = 5e-1 # [s] -MaxTimeStepSize = 360 # [s] -InitTime = 0 # [s] Initialization time without coupling -TEnd = 7200 # [s] -EpisodeLength = 3600 # [s] - -[Grid] -Cells0 = 30 -Cells1 = 30 30 -Grading0 = 1.0 -Grading1 = -1.2 1.2 -Positions0 = 0.0 0.25 -Positions1 = 0.0 0.25 0.5 - -RunUpDistanceX = 0.0 # [m] Horizontal position without coupling to PM -NoDarcyX = 0.0 # [m] Horizontal position without PM below -InterfacePosY = 0.25 # [m] Vertical position of coupling interface - -[Output] -NameFF = stokes2c -NamePM = 2p2c -#Frequency of restart file, flux and VTK output -FreqRestart = 1000 # how often restart files are written out -FreqOutput = 50 # frequency of VTK output -FreqMassOutput = 2 # frequency of mass and evaporation rate output (Darcy) - -[Stokes] -StabilizationAlpha = -1.0 - -[FreeFlow] -RefVelocity = 3.5 # [m/s] -RefPressure = 1e5 # [Pa] -RefMassfrac = 0.008 # [-] -RefTemperature = 298.15 # [K] -SinusVelAmplitude = 0.0 # [m/s] -SinusVelPeriod = 3600 # [s] -SinusPressureAmplitude = 0.0 # [Pa] -SinusPressurePeriod = 3600 # [s] -SinusConcentrationAmplitude = 0.0 # [-] -SinusConcentrationPeriod = 3600 # [s] -SinusTemperatureAmplitude = 0.0 # [K] -SinusTemperaturePeriod = 3600 # [s] - -[BoundaryLayer] -Model = 0 - -[MassTransfer] -Model = 0 - -[PorousMedium] -RefPressure = 1e5 # [Pa] -RefTemperature = 298.15 # [K] -InitialSw = 0.98 # [-] - -[SpatialParams] -AlphaBJ = 1.0 # [-] -Permeability = 2.65e-10 # [m^2] -Porosity = 0.41 # [-] -Swr = 0.005 # [-] -Snr = 0.01 # [-] -VgAlpha = 6.371e-4 # [1/Pa] -VgN = 6.9 # [-] -LambdaSolid = 5.3 # [W/(m*K)] - -[Newton] -MaxRelativeShift = 1e-5 -TargetSteps = 8 -MaxSteps = 12 -WriteConvergence = false -MaxTimeStepDivisions = 20 - -[LinearSolver] -Verbosity = 0 diff --git a/test/multidomain/2cstokes2p2c/test_2cstokes2p2c_reference.input b/test/multidomain/2cstokes2p2c/test_2cstokes2p2c_reference.input deleted file mode 100644 index 7ecf5e7758a1d5427a1fff0562765d9a808c308a..0000000000000000000000000000000000000000 --- a/test/multidomain/2cstokes2p2c/test_2cstokes2p2c_reference.input +++ /dev/null @@ -1,74 +0,0 @@ -[TimeManager] -DtInitial = 5e-1 # [s] -MaxTimeStepSize = 240 # [s] -InitTime = 0 # [s] Initialization time without coupling -TEnd = 7200 # [s] -EpisodeLength = 3600 # [s] - -[Grid] -Cells0 = 10 -Cells1 = 12 12 -Grading0 = 1.0 -Grading1 = -1.2 1.2 -Positions0 = 0.0 0.25 -Positions1 = 0.0 0.25 0.5 - -RunUpDistanceX = 0.0 # [m] Horizontal position without coupling to PM -NoDarcyX = 0.0 # [m] Horizontal position without PM below -InterfacePosY = 0.25 # [m] Vertical position of coupling interface - -[Output] -NameFF = stokes2c -NamePM = 2p2c -#Frequency of restart file, flux and VTK output -FreqRestart = 1000 # how often restart files are written out -FreqOutput = 10 # frequency of VTK output -FreqMassOutput = 2 # frequency of mass and evaporation rate output (Darcy) - -[Stokes] -StabilizationAlpha = -1.0 - -[FreeFlow] -RefVelocity = 3.5 # [m/s] -RefPressure = 1e5 # [Pa] -RefMassfrac = 0.008 # [-] -RefTemperature = 298.15 # [K] -SinusVelAmplitude = 0.0 # [m/s] -SinusVelPeriod = 3600 # [s] -SinusPressureAmplitude = 0.0 # [Pa] -SinusPressurePeriod = 3600 # [s] -SinusConcentrationAmplitude = 0.0 # [-] -SinusConcentrationPeriod = 3600 # [s] -SinusTemperatureAmplitude = 0.0 # [K] -SinusTemperaturePeriod = 3600 # [s] - -[BoundaryLayer] -Model = 0 - -[MassTransfer] -Model = 0 - -[PorousMedium] -RefPressure = 1e5 # [Pa] -RefTemperature = 298.15 # [K] -InitialSw = 0.98 # [-] - -[SpatialParams] -AlphaBJ = 1.0 # [-] -Permeability = 2.65e-10 # [m^2] -Porosity = 0.41 # [-] -Swr = 0.005 # [-] -Snr = 0.01 # [-] -VgAlpha = 6.371e-4 # [1/Pa] -VgN = 6.9 # [-] -LambdaSolid = 5.26 # [W/(m*K)] - -[Newton] -MaxRelativeShift = 1e-5 -TargetSteps = 8 -MaxSteps = 12 -WriteConvergence = false -MaxTimeStepDivisions = 20 - -[LinearSolver] -Verbosity = 0 diff --git a/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh b/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh deleted file mode 100644 index 72d43c90281fb8977c3983e698e37c1cdee0ac5b..0000000000000000000000000000000000000000 --- a/test/multidomain/2czeroeq2p2c/2czeroeq2p2cproblem.hh +++ /dev/null @@ -1,221 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/** - * \file - * \brief The problem which couples an isothermal two-component ZeroEq - * and an isothermal two-phase two-component Darcy model. - */ -#ifndef DUMUX_TWOCZEROEQTWOPTWOCPROBLEM_HH -#define DUMUX_TWOCZEROEQTWOPTWOCPROBLEM_HH - -#include <dune/grid/multidomaingrid.hh> -#include <dune/grid/common/gridinfo.hh> - -#include <dumux/material/fluidsystems/h2oair.hh> -#include <dumux/multidomain/2cstokes2p2c/localoperator.hh> -#include <dumux/multidomain/2cstokes2p2c/problem.hh> -#include <dumux/multidomain/2cstokes2p2c/propertydefaults.hh> - -#include "2czeroeq2p2cspatialparameters.hh" -#include "zeroeq2csubproblem.hh" -#include "2p2csubproblem.hh" - -namespace Dumux -{ -template <class TypeTag> -class TwoCZeroEqTwoPTwoCTestProblem; - -namespace Properties -{ -NEW_TYPE_TAG(TwoCZeroEqTwoPTwoCTestProblem, INHERITS_FROM(TwoCStokesTwoPTwoC)); - -// Set the grid type -SET_TYPE_PROP(TwoCZeroEqTwoPTwoCTestProblem, Grid, Dune::YaspGrid<2, Dune::TensorProductCoordinates<typename GET_PROP_TYPE(TypeTag, Scalar), 2> >); - -// Set the global problem -SET_TYPE_PROP(TwoCZeroEqTwoPTwoCTestProblem, Problem, TwoCZeroEqTwoPTwoCTestProblem<TypeTag>); - -// Set the two sub-problems of the global problem -SET_TYPE_PROP(TwoCZeroEqTwoPTwoCTestProblem, SubDomain1TypeTag, TTAG(ZeroEq2cSubProblem)); -SET_TYPE_PROP(TwoCZeroEqTwoPTwoCTestProblem, SubDomain2TypeTag, TTAG(TwoPTwoCSubProblem)); - -// Set the local coupling operator -SET_TYPE_PROP(TwoCZeroEqTwoPTwoCTestProblem, MultiDomainCouplingLocalOperator, - TwoCStokesTwoPTwoCLocalOperator<TypeTag>); - -// Set the global problem in the context of the two sub-problems -SET_TYPE_PROP(ZeroEq2cSubProblem, MultiDomainTypeTag, TTAG(TwoCZeroEqTwoPTwoCTestProblem)); -SET_TYPE_PROP(TwoPTwoCSubProblem, MultiDomainTypeTag, TTAG(TwoCZeroEqTwoPTwoCTestProblem)); - -// Set the other sub-problem for each of the two sub-problems -SET_TYPE_PROP(ZeroEq2cSubProblem, OtherSubDomainTypeTag, TTAG(TwoPTwoCSubProblem)); -SET_TYPE_PROP(TwoPTwoCSubProblem, OtherSubDomainTypeTag, TTAG(ZeroEq2cSubProblem)); - -// Set the same spatial parameters for both sub-problems -SET_TYPE_PROP(TwoPTwoCSubProblem, SpatialParams, TwoCZeroEqTwoPTwoCSpatialParams<TypeTag>); - -// Set the fluid system to use simple relations (last argument) -SET_TYPE_PROP(TwoCZeroEqTwoPTwoCTestProblem, FluidSystem, - FluidSystems::H2OAir<typename GET_PROP_TYPE(TypeTag, Scalar)>); - -// If SuperLU is not available, the UMFPack solver is used: -#ifdef HAVE_SUPERLU -SET_TYPE_PROP(TwoCZeroEqTwoPTwoCTestProblem, LinearSolver, SuperLUBackend<TypeTag>); -#else -SET_TYPE_PROP(TwoCZeroEqTwoPTwoCTestProblem, LinearSolver, UMFPackBackend<TypeTag>); -#endif -} - - -/*! - * \ingroup TwoPTwoCZeroEqTwoCModel - * \ingroup ImplicitTestProblems - * \brief The problem which couples an isothermal two-component ZeroEq (zeroeq2c) - * and an isothermal two-phase two-component Darcy model (2p2c). - * - * It uses the multidomain problem and specifies parameters for the two submodels. - * The initial and boundary conditions of the submodels are specified in the two subproblems, - * 2p2csubproblem.hh and zeroeq2csubproblem.hh, which are accessible via the coupled problem. - */ -template <class TypeTag = TTAG(TwoCZeroEqTwoPTwoCTestProblem) > -class TwoCZeroEqTwoPTwoCTestProblem : public TwoCStokesTwoPTwoCProblem<TypeTag> -{ - typedef TwoCStokesTwoPTwoCProblem<TypeTag> ParentType; - - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; - - typedef typename GET_PROP_TYPE(TypeTag, GridCreator) GridCreator; - typedef typename GET_PROP_TYPE(TypeTag, MultiDomainGrid) MDGrid; - typedef typename MDGrid::LeafGridView MDGridView; - enum { dim = MDGridView::dimension }; - typedef Dune::FieldVector<Scalar, dim> GlobalPosition; - - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - -public: - /*! - * \brief The problem for the coupling of Stokes and Darcy flow - * - * \param timeManager The time manager - * \param gridView The grid view - */ - template<class GridView> - TwoCZeroEqTwoPTwoCTestProblem(TimeManager &timeManager, - GridView gridView) - : ParentType(timeManager, gridView) - { - dtInit_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, TimeManager, DtInitial); - episodeLength_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, TimeManager, EpisodeLength); - - // define location of the interface - interfacePosY_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, InterfacePosY); - noDarcyX_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, NoDarcyX); - - // define output options - freqRestart_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, int, Output, FreqRestart); - freqOutput_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, int, Output, FreqOutput); - - zeroeq2c_ = this->sdID1(); - twoPtwoC_ = this->sdID2(); - - initializeGrid(); - - // initialize the tables of the fluid system - FluidSystem::init(/*tempMin=*/273.15, /*tempMax=*/323.15, /*numTemp=*/50, - /*pMin=*/5e4, /*pMax=*/1.5e5, /*numP=*/100); - - this->timeManager().startNextEpisode(episodeLength_); - } - - /*! - * \brief Initialization of the grids - * - * This function splits the multidomain grid in the two - * individual subdomain grids and takes care of parallelization. - */ - void initializeGrid() - { - MDGrid& mdGrid = this->mdGrid(); - mdGrid.startSubDomainMarking(); - - // subdivide grid in two subdomains - for (const auto& element : elements(mdGrid.leafGridView(), Dune::Partitions::interior)) - { - GlobalPosition globalPos = element.geometry().center(); - - if (globalPos[1] > interfacePosY_ - eps_) - mdGrid.addToSubDomain(zeroeq2c_,element); - else - if(globalPos[0] > noDarcyX_ - eps_) - mdGrid.addToSubDomain(twoPtwoC_,element); - } - mdGrid.preUpdateSubDomains(); - mdGrid.updateSubDomains(); - mdGrid.postUpdateSubDomains(); - - gridinfo(this->sdGrid1()); - gridinfo(this->sdGrid2()); - } - - /*! - * \brief Called when the end of an simulation episode is reached. - * - * Typically a new episode should be started in this method. - */ - void episodeEnd() - { this->timeManager().startNextEpisode(episodeLength_); } - - //! \copydoc ImplicitProblem::shouldWriteRestartFile() - bool shouldWriteRestartFile() const - { - return ( ((this->timeManager().timeStepIndex() > 0) - && (this->timeManager().timeStepIndex() % freqRestart_ == 0)) - // also write a restart file at the end of each episode - || this->timeManager().episodeWillBeFinished() - || this->timeManager().willBeFinished()); - } - - //! \copydoc ImplicitProblem::shouldWriteOutput() - bool shouldWriteOutput() const - { - return (this->timeManager().timeStepIndex() % freqOutput_ == 0 - || this->timeManager().episodeWillBeFinished() - || this->timeManager().willBeFinished()); - } - -private: - typename MDGrid::SubDomainType zeroeq2c_; - typename MDGrid::SubDomainType twoPtwoC_; - - unsigned freqRestart_; - unsigned freqOutput_; - - Scalar interfacePosY_; - Scalar noDarcyX_; - Scalar episodeLength_; - Scalar initializationTime_; - Scalar dtInit_; - - static constexpr Scalar eps_ = 1e-8; -}; - -} // namespace Dumux - -#endif // DUMUX_TWOCZEROEQTWOPTWOCPROBLEM_HH diff --git a/test/multidomain/2czeroeq2p2c/2czeroeq2p2cspatialparameters.hh b/test/multidomain/2czeroeq2p2c/2czeroeq2p2cspatialparameters.hh deleted file mode 100644 index d17a33b127a74927f559101eaddaf7108413fb69..0000000000000000000000000000000000000000 --- a/test/multidomain/2czeroeq2p2c/2czeroeq2p2cspatialparameters.hh +++ /dev/null @@ -1,169 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Spatial parameters for the - * coupling of an isothermal two-component ZeroEq - * and an isothermal two-phase two-component Darcy model. - */ - -#ifndef DUMUX_TWOCZEROEQTWOPTWOCSPATIALPARAMS_HH -#define DUMUX_TWOCZEROEQTWOPTWOCSPATIALPARAMS_HH - -#include <dumux/material/spatialparams/implicit.hh> -#include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh> -#include <dumux/material/fluidmatrixinteractions/2p/regularizedvangenuchten.hh> -#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh> - -namespace Dumux -{ - -//forward declaration -template<class TypeTag> -class TwoCZeroEqTwoPTwoCSpatialParams; - -namespace Properties -{ -// The spatial parameters TypeTag -NEW_TYPE_TAG(TwoCZeroEqTwoPTwoCSpatialParams); - -// Set the spatial parameters -SET_TYPE_PROP(TwoCZeroEqTwoPTwoCSpatialParams, SpatialParams, TwoCZeroEqTwoPTwoCSpatialParams<TypeTag>); - -// Set the material law parameterized by absolute saturations -SET_TYPE_PROP(TwoCZeroEqTwoPTwoCSpatialParams, - MaterialLaw, - EffToAbsLaw<RegularizedVanGenuchten<typename GET_PROP_TYPE(TypeTag, Scalar)>>); -// EffToAbsLaw<RegularizedBrooksCorey<typename GET_PROP_TYPE(TypeTag, Scalar)> >); -} - - -/*! - * \ingroup TwoPTwoCZeroEqTwoCModel - * \ingroup ImplicitTestProblems - * \brief Definition of the spatial parameters for - * the coupling of an isothermal two-component ZeroEq - * and an isothermal two-phase two-component Darcy model. - */ -template<class TypeTag> -class TwoCZeroEqTwoPTwoCSpatialParams : public ImplicitSpatialParams<TypeTag> -{ - typedef ImplicitSpatialParams<TypeTag> ParentType; - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef typename GridView::ctype CoordScalar; - - enum { - dim=GridView::dimension, - dimWorld=GridView::dimensionworld - }; - typedef Dune::FieldVector<CoordScalar,dimWorld> GlobalPosition; - - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - - typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw; - typedef typename MaterialLaw::Params MaterialLawParams; - -public: - /*! - * \brief Spatial parameters for the - * coupling of an isothermal two-component ZeroEq - * and an isothermal two-phase two-component Darcy model. - * - * \param gridView The GridView which is used by the problem - */ - TwoCZeroEqTwoPTwoCSpatialParams(const GridView& gridView) - : ParentType(gridView) - { - permeability_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, Permeability); - porosity_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, Porosity); - alphaBJ_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, AlphaBJ); - - spatialParams_.setSwr(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, Swr)); - spatialParams_.setSnr(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, Snr)); - spatialParams_.setVgAlpha(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, VgAlpha)); - spatialParams_.setVgn(GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, SpatialParams, VgN)); - } - - /*! - * \brief Returns the intrinsic permeability tensor \f$[m^2]\f$ - * - * \param element The finite element - * \param fvGeometry The finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume - */ - const Scalar intrinsicPermeability(const Element &element, - const FVElementGeometry &fvGeometry, - const int scvIdx) const - { - return permeability_; - } - - /*! - * \brief Returns the porosity \f$[-]\f$ - * - * \param element The finite element - * \param fvGeometry The finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume - */ - Scalar porosity(const Element &element, - const FVElementGeometry &fvGeometry, - const int scvIdx) const - { - return porosity_; - } - - /*! - * \brief Returns the parameter object for the material law - * - * \param element The finite element - * \param fvGeometry The finite volume geometry of the element - * \param scvIdx The local index of the sub-control volume - */ - const MaterialLawParams& materialLawParams(const Element &element, - const FVElementGeometry &fvGeometry, - const int scvIdx) const - { - return spatialParams_; - } - - /*! - * \brief Evaluate the Beavers-Joseph coefficient at given position - * - * \param globalPos The global position - * - * \return Beavers-Joseph coefficient - */ - Scalar beaversJosephCoeffAtPos(const GlobalPosition &globalPos) const - { - return alphaBJ_; - } - -private: - Scalar permeability_; - Scalar porosity_; - Scalar alphaBJ_; - MaterialLawParams spatialParams_; -}; - -} // end namespace Dumux - -#endif // DUMUX_TWOCZEROEQTWOPTWOCSPATIALPARAMS_HH diff --git a/test/multidomain/2czeroeq2p2c/2p2csubproblem.hh b/test/multidomain/2czeroeq2p2c/2p2csubproblem.hh deleted file mode 100644 index 0a2dc0111ccb9805f9ffea4db7c94196a5044f97..0000000000000000000000000000000000000000 --- a/test/multidomain/2czeroeq2p2c/2p2csubproblem.hh +++ /dev/null @@ -1,374 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Isothermal two-phase two-component porous-medium subproblem - * with coupling at the top boundary. - */ -#ifndef DUMUX_TWOPTWOC_SUBPROBLEM_HH -#define DUMUX_TWOPTWOC_SUBPROBLEM_HH - -#include <dumux/porousmediumflow/2p2c/implicit/indices.hh> -#include <dumux/porousmediumflow/implicit/problem.hh> -#include <dumux/multidomain/subdomainpropertydefaults.hh> -#include <dumux/multidomain/localoperator.hh> -#include <dumux/multidomain/2cstokes2p2c/2p2ccouplinglocalresidual.hh> - -#include "2czeroeq2p2cspatialparameters.hh" - -namespace Dumux -{ -template <class TypeTag> -class TwoPTwoCSubProblem; - -namespace Properties -{ -NEW_TYPE_TAG(TwoPTwoCSubProblem, - INHERITS_FROM(BoxTwoPTwoC, SubDomain, TwoCZeroEqTwoPTwoCSpatialParams)); - -// Set the problem property -SET_TYPE_PROP(TwoPTwoCSubProblem, Problem, TwoPTwoCSubProblem<TTAG(TwoPTwoCSubProblem)>); - -// Set the local residual extended for the coupling -SET_TYPE_PROP(TwoPTwoCSubProblem, LocalResidual, TwoPTwoCCouplingLocalResidual<TypeTag>); - -// Set pn and Sw as primary variables -SET_INT_PROP(TwoPTwoCSubProblem, Formulation, TwoPTwoCFormulation::pnsw); - -// Set the gas component balance (air) to be replaced by the total mass balance -SET_INT_PROP(TwoPTwoCSubProblem, ReplaceCompEqIdx, GET_PROP_TYPE(TypeTag, Indices)::contiNEqIdx); - -// Used the fluid system from the coupled problem -SET_TYPE_PROP(TwoPTwoCSubProblem, - FluidSystem, - typename GET_PROP_TYPE(typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag), FluidSystem)); - -// Disable use of mole formulation -SET_BOOL_PROP(TwoPTwoCSubProblem, UseMoles, false); - -// Enable velocity output -SET_BOOL_PROP(TwoPTwoCSubProblem, VtkAddVelocity, true); - -// Enable gravity -SET_BOOL_PROP(TwoPTwoCSubProblem, ProblemEnableGravity, true); -} - -/*! - * \ingroup ImplicitTestProblems - * \ingroup TwoPTwoCZeroEqTwoCModel - * \brief Isothermal two-phase two-component porous-medium subproblem - * with coupling at the top boundary. - * - * The porous-medium subdomain is sized 0.25m times 0.25m. The boundary conditions - * are Neumann no-flow everywhere, except at the top, where coupling conditions - * are applied to all balance equations. They handle the exchange to the free-flow - * subdomain. - * - * This subproblem uses the \ref TwoPTwoCModel. It is part of a multidomain model and - * combined with the zeroeq2csubproblem for the free flow domain. - */ -template <class TypeTag = TTAG(TwoPTwoCSubProblem) > -class TwoPTwoCSubProblem : public ImplicitPorousMediaProblem<TypeTag> -{ - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - - typedef TwoPTwoCSubProblem<TypeTag> ThisType; - typedef ImplicitPorousMediaProblem<TypeTag> ParentType; - - // copy some indices for convenience - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - - enum { numEq = GET_PROP_VALUE(TypeTag, NumEq)}; - enum { // the equation indices - contiTotalMassIdx = Indices::contiNEqIdx, - contiWEqIdx = Indices::contiWEqIdx, - }; - enum { // the indices of the primary variables - pressureIdx = Indices::pressureIdx, - switchIdx = Indices::switchIdx, - }; - enum { // the indices for the phase presence - wPhaseOnly = Indices::wPhaseOnly, - nPhaseOnly = Indices::nPhaseOnly, - bothPhases = Indices::bothPhases - }; - enum { // grid and world dimension - dim = GridView::dimension, - dimWorld = GridView::dimensionworld - }; - - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; - typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; - - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename GridView::template Codim<dim>::Entity Vertex; - typedef typename GridView::Intersection Intersection; - - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - - typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; - -public: - /*! - * \brief The sub-problem for the porous-medium subdomain - * - * \param timeManager The TimeManager which is used by the simulation - * \param gridView The simulation's idea about physical space - */ - TwoPTwoCSubProblem(TimeManager &timeManager, const GridView gridView) - : ParentType(timeManager, gridView) - { - Scalar noDarcyX = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, NoDarcyX); - std::vector<Scalar> positions0 = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::vector<Scalar>, Grid, Positions0); - std::vector<Scalar> positions1 = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::vector<Scalar>, Grid, Positions1); - - using std::max; - bBoxMin_[0] = max(positions0.front(),noDarcyX); - bBoxMax_[0] = positions0.back(); - bBoxMin_[1] = positions1.front(); - bBoxMax_[1] = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, InterfacePosY); - runUpDistanceX_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, RunUpDistanceX); // first part of the interface without coupling - - refTemperature_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, PorousMedium, RefTemperaturePM); - refPressure_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, PorousMedium, RefPressurePM); - refSw_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, PorousMedium, RefSw); - - freqMassOutput_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, int, Output, FreqMassOutput); - - storageLastTimestep_ = Scalar(0); - lastMassOutputTime_ = Scalar(0); - - outfile.open("storage.out"); - outfile << "Time;" - << "TotalMassChange;" - << "WaterMassChange;" - << "WaterMass" - << std::endl; - } - - //! \brief The destructor - ~TwoPTwoCSubProblem() - { - outfile.close(); - } - - // functions have to be overwritten, otherwise they remain uninitialized - //! \copydoc ImplicitProblem::bBoxMin() - const GlobalPosition &bBoxMin() const - { return bBoxMin_; } - - //! \copydoc ImplicitProblem::bBoxMax() - const GlobalPosition &bBoxMax() const - { return bBoxMax_; } - - /*! - * \name Problem parameters - */ - // \{ - - /*! - * \brief Returns the problem name - * - * This is used as a prefix for files generated by the simulation. - */ - const std::string &name() const - { return GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::string, Output, NamePM); } - - /*! - * \brief Called by the TimeManager in order to - * initialize the problem. - * - * If you overload this method don't forget to call - * ParentType::init() - */ - void init() - { - ParentType::init(); - this->model().globalStorage(storageLastTimestep_); - } - - /*! - * \brief Returns the temperature \f$ K \f$ - * - * \param globalPos The global position - */ - Scalar temperatureAtPos(const GlobalPosition &globalPos) const - { - return refTemperature_; - } - - // \} - - /*! - * \name Boundary conditions - */ - // \{ - - //! \copydoc ImplicitProblem::boundaryTypesAtPos() - void boundaryTypesAtPos(BoundaryTypes &values, - const GlobalPosition &globalPos) const - { - values.setAllNeumann(); - - if (onUpperBoundary_(globalPos) - && (globalPos[0] > runUpDistanceX_ - eps_)) - { - values.setAllCouplingNeumann(); - } - } - - //! \copydoc ImplicitProblem::dirichletAtPos() - void dirichletAtPos(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - initial_(values, globalPos); - } - - //! \copydoc ImplicitProblem::neumannAtPos() - void neumannAtPos(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - values = 0.; - } - - // \} - - /*! - * \name Volume terms - */ - // \{ - - //! \copydoc ImplicitProblem::sourceAtPos() - void sourceAtPos(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - values = Scalar(0); - } - - //! \copydoc ImplicitProblem::initialAtPos() - void initialAtPos(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - initial_(values, globalPos); - } - - // \} - - /*! - * \brief Return the initial phase state inside a control volume. - * - * \param vertex The vertex - * \param vIdxGlobal The global index of the vertex - * \param globalPos The global position - */ - int initialPhasePresence(const Vertex &vertex, - const int &vIdxGlobal, - const GlobalPosition &globalPos) const - { - return bothPhases; - } - - /*! - * \brief Called by the time manager after the time integration to - * do some post processing on the solution. - */ - void postTimeStep() - { - // Calculate masses - PrimaryVariables storage; - - this->model().globalStorage(storage); - const Scalar time = this->timeManager().time() + this->timeManager().timeStepSize(); - - // Write mass balance information for rank 0 - if (this->gridView().comm().rank() == 0) - { - if (this->timeManager().timeStepIndex() % freqMassOutput_ == 0 - || this->timeManager().episodeWillBeFinished()) - { - PrimaryVariables storageChange(0.); - storageChange = storageLastTimestep_ - storage; - - assert(time - lastMassOutputTime_ != 0); - storageChange /= (time - lastMassOutputTime_); - // 2d: interface length has to be accounted for - // in order to obtain kg/m²s - storageChange /= (bBoxMax_[0]-bBoxMin_[0]); - - std::cout << "Time: " << time - << " TotalMass: " << storage[contiTotalMassIdx] - << " WaterMass: " << storage[contiWEqIdx] - << " WaterMassChange: " << storageChange[contiWEqIdx] - << std::endl; - if (this->timeManager().time() != 0.) - outfile << time << ";" - << storageChange[contiTotalMassIdx] << ";" - << storageChange[contiWEqIdx] << ";" - << storage[contiWEqIdx] - << std::endl; - - storageLastTimestep_ = storage; - lastMassOutputTime_ = time; - } - } - } - -private: - // Internal method for the initial condition (reused for the dirichlet conditions!) - void initial_(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - values[pressureIdx] = refPressure_ - + 1000. * this->gravity()[1] * (globalPos[1] - bBoxMax_[1]); - values[switchIdx] = refSw_; - } - - bool onLeftBoundary_(const GlobalPosition &globalPos) const - { return globalPos[0] < bBoxMin_[0] + eps_; } - - bool onRightBoundary_(const GlobalPosition &globalPos) const - { return globalPos[0] > bBoxMax_[0] - eps_; } - - bool onLowerBoundary_(const GlobalPosition &globalPos) const - { return globalPos[1] < bBoxMin_[1] + eps_; } - - bool onUpperBoundary_(const GlobalPosition &globalPos) const - { return globalPos[1] > bBoxMax_[1] - eps_; } - - static constexpr Scalar eps_ = 1e-8; - GlobalPosition bBoxMin_; - GlobalPosition bBoxMax_; - Scalar runUpDistanceX_; - - Scalar refTemperature_; - Scalar refPressure_; - Scalar refSw_; - - PrimaryVariables storageLastTimestep_; - Scalar lastMassOutputTime_; - int freqMassOutput_; - std::ofstream outfile; -}; -} //end namespace Dumux - -#endif // DUMUX_TWOPTWOC_SUBPROBLEM_HH diff --git a/test/multidomain/2czeroeq2p2c/CMakeLists.txt b/test/multidomain/2czeroeq2p2c/CMakeLists.txt deleted file mode 100644 index af9219e623f30d6fc2a21becac6adc3b66d44722..0000000000000000000000000000000000000000 --- a/test/multidomain/2czeroeq2p2c/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -add_input_file_links() - -add_dumux_test(test_2czeroeq2p2c test_2czeroeq2p2c test_2czeroeq2p2c.cc - python ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py - --script fuzzy - --command "${CMAKE_CURRENT_BINARY_DIR}/test_2czeroeq2p2c -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_2czeroeq2p2c_reference.input" - --files ${CMAKE_SOURCE_DIR}/test/references/2czeroeq2p2c-ff-reference.vtu - ${CMAKE_CURRENT_BINARY_DIR}/zeroeq2c-00028.vtu - ${CMAKE_SOURCE_DIR}/test/references/2czeroeq2p2c-pm-reference.vtu - ${CMAKE_CURRENT_BINARY_DIR}/2p2c-00028.vtu) - -#install sources -install(FILES -2czeroeq2p2cproblem.hh -2czeroeq2p2cspatialparameters.hh -2p2csubproblem.hh -test_2czeroeq2p2c.cc -zeroeq2csubproblem.hh -DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/test/multidomain/2czeroeq2p2c) diff --git a/test/multidomain/2czeroeq2p2c/test_2czeroeq2p2c.cc b/test/multidomain/2czeroeq2p2c/test_2czeroeq2p2c.cc deleted file mode 100644 index 4f006e2b352026086c02350f2c12fe8c1d7dc4aa..0000000000000000000000000000000000000000 --- a/test/multidomain/2czeroeq2p2c/test_2czeroeq2p2c.cc +++ /dev/null @@ -1,113 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/*! - * \file - * - * \brief Test for the coupled isothermal two-component ZeroEq and - * isothermal two-phase two-component Darcy model - */ - -#include <config.h> -#include <iostream> - -#include <dune/common/parallel/mpihelper.hh> - -#if HAVE_DUNE_MULTIDOMAIN - -#include <dumux/common/start.hh> - -#include "2czeroeq2p2cproblem.hh" - -/*! - * \brief Print a usage string for simulations. - * - * \param progName The name of the program, that was tried to be started. - * \param errorMsg The error message that was issued by the start function. - * Comprises the thing that went wrong and a general help message. - */ -void printUsage(const char *progName, const std::string &errorMsg) -{ - if (errorMsg.size() > 0) { - std::string errorMessageOut = "\nUsage: "; - errorMessageOut += progName; - errorMessageOut += " [options]\n"; - errorMessageOut += errorMsg; - errorMessageOut += "\nThe list of mandatory options for this program is:\n" - "[Grid]\n" - "InterfacePosY Vertical position of the interface [m]\n" - "NoDarcyX Horizontal position where the porous medium starts [m]\n" - "\n" - "[SpatialParams]\n" - "AlphaBJ Beavers-Joseph coefficient [-]\n" - "Permeability Hydraulic conductivity [m^2]\n" - "Porosity Porosity [-]\n" - "Swr Residual water saturation [-]\n" - "Snr Residual gas saturation [-]\n" - "VgAlpha Van-Genuchten parameter [1/Pa]\n" - "VgN Van-Genuchten parameter [-]\n" - "\n" - "[FreeFlow]\n" - "RefVelocity Inflow velocity [m/s]\n" - "RefPressure Reference pressure [Pa]\n" - "RefMassfrac Inflow water mass fraction [-]\n" - "RefTemperature Inflow temperature [K]\n" - "\n" - "[PorousMedium]\n" - "RefSw Initial water saturation [-]\n" - "RefPressurePM Initial pressure [Pa]\n" - "RefTemperaturePM Initial temperature [K]\n" - "\n" - "[Output]\n" - "NameFF Name free flow .vtu files\n" - "NamePM Name porous medium .vtu files\n" - "FreqRestart Frequency of writting restart information\n" - "FreqOutput Frequency of writting vtu output\n" - "FreqMassOutput Frequency of writting storage output\n" - "FreqFluxOutput Frequency of writting flux output\n" - "FreqVaporFluxOutput Frequency of writting vapor flux output\n" - "\n" - "[TimeManager]\n" - "EpisodeLength Length of one episode [s]\n" - "\n"; - - std::cout << errorMessageOut - << "\n"; - } -} - -int main(int argc, char** argv) -{ -#if (HAVE_SUPERLU || HAVE_UMFPACK) - typedef TTAG(TwoCZeroEqTwoPTwoCTestProblem) ProblemTypeTag; - return Dumux::start<ProblemTypeTag>(argc, argv, printUsage); -#else -#warning "You need to have SuperLU or UMFPack installed to run this test." - std::cerr << "You need to have SuperLU or UMFPack installed to run this test\n"; - return 77; -#endif -} - -#else -int main(int argc, char** argv) -{ -#warning You need to have dune-multidomain installed to run this test - std::cerr << "You need to have dune-multidomain installed to run this test\n"; - return 77; -} -#endif diff --git a/test/multidomain/2czeroeq2p2c/test_2czeroeq2p2c.input b/test/multidomain/2czeroeq2p2c/test_2czeroeq2p2c.input deleted file mode 100644 index b7b923d163f769b8539d7400c6a81558f27a8b19..0000000000000000000000000000000000000000 --- a/test/multidomain/2czeroeq2p2c/test_2czeroeq2p2c.input +++ /dev/null @@ -1,72 +0,0 @@ -[TimeManager] -DtInitial = 5e-5 # [s] -MaxTimeStepSize = 900 # [s] -TEnd = 518400 # [s] # 518400 = 6 days -EpisodeLength = 8e5 # [s] # 43200 - -[Grid] -Cells0 = 40 -Cells1 = 20 20 -Grading0 = 1.0 -Grading1 = -1.2 1.25 -Positions0 = 0.0 0.5 -Positions1 = 0.0 0.25 0.75 - -NoDarcyX = 0.25 # [m] # Horizontal position without PM below -RunUpDistanceX = 0.26 # [m] # Horizontal position without Coupling to PM -InterfacePosY = 0.25 # [m] # Vertical position of coupling interface - -[Output] -NameFF = zeroeq2c -NamePM = 2p2c -# Frequency of restart file, flux and VTK output -FreqRestart = 50 # 500 # how often restart files are written out -FreqOutput = 5 # 10 # frequency of VTK output -FreqMassOutput = 5 # 20 # frequency of mass and evaporation rate output (Darcy) - -[FreeFlow] -RefVelocity = 3.5 # [m/s] -RefPressure = 1e5 # [Pa] -RefMassfrac = 0.008 # [-] -RefTemperature = 298.15 # [K] - -[PorousMedium] -RefPressurePM = 1e5 # [Pa] -RefTemperaturePM = 298.15 # [K] -RefSw = 0.9 # [-] - -[SpatialParams] -AlphaBJ = 1.0 # [-] -Permeability = 2.65e-10 # [m^2] -Porosity = 0.41 # [-] -Swr = 0.005 # [-] -Snr = 0.01 # [-] -VgAlpha = 6.371e-4 # [1/Pa] -VgN = 6.9 # [-] - -# optional parameters -[Newton] -MaxRelativeShift = 1e-5 -TargetSteps = 10 -MaxSteps = 15 -WriteConvergence = false - -[LinearSolver] -Verbosity = 0 - -[ZeroEq] -# Eddy Viscosity Models -# 0 = none -# 1 = Prandtl -# 2 = modified Van Driest -# 3 = Baldwin Lomax -EddyViscosityModel = 3 -# Eddy Diffusivity Models -# 0 = none -# 1 = Reynolds analogy -# 2 = modified Van Driest -# 3 = Deissler -# 4 = Meier and Rotta -EddyDiffusivityModel = 3 -BBoxMinSandGrainRoughness = 0.0 # [m] # 0.6e-3 -BBoxMaxSandGrainRoughness = 0.0 # [m] # 0 diff --git a/test/multidomain/2czeroeq2p2c/test_2czeroeq2p2c_reference.input b/test/multidomain/2czeroeq2p2c/test_2czeroeq2p2c_reference.input deleted file mode 100644 index 0c3b6ec0e85705c0ab5e627a5ae8314b61d79c4a..0000000000000000000000000000000000000000 --- a/test/multidomain/2czeroeq2p2c/test_2czeroeq2p2c_reference.input +++ /dev/null @@ -1,73 +0,0 @@ -[TimeManager] -DtInitial = 5e-5 # [s] -MaxTimeStepSize = 900 # [s] -TEnd = 86400 # [s] -EpisodeLength = 8e5 # [s] - -[Grid] -Cells0 = 10 -Cells1 = 12 12 -Grading0 = 1.0 -Grading1 = -1.1 1.1 -Positions0 = 0.0 0.5 -Positions1 = 0.0 0.25 0.5 - -NoDarcyX = 0.25 # [m] # Horizontal position without PM below -RunUpDistanceX = 0.26 # [m] # Horizontal position without Coupling to PM -InterfacePosY = 0.25 # [m] # Vertical position of coupling interface - -[Output] -NameFF = zeroeq2c -NamePM = 2p2c -# Frequency of restart file, flux and VTK output -FreqRestart = 100 # 500 # how often restart files are written out -FreqOutput = 5 # 10 # frequency of VTK output -FreqMassOutput = 5 # 20 # frequency of mass and evaporation rate output (Darcy) - -[FreeFlow] -RefVelocity = 3.5 # [m/s] -RefPressure = 1e5 # [Pa] -RefMassfrac = 0.008 # [-] -RefTemperature = 298.15 # [K] - -[PorousMedium] -RefPressurePM = 1e5 # [Pa] -RefTemperaturePM = 298.15 # [K] -RefSw = 0.9 # [-] - -[SpatialParams] -AlphaBJ = 1.0 # [-] -Permeability = 2.65e-10 # [m^2] -Porosity = 0.41 # [-] -Swr = 0.005 # [-] -Snr = 0.01 # [-] -VgAlpha = 6.371e-4 # [1/Pa] -VgN = 6.9 # [-] - -# optional parameters -[Newton] -MaxRelativeShift = 1e-5 -TargetSteps = 10 -MaxSteps = 15 -WriteConvergence = false -MaxTimeStepDivisions = 20 - -[LinearSolver] -Verbosity = 0 - -[ZeroEq] -# Eddy Viscosity Models -# 0 = none -# 1 = Prandtl -# 2 = modified Van Driest -# 3 = Baldwin Lomax -EddyViscosityModel = 3 -# Eddy Diffusivity Models -# 0 = none -# 1 = Reynolds analogy -# 2 = modified Van Driest -# 3 = Deissler -# 4 = Meier and Rotta -EddyDiffusivityModel = 3 -BBoxMinSandGrainRoughness = 0.0 # [m] # 0.6e-3 -BBoxMaxSandGrainRoughness = 0.0 # [m] # 0 diff --git a/test/multidomain/2czeroeq2p2c/zeroeq2csubproblem.hh b/test/multidomain/2czeroeq2p2c/zeroeq2csubproblem.hh deleted file mode 100644 index 806c1c55ebea308e2eb293f30843414f349caf21..0000000000000000000000000000000000000000 --- a/test/multidomain/2czeroeq2p2c/zeroeq2csubproblem.hh +++ /dev/null @@ -1,391 +0,0 @@ -// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- -// vi: set et ts=4 sw=4 sts=4: -/***************************************************************************** - * See the file COPYING for full copying permissions. * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation, either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program. If not, see <http://www.gnu.org/licenses/>. * - *****************************************************************************/ -/** - * \file - * \brief Isothermal two-component ZeroEq subproblem with air flowing - * from the left to the right and coupling at the bottom. - */ -#ifndef DUMUX_ZEROEQTWOCSUBPROBLEM_HH -#define DUMUX_ZEROEQTWOCSUBPROBLEM_HH - -#include <dumux/freeflow/zeroeqnc/model.hh> -#include <dumux/multidomain/subdomainpropertydefaults.hh> -#include <dumux/multidomain/2cstokes2p2c/stokesnccouplinglocalresidual.hh> - -namespace Dumux -{ - -template <class TypeTag> -class ZeroEq2cSubProblem; - -namespace Properties -{ -NEW_TYPE_TAG(ZeroEq2cSubProblem, - INHERITS_FROM(BoxZeroEqnc, SubDomain)); - -// Set the problem property -SET_TYPE_PROP(ZeroEq2cSubProblem, Problem, ZeroEq2cSubProblem<TypeTag>); - -// Use the StokencCouplingLocalResidual for the computation of the local residual in the ZeroEq domain -SET_TYPE_PROP(ZeroEq2cSubProblem, LocalResidual, - StokesncCouplingLocalResidual<TypeTag>); - -// Used the fluid system from the coupled problem -SET_TYPE_PROP(ZeroEq2cSubProblem, - FluidSystem, - typename GET_PROP_TYPE(typename GET_PROP_TYPE(TypeTag, MultiDomainTypeTag), FluidSystem)); - -// Disable use of mole formulation -SET_BOOL_PROP(ZeroEq2cSubProblem, UseMoles, false); - -// Disable gravity -SET_BOOL_PROP(ZeroEq2cSubProblem, ProblemEnableGravity, false); - -// Enable Navier-Stokes -SET_BOOL_PROP(ZeroEq2cSubProblem, EnableNavierStokes, true); - -// Set the properties for variable inflow BC -NEW_PROP_TAG(FreeFlowSinusVelocityAmplitude); -NEW_PROP_TAG(FreeFlowSinusVelocityPeriod); -SET_SCALAR_PROP(ZeroEq2cSubProblem, FreeFlowSinusVelocityAmplitude, 0.0); -SET_SCALAR_PROP(ZeroEq2cSubProblem, FreeFlowSinusVelocityPeriod, 3600.0); -NEW_PROP_TAG(FreeFlowSinusPressureAmplitude); -NEW_PROP_TAG(FreeFlowSinusPressurePeriod); -SET_SCALAR_PROP(ZeroEq2cSubProblem, FreeFlowSinusPressureAmplitude, 0.0); -SET_SCALAR_PROP(ZeroEq2cSubProblem, FreeFlowSinusPressurePeriod, 3600.0); -NEW_PROP_TAG(FreeFlowSinusConcentrationAmplitude); -NEW_PROP_TAG(FreeFlowSinusConcentrationPeriod); -SET_SCALAR_PROP(ZeroEq2cSubProblem, FreeFlowSinusConcentrationAmplitude, 0.0); -SET_SCALAR_PROP(ZeroEq2cSubProblem, FreeFlowSinusConcentrationPeriod, 3600.0); -NEW_PROP_TAG(FreeFlowSinusTemperatureAmplitude); -NEW_PROP_TAG(FreeFlowSinusTemperaturePeriod); -SET_SCALAR_PROP(ZeroEq2cSubProblem, FreeFlowSinusTemperatureAmplitude, 0.0); -SET_SCALAR_PROP(ZeroEq2cSubProblem, FreeFlowSinusTemperaturePeriod, 3600.0); -} - -/*! - * \ingroup ImplicitTestProblems - * \ingroup TwoPTwoCZeroEqTwoCModel - * \brief Isothermal two-component ZeroEq subproblem with air flowing - * from the left to the right and coupling at the bottom. - * - * The free-flow subdomain is sized 0.5m times 0.5m. Dry air is flowing from left (Dirichlet) - * to right (outflow), at the right half of the bottom the coupling conditions - * are applied to all balance equations. They handle the exchange to the porous-medium - * subdomain. - * - * This subproblem uses the \ref ZeroEqncModel. It is part of a multidomain model and - * combined with the 2p2csubproblem for the porous-medium domain. - */ -template <class TypeTag> -class ZeroEq2cSubProblem : public ZeroEqProblem<TypeTag> -{ - typedef ZeroEq2cSubProblem<TypeTag> ThisType; - typedef ZeroEqProblem<TypeTag> ParentType; - - typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - typedef typename GET_PROP_TYPE(TypeTag, TimeManager) TimeManager; - - typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; - - enum { - dim = GridView::dimension - }; - enum { // equation indices - massBalanceIdx = Indices::massBalanceIdx, - momentumXIdx = Indices::momentumXIdx, // Index of the x-component of the momentum balance - momentumYIdx = Indices::momentumYIdx, // Index of the y-component of the momentum balance - momentumZIdx = Indices::momentumZIdx, // Index of the z-component of the momentum balance - transportEqIdx = Indices::transportEqIdx // Index of the transport equation (massfraction) - }; - enum { // primary variable indices - pressureIdx = Indices::pressureIdx, - velocityXIdx = Indices::velocityXIdx, - velocityYIdx = Indices::velocityYIdx, - velocityZIdx = Indices::velocityZIdx, - massOrMoleFracIdx = Indices::massOrMoleFracIdx - }; - enum { phaseIdx = Indices::phaseIdx }; - enum { numComponents = Indices::numComponents }; - enum { - transportCompIdx = Indices::transportCompIdx, // water component index - phaseCompIdx = Indices::phaseCompIdx // air component index - }; - - typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables; - typedef typename GET_PROP_TYPE(TypeTag, BoundaryTypes) BoundaryTypes; - - typedef typename GridView::template Codim<0>::Entity Element; - typedef typename GridView::template Codim<dim>::Entity Vertex; - typedef typename GridView::ctype CoordScalar; - typedef typename GridView::Intersection Intersection; - - typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; - typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem; - typedef typename GET_PROP_TYPE(TypeTag, FluidState) FluidState; - typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; - typedef Dune::FieldVector<CoordScalar, dim> GlobalPosition; - - -public: - /*! - * \brief The sub-problem for the ZeroEq subdomain - * - * \param timeManager The TimeManager which is used by the simulation - * \param gridView The simulation's idea about physical space - */ - ZeroEq2cSubProblem(TimeManager &timeManager, const GridView gridView) - : ParentType(timeManager, gridView) - { - std::vector<Scalar> positions0 = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::vector<Scalar>, Grid, Positions0); - std::vector<Scalar> positions1 = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::vector<Scalar>, Grid, Positions1); - - bBoxMin_[0] = positions0.front(); - bBoxMax_[0] = positions0.back(); - bBoxMin_[1] = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, InterfacePosY); - bBoxMax_[1] = positions1.back(); - runUpDistanceX_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, Grid, RunUpDistanceX); // first part of the interface without coupling - - refVelocity_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefVelocity); - refPressure_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefPressure); - refMassfrac_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefMassfrac); - refTemperature_ = GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, RefTemperature); - } - - // functions have to be overwritten, otherwise they remain uninitialized - //! \copydoc ImplicitProblem::bBoxMin() - const GlobalPosition &bBoxMin() const - { return bBoxMin_; } - - //! \copydoc ImplicitProblem::bBoxMax() - const GlobalPosition &bBoxMax() const - { return bBoxMax_; } - - /*! - * \brief Returns the problem name - * - * This is used as a prefix for files generated by the simulation. - */ - const std::string &name() const - { return GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::string, Output, NameFF); } - - /*! - * \brief Returns the temperature \f$ K \f$ - * - * \param globalPos The global position - */ - Scalar temperatureAtPos(const GlobalPosition &globalPos) const - { - return refTemperature_; - } - - /*! - * \name Boundary conditions - */ - // \{ - - //! \copydoc ImplicitProblem::boundaryTypesAtPos() - void boundaryTypesAtPos(BoundaryTypes &values, - const GlobalPosition &globalPos) const - { - values.setAllDirichlet(); - - if (onUpperBoundary_(globalPos)) - { - values.setNeumann(transportEqIdx); - } - - if (onRightBoundary_(globalPos)) - { - values.setAllOutflow(); - - if (onUpperBoundary_(globalPos)) // corner point - values.setAllDirichlet(); - } - - if (onLowerBoundary_(globalPos)) - { - values.setAllDirichlet(); - values.setNeumann(transportEqIdx); - - if (globalPos[0] > runUpDistanceX_-eps_) - { - values.setAllCouplingDirichlet(); - values.setCouplingNeumann(momentumXIdx); - values.setCouplingNeumann(momentumYIdx); - } - } - if (onLeftBoundary_(globalPos)) - { - // Left inflow boundaries should be Neumann, otherwise the - // evaporative fluxes are much more grid dependent - values.setNeumann(transportEqIdx); - - if (onUpperBoundary_(globalPos) || onLowerBoundary_(globalPos)) // corner point - values.setAllDirichlet(); - } - - // the mass balance has to be of type outflow - // it does not get a coupling condition, since pn is a condition for ZeroEq - values.setOutflow(massBalanceIdx); - - if (onRightBoundary_(globalPos)) - values.setDirichlet(pressureIdx); - } - - //! \copydoc ImplicitProblem::dirichletAtPos() - void dirichletAtPos(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - initial_(values, globalPos); - } - - //! \copydoc ImplicitProblem::neumannAtPos() - void neumannAtPos(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - values = 0.0; - - FluidState fluidState; - updateFluidStateForBC_(fluidState); - const Scalar density = FluidSystem::density(fluidState, phaseIdx); - - // rho*v*X at inflow - if (onLeftBoundary_(globalPos) - && globalPos[1] > bBoxMin_[1] - eps_ && globalPos[1] < bBoxMax_[1] + eps_) - { - values[transportEqIdx] = -xVelocity_(globalPos) * density * refMassfrac(); - } - } - - // \} - - /*! - * \name Volume terms - */ - // \{ - - //! \copydoc ImplicitProblem::sourceAtPos() - void sourceAtPos(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - // The source term of the mass balance has to be chosen as - // div (q_momentum) in the problem file - values = Scalar(0); - } - - //! \copydoc ImplicitProblem::initialAtPos() - void initialAtPos(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - initial_(values, globalPos); - } - - // \} - - //! \brief Returns the velocity at the inflow. - const Scalar refVelocity() const - { - return refVelocity_ + variation_(GET_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusVelocityAmplitude), - GET_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusVelocityPeriod)); - } - - //! \brief Returns the pressure at the inflow. - const Scalar refPressure() const - { - return refPressure_ + variation_(GET_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusPressureAmplitude), - GET_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusPressurePeriod)); - } - - //! \brief Returns the mass fraction at the inflow. - const Scalar refMassfrac() const - { - return refMassfrac_ + variation_(GET_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusConcentrationAmplitude), - GET_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusConcentrationPeriod)); - } - - //! \brief Returns the temperature at the inflow. - const Scalar refTemperature() const - { - return refTemperature_ + variation_(GET_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusTemperatureAmplitude), - GET_PARAM_FROM_GROUP(TypeTag, Scalar, FreeFlow, SinusTemperaturePeriod)); - } - -private: - // Internal method for the initial condition (reused for the dirichlet conditions!) - void initial_(PrimaryVariables &values, - const GlobalPosition &globalPos) const - { - FluidState fluidState; - updateFluidStateForBC_(fluidState); - const Scalar density = FluidSystem::density(fluidState, phaseIdx); - - values[velocityXIdx] = xVelocity_(globalPos); - values[velocityYIdx] = 0.0; - values[pressureIdx] = refPressure() - + density * this->gravity()[1] * (globalPos[1] - bBoxMin_[1]); - values[massOrMoleFracIdx] = refMassfrac(); - } - - // Set the profile of the inflow velocity (horizontal direction) - const Scalar xVelocity_(const GlobalPosition &globalPos) const - { - if (onUpperBoundary_(globalPos) || onLowerBoundary_(globalPos)) - return 0.0; - return refVelocity(); - } - - // Updates the fluid state to obtain required quantities for IC/BC - void updateFluidStateForBC_(FluidState& fluidState) const - { - fluidState.setTemperature(refTemperature()); - fluidState.setPressure(phaseIdx, refPressure()); - // setMassFraction() has only to be called 1-numComponents times - fluidState.setMassFraction(phaseIdx, transportCompIdx, refMassfrac()); - } - - // can be used for the variation of a boundary condition - const Scalar variation_(const Scalar amplitude, const Scalar period) const - { return sin(2*M_PI*this->timeManager().time()/period) * amplitude; } - - bool onLeftBoundary_(const GlobalPosition &globalPos) const - { return globalPos[0] < bBoxMin_[0] + eps_; } - - bool onRightBoundary_(const GlobalPosition &globalPos) const - { return globalPos[0] > bBoxMax_[0] - eps_; } - - bool onLowerBoundary_(const GlobalPosition &globalPos) const - { return globalPos[1] < bBoxMin_[1] + eps_; } - - bool onUpperBoundary_(const GlobalPosition &globalPos) const - { return globalPos[1] > bBoxMax_[1] - eps_; } - - static constexpr Scalar eps_ = 1e-8; - GlobalPosition bBoxMin_; - GlobalPosition bBoxMax_; - Scalar runUpDistanceX_; - - Scalar refVelocity_; - Scalar refPressure_; - Scalar refMassfrac_; - Scalar refTemperature_; -}; -} //end namespace Dumux - -#endif // DUMUX_ZEROEQ2C_SUBPROBLEM_HH diff --git a/test/multidomain/CMakeLists.txt b/test/multidomain/CMakeLists.txt deleted file mode 100644 index f562a68846f0beecb7604f8c34aeca444438a0bc..0000000000000000000000000000000000000000 --- a/test/multidomain/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -add_subdirectory("2cstokes2p2c") -add_subdirectory("2cnistokes2p2cni") -add_subdirectory("2czeroeq2p2c") -add_subdirectory("2cnizeroeq2p2cni") diff --git a/test/multidomain/README b/test/multidomain/README deleted file mode 100755 index 2587065c57ff88f432fa536a266bf31f9d80b50e..0000000000000000000000000000000000000000 --- a/test/multidomain/README +++ /dev/null @@ -1,18 +0,0 @@ -== Running the test cases in test/multidomain == - -You need the following versions of the required Dune modules: -Dune core modules: 2.4 -dune-typetree, dune-multidomaingrid: release (branch) 2.3 -Dune-PDELab, dune-multidomain: release (branch) 2.0 - -The necessary modules and the correct versions can be obtained by using -the script located in: - bin/installexternal.sh - --- Other external packages -- -Install the external grid manager UG and a direct linear solver like SuperLU -or UMFPACK. You need Boost fusion for dune-multidomaingrid. - -If you encounter segmentation faults, make sure that UG, all DUNE libraries and -the executable in question are built with the same compiler. -