From b11dbc19be90458fa1bd0f8c586ebf05086d7829 Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Thu, 18 Nov 2021 18:10:19 +0100 Subject: [PATCH 01/26] Created a new branch containing a Sobolev smoothing solver for gradient treatement. - Solver works on mesh and design parameter level. - Can smooth the discrete adjoint gradient. - Support for printing the combined system matrix (Laplace-Beltrami operator). - Squashed old commits into new branch based on version 7.2.1 develop. --- Common/include/CConfig.hpp | 165 ++- Common/include/basic_types/ad_structure.hpp | 7 + Common/include/geometry/elements/CElement.hpp | 299 +++- .../geometry/elements/CGaussVariable.hpp | 6 +- .../grid_movement/CVolumetricMovement.hpp | 6 +- Common/include/linear_algebra/CSysMatrix.hpp | 2 +- Common/include/linear_algebra/CSysSolve.hpp | 3 +- Common/include/linear_algebra/CSysVector.hpp | 4 + Common/include/option_structure.hpp | 36 +- Common/src/CConfig.cpp | 101 +- .../src/fem/geometry_structure_fem_part.cpp | 2 + Common/src/geometry/CPhysicalGeometry.cpp | 14 + Common/src/geometry/elements/CElement.cpp | 11 + Common/src/geometry/elements/CLINE.cpp | 66 + Common/src/geometry/elements/CPYRAM6.cpp | 147 ++ Common/src/geometry/elements/CTETRA4.cpp | 102 ++ Common/src/geometry/elements/CTRIA1.cpp | 12 +- Common/src/geometry/elements/CTRIA3.cpp | 88 ++ Common/src/geometry/elements/meson.build | 6 +- Common/src/grid_movement/CSurfaceMovement.cpp | 4 +- .../src/grid_movement/CVolumetricMovement.cpp | 53 +- Common/src/linear_algebra/CSysMatrix.cpp | 11 +- Common/src/linear_algebra/CSysSolve.cpp | 43 +- .../drivers/CDiscAdjSinglezoneDriver.hpp | 5 + SU2_CFD/include/numerics/CGradSmoothing.hpp | 72 + SU2_CFD/include/numerics/CNumerics.hpp | 8 + SU2_CFD/include/solvers/CDiscAdjSolver.hpp | 4 +- .../solvers/CGradientSmoothingSolver.hpp | 387 +++++ SU2_CFD/include/solvers/CSolver.hpp | 69 +- SU2_CFD/include/solvers/CSolverFactory.hpp | 1 + .../variables/CSobolevSmoothingVariable.hpp | 92 ++ SU2_CFD/include/variables/CVariable.hpp | 10 + .../src/drivers/CDiscAdjSinglezoneDriver.cpp | 53 + SU2_CFD/src/drivers/CDriver.cpp | 17 + SU2_CFD/src/meson.build | 9 +- SU2_CFD/src/numerics/CGradSmoothing.cpp | 164 +++ .../src/solvers/CGradientSmoothingSolver.cpp | 1251 +++++++++++++++++ SU2_CFD/src/solvers/CSolver.cpp | 2 +- SU2_CFD/src/solvers/CSolverFactory.cpp | 14 +- .../variables/CSobolevSmoothingVariable.cpp | 70 + SU2_DOT/src/SU2_DOT.cpp | 5 + .../naca0012/inv_NACA0012_gradsmooth.cfg | 351 +++++ TestCases/grad_smooth/oneram6/config.cfg | 445 ++++++ TestCases/parallel_regression_AD.py | 17 + TestCases/serial_regression_AD.py | 22 +- meson.build | 12 +- meson_options.txt | 1 + 47 files changed, 4195 insertions(+), 74 deletions(-) create mode 100644 Common/src/geometry/elements/CLINE.cpp create mode 100644 Common/src/geometry/elements/CPYRAM6.cpp create mode 100644 Common/src/geometry/elements/CTETRA4.cpp create mode 100644 Common/src/geometry/elements/CTRIA3.cpp create mode 100644 SU2_CFD/include/numerics/CGradSmoothing.hpp create mode 100644 SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp create mode 100644 SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp create mode 100644 SU2_CFD/src/numerics/CGradSmoothing.cpp create mode 100644 SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp create mode 100644 SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp create mode 100644 TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg create mode 100644 TestCases/grad_smooth/oneram6/config.cfg diff --git a/Common/include/CConfig.hpp b/Common/include/CConfig.hpp index 7d25694aac9d..5abad8bb7455 100644 --- a/Common/include/CConfig.hpp +++ b/Common/include/CConfig.hpp @@ -432,6 +432,21 @@ class CConfig { Max_DeltaTime, /*!< \brief Max delta time. */ Unst_CFL; /*!< \brief Unsteady CFL number. */ + /* Gradient smoothing options */ + bool SmoothGradient; /*!< \brief Flag for enabling gradient smoothing. */ + su2double SmoothingEps1; /*!< \brief Parameter for the identity part in gradient smoothing. */ + su2double SmoothingEps2; /*!< \brief Parameter for the Laplace part in gradient smoothing. */ + bool SepDim; /*!< \brief Flag for enabling separated calculation for every dimension. */ + bool SecOrdQuad; /*!< \brief Flag for using second order quadrature rules in numerical integration. */ + bool SmoothOnSurface; /*!< \brief Flag for assembling the system only on the surface. */ + bool DirichletSurfaceBound; /*!< \brief Flag for using zero Dirichlet boundary in the surface case. */ + unsigned short NumMode; /*!< \brief temporary flag for some debuging stuff */ + + unsigned short Kind_Grad_Linear_Solver, /*!< Numerical method to smooth the gradient */ + Kind_Grad_Linear_Solver_Prec; /*!< \brief Preconditioner of the linear solver. */ + su2double Grad_Linear_Solver_Error; /*!< \brief Min error of the linear solver for the gradient smoothing. */ + unsigned long Grad_Linear_Solver_Iter; /*!< \brief Max iterations of the linear solver for the gradient smoothing. */ + bool ReorientElements; /*!< \brief Flag for enabling element reorientation. */ bool AddIndNeighbor; /*!< \brief Include indirect neighbor in the agglomeration process. */ unsigned short nDV, /*!< \brief Number of design variables. */ @@ -665,7 +680,8 @@ class CConfig { nMarker_Moving, /*!< \brief Number of markers in motion (DEFORMING, MOVING_WALL). */ nMarker_PyCustom, /*!< \brief Number of markers that are customizable in Python. */ nMarker_DV, /*!< \brief Number of markers affected by the design variables. */ - nMarker_WallFunctions; /*!< \brief Number of markers for which wall functions must be applied. */ + nMarker_WallFunctions, /*!< \brief Number of markers for which wall functions must be applied. */ + nMarker_SobolevBC; /*!< \brief Number of markers treaded in the gradient problem. */ string *Marker_Monitoring, /*!< \brief Markers to monitor. */ *Marker_Designing, /*!< \brief Markers to design. */ *Marker_GeoEval, /*!< \brief Markers to evaluate geometry. */ @@ -675,7 +691,8 @@ class CConfig { *Marker_Moving, /*!< \brief Markers in motion (DEFORMING, MOVING_WALL). */ *Marker_PyCustom, /*!< \brief Markers that are customizable in Python. */ *Marker_DV, /*!< \brief Markers affected by the design variables. */ - *Marker_WallFunctions; /*!< \brief Markers for which wall functions must be applied. */ + *Marker_WallFunctions, /*!< \brief Markers for which wall functions must be applied. */ + *Marker_SobolevBC; /*!< \brief Markers in the gradient solver */ unsigned short nConfig_Files; /*!< \brief Number of config files for multiphysics problems. */ string *Config_Filenames; /*!< \brief List of names for configuration files. */ @@ -697,6 +714,7 @@ class CConfig { *Marker_All_Fluid_Load, /*!< \brief Global index for markers in which the flow load is computed/employed. */ *Marker_All_PyCustom, /*!< \brief Global index for Python customizable surfaces using the grid information. */ *Marker_All_Designing, /*!< \brief Global index for moving using the grid information. */ + *Marker_All_SobolevBC, /*!< \brief Global index for boundary condition applied to gradient smoothing. */ *Marker_CfgFile_Monitoring, /*!< \brief Global index for monitoring using the config information. */ *Marker_CfgFile_Designing, /*!< \brief Global index for monitoring using the config information. */ *Marker_CfgFile_GeoEval, /*!< \brief Global index for monitoring using the config information. */ @@ -712,7 +730,8 @@ class CConfig { *Marker_CfgFile_Fluid_Load, /*!< \brief Global index for markers in which the flow load is computed/employed. */ *Marker_CfgFile_PyCustom, /*!< \brief Global index for Python customizable surfaces using the config information. */ *Marker_CfgFile_DV, /*!< \brief Global index for design variable markers using the config information. */ - *Marker_CfgFile_PerBound; /*!< \brief Global index for periodic boundaries using the config information. */ + *Marker_CfgFile_PerBound, /*!< \brief Global index for periodic boundaries using the config information. */ + *Marker_CfgFile_SobolevBC; /*!< \brief Global index for boundary condition applied to gradient smoothing using the config information. */ string *PlaneTag; /*!< \brief Global index for the plane adaptation (upper, lower). */ su2double *nBlades; /*!< \brief number of blades for turbomachinery computation. */ unsigned short Geo_Description; /*!< \brief Description of the geometry. */ @@ -756,7 +775,8 @@ class CConfig { SurfCoeff_FileName, /*!< \brief Output file with the flow variables on the surface. */ SurfAdjCoeff_FileName, /*!< \brief Output file with the adjoint variables on the surface. */ SurfSens_FileName, /*!< \brief Output file for the sensitivity on the surface (discrete adjoint). */ - VolSens_FileName; /*!< \brief Output file for the sensitivity in the volume (discrete adjoint). */ + VolSens_FileName, /*!< \brief Output file for the sensitivity in the volume (discrete adjoint). */ + ObjFunc_Hess_FileName; /*!< \brief Hessian of the objective function. */ bool Wrt_Performance, /*!< \brief Write the performance summary at the end of a calculation. */ @@ -2736,6 +2756,18 @@ class CConfig { */ unsigned short GetnDV_Value(unsigned short iDV) const { return nDV_Value[iDV]; } + /*! + * \brief Get the total number of design variables. + */ + unsigned short GetnDV_Total(void) const { + if(!nDV_Value) return 0; + unsigned short sum=0; + for (unsigned short iDV=0; iDVval_marker is going to be treated. + * \param[in] val_marker - Index of the marker in which we are interested. + * \param[in] val_sobolev - depending on the boundary condition applied + */ + void SetMarker_All_SobolevBC(unsigned short val_marker, unsigned short val_sobolev) { Marker_All_SobolevBC[val_marker] = val_sobolev; } + /*! * \brief Set if a marker val_marker allows deformation at the boundary. * \param[in] val_marker - Index of the marker in which we are interested. @@ -3422,6 +3467,13 @@ class CConfig { */ unsigned short GetMarker_All_Moving(unsigned short val_marker) const { return Marker_All_Moving[val_marker]; } + /*! + * \brief Get the information what boundary to apply for a marker val_marker. + * \param[in] val_marker + * \return Number Depending on BC + */ + unsigned short GetMarker_All_SobolevBC(unsigned short val_marker) const { return Marker_All_SobolevBC[val_marker]; } + /*! * \brief Get whether marker val_marker is a DEFORM_MESH marker * \param[in] val_marker - 0 or 1 depending if the the marker belongs to the DEFORM_MESH subset. @@ -5467,6 +5519,12 @@ class CConfig { su2double& GetDV_Value(unsigned short val_dv, unsigned short val_val = 0) { return DV_Value[val_dv][val_val]; } const su2double& GetDV_Value(unsigned short val_dv, unsigned short val_val = 0) const { return DV_Value[val_dv][val_val]; } + /*! + * \brief Pointer to the design variables. + * \return Design variable array. + */ + su2double** GetDV_Pointer() { return DV_Value; } + /*! * \brief Set the value of the design variable step, we use this value in design problems. * \param[in] val_dv - Number of the design variable that we want to read. @@ -5976,6 +6034,12 @@ class CConfig { */ unsigned short GetMarker_CfgFile_Moving(string val_marker) const; + /*! + * \brief Get the gradient boundary information from the config definition for the marker val_marker. + * \return gradient boundary information of the boundary in the config information for the marker val_marker. + */ + unsigned short GetMarker_CfgFile_SobolevBC(string val_marker) const; + /*! * \brief Get the DEFORM_MESH information from the config definition for the marker val_marker. * \return DEFORM_MESH information of the boundary in the config information for the marker val_marker. @@ -6333,6 +6397,12 @@ class CConfig { */ unsigned short GetMarker_Fluid_Load(string val_marker) const; + /*! + * \brief Get the internal index for a gradient boundary condition val_marker. + * \return Internal index for a gradient boundary condition val_marker. + */ + unsigned short GetMarker_SobolevBC(string val_marker) const; + /*! * \brief Get the name of the surface defined in the geometry file. * \param[in] val_marker - Value of the marker in which we are interested. @@ -9341,4 +9411,91 @@ class CConfig { * \return Save frequency for unsteady time steps. */ unsigned short GetRom_SaveFreq(void) const { return rom_save_freq; } + + /** Config functions related to the gradient smoothing solver. **/ + + /*! + * \brief Check if the gradient smoothing is active + * \return true means that smoothing is applied to the sensitivities + */ + bool GetSmoothGradient(void) const {return SmoothGradient; } + + /*! + * \brief Gets the factor epsilon in front of the Laplace term + * \return epsilon + */ + su2double GetSmoothingEps1(void) const { return SmoothingEps1; } + + /*! + * \brief Gets the factor zeta in front of the identity term + * \return zeta + */ + su2double GetSmoothingEps2(void) const { return SmoothingEps2; } + + /*! + * \brief Check if we split in the dimensions + * \return true means that smoothing is for each dimension separate + */ + bool GetSepDim(void) const { return SepDim; } + + /*! + * \brief Check if we assemble the operator on the surface + * \return true means that smoothing is done on the surface level + */ + bool GetSmoothOnSurface(void) const { return SmoothOnSurface; } + + /*! + * \brief Check if we use zero Dirichlet boundarys on the bound of the surface + * \return true means that we use zero Dirichlet boundary + */ + bool GetDirichletSurfaceBound(void) const { return DirichletSurfaceBound; } + + /*! + * \brief The modus of operation for the solver + * \return returns on what level we operate + */ + unsigned short GetSobMode(void) const { return NumMode; } + + /*! + * \brief Check if we use second order numerical integration in FE + * \return true means that we use second order accurate methods + */ + bool GetSecOrdQuad(void) const { return SecOrdQuad; } + + /*! + * \brief Get the name of the file with the hessian of the objective function. + * \return Name of the file with the hessian of the objective function. + */ + string GetObjFunc_Hess_FileName(void) const { return ObjFunc_Hess_FileName; } + + /*! + * \brief Get min error of the linear solver for the gradient smoothing. + * \return Min error of the linear solver for the gradient smoothing. + */ + su2double GetGrad_Linear_Solver_Error(void) const { return Grad_Linear_Solver_Error; } + + /*! + * \brief Get the kind of solver for the gradient smoothing. + * \return Numerical solver for the gradient smoothing. + */ + unsigned short GetKind_Grad_Linear_Solver(void) const { return Kind_Grad_Linear_Solver; } + + /*! + * \brief Get the kind of preconditioner for the gradient smoothing. + * \return Numerical preconditioner for the gradient smoothing. + */ + unsigned short GetKind_Grad_Linear_Solver_Prec(void) const { return Kind_Grad_Linear_Solver_Prec; } + + /*! + * \brief Set the kind of preconditioner for the gradient smoothing. + * \return Numerical preconditioner for the gradient smoothing. + */ + void SetKind_Grad_Linear_Solver_Prec(unsigned short val_kind_prec) { Kind_Grad_Linear_Solver_Prec = val_kind_prec; } + + /*! + * \brief Get max number of iterations of the for the gradient smoothing. + * \return Max number of iterations of the linear solver for the gradient smoothing. + */ + unsigned long GetGrad_Linear_Solver_Iter(void) const { return Grad_Linear_Solver_Iter; } + }; diff --git a/Common/include/basic_types/ad_structure.hpp b/Common/include/basic_types/ad_structure.hpp index f2481a1f629f..b49fe9ab9696 100644 --- a/Common/include/basic_types/ad_structure.hpp +++ b/Common/include/basic_types/ad_structure.hpp @@ -105,6 +105,11 @@ namespace AD{ */ inline void ComputeAdjoint(unsigned short enter, unsigned short leave) {} + /*! + * \brief Computes the adjoints, i.e. the derivatives of the output with respect to the input variables, using forward tape evaluation. + */ + inline void ComputeAdjointForward() {} + /*! * \brief Reset the tape structure to be ready for a new recording. */ @@ -354,6 +359,8 @@ namespace AD{ #endif } + FORCEINLINE void ComputeAdjointForward() {AD::getGlobalTape().evaluateForward();} + FORCEINLINE void Reset() { AD::getGlobalTape().reset(); #if defined(HAVE_OPDI) diff --git a/Common/include/geometry/elements/CElement.hpp b/Common/include/geometry/elements/CElement.hpp index 5c370b375646..b336090506b3 100644 --- a/Common/include/geometry/elements/CElement.hpp +++ b/Common/include/geometry/elements/CElement.hpp @@ -81,6 +81,9 @@ class CElement { unsigned short nNodes; /*!< \brief Number of geometric points. */ unsigned short nDim; /*!< \brief Number of dimension of the problem. */ + su2activematrix HiHj = 0.0; /*!< \brief Scalar product of 2 ansatz functions. */ + std::vector> DHiDHj; /*!< \brief Scalar product of the gradients of 2 ansatz functions. */ + public: enum FrameType {REFERENCE=1, CURRENT=2}; /*!< \brief Type of nodal coordinates. */ @@ -115,6 +118,12 @@ class CElement { */ virtual void ComputeGrad_NonLinear(void) = 0; + /*! + * \brief Overload needed for deformed 2D elements on a surface in 3D. + * \note The Coord are handed down from the numerics. + */ + virtual void ComputeGrad_Linear(su2activematrix& Coord) = 0; + /*! * \brief Sets matrices to 0. */ @@ -418,6 +427,13 @@ class CElement { */ inline unsigned long Get_iProp(void) const {return iProp;} + /*! + * \brief Compute the value of the length of the element. + * \param[in] mode - Type of coordinates to consider in the computation. + * \return Length of the (1D) element. + */ + inline virtual su2double ComputeLength(const FrameType mode = REFERENCE) const {return 0.0;} + /*! * \brief Compute the value of the area of the element. * \param[in] mode - Type of coordinates to consider in the computation. @@ -477,6 +493,60 @@ class CElement { AD::SetPreaccOut(FDL_a.data(), nNodes*nDim); } + /*! + * \brief Add the scalar product of the shape functions to the tangent matrix. + * \param[in] nodeA - index of Node a. + * \param[in] nodeB - index of Node b. + * \param[in] val - value of the scalar product of ansatz function. + */ + inline void Add_HiHj(su2double val, unsigned short nodeA, unsigned short nodeB) { HiHj[nodeA][nodeB] += val; } + + /*! + * \brief Add the scalar product of the gradients of shape functions to the tangent matrix. + * \param[in] nodeA - index of Node a. + * \param[in] nodeB - index of Node b. + * \param[in] val - value of the scalar product of gradients of ansatz function. + */ + inline void Add_DHiDHj(su2double **val, unsigned short nodeA, unsigned short nodeB){ + unsigned short iDim, jDim; + for(iDim = 0; iDim < nDim; iDim++) { + for (jDim = 0; jDim < nDim; jDim++) { + DHiDHj[nodeA][nodeB][iDim][jDim] += val[iDim][jDim]; + } + } + } + + /*! + * \brief Add the transposed scalar product of the gradients of shape functions to the tangent matrix. + * \param[in] nodeA - index of Node a. + * \param[in] nodeB - index of Node b. + * \param[in] val - value of the term that will contribute. + */ + inline void Add_DHiDHj_T(su2double **val, unsigned short nodeA, unsigned short nodeB) { + unsigned short iDim, jDim; + for(iDim = 0; iDim < nDim; iDim++) { + for (jDim = 0; jDim < nDim; jDim++) { + DHiDHj[nodeA][nodeB][iDim][jDim] += val[jDim][iDim]; + } + } + } + + /*! + * \brief Get the scalar product of the shape functions to the tangent matrix. + * \param[in] nodeA - index of Node a. + * \param[in] nodeB - index of Node b. + * \param[out] val - value of the scalar product of ansatz function. + */ + inline su2double Get_HiHj(unsigned short nodeA, unsigned short nodeB) { return HiHj[nodeA][nodeB]; } + + /*! + * \brief Get the scalar product of the gradients of shape functions to the tangent matrix. + * \param[in] nodeA - index of Node a. + * \param[in] nodeB - index of Node b. + * \return val - value of the scalar product of gradients of ansatz function. + */ + inline su2activematrix& Get_DHiDHj(unsigned short nodeA, unsigned short nodeB) { return DHiDHj[nodeA][nodeB];} + }; /*! @@ -487,6 +557,15 @@ class CElement { template class CElementWithKnownSizes : public CElement { private: + + FORCEINLINE static su2double JacobianAdjoint(const su2double Jacobian[][1], su2double ad[][1]) { + /*--- Adjoint to Jacobian, we put 1.0 here so that ad/detJac is the inverse later ---*/ + ad[0][0] = 1.0; + /*--- Determinant of Jacobian ---*/ + return Jacobian[0][0]; + } + + FORCEINLINE static su2double JacobianAdjoint(const su2double Jacobian[][2], su2double ad[][2]) { ad[0][0] = Jacobian[1][1]; ad[0][1] = -Jacobian[0][1]; ad[1][0] = -Jacobian[1][0]; ad[1][1] = Jacobian[0][0]; @@ -509,7 +588,7 @@ class CElementWithKnownSizes : public CElement { } protected: - static_assert(NDIM==2 || NDIM==3, "ComputeGrad_impl expects 2D or 3D"); + static_assert(NDIM==1 || NDIM==2 || NDIM==3, "ComputeGrad_impl expects 1D, 2D or 3D"); su2double GaussCoord[NGAUSS][NDIM]; /*!< \brief Coordinates of the integration points. */ su2double dNiXj[NGAUSS][NNODE][NDIM]; /*!< \brief Shape function derivatives evaluated at the Gauss points. */ @@ -549,6 +628,11 @@ class CElementWithKnownSizes : public CElement { for (jDim = 0; jDim < NDIM; jDim++) Jacobian[iDim][jDim] += Coord(iNode,jDim) * dNiXj[iGauss][iNode][iDim]; + if (NDIM==1) { + /*--- Obviously the Jacobian is the slope of the line ---*/ + Jacobian[0][0] = (Coord[1][0] - Coord[0][0]); + } + /*--- Adjoint to the Jacobian and determinant ---*/ auto detJac = JacobianAdjoint(Jacobian, ad); @@ -583,6 +667,110 @@ class CElementWithKnownSizes : public CElement { } + template + void ComputeGrad_impl_embedded(su2activematrix& Coord) { + + unsigned short iNode, iDim, iGauss; + + if (NDIM==1) { + + su2double Jacobian[2]; + su2double val_grad; + + Jacobian[0] = (Coord[1][0] - Coord[0][0]); + Jacobian[1] = (Coord[1][1] - Coord[0][1]); + const su2double JTJ = Jacobian[0]*Jacobian[0]+Jacobian[1]*Jacobian[1]; + const su2double volJacobian = sqrt(JTJ); + + for (iGauss = 0; iGauss < NGAUSS; iGauss++) { + + GaussPoint[iGauss].SetJ_X(volJacobian); + + for (iNode = 0; iNode < NNODE; iNode++) { + for (iDim=0; iDim(); } + /*! + * \brief Overload needed for deformed 2D elements on a surface in 3D or 1D elements on a 2D curve. + */ + void ComputeGrad_Linear(su2activematrix& Coord) final { ComputeGrad_impl_embedded(Coord); } + + }; /*! @@ -772,3 +966,106 @@ class CPRISM6 final : public CElementWithKnownSizes<6,6,3> { }; +/*! + * \class CTRIA3 + * \brief Tria element with 3 Gauss Points + * \author T.Dick + */ +class CTRIA3 final : public CElementWithKnownSizes<3,3,2> { +private: + enum : unsigned short {NGAUSS = 3}; + enum : unsigned short {NNODE = 3}; + enum : unsigned short {NDIM = 2}; + +public: + /*! + * \brief Constructor of the class. + */ + CTRIA3(); + + /*! + * \brief Compute the value of the area of the element. + * \param[in] mode - Type of coordinates to consider in the computation. + * \return Area of the element. + */ + su2double ComputeArea(const FrameType mode = REFERENCE) const override; + +}; + +/*! + * \class CTETRA4 + * \brief Tetrahedral element with 4 Gauss Points + * \author T.Dick + */ +class CTETRA4 final : public CElementWithKnownSizes<4,4,3> { +private: + enum : unsigned short {NGAUSS = 4}; + enum : unsigned short {NNODE = 4}; + enum : unsigned short {NDIM = 3}; + +public: + /*! + * \brief Constructor of the class. + */ + CTETRA4(); + + /*! + * \brief Compute the value of the area of the element. + * \param[in] mode - Type of coordinates to consider in the computation. + * \return Area of the element. + */ + su2double ComputeVolume(const FrameType mode = REFERENCE) const override; + +}; + +/*! + * \class CPYRAM6 + * \brief Pyramid element with 6 Gauss Points + * \author T.Dick + */ +class CPYRAM6 final : public CElementWithKnownSizes<6,5,3> { +private: + enum : unsigned short {NGAUSS = 6}; + enum : unsigned short {NNODE = 5}; + enum : unsigned short {NDIM = 3}; + +public: + /*! + * \brief Constructor of the class. + */ + CPYRAM6(); + + /*! + * \brief Compute the value of the volume of the element. + * \param[in] mode - Type of coordinates to consider in the computation. + * \return Volume of the element. + */ + su2double ComputeVolume(const FrameType mode = REFERENCE) const override; + +}; + +/*! + * \class CLINE + * \brief line element with 2 Gauss Points + * \author T.Dick + */ +class CLINE final : public CElementWithKnownSizes<2,2,1> { +private: + enum : unsigned short {NGAUSS = 2}; + enum : unsigned short {NNODE = 2}; + enum : unsigned short {NDIM = 1}; + +public: + /*! + * \brief Constructor of the class. + */ + CLINE(); + + /*! + * \brief Compute the value of the area of the element. + * \param[in] mode - Type of coordinates to consider in the computation. + * \return Area of the element. + */ + su2double ComputeLength(const FrameType mode = REFERENCE) const override; + +}; diff --git a/Common/include/geometry/elements/CGaussVariable.hpp b/Common/include/geometry/elements/CGaussVariable.hpp index bf5e8702ae23..c23bb3665478 100644 --- a/Common/include/geometry/elements/CGaussVariable.hpp +++ b/Common/include/geometry/elements/CGaussVariable.hpp @@ -59,7 +59,11 @@ class CGaussVariable { CGaussVariable(unsigned short val_iGauss, unsigned short val_nDim, unsigned short val_nNodes) : J_X(0.0), J_x(0.0), iGaussPoint(val_iGauss) { - GradNi_Xj.resize(val_nNodes,val_nDim) = su2double(0.0); + + /* --- For the structural mechanics solver the dimensions (nNodes x nDim) are sufficient. + * For the Sobolev smoothing solver dimensions (nNodes x (nDim+1)) are necessary + * when working on a curved design surface embedded in 3D. ---*/ + GradNi_Xj.resize(val_nNodes,val_nDim+1) = su2double(0.0); GradNi_xj = GradNi_Xj; Ni.resize(val_nNodes) = su2double(0.0); diff --git a/Common/include/grid_movement/CVolumetricMovement.hpp b/Common/include/grid_movement/CVolumetricMovement.hpp index 58225bd75ef0..2de92274cfdd 100644 --- a/Common/include/grid_movement/CVolumetricMovement.hpp +++ b/Common/include/grid_movement/CVolumetricMovement.hpp @@ -336,7 +336,7 @@ class CVolumetricMovement : public CGridMovement { * \param[in] UpdateGeo - Update geometry. * \param[in] Derivative - Compute the derivative (disabled by default). Does not actually deform the grid if enabled. */ - void SetVolume_Deformation(CGeometry *geometry, CConfig *config, bool UpdateGeo, bool Derivative = false); + void SetVolume_Deformation(CGeometry *geometry, CConfig *config, bool UpdateGeo, bool Derivative = false, bool ForwardProjectionDerivative = false); /*! * \brief Grid deformation using the spring analogy method. @@ -352,14 +352,14 @@ class CVolumetricMovement : public CGridMovement { * \param[in] geometry - Geometrical definition of the problem. * \param[in] config - Definition of the particular problem. */ - void SetBoundaryDerivatives(CGeometry *geometry, CConfig *config); + void SetBoundaryDerivatives(CGeometry *geometry, CConfig *config, bool ForwardProjectionDerivative); /*! * \brief Update the derivatives of the coordinates after the grid movement. * \param[in] geometry - Geometrical definition of the problem. * \param[in] config - Definition of the particular problem. */ - void UpdateGridCoord_Derivatives(CGeometry *geometry, CConfig *config); + void UpdateGridCoord_Derivatives(CGeometry *geometry, CConfig *config, bool ForwardProjectionDerivative); /*! * \brief Store the number of iterations when moving the mesh. diff --git a/Common/include/linear_algebra/CSysMatrix.hpp b/Common/include/linear_algebra/CSysMatrix.hpp index 355bc8d0400a..bd9de060fade 100644 --- a/Common/include/linear_algebra/CSysMatrix.hpp +++ b/Common/include/linear_algebra/CSysMatrix.hpp @@ -368,7 +368,7 @@ class CSysMatrix { void Initialize(unsigned long npoint, unsigned long npointdomain, unsigned short nvar, unsigned short neqn, bool EdgeConnect, CGeometry *geometry, - const CConfig *config, bool needTranspPtr = false); + const CConfig *config, bool needTranspPtr = false, bool grad_mode = false); /*! * \brief Sets to zero all the entries of the sparse matrix. diff --git a/Common/include/linear_algebra/CSysSolve.hpp b/Common/include/linear_algebra/CSysSolve.hpp index b71df1ea0ed9..23f86737a58b 100644 --- a/Common/include/linear_algebra/CSysSolve.hpp +++ b/Common/include/linear_algebra/CSysSolve.hpp @@ -76,6 +76,7 @@ class CSysSolve { private: const ScalarType eps; /*!< \brief Machine epsilon used in this class. */ bool mesh_deform; /*!< \brief Operate in mesh deformation mode, changes the source of solver options. */ + bool gradient_mode; /*!< \brief Operate in gradient smoothing mode, changes the source of solver options. */ ScalarType Residual=1e-20; /*!< \brief Residual at the end of a call to Solve or Solve_b. */ unsigned long Iterations=0;/*!< \brief Iterations done in Solve or Solve_b. */ @@ -292,7 +293,7 @@ class CSysSolve { * \brief default constructor of the class. * \param[in] mesh_deform_mode - true, to let CSysSolve know it is in a mesh deformation context */ - CSysSolve(const bool mesh_deform_mode = false); + CSysSolve(const bool mesh_deform_mode = false, const bool gradient_smooth_mode = false); /*! \brief Conjugate Gradient method * \param[in] b - the right hand size vector diff --git a/Common/include/linear_algebra/CSysVector.hpp b/Common/include/linear_algebra/CSysVector.hpp index d39a2a455427..1d35928459a7 100644 --- a/Common/include/linear_algebra/CSysVector.hpp +++ b/Common/include/linear_algebra/CSysVector.hpp @@ -33,6 +33,9 @@ #include "../parallelization/vectorization.hpp" #include "vector_expressions.hpp" +#include +#include + /*! * \brief OpenMP worksharing construct used in CSysVector for loops. * \note The loop will only run in parallel if methods are called from a @@ -447,6 +450,7 @@ class CSysVector : public VecExpr::CVecExpr, ScalarType> } } } + }; #undef CSYSVEC_PARFOR diff --git a/Common/include/option_structure.hpp b/Common/include/option_structure.hpp index a8de63ff7321..bed011bd2633 100644 --- a/Common/include/option_structure.hpp +++ b/Common/include/option_structure.hpp @@ -76,10 +76,10 @@ const unsigned int MAX_PARAMETERS = 10; /*!< \brief Maximum number of para const unsigned int MAX_NUMBER_PERIODIC = 10; /*!< \brief Maximum number of periodic boundary conditions. */ const unsigned int MAX_STRING_SIZE = 200; /*!< \brief Maximum number of domains. */ const unsigned int MAX_NUMBER_FFD = 15; /*!< \brief Maximum number of FFDBoxes for the FFD. */ -enum: unsigned int{MAX_SOLS = 12}; /*!< \brief Maximum number of solutions at the same time (dimension of solution container array). */ -const unsigned int MAX_TERMS = 6; /*!< \brief Maximum number of terms in the numerical equations (dimension of solver container array). */ +enum: unsigned int{MAX_SOLS = 13}; /*!< \brief Maximum number of solutions at the same time (dimension of solution container array). */ +const unsigned int MAX_TERMS = 7; /*!< \brief Maximum number of terms in the numerical equations (dimension of solver container array). */ const unsigned int MAX_ZONES = 3; /*!< \brief Maximum number of zones. */ -const unsigned int MAX_FE_KINDS = 4; /*!< \brief Maximum number of Finite Elements. */ +const unsigned int MAX_FE_KINDS = 7; /*!< \brief Maximum number of Finite Elements. */ const unsigned int NO_RK_ITER = 0; /*!< \brief No Runge-Kutta iteration. */ const unsigned int OVERHEAD = 4; /*!< \brief Overhead space above nMarker when allocating space for boundary elems (MPI + periodic). */ @@ -498,6 +498,8 @@ const int ADJRAD_SOL = 8; /*!< \brief Position of the continuous adjoint turbu const int MESH_SOL = 9; /*!< \brief Position of the mesh solver. */ const int ADJMESH_SOL = 10; /*!< \brief Position of the adjoint of the mesh solver. */ +const int GRADIENT_SMOOTHING = 11; /*!< \brief Position of the gradient smoothing equation in the solution solver array. */ + const int FEA_SOL = 0; /*!< \brief Position of the FEA equation in the solution solver array. */ const int ADJFEA_SOL = 1; /*!< \brief Position of the FEA adjoint equation in the solution solver array. */ @@ -509,6 +511,7 @@ const int SOURCE_FIRST_TERM = 2; /*!< \brief Position of the first source term const int SOURCE_SECOND_TERM = 3; /*!< \brief Position of the second source term in the numerics container array. */ const int CONV_BOUND_TERM = 4; /*!< \brief Position of the convective boundary terms in the numerics container array. */ const int VISC_BOUND_TERM = 5; /*!< \brief Position of the viscous boundary terms in the numerics container array. */ +const int GRAD_TERM = 6; /*!< \brief Position of the gradient smoothing terms in the numerics container array. */ const int FEA_TERM = 0; /*!< \brief Position of the finite element analysis terms in the numerics container array. */ const int DE_TERM = 1; /*!< \brief Position of the dielectric terms in the numerics container array. */ @@ -518,16 +521,20 @@ const int MAT_IDEALDE = 3; /*!< \brief Position of the Ideal-DE material model const int MAT_KNOWLES = 4; /*!< \brief Position of the Knowles material model. */ /*! - * \brief Types of finite elements (in 2D or 3D) + * \brief Types of finite elements (in 1D or 2D or 3D) */ +const int EL_LINE = 6; /*!< \brief Elements of two nodes, with second order gauss quadrature (1D). */ + const int EL_TRIA = 0; /*!< \brief Elements of three nodes (2D). */ const int EL_QUAD = 1; /*!< \brief Elements of four nodes (2D). */ +const int EL_TRIA2 = 2; /*!< \brief Elements of three nodes (2D), with second order gauss quadrature. */ const int EL_TETRA = 0; /*!< \brief Elements of four nodes (3D). */ const int EL_HEXA = 1; /*!< \brief Elements of eight nodes (3D). */ const int EL_PYRAM = 2; /*!< \brief Elements of five nodes (3D). */ const int EL_PRISM = 3; /*!< \brief Elements of six nodes (3D). */ - +const int EL_TETRA2 = 4; /*!< \brief Elements of four nodes, with second order gauss quadrature (3D). */ +const int EL_PYRAM2 = 5; /*!< \brief Elements of five nodes, with third order gauss quadrature (3D). */ /*! * \brief Types of spatial discretizations @@ -1160,6 +1167,7 @@ enum BC_TYPE { CHT_WALL_INTERFACE = 50, /*!< \brief Domain interface definition. */ SMOLUCHOWSKI_MAXWELL = 55, /*!< \brief Smoluchoski/Maxwell wall boundary condition. */ SEND_RECEIVE = 99, /*!< \brief Boundary send-receive definition. */ + NOT_AVAILABLE = 1000, /*!< \brief Boundary not on this MPI rank. */ }; /*! @@ -2285,6 +2293,24 @@ static const MapType POD_Map = { MakePair("INCREMENTAL_POD", POD_KIND::INCREMENTAL) }; +/*! + * \brief modus of operation for the sobolev smoothing solver. + */ +enum ENUM_SOBOLEV_MODUS { + NO_MODUS = 0, /*!< \brief Default option if none is choosen. */ + PARAM_LEVEL_COMPLETE = 1, /*!< \brief Operate on parameter level. */ + MESH_LEVEL = 3, /*!< \brief Operate on mesh level. */ + DEBUG = 4, /*!< \brief Special flag for debugging. */ + ONLY_GRAD = 5, /*!< \brief Flag for OneShot to only compute the original gradient. */ +}; +static const MapType Sobolev_Modus_Map = { + MakePair("NONE", NO_MODUS) + MakePair("PARAM_LEVEL_COMPLETE" , PARAM_LEVEL_COMPLETE) + MakePair("MESH_LEVEL" , MESH_LEVEL) + MakePair("DEBUG" , DEBUG) + MakePair("ONLY_GRADIENT" , ONLY_GRAD) +}; + #undef MakePair /* END_CONFIG_ENUMS */ diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index 8e14fd146408..3d864bfe81e2 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -798,6 +798,7 @@ void CConfig::SetPointersNull(void) { Marker_CfgFile_Deform_Mesh = nullptr; Marker_All_Deform_Mesh = nullptr; Marker_CfgFile_Deform_Mesh_Sym_Plane = nullptr; Marker_All_Deform_Mesh_Sym_Plane = nullptr; Marker_CfgFile_Fluid_Load = nullptr; Marker_All_Fluid_Load = nullptr; + Marker_CfgFile_SobolevBC = nullptr; Marker_All_SobolevBC = nullptr; Marker_CfgFile_Turbomachinery = nullptr; Marker_All_Turbomachinery = nullptr; Marker_CfgFile_TurbomachineryFlag = nullptr; Marker_All_TurbomachineryFlag = nullptr; @@ -808,7 +809,7 @@ void CConfig::SetPointersNull(void) { Marker_DV = nullptr; Marker_Moving = nullptr; Marker_Monitoring = nullptr; Marker_Designing = nullptr; Marker_GeoEval = nullptr; Marker_Plotting = nullptr; Marker_Analyze = nullptr; Marker_PyCustom = nullptr; Marker_WallFunctions = nullptr; - Marker_CfgFile_KindBC = nullptr; Marker_All_KindBC = nullptr; + Marker_CfgFile_KindBC = nullptr; Marker_All_KindBC = nullptr; Marker_SobolevBC = nullptr; Kind_WallFunctions = nullptr; IntInfo_WallFunctions = nullptr; @@ -1937,6 +1938,38 @@ void CConfig::SetConfig_Options() { /* DESCRIPTION: Automatically reorient elements that seem flipped */ addBoolOption("REORIENT_ELEMENTS",ReorientElements, true); + /*!\par CONFIG_CATEGORY: Sobolev Gradient Solver Parameters \ingroup Config */ + /*--- Options related to the Sobolev smoothing solver ---*/ + + /* DESCRIPTION: Switch to activate gradient smoothing */ + addBoolOption("SMOOTH_GRADIENT",SmoothGradient, false); + /* DESCRIPTION: Epsilon of the Laplace Beltrami Operator */ + addDoubleOption("SMOOTHING_EPSILON1",SmoothingEps1, 1.0); + /* DESCRIPTION: Zeta of the identity term in the Laplace Beltrami Operator */ + addDoubleOption("SMOOTHING_EPSILON2",SmoothingEps2, 1.0); + /* DESCRIPTION: Switch to calculate dimensions separated */ + addBoolOption("SEPARATE_DIMENSIONS",SepDim, false); + /* DESCRIPTION: Switch to calculate dimensions separated */ + addBoolOption("SECOND_ORDER_INTEGRATION",SecOrdQuad, true); + /* DESCRIPTION: Switch to activate working on the surface only */ + addBoolOption("SMOOTH_ON_SURFACE",SmoothOnSurface, false); + /* DESCRIPTION: Switch to activate zero Dirichlet boundary for surface mode */ + addBoolOption("DIRICHLET_SURFACE_BOUNDARY",DirichletSurfaceBound, false); + /* DESCRIPTION: Switch to activate somecode pieces for debbuging */ + addEnumOption("SOBOLEV_MODE",NumMode, Sobolev_Modus_Map,NO_MODUS); + /*!\brief HESS_OBJFUNC_FILENAME + * \n DESCRIPTION: Output objective function hessian \ingroup Config*/ + addStringOption("HESS_OBJFUNC_FILENAME", ObjFunc_Hess_FileName, string("of_hess.dat")); + + /* DESCRIPTION: Linear solver for the gradient smoothing\n OPTIONS: see \link Linear_Solver_Map \endlink \n DEFAULT: FGMRES \ingroup Config*/ + addEnumOption("GRAD_LINEAR_SOLVER", Kind_Grad_Linear_Solver, Linear_Solver_Map, FGMRES); + /* \n DESCRIPTION: Preconditioner for the Krylov linear solvers \n OPTIONS: see \link Linear_Solver_Prec_Map \endlink \n DEFAULT: LU_SGS \ingroup Config*/ + addEnumOption("GRAD_LINEAR_SOLVER_PREC", Kind_Grad_Linear_Solver_Prec, Linear_Solver_Prec_Map, ILU); + /* DESCRIPTION: Minimum error threshold for the linear solver for the implicit formulation */ + addDoubleOption("GRAD_LINEAR_SOLVER_ERROR", Grad_Linear_Solver_Error, 1E-14); + /* DESCRIPTION: Maximum number of iterations of the linear solver for the implicit formulation */ + addUnsignedLongOption("GRAD_LINEAR_SOLVER_ITER", Grad_Linear_Solver_Iter, 1000); + /*!\par CONFIG_CATEGORY: Input/output files and formats \ingroup Config */ /*--- Options related to input/output files and formats ---*/ @@ -2026,6 +2059,8 @@ void CConfig::SetConfig_Options() { addEnumListOption("SURFACE_MOVEMENT",nKind_SurfaceMovement, Kind_SurfaceMovement, SurfaceMovement_Map); /* DESCRIPTION: Marker(s) of moving surfaces (MOVING_WALL or DEFORMING grid motion). */ addStringListOption("MARKER_MOVING", nMarker_Moving, Marker_Moving); + /* DESCRIPTION: Marker(s) of gradient problem boundaries. */ + addStringListOption("MARKER_SOBOLEVBC", nMarker_SobolevBC, Marker_SobolevBC); /* DESCRIPTION: Mach number (non-dimensional, based on the mesh velocity and freestream vals.) */ addDoubleOption("MACH_MOTION", Mach_Motion, 0.0); /* DESCRIPTION: Coordinates of the rigid motion origin */ @@ -2652,7 +2687,7 @@ void CConfig::SetConfig_Options() { /* DESCRIPTION: Optimization gradient factor */ addPythonOption("OPT_GRADIENT_FACTOR"); - + /* DESCRIPTION: Upper bound for the optimizer */ addPythonOption("OPT_BOUND_UPPER"); @@ -2779,25 +2814,25 @@ void CConfig::SetConfig_Options() { /* DESCRIPTION: Size of the edge groups colored for thread parallel edge loops (0 forces the reducer strategy). */ addUnsignedLongOption("EDGE_COLORING_GROUP_SIZE", edgeColorGroupSize, 512); - + /*--- options that are used for libROM ---*/ /*!\par CONFIG_CATEGORY:libROM options \ingroup Config*/ - + /*!\brief SAVE_LIBROM \n DESCRIPTION: Flag for saving data with libROM. */ addBoolOption("SAVE_LIBROM", libROM, false); - + /*!\brief LIBROM_BASE_FILENAME \n DESCRIPTION: Output base file name for libROM \ingroup Config*/ addStringOption("LIBROM_BASE_FILENAME", libROMbase_FileName, string("su2")); - + /*!\brief BASIS_GENERATION \n DESCRIPTION: Flag for saving data with libROM. */ addEnumOption("BASIS_GENERATION", POD_Basis_Gen, POD_Map, POD_KIND::STATIC); - + /*!\brief MAX_BASIS_DIM \n DESCRIPTION: Maximum number of basis vectors.*/ addUnsignedShortOption("MAX_BASIS_DIM", maxBasisDim, 100); - + /*!\brief MAX_BASIS_DIM \n DESCRIPTION: Maximum number of basis vectors.*/ addUnsignedShortOption("ROM_SAVE_FREQ", rom_save_freq, 1); - + /* END_CONFIG_OPTIONS */ } @@ -5093,7 +5128,7 @@ void CConfig::SetMarkers(SU2_COMPONENT val_software) { iMarker_EngineInflow, iMarker_EngineExhaust, iMarker_Damper, iMarker_Displacement, iMarker_Load, iMarker_FlowLoad, iMarker_Internal, iMarker_Monitoring, iMarker_Designing, iMarker_GeoEval, iMarker_Plotting, iMarker_Analyze, - iMarker_DV, iMarker_Moving, iMarker_PyCustom, iMarker_Supersonic_Inlet, iMarker_Supersonic_Outlet, + iMarker_DV, iMarker_Moving, iMarker_SobolevBC, iMarker_PyCustom, iMarker_Supersonic_Inlet, iMarker_Supersonic_Outlet, iMarker_Clamped, iMarker_ZoneInterface, iMarker_CHTInterface, iMarker_Load_Dir, iMarker_Disp_Dir, iMarker_Load_Sine, iMarker_Fluid_Load, iMarker_Deform_Mesh, iMarker_Deform_Mesh_Sym_Plane, iMarker_ActDiskInlet, iMarker_ActDiskOutlet, @@ -5143,6 +5178,7 @@ void CConfig::SetMarkers(SU2_COMPONENT val_software) { Marker_All_Turbomachinery = new unsigned short[nMarker_All] (); // Store whether the boundary is in needed for Turbomachinery computations. Marker_All_TurbomachineryFlag = new unsigned short[nMarker_All] (); // Store whether the boundary has a flag for Turbomachinery computations. Marker_All_MixingPlaneInterface = new unsigned short[nMarker_All] (); // Store whether the boundary has a in the MixingPlane interface. + Marker_All_SobolevBC = new unsigned short[nMarker_All] (); // Store wether the boundary should apply to the gradient smoothing. for (iMarker_All = 0; iMarker_All < nMarker_All; iMarker_All++) { Marker_All_TagBound[iMarker_All] = "SEND_RECEIVE"; @@ -5168,6 +5204,7 @@ void CConfig::SetMarkers(SU2_COMPONENT val_software) { Marker_CfgFile_TurbomachineryFlag = new unsigned short[nMarker_CfgFile] (); Marker_CfgFile_MixingPlaneInterface = new unsigned short[nMarker_CfgFile] (); Marker_CfgFile_PyCustom = new unsigned short[nMarker_CfgFile] (); + Marker_CfgFile_SobolevBC = new unsigned short[nMarker_CfgFile] (); for (iMarker_CfgFile = 0; iMarker_CfgFile < nMarker_CfgFile; iMarker_CfgFile++) { Marker_CfgFile_TagBound[iMarker_CfgFile] = "SEND_RECEIVE"; @@ -5588,6 +5625,13 @@ void CConfig::SetMarkers(SU2_COMPONENT val_software) { Marker_CfgFile_PyCustom[iMarker_CfgFile] = YES; } + for (iMarker_CfgFile = 0; iMarker_CfgFile < nMarker_CfgFile; iMarker_CfgFile++) { + Marker_CfgFile_SobolevBC[iMarker_CfgFile] = NO; + for (iMarker_SobolevBC = 0; iMarker_SobolevBC < nMarker_SobolevBC; iMarker_SobolevBC++) + if (Marker_CfgFile_TagBound[iMarker_CfgFile] == Marker_SobolevBC[iMarker_SobolevBC]) + Marker_CfgFile_SobolevBC[iMarker_CfgFile] = YES; + } + } void CConfig::SetOutput(SU2_COMPONENT val_software, unsigned short val_izone) { @@ -5604,7 +5648,8 @@ void CConfig::SetOutput(SU2_COMPONENT val_software, unsigned short val_izone) { iMarker_ZoneInterface, iMarker_PyCustom, iMarker_Load_Dir, iMarker_Disp_Dir, iMarker_Load_Sine, iMarker_Clamped, iMarker_Moving, iMarker_Supersonic_Inlet, iMarker_Supersonic_Outlet, iMarker_ActDiskInlet, iMarker_Emissivity, - iMarker_ActDiskOutlet, iMarker_MixingPlaneInterface; + iMarker_ActDiskOutlet, iMarker_MixingPlaneInterface, + iMarker_SobolevBC; bool fea = ((Kind_Solver == FEM_ELASTICITY) || (Kind_Solver == DISC_ADJ_FEM)); @@ -7100,6 +7145,15 @@ void CConfig::SetOutput(SU2_COMPONENT val_software, unsigned short val_izone) { BoundaryTable.PrintFooter(); } + if (nMarker_SobolevBC != 0) { + BoundaryTable << "Sobolev boundary"; + for (iMarker_SobolevBC = 0; iMarker_SobolevBC < nMarker_SobolevBC; iMarker_SobolevBC++) { + BoundaryTable << Marker_SobolevBC[iMarker_SobolevBC]; + if (iMarker_SobolevBC < nMarker_SobolevBC-1) BoundaryTable << " "; + } + BoundaryTable.PrintFooter(); + } + if (nMarker_ActDiskOutlet != 0) { if (GetKind_ActDisk() == VARIABLE_LOAD) { cout << endl << "Actuator disk with variable load." << endl; @@ -7404,6 +7458,13 @@ unsigned short CConfig::GetMarker_ZoneInterface(string val_marker) const { return Marker_CfgFile_ZoneInterface[iMarker_CfgFile]; } +unsigned short CConfig::GetMarker_CfgFile_SobolevBC(string val_marker) const { + unsigned short iMarker_CfgFile; + for (iMarker_CfgFile = 0; iMarker_CfgFile < nMarker_CfgFile; iMarker_CfgFile++) + if (Marker_CfgFile_TagBound[iMarker_CfgFile] == val_marker) break; + return Marker_CfgFile_SobolevBC[iMarker_CfgFile]; +} + bool CConfig::GetViscous_Wall(unsigned short iMarker) const { return (Marker_All_KindBC[iMarker] == HEAT_FLUX || @@ -7569,6 +7630,9 @@ CConfig::~CConfig(void) { delete [] Marker_CfgFile_MixingPlaneInterface; delete [] Marker_All_MixingPlaneInterface; + delete [] Marker_CfgFile_SobolevBC; + delete [] Marker_All_SobolevBC; + delete[] Marker_DV; delete[] Marker_Moving; delete[] Marker_Monitoring; @@ -7581,6 +7645,7 @@ CConfig::~CConfig(void) { delete[] Marker_CHTInterface; delete [] Marker_PyCustom; delete[] Marker_All_SendRecv; + delete[] Marker_SobolevBC; delete[] Kind_Inc_Inlet; delete[] Kind_Inc_Outlet; @@ -8483,6 +8548,10 @@ bool CConfig::GetVolumetric_Movement() const { Kind_SU2 == SU2_COMPONENT::SU2_DOT || DirectDiff) { volumetric_movement = true;} + + if (GetSmoothGradient()) + { volumetric_movement=true; } + return volumetric_movement; } @@ -8545,6 +8614,16 @@ unsigned short CConfig::GetMarker_Fluid_Load(string val_marker) const { return iMarker_Fluid_Load; } +unsigned short CConfig::GetMarker_SobolevBC(string val_marker) const { + unsigned short iMarker_Sobolev; + + /*--- Find the marker for this moving boundary. ---*/ + for (iMarker_Sobolev = 0; iMarker_Sobolev < nMarker_SobolevBC; iMarker_Sobolev++) + if (Marker_SobolevBC[iMarker_Sobolev] == val_marker) break; + + return iMarker_Sobolev; +} + su2double CConfig::GetExhaust_Temperature_Target(string val_marker) const { unsigned short iMarker_EngineExhaust; for (iMarker_EngineExhaust = 0; iMarker_EngineExhaust < nMarker_EngineExhaust; iMarker_EngineExhaust++) diff --git a/Common/src/fem/geometry_structure_fem_part.cpp b/Common/src/fem/geometry_structure_fem_part.cpp index d0badb323ac5..b53b5179a67e 100644 --- a/Common/src/fem/geometry_structure_fem_part.cpp +++ b/Common/src/fem/geometry_structure_fem_part.cpp @@ -812,6 +812,7 @@ void CPhysicalGeometry::Read_SU2_Format_Parallel_FEM(CConfig *config, config->SetMarker_All_ZoneInterface(iMarker, config->GetMarker_CfgFile_ZoneInterface(Marker_Tag)); config->SetMarker_All_DV(iMarker, config->GetMarker_CfgFile_DV(Marker_Tag)); config->SetMarker_All_Moving(iMarker, config->GetMarker_CfgFile_Moving(Marker_Tag)); + config->SetMarker_All_SobolevBC(iMarker, config->GetMarker_CfgFile_SobolevBC(Marker_Tag)); config->SetMarker_All_PerBound(iMarker, config->GetMarker_CfgFile_PerBound(Marker_Tag)); config->SetMarker_All_SendRecv(iMarker, NONE); } @@ -1909,6 +1910,7 @@ void CPhysicalGeometry::Read_CGNS_Format_Parallel_FEM(CConfig *config, config->SetMarker_All_ZoneInterface(iMarker, config->GetMarker_CfgFile_ZoneInterface(Marker_Tag)); config->SetMarker_All_DV(iMarker, config->GetMarker_CfgFile_DV(Marker_Tag)); config->SetMarker_All_Moving(iMarker, config->GetMarker_CfgFile_Moving(Marker_Tag)); + config->SetMarker_All_SobolevBC(iMarker, config->GetMarker_CfgFile_SobolevBC(Marker_Tag)); config->SetMarker_All_PerBound(iMarker, config->GetMarker_CfgFile_PerBound(Marker_Tag)); config->SetMarker_All_SendRecv(iMarker, NONE); } diff --git a/Common/src/geometry/CPhysicalGeometry.cpp b/Common/src/geometry/CPhysicalGeometry.cpp index 805c4130a2cd..262e20ba834c 100644 --- a/Common/src/geometry/CPhysicalGeometry.cpp +++ b/Common/src/geometry/CPhysicalGeometry.cpp @@ -180,6 +180,11 @@ CPhysicalGeometry::CPhysicalGeometry(CConfig *config, unsigned short val_iZone, } + /*--- Allocate space for the sensitivity and initialize. ---*/ + if (config->GetSmoothGradient()) { + Sensitivity.resize(nPoint,nDim) = su2double(0.0); + } + } CPhysicalGeometry::CPhysicalGeometry(CGeometry *geometry, @@ -269,6 +274,11 @@ CPhysicalGeometry::CPhysicalGeometry(CGeometry *geometry, LoadVolumeElements(config, geometry); LoadSurfaceElements(config, geometry); + /*--- Allocate space for the sensitivity and initialize. ---*/ + if (config->GetSmoothGradient()) { + Sensitivity.resize(nPoint,nDim) = su2double(0.0); + } + /*--- Free memory associated with the partitioning of points and elems. ---*/ decltype(Neighbors)().swap(Neighbors); @@ -3598,6 +3608,8 @@ void CPhysicalGeometry::SetBoundaries(CConfig *config) { config->SetMarker_All_Turbomachinery(iMarker, config->GetMarker_CfgFile_Turbomachinery(Marker_Tag)); config->SetMarker_All_TurbomachineryFlag(iMarker, config->GetMarker_CfgFile_TurbomachineryFlag(Marker_Tag)); config->SetMarker_All_MixingPlaneInterface(iMarker, config->GetMarker_CfgFile_MixingPlaneInterface(Marker_Tag)); + config->SetMarker_All_SobolevBC(iMarker, config->GetMarker_CfgFile_SobolevBC(Marker_Tag)); + } /*--- Send-Receive boundaries definition ---*/ @@ -3621,6 +3633,7 @@ void CPhysicalGeometry::SetBoundaries(CConfig *config) { config->SetMarker_All_Turbomachinery(iMarker, NO); config->SetMarker_All_TurbomachineryFlag(iMarker, NO); config->SetMarker_All_MixingPlaneInterface(iMarker, NO); + config->SetMarker_All_SobolevBC(iMarker, NO); for (iElem_Bound = 0; iElem_Bound < nElem_Bound[iMarker]; iElem_Bound++) { if (config->GetMarker_All_SendRecv(iMarker) < 0) @@ -4023,6 +4036,7 @@ void CPhysicalGeometry::LoadUnpartitionedSurfaceElements(CConfig *config, config->SetMarker_All_Turbomachinery(iMarker, config->GetMarker_CfgFile_Turbomachinery(Marker_Tag)); config->SetMarker_All_TurbomachineryFlag(iMarker, config->GetMarker_CfgFile_TurbomachineryFlag(Marker_Tag)); config->SetMarker_All_MixingPlaneInterface(iMarker, config->GetMarker_CfgFile_MixingPlaneInterface(Marker_Tag)); + config->SetMarker_All_SobolevBC(iMarker, config->GetMarker_CfgFile_SobolevBC(Marker_Tag)); } } diff --git a/Common/src/geometry/elements/CElement.cpp b/Common/src/geometry/elements/CElement.cpp index a7b111524e71..df5ff4394ea0 100644 --- a/Common/src/geometry/elements/CElement.cpp +++ b/Common/src/geometry/elements/CElement.cpp @@ -56,6 +56,13 @@ CElement::CElement(unsigned short ngauss, unsigned short nnodes, unsigned short Kt_a.resize(nNodes, nDim); FDL_a.resize(nNodes, nDim); + HiHj.resize(nNodes,nNodes); + DHiDHj.resize(nNodes); + for(auto& DHiDHj_a : DHiDHj) { + DHiDHj_a.resize(nNodes); + for(auto& DHiDHj_ab : DHiDHj_a) DHiDHj_ab.resize(nDim,nDim); + } + ClearElement(); } @@ -66,6 +73,10 @@ void CElement::ClearElement(void) { FDL_a.setConstant(0.0); Ks_ab.setConstant(0.0); + HiHj.setConstant(0.0); + for(auto& DHiDHj_a : DHiDHj) { + for(auto& DHiDHj_ab : DHiDHj_a) DHiDHj_ab.setConstant(0.0); + } for(auto& kab_i : Kab) kab_i.setConstant(0.0); } diff --git a/Common/src/geometry/elements/CLINE.cpp b/Common/src/geometry/elements/CLINE.cpp new file mode 100644 index 000000000000..cfb3b2fc351f --- /dev/null +++ b/Common/src/geometry/elements/CLINE.cpp @@ -0,0 +1,66 @@ +/*! + * \file CLINE.cpp + * \brief Definition of the 2-node line element with two Gauss points. + * \author T. Dick + * \version 7.2.1 "Blackbird" + * + * SU2 Project Website: https://su2code.github.io + * + * The SU2 Project is maintained by the SU2 Foundation + * (http://su2foundation.org) + * + * Copyright 2012-2019, SU2 Contributors (cf. AUTHORS.md) + * + * SU2 is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * SU2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with SU2. If not, see . + */ + +#include "../../../include/geometry/elements/CElement.hpp" + +CLINE::CLINE() : CElementWithKnownSizes() { + + su2double Xi, val_Ni; + + /*--- Gauss coordinates and weights ---*/ + + su2double oneOnTwoSqrt3 = 0.288675134594813; + GaussCoord[0][0] = 0.5-oneOnTwoSqrt3; GaussWeight(0) = 0.5; + GaussCoord[1][0] = 0.5+oneOnTwoSqrt3; GaussWeight(1) = 0.5; + + /*--- Store the values of the shape functions and their derivatives ---*/ + + unsigned short iGauss; + for (iGauss = 0; iGauss < nGaussPoints; iGauss++) { + + Xi = GaussCoord[iGauss][0]; + + val_Ni = 1.0-Xi; GaussPoint[iGauss].SetNi(val_Ni, 0); + val_Ni = Xi; GaussPoint[iGauss].SetNi(val_Ni, 1); + + /*--- dN/d xi ---*/ + + dNiXj[iGauss][0][0] = -1.0; + dNiXj[iGauss][1][0] = 1.0; + + } + +} + +su2double CLINE::ComputeLength(const FrameType mode) const { + + /*--- Select the appropriate source for the nodal coordinates depending on the frame requested + for the gradient computation, REFERENCE (undeformed) or CURRENT (deformed)---*/ + const su2activematrix& Coord = (mode==REFERENCE) ? RefCoord : CurrentCoord; + return fabs(Coord[1][0] - Coord[0][0]); + +} diff --git a/Common/src/geometry/elements/CPYRAM6.cpp b/Common/src/geometry/elements/CPYRAM6.cpp new file mode 100644 index 000000000000..7f9ac2b80928 --- /dev/null +++ b/Common/src/geometry/elements/CPYRAM6.cpp @@ -0,0 +1,147 @@ +/*! + * \file CPYRAM6.cpp + * \brief Definition of 5-node pyramid element with 6 Gauss points. + * \author T.Dick + * \version 7.2.1 "Blackbird" + * + * SU2 Project Website: https://su2code.github.io + * + * The SU2 Project is maintained by the SU2 Foundation + * (http://su2foundation.org) + * + * Copyright 2012-2019, SU2 Contributors (cf. AUTHORS.md) + * + * SU2 is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * SU2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with SU2. If not, see . + */ + +#include "../../../include/geometry/elements/CElement.hpp" + + +CPYRAM6::CPYRAM6() : CElementWithKnownSizes() { + + /*--- Gauss coordinates and weights ---*/ + + GaussCoord[0][0] = sqrt(4.0/27.0); GaussCoord[0][1] = sqrt(4.0/27.0); GaussCoord[0][2] = 1.0/6.0; GaussWeight(0) = 9.0/20.0; + GaussCoord[0][0] = sqrt(4.0/27.0); GaussCoord[0][1] = sqrt(4.0/27.0); GaussCoord[0][2] = 1.0/6.0; GaussWeight(1) = 9.0/20.0; + GaussCoord[0][0] = sqrt(4.0/27.0); GaussCoord[0][1] = sqrt(4.0/27.0); GaussCoord[0][2] = 1.0/6.0; GaussWeight(2) = 9.0/20.0; + GaussCoord[0][0] = sqrt(4.0/27.0); GaussCoord[0][1] = sqrt(4.0/27.0); GaussCoord[0][2] = 1.0/6.0; GaussWeight(3) = 9.0/20.0; + GaussCoord[4][0] = 0.0; GaussCoord[4][1] = 0.0; GaussCoord[4][2] = 0.5; GaussWeight(4) = 3.0/5.0; + GaussCoord[5][0] = 0.0; GaussCoord[5][1] = 0.0; GaussCoord[5][2] = 0.25; GaussWeight(5) = -16.0/15.0; + + /*--- Store the values of the shape functions and their derivatives ---*/ + + unsigned short iNode, iGauss; + su2double Xi, Eta, Zeta, val_Ni; + + for (iGauss = 0; iGauss < nGaussPoints; iGauss++) { + + Xi = GaussCoord[iGauss][0]; + Eta = GaussCoord[iGauss][1]; + Zeta = GaussCoord[iGauss][2]; + + val_Ni = 0.25*(-Xi+Eta+Zeta-1.0)*(-Xi-Eta+Zeta-1.0)/(1.0-Zeta); GaussPoint[iGauss].SetNi(val_Ni,0); + val_Ni = 0.25*(-Xi-Eta+Zeta-1.0)*( Xi-Eta+Zeta-1.0)/(1.0-Zeta); GaussPoint[iGauss].SetNi(val_Ni,1); + val_Ni = 0.25*( Xi+Eta+Zeta-1.0)*( Xi-Eta+Zeta-1.0)/(1.0-Zeta); GaussPoint[iGauss].SetNi(val_Ni,2); + val_Ni = 0.25*( Xi+Eta+Zeta-1.0)*(-Xi+Eta+Zeta-1.0)/(1.0-Zeta); GaussPoint[iGauss].SetNi(val_Ni,3); + val_Ni = Zeta; GaussPoint[iGauss].SetNi(val_Ni,4); + + /*--- dN/d xi ---*/ + + dNiXj[iGauss][0][0] = 0.5*(Zeta-Xi-1.0)/(Zeta-1.0); + dNiXj[iGauss][1][0] = 0.5*Xi/(Zeta-1.0); + dNiXj[iGauss][2][0] = 0.5*(1.0-Zeta-Xi)/(Zeta-1.0); + dNiXj[iGauss][3][0] = dNiXj[iGauss][1][0]; + dNiXj[iGauss][4][0] = 0.0; + + /*--- dN/d eta ---*/ + + dNiXj[iGauss][0][1] = 0.5*Eta/(Zeta-1.0); + dNiXj[iGauss][1][1] = 0.5*(Zeta-Eta-1.0)/(Zeta-1.0); + dNiXj[iGauss][2][1] = dNiXj[iGauss][0][1]; + dNiXj[iGauss][3][1] = 0.5*(1.0-Zeta-Eta)/(Zeta-1.0); + dNiXj[iGauss][4][1] = 0.0; + + /*--- dN/d zeta ---*/ + + dNiXj[iGauss][0][2] = 0.25*(-1.0 + 2.0*Zeta - Zeta*Zeta - Eta*Eta + Xi*Xi)/((1.0-Zeta)*(1.0-Zeta)); + dNiXj[iGauss][1][2] = 0.25*(-1.0 + 2.0*Zeta - Zeta*Zeta + Eta*Eta - Xi*Xi)/((1.0-Zeta)*(1.0-Zeta)); + dNiXj[iGauss][2][2] = dNiXj[iGauss][0][2]; + dNiXj[iGauss][3][2] = dNiXj[iGauss][1][2]; + dNiXj[iGauss][4][2] = 1.0; + + } + + /*--- Store the extrapolation functions ---*/ + + su2double ExtrapCoord[5][3]; + + ExtrapCoord[0][0] = 2.0; ExtrapCoord[0][1] = 0.0; ExtrapCoord[0][2] = -0.316397779494322; + ExtrapCoord[1][0] = 0.0; ExtrapCoord[1][1] = 2.0; ExtrapCoord[1][2] = -0.316397779494322; + ExtrapCoord[2][0] = -2.0; ExtrapCoord[2][1] = 0.0; ExtrapCoord[2][2] = -0.316397779494322; + ExtrapCoord[3][0] = 0.0; ExtrapCoord[3][1] = -2.0; ExtrapCoord[3][2] = -0.316397779494322; + ExtrapCoord[4][0] = 0.0; ExtrapCoord[4][1] = 0.0; ExtrapCoord[4][2] = 1.749193338482970; + + for (iNode = 0; iNode < nNodes; iNode++) { + + Xi = ExtrapCoord[iNode][0]; + Eta = ExtrapCoord[iNode][1]; + Zeta = ExtrapCoord[iNode][2]; + + NodalExtrap[iNode][0] = 0.25*(-Xi+Eta+Zeta-1.0)*(-Xi-Eta+Zeta-1.0)/(1.0-Zeta); + NodalExtrap[iNode][1] = 0.25*(-Xi-Eta+Zeta-1.0)*( Xi-Eta+Zeta-1.0)/(1.0-Zeta); + NodalExtrap[iNode][2] = 0.25*( Xi+Eta+Zeta-1.0)*( Xi-Eta+Zeta-1.0)/(1.0-Zeta); + NodalExtrap[iNode][3] = 0.25*( Xi+Eta+Zeta-1.0)*(-Xi+Eta+Zeta-1.0)/(1.0-Zeta); + NodalExtrap[iNode][4] = Zeta; + + } +} + +su2double CPYRAM6::ComputeVolume(const FrameType mode) const { + + unsigned short iDim; + su2double r1[3] = {0.0,0.0,0.0}, r2[3] = {0.0,0.0,0.0}, r3[3] = {0.0,0.0,0.0}, CrossProduct[3] = {0.0,0.0,0.0}; + su2double Volume = 0.0; + + /*--- Select the appropriate source for the nodal coordinates depending on the frame requested + for the gradient computation, REFERENCE (undeformed) or CURRENT (deformed)---*/ + const su2activematrix& Coord = (mode==REFERENCE) ? RefCoord : CurrentCoord; + + for (iDim = 0; iDim < NDIM; iDim++) { + r1[iDim] = Coord[1][iDim] - Coord[0][iDim]; + r2[iDim] = Coord[2][iDim] - Coord[0][iDim]; + r3[iDim] = Coord[4][iDim] - Coord[0][iDim]; + } + + CrossProduct[0] = (r1[1]*r2[2] - r1[2]*r2[1])*r3[0]; + CrossProduct[1] = (r1[2]*r2[0] - r1[0]*r2[2])*r3[1]; + CrossProduct[2] = (r1[0]*r2[1] - r1[1]*r2[0])*r3[2]; + + Volume = fabs(CrossProduct[0] + CrossProduct[1] + CrossProduct[2])/6.0; + + for (iDim = 0; iDim < NDIM; iDim++) { + r1[iDim] = Coord[2][iDim] - Coord[0][iDim]; + r2[iDim] = Coord[3][iDim] - Coord[0][iDim]; + r3[iDim] = Coord[4][iDim] - Coord[0][iDim]; + } + + CrossProduct[0] = (r1[1]*r2[2] - r1[2]*r2[1])*r3[0]; + CrossProduct[1] = (r1[2]*r2[0] - r1[0]*r2[2])*r3[1]; + CrossProduct[2] = (r1[0]*r2[1] - r1[1]*r2[0])*r3[2]; + + Volume += fabs(CrossProduct[0] + CrossProduct[1] + CrossProduct[2])/6.0; + + return Volume; + +} + diff --git a/Common/src/geometry/elements/CTETRA4.cpp b/Common/src/geometry/elements/CTETRA4.cpp new file mode 100644 index 000000000000..838fdef4831c --- /dev/null +++ b/Common/src/geometry/elements/CTETRA4.cpp @@ -0,0 +1,102 @@ +/*! + * \file CTETRA4.cpp + * \brief Definition of 4-node tetrahedral element with 4 Gauss point. + * \author T. Dick + * \version 7.2.1 "Blackbird" + * + * SU2 Project Website: https://su2code.github.io + * + * The SU2 Project is maintained by the SU2 Foundation + * (http://su2foundation.org) + * + * Copyright 2012-2019, SU2 Contributors (cf. AUTHORS.md) + * + * SU2 is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * SU2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with SU2. If not, see . + */ + +#include "../../../include/geometry/elements/CElement.hpp" + + +CTETRA4::CTETRA4() : CElementWithKnownSizes() { + + /*--- Gauss coordinates and weights ---*/ + + su2double r = ((5.0-sqrt(5.0))/20); + su2double s = ((5.0+3*sqrt(5.0))/20); + GaussCoord[0][0] = r; GaussCoord[0][1] = r; GaussCoord[0][2] = r; GaussWeight(0) = 1.0/24.0; + GaussCoord[0][0] = s; GaussCoord[0][1] = r; GaussCoord[0][2] = r; GaussWeight(1) = 1.0/24.0; + GaussCoord[0][0] = r; GaussCoord[0][1] = s; GaussCoord[0][2] = r; GaussWeight(2) = 1.0/24.0; + GaussCoord[0][0] = r; GaussCoord[0][1] = r; GaussCoord[0][2] = s; GaussWeight(3) = 1.0/24.0; + + /*--- Store the values of the shape functions and their derivatives ---*/ + + unsigned short iGauss; + su2double Xi, Eta, Zeta, val_Ni; + + for (iGauss = 0; iGauss < nGaussPoints; iGauss++) { + + Xi = GaussCoord[iGauss][0]; + Eta = GaussCoord[iGauss][1]; + Zeta = GaussCoord[iGauss][2]; + + val_Ni = Xi; GaussPoint[iGauss].SetNi(val_Ni,0); + val_Ni = Eta; GaussPoint[iGauss].SetNi(val_Ni,1); + val_Ni = 1.0-Xi-Eta-Zeta; GaussPoint[iGauss].SetNi(val_Ni,2); + val_Ni = Zeta; GaussPoint[iGauss].SetNi(val_Ni,3); + + /*--- dN/d xi, dN/d eta, dN/d zeta ---*/ + + dNiXj[iGauss][0][0] = 1.0; dNiXj[iGauss][0][1] = 0.0; dNiXj[iGauss][0][2] = 0.0; + dNiXj[iGauss][1][0] = 0.0; dNiXj[iGauss][1][1] = 1.0; dNiXj[iGauss][1][2] = 0.0; + dNiXj[iGauss][2][0] = -1.0; dNiXj[iGauss][2][1] = -1.0; dNiXj[iGauss][2][2] = -1.0; + dNiXj[iGauss][3][0] = 0.0; dNiXj[iGauss][3][1] = 0.0; dNiXj[iGauss][3][2] = 1.0; + + } + + /*--- Shape functions evaluated at the nodes for extrapolation of the stresses at the Gaussian Points ---*/ + /*--- The stress is constant at a TETRA1 element ---*/ + + NodalExtrap[0][0] = 1.0; + NodalExtrap[1][0] = 1.0; + NodalExtrap[2][0] = 1.0; + NodalExtrap[3][0] = 1.0; + +} + +su2double CTETRA4::ComputeVolume(const FrameType mode) const { + + unsigned short iDim; + su2double r1[3] = {0.0,0.0,0.0}, r2[3] = {0.0,0.0,0.0}, r3[3] = {0.0,0.0,0.0}, CrossProduct[3] = {0.0,0.0,0.0}; + su2double Volume = 0.0; + + /*--- Select the appropriate source for the nodal coordinates depending on the frame requested + for the gradient computation, REFERENCE (undeformed) or CURRENT (deformed)---*/ + const su2activematrix& Coord = (mode==REFERENCE) ? RefCoord : CurrentCoord; + + for (iDim = 0; iDim < nDim; iDim++) { + r1[iDim] = Coord[1][iDim] - Coord[0][iDim]; + r2[iDim] = Coord[2][iDim] - Coord[0][iDim]; + r3[iDim] = Coord[3][iDim] - Coord[0][iDim]; + } + + CrossProduct[0] = (r1[1]*r2[2] - r1[2]*r2[1])*r3[0]; + CrossProduct[1] = (r1[2]*r2[0] - r1[0]*r2[2])*r3[1]; + CrossProduct[2] = (r1[0]*r2[1] - r1[1]*r2[0])*r3[2]; + + Volume = fabs(CrossProduct[0] + CrossProduct[1] + CrossProduct[2])/6.0; + + return Volume; + +} + diff --git a/Common/src/geometry/elements/CTRIA1.cpp b/Common/src/geometry/elements/CTRIA1.cpp index 7bd7fdd3f270..88ab7c3a9ba4 100644 --- a/Common/src/geometry/elements/CTRIA1.cpp +++ b/Common/src/geometry/elements/CTRIA1.cpp @@ -44,15 +44,15 @@ CTRIA1::CTRIA1() : CElementWithKnownSizes() { Xi = GaussCoord[iGauss][0]; Eta = GaussCoord[iGauss][1]; - val_Ni = Xi; GaussPoint[iGauss].SetNi(val_Ni,0); - val_Ni = Eta; GaussPoint[iGauss].SetNi(val_Ni,1); - val_Ni = 1-Xi-Eta; GaussPoint[iGauss].SetNi(val_Ni,2); + val_Ni = 1-Xi-Eta; GaussPoint[iGauss].SetNi(val_Ni,0); + val_Ni = Xi; GaussPoint[iGauss].SetNi(val_Ni,1); + val_Ni = Eta; GaussPoint[iGauss].SetNi(val_Ni,2); /*--- dN/d xi, dN/d eta ---*/ - dNiXj[iGauss][0][0] = 1.0; dNiXj[iGauss][0][1] = 0.0; - dNiXj[iGauss][1][0] = 0.0; dNiXj[iGauss][1][1] = 1.0; - dNiXj[iGauss][2][0] = -1.0; dNiXj[iGauss][2][1] = -1.0; + dNiXj[iGauss][0][0] = -1.0; dNiXj[iGauss][0][1] = -1.0; + dNiXj[iGauss][1][0] = 1.0; dNiXj[iGauss][1][1] = 0.0; + dNiXj[iGauss][2][0] = 0.0; dNiXj[iGauss][2][1] = 1.0; } diff --git a/Common/src/geometry/elements/CTRIA3.cpp b/Common/src/geometry/elements/CTRIA3.cpp new file mode 100644 index 000000000000..3106c3c8ca8b --- /dev/null +++ b/Common/src/geometry/elements/CTRIA3.cpp @@ -0,0 +1,88 @@ +/*! + * \file CTRIA3.cpp + * \brief Definition of the 3-node triangular element with three Gauss points. + * \author T. Dick + * \version 7.2.1 "Blackbird" + * + * SU2 Project Website: https://su2code.github.io + * + * The SU2 Project is maintained by the SU2 Foundation + * (http://su2foundation.org) + * + * Copyright 2012-2019, SU2 Contributors (cf. AUTHORS.md) + * + * SU2 is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * SU2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with SU2. If not, see . + */ + +#include "../../../include/geometry/elements/CElement.hpp" + +CTRIA3::CTRIA3() : CElementWithKnownSizes() { + + /*--- Gauss coordinates and weights ---*/ + + GaussCoord[0][0] = 0.66666666666666666667; GaussCoord[0][1] = 0.16666666666666666667; GaussWeight(0) = 0.33333333333333333333; + GaussCoord[1][0] = 0.16666666666666666667; GaussCoord[1][1] = 0.66666666666666666667; GaussWeight(1) = 0.33333333333333333333; + GaussCoord[2][0] = 0.16666666666666666667; GaussCoord[2][1] = 0.16666666666666666667; GaussWeight(2) = 0.33333333333333333333; + + /*--- Store the values of the shape functions and their derivatives ---*/ + + unsigned short iGauss; + su2double Xi, Eta, val_Ni; + + for (iGauss = 0; iGauss < nGaussPoints; iGauss++) { + + Xi = GaussCoord[iGauss][0]; + Eta = GaussCoord[iGauss][1]; + + val_Ni = 1-Xi-Eta; GaussPoint[iGauss].SetNi(val_Ni,0); + val_Ni = Xi; GaussPoint[iGauss].SetNi(val_Ni,1); + val_Ni = Eta; GaussPoint[iGauss].SetNi(val_Ni,2); + + /*--- dN/d xi, dN/d eta ---*/ + + dNiXj[iGauss][0][0] = -1.0; dNiXj[iGauss][0][1] = -1.0; + dNiXj[iGauss][1][0] = 1.0; dNiXj[iGauss][1][1] = 0.0; + dNiXj[iGauss][2][0] = 0.0; dNiXj[iGauss][2][1] = 1.0; + + } + + /*--- Shape functions evaluated at the nodes for extrapolation of the stresses at the Gaussian Points ---*/ + /*--- The stress is constant over a TRIA1 element ---*/ + + NodalExtrap[0][0] = 1.0; + NodalExtrap[1][0] = 1.0; + NodalExtrap[2][0] = 1.0; + +} + +su2double CTRIA3::ComputeArea(const FrameType mode) const { + + unsigned short iDim; + su2double a[3] = {0.0,0.0,0.0}, b[3] = {0.0,0.0,0.0}; + su2double Area = 0.0; + + /*--- Select the appropriate source for the nodal coordinates depending on the frame requested + for the gradient computation, REFERENCE (undeformed) or CURRENT (deformed) ---*/ + const su2activematrix& Coord = (mode==REFERENCE) ? RefCoord : CurrentCoord; + + for (iDim = 0; iDim < nDim; iDim++) { + a[iDim] = Coord[0][iDim]-Coord[2][iDim]; + b[iDim] = Coord[1][iDim]-Coord[2][iDim]; + } + + Area = 0.5*fabs(a[0]*b[1]-a[1]*b[0]); + + return Area; + +} diff --git a/Common/src/geometry/elements/meson.build b/Common/src/geometry/elements/meson.build index c9b6e151312f..b0ff7f876984 100644 --- a/Common/src/geometry/elements/meson.build +++ b/Common/src/geometry/elements/meson.build @@ -4,4 +4,8 @@ common_src += files(['CElement.cpp', 'CTETRA1.cpp', 'CPYRAM5.cpp', 'CPRISM6.cpp', - 'CHEXA8.cpp']) + 'CHEXA8.cpp', + 'CLINE.cpp', + 'CTRIA3.cpp', + 'CTETRA4.cpp', + 'CPYRAM6.cpp']) diff --git a/Common/src/grid_movement/CSurfaceMovement.cpp b/Common/src/grid_movement/CSurfaceMovement.cpp index 4615a73dd8c4..171f78184047 100644 --- a/Common/src/grid_movement/CSurfaceMovement.cpp +++ b/Common/src/grid_movement/CSurfaceMovement.cpp @@ -1118,7 +1118,7 @@ void CSurfaceMovement::CheckFFDIntersections(CGeometry *geometry, CConfig *confi if (((config->GetMarker_All_Moving(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_CFD)) || ((config->GetMarker_All_DV(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_DEF)) || ((config->GetMarker_All_DV(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_GEO)) || - ((config->GetMarker_All_DV(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_DOT)) || + ((config->GetMarker_All_DV(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_DOT || config->GetSmoothGradient())) || ((config->GetMarker_All_DV(iMarker) == YES) && (config->GetDirectDiff() == D_DESIGN))) { for (iElem = 0; iElem < geometry->GetnElem_Bound(iMarker); iElem++) { @@ -2979,7 +2979,7 @@ void CSurfaceMovement::SetCST(CGeometry *boundary, CConfig *config, unsigned sho /*--- CST computation ---*/ su2double fact_n = 1; - su2double fact_cst = 1; + su2double fact_cst = 1; su2double fact_cst_n = 1; for (int i = 1; i <= maxKulfanNum; i++) { diff --git a/Common/src/grid_movement/CVolumetricMovement.cpp b/Common/src/grid_movement/CVolumetricMovement.cpp index 02f710eb6e5f..dd51252e12b9 100644 --- a/Common/src/grid_movement/CVolumetricMovement.cpp +++ b/Common/src/grid_movement/CVolumetricMovement.cpp @@ -50,7 +50,7 @@ CVolumetricMovement::CVolumetricMovement(CGeometry *geometry, CConfig *config) : nIterMesh = 0; /*--- Initialize matrix, solution, and r.h.s. structures for the linear solver. ---*/ - if (config->GetVolumetric_Movement()){ + if (config->GetVolumetric_Movement() || config->GetSmoothGradient()){ LinSysSol.Initialize(nPoint, nPointDomain, nVar, 0.0); LinSysRes.Initialize(nPoint, nPointDomain, nVar, 0.0); StiffMatrix.Initialize(nPoint, nPointDomain, nVar, nVar, false, geometry, config); @@ -114,7 +114,7 @@ void CVolumetricMovement::UpdateMultiGrid(CGeometry **geometry, CConfig *config) } -void CVolumetricMovement::SetVolume_Deformation(CGeometry *geometry, CConfig *config, bool UpdateGeo, bool Derivative) { +void CVolumetricMovement::SetVolume_Deformation(CGeometry *geometry, CConfig *config, bool UpdateGeo, bool Derivative, bool ForwardProjectionDerivative) { unsigned long Tot_Iter = 0; su2double MinVolume, MaxVolume; @@ -127,6 +127,7 @@ void CVolumetricMovement::SetVolume_Deformation(CGeometry *geometry, CConfig *co /*--- Disable the screen output if we're running SU2_CFD ---*/ if (config->GetKind_SU2() == SU2_COMPONENT::SU2_CFD && !Derivative) Screen_Output = false; + if (config->GetSmoothGradient()) Screen_Output=true; /*--- Set the number of nonlinear iterations to 1 if Derivative computation is enabled ---*/ @@ -162,7 +163,7 @@ void CVolumetricMovement::SetVolume_Deformation(CGeometry *geometry, CConfig *co /*--- Set the boundary derivatives (overrides the actual displacements) ---*/ - if (Derivative) { SetBoundaryDerivatives(geometry, config); } + if (Derivative) { SetBoundaryDerivatives(geometry, config, ForwardProjectionDerivative); } /*--- Communicate any prescribed boundary displacements via MPI, so that all nodes have the same solution and r.h.s. entries @@ -182,11 +183,11 @@ void CVolumetricMovement::SetVolume_Deformation(CGeometry *geometry, CConfig *co /*--- If we want no derivatives or the direct derivatives, we solve the system using the * normal matrix vector product and preconditioner. For the mesh sensitivities using * the discrete adjoint method we solve the system using the transposed matrix. ---*/ - if (!Derivative || ((config->GetKind_SU2() == SU2_COMPONENT::SU2_CFD) && Derivative)) { + if (!Derivative || ((config->GetKind_SU2() == SU2_COMPONENT::SU2_CFD) && Derivative && !config->GetSmoothGradient()) || ForwardProjectionDerivative) { Tot_Iter = System.Solve(StiffMatrix, LinSysRes, LinSysSol, geometry, config); - } else if (Derivative && (config->GetKind_SU2() == SU2_COMPONENT::SU2_DOT)) { + } else if (Derivative && ((config->GetKind_SU2() == SU2_COMPONENT::SU2_DOT) || config->GetSmoothGradient())) { Tot_Iter = System.Solve_b(StiffMatrix, LinSysRes, LinSysSol, geometry, config); } @@ -196,7 +197,7 @@ void CVolumetricMovement::SetVolume_Deformation(CGeometry *geometry, CConfig *co of the linear system (usol contains the x, y, z displacements). ---*/ if (!Derivative) { UpdateGridCoord(geometry, config); } - else { UpdateGridCoord_Derivatives(geometry, config); } + else { UpdateGridCoord_Derivatives(geometry, config, ForwardProjectionDerivative); } if (UpdateGeo) { UpdateDualGrid(geometry, config); } if (!Derivative) { @@ -1602,7 +1603,7 @@ void CVolumetricMovement::SetBoundaryDisplacements(CGeometry *geometry, CConfig if (((config->GetMarker_All_Moving(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_CFD)) || ((config->GetMarker_All_DV(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_DEF)) || ((config->GetDirectDiff() == D_DESIGN) && (Kind_SU2 == SU2_COMPONENT::SU2_CFD) && (config->GetMarker_All_DV(iMarker) == YES)) || - ((config->GetMarker_All_DV(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_DOT))) { + ((config->GetMarker_All_DV(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_DOT || config->GetSmoothGradient()))) { for (iVertex = 0; iVertex < geometry->nVertex[iMarker]; iVertex++) { iPoint = geometry->vertex[iMarker][iVertex]->GetNode(); VarCoord = geometry->vertex[iMarker][iVertex]->GetVarCoord(); @@ -1692,7 +1693,7 @@ void CVolumetricMovement::SetBoundaryDisplacements(CGeometry *geometry, CConfig } -void CVolumetricMovement::SetBoundaryDerivatives(CGeometry *geometry, CConfig *config) { +void CVolumetricMovement::SetBoundaryDerivatives(CGeometry *geometry, CConfig *config, bool ForwardProjectionDerivative) { unsigned short iDim, iMarker; unsigned long iPoint, total_index, iVertex; @@ -1713,7 +1714,7 @@ void CVolumetricMovement::SetBoundaryDerivatives(CGeometry *geometry, CConfig *c } } if (LinSysRes.norm() == 0.0) cout << "Warning: Derivatives are zero!" << endl; - } else if (Kind_SU2 == SU2_COMPONENT::SU2_DOT) { + } else if (Kind_SU2 == SU2_COMPONENT::SU2_DOT || (config->GetSmoothGradient() && !ForwardProjectionDerivative) ) { for (iPoint = 0; iPoint < nPoint; iPoint++) { for (iDim = 0; iDim < nDim; iDim++) { @@ -1722,10 +1723,24 @@ void CVolumetricMovement::SetBoundaryDerivatives(CGeometry *geometry, CConfig *c LinSysSol[total_index] = SU2_TYPE::GetValue(geometry->GetSensitivity(iPoint, iDim)); } } + } else if (config->GetSmoothGradient() && ForwardProjectionDerivative) { + for (iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { + if ((config->GetMarker_All_DV(iMarker) == YES)) { + for (iVertex = 0; iVertex < geometry->nVertex[iMarker]; iVertex++) { + iPoint = geometry->vertex[iMarker][iVertex]->GetNode(); + for (iDim = 0; iDim < nDim; iDim++) { + total_index = iPoint*nDim + iDim; + LinSysRes[total_index] = SU2_TYPE::GetValue(geometry->GetSensitivity(iPoint, iDim)); + LinSysSol[total_index] = SU2_TYPE::GetValue(geometry->GetSensitivity(iPoint, iDim)); + } + } + } + } + if (LinSysRes.norm() == 0.0) cout << "Warning: Derivatives are zero!" << endl; } } -void CVolumetricMovement::UpdateGridCoord_Derivatives(CGeometry *geometry, CConfig *config) { +void CVolumetricMovement::UpdateGridCoord_Derivatives(CGeometry *geometry, CConfig *config, bool ForwardProjectionDerivative) { unsigned short iDim, iMarker; unsigned long iPoint, total_index, iVertex; su2double *new_coord = new su2double[3]; @@ -1744,7 +1759,16 @@ void CVolumetricMovement::UpdateGridCoord_Derivatives(CGeometry *geometry, CConf } geometry->nodes->SetCoord(iPoint, new_coord); } - } else if (Kind_SU2 == SU2_COMPONENT::SU2_DOT) { + } else if ((Kind_SU2 == SU2_COMPONENT::SU2_DOT) || (config->GetSmoothGradient() && !ForwardProjectionDerivative)) { + // need to reset here, since we read out the whole vector, but are only interested in boundary derivatives. + if (config->GetSmoothGradient() && !ForwardProjectionDerivative) { + for (iPoint = 0; iPoint < geometry->GetnPoint(); iPoint++) { + for (iDim = 0; iDim < nDim; iDim++) { + total_index = iPoint*nDim + iDim; + geometry->SetSensitivity(iPoint,iDim, 0.0); + } + } + } for (iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { if(config->GetSolid_Wall(iMarker) || (config->GetMarker_All_DV(iMarker) == YES)) { for (iVertex = 0; iVertex < geometry->nVertex[iMarker]; iVertex++) { @@ -1758,6 +1782,13 @@ void CVolumetricMovement::UpdateGridCoord_Derivatives(CGeometry *geometry, CConf } } } + } else if (config->GetSmoothGradient() && ForwardProjectionDerivative) { + for (iPoint = 0; iPoint < geometry->GetnPoint(); iPoint++) { + for (iDim = 0; iDim < nDim; iDim++) { + total_index = iPoint*nDim + iDim; + geometry->SetSensitivity(iPoint,iDim, LinSysSol[total_index]); + } + } } delete [] new_coord; diff --git a/Common/src/linear_algebra/CSysMatrix.cpp b/Common/src/linear_algebra/CSysMatrix.cpp index 4f0d3ca855c4..0898b43c1b6e 100644 --- a/Common/src/linear_algebra/CSysMatrix.cpp +++ b/Common/src/linear_algebra/CSysMatrix.cpp @@ -87,7 +87,7 @@ template void CSysMatrix::Initialize(unsigned long npoint, unsigned long npointdomain, unsigned short nvar, unsigned short neqn, bool EdgeConnect, CGeometry *geometry, - const CConfig *config, bool needTranspPtr) { + const CConfig *config, bool needTranspPtr, bool grad_mode) { assert(omp_get_thread_num()==0 && "Only the master thread is allowed to initialize the matrix."); @@ -111,11 +111,16 @@ void CSysMatrix::Initialize(unsigned long npoint, unsigned long npoi (config->GetKind_SU2() == SU2_COMPONENT::SU2_DEF) || (config->GetKind_SU2() == SU2_COMPONENT::SU2_DOT)) { /*--- FEM-type connectivity in non-structural context implies mesh deformation. ---*/ prec = config->GetKind_Deform_Linear_Solver_Prec(); - } - else if (config->GetDiscrete_Adjoint() && (prec!=ILU)) { + } else if (config->GetDiscrete_Adjoint() && (prec!=ILU)) { /*--- Else "upgrade" primal solver settings. ---*/ prec = config->GetKind_DiscAdj_Linear_Prec(); } + + /*--- No else, but separat if case! ---*/ + if (config->GetSmoothGradient() && grad_mode) { + prec = config->GetKind_Grad_Linear_Solver_Prec(); + } + const bool ilu_needed = (prec==ILU); const bool diag_needed = ilu_needed || (prec==JACOBI) || (prec==LINELET); diff --git a/Common/src/linear_algebra/CSysSolve.cpp b/Common/src/linear_algebra/CSysSolve.cpp index ca321d519479..b7f42fd37127 100644 --- a/Common/src/linear_algebra/CSysSolve.cpp +++ b/Common/src/linear_algebra/CSysSolve.cpp @@ -49,9 +49,10 @@ namespace { } template -CSysSolve::CSysSolve(const bool mesh_deform_mode) : +CSysSolve::CSysSolve(const bool mesh_deform_mode, const bool gradient_smooth_mode) : eps(linSolEpsilon()), mesh_deform(mesh_deform_mode), + gradient_mode(gradient_smooth_mode), cg_ready(false), bcg_ready(false), smooth_ready(false), @@ -830,20 +831,9 @@ unsigned long CSysSolve::Solve(CSysMatrix & Jacobian, co ScalarType SolverTol; bool ScreenOutput; - /*--- Normal mode ---*/ - - if(!mesh_deform) { - - KindSolver = config->GetKind_Linear_Solver(); - KindPrecond = config->GetKind_Linear_Solver_Prec(); - MaxIter = config->GetLinear_Solver_Iter(); - SolverTol = SU2_TYPE::GetValue(config->GetLinear_Solver_Error()); - ScreenOutput = false; - } - /*--- Mesh Deformation mode ---*/ - else { + if(mesh_deform) { KindSolver = config->GetKind_Deform_Linear_Solver(); KindPrecond = config->GetKind_Deform_Linear_Solver_Prec(); @@ -852,8 +842,29 @@ unsigned long CSysSolve::Solve(CSysMatrix & Jacobian, co ScreenOutput = config->GetDeform_Output(); } - /*--- Stop the recording for the linear solver ---*/ + /*--- gradient smoothing mode ---*/ + + else if (gradient_mode) { + KindSolver = config->GetKind_Grad_Linear_Solver(); + KindPrecond = config->GetKind_Grad_Linear_Solver_Prec(); + MaxIter = config->GetGrad_Linear_Solver_Iter(); + SolverTol = SU2_TYPE::GetValue(config->GetGrad_Linear_Solver_Error()); + ScreenOutput = true; + } + + /*--- Normal mode ---*/ + + else { + + KindSolver = config->GetKind_Linear_Solver(); + KindPrecond = config->GetKind_Linear_Solver_Prec(); + MaxIter = config->GetLinear_Solver_Iter(); + SolverTol = SU2_TYPE::GetValue(config->GetLinear_Solver_Error()); + ScreenOutput = false; + } + + /*--- Stop the recording for the linear solver ---*/ bool TapeActive = NO; if (config->GetDiscrete_Adjoint()) { @@ -934,6 +945,7 @@ unsigned long CSysSolve::Solve(CSysMatrix & Jacobian, co const bool RequiresTranspose = !mesh_deform || (config->GetKind_SU2() == SU2_COMPONENT::SU2_DOT); if (!mesh_deform) KindPrecond = config->GetKind_DiscAdj_Linear_Prec(); + else if (gradient_mode) KindPrecond = config->GetKind_Grad_Linear_Solver_Prec(); else KindPrecond = config->GetKind_Deform_Linear_Solver_Prec(); /*--- Build preconditioner for the transposed Jacobian ---*/ @@ -1032,6 +1044,9 @@ unsigned long CSysSolve::Solve_b(CSysMatrix & Jacobian, precond->Build(); } + /*--- The gradient treatment needs to build the preconditioner here. ---*/ + if (config->GetSmoothGradient()) precond->Build(); + auto mat_vec = CSysMatrixVectorProduct(Jacobian, geometry, config); /*--- Solve the system ---*/ diff --git a/SU2_CFD/include/drivers/CDiscAdjSinglezoneDriver.hpp b/SU2_CFD/include/drivers/CDiscAdjSinglezoneDriver.hpp index 20a1c0acc270..39e9594641fc 100644 --- a/SU2_CFD/include/drivers/CDiscAdjSinglezoneDriver.hpp +++ b/SU2_CFD/include/drivers/CDiscAdjSinglezoneDriver.hpp @@ -122,6 +122,11 @@ class CDiscAdjSinglezoneDriver : public CSinglezoneDriver { */ void SecondaryRecording(void); + /*! + * \brief Postprocess the calculated derivatives with gradient smoothing + */ + void DerivativeTreatment(void); + /*! * \brief gets Convergence on physical time scale, (deactivated in adjoint case) * \return false diff --git a/SU2_CFD/include/numerics/CGradSmoothing.hpp b/SU2_CFD/include/numerics/CGradSmoothing.hpp new file mode 100644 index 000000000000..009d97a1943e --- /dev/null +++ b/SU2_CFD/include/numerics/CGradSmoothing.hpp @@ -0,0 +1,72 @@ +/*! + * \file CGradSmoothing.hpp + * \brief Declarations and inlines of the numerics class for gradient smoothing. + * \author T.Dick + * \version 7.2.1 "Blackbird" + * + * SU2 Project Website: https://su2code.github.io + * + * The SU2 Project is maintained by the SU2 Foundation + * (http://su2foundation.org) + * + * Copyright 2012-2019, SU2 Contributors (cf. AUTHORS.md) + * + * SU2 is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * SU2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with SU2. If not, see . + */ + +#pragma once + +#include "CNumerics.hpp" +#include "../../../Common/include/geometry/elements/CElement.hpp" + +/*! + * \class CGradSmoothing + * \brief Class for computing the stiffness matrix of the sobolev problem + * \ingroup Grad_Smooth + * \author T. Dick + */ +class CGradSmoothing : public CNumerics { + + su2double **val_DHiDHj; + su2double *Ni_Vec; + su2activematrix Coord; + +public: + + /*! + * \brief Constructor of the class. + */ + CGradSmoothing(void); + + /*! + * \brief Constructor of the class (overload). + * \param[in] val_nDim - Number of dimensions of the problem. + * \param[in] val_nVar - Number of variables of the problem. + * \param[in] config - Definition of the particular problem. + */ + CGradSmoothing(unsigned short val_nDim, CConfig *config); + + /*! + * \brief Destructor of the class. + */ + ~CGradSmoothing(void); + + void Compute_Tangent_Matrix(CElement *element_container, const CConfig *config); + + /*! + * \brief set coordinates to a given vector + */ + void SetCoord(su2activematrix &val_coord); + +}; diff --git a/SU2_CFD/include/numerics/CNumerics.hpp b/SU2_CFD/include/numerics/CNumerics.hpp index 52e2e60e63a3..e561584428ea 100644 --- a/SU2_CFD/include/numerics/CNumerics.hpp +++ b/SU2_CFD/include/numerics/CNumerics.hpp @@ -36,6 +36,8 @@ #include "../../../Common/include/CConfig.hpp" #include "../../../Common/include/linear_algebra/blas_structure.hpp" +#include "../../../Common/include/containers/C2DContainer.hpp" + class CElement; class CFluidModel; @@ -832,6 +834,12 @@ class CNumerics { Coord_j = val_coord_j; } + /*! + * \brief A virtual member + * \param[in] val_coord - vector of coordinates. + */ + virtual void SetCoord(su2activematrix& val_coord) {} + /*! * \brief Set the velocity of the computational grid. * \param[in] val_gridvel_i - Grid velocity of the point i. diff --git a/SU2_CFD/include/solvers/CDiscAdjSolver.hpp b/SU2_CFD/include/solvers/CDiscAdjSolver.hpp index b5c023ddf679..0b78caa4f42f 100644 --- a/SU2_CFD/include/solvers/CDiscAdjSolver.hpp +++ b/SU2_CFD/include/solvers/CDiscAdjSolver.hpp @@ -36,8 +36,8 @@ * \ingroup Discrete_Adjoint * \author T. Albring */ -class CDiscAdjSolver final : public CSolver { -private: +class CDiscAdjSolver : public CSolver { +protected: static constexpr size_t MAXNDIM = 3; /*!< \brief Max number of space dimensions, used in some static arrays. */ static constexpr size_t MAXNVAR = 32; /*!< \brief Max number of variables, for static arrays. */ diff --git a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp new file mode 100644 index 000000000000..d758cd426f93 --- /dev/null +++ b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp @@ -0,0 +1,387 @@ +/*! + * \file CGradientSmoothingSolver.hpp + * \brief SOlver class for Sobolev smoothing of sensitivities. + * \author T. Dick + * \version 7.2.1 "Blackbird" + * + * SU2 Project Website: https://su2code.github.io + * + * The SU2 Project is maintained by the SU2 Foundation + * (http://su2foundation.org) + * + * Copyright 2012-2020, SU2 Contributors (cf. AUTHORS.md) + * + * SU2 is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * SU2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with SU2. If not, see . + */ + +#pragma once + +#include "CSolver.hpp" +#include "../../../Common/include/geometry/elements/CElement.hpp" +#include "../../../Common/include/linear_algebra/CMatrixVectorProduct.hpp" + +/** minimal include of Eigen for linear system */ +#include +#include + +using MatrixType = Eigen::Matrix; +using VectorType = Eigen::Matrix; +using QRdecomposition = Eigen::ColPivHouseholderQR; +// define the output format you want, you only need one instance of this... +const static Eigen::IOFormat CSVFormat(15, 0, ", ", "\n"); + +/** Introduction of a new data type to allow compilation with forward mode. + * + * This is done for compatibility to the treatment of Jacobian and System in CSolver.hpp. + * Note that the compuations done dere are always 'passive', i.e. not intended to be differentiated. We only need to define functions depending on this once. + * Move to Common/include/basic_types later if possible. + */ +#ifndef CODI_FORWARD_TYPE + using su2matvecscalar = su2mixedfloat; +#else + using su2matvecscalar = su2double; +#endif + +/*! \class CGradientSmoothingSolver + * \brief Main class for defining a gradient smoothing. + * \author T. Dick. + * \date March 25, 2019. + */ +class CGradientSmoothingSolver : public CSolver { +public: + enum : size_t {MAXNNODE_2D = 4}; + enum : size_t {MAXNNODE_3D = 8}; + enum : size_t {MAXNDIM = 3}; + + unsigned long nElement; + + CElement*** element_container = nullptr; /*!< \brief Container which stores the element information. */ + + su2double **Jacobian_block = nullptr; /*!< \brief Submatrix to assemble the Jacobian matrix. */ + su2double **mId_Aux = nullptr; /*!< \brief Diagonal identity matrix to set blocks in the Jacobian. */ + + unsigned int dir; /*!< \brief If we separate dimensions this tells us in what dimension we currently are. */ + + CSysVector auxVec; /*!< \brief Auxiliar vectors for output and debugging */ + + CSysVector activeCoord; /*!< \brief Auxiliar vector to keep the indeces of geometry->vertex->Coord */ + + CSysVector helperVecIn; /*!< \brief Helper vectors for projection and matrix vector product (must be su2mixedfloat) */ + CSysVector helperVecOut; /*!< \brief Helper vectors for projection and matrix vector product (must be su2mixedfloat) */ + CSysVector helperVecAux; /*!< \brief Helper vectors for matrix vector product if working on surface (smaller dim) */ + + CVariable* nodes = nullptr; /*!< \brief The highest level in the variable hierarchy this solver can safely use. */ + + std::vector deltaP; /*!< \brief The smoothed gradient with respect to the design variables. */ + + MatrixType hessian; /*!< \brief The approximated Hessian with respect to the design variables. */ + + /*--- Extra vertices for row/column elimination, see Set_VertexEliminationSchedule. ---*/ + vector ExtraVerticesToEliminate; + + /*! + * \brief Return nodes to allow CSolver::base_nodes to be set. + */ + inline CVariable* GetBaseClassPointerToNodes() override { return nodes; } + + /*! + * \brief Constructor of the class. + */ + CGradientSmoothingSolver(CGeometry *geometry, + CConfig *config); + + /*! + * \brief Destructor of the class. + */ + ~CGradientSmoothingSolver(void); + + /*! + * \brief Main routine for applying the solver on the volume sensitivities + */ + void ApplyGradientSmoothingVolume(CGeometry *geometry, + CSolver *solver, + CNumerics **numerics, + CConfig *config) override; + + /*! + * \brief Main routine to apply the method only on the surface for mesh sensitivities + * Projects and smoothes only in the normal direction! + */ + void ApplyGradientSmoothingSurface(CGeometry *geometry, + CSolver *solver, + CNumerics **numerics, + CConfig *config, + unsigned long val_marker) override; + + /*! + * \brief All steps required for smoothing the whole system on DV level in an iterative way + */ + void ApplyGradientSmoothingDV(CGeometry *geometry, + CSolver *solver, + CNumerics **numerics, + CSurfaceMovement *surface_movement, + CVolumetricMovement *grid_movement, + CConfig *config, + vector additionalGrad) override; + + + /*! + * \brief Assemble the stiffness matrix + */ + void Compute_StiffMatrix(CGeometry *geometry, + CNumerics **numerics, + CConfig *config); + + /*! + * \brief Compute the stiffness matrix of the surface mesh + */ + void Compute_Surface_StiffMatrix(CGeometry *geometry, + CNumerics **numerics, + CConfig *config, + unsigned long val_marker, + unsigned int nSurfDim=1); + + /*! + * \brief Calculate the RHS of the PDE + */ + void Compute_Residual(CGeometry *geometry, + CSolver *solver, + CConfig *config); + + /*! + * \brief Compute the RHS of the PDE on the surface mesh + */ + void Compute_Surface_Residual(CGeometry *geometry, + CSolver *solver, + CConfig *config, + unsigned long val_marker); + + /*! + * \brief Set the boundary conditions + */ + void Impose_BC(CGeometry *geometry, + CNumerics **numerics, + CConfig *config); + + /*! + * \brief Set Dirichlet boundary conditions + */ + void BC_Dirichlet(CGeometry *geometry, + CSolver **solver_container, + CNumerics **numerics, + CConfig *config, + unsigned int val_marker); + + /*! + * \brief Set Dirichlet boundary conditions for the surface solver + */ + void BC_Surface_Dirichlet(CGeometry *geometry, + CConfig *config, + unsigned int val_marker); + + /*! + * \brief Call the linear systems solver + */ + void Solve_Linear_System(CGeometry *geometry, + CConfig *config); + + /*! + * \brief Get the matrix vector product with the StiffnessMatrix + * \note This always applies the stiffness matrix for all dimensions independent of each other! + */ + CSysMatrixVectorProduct GetStiffnessMatrixVectorProduct(CGeometry *geometry, + CNumerics **numerics, + CConfig *config); + + /*! + * \brief calculate the original DV gradient similar to SU2_DOT_AD + */ + void CalculateOriginalGradient(CGeometry *geometry, + CVolumetricMovement* grid_movement, + CConfig *config); + + /*! + * \brief Return the original gradient for application in OneShot. + */ + void RecordTapeAndCalculateOriginalGradient(CGeometry *geometry, + CSurfaceMovement *surface_movement, + CVolumetricMovement *grid_movement, + CConfig *config) override; + + /*! + * \brief Return current parameter gradient. + */ + inline vector GetDeltaP() override { return deltaP; } + + /*! + * \brief Return a handle for the Hessian. + */ + void GetHessianMatrix() override {} + + /*! + * \brief write the DV gradient into a file + */ + void OutputDVGradient(string out_file="delta_p.txt"); + + /*! + * \brief Record a tape containing the parameter Jacobian. + * \param geometry + * \param config + * \param surface_movement + */ + void RecordParameterizationJacobian(CGeometry *geometry, + CSurfaceMovement *surface_movement, + CSysVector ®isteredCoord, + CConfig *config); + + /*! + * \brief Forward evaluate parameterization Jacobian. + * \param geometry + * \param config + * \param surface_movement + */ + void ProjectDVtoMesh(CGeometry *geometry, + std::vector& seeding, + CSysVector& result, + CSysVector& registeredCoord, + CConfig *config); + + /*! + * \brief Reverse evaluate parameterization Jacobian. + * \param geometry + * \param config + * \param surface_movement + */ + void ProjectMeshToDV(CGeometry *geometry, + CSysVector& sensitivity, + std::vector& output, + CSysVector ®isteredCoord, + CConfig *config); + + /*! + * \brief Extract and set the sensitivity from the discrete adjoint solver. + * \param[in] geometry - Geometrical definition of the problem. + * \param[in] solver - The solver container holding all terms of the solution. + * \param[in] config - Definition of the particular problem. + */ + void SetSensitivity(CGeometry *geometry, + CConfig *config, + CSolver *solver) override; + + /*! + * \brief Store smoothed sensitivties back into the adjoint solver. + * \param[in] geometry - Geometrical definition of the problem. + * \param[in] solver - The solver container holding all terms of the solution. + * \param[in] config - Definition of the particular problem. + */ + void OutputSensitivity(CGeometry *geometry, + CConfig *config, + CSolver *solver) override; + + /*! + * \brief Write the solution of the linear solver into the sensitivities of the nodes + */ + void WriteSensitivity(CGeometry *geometry, + CSolver *solver, + CConfig *config, + unsigned long val_marker=0); + + /*! + * \brief Write the content of sensitivity in the nodes to the sensitivity in the geometry + * \param[in] geometry - Geometrical definition of the problem. + * \param[in] config - Definition of the particular problem. + */ + void WriteSens2Geometry(CGeometry *geometry, + CConfig *config); + + /*! + * \brief Read the sensitivity for the geometry into the nodes + * \param[in] geometry - Geometrical definition of the problem. + * \param[in] config - Definition of the particular problem. + */ + void ReadSens2Geometry(CGeometry *geometry, + CConfig *config); + + /*! + * \brief Copy sensitivities from a vector into the geometry + */ + void WriteVector2Geometry(CGeometry *geometry, + CConfig *config, + CSysVector &vector); + + /*! + * \brief Copy sensitivities from the geometry into a vector + */ + void ReadVector2Geometry(CGeometry *geometry, + CConfig *config, + CSysVector &vector); + + /*! + * \brief Get the value of the reference coordinate to set on the element structure. + * \param[in] geometry - Geometrical definition of the problem. + * \param[in] indexNode - Index of the node. + * \param[in] iDim - Dimension required. + */ + inline su2double Get_ValCoord(CGeometry *geometry, + unsigned long indexNode, + unsigned int iDim) { + return geometry->nodes->GetCoord(indexNode, iDim); + } + + /*! + * \brief Extract the Coordinates of the element from geometry + */ + su2activematrix GetElementCoordinates(CGeometry *geometry, + std::vector& indexNode, + int EL_KIND = 0); + + /*! + * \brief Extra entries to eliminate in the linear system + */ + void Set_VertexEliminationSchedule(CGeometry *geometry, + CConfig *config); + + /*! + * \brief Get the element container index and number of nodes of a given VTK type. + * \param[in] VTK_Type - Type of element. + * \param[out] EL_KIND - Element container index. + * \param[out] nNodes - Number of nodes. + */ + static void GetElemKindAndNumNodes(unsigned short VTK_Type, bool second, int& EL_KIND, unsigned int& nNodes) { + /*--- if we need higher order quadrature rules overide some of the element kinds ---*/ + if (second) { + switch (VTK_Type) { + case LINE: nNodes = 2; EL_KIND = EL_LINE; break; + case TRIANGLE: nNodes = 3; EL_KIND = EL_TRIA2; break; + case QUADRILATERAL: nNodes = 4; EL_KIND = EL_QUAD; break; + case TETRAHEDRON: nNodes = 4; EL_KIND = EL_TETRA2; break; + case PYRAMID: nNodes = 5; EL_KIND = EL_PYRAM2; break; + case PRISM: nNodes = 6; EL_KIND = EL_PRISM; break; + case HEXAHEDRON: nNodes = 8; EL_KIND = EL_HEXA; break; + } + } else { + switch (VTK_Type) { + case LINE: nNodes = 2; EL_KIND = EL_LINE; break; + case TRIANGLE: nNodes = 3; EL_KIND = EL_TRIA; break; + case QUADRILATERAL: nNodes = 4; EL_KIND = EL_QUAD; break; + case TETRAHEDRON: nNodes = 4; EL_KIND = EL_TETRA; break; + case PYRAMID: nNodes = 5; EL_KIND = EL_PYRAM; break; + case PRISM: nNodes = 6; EL_KIND = EL_PRISM; break; + case HEXAHEDRON: nNodes = 8; EL_KIND = EL_HEXA; break; + default: assert(false); nNodes = 0; EL_KIND = -(1<<30); break; + } + } + } + +}; diff --git a/SU2_CFD/include/solvers/CSolver.hpp b/SU2_CFD/include/solvers/CSolver.hpp index 3659905c2abf..c531aca8c119 100644 --- a/SU2_CFD/include/solvers/CSolver.hpp +++ b/SU2_CFD/include/solvers/CSolver.hpp @@ -210,7 +210,7 @@ class CSolver { /*! * \brief Constructor of the class. */ - CSolver(bool mesh_deform_mode = false); + CSolver(bool mesh_deform_mode = false, bool gradient_smooth_mode = false); /*! * \brief Destructor of the class. @@ -4209,6 +4209,73 @@ class CSolver { CNumerics **numerics, CConfig *config) { } + /*! + * \brief A virtual member. + * \param[in] geometry - Geometrical definition. + * \param[in] solver - the discrete adjoint flow solver corresponding to the problem. + * \param[in] numerics - the numerics for this problem. + * \param[in] config - Definition of the particular problem. + */ + virtual void ApplyGradientSmoothingVolume(CGeometry *geometry, + CSolver *solver, + CNumerics **numerics, + CConfig *config) { } + + /*! + * \brief A virtual member. + * \param[in] geometry - Geometrical definition. + * \param[in] solver - the discrete adjoint flow solver corresponding to the problem. + * \param[in] numerics - the numerics for this problem. + * \param[in] config - Definition of the particular problem. + * + */ + virtual void ApplyGradientSmoothingSurface(CGeometry *geometry, + CSolver *solver, + CNumerics **numerics, + CConfig *config, + unsigned long val_marker) { } + + /*! + * \brief All steps required for smoothing the whole system on DV level in an iterative way + */ + virtual void ApplyGradientSmoothingDV(CGeometry *geometry, + CSolver *solver, + CNumerics **numerics, + CSurfaceMovement *surface_movement, + CVolumetricMovement *grid_movement, + CConfig *config, + vector additionalGrad={}) { } + + /*! + * \brief A virtual member. + * \param[in] geometry - Geometrical definition. + * \param[in] config - Definition of the particular problem. + */ + virtual void RecordTapeAndCalculateOriginalGradient(CGeometry *geometry, + CSurfaceMovement *surface_movement, + CVolumetricMovement *grid_movement, + CConfig *config) { } + + /*! + * \brief A virtual member. + * \param[in] geometry - Geometrical definition of the problem. + * \param[in] solver - The solver container holding all terms of the solution. + * \param[in] config - Definition of the particular problem. + */ + virtual void OutputSensitivity(CGeometry *geometry, + CConfig *config, + CSolver *solver) { } + + /*! + * \brief A virtual member. + */ + inline virtual vector GetDeltaP() { return vector(); } + + /*! + * \brief A virtual member. + */ + virtual void GetHessianMatrix() {} + /*! * \brief Routine that sets the flag controlling implicit treatment for periodic BCs. * \param[in] val_implicit_periodic - Flag controlling implicit treatment for periodic BCs. diff --git a/SU2_CFD/include/solvers/CSolverFactory.hpp b/SU2_CFD/include/solvers/CSolverFactory.hpp index 53d91a2c0cd4..e622ce4d83ef 100644 --- a/SU2_CFD/include/solvers/CSolverFactory.hpp +++ b/SU2_CFD/include/solvers/CSolverFactory.hpp @@ -61,6 +61,7 @@ enum class SUB_SOLVER_TYPE { MESH, /*!< \brief Mesh solver */ RADIATION, /*!< \brief Radiation solver */ DISC_ADJ_RADIATION, /*!< \brief Discrete adjoint radiation solver */ + GRAD_SMOOTH, /*!< \brief Gradient Smoothing solver for discrete adjoints. */ NONE }; diff --git a/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp b/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp new file mode 100644 index 000000000000..beda1802cafc --- /dev/null +++ b/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp @@ -0,0 +1,92 @@ +/*! + * \file CSobolevSmoothingVariable.hpp + * \brief Class for defining the variables of the gradient smoothing. + * \author T.Dick + * \version 7.2.1 "Blackbird" + * + * The current SU2 release has been coordinated by the + * SU2 International Developers Society + * with selected contributions from the open-source community. + * + * The main research teams contributing to the current release are: + * - Prof. Juan J. Alonso's group at Stanford University. + * - Prof. Piero Colonna's group at Delft University of Technology. + * - Prof. Nicolas R. Gauger's group at Kaiserslautern University of Technology. + * - Prof. Alberto Guardone's group at Polytechnic University of Milan. + * - Prof. Rafael Palacios' group at Imperial College London. + * - Prof. Vincent Terrapon's group at the University of Liege. + * - Prof. Edwin van der Weide's group at the University of Twente. + * - Lab. of New Concepts in Aeronautics at Tech. Institute of Aeronautics. + * + * Copyright 2012-2019, Francisco D. Palacios, Thomas D. Economon, + * Tim Albring, and the SU2 contributors. + * + * SU2 is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * SU2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with SU2. If not, see . + */ + +#pragma once + +#include "CVariable.hpp" + +class CSobolevSmoothingVariable : public CVariable { +public: + + MatrixType Sensitivity; /*!< Vector holding the derivative of target functional with respect to the coordinates at this node */ + + bool* boundary_vertex; /*!< \brief Stores if a point belongs to the boundary of a boundary. */ + unsigned long nBoundPoints; + + /*! + * \brief Constructor of the class. + * \param[in] npoint - Number of points/nodes/vertices in the domain. + * \param[in] ndim - Number of dimensions of the problem. + * \param[in] config - Definition of the particular problem. + */ + CSobolevSmoothingVariable(unsigned long npoint, unsigned long ndim, CConfig *config); + + /*! + * \brief Destructor of the class. + */ + ~CSobolevSmoothingVariable(); + + /*! + * \brief Set the sensitivity at the node + * \param[in] iDim - spacial component + * \param[in] val - value of the Sensitivity + */ + inline void SetSensitivity(unsigned long iPoint, unsigned long iDim, su2double val) override { Sensitivity(iPoint,iDim) = val;} + + /*! + * \brief Get the Sensitivity at the node + * \param[in] iDim - spacial component + * \return value of the Sensitivity + */ + inline su2double GetSensitivity(unsigned long iPoint, unsigned long iDim) const override { return Sensitivity(iPoint,iDim); } + + /*! + * \brief Mark a point as boundary of a boundary + */ + void MarkAsBoundaryPoint(unsigned long iPoint); + + /*! + * \brief return wether a point is a boundary of a boundary + */ + bool IsBoundaryPoint(unsigned long iPoint); + + /*! + * \brief return the number of marked points + */ + unsigned int GetNBoundPoints(); + +}; diff --git a/SU2_CFD/include/variables/CVariable.hpp b/SU2_CFD/include/variables/CVariable.hpp index e2a003710bb8..8390273ee897 100644 --- a/SU2_CFD/include/variables/CVariable.hpp +++ b/SU2_CFD/include/variables/CVariable.hpp @@ -2241,4 +2241,14 @@ class CVariable { virtual su2double GetSourceTerm_DispAdjoint(unsigned long iPoint, unsigned long iDim) const { return 0.0; } virtual su2double GetSourceTerm_VelAdjoint(unsigned long iPoint, unsigned long iDim) const { return 0.0; } + /*! + * \brief Mark a point as boundary of a boundary + */ + virtual void MarkAsBoundaryPoint(unsigned long iPoint) {} + + /*! + * \brief return wether a point is a boundary of a boundary + */ + virtual bool IsBoundaryPoint(unsigned long iPoint) { return false;} + }; diff --git a/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp b/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp index 8b728823734b..435f7cca9b56 100644 --- a/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp +++ b/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp @@ -500,4 +500,57 @@ void CDiscAdjSinglezoneDriver::SecondaryRecording(){ AD::ClearAdjoints(); + /*--- If necessary smooth the calculated geometry sensitivities ---*/ + + if (config->GetSmoothGradient()) { + DerivativeTreatment(); + } + +} + +/*--- Main routine to call the Sobolev smoothing solver and postprocess the derivatives. ---*/ + +void CDiscAdjSinglezoneDriver::DerivativeTreatment() { + + if (rank == MASTER_NODE) cout << "Sobolev Smoothing of derivatives is active." << endl; + + /*--- Get the sensitivities from the adjoint solver to work with. ---*/ + solver[GRADIENT_SMOOTHING]->SetSensitivity(geometry,config,solver[MainSolver]); + + /*--- Apply the smoothing procedure on the mesh level. ---*/ + if (config->GetSobMode()==MESH_LEVEL || config->GetSobMode()==DEBUG ) { + + if (rank == MASTER_NODE) cout << " working on mesh level (including debug mode)" << endl; + + if (config->GetSmoothOnSurface()) { + + unsigned long dvMarker = 1000; + for (unsigned short iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { + if ( config->GetMarker_All_DV(iMarker) == YES ) { + dvMarker = iMarker; + } + } + solver[GRADIENT_SMOOTHING]->ApplyGradientSmoothingSurface(geometry, solver[MainSolver], numerics[GRADIENT_SMOOTHING], config, dvMarker); + + } else { + solver[GRADIENT_SMOOTHING]->ApplyGradientSmoothingVolume(geometry, solver[MainSolver], numerics[GRADIENT_SMOOTHING], config); + } + + /*--- After appling the solver write the results back ---*/ + solver[GRADIENT_SMOOTHING]->OutputSensitivity(geometry,config,solver[ADJFLOW_SOL]); + + /*--- Apply the smoothing procedure on the DV level. ---*/ + } else if (config->GetSobMode()==PARAM_LEVEL_COMPLETE) { + + solver[GRADIENT_SMOOTHING]->ApplyGradientSmoothingDV(geometry, solver[MainSolver], numerics[GRADIENT_SMOOTHING], surface_movement[ZONE_0], grid_movement[ZONE_0][INST_0], config); + + /*--- in some OneShot applications we might only need the original gradient. ---*/ + } else if (config->GetSobMode()==ONLY_GRAD) { + solver[GRADIENT_SMOOTHING]->RecordTapeAndCalculateOriginalGradient(geometry, surface_movement[ZONE_0], grid_movement[ZONE_0][INST_0], config); + + /*--- warning if choose mode is unsupported. ---*/ + } else { + if (rank == MASTER_NODE) cout << "Unsupported operation modus for the Sobolev Smoothing Solver." << endl; + } + } diff --git a/SU2_CFD/src/drivers/CDriver.cpp b/SU2_CFD/src/drivers/CDriver.cpp index 3eb9d78a69e1..d663dfc8980b 100644 --- a/SU2_CFD/src/drivers/CDriver.cpp +++ b/SU2_CFD/src/drivers/CDriver.cpp @@ -89,6 +89,7 @@ #include "../../include/numerics/elasticity/CFEALinearElasticity.hpp" #include "../../include/numerics/elasticity/CFEANonlinearElasticity.hpp" #include "../../include/numerics/elasticity/nonlinear_models.hpp" +#include "../../include/numerics/CGradSmoothing.hpp" #include "../../include/integration/CIntegrationFactory.hpp" @@ -231,6 +232,13 @@ CDriver::CDriver(char* confFile, unsigned short val_nZone, SU2_Comm MPICommunica } + /*--- For gradient smoothing we need to calculate the projections between volume, surface and design parameters ---*/ + if ( config_container[ZONE_0]->GetSmoothGradient() ) { + grid_movement[ZONE_0][INST_0] = new CVolumetricMovement(geometry_container[ZONE_0][INST_0][MESH_0], config_container[ZONE_0]); + surface_movement[ZONE_0] = new CSurfaceMovement(); + surface_movement[ZONE_0]->CopyBoundary(geometry_container[ZONE_0][INST_0][MESH_0], config_container[ZONE_0]); + } + /*! --- Compute the wall distance again to correctly compute the derivatives if we are running direct diff mode --- */ if (driver_config->GetDirectDiff() == D_DESIGN){ CGeometry::ComputeWallDistance(config_container, geometry_container); @@ -2247,6 +2255,15 @@ void CDriver::Numerics_Preprocessing(CConfig *config, CGeometry **geometry, CSol } // end "per-thread" allocation loop + /*--- If we want to apply the gradient smoothing we must initialize the numerics here ---*/ + if(config->GetSmoothGradient()) { + if (config->GetSmoothOnSurface()) { + numerics[MESH_0][GRADIENT_SMOOTHING][GRAD_TERM] = new CGradSmoothing(nDim-1, config); + } else { + numerics[MESH_0][GRADIENT_SMOOTHING][GRAD_TERM] = new CGradSmoothing(nDim, config); + } + } + } void CDriver::Numerics_Postprocessing(CNumerics *****numerics, CSolver***, CGeometry**, diff --git a/SU2_CFD/src/meson.build b/SU2_CFD/src/meson.build index ba1ce1e9e9dd..40df04c8f21a 100644 --- a/SU2_CFD/src/meson.build +++ b/SU2_CFD/src/meson.build @@ -77,7 +77,8 @@ su2_cfd_src += files(['variables/CIncNSVariable.cpp', 'variables/CIncEulerVariable.cpp', 'variables/CEulerVariable.cpp', 'variables/CNEMOEulerVariable.cpp', - 'variables/CNEMONSVariable.cpp']) + 'variables/CNEMONSVariable.cpp', + 'variables/CSobolevSmoothingVariable.cpp']) su2_cfd_src += files(['solvers/CSolverFactory.cpp', 'solvers/CAdjEulerSolver.cpp', @@ -106,7 +107,8 @@ su2_cfd_src += files(['solvers/CSolverFactory.cpp', 'solvers/CTransLMSolver.cpp', 'solvers/CTurbSolver.cpp', 'solvers/CTurbSASolver.cpp', - 'solvers/CTurbSSTSolver.cpp']) + 'solvers/CTurbSSTSolver.cpp', + 'solvers/CGradientSmoothingSolver.cpp']) su2_cfd_src += files(['numerics/CNumerics.cpp', 'numerics/template.cpp', @@ -139,7 +141,8 @@ su2_cfd_src += files(['numerics/CNumerics.cpp', 'numerics/elasticity/CFEAElasticity.cpp', 'numerics/elasticity/CFEALinearElasticity.cpp', 'numerics/elasticity/CFEANonlinearElasticity.cpp', - 'numerics/elasticity/nonlinear_models.cpp']) + 'numerics/elasticity/nonlinear_models.cpp', + 'numerics/CGradSmoothing.cpp']) su2_cfd_src += files(['../include/numerics_simd/CNumericsSIMD.cpp']) diff --git a/SU2_CFD/src/numerics/CGradSmoothing.cpp b/SU2_CFD/src/numerics/CGradSmoothing.cpp new file mode 100644 index 000000000000..dec380d46f0f --- /dev/null +++ b/SU2_CFD/src/numerics/CGradSmoothing.cpp @@ -0,0 +1,164 @@ +/*! + * \file CGradSmoothing.cpp + * \brief Numerics for gradient smoothing problems. + * \author T.Dick + * \version 7.2.1 "Blackbird" + * + * The current SU2 release has been coordinated by the + * SU2 International Developers Society + * with selected contributions from the open-source community. + * + * The main research teams contributing to the current release are: + * - Prof. Juan J. Alonso's group at Stanford University. + * - Prof. Piero Colonna's group at Delft University of Technology. + * - Prof. Nicolas R. Gauger's group at Kaiserslautern University of Technology. + * - Prof. Alberto Guardone's group at Polytechnic University of Milan. + * - Prof. Rafael Palacios' group at Imperial College London. + * - Prof. Vincent Terrapon's group at the University of Liege. + * - Prof. Edwin van der Weide's group at the University of Twente. + * - Lab. of New Concepts in Aeronautics at Tech. Institute of Aeronautics. + * + * Copyright 2012-2019, Francisco D. Palacios, Thomas D. Economon, + * Tim Albring, and the SU2 contributors. + * + * SU2 is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * SU2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with SU2. If not, see . + */ + +#include "../../include/numerics/CGradSmoothing.hpp" + +#include + +CGradSmoothing::CGradSmoothing(void) : CNumerics () { + + val_DHiDHj = NULL; + Ni_Vec = NULL; + +} + +CGradSmoothing::CGradSmoothing(unsigned short val_nDim, CConfig *config) + : CNumerics(val_nDim, val_nDim, config) { + + unsigned short iDim; + + /*--- 8 is the max number of nodes in 3D ---*/ + val_DHiDHj = new su2double* [nDim]; + for (iDim=0; iDimGetSmoothOnSurface()) nDimGlobal=nDim+1; + + su2double Weight, Jac_X, val_HiHj, GradNiXGradNj = 0; + + su2double epsilon1 = config->GetSmoothingEps1(); + su2double epsilon2 = config->GetSmoothingEps2(); + + element->ClearElement(); /*--- Restarts the element: avoids adding over previous results in other elements --*/ + nNode = element->GetnNodes(); + nGauss = element->GetnGaussPoints(); + if (config->GetSmoothOnSurface()) { + element->ComputeGrad_Linear(Coord); + } else { + element->ComputeGrad_Linear(); + } + + /*--- contribution from the gradients of the shape functions ---*/ + + for (iGauss = 0; iGauss < nGauss; iGauss++) { + + Weight = element->GetWeight(iGauss); + Jac_X = element->GetJ_X(iGauss); + + for (iShape = 0; iShape < nNode; iShape++) { + + /*--- Assumming symmetry ---*/ + for (jShape = iShape; jShape < nNode; jShape++) { + + for (iDim = 0; iDim < nDimGlobal; iDim++) { + GradNiXGradNj += element->GetGradNi_X(iShape,iGauss,iDim)*element->GetGradNi_X(jShape,iGauss,iDim); + } + + for (iDim = 0; iDim < nDim; iDim++) { + for (jDim = 0; jDim < nDim; jDim++) { + if (iDim == jDim) { + val_DHiDHj[iDim][jDim] = Weight * Jac_X * epsilon2 * GradNiXGradNj; + } else { + val_DHiDHj[iDim][jDim] = 0; + } + } + } + + GradNiXGradNj=0; + + element->Add_DHiDHj(val_DHiDHj,iShape, jShape); + /*--- Symmetric terms --*/ + if (iShape != jShape) { + element->Add_DHiDHj_T(val_DHiDHj, jShape, iShape); + } + + } + + } + + } + + /*--- contribution from the shape functions themselfes --*/ + + for (iGauss = 0; iGauss < nGauss; iGauss++) { + + Weight = element->GetWeight(iGauss); + Jac_X = element->GetJ_X(iGauss); + + for (iShape = 0; iShape < nNode; iShape++) { + Ni_Vec[iShape] = element->GetNi(iShape,iGauss); + } + + for (iShape = 0; iShape < nNode; iShape++) { + for (jShape = 0; jShape < nNode; jShape++) { + val_HiHj = Weight * Jac_X * epsilon1 * Ni_Vec[iShape] * Ni_Vec[jShape]; + element->Add_HiHj(val_HiHj, iShape, jShape); + } + } + + } + +} + +void CGradSmoothing::SetCoord(su2activematrix& val_coord) { + Coord = val_coord; +} diff --git a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp new file mode 100644 index 000000000000..8a6d51abf680 --- /dev/null +++ b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp @@ -0,0 +1,1251 @@ +/*! + * \file CSolverGradientSmoothing.cpp + * \brief Main solver routines for the gradient smoothing problem. + * \author T. Dick + * \version 7.2.1 "Blackbird" + * + * The current SU2 release has been coordinated by the + * SU2 International Developers Society + * with selected contributions from the open-source community. + * + * The main research teams contributing to the current release are: + * - Prof. Juan J. Alonso's group at Stanford University. + * - Prof. Piero Colonna's group at Delft University of Technology. + * - Prof. Nicolas R. Gauger's group at Kaiserslautern University of Technology. + * - Prof. Alberto Guardone's group at Polytechnic University of Milan. + * - Prof. Rafael Palacios' group at Imperial College London. + * - Prof. Vincent Terrapon's group at the University of Liege. + * - Prof. Edwin van der Weide's group at the University of Twente. + * - Lab. of New Concepts in Aeronautics at Tech. Institute of Aeronautics. + * + * Copyright 2012-2019, Francisco D. Palacios, Thomas D. Economon, + * Tim Albring, and the SU2 contributors. + * + * SU2 is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * SU2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with SU2. If not, see . + */ + +#include "../../include/solvers/CGradientSmoothingSolver.hpp" +#include "../../include/variables/CSobolevSmoothingVariable.hpp" +#include +#include +#include + +CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig *config) : CSolver(false,true) { + + unsigned int iDim, jDim, marker_count=0; + unsigned long iPoint; + + /*--- general geometric settings ---*/ + nDim = geometry->GetnDim(); + nPoint = geometry->GetnPoint(); + nPointDomain = geometry->GetnPointDomain(); + nElement = geometry->GetnElem(); + + /*--- Here is where we assign the kind of each element ---*/ + + /*--- First level: different possible terms of the equations ---*/ + element_container = new CElement** [MAX_TERMS](); + for (unsigned int iTerm = 0; iTerm < MAX_TERMS; iTerm++) + element_container[iTerm] = new CElement* [MAX_FE_KINDS](); + + /*--- Initialize all subsequent levels ---*/ + for (unsigned int iKind = 0; iKind < MAX_FE_KINDS; iKind++) { + element_container[GRAD_TERM][iKind] = nullptr; + } + + if (nDim == 2) { + element_container[GRAD_TERM][EL_TRIA] = new CTRIA1(); + element_container[GRAD_TERM][EL_QUAD] = new CQUAD4(); + if (config->GetSecOrdQuad()) { + element_container[GRAD_TERM][EL_TRIA2] = new CTRIA3(); + } + } + else if (nDim == 3) { + element_container[GRAD_TERM][EL_TETRA] = new CTETRA1(); + element_container[GRAD_TERM][EL_HEXA] = new CHEXA8(); + element_container[GRAD_TERM][EL_PYRAM] = new CPYRAM5(); + element_container[GRAD_TERM][EL_PRISM] = new CPRISM6(); + if (config->GetSecOrdQuad()) { + element_container[GRAD_TERM][EL_TETRA2] = new CTETRA4(); + element_container[GRAD_TERM][EL_PYRAM2] = new CPYRAM6(); + } + } + + /*--- for operations on surfaces we initalize the structures for nDim-1 ---*/ + if (config->GetSmoothOnSurface()) { + if (nDim == 2) { + element_container[GRAD_TERM][EL_LINE] = new CLINE(); + } + else if (nDim == 3) { + element_container[GRAD_TERM][EL_TRIA] = new CTRIA1(); + element_container[GRAD_TERM][EL_QUAD] = new CQUAD4(); + if (config->GetSecOrdQuad()) { + element_container[GRAD_TERM][EL_TRIA2] = new CTRIA3(); + } + } + } + + Residual = new su2double[nDim]; for (iDim = 0; iDim < nDim; iDim++) Residual[iDim] = 0.0; + Solution = new su2double[nDim]; for (iDim = 0; iDim < nDim; iDim++) Solution[iDim] = 0.0; + mId_Aux = new su2double *[nDim]; + for(iDim = 0; iDim < nDim; iDim++){ + mId_Aux[iDim] = new su2double[nDim]; + } + for(iDim = 0; iDim < nDim; iDim++){ + for (jDim = 0; jDim < nDim; jDim++){ + mId_Aux[iDim][jDim] = 0.0; + } + mId_Aux[iDim][iDim] = 1.0; + } + + /*--- initializations for linear equation systems ---*/ + if ( !config->GetSmoothOnSurface() ) { + if ( config->GetSepDim() ) { + LinSysSol.Initialize(nPoint, nPointDomain, 1, 0.0); + LinSysRes.Initialize(nPoint, nPointDomain, 1, 0.0); + Jacobian.Initialize(nPoint, nPointDomain, 1, 1, false, geometry, config, false, true); + } else { + LinSysSol.Initialize(nPoint, nPointDomain, nDim, 0.0); + LinSysRes.Initialize(nPoint, nPointDomain, nDim, 0.0); + Jacobian.Initialize(nPoint, nPointDomain, nDim, nDim, false, geometry, config, false, true); + } + + } else { + if (config->GetSobMode() == PARAM_LEVEL_COMPLETE) { + Jacobian.Initialize(nPoint, nPointDomain, nDim, nDim, false, geometry, config, false , true); + } else { + LinSysSol.Initialize(nPoint, nPointDomain, 1, 0.0); + LinSysRes.Initialize(nPoint, nPointDomain, 1, 0.0); + Jacobian.Initialize(nPoint, nPointDomain, 1, 1, false, geometry, config, false, true); + } + } + + /*--- initializations for debugging ---*/ + if (config->GetSobMode()==DEBUG) { + auxVec.Initialize(nPoint, nPointDomain, nDim, 1.0); + } + + /*--- vectors needed for projection when working on complete system ---*/ + activeCoord.Initialize(nPoint, nPointDomain, nDim, 0.0); + helperVecIn.Initialize(nPoint, nPointDomain, nDim, 0.0); + helperVecOut.Initialize(nPoint, nPointDomain, nDim, 0.0); + helperVecAux.Initialize(nPoint, nPointDomain, nDim, 0.0); + + /*--- Initialize the CVariable structure holding solution data ---*/ + nodes = new CSobolevSmoothingVariable(nPoint, nDim, config); + SetBaseClassPointerToNodes(); + + /*--- Initialize the boundary of the boundary ---*/ + if (config->GetSmoothOnSurface()) { + + /*--- check which points are in more than one physical boundary ---*/ + for (iPoint = 0; iPoint < nPoint; iPoint++) { + for (unsigned int iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { + if (config->GetMarker_All_KindBC(iMarker) != SEND_RECEIVE) { + long iVertex = geometry->nodes->GetVertex(iPoint, iMarker); + if (iVertex >= 0) { + marker_count++; + } + } + } + if (marker_count>=2) { + nodes->MarkAsBoundaryPoint(iPoint); + } + marker_count = 0; + } + } + + /*--- Term ij of the Jacobian ---*/ + Jacobian_block = new su2double*[nDim]; + for (iDim = 0; iDim < nDim; iDim++) { + Jacobian_block[iDim] = new su2double [nDim]; + for (jDim = 0; jDim < nDim; jDim++) { + Jacobian_block[iDim][jDim] = 0.0; + } + } + + /*--- vector for the parameter gradient ---*/ + for (auto iDV=0; iDVGetnDV_Total(); iDV++) { + deltaP.push_back(0.0); + } + + /*--- set the solver name for output purposes ---*/ + SolverName = "SOBOLEV"; +} + + +CGradientSmoothingSolver::~CGradientSmoothingSolver(void) { + + unsigned int iDim; + + if (element_container != nullptr) { + for (unsigned int iVar = 0; iVar < MAX_TERMS; iVar++) { + for (unsigned int jVar = 0; jVar < MAX_FE_KINDS; jVar++) { + delete element_container[iVar][jVar]; + } + delete [] element_container[iVar]; + } + delete [] element_container; + } + + if (Jacobian_block != nullptr) { + for (iDim = 0; iDim < nDim; ++iDim) { + delete [] Jacobian_block[iDim]; + } + delete [] Jacobian_block; + } + + for (iDim = 0; iDim < nDim; iDim++) { + if (mId_Aux[iDim] != nullptr) delete [] mId_Aux[iDim]; + } + if (mId_Aux != nullptr) delete [] mId_Aux; + + delete nodes; + +} + + +void CGradientSmoothingSolver::ApplyGradientSmoothingVolume(CGeometry *geometry, CSolver *solver, CNumerics **numerics, CConfig *config) { + + /*--- current dimension if we run consecutive on each dimension ---*/ + dir = 0; + + /*--- Set vector and sparse matrix to 0 ---*/ + LinSysSol.SetValZero(); + LinSysRes.SetValZero(); + Jacobian.SetValZero(); + + Compute_StiffMatrix(geometry, numerics, config); + + if ( config->GetSepDim() ) { + + for (dir = 0; dir < nDim ; dir++) { + + Compute_Residual(geometry, solver, config); + + Impose_BC(geometry, numerics, config); + + Solve_Linear_System(geometry, config); + + WriteSensitivity(geometry, solver, config); + + LinSysSol.SetValZero(); + LinSysRes.SetValZero(); + } + + } else { + + Compute_Residual(geometry, solver, config); + + Impose_BC(geometry, numerics, config); + + Solve_Linear_System(geometry, config); + + WriteSensitivity(geometry, solver, config); + + } + +} + + +void CGradientSmoothingSolver::ApplyGradientSmoothingSurface(CGeometry *geometry, CSolver *solver, CNumerics **numerics, CConfig *config, unsigned long val_marker) { + + /*--- Set vector and sparse matrix to 0 ---*/ + LinSysSol.SetValZero(); + LinSysRes.SetValZero(); + Jacobian.SetValZero(); + + Compute_Surface_StiffMatrix(geometry, numerics, config, val_marker); + + Compute_Surface_Residual(geometry, solver, config, val_marker); + + if ( config->GetDirichletSurfaceBound() ) { + BC_Surface_Dirichlet(geometry, config, val_marker); + } + + Solve_Linear_System(geometry, config); + + WriteSensitivity(geometry, solver, config, val_marker); + +} + + +void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CSolver *solver, CNumerics **numerics, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, CConfig *config, vector additionalGrad) { + + /// Set to 0 + Jacobian.SetValZero(); + + /// record the parameterization + if (rank == MASTER_NODE) cout << " calculate the original gradient" << endl; + RecordParameterizationJacobian(geometry, surface_movement, activeCoord, config); + + /// calculate the original gradinet + CalculateOriginalGradient(geometry, grid_movement, config); + + /// if there was an initialization, add it too the original gradient + if (additionalGrad.size()==deltaP.size()) { + for (auto iDV = 0; iDV < deltaP.size(); iDV++) { + deltaP[iDV] += additionalGrad[iDV]; + } + } + + /// compute the Hessian column by column + if (rank == MASTER_NODE) cout << " computing the system matrix line by line" << endl; + + /// variable declarations + unsigned nDVtotal=config->GetnDV_Total(); + unsigned column, row; + vector seedvector(nDVtotal, 0.0); + hessian = MatrixType::Zero(nDVtotal, nDVtotal); + + /// get matrix vector product for this + auto mat_vec = GetStiffnessMatrixVectorProduct(geometry, numerics, config); + + for (column=0; columnGetSmoothOnSurface()) { + + /// perform MPI communication + CSysMatrixComms::Initiate(helperVecIn, geometry, config, SOLUTION_MATRIX); + CSysMatrixComms::Complete(helperVecIn, geometry, config, SOLUTION_MATRIX); + + /// compute the matrix vector product + /// MatrixVector product operator does mpi comm at the end + mat_vec(helperVecIn, helperVecAux); + + /// delete entries from halo cells, otherwise we get errors for parallel computations + for (auto iPoint = 0; iPoint < geometry->GetnPointDomain(); iPoint++) { + for (auto iDim = 0; iDim < nDim; iDim++) { + helperVecOut(iPoint,iDim) = helperVecAux(iPoint,iDim); + } + } + + } else { + + /// meshdeformation forward + WriteVector2Geometry(geometry,config, helperVecIn); + grid_movement->SetVolume_Deformation(geometry, config, false, true, true); + ReadVector2Geometry(geometry,config, helperVecIn); + + /// perform MPI communication + CSysMatrixComms::Initiate(helperVecIn, geometry, config, SOLUTION_MATRIX); + CSysMatrixComms::Complete(helperVecIn, geometry, config, SOLUTION_MATRIX); + + /// compute the matrix vector product + /// MatrixVector product operator does mpi comm at the end + mat_vec(helperVecIn, helperVecAux); + + /// delete entries from halo cells, otherwise we get errors for parallel computations + for (auto iPoint = 0; iPoint < geometry->GetnPointDomain(); iPoint++) { + for (auto iDim = 0; iDim < nDim; iDim++) { + helperVecOut(iPoint,iDim) = helperVecAux(iPoint,iDim); + } + } + + /// mesh deformation backward + WriteVector2Geometry(geometry,config, helperVecOut); + grid_movement->SetVolume_Deformation(geometry, config, false, true, false); + ReadVector2Geometry(geometry,config, helperVecOut); + + } + + /// reverse projection + ProjectMeshToDV(geometry, helperVecOut, seedvector, activeCoord, config); + + /// extract projected direction + hessian.col(column) = Eigen::Map(seedvector.data(), seedvector.size()); + } + + /// output the matrix + if (rank == MASTER_NODE) { + ofstream SysMatrix(config->GetObjFunc_Hess_FileName()); + SysMatrix << hessian.format(CSVFormat); + SysMatrix.close(); + } + + /// calculate and output the treated gradient + QRdecomposition QR(hessian); + VectorType b = Eigen::Map(deltaP.data(), deltaP.size()); + VectorType x = QR.solve(b); + deltaP = std::vector(x.data(), x.data() + x.size()); + + OutputDVGradient(); + +} + + +void CGradientSmoothingSolver::Compute_StiffMatrix(CGeometry *geometry, CNumerics **numerics, CConfig *config){ + + unsigned long iElem, iNode; + unsigned int iDim, nNodes = 0, NelNodes, jNode; + std::vector indexNode(MAXNNODE_3D, 0.0); + su2double val_Coord; + int EL_KIND = 0; + + su2activematrix DHiDHj; + su2double HiHj = 0.0; + + /*--- Loops over all the elements ---*/ + + for (iElem = 0; iElem < geometry->GetnElem(); iElem++) { + + GetElemKindAndNumNodes(geometry->elem[iElem]->GetVTK_Type(), config->GetSecOrdQuad(), EL_KIND, nNodes); + + for (iNode = 0; iNode < nNodes; iNode++) { + + indexNode[iNode] = geometry->elem[iElem]->GetNode(iNode); + + for (iDim = 0; iDim < nDim; iDim++) { + val_Coord = Get_ValCoord(geometry, indexNode[iNode], iDim); + element_container[GRAD_TERM][EL_KIND]->SetRef_Coord(iNode, iDim, val_Coord); + } + + } + + /*--- compute the contributions of the single elements inside the numerics container ---*/ + + numerics[GRAD_TERM]->Compute_Tangent_Matrix(element_container[GRAD_TERM][EL_KIND], config); + + NelNodes = element_container[GRAD_TERM][EL_KIND]->GetnNodes(); + + /*--- for all nodes add the contribution to the system Jacobian ---*/ + + for (iNode = 0; iNode < NelNodes; iNode++) { + + for (jNode = 0; jNode < NelNodes; jNode++) { + + DHiDHj = element_container[GRAD_TERM][EL_KIND]->Get_DHiDHj(iNode, jNode); + HiHj = element_container[GRAD_TERM][EL_KIND]->Get_HiHj(iNode, jNode); + + if ( config->GetSepDim() ) { + + Jacobian_block[0][0] = DHiDHj[dir][dir] + HiHj; + Jacobian.AddBlock(indexNode[iNode], indexNode[jNode], Jacobian_block); + + } else { + + for (iDim = 0; iDim < nDim; iDim++) { + Jacobian_block[iDim][iDim] = DHiDHj[iDim][iDim] + HiHj; + } + Jacobian.AddBlock(indexNode[iNode], indexNode[jNode], Jacobian_block); + + } + } + } + } +} + + +void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry *geometry, CNumerics **numerics, CConfig *config, unsigned long val_marker, unsigned int nSurfDim){ + + unsigned long iElem, iPoint, iVertex, iSurfDim; + unsigned int iNode, jNode, nNodes = 0, NelNodes; + std::vector indexNode(MAXNNODE_2D, 0.0); + std::vector indexVertex(MAXNNODE_2D, 0.0); + int EL_KIND = 0; + + bool* visited = new bool[geometry->GetnPoint()]; + for (iPoint = 0; iPoint < geometry->GetnPoint(); iPoint++){ + visited[iPoint] = false; + } + + su2activematrix DHiDHj; + su2double HiHj = 0.0; + + su2activematrix Coord; + + /*--- Check if the current MPI rank has a part of the marker ---*/ + if (val_marker!=NOT_AVAILABLE) { + + /*--- Loops over all the elements ---*/ + for (iElem = 0; iElem < geometry->GetnElem_Bound(val_marker); iElem++) { + + /*--- Identify the kind of boundary element ---*/ + GetElemKindAndNumNodes(geometry->bound[val_marker][iElem]->GetVTK_Type(), config->GetSecOrdQuad(), EL_KIND, nNodes); + + /*--- Retrieve the boundary reference and current coordinates ---*/ + + for (iNode = 0; iNode < nNodes; iNode++) { + indexNode[iNode] = geometry->bound[val_marker][iElem]->GetNode(iNode); + } + + Coord = GetElementCoordinates(geometry, indexNode, EL_KIND); + + /*--- We need the indices of the vertices, which are "Dual Grid Info" ---*/ + for (iVertex = 0; iVertex < geometry->nVertex[val_marker]; iVertex++) { + iPoint = geometry->vertex[val_marker][iVertex]->GetNode(); + for (iNode = 0; iNode < nNodes; iNode++) { + if (iPoint == indexNode[iNode]) indexVertex[iNode] = iVertex; + } + } + + /*--- compute the contributions of the single elements inside the numerics container ---*/ + numerics[GRAD_TERM]->SetCoord(Coord); + numerics[GRAD_TERM]->Compute_Tangent_Matrix(element_container[GRAD_TERM][EL_KIND], config); + + NelNodes = element_container[GRAD_TERM][EL_KIND]->GetnNodes(); + + /*--- for all nodes add the contribution to the system Jacobian ---*/ + + for (iNode = 0; iNode < NelNodes; iNode++) { + for (jNode = 0; jNode < NelNodes; jNode++) { + + DHiDHj = element_container[GRAD_TERM][EL_KIND]->Get_DHiDHj(iNode, jNode); + HiHj = element_container[GRAD_TERM][EL_KIND]->Get_HiHj(iNode, jNode); + + /*--- TODO: need to do this for all block dimensions which is 2/3D respectively with the same component from surface 1/2D dimension! Maybe rework this inefficiency ---*/ + for (iSurfDim=0; iSurfDimGetnPointDomain(); iPoint++){ + if (visited[iPoint]==false) { + Jacobian.AddBlock(iPoint, iPoint, mId_Aux); + } + } +} + + +void CGradientSmoothingSolver::Compute_Residual(CGeometry *geometry, CSolver *solver, CConfig *config){ + + unsigned long iElem; + unsigned int iDim, iNode, nNodes = 0; + int EL_KIND = 0; + std::vector indexNode(MAXNNODE_3D, 0.0); + su2double Weight, Jac_X; + + for (iElem = 0; iElem < geometry->GetnElem(); iElem++) { + + GetElemKindAndNumNodes(geometry->elem[iElem]->GetVTK_Type(), config->GetSecOrdQuad(), EL_KIND, nNodes); + + for (iNode = 0; iNode < nNodes; iNode++) { + + indexNode[iNode] = geometry->elem[iElem]->GetNode(iNode); + + for (iDim = 0; iDim < nDim; iDim++) { + auto val_Coord = Get_ValCoord(geometry, indexNode[iNode], iDim); + element_container[GRAD_TERM][EL_KIND]->SetRef_Coord(iNode, iDim, val_Coord); + } + + } + + element_container[GRAD_TERM][EL_KIND]->ClearElement(); /*--- Restarts the element: avoids adding over previous results in other elements --*/ + element_container[GRAD_TERM][EL_KIND]->ComputeGrad_Linear(); + unsigned int nGauss = element_container[GRAD_TERM][EL_KIND]->GetnGaussPoints(); + + for (unsigned int iGauss = 0; iGauss < nGauss; iGauss++) { + + for (iNode = 0; iNode < nNodes; iNode++) { + indexNode[iNode] = geometry->elem[iElem]->GetNode(iNode); + } + + Weight = element_container[GRAD_TERM][EL_KIND]->GetWeight(iGauss); + Jac_X = element_container[GRAD_TERM][EL_KIND]->GetJ_X(iGauss); + + for (unsigned int iNode = 0; iNode < nNodes; iNode++) { + + if ( config->GetSepDim() ) { + + if (config->GetSobMode()==DEBUG) { + Residual[dir] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode,iGauss) * (auxVec.GetBlock(indexNode[iNode]))[dir]; + LinSysRes.AddBlock(indexNode[iNode], &Residual[dir]); + } else { + Residual[dir] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode,iGauss) * nodes->GetSensitivity(indexNode[iNode], dir); + LinSysRes.AddBlock(indexNode[iNode], &Residual[dir]); + } + + } else { + + for (iDim = 0; iDim < nDim; iDim++) { + + if (config->GetSobMode()==DEBUG) { + Residual[iDim] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode,iGauss) * (auxVec.GetBlock(indexNode[iNode]))[iDim]; + } else { + Residual[iDim] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode,iGauss) * nodes->GetSensitivity(indexNode[iNode], iDim); + } + } + LinSysRes.AddBlock(indexNode[iNode], Residual); + + } + + for (iDim = 0; iDim < nDim; iDim++) { + Residual[iDim] = 0; + } + + } + } + } +} + + +void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry *geometry, CSolver *solver, CConfig *config, unsigned long val_marker){ + + unsigned long iElem, iPoint, iVertex; + unsigned int iDim, iNode, nNodes = 0; + int EL_KIND = 0; + std::vector indexNode(MAXNNODE_2D, 0.0); + std::vector indexVertex(MAXNNODE_2D, 0.0); + su2double Weight, Jac_X, normalSens = 0.0, norm; + su2double* normal = NULL; + su2activematrix Coord; + + /*--- Check if the current MPI rank has a part of the marker ---*/ + if (val_marker!=NOT_AVAILABLE) { + + for (iElem = 0; iElem < geometry->GetnElem_Bound(val_marker); iElem++) { + + /*--- Identify the kind of boundary element ---*/ + GetElemKindAndNumNodes(geometry->bound[val_marker][iElem]->GetVTK_Type(), config->GetSecOrdQuad(), EL_KIND, nNodes); + + /*--- Retrieve the boundary reference and current coordinates ---*/ + for (iNode = 0; iNode < nNodes; iNode++) { + indexNode[iNode] = geometry->bound[val_marker][iElem]->GetNode(iNode); + } + + Coord = GetElementCoordinates(geometry, indexNode, EL_KIND); + + /*--- We need the indices of the vertices, which are "Dual Grid Info" ---*/ + for (iVertex = 0; iVertex < geometry->nVertex[val_marker]; iVertex++) { + iPoint = geometry->vertex[val_marker][iVertex]->GetNode(); + for (iNode = 0; iNode < nNodes; iNode++) { + if (iPoint == indexNode[iNode]) indexVertex[iNode] = iVertex; + } + } + + element_container[GRAD_TERM][EL_KIND]->ClearElement(); /*--- Restarts the element: avoids adding over previous results in other elements --*/ + element_container[GRAD_TERM][EL_KIND]->ComputeGrad_Linear(Coord); + unsigned int nGauss = element_container[GRAD_TERM][EL_KIND]->GetnGaussPoints(); + + for (unsigned int iGauss = 0; iGauss < nGauss; iGauss++) { + + Weight = element_container[GRAD_TERM][EL_KIND]->GetWeight(iGauss); + Jac_X = element_container[GRAD_TERM][EL_KIND]->GetJ_X(iGauss); + + for (unsigned int iNode = 0; iNode < nNodes; iNode++) { + + normal = geometry->vertex[val_marker][indexVertex[iNode]]->GetNormal(); + norm = 0.0; + for (iDim = 0; iDim < nDim; iDim++) { + norm += normal[iDim]*normal[iDim]; + } + norm = sqrt(norm); + for (iDim = 0; iDim < nDim; iDim++) { + normal[iDim] = normal[iDim] / norm; + } + + for (iDim = 0; iDim < nDim; iDim++) { + if (config->GetSobMode()==DEBUG) { + normalSens += normal[iDim] * (auxVec.GetBlock(indexNode[iNode]))[iDim]; + } else { + normalSens += normal[iDim] * nodes->GetSensitivity(indexNode[iNode], iDim); + } + } + + Residual[0] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode,iGauss) * normalSens; + LinSysRes.AddBlock(indexNode[iNode], Residual); + + Residual[0] = 0; + normalSens = 0; + + } + } + } + } +} + + +void CGradientSmoothingSolver::Impose_BC(CGeometry *geometry, CNumerics **numerics, CConfig *config) { + + unsigned int iMarker; + + /*--- Get the boundary markers and iterate over them ---------------------------------*/ + /* Notice that for no marker we automatically impose Zero Neumann boundary conditions */ + + for (iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { + if (config->GetMarker_All_SobolevBC(iMarker) == YES) { + BC_Dirichlet(geometry, NULL, numerics, config, iMarker); + } + } + +} + + +void CGradientSmoothingSolver::BC_Dirichlet(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics, CConfig *config, unsigned int val_marker) { + + unsigned long iPoint, iVertex; + const su2double zeros[MAXNDIM] = {0.0}; + + for (iVertex = 0; iVertex < geometry->nVertex[val_marker]; iVertex++) { + + /*--- Get node index ---*/ + iPoint = geometry->vertex[val_marker][iVertex]->GetNode(); + + /*--- Enforce solution, independed from dimension since zeros vector is long enough. ---*/ + LinSysSol.SetBlock(iPoint, zeros); + LinSysRes.SetBlock(iPoint, zeros); + Jacobian.EnforceSolutionAtNode(iPoint, zeros, LinSysRes); + + } + +} + + +void CGradientSmoothingSolver::BC_Surface_Dirichlet(CGeometry *geometry, CConfig *config, unsigned int val_marker) { + + unsigned long iPoint, iVertex; + const su2double zeros[MAXNDIM] = {0.0}; + + /*--- Check if the current MPI rank has a part of the marker ---*/ + if (val_marker!=NOT_AVAILABLE) { + for (iVertex = 0; iVertex < geometry->nVertex[val_marker]; iVertex++) { + + /*--- Get node index ---*/ + iPoint = geometry->vertex[val_marker][iVertex]->GetNode(); + + if ( nodes->IsBoundaryPoint(iPoint) ) { + + LinSysSol.SetBlock(iPoint, zeros); + LinSysRes.SetBlock(iPoint, zeros); + Jacobian.EnforceSolutionAtNode(iPoint, zeros, LinSysRes); + + } + } + } +} + + +void CGradientSmoothingSolver::Solve_Linear_System(CGeometry *geometry, CConfig *config){ + + unsigned long IterLinSol = 0; + + /* For MPI prescribe vector entries across the ranks before solving the system. + * Analog to FEA solver this is only done for the solution */ + CSysMatrixComms::Initiate(LinSysSol, geometry, config); + CSysMatrixComms::Complete(LinSysSol, geometry, config); + + // elimination shedule + Set_VertexEliminationSchedule(geometry, config); + + IterLinSol = System.Solve(Jacobian, LinSysRes, LinSysSol, geometry, config); + + SU2_OMP_MASTER + { + SetIterLinSolver(IterLinSol); + SetResLinSolver(System.GetResidual()); + } + +} + + +CSysMatrixVectorProduct CGradientSmoothingSolver::GetStiffnessMatrixVectorProduct(CGeometry *geometry, CNumerics **numerics, CConfig *config) { + + bool surf = config->GetSmoothOnSurface(); + + /*--- Compute the sparse stiffness matrix ---*/ + if (surf) { + unsigned long dvMarker=NOT_AVAILABLE; + for (unsigned int iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { + if ( config->GetMarker_All_DV(iMarker) == YES ) { + dvMarker=iMarker; + } + } + Compute_Surface_StiffMatrix(geometry, numerics, config, dvMarker, nDim); + } else { + Compute_StiffMatrix(geometry, numerics, config); + } + + return CSysMatrixVectorProduct(Jacobian, geometry, config); +} + + +void CGradientSmoothingSolver::CalculateOriginalGradient(CGeometry *geometry, CVolumetricMovement *grid_movement, CConfig *config) { + + if (rank == MASTER_NODE) cout << endl << "Calculating the original DV gradient." << endl; + + WriteSens2Geometry(geometry,config); + + grid_movement->SetVolume_Deformation(geometry, config, false, true); + + ReadVector2Geometry(geometry,config, helperVecOut); + + ProjectMeshToDV(geometry, helperVecOut, deltaP, activeCoord, config); + + OutputDVGradient("orig_grad.dat"); +} + + +void CGradientSmoothingSolver::RecordTapeAndCalculateOriginalGradient(CGeometry *geometry, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, CConfig *config) { + + /// record the parameterization + if (rank == MASTER_NODE) cout << " calculate the original gradient" << endl; + RecordParameterizationJacobian(geometry, surface_movement, activeCoord, config); + + /// calculate the original gradinet + CalculateOriginalGradient(geometry, grid_movement, config); + +} + + +void CGradientSmoothingSolver::OutputDVGradient(string out_file) { + + unsigned iDV; + if (rank == MASTER_NODE) { + ofstream delta_p (out_file); + delta_p.precision(17); + for (iDV = 0; iDV < deltaP.size(); iDV++) { + delta_p << deltaP[iDV] << ","; + } + delta_p.close(); + } + +} + + +void CGradientSmoothingSolver::RecordParameterizationJacobian(CGeometry *geometry, CSurfaceMovement *surface_movement, CSysVector& registeredCoord, CConfig *config) { + + unsigned int nDim, nMarker, nDV, nDV_Value, nPoint, nVertex; + unsigned int iDV, iDV_Value, iMarker, iPoint, iVertex, iDim; + su2double* VarCoord; + su2double** DV_Value; + + /*--- get information from config ---*/ + nMarker = config->GetnMarker_All(); + nDim = geometry->GetnDim(); + nPoint = geometry->GetnPoint(); + nDV = config->GetnDV(); + + /*--- Start recording of operations ---*/ + + AD::Reset(); + + AD::StartRecording(); + + /*--- Register design variables as input and set them to zero + * (since we want to have the derivative at alpha = 0, i.e. for the current design) ---*/ + + DV_Value = config->GetDV_Pointer(); + for (iDV = 0; iDV < nDV; iDV++){ + nDV_Value = config->GetnDV_Value(iDV); + for (iDV_Value = 0; iDV_Value < nDV_Value; iDV_Value++){ + + /*--- Initilization of su2double with 0.0 resets the index ---*/ + DV_Value[iDV][iDV_Value] = 0.0; + AD::RegisterInput(DV_Value[iDV][iDV_Value]); + + } + } + + /*--- Call the surface deformation routine ---*/ + surface_movement->SetSurface_Deformation(geometry, config); + + /*--- Register Outputs --- */ + for (iMarker = 0; iMarker < nMarker; iMarker++) { + if (config->GetMarker_All_DV(iMarker) == YES) { + nVertex = geometry->nVertex[iMarker]; + for (iVertex = 0; iVertex vertex[iMarker][iVertex]->GetVarCoord(); + for (iDim=0; iDimvertex[iMarker][iVertex]->GetNode(); + registeredCoord(iPoint,iDim) = VarCoord[iDim]; + } + } + } + } + for (iPoint = 0; iPoint& seeding, CSysVector& result, CSysVector& registeredCoord, CConfig *config) { + + unsigned int nDim, nMarker, nDV, nDV_Value, nVertex; + unsigned int iDV, iDV_Value, iDV_index, iMarker, iVertex, iPoint, iDim; + su2double** DV_Value = config->GetDV_Pointer(); + + /*--- get information from config ---*/ + nMarker = config->GetnMarker_All(); + nDim = geometry->GetnDim(); + nDV = config->GetnDV(); + + /*--- Seeding for the DV. --*/ + iDV_index = 0; + for (iDV = 0; iDV < nDV; iDV++){ + nDV_Value = config->GetnDV_Value(iDV); + for (iDV_Value = 0; iDV_Value < nDV_Value; iDV_Value++){ + SU2_TYPE::SetDerivative(DV_Value[iDV][iDV_Value], SU2_TYPE::GetValue(seeding[iDV_index])); + iDV_index++; + } + } + + AD::ComputeAdjointForward(); + + /*--- Extract sensitivities ---*/ + for (iMarker = 0; iMarker < nMarker; iMarker++) { + if (config->GetMarker_All_DV(iMarker) == YES) { + nVertex = geometry->nVertex[iMarker]; + for (iVertex = 0; iVertex vertex[iMarker][iVertex]->GetNode(); + for (iDim=0; iDim& sensitivity, std::vector& output, CSysVector& registeredCoord, CConfig *config) { + + /*--- adjoint surface deformation ---*/ + + unsigned int nDim, nMarker, nDV, nDV_Value, nVertex; + unsigned int iDV, iDV_Value, iDV_index, iPoint, iDim, iMarker, iVertex; + su2double** DV_Value = config->GetDV_Pointer(); + su2double my_Gradient, localGradient; + + // get some numbers from config + nMarker = config->GetnMarker_All(); + nDim = geometry->GetnDim(); + nDV = config->GetnDV(); + + /*--- Set the seeding appropriately ---*/ + for (iMarker = 0; iMarker < nMarker; iMarker++) { + if (config->GetMarker_All_DV(iMarker) == YES) { + nVertex = geometry->nVertex[iMarker]; + for (iVertex = 0; iVertex vertex[iMarker][iVertex]->GetNode(); + for (iDim = 0; iDim < nDim; iDim++){ + SU2_TYPE::SetDerivative(registeredCoord(iPoint,iDim), SU2_TYPE::GetValue(sensitivity(iPoint,iDim))); + } + } + } + } + + /*--- Compute derivatives and extract gradient ---*/ + AD::ComputeAdjoint(); + + iDV_index = 0; + for (iDV = 0; iDV < nDV; iDV++){ + nDV_Value = config->GetnDV_Value(iDV); + for (iDV_Value = 0; iDV_Value < nDV_Value; iDV_Value++){ + my_Gradient = SU2_TYPE::GetDerivative(DV_Value[iDV][iDV_Value]); + #ifdef HAVE_MPI + SU2_MPI::Allreduce(&my_Gradient, &localGradient, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); + #else + localGradient = my_Gradient; + #endif + output[iDV_index] = localGradient; + iDV_index++; + } + } + + AD::ClearAdjoints(); + +} + + +void CGradientSmoothingSolver::SetSensitivity(CGeometry *geometry, CConfig *config, CSolver *solver) { + unsigned long iPoint; + unsigned int iDim; + for (iPoint = 0; iPoint < nPoint; iPoint++) { + for (iDim = 0; iDim < nDim; iDim++) { + nodes->SetSensitivity(iPoint,iDim, solver->GetNodes()->GetSensitivity(iPoint,iDim)); + } + } +} + + +void CGradientSmoothingSolver::OutputSensitivity(CGeometry *geometry, CConfig *config, CSolver *solver) { + unsigned long iPoint; + unsigned int iDim; + for (iPoint = 0; iPoint < nPoint; iPoint++) { + for (iDim = 0; iDim < nDim; iDim++) { + solver->GetNodes()->SetSensitivity(iPoint,iDim, nodes->GetSensitivity(iPoint,iDim)); + } + } +} + + +void CGradientSmoothingSolver::WriteSensitivity(CGeometry *geometry, CSolver *solver, CConfig *config, unsigned long val_marker){ + + unsigned long iPoint, total_index; + unsigned int iDim; + su2double* normal; + su2double norm; + + /*--- split between surface and volume first, to avoid mpi ranks with no part of the marker to write back nonphysical solutions in the surface case ---*/ + if ( config->GetSmoothOnSurface() ) { + if( val_marker!=NOT_AVAILABLE ) { + for (unsigned long iVertex =0; iVertexnVertex[val_marker]; iVertex++) { + iPoint = geometry->vertex[val_marker][iVertex]->GetNode(); + normal = geometry->vertex[val_marker][iVertex]->GetNormal(); + norm = 0.0; + for (iDim = 0; iDim < nDim; iDim++) { + norm += normal[iDim]*normal[iDim]; + } + norm = sqrt(norm); + for (iDim = 0; iDim < nDim; iDim++) { + normal[iDim] = normal[iDim] / norm; + } + for (iDim = 0; iDim < nDim; iDim++) { + this->GetNodes()->SetSensitivity(iPoint, iDim, normal[iDim]*LinSysSol[iPoint]); + } + } + } + } else { + if ( config->GetSepDim() ) { + for (iPoint = 0; iPoint < nPoint; iPoint++) { + this->GetNodes()->SetSensitivity(iPoint, dir, LinSysSol[iPoint]); + } + } else { + for (iPoint = 0; iPoint < nPoint; iPoint++) { + for (iDim = 0; iDim < nDim; iDim++) { + total_index = iPoint*nDim + iDim; + this->GetNodes()->SetSensitivity(iPoint, iDim, LinSysSol[total_index]); + } + } + } + } +} + + +void CGradientSmoothingSolver::WriteSens2Geometry(CGeometry *geometry, CConfig *config) { + unsigned long iPoint; + unsigned int iDim; + for (iPoint = 0; iPoint < nPoint; iPoint++) { + for (iDim = 0; iDim < nDim; iDim++) { + geometry->SetSensitivity(iPoint,iDim, nodes->GetSensitivity(iPoint,iDim)); + } + } +} + + +void CGradientSmoothingSolver::ReadSens2Geometry(CGeometry *geometry, CConfig *config) { + unsigned long iPoint; + unsigned int iDim; + for (iPoint = 0; iPoint < nPoint; iPoint++) { + for (iDim = 0; iDim < nDim; iDim++) { + nodes->SetSensitivity(iPoint, iDim, geometry->GetSensitivity(iPoint,iDim)); + } + } +} + + +void CGradientSmoothingSolver::WriteVector2Geometry(CGeometry *geometry, CConfig *config, CSysVector& vector) { + unsigned long iPoint; + unsigned int iDim; + for (iPoint = 0; iPoint < nPoint; iPoint++) { + for (iDim = 0; iDim < nDim; iDim++) { + geometry->SetSensitivity(iPoint,iDim, vector[iPoint*nDim+iDim]); + } + } +} + + +void CGradientSmoothingSolver::ReadVector2Geometry(CGeometry *geometry, CConfig *config, CSysVector &vector) { + unsigned long iPoint; + unsigned int iDim; + for (iPoint = 0; iPoint < nPoint; iPoint++) { + for (iDim = 0; iDim < nDim; iDim++) { + vector[iPoint*nDim+iDim] = SU2_TYPE::GetValue(geometry->GetSensitivity(iPoint,iDim)); + } + } +} + + +su2activematrix CGradientSmoothingSolver::GetElementCoordinates(CGeometry *geometry, std::vector& indexNode, int EL_KIND) { + + su2activematrix Coord; + + switch (EL_KIND) { + + case EL_LINE: + + Coord.resize(2,2); + for(auto iNode=0; iNode<2; iNode++) { + for(auto iDim=0; iDim<2; iDim++) { + Coord[iNode][iDim] = Get_ValCoord(geometry, indexNode[iNode], iDim); + } + } + break; + + case EL_TRIA: + + Coord.resize(3,3); + for(auto iNode=0; iNode<3; iNode++) { + for(auto iDim=0; iDim<3; iDim++) { + Coord[iNode][iDim] = Get_ValCoord(geometry, indexNode[iNode], iDim); + } + } + break; + + case EL_TRIA2: + + Coord.resize(3,3); + for(auto iNode=0; iNode<3; iNode++) { + for(auto iDim=0; iDim<3; iDim++) { + Coord[iNode][iDim] = Get_ValCoord(geometry, indexNode[iNode], iDim); + } + } + break; + + case EL_QUAD: + + Coord.resize(4,3); + for(auto iNode=0; iNode<4; iNode++) { + for(auto iDim=0; iDim<3; iDim++) { + Coord[iNode][iDim] = Get_ValCoord(geometry, indexNode[iNode], iDim); + } + } + break; + + default: + std::cout << "Type of element is not supported. " < myPoints; + unsigned long iPoint; + + /*--- get global indexes of Dirichlet boundaries ---*/ + + if (config->GetSmoothOnSurface()) { + + /*--- Find Marker_DV if this node has any ---*/ + unsigned long dvMarker=NOT_AVAILABLE; + for (unsigned short iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { + if (config->GetMarker_All_DV(iMarker) == YES) { + dvMarker = iMarker; + } + } + + /*--- surface case: design boundary border if Dirichlet condition is set and rank holds part of it. ---*/ + if ( config->GetDirichletSurfaceBound() && dvMarker!=NOT_AVAILABLE) { + for (auto iVertex = 0; iVertex < geometry->nVertex[dvMarker]; iVertex++) { + /*--- Get node index ---*/ + iPoint = geometry->vertex[dvMarker][iVertex]->GetNode(); + if ( nodes->IsBoundaryPoint(iPoint) ) { + myPoints.push_back(geometry->nodes->GetGlobalIndex(iPoint)); + } + } + } + + } else { + + /*--- volume case: all boundaries where Dirichlet condition is set. ---*/ + vector markers; + for (unsigned short iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { + if (config->GetMarker_All_SobolevBC(iMarker) == YES) { + markers.push_back(iMarker); + } + } + for (auto iMarker : markers) { + for (auto iVertex = 0ul; iVertex < geometry->nVertex[iMarker]; iVertex++) { + auto iPoint = geometry->vertex[iMarker][iVertex]->GetNode(); + myPoints.push_back(geometry->nodes->GetGlobalIndex(iPoint)); + } + } + } + + /*--- communicate the boundary points ---*/ + + const unordered_set markerPoints(myPoints.begin(), myPoints.end()); + + vector numPoints(size); + unsigned long num = myPoints.size(); + SU2_MPI::Allgather(&num, 1, MPI_UNSIGNED_LONG, numPoints.data(), 1, MPI_UNSIGNED_LONG, MPI_COMM_WORLD); + + /*--- Global to local map for the halo points of the rank (not covered by the CGeometry map). ---*/ + unordered_map Global2Local; + for (auto iPoint = nPointDomain; iPoint < nPoint; ++iPoint) { + Global2Local[geometry->nodes->GetGlobalIndex(iPoint)] = iPoint; + } + + /*--- Populate elimination list. ---*/ + ExtraVerticesToEliminate.clear(); + + for (int i = 0; i < size; ++i) { + /*--- Send our point list. ---*/ + if (rank == i) { + SU2_MPI::Bcast(myPoints.data(), numPoints[i], MPI_UNSIGNED_LONG, rank, MPI_COMM_WORLD); + continue; + } + + /*--- Receive point list. ---*/ + vector theirPoints(numPoints[i]); + SU2_MPI::Bcast(theirPoints.data(), numPoints[i], MPI_UNSIGNED_LONG, i, MPI_COMM_WORLD); + + for (auto iPointGlobal : theirPoints) { + /*--- Check if the rank has the point. ---*/ + auto it = Global2Local.find(iPointGlobal); + if (it == Global2Local.end()) continue; + + /*--- If the point is not covered by this rank's markers, mark it for elimination. ---*/ + if (markerPoints.count(iPointGlobal) == 0) + ExtraVerticesToEliminate.push_back(it->second); + } + } + + /*--- eliminate the extra vertices ---*/ + + for (auto iPoint : ExtraVerticesToEliminate) { + Jacobian.EnforceSolutionAtNode(iPoint, LinSysSol.GetBlock(iPoint), LinSysRes); + } + +} diff --git a/SU2_CFD/src/solvers/CSolver.cpp b/SU2_CFD/src/solvers/CSolver.cpp index 51e062716012..cea0123c7484 100644 --- a/SU2_CFD/src/solvers/CSolver.cpp +++ b/SU2_CFD/src/solvers/CSolver.cpp @@ -50,7 +50,7 @@ #include "../../include/CMarkerProfileReaderFVM.hpp" -CSolver::CSolver(bool mesh_deform_mode) : System(mesh_deform_mode) { +CSolver::CSolver(bool mesh_deform_mode, bool gradient_smooth_mode) : System(mesh_deform_mode, gradient_smooth_mode) { rank = SU2_MPI::GetRank(); size = SU2_MPI::GetSize(); diff --git a/SU2_CFD/src/solvers/CSolverFactory.cpp b/SU2_CFD/src/solvers/CSolverFactory.cpp index 24604bb6b6d3..d7bba8e2e8a0 100644 --- a/SU2_CFD/src/solvers/CSolverFactory.cpp +++ b/SU2_CFD/src/solvers/CSolverFactory.cpp @@ -51,6 +51,7 @@ #include "../../include/solvers/CBaselineSolver.hpp" #include "../../include/solvers/CBaselineSolver_FEM.hpp" #include "../../include/solvers/CRadP1Solver.hpp" +#include "../../include/solvers/CGradientSmoothingSolver.hpp" map CSolverFactory::allocatedSolvers; @@ -115,22 +116,26 @@ CSolver** CSolverFactory::CreateSolverContainer(ENUM_MAIN_SOLVER kindMainSolver, case DISC_ADJ_EULER: solver[FLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::EULER, solver, geometry, config, iMGLevel); solver[ADJFLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_FLOW, solver, geometry, config, iMGLevel); + solver[GRADIENT_SMOOTHING] = CreateSubSolver(SUB_SOLVER_TYPE::GRAD_SMOOTH, solver, geometry, config, iMGLevel); break; case DISC_ADJ_NAVIER_STOKES: solver[FLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::NAVIER_STOKES, solver, geometry, config, iMGLevel); solver[ADJFLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_FLOW, solver, geometry, config, iMGLevel); + solver[GRADIENT_SMOOTHING] = CreateSubSolver(SUB_SOLVER_TYPE::GRAD_SMOOTH, solver, geometry, config, iMGLevel); break; case DISC_ADJ_RANS: solver[FLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::NAVIER_STOKES, solver, geometry, config, iMGLevel); solver[ADJFLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_FLOW, solver, geometry, config, iMGLevel); solver[TURB_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::TURB, solver, geometry, config, iMGLevel); solver[ADJTURB_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_TURB, solver, geometry, config, iMGLevel); + solver[GRADIENT_SMOOTHING] = CreateSubSolver(SUB_SOLVER_TYPE::GRAD_SMOOTH, solver, geometry, config, iMGLevel); break; case DISC_ADJ_INC_EULER: solver[FLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::INC_EULER, solver, geometry, config, iMGLevel); solver[ADJFLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_FLOW, solver, geometry, config, iMGLevel); solver[RAD_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::RADIATION, solver, geometry, config, iMGLevel); solver[ADJRAD_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_RADIATION, solver, geometry, config, iMGLevel); + solver[GRADIENT_SMOOTHING] = CreateSubSolver(SUB_SOLVER_TYPE::GRAD_SMOOTH, solver, geometry, config, iMGLevel); break; case DISC_ADJ_INC_NAVIER_STOKES: solver[FLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::INC_NAVIER_STOKES, solver, geometry, config, iMGLevel); @@ -139,6 +144,7 @@ CSolver** CSolverFactory::CreateSolverContainer(ENUM_MAIN_SOLVER kindMainSolver, solver[ADJHEAT_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_HEAT, solver, geometry, config, iMGLevel); solver[RAD_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::RADIATION, solver, geometry, config, iMGLevel); solver[ADJRAD_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_RADIATION, solver, geometry, config, iMGLevel); + solver[GRADIENT_SMOOTHING] = CreateSubSolver(SUB_SOLVER_TYPE::GRAD_SMOOTH, solver, geometry, config, iMGLevel); break; case DISC_ADJ_INC_RANS: solver[FLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::INC_NAVIER_STOKES, solver, geometry, config, iMGLevel); @@ -149,7 +155,8 @@ CSolver** CSolverFactory::CreateSolverContainer(ENUM_MAIN_SOLVER kindMainSolver, solver[ADJTURB_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_TURB, solver, geometry, config, iMGLevel); solver[RAD_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::RADIATION, solver, geometry, config, iMGLevel); solver[ADJRAD_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_RADIATION, solver, geometry, config, iMGLevel); - break; + solver[GRADIENT_SMOOTHING] = CreateSubSolver(SUB_SOLVER_TYPE::GRAD_SMOOTH, solver, geometry, config, iMGLevel); + break; case DISC_ADJ_HEAT: solver[HEAT_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::HEAT, solver, geometry, config, iMGLevel); solver[ADJHEAT_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_HEAT, solver, geometry, config, iMGLevel); @@ -298,6 +305,11 @@ CSolver* CSolverFactory::CreateSubSolver(SUB_SOLVER_TYPE kindSolver, CSolver **s } metaData.integrationType = INTEGRATION_TYPE::DEFAULT; break; + case SUB_SOLVER_TYPE::GRAD_SMOOTH: + if (iMGLevel == MESH_0 && config->GetSmoothGradient() ) { + genericSolver = new CGradientSmoothingSolver(geometry, config); + } + break; default: SU2_MPI::Error("No proper allocation found for requested sub solver", CURRENT_FUNCTION); break; diff --git a/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp b/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp new file mode 100644 index 000000000000..79e01eb65340 --- /dev/null +++ b/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp @@ -0,0 +1,70 @@ +/*! + * \file CSobolevSmoothingVariable.cpp + * \brief Definition of the variables for gradient smoothing problems. + * \author T. Dick + * \version 7.2.1 "Blackbird" + * + * The current SU2 release has been coordinated by the + * SU2 International Developers Society + * with selected contributions from the open-source community. + * + * The main research teams contributing to the current release are: + * - Prof. Juan J. Alonso's group at Stanford University. + * - Prof. Piero Colonna's group at Delft University of Technology. + * - Prof. Nicolas R. Gauger's group at Kaiserslautern University of Technology. + * - Prof. Alberto Guardone's group at Polytechnic University of Milan. + * - Prof. Rafael Palacios' group at Imperial College London. + * - Prof. Vincent Terrapon's group at the University of Liege. + * - Prof. Edwin van der Weide's group at the University of Twente. + * - Lab. of New Concepts in Aeronautics at Tech. Institute of Aeronautics. + * + * Copyright 2012-2018, Francisco D. Palacios, Thomas D. Economon, + * Tim Albring, and the SU2 contributors. + * + * SU2 is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * SU2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with SU2. If not, see . + */ + +#include "../../include/variables/CSobolevSmoothingVariable.hpp" + +CSobolevSmoothingVariable::CSobolevSmoothingVariable(unsigned long npoint, unsigned long ndim, CConfig *config) : + CVariable(npoint, ndim, config) { + + nDim = ndim; + nPoint = npoint; + + Sensitivity.resize(nPoint,nDim) = su2double(0.0); + + boundary_vertex = new bool[nPoint]; + for (auto iPoint=0; iPointGetnDV(); + /*--- Increase precision ---*/ + if (config->GetSmoothGradient()) { + Gradient_file.precision(16); + } + /*--- Loop through all design variables and their gradients ---*/ for (iDV = 0; iDV < nDV; iDV++){ diff --git a/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg b/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg new file mode 100644 index 000000000000..0e668783a7c1 --- /dev/null +++ b/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg @@ -0,0 +1,351 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% SU2 configuration file % +% Case description: Sobolev smoothing for gradient on the NACA 0012 airfoil % +% Author: Thomas Dick (TU Kaiserslautern) % +% Date: 11.11.2021 % +% File Version 7.2.1 "Blackbird" % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% ------------- DIRECT, ADJOINT, AND LINEARIZED PROBLEM DEFINITION ------------% +% +% Physical governing equations (EULER, NAVIER_STOKES, +% TNE2_EULER, TNE2_NAVIER_STOKES, +% WAVE_EQUATION, HEAT_EQUATION, FEM_ELASTICITY, +% POISSON_EQUATION) +SOLVER= EULER +% +% Mathematical problem (DIRECT, CONTINUOUS_ADJOINT) +MATH_PROBLEM= DISCRETE_ADJOINT +% +% Restart solution (NO, YES) +RESTART_SOL= NO +% +% Read binary restart files (YES, NO) +READ_BINARY_RESTART= YES +% ----------- COMPRESSIBLE AND INCOMPRESSIBLE FREE-STREAM DEFINITION ----------% +% +% Mach number (non-dimensional, based on the free-stream values) +MACH_NUMBER= 0.8 +% +% Angle of attack (degrees) +AOA= 1.25 +% +% Free-stream pressure (101325.0 N/m^2 by default, only Euler flows) +FREESTREAM_PRESSURE= 101325.0 +% +% Free-stream temperature (288.15 K by default) +FREESTREAM_TEMPERATURE= 288.15 + +% ---------------------- REFERENCE VALUE DEFINITION ---------------------------% +% +% Reference origin for moment computation +REF_ORIGIN_MOMENT_X = 0.25 +REF_ORIGIN_MOMENT_Y = 0.00 +REF_ORIGIN_MOMENT_Z = 0.00 +% +% Reference length for pitching, rolling, and yawing non-dimensional moment +REF_LENGTH= 1.0 +% +% Reference area for force coefficients (0 implies automatic calculation) +REF_AREA= 1.0 + +% ----------------------- BOUNDARY CONDITION DEFINITION -----------------------% +% +% Marker of the Euler boundary (0 = no marker) +MARKER_EULER= ( airfoil ) +% +% Marker of the far field (0 = no marker) +MARKER_FAR= ( farfield ) +% +% Marker of the surface which is going to be plotted or designed +MARKER_PLOTTING= ( airfoil ) +% +% Marker of the surface where the functional (Cd, Cl, etc.) will be evaluated +MARKER_MONITORING= ( airfoil ) + +% ------------- COMMON PARAMETERS TO DEFINE THE NUMERICAL METHOD --------------% +% Numerical method for spatial gradients (GREEN_GAUSS, LEAST_SQUARES, +% WEIGHTED_LEAST_SQUARES) +NUM_METHOD_GRAD= GREEN_GAUSS +% +% Adjoint problem boundary condition (DRAG, LIFT, SIDEFORCE, MOMENT_X, +% MOMENT_Y, MOMENT_Z, EFFICIENCY, +% EQUIVALENT_AREA, NEARFIELD_PRESSURE, +% FORCE_X, FORCE_Y, FORCE_Z, THRUST, +% TORQUE, FREE_SURFACE, TOTAL_HEAT, +% MAXIMUM_HEATFLUX, INVERSE_DESIGN_PRESSURE, +% INVERSE_DESIGN_HEATFLUX) +OBJECTIVE_FUNCTION= DRAG +% +% Activate gradient smoothing +SMOOTH_GRADIENT = YES +% +SMOOTHING_EPSILON1 = 1.0 +% +SMOOTHING_EPSILON2 = 0.625 +% +SEPARATE_DIMENSIONS = NO +% +SECOND_ORDER_INTEGRATION = YES +% +SMOOTH_ON_SURFACE=YES +% +DIRICHLET_SURFACE_BOUNDARY=NO +% +SOBOLEV_MODE=PARAM_LEVEL_COMPLETE +% +HESS_OBJFUNC_FILENAME=of_hess.dat +% +MARKER_SOBOLEVBC = ( airfoil ) +% +% Courant-Friedrichs-Lewy condition of the finest grid +CFL_NUMBER= 5.0 +% +% Adaptive CFL number (NO, YES) +CFL_ADAPT= NO +% +% Parameters of the adaptive CFL number (factor down, factor up, CFL min value, +% CFL max value ) +CFL_ADAPT_PARAM= ( 1.5, 0.5, 1.0, 100.0 ) +% +% Runge-Kutta alpha coefficients +RK_ALPHA_COEFF= ( 0.66667, 0.66667, 1.000000 ) +% +% Number of total iterations +ITER= 10 + +% -------------------------- MULTIGRID PARAMETERS -----------------------------% +% +% Multi-Grid Levels (0 = no multi-grid) +MGLEVEL= 0 +% +% Multi-grid cycle (V_CYCLE, W_CYCLE, FULLMG_CYCLE) +MGCYCLE= W_CYCLE +% +% Multi-Grid PreSmoothing Level +MG_PRE_SMOOTH= ( 1, 2, 2, 2 ) +% +% Multi-Grid PostSmoothing Level +MG_POST_SMOOTH= ( 1, 1, 1, 1 ) +% +% Jacobi implicit smoothing of the correction +MG_CORRECTION_SMOOTH= ( 1, 1, 1, 1 ) +% +% Damping factor for the residual restriction +MG_DAMP_RESTRICTION= 1.0 +% +% Damping factor for the correction prolongation +MG_DAMP_PROLONGATION= 1.0 + +% -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------% +% +% Convective numerical method (JST, LAX-FRIEDRICH, CUSP, ROE, AUSM, HLLC, +% TURKEL_PREC, MSW) +CONV_NUM_METHOD_FLOW= JST +% +% Monotonic Upwind Scheme for Conservation Laws (TVD) in the flow equations. +% Required for 2nd order upwind schemes (NO, YES) +MUSCL_FLOW= YES +% +% Slope limiter (VENKATAKRISHNAN, MINMOD) +SLOPE_LIMITER_FLOW= VENKATAKRISHNAN +% +% Coefficient for the limiter +VENKAT_LIMITER_COEFF= 0.03 +% +% 2nd and 4th order artificial dissipation coefficients +JST_SENSOR_COEFF= ( 0.5, 0.02 ) +% +% Time discretization (RUNGE-KUTTA_EXPLICIT, EULER_IMPLICIT, EULER_EXPLICIT) +TIME_DISCRE_FLOW= EULER_IMPLICIT + +% ---------------- ADJOINT-FLOW NUMERICAL METHOD DEFINITION -------------------% +% +% Convective numerical method (JST, LAX-FRIEDRICH, ROE) +CONV_NUM_METHOD_ADJFLOW= ROE +% +% Monotonic Upwind Scheme for Conservation Laws (TVD) in the adjoint flow equations. +% Required for 2nd order upwind schemes (NO, YES) +MUSCL_ADJFLOW= YES +% +% Slope limiter (NONE, VENKATAKRISHNAN, BARTH_JESPERSEN, VAN_ALBADA_EDGE, +% SHARP_EDGES, WALL_DISTANCE) +SLOPE_LIMITER_ADJFLOW= NONE +% +% Coefficient for the sharp edges limiter +ADJ_SHARP_LIMITER_COEFF= 3.0 +% +% 2nd, and 4th order artificial dissipation coefficients +ADJ_JST_SENSOR_COEFF= ( 0.5, 0.02 ) +% +% Reduction factor of the CFL coefficient in the adjoint problem +CFL_REDUCTION_ADJFLOW= 0.5 +% +% Time discretization (RUNGE-KUTTA_EXPLICIT, EULER_IMPLICIT) +TIME_DISCRE_ADJFLOW= EULER_IMPLICIT + +% ----------------------- DESIGN VARIABLE PARAMETERS --------------------------% +% +% Kind of deformation (NO_DEFORMATION, TRANSLATION, ROTATION, SCALE, +% FFD_SETTING, FFD_NACELLE +% FFD_CONTROL_POINT, FFD_CAMBER, FFD_THICKNESS, FFD_TWIST +% FFD_CONTROL_POINT_2D, FFD_CAMBER_2D, FFD_THICKNESS_2D, FFD_TWIST_2D, +% HICKS_HENNE, SURFACE_BUMP) +DV_KIND= HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE +% +% Marker of the surface in which we are going apply the shape deformation +DV_MARKER= ( airfoil ) +% +% Parameters of the shape deformation +% - NO_DEFORMATION ( 1.0 ) +% - TRANSLATION ( x_Disp, y_Disp, z_Disp ), as a unit vector +% - ROTATION ( x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) +% - SCALE ( 1.0 ) +% - ANGLE_OF_ATTACK ( 1.0 ) +% - FFD_SETTING ( 1.0 ) +% - FFD_CONTROL_POINT ( FFD_BoxTag, i_Ind, j_Ind, k_Ind, x_Disp, y_Disp, z_Disp ) +% - FFD_NACELLE ( FFD_BoxTag, rho_Ind, theta_Ind, phi_Ind, rho_Disp, phi_Disp ) +% - FFD_GULL ( FFD_BoxTag, j_Ind ) +% - FFD_ANGLE_OF_ATTACK ( FFD_BoxTag, 1.0 ) +% - FFD_CAMBER ( FFD_BoxTag, i_Ind, j_Ind ) +% - FFD_THICKNESS ( FFD_BoxTag, i_Ind, j_Ind ) +% - FFD_TWIST ( FFD_BoxTag, j_Ind, x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) +% - FFD_CONTROL_POINT_2D ( FFD_BoxTag, i_Ind, j_Ind, x_Disp, y_Disp ) +% - FFD_CAMBER_2D ( FFD_BoxTag, i_Ind ) +% - FFD_THICKNESS_2D ( FFD_BoxTag, i_Ind ) +% - FFD_TWIST_2D ( FFD_BoxTag, x_Orig, y_Orig ) +% - HICKS_HENNE ( Lower Surface (0)/Upper Surface (1)/Only one Surface (2), x_Loc ) +% - SURFACE_BUMP ( x_Start, x_End, x_Loc ) +DV_PARAM= ( 0.0, 0.05) ; ( 0.0, 0.1) ; ( 0.0, 0.15) ; ( 0.0, 0.2) ; ( 0.0, 0.25) ; ( 0.0, 0.3) ; ( 0.0, 0.35) ; ( 0.0, 0.4) ; ( 0.0, 0.45) ; ( 0.0, 0.5) ; ( 0.0, 0.55) ; ( 0.0, 0.6) ; ( 0.0, 0.65) ; ( 0.0, 0.7) ; ( 0.0, 0.75) ; ( 0.0, 0.8) ; ( 0.0, 0.85) ; ( 0.0, 0.9) ; ( 0.0, 0.95) ; ( 1.0, 0.05) ; ( 1.0, 0.1) ; ( 1.0, 0.15) ; ( 1.0, 0.2) ; ( 1.0, 0.25) ; ( 1.0, 0.3) ; ( 1.0, 0.35) ; ( 1.0, 0.4) ; ( 1.0, 0.45) ; ( 1.0, 0.5) ; ( 1.0, 0.55) ; ( 1.0, 0.6) ; ( 1.0, 0.65) ; ( 1.0, 0.7) ; ( 1.0, 0.75) ; ( 1.0, 0.8) ; ( 1.0, 0.85) ; ( 1.0, 0.9) ; ( 1.0, 0.95) +% +% Value of the shape deformation +DV_VALUE= 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 + +% ------------------------ GRID DEFORMATION PARAMETERS ------------------------% +% +% Type of element stiffness imposed for FEA mesh deformation (INVERSE_VOLUME, +% WALL_DISTANCE, CONSTANT_STIFFNESS) +DEFORM_STIFFNESS_TYPE= WALL_DISTANCE + +% --------------------------- CONVERGENCE PARAMETERS --------------------------% +% +% Min value of the residual (log10 of the residual) +CONV_RESIDUAL_MINVAL= -12 +% +% Start Cauchy criteria at iteration number +CONV_STARTITER= 10 +% +% Number of elements to apply the criteria +CONV_CAUCHY_ELEMS= 100 +% +% Epsilon to control the series convergence +CONV_CAUCHY_EPS= 1E-6 +% + +% ------------------------- INPUT/OUTPUT INFORMATION --------------------------% +% +% Mesh input file +MESH_FILENAME= mesh_NACA0012_inv.su2 +% +% Mesh input file format (SU2, CGNS, NETCDF_ASCII) +MESH_FORMAT= SU2 +% +% Mesh output file +MESH_OUT_FILENAME= mesh_out.su2 +% +% Restart flow input file +SOLUTION_FILENAME= solution_flow.dat +% +% Restart adjoint input file +SOLUTION_ADJ_FILENAME= solution_adj.dat +% +% Output tabular format (CSV, TECPLOT) +TABULAR_FORMAT= TECPLOT +% +% Output file convergence history (w/o extension) +CONV_FILENAME= history +% +% Output file restart flow +RESTART_FILENAME= restart_flow.dat +% +% Output file restart adjoint +RESTART_ADJ_FILENAME= restart_adj.dat +% +% Output file flow (w/o extension) variables +VOLUME_FILENAME= flow +% +% Output file adjoint (w/o extension) variables +VOLUME_ADJ_FILENAME= adjoint +% +% Output Objective function gradient (using continuous adjoint) +GRAD_OBJFUNC_FILENAME= of_grad.dat +% +% Output file surface flow coefficient (w/o extension) +SURFACE_FILENAME= surface_flow +% +% Output file surface adjoint coefficient (w/o extension) +SURFACE_ADJ_FILENAME= surface_adjoint +% +% Writing solution file frequency +OUTPUT_WRT_FREQ= 250 +% +% +% Screen output +SCREEN_OUTPUT= (INNER_ITER, RMS_ADJ_DENSITY, RMS_ADJ_ENERGY, SENS_PRESS, SENS_AOA) +% +OUTPUT_FILES=(RESTART_ASCII) +% +% --------------------- OPTIMAL SHAPE DESIGN DEFINITION -----------------------% +% +% Available flow based objective functions or constraint functions +% DRAG, LIFT, SIDEFORCE, EFFICIENCY, BUFFET, +% FORCE_X, FORCE_Y, FORCE_Z, +% MOMENT_X, MOMENT_Y, MOMENT_Z, +% THRUST, TORQUE, FIGURE_OF_MERIT, +% EQUIVALENT_AREA, NEARFIELD_PRESSURE, +% TOTAL_HEATFLUX, MAXIMUM_HEATFLUX, +% INVERSE_DESIGN_PRESSURE, INVERSE_DESIGN_HEATFLUX, +% SURFACE_TOTAL_PRESSURE, SURFACE_MASSFLOW +% SURFACE_STATIC_PRESSURE, SURFACE_MACH +% +% Available geometrical based objective functions or constraint functions +% AIRFOIL_AREA, AIRFOIL_THICKNESS, AIRFOIL_CHORD, AIRFOIL_TOC, AIRFOIL_AOA, +% WING_VOLUME, WING_MIN_THICKNESS, WING_MAX_THICKNESS, WING_MAX_CHORD, WING_MIN_TOC, WING_MAX_TWIST, WING_MAX_CURVATURE, WING_MAX_DIHEDRAL +% STATION#_WIDTH, STATION#_AREA, STATION#_THICKNESS, STATION#_CHORD, STATION#_TOC, +% STATION#_TWIST (where # is the index of the station defined in GEO_LOCATION_STATIONS) +% +% Available design variables +% 2D Design variables +% FFD_CONTROL_POINT_2D ( 19, Scale | Mark. List | FFD_BoxTag, i_Ind, j_Ind, x_Mov, y_Mov ) +% FFD_CAMBER_2D ( 20, Scale | Mark. List | FFD_BoxTag, i_Ind ) +% FFD_THICKNESS_2D ( 21, Scale | Mark. List | FFD_BoxTag, i_Ind ) +% FFD_TWIST_2D ( 22, Scale | Mark. List | FFD_BoxTag, x_Orig, y_Orig ) +% HICKS_HENNE ( 30, Scale | Mark. List | Lower(0)/Upper(1) side, x_Loc ) +% ANGLE_OF_ATTACK ( 101, Scale | Mark. List | 1.0 ) +% +% 3D Design variables +% FFD_CONTROL_POINT ( 11, Scale | Mark. List | FFD_BoxTag, i_Ind, j_Ind, k_Ind, x_Mov, y_Mov, z_Mov ) +% FFD_NACELLE ( 12, Scale | Mark. List | FFD_BoxTag, rho_Ind, theta_Ind, phi_Ind, rho_Mov, phi_Mov ) +% FFD_GULL ( 13, Scale | Mark. List | FFD_BoxTag, j_Ind ) +% FFD_CAMBER ( 14, Scale | Mark. List | FFD_BoxTag, i_Ind, j_Ind ) +% FFD_TWIST ( 15, Scale | Mark. List | FFD_BoxTag, j_Ind, x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) +% FFD_THICKNESS ( 16, Scale | Mark. List | FFD_BoxTag, i_Ind, j_Ind ) +% FFD_ROTATION ( 18, Scale | Mark. List | FFD_BoxTag, x_Axis, y_Axis, z_Axis, x_Turn, y_Turn, z_Turn ) +% FFD_ANGLE_OF_ATTACK ( 24, Scale | Mark. List | FFD_BoxTag, 1.0 ) +% +% Global design variables +% TRANSLATION ( 1, Scale | Mark. List | x_Disp, y_Disp, z_Disp ) +% ROTATION ( 2, Scale | Mark. List | x_Axis, y_Axis, z_Axis, x_Turn, y_Turn, z_Turn ) +% +% Optimization objective function with scaling factor +% ex= Objective * Scale +OPT_OBJECTIVE= DRAG * 0.001 +% +% Optimization constraint functions with scaling factors, separated by semicolons +% ex= (Objective = Value ) * Scale, use '>','<','=' +OPT_CONSTRAINT= ( LIFT > 0.327 ) * 0.001; ( MOMENT_Z > 0.0 ) * 0.001; ( AIRFOIL_THICKNESS > 0.12 ) * 0.001 +% +% Optimization design variables, separated by semicolons +DEFINITION_DV= ( 30, 1.0 | airfoil | 0, 0.05 ); ( 30, 1.0 | airfoil | 0, 0.10 ); ( 30, 1.0 | airfoil | 0, 0.15 ); ( 30, 1.0 | airfoil | 0, 0.20 ); ( 30, 1.0 | airfoil | 0, 0.25 ); ( 30, 1.0 | airfoil | 0, 0.30 ); ( 30, 1.0 | airfoil | 0, 0.35 ); ( 30, 1.0 | airfoil | 0, 0.40 ); ( 30, 1.0 | airfoil | 0, 0.45 ); ( 30, 1.0 | airfoil | 0, 0.50 ); ( 30, 1.0 | airfoil | 0, 0.55 ); ( 30, 1.0 | airfoil | 0, 0.60 ); ( 30, 1.0 | airfoil | 0, 0.65 ); ( 30, 1.0 | airfoil | 0, 0.70 ); ( 30, 1.0 | airfoil | 0, 0.75 ); ( 30, 1.0 | airfoil | 0, 0.80 ); ( 30, 1.0 | airfoil | 0, 0.85 ); ( 30, 1.0 | airfoil | 0, 0.90 ); ( 30, 1.0 | airfoil | 0, 0.95 ); ( 30, 1.0 | airfoil | 1, 0.05 ); ( 30, 1.0 | airfoil | 1, 0.10 ); ( 30, 1.0 | airfoil | 1, 0.15 ); ( 30, 1.0 | airfoil | 1, 0.20 ); ( 30, 1.0 | airfoil | 1, 0.25 ); ( 30, 1.0 | airfoil | 1, 0.30 ); ( 30, 1.0 | airfoil | 1, 0.35 ); ( 30, 1.0 | airfoil | 1, 0.40 ); ( 30, 1.0 | airfoil | 1, 0.45 ); ( 30, 1.0 | airfoil | 1, 0.50 ); ( 30, 1.0 | airfoil | 1, 0.55 ); ( 30, 1.0 | airfoil | 1, 0.60 ); ( 30, 1.0 | airfoil | 1, 0.65 ); ( 30, 1.0 | airfoil | 1, 0.70 ); ( 30, 1.0 | airfoil | 1, 0.75 ); ( 30, 1.0 | airfoil | 1, 0.80 ); ( 30, 1.0 | airfoil | 1, 0.85 ); ( 30, 1.0 | airfoil | 1, 0.90 ); ( 30, 1.0 | airfoil | 1, 0.95 ) diff --git a/TestCases/grad_smooth/oneram6/config.cfg b/TestCases/grad_smooth/oneram6/config.cfg new file mode 100644 index 000000000000..14a748da030a --- /dev/null +++ b/TestCases/grad_smooth/oneram6/config.cfg @@ -0,0 +1,445 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% SU2 configuration file % +% Case description: Sobolev smoothing for gradient on the ONERA M6 wing % +% Author: Thomas Dick (TU Kaiserslautern) % +% Date: 11.11.2021 % +% File Version 7.2.1 "Blackbird" % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% ------------- DIRECT, ADJOINT, AND LINEARIZED PROBLEM DEFINITION ------------% +% +% Physical governing equations (EULER, NAVIER_STOKES, +% WAVE_EQUATION, HEAT_EQUATION, FEM_ELASTICITY, +% POISSON_EQUATION) +SOLVER= RANS +% +% Specify turbulence model (NONE, SA, SA_NEG, SST) +KIND_TURB_MODEL= SST +% +% Mathematical problem (DIRECT, CONTINUOUS_ADJOINT) +MATH_PROBLEM= DISCRETE_ADJOINT +% +% Restart solution (NO, YES) +RESTART_SOL= NO + +% -------------------- COMPRESSIBLE FREE-STREAM DEFINITION --------------------% +% +% Mach number (non-dimensional, based on the free-stream values) +MACH_NUMBER= 0.8395 +% +% Angle of attack (degrees, only for compressible flows) +AOA= 3.06 +% +% Side-slip angle (degrees, only for compressible flows) +SIDESLIP_ANGLE= 0.0 +% +% Init option to choose between Reynolds (default) or thermodynamics quantities +% for initializing the solution (REYNOLDS, TD_CONDITIONS) +INIT_OPTION= REYNOLDS +% +% Free-stream option to choose between density and temperature (default) for +% initializing the solution (TEMPERATURE_FS, DENSITY_FS) +FREESTREAM_OPTION= TEMPERATURE_FS +% +% Free-stream temperature (288.15 K by default) +FREESTREAM_TEMPERATURE= 288.15 +% +% Reynolds number (non-dimensional, based on the free-stream values) +REYNOLDS_NUMBER= 11.72E6 +% +% Reynolds length (1 m by default) +REYNOLDS_LENGTH= 0.64607 + +% ---- IDEAL GAS, POLYTROPIC, VAN DER WAALS AND PENG ROBINSON CONSTANTS -------% +% +% Different gas model (STANDARD_AIR, IDEAL_GAS, VW_GAS, PR_GAS) +FLUID_MODEL= STANDARD_AIR +% +% Ratio of specific heats (1.4 default and the value is hardcoded +% for the model STANDARD_AIR) +GAMMA_VALUE= 1.4 +% +% Specific gas constant (287.058 J/kg*K default and this value is hardcoded +% for the model STANDARD_AIR) +GAS_CONSTANT= 287.058 + +% --------------------------- VISCOSITY MODEL ---------------------------------% +% +% Viscosity model (SUTHERLAND, CONSTANT_VISCOSITY). +VISCOSITY_MODEL= SUTHERLAND +% +% Sutherland Viscosity Ref (1.716E-5 default value for AIR SI) +MU_REF= 1.716E-5 +% +% Sutherland Temperature Ref (273.15 K default value for AIR SI) +MU_T_REF= 273.15 +% +% Sutherland constant (110.4 default value for AIR SI) +SUTHERLAND_CONSTANT= 110.4 + +% --------------------------- THERMAL CONDUCTIVITY MODEL ----------------------% +% +% Conductivity model (CONSTANT_CONDUCTIVITY, CONSTANT_PRANDTL). +CONDUCTIVITY_MODEL= CONSTANT_PRANDTL +% +% Laminar Prandtl number (0.72 (air), only for CONSTANT_PRANDTL) +PRANDTL_LAM= 0.72 +% +% Turbulent Prandtl number (0.9 (air), only for CONSTANT_PRANDTL) +PRANDTL_TURB= 0.90 + +% ---------------------- REFERENCE VALUE DEFINITION ---------------------------% +% +% Reference origin for moment computation +REF_ORIGIN_MOMENT_X = 0.25 +REF_ORIGIN_MOMENT_Y = 0.00 +REF_ORIGIN_MOMENT_Z = 0.00 +% +% Reference length for pitching, rolling, and yawing non-dimensional moment +REF_LENGTH= 0.64607 +% +% Reference area for force coefficients (0 implies automatic calculation) +REF_AREA= 0 +% +% Compressible flow non-dimensionalization (DIMENSIONAL, FREESTREAM_PRESS_EQ_ONE, +% FREESTREAM_VEL_EQ_MACH, FREESTREAM_VEL_EQ_ONE) +REF_DIMENSIONALIZATION= FREESTREAM_VEL_EQ_ONE + +% -------------------- BOUNDARY CONDITION DEFINITION --------------------------% +% +% Navier-Stokes wall boundary marker(s) (NONE = no marker) +MARKER_HEATFLUX= ( WING, 0.0 ) +% +% Far-field boundary marker(s) (NONE = no marker) +MARKER_FAR= ( FARFIELD ) +% +% Symmetry boundary marker(s) (NONE = no marker) +MARKER_SYM= ( SYMMETRY ) +% +% Marker(s) of the surface to be plotted or designed +MARKER_PLOTTING= ( WING ) +% +% Marker(s) of the surface where the functional (Cd, Cl, etc.) will be evaluated +MARKER_MONITORING= ( WING ) + +% ------------- COMMON PARAMETERS DEFINING THE NUMERICAL METHOD ---------------% +% +% Numerical method for spatial gradients (GREEN_GAUSS, WEIGHTED_LEAST_SQUARES) +NUM_METHOD_GRAD= GREEN_GAUSS +% +% Courant-Friedrichs-Lewy condition of the finest grid +CFL_NUMBER= 100.0 +% +% Adaptive CFL number (NO, YES) +CFL_ADAPT= NO +% +% Parameters of the adaptive CFL number (factor down, factor up, CFL min value, +% CFL max value ) +CFL_ADAPT_PARAM= ( 1.5, 0.5, 25.0, 100000.0 ) +% +% Runge-Kutta alpha coefficients +RK_ALPHA_COEFF= ( 0.66667, 0.66667, 1.000000 ) +% +% Number of total iterations +ITER= 2 +% +% Objective function in gradient evaluation (DRAG, LIFT, SIDEFORCE, MOMENT_X, +% MOMENT_Y, MOMENT_Z, EFFICIENCY, +% EQUIVALENT_AREA, NEARFIELD_PRESSURE, +% FORCE_X, FORCE_Y, FORCE_Z, THRUST, +% TORQUE, TOTAL_HEATFLUX, +% MAXIMUM_HEATFLUX, INVERSE_DESIGN_PRESSURE, +% INVERSE_DESIGN_HEATFLUX, SURFACE_TOTAL_PRESSURE, +% SURFACE_MASSFLOW, SURFACE_STATIC_PRESSURE, SURFACE_MACH) +% For a weighted sum of objectives: separate by commas, add OBJECTIVE_WEIGHT and MARKER_MONITORING in matching order. +OBJECTIVE_FUNCTION= DRAG +% +SMOOTH_GRADIENT = YES +% +SMOOTHING_EPSILON1 = 51.8116714655595 +% +SMOOTHING_EPSILON2 = 0.700463534712351 +% +SECOND_ORDER_INTEGRATION = YES +% +SMOOTH_ON_SURFACE=YES +% +SOBOLEV_MODE=PARAM_LEVEL_COMPLETE + +% ------------------------ LINEAR SOLVER DEFINITION ---------------------------% +% +% Linear solver for the implicit (or discrete adjoint) formulation (BCGSTAB, FGMRES) +LINEAR_SOLVER= FGMRES +% +% Preconditioner of the Krylov linear solver (NONE, JACOBI, LINELET) +LINEAR_SOLVER_PREC= ILU +% +% Min error of the linear solver for the implicit formulation +LINEAR_SOLVER_ERROR= 1E-10 +% +% Max number of iterations of the linear solver for the implicit formulation +LINEAR_SOLVER_ITER= 10 + +% -------------------------- MULTIGRID PARAMETERS -----------------------------% +% +% Multi-Grid Levels (0 = no multi-grid) +MGLEVEL= 0 +% +% Multi-grid cycle (V_CYCLE, W_CYCLE, FULLMG_CYCLE) +MGCYCLE= V_CYCLE +% +% Multi-grid pre-smoothing level +MG_PRE_SMOOTH= ( 1, 1, 1, 1 ) +% +% Multi-grid post-smoothing level +MG_POST_SMOOTH= ( 0, 0, 0, 0 ) +% +% Jacobi implicit smoothing of the correction +MG_CORRECTION_SMOOTH= ( 0, 0, 0, 0 ) +% +% Damping factor for the residual restriction +MG_DAMP_RESTRICTION= 0.7 +% +% Damping factor for the correction prolongation +MG_DAMP_PROLONGATION= 0.7 + +% -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------% +% +% Convective numerical method (JST, LAX-FRIEDRICH, CUSP, ROE, AUSM, HLLC, +% TURKEL_PREC, MSW) +CONV_NUM_METHOD_FLOW= JST +% +% Spatial numerical order integration (1ST_ORDER, 2ND_ORDER, 2ND_ORDER_LIMITER) +MUSCL_FLOW= YES +% +% Slope limiter (NONE, VENKATAKRISHNAN, VENKATAKRISHNAN_WANG, +% BARTH_JESPERSEN, VAN_ALBADA_EDGE) +SLOPE_LIMITER_FLOW= VENKATAKRISHNAN +% +% Coefficient for the Venkat's limiter (upwind scheme). A larger values decrease +% the extent of limiting, values approaching zero cause +% lower-order approximation to the solution (0.05 by default) +VENKAT_LIMITER_COEFF= 0.05 +% +% 2nd and 4th order artificial dissipation coefficients for +% the JST method ( 0.5, 0.02 by default ) +JST_SENSOR_COEFF= ( 0.5, 0.0078125 ) +% +% Time discretization (RUNGE-KUTTA_EXPLICIT, EULER_IMPLICIT, EULER_EXPLICIT) +TIME_DISCRE_FLOW= EULER_IMPLICIT + +% -------------------- TURBULENT NUMERICAL METHOD DEFINITION ------------------% +% +% Convective numerical method (SCALAR_UPWIND) +CONV_NUM_METHOD_TURB= SCALAR_UPWIND +% +% Monotonic Upwind Scheme for Conservation Laws (TVD) in the turbulence equations. +% Required for 2nd order upwind schemes (NO, YES) +MUSCL_TURB= NO +% +% Slope limiter (VENKATAKRISHNAN, MINMOD) +SLOPE_LIMITER_TURB= VENKATAKRISHNAN +% +% Time discretization (EULER_IMPLICIT) +TIME_DISCRE_TURB= EULER_IMPLICIT + +% ----------------------- GEOMETRY EVALUATION PARAMETERS ----------------------% +% +% Marker(s) of the surface where geometrical based function will be evaluated +GEO_MARKER= ( WING ) +% +% Description of the geometry to be analyzed (AIRFOIL, WING, FUSELAGE) +GEO_DESCRIPTION= WING +% +% Coordinate of the stations to be analyzed +GEO_LOCATION_STATIONS= (0.0, 0.2, 0.4, 0.6, 0.8) +% +% Geometrical bounds (Y coordinate) for the wing geometry analysis or +% fuselage evaluation (X coordinate) +GEO_BOUNDS= (0, 0.8) +% +% Plot loads and Cp distributions on each airfoil section +GEO_PLOT_STATIONS= YES +% +% Number of section cuts to make when calculating wing geometry +GEO_NUMBER_STATIONS= 25 +% +% Geometrical evaluation mode (FUNCTION, GRADIENT) +GEO_MODE= GRADIENT + +% --------------------------- CONVERGENCE PARAMETERS --------------------------% +% +% Convergence criteria (CAUCHY, RESIDUAL) +CONV_FIELD= RMS_DENSITY, RMS_ADJ_DENSITY +% +CONV_CRITERIA= RESIDUAL +% +% Min value of the residual (log10 of the residual) +CONV_RESIDUAL_MINVAL= -16 +% +% Start convergence criteria at iteration number +CONV_STARTITER= 10 +% +% Number of elements to apply the criteria +CONV_CAUCHY_ELEMS= 100 +% +% Epsilon to control the series convergence +CONV_CAUCHY_EPS= 1E-16 + +% ------------------------- INPUT/OUTPUT INFORMATION --------------------------% +% +% Mesh input file +MESH_FILENAME= mesh_tutorial_ffd.su2 +% +% Mesh input file format (SU2, CGNS, NETCDF_ASCII) +MESH_FORMAT= SU2 +% +% Mesh output file +MESH_OUT_FILENAME= mesh_tutorial_ffd_deform.su2 +% +% Restart flow input file +SOLUTION_FILENAME= solution_flow.dat +% +% Restart adjoint input file +SOLUTION_ADJ_FILENAME= solution_adj.dat +% +% Output file format (PARAVIEW, TECPLOT, STL) +TABULAR_FORMAT= TECPLOT +% +% Output file convergence history (w/o extension) +CONV_FILENAME= history +% +% Output file restart flow +RESTART_FILENAME= restart_flow.dat +% +% Output file restart adjoint +RESTART_ADJ_FILENAME= restart_adj.dat +% +% Output file flow (w/o extension) variables +VOLUME_FILENAME= flow +% +% Output file adjoint (w/o extension) variables +VOLUME_ADJ_FILENAME= adjoint +% +% Output objective function gradient +GRAD_OBJFUNC_FILENAME= of_grad.dat +% +% Output objective function hessian +HESS_OBJFUNC_FILENAME= of_hess.dat +% +% Output file surface flow coefficient (w/o extension) +SURFACE_FILENAME= surface_flow +% +% Output file surface adjoint coefficient (w/o extension) +SURFACE_ADJ_FILENAME= surface_adjoint +% +% Writing solution file frequency +OUTPUT_WRT_FREQ= 1000 +% +% Writing convergence history frequency +SCREEN_WRT_FREQ_INNER= 10 +% +OUTPUT_FILES= (RESTART, PARAVIEW, SURFACE_PARAVIEW) +% +VOLUME_OUTPUT= (COORDINATES, SOLUTION, PRIMITIVE, SENSITIVITY ) +% +SCREEN_OUTPUT= (INNER_ITER, RMS_DENSITY, RMS_ENERGY, DRAG, LIFT, RMS_ADJ_DENSITY, RMS_ADJ_ENERGY) +% +HISTORY_OUTPUT= (ITER, RMS_RES, AERO_COEFF, SENSITIVITY) + +% -------------------- FREE-FORM DEFORMATION PARAMETERS -----------------------% +% +% Tolerance of the Free-Form Deformation point inversion +FFD_TOLERANCE= 1E-10 +% +% Maximum number of iterations in the Free-Form Deformation point inversion +FFD_ITERATIONS= 500 +% +% FFD box definition: 3D case (FFD_BoxTag, X1, Y1, Z1, X2, Y2, Z2, X3, Y3, Z3, X4, Y4, Z4, +% X5, Y5, Z5, X6, Y6, Z6, X7, Y7, Z7, X8, Y8, Z8) +% 2D case (FFD_BoxTag, X1, Y1, 0.0, X2, Y2, 0.0, X3, Y3, 0.0, X4, Y4, 0.0, +% 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) +FFD_DEFINITION= (WINGBOX, -0.0403, 0, -0.04836, 0.8463,0, -0.04836, 1.209, 1.2896, -0.04836, 0.6851, 1.2896, -0.04836, -0.0403, 0, 0.04836, 0.8463, 0, 0.04836, 1.209, 1.2896, 0.04836, 0.6851, 1.2896, 0.04836) +% +% FFD box degree: 3D case (x_degree, y_degree, z_degree) +% 2D case (x_degree, y_degree, 0) +FFD_DEGREE= (10, 8, 1) +% +% Surface continuity at the intersection with the FFD (1ST_DERIVATIVE, 2ND_DERIVATIVE) +FFD_CONTINUITY= 2ND_DERIVATIVE + +% ----------------------- DESIGN VARIABLE PARAMETERS --------------------------% +% +% Kind of deformation (FFD_SETTING, FFD_CONTROL_POINT_2D, FFD_CAMBER_2D, FFD_THICKNESS_2D, +% HICKS_HENNE, PARABOLIC, +% NACA_4DIGITS, DISPLACEMENT, ROTATION, FFD_CONTROL_POINT, +% FFD_NACELLE, FFD_TWIST, FFD_ROTATION, +% FFD_CAMBER, FFD_THICKNESS, SURFACE_FILE) +DV_KIND= FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT +% +% Marker of the surface in which we are going apply the shape deformation +DV_MARKER= ( WING ) +% +% Parameters of the shape deformation +% - HICKS_HENNE ( Lower Surface (0)/Upper Surface (1)/Only one Surface (2), x_Loc ) +% - NACA_4DIGITS ( 1st digit, 2nd digit, 3rd and 4th digit ) +% - PARABOLIC ( Center, Thickness ) +% - DISPLACEMENT ( x_Disp, y_Disp, z_Disp ) +% - ROTATION ( x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) +% - OBSTACLE ( Center, Bump size ) +% - FFD_CONTROL_POINT ( FFD_BoxTag ID, i_Ind, j_Ind, k_Ind, x_Disp, y_Disp, z_Disp ) +% - FFD_DIHEDRAL_ANGLE ( FFD_BoxTag ID, x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) +% - FFD_TWIST_ANGLE ( FFD_BoxTag ID, x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) +% - FFD_ROTATION ( FFD_BoxTag ID, x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) +% - FFD_CAMBER ( FFD_BoxTag ID, i_Ind, j_Ind ) +% - FFD_THICKNESS ( FFD_BoxTag ID, i_Ind, j_Ind ) +% - FFD_VOLUME ( FFD_BoxTag ID, i_Ind, j_Ind ) +DV_PARAM= ( WINGBOX, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 8.0, 1.0, 0.0, 0.0, 1.0) +% +% New value of the shape deformation +DV_VALUE= 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + +% ------------------------ GRID DEFORMATION PARAMETERS ------------------------% +% +% Linear solver or smoother for implicit formulations (FGMRES, RESTARTED_FGMRES, BCGSTAB) +DEFORM_LINEAR_SOLVER= FGMRES +% +% Number of smoothing iterations for mesh deformation +DEFORM_LINEAR_SOLVER_ITER= 500 +% +% Minimum residual criteria for the linear solver convergence of grid deformation +DEFORM_LINEAR_SOLVER_ERROR= 1E-14 +% +% Print the residuals during mesh deformation to the console (YES, NO) +DEFORM_CONSOLE_OUTPUT= YES +% +% Type of element stiffness imposed for FEA mesh deformation (INVERSE_VOLUME, +% WALL_DISTANCE, CONSTANT_STIFFNESS) +DEFORM_STIFFNESS_TYPE= WALL_DISTANCE + +% --------------------- OPTIMAL SHAPE DESIGN DEFINITION -----------------------% +% +% Optimization objective function with optional scaling factor +% ex= Objective * Scale +OPT_OBJECTIVE= DRAG + +% Optimization constraint functions with scaling factors, separated by semicolons +% ex= (Objective = Value ) * Scale, use '>','<','=' +OPT_CONSTRAINT= (LIFT = 0.2514); ( STATION1_THICKNESS > 0.077); (STATION2_THICKNESS > 0.072); (STATION3_THICKNESS > 0.066); (STATION4_THICKNESS > 0.060); (STATION5_THICKNESS > 0.054) + +% Maximum number of iterations +OPT_ITERATIONS= 20 +% +% Upper bound for each design variable (bound in the python optimizer) +OPT_BOUND_UPPER= 0.1 +% +% Lower bound for each design variable (bound in the python optimizer) +OPT_BOUND_LOWER= -0.1 +% +% List of design variables (Design variables are separated by semicolons) +DEFINITION_DV= ( 11, 1.0 | WING | WINGBOX, 0, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 8, 1, 0.0, 0.0, 1.0 ) + +DV_VALUE_NEW= 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 +DV_VALUE_OLD= 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 diff --git a/TestCases/parallel_regression_AD.py b/TestCases/parallel_regression_AD.py index fbabc4483dfe..40b037e716e3 100644 --- a/TestCases/parallel_regression_AD.py +++ b/TestCases/parallel_regression_AD.py @@ -448,6 +448,23 @@ def main(): pass_list.append(dyn_discadj_fsi.run_filediff()) test_list.append(dyn_discadj_fsi) + #################################################################### + ### Sobolev Gradient Smoothing ### + #################################################################### + + # Sobolev gradient smoothing solver + grad_smooth_oneram6 = TestCase('grad_smooth_sob') + grad_smooth_oneram6.cfg_dir = "grad_smooth/oneram6" + grad_smooth_oneram6.cfg_file = "config.cfg" + grad_smooth_oneram6.test_iter = 2 + grad_smooth_oneram6.su2_exec = "mpirun -n 2 SU2_CFD_AD" + grad_smooth_oneram6.timeout = 1600 + grad_smooth_oneram6.reference_file = "of_hess.dat.ref" + grad_smooth_oneram6.test_file = "of_hess.dat" + pass_list.append(grad_smooth_oneram6.run_filediff()) + test_list.append(grad_smooth_oneram6) + + # Tests summary print('==================================================================') print('Summary of the parallel tests') diff --git a/TestCases/serial_regression_AD.py b/TestCases/serial_regression_AD.py index 8751670c6880..a81013a9d547 100644 --- a/TestCases/serial_regression_AD.py +++ b/TestCases/serial_regression_AD.py @@ -279,7 +279,7 @@ def main(): ###################################### ### RUN TESTS ### - ###################################### + ###################################### pass_list = [ test.run_test() for test in test_list ] @@ -389,6 +389,26 @@ def main(): test_list.append(pywrapper_FEA_AD_FlowLoad) pass_list.append(pywrapper_FEA_AD_FlowLoad.run_test()) + + ################################### + ### Sobolev Gradient Smoothing ### + ################################### + + grad_smooth_naca0012 = TestCase('grad_smooth_naca0012') + grad_smooth_naca0012.cfg_dir = "grad_smooth/naca0012" + grad_smooth_naca0012.cfg_file = "inv_NACA0012_gradsmooth.cfg" + grad_smooth_naca0012.test_iter = 1 + grad_smooth_naca0012.test_vals = [-4.055339, -8.750185, 0.00000, 0.00000] + grad_smooth_naca0012.su2_exec = "SU2_CFD_AD" + grad_smooth_naca0012.timeout = 1600 + grad_smooth_naca0012.tol = 0.00001 + grad_smooth_naca0012.reference_file = "of_hess.dat.ref" + grad_smooth_naca0012.test_file = "of_hess.dat" + pass_list.append(grad_smooth_naca0012.run_test()) + test_list.append(grad_smooth_naca0012) + pass_list.append(grad_smooth_naca0012.run_filediff()) + test_list.append(grad_smooth_naca0012) + # Tests summary print('==================================================================') print('Summary of the serial tests') diff --git a/meson.build b/meson.build index ec4fa07151c8..75aa50b3d30c 100644 --- a/meson.build +++ b/meson.build @@ -198,6 +198,11 @@ if get_option('enable-librom') endif +# Eigen library for linear algebra +if get_option('enable-eigen') + su2_deps += [declare_dependency(include_directories: 'externals/eigen')] +endif + extra_deps = get_option('extra-deps').split(',') foreach dep : extra_deps if dep != '' @@ -278,7 +283,7 @@ message('''--------------------------------------------------------------------- Use './ninja -C @12@ install' to compile and install SU2 '''.format(get_option('prefix')+'/bin', meson.source_root(), get_option('enable-tecio'), get_option('enable-cgns'), get_option('enable-autodiff'), get_option('enable-directdiff'), get_option('enable-pywrapper'), get_option('enable-mkl'), - get_option('enable-openblas'), get_option('enable-pastix'), get_option('enable-mixedprec'), get_option('enable-librom'), meson.build_root().split('/')[-1])) + get_option('enable-openblas'), get_option('enable-pastix'), get_option('enable-mixedprec'), get_option('enable-librom'), get_option('enable-eigen'), meson.build_root().split('/')[-1])) if get_option('enable-mpp') message(''' To run SU2 with Mutation++ library, add these lines to your .bashrc file: @@ -297,3 +302,8 @@ if get_option('enable-librom') '''.format(get_option('librom_root'))) endif + +if get_option('enable-eigen') + message(''' To run SU2 with Eigen, make sure you added Eigen to externals/eigen/. ''') + +endif diff --git a/meson_options.txt b/meson_options.txt index 05a0b2c64fbc..bf2b00e9c44c 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -16,6 +16,7 @@ option('scotch_root', type : 'string', value : 'externals/scotch/', description: option('custom-mpi', type : 'boolean', value : false, description: 'enable MPI assuming the compiler and/or env vars give the correct include dirs and linker args.') option('enable-tests', type : 'boolean', value : false, description: 'compile Unit Tests') option('enable-mixedprec', type : 'boolean', value : false, description: 'use single precision floating point arithmetic for sparse algebra') +option('enable-eigen', type : 'boolean', value : true, description: 'Include of the Eigen linear algebra library') option('extra-deps', type : 'string', value : '', description: 'comma-separated list of extra (custom) dependencies to add for compilation') option('enable-mpp', type : 'boolean', value : false, description: 'enable Mutation++ support') option('opdi-backend', type : 'combo', choices : ['auto', 'macro', 'ompt'], value : 'auto', description: 'OpDiLib backend choice') From f29dcfc35bf50d7e4e2543dfddf195bcaa3d2cc7 Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Thu, 18 Nov 2021 18:41:35 +0100 Subject: [PATCH 02/26] Added Eigen as a submodule. --- .gitmodules | 3 +++ externals/eigen | 1 + meson.build | 8 ++------ 3 files changed, 6 insertions(+), 6 deletions(-) create mode 160000 externals/eigen diff --git a/.gitmodules b/.gitmodules index ae2967618b2b..98e114a345a6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -18,3 +18,6 @@ [submodule "externals/opdi"] path = externals/opdi url = https://github.com/SciCompKL/OpDiLib +[submodule "externals/eigen"] + path = externals/eigen + url = https://gitlab.com/libeigen/eigen.git diff --git a/externals/eigen b/externals/eigen new file mode 160000 index 000000000000..824d06eb3635 --- /dev/null +++ b/externals/eigen @@ -0,0 +1 @@ +Subproject commit 824d06eb36355528d3e2aa97b01711e1ca8a4ca6 diff --git a/meson.build b/meson.build index 75aa50b3d30c..875a4a991b93 100644 --- a/meson.build +++ b/meson.build @@ -198,8 +198,9 @@ if get_option('enable-librom') endif -# Eigen library for linear algebra +# Eigen library dependencies if get_option('enable-eigen') + su2_cpp_args += '-DHAVE_EIGEN' su2_deps += [declare_dependency(include_directories: 'externals/eigen')] endif @@ -302,8 +303,3 @@ if get_option('enable-librom') '''.format(get_option('librom_root'))) endif - -if get_option('enable-eigen') - message(''' To run SU2 with Eigen, make sure you added Eigen to externals/eigen/. ''') - -endif From b41e5bb59e96dd063d28987a6679598581f8e0bf Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Fri, 19 Nov 2021 17:52:09 +0100 Subject: [PATCH 03/26] Made second order Gauss quadrature the norm for finite elments in the Sobolev smoothing solver. --- Common/include/CConfig.hpp | 7 ---- Common/include/option_structure.hpp | 2 +- Common/src/CConfig.cpp | 2 -- Common/src/geometry/elements/CTRIA1.cpp | 12 +++---- Common/src/grid_movement/CSurfaceMovement.cpp | 2 +- .../src/grid_movement/CVolumetricMovement.cpp | 4 +-- Common/src/linear_algebra/CSysSolve.cpp | 3 -- .../solvers/CGradientSmoothingSolver.hpp | 32 ++++++------------- .../src/solvers/CGradientSmoothingSolver.cpp | 25 +++++++-------- .../naca0012/inv_NACA0012_gradsmooth.cfg | 2 -- TestCases/grad_smooth/oneram6/config.cfg | 2 -- 11 files changed, 31 insertions(+), 62 deletions(-) diff --git a/Common/include/CConfig.hpp b/Common/include/CConfig.hpp index 5abad8bb7455..127d2258b4d5 100644 --- a/Common/include/CConfig.hpp +++ b/Common/include/CConfig.hpp @@ -437,7 +437,6 @@ class CConfig { su2double SmoothingEps1; /*!< \brief Parameter for the identity part in gradient smoothing. */ su2double SmoothingEps2; /*!< \brief Parameter for the Laplace part in gradient smoothing. */ bool SepDim; /*!< \brief Flag for enabling separated calculation for every dimension. */ - bool SecOrdQuad; /*!< \brief Flag for using second order quadrature rules in numerical integration. */ bool SmoothOnSurface; /*!< \brief Flag for assembling the system only on the surface. */ bool DirichletSurfaceBound; /*!< \brief Flag for using zero Dirichlet boundary in the surface case. */ unsigned short NumMode; /*!< \brief temporary flag for some debuging stuff */ @@ -9456,12 +9455,6 @@ class CConfig { */ unsigned short GetSobMode(void) const { return NumMode; } - /*! - * \brief Check if we use second order numerical integration in FE - * \return true means that we use second order accurate methods - */ - bool GetSecOrdQuad(void) const { return SecOrdQuad; } - /*! * \brief Get the name of the file with the hessian of the objective function. * \return Name of the file with the hessian of the objective function. diff --git a/Common/include/option_structure.hpp b/Common/include/option_structure.hpp index bed011bd2633..c09ae5ca98e6 100644 --- a/Common/include/option_structure.hpp +++ b/Common/include/option_structure.hpp @@ -2294,7 +2294,7 @@ static const MapType POD_Map = { }; /*! - * \brief modus of operation for the sobolev smoothing solver. + * \brief mode of operation for the sobolev smoothing solver. */ enum ENUM_SOBOLEV_MODUS { NO_MODUS = 0, /*!< \brief Default option if none is choosen. */ diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index 23535a6004ee..a53eea0cce75 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -1949,8 +1949,6 @@ void CConfig::SetConfig_Options() { addDoubleOption("SMOOTHING_EPSILON2",SmoothingEps2, 1.0); /* DESCRIPTION: Switch to calculate dimensions separated */ addBoolOption("SEPARATE_DIMENSIONS",SepDim, false); - /* DESCRIPTION: Switch to calculate dimensions separated */ - addBoolOption("SECOND_ORDER_INTEGRATION",SecOrdQuad, true); /* DESCRIPTION: Switch to activate working on the surface only */ addBoolOption("SMOOTH_ON_SURFACE",SmoothOnSurface, false); /* DESCRIPTION: Switch to activate zero Dirichlet boundary for surface mode */ diff --git a/Common/src/geometry/elements/CTRIA1.cpp b/Common/src/geometry/elements/CTRIA1.cpp index 88ab7c3a9ba4..7bd7fdd3f270 100644 --- a/Common/src/geometry/elements/CTRIA1.cpp +++ b/Common/src/geometry/elements/CTRIA1.cpp @@ -44,15 +44,15 @@ CTRIA1::CTRIA1() : CElementWithKnownSizes() { Xi = GaussCoord[iGauss][0]; Eta = GaussCoord[iGauss][1]; - val_Ni = 1-Xi-Eta; GaussPoint[iGauss].SetNi(val_Ni,0); - val_Ni = Xi; GaussPoint[iGauss].SetNi(val_Ni,1); - val_Ni = Eta; GaussPoint[iGauss].SetNi(val_Ni,2); + val_Ni = Xi; GaussPoint[iGauss].SetNi(val_Ni,0); + val_Ni = Eta; GaussPoint[iGauss].SetNi(val_Ni,1); + val_Ni = 1-Xi-Eta; GaussPoint[iGauss].SetNi(val_Ni,2); /*--- dN/d xi, dN/d eta ---*/ - dNiXj[iGauss][0][0] = -1.0; dNiXj[iGauss][0][1] = -1.0; - dNiXj[iGauss][1][0] = 1.0; dNiXj[iGauss][1][1] = 0.0; - dNiXj[iGauss][2][0] = 0.0; dNiXj[iGauss][2][1] = 1.0; + dNiXj[iGauss][0][0] = 1.0; dNiXj[iGauss][0][1] = 0.0; + dNiXj[iGauss][1][0] = 0.0; dNiXj[iGauss][1][1] = 1.0; + dNiXj[iGauss][2][0] = -1.0; dNiXj[iGauss][2][1] = -1.0; } diff --git a/Common/src/grid_movement/CSurfaceMovement.cpp b/Common/src/grid_movement/CSurfaceMovement.cpp index 171f78184047..51f8015d4914 100644 --- a/Common/src/grid_movement/CSurfaceMovement.cpp +++ b/Common/src/grid_movement/CSurfaceMovement.cpp @@ -1118,7 +1118,7 @@ void CSurfaceMovement::CheckFFDIntersections(CGeometry *geometry, CConfig *confi if (((config->GetMarker_All_Moving(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_CFD)) || ((config->GetMarker_All_DV(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_DEF)) || ((config->GetMarker_All_DV(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_GEO)) || - ((config->GetMarker_All_DV(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_DOT || config->GetSmoothGradient())) || + ((config->GetMarker_All_DV(iMarker) == YES) && ((Kind_SU2 == SU2_COMPONENT::SU2_DOT) || config->GetSmoothGradient())) || ((config->GetMarker_All_DV(iMarker) == YES) && (config->GetDirectDiff() == D_DESIGN))) { for (iElem = 0; iElem < geometry->GetnElem_Bound(iMarker); iElem++) { diff --git a/Common/src/grid_movement/CVolumetricMovement.cpp b/Common/src/grid_movement/CVolumetricMovement.cpp index dd51252e12b9..b8c478e2db48 100644 --- a/Common/src/grid_movement/CVolumetricMovement.cpp +++ b/Common/src/grid_movement/CVolumetricMovement.cpp @@ -1603,7 +1603,7 @@ void CVolumetricMovement::SetBoundaryDisplacements(CGeometry *geometry, CConfig if (((config->GetMarker_All_Moving(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_CFD)) || ((config->GetMarker_All_DV(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_DEF)) || ((config->GetDirectDiff() == D_DESIGN) && (Kind_SU2 == SU2_COMPONENT::SU2_CFD) && (config->GetMarker_All_DV(iMarker) == YES)) || - ((config->GetMarker_All_DV(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_DOT || config->GetSmoothGradient()))) { + ((config->GetMarker_All_DV(iMarker) == YES) && ((Kind_SU2 == SU2_COMPONENT::SU2_DOT) || config->GetSmoothGradient()))) { for (iVertex = 0; iVertex < geometry->nVertex[iMarker]; iVertex++) { iPoint = geometry->vertex[iMarker][iVertex]->GetNode(); VarCoord = geometry->vertex[iMarker][iVertex]->GetVarCoord(); @@ -1714,7 +1714,7 @@ void CVolumetricMovement::SetBoundaryDerivatives(CGeometry *geometry, CConfig *c } } if (LinSysRes.norm() == 0.0) cout << "Warning: Derivatives are zero!" << endl; - } else if (Kind_SU2 == SU2_COMPONENT::SU2_DOT || (config->GetSmoothGradient() && !ForwardProjectionDerivative) ) { + } else if ((Kind_SU2 == SU2_COMPONENT::SU2_DOT) || (config->GetSmoothGradient() && !ForwardProjectionDerivative) ) { for (iPoint = 0; iPoint < nPoint; iPoint++) { for (iDim = 0; iDim < nDim; iDim++) { diff --git a/Common/src/linear_algebra/CSysSolve.cpp b/Common/src/linear_algebra/CSysSolve.cpp index b7f42fd37127..6872597036d2 100644 --- a/Common/src/linear_algebra/CSysSolve.cpp +++ b/Common/src/linear_algebra/CSysSolve.cpp @@ -1044,9 +1044,6 @@ unsigned long CSysSolve::Solve_b(CSysMatrix & Jacobian, precond->Build(); } - /*--- The gradient treatment needs to build the preconditioner here. ---*/ - if (config->GetSmoothGradient()) precond->Build(); - auto mat_vec = CSysMatrixVectorProduct(Jacobian, geometry, config); /*--- Solve the system ---*/ diff --git a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp index d758cd426f93..096630bb7ebc 100644 --- a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp +++ b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp @@ -358,29 +358,17 @@ class CGradientSmoothingSolver : public CSolver { * \param[out] EL_KIND - Element container index. * \param[out] nNodes - Number of nodes. */ - static void GetElemKindAndNumNodes(unsigned short VTK_Type, bool second, int& EL_KIND, unsigned int& nNodes) { + static void GetElemKindAndNumNodes(unsigned short VTK_Type, int& EL_KIND, unsigned int& nNodes) { /*--- if we need higher order quadrature rules overide some of the element kinds ---*/ - if (second) { - switch (VTK_Type) { - case LINE: nNodes = 2; EL_KIND = EL_LINE; break; - case TRIANGLE: nNodes = 3; EL_KIND = EL_TRIA2; break; - case QUADRILATERAL: nNodes = 4; EL_KIND = EL_QUAD; break; - case TETRAHEDRON: nNodes = 4; EL_KIND = EL_TETRA2; break; - case PYRAMID: nNodes = 5; EL_KIND = EL_PYRAM2; break; - case PRISM: nNodes = 6; EL_KIND = EL_PRISM; break; - case HEXAHEDRON: nNodes = 8; EL_KIND = EL_HEXA; break; - } - } else { - switch (VTK_Type) { - case LINE: nNodes = 2; EL_KIND = EL_LINE; break; - case TRIANGLE: nNodes = 3; EL_KIND = EL_TRIA; break; - case QUADRILATERAL: nNodes = 4; EL_KIND = EL_QUAD; break; - case TETRAHEDRON: nNodes = 4; EL_KIND = EL_TETRA; break; - case PYRAMID: nNodes = 5; EL_KIND = EL_PYRAM; break; - case PRISM: nNodes = 6; EL_KIND = EL_PRISM; break; - case HEXAHEDRON: nNodes = 8; EL_KIND = EL_HEXA; break; - default: assert(false); nNodes = 0; EL_KIND = -(1<<30); break; - } + switch (VTK_Type) { + case LINE: nNodes = 2; EL_KIND = EL_LINE; break; + case TRIANGLE: nNodes = 3; EL_KIND = EL_TRIA2; break; + case QUADRILATERAL: nNodes = 4; EL_KIND = EL_QUAD; break; + case TETRAHEDRON: nNodes = 4; EL_KIND = EL_TETRA2; break; + case PYRAMID: nNodes = 5; EL_KIND = EL_PYRAM2; break; + case PRISM: nNodes = 6; EL_KIND = EL_PRISM; break; + case HEXAHEDRON: nNodes = 8; EL_KIND = EL_HEXA; break; + default: assert(false); nNodes = 0; EL_KIND = -(1<<30); break; } } diff --git a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp index 8a6d51abf680..207c965a26de 100644 --- a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp +++ b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp @@ -46,6 +46,9 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig unsigned int iDim, jDim, marker_count=0; unsigned long iPoint; + /*--- This solver does not perform recording operations --*/ + adjoint = false; + /*--- general geometric settings ---*/ nDim = geometry->GetnDim(); nPoint = geometry->GetnPoint(); @@ -67,19 +70,15 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig if (nDim == 2) { element_container[GRAD_TERM][EL_TRIA] = new CTRIA1(); element_container[GRAD_TERM][EL_QUAD] = new CQUAD4(); - if (config->GetSecOrdQuad()) { - element_container[GRAD_TERM][EL_TRIA2] = new CTRIA3(); - } + element_container[GRAD_TERM][EL_TRIA2] = new CTRIA3(); } else if (nDim == 3) { element_container[GRAD_TERM][EL_TETRA] = new CTETRA1(); element_container[GRAD_TERM][EL_HEXA] = new CHEXA8(); element_container[GRAD_TERM][EL_PYRAM] = new CPYRAM5(); element_container[GRAD_TERM][EL_PRISM] = new CPRISM6(); - if (config->GetSecOrdQuad()) { - element_container[GRAD_TERM][EL_TETRA2] = new CTETRA4(); - element_container[GRAD_TERM][EL_PYRAM2] = new CPYRAM6(); - } + element_container[GRAD_TERM][EL_TETRA2] = new CTETRA4(); + element_container[GRAD_TERM][EL_PYRAM2] = new CPYRAM6(); } /*--- for operations on surfaces we initalize the structures for nDim-1 ---*/ @@ -90,9 +89,7 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig else if (nDim == 3) { element_container[GRAD_TERM][EL_TRIA] = new CTRIA1(); element_container[GRAD_TERM][EL_QUAD] = new CQUAD4(); - if (config->GetSecOrdQuad()) { - element_container[GRAD_TERM][EL_TRIA2] = new CTRIA3(); - } + element_container[GRAD_TERM][EL_TRIA2] = new CTRIA3(); } } @@ -415,7 +412,7 @@ void CGradientSmoothingSolver::Compute_StiffMatrix(CGeometry *geometry, CNumeric for (iElem = 0; iElem < geometry->GetnElem(); iElem++) { - GetElemKindAndNumNodes(geometry->elem[iElem]->GetVTK_Type(), config->GetSecOrdQuad(), EL_KIND, nNodes); + GetElemKindAndNumNodes(geometry->elem[iElem]->GetVTK_Type(), EL_KIND, nNodes); for (iNode = 0; iNode < nNodes; iNode++) { @@ -487,7 +484,7 @@ void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry *geometry, for (iElem = 0; iElem < geometry->GetnElem_Bound(val_marker); iElem++) { /*--- Identify the kind of boundary element ---*/ - GetElemKindAndNumNodes(geometry->bound[val_marker][iElem]->GetVTK_Type(), config->GetSecOrdQuad(), EL_KIND, nNodes); + GetElemKindAndNumNodes(geometry->bound[val_marker][iElem]->GetVTK_Type(), EL_KIND, nNodes); /*--- Retrieve the boundary reference and current coordinates ---*/ @@ -554,7 +551,7 @@ void CGradientSmoothingSolver::Compute_Residual(CGeometry *geometry, CSolver *so for (iElem = 0; iElem < geometry->GetnElem(); iElem++) { - GetElemKindAndNumNodes(geometry->elem[iElem]->GetVTK_Type(), config->GetSecOrdQuad(), EL_KIND, nNodes); + GetElemKindAndNumNodes(geometry->elem[iElem]->GetVTK_Type(), EL_KIND, nNodes); for (iNode = 0; iNode < nNodes; iNode++) { @@ -633,7 +630,7 @@ void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry *geometry, CSo for (iElem = 0; iElem < geometry->GetnElem_Bound(val_marker); iElem++) { /*--- Identify the kind of boundary element ---*/ - GetElemKindAndNumNodes(geometry->bound[val_marker][iElem]->GetVTK_Type(), config->GetSecOrdQuad(), EL_KIND, nNodes); + GetElemKindAndNumNodes(geometry->bound[val_marker][iElem]->GetVTK_Type(), EL_KIND, nNodes); /*--- Retrieve the boundary reference and current coordinates ---*/ for (iNode = 0; iNode < nNodes; iNode++) { diff --git a/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg b/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg index 0e668783a7c1..7b4f7a4b4b23 100644 --- a/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg +++ b/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg @@ -88,8 +88,6 @@ SMOOTHING_EPSILON2 = 0.625 % SEPARATE_DIMENSIONS = NO % -SECOND_ORDER_INTEGRATION = YES -% SMOOTH_ON_SURFACE=YES % DIRICHLET_SURFACE_BOUNDARY=NO diff --git a/TestCases/grad_smooth/oneram6/config.cfg b/TestCases/grad_smooth/oneram6/config.cfg index 14a748da030a..3a9243695a35 100644 --- a/TestCases/grad_smooth/oneram6/config.cfg +++ b/TestCases/grad_smooth/oneram6/config.cfg @@ -162,8 +162,6 @@ SMOOTHING_EPSILON1 = 51.8116714655595 % SMOOTHING_EPSILON2 = 0.700463534712351 % -SECOND_ORDER_INTEGRATION = YES -% SMOOTH_ON_SURFACE=YES % SOBOLEV_MODE=PARAM_LEVEL_COMPLETE From d03a8c58fb9211a9b1b12ebbf9398b717f572e54 Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Mon, 22 Nov 2021 15:13:26 +0100 Subject: [PATCH 04/26] Reworked comments for the Sobolev smoothing solver and fixed compiler warnings. --- Common/include/CConfig.hpp | 22 ++- Common/include/basic_types/ad_structure.hpp | 2 +- Common/include/geometry/elements/CElement.hpp | 11 +- Common/include/linear_algebra/CSysVector.hpp | 4 - Common/src/CConfig.cpp | 16 +- Common/src/geometry/CPhysicalGeometry.cpp | 4 +- Common/src/linear_algebra/CSysMatrix.cpp | 5 +- SU2_CFD/include/numerics/CGradSmoothing.hpp | 2 +- SU2_CFD/include/numerics/CNumerics.hpp | 1 - .../solvers/CGradientSmoothingSolver.hpp | 3 +- SU2_CFD/include/solvers/CSolver.hpp | 3 +- SU2_CFD/include/variables/CVariable.hpp | 4 +- .../src/drivers/CDiscAdjSinglezoneDriver.cpp | 11 +- SU2_CFD/src/drivers/CDriver.cpp | 5 +- SU2_CFD/src/numerics/CGradSmoothing.cpp | 9 +- .../src/solvers/CGradientSmoothingSolver.cpp | 161 +++++++----------- .../variables/CSobolevSmoothingVariable.cpp | 2 +- 17 files changed, 111 insertions(+), 154 deletions(-) diff --git a/Common/include/CConfig.hpp b/Common/include/CConfig.hpp index 127d2258b4d5..7d24be7d7b23 100644 --- a/Common/include/CConfig.hpp +++ b/Common/include/CConfig.hpp @@ -713,7 +713,7 @@ class CConfig { *Marker_All_Fluid_Load, /*!< \brief Global index for markers in which the flow load is computed/employed. */ *Marker_All_PyCustom, /*!< \brief Global index for Python customizable surfaces using the grid information. */ *Marker_All_Designing, /*!< \brief Global index for moving using the grid information. */ - *Marker_All_SobolevBC, /*!< \brief Global index for boundary condition applied to gradient smoothing. */ + *Marker_All_SobolevBC, /*!< \brief Global index for boundary condition applied to gradient smoothing. */ *Marker_CfgFile_Monitoring, /*!< \brief Global index for monitoring using the config information. */ *Marker_CfgFile_Designing, /*!< \brief Global index for monitoring using the config information. */ *Marker_CfgFile_GeoEval, /*!< \brief Global index for monitoring using the config information. */ @@ -775,7 +775,7 @@ class CConfig { SurfAdjCoeff_FileName, /*!< \brief Output file with the adjoint variables on the surface. */ SurfSens_FileName, /*!< \brief Output file for the sensitivity on the surface (discrete adjoint). */ VolSens_FileName, /*!< \brief Output file for the sensitivity in the volume (discrete adjoint). */ - ObjFunc_Hess_FileName; /*!< \brief Hessian of the objective function. */ + ObjFunc_Hess_FileName; /*!< \brief Hessian approximation obtained by the Sobolev smoothing solver. */ bool Wrt_Performance, /*!< \brief Write the performance summary at the end of a calculation. */ @@ -2948,8 +2948,8 @@ class CConfig { unsigned short GetnMarker_Moving(void) const { return nMarker_Moving; } /*! - * \brief Get the total number of gradient markers. - * \return Total number of gradient markers. + * \brief Get the total number of markers for gradient treatment. + * \return Total number of markers for gradient treatment. */ unsigned short GetnMarker_SobolevBC(void) { return nMarker_SobolevBC; } @@ -3316,9 +3316,9 @@ class CConfig { void SetMarker_All_Moving(unsigned short val_marker, unsigned short val_moving) { Marker_All_Moving[val_marker] = val_moving; } /*! - * \brief Set if a marker how val_marker is going to be treated. + * \brief Set if a marker how val_marker is going to be applied in gradient treatment. * \param[in] val_marker - Index of the marker in which we are interested. - * \param[in] val_sobolev - depending on the boundary condition applied + * \param[in] val_sobolev - 0 or 1 depending if the marker is selected. */ void SetMarker_All_SobolevBC(unsigned short val_marker, unsigned short val_sobolev) { Marker_All_SobolevBC[val_marker] = val_sobolev; } @@ -3467,9 +3467,9 @@ class CConfig { unsigned short GetMarker_All_Moving(unsigned short val_marker) const { return Marker_All_Moving[val_marker]; } /*! - * \brief Get the information what boundary to apply for a marker val_marker. + * \brief Get the information if gradient treatment uses a marker val_marker. * \param[in] val_marker - * \return Number Depending on BC + * \return 0 or 1 depending if the marker is going to be selected. */ unsigned short GetMarker_All_SobolevBC(unsigned short val_marker) const { return Marker_All_SobolevBC[val_marker]; } @@ -6035,7 +6035,7 @@ class CConfig { /*! * \brief Get the gradient boundary information from the config definition for the marker val_marker. - * \return gradient boundary information of the boundary in the config information for the marker val_marker. + * \return Gradient boundary information of the boundary in the config information for the marker val_marker. */ unsigned short GetMarker_CfgFile_SobolevBC(string val_marker) const; @@ -6397,7 +6397,7 @@ class CConfig { unsigned short GetMarker_Fluid_Load(string val_marker) const; /*! - * \brief Get the internal index for a gradient boundary condition val_marker. + * \brief Get the internal index for a gradient boundary condition val_marker. * \return Internal index for a gradient boundary condition val_marker. */ unsigned short GetMarker_SobolevBC(string val_marker) const; @@ -9411,8 +9411,6 @@ class CConfig { */ unsigned short GetRom_SaveFreq(void) const { return rom_save_freq; } - /** Config functions related to the gradient smoothing solver. **/ - /*! * \brief Check if the gradient smoothing is active * \return true means that smoothing is applied to the sensitivities diff --git a/Common/include/basic_types/ad_structure.hpp b/Common/include/basic_types/ad_structure.hpp index b49fe9ab9696..07cf1edb2f74 100644 --- a/Common/include/basic_types/ad_structure.hpp +++ b/Common/include/basic_types/ad_structure.hpp @@ -106,7 +106,7 @@ namespace AD{ inline void ComputeAdjoint(unsigned short enter, unsigned short leave) {} /*! - * \brief Computes the adjoints, i.e. the derivatives of the output with respect to the input variables, using forward tape evaluation. + * \brief Computes the adjoints, i.e., the derivatives of the output with respect to the input variables, using forward tape evaluation. */ inline void ComputeAdjointForward() {} diff --git a/Common/include/geometry/elements/CElement.hpp b/Common/include/geometry/elements/CElement.hpp index b336090506b3..0fc67fff23f1 100644 --- a/Common/include/geometry/elements/CElement.hpp +++ b/Common/include/geometry/elements/CElement.hpp @@ -81,8 +81,8 @@ class CElement { unsigned short nNodes; /*!< \brief Number of geometric points. */ unsigned short nDim; /*!< \brief Number of dimension of the problem. */ - su2activematrix HiHj = 0.0; /*!< \brief Scalar product of 2 ansatz functions. */ - std::vector> DHiDHj; /*!< \brief Scalar product of the gradients of 2 ansatz functions. */ + su2activematrix HiHj = 0.0; /*!< \brief Scalar product of 2 ansatz functions. */ + std::vector> DHiDHj; /*!< \brief Scalar product of the gradients of 2 ansatz functions. */ public: enum FrameType {REFERENCE=1, CURRENT=2}; /*!< \brief Type of nodal coordinates. */ @@ -565,7 +565,6 @@ class CElementWithKnownSizes : public CElement { return Jacobian[0][0]; } - FORCEINLINE static su2double JacobianAdjoint(const su2double Jacobian[][2], su2double ad[][2]) { ad[0][0] = Jacobian[1][1]; ad[0][1] = -Jacobian[0][1]; ad[1][0] = -Jacobian[1][0]; ad[1][1] = Jacobian[0][0]; @@ -697,7 +696,7 @@ class CElementWithKnownSizes : public CElement { } else if (NDIM==2) { su2double Jacobian[NDIM+1][NDIM], JTJ[NDIM][NDIM]; - su2double volJacobian, GradN_Xi; + su2double volJacobian; unsigned short iShape, iDim, jDim, jVertex, kDim, iGauss; for (iGauss = 0; iGauss < NGAUSS; iGauss++) { @@ -765,12 +764,9 @@ class CElementWithKnownSizes : public CElement { } } - } - } - public: /*! * \brief Set the value of the gradient of the shape functions wrt the reference configuration. @@ -787,7 +783,6 @@ class CElementWithKnownSizes : public CElement { */ void ComputeGrad_Linear(su2activematrix& Coord) final { ComputeGrad_impl_embedded(Coord); } - }; /*! diff --git a/Common/include/linear_algebra/CSysVector.hpp b/Common/include/linear_algebra/CSysVector.hpp index 1d35928459a7..d39a2a455427 100644 --- a/Common/include/linear_algebra/CSysVector.hpp +++ b/Common/include/linear_algebra/CSysVector.hpp @@ -33,9 +33,6 @@ #include "../parallelization/vectorization.hpp" #include "vector_expressions.hpp" -#include -#include - /*! * \brief OpenMP worksharing construct used in CSysVector for loops. * \note The loop will only run in parallel if methods are called from a @@ -450,7 +447,6 @@ class CSysVector : public VecExpr::CVecExpr, ScalarType> } } } - }; #undef CSYSVEC_PARFOR diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index a53eea0cce75..594b1c4b3094 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -1943,20 +1943,20 @@ void CConfig::SetConfig_Options() { /* DESCRIPTION: Switch to activate gradient smoothing */ addBoolOption("SMOOTH_GRADIENT",SmoothGradient, false); - /* DESCRIPTION: Epsilon of the Laplace Beltrami Operator */ + /* DESCRIPTION: Epsilon of the identity term in the Laplace Beltrami Operator */ addDoubleOption("SMOOTHING_EPSILON1",SmoothingEps1, 1.0); - /* DESCRIPTION: Zeta of the identity term in the Laplace Beltrami Operator */ + /* DESCRIPTION: Epsilon of the Laplace term in the Laplace Beltrami Operator */ addDoubleOption("SMOOTHING_EPSILON2",SmoothingEps2, 1.0); - /* DESCRIPTION: Switch to calculate dimensions separated */ + /* DESCRIPTION: Switch to calculate for each dimension separately */ addBoolOption("SEPARATE_DIMENSIONS",SepDim, false); - /* DESCRIPTION: Switch to activate working on the surface only */ + /* DESCRIPTION: Switch to activate working on the design surfaces only */ addBoolOption("SMOOTH_ON_SURFACE",SmoothOnSurface, false); /* DESCRIPTION: Switch to activate zero Dirichlet boundary for surface mode */ addBoolOption("DIRICHLET_SURFACE_BOUNDARY",DirichletSurfaceBound, false); - /* DESCRIPTION: Switch to activate somecode pieces for debbuging */ + /* DESCRIPTION: Switch to activate the debbuging modus */ addEnumOption("SOBOLEV_MODE",NumMode, Sobolev_Modus_Map,NO_MODUS); /*!\brief HESS_OBJFUNC_FILENAME - * \n DESCRIPTION: Output objective function hessian \ingroup Config*/ + * \n DESCRIPTION: Output filename for the Sobolev Hessian approximation. \ingroup Config*/ addStringOption("HESS_OBJFUNC_FILENAME", ObjFunc_Hess_FileName, string("of_hess.dat")); /* DESCRIPTION: Linear solver for the gradient smoothing\n OPTIONS: see \link Linear_Solver_Map \endlink \n DEFAULT: FGMRES \ingroup Config*/ @@ -2685,7 +2685,7 @@ void CConfig::SetConfig_Options() { /* DESCRIPTION: Optimization gradient factor */ addPythonOption("OPT_GRADIENT_FACTOR"); - + /* DESCRIPTION: Upper bound for the optimizer */ addPythonOption("OPT_BOUND_UPPER"); @@ -2827,7 +2827,7 @@ void CConfig::SetConfig_Options() { /*!\brief MAX_BASIS_DIM \n DESCRIPTION: Maximum number of basis vectors.*/ addUnsignedShortOption("MAX_BASIS_DIM", maxBasisDim, 100); - + /*!\brief ROM_SAVE_FREQ \n DESCRIPTION: How often to save snapshots for unsteady problems.*/ addUnsignedShortOption("ROM_SAVE_FREQ", rom_save_freq, 1); diff --git a/Common/src/geometry/CPhysicalGeometry.cpp b/Common/src/geometry/CPhysicalGeometry.cpp index 262e20ba834c..6c71ae0d69ee 100644 --- a/Common/src/geometry/CPhysicalGeometry.cpp +++ b/Common/src/geometry/CPhysicalGeometry.cpp @@ -180,7 +180,7 @@ CPhysicalGeometry::CPhysicalGeometry(CConfig *config, unsigned short val_iZone, } - /*--- Allocate space for the sensitivity and initialize. ---*/ + /*--- If the gradient smoothing solver is active, allocate space for the sensitivity and initialize. ---*/ if (config->GetSmoothGradient()) { Sensitivity.resize(nPoint,nDim) = su2double(0.0); } @@ -274,7 +274,7 @@ CPhysicalGeometry::CPhysicalGeometry(CGeometry *geometry, LoadVolumeElements(config, geometry); LoadSurfaceElements(config, geometry); - /*--- Allocate space for the sensitivity and initialize. ---*/ + /*--- If the gradient smoothing solver is active, allocate space for the sensitivity and initialize. ---*/ if (config->GetSmoothGradient()) { Sensitivity.resize(nPoint,nDim) = su2double(0.0); } diff --git a/Common/src/linear_algebra/CSysMatrix.cpp b/Common/src/linear_algebra/CSysMatrix.cpp index 0898b43c1b6e..3477630aebb2 100644 --- a/Common/src/linear_algebra/CSysMatrix.cpp +++ b/Common/src/linear_algebra/CSysMatrix.cpp @@ -111,12 +111,13 @@ void CSysMatrix::Initialize(unsigned long npoint, unsigned long npoi (config->GetKind_SU2() == SU2_COMPONENT::SU2_DEF) || (config->GetKind_SU2() == SU2_COMPONENT::SU2_DOT)) { /*--- FEM-type connectivity in non-structural context implies mesh deformation. ---*/ prec = config->GetKind_Deform_Linear_Solver_Prec(); - } else if (config->GetDiscrete_Adjoint() && (prec!=ILU)) { + } + else if (config->GetDiscrete_Adjoint() && (prec!=ILU)) { /*--- Else "upgrade" primal solver settings. ---*/ prec = config->GetKind_DiscAdj_Linear_Prec(); } - /*--- No else, but separat if case! ---*/ + /*--- No else if, but separat if case! ---*/ if (config->GetSmoothGradient() && grad_mode) { prec = config->GetKind_Grad_Linear_Solver_Prec(); } diff --git a/SU2_CFD/include/numerics/CGradSmoothing.hpp b/SU2_CFD/include/numerics/CGradSmoothing.hpp index 009d97a1943e..88cdb996c59c 100644 --- a/SU2_CFD/include/numerics/CGradSmoothing.hpp +++ b/SU2_CFD/include/numerics/CGradSmoothing.hpp @@ -65,7 +65,7 @@ class CGradSmoothing : public CNumerics { void Compute_Tangent_Matrix(CElement *element_container, const CConfig *config); /*! - * \brief set coordinates to a given vector + * \brief Set coordinates to given values. */ void SetCoord(su2activematrix &val_coord); diff --git a/SU2_CFD/include/numerics/CNumerics.hpp b/SU2_CFD/include/numerics/CNumerics.hpp index e561584428ea..1f1033a330b8 100644 --- a/SU2_CFD/include/numerics/CNumerics.hpp +++ b/SU2_CFD/include/numerics/CNumerics.hpp @@ -35,7 +35,6 @@ #include "../../../Common/include/CConfig.hpp" #include "../../../Common/include/linear_algebra/blas_structure.hpp" - #include "../../../Common/include/containers/C2DContainer.hpp" class CElement; diff --git a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp index 096630bb7ebc..e4b7e3d543f2 100644 --- a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp +++ b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp @@ -132,8 +132,7 @@ class CGradientSmoothingSolver : public CSolver { CNumerics **numerics, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, - CConfig *config, - vector additionalGrad) override; + CConfig *config) override; /*! diff --git a/SU2_CFD/include/solvers/CSolver.hpp b/SU2_CFD/include/solvers/CSolver.hpp index 19cae80d7e48..0501599a37bb 100644 --- a/SU2_CFD/include/solvers/CSolver.hpp +++ b/SU2_CFD/include/solvers/CSolver.hpp @@ -4241,8 +4241,7 @@ class CSolver { CNumerics **numerics, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, - CConfig *config, - vector additionalGrad={}) { } + CConfig *config) { } /*! * \brief A virtual member. diff --git a/SU2_CFD/include/variables/CVariable.hpp b/SU2_CFD/include/variables/CVariable.hpp index 8390273ee897..b8b5bb8acfa3 100644 --- a/SU2_CFD/include/variables/CVariable.hpp +++ b/SU2_CFD/include/variables/CVariable.hpp @@ -2242,12 +2242,12 @@ class CVariable { virtual su2double GetSourceTerm_VelAdjoint(unsigned long iPoint, unsigned long iDim) const { return 0.0; } /*! - * \brief Mark a point as boundary of a boundary + * \brief Mark a point as boundary of a design surface boundary */ virtual void MarkAsBoundaryPoint(unsigned long iPoint) {} /*! - * \brief return wether a point is a boundary of a boundary + * \brief return wether a point is a boundary of a design surface boundary */ virtual bool IsBoundaryPoint(unsigned long iPoint) { return false;} diff --git a/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp b/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp index 435f7cca9b56..9cebbef4d1b6 100644 --- a/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp +++ b/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp @@ -522,9 +522,11 @@ void CDiscAdjSinglezoneDriver::DerivativeTreatment() { if (rank == MASTER_NODE) cout << " working on mesh level (including debug mode)" << endl; + /*--- Work with the surface derivatives. ---*/ if (config->GetSmoothOnSurface()) { - unsigned long dvMarker = 1000; + /*--- Select DV marker, or NOT_AVAILABLE if none is specified. ---*/ + unsigned long dvMarker = BC_TYPE::NOT_AVAILABLE; for (unsigned short iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { if ( config->GetMarker_All_DV(iMarker) == YES ) { dvMarker = iMarker; @@ -532,6 +534,7 @@ void CDiscAdjSinglezoneDriver::DerivativeTreatment() { } solver[GRADIENT_SMOOTHING]->ApplyGradientSmoothingSurface(geometry, solver[MainSolver], numerics[GRADIENT_SMOOTHING], config, dvMarker); + /*--- Work with the volume derivatives. ---*/ } else { solver[GRADIENT_SMOOTHING]->ApplyGradientSmoothingVolume(geometry, solver[MainSolver], numerics[GRADIENT_SMOOTHING], config); } @@ -544,12 +547,12 @@ void CDiscAdjSinglezoneDriver::DerivativeTreatment() { solver[GRADIENT_SMOOTHING]->ApplyGradientSmoothingDV(geometry, solver[MainSolver], numerics[GRADIENT_SMOOTHING], surface_movement[ZONE_0], grid_movement[ZONE_0][INST_0], config); - /*--- in some OneShot applications we might only need the original gradient. ---*/ + /*--- For some application, e.g. OneShot, we might only need the original gradient. ---*/ } else if (config->GetSobMode()==ONLY_GRAD) { solver[GRADIENT_SMOOTHING]->RecordTapeAndCalculateOriginalGradient(geometry, surface_movement[ZONE_0], grid_movement[ZONE_0][INST_0], config); - /*--- warning if choose mode is unsupported. ---*/ - } else { + /*--- Warning if choose mode is unsupported. ---*/ + } else if (config->GetSobMode()==NO_MODUS) { if (rank == MASTER_NODE) cout << "Unsupported operation modus for the Sobolev Smoothing Solver." << endl; } diff --git a/SU2_CFD/src/drivers/CDriver.cpp b/SU2_CFD/src/drivers/CDriver.cpp index d663dfc8980b..23dfb6042d8a 100644 --- a/SU2_CFD/src/drivers/CDriver.cpp +++ b/SU2_CFD/src/drivers/CDriver.cpp @@ -232,7 +232,8 @@ CDriver::CDriver(char* confFile, unsigned short val_nZone, SU2_Comm MPICommunica } - /*--- For gradient smoothing we need to calculate the projections between volume, surface and design parameters ---*/ + /*--- For gradient smoothing we need to initialize the mesh deformation classes. + * This is in order to calculate the projections between volume, surface and design parameters ---*/ if ( config_container[ZONE_0]->GetSmoothGradient() ) { grid_movement[ZONE_0][INST_0] = new CVolumetricMovement(geometry_container[ZONE_0][INST_0][MESH_0], config_container[ZONE_0]); surface_movement[ZONE_0] = new CSurfaceMovement(); @@ -2255,7 +2256,7 @@ void CDriver::Numerics_Preprocessing(CConfig *config, CGeometry **geometry, CSol } // end "per-thread" allocation loop - /*--- If we want to apply the gradient smoothing we must initialize the numerics here ---*/ + /*--- If we want to apply the gradient smoothing solver we must initialize the numerics classes. ---*/ if(config->GetSmoothGradient()) { if (config->GetSmoothOnSurface()) { numerics[MESH_0][GRADIENT_SMOOTHING][GRAD_TERM] = new CGradSmoothing(nDim-1, config); diff --git a/SU2_CFD/src/numerics/CGradSmoothing.cpp b/SU2_CFD/src/numerics/CGradSmoothing.cpp index dec380d46f0f..39a8a525add4 100644 --- a/SU2_CFD/src/numerics/CGradSmoothing.cpp +++ b/SU2_CFD/src/numerics/CGradSmoothing.cpp @@ -79,7 +79,7 @@ void CGradSmoothing::Compute_Tangent_Matrix(CElement *element, const CConfig *co unsigned int iDim, jDim, iGauss, nGauss, iShape, jShape, nNode; - /*--- need a different number of dimensions if we are on a curved surface --*/ + /*--- If we are on a curved design surface, everything is embedded in one dimension higher. --*/ unsigned int nDimGlobal = nDim; if (config->GetSmoothOnSurface()) nDimGlobal=nDim+1; @@ -88,7 +88,8 @@ void CGradSmoothing::Compute_Tangent_Matrix(CElement *element, const CConfig *co su2double epsilon1 = config->GetSmoothingEps1(); su2double epsilon2 = config->GetSmoothingEps2(); - element->ClearElement(); /*--- Restarts the element: avoids adding over previous results in other elements --*/ + /*--- Restarts the element: avoids adding over previous results in other elements --*/ + element->ClearElement(); nNode = element->GetnNodes(); nGauss = element->GetnGaussPoints(); if (config->GetSmoothOnSurface()) { @@ -97,7 +98,7 @@ void CGradSmoothing::Compute_Tangent_Matrix(CElement *element, const CConfig *co element->ComputeGrad_Linear(); } - /*--- contribution from the gradients of the shape functions ---*/ + /*--- Contribution from the gradients of the shape functions, representing the Laplace term. ---*/ for (iGauss = 0; iGauss < nGauss; iGauss++) { @@ -137,7 +138,7 @@ void CGradSmoothing::Compute_Tangent_Matrix(CElement *element, const CConfig *co } - /*--- contribution from the shape functions themselfes --*/ + /*--- Contribution from the shape functions themselves, representing the indentity term. --*/ for (iGauss = 0; iGauss < nGauss; iGauss++) { diff --git a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp index 207c965a26de..e9feb890cde4 100644 --- a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp +++ b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp @@ -49,20 +49,18 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig /*--- This solver does not perform recording operations --*/ adjoint = false; - /*--- general geometric settings ---*/ + /*--- General geometric settings ---*/ nDim = geometry->GetnDim(); nPoint = geometry->GetnPoint(); nPointDomain = geometry->GetnPointDomain(); nElement = geometry->GetnElem(); - /*--- Here is where we assign the kind of each element ---*/ + /*--- Initialize the element container and assign the kind of each element ---*/ - /*--- First level: different possible terms of the equations ---*/ element_container = new CElement** [MAX_TERMS](); for (unsigned int iTerm = 0; iTerm < MAX_TERMS; iTerm++) element_container[iTerm] = new CElement* [MAX_FE_KINDS](); - /*--- Initialize all subsequent levels ---*/ for (unsigned int iKind = 0; iKind < MAX_FE_KINDS; iKind++) { element_container[GRAD_TERM][iKind] = nullptr; } @@ -81,7 +79,7 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig element_container[GRAD_TERM][EL_PYRAM2] = new CPYRAM6(); } - /*--- for operations on surfaces we initalize the structures for nDim-1 ---*/ + /*--- For operations on surfaces we initalize the structures for nDim-1 ---*/ if (config->GetSmoothOnSurface()) { if (nDim == 2) { element_container[GRAD_TERM][EL_LINE] = new CLINE(); @@ -128,12 +126,12 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig } } - /*--- initializations for debugging ---*/ + /*--- initializations for the debug mode ---*/ if (config->GetSobMode()==DEBUG) { auxVec.Initialize(nPoint, nPointDomain, nDim, 1.0); } - /*--- vectors needed for projection when working on complete system ---*/ + /*--- vectors needed for projection when working on the complete system ---*/ activeCoord.Initialize(nPoint, nPointDomain, nDim, 0.0); helperVecIn.Initialize(nPoint, nPointDomain, nDim, 0.0); helperVecOut.Initialize(nPoint, nPointDomain, nDim, 0.0); @@ -163,7 +161,7 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig } } - /*--- Term ij of the Jacobian ---*/ + /*--- Initialize ij-block for the Jacobian ---*/ Jacobian_block = new su2double*[nDim]; for (iDim = 0; iDim < nDim; iDim++) { Jacobian_block[iDim] = new su2double [nDim]; @@ -181,7 +179,6 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig SolverName = "SOBOLEV"; } - CGradientSmoothingSolver::~CGradientSmoothingSolver(void) { unsigned int iDim; @@ -212,7 +209,6 @@ CGradientSmoothingSolver::~CGradientSmoothingSolver(void) { } - void CGradientSmoothingSolver::ApplyGradientSmoothingVolume(CGeometry *geometry, CSolver *solver, CNumerics **numerics, CConfig *config) { /*--- current dimension if we run consecutive on each dimension ---*/ @@ -223,8 +219,10 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingVolume(CGeometry *geometry, LinSysRes.SetValZero(); Jacobian.SetValZero(); + /*--- Compute the stiffness matrix for the smoothing operator. ---*/ Compute_StiffMatrix(geometry, numerics, config); + /*--- Impose boundary conditions to the RHS and solve the system. ---*/ if ( config->GetSepDim() ) { for (dir = 0; dir < nDim ; dir++) { @@ -255,7 +253,6 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingVolume(CGeometry *geometry, } - void CGradientSmoothingSolver::ApplyGradientSmoothingSurface(CGeometry *geometry, CSolver *solver, CNumerics **numerics, CConfig *config, unsigned long val_marker) { /*--- Set vector and sparse matrix to 0 ---*/ @@ -263,6 +260,7 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingSurface(CGeometry *geometry LinSysRes.SetValZero(); Jacobian.SetValZero(); + /*--- Compute the stiffness matrix for the smoothing operator. ---*/ Compute_Surface_StiffMatrix(geometry, numerics, config, val_marker); Compute_Surface_Residual(geometry, solver, config, val_marker); @@ -271,122 +269,108 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingSurface(CGeometry *geometry BC_Surface_Dirichlet(geometry, config, val_marker); } + /*--- Solve the system and write the result back. ---*/ Solve_Linear_System(geometry, config); WriteSensitivity(geometry, solver, config, val_marker); } +void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CSolver *solver, CNumerics **numerics, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, CConfig *config) { -void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CSolver *solver, CNumerics **numerics, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, CConfig *config, vector additionalGrad) { + unsigned nDVtotal=config->GetnDV_Total(); + unsigned column; + unsigned long iPoint; + unsigned short iDim; + vector seedvector(nDVtotal, 0.0); + hessian = MatrixType::Zero(nDVtotal, nDVtotal); - /// Set to 0 + /*--- Reset the Jacobian to 0 ---*/ Jacobian.SetValZero(); - /// record the parameterization + /*--- Record the parameterization on the AD tape. ---*/ if (rank == MASTER_NODE) cout << " calculate the original gradient" << endl; RecordParameterizationJacobian(geometry, surface_movement, activeCoord, config); - /// calculate the original gradinet + /*--- Calculate the original gradient. ---*/ CalculateOriginalGradient(geometry, grid_movement, config); - /// if there was an initialization, add it too the original gradient - if (additionalGrad.size()==deltaP.size()) { - for (auto iDV = 0; iDV < deltaP.size(); iDV++) { - deltaP[iDV] += additionalGrad[iDV]; - } - } - - /// compute the Hessian column by column + /*--- Compute the full Sobolev Hessian approximation column by column. ---*/ if (rank == MASTER_NODE) cout << " computing the system matrix line by line" << endl; - /// variable declarations - unsigned nDVtotal=config->GetnDV_Total(); - unsigned column, row; - vector seedvector(nDVtotal, 0.0); - hessian = MatrixType::Zero(nDVtotal, nDVtotal); - - /// get matrix vector product for this auto mat_vec = GetStiffnessMatrixVectorProduct(geometry, numerics, config); for (column=0; columnGetSmoothOnSurface()) { - /// perform MPI communication CSysMatrixComms::Initiate(helperVecIn, geometry, config, SOLUTION_MATRIX); CSysMatrixComms::Complete(helperVecIn, geometry, config, SOLUTION_MATRIX); - /// compute the matrix vector product - /// MatrixVector product operator does mpi comm at the end mat_vec(helperVecIn, helperVecAux); - /// delete entries from halo cells, otherwise we get errors for parallel computations - for (auto iPoint = 0; iPoint < geometry->GetnPointDomain(); iPoint++) { - for (auto iDim = 0; iDim < nDim; iDim++) { + /*--- Delete entries from halo cells, otherwise we get errors for parallel computations ---*/ + for (iPoint = 0; iPoint < geometry->GetnPointDomain(); iPoint++) { + for (iDim = 0; iDim < nDim; iDim++) { helperVecOut(iPoint,iDim) = helperVecAux(iPoint,iDim); } } } else { - /// meshdeformation forward + /*--- Forward evaluation of the mesh deformation ---*/ WriteVector2Geometry(geometry,config, helperVecIn); grid_movement->SetVolume_Deformation(geometry, config, false, true, true); ReadVector2Geometry(geometry,config, helperVecIn); - /// perform MPI communication CSysMatrixComms::Initiate(helperVecIn, geometry, config, SOLUTION_MATRIX); CSysMatrixComms::Complete(helperVecIn, geometry, config, SOLUTION_MATRIX); - /// compute the matrix vector product - /// MatrixVector product operator does mpi comm at the end mat_vec(helperVecIn, helperVecAux); - /// delete entries from halo cells, otherwise we get errors for parallel computations - for (auto iPoint = 0; iPoint < geometry->GetnPointDomain(); iPoint++) { - for (auto iDim = 0; iDim < nDim; iDim++) { + /*--- Delete entries from halo cells, otherwise we get errors for parallel computations ---*/ + for (iPoint = 0; iPoint < geometry->GetnPointDomain(); iPoint++) { + for (iDim = 0; iDim < nDim; iDim++) { helperVecOut(iPoint,iDim) = helperVecAux(iPoint,iDim); } } - /// mesh deformation backward + /*--- Forward evaluation of the mesh deformation ---*/ WriteVector2Geometry(geometry,config, helperVecOut); grid_movement->SetVolume_Deformation(geometry, config, false, true, false); ReadVector2Geometry(geometry,config, helperVecOut); } - /// reverse projection + /*--- Reverse mode evaluation, i.e., matrix vector produt with the transposed parameterization Jacobian.---*/ ProjectMeshToDV(geometry, helperVecOut, seedvector, activeCoord, config); - /// extract projected direction + /*--- Extract the projected direction ---*/ hessian.col(column) = Eigen::Map(seedvector.data(), seedvector.size()); } - /// output the matrix + /*--- Output the complete system matrix. ---*/ if (rank == MASTER_NODE) { ofstream SysMatrix(config->GetObjFunc_Hess_FileName()); SysMatrix << hessian.format(CSVFormat); SysMatrix.close(); } - /// calculate and output the treated gradient + /*--- Calculate and output the treated gradient. ---*/ QRdecomposition QR(hessian); VectorType b = Eigen::Map(deltaP.data(), deltaP.size()); VectorType x = QR.solve(b); @@ -396,7 +380,6 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CSo } - void CGradientSmoothingSolver::Compute_StiffMatrix(CGeometry *geometry, CNumerics **numerics, CConfig *config){ unsigned long iElem, iNode; @@ -458,7 +441,6 @@ void CGradientSmoothingSolver::Compute_StiffMatrix(CGeometry *geometry, CNumeric } } - void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry *geometry, CNumerics **numerics, CConfig *config, unsigned long val_marker, unsigned int nSurfDim){ unsigned long iElem, iPoint, iVertex, iSurfDim; @@ -516,13 +498,13 @@ void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry *geometry, DHiDHj = element_container[GRAD_TERM][EL_KIND]->Get_DHiDHj(iNode, jNode); HiHj = element_container[GRAD_TERM][EL_KIND]->Get_HiHj(iNode, jNode); - /*--- TODO: need to do this for all block dimensions which is 2/3D respectively with the same component from surface 1/2D dimension! Maybe rework this inefficiency ---*/ + /*--- Get the calculated stiffness blocks for the current element and add them to the block. ---*/ for (iSurfDim=0; iSurfDimGetnPointDomain(); iPoint++){ if (visited[iPoint]==false) { Jacobian.AddBlock(iPoint, iPoint, mId_Aux); @@ -540,7 +521,6 @@ void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry *geometry, } } - void CGradientSmoothingSolver::Compute_Residual(CGeometry *geometry, CSolver *solver, CConfig *config){ unsigned long iElem; @@ -612,7 +592,6 @@ void CGradientSmoothingSolver::Compute_Residual(CGeometry *geometry, CSolver *so } } - void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry *geometry, CSolver *solver, CConfig *config, unsigned long val_marker){ unsigned long iElem, iPoint, iVertex; @@ -688,13 +667,12 @@ void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry *geometry, CSo } } - void CGradientSmoothingSolver::Impose_BC(CGeometry *geometry, CNumerics **numerics, CConfig *config) { unsigned int iMarker; - /*--- Get the boundary markers and iterate over them ---------------------------------*/ - /* Notice that for no marker we automatically impose Zero Neumann boundary conditions */ + /*--- Get the boundary markers and iterate over them + * This means for no specified marker we automatically impose Zero Neumann boundary conditions. ---*/ for (iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { if (config->GetMarker_All_SobolevBC(iMarker) == YES) { @@ -704,7 +682,6 @@ void CGradientSmoothingSolver::Impose_BC(CGeometry *geometry, CNumerics **numeri } - void CGradientSmoothingSolver::BC_Dirichlet(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics, CConfig *config, unsigned int val_marker) { unsigned long iPoint, iVertex; @@ -724,7 +701,6 @@ void CGradientSmoothingSolver::BC_Dirichlet(CGeometry *geometry, CSolver **solve } - void CGradientSmoothingSolver::BC_Surface_Dirichlet(CGeometry *geometry, CConfig *config, unsigned int val_marker) { unsigned long iPoint, iVertex; @@ -748,30 +724,32 @@ void CGradientSmoothingSolver::BC_Surface_Dirichlet(CGeometry *geometry, CConfig } } - void CGradientSmoothingSolver::Solve_Linear_System(CGeometry *geometry, CConfig *config){ - unsigned long IterLinSol = 0; - /* For MPI prescribe vector entries across the ranks before solving the system. * Analog to FEA solver this is only done for the solution */ CSysMatrixComms::Initiate(LinSysSol, geometry, config); CSysMatrixComms::Complete(LinSysSol, geometry, config); - // elimination shedule + /*--- elimination shedule ---*/ Set_VertexEliminationSchedule(geometry, config); - IterLinSol = System.Solve(Jacobian, LinSysRes, LinSysSol, geometry, config); + SU2_OMP_PARALLEL + { + + auto iter = System.Solve(Jacobian, LinSysRes, LinSysSol, geometry, config); SU2_OMP_MASTER { - SetIterLinSolver(IterLinSol); + SetIterLinSolver(iter); SetResLinSolver(System.GetResidual()); } + END_SU2_OMP_MASTER + } + END_SU2_OMP_PARALLEL } - CSysMatrixVectorProduct CGradientSmoothingSolver::GetStiffnessMatrixVectorProduct(CGeometry *geometry, CNumerics **numerics, CConfig *config) { bool surf = config->GetSmoothOnSurface(); @@ -792,7 +770,6 @@ CSysMatrixVectorProduct CGradientSmoothingSolver::GetStiffnessM return CSysMatrixVectorProduct(Jacobian, geometry, config); } - void CGradientSmoothingSolver::CalculateOriginalGradient(CGeometry *geometry, CVolumetricMovement *grid_movement, CConfig *config) { if (rank == MASTER_NODE) cout << endl << "Calculating the original DV gradient." << endl; @@ -808,19 +785,17 @@ void CGradientSmoothingSolver::CalculateOriginalGradient(CGeometry *geometry, CV OutputDVGradient("orig_grad.dat"); } - void CGradientSmoothingSolver::RecordTapeAndCalculateOriginalGradient(CGeometry *geometry, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, CConfig *config) { - /// record the parameterization + /*--- Record the parameterization on the AD tape. ---*/ if (rank == MASTER_NODE) cout << " calculate the original gradient" << endl; RecordParameterizationJacobian(geometry, surface_movement, activeCoord, config); - /// calculate the original gradinet + /*--- Calculate the original gradient. ---*/ CalculateOriginalGradient(geometry, grid_movement, config); } - void CGradientSmoothingSolver::OutputDVGradient(string out_file) { unsigned iDV; @@ -835,7 +810,6 @@ void CGradientSmoothingSolver::OutputDVGradient(string out_file) { } - void CGradientSmoothingSolver::RecordParameterizationJacobian(CGeometry *geometry, CSurfaceMovement *surface_movement, CSysVector& registeredCoord, CConfig *config) { unsigned int nDim, nMarker, nDV, nDV_Value, nPoint, nVertex; @@ -855,15 +829,15 @@ void CGradientSmoothingSolver::RecordParameterizationJacobian(CGeometry *geometr AD::StartRecording(); - /*--- Register design variables as input and set them to zero - * (since we want to have the derivative at alpha = 0, i.e. for the current design) ---*/ + /*--- Register design variables as input and set them to zero, + * since we want to have the derivative at alpha = 0, i.e. for the current design. ---*/ DV_Value = config->GetDV_Pointer(); for (iDV = 0; iDV < nDV; iDV++){ nDV_Value = config->GetnDV_Value(iDV); for (iDV_Value = 0; iDV_Value < nDV_Value; iDV_Value++){ - /*--- Initilization of su2double with 0.0 resets the index ---*/ + /*--- Initilization of su2double with 0.0 resets the existing AD index. ---*/ DV_Value[iDV][iDV_Value] = 0.0; AD::RegisterInput(DV_Value[iDV][iDV_Value]); @@ -897,7 +871,6 @@ void CGradientSmoothingSolver::RecordParameterizationJacobian(CGeometry *geometr } - void CGradientSmoothingSolver::ProjectDVtoMesh(CGeometry *geometry, std::vector& seeding, CSysVector& result, CSysVector& registeredCoord, CConfig *config) { unsigned int nDim, nMarker, nDV, nDV_Value, nVertex; @@ -938,7 +911,6 @@ void CGradientSmoothingSolver::ProjectDVtoMesh(CGeometry *geometry, std::vector< } - void CGradientSmoothingSolver::ProjectMeshToDV(CGeometry *geometry, CSysVector& sensitivity, std::vector& output, CSysVector& registeredCoord, CConfig *config) { /*--- adjoint surface deformation ---*/ @@ -966,7 +938,7 @@ void CGradientSmoothingSolver::ProjectMeshToDV(CGeometry *geometry, CSysVector& vector) { unsigned long iPoint; unsigned int iDim; @@ -1086,7 +1052,6 @@ void CGradientSmoothingSolver::WriteVector2Geometry(CGeometry *geometry, CConfig } } - void CGradientSmoothingSolver::ReadVector2Geometry(CGeometry *geometry, CConfig *config, CSysVector &vector) { unsigned long iPoint; unsigned int iDim; @@ -1097,7 +1062,6 @@ void CGradientSmoothingSolver::ReadVector2Geometry(CGeometry *geometry, CConfig } } - su2activematrix CGradientSmoothingSolver::GetElementCoordinates(CGeometry *geometry, std::vector& indexNode, int EL_KIND) { su2activematrix Coord; @@ -1153,12 +1117,11 @@ su2activematrix CGradientSmoothingSolver::GetElementCoordinates(CGeometry *geome } - void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry *geometry, CConfig *config) { /*--- Store global point indices of essential BC markers. ---*/ vector myPoints; - unsigned long iPoint; + unsigned long iPoint, iVertex; /*--- get global indexes of Dirichlet boundaries ---*/ @@ -1172,9 +1135,10 @@ void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry *geometry } } - /*--- surface case: design boundary border if Dirichlet condition is set and rank holds part of it. ---*/ + /*--- Surface case: + * Fix design boundary border if Dirichlet condition is set and the current rank holds part of it. ---*/ if ( config->GetDirichletSurfaceBound() && dvMarker!=NOT_AVAILABLE) { - for (auto iVertex = 0; iVertex < geometry->nVertex[dvMarker]; iVertex++) { + for (iVertex = 0; iVertex < geometry->nVertex[dvMarker]; iVertex++) { /*--- Get node index ---*/ iPoint = geometry->vertex[dvMarker][iVertex]->GetNode(); if ( nodes->IsBoundaryPoint(iPoint) ) { @@ -1185,7 +1149,8 @@ void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry *geometry } else { - /*--- volume case: all boundaries where Dirichlet condition is set. ---*/ + /*--- Volume case: + * All boundaries where Dirichlet conditions are set. ---*/ vector markers; for (unsigned short iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { if (config->GetMarker_All_SobolevBC(iMarker) == YES) { @@ -1193,7 +1158,7 @@ void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry *geometry } } for (auto iMarker : markers) { - for (auto iVertex = 0ul; iVertex < geometry->nVertex[iMarker]; iVertex++) { + for (iVertex = 0ul; iVertex < geometry->nVertex[iMarker]; iVertex++) { auto iPoint = geometry->vertex[iMarker][iVertex]->GetNode(); myPoints.push_back(geometry->nodes->GetGlobalIndex(iPoint)); } diff --git a/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp b/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp index 79e01eb65340..572d06736dec 100644 --- a/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp +++ b/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp @@ -46,7 +46,7 @@ CSobolevSmoothingVariable::CSobolevSmoothingVariable(unsigned long npoint, unsig Sensitivity.resize(nPoint,nDim) = su2double(0.0); boundary_vertex = new bool[nPoint]; - for (auto iPoint=0; iPoint Date: Mon, 22 Nov 2021 18:50:27 +0100 Subject: [PATCH 05/26] Added options for the smoothing solver to config_template.cfg. Changed regression tests accordingly. --- Common/src/CConfig.cpp | 2 +- .../src/solvers/CGradientSmoothingSolver.cpp | 8 +- .../naca0012/inv_NACA0012_gradsmooth.cfg | 325 +++++++----- .../{config.cfg => ONERAM6_gradsmooth.cfg} | 489 +++++++++++------- TestCases/parallel_regression_AD.py | 2 +- config_template.cfg | 46 ++ 6 files changed, 545 insertions(+), 327 deletions(-) rename TestCases/grad_smooth/oneram6/{config.cfg => ONERAM6_gradsmooth.cfg} (76%) diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index 594b1c4b3094..e0181b7a6d09 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -1961,7 +1961,7 @@ void CConfig::SetConfig_Options() { /* DESCRIPTION: Linear solver for the gradient smoothing\n OPTIONS: see \link Linear_Solver_Map \endlink \n DEFAULT: FGMRES \ingroup Config*/ addEnumOption("GRAD_LINEAR_SOLVER", Kind_Grad_Linear_Solver, Linear_Solver_Map, FGMRES); - /* \n DESCRIPTION: Preconditioner for the Krylov linear solvers \n OPTIONS: see \link Linear_Solver_Prec_Map \endlink \n DEFAULT: LU_SGS \ingroup Config*/ + /* \n DESCRIPTION: Preconditioner for the Krylov linear solvers \n OPTIONS: see \link Linear_Solver_Prec_Map \endlink \n DEFAULT: ILU \ingroup Config*/ addEnumOption("GRAD_LINEAR_SOLVER_PREC", Kind_Grad_Linear_Solver_Prec, Linear_Solver_Prec_Map, ILU); /* DESCRIPTION: Minimum error threshold for the linear solver for the implicit formulation */ addDoubleOption("GRAD_LINEAR_SOLVER_ERROR", Grad_Linear_Solver_Error, 1E-14); diff --git a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp index e9feb890cde4..3f4d92554730 100644 --- a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp +++ b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp @@ -947,7 +947,7 @@ void CGradientSmoothingSolver::ProjectMeshToDV(CGeometry *geometry, CSysVector numPoints(size); unsigned long num = myPoints.size(); - SU2_MPI::Allgather(&num, 1, MPI_UNSIGNED_LONG, numPoints.data(), 1, MPI_UNSIGNED_LONG, MPI_COMM_WORLD); + SU2_MPI::Allgather(&num, 1, MPI_UNSIGNED_LONG, numPoints.data(), 1, MPI_UNSIGNED_LONG, SU2_MPI::GetComm()); /*--- Global to local map for the halo points of the rank (not covered by the CGeometry map). ---*/ unordered_map Global2Local; @@ -1185,13 +1185,13 @@ void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry *geometry for (int i = 0; i < size; ++i) { /*--- Send our point list. ---*/ if (rank == i) { - SU2_MPI::Bcast(myPoints.data(), numPoints[i], MPI_UNSIGNED_LONG, rank, MPI_COMM_WORLD); + SU2_MPI::Bcast(myPoints.data(), numPoints[i], MPI_UNSIGNED_LONG, rank, SU2_MPI::GetComm()); continue; } /*--- Receive point list. ---*/ vector theirPoints(numPoints[i]); - SU2_MPI::Bcast(theirPoints.data(), numPoints[i], MPI_UNSIGNED_LONG, i, MPI_COMM_WORLD); + SU2_MPI::Bcast(theirPoints.data(), numPoints[i], MPI_UNSIGNED_LONG, i, SU2_MPI::GetComm()); for (auto iPointGlobal : theirPoints) { /*--- Check if the rank has the point. ---*/ diff --git a/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg b/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg index 7b4f7a4b4b23..39959cc58095 100644 --- a/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg +++ b/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg @@ -8,124 +8,156 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % ------------- DIRECT, ADJOINT, AND LINEARIZED PROBLEM DEFINITION ------------% % -% Physical governing equations (EULER, NAVIER_STOKES, -% TNE2_EULER, TNE2_NAVIER_STOKES, -% WAVE_EQUATION, HEAT_EQUATION, FEM_ELASTICITY, -% POISSON_EQUATION) +% Solver type (EULER, NAVIER_STOKES, RANS, +% INC_EULER, INC_NAVIER_STOKES, INC_RANS, +% NEMO_EULER, NEMO_NAVIER_STOKES, +% FEM_EULER, FEM_NAVIER_STOKES, FEM_RANS, FEM_LES, +% HEAT_EQUATION_FVM, ELASTICITY) SOLVER= EULER % -% Mathematical problem (DIRECT, CONTINUOUS_ADJOINT) +% Mathematical problem (DIRECT, CONTINUOUS_ADJOINT, DISCRETE_ADJOINT) +% Defaults to DISCRETE_ADJOINT for the SU2_*_AD codes, and to DIRECT otherwise. MATH_PROBLEM= DISCRETE_ADJOINT % -% Restart solution (NO, YES) -RESTART_SOL= NO +% Axisymmetric simulation, only compressible flows (NO, YES) +AXISYMMETRIC= NO + + +% ------------------------------- SOLVER CONTROL ------------------------------% % -% Read binary restart files (YES, NO) -READ_BINARY_RESTART= YES -% ----------- COMPRESSIBLE AND INCOMPRESSIBLE FREE-STREAM DEFINITION ----------% +% Number of iterations for single-zone problems +ITER= 10 +% +% Convergence field +CONV_FIELD= RMS_DENSITY, RMS_ADJ_DENSITY +% +% Min value of the residual (log10 of the residual) +CONV_RESIDUAL_MINVAL= -12 +% +% Start convergence criteria at iteration number +CONV_STARTITER= 10 +% +% Number of elements to apply the criteria +CONV_CAUCHY_ELEMS= 100 +% +% Epsilon to control the series convergence +CONV_CAUCHY_EPS= 1E-6 + +% -------------------- COMPRESSIBLE FREE-STREAM DEFINITION --------------------% % % Mach number (non-dimensional, based on the free-stream values) MACH_NUMBER= 0.8 % -% Angle of attack (degrees) +% Angle of attack (degrees, only for compressible flows) AOA= 1.25 % -% Free-stream pressure (101325.0 N/m^2 by default, only Euler flows) +% Free-stream pressure (101325.0 N/m^2, 2116.216 psf by default) FREESTREAM_PRESSURE= 101325.0 % -% Free-stream temperature (288.15 K by default) +% Free-stream temperature (288.15 K, 518.67 R by default) FREESTREAM_TEMPERATURE= 288.15 % ---------------------- REFERENCE VALUE DEFINITION ---------------------------% % -% Reference origin for moment computation +% Reference origin for moment computation (m or in) REF_ORIGIN_MOMENT_X = 0.25 REF_ORIGIN_MOMENT_Y = 0.00 REF_ORIGIN_MOMENT_Z = 0.00 % -% Reference length for pitching, rolling, and yawing non-dimensional moment +% Reference length for moment non-dimensional coefficients (m or in) REF_LENGTH= 1.0 % -% Reference area for force coefficients (0 implies automatic calculation) +% Reference area for non-dimensional force coefficients (0 implies automatic +% calculation) (m^2 or in^2) REF_AREA= 1.0 -% ----------------------- BOUNDARY CONDITION DEFINITION -----------------------% +% -------------------- BOUNDARY CONDITION DEFINITION --------------------------% % -% Marker of the Euler boundary (0 = no marker) +% Euler wall boundary marker(s) (NONE = no marker) +% Implementation identical to MARKER_SYM. MARKER_EULER= ( airfoil ) % -% Marker of the far field (0 = no marker) +% Far-field boundary marker(s) (NONE = no marker) MARKER_FAR= ( farfield ) -% -% Marker of the surface which is going to be plotted or designed -MARKER_PLOTTING= ( airfoil ) -% -% Marker of the surface where the functional (Cd, Cl, etc.) will be evaluated -MARKER_MONITORING= ( airfoil ) -% ------------- COMMON PARAMETERS TO DEFINE THE NUMERICAL METHOD --------------% -% Numerical method for spatial gradients (GREEN_GAUSS, LEAST_SQUARES, -% WEIGHTED_LEAST_SQUARES) -NUM_METHOD_GRAD= GREEN_GAUSS -% -% Adjoint problem boundary condition (DRAG, LIFT, SIDEFORCE, MOMENT_X, -% MOMENT_Y, MOMENT_Z, EFFICIENCY, -% EQUIVALENT_AREA, NEARFIELD_PRESSURE, -% FORCE_X, FORCE_Y, FORCE_Z, THRUST, -% TORQUE, FREE_SURFACE, TOTAL_HEAT, -% MAXIMUM_HEATFLUX, INVERSE_DESIGN_PRESSURE, -% INVERSE_DESIGN_HEATFLUX) -OBJECTIVE_FUNCTION= DRAG +% ------------------------ SURFACES IDENTIFICATION ----------------------------% % -% Activate gradient smoothing -SMOOTH_GRADIENT = YES +% Marker(s) of the surface in the surface flow solution file +MARKER_PLOTTING = ( airfoil ) % -SMOOTHING_EPSILON1 = 1.0 +% Marker(s) of the surface where the non-dimensional coefficients are evaluated. +MARKER_MONITORING = ( airfoil ) + +% ------------- COMMON PARAMETERS DEFINING THE NUMERICAL METHOD ---------------% % -SMOOTHING_EPSILON2 = 0.625 +% Numerical method for spatial gradients (GREEN_GAUSS, WEIGHTED_LEAST_SQUARES) +NUM_METHOD_GRAD= GREEN_GAUSS % -SEPARATE_DIMENSIONS = NO +% CFL number (initial value for the adaptive CFL number) +CFL_NUMBER= 5.0 % -SMOOTH_ON_SURFACE=YES +% Adaptive CFL number (NO, YES) +CFL_ADAPT= NO % -DIRICHLET_SURFACE_BOUNDARY=NO +% Runge-Kutta alpha coefficients +RK_ALPHA_COEFF= ( 0.66667, 0.66667, 1.000000 ) % -SOBOLEV_MODE=PARAM_LEVEL_COMPLETE +% Objective function in gradient evaluation (DRAG, LIFT, SIDEFORCE, MOMENT_X, +% MOMENT_Y, MOMENT_Z, EFFICIENCY, BUFFET, +% EQUIVALENT_AREA, NEARFIELD_PRESSURE, +% FORCE_X, FORCE_Y, FORCE_Z, THRUST, +% TORQUE, TOTAL_HEATFLUX, +% MAXIMUM_HEATFLUX, INVERSE_DESIGN_PRESSURE, +% INVERSE_DESIGN_HEATFLUX, SURFACE_TOTAL_PRESSURE, +% SURFACE_MASSFLOW, SURFACE_STATIC_PRESSURE, SURFACE_MACH) +% For a weighted sum of objectives: separate by commas, add OBJECTIVE_WEIGHT and MARKER_MONITORING in matching order. +OBJECTIVE_FUNCTION= DRAG % -HESS_OBJFUNC_FILENAME=of_hess.dat +% List of weighting values when using more than one OBJECTIVE_FUNCTION. Separate by commas and match with MARKER_MONITORING. +OBJECTIVE_WEIGHT = 1.0 + +% ----------- SLOPE LIMITER AND DISSIPATION SENSOR DEFINITION -----------------% % -MARKER_SOBOLEVBC = ( airfoil ) +% Monotonic Upwind Scheme for Conservation Laws (TVD) in the flow equations. +% Required for 2nd order upwind schemes (NO, YES) +MUSCL_FLOW= YES % -% Courant-Friedrichs-Lewy condition of the finest grid -CFL_NUMBER= 5.0 +% Slope limiter (NONE, VENKATAKRISHNAN, VENKATAKRISHNAN_WANG, +% BARTH_JESPERSEN, VAN_ALBADA_EDGE) +SLOPE_LIMITER_FLOW= VENKATAKRISHNAN % -% Adaptive CFL number (NO, YES) -CFL_ADAPT= NO +% Coefficient for the Venkat's limiter (upwind scheme). A larger values decrease +% the extent of limiting, values approaching zero cause +% lower-order approximation to the solution (0.05 by default) +VENKAT_LIMITER_COEFF= 0.03 % -% Parameters of the adaptive CFL number (factor down, factor up, CFL min value, -% CFL max value ) -CFL_ADAPT_PARAM= ( 1.5, 0.5, 1.0, 100.0 ) +% 2nd and 4th order artificial dissipation coefficients for +% the JST method ( 0.5, 0.02 by default ) +JST_SENSOR_COEFF= ( 0.5, 0.02 ) % -% Runge-Kutta alpha coefficients -RK_ALPHA_COEFF= ( 0.66667, 0.66667, 1.000000 ) +% 1st order artificial dissipation coefficients for +% the adjoint Lax–Friedrichs method ( 0.15 by default ) +ADJ_LAX_SENSOR_COEFF= 0.15 % -% Number of total iterations -ITER= 10 +% 2nd, and 4th order artificial dissipation coefficients for +% the adjoint JST method ( 0.5, 0.02 by default ) +ADJ_JST_SENSOR_COEFF= ( 0.5, 0.02 ) % -------------------------- MULTIGRID PARAMETERS -----------------------------% % -% Multi-Grid Levels (0 = no multi-grid) +% Multi-grid levels (0 = no multi-grid) MGLEVEL= 0 % % Multi-grid cycle (V_CYCLE, W_CYCLE, FULLMG_CYCLE) MGCYCLE= W_CYCLE % -% Multi-Grid PreSmoothing Level +% Multi-grid pre-smoothing level MG_PRE_SMOOTH= ( 1, 2, 2, 2 ) % -% Multi-Grid PostSmoothing Level +% Multi-grid post-smoothing level MG_POST_SMOOTH= ( 1, 1, 1, 1 ) % % Jacobi implicit smoothing of the correction @@ -139,58 +171,21 @@ MG_DAMP_PROLONGATION= 1.0 % -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------% % -% Convective numerical method (JST, LAX-FRIEDRICH, CUSP, ROE, AUSM, HLLC, -% TURKEL_PREC, MSW) +% Convective numerical method (JST, JST_KE, JST_MAT, LAX-FRIEDRICH, CUSP, ROE, AUSM, +% AUSMPLUSUP, AUSMPLUSUP2, AUSMPWPLUS, HLLC, TURKEL_PREC, +% SW, MSW, FDS, SLAU, SLAU2, L2ROE, LMROE) CONV_NUM_METHOD_FLOW= JST % -% Monotonic Upwind Scheme for Conservation Laws (TVD) in the flow equations. -% Required for 2nd order upwind schemes (NO, YES) -MUSCL_FLOW= YES -% -% Slope limiter (VENKATAKRISHNAN, MINMOD) -SLOPE_LIMITER_FLOW= VENKATAKRISHNAN -% -% Coefficient for the limiter -VENKAT_LIMITER_COEFF= 0.03 -% -% 2nd and 4th order artificial dissipation coefficients -JST_SENSOR_COEFF= ( 0.5, 0.02 ) -% % Time discretization (RUNGE-KUTTA_EXPLICIT, EULER_IMPLICIT, EULER_EXPLICIT) TIME_DISCRE_FLOW= EULER_IMPLICIT -% ---------------- ADJOINT-FLOW NUMERICAL METHOD DEFINITION -------------------% -% -% Convective numerical method (JST, LAX-FRIEDRICH, ROE) -CONV_NUM_METHOD_ADJFLOW= ROE -% -% Monotonic Upwind Scheme for Conservation Laws (TVD) in the adjoint flow equations. -% Required for 2nd order upwind schemes (NO, YES) -MUSCL_ADJFLOW= YES -% -% Slope limiter (NONE, VENKATAKRISHNAN, BARTH_JESPERSEN, VAN_ALBADA_EDGE, -% SHARP_EDGES, WALL_DISTANCE) -SLOPE_LIMITER_ADJFLOW= NONE -% -% Coefficient for the sharp edges limiter -ADJ_SHARP_LIMITER_COEFF= 3.0 -% -% 2nd, and 4th order artificial dissipation coefficients -ADJ_JST_SENSOR_COEFF= ( 0.5, 0.02 ) -% -% Reduction factor of the CFL coefficient in the adjoint problem -CFL_REDUCTION_ADJFLOW= 0.5 -% -% Time discretization (RUNGE-KUTTA_EXPLICIT, EULER_IMPLICIT) -TIME_DISCRE_ADJFLOW= EULER_IMPLICIT - % ----------------------- DESIGN VARIABLE PARAMETERS --------------------------% % -% Kind of deformation (NO_DEFORMATION, TRANSLATION, ROTATION, SCALE, -% FFD_SETTING, FFD_NACELLE +% Kind of deformation (NO_DEFORMATION, SCALE_GRID, TRANSLATE_GRID, ROTATE_GRID, +% FFD_SETTING, FFD_NACELLE, % FFD_CONTROL_POINT, FFD_CAMBER, FFD_THICKNESS, FFD_TWIST -% FFD_CONTROL_POINT_2D, FFD_CAMBER_2D, FFD_THICKNESS_2D, FFD_TWIST_2D, -% HICKS_HENNE, SURFACE_BUMP) +% FFD_CONTROL_POINT_2D, FFD_CAMBER_2D, FFD_THICKNESS_2D, +% FFD_TWIST_2D, HICKS_HENNE, SURFACE_BUMP, SURFACE_FILE) DV_KIND= HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE % % Marker of the surface in which we are going apply the shape deformation @@ -198,9 +193,9 @@ DV_MARKER= ( airfoil ) % % Parameters of the shape deformation % - NO_DEFORMATION ( 1.0 ) -% - TRANSLATION ( x_Disp, y_Disp, z_Disp ), as a unit vector -% - ROTATION ( x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) -% - SCALE ( 1.0 ) +% - TRANSLATE_GRID ( x_Disp, y_Disp, z_Disp ), as a unit vector +% - ROTATE_GRID ( x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) axis, DV_VALUE in deg. +% - SCALE_GRID ( 1.0 ) % - ANGLE_OF_ATTACK ( 1.0 ) % - FFD_SETTING ( 1.0 ) % - FFD_CONTROL_POINT ( FFD_BoxTag, i_Ind, j_Ind, k_Ind, x_Disp, y_Disp, z_Disp ) @@ -223,31 +218,85 @@ DV_VALUE= 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0. % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % +% Linear solver or smoother for implicit formulations (FGMRES, RESTARTED_FGMRES, BCGSTAB) +DEFORM_LINEAR_SOLVER= FGMRES +% +% Preconditioner of the Krylov linear solver (ILU, LU_SGS, JACOBI) +DEFORM_LINEAR_SOLVER_PREC= ILU +% +% Number of smoothing iterations for mesh deformation +DEFORM_LINEAR_SOLVER_ITER= 1000 +% +% Number of nonlinear deformation iterations (surface deformation increments) +DEFORM_NONLINEAR_ITER= 1 +% +% Minimum residual criteria for the linear solver convergence of grid deformation +DEFORM_LINEAR_SOLVER_ERROR= 1E-14 +% +% Print the residuals during mesh deformation to the console (YES, NO) +DEFORM_CONSOLE_OUTPUT= YES +% % Type of element stiffness imposed for FEA mesh deformation (INVERSE_VOLUME, % WALL_DISTANCE, CONSTANT_STIFFNESS) DEFORM_STIFFNESS_TYPE= WALL_DISTANCE -% --------------------------- CONVERGENCE PARAMETERS --------------------------% +% ----------------------- SOBOLEV GRADIENT SMOOTHING OPTIONS ----------------------% % -% Min value of the residual (log10 of the residual) -CONV_RESIDUAL_MINVAL= -12 +% Activate the gradient smoothing solver for the discrete adjoint driver (NO, YES) +SMOOTH_GRADIENT= YES % -% Start Cauchy criteria at iteration number -CONV_STARTITER= 10 +% Scaling factor for the identity part of the Laplace-Beltrami operator +SMOOTHING_EPSILON1= 1.0 % -% Number of elements to apply the criteria -CONV_CAUCHY_ELEMS= 100 +% Scaling factor for the Laplace part of the Laplace-Beltrami operator +SMOOTHING_EPSILON2= 0.625 % -% Epsilon to control the series convergence -CONV_CAUCHY_EPS= 1E-6 +% Switch for running the smoothing procedure seperately in each space dimension (NO, YES). +SEPARATE_DIMENSIONS= NO +% +% Switch for applying the Sobolev smoothing to the design surface mesh, i.e., instead of the whole volume mesh (NO, YES). +SMOOTH_ON_SURFACE= YES +% +% Use Dirichlet boundary conditions when working on the design surface, only used for SMOOTH_ON_SURFACE= YES (NO, YES). +DIRICHLET_SURFACE_BOUNDARY= NO +% +% Mode how the Sobolev method is applied to the discrete adjoint gradient. +% - NO_MODUS (Default option if none is choosen.) +% - PARAM_LEVEL_COMPLETE (Apply Sobolev smoothing to the projected gradient, w.r.t. the DV.) +% - MESH_LEVEL (Apply Sobolev smoothing to the mesh sensitivities.) +% - DEBUG (Test the finite elements asembly of the Laplace-Beltrami operator.) +% - ONLY_GRAD (Only calculate the classical gradient.) +SOBOLEV_MODE= PARAM_LEVEL_COMPLETE % +% Output filename for the assembled Sobolev smoothing system matrix +HESS_OBJFUNC_FILENAME= of_hess.dat -% ------------------------- INPUT/OUTPUT INFORMATION --------------------------% +% ------------------------- SCREEN/HISTORY VOLUME OUTPUT --------------------------% +% +% Screen output fields (use 'SU2_CFD -d ' to view list of available fields) +SCREEN_OUTPUT= (INNER_ITER, RMS_ADJ_DENSITY, RMS_ADJ_ENERGY, SENS_PRESS, SENS_AOA) +% +% History output groups (use 'SU2_CFD -d ' to view list of available fields) +HISTORY_OUTPUT= (ITER, RMS_RES) +% +% Volume output fields/groups (use 'SU2_CFD -d ' to view list of available fields) +VOLUME_OUTPUT= (COORDINATES, SOLUTION, PRIMITIVE) +% +% Writing frequency for screen output +SCREEN_WRT_FREQ_INNER= 1 +% +% Writing frequency for history output +HISTORY_WRT_FREQ_INNER= 1 +% +% Writing frequency for volume/surface output +OUTPUT_WRT_FREQ= 250 + +% ------------------------- INPUT/OUTPUT FILE INFORMATION --------------------------% % % Mesh input file MESH_FILENAME= mesh_NACA0012_inv.su2 % -% Mesh input file format (SU2, CGNS, NETCDF_ASCII) +% Mesh input file format (SU2, CGNS) MESH_FORMAT= SU2 % % Mesh output file @@ -259,10 +308,17 @@ SOLUTION_FILENAME= solution_flow.dat % Restart adjoint input file SOLUTION_ADJ_FILENAME= solution_adj.dat % -% Output tabular format (CSV, TECPLOT) +% Output tabular file format (TECPLOT, CSV) TABULAR_FORMAT= TECPLOT % -% Output file convergence history (w/o extension) +% Files to output +% Possible formats : (TECPLOT, TECPLOT_BINARY, SURFACE_TECPLOT, +% SURFACE_TECPLOT_BINARY, CSV, SURFACE_CSV, PARAVIEW, PARAVIEW_BINARY, SURFACE_PARAVIEW, +% SURFACE_PARAVIEW_BINARY, MESH, RESTART_BINARY, RESTART_ASCII, CGNS, SURFACE_CGNS, STL) +% default : (RESTART, PARAVIEW, SURFACE_PARAVIEW) +OUTPUT_FILES= (RESTART_ASCII) +% +% Output file convergence history (w/o extension) CONV_FILENAME= history % % Output file restart flow @@ -277,7 +333,7 @@ VOLUME_FILENAME= flow % Output file adjoint (w/o extension) variables VOLUME_ADJ_FILENAME= adjoint % -% Output Objective function gradient (using continuous adjoint) +% Output objective function gradient (using continuous adjoint) GRAD_OBJFUNC_FILENAME= of_grad.dat % % Output file surface flow coefficient (w/o extension) @@ -286,19 +342,17 @@ SURFACE_FILENAME= surface_flow % Output file surface adjoint coefficient (w/o extension) SURFACE_ADJ_FILENAME= surface_adjoint % -% Writing solution file frequency -OUTPUT_WRT_FREQ= 250 -% -% -% Screen output -SCREEN_OUTPUT= (INNER_ITER, RMS_ADJ_DENSITY, RMS_ADJ_ENERGY, SENS_PRESS, SENS_AOA) -% -OUTPUT_FILES=(RESTART_ASCII) -% +% Read binary restart files (YES, NO) +READ_BINARY_RESTART= YES + + + + + % --------------------- OPTIMAL SHAPE DESIGN DEFINITION -----------------------% % % Available flow based objective functions or constraint functions -% DRAG, LIFT, SIDEFORCE, EFFICIENCY, BUFFET, +% DRAG, LIFT, SIDEFORCE, EFFICIENCY, BUFFET, % FORCE_X, FORCE_Y, FORCE_Z, % MOMENT_X, MOMENT_Y, MOMENT_Z, % THRUST, TORQUE, FIGURE_OF_MERIT, @@ -337,11 +391,12 @@ OUTPUT_FILES=(RESTART_ASCII) % TRANSLATION ( 1, Scale | Mark. List | x_Disp, y_Disp, z_Disp ) % ROTATION ( 2, Scale | Mark. List | x_Axis, y_Axis, z_Axis, x_Turn, y_Turn, z_Turn ) % -% Optimization objective function with scaling factor +% Optimization objective function with scaling factor, separated by semicolons. +% To include quadratic penalty function: use OPT_CONSTRAINT option syntax within the OPT_OBJECTIVE list. % ex= Objective * Scale OPT_OBJECTIVE= DRAG * 0.001 % -% Optimization constraint functions with scaling factors, separated by semicolons +% Optimization constraint functions with pushing factors (affects its value, not the gradient in the python scripts), separated by semicolons % ex= (Objective = Value ) * Scale, use '>','<','=' OPT_CONSTRAINT= ( LIFT > 0.327 ) * 0.001; ( MOMENT_Z > 0.0 ) * 0.001; ( AIRFOIL_THICKNESS > 0.12 ) * 0.001 % diff --git a/TestCases/grad_smooth/oneram6/config.cfg b/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg similarity index 76% rename from TestCases/grad_smooth/oneram6/config.cfg rename to TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg index 3a9243695a35..4508f899d304 100644 --- a/TestCases/grad_smooth/oneram6/config.cfg +++ b/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg @@ -10,20 +10,43 @@ % ------------- DIRECT, ADJOINT, AND LINEARIZED PROBLEM DEFINITION ------------% % -% Physical governing equations (EULER, NAVIER_STOKES, -% WAVE_EQUATION, HEAT_EQUATION, FEM_ELASTICITY, -% POISSON_EQUATION) +% Solver type (EULER, NAVIER_STOKES, RANS, +% INC_EULER, INC_NAVIER_STOKES, INC_RANS, +% NEMO_EULER, NEMO_NAVIER_STOKES, +% FEM_EULER, FEM_NAVIER_STOKES, FEM_RANS, FEM_LES, +% HEAT_EQUATION_FVM, ELASTICITY) SOLVER= RANS % -% Specify turbulence model (NONE, SA, SA_NEG, SST) +% Specify turbulence model (NONE, SA, SA_NEG, SST, SA_E, SA_COMP, SA_E_COMP, SST_SUST) KIND_TURB_MODEL= SST % -% Mathematical problem (DIRECT, CONTINUOUS_ADJOINT) +% Mathematical problem (DIRECT, CONTINUOUS_ADJOINT, DISCRETE_ADJOINT) +% Defaults to DISCRETE_ADJOINT for the SU2_*_AD codes, and to DIRECT otherwise. MATH_PROBLEM= DISCRETE_ADJOINT % % Restart solution (NO, YES) RESTART_SOL= NO +% ------------------------------- SOLVER CONTROL ------------------------------% +% +% Number of iterations for single-zone problems +ITER= 2 +% +% Convergence field +CONV_FIELD= RMS_DENSITY, RMS_ADJ_DENSITY +% +% Min value of the residual (log10 of the residual) +CONV_RESIDUAL_MINVAL= -16 +% +% Start convergence criteria at iteration number +CONV_STARTITER= 10 +% +% Number of elements to apply the criteria +CONV_CAUCHY_ELEMS= 100 +% +% Epsilon to control the series convergence +CONV_CAUCHY_EPS= 1E-16 + % -------------------- COMPRESSIBLE FREE-STREAM DEFINITION --------------------% % % Mach number (non-dimensional, based on the free-stream values) @@ -43,31 +66,53 @@ INIT_OPTION= REYNOLDS % initializing the solution (TEMPERATURE_FS, DENSITY_FS) FREESTREAM_OPTION= TEMPERATURE_FS % -% Free-stream temperature (288.15 K by default) +% Free-stream temperature (288.15 K, 518.67 R by default) FREESTREAM_TEMPERATURE= 288.15 % % Reynolds number (non-dimensional, based on the free-stream values) REYNOLDS_NUMBER= 11.72E6 % -% Reynolds length (1 m by default) +% Reynolds length (1 m, 1 inch by default) REYNOLDS_LENGTH= 0.64607 +% +% Compressible flow non-dimensionalization (DIMENSIONAL, FREESTREAM_PRESS_EQ_ONE, +% FREESTREAM_VEL_EQ_MACH, FREESTREAM_VEL_EQ_ONE) +REF_DIMENSIONALIZATION= FREESTREAM_VEL_EQ_ONE + +% ---------------------- REFERENCE VALUE DEFINITION ---------------------------% +% +% Reference origin for moment computation (m or in) +REF_ORIGIN_MOMENT_X = 0.25 +REF_ORIGIN_MOMENT_Y = 0.00 +REF_ORIGIN_MOMENT_Z = 0.00 +% +% Reference length for moment non-dimensional coefficients (m or in) +REF_LENGTH= 0.64607 +% +% Reference area for non-dimensional force coefficients (0 implies automatic +% calculation) (m^2 or in^2) +REF_AREA= 0 +% +% Aircraft semi-span (0 implies automatic calculation) (m or in) +SEMI_SPAN= 0.0 -% ---- IDEAL GAS, POLYTROPIC, VAN DER WAALS AND PENG ROBINSON CONSTANTS -------% +% ---- NONEQUILIBRIUM GAS, IDEAL GAS, POLYTROPIC, VAN DER WAALS AND PENG ROBINSON CONSTANTS -------% % -% Different gas model (STANDARD_AIR, IDEAL_GAS, VW_GAS, PR_GAS) +% Fluid model (STANDARD_AIR, IDEAL_GAS, VW_GAS, PR_GAS, +% CONSTANT_DENSITY, INC_IDEAL_GAS, INC_IDEAL_GAS_POLY, MUTATIONPP, SU2_NONEQ) FLUID_MODEL= STANDARD_AIR % % Ratio of specific heats (1.4 default and the value is hardcoded -% for the model STANDARD_AIR) +% for the model STANDARD_AIR, compressible only) GAMMA_VALUE= 1.4 % -% Specific gas constant (287.058 J/kg*K default and this value is hardcoded -% for the model STANDARD_AIR) +% Specific gas constant (287.058 J/kg*K default and this value is hardcoded +% for the model STANDARD_AIR, compressible only) GAS_CONSTANT= 287.058 % --------------------------- VISCOSITY MODEL ---------------------------------% % -% Viscosity model (SUTHERLAND, CONSTANT_VISCOSITY). +% Viscosity model (SUTHERLAND, CONSTANT_VISCOSITY, POLYNOMIAL_VISCOSITY). VISCOSITY_MODEL= SUTHERLAND % % Sutherland Viscosity Ref (1.716E-5 default value for AIR SI) @@ -81,72 +126,64 @@ SUTHERLAND_CONSTANT= 110.4 % --------------------------- THERMAL CONDUCTIVITY MODEL ----------------------% % -% Conductivity model (CONSTANT_CONDUCTIVITY, CONSTANT_PRANDTL). +% Laminar Conductivity model (CONSTANT_CONDUCTIVITY, CONSTANT_PRANDTL, +% POLYNOMIAL_CONDUCTIVITY). CONDUCTIVITY_MODEL= CONSTANT_PRANDTL % % Laminar Prandtl number (0.72 (air), only for CONSTANT_PRANDTL) PRANDTL_LAM= 0.72 % -% Turbulent Prandtl number (0.9 (air), only for CONSTANT_PRANDTL) +% Turbulent Prandtl number (0.9 (air) by default) PRANDTL_TURB= 0.90 -% ---------------------- REFERENCE VALUE DEFINITION ---------------------------% -% -% Reference origin for moment computation -REF_ORIGIN_MOMENT_X = 0.25 -REF_ORIGIN_MOMENT_Y = 0.00 -REF_ORIGIN_MOMENT_Z = 0.00 -% -% Reference length for pitching, rolling, and yawing non-dimensional moment -REF_LENGTH= 0.64607 -% -% Reference area for force coefficients (0 implies automatic calculation) -REF_AREA= 0 -% -% Compressible flow non-dimensionalization (DIMENSIONAL, FREESTREAM_PRESS_EQ_ONE, -% FREESTREAM_VEL_EQ_MACH, FREESTREAM_VEL_EQ_ONE) -REF_DIMENSIONALIZATION= FREESTREAM_VEL_EQ_ONE - % -------------------- BOUNDARY CONDITION DEFINITION --------------------------% % -% Navier-Stokes wall boundary marker(s) (NONE = no marker) +% Navier-Stokes (no-slip), constant heat flux wall marker(s) (NONE = no marker) +% Format: ( marker name, constant heat flux (J/m^2), ... ) MARKER_HEATFLUX= ( WING, 0.0 ) % % Far-field boundary marker(s) (NONE = no marker) MARKER_FAR= ( FARFIELD ) % % Symmetry boundary marker(s) (NONE = no marker) +% Implementation identical to MARKER_EULER. MARKER_SYM= ( SYMMETRY ) + +% ------------------------ SURFACES IDENTIFICATION ----------------------------% % -% Marker(s) of the surface to be plotted or designed -MARKER_PLOTTING= ( WING ) +% Marker(s) of the surface in the surface flow solution file +MARKER_PLOTTING = ( WING ) % -% Marker(s) of the surface where the functional (Cd, Cl, etc.) will be evaluated -MARKER_MONITORING= ( WING ) +% Marker(s) of the surface where the non-dimensional coefficients are evaluated. +MARKER_MONITORING = ( WING ) % ------------- COMMON PARAMETERS DEFINING THE NUMERICAL METHOD ---------------% % % Numerical method for spatial gradients (GREEN_GAUSS, WEIGHTED_LEAST_SQUARES) NUM_METHOD_GRAD= GREEN_GAUSS % -% Courant-Friedrichs-Lewy condition of the finest grid +% CFL number (initial value for the adaptive CFL number) CFL_NUMBER= 100.0 % % Adaptive CFL number (NO, YES) CFL_ADAPT= NO % -% Parameters of the adaptive CFL number (factor down, factor up, CFL min value, -% CFL max value ) +% Parameters of the adaptive CFL number (factor-down, factor-up, CFL min value, +% CFL max value, acceptable linear solver convergence) +% Local CFL increases by factor-up until max if the solution rate of change is not limited, +% and acceptable linear convergence is achieved. It is reduced if rate is limited, or if there +% is not enough linear convergence, or if the nonlinear residuals are stagnant and oscillatory. +% It is reset back to min when linear solvers diverge, or if nonlinear residuals increase too much. CFL_ADAPT_PARAM= ( 1.5, 0.5, 25.0, 100000.0 ) % +% Maximum Delta Time in local time stepping simulations +MAX_DELTA_TIME= 1E6 +% % Runge-Kutta alpha coefficients RK_ALPHA_COEFF= ( 0.66667, 0.66667, 1.000000 ) % -% Number of total iterations -ITER= 2 -% % Objective function in gradient evaluation (DRAG, LIFT, SIDEFORCE, MOMENT_X, -% MOMENT_Y, MOMENT_Z, EFFICIENCY, +% MOMENT_Y, MOMENT_Z, EFFICIENCY, BUFFET, % EQUIVALENT_AREA, NEARFIELD_PRESSURE, % FORCE_X, FORCE_Y, FORCE_Z, THRUST, % TORQUE, TOTAL_HEATFLUX, @@ -156,25 +193,46 @@ ITER= 2 % For a weighted sum of objectives: separate by commas, add OBJECTIVE_WEIGHT and MARKER_MONITORING in matching order. OBJECTIVE_FUNCTION= DRAG % -SMOOTH_GRADIENT = YES +% List of weighting values when using more than one OBJECTIVE_FUNCTION. Separate by commas and match with MARKER_MONITORING. +OBJECTIVE_WEIGHT = 1.0 + +% ----------- SLOPE LIMITER AND DISSIPATION SENSOR DEFINITION -----------------% +% +% Monotonic Upwind Scheme for Conservation Laws (TVD) in the flow equations. +% Required for 2nd order upwind schemes (NO, YES) +MUSCL_FLOW= YES +% +% Slope limiter (NONE, VENKATAKRISHNAN, VENKATAKRISHNAN_WANG, +% BARTH_JESPERSEN, VAN_ALBADA_EDGE) +SLOPE_LIMITER_FLOW= VENKATAKRISHNAN % -SMOOTHING_EPSILON1 = 51.8116714655595 +% Monotonic Upwind Scheme for Conservation Laws (TVD) in the turbulence equations. +% Required for 2nd order upwind schemes (NO, YES) +MUSCL_TURB= NO % -SMOOTHING_EPSILON2 = 0.700463534712351 +% Slope limiter (NONE, VENKATAKRISHNAN, VENKATAKRISHNAN_WANG, +% BARTH_JESPERSEN, VAN_ALBADA_EDGE) +SLOPE_LIMITER_TURB= VENKATAKRISHNAN % -SMOOTH_ON_SURFACE=YES +% Coefficient for the Venkat's limiter (upwind scheme). A larger values decrease +% the extent of limiting, values approaching zero cause +% lower-order approximation to the solution (0.05 by default) +VENKAT_LIMITER_COEFF= 0.05 % -SOBOLEV_MODE=PARAM_LEVEL_COMPLETE +% 2nd and 4th order artificial dissipation coefficients for +% the JST method ( 0.5, 0.02 by default ) +JST_SENSOR_COEFF= ( 0.5, 0.0078125 ) % ------------------------ LINEAR SOLVER DEFINITION ---------------------------% % -% Linear solver for the implicit (or discrete adjoint) formulation (BCGSTAB, FGMRES) +% Linear solver or smoother for implicit formulations: +% BCGSTAB, FGMRES, RESTARTED_FGMRES, CONJUGATE_GRADIENT (self-adjoint problems only), SMOOTHER. LINEAR_SOLVER= FGMRES % -% Preconditioner of the Krylov linear solver (NONE, JACOBI, LINELET) +% Preconditioner of the Krylov linear solver or type of smoother (ILU, LU_SGS, LINELET, JACOBI) LINEAR_SOLVER_PREC= ILU % -% Min error of the linear solver for the implicit formulation +% Minimum error of the linear solver for implicit formulations LINEAR_SOLVER_ERROR= 1E-10 % % Max number of iterations of the linear solver for the implicit formulation @@ -182,7 +240,7 @@ LINEAR_SOLVER_ITER= 10 % -------------------------- MULTIGRID PARAMETERS -----------------------------% % -% Multi-Grid Levels (0 = no multi-grid) +% Multi-grid levels (0 = no multi-grid) MGLEVEL= 0 % % Multi-grid cycle (V_CYCLE, W_CYCLE, FULLMG_CYCLE) @@ -205,26 +263,11 @@ MG_DAMP_PROLONGATION= 0.7 % -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------% % -% Convective numerical method (JST, LAX-FRIEDRICH, CUSP, ROE, AUSM, HLLC, -% TURKEL_PREC, MSW) +% Convective numerical method (JST, JST_KE, JST_MAT, LAX-FRIEDRICH, CUSP, ROE, AUSM, +% AUSMPLUSUP, AUSMPLUSUP2, AUSMPWPLUS, HLLC, TURKEL_PREC, +% SW, MSW, FDS, SLAU, SLAU2, L2ROE, LMROE) CONV_NUM_METHOD_FLOW= JST % -% Spatial numerical order integration (1ST_ORDER, 2ND_ORDER, 2ND_ORDER_LIMITER) -MUSCL_FLOW= YES -% -% Slope limiter (NONE, VENKATAKRISHNAN, VENKATAKRISHNAN_WANG, -% BARTH_JESPERSEN, VAN_ALBADA_EDGE) -SLOPE_LIMITER_FLOW= VENKATAKRISHNAN -% -% Coefficient for the Venkat's limiter (upwind scheme). A larger values decrease -% the extent of limiting, values approaching zero cause -% lower-order approximation to the solution (0.05 by default) -VENKAT_LIMITER_COEFF= 0.05 -% -% 2nd and 4th order artificial dissipation coefficients for -% the JST method ( 0.5, 0.02 by default ) -JST_SENSOR_COEFF= ( 0.5, 0.0078125 ) -% % Time discretization (RUNGE-KUTTA_EXPLICIT, EULER_IMPLICIT, EULER_EXPLICIT) TIME_DISCRE_FLOW= EULER_IMPLICIT @@ -233,13 +276,6 @@ TIME_DISCRE_FLOW= EULER_IMPLICIT % Convective numerical method (SCALAR_UPWIND) CONV_NUM_METHOD_TURB= SCALAR_UPWIND % -% Monotonic Upwind Scheme for Conservation Laws (TVD) in the turbulence equations. -% Required for 2nd order upwind schemes (NO, YES) -MUSCL_TURB= NO -% -% Slope limiter (VENKATAKRISHNAN, MINMOD) -SLOPE_LIMITER_TURB= VENKATAKRISHNAN -% % Time discretization (EULER_IMPLICIT) TIME_DISCRE_TURB= EULER_IMPLICIT @@ -248,7 +284,7 @@ TIME_DISCRE_TURB= EULER_IMPLICIT % Marker(s) of the surface where geometrical based function will be evaluated GEO_MARKER= ( WING ) % -% Description of the geometry to be analyzed (AIRFOIL, WING, FUSELAGE) +% Description of the geometry to be analyzed (AIRFOIL, WING) GEO_DESCRIPTION= WING % % Coordinate of the stations to be analyzed @@ -259,7 +295,7 @@ GEO_LOCATION_STATIONS= (0.0, 0.2, 0.4, 0.6, 0.8) GEO_BOUNDS= (0, 0.8) % % Plot loads and Cp distributions on each airfoil section -GEO_PLOT_STATIONS= YES +GEO_PLOT_STATIONS= YES % % Number of section cuts to make when calculating wing geometry GEO_NUMBER_STATIONS= 25 @@ -267,85 +303,98 @@ GEO_NUMBER_STATIONS= 25 % Geometrical evaluation mode (FUNCTION, GRADIENT) GEO_MODE= GRADIENT -% --------------------------- CONVERGENCE PARAMETERS --------------------------% -% -% Convergence criteria (CAUCHY, RESIDUAL) -CONV_FIELD= RMS_DENSITY, RMS_ADJ_DENSITY +% ----------------------- SOBOLEV GRADIENT SMOOTHING OPTIONS ----------------------% % -CONV_CRITERIA= RESIDUAL +% Activate the gradient smoothing solver for the discrete adjoint driver (NO, YES) +SMOOTH_GRADIENT= YES % -% Min value of the residual (log10 of the residual) -CONV_RESIDUAL_MINVAL= -16 -% -% Start convergence criteria at iteration number -CONV_STARTITER= 10 +% Scaling factor for the identity part of the Laplace-Beltrami operator +SMOOTHING_EPSILON1= 51.8116714655595 % -% Number of elements to apply the criteria -CONV_CAUCHY_ELEMS= 100 +% Scaling factor for the Laplace part of the Laplace-Beltrami operator +SMOOTHING_EPSILON2= 0.700463534712351 % -% Epsilon to control the series convergence -CONV_CAUCHY_EPS= 1E-16 - -% ------------------------- INPUT/OUTPUT INFORMATION --------------------------% +% Switch for running the smoothing procedure seperately in each space dimension (NO, YES). +SEPARATE_DIMENSIONS= NO % -% Mesh input file -MESH_FILENAME= mesh_tutorial_ffd.su2 +% Switch for applying the Sobolev smoothing to the design surface mesh, i.e., instead of the whole volume mesh (NO, YES). +SMOOTH_ON_SURFACE= YES % -% Mesh input file format (SU2, CGNS, NETCDF_ASCII) -MESH_FORMAT= SU2 +% Use Dirichlet boundary conditions when working on the design surface, only used for SMOOTH_ON_SURFACE= YES (NO, YES). +DIRICHLET_SURFACE_BOUNDARY= NO % -% Mesh output file -MESH_OUT_FILENAME= mesh_tutorial_ffd_deform.su2 +% Marker for boundaries where Dirichlet boundary conditions are applied, only valid if working on the volume mesh. +MARKER_SOBOLEVBC= ( airfoil ) % -% Restart flow input file -SOLUTION_FILENAME= solution_flow.dat +% Mode how the Sobolev method is applied to the discrete adjoint gradient. +% - NO_MODUS (Default option if none is choosen.) +% - PARAM_LEVEL_COMPLETE (Apply Sobolev smoothing to the projected gradient, w.r.t. the DV.) +% - MESH_LEVEL (Apply Sobolev smoothing to the mesh sensitivities.) +% - DEBUG (Test the finite elements asembly of the Laplace-Beltrami operator.) +% - ONLY_GRAD (Only calculate the classical gradient.) +SOBOLEV_MODE= PARAM_LEVEL_COMPLETE % -% Restart adjoint input file -SOLUTION_ADJ_FILENAME= solution_adj.dat -% -% Output file format (PARAVIEW, TECPLOT, STL) -TABULAR_FORMAT= TECPLOT -% -% Output file convergence history (w/o extension) -CONV_FILENAME= history -% -% Output file restart flow -RESTART_FILENAME= restart_flow.dat -% -% Output file restart adjoint -RESTART_ADJ_FILENAME= restart_adj.dat -% -% Output file flow (w/o extension) variables -VOLUME_FILENAME= flow -% -% Output file adjoint (w/o extension) variables -VOLUME_ADJ_FILENAME= adjoint -% -% Output objective function gradient -GRAD_OBJFUNC_FILENAME= of_grad.dat -% -% Output objective function hessian +% Output filename for the assembled Sobolev smoothing system matrix HESS_OBJFUNC_FILENAME= of_hess.dat + +% ----------------------- DESIGN VARIABLE PARAMETERS --------------------------% % -% Output file surface flow coefficient (w/o extension) -SURFACE_FILENAME= surface_flow +% Kind of deformation (NO_DEFORMATION, SCALE_GRID, TRANSLATE_GRID, ROTATE_GRID, +% FFD_SETTING, FFD_NACELLE, +% FFD_CONTROL_POINT, FFD_CAMBER, FFD_THICKNESS, FFD_TWIST +% FFD_CONTROL_POINT_2D, FFD_CAMBER_2D, FFD_THICKNESS_2D, +% FFD_TWIST_2D, HICKS_HENNE, SURFACE_BUMP, SURFACE_FILE) +DV_KIND= FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT % -% Output file surface adjoint coefficient (w/o extension) -SURFACE_ADJ_FILENAME= surface_adjoint +% Marker of the surface in which we are going apply the shape deformation +DV_MARKER= ( WING ) % -% Writing solution file frequency -OUTPUT_WRT_FREQ= 1000 +% Parameters of the shape deformation +% - NO_DEFORMATION ( 1.0 ) +% - TRANSLATE_GRID ( x_Disp, y_Disp, z_Disp ), as a unit vector +% - ROTATE_GRID ( x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) axis, DV_VALUE in deg. +% - SCALE_GRID ( 1.0 ) +% - ANGLE_OF_ATTACK ( 1.0 ) +% - FFD_SETTING ( 1.0 ) +% - FFD_CONTROL_POINT ( FFD_BoxTag, i_Ind, j_Ind, k_Ind, x_Disp, y_Disp, z_Disp ) +% - FFD_NACELLE ( FFD_BoxTag, rho_Ind, theta_Ind, phi_Ind, rho_Disp, phi_Disp ) +% - FFD_GULL ( FFD_BoxTag, j_Ind ) +% - FFD_ANGLE_OF_ATTACK ( FFD_BoxTag, 1.0 ) +% - FFD_CAMBER ( FFD_BoxTag, i_Ind, j_Ind ) +% - FFD_THICKNESS ( FFD_BoxTag, i_Ind, j_Ind ) +% - FFD_TWIST ( FFD_BoxTag, j_Ind, x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) +% - FFD_CONTROL_POINT_2D ( FFD_BoxTag, i_Ind, j_Ind, x_Disp, y_Disp ) +% - FFD_CAMBER_2D ( FFD_BoxTag, i_Ind ) +% - FFD_THICKNESS_2D ( FFD_BoxTag, i_Ind ) +% - FFD_TWIST_2D ( FFD_BoxTag, x_Orig, y_Orig ) +% - HICKS_HENNE ( Lower Surface (0)/Upper Surface (1)/Only one Surface (2), x_Loc ) +% - SURFACE_BUMP ( x_Start, x_End, x_Loc ) +DV_PARAM= ( WINGBOX, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 8.0, 1.0, 0.0, 0.0, 1.0) +% +% Value of the shape deformation +DV_VALUE= 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + +% ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % -% Writing convergence history frequency -SCREEN_WRT_FREQ_INNER= 10 +% Linear solver or smoother for implicit formulations (FGMRES, RESTARTED_FGMRES, BCGSTAB) +DEFORM_LINEAR_SOLVER= FGMRES % -OUTPUT_FILES= (RESTART, PARAVIEW, SURFACE_PARAVIEW) +% Number of smoothing iterations for mesh deformation +DEFORM_LINEAR_SOLVER_ITER= 500 +% +% Minimum residual criteria for the linear solver convergence of grid deformation +DEFORM_LINEAR_SOLVER_ERROR= 1E-14 % -VOLUME_OUTPUT= (COORDINATES, SOLUTION, PRIMITIVE, SENSITIVITY ) +% Print the residuals during mesh deformation to the console (YES, NO) +DEFORM_CONSOLE_OUTPUT= YES % -SCREEN_OUTPUT= (INNER_ITER, RMS_DENSITY, RMS_ENERGY, DRAG, LIFT, RMS_ADJ_DENSITY, RMS_ADJ_ENERGY) +% Deformation coefficient (linear elasticity limits from -1.0 to 0.5, a larger +% value is also possible) +DEFORM_COEFF = 1E6 % -HISTORY_OUTPUT= (ITER, RMS_RES, AERO_COEFF, SENSITIVITY) +% Type of element stiffness imposed for FEA mesh deformation (INVERSE_VOLUME, +% WALL_DISTANCE, CONSTANT_STIFFNESS) +DEFORM_STIFFNESS_TYPE= WALL_DISTANCE % -------------------- FREE-FORM DEFORMATION PARAMETERS -----------------------% % @@ -365,68 +414,136 @@ FFD_DEFINITION= (WINGBOX, -0.0403, 0, -0.04836, 0.8463,0, -0.04836, 1.209, 1.289 % 2D case (x_degree, y_degree, 0) FFD_DEGREE= (10, 8, 1) % -% Surface continuity at the intersection with the FFD (1ST_DERIVATIVE, 2ND_DERIVATIVE) +% Surface grid continuity at the intersection with the faces of the FFD boxes. +% To keep a particular level of surface continuity, SU2 automatically freezes the right +% number of control point planes (NO_DERIVATIVE, 1ST_DERIVATIVE, 2ND_DERIVATIVE, USER_INPUT) FFD_CONTINUITY= 2ND_DERIVATIVE -% ----------------------- DESIGN VARIABLE PARAMETERS --------------------------% +% ------------------------- SCREEN/HISTORY VOLUME OUTPUT --------------------------% % -% Kind of deformation (FFD_SETTING, FFD_CONTROL_POINT_2D, FFD_CAMBER_2D, FFD_THICKNESS_2D, -% HICKS_HENNE, PARABOLIC, -% NACA_4DIGITS, DISPLACEMENT, ROTATION, FFD_CONTROL_POINT, -% FFD_NACELLE, FFD_TWIST, FFD_ROTATION, -% FFD_CAMBER, FFD_THICKNESS, SURFACE_FILE) -DV_KIND= FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT +% Screen output fields (use 'SU2_CFD -d ' to view list of available fields) +SCREEN_OUTPUT= (INNER_ITER, RMS_DENSITY, RMS_ENERGY, DRAG, LIFT, RMS_ADJ_DENSITY, RMS_ADJ_ENERGY) % -% Marker of the surface in which we are going apply the shape deformation -DV_MARKER= ( WING ) +% History output groups (use 'SU2_CFD -d ' to view list of available fields) +HISTORY_OUTPUT= (ITER, RMS_RES, AERO_COEFF, SENSITIVITY) % -% Parameters of the shape deformation -% - HICKS_HENNE ( Lower Surface (0)/Upper Surface (1)/Only one Surface (2), x_Loc ) -% - NACA_4DIGITS ( 1st digit, 2nd digit, 3rd and 4th digit ) -% - PARABOLIC ( Center, Thickness ) -% - DISPLACEMENT ( x_Disp, y_Disp, z_Disp ) -% - ROTATION ( x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) -% - OBSTACLE ( Center, Bump size ) -% - FFD_CONTROL_POINT ( FFD_BoxTag ID, i_Ind, j_Ind, k_Ind, x_Disp, y_Disp, z_Disp ) -% - FFD_DIHEDRAL_ANGLE ( FFD_BoxTag ID, x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) -% - FFD_TWIST_ANGLE ( FFD_BoxTag ID, x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) -% - FFD_ROTATION ( FFD_BoxTag ID, x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) -% - FFD_CAMBER ( FFD_BoxTag ID, i_Ind, j_Ind ) -% - FFD_THICKNESS ( FFD_BoxTag ID, i_Ind, j_Ind ) -% - FFD_VOLUME ( FFD_BoxTag ID, i_Ind, j_Ind ) -DV_PARAM= ( WINGBOX, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 8.0, 1.0, 0.0, 0.0, 1.0) -% -% New value of the shape deformation -DV_VALUE= 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 +% Volume output fields/groups (use 'SU2_CFD -d ' to view list of available fields) +VOLUME_OUTPUT= (COORDINATES, SOLUTION, PRIMITIVE, SENSITIVITY) +% +% Writing frequency for screen output +SCREEN_WRT_FREQ_INNER= 10 +% +% Writing frequency for history output +HISTORY_WRT_FREQ_INNER= 1 +% +% Writing frequency for volume/surface output +OUTPUT_WRT_FREQ= 1000 -% ------------------------ GRID DEFORMATION PARAMETERS ------------------------% +% ------------------------- INPUT/OUTPUT FILE INFORMATION --------------------------% % -% Linear solver or smoother for implicit formulations (FGMRES, RESTARTED_FGMRES, BCGSTAB) -DEFORM_LINEAR_SOLVER= FGMRES +% Mesh input file +MESH_FILENAME= mesh_tutorial_ffd.su2 % -% Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_SOLVER_ITER= 500 +% Mesh input file format (SU2, CGNS) +MESH_FORMAT= SU2 % -% Minimum residual criteria for the linear solver convergence of grid deformation -DEFORM_LINEAR_SOLVER_ERROR= 1E-14 +% Mesh output file +MESH_OUT_FILENAME= mesh_tutorial_ffd_deform.su2 % -% Print the residuals during mesh deformation to the console (YES, NO) -DEFORM_CONSOLE_OUTPUT= YES +% Restart flow input file +SOLUTION_FILENAME= solution_flow.dat % -% Type of element stiffness imposed for FEA mesh deformation (INVERSE_VOLUME, -% WALL_DISTANCE, CONSTANT_STIFFNESS) -DEFORM_STIFFNESS_TYPE= WALL_DISTANCE +% Restart adjoint input file +SOLUTION_ADJ_FILENAME= solution_adj.dat +% +% Output tabular file format (TECPLOT, CSV) +TABULAR_FORMAT= TECPLOT +% +% Files to output +% Possible formats : (TECPLOT, TECPLOT_BINARY, SURFACE_TECPLOT, +% SURFACE_TECPLOT_BINARY, CSV, SURFACE_CSV, PARAVIEW, PARAVIEW_BINARY, SURFACE_PARAVIEW, +% SURFACE_PARAVIEW_BINARY, MESH, RESTART_BINARY, RESTART_ASCII, CGNS, SURFACE_CGNS, STL) +% default : (RESTART, PARAVIEW, SURFACE_PARAVIEW) +OUTPUT_FILES= (RESTART, PARAVIEW, SURFACE_PARAVIEW) +% +% Output file convergence history (w/o extension) +CONV_FILENAME= history +% +% Output file restart flow +RESTART_FILENAME= restart_flow.dat +% +% Output file restart adjoint +RESTART_ADJ_FILENAME= restart_adj.dat +% +% Output file flow (w/o extension) variables +VOLUME_FILENAME= flow +% +% Output file adjoint (w/o extension) variables +VOLUME_ADJ_FILENAME= adjoint +% +% Output objective function gradient (using continuous adjoint) +GRAD_OBJFUNC_FILENAME= of_grad.dat +% +% Output file surface flow coefficient (w/o extension) +SURFACE_FILENAME= surface_flow +% +% Output file surface adjoint coefficient (w/o extension) +SURFACE_ADJ_FILENAME= surface_adjoint +% +% Read binary restart files (YES, NO) +READ_BINARY_RESTART= YES % --------------------- OPTIMAL SHAPE DESIGN DEFINITION -----------------------% % -% Optimization objective function with optional scaling factor +% Available flow based objective functions or constraint functions +% DRAG, LIFT, SIDEFORCE, EFFICIENCY, BUFFET, +% FORCE_X, FORCE_Y, FORCE_Z, +% MOMENT_X, MOMENT_Y, MOMENT_Z, +% THRUST, TORQUE, FIGURE_OF_MERIT, +% EQUIVALENT_AREA, NEARFIELD_PRESSURE, +% TOTAL_HEATFLUX, MAXIMUM_HEATFLUX, +% INVERSE_DESIGN_PRESSURE, INVERSE_DESIGN_HEATFLUX, +% SURFACE_TOTAL_PRESSURE, SURFACE_MASSFLOW +% SURFACE_STATIC_PRESSURE, SURFACE_MACH +% +% Available geometrical based objective functions or constraint functions +% AIRFOIL_AREA, AIRFOIL_THICKNESS, AIRFOIL_CHORD, AIRFOIL_TOC, AIRFOIL_AOA, +% WING_VOLUME, WING_MIN_THICKNESS, WING_MAX_THICKNESS, WING_MAX_CHORD, WING_MIN_TOC, WING_MAX_TWIST, WING_MAX_CURVATURE, WING_MAX_DIHEDRAL +% STATION#_WIDTH, STATION#_AREA, STATION#_THICKNESS, STATION#_CHORD, STATION#_TOC, +% STATION#_TWIST (where # is the index of the station defined in GEO_LOCATION_STATIONS) +% +% Available design variables +% 2D Design variables +% FFD_CONTROL_POINT_2D ( 19, Scale | Mark. List | FFD_BoxTag, i_Ind, j_Ind, x_Mov, y_Mov ) +% FFD_CAMBER_2D ( 20, Scale | Mark. List | FFD_BoxTag, i_Ind ) +% FFD_THICKNESS_2D ( 21, Scale | Mark. List | FFD_BoxTag, i_Ind ) +% FFD_TWIST_2D ( 22, Scale | Mark. List | FFD_BoxTag, x_Orig, y_Orig ) +% HICKS_HENNE ( 30, Scale | Mark. List | Lower(0)/Upper(1) side, x_Loc ) +% ANGLE_OF_ATTACK ( 101, Scale | Mark. List | 1.0 ) +% +% 3D Design variables +% FFD_CONTROL_POINT ( 11, Scale | Mark. List | FFD_BoxTag, i_Ind, j_Ind, k_Ind, x_Mov, y_Mov, z_Mov ) +% FFD_NACELLE ( 12, Scale | Mark. List | FFD_BoxTag, rho_Ind, theta_Ind, phi_Ind, rho_Mov, phi_Mov ) +% FFD_GULL ( 13, Scale | Mark. List | FFD_BoxTag, j_Ind ) +% FFD_CAMBER ( 14, Scale | Mark. List | FFD_BoxTag, i_Ind, j_Ind ) +% FFD_TWIST ( 15, Scale | Mark. List | FFD_BoxTag, j_Ind, x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) +% FFD_THICKNESS ( 16, Scale | Mark. List | FFD_BoxTag, i_Ind, j_Ind ) +% FFD_ROTATION ( 18, Scale | Mark. List | FFD_BoxTag, x_Axis, y_Axis, z_Axis, x_Turn, y_Turn, z_Turn ) +% FFD_ANGLE_OF_ATTACK ( 24, Scale | Mark. List | FFD_BoxTag, 1.0 ) +% +% Global design variables +% TRANSLATION ( 1, Scale | Mark. List | x_Disp, y_Disp, z_Disp ) +% ROTATION ( 2, Scale | Mark. List | x_Axis, y_Axis, z_Axis, x_Turn, y_Turn, z_Turn ) +% +% Optimization objective function with scaling factor, separated by semicolons. +% To include quadratic penalty function: use OPT_CONSTRAINT option syntax within the OPT_OBJECTIVE list. % ex= Objective * Scale OPT_OBJECTIVE= DRAG - -% Optimization constraint functions with scaling factors, separated by semicolons +% +% Optimization constraint functions with pushing factors (affects its value, not the gradient in the python scripts), separated by semicolons % ex= (Objective = Value ) * Scale, use '>','<','=' -OPT_CONSTRAINT= (LIFT = 0.2514); ( STATION1_THICKNESS > 0.077); (STATION2_THICKNESS > 0.072); (STATION3_THICKNESS > 0.066); (STATION4_THICKNESS > 0.060); (STATION5_THICKNESS > 0.054) - +OPT_CONSTRAINT= (LIFT = 0.2514); ( STATION1_THICKNESS > 0.077); (STATION2_THICKNESS > 0.072); (STATION3_THICKNESS > 0.066); (STATION4_THICKNESS > 0.060); (STATION5_THICKNESS > 0.054) +% % Maximum number of iterations OPT_ITERATIONS= 20 % diff --git a/TestCases/parallel_regression_AD.py b/TestCases/parallel_regression_AD.py index 40b037e716e3..f7ffbf7fcd58 100644 --- a/TestCases/parallel_regression_AD.py +++ b/TestCases/parallel_regression_AD.py @@ -455,7 +455,7 @@ def main(): # Sobolev gradient smoothing solver grad_smooth_oneram6 = TestCase('grad_smooth_sob') grad_smooth_oneram6.cfg_dir = "grad_smooth/oneram6" - grad_smooth_oneram6.cfg_file = "config.cfg" + grad_smooth_oneram6.cfg_file = "ONERAM6_gradsmooth.cfg" grad_smooth_oneram6.test_iter = 2 grad_smooth_oneram6.su2_exec = "mpirun -n 2 SU2_CFD_AD" grad_smooth_oneram6.timeout = 1600 diff --git a/config_template.cfg b/config_template.cfg index 7bf02ba3cbb4..84684499ca3c 100644 --- a/config_template.cfg +++ b/config_template.cfg @@ -1536,6 +1536,52 @@ PARMETIS_TOLERANCE= 0.02 PARMETIS_EDGE_WEIGHT= 1 PARMETIS_POINT_WEIGHT= 0 % +% ----------------------- SOBOLEV GRADIENT SMOOTHING OPTIONS ----------------------% +% +% Activate the gradient smoothing solver for the discrete adjoint driver (NO, YES) +SMOOTH_GRADIENT= NO +% +% Scaling factor for the identity part of the Laplace-Beltrami operator +SMOOTHING_EPSILON1= 1.0 +% +% Scaling factor for the Laplace part of the Laplace-Beltrami operator +SMOOTHING_EPSILON2= 1.0 +% +% Switch for running the smoothing procedure seperately in each space dimension (NO, YES). +SEPARATE_DIMENSIONS= NO +% +% Switch for applying the Sobolev smoothing to the design surface mesh, i.e., instead of the whole volume mesh (NO, YES). +SMOOTH_ON_SURFACE= NO +% +% Use Dirichlet boundary conditions when working on the design surface, only used for SMOOTH_ON_SURFACE= YES (NO, YES). +DIRICHLET_SURFACE_BOUNDARY= NO +% +% Marker for boundaries where Dirichlet boundary conditions are applied, only valid if working on the volume mesh. +MARKER_SOBOLEVBC= ( airfoil ) +% +% Mode how the Sobolev method is applied to the discrete adjoint gradient. +% - NO_MODUS (Default option if none is choosen.) +% - PARAM_LEVEL_COMPLETE (Apply Sobolev smoothing to the projected gradient, w.r.t. the DV.) +% - MESH_LEVEL (Apply Sobolev smoothing to the mesh sensitivities.) +% - DEBUG (Test the finite elements asembly of the Laplace-Beltrami operator.) +% - ONLY_GRAD (Only calculate the classical gradient.) +SOBOLEV_MODE= NO_MODUS +% +% Output filename for the assembled Sobolev smoothing system matrix +HESS_OBJFUNC_FILENAME= of_hess.dat +% +% Linear solver or smoother for implicit formulations (FGMRES, RESTARTED_FGMRES, BCGSTAB) +GRAD_LINEAR_SOLVER= FGMRES +% +% Preconditioner of the Krylov linear solver (ILU, LU_SGS, JACOBI) +GRAD_LINEAR_SOLVER_PREC= ILU +% +% Number of linear solver iterations for the Sobolev smoothing solver +GRAD_LINEAR_SOLVER_ITER= 1000 +% +% Minimum residual criteria for the linear solver convergence of the Sobolev smoothing solver +GRAD_LINEAR_SOLVER_ERROR= 1E-14 +% % ------------------------- SCREEN/HISTORY VOLUME OUTPUT --------------------------% % % Screen output fields (use 'SU2_CFD -d ' to view list of available fields) From 7b2d6ee9c6dc8a72e95f2847a246a78fc5905ddb Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Thu, 25 Nov 2021 15:09:28 +0100 Subject: [PATCH 06/26] Removed dependency on Eigen from CGradientSmoothingSolver and removed Eigen as a submodule. --- .github/workflows/regression.yml | 2 +- .gitmodules | 3 --- .../solvers/CGradientSmoothingSolver.hpp | 13 ++-------- .../src/solvers/CGradientSmoothingSolver.cpp | 25 +++++++++++++------ externals/eigen | 1 - meson.build | 8 +----- meson_options.txt | 1 - 7 files changed, 21 insertions(+), 32 deletions(-) delete mode 160000 externals/eigen diff --git a/.github/workflows/regression.yml b/.github/workflows/regression.yml index 3b670469fa65..24aa9edbf162 100644 --- a/.github/workflows/regression.yml +++ b/.github/workflows/regression.yml @@ -90,7 +90,7 @@ jobs: uses: docker://su2code/test-su2:20200303 with: # -t -c - args: -b ${{github.ref}} -t develop -c develop -s ${{matrix.testscript}} + args: -b ${{github.ref}} -t develop -c feature_Sobolev_smoothing_solver -s ${{matrix.testscript}} unit_tests: runs-on: ubuntu-latest name: Unit Tests diff --git a/.gitmodules b/.gitmodules index 98e114a345a6..ae2967618b2b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -18,6 +18,3 @@ [submodule "externals/opdi"] path = externals/opdi url = https://github.com/SciCompKL/OpDiLib -[submodule "externals/eigen"] - path = externals/eigen - url = https://gitlab.com/libeigen/eigen.git diff --git a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp index e4b7e3d543f2..f45eca65a155 100644 --- a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp +++ b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp @@ -30,16 +30,7 @@ #include "CSolver.hpp" #include "../../../Common/include/geometry/elements/CElement.hpp" #include "../../../Common/include/linear_algebra/CMatrixVectorProduct.hpp" - -/** minimal include of Eigen for linear system */ -#include -#include - -using MatrixType = Eigen::Matrix; -using VectorType = Eigen::Matrix; -using QRdecomposition = Eigen::ColPivHouseholderQR; -// define the output format you want, you only need one instance of this... -const static Eigen::IOFormat CSVFormat(15, 0, ", ", "\n"); +#include "../../../Common/include/toolboxes/CSquareMatrixCM.hpp" /** Introduction of a new data type to allow compilation with forward mode. * @@ -85,7 +76,7 @@ class CGradientSmoothingSolver : public CSolver { std::vector deltaP; /*!< \brief The smoothed gradient with respect to the design variables. */ - MatrixType hessian; /*!< \brief The approximated Hessian with respect to the design variables. */ + CSquareMatrixCM hessian; /*!< \brief The approximated Hessian with respect to the design variables. */ /*--- Extra vertices for row/column elimination, see Set_VertexEliminationSchedule. ---*/ vector ExtraVerticesToEliminate; diff --git a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp index 3f4d92554730..a4148ebf5067 100644 --- a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp +++ b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp @@ -279,11 +279,12 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingSurface(CGeometry *geometry void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CSolver *solver, CNumerics **numerics, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, CConfig *config) { unsigned nDVtotal=config->GetnDV_Total(); - unsigned column; + unsigned column, row; unsigned long iPoint; unsigned short iDim; vector seedvector(nDVtotal, 0.0); - hessian = MatrixType::Zero(nDVtotal, nDVtotal); + vector x(nDVtotal, 0.0); + hessian.Initialize(nDVtotal); /*--- Reset the Jacobian to 0 ---*/ Jacobian.SetValZero(); @@ -360,21 +361,29 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CSo ProjectMeshToDV(geometry, helperVecOut, seedvector, activeCoord, config); /*--- Extract the projected direction ---*/ - hessian.col(column) = Eigen::Map(seedvector.data(), seedvector.size()); + for (row=0; rowGetObjFunc_Hess_FileName()); - SysMatrix << hessian.format(CSVFormat); + SysMatrix.precision(15); + for (row=0; row(deltaP.data(), deltaP.size()); - VectorType x = QR.solve(b); - deltaP = std::vector(x.data(), x.data() + x.size()); + hessian.Invert(); + hessian.MatVecMult(deltaP.begin(), x.begin()); + deltaP = x; OutputDVGradient(); diff --git a/externals/eigen b/externals/eigen deleted file mode 160000 index b0fb5417d302..000000000000 --- a/externals/eigen +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b0fb5417d302375512eb91e0036b7105a493a108 diff --git a/meson.build b/meson.build index 45035f7a096d..22b6a7e3fcf9 100644 --- a/meson.build +++ b/meson.build @@ -198,12 +198,6 @@ if get_option('enable-librom') endif -# Eigen library dependencies -if get_option('enable-eigen') - su2_cpp_args += '-DHAVE_EIGEN' - su2_deps += [declare_dependency(include_directories: 'externals/eigen')] -endif - extra_deps = get_option('extra-deps').split(',') foreach dep : extra_deps if dep != '' @@ -284,7 +278,7 @@ message('''--------------------------------------------------------------------- Use './ninja -C @12@ install' to compile and install SU2 '''.format(get_option('prefix')+'/bin', meson.source_root(), get_option('enable-tecio'), get_option('enable-cgns'), get_option('enable-autodiff'), get_option('enable-directdiff'), get_option('enable-pywrapper'), get_option('enable-mkl'), - get_option('enable-openblas'), get_option('enable-pastix'), get_option('enable-mixedprec'), get_option('enable-librom'), get_option('enable-eigen'), meson.build_root().split('/')[-1])) + get_option('enable-openblas'), get_option('enable-pastix'), get_option('enable-mixedprec'), get_option('enable-librom'), meson.build_root().split('/')[-1])) if get_option('enable-mpp') message(''' To run SU2 with Mutation++ library, add these lines to your .bashrc file: diff --git a/meson_options.txt b/meson_options.txt index bf2b00e9c44c..05a0b2c64fbc 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -16,7 +16,6 @@ option('scotch_root', type : 'string', value : 'externals/scotch/', description: option('custom-mpi', type : 'boolean', value : false, description: 'enable MPI assuming the compiler and/or env vars give the correct include dirs and linker args.') option('enable-tests', type : 'boolean', value : false, description: 'compile Unit Tests') option('enable-mixedprec', type : 'boolean', value : false, description: 'use single precision floating point arithmetic for sparse algebra') -option('enable-eigen', type : 'boolean', value : true, description: 'Include of the Eigen linear algebra library') option('extra-deps', type : 'string', value : '', description: 'comma-separated list of extra (custom) dependencies to add for compilation') option('enable-mpp', type : 'boolean', value : false, description: 'enable Mutation++ support') option('opdi-backend', type : 'combo', choices : ['auto', 'macro', 'ompt'], value : 'auto', description: 'OpDiLib backend choice') From 5492bfc2205e3ae7346451274026574a2c3bc9b5 Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Thu, 25 Nov 2021 18:28:45 +0100 Subject: [PATCH 07/26] Reworked the way finite elements are used for embedded surfaces. --- Common/include/geometry/elements/CElement.hpp | 20 +++-- Common/include/option_structure.hpp | 2 +- Common/src/geometry/elements/CElement.cpp | 6 +- SU2_CFD/include/numerics/CGradSmoothing.hpp | 6 -- .../solvers/CGradientSmoothingSolver.hpp | 4 +- SU2_CFD/src/numerics/CGradSmoothing.cpp | 6 +- .../src/solvers/CGradientSmoothingSolver.cpp | 84 ++++--------------- 7 files changed, 37 insertions(+), 91 deletions(-) diff --git a/Common/include/geometry/elements/CElement.hpp b/Common/include/geometry/elements/CElement.hpp index 0fc67fff23f1..d87f47736472 100644 --- a/Common/include/geometry/elements/CElement.hpp +++ b/Common/include/geometry/elements/CElement.hpp @@ -56,6 +56,8 @@ */ class CElement { protected: + enum : size_t {MAXNDIM = 3}; + std::vector GaussPoint; /*!< \brief Vector of Gaussian Points. */ su2activematrix CurrentCoord; /*!< \brief Coordinates in the current frame. */ @@ -119,10 +121,10 @@ class CElement { virtual void ComputeGrad_NonLinear(void) = 0; /*! - * \brief Overload needed for deformed 2D elements on a surface in 3D. - * \note The Coord are handed down from the numerics. + * \brief Set the value of the gradient of the shape functions wrt the reference configuration. + * \note This method assumes that we have a surface element embedded in higher dimensions. */ - virtual void ComputeGrad_Linear(su2activematrix& Coord) = 0; + virtual void ComputeGrad_SurfaceEmbedded(void) = 0; /*! * \brief Sets matrices to 0. @@ -466,9 +468,9 @@ class CElement { * because inactive variables are ignored. */ inline void SetPreaccIn_Coords(bool nonlinear = true) { - AD::SetPreaccIn(RefCoord.data(), nNodes*nDim); + AD::SetPreaccIn(RefCoord.data(), nNodes*MAXNDIM); if (nonlinear) - AD::SetPreaccIn(CurrentCoord.data(), nNodes*nDim); + AD::SetPreaccIn(CurrentCoord.data(), nNodes*MAXNDIM); } /*! @@ -667,10 +669,14 @@ class CElementWithKnownSizes : public CElement { } template - void ComputeGrad_impl_embedded(su2activematrix& Coord) { + void ComputeGrad_impl_surf_embedded() { unsigned short iNode, iDim, iGauss; + /*--- Select the appropriate source for the nodal coordinates depending on the frame requested + for the gradient computation, REFERENCE (undeformed) or CURRENT (deformed) ---*/ + const su2activematrix& Coord = (FRAME==REFERENCE) ? RefCoord : CurrentCoord; + if (NDIM==1) { su2double Jacobian[2]; @@ -781,7 +787,7 @@ class CElementWithKnownSizes : public CElement { /*! * \brief Overload needed for deformed 2D elements on a surface in 3D or 1D elements on a 2D curve. */ - void ComputeGrad_Linear(su2activematrix& Coord) final { ComputeGrad_impl_embedded(Coord); } + void ComputeGrad_SurfaceEmbedded() final { ComputeGrad_impl_surf_embedded(); } }; diff --git a/Common/include/option_structure.hpp b/Common/include/option_structure.hpp index c09ae5ca98e6..55ce2b37b484 100644 --- a/Common/include/option_structure.hpp +++ b/Common/include/option_structure.hpp @@ -511,7 +511,7 @@ const int SOURCE_FIRST_TERM = 2; /*!< \brief Position of the first source term const int SOURCE_SECOND_TERM = 3; /*!< \brief Position of the second source term in the numerics container array. */ const int CONV_BOUND_TERM = 4; /*!< \brief Position of the convective boundary terms in the numerics container array. */ const int VISC_BOUND_TERM = 5; /*!< \brief Position of the viscous boundary terms in the numerics container array. */ -const int GRAD_TERM = 6; /*!< \brief Position of the gradient smoothing terms in the numerics container array. */ +const int GRAD_TERM = 6; /*!< \brief Position of the gradient smoothing terms in the numerics container array. */ const int FEA_TERM = 0; /*!< \brief Position of the finite element analysis terms in the numerics container array. */ const int DE_TERM = 1; /*!< \brief Position of the dielectric terms in the numerics container array. */ diff --git a/Common/src/geometry/elements/CElement.cpp b/Common/src/geometry/elements/CElement.cpp index df5ff4394ea0..2791bc436aeb 100644 --- a/Common/src/geometry/elements/CElement.cpp +++ b/Common/src/geometry/elements/CElement.cpp @@ -36,8 +36,10 @@ CElement::CElement(unsigned short ngauss, unsigned short nnodes, unsigned short /*--- Allocate structures. ---*/ - CurrentCoord.resize(nNodes, nDim) = su2double(0.0); - RefCoord.resize(nNodes, nDim) = su2double(0.0); + /*--- Always allocate MAXNDIM to have enough space in all cases. + * e.g. elements embedded on a curved surfaces. ---*/ + CurrentCoord.resize(nNodes, MAXNDIM) = su2double(0.0); + RefCoord.resize(nNodes, MAXNDIM) = su2double(0.0); GaussPoint.reserve(nGaussPoints); for(unsigned short iGauss = 0; iGauss < nGaussPoints; ++iGauss) diff --git a/SU2_CFD/include/numerics/CGradSmoothing.hpp b/SU2_CFD/include/numerics/CGradSmoothing.hpp index 88cdb996c59c..cddff235dc64 100644 --- a/SU2_CFD/include/numerics/CGradSmoothing.hpp +++ b/SU2_CFD/include/numerics/CGradSmoothing.hpp @@ -40,7 +40,6 @@ class CGradSmoothing : public CNumerics { su2double **val_DHiDHj; su2double *Ni_Vec; - su2activematrix Coord; public: @@ -64,9 +63,4 @@ class CGradSmoothing : public CNumerics { void Compute_Tangent_Matrix(CElement *element_container, const CConfig *config); - /*! - * \brief Set coordinates to given values. - */ - void SetCoord(su2activematrix &val_coord); - }; diff --git a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp index f45eca65a155..203f02b7c3f7 100644 --- a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp +++ b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp @@ -324,8 +324,8 @@ class CGradientSmoothingSolver : public CSolver { * \param[in] iDim - Dimension required. */ inline su2double Get_ValCoord(CGeometry *geometry, - unsigned long indexNode, - unsigned int iDim) { + unsigned long indexNode, + unsigned int iDim) { return geometry->nodes->GetCoord(indexNode, iDim); } diff --git a/SU2_CFD/src/numerics/CGradSmoothing.cpp b/SU2_CFD/src/numerics/CGradSmoothing.cpp index 39a8a525add4..d243a2e4a3f2 100644 --- a/SU2_CFD/src/numerics/CGradSmoothing.cpp +++ b/SU2_CFD/src/numerics/CGradSmoothing.cpp @@ -93,7 +93,7 @@ void CGradSmoothing::Compute_Tangent_Matrix(CElement *element, const CConfig *co nNode = element->GetnNodes(); nGauss = element->GetnGaussPoints(); if (config->GetSmoothOnSurface()) { - element->ComputeGrad_Linear(Coord); + element->ComputeGrad_SurfaceEmbedded(); } else { element->ComputeGrad_Linear(); } @@ -159,7 +159,3 @@ void CGradSmoothing::Compute_Tangent_Matrix(CElement *element, const CConfig *co } } - -void CGradSmoothing::SetCoord(su2activematrix& val_coord) { - Coord = val_coord; -} diff --git a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp index a4148ebf5067..b9ee4a73fad9 100644 --- a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp +++ b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp @@ -452,11 +452,12 @@ void CGradientSmoothingSolver::Compute_StiffMatrix(CGeometry *geometry, CNumeric void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry *geometry, CNumerics **numerics, CConfig *config, unsigned long val_marker, unsigned int nSurfDim){ - unsigned long iElem, iPoint, iVertex, iSurfDim; + unsigned long iElem, iPoint, iVertex, iDim, iSurfDim; unsigned int iNode, jNode, nNodes = 0, NelNodes; std::vector indexNode(MAXNNODE_2D, 0.0); std::vector indexVertex(MAXNNODE_2D, 0.0); int EL_KIND = 0; + su2double val_Coord; bool* visited = new bool[geometry->GetnPoint()]; for (iPoint = 0; iPoint < geometry->GetnPoint(); iPoint++){ @@ -466,8 +467,6 @@ void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry *geometry, su2activematrix DHiDHj; su2double HiHj = 0.0; - su2activematrix Coord; - /*--- Check if the current MPI rank has a part of the marker ---*/ if (val_marker!=NOT_AVAILABLE) { @@ -481,9 +480,12 @@ void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry *geometry, for (iNode = 0; iNode < nNodes; iNode++) { indexNode[iNode] = geometry->bound[val_marker][iElem]->GetNode(iNode); - } - Coord = GetElementCoordinates(geometry, indexNode, EL_KIND); + for (iDim = 0; iDim < nDim; iDim++) { + val_Coord = Get_ValCoord(geometry, indexNode[iNode], iDim); + element_container[GRAD_TERM][EL_KIND]->SetRef_Coord(iNode, iDim, val_Coord); + } + } /*--- We need the indices of the vertices, which are "Dual Grid Info" ---*/ for (iVertex = 0; iVertex < geometry->nVertex[val_marker]; iVertex++) { @@ -494,7 +496,6 @@ void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry *geometry, } /*--- compute the contributions of the single elements inside the numerics container ---*/ - numerics[GRAD_TERM]->SetCoord(Coord); numerics[GRAD_TERM]->Compute_Tangent_Matrix(element_container[GRAD_TERM][EL_KIND], config); NelNodes = element_container[GRAD_TERM][EL_KIND]->GetnNodes(); @@ -536,7 +537,7 @@ void CGradientSmoothingSolver::Compute_Residual(CGeometry *geometry, CSolver *so unsigned int iDim, iNode, nNodes = 0; int EL_KIND = 0; std::vector indexNode(MAXNNODE_3D, 0.0); - su2double Weight, Jac_X; + su2double Weight, Jac_X, val_Coord; for (iElem = 0; iElem < geometry->GetnElem(); iElem++) { @@ -547,7 +548,7 @@ void CGradientSmoothingSolver::Compute_Residual(CGeometry *geometry, CSolver *so indexNode[iNode] = geometry->elem[iElem]->GetNode(iNode); for (iDim = 0; iDim < nDim; iDim++) { - auto val_Coord = Get_ValCoord(geometry, indexNode[iNode], iDim); + val_Coord = Get_ValCoord(geometry, indexNode[iNode], iDim); element_container[GRAD_TERM][EL_KIND]->SetRef_Coord(iNode, iDim, val_Coord); } @@ -608,9 +609,8 @@ void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry *geometry, CSo int EL_KIND = 0; std::vector indexNode(MAXNNODE_2D, 0.0); std::vector indexVertex(MAXNNODE_2D, 0.0); - su2double Weight, Jac_X, normalSens = 0.0, norm; + su2double Weight, Jac_X, normalSens = 0.0, norm, val_Coord; su2double* normal = NULL; - su2activematrix Coord; /*--- Check if the current MPI rank has a part of the marker ---*/ if (val_marker!=NOT_AVAILABLE) { @@ -623,9 +623,12 @@ void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry *geometry, CSo /*--- Retrieve the boundary reference and current coordinates ---*/ for (iNode = 0; iNode < nNodes; iNode++) { indexNode[iNode] = geometry->bound[val_marker][iElem]->GetNode(iNode); - } - Coord = GetElementCoordinates(geometry, indexNode, EL_KIND); + for (iDim = 0; iDim < nDim; iDim++) { + val_Coord = Get_ValCoord(geometry, indexNode[iNode], iDim); + element_container[GRAD_TERM][EL_KIND]->SetRef_Coord(iNode, iDim, val_Coord); + } + } /*--- We need the indices of the vertices, which are "Dual Grid Info" ---*/ for (iVertex = 0; iVertex < geometry->nVertex[val_marker]; iVertex++) { @@ -636,7 +639,7 @@ void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry *geometry, CSo } element_container[GRAD_TERM][EL_KIND]->ClearElement(); /*--- Restarts the element: avoids adding over previous results in other elements --*/ - element_container[GRAD_TERM][EL_KIND]->ComputeGrad_Linear(Coord); + element_container[GRAD_TERM][EL_KIND]->ComputeGrad_SurfaceEmbedded(); unsigned int nGauss = element_container[GRAD_TERM][EL_KIND]->GetnGaussPoints(); for (unsigned int iGauss = 0; iGauss < nGauss; iGauss++) { @@ -1071,61 +1074,6 @@ void CGradientSmoothingSolver::ReadVector2Geometry(CGeometry *geometry, CConfig } } -su2activematrix CGradientSmoothingSolver::GetElementCoordinates(CGeometry *geometry, std::vector& indexNode, int EL_KIND) { - - su2activematrix Coord; - - switch (EL_KIND) { - - case EL_LINE: - - Coord.resize(2,2); - for(auto iNode=0; iNode<2; iNode++) { - for(auto iDim=0; iDim<2; iDim++) { - Coord[iNode][iDim] = Get_ValCoord(geometry, indexNode[iNode], iDim); - } - } - break; - - case EL_TRIA: - - Coord.resize(3,3); - for(auto iNode=0; iNode<3; iNode++) { - for(auto iDim=0; iDim<3; iDim++) { - Coord[iNode][iDim] = Get_ValCoord(geometry, indexNode[iNode], iDim); - } - } - break; - - case EL_TRIA2: - - Coord.resize(3,3); - for(auto iNode=0; iNode<3; iNode++) { - for(auto iDim=0; iDim<3; iDim++) { - Coord[iNode][iDim] = Get_ValCoord(geometry, indexNode[iNode], iDim); - } - } - break; - - case EL_QUAD: - - Coord.resize(4,3); - for(auto iNode=0; iNode<4; iNode++) { - for(auto iDim=0; iDim<3; iDim++) { - Coord[iNode][iDim] = Get_ValCoord(geometry, indexNode[iNode], iDim); - } - } - break; - - default: - std::cout << "Type of element is not supported. " < Date: Fri, 26 Nov 2021 11:49:09 +0100 Subject: [PATCH 08/26] Made the CSysSolver constructor option mesh_deform an enum class. Removed config option SENS_SMOOTHING, since it is not used and reworked testcase configs. CGradientSmoothingSolver now uses the output precision from config OUTPUT_PRECISION. --- Common/include/linear_algebra/CSysSolve.hpp | 9 +++--- Common/include/option_structure.hpp | 29 ++++++++----------- Common/src/CConfig.cpp | 4 +-- .../src/grid_movement/CVolumetricMovement.cpp | 4 +-- Common/src/linear_algebra/CSysSolve.cpp | 24 +++++++-------- SU2_CFD/include/solvers/CFEASolver.hpp | 2 +- .../solvers/CGradientSmoothingSolver.hpp | 2 +- SU2_CFD/include/solvers/CSolver.hpp | 2 +- SU2_CFD/src/solvers/CFEASolver.cpp | 2 +- .../src/solvers/CGradientSmoothingSolver.cpp | 12 ++++---- SU2_CFD/src/solvers/CMeshSolver.cpp | 2 +- SU2_CFD/src/solvers/CSolver.cpp | 2 +- SU2_DOT/src/SU2_DOT.cpp | 5 ---- .../cont_adj_rans/oneram6/turb_ONERAM6.cfg | 3 -- .../naca0012/inv_NACA0012_gradsmooth.cfg | 7 +++-- .../oneram6/ONERAM6_gradsmooth.cfg | 5 +++- .../naca0012/inv_NACA0012_ffd.cfg | 3 -- .../rotating_naca0012/rotating_NACA0012.cfg | 3 -- .../steady_naca0012/inv_NACA0012_adv.cfg | 3 -- .../pitching_oneram6/turb_ONERAM6.cfg | 3 -- TestCases/rotating/naca0012/rot_NACA0012.cfg | 3 -- 21 files changed, 53 insertions(+), 76 deletions(-) diff --git a/Common/include/linear_algebra/CSysSolve.hpp b/Common/include/linear_algebra/CSysSolve.hpp index 23f86737a58b..a18a48fac791 100644 --- a/Common/include/linear_algebra/CSysSolve.hpp +++ b/Common/include/linear_algebra/CSysSolve.hpp @@ -38,6 +38,7 @@ #include #include "CSysVector.hpp" +#include "../option_structure.hpp" class CConfig; class CGeometry; @@ -75,11 +76,11 @@ class CSysSolve { private: const ScalarType eps; /*!< \brief Machine epsilon used in this class. */ - bool mesh_deform; /*!< \brief Operate in mesh deformation mode, changes the source of solver options. */ - bool gradient_mode; /*!< \brief Operate in gradient smoothing mode, changes the source of solver options. */ ScalarType Residual=1e-20; /*!< \brief Residual at the end of a call to Solve or Solve_b. */ unsigned long Iterations=0;/*!< \brief Iterations done in Solve or Solve_b. */ + LINEAR_SOLVER_MODE lin_sol_mode; /*!< \brief Type of operation for the linear system solver, changes the source of solver options. */ + mutable bool cg_ready; /*!< \brief Indicate if memory used by CG is allocated. */ mutable bool bcg_ready; /*!< \brief Indicate if memory used by BCGSTAB is allocated. */ mutable bool smooth_ready; /*!< \brief Indicate if memory used by SMOOTHER is allocated. */ @@ -291,9 +292,9 @@ class CSysSolve { /*! * \brief default constructor of the class. - * \param[in] mesh_deform_mode - true, to let CSysSolve know it is in a mesh deformation context + * \param[in] linear_solver_mode - enum, to let CSysSolve know in what context it is */ - CSysSolve(const bool mesh_deform_mode = false, const bool gradient_smooth_mode = false); + CSysSolve(LINEAR_SOLVER_MODE linear_solver_mode = LINEAR_SOLVER_MODE::STANDARD); /*! \brief Conjugate Gradient method * \param[in] b - the right hand size vector diff --git a/Common/include/option_structure.hpp b/Common/include/option_structure.hpp index 55ce2b37b484..5775cff52c60 100644 --- a/Common/include/option_structure.hpp +++ b/Common/include/option_structure.hpp @@ -1939,20 +1939,6 @@ static const MapType CoordSystem_Map = { MakePair("POLAR", POLAR) }; -/*! - * \brief Types of sensitivity smoothing - */ -enum ENUM_SENS_SMOOTHING { - NO_SMOOTH = 0, /*!< \brief No smoothing. */ - SOBOLEV = 1, /*!< \brief Sobolev gradient smoothing. */ - BIGRID = 2 /*!< \brief Bi-grid technique smoothing. */ -}; -static const MapType Sens_Smoothing_Map = { - MakePair("NONE", NO_SMOOTH) - MakePair("SOBOLEV", SOBOLEV) - MakePair("BIGRID", BIGRID) -}; - /*! * \brief Types of preconditioners for the linear solver */ @@ -2293,15 +2279,24 @@ static const MapType POD_Map = { MakePair("INCREMENTAL_POD", POD_KIND::INCREMENTAL) }; +/*! + * \brief Type of operation for the linear system solver, changes the source of solver options. + */ +enum class LINEAR_SOLVER_MODE { + STANDARD, /*!< \brief Operate in standard mode. */ + MESH_DEFORM, /*!< \brief Operate in mesh deformation mode. */ + GRADIENT_MODE, /*!< \brief Operate in gradient smoothing mode. */ +}; + /*! * \brief mode of operation for the sobolev smoothing solver. */ enum ENUM_SOBOLEV_MODUS { NO_MODUS = 0, /*!< \brief Default option if none is choosen. */ PARAM_LEVEL_COMPLETE = 1, /*!< \brief Operate on parameter level. */ - MESH_LEVEL = 3, /*!< \brief Operate on mesh level. */ - DEBUG = 4, /*!< \brief Special flag for debugging. */ - ONLY_GRAD = 5, /*!< \brief Flag for OneShot to only compute the original gradient. */ + MESH_LEVEL = 2, /*!< \brief Operate on mesh level. */ + DEBUG = 3, /*!< \brief Special flag for debugging. */ + ONLY_GRAD = 4, /*!< \brief Flag for OneShot to only compute the original gradient. */ }; static const MapType Sobolev_Modus_Map = { MakePair("NONE", NO_MODUS) diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index e0181b7a6d09..0205f89597da 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -1919,8 +1919,6 @@ void CConfig::SetConfig_Options() { /* DESCRIPTION: Drag weight in sonic boom Objective Function (from 0.0 to 1.0) */ addDoubleOption("DRAG_IN_SONICBOOM", WeightCd, 0.0); - /* DESCRIPTION: Sensitivity smoothing */ - addEnumOption("SENS_SMOOTHING", Kind_SensSmooth, Sens_Smoothing_Map, NO_SMOOTH); /* DESCRIPTION: Continuous Adjoint frozen viscosity */ addBoolOption("FROZEN_VISC_CONT", Frozen_Visc_Cont, true); /* DESCRIPTION: Discrete Adjoint frozen viscosity */ @@ -2955,6 +2953,8 @@ void CConfig::SetConfig_Parsing(istream& config_buffer){ newString.append("SOLID_DENSITY is deprecated. Use MATERIAL_DENSITY instead.\n\n"); if (!option_name.compare("SOLID_TEMPERATURE_INIT")) newString.append("SOLID_TEMPERATURE_INIT is deprecated. Use FREESTREAM_TEMPERATURE instead.\n\n"); + if (!option_name.compare("SENS_SMOOTHING")) + newString.append("SENS_SMOOTHING is deprecated. Use SMOOTH_GRADIENT = (YES, NO) instead.\n\n"); else { /*--- Find the most likely candidate for the unrecognized option, based on the length of start and end character sequences shared by candidates and the option. ---*/ diff --git a/Common/src/grid_movement/CVolumetricMovement.cpp b/Common/src/grid_movement/CVolumetricMovement.cpp index b8c478e2db48..9493e77c646d 100644 --- a/Common/src/grid_movement/CVolumetricMovement.cpp +++ b/Common/src/grid_movement/CVolumetricMovement.cpp @@ -30,11 +30,11 @@ #include "../../include/adt/CADTPointsOnlyClass.hpp" #include "../../include/toolboxes/geometry_toolbox.hpp" -CVolumetricMovement::CVolumetricMovement(void) : CGridMovement(), System(true) { +CVolumetricMovement::CVolumetricMovement(void) : CGridMovement(), System(LINEAR_SOLVER_MODE::MESH_DEFORM) { } -CVolumetricMovement::CVolumetricMovement(CGeometry *geometry, CConfig *config) : CGridMovement(), System(true) { +CVolumetricMovement::CVolumetricMovement(CGeometry *geometry, CConfig *config) : CGridMovement(), System(LINEAR_SOLVER_MODE::MESH_DEFORM) { size = SU2_MPI::GetSize(); rank = SU2_MPI::GetRank(); diff --git a/Common/src/linear_algebra/CSysSolve.cpp b/Common/src/linear_algebra/CSysSolve.cpp index 6872597036d2..d89eee9e740b 100644 --- a/Common/src/linear_algebra/CSysSolve.cpp +++ b/Common/src/linear_algebra/CSysSolve.cpp @@ -28,7 +28,6 @@ #include "../../include/linear_algebra/CSysSolve.hpp" #include "../../include/linear_algebra/CSysSolve_b.hpp" #include "../../include/parallelization/omp_structure.hpp" -#include "../../include/option_structure.hpp" #include "../../include/CConfig.hpp" #include "../../include/geometry/CGeometry.hpp" #include "../../include/linear_algebra/CSysMatrix.hpp" @@ -49,10 +48,9 @@ namespace { } template -CSysSolve::CSysSolve(const bool mesh_deform_mode, const bool gradient_smooth_mode) : +CSysSolve::CSysSolve(LINEAR_SOLVER_MODE linear_solver_mode) : eps(linSolEpsilon()), - mesh_deform(mesh_deform_mode), - gradient_mode(gradient_smooth_mode), + lin_sol_mode(linear_solver_mode), cg_ready(false), bcg_ready(false), smooth_ready(false), @@ -254,7 +252,7 @@ unsigned long CSysSolve::CG_LinSolver(const CSysVector & if (tol_type == LinearToleranceType::RELATIVE) norm0 = norm_r; if ((norm_r < tol*norm0) || (norm_r < eps)) { - if (master && !mesh_deform) cout << "CSysSolve::ConjugateGradient(): system solved by initial guess." << endl; + if (master && (lin_sol_mode!=LINEAR_SOLVER_MODE::MESH_DEFORM)) cout << "CSysSolve::ConjugateGradient(): system solved by initial guess." << endl; return 0; } @@ -833,7 +831,7 @@ unsigned long CSysSolve::Solve(CSysMatrix & Jacobian, co /*--- Mesh Deformation mode ---*/ - if(mesh_deform) { + if(lin_sol_mode==LINEAR_SOLVER_MODE::MESH_DEFORM) { KindSolver = config->GetKind_Deform_Linear_Solver(); KindPrecond = config->GetKind_Deform_Linear_Solver_Prec(); @@ -844,7 +842,7 @@ unsigned long CSysSolve::Solve(CSysMatrix & Jacobian, co /*--- gradient smoothing mode ---*/ - else if (gradient_mode) { + else if (lin_sol_mode==LINEAR_SOLVER_MODE::GRADIENT_MODE) { KindSolver = config->GetKind_Grad_Linear_Solver(); KindPrecond = config->GetKind_Grad_Linear_Solver_Prec(); @@ -855,7 +853,7 @@ unsigned long CSysSolve::Solve(CSysMatrix & Jacobian, co /*--- Normal mode ---*/ - else { + else if (lin_sol_mode==LINEAR_SOLVER_MODE::STANDARD) { KindSolver = config->GetKind_Linear_Solver(); KindPrecond = config->GetKind_Linear_Solver_Prec(); @@ -942,10 +940,10 @@ unsigned long CSysSolve::Solve(CSysMatrix & Jacobian, co if(TapeActive) { /*--- To keep the behavior of SU2_DOT, but not strictly required since jacobian is symmetric(?). ---*/ - const bool RequiresTranspose = !mesh_deform || (config->GetKind_SU2() == SU2_COMPONENT::SU2_DOT); + const bool RequiresTranspose = lin_sol_mode!=LINEAR_SOLVER_MODE::MESH_DEFORM || (config->GetKind_SU2() == SU2_COMPONENT::SU2_DOT); - if (!mesh_deform) KindPrecond = config->GetKind_DiscAdj_Linear_Prec(); - else if (gradient_mode) KindPrecond = config->GetKind_Grad_Linear_Solver_Prec(); + if (lin_sol_mode!=LINEAR_SOLVER_MODE::MESH_DEFORM) KindPrecond = config->GetKind_DiscAdj_Linear_Prec(); + else if (lin_sol_mode==LINEAR_SOLVER_MODE::GRADIENT_MODE) KindPrecond = config->GetKind_Grad_Linear_Solver_Prec(); else KindPrecond = config->GetKind_Deform_Linear_Solver_Prec(); /*--- Build preconditioner for the transposed Jacobian ---*/ @@ -1012,7 +1010,7 @@ unsigned long CSysSolve::Solve_b(CSysMatrix & Jacobian, /*--- Normal mode ---*/ - if(!mesh_deform) { + if (lin_sol_mode==LINEAR_SOLVER_MODE::STANDARD || lin_sol_mode==LINEAR_SOLVER_MODE::GRADIENT_MODE) { KindSolver = config->GetKind_DiscAdj_Linear_Solver(); KindPrecond = config->GetKind_DiscAdj_Linear_Prec(); @@ -1023,7 +1021,7 @@ unsigned long CSysSolve::Solve_b(CSysMatrix & Jacobian, /*--- Mesh Deformation mode ---*/ - else { + else if (lin_sol_mode==LINEAR_SOLVER_MODE::MESH_DEFORM) { KindSolver = config->GetKind_Deform_Linear_Solver(); KindPrecond = config->GetKind_Deform_Linear_Solver_Prec(); diff --git a/SU2_CFD/include/solvers/CFEASolver.hpp b/SU2_CFD/include/solvers/CFEASolver.hpp index 247201b80f40..4e8c1aae24aa 100644 --- a/SU2_CFD/include/solvers/CFEASolver.hpp +++ b/SU2_CFD/include/solvers/CFEASolver.hpp @@ -232,7 +232,7 @@ class CFEASolver : public CSolver { /*! * \brief Constructor of the class. */ - CFEASolver(bool mesh_deform_mode = false); + CFEASolver(LINEAR_SOLVER_MODE mesh_deform_mode = LINEAR_SOLVER_MODE::STANDARD); /*! * \overload diff --git a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp index 203f02b7c3f7..531145ef597f 100644 --- a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp +++ b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp @@ -222,7 +222,7 @@ class CGradientSmoothingSolver : public CSolver { /*! * \brief write the DV gradient into a file */ - void OutputDVGradient(string out_file="delta_p.txt"); + void OutputDVGradient(CConfig *config, string out_file="delta_p.txt"); /*! * \brief Record a tape containing the parameter Jacobian. diff --git a/SU2_CFD/include/solvers/CSolver.hpp b/SU2_CFD/include/solvers/CSolver.hpp index 0501599a37bb..2c4c4808c2be 100644 --- a/SU2_CFD/include/solvers/CSolver.hpp +++ b/SU2_CFD/include/solvers/CSolver.hpp @@ -208,7 +208,7 @@ class CSolver { /*! * \brief Constructor of the class. */ - CSolver(bool mesh_deform_mode = false, bool gradient_smooth_mode = false); + CSolver(LINEAR_SOLVER_MODE linear_solver_mode = LINEAR_SOLVER_MODE::STANDARD); /*! * \brief Destructor of the class. diff --git a/SU2_CFD/src/solvers/CFEASolver.cpp b/SU2_CFD/src/solvers/CFEASolver.cpp index 6aa942874a56..412605cc7f50 100644 --- a/SU2_CFD/src/solvers/CFEASolver.cpp +++ b/SU2_CFD/src/solvers/CFEASolver.cpp @@ -37,7 +37,7 @@ using namespace GeometryToolbox; -CFEASolver::CFEASolver(bool mesh_deform_mode) : CSolver(mesh_deform_mode) { +CFEASolver::CFEASolver(LINEAR_SOLVER_MODE mesh_deform_mode) : CSolver(mesh_deform_mode) { nElement = 0; nDim = 0; diff --git a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp index b9ee4a73fad9..cc877fb2f918 100644 --- a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp +++ b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp @@ -41,7 +41,7 @@ #include #include -CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig *config) : CSolver(false,true) { +CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig *config) : CSolver(LINEAR_SOLVER_MODE::GRADIENT_MODE) { unsigned int iDim, jDim, marker_count=0; unsigned long iPoint; @@ -369,7 +369,7 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CSo /*--- Output the complete system matrix. ---*/ if (rank == MASTER_NODE) { ofstream SysMatrix(config->GetObjFunc_Hess_FileName()); - SysMatrix.precision(15); + SysMatrix.precision(config->GetOutput_Precision()); for (row=0; rowGetOutput_Precision()); for (iDV = 0; iDV < deltaP.size(); iDV++) { delta_p << deltaP[iDV] << ","; } diff --git a/SU2_CFD/src/solvers/CMeshSolver.cpp b/SU2_CFD/src/solvers/CMeshSolver.cpp index 13c62234c5ef..82c9c1b85dbf 100644 --- a/SU2_CFD/src/solvers/CMeshSolver.cpp +++ b/SU2_CFD/src/solvers/CMeshSolver.cpp @@ -33,7 +33,7 @@ using namespace GeometryToolbox; -CMeshSolver::CMeshSolver(CGeometry *geometry, CConfig *config) : CFEASolver(true) { +CMeshSolver::CMeshSolver(CGeometry *geometry, CConfig *config) : CFEASolver(LINEAR_SOLVER_MODE::MESH_DEFORM) { /*--- Initialize some booleans that determine the kind of problem at hand. ---*/ diff --git a/SU2_CFD/src/solvers/CSolver.cpp b/SU2_CFD/src/solvers/CSolver.cpp index cea0123c7484..c896e35d65e5 100644 --- a/SU2_CFD/src/solvers/CSolver.cpp +++ b/SU2_CFD/src/solvers/CSolver.cpp @@ -50,7 +50,7 @@ #include "../../include/CMarkerProfileReaderFVM.hpp" -CSolver::CSolver(bool mesh_deform_mode, bool gradient_smooth_mode) : System(mesh_deform_mode, gradient_smooth_mode) { +CSolver::CSolver(LINEAR_SOLVER_MODE linear_solver_mode) : System(linear_solver_mode) { rank = SU2_MPI::GetRank(); size = SU2_MPI::GetSize(); diff --git a/SU2_DOT/src/SU2_DOT.cpp b/SU2_DOT/src/SU2_DOT.cpp index d911d986a038..30e569184da5 100644 --- a/SU2_DOT/src/SU2_DOT.cpp +++ b/SU2_DOT/src/SU2_DOT.cpp @@ -802,11 +802,6 @@ void OutputGradient(su2double** Gradient, CConfig* config, ofstream& Gradient_fi nDV = config->GetnDV(); - /*--- Increase precision ---*/ - if (config->GetSmoothGradient()) { - Gradient_file.precision(16); - } - /*--- Loop through all design variables and their gradients ---*/ for (iDV = 0; iDV < nDV; iDV++){ diff --git a/TestCases/cont_adj_rans/oneram6/turb_ONERAM6.cfg b/TestCases/cont_adj_rans/oneram6/turb_ONERAM6.cfg index 7cfa51f055af..043917392a44 100644 --- a/TestCases/cont_adj_rans/oneram6/turb_ONERAM6.cfg +++ b/TestCases/cont_adj_rans/oneram6/turb_ONERAM6.cfg @@ -197,9 +197,6 @@ CFL_REDUCTION_ADJFLOW= 0.8 % Remove sharp edges from the sensitivity evaluation (NO, YES) SENS_REMOVE_SHARP= NO % -% Sensitivity smoothing (NONE, SOBOLEV, BIGRID) -SENS_SMOOTHING= NONE -% % Adjoint frozen viscosity (NO, YES) FROZEN_VISC= YES diff --git a/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg b/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg index 39959cc58095..2f4cbe9edce2 100644 --- a/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg +++ b/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg @@ -231,7 +231,7 @@ DEFORM_LINEAR_SOLVER_ITER= 1000 DEFORM_NONLINEAR_ITER= 1 % % Minimum residual criteria for the linear solver convergence of grid deformation -DEFORM_LINEAR_SOLVER_ERROR= 1E-14 +DEFORM_LINEAR_SOLVER_ERROR= 1E-10 % % Print the residuals during mesh deformation to the console (YES, NO) DEFORM_CONSOLE_OUTPUT= YES @@ -293,6 +293,9 @@ OUTPUT_WRT_FREQ= 250 % ------------------------- INPUT/OUTPUT FILE INFORMATION --------------------------% % +% Decimal precision +OUTPUT_PRECISION=10 +% % Mesh input file MESH_FILENAME= mesh_NACA0012_inv.su2 % @@ -316,7 +319,7 @@ TABULAR_FORMAT= TECPLOT % SURFACE_TECPLOT_BINARY, CSV, SURFACE_CSV, PARAVIEW, PARAVIEW_BINARY, SURFACE_PARAVIEW, % SURFACE_PARAVIEW_BINARY, MESH, RESTART_BINARY, RESTART_ASCII, CGNS, SURFACE_CGNS, STL) % default : (RESTART, PARAVIEW, SURFACE_PARAVIEW) -OUTPUT_FILES= (RESTART_ASCII) +OUTPUT_FILES= (RESTART, PARAVIEW, SURFACE_PARAVIEW) % % Output file convergence history (w/o extension) CONV_FILENAME= history diff --git a/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg b/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg index 4508f899d304..661633ea4119 100644 --- a/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg +++ b/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg @@ -383,7 +383,7 @@ DEFORM_LINEAR_SOLVER= FGMRES DEFORM_LINEAR_SOLVER_ITER= 500 % % Minimum residual criteria for the linear solver convergence of grid deformation -DEFORM_LINEAR_SOLVER_ERROR= 1E-14 +DEFORM_LINEAR_SOLVER_ERROR= 1E-10 % % Print the residuals during mesh deformation to the console (YES, NO) DEFORM_CONSOLE_OUTPUT= YES @@ -441,6 +441,9 @@ OUTPUT_WRT_FREQ= 1000 % ------------------------- INPUT/OUTPUT FILE INFORMATION --------------------------% % +% Decimal precision +OUTPUT_PRECISION=10 +% % Mesh input file MESH_FILENAME= mesh_tutorial_ffd.su2 % diff --git a/TestCases/multiple_ffd/naca0012/inv_NACA0012_ffd.cfg b/TestCases/multiple_ffd/naca0012/inv_NACA0012_ffd.cfg index 3a225a5eb719..9d800f9333db 100644 --- a/TestCases/multiple_ffd/naca0012/inv_NACA0012_ffd.cfg +++ b/TestCases/multiple_ffd/naca0012/inv_NACA0012_ffd.cfg @@ -178,9 +178,6 @@ LIMIT_ADJFLOW= 1E6 % % Remove sharp edges from the sensitivity evaluation (NO, YES) SENS_REMOVE_SHARP= NO -% -% Sensitivity smoothing (NONE, SOBOLEV, BIGRID) -SENS_SMOOTHING= NONE % ----------------------- DESIGN VARIABLE PARAMETERS --------------------------% % diff --git a/TestCases/optimization_euler/rotating_naca0012/rotating_NACA0012.cfg b/TestCases/optimization_euler/rotating_naca0012/rotating_NACA0012.cfg index 5165973ee8af..1bca0c90150b 100644 --- a/TestCases/optimization_euler/rotating_naca0012/rotating_NACA0012.cfg +++ b/TestCases/optimization_euler/rotating_naca0012/rotating_NACA0012.cfg @@ -197,9 +197,6 @@ LIMIT_ADJFLOW= 1E6 % Remove sharp edges from the sensitivity evaluation (NO, YES) SENS_REMOVE_SHARP= NO % -% Sensitivity smoothing (NONE, SOBOLEV, BIGRID) -SENS_SMOOTHING= NONE -% % Adjoint frozen viscosity (NO, YES) FROZEN_VISC_CONT= YES diff --git a/TestCases/optimization_euler/steady_naca0012/inv_NACA0012_adv.cfg b/TestCases/optimization_euler/steady_naca0012/inv_NACA0012_adv.cfg index 5e7ccf6f39ee..6ae1ad8e699a 100644 --- a/TestCases/optimization_euler/steady_naca0012/inv_NACA0012_adv.cfg +++ b/TestCases/optimization_euler/steady_naca0012/inv_NACA0012_adv.cfg @@ -177,9 +177,6 @@ LIMIT_ADJFLOW= 1E6 % % Remove sharp edges from the sensitivity evaluation (NO, YES) SENS_REMOVE_SHARP= NO -% -% Sensitivity smoothing (NONE, SOBOLEV, BIGRID) -SENS_SMOOTHING= NONE % ----------------------- GEOMETRY EVALUATION PARAMETERS ----------------------% % diff --git a/TestCases/optimization_rans/pitching_oneram6/turb_ONERAM6.cfg b/TestCases/optimization_rans/pitching_oneram6/turb_ONERAM6.cfg index 80094a639035..3a12766b1ff8 100644 --- a/TestCases/optimization_rans/pitching_oneram6/turb_ONERAM6.cfg +++ b/TestCases/optimization_rans/pitching_oneram6/turb_ONERAM6.cfg @@ -243,9 +243,6 @@ LIMIT_ADJFLOW= 1E6 % Remove sharp edges from the sensitivity evaluation (NO, YES) SENS_REMOVE_SHARP= YES % -% Sensitivity smoothing (NONE, SOBOLEV, BIGRID) -SENS_SMOOTHING= NONE -% % Adjoint frozen viscosity (NO, YES) FROZEN_VISC_CONT= YES diff --git a/TestCases/rotating/naca0012/rot_NACA0012.cfg b/TestCases/rotating/naca0012/rot_NACA0012.cfg index 09b70c273f2f..e58403cbf6bf 100644 --- a/TestCases/rotating/naca0012/rot_NACA0012.cfg +++ b/TestCases/rotating/naca0012/rot_NACA0012.cfg @@ -206,9 +206,6 @@ LIMIT_ADJFLOW= 1E6 % Remove sharp edges from the sensitivity evaluation (NO, YES) SENS_REMOVE_SHARP= NO % -% Sensitivity smoothing (NONE, SOBOLEV, BIGRID) -SENS_SMOOTHING= NONE -% % Adjoint frozen viscosity (NO, YES) FROZEN_VISC_CONT= YES From 231670ea719f8613ef99a08f0f6af6efe4f3042e Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Mon, 29 Nov 2021 11:45:03 +0100 Subject: [PATCH 09/26] Fixed a compiler warning created by missing initialization in CSysSolve.cpp --- Common/src/linear_algebra/CSysSolve.cpp | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/Common/src/linear_algebra/CSysSolve.cpp b/Common/src/linear_algebra/CSysSolve.cpp index d89eee9e740b..2e1f77450523 100644 --- a/Common/src/linear_algebra/CSysSolve.cpp +++ b/Common/src/linear_algebra/CSysSolve.cpp @@ -851,9 +851,10 @@ unsigned long CSysSolve::Solve(CSysMatrix & Jacobian, co ScreenOutput = true; } - /*--- Normal mode ---*/ + /*--- Normal mode + * assumes that 'lin_sol_mode==LINEAR_SOLVER_MODE::STANDARD', but does not enforce it to avoid compiler warning. ---*/ - else if (lin_sol_mode==LINEAR_SOLVER_MODE::STANDARD) { + else { KindSolver = config->GetKind_Linear_Solver(); KindPrecond = config->GetKind_Linear_Solver_Prec(); @@ -1010,18 +1011,15 @@ unsigned long CSysSolve::Solve_b(CSysMatrix & Jacobian, /*--- Normal mode ---*/ - if (lin_sol_mode==LINEAR_SOLVER_MODE::STANDARD || lin_sol_mode==LINEAR_SOLVER_MODE::GRADIENT_MODE) { - - KindSolver = config->GetKind_DiscAdj_Linear_Solver(); - KindPrecond = config->GetKind_DiscAdj_Linear_Prec(); - MaxIter = config->GetLinear_Solver_Iter(); - SolverTol = SU2_TYPE::GetValue(config->GetLinear_Solver_Error()); - ScreenOutput = false; - } + KindSolver = config->GetKind_DiscAdj_Linear_Solver(); + KindPrecond = config->GetKind_DiscAdj_Linear_Prec(); + MaxIter = config->GetLinear_Solver_Iter(); + SolverTol = SU2_TYPE::GetValue(config->GetLinear_Solver_Error()); + ScreenOutput = false; /*--- Mesh Deformation mode ---*/ - else if (lin_sol_mode==LINEAR_SOLVER_MODE::MESH_DEFORM) { + if (lin_sol_mode==LINEAR_SOLVER_MODE::MESH_DEFORM) { KindSolver = config->GetKind_Deform_Linear_Solver(); KindPrecond = config->GetKind_Deform_Linear_Solver_Prec(); From e4b544b3ffc21d83e06a59c16651e0b69c2b17f8 Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Thu, 2 Dec 2021 11:34:33 +0100 Subject: [PATCH 10/26] Moved the application of Sobolev gradient smoothing to SU2_DOT_AD. - Added the necessary solver, numerics, and variable classes there. - The method is called as an alternative parallel to SetProject_AD. --- Common/include/option_structure.hpp | 4 +- Common/src/CConfig.cpp | 2 +- Common/src/geometry/elements/CTETRA4.cpp | 8 +- .../drivers/CDiscAdjSinglezoneDriver.hpp | 5 -- SU2_CFD/include/numerics/CNumerics.hpp | 7 -- SU2_CFD/include/solvers/CDiscAdjSolver.hpp | 2 +- SU2_CFD/include/solvers/CSolver.hpp | 32 +++---- SU2_CFD/include/solvers/CSolverFactory.hpp | 1 - .../src/drivers/CDiscAdjSinglezoneDriver.cpp | 56 ------------ SU2_CFD/src/drivers/CDriver.cpp | 18 ---- SU2_CFD/src/meson.build | 9 +- SU2_CFD/src/solvers/CSolverFactory.cpp | 12 --- SU2_DOT/include/SU2_DOT.hpp | 13 +++ .../include/numerics/CGradSmoothing.hpp | 2 +- .../solvers/CGradientSmoothingSolver.hpp | 58 ++++--------- .../variables/CSobolevSmoothingVariable.hpp | 2 +- SU2_DOT/src/SU2_DOT.cpp | 71 +++++++++++++++- SU2_DOT/src/meson.build | 10 ++- .../src/numerics/CGradSmoothing.cpp | 0 .../src/solvers/CGradientSmoothingSolver.cpp | 85 +++++++++---------- .../variables/CSobolevSmoothingVariable.cpp | 0 .../naca0012/inv_NACA0012_gradsmooth.cfg | 2 +- .../oneram6/ONERAM6_gradsmooth.cfg | 2 +- config_template.cfg | 2 +- 24 files changed, 179 insertions(+), 224 deletions(-) rename {SU2_CFD => SU2_DOT}/include/numerics/CGradSmoothing.hpp (96%) rename {SU2_CFD => SU2_DOT}/include/solvers/CGradientSmoothingSolver.hpp (86%) rename {SU2_CFD => SU2_DOT}/include/variables/CSobolevSmoothingVariable.hpp (98%) rename {SU2_CFD => SU2_DOT}/src/numerics/CGradSmoothing.cpp (100%) rename {SU2_CFD => SU2_DOT}/src/solvers/CGradientSmoothingSolver.cpp (94%) rename {SU2_CFD => SU2_DOT}/src/variables/CSobolevSmoothingVariable.cpp (100%) diff --git a/Common/include/option_structure.hpp b/Common/include/option_structure.hpp index 2b0108150b71..374d464a03a6 100644 --- a/Common/include/option_structure.hpp +++ b/Common/include/option_structure.hpp @@ -533,8 +533,8 @@ const int EL_TETRA = 0; /*!< \brief Elements of four nodes (3D). */ const int EL_HEXA = 1; /*!< \brief Elements of eight nodes (3D). */ const int EL_PYRAM = 2; /*!< \brief Elements of five nodes (3D). */ const int EL_PRISM = 3; /*!< \brief Elements of six nodes (3D). */ -const int EL_TETRA2 = 4; /*!< \brief Elements of four nodes, with second order gauss quadrature (3D). */ -const int EL_PYRAM2 = 5; /*!< \brief Elements of five nodes, with third order gauss quadrature (3D). */ +const int EL_TETRA2 = 4; /*!< \brief Elements of four nodes, with second order gauss quadrature (3D). */ +const int EL_PYRAM2 = 5; /*!< \brief Elements of five nodes, with third order gauss quadrature (3D). */ /*! * \brief Types of spatial discretizations diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index bd2853d7ceb9..bd949e3cd031 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -5192,7 +5192,7 @@ void CConfig::SetMarkers(SU2_COMPONENT val_software) { Marker_All_Turbomachinery = new unsigned short[nMarker_All] (); // Store whether the boundary is in needed for Turbomachinery computations. Marker_All_TurbomachineryFlag = new unsigned short[nMarker_All] (); // Store whether the boundary has a flag for Turbomachinery computations. Marker_All_MixingPlaneInterface = new unsigned short[nMarker_All] (); // Store whether the boundary has a in the MixingPlane interface. - Marker_All_SobolevBC = new unsigned short[nMarker_All] (); // Store wether the boundary should apply to the gradient smoothing. + Marker_All_SobolevBC = new unsigned short[nMarker_All] (); // Store wether the boundary should apply to the gradient smoothing. for (iMarker_All = 0; iMarker_All < nMarker_All; iMarker_All++) { Marker_All_TagBound[iMarker_All] = "SEND_RECEIVE"; diff --git a/Common/src/geometry/elements/CTETRA4.cpp b/Common/src/geometry/elements/CTETRA4.cpp index 838fdef4831c..f28062307b01 100644 --- a/Common/src/geometry/elements/CTETRA4.cpp +++ b/Common/src/geometry/elements/CTETRA4.cpp @@ -50,10 +50,10 @@ CTETRA4::CTETRA4() : CElementWithKnownSizes() { Eta = GaussCoord[iGauss][1]; Zeta = GaussCoord[iGauss][2]; - val_Ni = Xi; GaussPoint[iGauss].SetNi(val_Ni,0); - val_Ni = Eta; GaussPoint[iGauss].SetNi(val_Ni,1); - val_Ni = 1.0-Xi-Eta-Zeta; GaussPoint[iGauss].SetNi(val_Ni,2); - val_Ni = Zeta; GaussPoint[iGauss].SetNi(val_Ni,3); + val_Ni = Xi; GaussPoint[iGauss].SetNi(val_Ni,0); + val_Ni = Eta; GaussPoint[iGauss].SetNi(val_Ni,1); + val_Ni = 1.0-Xi-Eta-Zeta; GaussPoint[iGauss].SetNi(val_Ni,2); + val_Ni = Zeta; GaussPoint[iGauss].SetNi(val_Ni,3); /*--- dN/d xi, dN/d eta, dN/d zeta ---*/ diff --git a/SU2_CFD/include/drivers/CDiscAdjSinglezoneDriver.hpp b/SU2_CFD/include/drivers/CDiscAdjSinglezoneDriver.hpp index 39e9594641fc..20a1c0acc270 100644 --- a/SU2_CFD/include/drivers/CDiscAdjSinglezoneDriver.hpp +++ b/SU2_CFD/include/drivers/CDiscAdjSinglezoneDriver.hpp @@ -122,11 +122,6 @@ class CDiscAdjSinglezoneDriver : public CSinglezoneDriver { */ void SecondaryRecording(void); - /*! - * \brief Postprocess the calculated derivatives with gradient smoothing - */ - void DerivativeTreatment(void); - /*! * \brief gets Convergence on physical time scale, (deactivated in adjoint case) * \return false diff --git a/SU2_CFD/include/numerics/CNumerics.hpp b/SU2_CFD/include/numerics/CNumerics.hpp index 1f1033a330b8..52e2e60e63a3 100644 --- a/SU2_CFD/include/numerics/CNumerics.hpp +++ b/SU2_CFD/include/numerics/CNumerics.hpp @@ -35,7 +35,6 @@ #include "../../../Common/include/CConfig.hpp" #include "../../../Common/include/linear_algebra/blas_structure.hpp" -#include "../../../Common/include/containers/C2DContainer.hpp" class CElement; class CFluidModel; @@ -833,12 +832,6 @@ class CNumerics { Coord_j = val_coord_j; } - /*! - * \brief A virtual member - * \param[in] val_coord - vector of coordinates. - */ - virtual void SetCoord(su2activematrix& val_coord) {} - /*! * \brief Set the velocity of the computational grid. * \param[in] val_gridvel_i - Grid velocity of the point i. diff --git a/SU2_CFD/include/solvers/CDiscAdjSolver.hpp b/SU2_CFD/include/solvers/CDiscAdjSolver.hpp index 0b78caa4f42f..7132898f65d3 100644 --- a/SU2_CFD/include/solvers/CDiscAdjSolver.hpp +++ b/SU2_CFD/include/solvers/CDiscAdjSolver.hpp @@ -36,7 +36,7 @@ * \ingroup Discrete_Adjoint * \author T. Albring */ -class CDiscAdjSolver : public CSolver { +class CDiscAdjSolver final : public CSolver { protected: static constexpr size_t MAXNDIM = 3; /*!< \brief Max number of space dimensions, used in some static arrays. */ static constexpr size_t MAXNVAR = 32; /*!< \brief Max number of variables, for static arrays. */ diff --git a/SU2_CFD/include/solvers/CSolver.hpp b/SU2_CFD/include/solvers/CSolver.hpp index 53d3bd93a1ae..87b7a7491215 100644 --- a/SU2_CFD/include/solvers/CSolver.hpp +++ b/SU2_CFD/include/solvers/CSolver.hpp @@ -4164,8 +4164,7 @@ class CSolver { * \param[in] config - Definition of the particular problem. */ virtual void ApplyGradientSmoothingVolume(CGeometry *geometry, - CSolver *solver, - CNumerics **numerics, + CNumerics *numerics, CConfig *config) { } /*! @@ -4177,20 +4176,19 @@ class CSolver { * */ virtual void ApplyGradientSmoothingSurface(CGeometry *geometry, - CSolver *solver, - CNumerics **numerics, - CConfig *config, - unsigned long val_marker) { } + CNumerics *numerics, + CConfig *config, + unsigned long val_marker) { } /*! * \brief All steps required for smoothing the whole system on DV level in an iterative way */ virtual void ApplyGradientSmoothingDV(CGeometry *geometry, - CSolver *solver, - CNumerics **numerics, + CNumerics *numerics, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, - CConfig *config) { } + CConfig *config, + su2double** Gradient) { } /*! * \brief A virtual member. @@ -4200,27 +4198,29 @@ class CSolver { virtual void RecordTapeAndCalculateOriginalGradient(CGeometry *geometry, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, - CConfig *config) { } + CConfig *config, + su2double** Gradient) { } /*! * \brief A virtual member. * \param[in] geometry - Geometrical definition of the problem. - * \param[in] solver - The solver container holding all terms of the solution. * \param[in] config - Definition of the particular problem. */ - virtual void OutputSensitivity(CGeometry *geometry, - CConfig *config, - CSolver *solver) { } + virtual void ReadSens2Geometry(CGeometry *geometry, + CConfig *config) { } /*! * \brief A virtual member. + * \param[in] geometry - Geometrical definition of the problem. + * \param[in] config - Definition of the particular problem. */ - inline virtual vector GetDeltaP() { return vector(); } + virtual void WriteSens2Geometry(CGeometry *geometry, + CConfig *config) { } /*! * \brief A virtual member. */ - virtual void GetHessianMatrix() {} + inline virtual vector GetDeltaP() { return vector(); } /*! * \brief Routine that sets the flag controlling implicit treatment for periodic BCs. diff --git a/SU2_CFD/include/solvers/CSolverFactory.hpp b/SU2_CFD/include/solvers/CSolverFactory.hpp index 9d77d94054ac..3d6e8c5517b3 100644 --- a/SU2_CFD/include/solvers/CSolverFactory.hpp +++ b/SU2_CFD/include/solvers/CSolverFactory.hpp @@ -61,7 +61,6 @@ enum class SUB_SOLVER_TYPE { MESH, /*!< \brief Mesh solver */ RADIATION, /*!< \brief Radiation solver */ DISC_ADJ_RADIATION, /*!< \brief Discrete adjoint radiation solver */ - GRAD_SMOOTH, /*!< \brief Gradient Smoothing solver for discrete adjoints. */ NONE }; diff --git a/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp b/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp index 6ff23e5cc860..b599773da22d 100644 --- a/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp +++ b/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp @@ -510,60 +510,4 @@ void CDiscAdjSinglezoneDriver::SecondaryRecording(){ AD::ClearAdjoints(); - /*--- If necessary smooth the calculated geometry sensitivities ---*/ - - if (config->GetSmoothGradient()) { - DerivativeTreatment(); - } - -} - -/*--- Main routine to call the Sobolev smoothing solver and postprocess the derivatives. ---*/ - -void CDiscAdjSinglezoneDriver::DerivativeTreatment() { - - if (rank == MASTER_NODE) cout << "Sobolev Smoothing of derivatives is active." << endl; - - /*--- Get the sensitivities from the adjoint solver to work with. ---*/ - solver[GRADIENT_SMOOTHING]->SetSensitivity(geometry,config,solver[MainSolver]); - - /*--- Apply the smoothing procedure on the mesh level. ---*/ - if (config->GetSobMode()==MESH_LEVEL || config->GetSobMode()==DEBUG ) { - - if (rank == MASTER_NODE) cout << " working on mesh level (including debug mode)" << endl; - - /*--- Work with the surface derivatives. ---*/ - if (config->GetSmoothOnSurface()) { - - /*--- Select DV marker, or NOT_AVAILABLE if none is specified. ---*/ - unsigned long dvMarker = BC_TYPE::NOT_AVAILABLE; - for (unsigned short iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { - if ( config->GetMarker_All_DV(iMarker) == YES ) { - dvMarker = iMarker; - } - } - solver[GRADIENT_SMOOTHING]->ApplyGradientSmoothingSurface(geometry, solver[MainSolver], numerics[GRADIENT_SMOOTHING], config, dvMarker); - - /*--- Work with the volume derivatives. ---*/ - } else { - solver[GRADIENT_SMOOTHING]->ApplyGradientSmoothingVolume(geometry, solver[MainSolver], numerics[GRADIENT_SMOOTHING], config); - } - - /*--- After appling the solver write the results back ---*/ - solver[GRADIENT_SMOOTHING]->OutputSensitivity(geometry,config,solver[ADJFLOW_SOL]); - - /*--- Apply the smoothing procedure on the DV level. ---*/ - } else if (config->GetSobMode()==PARAM_LEVEL_COMPLETE) { - - solver[GRADIENT_SMOOTHING]->ApplyGradientSmoothingDV(geometry, solver[MainSolver], numerics[GRADIENT_SMOOTHING], surface_movement[ZONE_0], grid_movement[ZONE_0][INST_0], config); - - /*--- For some application, e.g. OneShot, we might only need the original gradient. ---*/ - } else if (config->GetSobMode()==ONLY_GRAD) { - solver[GRADIENT_SMOOTHING]->RecordTapeAndCalculateOriginalGradient(geometry, surface_movement[ZONE_0], grid_movement[ZONE_0][INST_0], config); - - /*--- Warning if choose mode is unsupported. ---*/ - } else if (config->GetSobMode()==NO_MODUS) { - if (rank == MASTER_NODE) cout << "Unsupported operation modus for the Sobolev Smoothing Solver." << endl; - } - } diff --git a/SU2_CFD/src/drivers/CDriver.cpp b/SU2_CFD/src/drivers/CDriver.cpp index 91c4563e60fb..225b4ef92566 100644 --- a/SU2_CFD/src/drivers/CDriver.cpp +++ b/SU2_CFD/src/drivers/CDriver.cpp @@ -89,7 +89,6 @@ #include "../../include/numerics/elasticity/CFEALinearElasticity.hpp" #include "../../include/numerics/elasticity/CFEANonlinearElasticity.hpp" #include "../../include/numerics/elasticity/nonlinear_models.hpp" -#include "../../include/numerics/CGradSmoothing.hpp" #include "../../include/integration/CIntegrationFactory.hpp" @@ -232,14 +231,6 @@ CDriver::CDriver(char* confFile, unsigned short val_nZone, SU2_Comm MPICommunica } - /*--- For gradient smoothing we need to initialize the mesh deformation classes. - * This is in order to calculate the projections between volume, surface and design parameters ---*/ - if ( config_container[ZONE_0]->GetSmoothGradient() ) { - grid_movement[ZONE_0][INST_0] = new CVolumetricMovement(geometry_container[ZONE_0][INST_0][MESH_0], config_container[ZONE_0]); - surface_movement[ZONE_0] = new CSurfaceMovement(); - surface_movement[ZONE_0]->CopyBoundary(geometry_container[ZONE_0][INST_0][MESH_0], config_container[ZONE_0]); - } - /*! --- Compute the wall distance again to correctly compute the derivatives if we are running direct diff mode --- */ if (driver_config->GetDirectDiff() == D_DESIGN){ CGeometry::ComputeWallDistance(config_container, geometry_container); @@ -2259,15 +2250,6 @@ void CDriver::Numerics_Preprocessing(CConfig *config, CGeometry **geometry, CSol } // end "per-thread" allocation loop - /*--- If we want to apply the gradient smoothing solver we must initialize the numerics classes. ---*/ - if(config->GetSmoothGradient()) { - if (config->GetSmoothOnSurface()) { - numerics[MESH_0][GRADIENT_SMOOTHING][GRAD_TERM] = new CGradSmoothing(nDim-1, config); - } else { - numerics[MESH_0][GRADIENT_SMOOTHING][GRAD_TERM] = new CGradSmoothing(nDim, config); - } - } - } void CDriver::Numerics_Postprocessing(CNumerics *****numerics, CSolver***, CGeometry**, diff --git a/SU2_CFD/src/meson.build b/SU2_CFD/src/meson.build index 40df04c8f21a..ba1ce1e9e9dd 100644 --- a/SU2_CFD/src/meson.build +++ b/SU2_CFD/src/meson.build @@ -77,8 +77,7 @@ su2_cfd_src += files(['variables/CIncNSVariable.cpp', 'variables/CIncEulerVariable.cpp', 'variables/CEulerVariable.cpp', 'variables/CNEMOEulerVariable.cpp', - 'variables/CNEMONSVariable.cpp', - 'variables/CSobolevSmoothingVariable.cpp']) + 'variables/CNEMONSVariable.cpp']) su2_cfd_src += files(['solvers/CSolverFactory.cpp', 'solvers/CAdjEulerSolver.cpp', @@ -107,8 +106,7 @@ su2_cfd_src += files(['solvers/CSolverFactory.cpp', 'solvers/CTransLMSolver.cpp', 'solvers/CTurbSolver.cpp', 'solvers/CTurbSASolver.cpp', - 'solvers/CTurbSSTSolver.cpp', - 'solvers/CGradientSmoothingSolver.cpp']) + 'solvers/CTurbSSTSolver.cpp']) su2_cfd_src += files(['numerics/CNumerics.cpp', 'numerics/template.cpp', @@ -141,8 +139,7 @@ su2_cfd_src += files(['numerics/CNumerics.cpp', 'numerics/elasticity/CFEAElasticity.cpp', 'numerics/elasticity/CFEALinearElasticity.cpp', 'numerics/elasticity/CFEANonlinearElasticity.cpp', - 'numerics/elasticity/nonlinear_models.cpp', - 'numerics/CGradSmoothing.cpp']) + 'numerics/elasticity/nonlinear_models.cpp']) su2_cfd_src += files(['../include/numerics_simd/CNumericsSIMD.cpp']) diff --git a/SU2_CFD/src/solvers/CSolverFactory.cpp b/SU2_CFD/src/solvers/CSolverFactory.cpp index 649579dd03db..dcde3c1682e3 100644 --- a/SU2_CFD/src/solvers/CSolverFactory.cpp +++ b/SU2_CFD/src/solvers/CSolverFactory.cpp @@ -51,7 +51,6 @@ #include "../../include/solvers/CBaselineSolver.hpp" #include "../../include/solvers/CBaselineSolver_FEM.hpp" #include "../../include/solvers/CRadP1Solver.hpp" -#include "../../include/solvers/CGradientSmoothingSolver.hpp" map CSolverFactory::allocatedSolvers; @@ -116,26 +115,22 @@ CSolver** CSolverFactory::CreateSolverContainer(MAIN_SOLVER kindMainSolver, CCon case MAIN_SOLVER::DISC_ADJ_EULER: solver[FLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::EULER, solver, geometry, config, iMGLevel); solver[ADJFLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_FLOW, solver, geometry, config, iMGLevel); - solver[GRADIENT_SMOOTHING] = CreateSubSolver(SUB_SOLVER_TYPE::GRAD_SMOOTH, solver, geometry, config, iMGLevel); break; case MAIN_SOLVER::DISC_ADJ_NAVIER_STOKES: solver[FLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::NAVIER_STOKES, solver, geometry, config, iMGLevel); solver[ADJFLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_FLOW, solver, geometry, config, iMGLevel); - solver[GRADIENT_SMOOTHING] = CreateSubSolver(SUB_SOLVER_TYPE::GRAD_SMOOTH, solver, geometry, config, iMGLevel); break; case MAIN_SOLVER::DISC_ADJ_RANS: solver[FLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::NAVIER_STOKES, solver, geometry, config, iMGLevel); solver[ADJFLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_FLOW, solver, geometry, config, iMGLevel); solver[TURB_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::TURB, solver, geometry, config, iMGLevel); solver[ADJTURB_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_TURB, solver, geometry, config, iMGLevel); - solver[GRADIENT_SMOOTHING] = CreateSubSolver(SUB_SOLVER_TYPE::GRAD_SMOOTH, solver, geometry, config, iMGLevel); break; case MAIN_SOLVER::DISC_ADJ_INC_EULER: solver[FLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::INC_EULER, solver, geometry, config, iMGLevel); solver[ADJFLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_FLOW, solver, geometry, config, iMGLevel); solver[RAD_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::RADIATION, solver, geometry, config, iMGLevel); solver[ADJRAD_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_RADIATION, solver, geometry, config, iMGLevel); - solver[GRADIENT_SMOOTHING] = CreateSubSolver(SUB_SOLVER_TYPE::GRAD_SMOOTH, solver, geometry, config, iMGLevel); break; case MAIN_SOLVER::DISC_ADJ_INC_NAVIER_STOKES: solver[FLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::INC_NAVIER_STOKES, solver, geometry, config, iMGLevel); @@ -144,7 +139,6 @@ CSolver** CSolverFactory::CreateSolverContainer(MAIN_SOLVER kindMainSolver, CCon solver[ADJHEAT_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_HEAT, solver, geometry, config, iMGLevel); solver[RAD_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::RADIATION, solver, geometry, config, iMGLevel); solver[ADJRAD_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_RADIATION, solver, geometry, config, iMGLevel); - solver[GRADIENT_SMOOTHING] = CreateSubSolver(SUB_SOLVER_TYPE::GRAD_SMOOTH, solver, geometry, config, iMGLevel); break; case MAIN_SOLVER::DISC_ADJ_INC_RANS: solver[FLOW_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::INC_NAVIER_STOKES, solver, geometry, config, iMGLevel); @@ -155,7 +149,6 @@ CSolver** CSolverFactory::CreateSolverContainer(MAIN_SOLVER kindMainSolver, CCon solver[ADJTURB_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_TURB, solver, geometry, config, iMGLevel); solver[RAD_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::RADIATION, solver, geometry, config, iMGLevel); solver[ADJRAD_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::DISC_ADJ_RADIATION, solver, geometry, config, iMGLevel); - solver[GRADIENT_SMOOTHING] = CreateSubSolver(SUB_SOLVER_TYPE::GRAD_SMOOTH, solver, geometry, config, iMGLevel); break; case MAIN_SOLVER::DISC_ADJ_HEAT: solver[HEAT_SOL] = CreateSubSolver(SUB_SOLVER_TYPE::HEAT, solver, geometry, config, iMGLevel); @@ -305,11 +298,6 @@ CSolver* CSolverFactory::CreateSubSolver(SUB_SOLVER_TYPE kindSolver, CSolver **s } metaData.integrationType = INTEGRATION_TYPE::DEFAULT; break; - case SUB_SOLVER_TYPE::GRAD_SMOOTH: - if (iMGLevel == MESH_0 && config->GetSmoothGradient() ) { - genericSolver = new CGradientSmoothingSolver(geometry, config); - } - break; default: SU2_MPI::Error("No proper allocation found for requested sub solver", CURRENT_FUNCTION); break; diff --git a/SU2_DOT/include/SU2_DOT.hpp b/SU2_DOT/include/SU2_DOT.hpp index 83424040db18..cd86631460dd 100644 --- a/SU2_DOT/include/SU2_DOT.hpp +++ b/SU2_DOT/include/SU2_DOT.hpp @@ -46,6 +46,9 @@ #include "../../SU2_CFD/include/output/CBaselineOutput.hpp" #include "../../SU2_CFD/include/solvers/CBaselineSolver.hpp" +#include "solvers/CGradientSmoothingSolver.hpp" +#include "numerics/CGradSmoothing.hpp" + using namespace std; @@ -87,3 +90,13 @@ void OutputGradient(su2double** Gradient, CConfig* config, ofstream& Gradient_fi */ void SetSensitivity_Files(CGeometry ***geometry, CConfig **config, unsigned short val_nZone); + +/*! + * \brief Treatment of derivatives with the Sobolev smoothing solver. + * \param[in] geometry - Geometrical definition of the problem. + * \param[in] config - Definition of the particular problem. + * \param[in] surface_movement - Surface movement class of the problem. + * \param[in] Gradient_file - Output file to store the gradient data. + */ + +void DerivativeTreatment(CGeometry *geometry, CConfig *config, CVolumetricMovement *grid_movement, CSurfaceMovement *surface_movement, su2double **Gradient); diff --git a/SU2_CFD/include/numerics/CGradSmoothing.hpp b/SU2_DOT/include/numerics/CGradSmoothing.hpp similarity index 96% rename from SU2_CFD/include/numerics/CGradSmoothing.hpp rename to SU2_DOT/include/numerics/CGradSmoothing.hpp index cddff235dc64..4824d94140f0 100644 --- a/SU2_CFD/include/numerics/CGradSmoothing.hpp +++ b/SU2_DOT/include/numerics/CGradSmoothing.hpp @@ -27,8 +27,8 @@ #pragma once -#include "CNumerics.hpp" #include "../../../Common/include/geometry/elements/CElement.hpp" +#include "../../../SU2_CFD/include/numerics/CNumerics.hpp" /*! * \class CGradSmoothing diff --git a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp b/SU2_DOT/include/solvers/CGradientSmoothingSolver.hpp similarity index 86% rename from SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp rename to SU2_DOT/include/solvers/CGradientSmoothingSolver.hpp index 531145ef597f..282c4a364a07 100644 --- a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp +++ b/SU2_DOT/include/solvers/CGradientSmoothingSolver.hpp @@ -27,10 +27,10 @@ #pragma once -#include "CSolver.hpp" #include "../../../Common/include/geometry/elements/CElement.hpp" #include "../../../Common/include/linear_algebra/CMatrixVectorProduct.hpp" #include "../../../Common/include/toolboxes/CSquareMatrixCM.hpp" +#include "../../../SU2_CFD/include/solvers/CSolver.hpp" /** Introduction of a new data type to allow compilation with forward mode. * @@ -101,8 +101,7 @@ class CGradientSmoothingSolver : public CSolver { * \brief Main routine for applying the solver on the volume sensitivities */ void ApplyGradientSmoothingVolume(CGeometry *geometry, - CSolver *solver, - CNumerics **numerics, + CNumerics *numerics, CConfig *config) override; /*! @@ -110,34 +109,33 @@ class CGradientSmoothingSolver : public CSolver { * Projects and smoothes only in the normal direction! */ void ApplyGradientSmoothingSurface(CGeometry *geometry, - CSolver *solver, - CNumerics **numerics, - CConfig *config, - unsigned long val_marker) override; + CNumerics *numerics, + CConfig *config, + unsigned long val_marker) override; /*! * \brief All steps required for smoothing the whole system on DV level in an iterative way */ void ApplyGradientSmoothingDV(CGeometry *geometry, - CSolver *solver, - CNumerics **numerics, + CNumerics *numerics, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, - CConfig *config) override; + CConfig *config, + su2double** Gradient) override; /*! * \brief Assemble the stiffness matrix */ void Compute_StiffMatrix(CGeometry *geometry, - CNumerics **numerics, + CNumerics *numerics, CConfig *config); /*! * \brief Compute the stiffness matrix of the surface mesh */ void Compute_Surface_StiffMatrix(CGeometry *geometry, - CNumerics **numerics, + CNumerics *numerics, CConfig *config, unsigned long val_marker, unsigned int nSurfDim=1); @@ -146,14 +144,12 @@ class CGradientSmoothingSolver : public CSolver { * \brief Calculate the RHS of the PDE */ void Compute_Residual(CGeometry *geometry, - CSolver *solver, CConfig *config); /*! * \brief Compute the RHS of the PDE on the surface mesh */ void Compute_Surface_Residual(CGeometry *geometry, - CSolver *solver, CConfig *config, unsigned long val_marker); @@ -161,15 +157,12 @@ class CGradientSmoothingSolver : public CSolver { * \brief Set the boundary conditions */ void Impose_BC(CGeometry *geometry, - CNumerics **numerics, CConfig *config); /*! * \brief Set Dirichlet boundary conditions */ void BC_Dirichlet(CGeometry *geometry, - CSolver **solver_container, - CNumerics **numerics, CConfig *config, unsigned int val_marker); @@ -191,7 +184,7 @@ class CGradientSmoothingSolver : public CSolver { * \note This always applies the stiffness matrix for all dimensions independent of each other! */ CSysMatrixVectorProduct GetStiffnessMatrixVectorProduct(CGeometry *geometry, - CNumerics **numerics, + CNumerics *numerics, CConfig *config); /*! @@ -199,7 +192,8 @@ class CGradientSmoothingSolver : public CSolver { */ void CalculateOriginalGradient(CGeometry *geometry, CVolumetricMovement* grid_movement, - CConfig *config); + CConfig *config, + su2double **Gradient); /*! * \brief Return the original gradient for application in OneShot. @@ -207,18 +201,14 @@ class CGradientSmoothingSolver : public CSolver { void RecordTapeAndCalculateOriginalGradient(CGeometry *geometry, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, - CConfig *config) override; + CConfig *config, + su2double** Gradient) override; /*! * \brief Return current parameter gradient. */ inline vector GetDeltaP() override { return deltaP; } - /*! - * \brief Return a handle for the Hessian. - */ - void GetHessianMatrix() override {} - /*! * \brief write the DV gradient into a file */ @@ -260,30 +250,16 @@ class CGradientSmoothingSolver : public CSolver { CConfig *config); /*! - * \brief Extract and set the sensitivity from the discrete adjoint solver. - * \param[in] geometry - Geometrical definition of the problem. - * \param[in] solver - The solver container holding all terms of the solution. - * \param[in] config - Definition of the particular problem. - */ - void SetSensitivity(CGeometry *geometry, - CConfig *config, - CSolver *solver) override; - - /*! - * \brief Store smoothed sensitivties back into the adjoint solver. + * \brief Extract and set the geometrical sensitivity. * \param[in] geometry - Geometrical definition of the problem. - * \param[in] solver - The solver container holding all terms of the solution. * \param[in] config - Definition of the particular problem. */ - void OutputSensitivity(CGeometry *geometry, - CConfig *config, - CSolver *solver) override; + void SetSensitivity(CGeometry *geometry, CConfig *config, CSolver*) override; /*! * \brief Write the solution of the linear solver into the sensitivities of the nodes */ void WriteSensitivity(CGeometry *geometry, - CSolver *solver, CConfig *config, unsigned long val_marker=0); diff --git a/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp b/SU2_DOT/include/variables/CSobolevSmoothingVariable.hpp similarity index 98% rename from SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp rename to SU2_DOT/include/variables/CSobolevSmoothingVariable.hpp index beda1802cafc..e4c166f85cc1 100644 --- a/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp +++ b/SU2_DOT/include/variables/CSobolevSmoothingVariable.hpp @@ -37,7 +37,7 @@ #pragma once -#include "CVariable.hpp" +#include "../../../SU2_CFD/include/variables/CVariable.hpp" class CSobolevSmoothingVariable : public CVariable { public: diff --git a/SU2_DOT/src/SU2_DOT.cpp b/SU2_DOT/src/SU2_DOT.cpp index 30e569184da5..33e511505dd8 100644 --- a/SU2_DOT/src/SU2_DOT.cpp +++ b/SU2_DOT/src/SU2_DOT.cpp @@ -322,11 +322,15 @@ int main(int argc, char *argv[]) { /*--- If AD mode is enabled we can use it to compute the projection, * otherwise we use finite differences. ---*/ - if (config_container[iZone]->GetAD_Mode()) - SetProjection_AD(geometry_container[iZone][INST_0], config_container[iZone], surface_movement[iZone] , Gradient); - else + if (config_container[iZone]->GetAD_Mode()) { + if (config_container[iZone]->GetSmoothGradient()) { + DerivativeTreatment(geometry_container[iZone][INST_0], config_container[iZone], grid_movement[iZone], surface_movement[iZone] , Gradient); + } else { + SetProjection_AD(geometry_container[iZone][INST_0], config_container[iZone], surface_movement[iZone] , Gradient); + } + } else { SetProjection_FD(geometry_container[iZone][INST_0], config_container[iZone], surface_movement[iZone] , Gradient); - + } } } // for iZone @@ -957,3 +961,62 @@ void SetSensitivity_Files(CGeometry ***geometry, CConfig **config, unsigned shor } } + +void DerivativeTreatment(CGeometry *geometry, CConfig *config, CVolumetricMovement* grid_movement, CSurfaceMovement *surface_movement, su2double** Gradient) { + + int rank = SU2_MPI::GetRank(); + + /*-- Construct the smoothing solver and numerics ---*/ + CSolver* solver = new CGradientSmoothingSolver(geometry, config); + CNumerics* numerics; + if (config->GetSmoothOnSurface()) { + numerics = new CGradSmoothing(geometry->GetnDim()-1, config); + } else { + numerics = new CGradSmoothing(geometry->GetnDim(), config); + } + + if (rank == MASTER_NODE) cout << "Sobolev Smoothing of derivatives is active." << endl; + + /*--- Get the sensitivities from the geometry class to work with. ---*/ + solver->ReadSens2Geometry(geometry,config); + + /*--- Apply the smoothing procedure on the mesh level. ---*/ + if (config->GetSobMode()==MESH_LEVEL || config->GetSobMode()==DEBUG ) { + + if (rank == MASTER_NODE) cout << " working on mesh level (including debug mode)" << endl; + + /*--- Work with the surface derivatives. ---*/ + if (config->GetSmoothOnSurface()) { + + /*--- Select DV marker, or NOT_AVAILABLE if none is specified. ---*/ + unsigned long dvMarker = BC_TYPE::NOT_AVAILABLE; + for (unsigned short iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { + if ( config->GetMarker_All_DV(iMarker) == YES ) { + dvMarker = iMarker; + } + } + solver->ApplyGradientSmoothingSurface(geometry, numerics, config, dvMarker); + + /*--- Work with the volume derivatives. ---*/ + } else { + solver->ApplyGradientSmoothingVolume(geometry, numerics, config); + } + + /*--- After appling the solver write the results back ---*/ + solver->WriteSens2Geometry(geometry,config); + + /*--- Apply the smoothing procedure on the DV level. ---*/ + } else if (config->GetSobMode()==PARAM_LEVEL_COMPLETE) { + + solver->ApplyGradientSmoothingDV(geometry, numerics, surface_movement, grid_movement, config, Gradient); + + /*--- For some application, e.g. OneShot, we might only need the original gradient. ---*/ + } else if (config->GetSobMode()==ONLY_GRAD) { + solver->RecordTapeAndCalculateOriginalGradient(geometry, surface_movement, grid_movement, config, Gradient); + + /*--- Warning if choose mode is unsupported. ---*/ + } else if (config->GetSobMode()==NO_MODUS) { + if (rank == MASTER_NODE) cout << "Unsupported operation modus for the Sobolev Smoothing Solver." << endl; + } + +} diff --git a/SU2_DOT/src/meson.build b/SU2_DOT/src/meson.build index 6dbafcb5cdef..0042f0579e64 100644 --- a/SU2_DOT/src/meson.build +++ b/SU2_DOT/src/meson.build @@ -1,5 +1,9 @@ su2_dot_src = ['SU2_DOT.cpp'] +su2_dot_src += files(['variables/CSobolevSmoothingVariable.cpp']) +su2_dot_src += files(['solvers/CGradientSmoothingSolver.cpp']) +su2_dot_src += files(['numerics/CGradSmoothing.cpp']) + if get_option('enable-normal') su2_cfd_obj = su2_cfd_lib.extract_objects(['solvers/CSolver.cpp', 'solvers/CBaselineSolver.cpp', @@ -28,7 +32,8 @@ if get_option('enable-normal') 'output/filewriter/CCGNSFileWriter.cpp', 'variables/CBaselineVariable.cpp', 'variables/CVariable.cpp', - 'limiters/CLimiterDetails.cpp']) + 'limiters/CLimiterDetails.cpp', + 'numerics/CNumerics.cpp']) su2_dot = executable('SU2_DOT', su2_dot_src, install: true, @@ -66,7 +71,8 @@ if get_option('enable-autodiff') 'output/filewriter/CCGNSFileWriter.cpp', 'variables/CBaselineVariable.cpp', 'variables/CVariable.cpp', - 'limiters/CLimiterDetails.cpp']) + 'limiters/CLimiterDetails.cpp', + 'numerics/CNumerics.cpp']) su2_dot_ad = executable('SU2_DOT_AD', su2_dot_src, diff --git a/SU2_CFD/src/numerics/CGradSmoothing.cpp b/SU2_DOT/src/numerics/CGradSmoothing.cpp similarity index 100% rename from SU2_CFD/src/numerics/CGradSmoothing.cpp rename to SU2_DOT/src/numerics/CGradSmoothing.cpp diff --git a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp b/SU2_DOT/src/solvers/CGradientSmoothingSolver.cpp similarity index 94% rename from SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp rename to SU2_DOT/src/solvers/CGradientSmoothingSolver.cpp index cc877fb2f918..3aff76c7c11f 100644 --- a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp +++ b/SU2_DOT/src/solvers/CGradientSmoothingSolver.cpp @@ -209,7 +209,7 @@ CGradientSmoothingSolver::~CGradientSmoothingSolver(void) { } -void CGradientSmoothingSolver::ApplyGradientSmoothingVolume(CGeometry *geometry, CSolver *solver, CNumerics **numerics, CConfig *config) { +void CGradientSmoothingSolver::ApplyGradientSmoothingVolume(CGeometry *geometry, CNumerics *numerics, CConfig *config) { /*--- current dimension if we run consecutive on each dimension ---*/ dir = 0; @@ -227,13 +227,13 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingVolume(CGeometry *geometry, for (dir = 0; dir < nDim ; dir++) { - Compute_Residual(geometry, solver, config); + Compute_Residual(geometry, config); - Impose_BC(geometry, numerics, config); + Impose_BC(geometry, config); Solve_Linear_System(geometry, config); - WriteSensitivity(geometry, solver, config); + WriteSensitivity(geometry, config); LinSysSol.SetValZero(); LinSysRes.SetValZero(); @@ -241,19 +241,19 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingVolume(CGeometry *geometry, } else { - Compute_Residual(geometry, solver, config); + Compute_Residual(geometry, config); - Impose_BC(geometry, numerics, config); + Impose_BC(geometry, config); Solve_Linear_System(geometry, config); - WriteSensitivity(geometry, solver, config); + WriteSensitivity(geometry, config); } } -void CGradientSmoothingSolver::ApplyGradientSmoothingSurface(CGeometry *geometry, CSolver *solver, CNumerics **numerics, CConfig *config, unsigned long val_marker) { +void CGradientSmoothingSolver::ApplyGradientSmoothingSurface(CGeometry *geometry, CNumerics *numerics, CConfig *config, unsigned long val_marker) { /*--- Set vector and sparse matrix to 0 ---*/ LinSysSol.SetValZero(); @@ -263,7 +263,7 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingSurface(CGeometry *geometry /*--- Compute the stiffness matrix for the smoothing operator. ---*/ Compute_Surface_StiffMatrix(geometry, numerics, config, val_marker); - Compute_Surface_Residual(geometry, solver, config, val_marker); + Compute_Surface_Residual(geometry, config, val_marker); if ( config->GetDirichletSurfaceBound() ) { BC_Surface_Dirichlet(geometry, config, val_marker); @@ -272,11 +272,11 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingSurface(CGeometry *geometry /*--- Solve the system and write the result back. ---*/ Solve_Linear_System(geometry, config); - WriteSensitivity(geometry, solver, config, val_marker); + WriteSensitivity(geometry, config, val_marker); } -void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CSolver *solver, CNumerics **numerics, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, CConfig *config) { +void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CNumerics *numerics, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, CConfig *config, su2double** Gradient) { unsigned nDVtotal=config->GetnDV_Total(); unsigned column, row; @@ -294,7 +294,7 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CSo RecordParameterizationJacobian(geometry, surface_movement, activeCoord, config); /*--- Calculate the original gradient. ---*/ - CalculateOriginalGradient(geometry, grid_movement, config); + CalculateOriginalGradient(geometry, grid_movement, config, Gradient); /*--- Compute the full Sobolev Hessian approximation column by column. ---*/ if (rank == MASTER_NODE) cout << " computing the system matrix line by line" << endl; @@ -389,7 +389,7 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CSo } -void CGradientSmoothingSolver::Compute_StiffMatrix(CGeometry *geometry, CNumerics **numerics, CConfig *config){ +void CGradientSmoothingSolver::Compute_StiffMatrix(CGeometry *geometry, CNumerics *numerics, CConfig *config){ unsigned long iElem, iNode; unsigned int iDim, nNodes = 0, NelNodes, jNode; @@ -419,7 +419,7 @@ void CGradientSmoothingSolver::Compute_StiffMatrix(CGeometry *geometry, CNumeric /*--- compute the contributions of the single elements inside the numerics container ---*/ - numerics[GRAD_TERM]->Compute_Tangent_Matrix(element_container[GRAD_TERM][EL_KIND], config); + numerics->Compute_Tangent_Matrix(element_container[GRAD_TERM][EL_KIND], config); NelNodes = element_container[GRAD_TERM][EL_KIND]->GetnNodes(); @@ -450,7 +450,7 @@ void CGradientSmoothingSolver::Compute_StiffMatrix(CGeometry *geometry, CNumeric } } -void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry *geometry, CNumerics **numerics, CConfig *config, unsigned long val_marker, unsigned int nSurfDim){ +void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry *geometry, CNumerics *numerics, CConfig *config, unsigned long val_marker, unsigned int nSurfDim){ unsigned long iElem, iPoint, iVertex, iDim, iSurfDim; unsigned int iNode, jNode, nNodes = 0, NelNodes; @@ -496,7 +496,7 @@ void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry *geometry, } /*--- compute the contributions of the single elements inside the numerics container ---*/ - numerics[GRAD_TERM]->Compute_Tangent_Matrix(element_container[GRAD_TERM][EL_KIND], config); + numerics->Compute_Tangent_Matrix(element_container[GRAD_TERM][EL_KIND], config); NelNodes = element_container[GRAD_TERM][EL_KIND]->GetnNodes(); @@ -531,7 +531,7 @@ void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry *geometry, } } -void CGradientSmoothingSolver::Compute_Residual(CGeometry *geometry, CSolver *solver, CConfig *config){ +void CGradientSmoothingSolver::Compute_Residual(CGeometry *geometry, CConfig *config) { unsigned long iElem; unsigned int iDim, iNode, nNodes = 0; @@ -602,7 +602,7 @@ void CGradientSmoothingSolver::Compute_Residual(CGeometry *geometry, CSolver *so } } -void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry *geometry, CSolver *solver, CConfig *config, unsigned long val_marker){ +void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry *geometry, CConfig *config, unsigned long val_marker) { unsigned long iElem, iPoint, iVertex; unsigned int iDim, iNode, nNodes = 0; @@ -679,7 +679,7 @@ void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry *geometry, CSo } } -void CGradientSmoothingSolver::Impose_BC(CGeometry *geometry, CNumerics **numerics, CConfig *config) { +void CGradientSmoothingSolver::Impose_BC(CGeometry *geometry, CConfig *config) { unsigned int iMarker; @@ -688,13 +688,13 @@ void CGradientSmoothingSolver::Impose_BC(CGeometry *geometry, CNumerics **numeri for (iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { if (config->GetMarker_All_SobolevBC(iMarker) == YES) { - BC_Dirichlet(geometry, NULL, numerics, config, iMarker); + BC_Dirichlet(geometry, config, iMarker); } } } -void CGradientSmoothingSolver::BC_Dirichlet(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics, CConfig *config, unsigned int val_marker) { +void CGradientSmoothingSolver::BC_Dirichlet(CGeometry *geometry, CConfig *config, unsigned int val_marker) { unsigned long iPoint, iVertex; const su2double zeros[MAXNDIM] = {0.0}; @@ -762,7 +762,7 @@ void CGradientSmoothingSolver::Solve_Linear_System(CGeometry *geometry, CConfig } -CSysMatrixVectorProduct CGradientSmoothingSolver::GetStiffnessMatrixVectorProduct(CGeometry *geometry, CNumerics **numerics, CConfig *config) { +CSysMatrixVectorProduct CGradientSmoothingSolver::GetStiffnessMatrixVectorProduct(CGeometry *geometry, CNumerics *numerics, CConfig *config) { bool surf = config->GetSmoothOnSurface(); @@ -782,7 +782,9 @@ CSysMatrixVectorProduct CGradientSmoothingSolver::GetStiffnessM return CSysMatrixVectorProduct(Jacobian, geometry, config); } -void CGradientSmoothingSolver::CalculateOriginalGradient(CGeometry *geometry, CVolumetricMovement *grid_movement, CConfig *config) { +void CGradientSmoothingSolver::CalculateOriginalGradient(CGeometry *geometry, CVolumetricMovement *grid_movement, CConfig *config, su2double** Gradient) { + + unsigned int iDV, iDV_Value, iDV_index, nDV, nDV_Value; if (rank == MASTER_NODE) cout << endl << "Calculating the original DV gradient." << endl; @@ -795,16 +797,25 @@ void CGradientSmoothingSolver::CalculateOriginalGradient(CGeometry *geometry, CV ProjectMeshToDV(geometry, helperVecOut, deltaP, activeCoord, config); OutputDVGradient(config, "orig_grad.dat"); + + iDV_index = 0; + for (iDV = 0; iDV < config->GetnDV(); iDV++){ + nDV_Value = config->GetnDV_Value(iDV); + for (iDV_Value = 0; iDV_Value < nDV_Value; iDV_Value++){ + Gradient[iDV][iDV_Value] = deltaP[iDV_index]; + iDV_index++; + } + } } -void CGradientSmoothingSolver::RecordTapeAndCalculateOriginalGradient(CGeometry *geometry, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, CConfig *config) { +void CGradientSmoothingSolver::RecordTapeAndCalculateOriginalGradient(CGeometry *geometry, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, CConfig *config, su2double **Gradient) { /*--- Record the parameterization on the AD tape. ---*/ if (rank == MASTER_NODE) cout << " calculate the original gradient" << endl; RecordParameterizationJacobian(geometry, surface_movement, activeCoord, config); /*--- Calculate the original gradient. ---*/ - CalculateOriginalGradient(geometry, grid_movement, config); + CalculateOriginalGradient(geometry, grid_movement, config, Gradient); } @@ -958,11 +969,9 @@ void CGradientSmoothingSolver::ProjectMeshToDV(CGeometry *geometry, CSysVectorGetnDV_Value(iDV); for (iDV_Value = 0; iDV_Value < nDV_Value; iDV_Value++){ my_Gradient = SU2_TYPE::GetDerivative(DV_Value[iDV][iDV_Value]); - #ifdef HAVE_MPI - SU2_MPI::Allreduce(&my_Gradient, &localGradient, 1, MPI_DOUBLE, MPI_SUM, SU2_MPI::GetComm()); - #else - localGradient = my_Gradient; - #endif + + SU2_MPI::Allreduce(&my_Gradient, &localGradient, 1, MPI_DOUBLE, MPI_SUM, SU2_MPI::GetComm()); + output[iDV_index] = localGradient; iDV_index++; } @@ -972,27 +981,17 @@ void CGradientSmoothingSolver::ProjectMeshToDV(CGeometry *geometry, CSysVectorSetSensitivity(iPoint,iDim, solver->GetNodes()->GetSensitivity(iPoint,iDim)); - } - } -} - -void CGradientSmoothingSolver::OutputSensitivity(CGeometry *geometry, CConfig *config, CSolver *solver) { +void CGradientSmoothingSolver::SetSensitivity(CGeometry *geometry, CConfig *config, CSolver*) { unsigned long iPoint; unsigned int iDim; for (iPoint = 0; iPoint < nPoint; iPoint++) { for (iDim = 0; iDim < nDim; iDim++) { - solver->GetNodes()->SetSensitivity(iPoint,iDim, nodes->GetSensitivity(iPoint,iDim)); + // nodes->SetSensitivity(iPoint,iDim, solver->GetNodes()->GetSensitivity(iPoint,iDim)); } } } -void CGradientSmoothingSolver::WriteSensitivity(CGeometry *geometry, CSolver *solver, CConfig *config, unsigned long val_marker){ +void CGradientSmoothingSolver::WriteSensitivity(CGeometry *geometry, CConfig *config, unsigned long val_marker) { unsigned long iPoint, total_index; unsigned int iDim; diff --git a/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp b/SU2_DOT/src/variables/CSobolevSmoothingVariable.cpp similarity index 100% rename from SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp rename to SU2_DOT/src/variables/CSobolevSmoothingVariable.cpp diff --git a/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg b/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg index 2f4cbe9edce2..0b4e67b8d545 100644 --- a/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg +++ b/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg @@ -265,7 +265,7 @@ DIRICHLET_SURFACE_BOUNDARY= NO % - PARAM_LEVEL_COMPLETE (Apply Sobolev smoothing to the projected gradient, w.r.t. the DV.) % - MESH_LEVEL (Apply Sobolev smoothing to the mesh sensitivities.) % - DEBUG (Test the finite elements asembly of the Laplace-Beltrami operator.) -% - ONLY_GRAD (Only calculate the classical gradient.) +% - ONLY_GRADIENT (Only calculate the classical gradient.) SOBOLEV_MODE= PARAM_LEVEL_COMPLETE % % Output filename for the assembled Sobolev smoothing system matrix diff --git a/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg b/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg index 661633ea4119..4afb50a79cf1 100644 --- a/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg +++ b/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg @@ -331,7 +331,7 @@ MARKER_SOBOLEVBC= ( airfoil ) % - PARAM_LEVEL_COMPLETE (Apply Sobolev smoothing to the projected gradient, w.r.t. the DV.) % - MESH_LEVEL (Apply Sobolev smoothing to the mesh sensitivities.) % - DEBUG (Test the finite elements asembly of the Laplace-Beltrami operator.) -% - ONLY_GRAD (Only calculate the classical gradient.) +% - ONLY_GRADIENT (Only calculate the classical gradient.) SOBOLEV_MODE= PARAM_LEVEL_COMPLETE % % Output filename for the assembled Sobolev smoothing system matrix diff --git a/config_template.cfg b/config_template.cfg index 630c8a0a7c26..07d0837b19c6 100644 --- a/config_template.cfg +++ b/config_template.cfg @@ -1564,7 +1564,7 @@ MARKER_SOBOLEVBC= ( airfoil ) % - PARAM_LEVEL_COMPLETE (Apply Sobolev smoothing to the projected gradient, w.r.t. the DV.) % - MESH_LEVEL (Apply Sobolev smoothing to the mesh sensitivities.) % - DEBUG (Test the finite elements asembly of the Laplace-Beltrami operator.) -% - ONLY_GRAD (Only calculate the classical gradient.) +% - ONLY_GRADIENT (Only calculate the classical gradient.) SOBOLEV_MODE= NO_MODUS % % Output filename for the assembled Sobolev smoothing system matrix From 84122b1b45d5866b3f6aacf83950619076271d42 Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Fri, 3 Dec 2021 15:33:56 +0100 Subject: [PATCH 11/26] Split the derivative treatment in SU2_DOT into 2 parts for mesh and dv gradient. --- Common/include/option_structure.hpp | 2 +- SU2_DOT/include/SU2_DOT.hpp | 15 +++++++- SU2_DOT/src/SU2_DOT.cpp | 37 ++++++++++++++++--- .../src/solvers/CGradientSmoothingSolver.cpp | 5 +-- 4 files changed, 48 insertions(+), 11 deletions(-) diff --git a/Common/include/option_structure.hpp b/Common/include/option_structure.hpp index d316931eca0e..7c698e54680b 100644 --- a/Common/include/option_structure.hpp +++ b/Common/include/option_structure.hpp @@ -77,7 +77,7 @@ const unsigned int MAX_NUMBER_PERIODIC = 10; /*!< \brief Maximum number of peri const unsigned int MAX_STRING_SIZE = 200; /*!< \brief Maximum number of domains. */ const unsigned int MAX_NUMBER_FFD = 15; /*!< \brief Maximum number of FFDBoxes for the FFD. */ enum: unsigned int{MAX_SOLS = 13}; /*!< \brief Maximum number of solutions at the same time (dimension of solution container array). */ -const unsigned int MAX_TERMS = 6; /*!< \brief Maximum number of terms in the numerical equations (dimension of solver container array). */ +const unsigned int MAX_TERMS = 7; /*!< \brief Maximum number of terms in the numerical equations (dimension of solver container array). */ const unsigned int MAX_ZONES = 3; /*!< \brief Maximum number of zones. */ const unsigned int MAX_FE_KINDS = 7; /*!< \brief Maximum number of Finite Elements. */ const unsigned int NO_RK_ITER = 0; /*!< \brief No Runge-Kutta iteration. */ diff --git a/SU2_DOT/include/SU2_DOT.hpp b/SU2_DOT/include/SU2_DOT.hpp index cd86631460dd..8f92ae9709ba 100644 --- a/SU2_DOT/include/SU2_DOT.hpp +++ b/SU2_DOT/include/SU2_DOT.hpp @@ -95,8 +95,19 @@ void SetSensitivity_Files(CGeometry ***geometry, CConfig **config, unsigned shor * \brief Treatment of derivatives with the Sobolev smoothing solver. * \param[in] geometry - Geometrical definition of the problem. * \param[in] config - Definition of the particular problem. + * \param[in] grid_movement - Volumetric movement class of the problem. * \param[in] surface_movement - Surface movement class of the problem. - * \param[in] Gradient_file - Output file to store the gradient data. */ -void DerivativeTreatment(CGeometry *geometry, CConfig *config, CVolumetricMovement *grid_movement, CSurfaceMovement *surface_movement, su2double **Gradient); +void DerivativeTreatment_MeshSensitivity(CGeometry *geometry, CConfig *config); + +/*! + * \brief Treatment of derivatives with the Sobolev smoothing solver. + * \param[in] geometry - Geometrical definition of the problem. + * \param[in] config - Definition of the particular problem. + * \param[in] grid_movement - Volumetric movement class of the problem. + * \param[in] surface_movement - Surface movement class of the problem. + * \param[in] Gradient - Output array to store the gradient data. + */ + +void DerivativeTreatment_Gradient(CGeometry *geometry, CConfig *config, CVolumetricMovement *grid_movement, CSurfaceMovement *surface_movement, su2double **Gradient); diff --git a/SU2_DOT/src/SU2_DOT.cpp b/SU2_DOT/src/SU2_DOT.cpp index 33e511505dd8..db20372fef05 100644 --- a/SU2_DOT/src/SU2_DOT.cpp +++ b/SU2_DOT/src/SU2_DOT.cpp @@ -285,8 +285,10 @@ int main(int argc, char *argv[]) { } } - if (config_container[ZONE_0]->GetDiscrete_Adjoint()) { + + DerivativeTreatment_MeshSensitivity(geometry_container[ZONE_0][INST_0], config_container[ZONE_0]); + if (rank == MASTER_NODE) cout << "\n------------------------ Mesh sensitivity Output ------------------------" << endl; SetSensitivity_Files(geometry_container, config_container, nZone); @@ -324,7 +326,7 @@ int main(int argc, char *argv[]) { if (config_container[iZone]->GetAD_Mode()) { if (config_container[iZone]->GetSmoothGradient()) { - DerivativeTreatment(geometry_container[iZone][INST_0], config_container[iZone], grid_movement[iZone], surface_movement[iZone] , Gradient); + DerivativeTreatment_Gradient(geometry_container[iZone][INST_0], config_container[iZone], grid_movement[iZone], surface_movement[iZone] , Gradient); } else { SetProjection_AD(geometry_container[iZone][INST_0], config_container[iZone], surface_movement[iZone] , Gradient); } @@ -962,7 +964,7 @@ void SetSensitivity_Files(CGeometry ***geometry, CConfig **config, unsigned shor } -void DerivativeTreatment(CGeometry *geometry, CConfig *config, CVolumetricMovement* grid_movement, CSurfaceMovement *surface_movement, su2double** Gradient) { +void DerivativeTreatment_MeshSensitivity(CGeometry *geometry, CConfig *config) { int rank = SU2_MPI::GetRank(); @@ -1005,8 +1007,33 @@ void DerivativeTreatment(CGeometry *geometry, CConfig *config, CVolumetricMoveme /*--- After appling the solver write the results back ---*/ solver->WriteSens2Geometry(geometry,config); + /*--- Warning if choosen mode is unsupported. ---*/ + }else if (config->GetSobMode()==NO_MODUS) { + if (rank == MASTER_NODE) cout << "Unsupported operation modus for the Sobolev Smoothing Solver." << endl; + } + +} + +void DerivativeTreatment_Gradient(CGeometry *geometry, CConfig *config, CVolumetricMovement* grid_movement, CSurfaceMovement *surface_movement, su2double** Gradient) { + + int rank = SU2_MPI::GetRank(); + + /*-- Construct the smoothing solver and numerics ---*/ + CSolver* solver = new CGradientSmoothingSolver(geometry, config); + CNumerics* numerics; + if (config->GetSmoothOnSurface()) { + numerics = new CGradSmoothing(geometry->GetnDim()-1, config); + } else { + numerics = new CGradSmoothing(geometry->GetnDim(), config); + } + + if (rank == MASTER_NODE) cout << "Sobolev Smoothing of derivatives is active." << endl; + + /*--- Get the sensitivities from the geometry class to work with. ---*/ + solver->ReadSens2Geometry(geometry,config); + /*--- Apply the smoothing procedure on the DV level. ---*/ - } else if (config->GetSobMode()==PARAM_LEVEL_COMPLETE) { + if (config->GetSobMode()==PARAM_LEVEL_COMPLETE) { solver->ApplyGradientSmoothingDV(geometry, numerics, surface_movement, grid_movement, config, Gradient); @@ -1014,7 +1041,7 @@ void DerivativeTreatment(CGeometry *geometry, CConfig *config, CVolumetricMoveme } else if (config->GetSobMode()==ONLY_GRAD) { solver->RecordTapeAndCalculateOriginalGradient(geometry, surface_movement, grid_movement, config, Gradient); - /*--- Warning if choose mode is unsupported. ---*/ + /*--- Warning if choosen mode is unsupported. ---*/ } else if (config->GetSobMode()==NO_MODUS) { if (rank == MASTER_NODE) cout << "Unsupported operation modus for the Sobolev Smoothing Solver." << endl; } diff --git a/SU2_DOT/src/solvers/CGradientSmoothingSolver.cpp b/SU2_DOT/src/solvers/CGradientSmoothingSolver.cpp index 3aff76c7c11f..f59c1ba74012 100644 --- a/SU2_DOT/src/solvers/CGradientSmoothingSolver.cpp +++ b/SU2_DOT/src/solvers/CGradientSmoothingSolver.cpp @@ -784,7 +784,7 @@ CSysMatrixVectorProduct CGradientSmoothingSolver::GetStiffnessM void CGradientSmoothingSolver::CalculateOriginalGradient(CGeometry *geometry, CVolumetricMovement *grid_movement, CConfig *config, su2double** Gradient) { - unsigned int iDV, iDV_Value, iDV_index, nDV, nDV_Value; + unsigned int iDV, iDV_Value, iDV_index; if (rank == MASTER_NODE) cout << endl << "Calculating the original DV gradient." << endl; @@ -800,8 +800,7 @@ void CGradientSmoothingSolver::CalculateOriginalGradient(CGeometry *geometry, CV iDV_index = 0; for (iDV = 0; iDV < config->GetnDV(); iDV++){ - nDV_Value = config->GetnDV_Value(iDV); - for (iDV_Value = 0; iDV_Value < nDV_Value; iDV_Value++){ + for (iDV_Value = 0; iDV_Value < config->GetnDV_Value(iDV); iDV_Value++){ Gradient[iDV][iDV_Value] = deltaP[iDV_index]; iDV_index++; } From 81465a09e930a3a67b7fbcaed75e436e03f36dfd Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Wed, 8 Dec 2021 09:46:23 +0100 Subject: [PATCH 12/26] - Adapted calls to the volume deformation class after moving the gradient smoothing to SU2_DOT. - Changed regressions tests for the Sobolev smoothing solver. --- Common/src/grid_movement/CSurfaceMovement.cpp | 2 +- Common/src/grid_movement/CVolumetricMovement.cpp | 10 +++++----- .../grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg | 4 ++-- TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg | 6 +++--- TestCases/parallel_regression_AD.py | 2 +- TestCases/serial_regression_AD.py | 5 +---- 6 files changed, 13 insertions(+), 16 deletions(-) diff --git a/Common/src/grid_movement/CSurfaceMovement.cpp b/Common/src/grid_movement/CSurfaceMovement.cpp index 51f8015d4914..e7e84ee22109 100644 --- a/Common/src/grid_movement/CSurfaceMovement.cpp +++ b/Common/src/grid_movement/CSurfaceMovement.cpp @@ -1118,7 +1118,7 @@ void CSurfaceMovement::CheckFFDIntersections(CGeometry *geometry, CConfig *confi if (((config->GetMarker_All_Moving(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_CFD)) || ((config->GetMarker_All_DV(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_DEF)) || ((config->GetMarker_All_DV(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_GEO)) || - ((config->GetMarker_All_DV(iMarker) == YES) && ((Kind_SU2 == SU2_COMPONENT::SU2_DOT) || config->GetSmoothGradient())) || + ((config->GetMarker_All_DV(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_DOT)) || ((config->GetMarker_All_DV(iMarker) == YES) && (config->GetDirectDiff() == D_DESIGN))) { for (iElem = 0; iElem < geometry->GetnElem_Bound(iMarker); iElem++) { diff --git a/Common/src/grid_movement/CVolumetricMovement.cpp b/Common/src/grid_movement/CVolumetricMovement.cpp index 9493e77c646d..a7b3beebdc56 100644 --- a/Common/src/grid_movement/CVolumetricMovement.cpp +++ b/Common/src/grid_movement/CVolumetricMovement.cpp @@ -183,11 +183,11 @@ void CVolumetricMovement::SetVolume_Deformation(CGeometry *geometry, CConfig *co /*--- If we want no derivatives or the direct derivatives, we solve the system using the * normal matrix vector product and preconditioner. For the mesh sensitivities using * the discrete adjoint method we solve the system using the transposed matrix. ---*/ - if (!Derivative || ((config->GetKind_SU2() == SU2_COMPONENT::SU2_CFD) && Derivative && !config->GetSmoothGradient()) || ForwardProjectionDerivative) { + if (!Derivative || ((config->GetKind_SU2() == SU2_COMPONENT::SU2_CFD) && Derivative) || ForwardProjectionDerivative) { Tot_Iter = System.Solve(StiffMatrix, LinSysRes, LinSysSol, geometry, config); - } else if (Derivative && ((config->GetKind_SU2() == SU2_COMPONENT::SU2_DOT) || config->GetSmoothGradient())) { + } else if (Derivative && (config->GetKind_SU2() == SU2_COMPONENT::SU2_DOT)) { Tot_Iter = System.Solve_b(StiffMatrix, LinSysRes, LinSysSol, geometry, config); } @@ -1603,7 +1603,7 @@ void CVolumetricMovement::SetBoundaryDisplacements(CGeometry *geometry, CConfig if (((config->GetMarker_All_Moving(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_CFD)) || ((config->GetMarker_All_DV(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_DEF)) || ((config->GetDirectDiff() == D_DESIGN) && (Kind_SU2 == SU2_COMPONENT::SU2_CFD) && (config->GetMarker_All_DV(iMarker) == YES)) || - ((config->GetMarker_All_DV(iMarker) == YES) && ((Kind_SU2 == SU2_COMPONENT::SU2_DOT) || config->GetSmoothGradient()))) { + ((config->GetMarker_All_DV(iMarker) == YES) && (Kind_SU2 == SU2_COMPONENT::SU2_DOT))) { for (iVertex = 0; iVertex < geometry->nVertex[iMarker]; iVertex++) { iPoint = geometry->vertex[iMarker][iVertex]->GetNode(); VarCoord = geometry->vertex[iMarker][iVertex]->GetVarCoord(); @@ -1714,7 +1714,7 @@ void CVolumetricMovement::SetBoundaryDerivatives(CGeometry *geometry, CConfig *c } } if (LinSysRes.norm() == 0.0) cout << "Warning: Derivatives are zero!" << endl; - } else if ((Kind_SU2 == SU2_COMPONENT::SU2_DOT) || (config->GetSmoothGradient() && !ForwardProjectionDerivative) ) { + } else if ((Kind_SU2 == SU2_COMPONENT::SU2_DOT) && !ForwardProjectionDerivative ) { for (iPoint = 0; iPoint < nPoint; iPoint++) { for (iDim = 0; iDim < nDim; iDim++) { @@ -1759,7 +1759,7 @@ void CVolumetricMovement::UpdateGridCoord_Derivatives(CGeometry *geometry, CConf } geometry->nodes->SetCoord(iPoint, new_coord); } - } else if ((Kind_SU2 == SU2_COMPONENT::SU2_DOT) || (config->GetSmoothGradient() && !ForwardProjectionDerivative)) { + } else if ((Kind_SU2 == SU2_COMPONENT::SU2_DOT) && !ForwardProjectionDerivative) { // need to reset here, since we read out the whole vector, but are only interested in boundary derivatives. if (config->GetSmoothGradient() && !ForwardProjectionDerivative) { for (iPoint = 0; iPoint < geometry->GetnPoint(); iPoint++) { diff --git a/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg b/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg index 0b4e67b8d545..ac355a9b4b2b 100644 --- a/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg +++ b/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg @@ -29,7 +29,7 @@ AXISYMMETRIC= NO % ------------------------------- SOLVER CONTROL ------------------------------% % % Number of iterations for single-zone problems -ITER= 10 +ITER= 10000 % % Convergence field CONV_FIELD= RMS_DENSITY, RMS_ADJ_DENSITY @@ -97,7 +97,7 @@ MARKER_MONITORING = ( airfoil ) NUM_METHOD_GRAD= GREEN_GAUSS % % CFL number (initial value for the adaptive CFL number) -CFL_NUMBER= 5.0 +CFL_NUMBER= 25.0 % % Adaptive CFL number (NO, YES) CFL_ADAPT= NO diff --git a/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg b/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg index 4afb50a79cf1..99c7f83807f0 100644 --- a/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg +++ b/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg @@ -30,7 +30,7 @@ RESTART_SOL= NO % ------------------------------- SOLVER CONTROL ------------------------------% % % Number of iterations for single-zone problems -ITER= 2 +ITER= 3500 % % Convergence field CONV_FIELD= RMS_DENSITY, RMS_ADJ_DENSITY @@ -166,7 +166,7 @@ NUM_METHOD_GRAD= GREEN_GAUSS CFL_NUMBER= 100.0 % % Adaptive CFL number (NO, YES) -CFL_ADAPT= NO +CFL_ADAPT= YES % % Parameters of the adaptive CFL number (factor-down, factor-up, CFL min value, % CFL max value, acceptable linear solver convergence) @@ -174,7 +174,7 @@ CFL_ADAPT= NO % and acceptable linear convergence is achieved. It is reduced if rate is limited, or if there % is not enough linear convergence, or if the nonlinear residuals are stagnant and oscillatory. % It is reset back to min when linear solvers diverge, or if nonlinear residuals increase too much. -CFL_ADAPT_PARAM= ( 1.5, 0.5, 25.0, 100000.0 ) +CFL_ADAPT_PARAM= ( 0.5, 1.5, 25.0, 100000.0 ) % % Maximum Delta Time in local time stepping simulations MAX_DELTA_TIME= 1E6 diff --git a/TestCases/parallel_regression_AD.py b/TestCases/parallel_regression_AD.py index f7ffbf7fcd58..906e03260036 100644 --- a/TestCases/parallel_regression_AD.py +++ b/TestCases/parallel_regression_AD.py @@ -457,7 +457,7 @@ def main(): grad_smooth_oneram6.cfg_dir = "grad_smooth/oneram6" grad_smooth_oneram6.cfg_file = "ONERAM6_gradsmooth.cfg" grad_smooth_oneram6.test_iter = 2 - grad_smooth_oneram6.su2_exec = "mpirun -n 2 SU2_CFD_AD" + grad_smooth_oneram6.su2_exec = "mpirun -n 2 SU2_DOT_AD" grad_smooth_oneram6.timeout = 1600 grad_smooth_oneram6.reference_file = "of_hess.dat.ref" grad_smooth_oneram6.test_file = "of_hess.dat" diff --git a/TestCases/serial_regression_AD.py b/TestCases/serial_regression_AD.py index a81013a9d547..3524d4bd96e0 100644 --- a/TestCases/serial_regression_AD.py +++ b/TestCases/serial_regression_AD.py @@ -398,14 +398,11 @@ def main(): grad_smooth_naca0012.cfg_dir = "grad_smooth/naca0012" grad_smooth_naca0012.cfg_file = "inv_NACA0012_gradsmooth.cfg" grad_smooth_naca0012.test_iter = 1 - grad_smooth_naca0012.test_vals = [-4.055339, -8.750185, 0.00000, 0.00000] - grad_smooth_naca0012.su2_exec = "SU2_CFD_AD" + grad_smooth_naca0012.su2_exec = "SU2_DOT_AD" grad_smooth_naca0012.timeout = 1600 grad_smooth_naca0012.tol = 0.00001 grad_smooth_naca0012.reference_file = "of_hess.dat.ref" grad_smooth_naca0012.test_file = "of_hess.dat" - pass_list.append(grad_smooth_naca0012.run_test()) - test_list.append(grad_smooth_naca0012) pass_list.append(grad_smooth_naca0012.run_filediff()) test_list.append(grad_smooth_naca0012) From e4dfa580bb9844b55ebc0bf19e799c31231304b2 Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Wed, 8 Dec 2021 12:30:44 +0100 Subject: [PATCH 13/26] Moved solver, numerics and variables file to according SU2_CFD subdirectories. --- Common/src/grid_movement/CVolumetricMovement.cpp | 2 +- {SU2_DOT => SU2_CFD}/include/numerics/CGradSmoothing.hpp | 0 .../include/solvers/CGradientSmoothingSolver.hpp | 0 .../include/variables/CSobolevSmoothingVariable.hpp | 0 {SU2_DOT => SU2_CFD}/src/numerics/CGradSmoothing.cpp | 0 .../src/solvers/CGradientSmoothingSolver.cpp | 0 .../src/variables/CSobolevSmoothingVariable.cpp | 0 SU2_DOT/include/SU2_DOT.hpp | 4 ++-- SU2_DOT/src/SU2_DOT.cpp | 1 + SU2_DOT/src/meson.build | 6 +++--- 10 files changed, 7 insertions(+), 6 deletions(-) rename {SU2_DOT => SU2_CFD}/include/numerics/CGradSmoothing.hpp (100%) rename {SU2_DOT => SU2_CFD}/include/solvers/CGradientSmoothingSolver.hpp (100%) rename {SU2_DOT => SU2_CFD}/include/variables/CSobolevSmoothingVariable.hpp (100%) rename {SU2_DOT => SU2_CFD}/src/numerics/CGradSmoothing.cpp (100%) rename {SU2_DOT => SU2_CFD}/src/solvers/CGradientSmoothingSolver.cpp (100%) rename {SU2_DOT => SU2_CFD}/src/variables/CSobolevSmoothingVariable.cpp (100%) diff --git a/Common/src/grid_movement/CVolumetricMovement.cpp b/Common/src/grid_movement/CVolumetricMovement.cpp index a7b3beebdc56..67d4aa84aba4 100644 --- a/Common/src/grid_movement/CVolumetricMovement.cpp +++ b/Common/src/grid_movement/CVolumetricMovement.cpp @@ -183,7 +183,7 @@ void CVolumetricMovement::SetVolume_Deformation(CGeometry *geometry, CConfig *co /*--- If we want no derivatives or the direct derivatives, we solve the system using the * normal matrix vector product and preconditioner. For the mesh sensitivities using * the discrete adjoint method we solve the system using the transposed matrix. ---*/ - if (!Derivative || ((config->GetKind_SU2() == SU2_COMPONENT::SU2_CFD) && Derivative) || ForwardProjectionDerivative) { + if (!Derivative || ((config->GetKind_SU2() == SU2_COMPONENT::SU2_CFD) && Derivative) || (config->GetSmoothGradient() && ForwardProjectionDerivative)) { Tot_Iter = System.Solve(StiffMatrix, LinSysRes, LinSysSol, geometry, config); diff --git a/SU2_DOT/include/numerics/CGradSmoothing.hpp b/SU2_CFD/include/numerics/CGradSmoothing.hpp similarity index 100% rename from SU2_DOT/include/numerics/CGradSmoothing.hpp rename to SU2_CFD/include/numerics/CGradSmoothing.hpp diff --git a/SU2_DOT/include/solvers/CGradientSmoothingSolver.hpp b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp similarity index 100% rename from SU2_DOT/include/solvers/CGradientSmoothingSolver.hpp rename to SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp diff --git a/SU2_DOT/include/variables/CSobolevSmoothingVariable.hpp b/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp similarity index 100% rename from SU2_DOT/include/variables/CSobolevSmoothingVariable.hpp rename to SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp diff --git a/SU2_DOT/src/numerics/CGradSmoothing.cpp b/SU2_CFD/src/numerics/CGradSmoothing.cpp similarity index 100% rename from SU2_DOT/src/numerics/CGradSmoothing.cpp rename to SU2_CFD/src/numerics/CGradSmoothing.cpp diff --git a/SU2_DOT/src/solvers/CGradientSmoothingSolver.cpp b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp similarity index 100% rename from SU2_DOT/src/solvers/CGradientSmoothingSolver.cpp rename to SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp diff --git a/SU2_DOT/src/variables/CSobolevSmoothingVariable.cpp b/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp similarity index 100% rename from SU2_DOT/src/variables/CSobolevSmoothingVariable.cpp rename to SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp diff --git a/SU2_DOT/include/SU2_DOT.hpp b/SU2_DOT/include/SU2_DOT.hpp index 8f92ae9709ba..f696904fe7d0 100644 --- a/SU2_DOT/include/SU2_DOT.hpp +++ b/SU2_DOT/include/SU2_DOT.hpp @@ -46,8 +46,8 @@ #include "../../SU2_CFD/include/output/CBaselineOutput.hpp" #include "../../SU2_CFD/include/solvers/CBaselineSolver.hpp" -#include "solvers/CGradientSmoothingSolver.hpp" -#include "numerics/CGradSmoothing.hpp" +#include "../../SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp" +#include "../../SU2_CFD/include/numerics/CGradSmoothing.hpp" using namespace std; diff --git a/SU2_DOT/src/SU2_DOT.cpp b/SU2_DOT/src/SU2_DOT.cpp index db20372fef05..5154e3378acc 100644 --- a/SU2_DOT/src/SU2_DOT.cpp +++ b/SU2_DOT/src/SU2_DOT.cpp @@ -285,6 +285,7 @@ int main(int argc, char *argv[]) { } } + if (config_container[ZONE_0]->GetDiscrete_Adjoint()) { DerivativeTreatment_MeshSensitivity(geometry_container[ZONE_0][INST_0], config_container[ZONE_0]); diff --git a/SU2_DOT/src/meson.build b/SU2_DOT/src/meson.build index 0042f0579e64..4ae1befe200c 100644 --- a/SU2_DOT/src/meson.build +++ b/SU2_DOT/src/meson.build @@ -1,8 +1,8 @@ su2_dot_src = ['SU2_DOT.cpp'] -su2_dot_src += files(['variables/CSobolevSmoothingVariable.cpp']) -su2_dot_src += files(['solvers/CGradientSmoothingSolver.cpp']) -su2_dot_src += files(['numerics/CGradSmoothing.cpp']) +su2_dot_src += files(['../../SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp', + '../../SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp', + '../../SU2_CFD/src/numerics/CGradSmoothing.cpp']) if get_option('enable-normal') su2_cfd_obj = su2_cfd_lib.extract_objects(['solvers/CSolver.cpp', From eeb6081c70b17851f328245c5f3654e302aa8a1f Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Thu, 9 Dec 2021 20:41:28 +0100 Subject: [PATCH 14/26] Reintroduced the Kind_SensSmooth Config option and the ENUM_SENS_SMOOTHING map. Cleaned up the switch statemnet for choosing a linear solver in CSysSolve. Extended documentation in the smoothing solver TestCases. --- Common/include/option_structure.hpp | 14 + Common/src/CConfig.cpp | 4 +- Common/src/linear_algebra/CSysSolve.cpp | 109 ++-- .../cont_adj_rans/oneram6/turb_ONERAM6.cfg | 3 + .../naca0012/inv_NACA0012_gradsmooth.cfg | 371 +++---------- .../oneram6/ONERAM6_gradsmooth.cfg | 492 +++--------------- .../naca0012/inv_NACA0012_ffd.cfg | 3 + .../rotating_naca0012/rotating_NACA0012.cfg | 3 + .../steady_naca0012/inv_NACA0012_adv.cfg | 3 + .../pitching_oneram6/turb_ONERAM6.cfg | 3 + TestCases/rotating/naca0012/rot_NACA0012.cfg | 3 + config_template.cfg | 19 +- 12 files changed, 228 insertions(+), 799 deletions(-) diff --git a/Common/include/option_structure.hpp b/Common/include/option_structure.hpp index 7c698e54680b..12fba8f4aa8a 100644 --- a/Common/include/option_structure.hpp +++ b/Common/include/option_structure.hpp @@ -1969,6 +1969,20 @@ static const MapType CoordSystem_Map = { MakePair("POLAR", POLAR) }; +/*! + * \brief Types of sensitivity smoothing + */ +enum ENUM_SENS_SMOOTHING { + NO_SMOOTH = 0, /*!< \brief No smoothing. */ + SOBOLEV = 1, /*!< \brief Sobolev gradient smoothing. */ + BIGRID = 2 /*!< \brief Bi-grid technique smoothing. */ +}; +static const MapType Sens_Smoothing_Map = { + MakePair("NONE", NO_SMOOTH) + MakePair("SOBOLEV", SOBOLEV) + MakePair("BIGRID", BIGRID) +}; + /*! * \brief Types of preconditioners for the linear solver */ diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index 5e46746cf1d2..61f44cdfa204 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -1976,6 +1976,8 @@ void CConfig::SetConfig_Options() { /* DESCRIPTION: Drag weight in sonic boom Objective Function (from 0.0 to 1.0) */ addDoubleOption("DRAG_IN_SONICBOOM", WeightCd, 0.0); + /* DESCRIPTION: Sensitivity smoothing */ + addEnumOption("SENS_SMOOTHING", Kind_SensSmooth, Sens_Smoothing_Map, NO_SMOOTH); /* DESCRIPTION: Continuous Adjoint frozen viscosity */ addBoolOption("FROZEN_VISC_CONT", Frozen_Visc_Cont, true); /* DESCRIPTION: Discrete Adjoint frozen viscosity */ @@ -3010,8 +3012,6 @@ void CConfig::SetConfig_Parsing(istream& config_buffer){ newString.append("SOLID_DENSITY is deprecated. Use MATERIAL_DENSITY instead.\n\n"); if (!option_name.compare("SOLID_TEMPERATURE_INIT")) newString.append("SOLID_TEMPERATURE_INIT is deprecated. Use FREESTREAM_TEMPERATURE instead.\n\n"); - if (!option_name.compare("SENS_SMOOTHING")) - newString.append("SENS_SMOOTHING is deprecated. Use SMOOTH_GRADIENT = (YES, NO) instead.\n\n"); else { /*--- Find the most likely candidate for the unrecognized option, based on the length of start and end character sequences shared by candidates and the option. ---*/ diff --git a/Common/src/linear_algebra/CSysSolve.cpp b/Common/src/linear_algebra/CSysSolve.cpp index 2e1f77450523..070ec187527c 100644 --- a/Common/src/linear_algebra/CSysSolve.cpp +++ b/Common/src/linear_algebra/CSysSolve.cpp @@ -829,38 +829,37 @@ unsigned long CSysSolve::Solve(CSysMatrix & Jacobian, co ScalarType SolverTol; bool ScreenOutput; - /*--- Mesh Deformation mode ---*/ - - if(lin_sol_mode==LINEAR_SOLVER_MODE::MESH_DEFORM) { - - KindSolver = config->GetKind_Deform_Linear_Solver(); - KindPrecond = config->GetKind_Deform_Linear_Solver_Prec(); - MaxIter = config->GetDeform_Linear_Solver_Iter(); - SolverTol = SU2_TYPE::GetValue(config->GetDeform_Linear_Solver_Error()); - ScreenOutput = config->GetDeform_Output(); - } - - /*--- gradient smoothing mode ---*/ - - else if (lin_sol_mode==LINEAR_SOLVER_MODE::GRADIENT_MODE) { - - KindSolver = config->GetKind_Grad_Linear_Solver(); - KindPrecond = config->GetKind_Grad_Linear_Solver_Prec(); - MaxIter = config->GetGrad_Linear_Solver_Iter(); - SolverTol = SU2_TYPE::GetValue(config->GetGrad_Linear_Solver_Error()); - ScreenOutput = true; - } - - /*--- Normal mode - * assumes that 'lin_sol_mode==LINEAR_SOLVER_MODE::STANDARD', but does not enforce it to avoid compiler warning. ---*/ + switch (lin_sol_mode) { + /*--- Mesh Deformation mode ---*/ + case LINEAR_SOLVER_MODE::MESH_DEFORM: { + KindSolver = config->GetKind_Deform_Linear_Solver(); + KindPrecond = config->GetKind_Deform_Linear_Solver_Prec(); + MaxIter = config->GetDeform_Linear_Solver_Iter(); + SolverTol = SU2_TYPE::GetValue(config->GetDeform_Linear_Solver_Error()); + ScreenOutput = config->GetDeform_Output(); + break; + } - else { + /*--- Gradient Smoothing mode ---*/ + case LINEAR_SOLVER_MODE::GRADIENT_MODE: { + KindSolver = config->GetKind_Grad_Linear_Solver(); + KindPrecond = config->GetKind_Grad_Linear_Solver_Prec(); + MaxIter = config->GetGrad_Linear_Solver_Iter(); + SolverTol = SU2_TYPE::GetValue(config->GetGrad_Linear_Solver_Error()); + ScreenOutput = true; + break; + } - KindSolver = config->GetKind_Linear_Solver(); - KindPrecond = config->GetKind_Linear_Solver_Prec(); - MaxIter = config->GetLinear_Solver_Iter(); - SolverTol = SU2_TYPE::GetValue(config->GetLinear_Solver_Error()); - ScreenOutput = false; + /*--- Normal mode + * assumes that 'lin_sol_mode==LINEAR_SOLVER_MODE::STANDARD', but does not enforce it to avoid compiler warning. ---*/ + default: { + KindSolver = config->GetKind_Linear_Solver(); + KindPrecond = config->GetKind_Linear_Solver_Prec(); + MaxIter = config->GetLinear_Solver_Iter(); + SolverTol = SU2_TYPE::GetValue(config->GetLinear_Solver_Error()); + ScreenOutput = false; + break; + } } /*--- Stop the recording for the linear solver ---*/ @@ -941,11 +940,11 @@ unsigned long CSysSolve::Solve(CSysMatrix & Jacobian, co if(TapeActive) { /*--- To keep the behavior of SU2_DOT, but not strictly required since jacobian is symmetric(?). ---*/ - const bool RequiresTranspose = lin_sol_mode!=LINEAR_SOLVER_MODE::MESH_DEFORM || (config->GetKind_SU2() == SU2_COMPONENT::SU2_DOT); + const bool RequiresTranspose = ((lin_sol_mode!=LINEAR_SOLVER_MODE::MESH_DEFORM) || (config->GetKind_SU2() == SU2_COMPONENT::SU2_DOT)); - if (lin_sol_mode!=LINEAR_SOLVER_MODE::MESH_DEFORM) KindPrecond = config->GetKind_DiscAdj_Linear_Prec(); + if (lin_sol_mode==LINEAR_SOLVER_MODE::MESH_DEFORM) KindPrecond = config->GetKind_Deform_Linear_Solver_Prec(); else if (lin_sol_mode==LINEAR_SOLVER_MODE::GRADIENT_MODE) KindPrecond = config->GetKind_Grad_Linear_Solver_Prec(); - else KindPrecond = config->GetKind_Deform_Linear_Solver_Prec(); + else KindPrecond = config->GetKind_DiscAdj_Linear_Prec(); /*--- Build preconditioner for the transposed Jacobian ---*/ @@ -1009,23 +1008,37 @@ unsigned long CSysSolve::Solve_b(CSysMatrix & Jacobian, ScalarType SolverTol; bool ScreenOutput; - /*--- Normal mode ---*/ - - KindSolver = config->GetKind_DiscAdj_Linear_Solver(); - KindPrecond = config->GetKind_DiscAdj_Linear_Prec(); - MaxIter = config->GetLinear_Solver_Iter(); - SolverTol = SU2_TYPE::GetValue(config->GetLinear_Solver_Error()); - ScreenOutput = false; - - /*--- Mesh Deformation mode ---*/ + switch (lin_sol_mode) { + /*--- Mesh Deformation mode ---*/ + case LINEAR_SOLVER_MODE::MESH_DEFORM: { + KindSolver = config->GetKind_Deform_Linear_Solver(); + KindPrecond = config->GetKind_Deform_Linear_Solver_Prec(); + MaxIter = config->GetDeform_Linear_Solver_Iter(); + SolverTol = SU2_TYPE::GetValue(config->GetDeform_Linear_Solver_Error()); + ScreenOutput = config->GetDeform_Output(); + break; + } - if (lin_sol_mode==LINEAR_SOLVER_MODE::MESH_DEFORM) { + /*--- Gradient Smoothing mode ---*/ + case LINEAR_SOLVER_MODE::GRADIENT_MODE: { + KindSolver = config->GetKind_Grad_Linear_Solver(); + KindPrecond = config->GetKind_Grad_Linear_Solver_Prec(); + MaxIter = config->GetGrad_Linear_Solver_Iter(); + SolverTol = SU2_TYPE::GetValue(config->GetGrad_Linear_Solver_Error()); + ScreenOutput = true; + break; + } - KindSolver = config->GetKind_Deform_Linear_Solver(); - KindPrecond = config->GetKind_Deform_Linear_Solver_Prec(); - MaxIter = config->GetDeform_Linear_Solver_Iter(); - SolverTol = SU2_TYPE::GetValue(config->GetDeform_Linear_Solver_Error()); - ScreenOutput = config->GetDeform_Output(); + /*--- Normal mode + * assumes that 'lin_sol_mode==LINEAR_SOLVER_MODE::STANDARD', but does not enforce it to avoid compiler warning. ---*/ + default: { + KindSolver = config->GetKind_Linear_Solver(); + KindPrecond = config->GetKind_Linear_Solver_Prec(); + MaxIter = config->GetLinear_Solver_Iter(); + SolverTol = SU2_TYPE::GetValue(config->GetLinear_Solver_Error()); + ScreenOutput = false; + break; + } } /*--- Set up preconditioner and matrix-vector product ---*/ diff --git a/TestCases/cont_adj_rans/oneram6/turb_ONERAM6.cfg b/TestCases/cont_adj_rans/oneram6/turb_ONERAM6.cfg index 043917392a44..7cfa51f055af 100644 --- a/TestCases/cont_adj_rans/oneram6/turb_ONERAM6.cfg +++ b/TestCases/cont_adj_rans/oneram6/turb_ONERAM6.cfg @@ -197,6 +197,9 @@ CFL_REDUCTION_ADJFLOW= 0.8 % Remove sharp edges from the sensitivity evaluation (NO, YES) SENS_REMOVE_SHARP= NO % +% Sensitivity smoothing (NONE, SOBOLEV, BIGRID) +SENS_SMOOTHING= NONE +% % Adjoint frozen viscosity (NO, YES) FROZEN_VISC= YES diff --git a/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg b/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg index ac355a9b4b2b..1fba52cb8142 100644 --- a/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg +++ b/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg @@ -10,398 +10,161 @@ % ------------- DIRECT, ADJOINT, AND LINEARIZED PROBLEM DEFINITION ------------% -% -% Solver type (EULER, NAVIER_STOKES, RANS, -% INC_EULER, INC_NAVIER_STOKES, INC_RANS, -% NEMO_EULER, NEMO_NAVIER_STOKES, -% FEM_EULER, FEM_NAVIER_STOKES, FEM_RANS, FEM_LES, -% HEAT_EQUATION_FVM, ELASTICITY) + SOLVER= EULER -% -% Mathematical problem (DIRECT, CONTINUOUS_ADJOINT, DISCRETE_ADJOINT) -% Defaults to DISCRETE_ADJOINT for the SU2_*_AD codes, and to DIRECT otherwise. MATH_PROBLEM= DISCRETE_ADJOINT -% -% Axisymmetric simulation, only compressible flows (NO, YES) -AXISYMMETRIC= NO - % ------------------------------- SOLVER CONTROL ------------------------------% -% -% Number of iterations for single-zone problems + ITER= 10000 -% -% Convergence field CONV_FIELD= RMS_DENSITY, RMS_ADJ_DENSITY -% -% Min value of the residual (log10 of the residual) CONV_RESIDUAL_MINVAL= -12 -% -% Start convergence criteria at iteration number CONV_STARTITER= 10 -% -% Number of elements to apply the criteria CONV_CAUCHY_ELEMS= 100 -% -% Epsilon to control the series convergence CONV_CAUCHY_EPS= 1E-6 % -------------------- COMPRESSIBLE FREE-STREAM DEFINITION --------------------% -% -% Mach number (non-dimensional, based on the free-stream values) + MACH_NUMBER= 0.8 -% -% Angle of attack (degrees, only for compressible flows) AOA= 1.25 -% -% Free-stream pressure (101325.0 N/m^2, 2116.216 psf by default) -FREESTREAM_PRESSURE= 101325.0 -% -% Free-stream temperature (288.15 K, 518.67 R by default) -FREESTREAM_TEMPERATURE= 288.15 % ---------------------- REFERENCE VALUE DEFINITION ---------------------------% -% -% Reference origin for moment computation (m or in) + REF_ORIGIN_MOMENT_X = 0.25 REF_ORIGIN_MOMENT_Y = 0.00 REF_ORIGIN_MOMENT_Z = 0.00 -% -% Reference length for moment non-dimensional coefficients (m or in) -REF_LENGTH= 1.0 -% -% Reference area for non-dimensional force coefficients (0 implies automatic -% calculation) (m^2 or in^2) -REF_AREA= 1.0 % -------------------- BOUNDARY CONDITION DEFINITION --------------------------% -% -% Euler wall boundary marker(s) (NONE = no marker) -% Implementation identical to MARKER_SYM. + MARKER_EULER= ( airfoil ) -% -% Far-field boundary marker(s) (NONE = no marker) MARKER_FAR= ( farfield ) % ------------------------ SURFACES IDENTIFICATION ----------------------------% -% -% Marker(s) of the surface in the surface flow solution file + MARKER_PLOTTING = ( airfoil ) -% -% Marker(s) of the surface where the non-dimensional coefficients are evaluated. MARKER_MONITORING = ( airfoil ) % ------------- COMMON PARAMETERS DEFINING THE NUMERICAL METHOD ---------------% -% -% Numerical method for spatial gradients (GREEN_GAUSS, WEIGHTED_LEAST_SQUARES) + NUM_METHOD_GRAD= GREEN_GAUSS -% -% CFL number (initial value for the adaptive CFL number) CFL_NUMBER= 25.0 -% -% Adaptive CFL number (NO, YES) CFL_ADAPT= NO -% -% Runge-Kutta alpha coefficients RK_ALPHA_COEFF= ( 0.66667, 0.66667, 1.000000 ) -% -% Objective function in gradient evaluation (DRAG, LIFT, SIDEFORCE, MOMENT_X, -% MOMENT_Y, MOMENT_Z, EFFICIENCY, BUFFET, -% EQUIVALENT_AREA, NEARFIELD_PRESSURE, -% FORCE_X, FORCE_Y, FORCE_Z, THRUST, -% TORQUE, TOTAL_HEATFLUX, -% MAXIMUM_HEATFLUX, INVERSE_DESIGN_PRESSURE, -% INVERSE_DESIGN_HEATFLUX, SURFACE_TOTAL_PRESSURE, -% SURFACE_MASSFLOW, SURFACE_STATIC_PRESSURE, SURFACE_MACH) -% For a weighted sum of objectives: separate by commas, add OBJECTIVE_WEIGHT and MARKER_MONITORING in matching order. OBJECTIVE_FUNCTION= DRAG -% -% List of weighting values when using more than one OBJECTIVE_FUNCTION. Separate by commas and match with MARKER_MONITORING. OBJECTIVE_WEIGHT = 1.0 % ----------- SLOPE LIMITER AND DISSIPATION SENSOR DEFINITION -----------------% -% -% Monotonic Upwind Scheme for Conservation Laws (TVD) in the flow equations. -% Required for 2nd order upwind schemes (NO, YES) + MUSCL_FLOW= YES -% -% Slope limiter (NONE, VENKATAKRISHNAN, VENKATAKRISHNAN_WANG, -% BARTH_JESPERSEN, VAN_ALBADA_EDGE) SLOPE_LIMITER_FLOW= VENKATAKRISHNAN -% -% Coefficient for the Venkat's limiter (upwind scheme). A larger values decrease -% the extent of limiting, values approaching zero cause -% lower-order approximation to the solution (0.05 by default) VENKAT_LIMITER_COEFF= 0.03 -% -% 2nd and 4th order artificial dissipation coefficients for -% the JST method ( 0.5, 0.02 by default ) -JST_SENSOR_COEFF= ( 0.5, 0.02 ) -% -% 1st order artificial dissipation coefficients for -% the adjoint Lax–Friedrichs method ( 0.15 by default ) -ADJ_LAX_SENSOR_COEFF= 0.15 -% -% 2nd, and 4th order artificial dissipation coefficients for -% the adjoint JST method ( 0.5, 0.02 by default ) -ADJ_JST_SENSOR_COEFF= ( 0.5, 0.02 ) - -% -------------------------- MULTIGRID PARAMETERS -----------------------------% -% -% Multi-grid levels (0 = no multi-grid) -MGLEVEL= 0 -% -% Multi-grid cycle (V_CYCLE, W_CYCLE, FULLMG_CYCLE) -MGCYCLE= W_CYCLE -% -% Multi-grid pre-smoothing level -MG_PRE_SMOOTH= ( 1, 2, 2, 2 ) -% -% Multi-grid post-smoothing level -MG_POST_SMOOTH= ( 1, 1, 1, 1 ) -% -% Jacobi implicit smoothing of the correction -MG_CORRECTION_SMOOTH= ( 1, 1, 1, 1 ) -% -% Damping factor for the residual restriction -MG_DAMP_RESTRICTION= 1.0 -% -% Damping factor for the correction prolongation -MG_DAMP_PROLONGATION= 1.0 % -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------% -% -% Convective numerical method (JST, JST_KE, JST_MAT, LAX-FRIEDRICH, CUSP, ROE, AUSM, -% AUSMPLUSUP, AUSMPLUSUP2, AUSMPWPLUS, HLLC, TURKEL_PREC, -% SW, MSW, FDS, SLAU, SLAU2, L2ROE, LMROE) + CONV_NUM_METHOD_FLOW= JST -% -% Time discretization (RUNGE-KUTTA_EXPLICIT, EULER_IMPLICIT, EULER_EXPLICIT) TIME_DISCRE_FLOW= EULER_IMPLICIT -% ----------------------- DESIGN VARIABLE PARAMETERS --------------------------% -% -% Kind of deformation (NO_DEFORMATION, SCALE_GRID, TRANSLATE_GRID, ROTATE_GRID, -% FFD_SETTING, FFD_NACELLE, -% FFD_CONTROL_POINT, FFD_CAMBER, FFD_THICKNESS, FFD_TWIST -% FFD_CONTROL_POINT_2D, FFD_CAMBER_2D, FFD_THICKNESS_2D, -% FFD_TWIST_2D, HICKS_HENNE, SURFACE_BUMP, SURFACE_FILE) -DV_KIND= HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE -% -% Marker of the surface in which we are going apply the shape deformation -DV_MARKER= ( airfoil ) -% -% Parameters of the shape deformation -% - NO_DEFORMATION ( 1.0 ) -% - TRANSLATE_GRID ( x_Disp, y_Disp, z_Disp ), as a unit vector -% - ROTATE_GRID ( x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) axis, DV_VALUE in deg. -% - SCALE_GRID ( 1.0 ) -% - ANGLE_OF_ATTACK ( 1.0 ) -% - FFD_SETTING ( 1.0 ) -% - FFD_CONTROL_POINT ( FFD_BoxTag, i_Ind, j_Ind, k_Ind, x_Disp, y_Disp, z_Disp ) -% - FFD_NACELLE ( FFD_BoxTag, rho_Ind, theta_Ind, phi_Ind, rho_Disp, phi_Disp ) -% - FFD_GULL ( FFD_BoxTag, j_Ind ) -% - FFD_ANGLE_OF_ATTACK ( FFD_BoxTag, 1.0 ) -% - FFD_CAMBER ( FFD_BoxTag, i_Ind, j_Ind ) -% - FFD_THICKNESS ( FFD_BoxTag, i_Ind, j_Ind ) -% - FFD_TWIST ( FFD_BoxTag, j_Ind, x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) -% - FFD_CONTROL_POINT_2D ( FFD_BoxTag, i_Ind, j_Ind, x_Disp, y_Disp ) -% - FFD_CAMBER_2D ( FFD_BoxTag, i_Ind ) -% - FFD_THICKNESS_2D ( FFD_BoxTag, i_Ind ) -% - FFD_TWIST_2D ( FFD_BoxTag, x_Orig, y_Orig ) -% - HICKS_HENNE ( Lower Surface (0)/Upper Surface (1)/Only one Surface (2), x_Loc ) -% - SURFACE_BUMP ( x_Start, x_End, x_Loc ) -DV_PARAM= ( 0.0, 0.05) ; ( 0.0, 0.1) ; ( 0.0, 0.15) ; ( 0.0, 0.2) ; ( 0.0, 0.25) ; ( 0.0, 0.3) ; ( 0.0, 0.35) ; ( 0.0, 0.4) ; ( 0.0, 0.45) ; ( 0.0, 0.5) ; ( 0.0, 0.55) ; ( 0.0, 0.6) ; ( 0.0, 0.65) ; ( 0.0, 0.7) ; ( 0.0, 0.75) ; ( 0.0, 0.8) ; ( 0.0, 0.85) ; ( 0.0, 0.9) ; ( 0.0, 0.95) ; ( 1.0, 0.05) ; ( 1.0, 0.1) ; ( 1.0, 0.15) ; ( 1.0, 0.2) ; ( 1.0, 0.25) ; ( 1.0, 0.3) ; ( 1.0, 0.35) ; ( 1.0, 0.4) ; ( 1.0, 0.45) ; ( 1.0, 0.5) ; ( 1.0, 0.55) ; ( 1.0, 0.6) ; ( 1.0, 0.65) ; ( 1.0, 0.7) ; ( 1.0, 0.75) ; ( 1.0, 0.8) ; ( 1.0, 0.85) ; ( 1.0, 0.9) ; ( 1.0, 0.95) -% -% Value of the shape deformation -DV_VALUE= 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 - -% ------------------------ GRID DEFORMATION PARAMETERS ------------------------% -% -% Linear solver or smoother for implicit formulations (FGMRES, RESTARTED_FGMRES, BCGSTAB) -DEFORM_LINEAR_SOLVER= FGMRES -% -% Preconditioner of the Krylov linear solver (ILU, LU_SGS, JACOBI) -DEFORM_LINEAR_SOLVER_PREC= ILU -% -% Number of smoothing iterations for mesh deformation -DEFORM_LINEAR_SOLVER_ITER= 1000 -% -% Number of nonlinear deformation iterations (surface deformation increments) -DEFORM_NONLINEAR_ITER= 1 -% -% Minimum residual criteria for the linear solver convergence of grid deformation -DEFORM_LINEAR_SOLVER_ERROR= 1E-10 -% -% Print the residuals during mesh deformation to the console (YES, NO) -DEFORM_CONSOLE_OUTPUT= YES -% -% Type of element stiffness imposed for FEA mesh deformation (INVERSE_VOLUME, -% WALL_DISTANCE, CONSTANT_STIFFNESS) -DEFORM_STIFFNESS_TYPE= WALL_DISTANCE - % ----------------------- SOBOLEV GRADIENT SMOOTHING OPTIONS ----------------------% % % Activate the gradient smoothing solver for the discrete adjoint driver (NO, YES) +% this will run the Sobolev gradient smoothing solver as an additional postprocessing step +% to the derivative projections in SU2_DOT_AD. +% The method requires the AD mode to be active. SMOOTH_GRADIENT= YES % +% Mode how the Sobolev method is applied to the sensitivities. +% - NO_MODUS (Default option if none is choosen, does nothing.) +% - PARAM_LEVEL_COMPLETE (Apply Sobolev smoothing to the projected gradient, w.r.t. the design values.) +% - MESH_LEVEL (Apply Sobolev smoothing to the mesh sensitivities, either in the volume or on the surface.) +% - DEBUG (Flag to test the finite elements asembly of the Laplace-Beltrami operator.) +% - ONLY_GRADIENT (Use the smoothing solver to calculate the unaltered gradient.) +SOBOLEV_MODE= PARAM_LEVEL_COMPLETE +% % Scaling factor for the identity part of the Laplace-Beltrami operator SMOOTHING_EPSILON1= 1.0 % % Scaling factor for the Laplace part of the Laplace-Beltrami operator SMOOTHING_EPSILON2= 0.625 % -% Switch for running the smoothing procedure seperately in each space dimension (NO, YES). -SEPARATE_DIMENSIONS= NO -% % Switch for applying the Sobolev smoothing to the design surface mesh, i.e., instead of the whole volume mesh (NO, YES). +% Only works with SOBOLEV_MODE=MESH_LEVEL. SMOOTH_ON_SURFACE= YES % -% Use Dirichlet boundary conditions when working on the design surface, only used for SMOOTH_ON_SURFACE= YES (NO, YES). +% Switch for applying the solver to each space dimension of the meshsensitivity seperately. +% Only works with SOBOLEV_MODE=MESH_LEVEL. +SEPARATE_DIMENSIONS= NO +% +% Use Dirichlet boundary conditions when working on the design surface. +% Calculates the edge nodes of the design surface and sets the meshsensitivity there =0. +% Only used for SMOOTH_ON_SURFACE= YES . DIRICHLET_SURFACE_BOUNDARY= NO % -% Mode how the Sobolev method is applied to the discrete adjoint gradient. -% - NO_MODUS (Default option if none is choosen.) -% - PARAM_LEVEL_COMPLETE (Apply Sobolev smoothing to the projected gradient, w.r.t. the DV.) -% - MESH_LEVEL (Apply Sobolev smoothing to the mesh sensitivities.) -% - DEBUG (Test the finite elements asembly of the Laplace-Beltrami operator.) -% - ONLY_GRADIENT (Only calculate the classical gradient.) -SOBOLEV_MODE= PARAM_LEVEL_COMPLETE +% For smoothing meshsensitivities in the volume mesh, the Laplace-Beltrami operator is applied with 0 Neumann boundary by default. +% Dirichlet boundary conditions can be used by adding boundary markes to MARKER_SOBOLEVBC. The meshsensitivities will be set to 0, +% i.e. zero Dirichlet boundaries for this marker. +MARKER_SOBOLEVBC= ( airfoil ) % -% Output filename for the assembled Sobolev smoothing system matrix +% Output filename for the assembled Sobolev smoothing system matrix. +% Writes the projected Laplace-Beltrami operator into a file for external optimization. +% Requires SOBOLEV_MODE=PARAM_LEVEL_COMPLETE. HESS_OBJFUNC_FILENAME= of_hess.dat - -% ------------------------- SCREEN/HISTORY VOLUME OUTPUT --------------------------% % -% Screen output fields (use 'SU2_CFD -d ' to view list of available fields) -SCREEN_OUTPUT= (INNER_ITER, RMS_ADJ_DENSITY, RMS_ADJ_ENERGY, SENS_PRESS, SENS_AOA) +% Linear solver for the finite elements system on the mesh level, +% supports the same solver options as LINEAR_SOLVER, e.g. (FGMRES, RESTARTED_FGMRES, BCGSTAB), +GRAD_LINEAR_SOLVER= FGMRES % -% History output groups (use 'SU2_CFD -d ' to view list of available fields) -HISTORY_OUTPUT= (ITER, RMS_RES) +% Preconditioner of the Krylov linear solver (ILU, LU_SGS, JACOBI) +GRAD_LINEAR_SOLVER_PREC= ILU % -% Volume output fields/groups (use 'SU2_CFD -d ' to view list of available fields) -VOLUME_OUTPUT= (COORDINATES, SOLUTION, PRIMITIVE) +% Number of linear solver iterations for the Sobolev smoothing solver +GRAD_LINEAR_SOLVER_ITER= 1000 % -% Writing frequency for screen output -SCREEN_WRT_FREQ_INNER= 1 +% Minimum residual criteria for the linear solver convergence of the Sobolev smoothing solver +GRAD_LINEAR_SOLVER_ERROR= 1E-14 + +% ----------------------- DESIGN VARIABLE PARAMETERS --------------------------% % -% Writing frequency for history output -HISTORY_WRT_FREQ_INNER= 1 +% When running the Sobolev smoothing solver on the design variable parameters, +% the system is computed with respect to the design values specified in the SU2 config file. +% The projected system matrix will the have the dimensions 'number DV_PARAM * number DV_PARAM'. +DV_KIND= HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE +DV_MARKER= ( airfoil ) +DV_PARAM= ( 0.0, 0.05) ; ( 0.0, 0.1) ; ( 0.0, 0.15) ; ( 0.0, 0.2) ; ( 0.0, 0.25) ; ( 0.0, 0.3) ; ( 0.0, 0.35) ; ( 0.0, 0.4) ; ( 0.0, 0.45) ; ( 0.0, 0.5) ; ( 0.0, 0.55) ; ( 0.0, 0.6) ; ( 0.0, 0.65) ; ( 0.0, 0.7) ; ( 0.0, 0.75) ; ( 0.0, 0.8) ; ( 0.0, 0.85) ; ( 0.0, 0.9) ; ( 0.0, 0.95) ; ( 1.0, 0.05) ; ( 1.0, 0.1) ; ( 1.0, 0.15) ; ( 1.0, 0.2) ; ( 1.0, 0.25) ; ( 1.0, 0.3) ; ( 1.0, 0.35) ; ( 1.0, 0.4) ; ( 1.0, 0.45) ; ( 1.0, 0.5) ; ( 1.0, 0.55) ; ( 1.0, 0.6) ; ( 1.0, 0.65) ; ( 1.0, 0.7) ; ( 1.0, 0.75) ; ( 1.0, 0.8) ; ( 1.0, 0.85) ; ( 1.0, 0.9) ; ( 1.0, 0.95) +DV_VALUE= 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 + +% ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % -% Writing frequency for volume/surface output -OUTPUT_WRT_FREQ= 250 +% The Sobolev smoothing solver computes projections between the mesh sensitivity and the design values +% in the same way as the regular projection done by SU2_DOT. +% Therefore, he settings here are used to compute the adjoint mesh movement. +% Make sure they are consistent for computing gradient and applying the Sobolev smoothing solver. +DEFORM_LINEAR_SOLVER= FGMRES +DEFORM_LINEAR_SOLVER_PREC= ILU +DEFORM_LINEAR_SOLVER_ITER= 1000 +DEFORM_NONLINEAR_ITER= 1 +DEFORM_LINEAR_SOLVER_ERROR= 1E-10 +DEFORM_CONSOLE_OUTPUT= YES +DEFORM_STIFFNESS_TYPE= WALL_DISTANCE % ------------------------- INPUT/OUTPUT FILE INFORMATION --------------------------% % % Decimal precision +% Used as output precision for the files written by the Sobolev solver as well. OUTPUT_PRECISION=10 -% -% Mesh input file MESH_FILENAME= mesh_NACA0012_inv.su2 -% -% Mesh input file format (SU2, CGNS) MESH_FORMAT= SU2 -% -% Mesh output file MESH_OUT_FILENAME= mesh_out.su2 -% -% Restart flow input file SOLUTION_FILENAME= solution_flow.dat -% -% Restart adjoint input file SOLUTION_ADJ_FILENAME= solution_adj.dat -% -% Output tabular file format (TECPLOT, CSV) TABULAR_FORMAT= TECPLOT -% -% Files to output -% Possible formats : (TECPLOT, TECPLOT_BINARY, SURFACE_TECPLOT, -% SURFACE_TECPLOT_BINARY, CSV, SURFACE_CSV, PARAVIEW, PARAVIEW_BINARY, SURFACE_PARAVIEW, -% SURFACE_PARAVIEW_BINARY, MESH, RESTART_BINARY, RESTART_ASCII, CGNS, SURFACE_CGNS, STL) -% default : (RESTART, PARAVIEW, SURFACE_PARAVIEW) OUTPUT_FILES= (RESTART, PARAVIEW, SURFACE_PARAVIEW) -% -% Output file convergence history (w/o extension) CONV_FILENAME= history -% -% Output file restart flow RESTART_FILENAME= restart_flow.dat -% -% Output file restart adjoint RESTART_ADJ_FILENAME= restart_adj.dat -% -% Output file flow (w/o extension) variables VOLUME_FILENAME= flow -% -% Output file adjoint (w/o extension) variables VOLUME_ADJ_FILENAME= adjoint -% -% Output objective function gradient (using continuous adjoint) GRAD_OBJFUNC_FILENAME= of_grad.dat -% -% Output file surface flow coefficient (w/o extension) SURFACE_FILENAME= surface_flow -% -% Output file surface adjoint coefficient (w/o extension) SURFACE_ADJ_FILENAME= surface_adjoint -% -% Read binary restart files (YES, NO) READ_BINARY_RESTART= YES - - - - -% --------------------- OPTIMAL SHAPE DESIGN DEFINITION -----------------------% -% -% Available flow based objective functions or constraint functions -% DRAG, LIFT, SIDEFORCE, EFFICIENCY, BUFFET, -% FORCE_X, FORCE_Y, FORCE_Z, -% MOMENT_X, MOMENT_Y, MOMENT_Z, -% THRUST, TORQUE, FIGURE_OF_MERIT, -% EQUIVALENT_AREA, NEARFIELD_PRESSURE, -% TOTAL_HEATFLUX, MAXIMUM_HEATFLUX, -% INVERSE_DESIGN_PRESSURE, INVERSE_DESIGN_HEATFLUX, -% SURFACE_TOTAL_PRESSURE, SURFACE_MASSFLOW -% SURFACE_STATIC_PRESSURE, SURFACE_MACH -% -% Available geometrical based objective functions or constraint functions -% AIRFOIL_AREA, AIRFOIL_THICKNESS, AIRFOIL_CHORD, AIRFOIL_TOC, AIRFOIL_AOA, -% WING_VOLUME, WING_MIN_THICKNESS, WING_MAX_THICKNESS, WING_MAX_CHORD, WING_MIN_TOC, WING_MAX_TWIST, WING_MAX_CURVATURE, WING_MAX_DIHEDRAL -% STATION#_WIDTH, STATION#_AREA, STATION#_THICKNESS, STATION#_CHORD, STATION#_TOC, -% STATION#_TWIST (where # is the index of the station defined in GEO_LOCATION_STATIONS) -% -% Available design variables -% 2D Design variables -% FFD_CONTROL_POINT_2D ( 19, Scale | Mark. List | FFD_BoxTag, i_Ind, j_Ind, x_Mov, y_Mov ) -% FFD_CAMBER_2D ( 20, Scale | Mark. List | FFD_BoxTag, i_Ind ) -% FFD_THICKNESS_2D ( 21, Scale | Mark. List | FFD_BoxTag, i_Ind ) -% FFD_TWIST_2D ( 22, Scale | Mark. List | FFD_BoxTag, x_Orig, y_Orig ) -% HICKS_HENNE ( 30, Scale | Mark. List | Lower(0)/Upper(1) side, x_Loc ) -% ANGLE_OF_ATTACK ( 101, Scale | Mark. List | 1.0 ) -% -% 3D Design variables -% FFD_CONTROL_POINT ( 11, Scale | Mark. List | FFD_BoxTag, i_Ind, j_Ind, k_Ind, x_Mov, y_Mov, z_Mov ) -% FFD_NACELLE ( 12, Scale | Mark. List | FFD_BoxTag, rho_Ind, theta_Ind, phi_Ind, rho_Mov, phi_Mov ) -% FFD_GULL ( 13, Scale | Mark. List | FFD_BoxTag, j_Ind ) -% FFD_CAMBER ( 14, Scale | Mark. List | FFD_BoxTag, i_Ind, j_Ind ) -% FFD_TWIST ( 15, Scale | Mark. List | FFD_BoxTag, j_Ind, x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) -% FFD_THICKNESS ( 16, Scale | Mark. List | FFD_BoxTag, i_Ind, j_Ind ) -% FFD_ROTATION ( 18, Scale | Mark. List | FFD_BoxTag, x_Axis, y_Axis, z_Axis, x_Turn, y_Turn, z_Turn ) -% FFD_ANGLE_OF_ATTACK ( 24, Scale | Mark. List | FFD_BoxTag, 1.0 ) -% -% Global design variables -% TRANSLATION ( 1, Scale | Mark. List | x_Disp, y_Disp, z_Disp ) -% ROTATION ( 2, Scale | Mark. List | x_Axis, y_Axis, z_Axis, x_Turn, y_Turn, z_Turn ) -% -% Optimization objective function with scaling factor, separated by semicolons. -% To include quadratic penalty function: use OPT_CONSTRAINT option syntax within the OPT_OBJECTIVE list. -% ex= Objective * Scale -OPT_OBJECTIVE= DRAG * 0.001 -% -% Optimization constraint functions with pushing factors (affects its value, not the gradient in the python scripts), separated by semicolons -% ex= (Objective = Value ) * Scale, use '>','<','=' -OPT_CONSTRAINT= ( LIFT > 0.327 ) * 0.001; ( MOMENT_Z > 0.0 ) * 0.001; ( AIRFOIL_THICKNESS > 0.12 ) * 0.001 -% -% Optimization design variables, separated by semicolons -DEFINITION_DV= ( 30, 1.0 | airfoil | 0, 0.05 ); ( 30, 1.0 | airfoil | 0, 0.10 ); ( 30, 1.0 | airfoil | 0, 0.15 ); ( 30, 1.0 | airfoil | 0, 0.20 ); ( 30, 1.0 | airfoil | 0, 0.25 ); ( 30, 1.0 | airfoil | 0, 0.30 ); ( 30, 1.0 | airfoil | 0, 0.35 ); ( 30, 1.0 | airfoil | 0, 0.40 ); ( 30, 1.0 | airfoil | 0, 0.45 ); ( 30, 1.0 | airfoil | 0, 0.50 ); ( 30, 1.0 | airfoil | 0, 0.55 ); ( 30, 1.0 | airfoil | 0, 0.60 ); ( 30, 1.0 | airfoil | 0, 0.65 ); ( 30, 1.0 | airfoil | 0, 0.70 ); ( 30, 1.0 | airfoil | 0, 0.75 ); ( 30, 1.0 | airfoil | 0, 0.80 ); ( 30, 1.0 | airfoil | 0, 0.85 ); ( 30, 1.0 | airfoil | 0, 0.90 ); ( 30, 1.0 | airfoil | 0, 0.95 ); ( 30, 1.0 | airfoil | 1, 0.05 ); ( 30, 1.0 | airfoil | 1, 0.10 ); ( 30, 1.0 | airfoil | 1, 0.15 ); ( 30, 1.0 | airfoil | 1, 0.20 ); ( 30, 1.0 | airfoil | 1, 0.25 ); ( 30, 1.0 | airfoil | 1, 0.30 ); ( 30, 1.0 | airfoil | 1, 0.35 ); ( 30, 1.0 | airfoil | 1, 0.40 ); ( 30, 1.0 | airfoil | 1, 0.45 ); ( 30, 1.0 | airfoil | 1, 0.50 ); ( 30, 1.0 | airfoil | 1, 0.55 ); ( 30, 1.0 | airfoil | 1, 0.60 ); ( 30, 1.0 | airfoil | 1, 0.65 ); ( 30, 1.0 | airfoil | 1, 0.70 ); ( 30, 1.0 | airfoil | 1, 0.75 ); ( 30, 1.0 | airfoil | 1, 0.80 ); ( 30, 1.0 | airfoil | 1, 0.85 ); ( 30, 1.0 | airfoil | 1, 0.90 ); ( 30, 1.0 | airfoil | 1, 0.95 ) diff --git a/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg b/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg index 99c7f83807f0..0eb5e5763e1d 100644 --- a/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg +++ b/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg @@ -8,556 +8,180 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% ------------- DIRECT, ADJOINT, AND LINEARIZED PROBLEM DEFINITION ------------% -% -% Solver type (EULER, NAVIER_STOKES, RANS, -% INC_EULER, INC_NAVIER_STOKES, INC_RANS, -% NEMO_EULER, NEMO_NAVIER_STOKES, -% FEM_EULER, FEM_NAVIER_STOKES, FEM_RANS, FEM_LES, -% HEAT_EQUATION_FVM, ELASTICITY) + SOLVER= RANS -% -% Specify turbulence model (NONE, SA, SA_NEG, SST, SA_E, SA_COMP, SA_E_COMP, SST_SUST) KIND_TURB_MODEL= SST -% -% Mathematical problem (DIRECT, CONTINUOUS_ADJOINT, DISCRETE_ADJOINT) -% Defaults to DISCRETE_ADJOINT for the SU2_*_AD codes, and to DIRECT otherwise. MATH_PROBLEM= DISCRETE_ADJOINT -% -% Restart solution (NO, YES) RESTART_SOL= NO % ------------------------------- SOLVER CONTROL ------------------------------% -% -% Number of iterations for single-zone problems + ITER= 3500 -% -% Convergence field CONV_FIELD= RMS_DENSITY, RMS_ADJ_DENSITY -% -% Min value of the residual (log10 of the residual) CONV_RESIDUAL_MINVAL= -16 -% -% Start convergence criteria at iteration number CONV_STARTITER= 10 -% -% Number of elements to apply the criteria CONV_CAUCHY_ELEMS= 100 -% -% Epsilon to control the series convergence CONV_CAUCHY_EPS= 1E-16 % -------------------- COMPRESSIBLE FREE-STREAM DEFINITION --------------------% -% -% Mach number (non-dimensional, based on the free-stream values) + MACH_NUMBER= 0.8395 -% -% Angle of attack (degrees, only for compressible flows) AOA= 3.06 -% -% Side-slip angle (degrees, only for compressible flows) -SIDESLIP_ANGLE= 0.0 -% -% Init option to choose between Reynolds (default) or thermodynamics quantities -% for initializing the solution (REYNOLDS, TD_CONDITIONS) -INIT_OPTION= REYNOLDS -% -% Free-stream option to choose between density and temperature (default) for -% initializing the solution (TEMPERATURE_FS, DENSITY_FS) -FREESTREAM_OPTION= TEMPERATURE_FS -% -% Free-stream temperature (288.15 K, 518.67 R by default) -FREESTREAM_TEMPERATURE= 288.15 -% -% Reynolds number (non-dimensional, based on the free-stream values) REYNOLDS_NUMBER= 11.72E6 -% -% Reynolds length (1 m, 1 inch by default) REYNOLDS_LENGTH= 0.64607 -% -% Compressible flow non-dimensionalization (DIMENSIONAL, FREESTREAM_PRESS_EQ_ONE, -% FREESTREAM_VEL_EQ_MACH, FREESTREAM_VEL_EQ_ONE) REF_DIMENSIONALIZATION= FREESTREAM_VEL_EQ_ONE % ---------------------- REFERENCE VALUE DEFINITION ---------------------------% -% -% Reference origin for moment computation (m or in) + REF_ORIGIN_MOMENT_X = 0.25 REF_ORIGIN_MOMENT_Y = 0.00 REF_ORIGIN_MOMENT_Z = 0.00 -% -% Reference length for moment non-dimensional coefficients (m or in) REF_LENGTH= 0.64607 -% -% Reference area for non-dimensional force coefficients (0 implies automatic -% calculation) (m^2 or in^2) -REF_AREA= 0 -% -% Aircraft semi-span (0 implies automatic calculation) (m or in) -SEMI_SPAN= 0.0 - -% ---- NONEQUILIBRIUM GAS, IDEAL GAS, POLYTROPIC, VAN DER WAALS AND PENG ROBINSON CONSTANTS -------% -% -% Fluid model (STANDARD_AIR, IDEAL_GAS, VW_GAS, PR_GAS, -% CONSTANT_DENSITY, INC_IDEAL_GAS, INC_IDEAL_GAS_POLY, MUTATIONPP, SU2_NONEQ) -FLUID_MODEL= STANDARD_AIR -% -% Ratio of specific heats (1.4 default and the value is hardcoded -% for the model STANDARD_AIR, compressible only) -GAMMA_VALUE= 1.4 -% -% Specific gas constant (287.058 J/kg*K default and this value is hardcoded -% for the model STANDARD_AIR, compressible only) -GAS_CONSTANT= 287.058 - -% --------------------------- VISCOSITY MODEL ---------------------------------% -% -% Viscosity model (SUTHERLAND, CONSTANT_VISCOSITY, POLYNOMIAL_VISCOSITY). -VISCOSITY_MODEL= SUTHERLAND -% -% Sutherland Viscosity Ref (1.716E-5 default value for AIR SI) -MU_REF= 1.716E-5 -% -% Sutherland Temperature Ref (273.15 K default value for AIR SI) -MU_T_REF= 273.15 -% -% Sutherland constant (110.4 default value for AIR SI) -SUTHERLAND_CONSTANT= 110.4 - -% --------------------------- THERMAL CONDUCTIVITY MODEL ----------------------% -% -% Laminar Conductivity model (CONSTANT_CONDUCTIVITY, CONSTANT_PRANDTL, -% POLYNOMIAL_CONDUCTIVITY). -CONDUCTIVITY_MODEL= CONSTANT_PRANDTL -% -% Laminar Prandtl number (0.72 (air), only for CONSTANT_PRANDTL) -PRANDTL_LAM= 0.72 -% -% Turbulent Prandtl number (0.9 (air) by default) -PRANDTL_TURB= 0.90 % -------------------- BOUNDARY CONDITION DEFINITION --------------------------% -% -% Navier-Stokes (no-slip), constant heat flux wall marker(s) (NONE = no marker) -% Format: ( marker name, constant heat flux (J/m^2), ... ) + MARKER_HEATFLUX= ( WING, 0.0 ) -% -% Far-field boundary marker(s) (NONE = no marker) MARKER_FAR= ( FARFIELD ) -% -% Symmetry boundary marker(s) (NONE = no marker) -% Implementation identical to MARKER_EULER. MARKER_SYM= ( SYMMETRY ) % ------------------------ SURFACES IDENTIFICATION ----------------------------% -% -% Marker(s) of the surface in the surface flow solution file + MARKER_PLOTTING = ( WING ) -% -% Marker(s) of the surface where the non-dimensional coefficients are evaluated. MARKER_MONITORING = ( WING ) % ------------- COMMON PARAMETERS DEFINING THE NUMERICAL METHOD ---------------% -% -% Numerical method for spatial gradients (GREEN_GAUSS, WEIGHTED_LEAST_SQUARES) + NUM_METHOD_GRAD= GREEN_GAUSS -% -% CFL number (initial value for the adaptive CFL number) CFL_NUMBER= 100.0 -% -% Adaptive CFL number (NO, YES) CFL_ADAPT= YES -% -% Parameters of the adaptive CFL number (factor-down, factor-up, CFL min value, -% CFL max value, acceptable linear solver convergence) -% Local CFL increases by factor-up until max if the solution rate of change is not limited, -% and acceptable linear convergence is achieved. It is reduced if rate is limited, or if there -% is not enough linear convergence, or if the nonlinear residuals are stagnant and oscillatory. -% It is reset back to min when linear solvers diverge, or if nonlinear residuals increase too much. CFL_ADAPT_PARAM= ( 0.5, 1.5, 25.0, 100000.0 ) -% -% Maximum Delta Time in local time stepping simulations MAX_DELTA_TIME= 1E6 -% -% Runge-Kutta alpha coefficients RK_ALPHA_COEFF= ( 0.66667, 0.66667, 1.000000 ) -% -% Objective function in gradient evaluation (DRAG, LIFT, SIDEFORCE, MOMENT_X, -% MOMENT_Y, MOMENT_Z, EFFICIENCY, BUFFET, -% EQUIVALENT_AREA, NEARFIELD_PRESSURE, -% FORCE_X, FORCE_Y, FORCE_Z, THRUST, -% TORQUE, TOTAL_HEATFLUX, -% MAXIMUM_HEATFLUX, INVERSE_DESIGN_PRESSURE, -% INVERSE_DESIGN_HEATFLUX, SURFACE_TOTAL_PRESSURE, -% SURFACE_MASSFLOW, SURFACE_STATIC_PRESSURE, SURFACE_MACH) -% For a weighted sum of objectives: separate by commas, add OBJECTIVE_WEIGHT and MARKER_MONITORING in matching order. OBJECTIVE_FUNCTION= DRAG -% -% List of weighting values when using more than one OBJECTIVE_FUNCTION. Separate by commas and match with MARKER_MONITORING. OBJECTIVE_WEIGHT = 1.0 % ----------- SLOPE LIMITER AND DISSIPATION SENSOR DEFINITION -----------------% -% -% Monotonic Upwind Scheme for Conservation Laws (TVD) in the flow equations. -% Required for 2nd order upwind schemes (NO, YES) + MUSCL_FLOW= YES -% -% Slope limiter (NONE, VENKATAKRISHNAN, VENKATAKRISHNAN_WANG, -% BARTH_JESPERSEN, VAN_ALBADA_EDGE) SLOPE_LIMITER_FLOW= VENKATAKRISHNAN -% -% Monotonic Upwind Scheme for Conservation Laws (TVD) in the turbulence equations. -% Required for 2nd order upwind schemes (NO, YES) MUSCL_TURB= NO -% -% Slope limiter (NONE, VENKATAKRISHNAN, VENKATAKRISHNAN_WANG, -% BARTH_JESPERSEN, VAN_ALBADA_EDGE) SLOPE_LIMITER_TURB= VENKATAKRISHNAN -% -% Coefficient for the Venkat's limiter (upwind scheme). A larger values decrease -% the extent of limiting, values approaching zero cause -% lower-order approximation to the solution (0.05 by default) VENKAT_LIMITER_COEFF= 0.05 -% -% 2nd and 4th order artificial dissipation coefficients for -% the JST method ( 0.5, 0.02 by default ) JST_SENSOR_COEFF= ( 0.5, 0.0078125 ) % ------------------------ LINEAR SOLVER DEFINITION ---------------------------% -% -% Linear solver or smoother for implicit formulations: -% BCGSTAB, FGMRES, RESTARTED_FGMRES, CONJUGATE_GRADIENT (self-adjoint problems only), SMOOTHER. + LINEAR_SOLVER= FGMRES -% -% Preconditioner of the Krylov linear solver or type of smoother (ILU, LU_SGS, LINELET, JACOBI) LINEAR_SOLVER_PREC= ILU -% -% Minimum error of the linear solver for implicit formulations LINEAR_SOLVER_ERROR= 1E-10 -% -% Max number of iterations of the linear solver for the implicit formulation LINEAR_SOLVER_ITER= 10 -% -------------------------- MULTIGRID PARAMETERS -----------------------------% -% -% Multi-grid levels (0 = no multi-grid) -MGLEVEL= 0 -% -% Multi-grid cycle (V_CYCLE, W_CYCLE, FULLMG_CYCLE) -MGCYCLE= V_CYCLE -% -% Multi-grid pre-smoothing level -MG_PRE_SMOOTH= ( 1, 1, 1, 1 ) -% -% Multi-grid post-smoothing level -MG_POST_SMOOTH= ( 0, 0, 0, 0 ) -% -% Jacobi implicit smoothing of the correction -MG_CORRECTION_SMOOTH= ( 0, 0, 0, 0 ) -% -% Damping factor for the residual restriction -MG_DAMP_RESTRICTION= 0.7 -% -% Damping factor for the correction prolongation -MG_DAMP_PROLONGATION= 0.7 - % -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------% -% -% Convective numerical method (JST, JST_KE, JST_MAT, LAX-FRIEDRICH, CUSP, ROE, AUSM, -% AUSMPLUSUP, AUSMPLUSUP2, AUSMPWPLUS, HLLC, TURKEL_PREC, -% SW, MSW, FDS, SLAU, SLAU2, L2ROE, LMROE) + CONV_NUM_METHOD_FLOW= JST -% -% Time discretization (RUNGE-KUTTA_EXPLICIT, EULER_IMPLICIT, EULER_EXPLICIT) TIME_DISCRE_FLOW= EULER_IMPLICIT -% -------------------- TURBULENT NUMERICAL METHOD DEFINITION ------------------% -% -% Convective numerical method (SCALAR_UPWIND) -CONV_NUM_METHOD_TURB= SCALAR_UPWIND -% -% Time discretization (EULER_IMPLICIT) -TIME_DISCRE_TURB= EULER_IMPLICIT - -% ----------------------- GEOMETRY EVALUATION PARAMETERS ----------------------% -% -% Marker(s) of the surface where geometrical based function will be evaluated -GEO_MARKER= ( WING ) -% -% Description of the geometry to be analyzed (AIRFOIL, WING) -GEO_DESCRIPTION= WING -% -% Coordinate of the stations to be analyzed -GEO_LOCATION_STATIONS= (0.0, 0.2, 0.4, 0.6, 0.8) -% -% Geometrical bounds (Y coordinate) for the wing geometry analysis or -% fuselage evaluation (X coordinate) -GEO_BOUNDS= (0, 0.8) -% -% Plot loads and Cp distributions on each airfoil section -GEO_PLOT_STATIONS= YES -% -% Number of section cuts to make when calculating wing geometry -GEO_NUMBER_STATIONS= 25 -% -% Geometrical evaluation mode (FUNCTION, GRADIENT) -GEO_MODE= GRADIENT - % ----------------------- SOBOLEV GRADIENT SMOOTHING OPTIONS ----------------------% % % Activate the gradient smoothing solver for the discrete adjoint driver (NO, YES) +% this will run the Sobolev gradient smoothing solver as an additional postprocessing step +% to the derivative projections in SU2_DOT_AD. +% The method requires the AD mode to be active. SMOOTH_GRADIENT= YES % +% Mode how the Sobolev method is applied to the sensitivities. +% - NO_MODUS (Default option if none is choosen, does nothing.) +% - PARAM_LEVEL_COMPLETE (Apply Sobolev smoothing to the projected gradient, w.r.t. the design values.) +% - MESH_LEVEL (Apply Sobolev smoothing to the mesh sensitivities, either in the volume or on the surface.) +% - DEBUG (Flag to test the finite elements asembly of the Laplace-Beltrami operator.) +% - ONLY_GRADIENT (Use the smoothing solver to calculate the unaltered gradient.) +SOBOLEV_MODE= PARAM_LEVEL_COMPLETE +% % Scaling factor for the identity part of the Laplace-Beltrami operator SMOOTHING_EPSILON1= 51.8116714655595 % % Scaling factor for the Laplace part of the Laplace-Beltrami operator SMOOTHING_EPSILON2= 0.700463534712351 % -% Switch for running the smoothing procedure seperately in each space dimension (NO, YES). -SEPARATE_DIMENSIONS= NO -% % Switch for applying the Sobolev smoothing to the design surface mesh, i.e., instead of the whole volume mesh (NO, YES). +% Only works with SOBOLEV_MODE=MESH_LEVEL. SMOOTH_ON_SURFACE= YES % -% Use Dirichlet boundary conditions when working on the design surface, only used for SMOOTH_ON_SURFACE= YES (NO, YES). +% Switch for applying the solver to each space dimension of the meshsensitivity seperately. +% Only works with SOBOLEV_MODE=MESH_LEVEL. +SEPARATE_DIMENSIONS= NO +% +% Use Dirichlet boundary conditions when working on the design surface. +% Calculates the edge nodes of the design surface and sets the meshsensitivity there =0. +% Only used for SMOOTH_ON_SURFACE= YES . DIRICHLET_SURFACE_BOUNDARY= NO % -% Marker for boundaries where Dirichlet boundary conditions are applied, only valid if working on the volume mesh. +% For smoothing meshsensitivities in the volume mesh, the Laplace-Beltrami operator is applied with 0 Neumann boundary by default. +% Dirichlet boundary conditions can be used by adding boundary markes to MARKER_SOBOLEVBC. The meshsensitivities will be set to 0, +% i.e. zero Dirichlet boundaries for this marker. MARKER_SOBOLEVBC= ( airfoil ) % -% Mode how the Sobolev method is applied to the discrete adjoint gradient. -% - NO_MODUS (Default option if none is choosen.) -% - PARAM_LEVEL_COMPLETE (Apply Sobolev smoothing to the projected gradient, w.r.t. the DV.) -% - MESH_LEVEL (Apply Sobolev smoothing to the mesh sensitivities.) -% - DEBUG (Test the finite elements asembly of the Laplace-Beltrami operator.) -% - ONLY_GRADIENT (Only calculate the classical gradient.) -SOBOLEV_MODE= PARAM_LEVEL_COMPLETE -% -% Output filename for the assembled Sobolev smoothing system matrix +% Output filename for the assembled Sobolev smoothing system matrix. +% Writes the projected Laplace-Beltrami operator into a file for external optimization. +% Requires SOBOLEV_MODE=PARAM_LEVEL_COMPLETE. HESS_OBJFUNC_FILENAME= of_hess.dat +% +% Linear solver for the finite elements system on the mesh level, +% supports the same solver options as LINEAR_SOLVER, e.g. +% BCGSTAB, FGMRES, RESTARTED_FGMRES, CONJUGATE_GRADIENT (self-adjoint problems only), SMOOTHER. +GRAD_LINEAR_SOLVER= FGMRES +% +% Preconditioner of the Krylov linear solver (ILU, LU_SGS, JACOBI) +GRAD_LINEAR_SOLVER_PREC= ILU +% +% Number of linear solver iterations for the Sobolev smoothing solver +GRAD_LINEAR_SOLVER_ITER= 1000 +% +% Minimum residual criteria for the linear solver convergence of the Sobolev smoothing solver +GRAD_LINEAR_SOLVER_ERROR= 1E-14 % ----------------------- DESIGN VARIABLE PARAMETERS --------------------------% % -% Kind of deformation (NO_DEFORMATION, SCALE_GRID, TRANSLATE_GRID, ROTATE_GRID, -% FFD_SETTING, FFD_NACELLE, -% FFD_CONTROL_POINT, FFD_CAMBER, FFD_THICKNESS, FFD_TWIST -% FFD_CONTROL_POINT_2D, FFD_CAMBER_2D, FFD_THICKNESS_2D, -% FFD_TWIST_2D, HICKS_HENNE, SURFACE_BUMP, SURFACE_FILE) +% When running the Sobolev smoothing solver on the design variable parameters, +% the system is computed with respect to the design values specified in the SU2 config file. +% The projected system matrix will the have the dimensions 'number DV_PARAM * number DV_PARAM'. DV_KIND= FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT -% -% Marker of the surface in which we are going apply the shape deformation DV_MARKER= ( WING ) -% -% Parameters of the shape deformation -% - NO_DEFORMATION ( 1.0 ) -% - TRANSLATE_GRID ( x_Disp, y_Disp, z_Disp ), as a unit vector -% - ROTATE_GRID ( x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) axis, DV_VALUE in deg. -% - SCALE_GRID ( 1.0 ) -% - ANGLE_OF_ATTACK ( 1.0 ) -% - FFD_SETTING ( 1.0 ) -% - FFD_CONTROL_POINT ( FFD_BoxTag, i_Ind, j_Ind, k_Ind, x_Disp, y_Disp, z_Disp ) -% - FFD_NACELLE ( FFD_BoxTag, rho_Ind, theta_Ind, phi_Ind, rho_Disp, phi_Disp ) -% - FFD_GULL ( FFD_BoxTag, j_Ind ) -% - FFD_ANGLE_OF_ATTACK ( FFD_BoxTag, 1.0 ) -% - FFD_CAMBER ( FFD_BoxTag, i_Ind, j_Ind ) -% - FFD_THICKNESS ( FFD_BoxTag, i_Ind, j_Ind ) -% - FFD_TWIST ( FFD_BoxTag, j_Ind, x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) -% - FFD_CONTROL_POINT_2D ( FFD_BoxTag, i_Ind, j_Ind, x_Disp, y_Disp ) -% - FFD_CAMBER_2D ( FFD_BoxTag, i_Ind ) -% - FFD_THICKNESS_2D ( FFD_BoxTag, i_Ind ) -% - FFD_TWIST_2D ( FFD_BoxTag, x_Orig, y_Orig ) -% - HICKS_HENNE ( Lower Surface (0)/Upper Surface (1)/Only one Surface (2), x_Loc ) -% - SURFACE_BUMP ( x_Start, x_End, x_Loc ) DV_PARAM= ( WINGBOX, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 8.0, 1.0, 0.0, 0.0, 1.0) -% -% Value of the shape deformation DV_VALUE= 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % -% Linear solver or smoother for implicit formulations (FGMRES, RESTARTED_FGMRES, BCGSTAB) +% The Sobolev smoothing solver computes projections between the mesh sensitivity and the design values +% in the same way as the regular projection done by SU2_DOT. +% Therefore, he settings here are used to compute the adjoint mesh movement. +% Make sure they are consistent for computing gradient and applying the Sobolev smoothing solver. DEFORM_LINEAR_SOLVER= FGMRES -% -% Number of smoothing iterations for mesh deformation DEFORM_LINEAR_SOLVER_ITER= 500 -% -% Minimum residual criteria for the linear solver convergence of grid deformation DEFORM_LINEAR_SOLVER_ERROR= 1E-10 -% -% Print the residuals during mesh deformation to the console (YES, NO) DEFORM_CONSOLE_OUTPUT= YES -% -% Deformation coefficient (linear elasticity limits from -1.0 to 0.5, a larger -% value is also possible) DEFORM_COEFF = 1E6 -% -% Type of element stiffness imposed for FEA mesh deformation (INVERSE_VOLUME, -% WALL_DISTANCE, CONSTANT_STIFFNESS) DEFORM_STIFFNESS_TYPE= WALL_DISTANCE -% -------------------- FREE-FORM DEFORMATION PARAMETERS -----------------------% -% -% Tolerance of the Free-Form Deformation point inversion -FFD_TOLERANCE= 1E-10 -% -% Maximum number of iterations in the Free-Form Deformation point inversion -FFD_ITERATIONS= 500 -% -% FFD box definition: 3D case (FFD_BoxTag, X1, Y1, Z1, X2, Y2, Z2, X3, Y3, Z3, X4, Y4, Z4, -% X5, Y5, Z5, X6, Y6, Z6, X7, Y7, Z7, X8, Y8, Z8) -% 2D case (FFD_BoxTag, X1, Y1, 0.0, X2, Y2, 0.0, X3, Y3, 0.0, X4, Y4, 0.0, -% 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) -FFD_DEFINITION= (WINGBOX, -0.0403, 0, -0.04836, 0.8463,0, -0.04836, 1.209, 1.2896, -0.04836, 0.6851, 1.2896, -0.04836, -0.0403, 0, 0.04836, 0.8463, 0, 0.04836, 1.209, 1.2896, 0.04836, 0.6851, 1.2896, 0.04836) -% -% FFD box degree: 3D case (x_degree, y_degree, z_degree) -% 2D case (x_degree, y_degree, 0) -FFD_DEGREE= (10, 8, 1) -% -% Surface grid continuity at the intersection with the faces of the FFD boxes. -% To keep a particular level of surface continuity, SU2 automatically freezes the right -% number of control point planes (NO_DERIVATIVE, 1ST_DERIVATIVE, 2ND_DERIVATIVE, USER_INPUT) -FFD_CONTINUITY= 2ND_DERIVATIVE - -% ------------------------- SCREEN/HISTORY VOLUME OUTPUT --------------------------% -% -% Screen output fields (use 'SU2_CFD -d ' to view list of available fields) -SCREEN_OUTPUT= (INNER_ITER, RMS_DENSITY, RMS_ENERGY, DRAG, LIFT, RMS_ADJ_DENSITY, RMS_ADJ_ENERGY) -% -% History output groups (use 'SU2_CFD -d ' to view list of available fields) -HISTORY_OUTPUT= (ITER, RMS_RES, AERO_COEFF, SENSITIVITY) -% -% Volume output fields/groups (use 'SU2_CFD -d ' to view list of available fields) -VOLUME_OUTPUT= (COORDINATES, SOLUTION, PRIMITIVE, SENSITIVITY) -% -% Writing frequency for screen output -SCREEN_WRT_FREQ_INNER= 10 -% -% Writing frequency for history output -HISTORY_WRT_FREQ_INNER= 1 -% -% Writing frequency for volume/surface output -OUTPUT_WRT_FREQ= 1000 - % ------------------------- INPUT/OUTPUT FILE INFORMATION --------------------------% % % Decimal precision +% Used as output precision for the files written by the Sobolev solver as well. OUTPUT_PRECISION=10 -% -% Mesh input file + MESH_FILENAME= mesh_tutorial_ffd.su2 -% -% Mesh input file format (SU2, CGNS) MESH_FORMAT= SU2 -% -% Mesh output file -MESH_OUT_FILENAME= mesh_tutorial_ffd_deform.su2 -% -% Restart flow input file SOLUTION_FILENAME= solution_flow.dat -% -% Restart adjoint input file SOLUTION_ADJ_FILENAME= solution_adj.dat -% -% Output tabular file format (TECPLOT, CSV) TABULAR_FORMAT= TECPLOT -% -% Files to output -% Possible formats : (TECPLOT, TECPLOT_BINARY, SURFACE_TECPLOT, -% SURFACE_TECPLOT_BINARY, CSV, SURFACE_CSV, PARAVIEW, PARAVIEW_BINARY, SURFACE_PARAVIEW, -% SURFACE_PARAVIEW_BINARY, MESH, RESTART_BINARY, RESTART_ASCII, CGNS, SURFACE_CGNS, STL) -% default : (RESTART, PARAVIEW, SURFACE_PARAVIEW) OUTPUT_FILES= (RESTART, PARAVIEW, SURFACE_PARAVIEW) -% -% Output file convergence history (w/o extension) CONV_FILENAME= history -% -% Output file restart flow RESTART_FILENAME= restart_flow.dat -% -% Output file restart adjoint RESTART_ADJ_FILENAME= restart_adj.dat -% -% Output file flow (w/o extension) variables VOLUME_FILENAME= flow -% -% Output file adjoint (w/o extension) variables VOLUME_ADJ_FILENAME= adjoint -% -% Output objective function gradient (using continuous adjoint) GRAD_OBJFUNC_FILENAME= of_grad.dat -% -% Output file surface flow coefficient (w/o extension) SURFACE_FILENAME= surface_flow -% -% Output file surface adjoint coefficient (w/o extension) SURFACE_ADJ_FILENAME= surface_adjoint -% -% Read binary restart files (YES, NO) READ_BINARY_RESTART= YES -% --------------------- OPTIMAL SHAPE DESIGN DEFINITION -----------------------% -% -% Available flow based objective functions or constraint functions -% DRAG, LIFT, SIDEFORCE, EFFICIENCY, BUFFET, -% FORCE_X, FORCE_Y, FORCE_Z, -% MOMENT_X, MOMENT_Y, MOMENT_Z, -% THRUST, TORQUE, FIGURE_OF_MERIT, -% EQUIVALENT_AREA, NEARFIELD_PRESSURE, -% TOTAL_HEATFLUX, MAXIMUM_HEATFLUX, -% INVERSE_DESIGN_PRESSURE, INVERSE_DESIGN_HEATFLUX, -% SURFACE_TOTAL_PRESSURE, SURFACE_MASSFLOW -% SURFACE_STATIC_PRESSURE, SURFACE_MACH -% -% Available geometrical based objective functions or constraint functions -% AIRFOIL_AREA, AIRFOIL_THICKNESS, AIRFOIL_CHORD, AIRFOIL_TOC, AIRFOIL_AOA, -% WING_VOLUME, WING_MIN_THICKNESS, WING_MAX_THICKNESS, WING_MAX_CHORD, WING_MIN_TOC, WING_MAX_TWIST, WING_MAX_CURVATURE, WING_MAX_DIHEDRAL -% STATION#_WIDTH, STATION#_AREA, STATION#_THICKNESS, STATION#_CHORD, STATION#_TOC, -% STATION#_TWIST (where # is the index of the station defined in GEO_LOCATION_STATIONS) -% -% Available design variables -% 2D Design variables -% FFD_CONTROL_POINT_2D ( 19, Scale | Mark. List | FFD_BoxTag, i_Ind, j_Ind, x_Mov, y_Mov ) -% FFD_CAMBER_2D ( 20, Scale | Mark. List | FFD_BoxTag, i_Ind ) -% FFD_THICKNESS_2D ( 21, Scale | Mark. List | FFD_BoxTag, i_Ind ) -% FFD_TWIST_2D ( 22, Scale | Mark. List | FFD_BoxTag, x_Orig, y_Orig ) -% HICKS_HENNE ( 30, Scale | Mark. List | Lower(0)/Upper(1) side, x_Loc ) -% ANGLE_OF_ATTACK ( 101, Scale | Mark. List | 1.0 ) -% -% 3D Design variables -% FFD_CONTROL_POINT ( 11, Scale | Mark. List | FFD_BoxTag, i_Ind, j_Ind, k_Ind, x_Mov, y_Mov, z_Mov ) -% FFD_NACELLE ( 12, Scale | Mark. List | FFD_BoxTag, rho_Ind, theta_Ind, phi_Ind, rho_Mov, phi_Mov ) -% FFD_GULL ( 13, Scale | Mark. List | FFD_BoxTag, j_Ind ) -% FFD_CAMBER ( 14, Scale | Mark. List | FFD_BoxTag, i_Ind, j_Ind ) -% FFD_TWIST ( 15, Scale | Mark. List | FFD_BoxTag, j_Ind, x_Orig, y_Orig, z_Orig, x_End, y_End, z_End ) -% FFD_THICKNESS ( 16, Scale | Mark. List | FFD_BoxTag, i_Ind, j_Ind ) -% FFD_ROTATION ( 18, Scale | Mark. List | FFD_BoxTag, x_Axis, y_Axis, z_Axis, x_Turn, y_Turn, z_Turn ) -% FFD_ANGLE_OF_ATTACK ( 24, Scale | Mark. List | FFD_BoxTag, 1.0 ) -% -% Global design variables -% TRANSLATION ( 1, Scale | Mark. List | x_Disp, y_Disp, z_Disp ) -% ROTATION ( 2, Scale | Mark. List | x_Axis, y_Axis, z_Axis, x_Turn, y_Turn, z_Turn ) -% -% Optimization objective function with scaling factor, separated by semicolons. -% To include quadratic penalty function: use OPT_CONSTRAINT option syntax within the OPT_OBJECTIVE list. -% ex= Objective * Scale -OPT_OBJECTIVE= DRAG -% -% Optimization constraint functions with pushing factors (affects its value, not the gradient in the python scripts), separated by semicolons -% ex= (Objective = Value ) * Scale, use '>','<','=' -OPT_CONSTRAINT= (LIFT = 0.2514); ( STATION1_THICKNESS > 0.077); (STATION2_THICKNESS > 0.072); (STATION3_THICKNESS > 0.066); (STATION4_THICKNESS > 0.060); (STATION5_THICKNESS > 0.054) -% -% Maximum number of iterations -OPT_ITERATIONS= 20 -% -% Upper bound for each design variable (bound in the python optimizer) -OPT_BOUND_UPPER= 0.1 -% -% Lower bound for each design variable (bound in the python optimizer) -OPT_BOUND_LOWER= -0.1 -% -% List of design variables (Design variables are separated by semicolons) -DEFINITION_DV= ( 11, 1.0 | WING | WINGBOX, 0, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 0, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 1, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 2, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 3, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 4, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 5, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 6, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 7, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 8, 0, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 0, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 1, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 2, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 3, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 4, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 5, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 6, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 7, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 0, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 1, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 2, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 3, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 4, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 5, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 6, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 7, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 8, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 9, 8, 1, 0.0, 0.0, 1.0 ); ( 11, 1.0 | WING | WINGBOX, 10, 8, 1, 0.0, 0.0, 1.0 ) - -DV_VALUE_NEW= 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 -DV_VALUE_OLD= 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 diff --git a/TestCases/multiple_ffd/naca0012/inv_NACA0012_ffd.cfg b/TestCases/multiple_ffd/naca0012/inv_NACA0012_ffd.cfg index 9d800f9333db..3a225a5eb719 100644 --- a/TestCases/multiple_ffd/naca0012/inv_NACA0012_ffd.cfg +++ b/TestCases/multiple_ffd/naca0012/inv_NACA0012_ffd.cfg @@ -178,6 +178,9 @@ LIMIT_ADJFLOW= 1E6 % % Remove sharp edges from the sensitivity evaluation (NO, YES) SENS_REMOVE_SHARP= NO +% +% Sensitivity smoothing (NONE, SOBOLEV, BIGRID) +SENS_SMOOTHING= NONE % ----------------------- DESIGN VARIABLE PARAMETERS --------------------------% % diff --git a/TestCases/optimization_euler/rotating_naca0012/rotating_NACA0012.cfg b/TestCases/optimization_euler/rotating_naca0012/rotating_NACA0012.cfg index 1bca0c90150b..5165973ee8af 100644 --- a/TestCases/optimization_euler/rotating_naca0012/rotating_NACA0012.cfg +++ b/TestCases/optimization_euler/rotating_naca0012/rotating_NACA0012.cfg @@ -197,6 +197,9 @@ LIMIT_ADJFLOW= 1E6 % Remove sharp edges from the sensitivity evaluation (NO, YES) SENS_REMOVE_SHARP= NO % +% Sensitivity smoothing (NONE, SOBOLEV, BIGRID) +SENS_SMOOTHING= NONE +% % Adjoint frozen viscosity (NO, YES) FROZEN_VISC_CONT= YES diff --git a/TestCases/optimization_euler/steady_naca0012/inv_NACA0012_adv.cfg b/TestCases/optimization_euler/steady_naca0012/inv_NACA0012_adv.cfg index 6ae1ad8e699a..5e7ccf6f39ee 100644 --- a/TestCases/optimization_euler/steady_naca0012/inv_NACA0012_adv.cfg +++ b/TestCases/optimization_euler/steady_naca0012/inv_NACA0012_adv.cfg @@ -177,6 +177,9 @@ LIMIT_ADJFLOW= 1E6 % % Remove sharp edges from the sensitivity evaluation (NO, YES) SENS_REMOVE_SHARP= NO +% +% Sensitivity smoothing (NONE, SOBOLEV, BIGRID) +SENS_SMOOTHING= NONE % ----------------------- GEOMETRY EVALUATION PARAMETERS ----------------------% % diff --git a/TestCases/optimization_rans/pitching_oneram6/turb_ONERAM6.cfg b/TestCases/optimization_rans/pitching_oneram6/turb_ONERAM6.cfg index 3a12766b1ff8..80094a639035 100644 --- a/TestCases/optimization_rans/pitching_oneram6/turb_ONERAM6.cfg +++ b/TestCases/optimization_rans/pitching_oneram6/turb_ONERAM6.cfg @@ -243,6 +243,9 @@ LIMIT_ADJFLOW= 1E6 % Remove sharp edges from the sensitivity evaluation (NO, YES) SENS_REMOVE_SHARP= YES % +% Sensitivity smoothing (NONE, SOBOLEV, BIGRID) +SENS_SMOOTHING= NONE +% % Adjoint frozen viscosity (NO, YES) FROZEN_VISC_CONT= YES diff --git a/TestCases/rotating/naca0012/rot_NACA0012.cfg b/TestCases/rotating/naca0012/rot_NACA0012.cfg index e58403cbf6bf..09b70c273f2f 100644 --- a/TestCases/rotating/naca0012/rot_NACA0012.cfg +++ b/TestCases/rotating/naca0012/rot_NACA0012.cfg @@ -206,6 +206,9 @@ LIMIT_ADJFLOW= 1E6 % Remove sharp edges from the sensitivity evaluation (NO, YES) SENS_REMOVE_SHARP= NO % +% Sensitivity smoothing (NONE, SOBOLEV, BIGRID) +SENS_SMOOTHING= NONE +% % Adjoint frozen viscosity (NO, YES) FROZEN_VISC_CONT= YES diff --git a/config_template.cfg b/config_template.cfg index 92024484f978..da2410e5cb55 100644 --- a/config_template.cfg +++ b/config_template.cfg @@ -1588,34 +1588,31 @@ PARMETIS_POINT_WEIGHT= 0 % ----------------------- SOBOLEV GRADIENT SMOOTHING OPTIONS ----------------------% % % Activate the gradient smoothing solver for the discrete adjoint driver (NO, YES) +% see TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg for a detailed explanantion +% on the config options shown here. SMOOTH_GRADIENT= NO % +% Mode how the Sobolev method is applied to the discrete adjoint gradient. +SOBOLEV_MODE= NO_MODUS +% % Scaling factor for the identity part of the Laplace-Beltrami operator SMOOTHING_EPSILON1= 1.0 % % Scaling factor for the Laplace part of the Laplace-Beltrami operator SMOOTHING_EPSILON2= 1.0 % -% Switch for running the smoothing procedure seperately in each space dimension (NO, YES). -SEPARATE_DIMENSIONS= NO -% % Switch for applying the Sobolev smoothing to the design surface mesh, i.e., instead of the whole volume mesh (NO, YES). SMOOTH_ON_SURFACE= NO % +% Switch for running the smoothing procedure seperately in each space dimension (NO, YES). +SEPARATE_DIMENSIONS= NO +% % Use Dirichlet boundary conditions when working on the design surface, only used for SMOOTH_ON_SURFACE= YES (NO, YES). DIRICHLET_SURFACE_BOUNDARY= NO % % Marker for boundaries where Dirichlet boundary conditions are applied, only valid if working on the volume mesh. MARKER_SOBOLEVBC= ( airfoil ) % -% Mode how the Sobolev method is applied to the discrete adjoint gradient. -% - NO_MODUS (Default option if none is choosen.) -% - PARAM_LEVEL_COMPLETE (Apply Sobolev smoothing to the projected gradient, w.r.t. the DV.) -% - MESH_LEVEL (Apply Sobolev smoothing to the mesh sensitivities.) -% - DEBUG (Test the finite elements asembly of the Laplace-Beltrami operator.) -% - ONLY_GRADIENT (Only calculate the classical gradient.) -SOBOLEV_MODE= NO_MODUS -% % Output filename for the assembled Sobolev smoothing system matrix HESS_OBJFUNC_FILENAME= of_hess.dat % From 1dfa00cb785acada0c1f36e8004999e98ce48960 Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Thu, 9 Dec 2021 23:15:32 +0100 Subject: [PATCH 15/26] Reworked the meson.build for SU2_DOT and SU2_DOT_AD. Executables are now build using the static su2_cfd libraries. --- SU2_CFD/src/meson.build | 9 ++++-- SU2_DOT/src/meson.build | 71 +++-------------------------------------- 2 files changed, 10 insertions(+), 70 deletions(-) diff --git a/SU2_CFD/src/meson.build b/SU2_CFD/src/meson.build index 406dac350b5d..a9343dbd775e 100644 --- a/SU2_CFD/src/meson.build +++ b/SU2_CFD/src/meson.build @@ -78,7 +78,8 @@ su2_cfd_src += files(['variables/CIncNSVariable.cpp', 'variables/CIncEulerVariable.cpp', 'variables/CEulerVariable.cpp', 'variables/CNEMOEulerVariable.cpp', - 'variables/CNEMONSVariable.cpp']) + 'variables/CNEMONSVariable.cpp', + 'variables/CSobolevSmoothingVariable.cpp']) su2_cfd_src += files(['solvers/CSolverFactory.cpp', 'solvers/CAdjEulerSolver.cpp', @@ -108,7 +109,8 @@ su2_cfd_src += files(['solvers/CSolverFactory.cpp', 'solvers/CTransLMSolver.cpp', 'solvers/CTurbSolver.cpp', 'solvers/CTurbSASolver.cpp', - 'solvers/CTurbSSTSolver.cpp']) + 'solvers/CTurbSSTSolver.cpp', + 'solvers/CGradientSmoothingSolver.cpp']) su2_cfd_src += files(['numerics/CNumerics.cpp', 'numerics/template.cpp', @@ -142,7 +144,8 @@ su2_cfd_src += files(['numerics/CNumerics.cpp', 'numerics/elasticity/CFEAElasticity.cpp', 'numerics/elasticity/CFEALinearElasticity.cpp', 'numerics/elasticity/CFEANonlinearElasticity.cpp', - 'numerics/elasticity/nonlinear_models.cpp']) + 'numerics/elasticity/nonlinear_models.cpp', + 'numerics/CGradSmoothing.cpp']) su2_cfd_src += files(['../include/numerics_simd/CNumericsSIMD.cpp']) diff --git a/SU2_DOT/src/meson.build b/SU2_DOT/src/meson.build index 4ae1befe200c..102a53465757 100644 --- a/SU2_DOT/src/meson.build +++ b/SU2_DOT/src/meson.build @@ -1,84 +1,21 @@ su2_dot_src = ['SU2_DOT.cpp'] -su2_dot_src += files(['../../SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp', - '../../SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp', - '../../SU2_CFD/src/numerics/CGradSmoothing.cpp']) - if get_option('enable-normal') - su2_cfd_obj = su2_cfd_lib.extract_objects(['solvers/CSolver.cpp', - 'solvers/CBaselineSolver.cpp', - 'CMarkerProfileReaderFVM.cpp', - 'output/COutput.cpp', - 'output/tools/CWindowingTools.cpp', - 'output/output_structure_legacy.cpp', - 'output/CBaselineOutput.cpp', - 'output/filewriter/CParallelDataSorter.cpp', - 'output/filewriter/CParallelFileWriter.cpp', - 'output/filewriter/CFEMDataSorter.cpp', - 'output/filewriter/CSurfaceFEMDataSorter.cpp', - 'output/filewriter/CFVMDataSorter.cpp', - 'output/filewriter/CSurfaceFVMDataSorter.cpp', - 'output/filewriter/CCSVFileWriter.cpp', - 'output/filewriter/CSTLFileWriter.cpp', - 'output/filewriter/CTecplotFileWriter.cpp', - 'output/filewriter/CTecplotBinaryFileWriter.cpp', - 'output/filewriter/CParaviewFileWriter.cpp', - 'output/filewriter/CParaviewBinaryFileWriter.cpp', - 'output/filewriter/CSU2FileWriter.cpp', - 'output/filewriter/CSU2BinaryFileWriter.cpp', - 'output/filewriter/CSU2MeshFileWriter.cpp', - 'output/filewriter/CParaviewXMLFileWriter.cpp', - 'output/filewriter/CParaviewVTMFileWriter.cpp', - 'output/filewriter/CCGNSFileWriter.cpp', - 'variables/CBaselineVariable.cpp', - 'variables/CVariable.cpp', - 'limiters/CLimiterDetails.cpp', - 'numerics/CNumerics.cpp']) + su2_dot = executable('SU2_DOT', su2_dot_src, install: true, - dependencies: [su2_deps, common_dep], - objects : su2_cfd_obj, + dependencies: [su2_deps, common_dep, su2_cfd_dep], cpp_args :[default_warning_flags, su2_cpp_args]) endif if get_option('enable-autodiff') - su2_cfd_obj_ad = su2_cfd_lib_ad.extract_objects(['solvers/CSolver.cpp', - 'solvers/CBaselineSolver.cpp', - 'CMarkerProfileReaderFVM.cpp', - 'output/COutput.cpp', - 'output/tools/CWindowingTools.cpp', - 'output/output_structure_legacy.cpp', - 'output/CBaselineOutput.cpp', - 'output/filewriter/CParallelDataSorter.cpp', - 'output/filewriter/CParallelFileWriter.cpp', - 'output/filewriter/CFEMDataSorter.cpp', - 'output/filewriter/CSurfaceFEMDataSorter.cpp', - 'output/filewriter/CFVMDataSorter.cpp', - 'output/filewriter/CSurfaceFVMDataSorter.cpp', - 'output/filewriter/CCSVFileWriter.cpp', - 'output/filewriter/CSTLFileWriter.cpp', - 'output/filewriter/CTecplotFileWriter.cpp', - 'output/filewriter/CTecplotBinaryFileWriter.cpp', - 'output/filewriter/CParaviewFileWriter.cpp', - 'output/filewriter/CParaviewBinaryFileWriter.cpp', - 'output/filewriter/CSU2FileWriter.cpp', - 'output/filewriter/CSU2BinaryFileWriter.cpp', - 'output/filewriter/CSU2MeshFileWriter.cpp', - 'output/filewriter/CParaviewXMLFileWriter.cpp', - 'output/filewriter/CParaviewVTMFileWriter.cpp', - 'output/filewriter/CCGNSFileWriter.cpp', - 'variables/CBaselineVariable.cpp', - 'variables/CVariable.cpp', - 'limiters/CLimiterDetails.cpp', - 'numerics/CNumerics.cpp']) su2_dot_ad = executable('SU2_DOT_AD', su2_dot_src, install: true, - dependencies: [su2_deps, codi_dep, commonAD_dep], - objects : su2_cfd_obj_ad, - cpp_args : [default_warning_flags, su2_cpp_args, codi_rev_args]) + dependencies: [su2_deps, codi_dep, commonAD_dep, su2_cfd_dep_ad], + cpp_args : [default_warning_flags, su2_cpp_args, codi_rev_args]) endif From 02de958ea96dcdb3e361010bf548c11c91630fe9 Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Mon, 13 Dec 2021 18:01:55 +0100 Subject: [PATCH 16/26] Apply suggestions from code review --- Common/include/CConfig.hpp | 66 ++--- Common/include/geometry/elements/CElement.hpp | 52 ++-- Common/include/option_structure.hpp | 20 +- Common/src/CConfig.cpp | 9 +- Common/src/geometry/elements/CTETRA4.cpp | 4 +- Common/src/geometry/elements/CTRIA3.cpp | 2 +- SU2_CFD/include/numerics/CGradSmoothing.hpp | 16 +- .../solvers/CGradientSmoothingSolver.hpp | 101 +++----- SU2_CFD/include/solvers/CSolver.hpp | 21 +- .../variables/CSobolevSmoothingVariable.hpp | 30 +-- SU2_CFD/include/variables/CVariable.hpp | 6 +- SU2_CFD/src/numerics/CGradSmoothing.cpp | 55 +--- .../src/solvers/CGradientSmoothingSolver.cpp | 243 +++++++----------- .../variables/CSobolevSmoothingVariable.cpp | 26 +- SU2_DOT/src/SU2_DOT.cpp | 16 +- 15 files changed, 245 insertions(+), 422 deletions(-) diff --git a/Common/include/CConfig.hpp b/Common/include/CConfig.hpp index 249f1b16b137..cf5f73d34f8e 100644 --- a/Common/include/CConfig.hpp +++ b/Common/include/CConfig.hpp @@ -438,18 +438,18 @@ class CConfig { Unst_CFL; /*!< \brief Unsteady CFL number. */ /* Gradient smoothing options */ - bool SmoothGradient; /*!< \brief Flag for enabling gradient smoothing. */ - su2double SmoothingEps1; /*!< \brief Parameter for the identity part in gradient smoothing. */ - su2double SmoothingEps2; /*!< \brief Parameter for the Laplace part in gradient smoothing. */ - bool SepDim; /*!< \brief Flag for enabling separated calculation for every dimension. */ - bool SmoothOnSurface; /*!< \brief Flag for assembling the system only on the surface. */ - bool DirichletSurfaceBound; /*!< \brief Flag for using zero Dirichlet boundary in the surface case. */ - unsigned short NumMode; /*!< \brief temporary flag for some debuging stuff */ + su2double SmoothingEps1; /*!< \brief Parameter for the identity part in gradient smoothing. */ + su2double SmoothingEps2; /*!< \brief Parameter for the Laplace part in gradient smoothing. */ + bool SmoothGradient; /*!< \brief Flag for enabling gradient smoothing. */ + bool SmoothSepDim; /*!< \brief Flag for enabling separated calculation for every dimension. */ + bool SmoothOnSurface; /*!< \brief Flag for assembling the system only on the surface. */ + bool SmoothDirichletSurfaceBound; /*!< \brief Flag for using zero Dirichlet boundary in the surface case. */ + unsigned short SmoothNumMode; /*!< \brief temporary flag for some debuging stuff */ unsigned short Kind_Grad_Linear_Solver, /*!< Numerical method to smooth the gradient */ Kind_Grad_Linear_Solver_Prec; /*!< \brief Preconditioner of the linear solver. */ - su2double Grad_Linear_Solver_Error; /*!< \brief Min error of the linear solver for the gradient smoothing. */ - unsigned long Grad_Linear_Solver_Iter; /*!< \brief Max iterations of the linear solver for the gradient smoothing. */ + su2double Grad_Linear_Solver_Error; /*!< \brief Min error of the linear solver for the gradient smoothing. */ + unsigned long Grad_Linear_Solver_Iter; /*!< \brief Max iterations of the linear solver for the gradient smoothing. */ bool ReorientElements; /*!< \brief Flag for enabling element reorientation. */ bool AddIndNeighbor; /*!< \brief Include indirect neighbor in the agglomeration process. */ @@ -2820,12 +2820,12 @@ class CConfig { * \brief Get the total number of design variables. */ unsigned short GetnDV_Total(void) const { - if(!nDV_Value) return 0; - unsigned short sum=0; - for (unsigned short iDV=0; iDV + inline void Add_DHiDHj(const MatrixType& val, unsigned short nodeA, unsigned short nodeB) { + unsigned short iDim, jDim; + for (iDim = 0; iDim < nDim; iDim++) { + for (jDim = 0; jDim < nDim; jDim++) { + DHiDHj[nodeA][nodeB][iDim][jDim] += val[iDim][jDim]; + } + } + } /*! * \brief Add the transposed scalar product of the gradients of shape functions to the tangent matrix. @@ -524,14 +525,15 @@ class CElement { * \param[in] nodeB - index of Node b. * \param[in] val - value of the term that will contribute. */ - inline void Add_DHiDHj_T(su2double **val, unsigned short nodeA, unsigned short nodeB) { - unsigned short iDim, jDim; - for(iDim = 0; iDim < nDim; iDim++) { - for (jDim = 0; jDim < nDim; jDim++) { - DHiDHj[nodeA][nodeB][iDim][jDim] += val[jDim][iDim]; - } - } - } + template + inline void Add_DHiDHj_T(const MatrixType& val, unsigned short nodeA, unsigned short nodeB) { + unsigned short iDim, jDim; + for (iDim = 0; iDim < nDim; iDim++) { + for (jDim = 0; jDim < nDim; jDim++) { + DHiDHj[nodeA][nodeB][iDim][jDim] += val[jDim][iDim]; + } + } + } /*! * \brief Get the scalar product of the shape functions to the tangent matrix. @@ -671,14 +673,12 @@ class CElementWithKnownSizes : public CElement { template void ComputeGrad_impl_surf_embedded() { - unsigned short iNode, iDim, iGauss; - /*--- Select the appropriate source for the nodal coordinates depending on the frame requested for the gradient computation, REFERENCE (undeformed) or CURRENT (deformed) ---*/ const su2activematrix& Coord = (FRAME==REFERENCE) ? RefCoord : CurrentCoord; if (NDIM==1) { - + unsigned short iNode, iDim, iGauss; su2double Jacobian[2]; su2double val_grad; diff --git a/Common/include/option_structure.hpp b/Common/include/option_structure.hpp index 12fba8f4aa8a..85134a1ebe7b 100644 --- a/Common/include/option_structure.hpp +++ b/Common/include/option_structure.hpp @@ -2336,19 +2336,17 @@ enum class LINEAR_SOLVER_MODE { * \brief mode of operation for the sobolev smoothing solver. */ enum ENUM_SOBOLEV_MODUS { - NO_MODUS = 0, /*!< \brief Default option if none is choosen. */ - PARAM_LEVEL_COMPLETE = 1, /*!< \brief Operate on parameter level. */ - MESH_LEVEL = 2, /*!< \brief Operate on mesh level. */ - DEBUG = 3, /*!< \brief Special flag for debugging. */ - ONLY_GRAD = 4, /*!< \brief Flag for OneShot to only compute the original gradient. */ + NO_MODUS, /*!< \brief Default option if none is choosen. */ + PARAM_LEVEL_COMPLETE, /*!< \brief Operate on parameter level. */ + MESH_LEVEL, /*!< \brief Operate on mesh level. */ + DEBUG, /*!< \brief Special flag for debugging. */ + ONLY_GRAD, /*!< \brief Flag for OneShot to only compute the original gradient. */ }; static const MapType Sobolev_Modus_Map = { - MakePair("NONE", NO_MODUS) - MakePair("PARAM_LEVEL_COMPLETE" , PARAM_LEVEL_COMPLETE) - MakePair("MESH_LEVEL" , MESH_LEVEL) - MakePair("DEBUG" , DEBUG) - MakePair("ONLY_GRADIENT" , ONLY_GRAD) -}; + MakePair("NONE", ENUM_SOBOLEV_MODUS::NO_MODUS) + MakePair("PARAM_LEVEL_COMPLETE", ENUM_SOBOLEV_MODUS::PARAM_LEVEL_COMPLETE) + MakePair("MESH_LEVEL", ENUM_SOBOLEV_MODUS::MESH_LEVEL) MakePair("DEBUG", ENUM_SOBOLEV_MODUS::DEBUG) + MakePair("ONLY_GRADIENT", ENUM_SOBOLEV_MODUS::ONLY_GRAD)}; #undef MakePair /* END_CONFIG_ENUMS */ diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index 61f44cdfa204..623f54874a09 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -2005,13 +2005,13 @@ void CConfig::SetConfig_Options() { /* DESCRIPTION: Epsilon of the Laplace term in the Laplace Beltrami Operator */ addDoubleOption("SMOOTHING_EPSILON2",SmoothingEps2, 1.0); /* DESCRIPTION: Switch to calculate for each dimension separately */ - addBoolOption("SEPARATE_DIMENSIONS",SepDim, false); + addBoolOption("SEPARATE_DIMENSIONS", SmoothSepDim, false); /* DESCRIPTION: Switch to activate working on the design surfaces only */ addBoolOption("SMOOTH_ON_SURFACE",SmoothOnSurface, false); /* DESCRIPTION: Switch to activate zero Dirichlet boundary for surface mode */ - addBoolOption("DIRICHLET_SURFACE_BOUNDARY",DirichletSurfaceBound, false); + addBoolOption("DIRICHLET_SURFACE_BOUNDARY", SmoothDirichletSurfaceBound, false); /* DESCRIPTION: Switch to activate the debbuging modus */ - addEnumOption("SOBOLEV_MODE",NumMode, Sobolev_Modus_Map,NO_MODUS); + addEnumOption("SOBOLEV_MODE", SmoothNumMode, Sobolev_Modus_Map, ENUM_SOBOLEV_MODUS::NO_MODUS); /*!\brief HESS_OBJFUNC_FILENAME * \n DESCRIPTION: Output filename for the Sobolev Hessian approximation. \ingroup Config*/ addStringOption("HESS_OBJFUNC_FILENAME", ObjFunc_Hess_FileName, string("of_hess.dat")); @@ -8738,9 +8738,6 @@ bool CConfig::GetVolumetric_Movement() const { DirectDiff) { volumetric_movement = true;} - if (GetSmoothGradient()) - { volumetric_movement=true; } - return volumetric_movement; } diff --git a/Common/src/geometry/elements/CTETRA4.cpp b/Common/src/geometry/elements/CTETRA4.cpp index f28062307b01..38787745fd70 100644 --- a/Common/src/geometry/elements/CTETRA4.cpp +++ b/Common/src/geometry/elements/CTETRA4.cpp @@ -65,7 +65,7 @@ CTETRA4::CTETRA4() : CElementWithKnownSizes() { } /*--- Shape functions evaluated at the nodes for extrapolation of the stresses at the Gaussian Points ---*/ - /*--- The stress is constant at a TETRA1 element ---*/ + /*--- TODO: Use correct extrapolation, currently assumes stress is constant similar to TETRA1 element ---*/ NodalExtrap[0][0] = 1.0; NodalExtrap[1][0] = 1.0; @@ -84,7 +84,7 @@ su2double CTETRA4::ComputeVolume(const FrameType mode) const { for the gradient computation, REFERENCE (undeformed) or CURRENT (deformed)---*/ const su2activematrix& Coord = (mode==REFERENCE) ? RefCoord : CurrentCoord; - for (iDim = 0; iDim < nDim; iDim++) { + for (iDim = 0; iDim < NDIM; iDim++) { r1[iDim] = Coord[1][iDim] - Coord[0][iDim]; r2[iDim] = Coord[2][iDim] - Coord[0][iDim]; r3[iDim] = Coord[3][iDim] - Coord[0][iDim]; diff --git a/Common/src/geometry/elements/CTRIA3.cpp b/Common/src/geometry/elements/CTRIA3.cpp index 3106c3c8ca8b..d47f09d33723 100644 --- a/Common/src/geometry/elements/CTRIA3.cpp +++ b/Common/src/geometry/elements/CTRIA3.cpp @@ -76,7 +76,7 @@ su2double CTRIA3::ComputeArea(const FrameType mode) const { for the gradient computation, REFERENCE (undeformed) or CURRENT (deformed) ---*/ const su2activematrix& Coord = (mode==REFERENCE) ? RefCoord : CurrentCoord; - for (iDim = 0; iDim < nDim; iDim++) { + for (iDim = 0; iDim < NDIM; iDim++) { a[iDim] = Coord[0][iDim]-Coord[2][iDim]; b[iDim] = Coord[1][iDim]-Coord[2][iDim]; } diff --git a/SU2_CFD/include/numerics/CGradSmoothing.hpp b/SU2_CFD/include/numerics/CGradSmoothing.hpp index 4824d94140f0..7eb0bcfac902 100644 --- a/SU2_CFD/include/numerics/CGradSmoothing.hpp +++ b/SU2_CFD/include/numerics/CGradSmoothing.hpp @@ -37,16 +37,14 @@ * \author T. Dick */ class CGradSmoothing : public CNumerics { + su2activematrix val_DHiDHj; + su2activevector Ni_Vec; - su2double **val_DHiDHj; - su2double *Ni_Vec; - -public: - + public: /*! - * \brief Constructor of the class. + * \brief Default constructor */ - CGradSmoothing(void); + CGradSmoothing() = delete; /*! * \brief Constructor of the class (overload). @@ -54,12 +52,12 @@ class CGradSmoothing : public CNumerics { * \param[in] val_nVar - Number of variables of the problem. * \param[in] config - Definition of the particular problem. */ - CGradSmoothing(unsigned short val_nDim, CConfig *config); + CGradSmoothing(unsigned short val_nDim, const CConfig* config); /*! * \brief Destructor of the class. */ - ~CGradSmoothing(void); + ~CGradSmoothing(); void Compute_Tangent_Matrix(CElement *element_container, const CConfig *config); diff --git a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp index 282c4a364a07..56c9cf9be873 100644 --- a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp +++ b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp @@ -32,18 +32,6 @@ #include "../../../Common/include/toolboxes/CSquareMatrixCM.hpp" #include "../../../SU2_CFD/include/solvers/CSolver.hpp" -/** Introduction of a new data type to allow compilation with forward mode. - * - * This is done for compatibility to the treatment of Jacobian and System in CSolver.hpp. - * Note that the compuations done dere are always 'passive', i.e. not intended to be differentiated. We only need to define functions depending on this once. - * Move to Common/include/basic_types later if possible. - */ -#ifndef CODI_FORWARD_TYPE - using su2matvecscalar = su2mixedfloat; -#else - using su2matvecscalar = su2double; -#endif - /*! \class CGradientSmoothingSolver * \brief Main class for defining a gradient smoothing. * \author T. Dick. @@ -55,17 +43,26 @@ class CGradientSmoothingSolver : public CSolver { enum : size_t {MAXNNODE_3D = 8}; enum : size_t {MAXNDIM = 3}; - unsigned long nElement; +/** Introduction of a new alias for the data type to allow compilation with forward mode. + * + * This is done for compatibility to the treatment of Jacobian and System in CSolver.hpp. + * Note that the computations done here are always 'passive', i.e. not intended to be differentiated. We only need to + * define functions depending on this once. + */ +#ifndef CODI_FORWARD_TYPE + typedef su2mixedfloat su2matvecscalar; +#else + typedef su2double su2matvecscalar; +#endif + using MatrixType = C2DContainer; + private: + unsigned long nElement; CElement*** element_container = nullptr; /*!< \brief Container which stores the element information. */ - su2double **Jacobian_block = nullptr; /*!< \brief Submatrix to assemble the Jacobian matrix. */ - su2double **mId_Aux = nullptr; /*!< \brief Diagonal identity matrix to set blocks in the Jacobian. */ - unsigned int dir; /*!< \brief If we separate dimensions this tells us in what dimension we currently are. */ CSysVector auxVec; /*!< \brief Auxiliar vectors for output and debugging */ - CSysVector activeCoord; /*!< \brief Auxiliar vector to keep the indeces of geometry->vertex->Coord */ CSysVector helperVecIn; /*!< \brief Helper vectors for projection and matrix vector product (must be su2mixedfloat) */ @@ -86,6 +83,7 @@ class CGradientSmoothingSolver : public CSolver { */ inline CVariable* GetBaseClassPointerToNodes() override { return nodes; } + public: /*! * \brief Constructor of the class. */ @@ -100,17 +98,13 @@ class CGradientSmoothingSolver : public CSolver { /*! * \brief Main routine for applying the solver on the volume sensitivities */ - void ApplyGradientSmoothingVolume(CGeometry *geometry, - CNumerics *numerics, - CConfig *config) override; + void ApplyGradientSmoothingVolume(CGeometry* geometry, CNumerics* numerics, const CConfig* config) override; /*! * \brief Main routine to apply the method only on the surface for mesh sensitivities * Projects and smoothes only in the normal direction! */ - void ApplyGradientSmoothingSurface(CGeometry *geometry, - CNumerics *numerics, - CConfig *config, + void ApplyGradientSmoothingSurface(CGeometry* geometry, CNumerics* numerics, const CConfig* config, unsigned long val_marker) override; /*! @@ -127,65 +121,51 @@ class CGradientSmoothingSolver : public CSolver { /*! * \brief Assemble the stiffness matrix */ - void Compute_StiffMatrix(CGeometry *geometry, - CNumerics *numerics, - CConfig *config); + void Compute_StiffMatrix(CGeometry* geometry, CNumerics* numerics, const CConfig* config); /*! * \brief Compute the stiffness matrix of the surface mesh */ - void Compute_Surface_StiffMatrix(CGeometry *geometry, - CNumerics *numerics, - CConfig *config, - unsigned long val_marker, - unsigned int nSurfDim=1); + void Compute_Surface_StiffMatrix(CGeometry* geometry, CNumerics* numerics, const CConfig* config, + unsigned long val_marker, unsigned int nSurfDim = 1); /*! * \brief Calculate the RHS of the PDE */ - void Compute_Residual(CGeometry *geometry, - CConfig *config); + void Compute_Residual(CGeometry* geometry, const CConfig* config); /*! * \brief Compute the RHS of the PDE on the surface mesh */ - void Compute_Surface_Residual(CGeometry *geometry, - CConfig *config, - unsigned long val_marker); + void Compute_Surface_Residual(CGeometry* geometry, const CConfig* config, unsigned long val_marker); /*! * \brief Set the boundary conditions */ - void Impose_BC(CGeometry *geometry, - CConfig *config); + void Impose_BC(CGeometry* geometry, const CConfig* config); /*! * \brief Set Dirichlet boundary conditions */ - void BC_Dirichlet(CGeometry *geometry, - CConfig *config, - unsigned int val_marker); + void BC_Dirichlet(CGeometry* geometry, const CConfig* config, unsigned int val_marker); /*! * \brief Set Dirichlet boundary conditions for the surface solver */ - void BC_Surface_Dirichlet(CGeometry *geometry, - CConfig *config, - unsigned int val_marker); + void BC_Surface_Dirichlet(CGeometry* geometry, const CConfig* config, unsigned int val_marker); /*! * \brief Call the linear systems solver */ - void Solve_Linear_System(CGeometry *geometry, - CConfig *config); + void Solve_Linear_System(CGeometry* geometry, const CConfig* config); /*! * \brief Get the matrix vector product with the StiffnessMatrix * \note This always applies the stiffness matrix for all dimensions independent of each other! */ - CSysMatrixVectorProduct GetStiffnessMatrixVectorProduct(CGeometry *geometry, - CNumerics *numerics, - CConfig *config); + template + CSysMatrixVectorProduct GetStiffnessMatrixVectorProduct(CGeometry* geometry, CNumerics* numerics, + const CConfig* config); /*! * \brief calculate the original DV gradient similar to SU2_DOT_AD @@ -207,7 +187,7 @@ class CGradientSmoothingSolver : public CSolver { /*! * \brief Return current parameter gradient. */ - inline vector GetDeltaP() override { return deltaP; } + inline const vector& GetDeltaP() const { return deltaP; } /*! * \brief write the DV gradient into a file @@ -259,39 +239,31 @@ class CGradientSmoothingSolver : public CSolver { /*! * \brief Write the solution of the linear solver into the sensitivities of the nodes */ - void WriteSensitivity(CGeometry *geometry, - CConfig *config, - unsigned long val_marker=0); + void WriteSensitivity(CGeometry* geometry, const CConfig* config, unsigned long val_marker = 0); /*! * \brief Write the content of sensitivity in the nodes to the sensitivity in the geometry * \param[in] geometry - Geometrical definition of the problem. * \param[in] config - Definition of the particular problem. */ - void WriteSens2Geometry(CGeometry *geometry, - CConfig *config); + void WriteSens2Geometry(CGeometry* geometry, const CConfig* config); /*! * \brief Read the sensitivity for the geometry into the nodes * \param[in] geometry - Geometrical definition of the problem. * \param[in] config - Definition of the particular problem. */ - void ReadSens2Geometry(CGeometry *geometry, - CConfig *config); + void ReadSens2Geometry(CGeometry* geometry, const CConfig* config); /*! * \brief Copy sensitivities from a vector into the geometry */ - void WriteVector2Geometry(CGeometry *geometry, - CConfig *config, - CSysVector &vector); + void WriteVector2Geometry(CGeometry* geometry, const CConfig* config, CSysVector& vector); /*! * \brief Copy sensitivities from the geometry into a vector */ - void ReadVector2Geometry(CGeometry *geometry, - CConfig *config, - CSysVector &vector); + void ReadVector2Geometry(CGeometry* geometry, const CConfig* config, CSysVector& vector); /*! * \brief Get the value of the reference coordinate to set on the element structure. @@ -315,8 +287,7 @@ class CGradientSmoothingSolver : public CSolver { /*! * \brief Extra entries to eliminate in the linear system */ - void Set_VertexEliminationSchedule(CGeometry *geometry, - CConfig *config); + void Set_VertexEliminationSchedule(CGeometry* geometry, const CConfig* config); /*! * \brief Get the element container index and number of nodes of a given VTK type. diff --git a/SU2_CFD/include/solvers/CSolver.hpp b/SU2_CFD/include/solvers/CSolver.hpp index 87b7a7491215..95bdc7dc4aca 100644 --- a/SU2_CFD/include/solvers/CSolver.hpp +++ b/SU2_CFD/include/solvers/CSolver.hpp @@ -4163,9 +4163,7 @@ class CSolver { * \param[in] numerics - the numerics for this problem. * \param[in] config - Definition of the particular problem. */ - virtual void ApplyGradientSmoothingVolume(CGeometry *geometry, - CNumerics *numerics, - CConfig *config) { } + virtual void ApplyGradientSmoothingVolume(CGeometry* geometry, CNumerics* numerics, const CConfig* config) {} /*! * \brief A virtual member. @@ -4175,10 +4173,8 @@ class CSolver { * \param[in] config - Definition of the particular problem. * */ - virtual void ApplyGradientSmoothingSurface(CGeometry *geometry, - CNumerics *numerics, - CConfig *config, - unsigned long val_marker) { } + virtual void ApplyGradientSmoothingSurface(CGeometry* geometry, CNumerics* numerics, const CConfig* config, + unsigned long val_marker) {} /*! * \brief All steps required for smoothing the whole system on DV level in an iterative way @@ -4206,21 +4202,14 @@ class CSolver { * \param[in] geometry - Geometrical definition of the problem. * \param[in] config - Definition of the particular problem. */ - virtual void ReadSens2Geometry(CGeometry *geometry, - CConfig *config) { } + virtual void ReadSens2Geometry(CGeometry* geometry, const CConfig* config) {} /*! * \brief A virtual member. * \param[in] geometry - Geometrical definition of the problem. * \param[in] config - Definition of the particular problem. */ - virtual void WriteSens2Geometry(CGeometry *geometry, - CConfig *config) { } - - /*! - * \brief A virtual member. - */ - inline virtual vector GetDeltaP() { return vector(); } + virtual void WriteSens2Geometry(CGeometry* geometry, const CConfig* config) {} /*! * \brief Routine that sets the flag controlling implicit treatment for periodic BCs. diff --git a/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp b/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp index e4c166f85cc1..8b89adbd1249 100644 --- a/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp +++ b/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp @@ -4,22 +4,12 @@ * \author T.Dick * \version 7.2.1 "Blackbird" * - * The current SU2 release has been coordinated by the - * SU2 International Developers Society - * with selected contributions from the open-source community. + * SU2 Project Website: https://su2code.github.io * - * The main research teams contributing to the current release are: - * - Prof. Juan J. Alonso's group at Stanford University. - * - Prof. Piero Colonna's group at Delft University of Technology. - * - Prof. Nicolas R. Gauger's group at Kaiserslautern University of Technology. - * - Prof. Alberto Guardone's group at Polytechnic University of Milan. - * - Prof. Rafael Palacios' group at Imperial College London. - * - Prof. Vincent Terrapon's group at the University of Liege. - * - Prof. Edwin van der Weide's group at the University of Twente. - * - Lab. of New Concepts in Aeronautics at Tech. Institute of Aeronautics. + * The SU2 Project is maintained by the SU2 Foundation + * (http://su2foundation.org) * - * Copyright 2012-2019, Francisco D. Palacios, Thomas D. Economon, - * Tim Albring, and the SU2 contributors. + * Copyright 2012-2021, SU2 Contributors (cf. AUTHORS.md) * * SU2 is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -39,9 +29,8 @@ #include "../../../SU2_CFD/include/variables/CVariable.hpp" -class CSobolevSmoothingVariable : public CVariable { -public: - +class CSobolevSmoothingVariable final : public CVariable { + public: MatrixType Sensitivity; /*!< Vector holding the derivative of target functional with respect to the coordinates at this node */ bool* boundary_vertex; /*!< \brief Stores if a point belongs to the boundary of a boundary. */ @@ -77,16 +66,15 @@ class CSobolevSmoothingVariable : public CVariable { /*! * \brief Mark a point as boundary of a boundary */ - void MarkAsBoundaryPoint(unsigned long iPoint); + void MarkAsBoundaryPoint(unsigned long iPoint) override; /*! * \brief return wether a point is a boundary of a boundary */ - bool IsBoundaryPoint(unsigned long iPoint); + bool GetIsBoundaryPoint(unsigned long iPoint) const override; /*! * \brief return the number of marked points */ - unsigned int GetNBoundPoints(); - + unsigned int GetNBoundPoints() const override; }; diff --git a/SU2_CFD/include/variables/CVariable.hpp b/SU2_CFD/include/variables/CVariable.hpp index 2c7922ba0662..05a35105a234 100644 --- a/SU2_CFD/include/variables/CVariable.hpp +++ b/SU2_CFD/include/variables/CVariable.hpp @@ -2250,6 +2250,10 @@ class CVariable { /*! * \brief return wether a point is a boundary of a design surface boundary */ - virtual bool IsBoundaryPoint(unsigned long iPoint) { return false;} + virtual bool GetIsBoundaryPoint(unsigned long iPoint) const { return false; } + /*! + * \brief return the number of boundary points of a design surface boundary + */ + virtual unsigned int GetNBoundPoints() const { return 0; }; }; diff --git a/SU2_CFD/src/numerics/CGradSmoothing.cpp b/SU2_CFD/src/numerics/CGradSmoothing.cpp index d243a2e4a3f2..d59ea40cccb1 100644 --- a/SU2_CFD/src/numerics/CGradSmoothing.cpp +++ b/SU2_CFD/src/numerics/CGradSmoothing.cpp @@ -4,22 +4,12 @@ * \author T.Dick * \version 7.2.1 "Blackbird" * - * The current SU2 release has been coordinated by the - * SU2 International Developers Society - * with selected contributions from the open-source community. + * SU2 Project Website: https://su2code.github.io * - * The main research teams contributing to the current release are: - * - Prof. Juan J. Alonso's group at Stanford University. - * - Prof. Piero Colonna's group at Delft University of Technology. - * - Prof. Nicolas R. Gauger's group at Kaiserslautern University of Technology. - * - Prof. Alberto Guardone's group at Polytechnic University of Milan. - * - Prof. Rafael Palacios' group at Imperial College London. - * - Prof. Vincent Terrapon's group at the University of Liege. - * - Prof. Edwin van der Weide's group at the University of Twente. - * - Lab. of New Concepts in Aeronautics at Tech. Institute of Aeronautics. + * The SU2 Project is maintained by the SU2 Foundation + * (http://su2foundation.org) * - * Copyright 2012-2019, Francisco D. Palacios, Thomas D. Economon, - * Tim Albring, and the SU2 contributors. + * Copyright 2012-2021, SU2 Contributors (cf. AUTHORS.md) * * SU2 is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -39,41 +29,16 @@ #include -CGradSmoothing::CGradSmoothing(void) : CNumerics () { - - val_DHiDHj = NULL; - Ni_Vec = NULL; - -} - -CGradSmoothing::CGradSmoothing(unsigned short val_nDim, CConfig *config) - : CNumerics(val_nDim, val_nDim, config) { - - unsigned short iDim; +CGradSmoothing::CGradSmoothing(unsigned short val_nDim, const CConfig* config) : CNumerics(val_nDim, val_nDim, config) { + val_DHiDHj.resize(nDim, nDim); + val_DHiDHj.setConstant(0.0); /*--- 8 is the max number of nodes in 3D ---*/ - val_DHiDHj = new su2double* [nDim]; - for (iDim=0; iDim - * with selected contributions from the open-source community. + * SU2 Project Website: https://su2code.github.io * - * The main research teams contributing to the current release are: - * - Prof. Juan J. Alonso's group at Stanford University. - * - Prof. Piero Colonna's group at Delft University of Technology. - * - Prof. Nicolas R. Gauger's group at Kaiserslautern University of Technology. - * - Prof. Alberto Guardone's group at Polytechnic University of Milan. - * - Prof. Rafael Palacios' group at Imperial College London. - * - Prof. Vincent Terrapon's group at the University of Liege. - * - Prof. Edwin van der Weide's group at the University of Twente. - * - Lab. of New Concepts in Aeronautics at Tech. Institute of Aeronautics. + * The SU2 Project is maintained by the SU2 Foundation + * (http://su2foundation.org) * - * Copyright 2012-2019, Francisco D. Palacios, Thomas D. Economon, - * Tim Albring, and the SU2 contributors. + * Copyright 2012-2021, SU2 Contributors (cf. AUTHORS.md) * * SU2 is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -42,8 +32,7 @@ #include CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig *config) : CSolver(LINEAR_SOLVER_MODE::GRADIENT_MODE) { - - unsigned int iDim, jDim, marker_count=0; + unsigned int iDim, marker_count = 0; unsigned long iPoint; /*--- This solver does not perform recording operations --*/ @@ -93,31 +82,15 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig Residual = new su2double[nDim]; for (iDim = 0; iDim < nDim; iDim++) Residual[iDim] = 0.0; Solution = new su2double[nDim]; for (iDim = 0; iDim < nDim; iDim++) Solution[iDim] = 0.0; - mId_Aux = new su2double *[nDim]; - for(iDim = 0; iDim < nDim; iDim++){ - mId_Aux[iDim] = new su2double[nDim]; - } - for(iDim = 0; iDim < nDim; iDim++){ - for (jDim = 0; jDim < nDim; jDim++){ - mId_Aux[iDim][jDim] = 0.0; - } - mId_Aux[iDim][iDim] = 1.0; - } /*--- initializations for linear equation systems ---*/ if ( !config->GetSmoothOnSurface() ) { - if ( config->GetSepDim() ) { - LinSysSol.Initialize(nPoint, nPointDomain, 1, 0.0); - LinSysRes.Initialize(nPoint, nPointDomain, 1, 0.0); - Jacobian.Initialize(nPoint, nPointDomain, 1, 1, false, geometry, config, false, true); - } else { - LinSysSol.Initialize(nPoint, nPointDomain, nDim, 0.0); - LinSysRes.Initialize(nPoint, nPointDomain, nDim, 0.0); - Jacobian.Initialize(nPoint, nPointDomain, nDim, nDim, false, geometry, config, false, true); - } - + nVar = config->GetSmoothSepDim() ? 1 : nDim; + LinSysSol.Initialize(nPoint, nPointDomain, nVar, 0.0); + LinSysRes.Initialize(nPoint, nPointDomain, nVar, 0.0); + Jacobian.Initialize(nPoint, nPointDomain, nVar, nVar, false, geometry, config, false, true); } else { - if (config->GetSobMode() == PARAM_LEVEL_COMPLETE) { + if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::PARAM_LEVEL_COMPLETE) { Jacobian.Initialize(nPoint, nPointDomain, nDim, nDim, false, geometry, config, false , true); } else { LinSysSol.Initialize(nPoint, nPointDomain, 1, 0.0); @@ -127,7 +100,7 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig } /*--- initializations for the debug mode ---*/ - if (config->GetSobMode()==DEBUG) { + if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::DEBUG) { auxVec.Initialize(nPoint, nPointDomain, nDim, 1.0); } @@ -161,19 +134,8 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig } } - /*--- Initialize ij-block for the Jacobian ---*/ - Jacobian_block = new su2double*[nDim]; - for (iDim = 0; iDim < nDim; iDim++) { - Jacobian_block[iDim] = new su2double [nDim]; - for (jDim = 0; jDim < nDim; jDim++) { - Jacobian_block[iDim][jDim] = 0.0; - } - } - /*--- vector for the parameter gradient ---*/ - for (auto iDV=0; iDVGetnDV_Total(); iDV++) { - deltaP.push_back(0.0); - } + deltaP.resize(config->GetnDV_Total(), 0.0); /*--- set the solver name for output purposes ---*/ SolverName = "SOBOLEV"; @@ -181,8 +143,6 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig CGradientSmoothingSolver::~CGradientSmoothingSolver(void) { - unsigned int iDim; - if (element_container != nullptr) { for (unsigned int iVar = 0; iVar < MAX_TERMS; iVar++) { for (unsigned int jVar = 0; jVar < MAX_FE_KINDS; jVar++) { @@ -193,24 +153,12 @@ CGradientSmoothingSolver::~CGradientSmoothingSolver(void) { delete [] element_container; } - if (Jacobian_block != nullptr) { - for (iDim = 0; iDim < nDim; ++iDim) { - delete [] Jacobian_block[iDim]; - } - delete [] Jacobian_block; - } - - for (iDim = 0; iDim < nDim; iDim++) { - if (mId_Aux[iDim] != nullptr) delete [] mId_Aux[iDim]; - } - if (mId_Aux != nullptr) delete [] mId_Aux; - delete nodes; } -void CGradientSmoothingSolver::ApplyGradientSmoothingVolume(CGeometry *geometry, CNumerics *numerics, CConfig *config) { - +void CGradientSmoothingSolver::ApplyGradientSmoothingVolume(CGeometry* geometry, CNumerics* numerics, + const CConfig* config) { /*--- current dimension if we run consecutive on each dimension ---*/ dir = 0; @@ -223,8 +171,7 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingVolume(CGeometry *geometry, Compute_StiffMatrix(geometry, numerics, config); /*--- Impose boundary conditions to the RHS and solve the system. ---*/ - if ( config->GetSepDim() ) { - + if (config->GetSmoothSepDim()) { for (dir = 0; dir < nDim ; dir++) { Compute_Residual(geometry, config); @@ -240,7 +187,6 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingVolume(CGeometry *geometry, } } else { - Compute_Residual(geometry, config); Impose_BC(geometry, config); @@ -248,13 +194,11 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingVolume(CGeometry *geometry, Solve_Linear_System(geometry, config); WriteSensitivity(geometry, config); - } - } -void CGradientSmoothingSolver::ApplyGradientSmoothingSurface(CGeometry *geometry, CNumerics *numerics, CConfig *config, unsigned long val_marker) { - +void CGradientSmoothingSolver::ApplyGradientSmoothingSurface(CGeometry* geometry, CNumerics* numerics, + const CConfig* config, unsigned long val_marker) { /*--- Set vector and sparse matrix to 0 ---*/ LinSysSol.SetValZero(); LinSysRes.SetValZero(); @@ -273,7 +217,6 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingSurface(CGeometry *geometry Solve_Linear_System(geometry, config); WriteSensitivity(geometry, config, val_marker); - } void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CNumerics *numerics, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, CConfig *config, su2double** Gradient) { @@ -299,7 +242,7 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CNu /*--- Compute the full Sobolev Hessian approximation column by column. ---*/ if (rank == MASTER_NODE) cout << " computing the system matrix line by line" << endl; - auto mat_vec = GetStiffnessMatrixVectorProduct(geometry, numerics, config); + auto mat_vec = GetStiffnessMatrixVectorProduct(geometry, numerics, config); for (column=0; column indexNode(MAXNNODE_3D, 0.0); - su2double val_Coord; + su2double val_Coord, HiHj = 0.0; int EL_KIND = 0; - su2activematrix DHiDHj; - su2double HiHj = 0.0; + su2double** Jacobian_block; + + /*--- Uses pointer for now to work with CSysMatrix::AddBlock() + * TODO: Change this to a container type ---*/ + Jacobian_block = new su2double*[nDim]; + for (iDim = 0; iDim < nDim; iDim++) { + Jacobian_block[iDim] = new su2double[nDim]; + for (jDim = 0; jDim < nDim; jDim++) { + Jacobian_block[iDim][jDim] = 0.0; + } + } /*--- Loops over all the elements ---*/ @@ -432,40 +383,53 @@ void CGradientSmoothingSolver::Compute_StiffMatrix(CGeometry *geometry, CNumeric DHiDHj = element_container[GRAD_TERM][EL_KIND]->Get_DHiDHj(iNode, jNode); HiHj = element_container[GRAD_TERM][EL_KIND]->Get_HiHj(iNode, jNode); - if ( config->GetSepDim() ) { - + if (config->GetSmoothSepDim()) { Jacobian_block[0][0] = DHiDHj[dir][dir] + HiHj; Jacobian.AddBlock(indexNode[iNode], indexNode[jNode], Jacobian_block); } else { - for (iDim = 0; iDim < nDim; iDim++) { Jacobian_block[iDim][iDim] = DHiDHj[iDim][iDim] + HiHj; } Jacobian.AddBlock(indexNode[iNode], indexNode[jNode], Jacobian_block); - } } } } -} -void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry *geometry, CNumerics *numerics, CConfig *config, unsigned long val_marker, unsigned int nSurfDim){ + if (Jacobian_block != nullptr) { + for (iDim = 0; iDim < nDim; iDim++) delete[] Jacobian_block[iDim]; + delete[] Jacobian_block; + } +} - unsigned long iElem, iPoint, iVertex, iDim, iSurfDim; +void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry* geometry, CNumerics* numerics, + const CConfig* config, unsigned long val_marker, + unsigned int nSurfDim) { + unsigned long iElem, iPoint, iVertex, iDim, jDim, iSurfDim; unsigned int iNode, jNode, nNodes = 0, NelNodes; std::vector indexNode(MAXNNODE_2D, 0.0); std::vector indexVertex(MAXNNODE_2D, 0.0); int EL_KIND = 0; - su2double val_Coord; + su2double val_Coord, HiHj = 0.0; + su2activematrix DHiDHj; + su2double **Jacobian_block, **mId_Aux; - bool* visited = new bool[geometry->GetnPoint()]; - for (iPoint = 0; iPoint < geometry->GetnPoint(); iPoint++){ - visited[iPoint] = false; + /*--- Uses pointer for now to work with CSysMatrix::AddBlock() + * TODO: Change this to a container type ---*/ + Jacobian_block = new su2double*[nDim]; + mId_Aux = new su2double*[nDim]; + for (iDim = 0; iDim < nDim; iDim++) { + Jacobian_block[iDim] = new su2double[nDim]; + mId_Aux[iDim] = new su2double[nDim]; + for (jDim = 0; jDim < nDim; jDim++) { + Jacobian_block[iDim][jDim] = 0.0; + mId_Aux[iDim][jDim] = 0.0; + } + mId_Aux[iDim][iDim] = 1.0; } - su2activematrix DHiDHj; - su2double HiHj = 0.0; + vector visited(geometry->GetnPoint(), false); /*--- Check if the current MPI rank has a part of the marker ---*/ if (val_marker!=NOT_AVAILABLE) { @@ -529,10 +493,18 @@ void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry *geometry, Jacobian.AddBlock(iPoint, iPoint, mId_Aux); } } -} -void CGradientSmoothingSolver::Compute_Residual(CGeometry *geometry, CConfig *config) { + if (Jacobian_block != nullptr) { + for (iDim = 0; iDim < nDim; iDim++) delete[] Jacobian_block[iDim]; + delete[] Jacobian_block; + } + if (mId_Aux != nullptr) { + for (iDim = 0; iDim < nDim; iDim++) delete[] mId_Aux[iDim]; + delete[] mId_Aux; + } +} +void CGradientSmoothingSolver::Compute_Residual(CGeometry* geometry, const CConfig* config) { unsigned long iElem; unsigned int iDim, iNode, nNodes = 0; int EL_KIND = 0; @@ -568,10 +540,8 @@ void CGradientSmoothingSolver::Compute_Residual(CGeometry *geometry, CConfig *co Jac_X = element_container[GRAD_TERM][EL_KIND]->GetJ_X(iGauss); for (unsigned int iNode = 0; iNode < nNodes; iNode++) { - - if ( config->GetSepDim() ) { - - if (config->GetSobMode()==DEBUG) { + if (config->GetSmoothSepDim()) { + if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::DEBUG) { Residual[dir] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode,iGauss) * (auxVec.GetBlock(indexNode[iNode]))[dir]; LinSysRes.AddBlock(indexNode[iNode], &Residual[dir]); } else { @@ -580,17 +550,14 @@ void CGradientSmoothingSolver::Compute_Residual(CGeometry *geometry, CConfig *co } } else { - for (iDim = 0; iDim < nDim; iDim++) { - - if (config->GetSobMode()==DEBUG) { + if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::DEBUG) { Residual[iDim] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode,iGauss) * (auxVec.GetBlock(indexNode[iNode]))[iDim]; } else { Residual[iDim] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode,iGauss) * nodes->GetSensitivity(indexNode[iNode], iDim); } } LinSysRes.AddBlock(indexNode[iNode], Residual); - } for (iDim = 0; iDim < nDim; iDim++) { @@ -602,8 +569,8 @@ void CGradientSmoothingSolver::Compute_Residual(CGeometry *geometry, CConfig *co } } -void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry *geometry, CConfig *config, unsigned long val_marker) { - +void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry* geometry, const CConfig* config, + unsigned long val_marker) { unsigned long iElem, iPoint, iVertex; unsigned int iDim, iNode, nNodes = 0; int EL_KIND = 0; @@ -660,7 +627,7 @@ void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry *geometry, CCo } for (iDim = 0; iDim < nDim; iDim++) { - if (config->GetSobMode()==DEBUG) { + if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::DEBUG) { normalSens += normal[iDim] * (auxVec.GetBlock(indexNode[iNode]))[iDim]; } else { normalSens += normal[iDim] * nodes->GetSensitivity(indexNode[iNode], iDim); @@ -679,8 +646,7 @@ void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry *geometry, CCo } } -void CGradientSmoothingSolver::Impose_BC(CGeometry *geometry, CConfig *config) { - +void CGradientSmoothingSolver::Impose_BC(CGeometry* geometry, const CConfig* config) { unsigned int iMarker; /*--- Get the boundary markers and iterate over them @@ -691,11 +657,9 @@ void CGradientSmoothingSolver::Impose_BC(CGeometry *geometry, CConfig *config) { BC_Dirichlet(geometry, config, iMarker); } } - } -void CGradientSmoothingSolver::BC_Dirichlet(CGeometry *geometry, CConfig *config, unsigned int val_marker) { - +void CGradientSmoothingSolver::BC_Dirichlet(CGeometry* geometry, const CConfig* config, unsigned int val_marker) { unsigned long iPoint, iVertex; const su2double zeros[MAXNDIM] = {0.0}; @@ -710,11 +674,10 @@ void CGradientSmoothingSolver::BC_Dirichlet(CGeometry *geometry, CConfig *config Jacobian.EnforceSolutionAtNode(iPoint, zeros, LinSysRes); } - } -void CGradientSmoothingSolver::BC_Surface_Dirichlet(CGeometry *geometry, CConfig *config, unsigned int val_marker) { - +void CGradientSmoothingSolver::BC_Surface_Dirichlet(CGeometry* geometry, const CConfig* config, + unsigned int val_marker) { unsigned long iPoint, iVertex; const su2double zeros[MAXNDIM] = {0.0}; @@ -725,19 +688,16 @@ void CGradientSmoothingSolver::BC_Surface_Dirichlet(CGeometry *geometry, CConfig /*--- Get node index ---*/ iPoint = geometry->vertex[val_marker][iVertex]->GetNode(); - if ( nodes->IsBoundaryPoint(iPoint) ) { - + if (nodes->GetIsBoundaryPoint(iPoint)) { LinSysSol.SetBlock(iPoint, zeros); LinSysRes.SetBlock(iPoint, zeros); Jacobian.EnforceSolutionAtNode(iPoint, zeros, LinSysRes); - } } } } -void CGradientSmoothingSolver::Solve_Linear_System(CGeometry *geometry, CConfig *config){ - +void CGradientSmoothingSolver::Solve_Linear_System(CGeometry* geometry, const CConfig* config) { /* For MPI prescribe vector entries across the ranks before solving the system. * Analog to FEA solver this is only done for the solution */ CSysMatrixComms::Initiate(LinSysSol, geometry, config); @@ -759,11 +719,12 @@ void CGradientSmoothingSolver::Solve_Linear_System(CGeometry *geometry, CConfig END_SU2_OMP_MASTER } END_SU2_OMP_PARALLEL - } -CSysMatrixVectorProduct CGradientSmoothingSolver::GetStiffnessMatrixVectorProduct(CGeometry *geometry, CNumerics *numerics, CConfig *config) { - +template +CSysMatrixVectorProduct CGradientSmoothingSolver::GetStiffnessMatrixVectorProduct(CGeometry* geometry, + CNumerics* numerics, + const CConfig* config) { bool surf = config->GetSmoothOnSurface(); /*--- Compute the sparse stiffness matrix ---*/ @@ -779,7 +740,7 @@ CSysMatrixVectorProduct CGradientSmoothingSolver::GetStiffnessM Compute_StiffMatrix(geometry, numerics, config); } - return CSysMatrixVectorProduct(Jacobian, geometry, config); + return CSysMatrixVectorProduct(Jacobian, geometry, config); } void CGradientSmoothingSolver::CalculateOriginalGradient(CGeometry *geometry, CVolumetricMovement *grid_movement, CConfig *config, su2double** Gradient) { @@ -837,7 +798,6 @@ void CGradientSmoothingSolver::RecordParameterizationJacobian(CGeometry *geometr unsigned int nDim, nMarker, nDV, nDV_Value, nPoint, nVertex; unsigned int iDV, iDV_Value, iMarker, iPoint, iVertex, iDim; su2double* VarCoord; - su2double** DV_Value; /*--- get information from config ---*/ nMarker = config->GetnMarker_All(); @@ -854,15 +814,13 @@ void CGradientSmoothingSolver::RecordParameterizationJacobian(CGeometry *geometr /*--- Register design variables as input and set them to zero, * since we want to have the derivative at alpha = 0, i.e. for the current design. ---*/ - DV_Value = config->GetDV_Pointer(); for (iDV = 0; iDV < nDV; iDV++){ nDV_Value = config->GetnDV_Value(iDV); for (iDV_Value = 0; iDV_Value < nDV_Value; iDV_Value++){ /*--- Initilization of su2double with 0.0 resets the existing AD index. ---*/ - DV_Value[iDV][iDV_Value] = 0.0; - AD::RegisterInput(DV_Value[iDV][iDV_Value]); - + config->SetDV_Value(iDV, iDV_Value, 0.0); + AD::RegisterInput(config->GetDV_Value(iDV, iDV_Value)); } } @@ -897,7 +855,6 @@ void CGradientSmoothingSolver::ProjectDVtoMesh(CGeometry *geometry, std::vector< unsigned int nDim, nMarker, nDV, nDV_Value, nVertex; unsigned int iDV, iDV_Value, iDV_index, iMarker, iVertex, iPoint, iDim; - su2double** DV_Value = config->GetDV_Pointer(); /*--- get information from config ---*/ nMarker = config->GetnMarker_All(); @@ -909,7 +866,7 @@ void CGradientSmoothingSolver::ProjectDVtoMesh(CGeometry *geometry, std::vector< for (iDV = 0; iDV < nDV; iDV++){ nDV_Value = config->GetnDV_Value(iDV); for (iDV_Value = 0; iDV_Value < nDV_Value; iDV_Value++){ - SU2_TYPE::SetDerivative(DV_Value[iDV][iDV_Value], SU2_TYPE::GetValue(seeding[iDV_index])); + SU2_TYPE::SetDerivative(config->GetDV_Value(iDV, iDV_Value), SU2_TYPE::GetValue(seeding[iDV_index])); iDV_index++; } } @@ -939,7 +896,6 @@ void CGradientSmoothingSolver::ProjectMeshToDV(CGeometry *geometry, CSysVectorGetDV_Pointer(); su2double my_Gradient, localGradient; // get some numbers from config @@ -967,7 +923,7 @@ void CGradientSmoothingSolver::ProjectMeshToDV(CGeometry *geometry, CSysVectorGetnDV_Value(iDV); for (iDV_Value = 0; iDV_Value < nDV_Value; iDV_Value++){ - my_Gradient = SU2_TYPE::GetDerivative(DV_Value[iDV][iDV_Value]); + my_Gradient = SU2_TYPE::GetDerivative(config->GetDV_Value(iDV, iDV_Value)); SU2_MPI::Allreduce(&my_Gradient, &localGradient, 1, MPI_DOUBLE, MPI_SUM, SU2_MPI::GetComm()); @@ -990,8 +946,7 @@ void CGradientSmoothingSolver::SetSensitivity(CGeometry *geometry, CConfig *conf } } -void CGradientSmoothingSolver::WriteSensitivity(CGeometry *geometry, CConfig *config, unsigned long val_marker) { - +void CGradientSmoothingSolver::WriteSensitivity(CGeometry* geometry, const CConfig* config, unsigned long val_marker) { unsigned long iPoint, total_index; unsigned int iDim; su2double* normal; @@ -1017,7 +972,7 @@ void CGradientSmoothingSolver::WriteSensitivity(CGeometry *geometry, CConfig *co } } } else { - if ( config->GetSepDim() ) { + if (config->GetSmoothSepDim()) { for (iPoint = 0; iPoint < nPoint; iPoint++) { this->GetNodes()->SetSensitivity(iPoint, dir, LinSysSol[iPoint]); } @@ -1032,7 +987,7 @@ void CGradientSmoothingSolver::WriteSensitivity(CGeometry *geometry, CConfig *co } } -void CGradientSmoothingSolver::WriteSens2Geometry(CGeometry *geometry, CConfig *config) { +void CGradientSmoothingSolver::WriteSens2Geometry(CGeometry* geometry, const CConfig* config) { unsigned long iPoint; unsigned int iDim; for (iPoint = 0; iPoint < nPoint; iPoint++) { @@ -1042,7 +997,7 @@ void CGradientSmoothingSolver::WriteSens2Geometry(CGeometry *geometry, CConfig * } } -void CGradientSmoothingSolver::ReadSens2Geometry(CGeometry *geometry, CConfig *config) { +void CGradientSmoothingSolver::ReadSens2Geometry(CGeometry* geometry, const CConfig* config) { unsigned long iPoint; unsigned int iDim; for (iPoint = 0; iPoint < nPoint; iPoint++) { @@ -1052,7 +1007,8 @@ void CGradientSmoothingSolver::ReadSens2Geometry(CGeometry *geometry, CConfig *c } } -void CGradientSmoothingSolver::WriteVector2Geometry(CGeometry *geometry, CConfig *config, CSysVector& vector) { +void CGradientSmoothingSolver::WriteVector2Geometry(CGeometry* geometry, const CConfig* config, + CSysVector& vector) { unsigned long iPoint; unsigned int iDim; for (iPoint = 0; iPoint < nPoint; iPoint++) { @@ -1062,7 +1018,8 @@ void CGradientSmoothingSolver::WriteVector2Geometry(CGeometry *geometry, CConfig } } -void CGradientSmoothingSolver::ReadVector2Geometry(CGeometry *geometry, CConfig *config, CSysVector &vector) { +void CGradientSmoothingSolver::ReadVector2Geometry(CGeometry* geometry, const CConfig* config, + CSysVector& vector) { unsigned long iPoint; unsigned int iDim; for (iPoint = 0; iPoint < nPoint; iPoint++) { @@ -1072,8 +1029,7 @@ void CGradientSmoothingSolver::ReadVector2Geometry(CGeometry *geometry, CConfig } } -void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry *geometry, CConfig *config) { - +void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry* geometry, const CConfig* config) { /*--- Store global point indices of essential BC markers. ---*/ vector myPoints; unsigned long iPoint, iVertex; @@ -1096,7 +1052,7 @@ void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry *geometry for (iVertex = 0; iVertex < geometry->nVertex[dvMarker]; iVertex++) { /*--- Get node index ---*/ iPoint = geometry->vertex[dvMarker][iVertex]->GetNode(); - if ( nodes->IsBoundaryPoint(iPoint) ) { + if (nodes->GetIsBoundaryPoint(iPoint)) { myPoints.push_back(geometry->nodes->GetGlobalIndex(iPoint)); } } @@ -1164,5 +1120,4 @@ void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry *geometry for (auto iPoint : ExtraVerticesToEliminate) { Jacobian.EnforceSolutionAtNode(iPoint, LinSysSol.GetBlock(iPoint), LinSysRes); } - } diff --git a/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp b/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp index 572d06736dec..613a0c8d1364 100644 --- a/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp +++ b/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp @@ -4,22 +4,12 @@ * \author T. Dick * \version 7.2.1 "Blackbird" * - * The current SU2 release has been coordinated by the - * SU2 International Developers Society - * with selected contributions from the open-source community. + * SU2 Project Website: https://su2code.github.io * - * The main research teams contributing to the current release are: - * - Prof. Juan J. Alonso's group at Stanford University. - * - Prof. Piero Colonna's group at Delft University of Technology. - * - Prof. Nicolas R. Gauger's group at Kaiserslautern University of Technology. - * - Prof. Alberto Guardone's group at Polytechnic University of Milan. - * - Prof. Rafael Palacios' group at Imperial College London. - * - Prof. Vincent Terrapon's group at the University of Liege. - * - Prof. Edwin van der Weide's group at the University of Twente. - * - Lab. of New Concepts in Aeronautics at Tech. Institute of Aeronautics. + * The SU2 Project is maintained by the SU2 Foundation + * (http://su2foundation.org) * - * Copyright 2012-2018, Francisco D. Palacios, Thomas D. Economon, - * Tim Albring, and the SU2 contributors. + * Copyright 2012-2021, SU2 Contributors (cf. AUTHORS.md) * * SU2 is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -61,10 +51,6 @@ void CSobolevSmoothingVariable::MarkAsBoundaryPoint(unsigned long iPoint) { nBoundPoints++; } -bool CSobolevSmoothingVariable::IsBoundaryPoint(unsigned long iPoint) { - return boundary_vertex[iPoint]; -} +bool CSobolevSmoothingVariable::GetIsBoundaryPoint(unsigned long iPoint) const { return boundary_vertex[iPoint]; } -unsigned int CSobolevSmoothingVariable::GetNBoundPoints() { - return nBoundPoints; -} +unsigned int CSobolevSmoothingVariable::GetNBoundPoints() const { return nBoundPoints; } diff --git a/SU2_DOT/src/SU2_DOT.cpp b/SU2_DOT/src/SU2_DOT.cpp index 5154e3378acc..75e926bf86eb 100644 --- a/SU2_DOT/src/SU2_DOT.cpp +++ b/SU2_DOT/src/SU2_DOT.cpp @@ -984,9 +984,8 @@ void DerivativeTreatment_MeshSensitivity(CGeometry *geometry, CConfig *config) { solver->ReadSens2Geometry(geometry,config); /*--- Apply the smoothing procedure on the mesh level. ---*/ - if (config->GetSobMode()==MESH_LEVEL || config->GetSobMode()==DEBUG ) { - - if (rank == MASTER_NODE) cout << " working on mesh level (including debug mode)" << endl; + if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::MESH_LEVEL || config->GetSobMode() == ENUM_SOBOLEV_MODUS::DEBUG) { + if (rank == MASTER_NODE) cout << " working on mesh level" << endl; /*--- Work with the surface derivatives. ---*/ if (config->GetSmoothOnSurface()) { @@ -1009,10 +1008,9 @@ void DerivativeTreatment_MeshSensitivity(CGeometry *geometry, CConfig *config) { solver->WriteSens2Geometry(geometry,config); /*--- Warning if choosen mode is unsupported. ---*/ - }else if (config->GetSobMode()==NO_MODUS) { + } else if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::NO_MODUS) { if (rank == MASTER_NODE) cout << "Unsupported operation modus for the Sobolev Smoothing Solver." << endl; } - } void DerivativeTreatment_Gradient(CGeometry *geometry, CConfig *config, CVolumetricMovement* grid_movement, CSurfaceMovement *surface_movement, su2double** Gradient) { @@ -1034,17 +1032,15 @@ void DerivativeTreatment_Gradient(CGeometry *geometry, CConfig *config, CVolumet solver->ReadSens2Geometry(geometry,config); /*--- Apply the smoothing procedure on the DV level. ---*/ - if (config->GetSobMode()==PARAM_LEVEL_COMPLETE) { - + if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::PARAM_LEVEL_COMPLETE) { solver->ApplyGradientSmoothingDV(geometry, numerics, surface_movement, grid_movement, config, Gradient); /*--- For some application, e.g. OneShot, we might only need the original gradient. ---*/ - } else if (config->GetSobMode()==ONLY_GRAD) { + } else if (config->GetSobMode() == ONLY_GRAD) { solver->RecordTapeAndCalculateOriginalGradient(geometry, surface_movement, grid_movement, config, Gradient); /*--- Warning if choosen mode is unsupported. ---*/ - } else if (config->GetSobMode()==NO_MODUS) { + } else if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::NO_MODUS) { if (rank == MASTER_NODE) cout << "Unsupported operation modus for the Sobolev Smoothing Solver." << endl; } - } From 36bc84c1cca611831b13ecf935f84909a0457d92 Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Thu, 16 Dec 2021 20:22:58 +0100 Subject: [PATCH 17/26] Apply more changes from code review. Create a common template CFEASolverBase for solvers using the internal finite elements. --- Common/include/CConfig.hpp | 4 +- Common/include/option_structure.hpp | 16 +- Common/src/CConfig.cpp | 2 +- Common/src/geometry/elements/CTETRA1.cpp | 9 +- Common/src/geometry/elements/CTETRA4.cpp | 9 +- SU2_CFD/include/solvers/CFEASolver.hpp | 29 +--- SU2_CFD/include/solvers/CFEASolverBase.hpp | 89 +++++++++++ .../solvers/CGradientSmoothingSolver.hpp | 46 +++--- SU2_CFD/include/solvers/CSolver.hpp | 7 +- .../variables/CSobolevSmoothingVariable.hpp | 6 - SU2_CFD/include/variables/CVariable.hpp | 4 - SU2_CFD/src/meson.build | 3 +- SU2_CFD/src/solvers/CFEASolver.cpp | 78 +--------- SU2_CFD/src/solvers/CFEASolverBase.cpp | 116 +++++++++++++++ .../src/solvers/CGradientSmoothingSolver.cpp | 138 ++++++------------ .../variables/CSobolevSmoothingVariable.cpp | 4 - SU2_DOT/include/SU2_DOT.hpp | 3 +- SU2_DOT/src/SU2_DOT.cpp | 73 ++++++--- .../naca0012/inv_NACA0012_gradsmooth.cfg | 7 +- .../oneram6/ONERAM6_gradsmooth.cfg | 8 +- 20 files changed, 351 insertions(+), 300 deletions(-) create mode 100644 SU2_CFD/include/solvers/CFEASolverBase.hpp create mode 100644 SU2_CFD/src/solvers/CFEASolverBase.cpp diff --git a/Common/include/CConfig.hpp b/Common/include/CConfig.hpp index 44e5931400fa..c4c34acfd0f3 100644 --- a/Common/include/CConfig.hpp +++ b/Common/include/CConfig.hpp @@ -446,7 +446,7 @@ class CConfig { bool SmoothSepDim; /*!< \brief Flag for enabling separated calculation for every dimension. */ bool SmoothOnSurface; /*!< \brief Flag for assembling the system only on the surface. */ bool SmoothDirichletSurfaceBound; /*!< \brief Flag for using zero Dirichlet boundary in the surface case. */ - unsigned short SmoothNumMode; /*!< \brief temporary flag for some debuging stuff */ + ENUM_SOBOLEV_MODUS SmoothNumMode; /*!< \brief The mode in which the Sobolev smoothing solver is applied. */ unsigned short Kind_Grad_Linear_Solver, /*!< Numerical method to smooth the gradient */ Kind_Grad_Linear_Solver_Prec; /*!< \brief Preconditioner of the linear solver. */ @@ -9616,7 +9616,7 @@ class CConfig { * \brief The modus of operation for the Sobolev solver * \return returns on what level we operate */ - unsigned short GetSobMode(void) const { return SmoothNumMode; } + ENUM_SOBOLEV_MODUS GetSobMode(void) const { return SmoothNumMode; } /*! * \brief Get the name of the file with the hessian of the objective function. diff --git a/Common/include/option_structure.hpp b/Common/include/option_structure.hpp index d4aa14922d14..1ccbf0fed1a8 100644 --- a/Common/include/option_structure.hpp +++ b/Common/include/option_structure.hpp @@ -2367,18 +2367,18 @@ enum class LINEAR_SOLVER_MODE { /*! * \brief mode of operation for the sobolev smoothing solver. */ -enum ENUM_SOBOLEV_MODUS { - NO_MODUS, /*!< \brief Default option if none is choosen. */ +enum class ENUM_SOBOLEV_MODUS { + NONE, /*!< \brief Default option if none is choosen. */ PARAM_LEVEL_COMPLETE, /*!< \brief Operate on parameter level. */ MESH_LEVEL, /*!< \brief Operate on mesh level. */ - DEBUG, /*!< \brief Special flag for debugging. */ - ONLY_GRAD, /*!< \brief Flag for OneShot to only compute the original gradient. */ + ONLY_GRAD, /*!< \brief Flag to only compute the original gradient. */ }; static const MapType Sobolev_Modus_Map = { - MakePair("NONE", ENUM_SOBOLEV_MODUS::NO_MODUS) - MakePair("PARAM_LEVEL_COMPLETE", ENUM_SOBOLEV_MODUS::PARAM_LEVEL_COMPLETE) - MakePair("MESH_LEVEL", ENUM_SOBOLEV_MODUS::MESH_LEVEL) MakePair("DEBUG", ENUM_SOBOLEV_MODUS::DEBUG) - MakePair("ONLY_GRADIENT", ENUM_SOBOLEV_MODUS::ONLY_GRAD)}; + MakePair("NONE", ENUM_SOBOLEV_MODUS::NONE) + MakePair("PARAM_LEVEL_COMPLETE", ENUM_SOBOLEV_MODUS::PARAM_LEVEL_COMPLETE) + MakePair("MESH_LEVEL", ENUM_SOBOLEV_MODUS::MESH_LEVEL) + MakePair("ONLY_GRADIENT", ENUM_SOBOLEV_MODUS::ONLY_GRAD) +}; #undef MakePair /* END_CONFIG_ENUMS */ diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index 05ea8bcf3d02..902bf97402b4 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -2012,7 +2012,7 @@ void CConfig::SetConfig_Options() { /* DESCRIPTION: Switch to activate zero Dirichlet boundary for surface mode */ addBoolOption("DIRICHLET_SURFACE_BOUNDARY", SmoothDirichletSurfaceBound, false); /* DESCRIPTION: Switch to activate the debbuging modus */ - addEnumOption("SOBOLEV_MODE", SmoothNumMode, Sobolev_Modus_Map, ENUM_SOBOLEV_MODUS::NO_MODUS); + addEnumOption("SOBOLEV_MODE", SmoothNumMode, Sobolev_Modus_Map, ENUM_SOBOLEV_MODUS::NONE); /*!\brief HESS_OBJFUNC_FILENAME * \n DESCRIPTION: Output filename for the Sobolev Hessian approximation. \ingroup Config*/ addStringOption("HESS_OBJFUNC_FILENAME", ObjFunc_Hess_FileName, string("of_hess.dat")); diff --git a/Common/src/geometry/elements/CTETRA1.cpp b/Common/src/geometry/elements/CTETRA1.cpp index d4be868c746c..bec7e5d661f9 100644 --- a/Common/src/geometry/elements/CTETRA1.cpp +++ b/Common/src/geometry/elements/CTETRA1.cpp @@ -26,7 +26,7 @@ */ #include "../../../include/geometry/elements/CElement.hpp" - +#include "../../../include/toolboxes/geometry_toolbox.hpp" CTETRA1::CTETRA1() : CElementWithKnownSizes() { @@ -85,11 +85,8 @@ su2double CTETRA1::ComputeVolume(const FrameType mode) const { r3[iDim] = Coord[3][iDim] - Coord[0][iDim]; } - CrossProduct[0] = (r1[1]*r2[2] - r1[2]*r2[1])*r3[0]; - CrossProduct[1] = (r1[2]*r2[0] - r1[0]*r2[2])*r3[1]; - CrossProduct[2] = (r1[0]*r2[1] - r1[1]*r2[0])*r3[2]; - - Volume = fabs(CrossProduct[0] + CrossProduct[1] + CrossProduct[2])/6.0; + GeometryToolbox::CrossProduct(r1, r2, CrossProduct); + Volume = fabs(GeometryToolbox::DotProduct(3, CrossProduct, r3))/6.0; return Volume; diff --git a/Common/src/geometry/elements/CTETRA4.cpp b/Common/src/geometry/elements/CTETRA4.cpp index 38787745fd70..8cc99d2391d7 100644 --- a/Common/src/geometry/elements/CTETRA4.cpp +++ b/Common/src/geometry/elements/CTETRA4.cpp @@ -26,7 +26,7 @@ */ #include "../../../include/geometry/elements/CElement.hpp" - +#include "../../../include/toolboxes/geometry_toolbox.hpp" CTETRA4::CTETRA4() : CElementWithKnownSizes() { @@ -90,11 +90,8 @@ su2double CTETRA4::ComputeVolume(const FrameType mode) const { r3[iDim] = Coord[3][iDim] - Coord[0][iDim]; } - CrossProduct[0] = (r1[1]*r2[2] - r1[2]*r2[1])*r3[0]; - CrossProduct[1] = (r1[2]*r2[0] - r1[0]*r2[2])*r3[1]; - CrossProduct[2] = (r1[0]*r2[1] - r1[1]*r2[0])*r3[2]; - - Volume = fabs(CrossProduct[0] + CrossProduct[1] + CrossProduct[2])/6.0; + GeometryToolbox::CrossProduct(r1, r2, CrossProduct); + Volume = fabs(GeometryToolbox::DotProduct(3, CrossProduct, r3))/6.0; return Volume; diff --git a/SU2_CFD/include/solvers/CFEASolver.hpp b/SU2_CFD/include/solvers/CFEASolver.hpp index 4e8c1aae24aa..da4e84b52acf 100644 --- a/SU2_CFD/include/solvers/CFEASolver.hpp +++ b/SU2_CFD/include/solvers/CFEASolver.hpp @@ -27,23 +27,15 @@ #pragma once -#include "CSolver.hpp" -#include "../../../Common/include/geometry/elements/CElement.hpp" -#include "../../../Common/include/parallelization/omp_structure.hpp" +#include "CFEASolverBase.hpp" /*! * \class CFEASolver * \brief Main class for defining a FEM solver for elastic structural problems. * \author R. Sanchez. */ -class CFEASolver : public CSolver { +class CFEASolver : public CFEASolverBase { protected: - enum : size_t {MAXNNODE_2D = 4}; - enum : size_t {MAXNNODE_3D = 8}; - enum : size_t {MAXNVAR = 3}; - enum : size_t {MAXNDIM = 3}; - enum : size_t {OMP_MIN_SIZE = 32}; - enum : size_t {OMP_MAX_SIZE = 512}; unsigned long omp_chunk_size; /*!< \brief Chunk size used in light point loops. */ @@ -91,7 +83,6 @@ class CFEASolver : public CSolver { CSysMatrix MassMatrix; #endif - CElement*** element_container = nullptr; /*!< \brief Vector which the define the finite element structure for each problem. */ CProperty** element_properties = nullptr; /*!< \brief Vector which stores the properties of each element */ #ifdef HAVE_OMP @@ -108,22 +99,6 @@ class CFEASolver : public CSolver { bool topol_filter_applied; /*!< \brief True if density filtering has been performed. */ bool initial_calc = true; /*!< \brief Becomes false after first call to Preprocessing. */ - unsigned long nElement; /*!< \brief Number of elements. */ - - /*--- Extra vertices for row/column elimination, see Set_VertexEliminationSchedule. ---*/ - vector ExtraVerticesToEliminate; - - /*! - * \brief The highest level in the variable hierarchy this solver can safely use, - * CVariable is the common denominator between the FEA and Mesh deformation variables. - */ - CVariable* nodes = nullptr; - - /*! - * \brief Return nodes to allow CSolver::base_nodes to be set. - */ - inline CVariable* GetBaseClassPointerToNodes() override { return nodes; } - /*! * \brief Get the element container index and number of nodes of a given VTK type. * \param[in] VTK_Type - Type of element. diff --git a/SU2_CFD/include/solvers/CFEASolverBase.hpp b/SU2_CFD/include/solvers/CFEASolverBase.hpp new file mode 100644 index 000000000000..6578c8bc743a --- /dev/null +++ b/SU2_CFD/include/solvers/CFEASolverBase.hpp @@ -0,0 +1,89 @@ +/*! + * \file CFEASolver.hpp + * \brief Base class template for all FEA solvers using the SU2 internal finite elements. + * \author T. Dick + * \version 7.2.1 "Blackbird" + * + * SU2 Project Website: https://su2code.github.io + * + * The SU2 Project is maintained by the SU2 Foundation + * (http://su2foundation.org) + * + * Copyright 2012-2021, SU2 Contributors (cf. AUTHORS.md) + * + * SU2 is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * SU2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with SU2. If not, see . + */ + +#pragma once + +#include "CSolver.hpp" +#include "../../../Common/include/geometry/elements/CElement.hpp" +#include "../../../Common/include/parallelization/omp_structure.hpp" + +class CFEASolverBase : public CSolver { + public: + enum : size_t {MAXNNODE_2D = 4}; + enum : size_t {MAXNNODE_3D = 8}; + enum : size_t {MAXNDIM = 3}; + enum : size_t {MAXNVAR = 3}; + enum : size_t {OMP_MIN_SIZE = 32}; + enum : size_t {OMP_MAX_SIZE = 512}; + + protected: + + CElement*** element_container = nullptr; /*!< \brief Vector which the define the finite element structure for each problem. */ + unsigned long nElement; /*!< \brief Number of elements. */ + + vector ExtraVerticesToEliminate; /*!< Extra vertices for row/column elimination, see CommunicateExtraEliminationVertices. */ + + /*! + * \brief The highest level in the variable hierarchy all derived solvers can safely use, + * CVariable is the common denominator between the FEA, Mesh deformation, and smoothing variables. + */ + CVariable* nodes = nullptr; + + /*! + * \brief Return nodes to allow CSolver::base_nodes to be set. + */ + inline CVariable* GetBaseClassPointerToNodes() override { return nodes; } + + public: + /*! + * \brief Constructor of the class. + * \param[in] mesh_deform_mode - mode of operation for the linear solver. + */ + CFEASolverBase(LINEAR_SOLVER_MODE mesh_deform_mode = LINEAR_SOLVER_MODE::STANDARD); + + /*! + * \overload + * \param[in] geometry - Geometrical definition of the problem. + * \param[in] config - Definition of the particular problem. + * \param[in] mesh_deform_mode - mode of operation for the linear solver. + */ + CFEASolverBase(CGeometry *geometry, CConfig *config, LINEAR_SOLVER_MODE mesh_deform_mode = LINEAR_SOLVER_MODE::STANDARD); + + /*! + * \brief Destructor of the class. + */ + ~CFEASolverBase(); + + /*! + * \brief Communicate extra vertices for elimination in the linear system. + * \param[in] geometry - Geometrical definition of the problem. + * \param[in] myPoints - List of global point indeces to eliminate. + * \param[in] val_coord - Location (x, y, z) of the max residual point. + */ + void CommunicateExtraEliminationVertices(const CGeometry* geometry, vector& myPoints); + +}; diff --git a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp index 56c9cf9be873..4bf218fb5375 100644 --- a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp +++ b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp @@ -27,21 +27,17 @@ #pragma once -#include "../../../Common/include/geometry/elements/CElement.hpp" #include "../../../Common/include/linear_algebra/CMatrixVectorProduct.hpp" #include "../../../Common/include/toolboxes/CSquareMatrixCM.hpp" -#include "../../../SU2_CFD/include/solvers/CSolver.hpp" +#include "../../../SU2_CFD/include/solvers/CFEASolverBase.hpp" /*! \class CGradientSmoothingSolver * \brief Main class for defining a gradient smoothing. * \author T. Dick. * \date March 25, 2019. */ -class CGradientSmoothingSolver : public CSolver { +class CGradientSmoothingSolver final : public CFEASolverBase { public: - enum : size_t {MAXNNODE_2D = 4}; - enum : size_t {MAXNNODE_3D = 8}; - enum : size_t {MAXNDIM = 3}; /** Introduction of a new alias for the data type to allow compilation with forward mode. * @@ -57,32 +53,18 @@ class CGradientSmoothingSolver : public CSolver { using MatrixType = C2DContainer; private: - unsigned long nElement; - CElement*** element_container = nullptr; /*!< \brief Container which stores the element information. */ + unsigned int curDim; /*!< \brief If we separate dimensions this tells us in what dimension we currently are. */ - unsigned int dir; /*!< \brief If we separate dimensions this tells us in what dimension we currently are. */ - - CSysVector auxVec; /*!< \brief Auxiliar vectors for output and debugging */ CSysVector activeCoord; /*!< \brief Auxiliar vector to keep the indeces of geometry->vertex->Coord */ CSysVector helperVecIn; /*!< \brief Helper vectors for projection and matrix vector product (must be su2mixedfloat) */ CSysVector helperVecOut; /*!< \brief Helper vectors for projection and matrix vector product (must be su2mixedfloat) */ - CSysVector helperVecAux; /*!< \brief Helper vectors for matrix vector product if working on surface (smaller dim) */ - - CVariable* nodes = nullptr; /*!< \brief The highest level in the variable hierarchy this solver can safely use. */ + CSysVector helperVecAux; /*!< \brief Helper vectors for matrix vector product if working on surface (smaller dim) */ std::vector deltaP; /*!< \brief The smoothed gradient with respect to the design variables. */ CSquareMatrixCM hessian; /*!< \brief The approximated Hessian with respect to the design variables. */ - /*--- Extra vertices for row/column elimination, see Set_VertexEliminationSchedule. ---*/ - vector ExtraVerticesToEliminate; - - /*! - * \brief Return nodes to allow CSolver::base_nodes to be set. - */ - inline CVariable* GetBaseClassPointerToNodes() override { return nodes; } - public: /*! * \brief Constructor of the class. @@ -244,26 +226,24 @@ class CGradientSmoothingSolver : public CSolver { /*! * \brief Write the content of sensitivity in the nodes to the sensitivity in the geometry * \param[in] geometry - Geometrical definition of the problem. - * \param[in] config - Definition of the particular problem. */ - void WriteSens2Geometry(CGeometry* geometry, const CConfig* config); + void WriteSensToGeometry(CGeometry* geometry) const override; /*! * \brief Read the sensitivity for the geometry into the nodes * \param[in] geometry - Geometrical definition of the problem. - * \param[in] config - Definition of the particular problem. */ - void ReadSens2Geometry(CGeometry* geometry, const CConfig* config); + void ReadSensFromGeometry(const CGeometry *geometry) override; /*! * \brief Copy sensitivities from a vector into the geometry */ - void WriteVector2Geometry(CGeometry* geometry, const CConfig* config, CSysVector& vector); + void WriteVectorToGeometry(CGeometry* geometry, const CSysVector& vector) const; /*! * \brief Copy sensitivities from the geometry into a vector */ - void ReadVector2Geometry(CGeometry* geometry, const CConfig* config, CSysVector& vector); + void ReadVectorToGeometry(const CGeometry* geometry, CSysVector& vector); /*! * \brief Get the value of the reference coordinate to set on the element structure. @@ -309,4 +289,14 @@ class CGradientSmoothingSolver : public CSolver { } } +private: + + inline void SetCurrentDim(unsigned int iDim) { + curDim=iDim; + } + + inline const unsigned int& GetCurrentDim() const { + return curDim; + } + }; diff --git a/SU2_CFD/include/solvers/CSolver.hpp b/SU2_CFD/include/solvers/CSolver.hpp index 95bdc7dc4aca..a3d7cfe09346 100644 --- a/SU2_CFD/include/solvers/CSolver.hpp +++ b/SU2_CFD/include/solvers/CSolver.hpp @@ -38,6 +38,8 @@ #include #include #include +#include +#include #include "../fluid/CFluidModel.hpp" #include "../task_definition.hpp" @@ -4200,16 +4202,15 @@ class CSolver { /*! * \brief A virtual member. * \param[in] geometry - Geometrical definition of the problem. - * \param[in] config - Definition of the particular problem. */ - virtual void ReadSens2Geometry(CGeometry* geometry, const CConfig* config) {} + virtual void ReadSensFromGeometry(const CGeometry* geometry) {} /*! * \brief A virtual member. * \param[in] geometry - Geometrical definition of the problem. * \param[in] config - Definition of the particular problem. */ - virtual void WriteSens2Geometry(CGeometry* geometry, const CConfig* config) {} + virtual void WriteSensToGeometry(CGeometry* geometry) const {} /*! * \brief Routine that sets the flag controlling implicit treatment for periodic BCs. diff --git a/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp b/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp index 8b89adbd1249..ec4479b88153 100644 --- a/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp +++ b/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp @@ -34,7 +34,6 @@ class CSobolevSmoothingVariable final : public CVariable { MatrixType Sensitivity; /*!< Vector holding the derivative of target functional with respect to the coordinates at this node */ bool* boundary_vertex; /*!< \brief Stores if a point belongs to the boundary of a boundary. */ - unsigned long nBoundPoints; /*! * \brief Constructor of the class. @@ -72,9 +71,4 @@ class CSobolevSmoothingVariable final : public CVariable { * \brief return wether a point is a boundary of a boundary */ bool GetIsBoundaryPoint(unsigned long iPoint) const override; - - /*! - * \brief return the number of marked points - */ - unsigned int GetNBoundPoints() const override; }; diff --git a/SU2_CFD/include/variables/CVariable.hpp b/SU2_CFD/include/variables/CVariable.hpp index 05a35105a234..07fd6957e863 100644 --- a/SU2_CFD/include/variables/CVariable.hpp +++ b/SU2_CFD/include/variables/CVariable.hpp @@ -2252,8 +2252,4 @@ class CVariable { */ virtual bool GetIsBoundaryPoint(unsigned long iPoint) const { return false; } - /*! - * \brief return the number of boundary points of a design surface boundary - */ - virtual unsigned int GetNBoundPoints() const { return 0; }; }; diff --git a/SU2_CFD/src/meson.build b/SU2_CFD/src/meson.build index c6650d2326d9..a99192bc4ecb 100644 --- a/SU2_CFD/src/meson.build +++ b/SU2_CFD/src/meson.build @@ -48,7 +48,7 @@ su2_cfd_src += files(['output/COutputFactory.cpp', 'output/filewriter/CParaviewXMLFileWriter.cpp', 'output/filewriter/CParaviewVTMFileWriter.cpp', 'output/filewriter/CSU2MeshFileWriter.cpp', - 'output/filewriter/CCGNSFileWriter.cpp', + 'output/filewriter/CCGNSFileWriter.cpp', 'output/tools/CWindowingTools.cpp']) su2_cfd_src += files(['variables/CIncNSVariable.cpp', @@ -111,6 +111,7 @@ su2_cfd_src += files(['solvers/CSolverFactory.cpp', 'solvers/CTurbSolver.cpp', 'solvers/CTurbSASolver.cpp', 'solvers/CTurbSSTSolver.cpp', + 'solvers/CFEASolverBase.cpp', 'solvers/CGradientSmoothingSolver.cpp']) su2_cfd_src += files(['numerics/CNumerics.cpp', diff --git a/SU2_CFD/src/solvers/CFEASolver.cpp b/SU2_CFD/src/solvers/CFEASolver.cpp index 5cb6b8b8ab3d..620c9f1e6c35 100644 --- a/SU2_CFD/src/solvers/CFEASolver.cpp +++ b/SU2_CFD/src/solvers/CFEASolver.cpp @@ -31,36 +31,23 @@ #include "../../../Common/include/toolboxes/printing_toolbox.hpp" #include "../../../Common/include/toolboxes/geometry_toolbox.hpp" #include -#include -#include using namespace GeometryToolbox; -CFEASolver::CFEASolver(LINEAR_SOLVER_MODE mesh_deform_mode) : CSolver(mesh_deform_mode) { - - nElement = 0; - nDim = 0; - nMarker = 0; - - nPoint = 0; - nPointDomain = 0; +CFEASolver::CFEASolver(LINEAR_SOLVER_MODE mesh_deform_mode) : CFEASolverBase(mesh_deform_mode) { Total_CFEA = 0.0; WAitken_Dyn = 0.0; WAitken_Dyn_tn1 = 0.0; - element_container = new CElement** [MAX_TERMS](); - for (unsigned short iTerm = 0; iTerm < MAX_TERMS; iTerm++) - element_container[iTerm] = new CElement* [MAX_FE_KINDS*omp_get_max_threads()](); - topol_filter_applied = false; element_based = false; initial_calc = true; } -CFEASolver::CFEASolver(CGeometry *geometry, CConfig *config) : CSolver() { +CFEASolver::CFEASolver(CGeometry *geometry, CConfig *config) : CFEASolverBase(geometry, config) { bool dynamic = (config->GetTime_Domain()); @@ -72,20 +59,8 @@ CFEASolver::CFEASolver(CGeometry *geometry, CConfig *config) : CSolver() { topol_filter_applied = false; initial_calc = true; - nElement = geometry->GetnElem(); - nDim = geometry->GetnDim(); - nMarker = geometry->GetnMarker(); - - nPoint = geometry->GetnPoint(); - nPointDomain = geometry->GetnPointDomain(); - /*--- Here is where we assign the kind of each element ---*/ - /*--- First level: different possible terms of the equations ---*/ - element_container = new CElement** [MAX_TERMS](); - for (unsigned short iTerm = 0; iTerm < MAX_TERMS; iTerm++) - element_container[iTerm] = new CElement* [MAX_FE_KINDS*omp_get_max_threads()](); - SU2_OMP_PARALLEL { const int offset = omp_get_thread_num()*MAX_FE_KINDS; @@ -242,16 +217,6 @@ CFEASolver::CFEASolver(CGeometry *geometry, CConfig *config) : CSolver() { CFEASolver::~CFEASolver(void) { - if (element_container != nullptr) { - for (unsigned int iVar = 0; iVar < MAX_TERMS; iVar++) { - for (unsigned int jVar = 0; jVar < MAX_FE_KINDS*omp_get_max_threads(); jVar++) { - delete element_container[iVar][jVar]; - } - delete [] element_container[iVar]; - } - delete [] element_container; - } - if (element_properties != nullptr) { for (unsigned long iElem = 0; iElem < nElement; iElem++) delete element_properties[iElem]; @@ -260,8 +225,6 @@ CFEASolver::~CFEASolver(void) { delete [] iElem_iDe; - delete nodes; - if (LockStrategy) { for (unsigned long iPoint = 0; iPoint < nPoint; iPoint++) omp_destroy_lock(&UpdateLocks[iPoint]); @@ -584,42 +547,7 @@ void CFEASolver::Set_VertexEliminationSchedule(CGeometry *geometry, const vector } } - const unordered_set markerPoints(myPoints.begin(), myPoints.end()); - - vector numPoints(size); - unsigned long num = myPoints.size(); - SU2_MPI::Allgather(&num, 1, MPI_UNSIGNED_LONG, numPoints.data(), 1, MPI_UNSIGNED_LONG, SU2_MPI::GetComm()); - - /*--- Global to local map for the halo points of the rank (not covered by the CGeometry map). ---*/ - unordered_map Global2Local; - for (auto iPoint = nPointDomain; iPoint < nPoint; ++iPoint) { - Global2Local[geometry->nodes->GetGlobalIndex(iPoint)] = iPoint; - } - - /*--- Populate elimination list. ---*/ - ExtraVerticesToEliminate.clear(); - - for (int i = 0; i < size; ++i) { - /*--- Send our point list. ---*/ - if (rank == i) { - SU2_MPI::Bcast(myPoints.data(), numPoints[i], MPI_UNSIGNED_LONG, rank, SU2_MPI::GetComm()); - continue; - } - - /*--- Receive point list. ---*/ - vector theirPoints(numPoints[i]); - SU2_MPI::Bcast(theirPoints.data(), numPoints[i], MPI_UNSIGNED_LONG, i, SU2_MPI::GetComm()); - - for (auto iPointGlobal : theirPoints) { - /*--- Check if the rank has the point. ---*/ - auto it = Global2Local.find(iPointGlobal); - if (it == Global2Local.end()) continue; - - /*--- If the point is not covered by this rank's markers, mark it for elimination. ---*/ - if (markerPoints.count(iPointGlobal) == 0) - ExtraVerticesToEliminate.push_back(it->second); - } - } + CommunicateExtraEliminationVertices(geometry, myPoints); } diff --git a/SU2_CFD/src/solvers/CFEASolverBase.cpp b/SU2_CFD/src/solvers/CFEASolverBase.cpp new file mode 100644 index 000000000000..9785251a9497 --- /dev/null +++ b/SU2_CFD/src/solvers/CFEASolverBase.cpp @@ -0,0 +1,116 @@ +/*! + * \file CFEASolverBase.cpp + * \brief Common class template for FEA solvers + * \author T. Dick + * \version 7.2.1 "Blackbird" + * + * SU2 Project Website: https://su2code.github.io + * + * The SU2 Project is maintained by the SU2 Foundation + * (http://su2foundation.org) + * + * Copyright 2012-2021, SU2 Contributors (cf. AUTHORS.md) + * + * SU2 is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * SU2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with SU2. If not, see . + */ + +#include "../../include/solvers/CFEASolverBase.hpp" +#include + +CFEASolverBase::CFEASolverBase(LINEAR_SOLVER_MODE mesh_deform_mode) : CSolver(mesh_deform_mode) { + + nElement = 0; + nDim = 0; + nMarker = 0; + nPoint = 0; + nPointDomain = 0; + + element_container = new CElement** [MAX_TERMS](); + for (unsigned short iTerm = 0; iTerm < MAX_TERMS; iTerm++) + element_container[iTerm] = new CElement* [MAX_FE_KINDS*omp_get_max_threads()](); + +} + +CFEASolverBase::CFEASolverBase(CGeometry *geometry, CConfig *config, LINEAR_SOLVER_MODE mesh_deform_mode) : CSolver(mesh_deform_mode) { + + nElement = geometry->GetnElem(); + nDim = geometry->GetnDim(); + nMarker = geometry->GetnMarker(); + nPoint = geometry->GetnPoint(); + nPointDomain = geometry->GetnPointDomain(); + + /*--- Create the baseline element_container ---*/ + element_container = new CElement** [MAX_TERMS](); + for (unsigned short iTerm = 0; iTerm < MAX_TERMS; iTerm++) + element_container[iTerm] = new CElement* [MAX_FE_KINDS*omp_get_max_threads()](); + +} + +CFEASolverBase::~CFEASolverBase() { + + if (element_container != nullptr) { + for (unsigned int iVar = 0; iVar < MAX_TERMS; iVar++) { + for (unsigned int jVar = 0; jVar < MAX_FE_KINDS*omp_get_max_threads(); jVar++) { + delete element_container[iVar][jVar]; + } + delete [] element_container[iVar]; + } + delete [] element_container; + } + + delete nodes; +} + +void CFEASolverBase::CommunicateExtraEliminationVertices(const CGeometry* geometry, vector& myPoints) { + + /*--- communicate the boundary points ---*/ + + const unordered_set markerPoints(myPoints.begin(), myPoints.end()); + + vector numPoints(size); + unsigned long num = myPoints.size(); + SU2_MPI::Allgather(&num, 1, MPI_UNSIGNED_LONG, numPoints.data(), 1, MPI_UNSIGNED_LONG, SU2_MPI::GetComm()); + + /*--- Global to local map for the halo points of the rank (not covered by the CGeometry map). ---*/ + unordered_map Global2Local; + for (auto iPoint = nPointDomain; iPoint < nPoint; ++iPoint) { + Global2Local[geometry->nodes->GetGlobalIndex(iPoint)] = iPoint; + } + + /*--- Populate elimination list. ---*/ + ExtraVerticesToEliminate.clear(); + + for (int i = 0; i < size; ++i) { + /*--- Send our point list. ---*/ + if (rank == i) { + SU2_MPI::Bcast(myPoints.data(), numPoints[i], MPI_UNSIGNED_LONG, rank, SU2_MPI::GetComm()); + continue; + } + + /*--- Receive point list. ---*/ + vector theirPoints(numPoints[i]); + SU2_MPI::Bcast(theirPoints.data(), numPoints[i], MPI_UNSIGNED_LONG, i, SU2_MPI::GetComm()); + + for (auto iPointGlobal : theirPoints) { + /*--- Check if the rank has the point. ---*/ + auto it = Global2Local.find(iPointGlobal); + if (it == Global2Local.end()) continue; + + /*--- If the point is not covered by this rank's markers, mark it for elimination. ---*/ + if (markerPoints.count(iPointGlobal) == 0) + ExtraVerticesToEliminate.push_back(it->second); + } + } + +} diff --git a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp index 009527babcfe..d941769c8202 100644 --- a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp +++ b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp @@ -1,5 +1,5 @@ /*! - * \file CSolverGradientSmoothing.cpp + * \file CGradientSmoothing.cpp * \brief Main solver routines for the gradient smoothing problem. * \author T. Dick * \version 7.2.1 "Blackbird" @@ -28,10 +28,8 @@ #include "../../include/solvers/CGradientSmoothingSolver.hpp" #include "../../include/variables/CSobolevSmoothingVariable.hpp" #include -#include -#include -CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig *config) : CSolver(LINEAR_SOLVER_MODE::GRADIENT_MODE) { +CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig *config) : CFEASolverBase(LINEAR_SOLVER_MODE::GRADIENT_MODE) { unsigned int iDim, marker_count = 0; unsigned long iPoint; @@ -99,16 +97,13 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig } } - /*--- initializations for the debug mode ---*/ - if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::DEBUG) { - auxVec.Initialize(nPoint, nPointDomain, nDim, 1.0); - } - /*--- vectors needed for projection when working on the complete system ---*/ - activeCoord.Initialize(nPoint, nPointDomain, nDim, 0.0); - helperVecIn.Initialize(nPoint, nPointDomain, nDim, 0.0); - helperVecOut.Initialize(nPoint, nPointDomain, nDim, 0.0); - helperVecAux.Initialize(nPoint, nPointDomain, nDim, 0.0); + if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::PARAM_LEVEL_COMPLETE || config->GetSobMode() == ENUM_SOBOLEV_MODUS::ONLY_GRAD) { + activeCoord.Initialize(nPoint, nPointDomain, nDim, 0.0); + helperVecIn.Initialize(nPoint, nPointDomain, nDim, 0.0); + helperVecOut.Initialize(nPoint, nPointDomain, nDim, 0.0); + helperVecAux.Initialize(nPoint, nPointDomain, nDim, 0.0); + } /*--- Initialize the CVariable structure holding solution data ---*/ nodes = new CSobolevSmoothingVariable(nPoint, nDim, config); @@ -160,7 +155,7 @@ CGradientSmoothingSolver::~CGradientSmoothingSolver(void) { void CGradientSmoothingSolver::ApplyGradientSmoothingVolume(CGeometry* geometry, CNumerics* numerics, const CConfig* config) { /*--- current dimension if we run consecutive on each dimension ---*/ - dir = 0; + unsigned int iDim = 0; /*--- Set vector and sparse matrix to 0 ---*/ LinSysSol.SetValZero(); @@ -172,7 +167,9 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingVolume(CGeometry* geometry, /*--- Impose boundary conditions to the RHS and solve the system. ---*/ if (config->GetSmoothSepDim()) { - for (dir = 0; dir < nDim ; dir++) { + for (iDim = 0; iDim < nDim ; iDim++) { + + SetCurrentDim(iDim); Compute_Residual(geometry, config); @@ -277,16 +274,16 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CNu } else { /*--- Forward evaluation of the mesh deformation ---*/ - WriteVector2Geometry(geometry,config, helperVecIn); + WriteVectorToGeometry(geometry, helperVecIn); grid_movement->SetVolume_Deformation(geometry, config, false, true, true); - ReadVector2Geometry(geometry,config, helperVecIn); + ReadVectorToGeometry(geometry, helperVecIn); CSysMatrixComms::Initiate(helperVecIn, geometry, config, SOLUTION_MATRIX); CSysMatrixComms::Complete(helperVecIn, geometry, config, SOLUTION_MATRIX); mat_vec(helperVecIn, helperVecAux); - /*--- Delete entries from halo cells, otherwise we get errors for parallel computations ---*/ + /*--- Only consider values inside the domain for the output of the matrix vector product ---*/ for (iPoint = 0; iPoint < geometry->GetnPointDomain(); iPoint++) { for (iDim = 0; iDim < nDim; iDim++) { helperVecOut(iPoint,iDim) = helperVecAux(iPoint,iDim); @@ -294,9 +291,9 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CNu } /*--- Forward evaluation of the mesh deformation ---*/ - WriteVector2Geometry(geometry,config, helperVecOut); + WriteVectorToGeometry(geometry, helperVecOut); grid_movement->SetVolume_Deformation(geometry, config, false, true, false); - ReadVector2Geometry(geometry,config, helperVecOut); + ReadVectorToGeometry(geometry, helperVecOut); } @@ -335,7 +332,7 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CNu void CGradientSmoothingSolver::Compute_StiffMatrix(CGeometry* geometry, CNumerics* numerics, const CConfig* config) { unsigned long iElem, iNode; unsigned int iDim, jDim, nNodes = 0, NelNodes, jNode; - std::vector indexNode(MAXNNODE_3D, 0.0); + std::array indexNode; su2double val_Coord, HiHj = 0.0; int EL_KIND = 0; su2activematrix DHiDHj; @@ -384,7 +381,7 @@ void CGradientSmoothingSolver::Compute_StiffMatrix(CGeometry* geometry, CNumeric HiHj = element_container[GRAD_TERM][EL_KIND]->Get_HiHj(iNode, jNode); if (config->GetSmoothSepDim()) { - Jacobian_block[0][0] = DHiDHj[dir][dir] + HiHj; + Jacobian_block[0][0] = DHiDHj[GetCurrentDim()][GetCurrentDim()] + HiHj; Jacobian.AddBlock(indexNode[iNode], indexNode[jNode], Jacobian_block); } else { @@ -408,8 +405,8 @@ void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry* geometry, unsigned int nSurfDim) { unsigned long iElem, iPoint, iVertex, iDim, jDim, iSurfDim; unsigned int iNode, jNode, nNodes = 0, NelNodes; - std::vector indexNode(MAXNNODE_2D, 0.0); - std::vector indexVertex(MAXNNODE_2D, 0.0); + std::array indexNode; + std::array indexVertex; int EL_KIND = 0; su2double val_Coord, HiHj = 0.0; su2activematrix DHiDHj; @@ -508,7 +505,7 @@ void CGradientSmoothingSolver::Compute_Residual(CGeometry* geometry, const CConf unsigned long iElem; unsigned int iDim, iNode, nNodes = 0; int EL_KIND = 0; - std::vector indexNode(MAXNNODE_3D, 0.0); + std::array indexNode; su2double Weight, Jac_X, val_Coord; for (iElem = 0; iElem < geometry->GetnElem(); iElem++) { @@ -541,21 +538,12 @@ void CGradientSmoothingSolver::Compute_Residual(CGeometry* geometry, const CConf for (unsigned int iNode = 0; iNode < nNodes; iNode++) { if (config->GetSmoothSepDim()) { - if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::DEBUG) { - Residual[dir] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode,iGauss) * (auxVec.GetBlock(indexNode[iNode]))[dir]; - LinSysRes.AddBlock(indexNode[iNode], &Residual[dir]); - } else { - Residual[dir] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode,iGauss) * nodes->GetSensitivity(indexNode[iNode], dir); - LinSysRes.AddBlock(indexNode[iNode], &Residual[dir]); - } - + Residual[GetCurrentDim()] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode,iGauss) * nodes->GetSensitivity(indexNode[iNode], GetCurrentDim()); + LinSysRes.AddBlock(indexNode[iNode], &Residual[GetCurrentDim()]); } else { for (iDim = 0; iDim < nDim; iDim++) { - if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::DEBUG) { - Residual[iDim] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode,iGauss) * (auxVec.GetBlock(indexNode[iNode]))[iDim]; - } else { - Residual[iDim] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode,iGauss) * nodes->GetSensitivity(indexNode[iNode], iDim); - } + Residual[iDim] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode,iGauss) * nodes->GetSensitivity(indexNode[iNode], iDim); + } LinSysRes.AddBlock(indexNode[iNode], Residual); } @@ -574,8 +562,8 @@ void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry* geometry, con unsigned long iElem, iPoint, iVertex; unsigned int iDim, iNode, nNodes = 0; int EL_KIND = 0; - std::vector indexNode(MAXNNODE_2D, 0.0); - std::vector indexVertex(MAXNNODE_2D, 0.0); + std::array indexNode; + std::array indexVertex; su2double Weight, Jac_X, normalSens = 0.0, norm, val_Coord; su2double* normal = NULL; @@ -627,11 +615,7 @@ void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry* geometry, con } for (iDim = 0; iDim < nDim; iDim++) { - if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::DEBUG) { - normalSens += normal[iDim] * (auxVec.GetBlock(indexNode[iNode]))[iDim]; - } else { - normalSens += normal[iDim] * nodes->GetSensitivity(indexNode[iNode], iDim); - } + normalSens += normal[iDim] * nodes->GetSensitivity(indexNode[iNode], iDim); } Residual[0] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode,iGauss) * normalSens; @@ -749,11 +733,11 @@ void CGradientSmoothingSolver::CalculateOriginalGradient(CGeometry *geometry, CV if (rank == MASTER_NODE) cout << endl << "Calculating the original DV gradient." << endl; - WriteSens2Geometry(geometry,config); + WriteSensToGeometry(geometry); grid_movement->SetVolume_Deformation(geometry, config, false, true); - ReadVector2Geometry(geometry,config, helperVecOut); + ReadVectorToGeometry(geometry, helperVecOut); ProjectMeshToDV(geometry, helperVecOut, deltaP, activeCoord, config); @@ -967,27 +951,27 @@ void CGradientSmoothingSolver::WriteSensitivity(CGeometry* geometry, const CConf normal[iDim] = normal[iDim] / norm; } for (iDim = 0; iDim < nDim; iDim++) { - this->GetNodes()->SetSensitivity(iPoint, iDim, normal[iDim]*LinSysSol[iPoint]); + nodes->SetSensitivity(iPoint, iDim, normal[iDim]*LinSysSol[iPoint]); } } } } else { if (config->GetSmoothSepDim()) { for (iPoint = 0; iPoint < nPoint; iPoint++) { - this->GetNodes()->SetSensitivity(iPoint, dir, LinSysSol[iPoint]); + nodes->SetSensitivity(iPoint, GetCurrentDim(), LinSysSol[iPoint]); } } else { for (iPoint = 0; iPoint < nPoint; iPoint++) { for (iDim = 0; iDim < nDim; iDim++) { total_index = iPoint*nDim + iDim; - this->GetNodes()->SetSensitivity(iPoint, iDim, LinSysSol[total_index]); + nodes->SetSensitivity(iPoint, iDim, LinSysSol[total_index]); } } } } } -void CGradientSmoothingSolver::WriteSens2Geometry(CGeometry* geometry, const CConfig* config) { +void CGradientSmoothingSolver::WriteSensToGeometry(CGeometry* geometry) const { unsigned long iPoint; unsigned int iDim; for (iPoint = 0; iPoint < nPoint; iPoint++) { @@ -997,7 +981,7 @@ void CGradientSmoothingSolver::WriteSens2Geometry(CGeometry* geometry, const CCo } } -void CGradientSmoothingSolver::ReadSens2Geometry(CGeometry* geometry, const CConfig* config) { +void CGradientSmoothingSolver::ReadSensFromGeometry(const CGeometry* geometry) { unsigned long iPoint; unsigned int iDim; for (iPoint = 0; iPoint < nPoint; iPoint++) { @@ -1007,24 +991,22 @@ void CGradientSmoothingSolver::ReadSens2Geometry(CGeometry* geometry, const CCon } } -void CGradientSmoothingSolver::WriteVector2Geometry(CGeometry* geometry, const CConfig* config, - CSysVector& vector) { +void CGradientSmoothingSolver::WriteVectorToGeometry(CGeometry* geometry, const CSysVector& vector) const { unsigned long iPoint; unsigned int iDim; for (iPoint = 0; iPoint < nPoint; iPoint++) { for (iDim = 0; iDim < nDim; iDim++) { - geometry->SetSensitivity(iPoint,iDim, vector[iPoint*nDim+iDim]); + geometry->SetSensitivity(iPoint,iDim, vector(iPoint, iDim)); } } } -void CGradientSmoothingSolver::ReadVector2Geometry(CGeometry* geometry, const CConfig* config, - CSysVector& vector) { +void CGradientSmoothingSolver::ReadVectorToGeometry(const CGeometry* geometry, CSysVector& vector) { unsigned long iPoint; unsigned int iDim; for (iPoint = 0; iPoint < nPoint; iPoint++) { for (iDim = 0; iDim < nDim; iDim++) { - vector[iPoint*nDim+iDim] = SU2_TYPE::GetValue(geometry->GetSensitivity(iPoint,iDim)); + vector(iPoint, iDim) = SU2_TYPE::GetValue(geometry->GetSensitivity(iPoint,iDim)); } } } @@ -1076,47 +1058,9 @@ void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry* geometry } } - /*--- communicate the boundary points ---*/ - - const unordered_set markerPoints(myPoints.begin(), myPoints.end()); - - vector numPoints(size); - unsigned long num = myPoints.size(); - SU2_MPI::Allgather(&num, 1, MPI_UNSIGNED_LONG, numPoints.data(), 1, MPI_UNSIGNED_LONG, SU2_MPI::GetComm()); - - /*--- Global to local map for the halo points of the rank (not covered by the CGeometry map). ---*/ - unordered_map Global2Local; - for (auto iPoint = nPointDomain; iPoint < nPoint; ++iPoint) { - Global2Local[geometry->nodes->GetGlobalIndex(iPoint)] = iPoint; - } - - /*--- Populate elimination list. ---*/ - ExtraVerticesToEliminate.clear(); - - for (int i = 0; i < size; ++i) { - /*--- Send our point list. ---*/ - if (rank == i) { - SU2_MPI::Bcast(myPoints.data(), numPoints[i], MPI_UNSIGNED_LONG, rank, SU2_MPI::GetComm()); - continue; - } - - /*--- Receive point list. ---*/ - vector theirPoints(numPoints[i]); - SU2_MPI::Bcast(theirPoints.data(), numPoints[i], MPI_UNSIGNED_LONG, i, SU2_MPI::GetComm()); - - for (auto iPointGlobal : theirPoints) { - /*--- Check if the rank has the point. ---*/ - auto it = Global2Local.find(iPointGlobal); - if (it == Global2Local.end()) continue; - - /*--- If the point is not covered by this rank's markers, mark it for elimination. ---*/ - if (markerPoints.count(iPointGlobal) == 0) - ExtraVerticesToEliminate.push_back(it->second); - } - } + CommunicateExtraEliminationVertices(geometry, myPoints); /*--- eliminate the extra vertices ---*/ - for (auto iPoint : ExtraVerticesToEliminate) { Jacobian.EnforceSolutionAtNode(iPoint, LinSysSol.GetBlock(iPoint), LinSysRes); } diff --git a/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp b/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp index 613a0c8d1364..23666c88b3d6 100644 --- a/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp +++ b/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp @@ -39,7 +39,6 @@ CSobolevSmoothingVariable::CSobolevSmoothingVariable(unsigned long npoint, unsig for (unsigned long iPoint=0; iPointSetVolume_Deformation(geometry_container[iZone][INST_0], config_container[iZone], false, true); + + if(config_container[iZone]->GetDiscrete_Adjoint() && config_container[iZone]->GetSmoothGradient() && + config_container[iZone]->GetSobMode() == ENUM_SOBOLEV_MODUS::MESH_LEVEL) { + DerivativeTreatment_MeshSensitivity(geometry_container[iZone][INST_0], config_container[iZone], grid_movement[iZone]); + } else { + grid_movement[iZone]->SetVolume_Deformation(geometry_container[iZone][INST_0], config_container[iZone], false, true); + } } } if (config_container[ZONE_0]->GetDiscrete_Adjoint()) { - - DerivativeTreatment_MeshSensitivity(geometry_container[ZONE_0][INST_0], config_container[ZONE_0]); - if (rank == MASTER_NODE) cout << "\n------------------------ Mesh sensitivity Output ------------------------" << endl; SetSensitivity_Files(geometry_container, config_container, nZone); @@ -965,10 +968,17 @@ void SetSensitivity_Files(CGeometry ***geometry, CConfig **config, unsigned shor } -void DerivativeTreatment_MeshSensitivity(CGeometry *geometry, CConfig *config) { +void DerivativeTreatment_MeshSensitivity(CGeometry *geometry, CConfig *config, CVolumetricMovement *grid_movement) { int rank = SU2_MPI::GetRank(); + /*--- Warning if choosen mode is unsupported. + * This is the default option if the user has not specified a mode in the config file. ---*/ + if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::NONE) { + if (rank == MASTER_NODE) cout << "Unsupported operation modus for the Sobolev Smoothing Solver." << endl; + return; + } + /*-- Construct the smoothing solver and numerics ---*/ CSolver* solver = new CGradientSmoothingSolver(geometry, config); CNumerics* numerics; @@ -980,43 +990,66 @@ void DerivativeTreatment_MeshSensitivity(CGeometry *geometry, CConfig *config) { if (rank == MASTER_NODE) cout << "Sobolev Smoothing of derivatives is active." << endl; - /*--- Get the sensitivities from the geometry class to work with. ---*/ - solver->ReadSens2Geometry(geometry,config); - /*--- Apply the smoothing procedure on the mesh level. ---*/ - if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::MESH_LEVEL || config->GetSobMode() == ENUM_SOBOLEV_MODUS::DEBUG) { + if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::MESH_LEVEL) { if (rank == MASTER_NODE) cout << " working on mesh level" << endl; /*--- Work with the surface derivatives. ---*/ if (config->GetSmoothOnSurface()) { + /*--- Project to surface and then smooth on surface. ---*/ + grid_movement->SetVolume_Deformation(geometry, config, false, true); + + /*--- Get the sensitivities from the geometry class to work with. ---*/ + solver->ReadSensFromGeometry(geometry); + /*--- Select DV marker, or NOT_AVAILABLE if none is specified. ---*/ - unsigned long dvMarker = BC_TYPE::NOT_AVAILABLE; + unsigned long ndvMarker=0, dvMarker = BC_TYPE::NOT_AVAILABLE; for (unsigned short iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { if ( config->GetMarker_All_DV(iMarker) == YES ) { dvMarker = iMarker; + ++ndvMarker; } } + if(ndvMarker>1) { + SU2_MPI::Error("Sobolev smoothing in surface mode only works with one marker at a time.",CURRENT_FUNCTION); + } + solver->ApplyGradientSmoothingSurface(geometry, numerics, config, dvMarker); + /*--- After appling the solver write the results back ---*/ + solver->WriteSensToGeometry(geometry); + /*--- Work with the volume derivatives. ---*/ } else { + + /*--- Get the sensitivities from the geometry class to work with. ---*/ + solver->ReadSensFromGeometry(geometry); + solver->ApplyGradientSmoothingVolume(geometry, numerics, config); - } - /*--- After appling the solver write the results back ---*/ - solver->WriteSens2Geometry(geometry,config); + /*--- After appling the solver write the results back ---*/ + solver->WriteSensToGeometry(geometry); + + /*--- Projection is applied after smoothing. ---*/ + grid_movement->SetVolume_Deformation(geometry, config, false, true); + } - /*--- Warning if choosen mode is unsupported. ---*/ - } else if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::NO_MODUS) { - if (rank == MASTER_NODE) cout << "Unsupported operation modus for the Sobolev Smoothing Solver." << endl; } + } void DerivativeTreatment_Gradient(CGeometry *geometry, CConfig *config, CVolumetricMovement* grid_movement, CSurfaceMovement *surface_movement, su2double** Gradient) { int rank = SU2_MPI::GetRank(); + /*--- Warning if choosen mode is unsupported. + * This is the default option if the user has not specified a mode in the config file. ---*/ + if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::NONE) { + if (rank == MASTER_NODE) cout << "Unsupported operation modus for the Sobolev Smoothing Solver." << endl; + return; + } + /*-- Construct the smoothing solver and numerics ---*/ CSolver* solver = new CGradientSmoothingSolver(geometry, config); CNumerics* numerics; @@ -1029,18 +1062,16 @@ void DerivativeTreatment_Gradient(CGeometry *geometry, CConfig *config, CVolumet if (rank == MASTER_NODE) cout << "Sobolev Smoothing of derivatives is active." << endl; /*--- Get the sensitivities from the geometry class to work with. ---*/ - solver->ReadSens2Geometry(geometry,config); + solver->ReadSensFromGeometry(geometry); /*--- Apply the smoothing procedure on the DV level. ---*/ if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::PARAM_LEVEL_COMPLETE) { solver->ApplyGradientSmoothingDV(geometry, numerics, surface_movement, grid_movement, config, Gradient); /*--- For some application, e.g. OneShot, we might only need the original gradient. ---*/ - } else if (config->GetSobMode() == ONLY_GRAD) { + } else if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::ONLY_GRAD) { solver->RecordTapeAndCalculateOriginalGradient(geometry, surface_movement, grid_movement, config, Gradient); - /*--- Warning if choosen mode is unsupported. ---*/ - } else if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::NO_MODUS) { - if (rank == MASTER_NODE) cout << "Unsupported operation modus for the Sobolev Smoothing Solver." << endl; } + } diff --git a/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg b/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg index 1fba52cb8142..3bd103f1fc78 100644 --- a/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg +++ b/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg @@ -73,7 +73,7 @@ TIME_DISCRE_FLOW= EULER_IMPLICIT SMOOTH_GRADIENT= YES % % Mode how the Sobolev method is applied to the sensitivities. -% - NO_MODUS (Default option if none is choosen, does nothing.) +% - NONE (Default option if none is choosen, does nothing.) % - PARAM_LEVEL_COMPLETE (Apply Sobolev smoothing to the projected gradient, w.r.t. the design values.) % - MESH_LEVEL (Apply Sobolev smoothing to the mesh sensitivities, either in the volume or on the surface.) % - DEBUG (Flag to test the finite elements asembly of the Laplace-Beltrami operator.) @@ -87,7 +87,6 @@ SMOOTHING_EPSILON1= 1.0 SMOOTHING_EPSILON2= 0.625 % % Switch for applying the Sobolev smoothing to the design surface mesh, i.e., instead of the whole volume mesh (NO, YES). -% Only works with SOBOLEV_MODE=MESH_LEVEL. SMOOTH_ON_SURFACE= YES % % Switch for applying the solver to each space dimension of the meshsensitivity seperately. @@ -110,10 +109,10 @@ MARKER_SOBOLEVBC= ( airfoil ) HESS_OBJFUNC_FILENAME= of_hess.dat % % Linear solver for the finite elements system on the mesh level, -% supports the same solver options as LINEAR_SOLVER, e.g. (FGMRES, RESTARTED_FGMRES, BCGSTAB), +% supports the same solver options as LINEAR_SOLVER. GRAD_LINEAR_SOLVER= FGMRES % -% Preconditioner of the Krylov linear solver (ILU, LU_SGS, JACOBI) +% Preconditioner of the Krylov linear solver. GRAD_LINEAR_SOLVER_PREC= ILU % % Number of linear solver iterations for the Sobolev smoothing solver diff --git a/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg b/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg index 0eb5e5763e1d..49c35953ee68 100644 --- a/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg +++ b/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg @@ -90,7 +90,7 @@ TIME_DISCRE_FLOW= EULER_IMPLICIT SMOOTH_GRADIENT= YES % % Mode how the Sobolev method is applied to the sensitivities. -% - NO_MODUS (Default option if none is choosen, does nothing.) +% - NONE (Default option if none is choosen, does nothing.) % - PARAM_LEVEL_COMPLETE (Apply Sobolev smoothing to the projected gradient, w.r.t. the design values.) % - MESH_LEVEL (Apply Sobolev smoothing to the mesh sensitivities, either in the volume or on the surface.) % - DEBUG (Flag to test the finite elements asembly of the Laplace-Beltrami operator.) @@ -104,7 +104,6 @@ SMOOTHING_EPSILON1= 51.8116714655595 SMOOTHING_EPSILON2= 0.700463534712351 % % Switch for applying the Sobolev smoothing to the design surface mesh, i.e., instead of the whole volume mesh (NO, YES). -% Only works with SOBOLEV_MODE=MESH_LEVEL. SMOOTH_ON_SURFACE= YES % % Switch for applying the solver to each space dimension of the meshsensitivity seperately. @@ -127,11 +126,10 @@ MARKER_SOBOLEVBC= ( airfoil ) HESS_OBJFUNC_FILENAME= of_hess.dat % % Linear solver for the finite elements system on the mesh level, -% supports the same solver options as LINEAR_SOLVER, e.g. -% BCGSTAB, FGMRES, RESTARTED_FGMRES, CONJUGATE_GRADIENT (self-adjoint problems only), SMOOTHER. +% supports the same solver options as LINEAR_SOLVER. GRAD_LINEAR_SOLVER= FGMRES % -% Preconditioner of the Krylov linear solver (ILU, LU_SGS, JACOBI) +% Preconditioner of the Krylov linear solver. GRAD_LINEAR_SOLVER_PREC= ILU % % Number of linear solver iterations for the Sobolev smoothing solver From f7381728e25a3bf0c3fdfe57d5f3083f9a165892 Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Wed, 22 Dec 2021 16:42:49 +0100 Subject: [PATCH 18/26] Various suggestions from code review. - Adding a common CFeaSolverBase class for finite elements solvers. - making functions private and variables constant in CGradientSmoothingSolver. - reworked the storage of boundary vertices in CSobolevSmoothingVariable. --- Common/include/linear_algebra/CSysMatrix.hpp | 36 ++++++++ SU2_CFD/include/solvers/CFEASolver.hpp | 11 +++ SU2_CFD/include/solvers/CFEASolverBase.hpp | 11 --- .../solvers/CGradientSmoothingSolver.hpp | 54 ++++++----- .../variables/CSobolevSmoothingVariable.hpp | 16 +++- SU2_CFD/include/variables/CVariable.hpp | 10 -- SU2_CFD/src/solvers/CFEASolver.cpp | 2 + SU2_CFD/src/solvers/CFEASolverBase.cpp | 1 - .../src/solvers/CGradientSmoothingSolver.cpp | 91 +++++-------------- .../variables/CSobolevSmoothingVariable.cpp | 20 ++-- 10 files changed, 125 insertions(+), 127 deletions(-) diff --git a/Common/include/linear_algebra/CSysMatrix.hpp b/Common/include/linear_algebra/CSysMatrix.hpp index bd9de060fade..1b889e9c6d66 100644 --- a/Common/include/linear_algebra/CSysMatrix.hpp +++ b/Common/include/linear_algebra/CSysMatrix.hpp @@ -498,6 +498,42 @@ class CSysMatrix { AddBlock(block_i, block_j, val_block, OtherType(-1)); } + /*! + * \brief Set the value of a scaled block in the sparse matrix. + * \note This is an templated overload for C2Dcontainer specialization su2matrix. + * It assumes that MatrixType supports a member type Scalar and access operator[][]. + * If the template param Overwrite is false we add to the block (bij += alpha*b). + * \param[in] block_i - Row index. + * \param[in] block_j - Column index. + * \param[in] val_block - Block to set to A(i, j). + * \param[in] alpha - Scale factor. + */ + template + inline void SetBlock(unsigned long block_i, unsigned long block_j, MatrixType& val_block, + typename MatrixType::Scalar alpha = 1.0) { + auto mat_ij = GetBlock(block_i, block_j); + if (!mat_ij) return; + for (auto iVar = 0ul; iVar < nVar; ++iVar) { + for (auto jVar = 0ul; jVar < nEqn; ++jVar) { + *mat_ij = (Overwrite ? ScalarType(0) : *mat_ij) + PassiveAssign(alpha * val_block[iVar][jVar]); + ++mat_ij; + } + } + } + + /*! + * \brief Adds a scaled block to the sparse matrix (see SetBlock). + * \param[in] block_i - Row index. + * \param[in] block_j - Column index. + * \param[in] val_block - Block to add to A(i, j). + * \param[in] alpha - Scale factor. + */ + template + inline void AddBlock(unsigned long block_i, unsigned long block_j, MatrixType& val_block, + typename MatrixType::Scalar alpha = 1.0) { + SetBlock(block_i, block_j, val_block, alpha); + } + /*! * \brief Update 4 blocks ii, ij, ji, jj (add to i* sub from j*). * \note This method assumes an FVM-type sparse pattern. diff --git a/SU2_CFD/include/solvers/CFEASolver.hpp b/SU2_CFD/include/solvers/CFEASolver.hpp index da4e84b52acf..cd924c4970c9 100644 --- a/SU2_CFD/include/solvers/CFEASolver.hpp +++ b/SU2_CFD/include/solvers/CFEASolver.hpp @@ -99,6 +99,17 @@ class CFEASolver : public CFEASolverBase { bool topol_filter_applied; /*!< \brief True if density filtering has been performed. */ bool initial_calc = true; /*!< \brief Becomes false after first call to Preprocessing. */ + /*! + * \brief The highest level in the variable hierarchy this solver can safely use, + * CVariable is the common denominator between the FEA and Mesh deformation variables. + */ + CVariable* nodes = nullptr; + + /*! + * \brief Return nodes to allow CSolver::base_nodes to be set. + */ + inline CVariable* GetBaseClassPointerToNodes() override { return nodes; } + /*! * \brief Get the element container index and number of nodes of a given VTK type. * \param[in] VTK_Type - Type of element. diff --git a/SU2_CFD/include/solvers/CFEASolverBase.hpp b/SU2_CFD/include/solvers/CFEASolverBase.hpp index 6578c8bc743a..907353da2ef2 100644 --- a/SU2_CFD/include/solvers/CFEASolverBase.hpp +++ b/SU2_CFD/include/solvers/CFEASolverBase.hpp @@ -47,17 +47,6 @@ class CFEASolverBase : public CSolver { vector ExtraVerticesToEliminate; /*!< Extra vertices for row/column elimination, see CommunicateExtraEliminationVertices. */ - /*! - * \brief The highest level in the variable hierarchy all derived solvers can safely use, - * CVariable is the common denominator between the FEA, Mesh deformation, and smoothing variables. - */ - CVariable* nodes = nullptr; - - /*! - * \brief Return nodes to allow CSolver::base_nodes to be set. - */ - inline CVariable* GetBaseClassPointerToNodes() override { return nodes; } - public: /*! * \brief Constructor of the class. diff --git a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp index 4bf218fb5375..00eb2c737fef 100644 --- a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp +++ b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp @@ -29,7 +29,8 @@ #include "../../../Common/include/linear_algebra/CMatrixVectorProduct.hpp" #include "../../../Common/include/toolboxes/CSquareMatrixCM.hpp" -#include "../../../SU2_CFD/include/solvers/CFEASolverBase.hpp" +#include "../variables/CSobolevSmoothingVariable.hpp" +#include "CFEASolverBase.hpp" /*! \class CGradientSmoothingSolver * \brief Main class for defining a gradient smoothing. @@ -65,6 +66,17 @@ class CGradientSmoothingSolver final : public CFEASolverBase { CSquareMatrixCM hessian; /*!< \brief The approximated Hessian with respect to the design variables. */ + /*! + * \brief The highest level in the variable hierarchy all derived solvers can safely use, + * CVariable is the common denominator between the FEA and Mesh deformationd variables. + */ + CSobolevSmoothingVariable* nodes = nullptr; + + /*! + * \brief Return nodes to allow CSolver::base_nodes to be set. + */ + inline CVariable* GetBaseClassPointerToNodes() override { return nodes; } + public: /*! * \brief Constructor of the class. @@ -129,12 +141,12 @@ class CGradientSmoothingSolver final : public CFEASolverBase { /*! * \brief Set Dirichlet boundary conditions */ - void BC_Dirichlet(CGeometry* geometry, const CConfig* config, unsigned int val_marker); + void BC_Dirichlet(const CGeometry* geometry, const CConfig* config, unsigned int val_marker); /*! * \brief Set Dirichlet boundary conditions for the surface solver */ - void BC_Surface_Dirichlet(CGeometry* geometry, const CConfig* config, unsigned int val_marker); + void BC_Surface_Dirichlet(const CGeometry* geometry, const CConfig* config, unsigned int val_marker); /*! * \brief Call the linear systems solver @@ -174,7 +186,7 @@ class CGradientSmoothingSolver final : public CFEASolverBase { /*! * \brief write the DV gradient into a file */ - void OutputDVGradient(CConfig *config, string out_file="delta_p.txt"); + void OutputDVGradient(const CConfig* config, string out_file = "delta_p.txt"); /*! * \brief Record a tape containing the parameter Jacobian. @@ -211,18 +223,6 @@ class CGradientSmoothingSolver final : public CFEASolverBase { CSysVector ®isteredCoord, CConfig *config); - /*! - * \brief Extract and set the geometrical sensitivity. - * \param[in] geometry - Geometrical definition of the problem. - * \param[in] config - Definition of the particular problem. - */ - void SetSensitivity(CGeometry *geometry, CConfig *config, CSolver*) override; - - /*! - * \brief Write the solution of the linear solver into the sensitivities of the nodes - */ - void WriteSensitivity(CGeometry* geometry, const CConfig* config, unsigned long val_marker = 0); - /*! * \brief Write the content of sensitivity in the nodes to the sensitivity in the geometry * \param[in] geometry - Geometrical definition of the problem. @@ -235,6 +235,12 @@ class CGradientSmoothingSolver final : public CFEASolverBase { */ void ReadSensFromGeometry(const CGeometry *geometry) override; + private: + /*! + * \brief Write the solution of the linear solver into the sensitivities of the nodes + */ + void WriteSensitivity(CGeometry* geometry, const CConfig* config, unsigned long val_marker = 0); + /*! * \brief Copy sensitivities from a vector into the geometry */ @@ -257,13 +263,6 @@ class CGradientSmoothingSolver final : public CFEASolverBase { return geometry->nodes->GetCoord(indexNode, iDim); } - /*! - * \brief Extract the Coordinates of the element from geometry - */ - su2activematrix GetElementCoordinates(CGeometry *geometry, - std::vector& indexNode, - int EL_KIND = 0); - /*! * \brief Extra entries to eliminate in the linear system */ @@ -289,12 +288,17 @@ class CGradientSmoothingSolver final : public CFEASolverBase { } } -private: - + /*! + * \brief Set the current working dimension, if the seperate dimension option is set. + * \param[in] iDim - the dimension we are currently working in. + */ inline void SetCurrentDim(unsigned int iDim) { curDim=iDim; } + /*! + * \brief Return the current working dimension. + */ inline const unsigned int& GetCurrentDim() const { return curDim; } diff --git a/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp b/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp index ec4479b88153..73aeb41fc054 100644 --- a/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp +++ b/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp @@ -27,13 +27,14 @@ #pragma once -#include "../../../SU2_CFD/include/variables/CVariable.hpp" +#include "../../../Common/include/containers/CVertexMap.hpp" +#include "CVariable.hpp" class CSobolevSmoothingVariable final : public CVariable { public: MatrixType Sensitivity; /*!< Vector holding the derivative of target functional with respect to the coordinates at this node */ - bool* boundary_vertex; /*!< \brief Stores if a point belongs to the boundary of a boundary. */ + CVertexMap BoundaryVertexMap; /*!< \brief Stores if a point belongs to the boundary of a boundary. */ /*! * \brief Constructor of the class. @@ -46,7 +47,7 @@ class CSobolevSmoothingVariable final : public CVariable { /*! * \brief Destructor of the class. */ - ~CSobolevSmoothingVariable(); + ~CSobolevSmoothingVariable() override = default; /*! * \brief Set the sensitivity at the node @@ -65,10 +66,15 @@ class CSobolevSmoothingVariable final : public CVariable { /*! * \brief Mark a point as boundary of a boundary */ - void MarkAsBoundaryPoint(unsigned long iPoint) override; + void MarkAsBoundaryPoint(unsigned long iPoint); /*! * \brief return wether a point is a boundary of a boundary */ - bool GetIsBoundaryPoint(unsigned long iPoint) const override; + bool GetIsBoundaryPoint(unsigned long iPoint) const; + + /*! + * \brief Allocate member variables for points marked as vertex (via "MarkAsBoundaryPoint"). + */ + void AllocateBoundaryVariables(); }; diff --git a/SU2_CFD/include/variables/CVariable.hpp b/SU2_CFD/include/variables/CVariable.hpp index 07fd6957e863..564cd38f4b54 100644 --- a/SU2_CFD/include/variables/CVariable.hpp +++ b/SU2_CFD/include/variables/CVariable.hpp @@ -2242,14 +2242,4 @@ class CVariable { virtual su2double GetSourceTerm_DispAdjoint(unsigned long iPoint, unsigned long iDim) const { return 0.0; } virtual su2double GetSourceTerm_VelAdjoint(unsigned long iPoint, unsigned long iDim) const { return 0.0; } - /*! - * \brief Mark a point as boundary of a design surface boundary - */ - virtual void MarkAsBoundaryPoint(unsigned long iPoint) {} - - /*! - * \brief return wether a point is a boundary of a design surface boundary - */ - virtual bool GetIsBoundaryPoint(unsigned long iPoint) const { return false; } - }; diff --git a/SU2_CFD/src/solvers/CFEASolver.cpp b/SU2_CFD/src/solvers/CFEASolver.cpp index 620c9f1e6c35..b8f2cd979451 100644 --- a/SU2_CFD/src/solvers/CFEASolver.cpp +++ b/SU2_CFD/src/solvers/CFEASolver.cpp @@ -229,6 +229,8 @@ CFEASolver::~CFEASolver(void) { for (unsigned long iPoint = 0; iPoint < nPoint; iPoint++) omp_destroy_lock(&UpdateLocks[iPoint]); } + + delete nodes; } void CFEASolver::HybridParallelInitialization(CGeometry* geometry) { diff --git a/SU2_CFD/src/solvers/CFEASolverBase.cpp b/SU2_CFD/src/solvers/CFEASolverBase.cpp index 9785251a9497..49692fb8f26a 100644 --- a/SU2_CFD/src/solvers/CFEASolverBase.cpp +++ b/SU2_CFD/src/solvers/CFEASolverBase.cpp @@ -69,7 +69,6 @@ CFEASolverBase::~CFEASolverBase() { delete [] element_container; } - delete nodes; } void CFEASolverBase::CommunicateExtraEliminationVertices(const CGeometry* geometry, vector& myPoints) { diff --git a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp index d941769c8202..b778254f24c8 100644 --- a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp +++ b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp @@ -106,7 +106,7 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig } /*--- Initialize the CVariable structure holding solution data ---*/ - nodes = new CSobolevSmoothingVariable(nPoint, nDim, config); + nodes = new CSobolevSmoothingVariable(nPoint, nDim, config); SetBaseClassPointerToNodes(); /*--- Initialize the boundary of the boundary ---*/ @@ -128,6 +128,7 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig marker_count = 0; } } + nodes->AllocateBoundaryVariables(); /*--- vector for the parameter gradient ---*/ deltaP.resize(config->GetnDV_Total(), 0.0); @@ -331,22 +332,13 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CNu void CGradientSmoothingSolver::Compute_StiffMatrix(CGeometry* geometry, CNumerics* numerics, const CConfig* config) { unsigned long iElem, iNode; - unsigned int iDim, jDim, nNodes = 0, NelNodes, jNode; + unsigned int iDim, nNodes = 0, NelNodes, jNode; std::array indexNode; su2double val_Coord, HiHj = 0.0; int EL_KIND = 0; - su2activematrix DHiDHj; - su2double** Jacobian_block; + su2activematrix DHiDHj, Jacobian_block; - /*--- Uses pointer for now to work with CSysMatrix::AddBlock() - * TODO: Change this to a container type ---*/ - Jacobian_block = new su2double*[nDim]; - for (iDim = 0; iDim < nDim; iDim++) { - Jacobian_block[iDim] = new su2double[nDim]; - for (jDim = 0; jDim < nDim; jDim++) { - Jacobian_block[iDim][jDim] = 0.0; - } - } + Jacobian_block.resize(nDim, nDim) = su2double(0.0); /*--- Loops over all the elements ---*/ @@ -394,36 +386,23 @@ void CGradientSmoothingSolver::Compute_StiffMatrix(CGeometry* geometry, CNumeric } } - if (Jacobian_block != nullptr) { - for (iDim = 0; iDim < nDim; iDim++) delete[] Jacobian_block[iDim]; - delete[] Jacobian_block; - } } void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry* geometry, CNumerics* numerics, const CConfig* config, unsigned long val_marker, unsigned int nSurfDim) { - unsigned long iElem, iPoint, iVertex, iDim, jDim, iSurfDim; + unsigned long iElem, iPoint, iVertex, iDim, iSurfDim; unsigned int iNode, jNode, nNodes = 0, NelNodes; std::array indexNode; std::array indexVertex; int EL_KIND = 0; su2double val_Coord, HiHj = 0.0; - su2activematrix DHiDHj; - su2double **Jacobian_block, **mId_Aux; + su2activematrix DHiDHj, Jacobian_block, mId_Aux; - /*--- Uses pointer for now to work with CSysMatrix::AddBlock() - * TODO: Change this to a container type ---*/ - Jacobian_block = new su2double*[nDim]; - mId_Aux = new su2double*[nDim]; + Jacobian_block.resize(nDim, nDim) = su2double(0.0); + mId_Aux.resize(nDim, nDim) = su2double(0.0); for (iDim = 0; iDim < nDim; iDim++) { - Jacobian_block[iDim] = new su2double[nDim]; - mId_Aux[iDim] = new su2double[nDim]; - for (jDim = 0; jDim < nDim; jDim++) { - Jacobian_block[iDim][jDim] = 0.0; - mId_Aux[iDim][jDim] = 0.0; - } - mId_Aux[iDim][iDim] = 1.0; + mId_Aux[iDim][iDim] = su2double(1.0); } vector visited(geometry->GetnPoint(), false); @@ -491,14 +470,6 @@ void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry* geometry, } } - if (Jacobian_block != nullptr) { - for (iDim = 0; iDim < nDim; iDim++) delete[] Jacobian_block[iDim]; - delete[] Jacobian_block; - } - if (mId_Aux != nullptr) { - for (iDim = 0; iDim < nDim; iDim++) delete[] mId_Aux[iDim]; - delete[] mId_Aux; - } } void CGradientSmoothingSolver::Compute_Residual(CGeometry* geometry, const CConfig* config) { @@ -643,7 +614,7 @@ void CGradientSmoothingSolver::Impose_BC(CGeometry* geometry, const CConfig* con } } -void CGradientSmoothingSolver::BC_Dirichlet(CGeometry* geometry, const CConfig* config, unsigned int val_marker) { +void CGradientSmoothingSolver::BC_Dirichlet(const CGeometry* geometry, const CConfig* config, unsigned int val_marker) { unsigned long iPoint, iVertex; const su2double zeros[MAXNDIM] = {0.0}; @@ -660,7 +631,7 @@ void CGradientSmoothingSolver::BC_Dirichlet(CGeometry* geometry, const CConfig* } } -void CGradientSmoothingSolver::BC_Surface_Dirichlet(CGeometry* geometry, const CConfig* config, +void CGradientSmoothingSolver::BC_Surface_Dirichlet(const CGeometry* geometry, const CConfig* config, unsigned int val_marker) { unsigned long iPoint, iVertex; const su2double zeros[MAXNDIM] = {0.0}; @@ -763,8 +734,7 @@ void CGradientSmoothingSolver::RecordTapeAndCalculateOriginalGradient(CGeometry } -void CGradientSmoothingSolver::OutputDVGradient(CConfig *config, string out_file) { - +void CGradientSmoothingSolver::OutputDVGradient(const CConfig* config, string out_file) { unsigned iDV; if (rank == MASTER_NODE) { ofstream delta_p (out_file); @@ -774,7 +744,6 @@ void CGradientSmoothingSolver::OutputDVGradient(CConfig *config, string out_file } delta_p.close(); } - } void CGradientSmoothingSolver::RecordParameterizationJacobian(CGeometry *geometry, CSurfaceMovement *surface_movement, CSysVector& registeredCoord, CConfig *config) { @@ -920,12 +889,22 @@ void CGradientSmoothingSolver::ProjectMeshToDV(CGeometry *geometry, CSysVectorSetSensitivity(iPoint, iDim, nodes->GetSensitivity(iPoint, iDim)); + } + } +} + +void CGradientSmoothingSolver::ReadSensFromGeometry(const CGeometry* geometry) { unsigned long iPoint; unsigned int iDim; for (iPoint = 0; iPoint < nPoint; iPoint++) { for (iDim = 0; iDim < nDim; iDim++) { - // nodes->SetSensitivity(iPoint,iDim, solver->GetNodes()->GetSensitivity(iPoint,iDim)); + nodes->SetSensitivity(iPoint, iDim, geometry->GetSensitivity(iPoint, iDim)); } } } @@ -971,26 +950,6 @@ void CGradientSmoothingSolver::WriteSensitivity(CGeometry* geometry, const CConf } } -void CGradientSmoothingSolver::WriteSensToGeometry(CGeometry* geometry) const { - unsigned long iPoint; - unsigned int iDim; - for (iPoint = 0; iPoint < nPoint; iPoint++) { - for (iDim = 0; iDim < nDim; iDim++) { - geometry->SetSensitivity(iPoint,iDim, nodes->GetSensitivity(iPoint,iDim)); - } - } -} - -void CGradientSmoothingSolver::ReadSensFromGeometry(const CGeometry* geometry) { - unsigned long iPoint; - unsigned int iDim; - for (iPoint = 0; iPoint < nPoint; iPoint++) { - for (iDim = 0; iDim < nDim; iDim++) { - nodes->SetSensitivity(iPoint, iDim, geometry->GetSensitivity(iPoint,iDim)); - } - } -} - void CGradientSmoothingSolver::WriteVectorToGeometry(CGeometry* geometry, const CSysVector& vector) const { unsigned long iPoint; unsigned int iDim; diff --git a/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp b/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp index 23666c88b3d6..9b05d1fe15de 100644 --- a/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp +++ b/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp @@ -35,18 +35,20 @@ CSobolevSmoothingVariable::CSobolevSmoothingVariable(unsigned long npoint, unsig Sensitivity.resize(nPoint,nDim) = su2double(0.0); - boundary_vertex = new bool[nPoint]; - for (unsigned long iPoint=0; iPoint Date: Tue, 11 Jan 2022 14:44:38 +0100 Subject: [PATCH 19/26] Reworked consecutive handling for multiple dv markers. --- .../solvers/CGradientSmoothingSolver.hpp | 29 +++-- SU2_CFD/include/solvers/CSolver.hpp | 8 ++ .../src/solvers/CGradientSmoothingSolver.cpp | 101 +++++++++++------- SU2_DOT/src/SU2_DOT.cpp | 18 ++-- 4 files changed, 97 insertions(+), 59 deletions(-) diff --git a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp index 00eb2c737fef..a01c6d265ef2 100644 --- a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp +++ b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp @@ -66,6 +66,8 @@ class CGradientSmoothingSolver final : public CFEASolverBase { CSquareMatrixCM hessian; /*!< \brief The approximated Hessian with respect to the design variables. */ + std::vector visited; /*! <\brief Stores already visited points for surface applications with multiple markers. */ + /*! * \brief The highest level in the variable hierarchy all derived solvers can safely use, * CVariable is the common denominator between the FEA and Mesh deformationd variables. @@ -190,9 +192,10 @@ class CGradientSmoothingSolver final : public CFEASolverBase { /*! * \brief Record a tape containing the parameter Jacobian. - * \param geometry - * \param config - * \param surface_movement + * \param geometry - Geometrical definition of the problem. + * \param surface_movement - Surface movement of the problem. + * \param registeredCoord - Indexes of the affected coordinates. + * \param config - Definition of the particular problem. */ void RecordParameterizationJacobian(CGeometry *geometry, CSurfaceMovement *surface_movement, @@ -201,9 +204,6 @@ class CGradientSmoothingSolver final : public CFEASolverBase { /*! * \brief Forward evaluate parameterization Jacobian. - * \param geometry - * \param config - * \param surface_movement */ void ProjectDVtoMesh(CGeometry *geometry, std::vector& seeding, @@ -213,9 +213,6 @@ class CGradientSmoothingSolver final : public CFEASolverBase { /*! * \brief Reverse evaluate parameterization Jacobian. - * \param geometry - * \param config - * \param surface_movement */ void ProjectMeshToDV(CGeometry *geometry, CSysVector& sensitivity, @@ -235,6 +232,14 @@ class CGradientSmoothingSolver final : public CFEASolverBase { */ void ReadSensFromGeometry(const CGeometry *geometry) override; + /*! + * \brief Helper function for derivative treatment. + * to determine if a boundary marker is a DVmarker on any mpi rank. + * \param[in] iMarker - the current boundary marker. + * \param[in] config - Definition of the particular problem. + */ + bool MarkerIsDVMarker(unsigned short iMarker, const CConfig *config) const override; + private: /*! * \brief Write the solution of the linear solver into the sensitivities of the nodes @@ -268,6 +273,12 @@ class CGradientSmoothingSolver final : public CFEASolverBase { */ void Set_VertexEliminationSchedule(CGeometry* geometry, const CConfig* config); + /*! + * \brief Complete the calculation of the surface stiffness matrix + * \param[in] geometry - Geometrical definition of the problem. + */ + void Complete_Surface_StiffMatrix(const CGeometry* geometry); + /*! * \brief Get the element container index and number of nodes of a given VTK type. * \param[in] VTK_Type - Type of element. diff --git a/SU2_CFD/include/solvers/CSolver.hpp b/SU2_CFD/include/solvers/CSolver.hpp index c151b5c9c1a5..fbea31dea188 100644 --- a/SU2_CFD/include/solvers/CSolver.hpp +++ b/SU2_CFD/include/solvers/CSolver.hpp @@ -4188,6 +4188,14 @@ class CSolver { */ virtual void WriteSensToGeometry(CGeometry* geometry) const {} + /*! + * \brief Helper function for derivative treatment. + * to determine if a boundary marker is a DVmarker on any mpi rank. + * \param[in] imMarker - the current boundary marker. + * \param[in] config - Definition of the particular problem. + */ + virtual bool MarkerIsDVMarker(unsigned short iMarker, const CConfig *config) const { return false; }; + /*! * \brief Routine that sets the flag controlling implicit treatment for periodic BCs. * \param[in] val_implicit_periodic - Flag controlling implicit treatment for periodic BCs. diff --git a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp index b778254f24c8..33db107d06fb 100644 --- a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp +++ b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp @@ -95,6 +95,7 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig LinSysRes.Initialize(nPoint, nPointDomain, 1, 0.0); Jacobian.Initialize(nPoint, nPointDomain, 1, 1, false, geometry, config, false, true); } + visited.resize(geometry->GetnPoint(), false); } /*--- vectors needed for projection when working on the complete system ---*/ @@ -201,9 +202,11 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingSurface(CGeometry* geometry LinSysSol.SetValZero(); LinSysRes.SetValZero(); Jacobian.SetValZero(); + std::fill(visited.begin(), visited.end(), false); /*--- Compute the stiffness matrix for the smoothing operator. ---*/ Compute_Surface_StiffMatrix(geometry, numerics, config, val_marker); + Complete_Surface_StiffMatrix(geometry); Compute_Surface_Residual(geometry, config, val_marker); @@ -397,18 +400,12 @@ void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry* geometry, std::array indexVertex; int EL_KIND = 0; su2double val_Coord, HiHj = 0.0; - su2activematrix DHiDHj, Jacobian_block, mId_Aux; + su2activematrix DHiDHj, Jacobian_block; Jacobian_block.resize(nDim, nDim) = su2double(0.0); - mId_Aux.resize(nDim, nDim) = su2double(0.0); - for (iDim = 0; iDim < nDim; iDim++) { - mId_Aux[iDim][iDim] = su2double(1.0); - } - - vector visited(geometry->GetnPoint(), false); /*--- Check if the current MPI rank has a part of the marker ---*/ - if (val_marker!=NOT_AVAILABLE) { + if (val_marker!=BC_TYPE::NOT_AVAILABLE) { /*--- Loops over all the elements ---*/ for (iElem = 0; iElem < geometry->GetnElem_Bound(val_marker); iElem++) { @@ -463,13 +460,6 @@ void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry* geometry, } } - /*--- Assembling the stiffness matrix on the design surface means the Jacobian is the identity for nodes inside the domain. ---*/ - for (iPoint = 0; iPoint < geometry->GetnPointDomain(); iPoint++){ - if (visited[iPoint]==false) { - Jacobian.AddBlock(iPoint, iPoint, mId_Aux); - } - } - } void CGradientSmoothingSolver::Compute_Residual(CGeometry* geometry, const CConfig* config) { @@ -539,7 +529,7 @@ void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry* geometry, con su2double* normal = NULL; /*--- Check if the current MPI rank has a part of the marker ---*/ - if (val_marker!=NOT_AVAILABLE) { + if (val_marker!=BC_TYPE::NOT_AVAILABLE) { for (iElem = 0; iElem < geometry->GetnElem_Bound(val_marker); iElem++) { @@ -637,7 +627,7 @@ void CGradientSmoothingSolver::BC_Surface_Dirichlet(const CGeometry* geometry, c const su2double zeros[MAXNDIM] = {0.0}; /*--- Check if the current MPI rank has a part of the marker ---*/ - if (val_marker!=NOT_AVAILABLE) { + if (val_marker!=BC_TYPE::NOT_AVAILABLE) { for (iVertex = 0; iVertex < geometry->nVertex[val_marker]; iVertex++) { /*--- Get node index ---*/ @@ -680,17 +670,15 @@ template CSysMatrixVectorProduct CGradientSmoothingSolver::GetStiffnessMatrixVectorProduct(CGeometry* geometry, CNumerics* numerics, const CConfig* config) { - bool surf = config->GetSmoothOnSurface(); /*--- Compute the sparse stiffness matrix ---*/ - if (surf) { - unsigned long dvMarker=NOT_AVAILABLE; - for (unsigned int iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { - if ( config->GetMarker_All_DV(iMarker) == YES ) { - dvMarker=iMarker; + if (config->GetSmoothOnSurface()) { + for (unsigned int iMarker = 0; iMarker < config->GetnMarker_CfgFile(); iMarker++) { + if (config->GetMarker_All_DV(iMarker) == YES) { + Compute_Surface_StiffMatrix(geometry, numerics, config, iMarker, nDim); } } - Compute_Surface_StiffMatrix(geometry, numerics, config, dvMarker, nDim); + Complete_Surface_StiffMatrix(geometry); } else { Compute_StiffMatrix(geometry, numerics, config); } @@ -917,7 +905,7 @@ void CGradientSmoothingSolver::WriteSensitivity(CGeometry* geometry, const CConf /*--- split between surface and volume first, to avoid mpi ranks with no part of the marker to write back nonphysical solutions in the surface case ---*/ if ( config->GetSmoothOnSurface() ) { - if( val_marker!=NOT_AVAILABLE ) { + if( val_marker!=BC_TYPE::NOT_AVAILABLE ) { for (unsigned long iVertex =0; iVertexnVertex[val_marker]; iVertex++) { iPoint = geometry->vertex[val_marker][iVertex]->GetNode(); normal = geometry->vertex[val_marker][iVertex]->GetNormal(); @@ -980,23 +968,25 @@ void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry* geometry if (config->GetSmoothOnSurface()) { /*--- Find Marker_DV if this node has any ---*/ - unsigned long dvMarker=NOT_AVAILABLE; + unsigned long dvMarker=BC_TYPE::NOT_AVAILABLE; for (unsigned short iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { - if (config->GetMarker_All_DV(iMarker) == YES) { - dvMarker = iMarker; - } - } - - /*--- Surface case: - * Fix design boundary border if Dirichlet condition is set and the current rank holds part of it. ---*/ - if ( config->GetDirichletSurfaceBound() && dvMarker!=NOT_AVAILABLE) { - for (iVertex = 0; iVertex < geometry->nVertex[dvMarker]; iVertex++) { - /*--- Get node index ---*/ - iPoint = geometry->vertex[dvMarker][iVertex]->GetNode(); - if (nodes->GetIsBoundaryPoint(iPoint)) { - myPoints.push_back(geometry->nodes->GetGlobalIndex(iPoint)); + //if (MarkerIsDVMarker(iMarker, config)) { + //dvMarker = BC_TYPE::NOT_AVAILABLE; + if (config->GetMarker_All_DV(iMarker) == YES) dvMarker = iMarker; + //} + + /*--- Surface case: + * Fix design boundary border if Dirichlet condition is set and the current rank holds part of it. ---*/ + if ( config->GetDirichletSurfaceBound() && dvMarker!=BC_TYPE::NOT_AVAILABLE) { + for (iVertex = 0; iVertex < geometry->nVertex[dvMarker]; iVertex++) { + /*--- Get node index ---*/ + iPoint = geometry->vertex[dvMarker][iVertex]->GetNode(); + if (nodes->GetIsBoundaryPoint(iPoint)) { + myPoints.push_back(geometry->nodes->GetGlobalIndex(iPoint)); + } } } + } } else { @@ -1024,3 +1014,36 @@ void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry* geometry Jacobian.EnforceSolutionAtNode(iPoint, LinSysSol.GetBlock(iPoint), LinSysRes); } } + +bool CGradientSmoothingSolver::MarkerIsDVMarker(unsigned short iMarker, const CConfig *config) const { + + int isLocalDVmarker, isGlobalDVmarker; + bool isDVmarker=false; + + if ( config->GetMarker_All_DV(iMarker) == YES ) { + isLocalDVmarker = 1; + } else { + isLocalDVmarker = 0; + } + SU2_MPI::Allreduce(&isLocalDVmarker, &isGlobalDVmarker, 1, MPI_UNSIGNED_LONG, MPI_SUM, SU2_MPI::GetComm()); + if (isGlobalDVmarker >= 1) isDVmarker=true; + + return isDVmarker; +} + +void CGradientSmoothingSolver::Complete_Surface_StiffMatrix(const CGeometry* geometry) { + + su2activematrix mId_Aux; + mId_Aux.resize(nDim, nDim) = su2double(0.0); + for (unsigned iDim = 0; iDim < nDim; iDim++) { + mId_Aux[iDim][iDim] = su2double(1.0); + } + + /*--- Assembling the stiffness matrix on the design surface means the Jacobian is the identity for nodes inside the domain. ---*/ + for (unsigned long iPoint = 0; iPoint < geometry->GetnPointDomain(); iPoint++){ + if (visited[iPoint]==false) { + Jacobian.AddBlock(iPoint, iPoint, mId_Aux); + } + } + +} diff --git a/SU2_DOT/src/SU2_DOT.cpp b/SU2_DOT/src/SU2_DOT.cpp index bca073207478..1d98e5a96fff 100644 --- a/SU2_DOT/src/SU2_DOT.cpp +++ b/SU2_DOT/src/SU2_DOT.cpp @@ -1003,19 +1003,15 @@ void DerivativeTreatment_MeshSensitivity(CGeometry *geometry, CConfig *config, C /*--- Get the sensitivities from the geometry class to work with. ---*/ solver->ReadSensFromGeometry(geometry); - /*--- Select DV marker, or NOT_AVAILABLE if none is specified. ---*/ - unsigned long ndvMarker=0, dvMarker = BC_TYPE::NOT_AVAILABLE; - for (unsigned short iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { - if ( config->GetMarker_All_DV(iMarker) == YES ) { - dvMarker = iMarker; - ++ndvMarker; + /*--- Perform the smoothing procedure sequentially for each DV marker. ---*/ + unsigned long dvMarker; + for (unsigned short iMarker = 0; iMarker < config->GetnMarker_CfgFile(); iMarker++) { + if (solver->MarkerIsDVMarker(iMarker, config)) { + dvMarker = BC_TYPE::NOT_AVAILABLE; + if (config->GetMarker_All_DV(iMarker) == YES) dvMarker = iMarker; + solver->ApplyGradientSmoothingSurface(geometry, numerics, config, dvMarker); } } - if(ndvMarker>1) { - SU2_MPI::Error("Sobolev smoothing in surface mode only works with one marker at a time.",CURRENT_FUNCTION); - } - - solver->ApplyGradientSmoothingSurface(geometry, numerics, config, dvMarker); /*--- After appling the solver write the results back ---*/ solver->WriteSensToGeometry(geometry); From 0630b4a98ff339846b0baadea894fb66bef939de Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Thu, 13 Jan 2022 11:33:55 +0100 Subject: [PATCH 20/26] Reworked surface smoothing handling for multiple design markers. Extended zone number to output files for multizone problems. --- .../solvers/CGradientSmoothingSolver.hpp | 13 +-- SU2_CFD/include/solvers/CSolver.hpp | 11 +- .../src/solvers/CGradientSmoothingSolver.cpp | 106 +++++++++--------- SU2_DOT/src/SU2_DOT.cpp | 18 +-- 4 files changed, 58 insertions(+), 90 deletions(-) diff --git a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp index a01c6d265ef2..6df2b361e8ef 100644 --- a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp +++ b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp @@ -100,8 +100,7 @@ class CGradientSmoothingSolver final : public CFEASolverBase { * \brief Main routine to apply the method only on the surface for mesh sensitivities * Projects and smoothes only in the normal direction! */ - void ApplyGradientSmoothingSurface(CGeometry* geometry, CNumerics* numerics, const CConfig* config, - unsigned long val_marker) override; + void ApplyGradientSmoothingSurface(CGeometry* geometry, CNumerics* numerics, const CConfig* config) override; /*! * \brief All steps required for smoothing the whole system on DV level in an iterative way @@ -232,19 +231,11 @@ class CGradientSmoothingSolver final : public CFEASolverBase { */ void ReadSensFromGeometry(const CGeometry *geometry) override; - /*! - * \brief Helper function for derivative treatment. - * to determine if a boundary marker is a DVmarker on any mpi rank. - * \param[in] iMarker - the current boundary marker. - * \param[in] config - Definition of the particular problem. - */ - bool MarkerIsDVMarker(unsigned short iMarker, const CConfig *config) const override; - private: /*! * \brief Write the solution of the linear solver into the sensitivities of the nodes */ - void WriteSensitivity(CGeometry* geometry, const CConfig* config, unsigned long val_marker = 0); + void WriteSensitivity(CGeometry* geometry, const CConfig* config); /*! * \brief Copy sensitivities from a vector into the geometry diff --git a/SU2_CFD/include/solvers/CSolver.hpp b/SU2_CFD/include/solvers/CSolver.hpp index fbea31dea188..a153de2dae30 100644 --- a/SU2_CFD/include/solvers/CSolver.hpp +++ b/SU2_CFD/include/solvers/CSolver.hpp @@ -4151,8 +4151,7 @@ class CSolver { * \param[in] config - Definition of the particular problem. * */ - virtual void ApplyGradientSmoothingSurface(CGeometry* geometry, CNumerics* numerics, const CConfig* config, - unsigned long val_marker) {} + virtual void ApplyGradientSmoothingSurface(CGeometry* geometry, CNumerics* numerics, const CConfig* config) {} /*! * \brief All steps required for smoothing the whole system on DV level in an iterative way @@ -4188,14 +4187,6 @@ class CSolver { */ virtual void WriteSensToGeometry(CGeometry* geometry) const {} - /*! - * \brief Helper function for derivative treatment. - * to determine if a boundary marker is a DVmarker on any mpi rank. - * \param[in] imMarker - the current boundary marker. - * \param[in] config - Definition of the particular problem. - */ - virtual bool MarkerIsDVMarker(unsigned short iMarker, const CConfig *config) const { return false; }; - /*! * \brief Routine that sets the flag controlling implicit treatment for periodic BCs. * \param[in] val_implicit_periodic - Flag controlling implicit treatment for periodic BCs. diff --git a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp index 33db107d06fb..436a11fd5172 100644 --- a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp +++ b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp @@ -99,7 +99,8 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig } /*--- vectors needed for projection when working on the complete system ---*/ - if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::PARAM_LEVEL_COMPLETE || config->GetSobMode() == ENUM_SOBOLEV_MODUS::ONLY_GRAD) { + if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::PARAM_LEVEL_COMPLETE || + config->GetSobMode() == ENUM_SOBOLEV_MODUS::ONLY_GRAD || config->GetSobMode() == ENUM_SOBOLEV_MODUS::MESH_LEVEL) { activeCoord.Initialize(nPoint, nPointDomain, nDim, 0.0); helperVecIn.Initialize(nPoint, nPointDomain, nDim, 0.0); helperVecOut.Initialize(nPoint, nPointDomain, nDim, 0.0); @@ -197,27 +198,34 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingVolume(CGeometry* geometry, } void CGradientSmoothingSolver::ApplyGradientSmoothingSurface(CGeometry* geometry, CNumerics* numerics, - const CConfig* config, unsigned long val_marker) { + const CConfig* config) { /*--- Set vector and sparse matrix to 0 ---*/ LinSysSol.SetValZero(); LinSysRes.SetValZero(); Jacobian.SetValZero(); std::fill(visited.begin(), visited.end(), false); - /*--- Compute the stiffness matrix for the smoothing operator. ---*/ - Compute_Surface_StiffMatrix(geometry, numerics, config, val_marker); - Complete_Surface_StiffMatrix(geometry); + /*--- Loop over all DV markers to compute the stiffness matrix for the smoothing operator. ---*/ + for (unsigned short iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { + if (config->GetMarker_All_DV(iMarker) == YES) { + /*--- Compute the stiffness matrix for the smoothing operator. ---*/ + Compute_Surface_StiffMatrix(geometry, numerics, config, iMarker); - Compute_Surface_Residual(geometry, config, val_marker); + Compute_Surface_Residual(geometry, config, iMarker); - if ( config->GetDirichletSurfaceBound() ) { - BC_Surface_Dirichlet(geometry, config, val_marker); + if (config->GetDirichletSurfaceBound()) { + BC_Surface_Dirichlet(geometry, config, iMarker); + } + } } + /*--- Set the matrix to identity if the current mpi rank holds no part of the DV marker. ---*/ + Complete_Surface_StiffMatrix(geometry); + /*--- Solve the system and write the result back. ---*/ Solve_Linear_System(geometry, config); - WriteSensitivity(geometry, config, val_marker); + WriteSensitivity(geometry, config); } void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CNumerics *numerics, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, CConfig *config, su2double** Gradient) { @@ -312,8 +320,12 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CNu /*--- Output the complete system matrix. ---*/ if (rank == MASTER_NODE) { - ofstream SysMatrix(config->GetObjFunc_Hess_FileName()); + /*--- For multizone append zone number to filename. ---*/ + string hess_filename = config->GetObjFunc_Hess_FileName(); + if (config->GetnZone() > 1) config->GetMultizone_FileName(hess_filename, config->GetiZone(), ".dat"); + ofstream SysMatrix(hess_filename); SysMatrix.precision(config->GetOutput_Precision()); + for (row=0; rowGetnZone() > 1) config->GetMultizone_FileName(out_file, config->GetiZone(), ".dat"); ofstream delta_p (out_file); delta_p.precision(config->GetOutput_Precision()); + for (iDV = 0; iDV < deltaP.size(); iDV++) { delta_p << deltaP[iDV] << ","; } @@ -897,28 +912,31 @@ void CGradientSmoothingSolver::ReadSensFromGeometry(const CGeometry* geometry) { } } -void CGradientSmoothingSolver::WriteSensitivity(CGeometry* geometry, const CConfig* config, unsigned long val_marker) { +void CGradientSmoothingSolver::WriteSensitivity(CGeometry* geometry, const CConfig* config) { unsigned long iPoint, total_index; unsigned int iDim; su2double* normal; su2double norm; - /*--- split between surface and volume first, to avoid mpi ranks with no part of the marker to write back nonphysical solutions in the surface case ---*/ + /*--- Split between surface and volume first. ---*/ if ( config->GetSmoothOnSurface() ) { - if( val_marker!=BC_TYPE::NOT_AVAILABLE ) { - for (unsigned long iVertex =0; iVertexnVertex[val_marker]; iVertex++) { - iPoint = geometry->vertex[val_marker][iVertex]->GetNode(); - normal = geometry->vertex[val_marker][iVertex]->GetNormal(); - norm = 0.0; - for (iDim = 0; iDim < nDim; iDim++) { - norm += normal[iDim]*normal[iDim]; - } - norm = sqrt(norm); - for (iDim = 0; iDim < nDim; iDim++) { - normal[iDim] = normal[iDim] / norm; - } - for (iDim = 0; iDim < nDim; iDim++) { - nodes->SetSensitivity(iPoint, iDim, normal[iDim]*LinSysSol[iPoint]); + /*--- Write back values for all design boundaries in the surface case. ---*/ + for (unsigned short iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { + if (config->GetMarker_All_DV(iMarker) == YES) { + for (unsigned long iVertex = 0; iVertex < geometry->nVertex[iMarker]; iVertex++) { + iPoint = geometry->vertex[iMarker][iVertex]->GetNode(); + normal = geometry->vertex[iMarker][iVertex]->GetNormal(); + norm = 0.0; + for (iDim = 0; iDim < nDim; iDim++) { + norm += normal[iDim] * normal[iDim]; + } + norm = sqrt(norm); + for (iDim = 0; iDim < nDim; iDim++) { + normal[iDim] = normal[iDim] / norm; + } + for (iDim = 0; iDim < nDim; iDim++) { + nodes->SetSensitivity(iPoint, iDim, normal[iDim] * LinSysSol[iPoint]); + } } } } @@ -966,27 +984,19 @@ void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry* geometry /*--- get global indexes of Dirichlet boundaries ---*/ if (config->GetSmoothOnSurface()) { - - /*--- Find Marker_DV if this node has any ---*/ - unsigned long dvMarker=BC_TYPE::NOT_AVAILABLE; + /*--- Surface case: + * Fix design boundary border if Dirichlet condition is set for the DV marker + * and the current rank holds part of it. ---*/ for (unsigned short iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { - //if (MarkerIsDVMarker(iMarker, config)) { - //dvMarker = BC_TYPE::NOT_AVAILABLE; - if (config->GetMarker_All_DV(iMarker) == YES) dvMarker = iMarker; - //} - - /*--- Surface case: - * Fix design boundary border if Dirichlet condition is set and the current rank holds part of it. ---*/ - if ( config->GetDirichletSurfaceBound() && dvMarker!=BC_TYPE::NOT_AVAILABLE) { - for (iVertex = 0; iVertex < geometry->nVertex[dvMarker]; iVertex++) { + if (config->GetMarker_All_DV(iMarker) == YES && config->GetDirichletSurfaceBound()) { + for (iVertex = 0; iVertex < geometry->nVertex[iMarker]; iVertex++) { /*--- Get node index ---*/ - iPoint = geometry->vertex[dvMarker][iVertex]->GetNode(); + iPoint = geometry->vertex[iMarker][iVertex]->GetNode(); if (nodes->GetIsBoundaryPoint(iPoint)) { myPoints.push_back(geometry->nodes->GetGlobalIndex(iPoint)); } } } - } } else { @@ -1015,22 +1025,6 @@ void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry* geometry } } -bool CGradientSmoothingSolver::MarkerIsDVMarker(unsigned short iMarker, const CConfig *config) const { - - int isLocalDVmarker, isGlobalDVmarker; - bool isDVmarker=false; - - if ( config->GetMarker_All_DV(iMarker) == YES ) { - isLocalDVmarker = 1; - } else { - isLocalDVmarker = 0; - } - SU2_MPI::Allreduce(&isLocalDVmarker, &isGlobalDVmarker, 1, MPI_UNSIGNED_LONG, MPI_SUM, SU2_MPI::GetComm()); - if (isGlobalDVmarker >= 1) isDVmarker=true; - - return isDVmarker; -} - void CGradientSmoothingSolver::Complete_Surface_StiffMatrix(const CGeometry* geometry) { su2activematrix mId_Aux; diff --git a/SU2_DOT/src/SU2_DOT.cpp b/SU2_DOT/src/SU2_DOT.cpp index 1d98e5a96fff..fc26d8a72e91 100644 --- a/SU2_DOT/src/SU2_DOT.cpp +++ b/SU2_DOT/src/SU2_DOT.cpp @@ -1003,15 +1003,8 @@ void DerivativeTreatment_MeshSensitivity(CGeometry *geometry, CConfig *config, C /*--- Get the sensitivities from the geometry class to work with. ---*/ solver->ReadSensFromGeometry(geometry); - /*--- Perform the smoothing procedure sequentially for each DV marker. ---*/ - unsigned long dvMarker; - for (unsigned short iMarker = 0; iMarker < config->GetnMarker_CfgFile(); iMarker++) { - if (solver->MarkerIsDVMarker(iMarker, config)) { - dvMarker = BC_TYPE::NOT_AVAILABLE; - if (config->GetMarker_All_DV(iMarker) == YES) dvMarker = iMarker; - solver->ApplyGradientSmoothingSurface(geometry, numerics, config, dvMarker); - } - } + /*--- Perform the smoothing procedure on all boundaries marked as DV marker. ---*/ + solver->ApplyGradientSmoothingSurface(geometry, numerics, config); /*--- After appling the solver write the results back ---*/ solver->WriteSensToGeometry(geometry); @@ -1064,10 +1057,9 @@ void DerivativeTreatment_Gradient(CGeometry *geometry, CConfig *config, CVolumet if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::PARAM_LEVEL_COMPLETE) { solver->ApplyGradientSmoothingDV(geometry, numerics, surface_movement, grid_movement, config, Gradient); - /*--- For some application, e.g. OneShot, we might only need the original gradient. ---*/ - } else if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::ONLY_GRAD) { + /*--- If smoothing already took place on the mesh level, or none is requested, just do standard projection. ---*/ + } else if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::ONLY_GRAD || + config->GetSobMode() == ENUM_SOBOLEV_MODUS::MESH_LEVEL) { solver->RecordTapeAndCalculateOriginalGradient(geometry, surface_movement, grid_movement, config, Gradient); - } - } From db9d2688c39ae96729a6195425592fab8a7c7f53 Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Thu, 13 Jan 2022 12:24:04 +0100 Subject: [PATCH 21/26] Fix for the regression test workflow. --- .github/workflows/regression.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/regression.yml b/.github/workflows/regression.yml index 24aa9edbf162..3b670469fa65 100644 --- a/.github/workflows/regression.yml +++ b/.github/workflows/regression.yml @@ -90,7 +90,7 @@ jobs: uses: docker://su2code/test-su2:20200303 with: # -t -c - args: -b ${{github.ref}} -t develop -c feature_Sobolev_smoothing_solver -s ${{matrix.testscript}} + args: -b ${{github.ref}} -t develop -c develop -s ${{matrix.testscript}} unit_tests: runs-on: ubuntu-latest name: Unit Tests From 608cfb2618bbec3244511cd673aec343684cbbca Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Thu, 13 Jan 2022 20:58:44 +0100 Subject: [PATCH 22/26] Apply suggestions from code review. --- Common/include/option_structure.hpp | 1 - .../src/solvers/CGradientSmoothingSolver.cpp | 212 ++++++++---------- 2 files changed, 91 insertions(+), 122 deletions(-) diff --git a/Common/include/option_structure.hpp b/Common/include/option_structure.hpp index e2098ffdfab6..887c8b1b549a 100644 --- a/Common/include/option_structure.hpp +++ b/Common/include/option_structure.hpp @@ -1221,7 +1221,6 @@ enum BC_TYPE { CHT_WALL_INTERFACE = 50, /*!< \brief Domain interface definition. */ SMOLUCHOWSKI_MAXWELL = 55, /*!< \brief Smoluchoski/Maxwell wall boundary condition. */ SEND_RECEIVE = 99, /*!< \brief Boundary send-receive definition. */ - NOT_AVAILABLE = 1000, /*!< \brief Boundary not on this MPI rank. */ }; /*! diff --git a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp index 436a11fd5172..8fb74f103f17 100644 --- a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp +++ b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp @@ -25,9 +25,11 @@ * License along with SU2. If not, see . */ +#include + +#include "../../../Common/include/toolboxes/geometry_toolbox.hpp" #include "../../include/solvers/CGradientSmoothingSolver.hpp" #include "../../include/variables/CSobolevSmoothingVariable.hpp" -#include CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig *config) : CFEASolverBase(LINEAR_SOLVER_MODE::GRADIENT_MODE) { unsigned int iDim, marker_count = 0; @@ -322,7 +324,7 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CNu if (rank == MASTER_NODE) { /*--- For multizone append zone number to filename. ---*/ string hess_filename = config->GetObjFunc_Hess_FileName(); - if (config->GetnZone() > 1) config->GetMultizone_FileName(hess_filename, config->GetiZone(), ".dat"); + if (config->GetMultizone_Problem()) config->GetMultizone_FileName(hess_filename, config->GetiZone(), ".dat"); ofstream SysMatrix(hess_filename); SysMatrix.precision(config->GetOutput_Precision()); @@ -416,62 +418,57 @@ void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry* geometry, Jacobian_block.resize(nDim, nDim) = su2double(0.0); - /*--- Check if the current MPI rank has a part of the marker ---*/ - if (val_marker!=BC_TYPE::NOT_AVAILABLE) { - - /*--- Loops over all the elements ---*/ - for (iElem = 0; iElem < geometry->GetnElem_Bound(val_marker); iElem++) { + /*--- Loops over all the elements ---*/ + for (iElem = 0; iElem < geometry->GetnElem_Bound(val_marker); iElem++) { - /*--- Identify the kind of boundary element ---*/ - GetElemKindAndNumNodes(geometry->bound[val_marker][iElem]->GetVTK_Type(), EL_KIND, nNodes); + /*--- Identify the kind of boundary element ---*/ + GetElemKindAndNumNodes(geometry->bound[val_marker][iElem]->GetVTK_Type(), EL_KIND, nNodes); - /*--- Retrieve the boundary reference and current coordinates ---*/ + /*--- Retrieve the boundary reference and current coordinates ---*/ - for (iNode = 0; iNode < nNodes; iNode++) { - indexNode[iNode] = geometry->bound[val_marker][iElem]->GetNode(iNode); + for (iNode = 0; iNode < nNodes; iNode++) { + indexNode[iNode] = geometry->bound[val_marker][iElem]->GetNode(iNode); - for (iDim = 0; iDim < nDim; iDim++) { - val_Coord = Get_ValCoord(geometry, indexNode[iNode], iDim); - element_container[GRAD_TERM][EL_KIND]->SetRef_Coord(iNode, iDim, val_Coord); - } + for (iDim = 0; iDim < nDim; iDim++) { + val_Coord = Get_ValCoord(geometry, indexNode[iNode], iDim); + element_container[GRAD_TERM][EL_KIND]->SetRef_Coord(iNode, iDim, val_Coord); } + } - /*--- We need the indices of the vertices, which are "Dual Grid Info" ---*/ - for (iVertex = 0; iVertex < geometry->nVertex[val_marker]; iVertex++) { - iPoint = geometry->vertex[val_marker][iVertex]->GetNode(); - for (iNode = 0; iNode < nNodes; iNode++) { - if (iPoint == indexNode[iNode]) indexVertex[iNode] = iVertex; - } + /*--- We need the indices of the vertices, which are "Dual Grid Info" ---*/ + for (iVertex = 0; iVertex < geometry->nVertex[val_marker]; iVertex++) { + iPoint = geometry->vertex[val_marker][iVertex]->GetNode(); + for (iNode = 0; iNode < nNodes; iNode++) { + if (iPoint == indexNode[iNode]) indexVertex[iNode] = iVertex; } + } - /*--- compute the contributions of the single elements inside the numerics container ---*/ - numerics->Compute_Tangent_Matrix(element_container[GRAD_TERM][EL_KIND], config); + /*--- compute the contributions of the single elements inside the numerics container ---*/ + numerics->Compute_Tangent_Matrix(element_container[GRAD_TERM][EL_KIND], config); - NelNodes = element_container[GRAD_TERM][EL_KIND]->GetnNodes(); + NelNodes = element_container[GRAD_TERM][EL_KIND]->GetnNodes(); - /*--- for all nodes add the contribution to the system Jacobian ---*/ + /*--- for all nodes add the contribution to the system Jacobian ---*/ - for (iNode = 0; iNode < NelNodes; iNode++) { - for (jNode = 0; jNode < NelNodes; jNode++) { + for (iNode = 0; iNode < NelNodes; iNode++) { + for (jNode = 0; jNode < NelNodes; jNode++) { - DHiDHj = element_container[GRAD_TERM][EL_KIND]->Get_DHiDHj(iNode, jNode); - HiHj = element_container[GRAD_TERM][EL_KIND]->Get_HiHj(iNode, jNode); + DHiDHj = element_container[GRAD_TERM][EL_KIND]->Get_DHiDHj(iNode, jNode); + HiHj = element_container[GRAD_TERM][EL_KIND]->Get_HiHj(iNode, jNode); - /*--- Get the calculated stiffness blocks for the current element and add them to the block. ---*/ - for (iSurfDim=0; iSurfDimGetSmoothSepDim()) { - Residual[GetCurrentDim()] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode,iGauss) * nodes->GetSensitivity(indexNode[iNode], GetCurrentDim()); + Residual[GetCurrentDim()] += + Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode, iGauss) * nodes->GetSensitivity(indexNode[iNode], GetCurrentDim()); LinSysRes.AddBlock(indexNode[iNode], &Residual[GetCurrentDim()]); } else { for (iDim = 0; iDim < nDim; iDim++) { - Residual[iDim] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode,iGauss) * nodes->GetSensitivity(indexNode[iNode], iDim); - + Residual[iDim] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode, iGauss) * nodes->GetSensitivity(indexNode[iNode], iDim); } LinSysRes.AddBlock(indexNode[iNode], Residual); } @@ -538,66 +535,55 @@ void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry* geometry, con std::array indexNode; std::array indexVertex; su2double Weight, Jac_X, normalSens = 0.0, norm, val_Coord; - su2double* normal = NULL; - - /*--- Check if the current MPI rank has a part of the marker ---*/ - if (val_marker!=BC_TYPE::NOT_AVAILABLE) { - - for (iElem = 0; iElem < geometry->GetnElem_Bound(val_marker); iElem++) { + su2double normal[MAXNDIM]; - /*--- Identify the kind of boundary element ---*/ - GetElemKindAndNumNodes(geometry->bound[val_marker][iElem]->GetVTK_Type(), EL_KIND, nNodes); + for (iElem = 0; iElem < geometry->GetnElem_Bound(val_marker); iElem++) { + /*--- Identify the kind of boundary element ---*/ + GetElemKindAndNumNodes(geometry->bound[val_marker][iElem]->GetVTK_Type(), EL_KIND, nNodes); - /*--- Retrieve the boundary reference and current coordinates ---*/ - for (iNode = 0; iNode < nNodes; iNode++) { - indexNode[iNode] = geometry->bound[val_marker][iElem]->GetNode(iNode); + /*--- Retrieve the boundary reference and current coordinates ---*/ + for (iNode = 0; iNode < nNodes; iNode++) { + indexNode[iNode] = geometry->bound[val_marker][iElem]->GetNode(iNode); - for (iDim = 0; iDim < nDim; iDim++) { - val_Coord = Get_ValCoord(geometry, indexNode[iNode], iDim); - element_container[GRAD_TERM][EL_KIND]->SetRef_Coord(iNode, iDim, val_Coord); - } + for (iDim = 0; iDim < nDim; iDim++) { + val_Coord = Get_ValCoord(geometry, indexNode[iNode], iDim); + element_container[GRAD_TERM][EL_KIND]->SetRef_Coord(iNode, iDim, val_Coord); } + } - /*--- We need the indices of the vertices, which are "Dual Grid Info" ---*/ - for (iVertex = 0; iVertex < geometry->nVertex[val_marker]; iVertex++) { - iPoint = geometry->vertex[val_marker][iVertex]->GetNode(); - for (iNode = 0; iNode < nNodes; iNode++) { - if (iPoint == indexNode[iNode]) indexVertex[iNode] = iVertex; - } + /*--- We need the indices of the vertices, which are "Dual Grid Info" ---*/ + for (iVertex = 0; iVertex < geometry->nVertex[val_marker]; iVertex++) { + iPoint = geometry->vertex[val_marker][iVertex]->GetNode(); + for (iNode = 0; iNode < nNodes; iNode++) { + if (iPoint == indexNode[iNode]) indexVertex[iNode] = iVertex; } + } - element_container[GRAD_TERM][EL_KIND]->ClearElement(); /*--- Restarts the element: avoids adding over previous results in other elements --*/ - element_container[GRAD_TERM][EL_KIND]->ComputeGrad_SurfaceEmbedded(); - unsigned int nGauss = element_container[GRAD_TERM][EL_KIND]->GetnGaussPoints(); - - for (unsigned int iGauss = 0; iGauss < nGauss; iGauss++) { - - Weight = element_container[GRAD_TERM][EL_KIND]->GetWeight(iGauss); - Jac_X = element_container[GRAD_TERM][EL_KIND]->GetJ_X(iGauss); - - for (unsigned int iNode = 0; iNode < nNodes; iNode++) { + element_container[GRAD_TERM][EL_KIND] + ->ClearElement(); /*--- Restarts the element: avoids adding over previous results in other elements --*/ + element_container[GRAD_TERM][EL_KIND]->ComputeGrad_SurfaceEmbedded(); + unsigned int nGauss = element_container[GRAD_TERM][EL_KIND]->GetnGaussPoints(); - normal = geometry->vertex[val_marker][indexVertex[iNode]]->GetNormal(); - norm = 0.0; - for (iDim = 0; iDim < nDim; iDim++) { - norm += normal[iDim]*normal[iDim]; - } - norm = sqrt(norm); - for (iDim = 0; iDim < nDim; iDim++) { - normal[iDim] = normal[iDim] / norm; - } + for (unsigned int iGauss = 0; iGauss < nGauss; iGauss++) { + Weight = element_container[GRAD_TERM][EL_KIND]->GetWeight(iGauss); + Jac_X = element_container[GRAD_TERM][EL_KIND]->GetJ_X(iGauss); - for (iDim = 0; iDim < nDim; iDim++) { - normalSens += normal[iDim] * nodes->GetSensitivity(indexNode[iNode], iDim); - } + for (unsigned int iNode = 0; iNode < nNodes; iNode++) { + geometry->vertex[val_marker][indexVertex[iNode]]->GetNormal(normal); + norm = GeometryToolbox::Norm(nDim, normal); + for (iDim = 0; iDim < nDim; iDim++) { + normal[iDim] = normal[iDim] / norm; + } - Residual[0] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode,iGauss) * normalSens; - LinSysRes.AddBlock(indexNode[iNode], Residual); + for (iDim = 0; iDim < nDim; iDim++) { + normalSens += normal[iDim] * nodes->GetSensitivity(indexNode[iNode], iDim); + } - Residual[0] = 0; - normalSens = 0; + Residual[0] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode, iGauss) * normalSens; + LinSysRes.AddBlock(indexNode[iNode], Residual); - } + Residual[0] = 0; + normalSens = 0; } } } @@ -638,18 +624,15 @@ void CGradientSmoothingSolver::BC_Surface_Dirichlet(const CGeometry* geometry, c unsigned long iPoint, iVertex; const su2double zeros[MAXNDIM] = {0.0}; - /*--- Check if the current MPI rank has a part of the marker ---*/ - if (val_marker!=BC_TYPE::NOT_AVAILABLE) { - for (iVertex = 0; iVertex < geometry->nVertex[val_marker]; iVertex++) { + for (iVertex = 0; iVertex < geometry->nVertex[val_marker]; iVertex++) { - /*--- Get node index ---*/ - iPoint = geometry->vertex[val_marker][iVertex]->GetNode(); + /*--- Get node index ---*/ + iPoint = geometry->vertex[val_marker][iVertex]->GetNode(); - if (nodes->GetIsBoundaryPoint(iPoint)) { - LinSysSol.SetBlock(iPoint, zeros); - LinSysRes.SetBlock(iPoint, zeros); - Jacobian.EnforceSolutionAtNode(iPoint, zeros, LinSysRes); - } + if (nodes->GetIsBoundaryPoint(iPoint)) { + LinSysSol.SetBlock(iPoint, zeros); + LinSysRes.SetBlock(iPoint, zeros); + Jacobian.EnforceSolutionAtNode(iPoint, zeros, LinSysRes); } } } @@ -738,7 +721,7 @@ void CGradientSmoothingSolver::OutputDVGradient(const CConfig* config, string ou unsigned iDV; if (rank == MASTER_NODE) { /*--- For multizone append zone number to filename. ---*/ - if (config->GetnZone() > 1) config->GetMultizone_FileName(out_file, config->GetiZone(), ".dat"); + if (config->GetMultizone_Problem()) config->GetMultizone_FileName(out_file, config->GetiZone(), ".dat"); ofstream delta_p (out_file); delta_p.precision(config->GetOutput_Precision()); @@ -913,9 +896,9 @@ void CGradientSmoothingSolver::ReadSensFromGeometry(const CGeometry* geometry) { } void CGradientSmoothingSolver::WriteSensitivity(CGeometry* geometry, const CConfig* config) { - unsigned long iPoint, total_index; + unsigned long iPoint; unsigned int iDim; - su2double* normal; + su2double normal[MAXNDIM]; su2double norm; /*--- Split between surface and volume first. ---*/ @@ -925,16 +908,10 @@ void CGradientSmoothingSolver::WriteSensitivity(CGeometry* geometry, const CConf if (config->GetMarker_All_DV(iMarker) == YES) { for (unsigned long iVertex = 0; iVertex < geometry->nVertex[iMarker]; iVertex++) { iPoint = geometry->vertex[iMarker][iVertex]->GetNode(); - normal = geometry->vertex[iMarker][iVertex]->GetNormal(); - norm = 0.0; - for (iDim = 0; iDim < nDim; iDim++) { - norm += normal[iDim] * normal[iDim]; - } - norm = sqrt(norm); + geometry->vertex[iMarker][iVertex]->GetNormal(normal); + norm = GeometryToolbox::Norm(nDim, normal); for (iDim = 0; iDim < nDim; iDim++) { normal[iDim] = normal[iDim] / norm; - } - for (iDim = 0; iDim < nDim; iDim++) { nodes->SetSensitivity(iPoint, iDim, normal[iDim] * LinSysSol[iPoint]); } } @@ -948,8 +925,7 @@ void CGradientSmoothingSolver::WriteSensitivity(CGeometry* geometry, const CConf } else { for (iPoint = 0; iPoint < nPoint; iPoint++) { for (iDim = 0; iDim < nDim; iDim++) { - total_index = iPoint*nDim + iDim; - nodes->SetSensitivity(iPoint, iDim, LinSysSol[total_index]); + nodes->SetSensitivity(iPoint, iDim, LinSysSol(iPoint, iDim)); } } } @@ -1027,16 +1003,10 @@ void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry* geometry void CGradientSmoothingSolver::Complete_Surface_StiffMatrix(const CGeometry* geometry) { - su2activematrix mId_Aux; - mId_Aux.resize(nDim, nDim) = su2double(0.0); - for (unsigned iDim = 0; iDim < nDim; iDim++) { - mId_Aux[iDim][iDim] = su2double(1.0); - } - /*--- Assembling the stiffness matrix on the design surface means the Jacobian is the identity for nodes inside the domain. ---*/ for (unsigned long iPoint = 0; iPoint < geometry->GetnPointDomain(); iPoint++){ if (visited[iPoint]==false) { - Jacobian.AddBlock(iPoint, iPoint, mId_Aux); + Jacobian.AddVal2Diag(iPoint, 1.0); } } From 654b53158395c33f4a1305524d4b2fc4deed8809 Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Fri, 14 Jan 2022 11:27:34 +0100 Subject: [PATCH 23/26] Apply more changes from code review. --- Common/include/linear_algebra/CSysMatrix.hpp | 2 +- .../solvers/CGradientSmoothingSolver.hpp | 2 +- .../src/solvers/CGradientSmoothingSolver.cpp | 22 +++++++++---------- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/Common/include/linear_algebra/CSysMatrix.hpp b/Common/include/linear_algebra/CSysMatrix.hpp index 1b889e9c6d66..d95670f9d85b 100644 --- a/Common/include/linear_algebra/CSysMatrix.hpp +++ b/Common/include/linear_algebra/CSysMatrix.hpp @@ -515,7 +515,7 @@ class CSysMatrix { if (!mat_ij) return; for (auto iVar = 0ul; iVar < nVar; ++iVar) { for (auto jVar = 0ul; jVar < nEqn; ++jVar) { - *mat_ij = (Overwrite ? ScalarType(0) : *mat_ij) + PassiveAssign(alpha * val_block[iVar][jVar]); + *mat_ij = (Overwrite ? ScalarType(0) : *mat_ij) + PassiveAssign(alpha * val_block(iVar, jVar)); ++mat_ij; } } diff --git a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp index 6df2b361e8ef..27622063d4d1 100644 --- a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp +++ b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp @@ -137,7 +137,7 @@ class CGradientSmoothingSolver final : public CFEASolverBase { /*! * \brief Set the boundary conditions */ - void Impose_BC(CGeometry* geometry, const CConfig* config); + void Impose_BC(const CGeometry* geometry, const CConfig* config); /*! * \brief Set Dirichlet boundary conditions diff --git a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp index 8fb74f103f17..a432bb1fccdc 100644 --- a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp +++ b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp @@ -589,7 +589,7 @@ void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry* geometry, con } } -void CGradientSmoothingSolver::Impose_BC(CGeometry* geometry, const CConfig* config) { +void CGradientSmoothingSolver::Impose_BC(const CGeometry* geometry, const CConfig* config) { unsigned int iMarker; /*--- Get the boundary markers and iterate over them @@ -896,10 +896,9 @@ void CGradientSmoothingSolver::ReadSensFromGeometry(const CGeometry* geometry) { } void CGradientSmoothingSolver::WriteSensitivity(CGeometry* geometry, const CConfig* config) { - unsigned long iPoint; + unsigned int iDim; su2double normal[MAXNDIM]; - su2double norm; /*--- Split between surface and volume first. ---*/ if ( config->GetSmoothOnSurface() ) { @@ -907,9 +906,9 @@ void CGradientSmoothingSolver::WriteSensitivity(CGeometry* geometry, const CConf for (unsigned short iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { if (config->GetMarker_All_DV(iMarker) == YES) { for (unsigned long iVertex = 0; iVertex < geometry->nVertex[iMarker]; iVertex++) { - iPoint = geometry->vertex[iMarker][iVertex]->GetNode(); + const auto iPoint = geometry->vertex[iMarker][iVertex]->GetNode(); geometry->vertex[iMarker][iVertex]->GetNormal(normal); - norm = GeometryToolbox::Norm(nDim, normal); + const auto norm = GeometryToolbox::Norm(nDim, normal); for (iDim = 0; iDim < nDim; iDim++) { normal[iDim] = normal[iDim] / norm; nodes->SetSensitivity(iPoint, iDim, normal[iDim] * LinSysSol[iPoint]); @@ -919,11 +918,11 @@ void CGradientSmoothingSolver::WriteSensitivity(CGeometry* geometry, const CConf } } else { if (config->GetSmoothSepDim()) { - for (iPoint = 0; iPoint < nPoint; iPoint++) { + for (auto iPoint = 0ul; iPoint < nPoint; iPoint++) { nodes->SetSensitivity(iPoint, GetCurrentDim(), LinSysSol[iPoint]); } } else { - for (iPoint = 0; iPoint < nPoint; iPoint++) { + for (auto iPoint = 0ul; iPoint < nPoint; iPoint++) { for (iDim = 0; iDim < nDim; iDim++) { nodes->SetSensitivity(iPoint, iDim, LinSysSol(iPoint, iDim)); } @@ -955,7 +954,6 @@ void CGradientSmoothingSolver::ReadVectorToGeometry(const CGeometry* geometry, C void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry* geometry, const CConfig* config) { /*--- Store global point indices of essential BC markers. ---*/ vector myPoints; - unsigned long iPoint, iVertex; /*--- get global indexes of Dirichlet boundaries ---*/ @@ -965,9 +963,9 @@ void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry* geometry * and the current rank holds part of it. ---*/ for (unsigned short iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { if (config->GetMarker_All_DV(iMarker) == YES && config->GetDirichletSurfaceBound()) { - for (iVertex = 0; iVertex < geometry->nVertex[iMarker]; iVertex++) { + for (auto iVertex = 0ul; iVertex < geometry->nVertex[iMarker]; iVertex++) { /*--- Get node index ---*/ - iPoint = geometry->vertex[iMarker][iVertex]->GetNode(); + const auto iPoint = geometry->vertex[iMarker][iVertex]->GetNode(); if (nodes->GetIsBoundaryPoint(iPoint)) { myPoints.push_back(geometry->nodes->GetGlobalIndex(iPoint)); } @@ -986,7 +984,7 @@ void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry* geometry } } for (auto iMarker : markers) { - for (iVertex = 0ul; iVertex < geometry->nVertex[iMarker]; iVertex++) { + for (auto iVertex = 0ul; iVertex < geometry->nVertex[iMarker]; iVertex++) { auto iPoint = geometry->vertex[iMarker][iVertex]->GetNode(); myPoints.push_back(geometry->nodes->GetGlobalIndex(iPoint)); } @@ -1004,7 +1002,7 @@ void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry* geometry void CGradientSmoothingSolver::Complete_Surface_StiffMatrix(const CGeometry* geometry) { /*--- Assembling the stiffness matrix on the design surface means the Jacobian is the identity for nodes inside the domain. ---*/ - for (unsigned long iPoint = 0; iPoint < geometry->GetnPointDomain(); iPoint++){ + for (unsigned long iPoint = 0ul; iPoint < geometry->GetnPointDomain(); iPoint++){ if (visited[iPoint]==false) { Jacobian.AddVal2Diag(iPoint, 1.0); } From d138d8cc819b9c70db8a595df14f117dee447ce1 Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Mon, 17 Jan 2022 15:07:13 +0100 Subject: [PATCH 24/26] Apply changes from code review. --- Common/src/geometry/elements/CLINE.cpp | 2 +- Common/src/geometry/elements/CPYRAM6.cpp | 2 +- Common/src/geometry/elements/CTETRA4.cpp | 2 +- Common/src/geometry/elements/CTRIA3.cpp | 2 +- .../src/grid_movement/CVolumetricMovement.cpp | 2 +- .../integration/CIntegrationFactory.hpp | 2 +- SU2_CFD/include/numerics/CGradSmoothing.hpp | 12 +-- SU2_CFD/include/solvers/CFEASolverBase.hpp | 2 + .../solvers/CGradientSmoothingSolver.hpp | 25 +----- SU2_CFD/include/solvers/CSolver.hpp | 2 - .../variables/CSobolevSmoothingVariable.hpp | 7 +- SU2_CFD/src/numerics/CGradSmoothing.cpp | 2 - .../src/solvers/CGradientSmoothingSolver.cpp | 89 +++++++++---------- .../variables/CSobolevSmoothingVariable.cpp | 2 +- SU2_DOT/src/SU2_DOT.cpp | 19 ++-- .../naca0012/inv_NACA0012_gradsmooth.cfg | 20 ++--- .../oneram6/ONERAM6_gradsmooth.cfg | 76 ++++++++++++++-- 17 files changed, 147 insertions(+), 121 deletions(-) diff --git a/Common/src/geometry/elements/CLINE.cpp b/Common/src/geometry/elements/CLINE.cpp index cfb3b2fc351f..1e8f25ac2ca9 100644 --- a/Common/src/geometry/elements/CLINE.cpp +++ b/Common/src/geometry/elements/CLINE.cpp @@ -9,7 +9,7 @@ * The SU2 Project is maintained by the SU2 Foundation * (http://su2foundation.org) * - * Copyright 2012-2019, SU2 Contributors (cf. AUTHORS.md) + * Copyright 2012-2022, SU2 Contributors (cf. AUTHORS.md) * * SU2 is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/Common/src/geometry/elements/CPYRAM6.cpp b/Common/src/geometry/elements/CPYRAM6.cpp index 7f9ac2b80928..569b4fa07372 100644 --- a/Common/src/geometry/elements/CPYRAM6.cpp +++ b/Common/src/geometry/elements/CPYRAM6.cpp @@ -9,7 +9,7 @@ * The SU2 Project is maintained by the SU2 Foundation * (http://su2foundation.org) * - * Copyright 2012-2019, SU2 Contributors (cf. AUTHORS.md) + * Copyright 2012-2022, SU2 Contributors (cf. AUTHORS.md) * * SU2 is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/Common/src/geometry/elements/CTETRA4.cpp b/Common/src/geometry/elements/CTETRA4.cpp index 8cc99d2391d7..d60427c5866f 100644 --- a/Common/src/geometry/elements/CTETRA4.cpp +++ b/Common/src/geometry/elements/CTETRA4.cpp @@ -9,7 +9,7 @@ * The SU2 Project is maintained by the SU2 Foundation * (http://su2foundation.org) * - * Copyright 2012-2019, SU2 Contributors (cf. AUTHORS.md) + * Copyright 2012-2022, SU2 Contributors (cf. AUTHORS.md) * * SU2 is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/Common/src/geometry/elements/CTRIA3.cpp b/Common/src/geometry/elements/CTRIA3.cpp index d47f09d33723..2318e3d5269f 100644 --- a/Common/src/geometry/elements/CTRIA3.cpp +++ b/Common/src/geometry/elements/CTRIA3.cpp @@ -9,7 +9,7 @@ * The SU2 Project is maintained by the SU2 Foundation * (http://su2foundation.org) * - * Copyright 2012-2019, SU2 Contributors (cf. AUTHORS.md) + * Copyright 2012-2022, SU2 Contributors (cf. AUTHORS.md) * * SU2 is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/Common/src/grid_movement/CVolumetricMovement.cpp b/Common/src/grid_movement/CVolumetricMovement.cpp index 67d4aa84aba4..11896b4b8c73 100644 --- a/Common/src/grid_movement/CVolumetricMovement.cpp +++ b/Common/src/grid_movement/CVolumetricMovement.cpp @@ -1761,7 +1761,7 @@ void CVolumetricMovement::UpdateGridCoord_Derivatives(CGeometry *geometry, CConf } } else if ((Kind_SU2 == SU2_COMPONENT::SU2_DOT) && !ForwardProjectionDerivative) { // need to reset here, since we read out the whole vector, but are only interested in boundary derivatives. - if (config->GetSmoothGradient() && !ForwardProjectionDerivative) { + if (config->GetSmoothGradient()) { for (iPoint = 0; iPoint < geometry->GetnPoint(); iPoint++) { for (iDim = 0; iDim < nDim; iDim++) { total_index = iPoint*nDim + iDim; diff --git a/SU2_CFD/include/integration/CIntegrationFactory.hpp b/SU2_CFD/include/integration/CIntegrationFactory.hpp index 5ed8c2689f39..bcb603c55645 100644 --- a/SU2_CFD/include/integration/CIntegrationFactory.hpp +++ b/SU2_CFD/include/integration/CIntegrationFactory.hpp @@ -9,7 +9,7 @@ * The SU2 Project is maintained by the SU2 Foundation * (http://su2foundation.org) * - * Copyright 2012-2019, SU2 Contributors (cf. AUTHORS.md) + * Copyright 2012-2022, SU2 Contributors (cf. AUTHORS.md) * * SU2 is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/SU2_CFD/include/numerics/CGradSmoothing.hpp b/SU2_CFD/include/numerics/CGradSmoothing.hpp index 7eb0bcfac902..52d6c361ce82 100644 --- a/SU2_CFD/include/numerics/CGradSmoothing.hpp +++ b/SU2_CFD/include/numerics/CGradSmoothing.hpp @@ -9,7 +9,7 @@ * The SU2 Project is maintained by the SU2 Foundation * (http://su2foundation.org) * - * Copyright 2012-2019, SU2 Contributors (cf. AUTHORS.md) + * Copyright 2012-2022, SU2 Contributors (cf. AUTHORS.md) * * SU2 is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -36,7 +36,7 @@ * \ingroup Grad_Smooth * \author T. Dick */ -class CGradSmoothing : public CNumerics { +class CGradSmoothing final : public CNumerics { su2activematrix val_DHiDHj; su2activevector Ni_Vec; @@ -55,10 +55,10 @@ class CGradSmoothing : public CNumerics { CGradSmoothing(unsigned short val_nDim, const CConfig* config); /*! - * \brief Destructor of the class. + * \brief Build the tangent stiffness matrix of an element. + * \param[in,out] element_container - Element whose tangent matrix is being built. + * \param[in] config - Definition of the problem. */ - ~CGradSmoothing(); - - void Compute_Tangent_Matrix(CElement *element_container, const CConfig *config); + void Compute_Tangent_Matrix(CElement *element_container, const CConfig *config) override; }; diff --git a/SU2_CFD/include/solvers/CFEASolverBase.hpp b/SU2_CFD/include/solvers/CFEASolverBase.hpp index 907353da2ef2..125c3820ac98 100644 --- a/SU2_CFD/include/solvers/CFEASolverBase.hpp +++ b/SU2_CFD/include/solvers/CFEASolverBase.hpp @@ -27,6 +27,8 @@ #pragma once +#include + #include "CSolver.hpp" #include "../../../Common/include/geometry/elements/CElement.hpp" #include "../../../Common/include/parallelization/omp_structure.hpp" diff --git a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp index 27622063d4d1..3dc099cd7a4d 100644 --- a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp +++ b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp @@ -35,7 +35,6 @@ /*! \class CGradientSmoothingSolver * \brief Main class for defining a gradient smoothing. * \author T. Dick. - * \date March 25, 2019. */ class CGradientSmoothingSolver final : public CFEASolverBase { public: @@ -43,15 +42,14 @@ class CGradientSmoothingSolver final : public CFEASolverBase { /** Introduction of a new alias for the data type to allow compilation with forward mode. * * This is done for compatibility to the treatment of Jacobian and System in CSolver.hpp. - * Note that the computations done here are always 'passive', i.e. not intended to be differentiated. We only need to - * define functions depending on this once. + * Note that the computations done here are always 'passive', i.e. not intended to be differentiated. + * We only need to define functions depending on this once. */ #ifndef CODI_FORWARD_TYPE typedef su2mixedfloat su2matvecscalar; #else typedef su2double su2matvecscalar; #endif - using MatrixType = C2DContainer; private: unsigned int curDim; /*!< \brief If we separate dimensions this tells us in what dimension we currently are. */ @@ -112,6 +110,7 @@ class CGradientSmoothingSolver final : public CFEASolverBase { CConfig *config, su2double** Gradient) override; + private: /*! * \brief Assemble the stiffness matrix @@ -179,11 +178,6 @@ class CGradientSmoothingSolver final : public CFEASolverBase { CConfig *config, su2double** Gradient) override; - /*! - * \brief Return current parameter gradient. - */ - inline const vector& GetDeltaP() const { return deltaP; } - /*! * \brief write the DV gradient into a file */ @@ -231,22 +225,11 @@ class CGradientSmoothingSolver final : public CFEASolverBase { */ void ReadSensFromGeometry(const CGeometry *geometry) override; - private: /*! * \brief Write the solution of the linear solver into the sensitivities of the nodes */ void WriteSensitivity(CGeometry* geometry, const CConfig* config); - /*! - * \brief Copy sensitivities from a vector into the geometry - */ - void WriteVectorToGeometry(CGeometry* geometry, const CSysVector& vector) const; - - /*! - * \brief Copy sensitivities from the geometry into a vector - */ - void ReadVectorToGeometry(const CGeometry* geometry, CSysVector& vector); - /*! * \brief Get the value of the reference coordinate to set on the element structure. * \param[in] geometry - Geometrical definition of the problem. @@ -301,7 +284,7 @@ class CGradientSmoothingSolver final : public CFEASolverBase { /*! * \brief Return the current working dimension. */ - inline const unsigned int& GetCurrentDim() const { + inline unsigned int GetCurrentDim() const { return curDim; } diff --git a/SU2_CFD/include/solvers/CSolver.hpp b/SU2_CFD/include/solvers/CSolver.hpp index a153de2dae30..864f9e199a81 100644 --- a/SU2_CFD/include/solvers/CSolver.hpp +++ b/SU2_CFD/include/solvers/CSolver.hpp @@ -38,8 +38,6 @@ #include #include #include -#include -#include #include "../fluid/CFluidModel.hpp" #include "../task_definition.hpp" diff --git a/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp b/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp index 73aeb41fc054..50ecd3974466 100644 --- a/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp +++ b/SU2_CFD/include/variables/CSobolevSmoothingVariable.hpp @@ -42,12 +42,7 @@ class CSobolevSmoothingVariable final : public CVariable { * \param[in] ndim - Number of dimensions of the problem. * \param[in] config - Definition of the particular problem. */ - CSobolevSmoothingVariable(unsigned long npoint, unsigned long ndim, CConfig *config); - - /*! - * \brief Destructor of the class. - */ - ~CSobolevSmoothingVariable() override = default; + CSobolevSmoothingVariable(unsigned long npoint, unsigned long ndim, const CConfig *config); /*! * \brief Set the sensitivity at the node diff --git a/SU2_CFD/src/numerics/CGradSmoothing.cpp b/SU2_CFD/src/numerics/CGradSmoothing.cpp index d59ea40cccb1..fff643c75d71 100644 --- a/SU2_CFD/src/numerics/CGradSmoothing.cpp +++ b/SU2_CFD/src/numerics/CGradSmoothing.cpp @@ -38,8 +38,6 @@ CGradSmoothing::CGradSmoothing(unsigned short val_nDim, const CConfig* config) : Ni_Vec.setConstant(0.0); } -CGradSmoothing::~CGradSmoothing() {} - void CGradSmoothing::Compute_Tangent_Matrix(CElement *element, const CConfig *config) { unsigned int iDim, jDim, iGauss, nGauss, iShape, jShape, nNode; diff --git a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp index a432bb1fccdc..23c5b5b57a1e 100644 --- a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp +++ b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp @@ -31,8 +31,33 @@ #include "../../include/solvers/CGradientSmoothingSolver.hpp" #include "../../include/variables/CSobolevSmoothingVariable.hpp" +/*! + * \namespace CGradientSmoothingSolverDetails + * \brief Namespace to hide helper functions used by the CGradientSmoothingSolver class. + */ +namespace CGradientSmoothingSolverDetails { + +template +void WriteVectorToGeometry(CGeometry* geometry, const CSysVector& vector) { + for (auto iPoint = 0ul; iPoint < geometry->GetnPoint(); iPoint++) { + for (auto iDim = 0u; iDim < geometry->GetnDim(); iDim++) { + geometry->SetSensitivity(iPoint,iDim, vector(iPoint, iDim)); + } + } +} + +template +void ReadVectorToGeometry(const CGeometry* geometry, CSysVector& vector) { + for (auto iPoint = 0ul; iPoint < geometry->GetnPoint(); iPoint++) { + for (auto iDim = 0u; iDim < geometry->GetnDim(); iDim++) { + vector(iPoint, iDim) = SU2_TYPE::GetValue(geometry->GetSensitivity(iPoint,iDim)); + } + } +} +} // namespace CGradientSmoothingSolverDetails + CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig *config) : CFEASolverBase(LINEAR_SOLVER_MODE::GRADIENT_MODE) { - unsigned int iDim, marker_count = 0; + unsigned int marker_count = 0; unsigned long iPoint; /*--- This solver does not perform recording operations --*/ @@ -80,9 +105,6 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig } } - Residual = new su2double[nDim]; for (iDim = 0; iDim < nDim; iDim++) Residual[iDim] = 0.0; - Solution = new su2double[nDim]; for (iDim = 0; iDim < nDim; iDim++) Solution[iDim] = 0.0; - /*--- initializations for linear equation systems ---*/ if ( !config->GetSmoothOnSurface() ) { nVar = config->GetSmoothSepDim() ? 1 : nDim; @@ -143,16 +165,6 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig CGradientSmoothingSolver::~CGradientSmoothingSolver(void) { - if (element_container != nullptr) { - for (unsigned int iVar = 0; iVar < MAX_TERMS; iVar++) { - for (unsigned int jVar = 0; jVar < MAX_FE_KINDS; jVar++) { - delete element_container[iVar][jVar]; - } - delete [] element_container[iVar]; - } - delete [] element_container; - } - delete nodes; } @@ -288,9 +300,9 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CNu } else { /*--- Forward evaluation of the mesh deformation ---*/ - WriteVectorToGeometry(geometry, helperVecIn); + CGradientSmoothingSolverDetails::WriteVectorToGeometry(geometry, helperVecIn); grid_movement->SetVolume_Deformation(geometry, config, false, true, true); - ReadVectorToGeometry(geometry, helperVecIn); + CGradientSmoothingSolverDetails::ReadVectorToGeometry(geometry, helperVecIn); CSysMatrixComms::Initiate(helperVecIn, geometry, config, SOLUTION_MATRIX); CSysMatrixComms::Complete(helperVecIn, geometry, config, SOLUTION_MATRIX); @@ -305,9 +317,9 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CNu } /*--- Forward evaluation of the mesh deformation ---*/ - WriteVectorToGeometry(geometry, helperVecOut); + CGradientSmoothingSolverDetails::WriteVectorToGeometry(geometry, helperVecOut); grid_movement->SetVolume_Deformation(geometry, config, false, true, false); - ReadVectorToGeometry(geometry, helperVecOut); + CGradientSmoothingSolverDetails::ReadVectorToGeometry(geometry, helperVecOut); } @@ -324,7 +336,7 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CNu if (rank == MASTER_NODE) { /*--- For multizone append zone number to filename. ---*/ string hess_filename = config->GetObjFunc_Hess_FileName(); - if (config->GetMultizone_Problem()) config->GetMultizone_FileName(hess_filename, config->GetiZone(), ".dat"); + if (config->GetMultizone_Problem()) hess_filename=config->GetMultizone_FileName(hess_filename, config->GetiZone(), ".dat"); ofstream SysMatrix(hess_filename); SysMatrix.precision(config->GetOutput_Precision()); @@ -333,7 +345,7 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CNu SysMatrix << hessian(row,column); if (column!=nDVtotal-1) SysMatrix << ", "; } - if (row!=nDVtotal-1) SysMatrix << std::endl; + if (row!=nDVtotal-1) SysMatrix << '\n'; } SysMatrix.close(); } @@ -463,8 +475,8 @@ void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry* geometry, Jacobian.AddBlock(indexNode[iNode], indexNode[jNode], Jacobian_block); /*--- Store if we set values for a given node already ---*/ - if (visited[indexNode[iNode]]==false) { visited[indexNode[iNode]]=true; } - if (visited[indexNode[jNode]]==false) { visited[indexNode[jNode]]=true; } + visited[indexNode[iNode]]=true; + visited[indexNode[jNode]]=true; } } @@ -476,6 +488,7 @@ void CGradientSmoothingSolver::Compute_Residual(CGeometry* geometry, const CConf unsigned int iDim, iNode, nNodes = 0; int EL_KIND = 0; std::array indexNode; + std::array Residual; su2double Weight, Jac_X, val_Coord; for (iElem = 0; iElem < geometry->GetnElem(); iElem++) { @@ -534,7 +547,7 @@ void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry* geometry, con int EL_KIND = 0; std::array indexNode; std::array indexVertex; - su2double Weight, Jac_X, normalSens = 0.0, norm, val_Coord; + su2double Weight, Jac_X, norm, val_Coord, normalSens = 0.0, Residual=0.0; su2double normal[MAXNDIM]; for (iElem = 0; iElem < geometry->GetnElem_Bound(val_marker); iElem++) { @@ -579,10 +592,10 @@ void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry* geometry, con normalSens += normal[iDim] * nodes->GetSensitivity(indexNode[iNode], iDim); } - Residual[0] += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode, iGauss) * normalSens; - LinSysRes.AddBlock(indexNode[iNode], Residual); + Residual += Weight * Jac_X * element_container[GRAD_TERM][EL_KIND]->GetNi(iNode, iGauss) * normalSens; + LinSysRes.AddBlock(indexNode[iNode], &Residual); - Residual[0] = 0; + Residual = 0; normalSens = 0; } } @@ -691,7 +704,7 @@ void CGradientSmoothingSolver::CalculateOriginalGradient(CGeometry *geometry, CV grid_movement->SetVolume_Deformation(geometry, config, false, true); - ReadVectorToGeometry(geometry, helperVecOut); + CGradientSmoothingSolverDetails::ReadVectorToGeometry(geometry, helperVecOut); ProjectMeshToDV(geometry, helperVecOut, deltaP, activeCoord, config); @@ -721,7 +734,7 @@ void CGradientSmoothingSolver::OutputDVGradient(const CConfig* config, string ou unsigned iDV; if (rank == MASTER_NODE) { /*--- For multizone append zone number to filename. ---*/ - if (config->GetMultizone_Problem()) config->GetMultizone_FileName(out_file, config->GetiZone(), ".dat"); + if (config->GetMultizone_Problem()) out_file=config->GetMultizone_FileName(out_file, config->GetiZone(), ".dat"); ofstream delta_p (out_file); delta_p.precision(config->GetOutput_Precision()); @@ -931,26 +944,6 @@ void CGradientSmoothingSolver::WriteSensitivity(CGeometry* geometry, const CConf } } -void CGradientSmoothingSolver::WriteVectorToGeometry(CGeometry* geometry, const CSysVector& vector) const { - unsigned long iPoint; - unsigned int iDim; - for (iPoint = 0; iPoint < nPoint; iPoint++) { - for (iDim = 0; iDim < nDim; iDim++) { - geometry->SetSensitivity(iPoint,iDim, vector(iPoint, iDim)); - } - } -} - -void CGradientSmoothingSolver::ReadVectorToGeometry(const CGeometry* geometry, CSysVector& vector) { - unsigned long iPoint; - unsigned int iDim; - for (iPoint = 0; iPoint < nPoint; iPoint++) { - for (iDim = 0; iDim < nDim; iDim++) { - vector(iPoint, iDim) = SU2_TYPE::GetValue(geometry->GetSensitivity(iPoint,iDim)); - } - } -} - void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry* geometry, const CConfig* config) { /*--- Store global point indices of essential BC markers. ---*/ vector myPoints; diff --git a/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp b/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp index 9b05d1fe15de..fdbebf35eb1c 100644 --- a/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp +++ b/SU2_CFD/src/variables/CSobolevSmoothingVariable.cpp @@ -27,7 +27,7 @@ #include "../../include/variables/CSobolevSmoothingVariable.hpp" -CSobolevSmoothingVariable::CSobolevSmoothingVariable(unsigned long npoint, unsigned long ndim, CConfig *config) : +CSobolevSmoothingVariable::CSobolevSmoothingVariable(unsigned long npoint, unsigned long ndim, const CConfig *config) : CVariable(npoint, ndim, config) { nDim = ndim; diff --git a/SU2_DOT/src/SU2_DOT.cpp b/SU2_DOT/src/SU2_DOT.cpp index d3c79ba8ce34..9791f06a500d 100644 --- a/SU2_DOT/src/SU2_DOT.cpp +++ b/SU2_DOT/src/SU2_DOT.cpp @@ -972,15 +972,14 @@ void DerivativeTreatment_MeshSensitivity(CGeometry *geometry, CConfig *config, C int rank = SU2_MPI::GetRank(); - /*--- Warning if choosen mode is unsupported. + /*--- Warning if choosen smoothing mode is unsupported. * This is the default option if the user has not specified a mode in the config file. ---*/ if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::NONE) { - if (rank == MASTER_NODE) cout << "Unsupported operation modus for the Sobolev Smoothing Solver." << endl; - return; + SU2_MPI::Error("Unsupported operation modus for the Sobolev Smoothing Solver.", CURRENT_FUNCTION); } /*-- Construct the smoothing solver and numerics ---*/ - CSolver* solver = new CGradientSmoothingSolver(geometry, config); + std::unique_ptr solver(new CGradientSmoothingSolver(geometry, config)); CNumerics* numerics; if (config->GetSmoothOnSurface()) { numerics = new CGradSmoothing(geometry->GetnDim()-1, config); @@ -1026,21 +1025,22 @@ void DerivativeTreatment_MeshSensitivity(CGeometry *geometry, CConfig *config, C } + delete numerics; + } void DerivativeTreatment_Gradient(CGeometry *geometry, CConfig *config, CVolumetricMovement* grid_movement, CSurfaceMovement *surface_movement, su2double** Gradient) { int rank = SU2_MPI::GetRank(); - /*--- Warning if choosen mode is unsupported. + /*--- Error if choosen smoothing mode is unsupported. * This is the default option if the user has not specified a mode in the config file. ---*/ if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::NONE) { - if (rank == MASTER_NODE) cout << "Unsupported operation modus for the Sobolev Smoothing Solver." << endl; - return; + SU2_MPI::Error("Unsupported operation modus for the Sobolev Smoothing Solver.", CURRENT_FUNCTION); } /*-- Construct the smoothing solver and numerics ---*/ - CSolver* solver = new CGradientSmoothingSolver(geometry, config); + std::unique_ptr solver(new CGradientSmoothingSolver(geometry, config)); CNumerics* numerics; if (config->GetSmoothOnSurface()) { numerics = new CGradSmoothing(geometry->GetnDim()-1, config); @@ -1062,4 +1062,7 @@ void DerivativeTreatment_Gradient(CGeometry *geometry, CConfig *config, CVolumet config->GetSobMode() == ENUM_SOBOLEV_MODUS::MESH_LEVEL) { solver->RecordTapeAndCalculateOriginalGradient(geometry, surface_movement, grid_movement, config, Gradient); } + + delete numerics; + } diff --git a/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg b/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg index 3bd103f1fc78..327e0647a8bf 100644 --- a/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg +++ b/TestCases/grad_smooth/naca0012/inv_NACA0012_gradsmooth.cfg @@ -20,8 +20,6 @@ ITER= 10000 CONV_FIELD= RMS_DENSITY, RMS_ADJ_DENSITY CONV_RESIDUAL_MINVAL= -12 CONV_STARTITER= 10 -CONV_CAUCHY_ELEMS= 100 -CONV_CAUCHY_EPS= 1E-6 % -------------------- COMPRESSIBLE FREE-STREAM DEFINITION --------------------% @@ -48,17 +46,9 @@ MARKER_MONITORING = ( airfoil ) NUM_METHOD_GRAD= GREEN_GAUSS CFL_NUMBER= 25.0 -CFL_ADAPT= NO -RK_ALPHA_COEFF= ( 0.66667, 0.66667, 1.000000 ) OBJECTIVE_FUNCTION= DRAG OBJECTIVE_WEIGHT = 1.0 -% ----------- SLOPE LIMITER AND DISSIPATION SENSOR DEFINITION -----------------% - -MUSCL_FLOW= YES -SLOPE_LIMITER_FLOW= VENKATAKRISHNAN -VENKAT_LIMITER_COEFF= 0.03 - % -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------% CONV_NUM_METHOD_FLOW= JST @@ -126,9 +116,15 @@ GRAD_LINEAR_SOLVER_ERROR= 1E-14 % When running the Sobolev smoothing solver on the design variable parameters, % the system is computed with respect to the design values specified in the SU2 config file. % The projected system matrix will the have the dimensions 'number DV_PARAM * number DV_PARAM'. -DV_KIND= HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE +DV_KIND= HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, \ +HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, \ +HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, \ +HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE, HICKS_HENNE DV_MARKER= ( airfoil ) -DV_PARAM= ( 0.0, 0.05) ; ( 0.0, 0.1) ; ( 0.0, 0.15) ; ( 0.0, 0.2) ; ( 0.0, 0.25) ; ( 0.0, 0.3) ; ( 0.0, 0.35) ; ( 0.0, 0.4) ; ( 0.0, 0.45) ; ( 0.0, 0.5) ; ( 0.0, 0.55) ; ( 0.0, 0.6) ; ( 0.0, 0.65) ; ( 0.0, 0.7) ; ( 0.0, 0.75) ; ( 0.0, 0.8) ; ( 0.0, 0.85) ; ( 0.0, 0.9) ; ( 0.0, 0.95) ; ( 1.0, 0.05) ; ( 1.0, 0.1) ; ( 1.0, 0.15) ; ( 1.0, 0.2) ; ( 1.0, 0.25) ; ( 1.0, 0.3) ; ( 1.0, 0.35) ; ( 1.0, 0.4) ; ( 1.0, 0.45) ; ( 1.0, 0.5) ; ( 1.0, 0.55) ; ( 1.0, 0.6) ; ( 1.0, 0.65) ; ( 1.0, 0.7) ; ( 1.0, 0.75) ; ( 1.0, 0.8) ; ( 1.0, 0.85) ; ( 1.0, 0.9) ; ( 1.0, 0.95) +DV_PARAM= ( 0.0, 0.05) ; ( 0.0, 0.1) ; ( 0.0, 0.15) ; ( 0.0, 0.2) ; ( 0.0, 0.25) ; ( 0.0, 0.3) ; ( 0.0, 0.35) ; ( 0.0, 0.4) ; ( 0.0, 0.45) ; ( 0.0, 0.5) ; \ +( 0.0, 0.55) ; ( 0.0, 0.6) ; ( 0.0, 0.65) ; ( 0.0, 0.7) ; ( 0.0, 0.75) ; ( 0.0, 0.8) ; ( 0.0, 0.85) ; ( 0.0, 0.9) ; ( 0.0, 0.95) ; ( 1.0, 0.05) ; \ +( 1.0, 0.1) ; ( 1.0, 0.15) ; ( 1.0, 0.2) ; ( 1.0, 0.25) ; ( 1.0, 0.3) ; ( 1.0, 0.35) ; ( 1.0, 0.4) ; ( 1.0, 0.45) ; ( 1.0, 0.5) ; ( 1.0, 0.55) ; \ +( 1.0, 0.6) ; ( 1.0, 0.65) ; ( 1.0, 0.7) ; ( 1.0, 0.75) ; ( 1.0, 0.8) ; ( 1.0, 0.85) ; ( 1.0, 0.9) ; ( 1.0, 0.95) DV_VALUE= 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% diff --git a/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg b/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg index 49c35953ee68..d2be541c7fa6 100644 --- a/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg +++ b/TestCases/grad_smooth/oneram6/ONERAM6_gradsmooth.cfg @@ -20,8 +20,6 @@ ITER= 3500 CONV_FIELD= RMS_DENSITY, RMS_ADJ_DENSITY CONV_RESIDUAL_MINVAL= -16 CONV_STARTITER= 10 -CONV_CAUCHY_ELEMS= 100 -CONV_CAUCHY_EPS= 1E-16 % -------------------- COMPRESSIBLE FREE-STREAM DEFINITION --------------------% @@ -55,15 +53,11 @@ NUM_METHOD_GRAD= GREEN_GAUSS CFL_NUMBER= 100.0 CFL_ADAPT= YES CFL_ADAPT_PARAM= ( 0.5, 1.5, 25.0, 100000.0 ) -MAX_DELTA_TIME= 1E6 -RK_ALPHA_COEFF= ( 0.66667, 0.66667, 1.000000 ) OBJECTIVE_FUNCTION= DRAG OBJECTIVE_WEIGHT = 1.0 % ----------- SLOPE LIMITER AND DISSIPATION SENSOR DEFINITION -----------------% -MUSCL_FLOW= YES -SLOPE_LIMITER_FLOW= VENKATAKRISHNAN MUSCL_TURB= NO SLOPE_LIMITER_TURB= VENKATAKRISHNAN VENKAT_LIMITER_COEFF= 0.05 @@ -143,10 +137,74 @@ GRAD_LINEAR_SOLVER_ERROR= 1E-14 % When running the Sobolev smoothing solver on the design variable parameters, % the system is computed with respect to the design values specified in the SU2 config file. % The projected system matrix will the have the dimensions 'number DV_PARAM * number DV_PARAM'. -DV_KIND= FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT +DV_KIND= FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, \ +FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT DV_MARKER= ( WING ) -DV_PARAM= ( WINGBOX, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 8.0, 1.0, 0.0, 0.0, 1.0) -DV_VALUE= 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 +DV_PARAM= ( WINGBOX, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 10.0, 0.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 4.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 9.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 1.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 3.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 8.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 2.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 2.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 7.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 3.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 1.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 6.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 4.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 0.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 5.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 10.0, 5.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 4.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 9.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 6.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 3.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 8.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 7.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 2.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 7.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 8.0, 0.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 6.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 0.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 5.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 10.0, 1.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 4.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 9.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 2.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 3.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 8.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 3.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 2.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 7.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 4.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 1.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 6.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 5.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 0.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 5.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 10.0, 6.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 3.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 4.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 8.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 9.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 7.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 0.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 1.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 2.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 3.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 4.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 5.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 6.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 7.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; \ +( WINGBOX, 8.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 9.0, 8.0, 1.0, 0.0, 0.0, 1.0) ; ( WINGBOX, 10.0, 8.0, 1.0, 0.0, 0.0, 1.0) +DV_VALUE= 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, \ +0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, \ +0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, \ +0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, \ +0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, \ +0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, \ +0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 % ------------------------ GRID DEFORMATION PARAMETERS ------------------------% % From 67996c1d8625223e34d70bb33e2d82e61b1895ee Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Mon, 17 Jan 2022 17:33:12 +0100 Subject: [PATCH 25/26] Use unique_ptr for gradient smoothing numerics in SU"_DOT.cpp. Apply clang format. --- .../src/solvers/CGradientSmoothingSolver.cpp | 15 +++++++---- SU2_DOT/src/SU2_DOT.cpp | 26 +++++-------------- 2 files changed, 17 insertions(+), 24 deletions(-) diff --git a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp index 23c5b5b57a1e..a6c72f2a4067 100644 --- a/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp +++ b/SU2_CFD/src/solvers/CGradientSmoothingSolver.cpp @@ -242,8 +242,10 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingSurface(CGeometry* geometry WriteSensitivity(geometry, config); } -void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CNumerics *numerics, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, CConfig *config, su2double** Gradient) { - +void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry* geometry, CNumerics* numerics, + CSurfaceMovement* surface_movement, + CVolumetricMovement* grid_movement, CConfig* config, + su2double** Gradient) { unsigned nDVtotal=config->GetnDV_Total(); unsigned column, row; unsigned long iPoint; @@ -336,7 +338,9 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CNu if (rank == MASTER_NODE) { /*--- For multizone append zone number to filename. ---*/ string hess_filename = config->GetObjFunc_Hess_FileName(); - if (config->GetMultizone_Problem()) hess_filename=config->GetMultizone_FileName(hess_filename, config->GetiZone(), ".dat"); + if (config->GetMultizone_Problem()) { + hess_filename = config->GetMultizone_FileName(hess_filename, config->GetiZone(), ".dat"); + } ofstream SysMatrix(hess_filename); SysMatrix.precision(config->GetOutput_Precision()); @@ -356,7 +360,6 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry *geometry, CNu deltaP = x; OutputDVGradient(config); - } void CGradientSmoothingSolver::Compute_StiffMatrix(CGeometry* geometry, CNumerics* numerics, const CConfig* config) { @@ -734,7 +737,9 @@ void CGradientSmoothingSolver::OutputDVGradient(const CConfig* config, string ou unsigned iDV; if (rank == MASTER_NODE) { /*--- For multizone append zone number to filename. ---*/ - if (config->GetMultizone_Problem()) out_file=config->GetMultizone_FileName(out_file, config->GetiZone(), ".dat"); + if (config->GetMultizone_Problem()) { + out_file = config->GetMultizone_FileName(out_file, config->GetiZone(), ".dat"); + } ofstream delta_p (out_file); delta_p.precision(config->GetOutput_Precision()); diff --git a/SU2_DOT/src/SU2_DOT.cpp b/SU2_DOT/src/SU2_DOT.cpp index 9791f06a500d..0f5acc848666 100644 --- a/SU2_DOT/src/SU2_DOT.cpp +++ b/SU2_DOT/src/SU2_DOT.cpp @@ -980,12 +980,8 @@ void DerivativeTreatment_MeshSensitivity(CGeometry *geometry, CConfig *config, C /*-- Construct the smoothing solver and numerics ---*/ std::unique_ptr solver(new CGradientSmoothingSolver(geometry, config)); - CNumerics* numerics; - if (config->GetSmoothOnSurface()) { - numerics = new CGradSmoothing(geometry->GetnDim()-1, config); - } else { - numerics = new CGradSmoothing(geometry->GetnDim(), config); - } + unsigned dim = (config->GetSmoothOnSurface() ? geometry->GetnDim() - 1 : geometry->GetnDim()); + std::unique_ptr numerics(new CGradSmoothing(dim, config)); if (rank == MASTER_NODE) cout << "Sobolev Smoothing of derivatives is active." << endl; @@ -1003,7 +999,7 @@ void DerivativeTreatment_MeshSensitivity(CGeometry *geometry, CConfig *config, C solver->ReadSensFromGeometry(geometry); /*--- Perform the smoothing procedure on all boundaries marked as DV marker. ---*/ - solver->ApplyGradientSmoothingSurface(geometry, numerics, config); + solver->ApplyGradientSmoothingSurface(geometry, numerics.get(), config); /*--- After appling the solver write the results back ---*/ solver->WriteSensToGeometry(geometry); @@ -1014,7 +1010,7 @@ void DerivativeTreatment_MeshSensitivity(CGeometry *geometry, CConfig *config, C /*--- Get the sensitivities from the geometry class to work with. ---*/ solver->ReadSensFromGeometry(geometry); - solver->ApplyGradientSmoothingVolume(geometry, numerics, config); + solver->ApplyGradientSmoothingVolume(geometry, numerics.get(), config); /*--- After appling the solver write the results back ---*/ solver->WriteSensToGeometry(geometry); @@ -1025,8 +1021,6 @@ void DerivativeTreatment_MeshSensitivity(CGeometry *geometry, CConfig *config, C } - delete numerics; - } void DerivativeTreatment_Gradient(CGeometry *geometry, CConfig *config, CVolumetricMovement* grid_movement, CSurfaceMovement *surface_movement, su2double** Gradient) { @@ -1041,12 +1035,8 @@ void DerivativeTreatment_Gradient(CGeometry *geometry, CConfig *config, CVolumet /*-- Construct the smoothing solver and numerics ---*/ std::unique_ptr solver(new CGradientSmoothingSolver(geometry, config)); - CNumerics* numerics; - if (config->GetSmoothOnSurface()) { - numerics = new CGradSmoothing(geometry->GetnDim()-1, config); - } else { - numerics = new CGradSmoothing(geometry->GetnDim(), config); - } + unsigned dim = (config->GetSmoothOnSurface() ? geometry->GetnDim() - 1 : geometry->GetnDim()); + std::unique_ptr numerics(new CGradSmoothing(dim, config)); if (rank == MASTER_NODE) cout << "Sobolev Smoothing of derivatives is active." << endl; @@ -1055,7 +1045,7 @@ void DerivativeTreatment_Gradient(CGeometry *geometry, CConfig *config, CVolumet /*--- Apply the smoothing procedure on the DV level. ---*/ if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::PARAM_LEVEL_COMPLETE) { - solver->ApplyGradientSmoothingDV(geometry, numerics, surface_movement, grid_movement, config, Gradient); + solver->ApplyGradientSmoothingDV(geometry, numerics.get(), surface_movement, grid_movement, config, Gradient); /*--- If smoothing already took place on the mesh level, or none is requested, just do standard projection. ---*/ } else if (config->GetSobMode() == ENUM_SOBOLEV_MODUS::ONLY_GRAD || @@ -1063,6 +1053,4 @@ void DerivativeTreatment_Gradient(CGeometry *geometry, CConfig *config, CVolumet solver->RecordTapeAndCalculateOriginalGradient(geometry, surface_movement, grid_movement, config, Gradient); } - delete numerics; - } From 347ef7d98a7e78c0c767bde3684919eb1931c248 Mon Sep 17 00:00:00 2001 From: Thomas Dick Date: Thu, 20 Jan 2022 16:09:00 +0100 Subject: [PATCH 26/26] Added filediff reference files for the regression tests. --- .github/workflows/regression.yml | 2 +- .../grad_smooth/naca0012/of_hess.dat.ref | 38 ++++ TestCases/grad_smooth/oneram6/of_hess.dat.ref | 198 ++++++++++++++++++ 3 files changed, 237 insertions(+), 1 deletion(-) create mode 100644 TestCases/grad_smooth/naca0012/of_hess.dat.ref create mode 100644 TestCases/grad_smooth/oneram6/of_hess.dat.ref diff --git a/.github/workflows/regression.yml b/.github/workflows/regression.yml index 3b670469fa65..24aa9edbf162 100644 --- a/.github/workflows/regression.yml +++ b/.github/workflows/regression.yml @@ -90,7 +90,7 @@ jobs: uses: docker://su2code/test-su2:20200303 with: # -t -c - args: -b ${{github.ref}} -t develop -c develop -s ${{matrix.testscript}} + args: -b ${{github.ref}} -t develop -c feature_Sobolev_smoothing_solver -s ${{matrix.testscript}} unit_tests: runs-on: ubuntu-latest name: Unit Tests diff --git a/TestCases/grad_smooth/naca0012/of_hess.dat.ref b/TestCases/grad_smooth/naca0012/of_hess.dat.ref new file mode 100644 index 000000000000..a011605427d6 --- /dev/null +++ b/TestCases/grad_smooth/naca0012/of_hess.dat.ref @@ -0,0 +1,38 @@ +18.98806831, 11.5005011, 6.280203673, 2.929292841, 0.8777531067, -0.3021857211, -0.9109241251, -1.155996628, -1.17939658, -1.077130493, -0.9129959149, -0.7282878372, -0.5486463758, -0.3888924872, -0.2564490893, -0.1537705561, -0.08007565817, -0.03258319132, -0.007379490979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +11.5005011, 10.17474397, 7.601547311, 5.136297661, 3.096700835, 1.534134704, 0.4123261362, -0.3342676362, -0.7779364513, -0.9883166486, -1.028411682, -0.9530103938, -0.8081990717, -0.6313812814, -0.4515504508, -0.2897220376, -0.1595087228, -0.06784840177, -0.01588800167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +6.280203673, 7.601547311, 7.001808865, 5.731522842, 4.281613943, 2.886875419, 1.665216788, 0.6716232937, -0.07657244517, -0.5861803859, -0.8800681411, -0.9917371497, -0.9612166948, -0.8315819508, -0.6457464878, -0.4433973994, -0.258106053, -0.1147869885, -0.02779230063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +2.929292841, 5.136297661, 5.731522842, 5.468756174, 4.729454435, 3.750414223, 2.693012986, 1.671275551, 0.7650660314, 0.02685992331, -0.5144890244, -0.8513224339, -0.9951159734, -0.9741048334, -0.8300696531, -0.6138822211, -0.3795933135, -0.1771646273, -0.04447570832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +0.8777531067, 3.096700835, 4.281613943, 4.729454435, 4.637271988, 4.159005534, 3.425374921, 2.551490697, 1.639181946, 0.776556128, 0.03592114478, -0.529244472, -0.8876651282, -1.033267491, -0.9868611901, -0.7952743229, -0.5264935337, -0.259437363, -0.06783602337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +-0.3021857211, 1.534134704, 2.886875419, 3.750414223, 4.159005534, 4.163730241, 3.828798421, 3.229983672, 2.452663596, 1.588720283, 0.7319074113, -0.02855939974, -0.6162340773, -0.977173069, -1.090204713, -0.9757343679, -0.6996216518, -0.3670433334, -0.1005864786, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +-0.9109241251, 0.4123261362, 1.665216788, 2.693012986, 3.425374921, 3.828798421, 3.896581799, 3.646464987, 3.120145607, 2.382597525, 1.519904846, 0.6344527386, -0.1636810104, -0.7701422219, -1.104919394, -1.134980882, -0.8964786434, -0.5064448599, -0.1466736411, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +-1.155996628, -0.3342676362, 0.6716232937, 1.671275551, 2.551490697, 3.229983672, 3.646464987, 3.762604611, 3.565204695, 3.070516139, 2.328241709, 1.423533373, 0.4746765569, -0.376616218, -0.9859130311, -1.240741027, -1.108343476, -0.6848164934, -0.2119178837, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +-1.17939658, -0.7779364513, -0.07657244517, 0.7650660314, 1.639181946, 2.452663596, 3.120145607, 3.565204695, 3.725628047, 3.561596048, 3.066033254, 2.275884672, 1.281828199, 0.2318099989, -0.6792394557, -1.244361051, -1.315348705, -0.9089329849, -0.3050116418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +-1.077130493, -0.9883166486, -0.5861803859, 0.02685992331, 0.776556128, 1.588720283, 2.382597525, 3.070516139, 3.561596048, 3.769624253, 3.625780419, 3.096706729, 2.207259965, 1.064412006, -0.1270453333, -1.076332134, -1.478453275, -1.182256739, -0.4390726205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +-0.9129959149, -1.028411682, -0.8800681411, -0.5144890244, 0.03592114478, 0.7319074113, 1.519904846, 2.328241709, 3.066033254, 3.625780419, 3.891770078, 3.757216478, 3.153377302, 2.092421311, 0.7198157815, -0.6440318033, -1.526995472, -1.498073062, -0.6340004634, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +-0.7282878372, -0.9530103938, -0.9917371497, -0.8513224339, -0.529244472, -0.02855939974, 0.6344527386, 1.423533373, 2.275884672, 3.096706729, 3.757216478, 4.10061502, 3.963328234, 3.221831318, 1.875393913, 0.1624758593, -1.341111326, -1.824129971, -0.9197650597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +-0.5486463758, -0.8081990717, -0.9612166948, -0.9951159734, -0.8876651282, -0.6162340773, -0.1636810104, 0.4746765569, 1.281828199, 2.207259965, 3.153377302, 3.963328234, 4.418158418, 4.259880732, 3.26999673, 1.443292124, -0.7320986109, -2.069515364, -1.339770146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +-0.3888924872, -0.6313812814, -0.8315819508, -0.9741048334, -1.033267491, -0.977173069, -0.7701422219, -0.376616218, 0.2318099989, 1.064412006, 2.092421311, 3.221831318, 4.259880732, 4.887159298, 4.671914326, 3.21301834, 0.562068807, -2.016563075, -1.948714758, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +-0.2564490893, -0.4515504508, -0.6457464878, -0.8300696531, -0.9868611901, -1.090204713, -1.104919394, -0.9859130311, -0.6792394557, -0.1270453333, 0.7198157815, 1.875393913, 3.26999673, 4.671914326, 5.58917546, 5.230275455, 2.804786317, -1.19510327, -2.778855326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +-0.1537705561, -0.2897220376, -0.4433973994, -0.6138822211, -0.7952743229, -0.9757343679, -1.134980882, -1.240741027, -1.244361051, -1.076332134, -0.6440318033, 0.1624758593, 1.443292124, 3.21301834, 5.230275455, 6.690944595, 5.933383027, 1.275539294, -3.660234828, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +-0.08007565817, -0.1595087228, -0.258106053, -0.3795933135, -0.5264935337, -0.6996216518, -0.8964786434, -1.108343476, -1.315348705, -1.478453275, -1.526995472, -1.341111326, -0.7320986109, 0.562068807, 2.804786317, 5.933383027, 8.584276201, 6.450540145, -3.405903296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +-0.03258319132, -0.06784840177, -0.1147869885, -0.1771646273, -0.259437363, -0.3670433334, -0.5064448599, -0.6848164934, -0.9089329849, -1.182256739, -1.498073062, -1.824129971, -2.069515364, -2.016563075, -1.19510327, 1.275539294, 6.450540145, 12.44469707, 3.310550942, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +-0.007379490979, -0.01588800167, -0.02779230063, -0.04447570832, -0.06783602337, -0.1005864786, -0.1466736411, -0.2119178837, -0.3050116418, -0.4390726205, -0.6340004634, -0.9197650597, -1.339770146, -1.948714758, -2.778855326, -3.660234828, -3.405903296, 3.310550942, 24.11367153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18.98806831, 11.5005011, 6.280203673, 2.929292841, 0.8777531067, -0.3021857211, -0.9109241251, -1.155996628, -1.17939658, -1.077130493, -0.9129959149, -0.7282878372, -0.5486463758, -0.3888924872, -0.2564490893, -0.1537705561, -0.08007565817, -0.03258319132, -0.007379490979 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.5005011, 10.17474397, 7.601547311, 5.136297661, 3.096700835, 1.534134704, 0.4123261362, -0.3342676362, -0.7779364513, -0.9883166486, -1.028411682, -0.9530103938, -0.8081990717, -0.6313812814, -0.4515504508, -0.2897220376, -0.1595087228, -0.06784840177, -0.01588800167 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.280203673, 7.601547311, 7.001808865, 5.731522842, 4.281613943, 2.886875419, 1.665216788, 0.6716232937, -0.07657244517, -0.5861803859, -0.8800681411, -0.9917371497, -0.9612166948, -0.8315819508, -0.6457464878, -0.4433973994, -0.258106053, -0.1147869885, -0.02779230063 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.929292841, 5.136297661, 5.731522842, 5.468756174, 4.729454435, 3.750414223, 2.693012986, 1.671275551, 0.7650660314, 0.02685992331, -0.5144890244, -0.8513224339, -0.9951159734, -0.9741048334, -0.8300696531, -0.6138822211, -0.3795933135, -0.1771646273, -0.04447570832 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.8777531067, 3.096700835, 4.281613943, 4.729454435, 4.637271988, 4.159005534, 3.425374921, 2.551490697, 1.639181946, 0.776556128, 0.03592114478, -0.529244472, -0.8876651282, -1.033267491, -0.9868611901, -0.7952743229, -0.5264935337, -0.259437363, -0.06783602337 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.3021857211, 1.534134704, 2.886875419, 3.750414223, 4.159005534, 4.163730241, 3.828798421, 3.229983672, 2.452663596, 1.588720283, 0.7319074113, -0.02855939974, -0.6162340773, -0.977173069, -1.090204713, -0.9757343679, -0.6996216518, -0.3670433334, -0.1005864786 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.9109241251, 0.4123261362, 1.665216788, 2.693012986, 3.425374921, 3.828798421, 3.896581799, 3.646464987, 3.120145607, 2.382597525, 1.519904846, 0.6344527386, -0.1636810104, -0.7701422219, -1.104919394, -1.134980882, -0.8964786434, -0.5064448599, -0.1466736411 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.155996628, -0.3342676362, 0.6716232937, 1.671275551, 2.551490697, 3.229983672, 3.646464987, 3.762604611, 3.565204695, 3.070516139, 2.328241709, 1.423533373, 0.4746765569, -0.376616218, -0.9859130311, -1.240741027, -1.108343476, -0.6848164934, -0.2119178837 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.17939658, -0.7779364513, -0.07657244517, 0.7650660314, 1.639181946, 2.452663596, 3.120145607, 3.565204695, 3.725628047, 3.561596048, 3.066033254, 2.275884672, 1.281828199, 0.2318099989, -0.6792394557, -1.244361051, -1.315348705, -0.9089329849, -0.3050116418 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.077130493, -0.9883166486, -0.5861803859, 0.02685992331, 0.776556128, 1.588720283, 2.382597525, 3.070516139, 3.561596048, 3.769624253, 3.625780419, 3.096706729, 2.207259965, 1.064412006, -0.1270453333, -1.076332134, -1.478453275, -1.182256739, -0.4390726205 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.9129959149, -1.028411682, -0.8800681411, -0.5144890244, 0.03592114478, 0.7319074113, 1.519904846, 2.328241709, 3.066033254, 3.625780419, 3.891770078, 3.757216478, 3.153377302, 2.092421311, 0.7198157815, -0.6440318033, -1.526995472, -1.498073062, -0.6340004634 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.7282878372, -0.9530103938, -0.9917371497, -0.8513224339, -0.529244472, -0.02855939974, 0.6344527386, 1.423533373, 2.275884672, 3.096706729, 3.757216478, 4.10061502, 3.963328234, 3.221831318, 1.875393913, 0.1624758593, -1.341111326, -1.824129971, -0.9197650597 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.5486463758, -0.8081990717, -0.9612166948, -0.9951159734, -0.8876651282, -0.6162340773, -0.1636810104, 0.4746765569, 1.281828199, 2.207259965, 3.153377302, 3.963328234, 4.418158418, 4.259880732, 3.26999673, 1.443292124, -0.7320986109, -2.069515364, -1.339770146 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.3888924872, -0.6313812814, -0.8315819508, -0.9741048334, -1.033267491, -0.977173069, -0.7701422219, -0.376616218, 0.2318099989, 1.064412006, 2.092421311, 3.221831318, 4.259880732, 4.887159298, 4.671914326, 3.21301834, 0.562068807, -2.016563075, -1.948714758 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.2564490893, -0.4515504508, -0.6457464878, -0.8300696531, -0.9868611901, -1.090204713, -1.104919394, -0.9859130311, -0.6792394557, -0.1270453333, 0.7198157815, 1.875393913, 3.26999673, 4.671914326, 5.58917546, 5.230275455, 2.804786317, -1.19510327, -2.778855326 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.1537705561, -0.2897220376, -0.4433973994, -0.6138822211, -0.7952743229, -0.9757343679, -1.134980882, -1.240741027, -1.244361051, -1.076332134, -0.6440318033, 0.1624758593, 1.443292124, 3.21301834, 5.230275455, 6.690944595, 5.933383027, 1.275539294, -3.660234828 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.08007565817, -0.1595087228, -0.258106053, -0.3795933135, -0.5264935337, -0.6996216518, -0.8964786434, -1.108343476, -1.315348705, -1.478453275, -1.526995472, -1.341111326, -0.7320986109, 0.562068807, 2.804786317, 5.933383027, 8.584276201, 6.450540145, -3.405903296 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.03258319132, -0.06784840177, -0.1147869885, -0.1771646273, -0.259437363, -0.3670433334, -0.5064448599, -0.6848164934, -0.9089329849, -1.182256739, -1.498073062, -1.824129971, -2.069515364, -2.016563075, -1.19510327, 1.275539294, 6.450540145, 12.44469707, 3.310550942 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.007379490979, -0.01588800167, -0.02779230063, -0.04447570832, -0.06783602337, -0.1005864786, -0.1466736411, -0.2119178837, -0.3050116418, -0.4390726205, -0.6340004634, -0.9197650597, -1.339770146, -1.948714758, -2.778855326, -3.660234828, -3.405903296, 3.310550942, 24.11367153 \ No newline at end of file diff --git a/TestCases/grad_smooth/oneram6/of_hess.dat.ref b/TestCases/grad_smooth/oneram6/of_hess.dat.ref new file mode 100644 index 000000000000..02ba06109cbc --- /dev/null +++ b/TestCases/grad_smooth/oneram6/of_hess.dat.ref @@ -0,0 +1,198 @@ +0.1919148562, 0.04638897061, -0.006898926984, -0.01096258827, -0.006938885534, -0.003511008494, -0.001510215886, -0.0005438172459, -0.0001558800139, -3.200604867e-05, -3.577387949e-06, 0.1126497553, 0.03090880886, -0.00311436746, -0.006467631847, -0.00418760099, -0.002130269292, -0.0009194723854, -0.000332406675, -9.573144147e-05, -1.976281487e-05, -2.222299042e-06, 0.05660027343, 0.01711420031, -0.001298069936, -0.003411558709, -0.00224486041, -0.001144473678, -0.0004942772669, -0.000178891702, -5.161426249e-05, -1.068124365e-05, -1.204614654e-06, 0.02451953845, 0.007953393335, -0.0005302221505, -0.001602263525, -0.001064101851, -0.0005420975171, -0.0002336601993, -8.445046896e-05, -2.435031059e-05, -5.039158946e-06, -5.686094955e-07, 0.008910706142, 0.003102403459, -0.0001885466664, -0.0006446197045, -0.0004319463096, -0.0002197535361, -9.44487701e-05, -3.40598521e-05, -9.807546194e-06, -2.0284758e-06, -2.289107958e-07, 0.00273233847, 0.001021624828, -5.818795979e-05, -0.0002219994101, -0.0001501708796, -7.631259451e-05, -3.269836775e-05, -1.176217995e-05, -3.381666611e-06, -6.989382427e-07, -7.887652112e-08, 0.0006780684901, 0.0002710133336, -1.553521898e-05, -6.274512627e-05, -4.281306006e-05, -2.173466252e-05, -9.283353699e-06, -3.330361982e-06, -9.558189429e-07, -1.973854264e-07, -2.227331845e-08, 0.000121867822, 5.163275833e-05, -3.406931821e-06, -1.312045058e-05, -9.002657835e-06, -4.56351349e-06, -1.942188629e-06, -6.945613041e-07, -1.98914548e-07, -4.102964682e-08, -4.628226947e-09, 1.193459012e-05, 5.281373782e-06, -4.865329022e-07, -1.55019538e-06, -1.062355541e-06, -5.367797173e-07, -2.273825491e-07, -8.098462673e-08, -2.312518972e-08, -4.761265215e-09, -5.365993151e-10, 0.03183956151, -0.02188581046, -0.01917730875, -0.009090812105, -0.003696383312, -0.001395017034, -0.0004897598416, -0.0001569145639, -4.373044138e-05, -9.474236659e-06, -1.190356808e-06, 0.02090890912, -0.01098770317, -0.01124822068, -0.005591988669, -0.002327655011, -0.0008944527921, -0.0003191587141, -0.0001035415649, -2.904719409e-05, -6.297129477e-06, -7.886029895e-07, 0.01133227799, -0.004924136379, -0.005859726031, -0.00305255216, -0.001299895732, -0.0005073289408, -0.0001832826863, -5.995135485e-05, -1.686223757e-05, -3.645388113e-06, -4.536803148e-07, 0.005144328883, -0.002015534345, -0.002707776442, -0.00147086434, -0.0006393067299, -0.0002525761195, -9.202094466e-05, -3.023563365e-05, -8.501739605e-06, -1.829235189e-06, -2.259239598e-07, 0.00195144772, -0.0007005842487, -0.001069261012, -0.0006074850218, -0.0002699082881, -0.0001079423067, -3.963058756e-05, -1.306918956e-05, -3.671174734e-06, -7.857189922e-07, -9.625727912e-08, 0.0006207393133, -0.0002084673809, -0.0003612046866, -0.0002148251059, -9.764748373e-05, -3.952657485e-05, -1.46156933e-05, -4.834988013e-06, -1.356560841e-06, -2.88847353e-07, -3.511085828e-08, 0.0001576115921, -5.225124097e-05, -0.0001002338733, -6.22284372e-05, -2.892399682e-05, -1.184364167e-05, -4.406992208e-06, -1.461479524e-06, -4.094902069e-07, -8.676809954e-08, -1.047064994e-08, 2.834255174e-05, -1.025478302e-05, -2.062526998e-05, -1.328512014e-05, -6.304959282e-06, -2.609233366e-06, -9.760466763e-07, -3.242299996e-07, -9.068872966e-08, -1.912435894e-08, -2.291854871e-09, 2.668753846e-06, -1.243003787e-06, -2.407375134e-06, -1.591879092e-06, -7.690411628e-07, -3.211581938e-07, -1.206149806e-07, -4.008975845e-08, -1.118575239e-08, -2.346761704e-09, -2.792725653e-10 +0.04638897061, 0.1067269244, 0.06863819123, 0.02779328261, 0.006533757587, -0.001090654213, -0.002332158001, -0.001552979828, -0.0006729288233, -0.000192402825, -2.881991447e-05, 0.00947757405, 0.0512770503, 0.03611633589, 0.01474899148, 0.003164939048, -0.0009470248424, -0.00151188807, -0.0009751414679, -0.0004193987586, -0.000119929093, -1.802829985e-05, -0.0003811500849, 0.02248796354, 0.01714526761, 0.007034106777, 0.001357488781, -0.0006311867943, -0.0008516398638, -0.0005355381892, -0.0002285940303, -6.525324808e-05, -9.818051801e-06, -0.0007600220208, 0.009352809858, 0.007434774765, 0.003046192424, 0.0005290701232, -0.000339885749, -0.0004155475513, -0.0002563963545, -0.0001086715529, -3.093044491e-05, -4.649532243e-06, -0.0003746362698, 0.003323207697, 0.002739915594, 0.001117385643, 0.0001670004251, -0.0001549098995, -0.0001734270475, -0.0001049356326, -4.412880466e-05, -1.251556224e-05, -1.878719335e-06, -0.0001568100412, 0.0009839171457, 0.0008473727893, 0.0003426722367, 3.966603657e-05, -6.041748503e-05, -6.216132215e-05, -3.683512941e-05, -1.535658824e-05, -4.337802805e-06, -6.500570063e-07, -5.63770062e-05, 0.0002289408572, 0.0002086494357, 8.304659312e-05, 5.40854768e-06, -1.933887574e-05, -1.833343558e-05, -1.062276201e-05, -4.385944408e-06, -1.233129725e-06, -1.844083629e-07, -1.541466516e-05, 3.630574992e-05, 3.597593645e-05, 1.384250981e-05, -3.307524781e-07, -4.592682312e-06, -4.007564449e-06, -2.263976644e-06, -9.241110655e-07, -2.583171761e-07, -3.852023317e-08, -2.399397186e-06, 2.69233379e-06, 3.129409998e-06, 1.102004538e-06, -2.568499832e-07, -6.196332981e-07, -4.950310715e-07, -2.712853301e-07, -1.091330272e-07, -3.026867136e-08, -4.494627149e-09, -0.0218973458, 0.03141153552, 0.02084320615, 0.006223067317, 0.0003624492319, -0.0009369705075, -0.0008199001749, -0.0004710117684, -0.000207112209, -6.550375019e-05, -1.138253764e-05, -0.02405319997, 0.0129916575, 0.0114586622, 0.003672718635, 0.0001804903792, -0.0006282122326, -0.0005479881954, -0.0003151514725, -0.0001381580931, -4.34384542e-05, -7.500900574e-06, -0.01568354996, 0.004686798712, 0.005611613871, 0.00190122912, 6.299861535e-05, -0.0003743012953, -0.0003221806858, -0.0001844701269, -8.033085867e-05, -2.503835147e-05, -4.285300756e-06, -0.007469879871, 0.001601400572, 0.002448040787, 0.0008569012791, 7.481584813e-06, -0.0001962457063, -0.0001653782962, -9.389050061e-05, -4.0525185e-05, -1.25056313e-05, -2.119048781e-06, -0.002930266126, 0.0004121560599, 0.0008912799842, 0.0003208826282, -9.913727954e-06, -8.907223089e-05, -7.304282309e-05, -4.101571149e-05, -1.752350488e-05, -5.348949901e-06, -8.966510294e-07, -0.0009842218228, 5.316018219e-05, 0.000265370339, 9.795507104e-05, -9.617140042e-06, -3.491757564e-05, -2.772021421e-05, -1.536514081e-05, -6.493305697e-06, -1.960222659e-06, -3.250668313e-07, -0.000273494449, -1.311889156e-05, 5.989260748e-05, 2.245043713e-05, -5.121184584e-06, -1.130191014e-05, -8.637296311e-06, -4.714777538e-06, -1.969219225e-06, -5.8787897e-07, -9.646039924e-08, -5.675511947e-05, -9.49963477e-06, 8.401751204e-06, 3.095491565e-06, -1.765326488e-06, -2.724855906e-06, -1.989915069e-06, -1.065940914e-06, -4.393114083e-07, -1.296101907e-07, -2.103807237e-08, -6.708906135e-06, -2.055550789e-06, 3.497330068e-07, 9.12809264e-08, -3.231396751e-07, -3.741462959e-07, -2.585115217e-07, -1.351542462e-07, -5.480023885e-08, -1.595132666e-08, -2.558881675e-09 +-0.006898926984, 0.06863819123, 0.08444821894, 0.0622326221, 0.03366646662, 0.01284144623, 0.002146712765, -0.001309285132, -0.001350093039, -0.0006007669734, -0.0001265167408, -0.01985946175, 0.0243086514, 0.03928434889, 0.0307974965, 0.01686793413, 0.006198968944, 0.0006785118074, -0.001011325471, -0.0008874204343, -0.0003832317689, -8.015777195e-05, -0.01527372599, 0.007188428187, 0.01687916128, 0.01401443147, 0.007732024205, 0.002721673132, 0.0001243364313, -0.0006246458194, -0.0005003977344, -0.0002116389742, -4.400325952e-05, -0.007712045591, 0.002248995637, 0.007051877878, 0.006029805212, 0.003319844502, 0.001123614091, -7.953973357e-06, -0.0003176250822, -0.0002424168017, -0.0001011810167, -2.093736756e-05, -0.003166181126, 0.0005551815901, 0.0025367701, 0.002227074769, 0.00121858796, 0.0003920910446, -2.925384247e-05, -0.0001371600284, -0.0001002298016, -4.129323917e-05, -8.501944254e-06, -0.001110847224, 6.101911505e-05, 0.0007586949526, 0.0006906346984, 0.0003746825801, 0.0001119052406, -2.017104025e-05, -5.088463717e-05, -3.557127093e-05, -1.444852627e-05, -2.957989041e-06, -0.0003213389928, -2.432990095e-05, 0.0001766663134, 0.0001699981539, 9.112396691e-05, 2.407659748e-05, -8.973479319e-06, -1.554850636e-05, -1.038155376e-05, -4.150928325e-06, -8.441952041e-07, -6.90487106e-05, -1.511940421e-05, 2.738854889e-05, 2.906102545e-05, 1.525866055e-05, 3.115748889e-06, -2.689967034e-06, -3.529165977e-06, -2.242400872e-06, -8.802242625e-07, -1.775496943e-07, -8.388828959e-06, -3.167996541e-06, 1.826127868e-06, 2.446045819e-06, 1.223045894e-06, 7.917124173e-08, -4.361462751e-07, -4.543946206e-07, -2.729148355e-07, -1.046966716e-07, -2.088729238e-08, -0.0192106563, 0.02081647715, 0.02569168234, 0.01612343065, 0.007425848059, 0.002387740885, 0.0001285899636, -0.0005519020607, -0.0005018399181, -0.0002472034531, -6.057359658e-05, -0.02001543398, 0.006141165276, 0.01289770453, 0.008856234065, 0.004162349362, 0.001269869848, -4.287514775e-05, -0.000412790311, -0.0003450019857, -0.0001651420871, -3.990011845e-05, -0.01330671182, 0.001010337038, 0.005995904108, 0.004463962089, 0.002128746909, 0.0006150718395, -7.57870628e-05, -0.0002573749215, -0.0002036297879, -9.524607965e-05, -2.270013222e-05, -0.00665480106, -5.251521605e-05, 0.002626613548, 0.002060332842, 0.0009875977554, 0.0002709497619, -5.539781916e-05, -0.0001355813168, -0.0001033187892, -4.742581834e-05, -1.116004472e-05, -0.002770467713, -0.0002179575793, 0.0009769263865, 0.000810251365, 0.0003890243685, 9.925930469e-05, -3.182126409e-05, -6.122966368e-05, -4.493247999e-05, -2.022246818e-05, -4.694195698e-06, -0.0009872642009, -0.0001553441171, 0.0002975551548, 0.0002660765231, 0.0001275896166, 2.894814676e-05, -1.517680622e-05, -2.379879216e-05, -1.678195017e-05, -7.397327284e-06, -1.692847495e-06, -0.0002893028977, -7.11311888e-05, 6.840120402e-05, 6.857347811e-05, 3.265653127e-05, 5.916866226e-06, -5.819821314e-06, -7.613684673e-06, -5.145370714e-06, -2.21850801e-06, -5.002465591e-07, -6.274768456e-05, -2.172196761e-05, 9.652471161e-06, 1.202531067e-05, 5.606468846e-06, 5.196972837e-07, -1.634834368e-06, -1.807595415e-06, -1.165363823e-06, -4.903063261e-07, -1.088016331e-07, -7.66291277e-06, -3.53289759e-06, 3.700299966e-07, 9.854905242e-07, 4.266531849e-07, -6.639929788e-08, -2.587879344e-07, -2.43230775e-07, -1.484858313e-07, -6.069438933e-08, -1.322113645e-08 +-0.01096258827, 0.02779328261, 0.0622326221, 0.07033658643, 0.0565137827, 0.03412987426, 0.01463109176, 0.003113517932, -0.001064174484, -0.001219212076, -0.0003996996071, -0.01532085961, 0.002689887508, 0.02346178421, 0.03133667011, 0.02679089038, 0.01650667643, 0.006878870864, 0.00108303197, -0.0009222384053, -0.0008193276355, -0.0002583218576, -0.01087202567, -0.003174408777, 0.007792907793, 0.01291515684, 0.01173414367, 0.007343402199, 0.002957735619, 0.0002834740994, -0.0005948410051, -0.0004666221766, -0.0001435009873, -0.005485789735, -0.002296371634, 0.002767940713, 0.005297567691, 0.00495801763, 0.003111236907, 0.001214507929, 5.746220407e-05, -0.0003062804632, -0.0002266159561, -6.87149571e-05, -0.002280812423, -0.001147071168, 0.0008419148458, 0.001881126847, 0.001803985775, 0.001129722581, 0.0004233641369, -5.628720214e-06, -0.0001333373054, -9.38426463e-05, -2.807825637e-05, -0.0008115012545, -0.0004786168686, 0.0001871110242, 0.0005528121208, 0.000548507739, 0.0003422642843, 0.0001206177804, -1.309633477e-05, -4.986153628e-05, -3.335800888e-05, -9.836586123e-06, -0.0002377655858, -0.0001625801723, 1.898008815e-05, 0.0001249162928, 0.0001310661342, 8.133984145e-05, 2.582345173e-05, -7.341691521e-06, -1.535799364e-05, -9.750041412e-06, -2.828480035e-06, -5.162856865e-05, -4.064156925e-05, -4.554678844e-06, 1.813700553e-05, 2.126549059e-05, 1.305978409e-05, 3.292141667e-06, -2.445830737e-06, -3.513872944e-06, -2.108323179e-06, -5.999314912e-07, -6.317126064e-06, -5.70468202e-06, -1.771706128e-06, 9.521371076e-07, 1.583433566e-06, 9.432869149e-07, 7.154375859e-08, -4.220178928e-07, -4.559781418e-07, -2.566715691e-07, -7.128674488e-08, -0.009112369486, 0.006197132181, 0.01611063206, 0.01682272892, 0.01279870632, 0.007688501976, 0.003352925195, 0.0005504443155, -0.000626572306, -0.0006349272753, -0.0002334961229, -0.009472782258, -0.0008662442034, 0.006472990351, 0.008266211331, 0.006704086833, 0.004069805471, 0.001678338697, 0.0001194319916, -0.0004971707073, -0.0004357199224, -0.0001546685493, -0.00641175955, -0.002075272028, 0.002358383494, 0.003814169731, 0.003271192312, 0.001995705558, 0.0007758423366, -1.913450719e-05, -0.0003144260167, -0.0002541551096, -8.795243837e-05, -0.003299101648, -0.001341887727, 0.000883017075, 0.001692094775, 0.001494841977, 0.0009091814925, 0.0003360017815, -3.421300921e-05, -0.000164266112, -0.0001267722662, -4.307414423e-05, -0.001420667663, -0.0006745613786, 0.0002705864244, 0.0006424099121, 0.0005839463728, 0.0003528030738, 0.0001221333702, -2.502287613e-05, -7.327466373e-05, -5.410750084e-05, -1.804093712e-05, -0.0005244312068, -0.0002878597591, 5.42875499e-05, 0.0002002600311, 0.0001895641062, 0.0001134607615, 3.549796043e-05, -1.3543095e-05, -2.814930683e-05, -1.98399398e-05, -6.482209867e-06, -0.0001591212354, -0.0001004243654, 2.943741601e-07, 4.717915336e-05, 4.776256361e-05, 2.817607822e-05, 7.300148144e-06, -5.611711615e-06, -8.913039967e-06, -5.97738533e-06, -1.910480852e-06, -3.569405711e-05, -2.582078725e-05, -4.238579273e-06, 6.8324613e-06, 7.970127599e-06, 4.566529911e-06, 6.830998128e-07, -1.660622459e-06, -2.096828028e-06, -1.331045222e-06, -4.1498864e-07, -4.500275857e-06, -3.728325701e-06, -1.189328088e-06, 2.689433264e-07, 5.628030653e-07, 2.92328096e-07, -6.652853531e-08, -2.726888001e-07, -2.797876396e-07, -1.667165545e-07, -5.045644445e-08 +-0.006938885534, 0.006533757587, 0.03366646662, 0.0565137827, 0.06294158598, 0.05231063944, 0.03263245324, 0.01388744481, 0.002319350327, -0.001520732277, -0.001013810244, -0.008209925002, -0.005257531422, 0.007842770873, 0.02135868557, 0.02741825725, 0.0242776469, 0.01548300253, 0.006354573024, 0.0005899383351, -0.001184576568, -0.0006745130783, -0.00564499889, -0.005780785993, 7.280058193e-05, 0.007119814026, 0.01102085003, 0.01041737447, 0.006769018234, 0.002660623015, 2.1408052e-05, -0.0007266837526, -0.0003809129679, -0.00284011615, -0.003209736898, -0.0006962819977, 0.002536882526, 0.004453954992, 0.004354869803, 0.002844136652, 0.001076545508, -6.252301912e-05, -0.0003649185188, -0.0001838844259, -0.001183337044, -0.001419030274, -0.0004866370874, 0.000775524946, 0.001558840309, 0.001569213627, 0.001025274594, 0.0003695827174, -5.223687086e-05, -0.0001555078561, -7.571358343e-05, -0.0004223895222, -0.0005364006957, -0.0002452209574, 0.0001744715123, 0.0004482768955, 0.0004705011937, 0.0003072889832, 0.0001026559036, -2.854451012e-05, -5.694670752e-05, -2.674497688e-05, -0.0001242237647, -0.0001672910761, -9.488991549e-05, 1.877419056e-05, 9.74594367e-05, 0.000109860675, 7.168749912e-05, 2.087594459e-05, -1.152202976e-05, -1.717394059e-05, -7.759549685e-06, -2.708248142e-05, -3.877404802e-05, -2.619037566e-05, -3.771204259e-06, 1.292848313e-05, 1.703647829e-05, 1.108537117e-05, 2.281774536e-06, -3.271424262e-06, -3.842385632e-06, -1.662346522e-06, -3.326829923e-06, -5.083161692e-06, -3.98664726e-06, -1.565769082e-06, 4.180070966e-07, 1.115821138e-06, 7.161391327e-07, -4.440062184e-08, -5.113536977e-07, -4.862197224e-07, -1.998476551e-07, -0.003705562777, 0.0003474160839, 0.007414615192, 0.01279531576, 0.01472798344, 0.01321335402, 0.009171759408, 0.004257089353, 0.0004246267425, -0.001106827621, -0.000719837937, -0.003810251274, -0.002539314127, 0.001537548585, 0.005209199316, 0.00698014542, 0.006622524358, 0.004630949602, 0.002005262662, -6.305557854e-05, -0.0008214420045, -0.0004829788573, -0.002597294576, -0.002338217452, -0.00020250188, 0.001939227755, 0.003111456905, 0.003105188574, 0.002174814755, 0.0008723082916, -0.0001530799986, -0.0004970270357, -0.0002756948247, -0.001355968021, -0.001333972037, -0.0003243161624, 0.0007428874966, 0.001354151926, 0.001387058769, 0.0009655193931, 0.000363460457, -0.0001051280201, -0.0002511291342, -0.0001348064527, -0.0005942304451, -0.0006243443239, -0.000216531085, 0.0002357668488, 0.0005044386508, 0.0005305878069, 0.0003659782209, 0.000127046451, -5.616805589e-05, -0.0001082911818, -5.633262273e-05, -0.0002234326333, -0.0002506464128, -0.0001117029428, 5.156786878e-05, 0.0001527920773, 0.0001678073132, 0.0001145673761, 3.494417122e-05, -2.519619895e-05, -4.018666714e-05, -2.02055031e-05, -6.906146405e-05, -8.283146674e-05, -4.501537882e-05, 2.844682388e-06, 3.41197944e-05, 4.070713299e-05, 2.745446363e-05, 6.455532531e-06, -9.170614283e-06, -1.228548537e-05, -5.950465766e-06, -1.578150498e-05, -2.02867894e-05, -1.30224241e-05, -2.832324996e-06, 4.28387313e-06, 6.326518451e-06, 4.181472501e-06, 3.474423469e-07, -2.458629077e-06, -2.786238142e-06, -1.293244209e-06, -2.026683694e-06, -2.802829269e-06, -2.082391328e-06, -8.961118871e-07, 7.947299786e-09, 3.536044023e-07, 2.167349093e-07, -1.271705385e-07, -3.725003581e-07, -3.5729697e-07, -1.576186625e-07 +-0.003511008494, -0.001090654213, 0.01284144623, 0.03412987426, 0.05231063944, 0.05801416927, 0.04879453375, 0.03005721914, 0.01122120115, -6.266772613e-05, -0.002174288399, -0.003759370399, -0.005696452118, -0.001097960476, 0.009195956631, 0.01985460031, 0.02510692083, 0.02250961605, 0.01414496246, 0.004906653823, -0.000740606229, -0.001508347292, -0.002523158545, -0.004658822287, -0.003474429829, 0.001128965625, 0.006653851007, 0.01001231402, 0.009599680344, 0.006135041908, 0.001950012693, -0.0006448280707, -0.0008708037465, -0.001262697785, -0.002449501854, -0.002125767602, -0.0001509732372, 0.00237727381, 0.004026565966, 0.004001345682, 0.002567636684, 0.0007592088136, -0.0003635731376, -0.0004245698986, -0.0005247583656, -0.001049582634, -0.0009873941211, -0.0002564222146, 0.000728094628, 0.001402182757, 0.001438265691, 0.0009222525438, 0.0002482480403, -0.0001687174571, -0.000176362615, -0.0001869008263, -0.0003853397038, -0.0003895476476, -0.0001620284605, 0.0001641892133, 0.0003997746226, 0.0004293648048, 0.0002747024814, 6.318025818e-05, -6.688356782e-05, -6.288849452e-05, -5.485777433e-05, -0.0001167788641, -0.0001264209227, -7.013287785e-05, 1.775946752e-05, 8.538764998e-05, 9.936859013e-05, 6.33068585e-05, 1.043731466e-05, -2.175575384e-05, -1.843164313e-05, -1.193761726e-05, -2.630208092e-05, -3.043623223e-05, -2.073646922e-05, -3.535228773e-06, 1.07847701e-05, 1.509358134e-05, 9.518016044e-06, 2.790555263e-07, -5.245021022e-06, -3.993266193e-06, -1.463758155e-06, -3.34942518e-06, -4.141832374e-06, -3.311823527e-06, -1.477245522e-06, 2.172062677e-07, 9.196076095e-07, 5.56020729e-07, -2.531687341e-07, -7.164738994e-07, -4.863680798e-07, -0.001398064535, -0.000943016864, 0.00238313877, 0.007689137139, 0.01321724258, 0.01678548718, 0.01642236358, 0.01166278491, 0.004600380422, -0.0008437236316, -0.001853781147, -0.001413651551, -0.00200388005, -0.0007361482302, 0.00205376718, 0.005329867119, 0.007733597158, 0.007998353417, 0.005713029418, 0.0019841052, -0.0009166005894, -0.001272077746, -0.0009650116817, -0.00159510913, -0.00117158417, 0.0001991256665, 0.001955745932, 0.00333790534, 0.00363627052, 0.002598094246, 0.0007778376877, -0.0006370809986, -0.0007326761244, -0.0005077894895, -0.0008825137041, -0.0007371327204, -0.0001038014235, 0.000741866861, 0.001421813737, 0.001590407133, 0.001128041162, 0.0002988006604, -0.0003385644119, -0.0003585429111, -0.0002246478008, -0.0004055065995, -0.0003672508283, -0.0001154545618, 0.0002339031769, 0.000519528372, 0.0005970682428, 0.0004188859751, 9.401118308e-05, -0.0001518523367, -0.0001497800338, -8.526824575e-05, -0.000159867454, -0.0001558671482, -7.185544163e-05, 5.095953721e-05, 0.0001539335156, 0.0001852702997, 0.0001283064915, 2.10985724e-05, -5.86631729e-05, -5.373438658e-05, -2.659380304e-05, -5.184770518e-05, -5.422721005e-05, -3.208143302e-05, 2.869815689e-06, 3.332505566e-05, 4.402226847e-05, 2.998565294e-05, 1.839759493e-06, -1.870974654e-05, -1.584254141e-05, -6.129578112e-06, -1.245180526e-05, -1.394484774e-05, -9.916207558e-06, -2.735826593e-06, 3.891323278e-06, 6.652298325e-06, 4.400146807e-06, -7.627535366e-07, -4.44302554e-06, -3.45162892e-06, -7.937319797e-07, -1.685354761e-06, -2.02048135e-06, -1.663345923e-06, -8.665469589e-07, -6.378406901e-08, 3.438823586e-07, 2.011831909e-07, -2.743938704e-07, -5.998576298e-07, -4.225317262e-07 +-0.001510215886, -0.002332158001, 0.002146712765, 0.01463109176, 0.03263245324, 0.04879453375, 0.05477568927, 0.04634744056, 0.02668300849, 0.005873463835, -0.003918289633, -0.001499507344, -0.003741070102, -0.003871862878, 0.0005679148628, 0.009261368916, 0.01866511639, 0.02385746086, 0.02155870137, 0.01253055361, 0.001961864464, -0.002905820877, -0.0009855264694, -0.002743149517, -0.003742089862, -0.00241101545, 0.00147040379, 0.006322055972, 0.009578603409, 0.00926830231, 0.005418576125, 0.0004839494915, -0.001731704533, -0.0004904824241, -0.001406431007, -0.002036342891, -0.00160564047, 5.725201521e-05, 0.002275100872, 0.003868625417, 0.003882599321, 0.002261976661, 9.448990532e-05, -0.0008547951436, -0.0002031394097, -0.0005935930152, -0.0008905429245, -0.0007756673499, -0.0001612543958, 0.0007021722763, 0.001353029982, 0.001402726289, 0.0008096650578, -1.068398856e-05, -0.0003586226068, -7.210397824e-05, -0.0002147411969, -0.000333334027, -0.0003158990258, -0.0001252919506, 0.0001605617305, 0.0003878170139, 0.000421340128, 0.0002396112214, -2.279040769e-05, -0.0001292237584, -2.10881111e-05, -6.409688046e-05, -0.0001030022045, -0.0001054012226, -5.854037526e-05, 1.83094411e-05, 8.34179307e-05, 9.827088683e-05, 5.448775931e-05, -1.277177919e-05, -3.830152072e-05, -4.571691089e-06, -1.420823024e-05, -2.366708069e-05, -2.601638036e-05, -1.804225105e-05, -3.067901772e-06, 1.067156851e-05, 1.510431823e-05, 7.929675737e-06, -4.27013797e-06, -8.402917429e-06, -5.582794519e-07, -1.77878469e-06, -3.07776827e-06, -3.623163347e-06, -2.961061912e-06, -1.377241559e-06, 2.397523658e-07, 9.485539081e-07, 4.040964899e-07, -7.38723375e-07, -1.038582852e-06, -0.0004905272972, -0.000821336022, 0.0001289936692, 0.003358515092, 0.009182535065, 0.01643235032, 0.02199850138, 0.021883365, 0.01417159325, 0.002455589783, -0.003944508121, -0.0004859476341, -0.001159540986, -0.001297361195, -0.0001664957375, 0.002613116129, 0.006570345287, 0.01002438317, 0.01057128086, 0.006795398474, 0.0004942540946, -0.002820717877, -0.0003310807243, -0.0008664007261, -0.001193172754, -0.0008641799639, 0.0003879907225, 0.002377826646, 0.004258669222, 0.004747305425, 0.00301480667, -8.588112117e-05, -0.001653631725, -0.0001749459362, -0.0004720889387, -0.0006849902319, -0.0005842086291, -3.027406485e-05, 0.0008945736696, 0.001791634032, 0.002053888963, 0.001284383022, -0.0001244169794, -0.000812323865, -7.779571424e-05, -0.0002148136468, -0.0003226465719, -0.000300846497, -8.818593131e-05, 0.0002825720605, 0.0006487662092, 0.0007641573326, 0.0004679998564, -8.224859425e-05, -0.0003399405325, -2.966626505e-05, -8.383527575e-05, -0.0001302083583, -0.0001310369913, -6.293929755e-05, 6.340858055e-05, 0.0001914985604, 0.0002358117971, 0.0001402801673, -4.157600193e-05, -0.0001222300673, -9.288490808e-06, -2.689040108e-05, -4.321146052e-05, -4.66161454e-05, -2.964473173e-05, 5.123698956e-06, 4.181121905e-05, 5.612951634e-05, 3.188971226e-05, -1.633198031e-05, -3.615540348e-05, -2.147681008e-06, -6.379975747e-06, -1.062141651e-05, -1.222962796e-05, -9.416592887e-06, -2.548152027e-06, 5.161087938e-06, 8.658278888e-06, 4.461428617e-06, -4.613841303e-06, -7.915272708e-06, -2.788021691e-07, -8.519589028e-07, -1.472620422e-06, -1.80528921e-06, -1.605253508e-06, -8.813991388e-07, 1.603160102e-08, 5.058323427e-07, 1.640434915e-07, -7.254548245e-07, -9.758731129e-07 +-0.0005438172459, -0.001552979828, -0.001309285132, 0.003113517932, 0.01388744481, 0.03005721914, 0.04634744056, 0.05425317739, 0.04566312416, 0.01985407639, -0.004747523114, -0.0005079061953, -0.001835745364, -0.003259594383, -0.002979438869, 0.0008577314648, 0.008598949539, 0.01795751975, 0.02414496474, 0.02168069672, 0.00880360968, -0.004210478968, -0.0003276379667, -0.001266274613, -0.002536409222, -0.003175364921, -0.002024997215, 0.001402192318, 0.006191802486, 0.009922742806, 0.009500711563, 0.003566786999, -0.002692048006, -0.000162241137, -0.0006393479575, -0.001321179118, -0.001761006779, -0.001390677609, 7.161760288e-05, 0.002257462682, 0.004065021129, 0.004020474299, 0.001417769776, -0.00135894966, -6.698394162e-05, -0.0002673524789, -0.0005635163377, -0.0007794877496, -0.0006821954622, -0.0001438055005, 0.0007072231598, 0.00144208897, 0.001465993385, 0.000477879221, -0.0005789435735, -2.369946182e-05, -9.583091958e-05, -0.0002060044071, -0.0002951160558, -0.0002813421924, -0.0001152862704, 0.0001663568418, 0.0004216784374, 0.0004455549925, 0.0001281942893, -0.000211904961, -6.907151779e-06, -2.832531122e-05, -6.216139432e-05, -9.222213039e-05, -9.490483018e-05, -5.451677784e-05, 2.106538299e-05, 9.374660816e-05, 0.0001056841347, 2.397324653e-05, -6.388320318e-05, -1.491610328e-06, -6.212542114e-06, -1.393869881e-05, -2.142930628e-05, -2.365806124e-05, -1.693259099e-05, -2.266312177e-06, 1.294111021e-05, 1.673624194e-05, 1.832264727e-06, -1.428771118e-05, -1.813519196e-07, -7.68689003e-07, -1.766912474e-06, -2.818864491e-06, -3.325169987e-06, -2.796065085e-06, -1.25775286e-06, 5.115103352e-07, 1.144157624e-06, -2.652714456e-07, -1.806782144e-06, -0.0001570313036, -0.0004709327227, -0.000549880672, 0.0005575436, 0.004271437807, 0.01168193521, 0.02189864089, 0.03036115847, 0.02912247936, 0.01287728709, -0.0058054461, -0.0001515284901, -0.0005522965196, -0.001070317365, -0.001199004432, -3.765677598e-05, 0.003311026533, 0.008743783267, 0.013936258, 0.01412413318, 0.00554325728, -0.00465989214, -0.0001025985124, -0.0003955235544, -0.0008416002179, -0.001186263914, -0.0009277194057, 0.0004918284669, 0.003151915187, 0.00594384486, 0.006339955374, 0.00217528619, -0.002864440377, -5.422714835e-05, -0.0002126690497, -0.0004631371828, -0.0006843408984, -0.0006315631565, -2.745199323e-05, 0.001184644696, 0.002499919146, 0.002731127129, 0.0008464752233, -0.001424704237, -2.413844813e-05, -9.581576154e-05, -0.0002116707151, -0.0003213822415, -0.0003225418594, -9.861641236e-05, 0.0003779736055, 0.0009074585309, 0.001012188283, 0.0002763924653, -0.0006002941067, -9.210291819e-06, -3.701970055e-05, -8.299161485e-05, -0.0001293240839, -0.0001392205685, -7.045354325e-05, 8.865983408e-05, 0.0002709699444, 0.0003122105731, 6.884907097e-05, -0.0002174510961, -2.883675958e-06, -1.174984533e-05, -2.676996743e-05, -4.284545179e-05, -4.912940918e-05, -3.295383615e-05, 9.87329412e-06, 6.117701541e-05, 7.484905894e-05, 1.019043831e-05, -6.491175003e-05, -6.663177506e-07, -2.756606798e-06, -6.394976243e-06, -1.052696915e-05, -1.279889061e-05, -1.038014397e-05, -2.131145234e-06, 8.434239468e-06, 1.186062273e-05, -3.65071415e-07, -1.437909747e-05, -8.638050972e-08, -3.636239534e-07, -8.610857616e-07, -1.460805571e-06, -1.878016051e-06, -1.754569453e-06, -9.12993988e-07, 2.878239415e-07, 7.798908496e-07, -4.325157581e-07, -1.800882293e-06 +-0.0001558800139, -0.0006729288233, -0.001350093039, -0.001064174484, 0.002319350327, 0.01122120115, 0.02668300849, 0.04566312416, 0.05709914998, 0.04211520934, 0.003535564669, -0.0001383154554, -0.0006806629157, -0.001744060764, -0.002888704019, -0.002885697698, 3.066027671e-05, 0.007232852953, 0.01788009288, 0.02592343965, 0.01944650149, -0.0008900905512, -8.773544867e-05, -0.0004506035672, -0.001229418928, -0.002270588519, -0.002944064522, -0.002215137261, 0.0008881534403, 0.006247250982, 0.01086214339, 0.008269406359, -0.001470344812, -4.325110471e-05, -0.000225092443, -0.0006254269887, -0.001188232684, -0.001625994401, -0.00144064374, -0.0001350330573, 0.002296240126, 0.004493045783, 0.00343008948, -0.0008797109526, -1.781003744e-05, -9.353278375e-05, -0.0002630930434, -0.0005091139344, -0.0007197761013, -0.000693041706, -0.000218270933, 0.0007250128913, 0.001607159359, 0.00122424139, -0.0004126918822, -6.284269799e-06, -3.331356278e-05, -9.4884481e-05, -0.0001869941357, -0.0002726772514, -0.0002818602275, -0.0001380870486, 0.0001726807071, 0.0004751487493, 0.000360640472, -0.0001648740318, -1.825987745e-06, -9.778605875e-06, -2.822574222e-05, -5.66938159e-05, -8.526671883e-05, -9.402654608e-05, -6.013588392e-05, 2.268612988e-05, 0.0001074971103, 8.119396063e-05, -5.415702747e-05, -3.929551283e-07, -2.128172356e-06, -6.232742102e-06, -1.277407432e-05, -1.982569402e-05, -2.322368891e-05, -1.791974091e-05, -2.022757754e-06, 1.541020322e-05, 1.15323525e-05, -1.322191757e-05, -4.758089786e-08, -2.609990346e-07, -7.768375843e-07, -1.627322039e-06, -2.609418371e-06, -3.23839431e-06, -2.886842299e-06, -1.249317515e-06, 7.353196559e-07, 5.27253744e-07, -1.834670836e-06, -4.372633723e-05, -0.000206871968, -0.0005003204245, -0.00062138921, 0.0004366973411, 0.004621119904, 0.01419782286, 0.02914354443, 0.04152681925, 0.03262793304, 0.0008389015501, -4.077315911e-05, -0.0002146219151, -0.0006233277648, -0.001228851334, -0.001569946128, -0.0004925215562, 0.00365543474, 0.01152508226, 0.01903537541, 0.01490209291, -0.002240718305, -2.728556786e-05, -0.0001482164912, -0.0004498838339, -0.0009588897856, -0.001474151905, -0.001383971234, 0.0002843788836, 0.004087234532, 0.008075249749, 0.006282069978, -0.002083885395, -1.435786214e-05, -7.854186764e-05, -0.000240379642, -0.0005203211981, -0.000829614686, -0.0008788263505, -0.0001944480036, 0.001516971097, 0.00337355074, 0.00260075353, -0.001139870484, -6.368183472e-06, -3.496229842e-05, -0.0001073571451, -0.0002340578674, -0.0003805136897, -0.0004290641082, -0.0001844011617, 0.0004796619874, 0.001217110563, 0.0009263584783, -0.000507181165, -2.420814525e-06, -1.334795578e-05, -4.11525296e-05, -9.040389786e-05, -0.0001497289747, -0.0001781768799, -0.0001065722884, 0.0001119031833, 0.0003619902501, 0.0002706689608, -0.0001938124011, -7.549673178e-07, -4.186209467e-06, -1.297912683e-05, -2.877530664e-05, -4.859664729e-05, -6.079269653e-05, -4.519805252e-05, 1.264878273e-05, 8.183978736e-05, 5.950997102e-05, -6.127081204e-05, -1.737063151e-07, -9.701361487e-07, -3.030509845e-06, -6.793824557e-06, -1.171620145e-05, -1.537078311e-05, -1.340999401e-05, -2.482435753e-06, 1.149388379e-05, 7.853495799e-06, -1.446636125e-05, -2.241242219e-08, -1.263205558e-07, -3.984662032e-07, -9.053877951e-07, -1.597487386e-06, -2.195296974e-06, -2.172718506e-06, -1.086011222e-06, 4.666781722e-07, 2.077752463e-07, -1.948797687e-06 +-3.200604867e-05, -0.000192402825, -0.0006007669734, -0.001219212076, -0.001520732277, -6.266772613e-05, 0.005873463835, 0.01985407639, 0.04211520934, 0.05774428235, 0.03756675663, -2.718561878e-05, -0.0001762980737, -0.0006132172866, -0.001484322831, -0.002698422059, -0.003585882953, -0.002506096839, 0.003158003625, 0.01470154691, 0.02479784472, 0.01698653011, -1.698292481e-05, -0.0001131933957, -0.0004075340679, -0.001033828041, -0.002019570439, -0.003077745991, -0.003340643154, -0.001269444049, 0.004205423117, 0.009781146141, 0.007146156671, -8.339062174e-06, -5.609182305e-05, -0.0002042077304, -0.0005255123589, -0.001047545396, -0.001650585765, -0.001932312091, -0.00114824193, 0.00127443379, 0.003921822022, 0.003010617844, -3.426591006e-06, -2.320260587e-05, -8.515483909e-05, -0.0002213875342, -0.000447488651, -0.0007205313335, -0.000881632043, -0.0006264398621, 0.0002969211371, 0.001368821987, 0.00111176258, -1.206432946e-06, -8.226222277e-06, -3.044415737e-05, -7.998185337e-05, -0.0001639431245, -0.0002696050843, -0.0003435067136, -0.0002790852863, 1.884849088e-05, 0.0003909639922, 0.0003451793001, -3.496617678e-07, -2.402247288e-06, -8.9704432e-06, -2.382951229e-05, -4.956194706e-05, -8.327112373e-05, -0.0001103162735, -0.0001000776101, -2.282366382e-05, 8.319186782e-05, 8.458348416e-05, -7.502123315e-08, -5.197106505e-07, -1.959772345e-06, -5.2686054e-06, -1.112868778e-05, -1.911687039e-05, -2.631527494e-05, -2.624010222e-05, -1.198119555e-05, 1.026481644e-05, 1.419451925e-05, -9.050497442e-09, -6.32888332e-08, -2.412780492e-07, -6.572470992e-07, -1.41173243e-06, -2.482449351e-06, -3.551100912e-06, -3.850716499e-06, -2.471884496e-06, 1.317582898e-07, 1.124234131e-06, -9.467202514e-06, -6.540165362e-05, -0.0002465884087, -0.0006325956222, -0.001100353934, -0.0008296132802, 0.002480313609, 0.01291101595, 0.03265762277, 0.04932408475, 0.03375995736, -8.47168476e-06, -6.17822072e-05, -0.0002508633715, -0.0007245393573, -0.001591723685, -0.002606034764, -0.002566236411, 0.001165100969, 0.01084467195, 0.02076826462, 0.01498134951, -5.573889516e-06, -4.125614231e-05, -0.0001707097165, -0.0005072671995, -0.001169229175, -0.002105944522, -0.002738340583, -0.001608257189, 0.00278639516, 0.008020494003, 0.006198090989, -2.907482197e-06, -2.152184973e-05, -8.908403008e-05, -0.0002655008814, -0.0006171635237, -0.001133932973, -0.00155386597, -0.001183756858, 0.0007337066284, 0.003185980323, 0.002600798403, -1.27948339e-06, -9.450332141e-06, -3.901709519e-05, -0.0001161750006, -0.0002708039036, -0.0005026422012, -0.0007091170442, -0.0006092999345, 0.0001165415251, 0.001103484312, 0.0009603420691, -4.826643374e-07, -3.559779164e-06, -1.466909148e-05, -4.365787333e-05, -0.0001020754919, -0.000191360891, -0.000277336496, -0.0002624470832, -3.038562179e-05, 0.0003103397703, 0.0002977801612, -1.494019055e-07, -1.101716703e-06, -4.537430562e-06, -1.351519543e-05, -3.173196924e-05, -6.014087441e-05, -8.953073852e-05, -9.212115854e-05, -3.288341001e-05, 6.358670927e-05, 7.25776541e-05, -3.411805708e-08, -2.519244807e-07, -1.038574973e-06, -3.100677212e-06, -7.321073617e-06, -1.404648677e-05, -2.149003863e-05, -2.383003478e-05, -1.320345192e-05, 6.888928492e-06, 1.199824447e-05, -4.367958838e-09, -3.234910214e-08, -1.337278074e-07, -4.008823118e-07, -9.535643551e-07, -1.855332172e-06, -2.92031951e-06, -3.468595606e-06, -2.499352437e-06, -1.702212683e-07, 9.069308917e-07 +-3.577387949e-06, -2.881991447e-05, -0.0001265167408, -0.0003996996071, -0.001013810244, -0.002174288399, -0.003918289633, -0.004747523114, 0.003535564669, 0.03756675663, 0.07117368193, -2.926150525e-06, -2.462004155e-05, -0.0001136145357, -0.0003805028717, -0.001034333935, -0.002415614232, -0.00492027402, -0.008088545279, -0.006718605375, 0.01200569583, 0.03648664073, -1.802707789e-06, -1.542923499e-05, -7.252742022e-05, -0.0002478167535, -0.0006885291942, -0.001647366973, -0.003457344579, -0.006013556169, -0.006453338584, 0.002903276476, 0.0171618741, -8.821046707e-07, -7.597763874e-06, -3.595801842e-05, -0.0001237656894, -0.0003465663282, -0.0008360551045, -0.001770399283, -0.003120846827, -0.003515216352, 0.0007796736361, 0.007610984668, -3.618668768e-07, -3.132502999e-06, -1.490646573e-05, -5.161226154e-05, -0.0001454413611, -0.0003531602098, -0.0007526629697, -0.001336880791, -0.001542123116, 0.00016288335, 0.002928041445, -1.271911707e-07, -1.106873263e-06, -5.297601477e-06, -1.845670281e-05, -5.235406931e-05, -0.0001279840333, -0.000274540671, -0.000491240516, -0.0005793172663, -1.109908448e-07, 0.000959161405, -3.678845927e-08, -3.219692719e-07, -1.550421977e-06, -5.437074995e-06, -1.552921945e-05, -3.822804453e-05, -8.255713561e-05, -0.0001488737151, -0.0001796600175, -1.906115556e-05, 0.0002545171023, -7.872814256e-09, -6.932801905e-08, -3.360493778e-07, -1.18672525e-06, -3.414250355e-06, -8.466610648e-06, -1.841498202e-05, -3.349111434e-05, -4.143455153e-05, -8.891013808e-06, 4.878433104e-05, -9.466346893e-10, -8.39340338e-09, -4.098091229e-08, -1.45826153e-07, -4.228601089e-07, -1.056895885e-06, -2.316629103e-06, -4.254147612e-06, -5.410538174e-06, -1.773937511e-06, 5.054714119e-06, -1.189047245e-06, -1.136456602e-05, -6.04547166e-05, -0.0002329694406, -0.0007180487119, -0.001848776891, -0.003932588013, -0.005781520895, 0.0008756763568, 0.03379188615, 0.06856250434, -1.018134746e-06, -9.963569995e-06, -5.446684415e-05, -0.0002170026723, -0.0006972643773, -0.001895577766, -0.004387882566, -0.00798375843, -0.007575841647, 0.01024213434, 0.03508165392, -6.564104755e-07, -6.451750685e-06, -3.545942487e-05, -0.0001423297006, -0.0004619568222, -0.001272964068, -0.003007817499, -0.005727879501, -0.006662579732, 0.002150171506, 0.01648814502, -3.384616355e-07, -3.313675745e-06, -1.814764317e-05, -7.266706044e-05, -0.0002356259907, -0.0006496493595, -0.001538904926, -0.002953998767, -0.003570808047, 0.000467934015, 0.007318451356, -1.473662512e-07, -1.434968856e-06, -7.817638998e-06, -3.117102916e-05, -0.0001007782735, -0.0002774072288, -0.0006568661689, -0.001263541937, -0.001553625368, 5.103837519e-05, 0.002819638105, -5.501697337e-08, -5.331354162e-07, -2.890530826e-06, -1.147963375e-05, -3.701170926e-05, -0.0001017205915, -0.0002407513342, -0.0004639628082, -0.0005795980328, -3.392268976e-05, 0.0009250876767, -1.685986796e-08, -1.627687707e-07, -8.790907438e-07, -3.480121365e-06, -1.119603546e-05, -3.073700224e-05, -7.274586771e-05, -0.0001405372, -0.000178630986, -2.723007626e-05, 0.0002458306303, -3.812334902e-09, -3.671145654e-08, -1.97720006e-07, -7.809314183e-07, -2.508795093e-06, -6.884360807e-06, -1.630299525e-05, -3.160358059e-05, -4.096593655e-05, -1.028540419e-05, 4.71781781e-05, -4.831851432e-10, -4.647036298e-09, -2.498746943e-08, -9.856710039e-08, -3.164836831e-07, -8.687501018e-07, -2.060264248e-06, -4.013055263e-06, -5.322036249e-06, -1.897055419e-06, 4.89273449e-06 +0.1126497553, 0.00947757405, -0.01985946175, -0.01532085961, -0.008209925002, -0.003759370399, -0.001499507344, -0.0005079061953, -0.0001383154554, -2.718561878e-05, -2.926150525e-06, 0.130235008, 0.03318573071, -0.007194243649, -0.009749017792, -0.005893646974, -0.002873002519, -0.001200449871, -0.0004228284638, -0.000119182369, -2.41636591e-05, -2.675833738e-06, 0.09877938118, 0.03095621923, -0.002406037616, -0.006294577756, -0.004088738521, -0.002052499547, -0.0008741299939, -0.0003126236695, -8.928744346e-05, -1.83171363e-05, -2.050363656e-06, 0.05743312531, 0.01989965622, -0.0009462173353, -0.003828059614, -0.002559530046, -0.001294759235, -0.0005532780616, -0.0001984154438, -5.682945811e-05, -1.169410126e-05, -1.313304288e-06, 0.02756427191, 0.01040795544, -0.0003299626742, -0.002007791572, -0.001370544519, -0.0006958531543, -0.0002974166104, -0.0001066738303, -3.057443541e-05, -6.29950443e-06, -7.087277515e-07, 0.01099265558, 0.004494595629, -8.947531813e-05, -0.0008868334608, -0.0006170746491, -0.0003142782992, -0.0001342578057, -4.812495632e-05, -1.37938473e-05, -2.844052831e-06, -3.20380602e-07, 0.003485016751, 0.001532818234, -1.918511452e-05, -0.0003160164256, -0.0002236736939, -0.0001142300126, -4.87497564e-05, -1.745445755e-05, -5.000600226e-06, -1.031323058e-06, -1.162841902e-07, 0.000790638804, 0.0003707656444, -4.860215787e-06, -8.2648669e-05, -5.920195967e-05, -3.028329194e-05, -1.290082104e-05, -4.610320468e-06, -1.319374204e-06, -2.720372971e-07, -3.068733454e-08, 9.709526108e-05, 4.778302048e-05, -1.495347538e-06, -1.22579422e-05, -8.787280649e-06, -4.488749034e-06, -1.9055052e-06, -6.787270518e-07, -1.937967034e-07, -3.990952389e-08, -4.500560236e-09, 0.02097185169, -0.02401044063, -0.01997982566, -0.009453203639, -0.003802181563, -0.001410974066, -0.0004852562558, -0.0001514113104, -4.076991085e-05, -8.475921568e-06, -1.019015823e-06, 0.0378665682, -0.009575984325, -0.01432694897, -0.007595937938, -0.003210982857, -0.001235027372, -0.0004386931579, -0.0001409321954, -3.890190369e-05, -8.251920905e-06, -1.008259724e-06, 0.0308518323, -0.003802000611, -0.00976182922, -0.005590143868, -0.00244582688, -0.000962116652, -0.000347969936, -0.0001133556501, -3.157322439e-05, -6.725827816e-06, -8.22442297e-07, 0.01803848588, -0.001687993909, -0.005940357125, -0.003585650957, -0.001609788021, -0.0006430115067, -0.0002350770663, -7.710860587e-05, -2.152967498e-05, -4.578184202e-06, -5.572003726e-07, 0.008681879963, -0.0006442764605, -0.003076339434, -0.001952862455, -0.0008990756307, -0.0003641641276, -0.0001343231476, -4.428346902e-05, -1.237636939e-05, -2.624228305e-06, -3.176202839e-07, 0.00348543859, -0.000195937753, -0.001337034117, -0.0008921151947, -0.0004211944497, -0.0001728911587, -6.427328991e-05, -2.12761548e-05, -5.948380482e-06, -1.2573958e-06, -1.513517017e-07, 0.001110552828, -4.979553021e-05, -0.0004687406733, -0.0003276264453, -0.000158528581, -6.590508012e-05, -2.467104086e-05, -8.19342355e-06, -2.290442657e-06, -4.826305451e-07, -5.778306821e-08, 0.0002504944146, -1.300515246e-05, -0.0001209747738, -8.782089297e-05, -4.346279875e-05, -1.828126173e-05, -6.883909241e-06, -2.291546709e-06, -6.401327814e-07, -1.344242189e-07, -1.600770212e-08, 2.976367887e-05, -3.143980593e-06, -1.783127597e-05, -1.321746482e-05, -6.65920092e-06, -2.827942066e-06, -1.069421835e-06, -3.563241555e-07, -9.935819015e-08, -2.07781464e-08, -2.459958023e-09 +0.03090880886, 0.0512770503, 0.0243086514, 0.002689887508, -0.005257531422, -0.005696452118, -0.003741070102, -0.001835745364, -0.0006806629157, -0.0001762980737, -2.462004155e-05, 0.03318573071, 0.06305220141, 0.03897676161, 0.01377275078, 0.001358321342, -0.002360072921, -0.002315962107, -0.001333515417, -0.0005425621065, -0.0001498393743, -2.197584977e-05, 0.02250081472, 0.04806639395, 0.03210919908, 0.01265333077, 0.002320007169, -0.001181298665, -0.001521281855, -0.0009403890198, -0.0003966400454, -0.0001121483885, -1.674020679e-05, 0.01133454923, 0.0276126788, 0.01930853782, 0.007752119459, 0.001408995775, -0.0007617823711, -0.0009678978179, -0.0005983785556, -0.0002529373876, -7.173134586e-05, -1.074414625e-05, 0.004640691997, 0.01303389016, 0.009506406607, 0.003835699058, 0.0006341636654, -0.0004530872461, -0.0005341242499, -0.0003255910903, -0.0001370172255, -3.881854045e-05, -5.818534688e-06, 0.001544868312, 0.005080512149, 0.003865544398, 0.001560130555, 0.0002205365793, -0.0002281888559, -0.0002485898483, -0.0001489864495, -6.231618651e-05, -1.76179557e-05, -2.640511674e-06, 0.000377574623, 0.001548048754, 0.001233641465, 0.0004948557049, 5.204946909e-05, -9.304056458e-05, -9.348388479e-05, -5.493970127e-05, -2.280473856e-05, -6.42742466e-06, -9.625437215e-07, 4.93615806e-05, 0.000324190082, 0.0002738212596, 0.0001075834328, 4.404168365e-06, -2.806061021e-05, -2.582708539e-05, -1.481704668e-05, -6.088416681e-06, -1.708049768e-06, -2.553177066e-07, -1.359074561e-06, 3.310108285e-05, 3.065848246e-05, 1.127766867e-05, -1.25791649e-06, -4.853948673e-06, -4.039240214e-06, -2.244483157e-06, -9.089285474e-07, -2.530996591e-07, -3.769152495e-08, -0.01096089973, 0.01302103878, 0.006176946585, -0.0008394351218, -0.002525019168, -0.001998292029, -0.001158162152, -0.0005522863993, -0.0002147889103, -6.185641797e-05, -9.976700906e-06, -0.009585525016, 0.01862352907, 0.01269334454, 0.003320476042, -0.0004825022369, -0.001139412164, -0.0008421321319, -0.0004523759159, -0.0001891869987, -5.720356905e-05, -9.552964092e-06, -0.009150397778, 0.0139291691, 0.01095956029, 0.003505670932, 5.889375137e-05, -0.0007377722506, -0.0006201035415, -0.0003494361723, -0.0001495220962, -4.572269777e-05, -7.677730444e-06, -0.007235551677, 0.007364000469, 0.006693682625, 0.002272547739, 4.886020086e-05, -0.0004927406397, -0.0004198876406, -0.0002376565133, -0.0001015726196, -3.09206081e-05, -5.161912529e-06, -0.004468594359, 0.003039400319, 0.003296054046, 0.001165202279, -9.796562881e-07, -0.0002906940063, -0.0002441968056, -0.0001375155735, -5.842557193e-05, -1.765577735e-05, -2.924583533e-06, -0.002199437189, 0.0009491622668, 0.001312364615, 0.0004792276284, -2.102871899e-05, -0.000145854632, -0.0001195520191, -6.674404124e-05, -2.814642192e-05, -8.437939404e-06, -1.3864289e-06, -0.0008539749542, 0.0001808853337, 0.000395245913, 0.0001475265209, -1.885567617e-05, -5.961031249e-05, -4.722532994e-05, -2.604490027e-05, -1.088472479e-05, -3.235023397e-06, -5.271227363e-07, -0.0002423728482, -1.753239063e-06, 7.61607086e-05, 2.828193207e-05, -9.486844186e-06, -1.808703718e-05, -1.368417433e-05, -7.417431213e-06, -3.06445974e-06, -9.017940962e-07, -1.456201065e-07, -3.910098163e-05, -9.273896829e-06, 5.433461654e-06, 1.691472621e-06, -2.446342329e-06, -3.153368176e-06, -2.241175085e-06, -1.184381184e-06, -4.815811821e-07, -1.399495309e-07, -2.235883899e-08 +-0.00311436746, 0.03611633589, 0.03928434889, 0.02346178421, 0.007842770873, -0.001097960476, -0.003871862878, -0.003259594383, -0.001744060764, -0.0006132172866, -0.0001136145357, -0.007194243649, 0.03897676161, 0.04966931577, 0.03561910891, 0.01786175342, 0.005497126651, -0.0003127143132, -0.00170531222, -0.001220383624, -0.0004910437387, -9.881310912e-05, -0.009465127253, 0.02698792992, 0.03828249825, 0.02891738796, 0.01535641998, 0.005384853031, 0.0003951462364, -0.00104182057, -0.0008552390821, -0.0003616777344, -7.486934837e-05, -0.008375165988, 0.01383253532, 0.02217286203, 0.01726187789, 0.009251972029, 0.003223080467, 0.0001840330467, -0.0006831425888, -0.0005508692725, -0.0002325744461, -4.823500709e-05, -0.005530629189, 0.005608080984, 0.01055121018, 0.008466991494, 0.004544153358, 0.001533115307, 1.907984428e-05, -0.0003945325488, -0.0003041310172, -0.0001270038895, -2.626284781e-05, -0.002863236518, 0.001747214345, 0.004139218554, 0.003439972312, 0.001844013619, 0.0005933873088, -3.158704678e-05, -0.0001918265178, -0.0001411540155, -5.820160353e-05, -1.198594021e-05, -0.001155731473, 0.0003474554474, 0.001262324063, 0.001097983737, 0.0005862650366, 0.0001751966213, -2.806464711e-05, -7.532480375e-05, -5.281038859e-05, -2.145962599e-05, -4.395895314e-06, -0.0003367099419, 9.073350466e-06, 0.0002607225993, 0.0002431433891, 0.0001285410551, 3.332672648e-05, -1.285340617e-05, -2.17875701e-05, -1.447105462e-05, -5.774662268e-06, -1.174212409e-06, -5.491232905e-05, -1.304774616e-05, 2.501963267e-05, 2.684900811e-05, 1.378629758e-05, 2.336253936e-06, -2.985267875e-06, -3.588654673e-06, -2.233410569e-06, -8.696024481e-07, -1.748630149e-07, -0.01125654184, 0.01145815014, 0.01291192375, 0.006490382097, 0.001549105154, -0.0007319808125, -0.001297774132, -0.001072025911, -0.0006245590956, -0.0002513471286, -5.455812904e-05, -0.01434975667, 0.01267438766, 0.01765013155, 0.01119920631, 0.004866838871, 0.001202112936, -0.0003314321456, -0.0006632875588, -0.0004861885998, -0.0002183690196, -5.05710851e-05, -0.01371246134, 0.00843001865, 0.01429518452, 0.009749132209, 0.004558834984, 0.001353460128, -8.179016516e-05, -0.000461355467, -0.0003686469611, -0.0001706290769, -4.007913382e-05, -0.01025096349, 0.003857409659, 0.008676369969, 0.006234046275, 0.002969154972, 0.0008760511511, -7.206374545e-05, -0.000318577833, -0.0002504019419, -0.0001148099592, -2.677615996e-05, -0.006202530969, 0.001182143469, 0.004302604219, 0.003268349942, 0.001572440455, 0.0004459437688, -6.53344364e-05, -0.0001910823273, -0.0001450749911, -6.543994241e-05, -1.509717852e-05, -0.003064224149, 0.0001104678111, 0.001736228885, 0.001408125008, 0.0006823177394, 0.0001815308813, -4.521549667e-05, -9.652761475e-05, -7.054694501e-05, -3.125815531e-05, -7.127564001e-06, -0.001201714003, -0.000130405571, 0.0005326661451, 0.0004713891537, 0.00022922299, 5.451809844e-05, -2.393711331e-05, -3.941618886e-05, -2.761760688e-05, -1.199723801e-05, -2.701303471e-06, -0.0003424830566, -8.778115415e-05, 0.0001054771428, 0.0001076053018, 5.207648494e-05, 9.591265019e-06, -9.103901676e-06, -1.185982804e-05, -7.908996428e-06, -3.356495783e-06, -7.448844405e-07, -5.470244533e-05, -2.277324357e-05, 8.087782719e-06, 1.175615147e-05, 5.498302169e-06, 2.384203327e-07, -1.952917908e-06, -2.032180396e-06, -1.27438117e-06, -5.249338731e-07, -1.144003172e-07 +-0.006467631847, 0.01474899148, 0.0307974965, 0.03133667011, 0.02135868557, 0.009195956631, 0.0005679148628, -0.002979438869, -0.002888704019, -0.001484322831, -0.0003805028717, -0.009749017792, 0.01377275078, 0.03561910891, 0.04068759244, 0.0320229057, 0.01832378646, 0.006777110935, 0.0003821410305, -0.001496252596, -0.001086366199, -0.0003216351645, -0.01012802391, 0.007372771691, 0.02569386609, 0.03132552458, 0.02570124608, 0.01539133323, 0.006215280913, 0.0008558831252, -0.0009273533675, -0.0007809529487, -0.0002425068128, -0.007928394398, 0.002070266239, 0.01378665724, 0.01798985944, 0.01513337149, 0.009153182312, 0.003674859753, 0.0004413598218, -0.0006244703773, -0.0005081859495, -0.0001571494848, -0.00493051489, -0.0002396568334, 0.005968682259, 0.008479468465, 0.007312783546, 0.004440065636, 0.001738824884, 0.0001397731457, -0.0003689708236, -0.0002823875978, -8.620744834e-05, -0.002478600059, -0.0006748885187, 0.002066013325, 0.00329433432, 0.002922916564, 0.001777630095, 0.000670671817, 1.535797359e-05, -0.0001827231234, -0.0001317267916, -3.964414261e-05, -0.0009841254633, -0.0004506363067, 0.0005147597333, 0.0009923057147, 0.0009141133046, 0.0005556425743, 0.0001975206881, -1.383923076e-05, -7.288723647e-05, -4.94869802e-05, -1.465635953e-05, -0.0002831321015, -0.0001786709401, 6.58272751e-05, 0.0002003390218, 0.0001961592109, 0.0001186688731, 3.753024261e-05, -9.935156589e-06, -2.138473898e-05, -1.360348147e-05, -3.950343144e-06, -4.554004401e-05, -3.672960965e-05, -3.041622561e-06, 1.799427418e-05, 2.027636727e-05, 1.203767729e-05, 2.649508268e-06, -2.70794393e-06, -3.56862514e-06, -2.10310099e-06, -5.947698304e-07, -0.005601649597, 0.003663315053, 0.008855155937, 0.008270418905, 0.005211846044, 0.002051209138, -0.0001730054338, -0.001205865676, -0.001233422859, -0.0007264792759, -0.0002174226404, -0.007611210873, 0.003301523038, 0.01118961161, 0.01201887408, 0.008994275876, 0.005067326541, 0.001833086624, -9.887411615e-05, -0.0007523705682, -0.0005808730526, -0.0001951220177, -0.007441046689, 0.001266593828, 0.008546193153, 0.009942656219, 0.007784066575, 0.004587745773, 0.001826453307, 0.0001135955779, -0.0005216994588, -0.0004414338999, -0.0001526936251, -0.00566661019, -0.0002874917326, 0.004841980873, 0.006139790065, 0.004941019791, 0.002931034371, 0.001147951918, 3.99276224e-05, -0.0003614638394, -0.0002968331893, -0.0001015819715, -0.003509714631, -0.0007811220973, 0.002197881102, 0.003108937626, 0.002572038857, 0.001525852968, 0.0005747115186, -1.373152539e-05, -0.000217106601, -0.0001698282856, -5.711344335e-05, -0.001781565969, -0.0006509595582, 0.0007793958023, 0.001287368927, 0.001099822422, 0.0006508662134, 0.0002316669047, -2.598766996e-05, -0.0001095788854, -8.151575035e-05, -2.690163744e-05, -0.0007189181431, -0.0003579820769, 0.0001868971594, 0.0004081475535, 0.000364234654, 0.0002142863145, 6.953286088e-05, -1.862504208e-05, -4.465908933e-05, -3.149481547e-05, -1.01801397e-05, -0.0002107020059, -0.0001331894618, 1.56490951e-05, 8.471984511e-05, 8.140117857e-05, 4.72137792e-05, 1.254545578e-05, -8.249903837e-06, -1.340571874e-05, -8.898200035e-06, -2.806655401e-06, -3.452670376e-05, -2.680888144e-05, -4.675239333e-06, 7.211143304e-06, 8.385674347e-06, 4.644500619e-06, 4.785389695e-07, -1.936902476e-06, -2.29051854e-06, -1.412826127e-06, -4.319034967e-07 +-0.00418760099, 0.003164939048, 0.01686793413, 0.02679089038, 0.02741825725, 0.01985460031, 0.009261368916, 0.0008577314648, -0.002885697698, -0.002698422059, -0.001034333935, -0.005893646974, 0.001358321342, 0.01786175342, 0.0320229057, 0.03605854345, 0.02956944193, 0.01763318488, 0.006508745883, 1.535739201e-05, -0.001671934291, -0.0008468199082, -0.005842296384, -0.001372995249, 0.01139007538, 0.0233103281, 0.02769196454, 0.02359158545, 0.01466512077, 0.00586859374, 0.0004649327871, -0.001142965089, -0.0006355786285, -0.004443360253, -0.002568527442, 0.004976334012, 0.01255500631, 0.01578204326, 0.01379058138, 0.008663801363, 0.003434228438, 0.0001824184137, -0.000766154093, -0.0004152490589, -0.002720813517, -0.002223407514, 0.001469849657, 0.005458152309, 0.007364170805, 0.006606937245, 0.004173466333, 0.001606282661, 1.302051153e-06, -0.0004428899124, -0.0002300480739, -0.001357785599, -0.00135052352, 0.0001523202354, 0.001901908621, 0.002824336773, 0.002613207731, 0.001656887003, 0.0006101845972, -4.613409803e-05, -0.0002145347863, -0.0001068251748, -0.0005374507601, -0.0006149211624, -0.0001325918779, 0.000480019629, 0.0008346787878, 0.0008052744253, 0.0005117203452, 0.0001753724531, -3.56282835e-05, -8.36777944e-05, -3.988970627e-05, -0.0001544528154, -0.0001985035547, -9.03814922e-05, 6.387161394e-05, 0.0001626042288, 0.0001684732315, 0.0001070018665, 3.161302023e-05, -1.548965707e-05, -2.394938367e-05, -1.087091282e-05, -2.482684585e-05, -3.550562621e-05, -2.321071949e-05, -2.098772021e-06, 1.315056181e-05, 1.639844586e-05, 1.030443163e-05, 1.767206972e-06, -3.477078918e-06, -3.879505205e-06, -1.658464571e-06, -0.002332386684, 0.0001731063128, 0.004156773864, 0.006700696045, 0.006975098395, 0.005319517708, 0.002597905565, -5.337653038e-05, -0.001581482699, -0.001597395865, -0.0006987381646, -0.003217682667, -0.0004937642035, 0.004858098239, 0.008991340113, 0.01035025827, 0.008980809821, 0.005801567361, 0.002223062703, -0.0003254417609, -0.001118357965, -0.0006066660815, -0.003175450391, -0.001311369598, 0.003216991658, 0.007015501908, 0.008527140965, 0.007646060766, 0.005113396083, 0.002135316235, -5.664233672e-05, -0.0008146858677, -0.0004693986212, -0.002443739799, -0.001535685769, 0.001405278873, 0.004041864154, 0.005209590155, 0.004766305172, 0.003193478799, 0.001302274629, -8.810153125e-05, -0.0005534997008, -0.000311742948, -0.001533684497, -0.001219118062, 0.0003620943734, 0.001874099921, 0.002603869995, 0.002434314603, 0.001625550092, 0.0006316182562, -9.413097892e-05, -0.0003222779581, -0.0001752139621, -0.0007904665151, -0.0007365990626, -3.314496397e-05, 0.0006861381042, 0.001061324463, 0.00102003623, 0.0006779220326, 0.0002458588143, -6.713443329e-05, -0.0001574809661, -8.252286937e-05, -0.0003242514253, -0.0003428550827, -9.66628515e-05, 0.0001753122948, 0.0003287895655, 0.0003295666681, 0.0002176299511, 7.045310021e-05, -3.524440465e-05, -6.204457248e-05, -3.124617503e-05, -9.66489852e-05, -0.0001143430224, -5.399518557e-05, 1.974863887e-05, 6.521110548e-05, 7.09006824e-05, 4.629322104e-05, 1.157616121e-05, -1.308835212e-05, -1.794621429e-05, -8.630616542e-06, -1.610454588e-05, -2.121832512e-05, -1.359809775e-05, -2.743865465e-06, 4.722924621e-06, 6.674976952e-06, 4.212310826e-06, 1.286530318e-07, -2.717102838e-06, -2.937567447e-06, -1.333576142e-06 +-0.002130269292, -0.0009470248424, 0.006198968944, 0.01650667643, 0.0242776469, 0.02510692083, 0.01866511639, 0.008598949539, 3.066027671e-05, -0.003585882953, -0.002415614232, -0.002873002519, -0.002360072921, 0.005497126651, 0.01832378646, 0.02956944193, 0.03324963907, 0.02771776374, 0.01632591269, 0.005021183573, -0.00136192865, -0.001904990318, -0.002763511045, -0.00326365331, 0.002176842328, 0.01216954461, 0.02163728519, 0.02553859047, 0.02208188166, 0.01355252933, 0.004596807657, -0.0007380980325, -0.001422981608, -0.002058984672, -0.003004041845, -0.0002345506762, 0.005678043385, 0.01168083116, 0.01453075018, 0.01289175512, 0.007990537832, 0.002644759726, -0.0005765236419, -0.0009397935261, -0.001244150507, -0.002064054463, -0.0009529820605, 0.001939655982, 0.005087711266, 0.006762775544, 0.006166774863, 0.003839572126, 0.001202466122, -0.0003930505741, -0.0005271495476, -0.0006155379537, -0.001114242331, -0.0007749195492, 0.0004004800683, 0.001775710074, 0.002583203131, 0.00243322122, 0.0015187114, 0.0004377670186, -0.0002169140172, -0.0002477113511, -0.0002421627681, -0.0004695369247, -0.0004065268476, -3.024935204e-05, 0.0004486222037, 0.0007578387235, 0.0007464496678, 0.0004660052955, 0.0001165863637, -9.453997177e-05, -9.360915074e-05, -6.925851305e-05, -0.0001427748728, -0.0001439851029, -6.003664253e-05, 5.957467067e-05, 0.0001452298563, 0.0001546509558, 9.611782424e-05, 1.722891546e-05, -3.001319127e-05, -2.584398217e-05, -1.108514438e-05, -2.426182197e-05, -2.766914936e-05, -1.822466935e-05, -2.063701419e-06, 1.107754621e-05, 1.463543492e-05, 8.896110651e-06, -1.337865412e-07, -5.394843993e-06, -4.003366888e-06, -0.0008961637852, -0.0006318362772, 0.001265848706, 0.004065775474, 0.006615816591, 0.00772020146, 0.006549029486, 0.003285793928, -0.0005144192803, -0.002619112791, -0.001899826304, -0.001237307202, -0.001144112402, 0.001198131022, 0.00506698014, 0.008983044508, 0.01127134701, 0.01064330558, 0.007030351153, 0.002114940086, -0.001347897805, -0.001590974548, -0.001222654803, -0.001439427558, 0.0003233341816, 0.003555143319, 0.00699087439, 0.009153298412, 0.008891319035, 0.0060806853, 0.002065905007, -0.0008764269721, -0.001218031963, -0.000943828967, -0.001309683533, -0.0003284733114, 0.001723559563, 0.004003074319, 0.005503526376, 0.005443375014, 0.00372535344, 0.001211192105, -0.0006306497244, -0.0008097825114, -0.0005952893392, -0.000922588182, -0.0004887007143, 0.0005894353338, 0.001844725347, 0.002706044331, 0.002731195401, 0.001859718564, 0.0005543160343, -0.0003948358104, -0.0004562345055, -0.0003087129688, -0.0005193158905, -0.0003723620957, 9.625265565e-05, 0.0006720964148, 0.001085047454, 0.001125361861, 0.0007609981511, 0.0001989179733, -0.0002058654276, -0.0002153916015, -0.0001274946781, -0.0002297719152, -0.0001984490251, -3.887294326e-05, 0.0001712579124, 0.0003301061973, 0.0003576340951, 0.0002395963219, 4.923527571e-05, -8.627232957e-05, -8.178924288e-05, -3.826847211e-05, -7.352251721e-05, -7.298808994e-05, -3.539178282e-05, 1.938963243e-05, 6.377702276e-05, 7.55296883e-05, 4.97977011e-05, 4.870135848e-06, -2.660491312e-05, -2.26852285e-05, -6.421053274e-06, -1.314939389e-05, -1.467832248e-05, -1.027237718e-05, -2.604807932e-06, 4.263335781e-06, 6.899978488e-06, 4.341053853e-06, -1.025171358e-06, -4.675195282e-06, -3.528138143e-06 +-0.0009194723854, -0.00151188807, 0.0006785118074, 0.006878870864, 0.01548300253, 0.02250961605, 0.02385746086, 0.01795751975, 0.007232852953, -0.002506096839, -0.00492027402, -0.001200449871, -0.002315962107, -0.0003127143132, 0.006777110935, 0.01763318488, 0.02771776374, 0.03167775197, 0.0266401318, 0.01446817599, 0.001660550464, -0.003684116049, -0.001127395713, -0.002499038125, -0.001607517431, 0.003428789439, 0.0119086742, 0.02037223604, 0.0243928221, 0.02127467655, 0.012084934, 0.001848892289, -0.002730733078, -0.0008254641523, -0.002020555424, -0.00197471335, 0.0006677780142, 0.005685548809, 0.01104205114, 0.0139288644, 0.01247441309, 0.007127675556, 0.0009298370812, -0.001829329973, -0.0004926986346, -0.001290382847, -0.001533427374, -0.000426009673, 0.002026914899, 0.004831855958, 0.006510409503, 0.005998181189, 0.003420986136, 0.0003126434026, -0.001042502943, -0.000241579101, -0.0006646142371, -0.0008864110522, -0.000522540032, 0.0004722857031, 0.001695451617, 0.002498205923, 0.002379926524, 0.001349188806, 5.170490287e-05, -0.0004970883464, -9.434934994e-05, -0.0002703361475, -0.0003917160444, -0.0003105960361, 6.614310016e-06, 0.0004313722813, 0.000736591389, 0.0007346404414, 0.000411324883, -1.726046648e-05, -0.0001905630072, -2.680669821e-05, -7.975468264e-05, -0.0001237967997, -0.0001176334718, -4.744790859e-05, 5.814707256e-05, 0.0001420488021, 0.0001534039817, 8.355448033e-05, -1.610533148e-05, -5.343149652e-05, -4.262872608e-06, -1.317446976e-05, -2.178325842e-05, -2.366395623e-05, -1.592339722e-05, -1.780757659e-06, 1.096995205e-05, 1.471970969e-05, 7.362398796e-06, -4.628824149e-06, -8.428700767e-06, -0.0003196345825, -0.0005491602195, -4.420644074e-05, 0.001677068774, 0.004627769947, 0.007988843742, 0.01000450135, 0.008714133733, 0.003623122184, -0.002590835523, -0.004398319472, -0.000439288785, -0.0008433726809, -0.0003316461397, 0.001836300625, 0.005808425866, 0.01064988607, 0.01416111641, 0.01368955308, 0.008141857626, 0.0002286407359, -0.003513205016, -0.0004326969064, -0.0009333805399, -0.0007233874422, 0.0008921528996, 0.004106633202, 0.008190616147, 0.01133153106, 0.01128068905, 0.007001657995, 0.0005751065378, -0.002657191594, -0.0003335522058, -0.0007858047181, -0.0008218277649, 5.996991719e-05, 0.002028620818, 0.004639058756, 0.006728549851, 0.00682914596, 0.004227124212, 0.0002140956921, -0.001774432295, -0.0002104144685, -0.0005279248986, -0.0006465234253, -0.0002655246717, 0.0007315096934, 0.002118491489, 0.003271774969, 0.003392173197, 0.002074949316, -6.185624458e-06, -0.001005734161, -0.0001092319184, -0.0002876395163, -0.0003893507636, -0.0002641123818, 0.0001534241879, 0.0007684123984, 0.001301011896, 0.001386844258, 0.0008341565713, -6.342482166e-05, -0.0004774478702, -4.516803105e-05, -0.0001240015452, -0.0001810210676, -0.0001560350856, -1.974927265e-05, 0.0001971196294, 0.0003944597625, 0.0004390147895, 0.0002574579703, -4.871563613e-05, -0.0001823611564, -1.357247914e-05, -3.876415008e-05, -6.037553359e-05, -6.08599144e-05, -3.058893676e-05, 2.384513571e-05, 7.6846757e-05, 9.312886239e-05, 5.207943827e-05, -2.151376195e-05, -5.095077691e-05, -2.278941453e-06, -6.777500225e-06, -1.121758959e-05, -1.274962751e-05, -9.583457423e-06, -2.325633557e-06, 5.516554517e-06, 8.804223533e-06, 4.267115521e-06, -4.928847632e-06, -8.005343201e-06 +-0.000332406675, -0.0009751414679, -0.001011325471, 0.00108303197, 0.006354573024, 0.01414496246, 0.02155870137, 0.02414496474, 0.01788009288, 0.003158003625, -0.008088545279, -0.0004228284638, -0.001333515417, -0.00170531222, 0.0003821410305, 0.006508745883, 0.01632591269, 0.0266401318, 0.03193311942, 0.02660943827, 0.009891837894, -0.005394668765, -0.0003893208294, -0.001318292995, -0.002033083352, -0.0009423762749, 0.003425356039, 0.01107661426, 0.01965947857, 0.02470867841, 0.02136901927, 0.00848174129, -0.003901388198, -0.0002808430928, -0.001005284547, -0.001752118178, -0.001500740791, 0.0007914979483, 0.005308045005, 0.01072136847, 0.01423961239, 0.01262986959, 0.004891331195, -0.002684957159, -0.0001658160762, -0.0006179878797, -0.001163699492, -0.001259525423, -0.0003006089289, 0.001900889012, 0.004729031473, 0.006732582414, 0.006128348482, 0.002258750871, -0.001576070467, -8.063434211e-05, -0.000309902587, -0.0006156404184, -0.0007567105896, -0.0004435816409, 0.0004455091174, 0.001676016175, 0.002618783685, 0.002455503175, 0.0008422490177, -0.0007713025575, -3.127235825e-05, -0.0001233880456, -0.0002557888453, -0.0003430295368, -0.0002746454663, 6.839749098e-06, 0.0004328558328, 0.0007861406334, 0.0007668009792, 0.0002339538592, -0.0003031109467, -8.826644306e-06, -3.570742307e-05, -7.690879937e-05, -0.0001106079136, -0.0001062313091, -4.479602684e-05, 6.059049262e-05, 0.000156259558, 0.000162818494, 3.873178304e-05, -8.726800847e-05, -1.394138483e-06, -5.787555166e-06, -1.294200917e-05, -1.980976667e-05, -2.1685802e-05, -1.51250928e-05, -1.136466793e-06, 1.31506817e-05, 1.618315884e-05, 1.168733738e-06, -1.42006883e-05, -0.0001036313013, -0.0003153157545, -0.0004126006321, 0.0001205000102, 0.002006507005, 0.005711108611, 0.01056057453, 0.01391211912, 0.01148885884, 0.001127604191, -0.008005536767, -0.0001410328392, -0.0004524158732, -0.0006621241967, -9.435486086e-05, 0.00223251727, 0.007043195616, 0.0136999121, 0.01907968483, 0.01777234372, 0.006339332434, -0.005807751173, -0.0001378435203, -0.0004704185682, -0.0007938080293, -0.000543537641, 0.001133468381, 0.004920899052, 0.01041011122, 0.01511764382, 0.01454462819, 0.005616446238, -0.004289800734, -0.0001056624185, -0.0003788780062, -0.0007054335704, -0.000720048938, 0.0001525850414, 0.002405187769, 0.005845772812, 0.008932209965, 0.008755207352, 0.003245513982, -0.002904526167, -6.639894632e-05, -0.0002468996939, -0.0004896878735, -0.0005968206007, -0.0002440047602, 0.000861909237, 0.002654252444, 0.004332501487, 0.004327249968, 0.001488532326, -0.001673919072, -3.437113185e-05, -0.0001314852752, -0.0002726636864, -0.0003679897768, -0.0002641965162, 0.0001839265272, 0.0009629686583, 0.001725426381, 0.001763264689, 0.0005444704303, -0.0008066439465, -1.417601938e-05, -5.559678902e-05, -0.0001195497072, -0.0001734005669, -0.0001588999505, -1.81533723e-05, 0.0002508998385, 0.0005282837273, 0.0005583014377, 0.0001437108265, -0.0003127703327, -4.247982583e-06, -1.706808637e-05, -3.794401822e-05, -5.838467352e-05, -6.227748151e-05, -3.268450615e-05, 3.328946692e-05, 0.0001062333226, 0.0001194778658, 1.983134952e-05, -8.892718743e-05, -7.109442177e-07, -2.930206376e-06, -6.735699715e-06, -1.093618079e-05, -1.305622226e-05, -1.029974137e-05, -1.758426815e-06, 8.762700387e-06, 1.174619874e-05, -7.877723272e-07, -1.429114974e-05 +-9.573144147e-05, -0.0004193987586, -0.0008874204343, -0.0009222384053, 0.0005899383351, 0.004906653823, 0.01253055361, 0.02168069672, 0.02592343965, 0.01470154691, -0.006718605375, -0.000119182369, -0.0005425621065, -0.001220383624, -0.001496252596, 1.535739201e-05, 0.005021183573, 0.01446817599, 0.02660943827, 0.03397909979, 0.02349575137, -0.001666883827, -0.0001079254225, -0.0005115791315, -0.001233868867, -0.00180054378, -0.001085742141, 0.002410553775, 0.009697381766, 0.01964745624, 0.02634825762, 0.01895339641, -0.0007176117448, -7.686549691e-05, -0.0003767524364, -0.0009594794226, -0.00156848079, -0.001497098699, 0.000272339201, 0.004531796804, 0.01075474221, 0.01527808394, 0.01109357876, -0.0008206071416, -4.495501999e-05, -0.0002260353957, -0.0005983764135, -0.001049881085, -0.001212231479, -0.0005148758468, 0.00153834558, 0.004766063683, 0.00727564042, 0.005302058477, -0.0006900594921, -2.17022937e-05, -0.0001113416768, -0.0003034513204, -0.0005589176745, -0.0007178212346, -0.0005146547716, 0.0003029461894, 0.001696984897, 0.00285115865, 0.002080241431, -0.0004255420333, -8.364115454e-06, -4.367811268e-05, -0.0001220047854, -0.0002335356076, -0.0003229973719, -0.0002917320665, -3.819575833e-05, 0.0004402321068, 0.0008633302375, 0.0006291035303, -0.0001995032275, -2.346509237e-06, -1.246634874e-05, -3.563705758e-05, -7.059996163e-05, -0.0001036876487, -0.0001083519618, -5.500824789e-05, 6.194201633e-05, 0.0001738907321, 0.0001259398364, -6.711078364e-05, -3.682533313e-07, -1.992187764e-06, -5.831179943e-06, -1.194536208e-05, -1.851511546e-05, -2.158957014e-05, -1.636416048e-05, -1.126570534e-06, 1.515105522e-05, 1.068706349e-05, -1.270865963e-05, -2.905262831e-05, -0.0001380988818, -0.000344535128, -0.0004956131234, -5.989779894e-05, 0.001987925967, 0.006796054729, 0.01411467366, 0.01900863273, 0.01080192366, -0.007611802676, -3.890384449e-05, -0.0001890485356, -0.0004852210787, -0.0007489552665, -0.0003173462395, 0.002129003274, 0.008159779044, 0.01778681444, 0.02546414123, 0.01830003941, -0.003100015592, -3.753362749e-05, -0.0001880859778, -0.0005071291456, -0.0008800966145, -0.0007836933603, 0.0008865767082, 0.005522447818, 0.01333070536, 0.01997659391, 0.0149283658, -0.001877634612, -2.847592633e-05, -0.0001463971686, -0.0004104333245, -0.0007725321398, -0.0009154056356, -0.000120663826, 0.002567865214, 0.007401633633, 0.01171233043, 0.008773457375, -0.001502630222, -1.77505325e-05, -9.299649422e-05, -0.0002677872265, -0.0005300567539, -0.0007192575844, -0.0004449457049, 0.0008379171059, 0.003323757749, 0.005638469025, 0.004202398189, -0.001018832025, -9.127237647e-06, -4.852870816e-05, -0.0001424961044, -0.0002918269254, -0.0004286048872, -0.0003750121263, 0.0001279388357, 0.001193432959, 0.002229958508, 0.001647718428, -0.0005571258415, -3.741497216e-06, -2.015698103e-05, -6.017555007e-05, -0.0001266016808, -0.0001966822581, -0.000205455505, -5.41382689e-05, 0.0003081693632, 0.0006790709751, 0.0004948028187, -0.0002411957946, -1.114368204e-06, -6.083887898e-06, -1.845737697e-05, -3.979450246e-05, -6.475095387e-05, -7.614433299e-05, -4.649684091e-05, 4.073345998e-05, 0.0001364149187, 9.667116899e-05, -7.644734189e-05, -1.852919823e-07, -1.026578244e-06, -3.168931561e-06, -7.00315716e-06, -1.188864592e-05, -1.532571722e-05, -1.30435833e-05, -2.017055732e-06, 1.146756318e-05, 7.399052492e-06, -1.380453085e-05 +-1.976281487e-05, -0.000119929093, -0.0003832317689, -0.0008193276355, -0.001184576568, -0.000740606229, 0.001961864464, 0.00880360968, 0.01944650149, 0.02479784472, 0.01200569583, -2.41636591e-05, -0.0001498393743, -0.0004910437387, -0.001086366199, -0.001671934291, -0.00136192865, 0.001660550464, 0.009891837894, 0.02349575137, 0.03230169181, 0.01894189611, -2.157285826e-05, -0.0001370104018, -0.0004636476867, -0.001077337876, -0.00182128211, -0.002019958297, -0.0001747726612, 0.005913673255, 0.01679240411, 0.02477770546, 0.01546958561, -1.51959815e-05, -9.853332103e-05, -0.0003427302948, -0.0008290247177, -0.001501974056, -0.001969962858, -0.001274182347, 0.002091133007, 0.008739029065, 0.014170093, 0.009269111611, -8.814446886e-06, -5.810388986e-05, -0.0002064144178, -0.0005141192066, -0.000975399129, -0.001403490265, -0.001288489574, 0.0002223894141, 0.003591394987, 0.00663714058, 0.00457052095, -4.228198699e-06, -2.825019022e-05, -0.0001020603328, -0.0002599601627, -0.0005098159877, -0.0007783998722, -0.0008397601999, -0.0002928267357, 0.001127670534, 0.002547498897, 0.001867767062, -1.620566333e-06, -1.095995703e-05, -4.018747145e-05, -0.0001043462284, -0.0002102637114, -0.0003357718436, -0.0004010398187, -0.0002552688171, 0.000219010407, 0.0007485325543, 0.0005990304751, -4.52176023e-07, -3.094993405e-06, -1.151330776e-05, -3.044287345e-05, -6.288356728e-05, -0.0001043688862, -0.0001346378767, -0.0001125350289, -6.900924322e-07, 0.0001426219445, 0.0001327264159, -7.054494777e-08, -4.890572217e-07, -1.846924846e-06, -4.975286507e-06, -1.05325287e-05, -1.812654831e-05, -2.496375626e-05, -2.480700587e-05, -1.102285939e-05, 1.047560949e-05, 1.445443851e-05, -6.294720089e-06, -4.339846478e-05, -0.0001648983392, -0.0004348211352, -0.000819086322, -0.0009119433482, 0.0005010665138, 0.005548985328, 0.01489762049, 0.02074136497, 0.01020373633, -8.24785923e-06, -5.713853778e-05, -0.0002179637437, -0.0005793094034, -0.001113968774, -0.001338258044, 0.0002456231312, 0.006362574438, 0.01832049119, 0.02752447735, 0.01674280098, -7.81877121e-06, -5.482721266e-05, -0.0002125436378, -0.0005806128242, -0.001181183719, -0.001671938736, -0.0008540754457, 0.003586544332, 0.01306187944, 0.0211768986, 0.01376219692, -5.846614997e-06, -4.143030057e-05, -0.0001628460099, -0.000455112021, -0.0009672305076, -0.00152275495, -0.00137925936, 0.0009948730236, 0.006716564564, 0.01210330506, 0.008257678788, -3.60140989e-06, -2.57079602e-05, -0.0001019878945, -0.0002893732362, -0.0006325919265, -0.001059786331, -0.001187281677, -0.0001710278609, 0.002694728905, 0.005657245287, 0.004074931592, -1.833143152e-06, -1.315671913e-05, -5.2533706e-05, -0.0001506203341, -0.0003356709453, -0.0005854183767, -0.0007340161974, -0.0003929497448, 0.0008012009728, 0.00216127672, 0.001665575678, -7.445226858e-07, -5.370044831e-06, -2.156184434e-05, -6.235365998e-05, -0.0001411081033, -0.0002537120655, -0.0003430243538, -0.0002656238753, 0.0001274185119, 0.0006280902136, 0.0005333980672, -2.197559377e-07, -1.593728528e-06, -6.43714209e-06, -1.877384749e-05, -4.309381387e-05, -7.956706732e-05, -0.0001141411126, -0.0001083557871, -1.766414735e-05, 0.0001161438671, 0.0001175004506, -3.620122712e-08, -2.643286359e-07, -1.075362355e-06, -3.166445643e-06, -7.376669711e-06, -1.397399547e-05, -2.111271192e-05, -2.307371212e-05, -1.235250468e-05, 7.441673776e-06, 1.255415275e-05 +-2.222299042e-06, -1.802829985e-05, -8.015777195e-05, -0.0002583218576, -0.0006745130783, -0.001508347292, -0.002905820877, -0.004210478968, -0.0008900905512, 0.01698653011, 0.03648664073, -2.675833738e-06, -2.197584977e-05, -9.881310912e-05, -0.0003216351645, -0.0008468199082, -0.001904990318, -0.003684116049, -0.005394668765, -0.001666883827, 0.01894189611, 0.04113576191, -2.359938365e-06, -1.965691172e-05, -8.975918005e-05, -0.0002971990861, -0.0007975937008, -0.001833831015, -0.003647140898, -0.005667803783, -0.003360485929, 0.01323575416, 0.03215326678, -1.646564656e-06, -1.389173375e-05, -6.434117527e-05, -0.0002164470058, -0.0005913101098, -0.001387195399, -0.002828544334, -0.004609542448, -0.003688472531, 0.006863597665, 0.01974053837, -9.482776047e-07, -8.085892435e-06, -3.78894451e-05, -0.0001291045341, -0.0003576875717, -0.0008521317759, -0.001769100305, -0.002974181345, -0.002764399029, 0.002844352405, 0.01010382211, -4.523654549e-07, -3.892219134e-06, -1.841768109e-05, -6.342572492e-05, -0.0001777425638, -0.00042863447, -0.0009020415089, -0.001549637406, -0.001574981705, 0.0009192726193, 0.004314438523, -1.725424724e-07, -1.496976173e-06, -7.147233295e-06, -2.485073088e-05, -7.035553183e-05, -0.0001714860019, -0.0003650482479, -0.0006380324541, -0.0006916386788, 0.0001965378411, 0.001466910001, -4.791028474e-08, -4.191314332e-07, -2.018914006e-06, -7.086069478e-06, -2.026086929e-05, -4.989019491e-05, -0.0001073515779, -0.0001905999994, -0.0002181327276, 1.036167609e-05, 0.0003565289464, -7.434097988e-09, -6.561211257e-08, -3.190106157e-07, -1.130723353e-06, -3.266178707e-06, -8.126833666e-06, -1.767964163e-05, -3.189415114e-05, -3.841940244e-05, -6.176226639e-06, 4.657718875e-05, -7.880176972e-07, -7.492766014e-06, -3.984665526e-05, -0.0001544353903, -0.0004822038704, -0.001269968773, -0.002815879638, -0.00465082798, -0.002229170375, 0.01498411312, 0.0350670937, -1.007425228e-06, -9.541121773e-06, -5.049137236e-05, -0.0001947649894, -0.0006054439798, -0.001587537896, -0.003504992707, -0.00579127343, -0.003074832618, 0.01676440731, 0.03957703924, -9.359966288e-07, -8.879025262e-06, -4.708653371e-05, -0.000182316122, -0.000570223623, -0.001509086994, -0.003383739993, -0.005818871214, -0.004305791536, 0.01163650865, 0.03097047196, -6.880906446e-07, -6.537168478e-06, -3.473873715e-05, -0.0001350018398, -0.000424761033, -0.001134174384, -0.002579814216, -0.004589255546, -0.00415739277, 0.005956258999, 0.01904023815, -4.177949735e-07, -3.970075921e-06, -2.110737595e-05, -8.216766176e-05, -0.0002594244786, -0.0006966291802, -0.001599456039, -0.002908473102, -0.002949166624, 0.002418055429, 0.009759656429, -2.100172184e-07, -1.994717321e-06, -1.060038831e-05, -4.128354159e-05, -0.0001305764513, -0.0003518432544, -0.0008127094632, -0.001499538065, -0.001631835261, 0.0007526577983, 0.004173512182, -8.432183762e-08, -8.005332641e-07, -4.251804209e-06, -1.656009308e-05, -5.24395436e-05, -0.0001416538494, -0.000328681884, -0.0006132878902, -0.0007034156671, 0.0001450168384, 0.001420933846, -2.461217878e-08, -2.33700624e-07, -1.241110679e-06, -4.835712645e-06, -1.53323267e-05, -4.151652022e-05, -9.673509008e-05, -0.0001823568421, -0.0002189075307, -8.607444217e-07, 0.0003457718236, -4.008381956e-09, -3.810704066e-08, -2.025450211e-07, -7.900870681e-07, -2.509860689e-06, -6.815969219e-06, -1.595577921e-05, -3.04076495e-05, -3.815963272e-05, -7.448094456e-06, 4.521222757e-05 +0.05660027343, -0.0003811500849, -0.01527372599, -0.01087202567, -0.00564499889, -0.002523158545, -0.0009855264694, -0.0003276379667, -8.773544867e-05, -1.698292481e-05, -1.802707789e-06, 0.09877938118, 0.02250081472, -0.009465127253, -0.01012802391, -0.005842296384, -0.002763511045, -0.001127395713, -0.0003893208294, -0.0001079254225, -2.157285826e-05, -2.359938365e-06, 0.100712708, 0.03043039617, -0.005404698126, -0.008705592555, -0.005370665158, -0.002614518797, -0.001087231219, -0.0003814183378, -0.0001072263892, -2.171007594e-05, -2.403566558e-06, 0.07751806815, 0.02717984388, -0.002644851926, -0.006515534394, -0.004213306589, -0.002084986813, -0.0008749994291, -0.000309195052, -8.749890661e-05, -1.782831804e-05, -1.986048645e-06, 0.04848744104, 0.01907330267, -0.0009622037208, -0.004156571003, -0.002799338022, -0.001402536994, -0.0005919642395, -0.0002100699975, -5.96875906e-05, -1.221146502e-05, -1.366080559e-06, 0.02474793452, 0.01073429245, -0.0001967871372, -0.002227386407, -0.001556325358, -0.000787907056, -0.0003338398955, -0.0001187761177, -3.383562421e-05, -6.942169993e-06, -7.790454077e-07, 0.009925432289, 0.004691535452, 1.964543672e-05, -0.0009625137618, -0.0006949782077, -0.0003550310699, -0.0001508294547, -5.374108642e-05, -1.533378046e-05, -3.152431133e-06, -3.54620145e-07, 0.002834271758, 0.001442754226, 2.311856847e-05, -0.000306667507, -0.0002270782073, -0.0001168161831, -4.969215584e-05, -1.771017426e-05, -5.056247479e-06, -1.040735306e-06, -1.172762961e-07, 0.000437627409, 0.0002353761483, 1.731024467e-06, -5.630352464e-05, -4.201367963e-05, -2.165962149e-05, -9.200991984e-06, -3.273294006e-06, -9.335109673e-07, -1.921084031e-07, -2.166078726e-08, 0.01138491919, -0.01564907599, -0.01328288604, -0.006399293101, -0.00259220106, -0.0009633177643, -0.0003306380877, -0.0001025203086, -2.728169822e-05, -5.576071104e-06, -6.569000624e-07, 0.03087823923, -0.00912629722, -0.01368800216, -0.007426477514, -0.003169231631, -0.001220560262, -0.0004321521356, -0.0001377509213, -3.753119877e-05, -7.822211907e-06, -9.367122632e-07, 0.03405329753, -0.004540598659, -0.01222398041, -0.007223954882, -0.003200064334, -0.001261113965, -0.0004545723729, -0.0001469490782, -4.042953841e-05, -8.473150325e-06, -1.017082277e-06, 0.02713790289, -0.00159690915, -0.009200794609, -0.005848015471, -0.002675806385, -0.001074077824, -0.0003921822057, -0.0001279410602, -3.538041599e-05, -7.42444383e-06, -8.897923516e-07, 0.01743504774, -6.346373536e-05, -0.005825427621, -0.003971298277, -0.001875022661, -0.0007654225332, -0.0002825198277, -9.281472679e-05, -2.575201058e-05, -5.403165907e-06, -6.457854322e-07, 0.009098939294, 0.0003763181203, -0.003076612673, -0.002243698472, -0.001092444602, -0.0004531274976, -0.0001688416604, -5.578406147e-05, -1.551286366e-05, -3.2521127e-06, -3.874644752e-07, 0.003708144622, 0.0002828048838, -0.001307755472, -0.001014728362, -0.000508935115, -0.0002143299046, -8.053931971e-05, -2.673381811e-05, -7.44571539e-06, -1.558945894e-06, -1.851141221e-07, 0.001063244416, 9.975945204e-05, -0.0004116376558, -0.0003354465762, -0.0001727923751, -7.378748209e-05, -2.79294171e-05, -9.303852717e-06, -2.593051007e-06, -5.419507639e-07, -6.411921006e-08, 0.0001605834321, 1.121706526e-05, -7.567334497e-05, -6.294472382e-05, -3.305784089e-05, -1.427042767e-05, -5.429194822e-06, -1.811681745e-06, -5.045112142e-07, -1.051319036e-07, -1.238241987e-08 +0.01711420031, 0.02248796354, 0.007188428187, -0.003174408777, -0.005780785993, -0.004658822287, -0.002743149517, -0.001266274613, -0.0004506035672, -0.0001131933957, -1.542923499e-05, 0.03095621923, 0.04806639395, 0.02698792992, 0.007372771691, -0.001372995249, -0.00326365331, -0.002499038125, -0.001318292995, -0.0005115791315, -0.0001370104018, -1.965691172e-05, 0.03043039617, 0.05124200556, 0.03175119997, 0.0108696528, 0.0005397253183, -0.002401603405, -0.00217984095, -0.001226721664, -0.0004940068237, -0.0001357479647, -1.986726558e-05, 0.02229693501, 0.04022983805, 0.02631883208, 0.009628464467, 0.0009352952508, -0.001723333765, -0.001690138246, -0.0009766817068, -0.0003994032055, -0.0001109876014, -1.639399081e-05, 0.0132442198, 0.02547220963, 0.01740898622, 0.006594949156, 0.0007335246929, -0.001117145563, -0.001128839502, -0.0006596246022, -0.0002717406985, -7.59736015e-05, -1.128466776e-05, 0.006355033399, 0.01305198114, 0.009283980167, 0.003589577216, 0.0003905407037, -0.000633555408, -0.0006380496455, -0.0003734216535, -0.0001542386729, -4.325793127e-05, -6.447753016e-06, 0.002322402489, 0.005174958023, 0.00383346606, 0.001496382258, 0.0001361906693, -0.0002992688779, -0.0002925102681, -0.0001701615158, -7.020841051e-05, -1.970889441e-05, -2.943526795e-06, 0.0005556888556, 0.001411674564, 0.001095417784, 0.0004247198956, 1.964601051e-05, -0.0001074482359, -9.920556489e-05, -5.687334923e-05, -2.334259044e-05, -6.542492905e-06, -9.774635394e-07, 5.425955212e-05, 0.0001901350684, 0.0001573274648, 5.780596816e-05, -4.733005084e-06, -2.295278609e-05, -1.934113109e-05, -1.078446507e-05, -4.373192131e-06, -1.218776433e-06, -1.816539175e-07, -0.004899241944, 0.004711983986, 0.001035630927, -0.00205745267, -0.002328927255, -0.001591497297, -0.000865490165, -0.0003954929584, -0.0001483098254, -4.129898559e-05, -6.459374573e-06, -0.003794776057, 0.01394261517, 0.008453310016, 0.001285993681, -0.001300528208, -0.00143506038, -0.0009322645035, -0.0004703928063, -0.0001882130192, -5.488540899e-05, -8.889470696e-06, -0.004550534938, 0.01511454668, 0.01070977548, 0.002739483879, -0.0006948982846, -0.001256603661, -0.0009057541822, -0.0004789933108, -0.0001965653939, -5.814325601e-05, -9.495431581e-06, -0.00484983577, 0.01148758571, 0.009182723242, 0.002723894829, -0.0003685815903, -0.0009939128758, -0.0007568901769, -0.0004093201465, -0.0001696395362, -5.034675197e-05, -8.222153339e-06, -0.004035505083, 0.00682642438, 0.006160055779, 0.001988998884, -0.0001978679248, -0.0006868614003, -0.0005385722424, -0.0002946098611, -0.0001225584225, -3.63537768e-05, -5.920781231e-06, -0.002679871323, 0.00313537366, 0.003262989616, 0.00111544377, -0.0001160448282, -0.0004068522874, -0.0003220510464, -0.0001768815286, -7.358146825e-05, -2.176668354e-05, -3.530515204e-06, -0.001411293882, 0.001008487705, 0.001296437706, 0.0004597937176, -7.033289264e-05, -0.0001981003952, -0.0001554628185, -8.517928782e-05, -3.532239731e-05, -1.040297381e-05, -1.67877665e-06, -0.0005503251366, 0.0001575391347, 0.0003325968248, 0.0001183076137, -3.654524069e-05, -7.262644738e-05, -5.533190262e-05, -3.000750892e-05, -1.235627722e-05, -3.615277889e-06, -5.797137533e-07, -0.000124828476, -1.565628917e-05, 3.332070237e-05, 9.93110534e-06, -1.171402048e-05, -1.571749907e-05, -1.129351985e-05, -5.98746957e-06, -2.431878806e-06, -7.040344058e-07, -1.118874724e-07 +-0.001298069936, 0.01714526761, 0.01687916128, 0.007792907793, 7.280058193e-05, -0.003474429829, -0.003742089862, -0.002536409222, -0.001229418928, -0.0004075340679, -7.252742022e-05, -0.002406037616, 0.03210919908, 0.03828249825, 0.02569386609, 0.01139007538, 0.002176842328, -0.001607517431, -0.002033083352, -0.001233868867, -0.0004636476867, -8.975918005e-05, -0.005404698126, 0.03175119997, 0.04150366659, 0.02975474938, 0.01461206328, 0.004154658092, -0.0006391364444, -0.001666540145, -0.001136734832, -0.0004502617514, -9.003387865e-05, -0.007067727516, 0.02299775241, 0.03297102161, 0.02453433478, 0.01244301883, 0.003799131915, -0.0002987453637, -0.001273703646, -0.0009072591946, -0.0003665572167, -7.426707713e-05, -0.006466118424, 0.01319873896, 0.02108400702, 0.01621282396, 0.008364485615, 0.002599711071, -0.0001774164885, -0.0008558168726, -0.0006169392595, -0.0002511847462, -5.122325605e-05, -0.004520822889, 0.005907548083, 0.01088059212, 0.008660153768, 0.004514300323, 0.00138982399, -0.0001266427139, -0.0004927377637, -0.00035255509, -0.0001436164307, -2.936519391e-05, -0.002433954961, 0.001873654317, 0.004320749011, 0.003585684809, 0.00188005217, 0.000557736628, -8.470562819e-05, -0.0002323714811, -0.0001625489976, -6.587670738e-05, -1.346583723e-05, -0.0009434691756, 0.0003038459669, 0.001165102107, 0.001026304042, 0.0005380042996, 0.0001457075778, -4.337815567e-05, -8.193611004e-05, -5.513791204e-05, -2.208730133e-05, -4.498236182e-06, -0.0002065983898, -1.804362203e-05, 0.0001487520125, 0.0001465976149, 7.548557191e-05, 1.524237101e-05, -1.291146065e-05, -1.684632907e-05, -1.06616257e-05, -4.178150119e-06, -8.430386376e-07, -0.005860202166, 0.005616443328, 0.006008039967, 0.00237076419, -0.0001947709903, -0.00116886778, -0.001193405529, -0.0008426414994, -0.0004506287733, -0.0001709997558, -3.551367688e-05, -0.009773870629, 0.01095220402, 0.01430158239, 0.008557800465, 0.003225670447, 0.000326825598, -0.0007234464276, -0.0007950067742, -0.0005080503394, -0.0002129161923, -4.715813636e-05, -0.0122434742, 0.01069329851, 0.01632369542, 0.01066974466, 0.004596095082, 0.001009194514, -0.0004616417431, -0.0007284830641, -0.0005058552728, -0.000219641996, -4.957345489e-05, -0.01188130748, 0.007363006608, 0.01362099165, 0.009450906496, 0.004276751791, 0.001064226789, -0.0003110833205, -0.0005982154338, -0.000428204924, -0.0001877498687, -4.251921616e-05, -0.009270222046, 0.003755792617, 0.00907394833, 0.006660453693, 0.003105790967, 0.0008019117636, -0.0002074522349, -0.0004257017545, -0.0003068119048, -0.0001345185819, -3.040250749e-05, -0.005875721682, 0.001250805686, 0.004822343349, 0.003763236628, 0.001792698183, 0.000460004796, -0.0001316026879, -0.00025749399, -0.0001839820592, -8.018527451e-05, -1.803090802e-05, -0.00295015611, 7.860171036e-05, 0.00193723812, 0.001632092531, 0.0007898338223, 0.0001925670066, -7.400372773e-05, -0.0001269614295, -8.876211229e-05, -3.826558033e-05, -8.540236088e-06, -0.001080255586, -0.0001795975023, 0.0005090029622, 0.0004816995208, 0.0002350234089, 4.933223943e-05, -3.303017278e-05, -4.667277039e-05, -3.144466059e-05, -1.332625746e-05, -2.942843939e-06, -0.0002244697729, -8.465731188e-05, 5.545773574e-05, 6.82504164e-05, 3.276758026e-05, 3.48353951e-06, -9.017154622e-06, -9.99012855e-06, -6.343119255e-06, -2.615519413e-06, -5.6833536e-07 +-0.003411558709, 0.007034106777, 0.01401443147, 0.01291515684, 0.007119814026, 0.001128965625, -0.00241101545, -0.003175364921, -0.002270588519, -0.001033828041, -0.0002478167535, -0.006294577756, 0.01265333077, 0.02891738796, 0.03132552458, 0.0233103281, 0.01216954461, 0.003428789439, -0.0009423762749, -0.00180054378, -0.001077337876, -0.0002971990861, -0.008705592555, 0.0108696528, 0.02975474938, 0.03417835304, 0.02675853627, 0.01506976578, 0.005294071306, -2.807534863e-05, -0.001483331952, -0.001015397091, -0.0002958157901, -0.009005583966, 0.006154693076, 0.02240476334, 0.02713876244, 0.02185449696, 0.01262617821, 0.004635677142, 0.0001558266753, -0.001150282412, -0.0008224501418, -0.0002441714174, -0.007320695259, 0.002150228721, 0.01348046084, 0.01733447225, 0.01430226469, 0.008381305731, 0.003107322326, 0.0001025498136, -0.0007863086448, -0.0005656190623, -0.0001689740725, -0.004773457956, -1.479153735e-05, 0.006436898058, 0.008934413184, 0.007559057361, 0.004469467513, 0.001641332123, 1.453873653e-05, -0.0004608203572, -0.0003261790128, -9.734076612e-05, -0.002446975642, -0.0006236021874, 0.002272644518, 0.003539769869, 0.003088451406, 0.001836003965, 0.0006538905215, -2.943295625e-05, -0.0002212208813, -0.0001515281302, -4.491329709e-05, -0.0009096095643, -0.0004450082809, 0.000484918605, 0.0009478922237, 0.0008659824261, 0.0005152340046, 0.0001704793343, -2.856690941e-05, -7.940720284e-05, -5.171400584e-05, -1.512218924e-05, -0.0001907832232, -0.0001384352405, 2.368798862e-05, 0.0001177235042, 0.0001183465196, 6.952676614e-05, 1.816089276e-05, -1.09963224e-05, -1.661450311e-05, -1.003853786e-05, -2.865031746e-06, -0.003056561776, 0.001898255622, 0.00446554019, 0.003817809079, 0.001940912567, 0.0001971641984, -0.0008685632634, -0.001190680892, -0.0009617528188, -0.0005084579481, -0.000142583343, -0.005600257605, 0.003494084245, 0.009744919002, 0.009944633795, 0.007017969033, 0.003554260865, 0.0008880752587, -0.0005483211116, -0.0008834521151, -0.0005820829292, -0.0001826415727, -0.0072372217, 0.002722677187, 0.0106611221, 0.01169327639, 0.008733401658, 0.00480303218, 0.001601747137, -0.0002410033313, -0.0008011865073, -0.0005806674969, -0.0001891023631, -0.007189222642, 0.001044379979, 0.008526654182, 0.01001009687, 0.007723238359, 0.004362156076, 0.001534220921, -0.0001271189113, -0.0006567810989, -0.0004896093487, -0.0001608757553, -0.005751480861, -0.0002760083402, 0.005399667655, 0.006851879346, 0.00543713535, 0.003112990047, 0.001103887327, -8.701605186e-05, -0.0004675889914, -0.0003485856708, -0.00011438445, -0.00374225541, -0.0008225316064, 0.002672077867, 0.003755661162, 0.003068793218, 0.001770073886, 0.0006168732156, -6.908105763e-05, -0.0002831964909, -0.0002074446021, -6.756828844e-05, -0.001927941128, -0.0007410774443, 0.0009480293204, 0.001566911697, 0.001327665791, 0.0007679009208, 0.000255167172, -4.964908889e-05, -0.0001398963395, -9.924114963e-05, -3.192435895e-05, -0.0007225473722, -0.0003996343494, 0.0001830797249, 0.0004341709954, 0.0003888939415, 0.0002238919202, 6.617770429e-05, -2.695439251e-05, -5.154446263e-05, -3.482523059e-05, -1.099442506e-05, -0.0001528928429, -0.000112649007, -3.329003174e-06, 5.282565341e-05, 5.360444609e-05, 2.995357958e-05, 5.583909333e-06, -8.453324919e-06, -1.105395374e-05, -6.942681025e-06, -2.128428556e-06 +-0.00224486041, 0.001357488781, 0.007732024205, 0.01173414367, 0.01102085003, 0.006653851007, 0.00147040379, -0.002024997215, -0.002944064522, -0.002019570439, -0.0006885291942, -0.004088738521, 0.002320007169, 0.01535641998, 0.02570124608, 0.02769196454, 0.02163728519, 0.0119086742, 0.003425356039, -0.001085742141, -0.00182128211, -0.0007975937008, -0.005370665158, 0.0005397253183, 0.01461206328, 0.02675853627, 0.03024677157, 0.02472546368, 0.01455373376, 0.005109733066, -0.0003265200821, -0.001622379915, -0.0007874277135, -0.005364071914, -0.001500273426, 0.00982287621, 0.02027390597, 0.0239308484, 0.02009199803, 0.01211209201, 0.004418575003, -0.000141331219, -0.001302871519, -0.0006510291644, -0.004272299377, -0.002390641905, 0.005000789566, 0.01227227977, 0.01520362248, 0.01307310075, 0.007992718048, 0.00293133942, -0.0001204989022, -0.0009041543956, -0.0004526836187, -0.002752553032, -0.002151926943, 0.001774503133, 0.005904783809, 0.007778108345, 0.006859822096, 0.004234461435, 0.001530493175, -0.0001185854589, -0.0005313145209, -0.0002624679872, -0.001400488256, -0.001366391217, 0.0002592813544, 0.002109257224, 0.003046935529, 0.002774150618, 0.001724075764, 0.0005995761951, -9.136245827e-05, -0.0002534293855, -0.0001220705296, -0.0005177113178, -0.0006006857938, -0.0001318794641, 0.0004609649396, 0.0007989630008, 0.0007643186359, 0.0004765985801, 0.0001513156443, -4.906116119e-05, -8.957620094e-05, -4.151170217e-05, -0.0001079586383, -0.0001458431702, -7.711455016e-05, 2.599042756e-05, 9.370690752e-05, 0.0001002571348, 6.206159964e-05, 1.439990899e-05, -1.465789394e-05, -1.823896611e-05, -7.970183111e-06, -0.001302146946, 5.961475192e-05, 0.002126181859, 0.003269006252, 0.003107245279, 0.001947797812, 0.0003772370928, -0.0009382367172, -0.001481580949, -0.001172778988, -0.0004628583261, -0.002450556653, 5.117031822e-05, 0.004552951907, 0.007781512561, 0.008525055089, 0.006985555929, 0.004097302899, 0.001122847174, -0.0007919571072, -0.001185408347, -0.0005713524172, -0.003206000639, -0.0007050147159, 0.004588130889, 0.008730633965, 0.01003877782, 0.008571535909, 0.00536311682, 0.001893475073, -0.0004688025599, -0.001124075036, -0.0005830576027, -0.003223681638, -0.001420448516, 0.003232282797, 0.007121891833, 0.008555332336, 0.007469359472, 0.004758499251, 0.001750669658, -0.0003275593157, -0.0009327928918, -0.0004927702747, -0.002615288203, -0.001632866732, 0.001671167918, 0.004608107671, 0.00581983009, 0.005182865494, 0.003327484462, 0.001222872243, -0.000238441337, -0.0006622254542, -0.0003490036668, -0.00172795004, -0.001358802091, 0.0005427974078, 0.002344460373, 0.003164126903, 0.002881331923, 0.001855861212, 0.0006638558424, -0.0001644536653, -0.0003961246552, -0.0002057063524, -0.0009045949553, -0.0008504142363, 8.355743996e-07, 0.0008692230407, 0.001304152006, 0.00122441658, 0.0007887947202, 0.0002654832755, -9.759987189e-05, -0.0001917878236, -9.712934111e-05, -0.000344493856, -0.0003777306949, -0.0001119507326, 0.0001867540298, 0.0003530121794, 0.0003493744871, 0.0002240395555, 6.522149283e-05, -4.44755899e-05, -6.867095075e-05, -3.349704462e-05, -7.400165788e-05, -9.371005385e-05, -5.10784938e-05, 4.620585392e-06, 3.993683529e-05, 4.547257666e-05, 2.849470545e-05, 4.3852779e-06, -1.203654299e-05, -1.413871584e-05, -6.514870961e-06 +-0.001144473678, -0.0006311867943, 0.002721673132, 0.007343402199, 0.01041737447, 0.01001231402, 0.006322055972, 0.001402192318, -0.002215137261, -0.003077745991, -0.001647366973, -0.002052499547, -0.001181298665, 0.005384853031, 0.01539133323, 0.02359158545, 0.02553859047, 0.02037223604, 0.01107661426, 0.002410553775, -0.002019958297, -0.001833831015, -0.002614518797, -0.002401603405, 0.004154658092, 0.01506976578, 0.02472546368, 0.02794574725, 0.02326195764, 0.01352391076, 0.003863305307, -0.001511152077, -0.001793276893, -0.002552214633, -0.003096164253, 0.001680492117, 0.01049516176, 0.01879697905, 0.0221131943, 0.01889862652, 0.01124905029, 0.003351275213, -0.001178767573, -0.00148606575, -0.002001546085, -0.002878824937, -0.0001206948569, 0.005643193967, 0.01140769306, 0.01403908817, 0.01229147574, 0.007416405839, 0.002199036566, -0.0008460272194, -0.001039527526, -0.001275570451, -0.002068473464, -0.0008270230519, 0.002236750898, 0.005500537407, 0.007169490088, 0.006442936473, 0.003922003734, 0.001121798024, -0.0005302894219, -0.0006075237412, -0.0006436667349, -0.001148556041, -0.0007547352649, 0.0005133165688, 0.001968092405, 0.00279758417, 0.002599134331, 0.001590838872, 0.0004201974032, -0.0002746040028, -0.0002852840022, -0.0002363098569, -0.0004588699765, -0.0003974371941, -3.246896103e-05, 0.0004301874704, 0.0007268467743, 0.0007118298664, 0.000435995141, 9.519161436e-05, -0.0001069513019, -9.817712003e-05, -4.895660554e-05, -0.0001031567991, -0.0001087168392, -5.555099613e-05, 2.38631846e-05, 8.271338756e-05, 9.17270606e-05, 5.535059457e-05, 4.941510103e-06, -2.441990867e-05, -1.914909387e-05, -0.0005081984202, -0.0003762224338, 0.0006125401539, 0.001992176799, 0.003098787788, 0.003326601532, 0.002361737466, 0.0004741793232, -0.001398497808, -0.002114286394, -0.001275591413, -0.0009637783622, -0.0007412328947, 0.001350142776, 0.00458591739, 0.007644115355, 0.009147526637, 0.00817872328, 0.004904767928, 0.0008714115654, -0.001681480583, -0.001512301559, -0.001263160099, -0.001260883901, 0.001005441976, 0.004802451892, 0.008573318645, 0.01063821421, 0.009845513749, 0.006297417214, 0.001691624722, -0.001420603097, -0.001520777138, -0.001273704234, -0.001539233262, 0.00025894114, 0.003557233786, 0.006963960931, 0.008941484465, 0.008429484972, 0.0054830894, 0.00155515445, -0.001146249658, -0.001278506365, -0.001037829075, -0.001435723503, -0.0003080854723, 0.002002610392, 0.004487083182, 0.006002496849, 0.005756397078, 0.003767680646, 0.001055572598, -0.0008205481297, -0.0009035013446, -0.000689394937, -0.001059507313, -0.0005098803794, 0.000800007182, 0.00227513212, 0.003221700032, 0.003153402854, 0.002066865708, 0.0005467024162, -0.0005053001081, -0.000532331641, -0.0003630487458, -0.0006104689024, -0.0004214951438, 0.0001539135821, 0.0008417248776, 0.00130994569, 0.0013211472, 0.000864085213, 0.0002014015567, -0.0002557314668, -0.0002516863145, -0.0001391050342, -0.0002542621955, -0.0002215993346, -4.692719408e-05, 0.0001809608907, 0.0003484331401, 0.0003713589393, 0.0002409399154, 4.017470234e-05, -9.721100646e-05, -8.711058625e-05, -3.00568526e-05, -5.971307274e-05, -6.223616295e-05, -3.572689979e-05, 4.706070933e-06, 3.792588323e-05, 4.733081711e-05, 2.977454911e-05, -1.034176925e-06, -2.166484324e-05, -1.706502691e-05 +-0.0004942772669, -0.0008516398638, 0.0001243364313, 0.002957735619, 0.006769018234, 0.009599680344, 0.009578603409, 0.006191802486, 0.0008881534403, -0.003340643154, -0.003457344579, -0.0008741299939, -0.001521281855, 0.0003951462364, 0.006215280913, 0.01466512077, 0.02208188166, 0.0243928221, 0.01965947857, 0.009697381766, -0.0001747726612, -0.003647140898, -0.001087231219, -0.00217984095, -0.0006391364444, 0.005294071306, 0.01455373376, 0.02326195764, 0.02676641225, 0.02249826585, 0.01199497858, 0.0009242045354, -0.0035134511, -0.001041382098, -0.002334548085, -0.001621815561, 0.002790386965, 0.01028182905, 0.01775994171, 0.02125756234, 0.01835297768, 0.01002186874, 0.0008708831331, -0.002915730634, -0.0008053196052, -0.001955907777, -0.001876956677, 0.0007346008693, 0.005636453367, 0.01082341057, 0.01354834965, 0.01199050357, 0.006620316907, 0.0004976858377, -0.002052948685, -0.0005076243392, -0.001311988058, -0.001512429327, -0.0002952084819, 0.002308923946, 0.005241367939, 0.006947012564, 0.006315576989, 0.003500903504, 0.0001667209768, -0.001210771683, -0.0002537843226, -0.0006916904112, -0.0009058585965, -0.0004946236677, 0.000580623167, 0.001884436027, 0.002722590391, 0.002561377006, 0.001415966547, -2.810989379e-06, -0.0005750370282, -9.238058858e-05, -0.0002645739406, -0.0003836009413, -0.0003057518175, 1.853471896e-06, 0.0004145937332, 0.0007109097636, 0.0007060221239, 0.0003845426399, -3.867282063e-05, -0.0002007492428, -1.897604692e-05, -5.714904275e-05, -9.068364135e-05, -9.077787365e-05, -4.667889992e-05, 2.352556977e-05, 8.151271178e-05, 9.191166102e-05, 4.730975e-05, -1.795983748e-05, -3.99190741e-05, -0.000183540443, -0.0003229037931, -7.700060558e-05, 0.000773687734, 0.002170054429, 0.00362631018, 0.004241853513, 0.003129774752, 0.0002620999711, -0.002754375466, -0.00301433832, -0.0003484165501, -0.0006211077321, -8.243709901e-05, 0.001827227953, 0.00511480928, 0.008889848835, 0.01132287601, 0.01039303652, 0.00550120602, -0.0008715430321, -0.003391525183, -0.0004551142587, -0.0009069223926, -0.0004620027584, 0.001604311787, 0.005368866893, 0.009851110717, 0.0129591765, 0.01231709635, 0.007080108423, -0.0001316874159, -0.003348083153, -0.0004578544966, -0.001001344731, -0.0008106343315, 0.0008140009535, 0.003994248455, 0.007906944741, 0.01074111868, 0.01040785358, 0.00610016643, -9.879931837e-06, -0.00279990741, -0.0003726728623, -0.0008754121732, -0.0008964190957, 0.0001124902357, 0.002279917412, 0.005044215808, 0.007125856953, 0.007028750261, 0.004138713986, -6.18570977e-05, -0.001976572247, -0.000247461992, -0.0006164160164, -0.0007335202448, -0.000246870188, 0.0009475097008, 0.002539531009, 0.003788936893, 0.003816227563, 0.00223918926, -0.0001123408849, -0.00116613293, -0.0001302980652, -0.0003419641936, -0.0004550977364, -0.0002901856815, 0.0002178518106, 0.00093744238, 0.00153129324, 0.001589386677, 0.000921659261, -0.0001072410689, -0.0005532994452, -4.99099386e-05, -0.0001377290475, -0.000201236219, -0.0001738951964, -2.626464304e-05, 0.0002039948377, 0.0004075824518, 0.0004466675992, 0.0002518436591, -6.40243748e-05, -0.0001927498568, -1.077569853e-05, -3.132199656e-05, -4.985514746e-05, -5.255921581e-05, -3.190095734e-05, 7.133389452e-06, 4.559469578e-05, 5.798597737e-05, 2.989378203e-05, -2.041053016e-05, -3.818930448e-05 +-0.000178891702, -0.0005355381892, -0.0006246458194, 0.0002834740994, 0.002660623015, 0.006135041908, 0.00926830231, 0.009922742806, 0.006247250982, -0.001269444049, -0.006013556169, -0.0003126236695, -0.0009403890198, -0.00104182057, 0.0008558831252, 0.00586859374, 0.01355252933, 0.02127467655, 0.02470867841, 0.01964745624, 0.005913673255, -0.005667803783, -0.0003814183378, -0.001226721664, -0.001666540145, -2.807534863e-05, 0.005109733066, 0.01352391076, 0.02249826585, 0.02719894132, 0.0225960155, 0.007924052701, -0.005244011235, -0.0003595817061, -0.001225840799, -0.001929294052, -0.001037242753, 0.002792032228, 0.009594528711, 0.01726918736, 0.0217522628, 0.01855596105, 0.006653829785, -0.004334539965, -0.0002746931413, -0.0009795350471, -0.0016985473, -0.001433122325, 0.0008345055362, 0.005279788304, 0.01058822382, 0.01397930665, 0.01220813207, 0.004330840172, -0.003076123896, -0.0001714308057, -0.0006342565296, -0.001180516963, -0.001240375064, -0.0001856754553, 0.002170070882, 0.005163408235, 0.007238603235, 0.006478322262, 0.002219069336, -0.001839647501, -8.495161241e-05, -0.000324784777, -0.0006403798534, -0.0007747575197, -0.0004212890574, 0.0005467392445, 0.001873249369, 0.00287291358, 0.002650202934, 0.0008467960217, -0.0008902858273, -3.066154909e-05, -0.0001210014442, -0.0002512206723, -0.0003381282267, -0.0002733343138, 8.540697953e-07, 0.0004186068428, 0.0007650417749, 0.0007391783669, 0.0002028289383, -0.0003186684594, -6.242639576e-06, -2.546834882e-05, -5.56108804e-05, -8.194568552e-05, -8.3069261e-05, -4.471497364e-05, 2.567203362e-05, 9.194179723e-05, 9.844976547e-05, 1.558606862e-05, -6.559854575e-05, -6.000552456e-05, -0.0001846267243, -0.0002576071515, -1.960028029e-05, 0.0008705979884, 0.002592781146, 0.004735302384, 0.005923420516, 0.004060658885, -0.001633443966, -0.005741649624, -0.0001134349388, -0.0003495213538, -0.0004607970906, 0.000115891645, 0.002139669765, 0.006085001314, 0.01128014858, 0.01510708582, 0.01330913471, 0.003561018927, -0.005834785355, -0.0001470437472, -0.0004790615401, -0.0007275542737, -0.000237214408, 0.001901516195, 0.006308409842, 0.01232598699, 0.0170628214, 0.0156447339, 0.005161517643, -0.00554603102, -0.0001469948149, -0.0005033312801, -0.000854144577, -0.0006255194658, 0.001003940457, 0.004633585907, 0.009780253015, 0.0140161584, 0.01311763153, 0.004438982373, -0.004595394002, -0.0001190557673, -0.0004242172991, -0.0007779001053, -0.0007700631286, 0.000205240574, 0.002617214474, 0.006184071981, 0.009240188935, 0.008798439162, 0.002921106041, -0.003244805576, -7.872202242e-05, -0.0002901179554, -0.0005643357896, -0.0006613336784, -0.0002132733985, 0.001081507602, 0.003097187646, 0.004898322538, 0.004751410175, 0.001496964747, -0.001924835702, -4.128316409e-05, -0.0001569125027, -0.0003207505675, -0.0004219601898, -0.0002828033837, 0.0002518205286, 0.001145172254, 0.001984467431, 0.001973215821, 0.0005608888126, -0.0009225263409, -1.574565136e-05, -6.170536883e-05, -0.0001320368351, -0.0001902347466, -0.0001739694838, -2.467753262e-05, 0.0002549894944, 0.0005362711343, 0.0005560694936, 0.0001247162938, -0.000326595318, -3.382665248e-06, -1.369744891e-05, -3.068655947e-05, -4.787491284e-05, -5.308072065e-05, -3.371009229e-05, 1.240382817e-05, 6.409037481e-05, 7.376701395e-05, 4.933509498e-06, -6.638260941e-05 +-5.161426249e-05, -0.0002285940303, -0.0005003977344, -0.0005948410051, 2.1408052e-05, 0.001950012693, 0.005418576125, 0.009500711563, 0.01086214339, 0.004205423117, -0.006453338584, -8.928744346e-05, -0.0003966400454, -0.0008552390821, -0.0009273533675, 0.0004649327871, 0.004596807657, 0.012084934, 0.02136901927, 0.02634825762, 0.01679240411, -0.003360485929, -0.0001072263892, -0.0004940068237, -0.001136734832, -0.001483331952, -0.0003265200821, 0.003863305307, 0.01199497858, 0.0225960155, 0.02901742001, 0.01966557106, -0.002112468099, -9.975113065e-05, -0.0004752692898, -0.001158122142, -0.001731061445, -0.001176965423, 0.001884769208, 0.0084130682, 0.01739093835, 0.02329252237, 0.01613750942, -0.001639377971, -7.540867104e-05, -0.000369219761, -0.0009397428664, -0.001534861604, -0.001457731045, 0.0003016998203, 0.00453455739, 0.01069476575, 0.0150303683, 0.01054052624, -0.001261824408, -4.665255981e-05, -0.000233789343, -0.0006163300201, -0.001073458689, -0.001215031678, -0.0004371015891, 0.001783435999, 0.005229591788, 0.007815544668, 0.005520531633, -0.0008657964097, -2.293643363e-05, -0.0001174186673, -0.0003192518025, -0.0005857079557, -0.0007448679256, -0.0005108741091, 0.0003878764971, 0.001901097739, 0.003116390004, 0.002209390832, -0.0004918419558, -8.21401459e-06, -4.294900431e-05, -0.0001202629553, -0.0002310822601, -0.0003214759694, -0.0002937265716, -4.587659388e-05, 0.0004248782905, 0.0008352648333, 0.0005913922398, -0.000210073758, -1.658356811e-06, -8.870098198e-06, -2.560362826e-05, -5.145149201e-05, -7.73262269e-05, -8.470443569e-05, -5.212094678e-05, 2.569193899e-05, 0.0001018690312, 7.0765635e-05, -5.261156008e-05, -1.686775384e-05, -8.032749097e-05, -0.0002035280959, -0.0003141067006, -0.0001527330058, 0.0007770741055, 0.003010303596, 0.006327887942, 0.008052639685, 0.002756026238, -0.006685792922, -3.157626823e-05, -0.0001494398738, -0.0003680523829, -0.0005196456677, -5.201925814e-05, 0.002073185623, 0.007009058196, 0.01454619362, 0.01996487617, 0.01303524275, -0.004331093216, -4.043291164e-05, -0.0001964547671, -0.0005050440927, -0.0007982820494, -0.0004618748935, 0.001703693492, 0.007095501548, 0.01565715406, 0.02229297295, 0.0155650304, -0.003238672834, -3.99987071e-05, -0.0001992652226, -0.0005330799537, -0.0009236356441, -0.0008597350699, 0.0007053126929, 0.005048548707, 0.01226454133, 0.01813138955, 0.01290569156, -0.002552525686, -3.211543268e-05, -0.0001633115408, -0.0004504997789, -0.0008311816246, -0.0009590561689, -8.810929806e-05, 0.00273159596, 0.007662935111, 0.01184146926, 0.008491269776, -0.001853384575, -2.107291503e-05, -0.0001090852834, -0.0003085627328, -0.0005965681961, -0.0007816102372, -0.0004268069098, 0.00104808266, 0.003795015152, 0.006221953831, 0.004466790085, -0.001175997537, -1.097080662e-05, -5.775504228e-05, -0.0001670965149, -0.0003358050158, -0.0004810897348, -0.0004000040134, 0.0001897018716, 0.00138827998, 0.002500559226, 0.001787297546, -0.000618729934, -4.153391003e-06, -2.224772266e-05, -6.581938497e-05, -0.0001370385787, -0.0002108689263, -0.0002193346428, -6.242581561e-05, 0.0003060577177, 0.0006716964194, 0.0004731704674, -0.0002465598965, -8.850656075e-07, -4.83401035e-06, -1.465087155e-05, -3.160645651e-05, -5.181778511e-05, -6.275159938e-05, -4.449012487e-05, 1.485078655e-05, 8.045987967e-05, 5.365917358e-05, -5.810892813e-05 +-1.068124365e-05, -6.525324808e-05, -0.0002116389742, -0.0004666221766, -0.0007266837526, -0.0006448280707, 0.0004839494915, 0.003566786999, 0.008269406359, 0.009781146141, 0.002903276476, -1.83171363e-05, -0.0001121483885, -0.0003616777344, -0.0007809529487, -0.001142965089, -0.0007380980325, 0.001848892289, 0.00848174129, 0.01895339641, 0.02477770546, 0.01323575416, -2.171007594e-05, -0.0001357479647, -0.0004502617514, -0.001015397091, -0.001622379915, -0.001511152077, 0.0009242045354, 0.007924052701, 0.01966557106, 0.02727456694, 0.01593614737, -1.997139511e-05, -0.0001274280498, -0.000434285672, -0.001020202402, -0.001757590933, -0.002042225141, -0.0004984036126, 0.004911045074, 0.01467269998, 0.02174472, 0.01340953007, -1.49634e-05, -9.711966066e-05, -0.0003384520123, -0.0008209078655, -0.001492383436, -0.001965388047, -0.001280938745, 0.002064401121, 0.00863740414, 0.01389718209, 0.009006086792, -9.187789583e-06, -6.05360929e-05, -0.0002150351757, -0.0005354917674, -0.00101460127, -0.001451959341, -0.001300778301, 0.0003468567263, 0.003950161922, 0.007133709917, 0.004881779449, -4.48586837e-06, -2.997730542e-05, -0.0001083774919, -0.0002763011759, -0.000542094206, -0.0008263025258, -0.0008830334242, -0.0002774728446, 0.001267583296, 0.002791585044, 0.002049413325, -1.595248367e-06, -1.081382791e-05, -3.978380567e-05, -0.0001037446531, -0.000210173592, -0.0003379166293, -0.0004079040795, -0.0002692704577, 0.0001965080982, 0.0007238987705, 0.000593844831, -3.195748289e-07, -2.200259448e-06, -8.246848455e-06, -2.201558808e-05, -4.604500637e-05, -7.777428511e-05, -0.0001034088497, -9.375980681e-05, -2.052589378e-05, 8.087028183e-05, 8.543763487e-05, -3.644717506e-06, -2.502422227e-05, -9.515831678e-05, -0.0002538436125, -0.0004962809249, -0.000635860914, -8.488906842e-05, 0.002173615803, 0.006272556002, 0.007997815561, 0.002124051514, -6.723124971e-06, -4.567900119e-05, -0.0001703597532, -0.0004404150624, -0.0008119055305, -0.0008705635303, 0.0005847893099, 0.005628054935, 0.01493433233, 0.02116516753, 0.01161178138, -8.46990208e-06, -5.808873182e-05, -0.0002192973854, -0.00057932964, -0.001120308917, -0.001412324459, -0.0001171131937, 0.005181411141, 0.0155824346, 0.02348685062, 0.01419208576, -8.261671857e-06, -5.722714052e-05, -0.0002189094717, -0.0005913670516, -0.001196687541, -0.001711521987, -0.001013974721, 0.003027733406, 0.01162327318, 0.01880083286, 0.01202019667, -6.554223695e-06, -4.577668358e-05, -0.0001769610877, -0.0004863428565, -0.001017297277, -0.001576789262, -0.001398154863, 0.001052622694, 0.006803667236, 0.01204421214, 0.008109231518, -4.254873878e-06, -2.993589871e-05, -0.0001167618973, -0.0003254113754, -0.0006983267814, -0.001145352758, -0.001237652596, -6.869161114e-05, 0.003061234114, 0.006184594722, 0.004409566288, -2.192920236e-06, -1.554141627e-05, -6.113599123e-05, -0.0001725473991, -0.0003784688566, -0.0006489908543, -0.0007953044369, -0.0003917697432, 0.0009372670995, 0.00241176823, 0.001854043066, -8.218846843e-07, -5.872063601e-06, -2.331194715e-05, -6.664020359e-05, -0.0001492268044, -0.0002660277513, -0.0003580070341, -0.0002803692723, 0.0001139603586, 0.0006171675068, 0.0005363660618, -1.732692319e-07, -1.25025807e-06, -5.018248764e-06, -1.4552814e-05, -3.329965118e-05, -6.161477452e-05, -8.965756483e-05, -9.002353892e-05, -3.000681037e-05, 6.521670282e-05, 7.634730296e-05 +-1.204614654e-06, -9.818051801e-06, -4.400325952e-05, -0.0001435009873, -0.0003809129679, -0.0008708037465, -0.001731704533, -0.002692048006, -0.001470344812, 0.007146156671, 0.0171618741, -2.050363656e-06, -1.674020679e-05, -7.486934837e-05, -0.0002425068128, -0.0006355786285, -0.001422981608, -0.002730733078, -0.003901388198, -0.0007176117448, 0.01546958561, 0.03215326678, -2.403566558e-06, -1.986726558e-05, -9.003387865e-05, -0.0002958157901, -0.0007874277135, -0.001793276893, -0.0035134511, -0.005244011235, -0.002112468099, 0.01593614737, 0.03499467212, -2.190235724e-06, -1.832762915e-05, -8.418824574e-05, -0.0002808006752, -0.0007601000266, -0.001763990747, -0.003537583448, -0.005531721807, -0.003415727705, 0.01193201331, 0.0288775314, -1.628562714e-06, -1.37751205e-05, -6.40272805e-05, -0.0002163485875, -0.0005940620372, -0.001400503069, -0.002861539024, -0.004631141406, -0.003558576645, 0.007111552678, 0.01942162411, -9.935000334e-07, -8.485792877e-06, -3.986274056e-05, -0.0001362614504, -0.0003788689884, -0.0009053131906, -0.001878515678, -0.003122151329, -0.002750711883, 0.003340604786, 0.01068290154, -4.821350264e-07, -4.156760837e-06, -1.97248116e-05, -6.816238183e-05, -0.0001917421459, -0.0004638526744, -0.0009757900644, -0.00165880221, -0.001615390203, 0.001139183002, 0.004624699393, -1.703820446e-07, -1.483041731e-06, -7.109581608e-06, -2.483742815e-05, -7.067754943e-05, -0.0001730494271, -0.0003688808152, -0.0006404897296, -0.0006779233229, 0.0002184279178, 0.001424356519, -3.388822381e-08, -2.980549701e-07, -1.444685037e-06, -5.106064352e-06, -1.470751646e-05, -3.646631465e-05, -7.881398002e-05, -0.0001398762507, -0.00015993944, 1.680349496e-07, 0.0002354168555, -4.534377459e-07, -4.281878655e-06, -2.267778039e-05, -8.785658797e-05, -0.0002753839859, -0.0007318575866, -0.0016518428, -0.002861406979, -0.002081252312, 0.006194260966, 0.01647595979, -8.218502392e-07, -7.669420497e-06, -4.002386389e-05, -0.0001524493302, -0.0004685745798, -0.001215752809, -0.00265185724, -0.004279449504, -0.001862976616, 0.01377151212, 0.03096425503, -1.016382592e-06, -9.485363704e-06, -4.950526835e-05, -0.0001887960901, -0.0005820083071, -0.001517828498, -0.00334105561, -0.005532011709, -0.003217468683, 0.01420999862, 0.03376312295, -9.753669836e-07, -9.113310227e-06, -4.763430187e-05, -0.0001821799888, -0.0005643550621, -0.001482882963, -0.003304842625, -0.00564562367, -0.004194558806, 0.01061153537, 0.02790836973, -7.629203335e-07, -7.134132224e-06, -3.732492614e-05, -0.0001430413627, -0.0004447466841, -0.001175414594, -0.002644844836, -0.004626194787, -0.003995723295, 0.006290363959, 0.01879991986, -4.890047615e-07, -4.576037779e-06, -2.395795056e-05, -9.195372115e-05, -0.0002867194194, -0.0007612303351, -0.001725799312, -0.003074575507, -0.002944313338, 0.002924352303, 0.01035661864, -2.49012666e-07, -2.332673341e-06, -1.222366334e-05, -4.698682815e-05, -0.0001468914996, -0.000391571132, -0.0008935579695, -0.001617124018, -0.001677931048, 0.0009742553533, 0.004489774695, -9.221530346e-08, -8.654169442e-07, -4.542019722e-06, -1.749437436e-05, -5.485219552e-05, -0.000146834637, -0.0003372616067, -0.000619690416, -0.0006895912245, 0.0001725511938, 0.001384516588, -1.919589647e-08, -1.807181649e-07, -9.511289974e-07, -3.674844906e-06, -1.156701981e-05, -3.112040738e-05, -7.20134071e-05, -0.0001345215916, -0.0001601710943, -6.487706175e-06, 0.0002290371933 +0.02451953845, -0.0007600220208, -0.007712045591, -0.005485789735, -0.00284011615, -0.001262697785, -0.0004904824241, -0.000162241137, -4.325110471e-05, -8.339062174e-06, -8.821046707e-07, 0.05743312531, 0.01133454923, -0.008375165988, -0.007928394398, -0.004443360253, -0.002058984672, -0.0008254641523, -0.0002808430928, -7.686549691e-05, -1.51959815e-05, -1.646564656e-06, 0.07751806815, 0.02229693501, -0.007067727516, -0.009005583966, -0.005364071914, -0.002552214633, -0.001041382098, -0.0003595817061, -9.975113065e-05, -1.997139511e-05, -2.190235724e-06, 0.07779488066, 0.02731921909, -0.00458246941, -0.008378083983, -0.005269277871, -0.002559116405, -0.001056780733, -0.0003684011918, -0.0001030873209, -2.080958553e-05, -2.300328409e-06, 0.06231950851, 0.02525931165, -0.002153591056, -0.006528006913, -0.004323560892, -0.002137255344, -0.0008905822865, -0.0003125732621, -8.800518444e-05, -1.787105084e-05, -1.987129756e-06, 0.04028500361, 0.01834821569, -0.0005535385951, -0.004234763236, -0.00294963054, -0.001481900914, -0.0006220402901, -0.0002194348278, -6.206871649e-05, -1.266229255e-05, -1.414542619e-06, 0.02038168831, 0.01026169985, 9.943074767e-05, -0.002208660554, -0.001614853342, -0.0008237441376, -0.0003479274168, -0.0001232215547, -3.497967469e-05, -7.162500173e-06, -8.032663369e-07, 0.007353367309, 0.004032420841, 0.000143872151, -0.0008533934557, -0.0006502925527, -0.0003361041321, -0.0001426427612, -5.065333218e-05, -1.441540091e-05, -2.9600012e-06, -3.33005436e-07, 0.001441441804, 0.0008412797484, 3.100761071e-05, -0.0001942845668, -0.0001506877255, -7.839239626e-05, -3.331050458e-05, -1.182875926e-05, -3.367519409e-06, -6.921924425e-07, -7.800502641e-08, 0.005171163573, -0.007451742568, -0.00664291423, -0.00329297397, -0.001353463815, -0.0005069535634, -0.0001747258484, -5.41874422e-05, -1.435550135e-05, -2.908443129e-06, -3.386883214e-07, 0.0180657581, -0.007212659896, -0.01023235198, -0.005656114802, -0.002439304647, -0.0009423337813, -0.0003331600432, -0.0001055936691, -2.847298165e-05, -5.848732254e-06, -6.885548087e-07, 0.0271538159, -0.004830363247, -0.01186060752, -0.007176432448, -0.00321807581, -0.001271781686, -0.0004573445894, -0.0001469042924, -3.999455212e-05, -8.264397947e-06, -9.759745363e-07, 0.02899470289, -0.001681808705, -0.01103066716, -0.007280005029, -0.003387460004, -0.001365960625, -0.0004980241505, -0.0001615890086, -4.428025392e-05, -9.178736916e-06, -1.084500739e-06, 0.02430595294, 0.000676963268, -0.008482016095, -0.00610575388, -0.002946896152, -0.001211127212, -0.0004469025728, -0.0001461932172, -4.025605727e-05, -8.359184751e-06, -9.870140997e-07, 0.01628513745, 0.001576185003, -0.005384488724, -0.004228189406, -0.002116609776, -0.0008861359884, -0.0003305673998, -0.0001088941254, -3.0100624e-05, -6.256707559e-06, -7.378792468e-07, 0.008465345812, 0.001296575344, -0.002739848294, -0.0023396228, -0.001213943457, -0.0005174927, -0.0001950094684, -6.463182792e-05, -1.792158898e-05, -3.727212435e-06, -4.389231427e-07, 0.003097410927, 0.0005945198506, -0.001039780285, -0.0009513272526, -0.0005099094012, -0.0002210485741, -8.405337466e-05, -2.799840424e-05, -7.781235684e-06, -1.618198205e-06, -1.902104712e-07, 0.0005990920717, 0.0001128860506, -0.0002386557111, -0.0002237935902, -0.000122609002, -5.382253204e-05, -2.05945445e-05, -6.878669979e-06, -1.912196768e-06, -3.969825274e-07, -4.651537168e-08 +0.007953393335, 0.009352809858, 0.002248995637, -0.002296371634, -0.003209736898, -0.002449501854, -0.001406431007, -0.0006393479575, -0.000225092443, -5.609182305e-05, -7.597763874e-06, 0.01989965622, 0.0276126788, 0.01383253532, 0.002070266239, -0.002568527442, -0.003004041845, -0.002020555424, -0.001005284547, -0.0003767524364, -9.853332103e-05, -1.389173375e-05, 0.02717984388, 0.04022983805, 0.02299775241, 0.006154693076, -0.001500273426, -0.003096164253, -0.002334548085, -0.001225840799, -0.0004752692898, -0.0001274280498, -1.832762915e-05, 0.02731921909, 0.04237625978, 0.02599166278, 0.008204376734, -0.0005119992114, -0.002732453705, -0.002242707985, -0.001220267505, -0.0004834164753, -0.0001316599363, -1.917770266e-05, 0.02179648582, 0.03521905241, 0.02272541912, 0.007788579219, 6.530473574e-05, -0.002095355239, -0.001826315065, -0.001017531785, -0.0004089344003, -0.0001125704455, -1.654343239e-05, 0.01390184768, 0.02340200932, 0.01575928347, 0.00567711352, 0.0002245936723, -0.001383413752, -0.001251341806, -0.0007075858501, -0.0002870739835, -7.961690897e-05, -1.177739115e-05, 0.006792149601, 0.01200098005, 0.00841501287, 0.003128153097, 0.0001467234237, -0.000759035022, -0.0006957896593, -0.0003962044733, -0.0001616273189, -4.505042166e-05, -6.69650976e-06, 0.002243787841, 0.004254172164, 0.003111911553, 0.001169619285, 2.788766258e-05, -0.0003206189773, -0.0002884488705, -0.0001637654654, -6.684850761e-05, -1.867253641e-05, -2.783813624e-06, 0.000342843356, 0.0007501999555, 0.0005767661988, 0.0002072777358, -1.876491025e-05, -8.384759419e-05, -7.023238979e-05, -3.904630397e-05, -1.58052792e-05, -4.40047694e-06, -6.556655887e-07, -0.002002302786, 0.001614837715, -3.968806386e-05, -0.001332990066, -0.001329347867, -0.0008807099189, -0.0004716258479, -0.0002126460473, -7.858444854e-05, -2.15419581e-05, -3.317279423e-06, -0.001676921092, 0.007378820616, 0.003876162152, -0.0002729578251, -0.001527749593, -0.001306507954, -0.000784981919, -0.0003788435822, -0.0001464796064, -4.146905016e-05, -6.544153605e-06, -0.001595442379, 0.01149691731, 0.007382488637, 0.001061496991, -0.00141059482, -0.001535151378, -0.001000241038, -0.0005032623497, -0.0001993642092, -5.727604184e-05, -9.122301008e-06, -0.001692142612, 0.01226758411, 0.008867213036, 0.001994875736, -0.00108934499, -0.001499692034, -0.001039112009, -0.0005380999199, -0.0002164230983, -6.266377837e-05, -1.00174178e-05, -0.00174823552, 0.01002963256, 0.00800136725, 0.002169952123, -0.0007322078627, -0.001247600383, -0.0009048804232, -0.0004781698795, -0.0001942048214, -5.645967134e-05, -9.034083614e-06, -0.001609585543, 0.006349626507, 0.005600371504, 0.001692433063, -0.0004407978404, -0.0008791051478, -0.0006578144042, -0.0003523881702, -0.0001439835309, -4.193133196e-05, -6.705021946e-06, -0.001249574708, 0.002927641298, 0.002931753342, 0.0009475284501, -0.0002431088104, -0.0005079575138, -0.0003859364605, -0.0002082736257, -8.533478603e-05, -2.484760283e-05, -3.966058501e-06, -0.0007503612055, 0.0007910790214, 0.000998693802, 0.0003287236127, -0.0001218408704, -0.0002231434511, -0.0001681673306, -9.062309719e-05, -3.706739363e-05, -1.076395335e-05, -1.712309772e-06, -0.0002711487998, 2.488748654e-05, 0.0001339623676, 3.517084755e-05, -4.537160511e-05, -5.991930276e-05, -4.297240999e-05, -2.273427272e-05, -9.198713215e-06, -2.649128756e-06, -4.184730897e-07 +-0.0005302221505, 0.007434774765, 0.007051877878, 0.002767940713, -0.0006962819977, -0.002125767602, -0.002036342891, -0.001321179118, -0.0006254269887, -0.0002042077304, -3.595801842e-05, -0.0009462173353, 0.01930853782, 0.02217286203, 0.01378665724, 0.004976334012, -0.0002345506762, -0.00197471335, -0.001752118178, -0.0009594794226, -0.0003427302948, -6.434117527e-05, -0.002644851926, 0.02631883208, 0.03297102161, 0.02240476334, 0.00982287621, 0.001680492117, -0.001621815561, -0.001929294052, -0.001158122142, -0.000434285672, -8.418824574e-05, -0.00458246941, 0.02599166278, 0.03521271208, 0.02514442685, 0.01183912316, 0.00279307307, -0.001158375006, -0.001801660538, -0.001149330379, -0.0004441460966, -8.780803293e-05, -0.00557951182, 0.02004800554, 0.02957476294, 0.02195781962, 0.01074668873, 0.002842095932, -0.0007499594549, -0.001447318959, -0.0009596571796, -0.0003779916369, -7.569964343e-05, -0.005168070722, 0.01207005036, 0.01979184045, 0.01525405507, 0.007655759674, 0.002122308103, -0.0004534904059, -0.0009903408333, -0.0006704420521, -0.0002671015787, -5.394992628e-05, -0.003688599336, 0.005310197856, 0.01016482562, 0.00817121453, 0.004175138594, 0.001165578823, -0.0002563333401, -0.0005565060508, -0.0003783544676, -0.0001514830219, -3.075328005e-05, -0.001917062406, 0.001375776611, 0.003562672463, 0.003030298699, 0.001565221612, 0.0004167717066, -0.000128445103, -0.000236715278, -0.0001582880944, -6.31845229e-05, -1.284056637e-05, -0.0005771558267, 4.87298462e-05, 0.0005950415788, 0.0005603545425, 0.0002870185737, 6.030386481e-05, -4.515702267e-05, -6.05371448e-05, -3.846905216e-05, -1.509392618e-05, -3.047731209e-06, -0.002707239253, 0.002451201736, 0.002633043782, 0.0008893352161, -0.0003204083186, -0.0007357433307, -0.000685071573, -0.0004636279983, -0.0002407347513, -8.922256035e-05, -1.817354262e-05, -0.00594532704, 0.006692406804, 0.008683368264, 0.00485135208, 0.001411817408, -0.0003259130981, -0.0008218514003, -0.0007062646462, -0.0004110686339, -0.0001631011498, -3.47874385e-05, -0.009212935448, 0.009174197873, 0.01362536264, 0.008536692769, 0.003240288997, 0.0002624490933, -0.0008103912128, -0.0008550584134, -0.0005338429317, -0.0002192269613, -4.769622879e-05, -0.01104834506, 0.008852039007, 0.01526053486, 0.01027540022, 0.004308948555, 0.0007279846355, -0.0006845051893, -0.000861018054, -0.0005628413857, -0.0002356721392, -5.177551735e-05, -0.01071306752, 0.006394041104, 0.01333431321, 0.009545294807, 0.004237020177, 0.0008802614799, -0.0005117618067, -0.0007370658971, -0.0004957835822, -0.0002097859679, -4.628635203e-05, -0.008482849561, 0.003299247269, 0.009192542418, 0.007000652342, 0.003232826813, 0.0007303375337, -0.0003414572806, -0.0005328404723, -0.0003636321677, -0.0001545227126, -3.412103184e-05, -0.005365448545, 0.0009177337766, 0.004789726433, 0.003923144452, 0.001867665912, 0.000429090444, -0.0002003865634, -0.0003144766285, -0.0002147202685, -9.112399767e-05, -2.008103092e-05, -0.002513898617, -0.0001713568565, 0.001648218239, 0.001499003827, 0.0007292248709, 0.0001551020476, -9.832560719e-05, -0.0001399691645, -9.379724157e-05, -3.945397423e-05, -8.644321579e-06, -0.0006871970669, -0.0002352196688, 0.0002393620079, 0.0002736884044, 0.000132575247, 1.680550742e-05, -3.296529055e-05, -3.74351962e-05, -2.380268401e-05, -9.778989639e-06, -2.113796583e-06 +-0.001602263525, 0.003046192424, 0.006029805212, 0.005297567691, 0.002536882526, -0.0001509732372, -0.00160564047, -0.001761006779, -0.001188232684, -0.0005255123589, -0.0001237656894, -0.003828059614, 0.007752119459, 0.01726187789, 0.01798985944, 0.01255500631, 0.005678043385, 0.0006677780142, -0.001500740791, -0.00156848079, -0.0008290247177, -0.0002164470058, -0.006515534394, 0.009628464467, 0.02453433478, 0.02713876244, 0.02027390597, 0.01049516176, 0.002790386965, -0.001037242753, -0.001731061445, -0.001020202402, -0.0002808006752, -0.008378083983, 0.008204376734, 0.02514442685, 0.02918326912, 0.02261314821, 0.01233200569, 0.003863510273, -0.0005914587456, -0.001628587715, -0.001028329417, -0.0002920281405, -0.00854716041, 0.004929449086, 0.02019421134, 0.02463637642, 0.0196267426, 0.01101651391, 0.003683801565, -0.0003009886876, -0.001322772782, -0.0008699943111, -0.0002517894213, -0.007029561079, 0.001684840553, 0.01278140574, 0.0165658386, 0.01354478945, 0.007747097674, 0.00265953766, -0.0001643318627, -0.0009176153069, -0.0006148210591, -0.0001798278204, -0.004573992995, -0.0002844157031, 0.006047119621, 0.008545836008, 0.007195410461, 0.004170617495, 0.001431191468, -0.0001115784464, -0.000524030336, -0.0003505539437, -0.0001029044497, -0.002184949234, -0.0007736037133, 0.001813450284, 0.003001855621, 0.002632613031, 0.001537965188, 0.0005067721028, -7.837500749e-05, -0.0002271040347, -0.0001479848321, -4.32298823e-05, -0.0006024058476, -0.0003963604875, 0.0001795211839, 0.0004963659034, 0.000471412145, 0.0002734509339, 7.491991474e-05, -3.662838538e-05, -5.929295953e-05, -3.61939719e-05, -1.036543347e-05, -0.001472516012, 0.0008558606879, 0.002061437856, 0.001694064568, 0.0007437846522, -0.0001047426457, -0.0005863432408, -0.0006864866752, -0.0005217069081, -0.0002660750188, -7.278889497e-05, -0.003591278453, 0.002266545806, 0.006232795602, 0.006142009957, 0.004043694178, 0.001722704087, 5.686660742e-05, -0.0007235268177, -0.0007749124786, -0.00045613742, -0.0001352258725, -0.005857767651, 0.002712095312, 0.009445958298, 0.0100115222, 0.00712448601, 0.003557147648, 0.0008109956642, -0.0006293905859, -0.0009264508378, -0.0005926246214, -0.0001824617499, -0.007292214814, 0.001979052527, 0.01026714158, 0.01157250604, 0.008593951667, 0.004552383252, 0.001309390098, -0.0004723820971, -0.0009269544829, -0.0006237844402, -0.0001959505416, -0.007303537258, 0.0006199071322, 0.008672634233, 0.01043508009, 0.008006167541, 0.004377143517, 0.001370410589, -0.0003233797467, -0.0007914125768, -0.000547821771, -0.0001738096277, -0.005954346949, -0.0005788150157, 0.005706715792, 0.00744586725, 0.005891514561, 0.003285483848, 0.001061394702, -0.0002108330838, -0.00057223765, -0.0004002873966, -0.0001273898898, -0.003862203126, -0.001090672033, 0.002747928992, 0.004041800115, 0.003312001427, 0.001871091001, 0.0006011476521, -0.0001322055223, -0.00033862215, -0.0002353429034, -7.467847821e-05, -0.001843621286, -0.0008876602266, 0.0007887514709, 0.001471317606, 0.001266574335, 0.0007191441976, 0.0002162805484, -7.484950279e-05, -0.0001514428691, -0.000102249906, -3.209608948e-05, -0.0005080139347, -0.00035995625, 3.981503293e-05, 0.0002398502574, 0.0002288114653, 0.0001272518266, 2.731296644e-05, -2.951679918e-05, -4.072818237e-05, -2.571781876e-05, -7.866899283e-06 +-0.001064101851, 0.0005290701232, 0.003319844502, 0.00495801763, 0.004453954992, 0.00237727381, 5.725201521e-05, -0.001390677609, -0.001625994401, -0.001047545396, -0.0003465663282, -0.002559530046, 0.001408995775, 0.009251972029, 0.01513337149, 0.01578204326, 0.01168083116, 0.005685548809, 0.0007914979483, -0.001497098699, -0.001501974056, -0.0005913101098, -0.004213306589, 0.0009352952508, 0.01244301883, 0.02185449696, 0.0239308484, 0.01879697905, 0.01028182905, 0.002792032228, -0.001176965423, -0.001757590933, -0.0007601000266, -0.005269277871, -0.0005119992114, 0.01183912316, 0.02261314821, 0.02573547654, 0.02089112063, 0.01197064144, 0.003763916061, -0.0008261963171, -0.001726091479, -0.0007883274585, -0.005272475511, -0.001951505452, 0.008573470719, 0.01831461376, 0.02168100247, 0.0180580215, 0.01062500275, 0.003538431438, -0.0005532146227, -0.001445408422, -0.0006802199829, -0.004278307722, -0.002605022443, 0.004603900918, 0.01170113816, 0.01452203913, 0.01239751172, 0.007426206722, 0.00252426315, -0.000368221701, -0.001022894058, -0.0004873270358, -0.002755336589, -0.002287184533, 0.001547296833, 0.005606818301, 0.007441448219, 0.006536516019, 0.003967820797, 0.001339003519, -0.0002372179237, -0.0005901221091, -0.0002803185481, -0.001303381414, -0.001369213798, 5.482762374e-05, 0.001718724386, 0.002578924924, 0.002360144569, 0.001445514592, 0.0004624946845, -0.000133021274, -0.0002552955543, -0.0001186970228, -0.0003549942777, -0.0004571922647, -0.0001878244696, 0.0001837299517, 0.000409965219, 0.0004091389265, 0.0002497384199, 6.315799449e-05, -4.941343763e-05, -6.529598663e-05, -2.882434709e-05, -0.000640311327, 5.99117347e-06, 0.0009864783117, 0.00149380011, 0.00135201055, 0.000737853334, -3.563276288e-05, -0.0006367484289, -0.0008332466365, -0.0006188868044, -0.0002360608975, -0.001612604622, 4.433609959e-05, 0.002965742177, 0.004939265976, 0.005207439925, 0.00399830067, 0.002021144706, 0.0001445758715, -0.0009214116035, -0.0009702240382, -0.0004255456195, -0.002680409336, -0.0003763065521, 0.004270742334, 0.007720813808, 0.008554085393, 0.006960312321, 0.003987050955, 0.000995287971, -0.0008666698538, -0.00120029773, -0.0005653311569, -0.003393044288, -0.001099030115, 0.004301173266, 0.008591126225, 0.009897138324, 0.0082980712, 0.004971840685, 0.001512471073, -0.0007206314884, -0.001226970571, -0.0006011600331, -0.00345546511, -0.001726285231, 0.003238263449, 0.007428351887, 0.008911364381, 0.007642751893, 0.004684758871, 0.001528435888, -0.0005475463212, -0.001059634182, -0.0005296570469, -0.002865147493, -0.001916484722, 0.001740839094, 0.005025167733, 0.00633864535, 0.00555785667, 0.003453265184, 0.001149877224, -0.0003818178327, -0.000768585993, -0.0003864524563, -0.001889777246, -0.001585937143, 0.0005024436119, 0.002516990068, 0.003421078939, 0.003081775073, 0.001931138309, 0.0006321232741, -0.0002377243804, -0.0004525134054, -0.0002259836687, -0.0009162884171, -0.0009355099692, -0.0001025043873, 0.0007808746451, 0.001229654283, 0.001155535022, 0.0007261800723, 0.0002182539939, -0.0001229027413, -0.0001991126112, -9.713855941e-05, -0.0002557814676, -0.0003141855062, -0.0001437752098, 6.693074223e-05, 0.000191834799, 0.0001998530656, 0.0001235280768, 2.416870461e-05, -4.198642286e-05, -5.166205606e-05, -2.391768258e-05 +-0.0005420975171, -0.000339885749, 0.001123614091, 0.003111236907, 0.004354869803, 0.004026565966, 0.002275100872, 7.161760288e-05, -0.00144064374, -0.001650585765, -0.0008360551045, -0.001294759235, -0.0007617823711, 0.003223080467, 0.009153182312, 0.01379058138, 0.01453075018, 0.01104205114, 0.005308045005, 0.000272339201, -0.001969962858, -0.001387195399, -0.002084986813, -0.001723333765, 0.003799131915, 0.01262617821, 0.02009199803, 0.0221131943, 0.01775994171, 0.009594528711, 0.001884769208, -0.002042225141, -0.001763990747, -0.002559116405, -0.002732453705, 0.00279307307, 0.01233200569, 0.02089112063, 0.02381746122, 0.01974205307, 0.01117223844, 0.002702784663, -0.001867099601, -0.001823482382, -0.002524088404, -0.003233524876, 0.001083756953, 0.009245549518, 0.01697976225, 0.02007626587, 0.01706712849, 0.009915837784, 0.002577366976, -0.001517316046, -0.001574793121, -0.002025464632, -0.002982605361, -0.0003488556977, 0.005256716192, 0.01087973189, 0.01344161179, 0.01171391373, 0.006925708349, 0.001829140287, -0.001079124738, -0.001132401375, -0.001292614537, -0.002137639472, -0.0009648137981, 0.002022474042, 0.005225959399, 0.006873935705, 0.006167810694, 0.003692358154, 0.0009464644464, -0.0006453115324, -0.000655438581, -0.0006063911815, -0.001114488998, -0.000809862365, 0.0003004452022, 0.001604310546, 0.002368224314, 0.002217993754, 0.001337189688, 0.000304496492, -0.000299242551, -0.0002801967625, -0.000163699004, -0.0003340936052, -0.0003263074893, -0.000116840024, 0.0001704612921, 0.0003686368037, 0.0003793387457, 0.0002265703172, 2.883691709e-05, -8.558206674e-05, -6.908894302e-05, -0.0002529762245, -0.0001971425662, 0.0002697108451, 0.0009073370565, 0.001383670638, 0.001415950799, 0.000886402856, -3.626984755e-05, -0.0008859931973, -0.001138006468, -0.0006509209363, -0.0006440357703, -0.0004949120566, 0.000873752988, 0.002929102025, 0.004763430593, 0.005497402708, 0.004628690398, 0.002392434056, -0.0001319977528, -0.00152962684, -0.001136427571, -0.001075708853, -0.0009973609564, 0.001060931503, 0.004360629043, 0.007468450248, 0.008937800492, 0.007898023971, 0.004620626555, 0.0006926847993, -0.001719638794, -0.001485654276, -0.001367917777, -0.001503868439, 0.0007241549334, 0.004551465579, 0.008299476974, 0.01022623795, 0.009260555299, 0.005659725557, 0.001198393163, -0.001658179283, -0.001564739715, -0.001400189741, -0.001769186037, 0.0001065369055, 0.003605017359, 0.007161446659, 0.009108900526, 0.00840540849, 0.00524811798, 0.001234839794, -0.001389713165, -0.001370400342, -0.001167522157, -0.001658940903, -0.0004301155115, 0.002126171592, 0.004835944005, 0.006411315051, 0.006031356095, 0.003810947552, 0.0009148774337, -0.001001490604, -0.0009964360497, -0.0007746078388, -0.001222672165, -0.0006364992401, 0.0008064867651, 0.002420062792, 0.003422763346, 0.003302138893, 0.002100101727, 0.0004800247472, -0.0005989718116, -0.0005820301539, -0.0003777252932, -0.0006595933533, -0.0004965578069, 6.81515508e-05, 0.0007516171808, 0.001213931466, 0.001222146569, 0.0007773462905, 0.0001459487551, -0.0002749362313, -0.0002506739607, -0.0001059512117, -0.0002053897183, -0.0002006896114, -9.00342992e-05, 6.522361508e-05, 0.0001843679137, 0.0002078537485, 0.000129275984, 4.644582822e-06, -7.7218686e-05, -6.216324463e-05 +-0.0002336601993, -0.0004155475513, -7.953973357e-06, 0.001214507929, 0.002844136652, 0.004001345682, 0.003868625417, 0.002257462682, -0.0001350330573, -0.001932312091, -0.001770399283, -0.0005532780616, -0.0009678978179, 0.0001840330467, 0.003674859753, 0.008663801363, 0.01289175512, 0.0139288644, 0.01072136847, 0.004531796804, -0.001274182347, -0.002828544334, -0.0008749994291, -0.001690138246, -0.0002987453637, 0.004635677142, 0.01211209201, 0.01889862652, 0.02125756234, 0.01726918736, 0.0084130682, -0.0004984036126, -0.003537583448, -0.001056780733, -0.002242707985, -0.001158375006, 0.003863510273, 0.01197064144, 0.01974205307, 0.02297367966, 0.01925973893, 0.009896351822, 3.349678678e-05, -0.003632539193, -0.001028424524, -0.002360857861, -0.001849143414, 0.002147634503, 0.009097332138, 0.01611362827, 0.01943497409, 0.01671508691, 0.008830746242, 0.0002017688973, -0.003133997166, -0.0008159050058, -0.002002936656, -0.00199958137, 0.0004969177153, 0.005272764184, 0.01036759417, 0.01306170517, 0.01152180041, 0.006184678142, 0.0001211821593, -0.002260176603, -0.0005153991844, -0.001344435667, -0.001590740251, -0.000436737414, 0.002105431805, 0.005001458552, 0.006706538497, 0.00609563241, 0.003297314732, -1.783928183e-05, -0.001316665175, -0.0002394046548, -0.0006625908538, -0.0008979413603, -0.0005710705744, 0.0003694961813, 0.001542929627, 0.002320819944, 0.002204424473, 0.00118780295, -8.500431931e-05, -0.0005691610016, -6.395540077e-05, -0.0001884563308, -0.0002881894684, -0.0002656976832, -9.074686955e-05, 0.0001653397006, 0.0003634606226, 0.0003803091688, 0.000196453256, -5.65295105e-05, -0.0001430306449, -9.214251221e-05, -0.0001657329987, -5.604455901e-05, 0.0003347686894, 0.0009628346231, 0.001585030144, 0.001782873496, 0.001173398856, -0.0002055548987, -0.001561743165, -0.001542068514, -0.0002353615908, -0.0004205768626, -7.275947407e-05, 0.001147581857, 0.003192557684, 0.005439511395, 0.006719310341, 0.005831112075, 0.002551341558, -0.001392088133, -0.002585314606, -0.0003926250712, -0.0007579035842, -0.0003117391978, 0.001535157652, 0.004760645408, 0.008429801648, 0.01073551574, 0.009767115116, 0.005031176141, -0.001028704274, -0.003311517516, -0.0004985524059, -0.001040303537, -0.0006850783548, 0.001311413221, 0.004976798431, 0.009265498641, 0.01211037683, 0.01129091432, 0.006147113862, -0.0006726839724, -0.003446992893, -0.0005097490498, -0.001139726487, -0.0009908604966, 0.0006846356276, 0.003965293428, 0.00792015721, 0.01066042678, 0.01012949713, 0.005655596464, -0.0004394222696, -0.002998124266, -0.0004246779783, -0.0010102787, -0.001061034225, 3.263895373e-05, 0.002377184217, 0.005308679066, 0.007430997567, 0.007199440169, 0.004065571961, -0.0003173365113, -0.002172441208, -0.0002815091381, -0.0007100233812, -0.0008616250284, -0.0003421259012, 0.0009480814394, 0.002645005971, 0.003939223327, 0.003914177668, 0.002213748639, -0.000240503415, -0.001268615596, -0.0001370980605, -0.0003667745944, -0.0005031014811, -0.0003598123567, 0.0001279023407, 0.000823971715, 0.001394139323, 0.001445283198, 0.0008065702267, -0.0001592858507, -0.0005485776786, -3.837271221e-05, -0.0001094477449, -0.0001682747914, -0.0001648500907, -7.539847707e-05, 7.598895785e-05, 0.0002152905572, 0.0002490900211, 0.0001300022985, -6.713678143e-05, -0.0001375762088 +-8.445046896e-05, -0.0002563963545, -0.0003176250822, 5.746220407e-05, 0.001076545508, 0.002567636684, 0.003882599321, 0.004065021129, 0.002296240126, -0.00114824193, -0.003120846827, -0.0001984154438, -0.0005983785556, -0.0006831425888, 0.0004413598218, 0.003434228438, 0.007990537832, 0.01247441309, 0.01423961239, 0.01075474221, 0.002091133007, -0.004609542448, -0.000309195052, -0.0009766817068, -0.001273703646, 0.0001558266753, 0.004418575003, 0.01124905029, 0.01835297768, 0.0217522628, 0.01739093835, 0.004911045074, -0.005531721807, -0.0003684011918, -0.001220267505, -0.001801660538, -0.0005914587456, 0.003763916061, 0.01117223844, 0.01925973893, 0.02361627979, 0.0194958709, 0.00610573812, -0.005559192687, -0.0003543363194, -0.001224420112, -0.001992899691, -0.001296602264, 0.002176573062, 0.008525204905, 0.01580021302, 0.0201015149, 0.01701420849, 0.005521192593, -0.004752303304, -0.0002782002064, -0.0009987178056, -0.001758614481, -0.00156799432, 0.000601192783, 0.004958197757, 0.01022453053, 0.0136118881, 0.0117985726, 0.003830710123, -0.003426373949, -0.0001740245332, -0.0006477315869, -0.001220505176, -0.001325977491, -0.0003273300734, 0.001984197221, 0.004966805836, 0.007056993742, 0.00628512565, 0.001974468918, -0.002011842445, -8.003945266e-05, -0.0003090570795, -0.0006202624335, -0.0007804503393, -0.0005022718954, 0.0003462908056, 0.001548094962, 0.002478177516, 0.002293742923, 0.0006522432124, -0.0008857653984, -2.115170932e-05, -8.504662064e-05, -0.0001819297563, -0.0002589904101, -0.00024282842, -8.82935425e-05, 0.0001712943713, 0.0004015248836, 0.0004025994095, 7.718824833e-05, -0.0002305080828, -3.02621473e-05, -9.397547394e-05, -0.0001357443434, -3.459564549e-05, 0.0003622899424, 0.001124898847, 0.002047330182, 0.00248926253, 0.00150352002, -0.001196223577, -0.002960693028, -7.716233242e-05, -0.0002377497979, -0.0003184181749, 4.076980872e-05, 0.00130361126, 0.00372549602, 0.00682497605, 0.008920914122, 0.007383545723, 0.0009755687455, -0.004600605825, -0.0001280220018, -0.0004094219466, -0.0005977008578, -0.0001248329033, 0.001755288318, 0.00548840117, 0.01040954925, 0.01400928546, 0.01224763114, 0.003006562068, -0.00565912814, -0.0001616854817, -0.0005382089684, -0.0008602848284, -0.0004691152813, 0.001519572672, 0.005669537358, 0.01129889235, 0.01561996563, 0.01403476422, 0.003988977581, -0.005753835368, -0.0001644953552, -0.0005683013563, -0.0009806760303, -0.0007924563779, 0.0008351087252, 0.004470337719, 0.009562390685, 0.01363284372, 0.01249380685, 0.003721551747, -0.004938555937, -0.0001363923887, -0.0004878361662, -0.0008984034968, -0.0009125366914, 0.000117232857, 0.002658322457, 0.00636332564, 0.009449786455, 0.008822035228, 0.002623033894, -0.003557764495, -8.997067179e-05, -0.0003328855592, -0.0006498855866, -0.0007734826871, -0.0003070283285, 0.001057281115, 0.003161558591, 0.005002491864, 0.004774587002, 0.001351886126, -0.002080184034, -4.35779015e-05, -0.0001670456276, -0.0003450376738, -0.0004653628339, -0.0003509771474, 0.0001484066033, 0.0009935464719, 0.001784555314, 0.001762636161, 0.0004300553189, -0.0009091276488, -1.211666149e-05, -4.834722636e-05, -0.0001059438909, -0.0001594775986, -0.0001644310455, -7.813128829e-05, 0.000100802334, 0.0002881972512, 0.0003084346961, 3.712882546e-05, -0.0002339956876 +-2.435031059e-05, -0.0001086715529, -0.0002424168017, -0.0003062804632, -6.252301912e-05, 0.0007592088136, 0.002261976661, 0.004020474299, 0.004493045783, 0.00127443379, -0.003515216352, -5.682945811e-05, -0.0002529373876, -0.0005508692725, -0.0006244703773, 0.0001824184137, 0.002644759726, 0.007127675556, 0.01262986959, 0.01527808394, 0.008739029065, -0.003688472531, -8.749890661e-05, -0.0003994032055, -0.0009072591946, -0.001150282412, -0.000141331219, 0.003351275213, 0.01002186874, 0.01855596105, 0.02329252237, 0.01467269998, -0.003415727705, -0.0001030873209, -0.0004834164753, -0.001149330379, -0.001628587715, -0.0008261963171, 0.002702784663, 0.009896351822, 0.0194958709, 0.02531652129, 0.01661823053, -0.002881502346, -9.817116592e-05, -0.0004720375528, -0.001168928184, -0.001808928767, -0.001423541512, 0.001339529445, 0.007466448198, 0.0160218159, 0.02158868169, 0.01450722123, -0.002255462528, -7.638355397e-05, -0.0003759711624, -0.000965561387, -0.001604227678, -0.001599698838, 7.386308841e-05, 0.004245513536, 0.01038481522, 0.01464943182, 0.009995277674, -0.001617601915, -4.736574965e-05, -0.0002385333018, -0.0006338427387, -0.001119213502, -0.001306600416, -0.000581023349, 0.00160579729, 0.005049082907, 0.007612107784, 0.005248131106, -0.001019053204, -2.158790369e-05, -0.0001113438856, -0.0003061497577, -0.0005719326493, -0.0007536011789, -0.0005837581483, 0.0002018609062, 0.001571655516, 0.002681009254, 0.001857654595, -0.0005189128841, -5.646482622e-06, -2.992103162e-05, -8.537251311e-05, -0.0001687672483, -0.0002467174744, -0.00025410359, -0.0001182811903, 0.0001716247156, 0.0004373064203, 0.000298992028, -0.0001686552743, -8.504797041e-06, -4.05284957e-05, -0.000103296002, -0.0001642010517, -0.0001051824328, 0.0002979970265, 0.001281518191, 0.002724413486, 0.003361755285, 0.0007184768925, -0.003582129687, -2.153309327e-05, -0.0001015368978, -0.0002501120933, -0.0003604681201, -8.597977972e-05, 0.001214099387, 0.004228840313, 0.008751885869, 0.01169979311, 0.006695118921, -0.004175760268, -3.538476092e-05, -0.000169568246, -0.0004276496137, -0.0006548029111, -0.0003229800393, 0.001562661776, 0.0061085291, 0.01312150468, 0.01812375371, 0.01160203091, -0.004215599434, -4.428569699e-05, -0.0002163356691, -0.0005621419912, -0.0009243897136, -0.0007144487951, 0.001209222008, 0.006160960042, 0.01404594021, 0.01997717867, 0.01336117496, -0.003766346969, -4.468166429e-05, -0.0002223906746, -0.0005944467461, -0.001039100885, -0.001034669112, 0.0004670495382, 0.004716438571, 0.01173961543, 0.01725247149, 0.01179867392, -0.003012580781, -3.675693199e-05, -0.0001863001095, -0.0005112682837, -0.0009412058507, -0.001103751245, -0.0002171005569, 0.002687753359, 0.007720658911, 0.01183925906, 0.008195496007, -0.002132782962, -2.405593738e-05, -0.0001242005477, -0.000349726356, -0.0006743034459, -0.0008909879646, -0.0005389315186, 0.0009794031697, 0.00379217721, 0.006208112722, 0.004320964646, -0.001290765988, -1.155357953e-05, -6.086946334e-05, -0.0001760959803, -0.0003550282999, -0.000517015973, -0.000465696584, 6.900324902e-05, 0.001178044268, 0.002196177598, 0.001522826838, -0.0006197954504, -3.181268555e-06, -1.716925263e-05, -5.123242116e-05, -0.0001082425495, -0.0001720170095, -0.0001961667121, -0.0001110664709, 0.0001181585596, 0.0003535216466, 0.0002359968985, -0.0001884371118 +-5.039158946e-06, -3.093044491e-05, -0.0001011810167, -0.0002266159561, -0.0003649185188, -0.0003635731376, 9.448990532e-05, 0.001417769776, 0.00343008948, 0.003921822022, 0.0007796736361, -1.169410126e-05, -7.173134586e-05, -0.0002325744461, -0.0005081859495, -0.000766154093, -0.0005765236419, 0.0009298370812, 0.004891331195, 0.01109357876, 0.014170093, 0.006863597665, -1.782831804e-05, -0.0001109876014, -0.0003665572167, -0.0008224501418, -0.001302871519, -0.001178767573, 0.0008708831331, 0.006653829785, 0.01613750942, 0.02174472, 0.01193201331, -2.080958553e-05, -0.0001316599363, -0.0004441460966, -0.001028329417, -0.001726091479, -0.001867099601, 3.349678678e-05, 0.00610573812, 0.01661823053, 0.02360093658, 0.01386671251, -1.965236171e-05, -0.0001262783537, -0.0004346655156, -0.00103614067, -0.001829160823, -0.002249461435, -0.0009644869558, 0.004032639181, 0.01325821906, 0.02002610117, 0.01242478379, -1.517320151e-05, -9.895570565e-05, -0.0003471643547, -0.000849947386, -0.001567094916, -0.002119733289, -0.001540031703, 0.001707686928, 0.008215961703, 0.01348081467, 0.008826782129, -9.337655325e-06, -6.180750438e-05, -0.0002209266677, -0.0005548066026, -0.001063776614, -0.001552994617, -0.001469911821, 0.0001165073316, 0.003693092595, 0.006918376068, 0.004829609626, -4.221307477e-06, -2.83853745e-05, -0.0001034589981, -0.0002665911004, -0.0005308145474, -0.0008283018023, -0.0009330479574, -0.0004339616115, 0.0009500580509, 0.002382677772, 0.001828746381, -1.093621262e-06, -7.48832138e-06, -2.789920849e-05, -7.393865276e-05, -0.0001530999646, -0.0002544763518, -0.0003277028851, -0.0002703592775, 9.225377971e-06, 0.0003660438892, 0.0003452032229, -1.829034404e-06, -1.250030012e-05, -4.739210449e-05, -0.0001266552763, -0.0002508663229, -0.0003382045806, -0.0001243874463, 0.0008449323754, 0.002595198218, 0.003174189112, 0.00045506417, -4.576826154e-06, -3.089714801e-05, -0.0001146644723, -0.0002962888702, -0.000552049043, -0.0006277118473, 0.000218594509, 0.003249929209, 0.008772814077, 0.01209080579, 0.005937350464, -7.422164882e-06, -5.030703485e-05, -0.000187498658, -0.0004886435341, -0.0009301203313, -0.001140526768, -2.231425673e-07, 0.004451085345, 0.01291349285, 0.01879324982, 0.01059186224, -9.176166168e-06, -6.261676861e-05, -0.0002353678908, -0.0006225907077, -0.001223592047, -0.001650733873, -0.0006595714442, 0.004006839175, 0.01337671022, 0.02055088604, 0.01245563813, -9.155196765e-06, -6.292868816e-05, -0.0002386931306, -0.0006409260752, -0.001297965886, -0.001894375947, -0.001326839181, 0.002486402727, 0.01068935396, 0.01752849273, 0.01124640806, -7.452616415e-06, -5.161546386e-05, -0.0001975949444, -0.0005382860594, -0.001119956726, -0.001741751607, -0.001612901052, 0.0008285562467, 0.006593757451, 0.01183779644, 0.008034222773, -4.827164991e-06, -3.371115454e-05, -0.0001303314857, -0.0003602488954, -0.0007688134855, -0.001262028404, -0.001395697281, -0.0002407231182, 0.002908056078, 0.006077406129, 0.004412543497, -2.293383544e-06, -1.617512677e-05, -6.325487234e-05, -0.0001776442653, -0.0003890065797, -0.0006710684863, -0.0008463852956, -0.0005128494876, 0.0006914909923, 0.002079633849, 0.001672374604, -6.238162233e-07, -4.456507162e-06, -1.768293443e-05, -5.061290407e-05, -0.0001140264723, -0.0002066751121, -0.0002906663099, -0.0002681485816, -3.140385882e-05, 0.0003085950502, 0.0003134619175 +-5.686094955e-07, -4.649532243e-06, -2.093736756e-05, -6.87149571e-05, -0.0001838844259, -0.0004245698986, -0.0008547951436, -0.00135894966, -0.0008797109526, 0.003010617844, 0.007610984668, -1.313304288e-06, -1.074414625e-05, -4.823500709e-05, -0.0001571494848, -0.0004152490589, -0.0009397935261, -0.001829329973, -0.002684957159, -0.0008206071416, 0.009269111611, 0.01974053837, -1.986048645e-06, -1.639399081e-05, -7.426707713e-05, -0.0002441714174, -0.0006510291644, -0.00148606575, -0.002915730634, -0.004334539965, -0.001639377971, 0.01340953007, 0.0288775314, -2.300328409e-06, -1.917770266e-05, -8.780803293e-05, -0.0002920281405, -0.0007883274585, -0.001823482382, -0.003632539193, -0.005559192687, -0.002881502346, 0.01386671251, 0.03134509017, -2.157269861e-06, -1.816070208e-05, -8.403229227e-05, -0.0002826943525, -0.0007726856707, -0.001811454545, -0.003664905812, -0.005772341918, -0.00375483466, 0.01119897231, 0.02718689309, -1.654699082e-06, -1.406290616e-05, -6.574466802e-05, -0.0002236582045, -0.0006187420071, -0.001469409528, -0.003016939694, -0.004878276042, -0.003740734716, 0.007106823416, 0.01906899168, -1.01161568e-06, -8.680525173e-06, -4.100464057e-05, -0.0001410622784, -0.0003949401372, -0.0009498893671, -0.001978347342, -0.003279135256, -0.002862048932, 0.003350642424, 0.01048751458, -4.54015302e-07, -3.936064954e-06, -1.879870615e-05, -6.543581019e-05, -0.000185504929, -0.0004520633677, -0.0009555268981, -0.001624198373, -0.001586482646, 0.0009804132682, 0.004110248862, -1.165881462e-07, -1.022767918e-06, -4.946344867e-06, -1.744715603e-05, -5.015318469e-05, -0.0001240089525, -0.0002664746323, -0.0004658031315, -0.0005066345727, 7.938912375e-05, 0.000867019695, -2.258235659e-07, -2.117616037e-06, -1.11507026e-05, -4.303441268e-05, -0.0001346793155, -0.0003582144865, -0.0008116277624, -0.001423604198, -0.001139247557, 0.002598165836, 0.007312185367, -5.568658357e-07, -5.157190918e-06, -2.674484984e-05, -0.0001014445705, -0.0003112841368, -0.0008085299298, -0.001771553423, -0.002899119599, -0.001495601733, 0.008260259162, 0.01903370673, -8.892625681e-07, -8.214530535e-06, -4.246783712e-05, -0.0001606466488, -0.0004919924488, -0.001276344475, -0.002794829299, -0.004585506138, -0.002538363468, 0.01203002466, 0.02790446823, -1.083897497e-06, -1.000853137e-05, -5.171469448e-05, -0.00019567587, -0.0006002166105, -0.001562087507, -0.003440684749, -0.005741324466, -0.003747636493, 0.01247117514, 0.03034536961, -1.067410177e-06, -9.860265766e-06, -5.096372007e-05, -0.0001930399943, -0.0005935329012, -0.00155091773, -0.003439688415, -0.005846078026, -0.004408715795, 0.01007383807, 0.02636461531, -8.583012563e-07, -7.93647121e-06, -4.105485534e-05, -0.000155739942, -0.0004801232515, -0.001259830922, -0.002813385295, -0.004866644689, -0.004129051912, 0.006376232963, 0.01852158105, -5.492720198e-07, -5.087834501e-06, -2.635939947e-05, -0.0001002002991, -0.0003098598437, -0.0008167145683, -0.001836769709, -0.003233028871, -0.003033810562, 0.002981170296, 0.01020135606, -2.577106139e-07, -2.394145053e-06, -1.243674542e-05, -4.742194597e-05, -0.0001472345642, -0.0003901379556, -0.0008844422792, -0.001586169395, -0.001634330313, 0.0008488564981, 0.004003177932, -6.91246188e-08, -6.453247015e-07, -3.367469468e-06, -1.290254859e-05, -4.028557489e-05, -0.000107489397, -0.0002461251292, -0.0004512911644, -0.0005110123007, 5.475040548e-05, 0.0008451325529 +0.008910706142, -0.0003746362698, -0.003166181126, -0.002280812423, -0.001183337044, -0.0005247583656, -0.0002031394097, -6.698394162e-05, -1.781003744e-05, -3.426591006e-06, -3.618668768e-07, 0.02756427191, 0.004640691997, -0.005530629189, -0.00493051489, -0.002720813517, -0.001244150507, -0.0004926986346, -0.0001658160762, -4.495501999e-05, -8.814446886e-06, -9.482776047e-07, 0.04848744104, 0.0132442198, -0.006466118424, -0.007320695259, -0.004272299377, -0.002001546085, -0.0008053196052, -0.0002746931413, -7.540867104e-05, -1.49634e-05, -1.628562714e-06, 0.06231950851, 0.02179648582, -0.00557951182, -0.00854716041, -0.005272475511, -0.002524088404, -0.001028424524, -0.0003543363194, -9.817116592e-05, -1.965236171e-05, -2.157269861e-06, 0.06325069461, 0.02625193347, -0.003483873302, -0.008206655121, -0.005358544311, -0.002618437714, -0.001078349991, -0.0003745246136, -0.0001045175502, -2.106879125e-05, -2.328580172e-06, 0.05163274131, 0.02455653482, -0.001259388116, -0.006496366483, -0.004502829155, -0.002245817159, -0.0009339925184, -0.0003266102767, -9.170113798e-05, -1.859416112e-05, -2.067085236e-06, 0.03309132089, 0.01766877474, 0.0001523550615, -0.004118344865, -0.0030388229, -0.001547569572, -0.0006496668029, -0.0002285790253, -6.452151983e-05, -1.315145703e-05, -1.469713264e-06, 0.0152589692, 0.008988662186, 0.0004600533353, -0.001941662386, -0.001520499117, -0.0007898154411, -0.0003343872305, -0.0001182637823, -3.353346519e-05, -6.866048767e-06, -7.708775302e-07, 0.003873370809, 0.002449707409, 0.0001570598954, -0.0005536550424, -0.0004475093289, -0.00023525078, -0.0001000353862, -3.545639095e-05, -1.007426646e-05, -2.067873122e-06, -2.32858242e-07, 0.001962389891, -0.002922496212, -0.002765539411, -0.001418154158, -0.0005932018587, -0.0002243030142, -7.770426976e-05, -2.412163982e-05, -6.367041053e-06, -1.279837806e-06, -1.474544881e-07, 0.008700580638, -0.004452944682, -0.006191181682, -0.00350354951, -0.001531095581, -0.0005944143725, -0.0002101829093, -6.635718798e-05, -1.774815085e-05, -3.602472141e-06, -4.180429921e-07, 0.01745443397, -0.004015460914, -0.009253232132, -0.005741611912, -0.002611021504, -0.001036367793, -0.0003722833795, -0.0001189851923, -3.211140381e-05, -6.556040729e-06, -7.633458741e-07, 0.02431776113, -0.001730086876, -0.01069388148, -0.007291454891, -0.003450057038, -0.00139830478, -0.0005092401717, -0.0001644014529, -4.467572402e-05, -9.157431171e-06, -1.067953324e-06, 0.026188698, 0.001111966156, -0.01002906624, -0.007550417963, -0.003720631762, -0.001539337507, -0.0005677111794, -0.0001848804621, -5.052712925e-05, -1.03872437e-05, -1.212259812e-06, 0.02240974709, 0.003011539557, -0.007671085539, -0.006417304436, -0.003297719677, -0.001393095604, -0.000520015774, -0.000170696074, -4.68842788e-05, -9.661808144e-06, -1.128015368e-06, 0.01490322221, 0.003159454936, -0.004669114339, -0.004359355221, -0.002337894147, -0.00100873693, -0.0003810158419, -0.0001260036762, -3.476786079e-05, -7.180558038e-06, -8.385529206e-07, 0.007032244127, 0.001908455893, -0.002129700748, -0.002195383843, -0.001225354058, -0.0005395417397, -0.0002060627278, -6.860074133e-05, -1.900270176e-05, -3.931201515e-06, -4.59058872e-07, 0.001772818777, 0.0005049114392, -0.0006169284057, -0.0006584126857, -0.0003770667593, -0.0001685095212, -6.485542991e-05, -2.1672396e-05, -6.010816648e-06, -1.242638659e-06, -1.447991157e-07 +0.003102403459, 0.003323207697, 0.0005551815901, -0.001147071168, -0.001419030274, -0.001049582634, -0.0005935930152, -0.0002673524789, -9.353278375e-05, -2.320260587e-05, -3.132502999e-06, 0.01040795544, 0.01303389016, 0.005608080984, -0.0002396568334, -0.002223407514, -0.002064054463, -0.001290382847, -0.0006179878797, -0.0002260353957, -5.810388986e-05, -8.085892435e-06, 0.01907330267, 0.02547220963, 0.01319873896, 0.002150228721, -0.002390641905, -0.002878824937, -0.001955907777, -0.0009795350471, -0.000369219761, -9.711966066e-05, -1.37751205e-05, 0.02525931165, 0.03521905241, 0.02004800554, 0.004929449086, -0.001951505452, -0.003233524876, -0.002360857861, -0.001224420112, -0.0004720375528, -0.0001262783537, -1.816070208e-05, 0.02625193347, 0.03792646437, 0.02299671999, 0.006720511267, -0.001224710822, -0.003055000775, -0.002372050643, -0.001264817344, -0.0004961877605, -0.0001344788126, -1.954903952e-05, 0.02176904942, 0.03254839973, 0.02075507828, 0.006706235954, -0.0005510012614, -0.002432482437, -0.001989088004, -0.001084480803, -0.00043141114, -0.0001181598839, -1.732910162e-05, 0.01393887763, 0.02165936158, 0.01445184578, 0.004992241386, -0.0001510905507, -0.001589245575, -0.001352544602, -0.0007501805613, -0.0003017398691, -8.336085656e-05, -1.231731365e-05, 0.0061629335, 0.01007513645, 0.007025317593, 0.002521383498, -5.041261819e-05, -0.0007993924637, -0.0006910147366, -0.0003866345427, -0.0001565773679, -4.352213707e-05, -6.468240825e-06, 0.001325795796, 0.002361473397, 0.00171723328, 0.0005964406958, -7.088526874e-05, -0.0002578653276, -0.0002127903303, -0.0001175887879, -4.743971577e-05, -1.318296332e-05, -1.962368295e-06, -0.0006949338671, 0.0004179932869, -0.0002125772696, -0.0006708667708, -0.0006224246788, -0.000404753815, -0.0002146166408, -9.580294361e-05, -3.49784726e-05, -9.458233509e-06, -1.436397561e-06, -0.000635439052, 0.003050299088, 0.001194002003, -0.0007723390475, -0.001214387358, -0.0009206970328, -0.0005274257, -0.0002468692022, -9.303988616e-05, -2.572910769e-05, -3.97391837e-06, -5.662232093e-05, 0.006838694315, 0.003772783845, -0.0002622901495, -0.001625178814, -0.001432570416, -0.0008745556612, -0.0004241544889, -0.0001633810507, -4.581179675e-05, -7.140604435e-06, 0.0006761576134, 0.01003777579, 0.006412207004, 0.000636318494, -0.001716647364, -0.001765108733, -0.001138574156, -0.000568193458, -0.0002224714333, -6.297224676e-05, -9.868468482e-06, 0.001101174464, 0.01109364962, 0.007818345707, 0.001441113277, -0.001504002484, -0.001806251449, -0.001222084085, -0.0006243201395, -0.0002475742553, -7.055132247e-05, -1.109242565e-05, 0.0009586476206, 0.009515552297, 0.007293293826, 0.001737723303, -0.001104250165, -0.001542331161, -0.001087198723, -0.0005663408034, -0.0002268874181, -6.498384967e-05, -1.023828438e-05, 0.0003505290458, 0.006082614776, 0.005099394188, 0.001403173557, -0.0006786965849, -0.001072118463, -0.0007804871647, -0.0004128884569, -0.0001667313656, -4.793149607e-05, -7.560957783e-06, -0.0002708128076, 0.002446922272, 0.002342740279, 0.0006815606024, -0.0003570130403, -0.0005700195211, -0.0004201230657, -0.0002239178591, -9.076348677e-05, -2.612494476e-05, -4.119853992e-06, -0.0003829222861, 0.0002731842769, 0.0004172873694, 8.468531684e-05, -0.0001556522868, -0.0001936984886, -0.0001370855007, -7.200327586e-05, -2.894212272e-05, -8.277263573e-06, -1.298180603e-06 +-0.0001885466664, 0.002739915594, 0.0025367701, 0.0008419148458, -0.0004866370874, -0.0009873941211, -0.0008905429245, -0.0005635163377, -0.0002630930434, -8.515483909e-05, -1.490646573e-05, -0.0003299626742, 0.009506406607, 0.01055121018, 0.005968682259, 0.001469849657, -0.0009529820605, -0.001533427374, -0.001163699492, -0.0005983764135, -0.0002064144178, -3.78894451e-05, -0.0009622037208, 0.01740898622, 0.02108400702, 0.01348046084, 0.005000789566, -0.0001206948569, -0.001876956677, -0.0016985473, -0.0009397428664, -0.0003384520123, -6.40272805e-05, -0.002153591056, 0.02272541912, 0.02957476294, 0.02019421134, 0.008573470719, 0.001083756953, -0.001849143414, -0.001992899691, -0.001168928184, -0.0004346655156, -8.403229227e-05, -0.003483873302, 0.02299671999, 0.03218266371, 0.02305461382, 0.01050343784, 0.002025327656, -0.001539711134, -0.001962450967, -0.001205478865, -0.0004592522024, -9.025129648e-05, -0.004306101189, 0.01825657015, 0.02780941179, 0.02079441215, 0.009921769995, 0.002273296076, -0.001094752803, -0.001625061253, -0.001034676939, -0.0004016073626, -7.994384296e-05, -0.004150671751, 0.01082483684, 0.01853210911, 0.01449806914, 0.007160890495, 0.00178502289, -0.0006617300143, -0.001100764224, -0.0007185906194, -0.0002827772854, -5.685822567e-05, -0.002992003352, 0.004026371151, 0.008522267166, 0.007057899191, 0.003575680447, 0.0009025353873, -0.0003401217192, -0.0005685305116, -0.0003735625086, -0.000147945646, -2.993370277e-05, -0.00130100874, 0.0004079125361, 0.001883301598, 0.001719562774, 0.0008734151737, 0.0001820407318, -0.0001368007608, -0.0001824397404, -0.0001156327501, -4.530219939e-05, -9.140427412e-06, -0.001068810263, 0.0008928060855, 0.0009796966213, 0.0002732530491, -0.0002148836814, -0.0003666530806, -0.0003226623738, -0.0002118619945, -0.0001074981517, -3.907238922e-05, -7.827993509e-06, -0.003077688603, 0.00329700495, 0.004307717707, 0.002203829904, 0.0003660913372, -0.0004871429494, -0.0006465049535, -0.0004901494454, -0.0002681433885, -0.0001021308088, -2.113457324e-05, -0.005831197846, 0.00615745115, 0.009079666876, 0.005408377927, 0.001677593185, -0.0003053652741, -0.000896235691, -0.0007785866779, -0.000451066698, -0.0001771949245, -3.737018768e-05, -0.008493778478, 0.007992756253, 0.0133380954, 0.008682286462, 0.003246237278, 0.0001102327288, -0.0009903830532, -0.0009814176597, -0.0005951228827, -0.0002389817696, -5.102068756e-05, -0.01004603738, 0.007803559212, 0.01509148333, 0.01053214009, 0.004344041475, 0.0005410614713, -0.0009168186675, -0.001028660124, -0.0006467715673, -0.0002638879237, -5.679459307e-05, -0.009794063909, 0.005662549253, 0.0134430831, 0.01001941751, 0.004413783394, 0.0007651067953, -0.0007176333446, -0.0009004180844, -0.0005823222306, -0.000240350115, -5.200856659e-05, -0.007753817994, 0.002648559374, 0.009110984861, 0.007302835068, 0.003383536387, 0.000676729664, -0.0004709506701, -0.0006416749071, -0.0004228995818, -0.0001758357929, -3.816830802e-05, -0.004679137888, 0.0002426203566, 0.004129288035, 0.003654637038, 0.001758562688, 0.0003548831455, -0.0002563021808, -0.0003483073757, -0.0002296806453, -9.548247922e-05, -2.071258011e-05, -0.001725499716, -0.0005315946034, 0.0007876486607, 0.0008636034544, 0.0004162742366, 5.034477801e-05, -0.0001058876665, -0.0001185261016, -7.46821807e-05, -3.04296661e-05, -6.526965118e-06 +-0.0006446197045, 0.001117385643, 0.002227074769, 0.001881126847, 0.000775524946, -0.0002564222146, -0.0007756673499, -0.0007794877496, -0.0005091139344, -0.0002213875342, -5.161226154e-05, -0.002007791572, 0.003835699058, 0.008466991494, 0.008479468465, 0.005458152309, 0.001939655982, -0.000426009673, -0.001259525423, -0.001049881085, -0.0005141192066, -0.0001291045341, -0.004156571003, 0.006594949156, 0.01621282396, 0.01733447225, 0.01227227977, 0.005643193967, 0.0007346008693, -0.001433122325, -0.001534861604, -0.0008209078655, -0.0002163485875, -0.006528006913, 0.007788579219, 0.02195781962, 0.02463637642, 0.01831461376, 0.009245549518, 0.002147634503, -0.001296602264, -0.001808928767, -0.00103614067, -0.0002826943525, -0.008206655121, 0.006720511267, 0.02305461382, 0.02708819057, 0.02083698944, 0.01106014385, 0.003095003465, -0.000982886864, -0.001794048082, -0.001082829556, -0.0003030412022, -0.008399942838, 0.003959445438, 0.01908472585, 0.02363695259, 0.01872930589, 0.01027575963, 0.003146150225, -0.0006387508858, -0.001500275074, -0.0009411093576, -0.0002684029779, -0.00690040638, 0.0009316187399, 0.01195544503, 0.01590580085, 0.01300101445, 0.007310830785, 0.002341134117, -0.0003695832396, -0.001029626198, -0.0006616056844, -0.0001911904759, -0.004259815839, -0.0009075677679, 0.004894950181, 0.007378868375, 0.006278106779, 0.003593648011, 0.001149594626, -0.0002090437523, -0.0005412319134, -0.0003479753946, -0.0001010520662, -0.001574232783, -0.0009372783487, 0.0007430386432, 0.001631598261, 0.001494027026, 0.0008553661547, 0.0002364568971, -0.0001071921471, -0.0001776198632, -0.0001086638754, -3.112941948e-05, -0.0006080723004, 0.0003205673664, 0.0008107959673, 0.0006432812089, 0.000236176339, -0.0001158109732, -0.0003016986326, -0.0003222448421, -0.0002346156258, -0.0001164059831, -3.121998037e-05, -0.001955474171, 0.00116264139, 0.003268354914, 0.003110600817, 0.001875251597, 0.0005889031718, -0.0002673657257, -0.0005988448309, -0.0005314244791, -0.0002899565892, -8.229404533e-05, -0.003977195542, 0.001982222307, 0.006658421087, 0.006853790278, 0.004610176817, 0.002002325392, 0.0001099939056, -0.0007730976215, -0.0008333284674, -0.0004872847959, -0.000143249543, -0.006115210877, 0.002158120334, 0.009540067804, 0.01043637554, 0.007431159167, 0.003605431843, 0.0006822142475, -0.0007958584462, -0.001041645726, -0.0006420784286, -0.0001933001028, -0.007562309176, 0.001425356717, 0.01052377465, 0.01222580967, 0.009063615138, 0.004659696462, 0.0011620261, -0.0006887863437, -0.001086505462, -0.0006967847666, -0.0002132180389, -0.007650686839, 8.613846709e-05, 0.009067406918, 0.01129988959, 0.00867848113, 0.00463143736, 0.001304736551, -0.0005100345956, -0.0009495069832, -0.0006265210893, -0.0001938409083, -0.006228815482, -0.001146052907, 0.005814466215, 0.00799230313, 0.00637068806, 0.003492196992, 0.001040110653, -0.0003277120494, -0.0006778770382, -0.0004545044994, -0.0001414818113, -0.003812475296, -0.001567020876, 0.002323912868, 0.003836365629, 0.003209344162, 0.001788808888, 0.0005250425025, -0.0001896602054, -0.0003699956244, -0.0002464077628, -7.654759867e-05, -0.001396212298, -0.0009635128023, 0.0002338633792, 0.0008252044455, 0.0007587131812, 0.0004160784172, 9.009572523e-05, -9.175167236e-05, -0.000126779442, -7.95412723e-05, -2.416193011e-05 +-0.0004319463096, 0.0001670004251, 0.00121858796, 0.001803985775, 0.001558840309, 0.000728094628, -0.0001612543958, -0.0006821954622, -0.0007197761013, -0.000447488651, -0.0001454413611, -0.001370544519, 0.0006341636654, 0.004544153358, 0.007312783546, 0.007364170805, 0.005087711266, 0.002026914899, -0.0003006089289, -0.001212231479, -0.000975399129, -0.0003576875717, -0.002799338022, 0.0007335246929, 0.008364485615, 0.01430226469, 0.01520362248, 0.01140769306, 0.005636453367, 0.0008345055362, -0.001457731045, -0.001492383436, -0.0005940620372, -0.004323560892, 6.530473574e-05, 0.01074668873, 0.0196267426, 0.02168100247, 0.01697976225, 0.009097332138, 0.002176573062, -0.001423541512, -0.001829160823, -0.0007726856707, -0.005358544311, -0.001224710822, 0.01050343784, 0.02083698944, 0.02385728171, 0.01926148664, 0.01079006101, 0.003043958744, -0.00119373149, -0.00187563449, -0.0008268745815, -0.005420853835, -0.002510083192, 0.007806739812, 0.01745078786, 0.02079889955, 0.01724858358, 0.009956774186, 0.003041580409, -0.0008768017355, -0.00161319406, -0.0007326332728, -0.004403640282, -0.003070428431, 0.004005287653, 0.01109189044, 0.0139537905, 0.01190734329, 0.007032492395, 0.002228681583, -0.000568405579, -0.001132161578, -0.0005231161135, -0.002681166746, -0.002540553798, 0.000879468482, 0.004645000763, 0.006421133743, 0.005691946957, 0.003419923171, 0.001070654192, -0.0003255175277, -0.0006024997596, -0.000277972715, -0.0009708877675, -0.001198862324, -0.0003512880462, 0.0007507523663, 0.001379278634, 0.00131835391, 0.0007940590861, 0.0002066398018, -0.0001437882609, -0.0001954874985, -8.659832857e-05, -0.0002702947621, -1.048238685e-05, 0.0003886055168, 0.0005835428072, 0.0005035682786, 0.0002322605948, -9.037445926e-05, -0.000324652651, -0.0003819873141, -0.0002715008504, -0.0001009535854, -0.0009004903289, -3.21932334e-06, 0.001570774685, 0.002571071112, 0.002602399424, 0.001841611926, 0.0007268845639, -0.0002487983941, -0.0007227737184, -0.0006343161877, -0.00025987053, -0.001877988024, -0.0002027774539, 0.003102028753, 0.005435438435, 0.005818319722, 0.004483403184, 0.00227364753, 0.0001982114296, -0.0009644698388, -0.001020041957, -0.0004454742565, -0.002951451655, -0.0007400156106, 0.004230840794, 0.008003714521, 0.008910454846, 0.007158549393, 0.003959079024, 0.0008273730071, -0.001040979, -0.001301283197, -0.0005944347541, -0.00372618855, -0.001513809234, 0.004336025543, 0.009060591164, 0.01046535925, 0.008651167337, 0.005002547269, 0.001319580417, -0.0009569558429, -0.001379225649, -0.0006501581296, -0.003845598942, -0.002192212916, 0.003308850829, 0.008036057723, 0.009682300061, 0.008206279558, 0.004880660628, 0.001426959506, -0.0007589100117, -0.00121995046, -0.000587284109, -0.003189738407, -0.002383908171, 0.001641283347, 0.005353930117, 0.006842789209, 0.005960265113, 0.00361633842, 0.001102551089, -0.0005169474386, -0.0008772210089, -0.0004267458877, -0.001983330938, -0.001886636431, 0.0001867279955, 0.002289056687, 0.00326637166, 0.002957218895, 0.001816664586, 0.0005369711127, -0.0002978089266, -0.0004771541013, -0.0002305128747, -0.0007338011294, -0.000882306212, -0.0003353956491, 0.0003168600904, 0.0006817718655, 0.0006743341442, 0.0004089934037, 8.371217077e-05, -0.0001275529027, -0.0001584063456, -7.302841568e-05 +-0.0002197535361, -0.0001549098995, 0.0003920910446, 0.001129722581, 0.001569213627, 0.001402182757, 0.0007021722763, -0.0001438055005, -0.000693041706, -0.0007205313335, -0.0003531602098, -0.0006958531543, -0.0004530872461, 0.001533115307, 0.004440065636, 0.006606937245, 0.006762775544, 0.004831855958, 0.001900889012, -0.0005148758468, -0.001403490265, -0.0008521317759, -0.001402536994, -0.001117145563, 0.002599711071, 0.008381305731, 0.01307310075, 0.01403908817, 0.01082341057, 0.005279788304, 0.0003016998203, -0.001965388047, -0.001400503069, -0.002137255344, -0.002095355239, 0.002842095932, 0.01101651391, 0.0180580215, 0.02007626587, 0.01611362827, 0.008525204905, 0.001339529445, -0.002249461435, -0.001811454545, -0.002618437714, -0.003055000775, 0.002025327656, 0.01106014385, 0.01926148664, 0.02212703571, 0.01828680403, 0.01011666732, 0.002052434056, -0.002198275151, -0.001934083989, -0.00262322787, -0.003542072203, 0.000558719888, 0.008546916728, 0.01619379059, 0.01930393431, 0.01637906327, 0.009336382533, 0.002112866506, -0.001839049305, -0.001714013994, -0.002112382619, -0.003247884653, -0.0007774600454, 0.004725752738, 0.01032842161, 0.0129430049, 0.01130031685, 0.006587505312, 0.001549399427, -0.001285884849, -0.001227127493, -0.001274367964, -0.002220366074, -0.001292205338, 0.001378343268, 0.004337231462, 0.005933795819, 0.005386294496, 0.003190035366, 0.0007137855254, -0.0007077982696, -0.0006562708605, -0.0004562747079, -0.0009054954929, -0.0008184473968, -0.0001554697277, 0.0006992257068, 0.00125398664, 0.001233747407, 0.0007288363955, 0.000104585221, -0.0002533274688, -0.000207274786, -0.0001081002531, -8.9429047e-05, 9.875520466e-05, 0.0003520300236, 0.0005291593196, 0.0005170772402, 0.0002791879646, -0.0001022403861, -0.0004319908791, -0.0005042964999, -0.0002779209332, -0.0003646976766, -0.0002918442654, 0.0004446290686, 0.001524482244, 0.002432068963, 0.002701717611, 0.002111753513, 0.0008540367137, -0.0004517117856, -0.001063791935, -0.0006979183553, -0.0007665065161, -0.0006891797335, 0.0007995277271, 0.003111323943, 0.005180861077, 0.00599785816, 0.005035656494, 0.002606143492, -9.825028898e-05, -0.001583058377, -0.001177496281, -0.001212766162, -0.001251123448, 0.000876828085, 0.004375555198, 0.007642097466, 0.009105968695, 0.007912441854, 0.004458742171, 0.0004555572439, -0.001901831516, -0.001553475111, -0.00154131778, -0.001810555354, 0.0005369632916, 0.004658434491, 0.008652314992, 0.01060178027, 0.009431279783, 0.005548743334, 0.0009115093973, -0.001928552355, -0.001684989758, -0.001601482738, -0.002120855787, -9.599667052e-05, 0.003772869549, 0.007673802505, 0.009724433442, 0.008835783632, 0.00533854363, 0.00104248951, -0.001656911172, -0.00151288031, -0.001337138236, -0.001986424215, -0.0006874787082, 0.002130428075, 0.005115985307, 0.006812231566, 0.006343258838, 0.003903088829, 0.0008048082986, -0.001178252401, -0.001095220218, -0.0008362050023, -0.001397474412, -0.0008815974036, 0.0005541403137, 0.002192543735, 0.00321775592, 0.003111139382, 0.001933862989, 0.0003637239267, -0.0006529613119, -0.0005913981185, -0.0003105875377, -0.0005908970192, -0.0005443407296, -0.000178205142, 0.0003064784925, 0.0006578563902, 0.0007002102384, 0.0004280439594, 2.528167196e-05, -0.0002333010313, -0.0001884957534 +-9.44487701e-05, -0.0001734270475, -2.925384247e-05, 0.0004233641369, 0.001025274594, 0.001438265691, 0.001353029982, 0.0007072231598, -0.000218270933, -0.000881632043, -0.0007526629697, -0.0002974166104, -0.0005341242499, 1.907984428e-05, 0.001738824884, 0.004173466333, 0.006166774863, 0.006510409503, 0.004729031473, 0.00153834558, -0.001288489574, -0.001769100305, -0.0005919642395, -0.001128839502, -0.0001774164885, 0.003107322326, 0.007992718048, 0.01229147574, 0.01354834965, 0.01058822382, 0.00453455739, -0.001280938745, -0.002861539024, -0.0008905822865, -0.001826315065, -0.0007499594549, 0.003683801565, 0.01062500275, 0.01706712849, 0.01943497409, 0.01580021302, 0.007466448198, -0.0009644869558, -0.003664905812, -0.001078349991, -0.002372050643, -0.001539711134, 0.003095003465, 0.01079006101, 0.01828680403, 0.02149342195, 0.01799028079, 0.008951573967, -0.0005777519874, -0.003891352313, -0.001068787624, -0.00251113608, -0.00216870267, 0.001642752858, 0.008457685585, 0.01544008344, 0.01881886011, 0.01617504861, 0.00831289822, -0.0003022309578, -0.00344100299, -0.0008518408158, -0.002134159691, -0.002269168046, 8.95248412e-05, 0.0047844327, 0.009889646302, 0.01266545584, 0.0112070047, 0.005884128578, -0.0001969454627, -0.002466657391, -0.0005084088297, -0.001362179076, -0.001719609694, -0.0007837451598, 0.00148711794, 0.004171186381, 0.005829764443, 0.005367921166, 0.002843766567, -0.0001976493944, -0.001328026211, -0.0001798149711, -0.0005197457884, -0.0007674184605, -0.0006479725281, -9.140693977e-05, 0.0006760058579, 0.001238366117, 0.001238715445, 0.0006367561488, -0.0001563056537, -0.0004267549988, -3.967943639e-05, -7.318851065e-05, -3.209790618e-05, 0.0001215901567, 0.0003648051944, 0.0005947665519, 0.000645080555, 0.0003733033495, -0.0001889675141, -0.0007123283799, -0.000658145881, -0.0001344762282, -0.0002445911434, -6.584020228e-05, 0.0005741202684, 0.001624242556, 0.002727835068, 0.003265202524, 0.002644771518, 0.0008277975878, -0.001194861067, -0.00160262082, -0.0002828222618, -0.0005393035431, -0.0002081320199, 0.001103803204, 0.003327392597, 0.005754068816, 0.007118746482, 0.006171725636, 0.002717037448, -0.001409757632, -0.002649895674, -0.000447354642, -0.0009059457105, -0.0005125367843, 0.00137121777, 0.004686950273, 0.008406200652, 0.01065588933, 0.009550805734, 0.004700715446, -0.001340324475, -0.003445824765, -0.000568255193, -0.001223358758, -0.0009176084794, 0.001163678278, 0.005007065143, 0.009435903198, 0.01226080558, 0.01124505541, 0.00584383046, -0.001095756636, -0.003698276851, -0.0005900491055, -0.001349115079, -0.001250908968, 0.0005456940344, 0.004091276067, 0.008309045974, 0.01113596072, 0.01042866323, 0.005592145727, -0.0008014899125, -0.003295599396, -0.0004921501756, -0.001196278557, -0.001317689571, -0.0001640590204, 0.002366649748, 0.0055119608, 0.007741899383, 0.007428462539, 0.004056209172, -0.0005482433435, -0.002375305273, -0.0003071966894, -0.0007980584945, -0.001025177369, -0.0005664248015, 0.0006870983342, 0.002362435458, 0.003644464491, 0.003630526328, 0.001986735502, -0.00036292683, -0.001283220436, -0.0001137236822, -0.0003194929253, -0.0004766763128, -0.0004354768816, -0.000133587085, 0.0003417704926, 0.0007560240762, 0.0008280325256, 0.0004294057329, -0.0001934779344, -0.0004130601336 +-3.40598521e-05, -0.0001049356326, -0.0001371600284, -5.628720214e-06, 0.0003695827174, 0.0009222525438, 0.001402726289, 0.00144208897, 0.0007250128913, -0.0006264398621, -0.001336880791, -0.0001066738303, -0.0003255910903, -0.0003945325488, 0.0001397731457, 0.001606282661, 0.003839572126, 0.005998181189, 0.006732582414, 0.004766063683, 0.0002223894141, -0.002974181345, -0.0002100699975, -0.0006596246022, -0.0008558168726, 0.0001025498136, 0.00293133942, 0.007416405839, 0.01199050357, 0.01397930665, 0.01069476575, 0.002064401121, -0.004631141406, -0.0003125732621, -0.001017531785, -0.001447318959, -0.0003009886876, 0.003538431438, 0.009915837784, 0.01671508691, 0.0201015149, 0.0160218159, 0.004032639181, -0.005772341918, -0.0003745246136, -0.001264817344, -0.001962450967, -0.000982886864, 0.003043958744, 0.01011666732, 0.01799028079, 0.02232791533, 0.01832484408, 0.005141902598, -0.006015247661, -0.0003674987522, -0.00128691624, -0.002159484127, -0.001616260397, 0.001700082219, 0.007960909796, 0.01526582329, 0.01966214518, 0.01655714947, 0.004880660989, -0.005257484904, -0.0002899715403, -0.001053694806, -0.001902005908, -0.001836401722, 0.0002126124657, 0.004516189876, 0.009834494414, 0.01333207012, 0.01153572985, 0.003433207585, -0.003754122689, -0.0001711935553, -0.0006477480226, -0.001257568152, -0.001471325687, -0.0006667811598, 0.001401456506, 0.004179939462, 0.006205741931, 0.005564425506, 0.001570996227, -0.002038581406, -5.978694397e-05, -0.0002373288462, -0.0004982685383, -0.000686162417, -0.0005913625553, -9.41443815e-05, 0.0006909560649, 0.00135362501, 0.001300765235, 0.0002681236718, -0.0006767603493, -1.308011295e-05, -4.105271654e-05, -6.130840581e-05, -2.521576803e-05, 0.0001264911084, 0.0004174790687, 0.0007613258275, 0.0009029641144, 0.0004740818606, -0.0006144045361, -0.001266250975, -4.431403635e-05, -0.0001375849763, -0.0001910902735, -1.356897268e-05, 0.0006316775672, 0.001858620234, 0.00338823832, 0.004324446676, 0.003312194361, -0.0001826502318, -0.002915043277, -9.287267938e-05, -0.0002947114615, -0.0004255135234, -8.597920553e-05, 0.001224794908, 0.003769044558, 0.00702654795, 0.009231440397, 0.007647497695, 0.00103542653, -0.004636505622, -0.000146278808, -0.000478300743, -0.0007366368699, -0.000321243067, 0.001532921536, 0.00525351668, 0.01013177476, 0.01362723838, 0.01172456337, 0.00246716923, -0.005858393148, -0.0001849836204, -0.0006244709202, -0.00102806096, -0.0006858097083, 0.001326221669, 0.005558019466, 0.01125263678, 0.01551745195, 0.01368928184, 0.003379378376, -0.006154988453, -0.0001911767697, -0.000666840716, -0.001170314123, -0.00102495933, 0.000674181615, 0.004503721936, 0.00982659243, 0.01398680743, 0.01260298448, 0.003331965585, -0.005402026035, -0.0001586223585, -0.0005727593073, -0.001070319931, -0.001143419786, -8.587002322e-05, 0.00259034761, 0.006485585537, 0.00968426517, 0.00892660666, 0.002386257594, -0.003860589628, -9.838262228e-05, -0.0003694647217, -0.0007374371526, -0.0009276241354, -0.0005338675873, 0.0007560838649, 0.002788162696, 0.004575723411, 0.004354632962, 0.001073947765, -0.002090868733, -3.612518516e-05, -0.0001424206186, -0.00030627086, -0.0004466357775, -0.0004292546196, -0.0001337410858, 0.0004279881815, 0.0009857804468, 0.001007345965, 0.0001436357954, -0.0006894895811 +-9.807546194e-06, -4.412880466e-05, -0.0001002298016, -0.0001333373054, -5.223687086e-05, 0.0002482480403, 0.0008096650578, 0.001465993385, 0.001607159359, 0.0002969211371, -0.001542123116, -3.057443541e-05, -0.0001370172255, -0.0003041310172, -0.0003689708236, 1.302051153e-06, 0.001202466122, 0.003420986136, 0.006128348482, 0.00727564042, 0.003591394987, -0.002764399029, -5.96875906e-05, -0.0002717406985, -0.0006169392595, -0.0007863086448, -0.0001204989022, 0.002199036566, 0.006620316907, 0.01220813207, 0.0150303683, 0.00863740414, -0.003558576645, -8.800518444e-05, -0.0004089344003, -0.0009596571796, -0.001322772782, -0.0005532146227, 0.002577366976, 0.008830746242, 0.01701420849, 0.02158868169, 0.01325821906, -0.00375483466, -0.0001045175502, -0.0004961877605, -0.001205478865, -0.001794048082, -0.00119373149, 0.002052434056, 0.008951573967, 0.01832484408, 0.02398160844, 0.01530351228, -0.003418677543, -0.0001016699709, -0.0004933101904, -0.001240329952, -0.001979436615, -0.001737911215, 0.0008825318316, 0.006949988649, 0.01556085114, 0.02112731966, 0.0138393095, -0.002720896011, -7.950542728e-05, -0.0003946944149, -0.001027517644, -0.001750221953, -0.00186563862, -0.0003081188374, 0.003821296915, 0.01002407188, 0.01433169754, 0.009574927668, -0.001881981763, -4.647027795e-05, -0.0002367026207, -0.000639825476, -0.001162852698, -0.001446311327, -0.0008943788412, 0.001053607269, 0.00424956475, 0.006672755335, 0.004518332184, -0.001099512909, -1.603366819e-05, -8.427646471e-05, -0.0002380038651, -0.0004634962802, -0.0006598820288, -0.0006371511271, -0.0001904414843, 0.0006922112318, 0.001456284563, 0.0009786518773, -0.0004582817528, -3.672533113e-06, -1.752615943e-05, -4.492991004e-05, -7.327033149e-05, -5.624420274e-05, 9.358064355e-05, 0.0004666743311, 0.001009260166, 0.001212133811, 0.0001102615265, -0.001558207835, -1.237898486e-05, -5.841475707e-05, -0.0001449627314, -0.0002167212188, -9.337789188e-05, 0.0005550784016, 0.002074509655, 0.00432354115, 0.005629527725, 0.002681332861, -0.002959912682, -2.575620113e-05, -0.0001225235227, -0.0003065070306, -0.0004665026498, -0.0002360192311, 0.001059200573, 0.004141801977, 0.008797271553, 0.01183174462, 0.006785171683, -0.004012076273, -4.026206874e-05, -0.0001941458957, -0.0004952739617, -0.0007895440035, -0.0005431484888, 0.001242162567, 0.005663967923, 0.01249820848, 0.01724623286, 0.01067041234, -0.004427614315, -5.053469186e-05, -0.0002475027459, -0.0006461344162, -0.001084107481, -0.0009511117382, 0.000921798556, 0.005857014062, 0.01369992009, 0.01941340466, 0.01251613418, -0.004171511998, -5.183185844e-05, -0.0002581610952, -0.0006907226743, -0.001218560198, -0.001281857562, 0.0002273704692, 0.004604936855, 0.01181714103, 0.01730768009, 0.01145327723, -0.003384867768, -4.265969855e-05, -0.0002164843548, -0.0005948057442, -0.001102913274, -0.001339547924, -0.0004718314667, 0.002516377918, 0.007705626267, 0.01185776382, 0.007986060305, -0.002336639896, -2.62146411e-05, -0.0001360374639, -0.0003854388138, -0.0007533342094, -0.001036201452, -0.0007770086081, 0.0006165461289, 0.003272353508, 0.005548342445, 0.003766805427, -0.001321485144, -9.516376036e-06, -5.085100386e-05, -0.0001497304748, -0.0003106312062, -0.0004799861831, -0.0005165901781, -0.0002185296544, 0.0004977775241, 0.001190253808, 0.0007871919394, -0.0005175356261 +-2.0284758e-06, -1.251556224e-05, -4.129323917e-05, -9.38426463e-05, -0.0001555078561, -0.0001687174571, -1.068398856e-05, 0.000477879221, 0.00122424139, 0.001368821987, 0.00016288335, -6.29950443e-06, -3.881854045e-05, -0.0001270038895, -0.0002823875978, -0.0004428899124, -0.0003930505741, 0.0003126434026, 0.002258750871, 0.005302058477, 0.00663714058, 0.002844352405, -1.221146502e-05, -7.59736015e-05, -0.0002511847462, -0.0005656190623, -0.0009041543956, -0.0008460272194, 0.0004976858377, 0.004330840172, 0.01054052624, 0.01389718209, 0.007111552678, -1.787105084e-05, -0.0001125704455, -0.0003779916369, -0.0008699943111, -0.001445408422, -0.001517316046, 0.0002017688973, 0.005521192593, 0.01450722123, 0.02002610117, 0.01119897231, -2.106879125e-05, -0.0001344788126, -0.0004592522024, -0.001082829556, -0.00187563449, -0.002198275151, -0.0005777519874, 0.005141902598, 0.01530351228, 0.02222137759, 0.01324289194, -2.03449063e-05, -0.0001316485514, -0.0004575146818, -0.001105583089, -0.001994707319, -0.002570400989, -0.001472658652, 0.003382483573, 0.01258497218, 0.01949639394, 0.01230408473, -1.57865229e-05, -0.0001036543787, -0.0003669412624, -0.0009095382754, -0.001708332074, -0.00239281182, -0.001972289568, 0.001157904679, 0.007672734708, 0.01312265037, 0.008818143062, -9.144785279e-06, -6.105188733e-05, -0.0002206587995, -0.0005623893184, -0.001101561957, -0.001668448998, -0.001741351427, -0.0004092592697, 0.002865948595, 0.00601293317, 0.004408667183, -3.119802851e-06, -2.126232073e-05, -7.880705734e-05, -0.0002075175057, -0.0004258180288, -0.000697270464, -0.0008705189339, -0.0006481089743, 0.0002162857214, 0.001250803241, 0.001102532984, -7.856720532e-07, -5.347182477e-06, -2.021102494e-05, -5.406852287e-05, -0.0001082090528, -0.0001517635401, -8.23478343e-05, 0.0002755866478, 0.0009238777976, 0.001098528158, 4.581248019e-05, -2.623692237e-06, -1.764541663e-05, -6.537481386e-05, -0.000169587158, -0.0003216530162, -0.0003936357243, -4.548649032e-06, 0.001489536006, 0.004200060473, 0.005648369689, 0.002406647717, -5.401909163e-06, -3.633027789e-05, -0.0001343688431, -0.0003480146435, -0.0006606742289, -0.0008173282207, -5.67173497e-05, 0.002926751718, 0.008492667208, 0.01203459681, 0.006274194245, -8.357308276e-06, -5.642353286e-05, -0.0002095511278, -0.0005469069824, -0.001057081991, -0.001384213738, -0.0004300846597, 0.003733373561, 0.01180665696, 0.0175223506, 0.01005664542, -1.038513858e-05, -7.050850744e-05, -0.0002636035545, -0.0006956567419, -0.0013760163, -0.001921464642, -0.00108327692, 0.003396327319, 0.01253076972, 0.01958817004, 0.01202269226, -1.054686644e-05, -7.210018752e-05, -0.0002717732551, -0.0007265046974, -0.00147296829, -0.002187210479, -0.001725562914, 0.002057459146, 0.01032203387, 0.01727997866, 0.01125851542, -8.591909927e-06, -5.923437589e-05, -0.0002255257838, -0.0006118676952, -0.001273570205, -0.002005265352, -0.001983328447, 0.0004158490896, 0.006247916013, 0.01166538263, 0.008114759867, -5.219703823e-06, -3.638825425e-05, -0.0001403606722, -0.0003877781868, -0.0008314245257, -0.001388770433, -0.001634353016, -0.0006638494749, 0.002243498682, 0.005329820099, 0.00406760662, -1.868716649e-06, -1.323594739e-05, -5.199247265e-05, -0.0001470905685, -0.0003267727824, -0.0005812266007, -0.0007917933583, -0.0006699150952, 7.904226963e-05, 0.001077262605, 0.00101071019 +-2.289107958e-07, -1.878719335e-06, -8.501944254e-06, -2.807825637e-05, -7.571358343e-05, -0.000176362615, -0.0003586226068, -0.0005789435735, -0.0004126918822, 0.00111176258, 0.002928041445, -7.087277515e-07, -5.818534688e-06, -2.626284781e-05, -8.620744834e-05, -0.0002300480739, -0.0005271495476, -0.001042502943, -0.001576070467, -0.0006900594921, 0.00457052095, 0.01010382211, -1.366080559e-06, -1.128466776e-05, -5.122325605e-05, -0.0001689740725, -0.0004526836187, -0.001039527526, -0.002052948685, -0.003076123896, -0.001261824408, 0.009006086792, 0.01942162411, -1.987129756e-06, -1.654343239e-05, -7.569964343e-05, -0.0002517894213, -0.0006802199829, -0.001574793121, -0.003133997166, -0.004752303304, -0.002255462528, 0.01242478379, 0.02718689309, -2.328580172e-06, -1.954903952e-05, -9.025129648e-05, -0.0003030412022, -0.0008268745815, -0.001934083989, -0.003891352313, -0.006015247661, -0.003418677543, 0.01324289194, 0.03008053869, -2.234800078e-06, -1.892640643e-05, -8.819880973e-05, -0.0002991381252, -0.0008249883695, -0.001951353319, -0.003974551365, -0.006279705368, -0.004207788987, 0.01111082733, 0.02683360806, -1.722553745e-06, -1.472530202e-05, -6.931325322e-05, -0.0002376285501, -0.0006628965035, -0.001586924018, -0.003275983277, -0.005301746699, -0.00412022238, 0.007039281415, 0.01883443751, -9.899242081e-07, -8.552851968e-06, -4.071930392e-05, -0.0001413040367, -0.0003992900829, -0.0009689141646, -0.002031380866, -0.003380318376, -0.003027916918, 0.002891551521, 0.009499060222, -3.341918893e-07, -2.925429953e-06, -1.412167478e-05, -4.972456346e-05, -0.0001426717309, -0.0003518206004, -0.0007516631047, -0.001294467048, -0.001339824969, 0.0004164435223, 0.002597773058, -9.622114865e-08, -8.961282418e-07, -4.690785364e-06, -1.802651758e-05, -5.628697406e-05, -0.0001496640466, -0.0003397015419, -0.0005999425099, -0.0005070949612, 0.0009590878916, 0.002817040534, -3.174636053e-07, -2.922346498e-06, -1.508235332e-05, -5.704879257e-05, -0.000175000263, -0.0004556592157, -0.001004439117, -0.001671582414, -0.001016136875, 0.004074813008, 0.009755085646, -6.454586123e-07, -5.916048668e-06, -3.037067618e-05, -0.0001142433661, -0.0003485288473, -0.0009021965687, -0.001973556003, -0.003239095996, -0.001845753031, 0.008112994816, 0.01879504843, -9.865346098e-07, -9.026999209e-06, -4.623801363e-05, -0.0001735926303, -0.0005289176019, -0.001368342109, -0.002993294367, -0.004929190689, -0.002999253303, 0.01125572881, 0.02636155557, -1.211710577e-06, -1.108412345e-05, -5.673714169e-05, -0.0002129572172, -0.0006492603279, -0.001682466307, -0.003692292718, -0.00614320513, -0.004154118821, 0.012036858, 0.02921926826, -1.216604103e-06, -1.113725492e-05, -5.703382419e-05, -0.0002142556093, -0.0006543661141, -0.001700618041, -0.003750305488, -0.006325129068, -0.004781057017, 0.01011182101, 0.02610824098, -9.795472374e-07, -8.984433578e-06, -4.608376661e-05, -0.0001734699336, -0.0005313324586, -0.001386509437, -0.003077178263, -0.005276152297, -0.004458580891, 0.006392094135, 0.01835290694, -5.874504321e-07, -5.407926346e-06, -2.783182014e-05, -0.0001051535912, -0.0003235459691, -0.0008492126457, -0.001901136662, -0.003328727622, -0.003160051125, 0.002592649378, 0.009267739293, -2.070535935e-07, -1.918570983e-06, -9.933859441e-06, -3.776659749e-05, -0.000117013774, -0.0003096955525, -0.0007017869181, -0.001263577127, -0.00136185948, 0.0003417228543, 0.002535736638 +0.00273233847, -0.0001568100412, -0.001110847224, -0.0008115012545, -0.0004223895222, -0.0001869008263, -7.210397824e-05, -2.369946182e-05, -6.284269799e-06, -1.206432946e-06, -1.271911707e-07, 0.01099265558, 0.001544868312, -0.002863236518, -0.002478600059, -0.001357785599, -0.0006155379537, -0.000241579101, -8.063434211e-05, -2.17022937e-05, -4.228198699e-06, -4.523654549e-07, 0.02474793452, 0.006355033399, -0.004520822889, -0.004773457956, -0.002752553032, -0.001275570451, -0.0005076243392, -0.0001714308057, -4.665255981e-05, -9.187789583e-06, -9.935000334e-07, 0.04028500361, 0.01390184768, -0.005168070722, -0.007029561079, -0.004278307722, -0.002025464632, -0.0008159050058, -0.0002782002064, -7.638355397e-05, -1.517320151e-05, -1.654699082e-06, 0.05163274131, 0.02176904942, -0.004306101189, -0.008399942838, -0.005420853835, -0.00262322787, -0.001068787624, -0.0003674987522, -0.0001016699709, -2.03449063e-05, -2.234800078e-06, 0.05343640804, 0.0263716743, -0.002220833474, -0.008225186301, -0.005667835262, -0.002808043588, -0.001157259415, -0.0004010817206, -0.0001117364181, -2.250961453e-05, -2.48898632e-06, 0.04390347884, 0.02475937859, 9.764987759e-06, -0.006437305883, -0.004779351462, -0.002429980395, -0.001013682296, -0.0003541320228, -9.933295966e-05, -2.014190369e-05, -2.241542907e-06, 0.02644823081, 0.01671634263, 0.001072048782, -0.003756647592, -0.003021622449, -0.001578593932, -0.0006668019001, -0.0002347962827, -6.629852884e-05, -1.352884499e-05, -1.515023188e-06, 0.009007377065, 0.006198457789, 0.000597258213, -0.001349439696, -0.001149258594, -0.0006129525105, -0.0002613221672, -9.252219568e-05, -2.624431488e-05, -5.379389668e-06, -6.051425822e-07, 0.0006245289739, -0.000981383312, -0.0009855107649, -0.0005235474993, -0.000223070888, -8.51465199e-05, -2.96337498e-05, -9.204207546e-06, -2.420352324e-06, -4.82774821e-07, -5.504628824e-08, 0.003495199452, -0.002191085499, -0.00305856836, -0.001778582072, -0.0007892203084, -0.0003082907935, -0.0001091192994, -3.435034152e-05, -9.12581685e-06, -1.833583842e-06, -2.101274031e-07, 0.009113826392, -0.002665031029, -0.005864563378, -0.003736064146, -0.001725303301, -0.0006884888069, -0.0002472191059, -7.867712335e-05, -2.106989221e-05, -4.255853165e-06, -4.892482714e-07, 0.01630066269, -0.001590491163, -0.008466446598, -0.005944679792, -0.002860896678, -0.001166045929, -0.0004242784571, -0.0001363176364, -3.675162005e-05, -7.454162563e-06, -8.586967004e-07, 0.02241973831, 0.0009768336401, -0.009775077856, -0.007638590283, -0.003840088226, -0.001599533062, -0.0005895140112, -0.0001910745599, -5.18238426e-05, -1.05487294e-05, -1.217111099e-06, 0.0245637689, 0.003915018728, -0.009113727568, -0.008037671196, -0.004234290854, -0.001804649927, -0.0006737907076, -0.0002202614905, -6.008472352e-05, -1.227234002e-05, -1.418172485e-06, 0.0211328631, 0.005489955797, -0.006704093812, -0.006786064431, -0.003757910352, -0.001641131431, -0.0006210510613, -0.000204780882, -5.6187088e-05, -1.151724193e-05, -1.333237306e-06, 0.01313083719, 0.004479157012, -0.003699130004, -0.004308346144, -0.002506169721, -0.001121655417, -0.0004302119341, -0.0001430387754, -3.945849905e-05, -8.113887177e-06, -9.405773058e-07, 0.004463587569, 0.001666678669, -0.001367902207, -0.001690653738, -0.001016208229, -0.0004634636278, -0.0001795717794, -6.00123565e-05, -1.658799487e-05, -3.409844417e-06, -3.944512065e-07 +0.001021624828, 0.0009839171457, 6.101911505e-05, -0.0004786168686, -0.0005364006957, -0.0003853397038, -0.0002147411969, -9.583091958e-05, -3.331356278e-05, -8.226222277e-06, -1.106873263e-06, 0.004494595629, 0.005080512149, 0.001747214345, -0.0006748885187, -0.00135052352, -0.001114242331, -0.0006646142371, -0.000309902587, -0.0001113416768, -2.825019022e-05, -3.892219134e-06, 0.01073429245, 0.01305198114, 0.005907548083, -1.479153735e-05, -0.002151926943, -0.002068473464, -0.001311988058, -0.0006342565296, -0.000233789343, -6.05360929e-05, -8.485792877e-06, 0.01834821569, 0.02340200932, 0.01207005036, 0.001684840553, -0.002605022443, -0.002982605361, -0.002002936656, -0.0009987178056, -0.0003759711624, -9.895570565e-05, -1.406290616e-05, 0.02455653482, 0.03254839973, 0.01825657015, 0.003959445438, -0.002510083192, -0.003542072203, -0.00251113608, -0.00128691624, -0.0004933101904, -0.0001316485514, -1.892640643e-05, 0.0263716743, 0.03624535477, 0.02168886061, 0.005826326563, -0.001891678701, -0.0034967062, -0.002615043099, -0.001374672905, -0.0005356584629, -0.0001447384429, -2.102515884e-05, 0.02219765971, 0.03171686436, 0.02008469009, 0.006182044431, -0.001036466673, -0.002802887443, -0.002211350718, -0.001190983294, -0.0004712971263, -0.0001288453043, -1.890046028e-05, 0.01325897467, 0.01983400728, 0.0132341686, 0.004445534867, -0.0004045984457, -0.001719400381, -0.001417358339, -0.0007788272238, -0.0003122855416, -8.625790776e-05, -1.276549608e-05, 0.004077501175, 0.006472696373, 0.004500805662, 0.001513278299, -0.0002165762826, -0.0006879874677, -0.0005606651946, -0.0003081708629, -0.0001239394972, -3.437168049e-05, -5.109337029e-06, -0.0002064015304, 5.533626491e-05, -0.0001534062805, -0.0002865446529, -0.0002499636978, -0.0001595983521, -8.376352653e-05, -3.701397774e-05, -1.335317188e-05, -3.562429976e-06, -5.336195262e-07, -0.0001908139558, 0.0009553034753, 0.0001165435271, -0.0006466119455, -0.0007342808449, -0.000518388532, -0.0002873904027, -0.0001314659149, -4.854755421e-05, -1.316628404e-05, -1.996471022e-06, 0.0003833002222, 0.003145613292, 0.001262459591, -0.0008136674214, -0.001353930302, -0.001057519958, -0.0006158710867, -0.0002900712629, -0.0001091245981, -2.995641848e-05, -4.579841736e-06, 0.001581256281, 0.006361340983, 0.003315823138, -0.000565196245, -0.001908725885, -0.001655698251, -0.001009362597, -0.0004877442776, -0.0001863590564, -5.164794735e-05, -7.942597571e-06, 0.00300988426, 0.009523861062, 0.005680858797, 0.0001028913306, -0.00218223005, -0.002116558525, -0.001347854699, -0.0006666899728, -0.0002582285616, -7.214082055e-05, -1.11451074e-05, 0.00390350525, 0.01110701859, 0.007284509861, 0.0009175854526, -0.002038820371, -0.00223618762, -0.001486549109, -0.0007517784007, -0.0002949055959, -8.29912008e-05, -1.287360289e-05, 0.003506518588, 0.00985246466, 0.007022301432, 0.00138502296, -0.001531136682, -0.001915636958, -0.001327613954, -0.0006856951125, -0.0002722241789, -7.713755551e-05, -1.201151496e-05, 0.001742393083, 0.005750671868, 0.004484889998, 0.00103379149, -0.0009400952962, -0.001268977936, -0.0009037586721, -0.0004736606265, -0.0001896197453, -5.39771889e-05, -8.42419781e-06, -5.176594971e-05, 0.001190778171, 0.001088302366, 0.000106957183, -0.0005029269341, -0.0005671568303, -0.000390471265, -0.0002020678084, -8.027915094e-05, -2.271157628e-05, -3.524890745e-06 +-5.818795979e-05, 0.0008473727893, 0.0007586949526, 0.0001871110242, -0.0002452209574, -0.0003895476476, -0.000333334027, -0.0002060044071, -9.4884481e-05, -3.044415737e-05, -5.297601477e-06, -8.947531813e-05, 0.003865544398, 0.004139218554, 0.002066013325, 0.0001523202354, -0.0007749195492, -0.0008864110522, -0.0006156404184, -0.0003034513204, -0.0001020603328, -1.841768109e-05, -0.0001967871372, 0.009283980167, 0.01088059212, 0.006436898058, 0.001774503133, -0.0008270230519, -0.001512429327, -0.001180516963, -0.0006163300201, -0.0002150351757, -3.986274056e-05, -0.0005535385951, 0.01575928347, 0.01979184045, 0.01278140574, 0.004603900918, -0.0003488556977, -0.00199958137, -0.001758614481, -0.000965561387, -0.0003471643547, -6.574466802e-05, -0.001259388116, 0.02075507828, 0.02780941179, 0.01908472585, 0.007806739812, 0.000558719888, -0.00216870267, -0.002159484127, -0.001240329952, -0.0004575146818, -8.819880973e-05, -0.002220833474, 0.02168886061, 0.0311809741, 0.02252703236, 0.009989092835, 0.001511744841, -0.001941421639, -0.002209246303, -0.001323023899, -0.0004992707384, -9.777145053e-05, -0.003121986229, 0.01736302478, 0.02733960549, 0.02078678542, 0.009792155163, 0.001976856813, -0.001402036908, -0.001842027828, -0.001146893785, -0.0004418916349, -8.778492674e-05, -0.003417189484, 0.009201180826, 0.01691276723, 0.01365369473, 0.006742130978, 0.001548242847, -0.0008000395473, -0.001175770131, -0.0007534136, -0.0002950257092, -5.930525763e-05, -0.002329036025, 0.001777238032, 0.00519526436, 0.00459811012, 0.002318506186, 0.0004824412325, -0.0003585898468, -0.0004777708164, -0.00030225909, -0.0001182331399, -2.382369533e-05, -0.0003609598525, 0.0002659955589, 0.0002985797472, 5.52530648e-05, -0.000111107218, -0.0001556465535, -0.0001302072794, -8.305506188e-05, -4.120034646e-05, -1.468795645e-05, -2.89407051e-06, -0.001337072599, 0.00131349538, 0.001739095438, 0.000782452451, -3.114089664e-05, -0.0003715785436, -0.0003893233619, -0.0002728737728, -0.0001426607702, -5.25998981e-05, -1.061296788e-05, -0.003078434941, 0.003263354646, 0.004827102736, 0.002678035366, 0.0005469777472, -0.0005081398088, -0.0007333875112, -0.0005647466509, -0.0003089033184, -0.0001169019089, -2.398492782e-05, -0.005390240342, 0.005597599583, 0.009197987016, 0.005715405663, 0.001747448208, -0.0004271628197, -0.001060668019, -0.0008989841888, -0.0005117897304, -0.0001978153599, -4.109800282e-05, -0.007682534336, 0.007284854938, 0.01344696593, 0.009077407325, 0.003317276935, -9.192416729e-05, -0.001250192715, -0.001170936347, -0.0006913528609, -0.0002720493929, -5.708892501e-05, -0.009131024195, 0.007269213848, 0.01556841464, 0.01130675169, 0.004616669974, 0.000377924039, -0.001212402293, -0.001263911406, -0.000772353997, -0.0003088398711, -6.537070219e-05, -0.009028511307, 0.005106042159, 0.01391397471, 0.01089800421, 0.004826582462, 0.0007084620907, -0.0009533610854, -0.001109778425, -0.0006998619869, -0.0002838655769, -6.053961381e-05, -0.007120325803, 0.00155503894, 0.008456062099, 0.007288991243, 0.00341877376, 0.0005873412608, -0.0006108227842, -0.0007531955364, -0.0004827163988, -0.0001972248705, -4.222137399e-05, -0.003658450237, -0.0009521918104, 0.002151870526, 0.002259942996, 0.001052433158, 7.883607829e-05, -0.0003228454497, -0.0003381856083, -0.0002078282132, -8.329866923e-05, -1.763452514e-05 +-0.0002219994101, 0.0003426722367, 0.0006906346984, 0.0005528121208, 0.0001744715123, -0.0001620284605, -0.0003158990258, -0.0002951160558, -0.0001869941357, -7.998185337e-05, -1.845670281e-05, -0.0008868334608, 0.001560130555, 0.003439972312, 0.00329433432, 0.001901908621, 0.0004004800683, -0.000522540032, -0.0007567105896, -0.0005589176745, -0.0002599601627, -6.342572492e-05, -0.002227386407, 0.003589577216, 0.008660153768, 0.008934413184, 0.005904783809, 0.002236750898, -0.0002952084819, -0.001240375064, -0.001073458689, -0.0005354917674, -0.0001362614504, -0.004234763236, 0.00567711352, 0.01525405507, 0.0165658386, 0.01170113816, 0.005256716192, 0.0004969177153, -0.00156799432, -0.001604227678, -0.000849947386, -0.0002236582045, -0.006496366483, 0.006706235954, 0.02079441215, 0.02363695259, 0.01745078786, 0.008546916728, 0.001642752858, -0.001616260397, -0.001979436615, -0.001105583089, -0.0002991381252, -0.008225186301, 0.005826326563, 0.02252703236, 0.02688582924, 0.02058310537, 0.01066243912, 0.002645817531, -0.001363741374, -0.002038831645, -0.001194205631, -0.0003310113899, -0.008541231872, 0.003069699387, 0.01882365667, 0.02391414957, 0.01897440019, 0.01025515393, 0.002916574426, -0.000923155433, -0.001716611026, -0.001048992511, -0.0002970047266, -0.006900455243, -0.0002792075558, 0.0106459241, 0.01499999208, 0.01242131584, 0.006939392085, 0.002104906558, -0.0005158092791, -0.001112325419, -0.0006987188073, -0.000200894442, -0.003489910548, -0.001764814573, 0.002485944479, 0.004641615133, 0.004120402158, 0.002334225779, 0.0006536539717, -0.0002701381086, -0.0004618933112, -0.0002833472323, -8.114294248e-05, -0.000214997067, 9.788732235e-05, 0.0002663032922, 0.0002005912996, 5.17287627e-05, -7.196837224e-05, -0.0001313268951, -0.0001296202797, -9.059581059e-05, -4.373733798e-05, -1.14964546e-05, -0.0008931087097, 0.0004783604618, 0.001408415419, 0.001288324761, 0.0006867447336, 9.600387033e-05, -0.0002649950236, -0.0003689532856, -0.0002924731976, -0.000150894165, -4.134250479e-05, -0.002246586644, 0.001112343024, 0.003762847916, 0.003757289956, 0.002345843818, 0.0007997780845, -0.0002484770006, -0.000663231669, -0.0005978888551, -0.0003259838589, -9.20789976e-05, -0.004234080733, 0.001685389901, 0.006998340224, 0.007447774782, 0.005027518588, 0.002126303688, 3.053117664e-05, -0.0009153050329, -0.0009432171209, -0.0005391800865, -0.0001559389389, -0.006426712789, 0.001725647384, 0.01001396809, 0.01130127987, 0.008039227451, 0.003773727889, 0.0005436436914, -0.001028126583, -0.001220992174, -0.0007276185377, -0.0002145083884, -0.008049965348, 0.0009009552023, 0.01129777566, 0.01359528694, 0.0100985075, 0.00506254196, 0.001088807976, -0.0009479536192, -0.001313547832, -0.0008128437307, -0.0002435891697, -0.008261998206, -0.0006673297385, 0.009683954825, 0.0126811847, 0.009827582423, 0.005166489782, 0.001333370863, -0.0007112702021, -0.001153422011, -0.0007373402342, -0.0002240172381, -0.006586768174, -0.00220310019, 0.005344982121, 0.008148703906, 0.006639907662, 0.003599466045, 0.0009787118844, -0.0004570413572, -0.0007858489784, -0.0005087008159, -0.0001554652621, -0.003292028151, -0.00222274201, 0.0008362444522, 0.002329594432, 0.002073157156, 0.001100120118, 0.0002066215854, -0.0002747007733, -0.0003539822054, -0.0002168552747, -6.487682031e-05 +-0.0001501708796, 3.966603657e-05, 0.0003746825801, 0.000548507739, 0.0004482768955, 0.0001641892133, -0.0001252919506, -0.0002813421924, -0.0002726772514, -0.0001639431245, -5.235406931e-05, -0.0006170746491, 0.0002205365793, 0.001844013619, 0.002922916564, 0.002824336773, 0.001775710074, 0.0004722857031, -0.0004435816409, -0.0007178212346, -0.0005098159877, -0.0001777425638, -0.001556325358, 0.0003905407037, 0.004514300323, 0.007559057361, 0.007778108345, 0.005500537407, 0.002308923946, -0.0001856754553, -0.001215031678, -0.00101460127, -0.0003788689884, -0.00294963054, 0.0002245936723, 0.007655759674, 0.01354478945, 0.01452203913, 0.01087973189, 0.005272764184, 0.000601192783, -0.001599698838, -0.001567094916, -0.0006187420071, -0.004502829155, -0.0005510012614, 0.009921769995, 0.01872930589, 0.02079889955, 0.01619379059, 0.008457685585, 0.001700082219, -0.001737911215, -0.001994707319, -0.0008249883695, -0.005667835262, -0.001891678701, 0.009989092835, 0.02058310537, 0.02370836493, 0.01905379457, 0.01045586766, 0.00262917775, -0.001573700401, -0.002117603758, -0.0009113506831, -0.005832897804, -0.003296598067, 0.007345285934, 0.01749247451, 0.02110066595, 0.01749983624, 0.009974751079, 0.00283154127, -0.001173116947, -0.001836795193, -0.000817476621, -0.004634032421, -0.003878943253, 0.002970851447, 0.01013305077, 0.01319508513, 0.01137227771, 0.00668007539, 0.001996686056, -0.0007220704073, -0.001220618149, -0.000554113931, -0.002277257201, -0.002665059423, -0.0003523891154, 0.002493874138, 0.004006448576, 0.003693652433, 0.002200159235, 0.0005897383714, -0.0003609720645, -0.0005075261048, -0.0002254726876, -9.777351374e-05, -9.800460022e-06, 0.0001274587517, 0.0001894333428, 0.0001524919565, 5.038638622e-05, -6.370277395e-05, -0.0001399551231, -0.0001502403082, -0.000102316584, -3.707215611e-05, -0.0004217877663, -2.19535725e-05, 0.0006816464329, 0.001099394813, 0.001060560964, 0.0006705029526, 0.0001511242081, -0.0002665314753, -0.0004302920713, -0.0003364886455, -0.0001307858849, -0.001094018039, -0.0001186129398, 0.00179077464, 0.00306785002, 0.003162977472, 0.002272483031, 0.0009433039051, -0.0002177983589, -0.0007850049361, -0.000700015799, -0.0002871605357, -0.002119645145, -0.0004459359038, 0.003228843605, 0.005889826907, 0.006337466112, 0.00483283707, 0.002371544385, 0.0001107153966, -0.001108853042, -0.001122567478, -0.000480818905, -0.003302372365, -0.001112375913, 0.004407258495, 0.008675896871, 0.009681556985, 0.007671287985, 0.004085500604, 0.000666803793, -0.001287948541, -0.001476189691, -0.0006552440314, -0.00424015189, -0.002049339588, 0.004607919151, 0.01009508785, 0.01170561872, 0.009566574466, 0.005364053768, 0.001222119275, -0.001244849867, -0.001613308067, -0.000738245761, -0.004449938186, -0.002926800526, 0.003393837888, 0.008989876534, 0.01095925192, 0.009235807298, 0.005374889246, 0.001432160539, -0.000993061884, -0.001438236656, -0.0006746007312, -0.003607938889, -0.003183399865, 0.001099622953, 0.005277577174, 0.007041555484, 0.006168285328, 0.003678202695, 0.001015453277, -0.0006614785667, -0.0009857318964, -0.0004662656994, -0.001816602401, -0.002152302592, -0.000668122422, 0.001056159028, 0.001967296065, 0.001867623456, 0.001097086175, 0.0002016403864, -0.0003598226199, -0.0004294817204, -0.0001946653283 +-7.631259451e-05, -6.041748503e-05, 0.0001119052406, 0.0003422642843, 0.0004705011937, 0.0003997746226, 0.0001605617305, -0.0001152862704, -0.0002818602275, -0.0002696050843, -0.0001279840333, -0.0003142782992, -0.0002281888559, 0.0005933873088, 0.001777630095, 0.002613207731, 0.002583203131, 0.001695451617, 0.0004455091174, -0.0005146547716, -0.0007783998722, -0.00042863447, -0.000787907056, -0.000633555408, 0.00138982399, 0.004469467513, 0.006859822096, 0.007169490088, 0.005241367939, 0.002170070882, -0.0004371015891, -0.001451959341, -0.0009053131906, -0.001481900914, -0.001383413752, 0.002122308103, 0.007747097674, 0.01239751172, 0.01344161179, 0.01036759417, 0.004958197757, 7.386308841e-05, -0.002119733289, -0.001469409528, -0.002245817159, -0.002432482437, 0.002273296076, 0.01027575963, 0.01724858358, 0.01930393431, 0.01544008344, 0.007960909796, 0.0008825318316, -0.002570400989, -0.001951353319, -0.002808043588, -0.0034967062, 0.001511744841, 0.01066243912, 0.01905379457, 0.02204429692, 0.01817657699, 0.009849593835, 0.001629912888, -0.002618576821, -0.00215046843, -0.002869791184, -0.004092472659, -1.472837869e-05, 0.008245023749, 0.01627058062, 0.01963395582, 0.0166927361, 0.009395002693, 0.001869247241, -0.002202094041, -0.001927624466, -0.002259417811, -0.003713726202, -0.001531925363, 0.00382784364, 0.009466554221, 0.01225463574, 0.01082429474, 0.006271625688, 0.001318145657, -0.001458280237, -0.00130984744, -0.001096294002, -0.002105625265, -0.001710865411, 0.0001138305291, 0.002330409453, 0.003675856007, 0.003482869277, 0.0020376035, 0.0003236187428, -0.0006489128542, -0.0005380465863, -3.95797307e-05, -3.503852949e-05, 2.877356479e-05, 0.0001131851276, 0.0001672941459, 0.0001530586729, 6.221062875e-05, -7.172728685e-05, -0.0001791993188, -0.0001919356364, -0.0001018981165, -0.0001731239487, -0.0001463636788, 0.000180912991, 0.0006501285789, 0.001018765419, 0.001082712769, 0.0007649430429, 0.0001800025895, -0.0003783081319, -0.0005873359393, -0.0003524516138, -0.0004537238176, -0.000408142148, 0.0004585924837, 0.001768819517, 0.002879500119, 0.003218003287, 0.002533443827, 0.001074127613, -0.0004333025216, -0.001149259088, -0.0007625003602, -0.0008872637626, -0.0008815492667, 0.0007278174111, 0.003283830075, 0.005556156664, 0.006407296973, 0.005300929381, 0.002648038148, -0.0002266596806, -0.001747710742, -0.00126181786, -0.00139480134, -0.001546059978, 0.0007613816366, 0.004629619348, 0.008205598474, 0.009721722918, 0.008301727821, 0.004492562753, 0.0002162292043, -0.002194461876, -0.001703105899, -0.001806772736, -0.002240884742, 0.0003732897548, 0.005060824837, 0.009567501441, 0.01167447381, 0.01023061447, 0.005819963873, 0.0007077464636, -0.002303944894, -0.001903560782, -0.001911877213, -0.002669942525, -0.0004170989096, 0.004044460305, 0.008542131407, 0.01085531012, 0.00977056506, 0.005760249198, 0.0009447347651, -0.001990848872, -0.001728471283, -0.001560324478, -0.002494527616, -0.001246241381, 0.001768426084, 0.005035617789, 0.006919896982, 0.006461295203, 0.003897358922, 0.0006631175967, -0.001356759365, -0.001190493071, -0.0007886454969, -0.001480011945, -0.001292494586, -0.000273089468, 0.001017170623, 0.001904276737, 0.001942999508, 0.001154988586, 5.553024382e-05, -0.0006276456366, -0.0004981004098 +-3.269836775e-05, -6.216132215e-05, -2.017104025e-05, 0.0001206177804, 0.0003072889832, 0.0004293648048, 0.0003878170139, 0.0001663568418, -0.0001380870486, -0.0003435067136, -0.000274540671, -0.0001342578057, -0.0002485898483, -3.158704678e-05, 0.000670671817, 0.001656887003, 0.00243322122, 0.002498205923, 0.001676016175, 0.0003029461894, -0.0008397601999, -0.0009020415089, -0.0003338398955, -0.0006380496455, -0.0001266427139, 0.001641332123, 0.004234461435, 0.006442936473, 0.006947012564, 0.005163408235, 0.001783435999, -0.001300778301, -0.001878515678, -0.0006220402901, -0.001251341806, -0.0004534904059, 0.00265953766, 0.007426206722, 0.01171391373, 0.01306170517, 0.01022453053, 0.004245513536, -0.001540031703, -0.003016939694, -0.0009339925184, -0.001989088004, -0.001094752803, 0.003146150225, 0.009956774186, 0.01637906327, 0.01881886011, 0.01526582329, 0.006949988649, -0.001472658652, -0.003974551365, -0.001157259415, -0.002615043099, -0.001941421639, 0.002645817531, 0.01045586766, 0.01817657699, 0.02156380637, 0.01802908951, 0.008702139978, -0.001144296245, -0.004354011729, -0.001171617889, -0.002820399352, -0.00265377385, 0.001162270776, 0.008220799307, 0.01558990072, 0.01927227708, 0.01661518472, 0.008363461185, -0.0007333256976, -0.003888545964, -0.0009124877822, -0.002362395859, -0.002741232314, -0.0006174568217, 0.003954286467, 0.00910697036, 0.01206672608, 0.01081067751, 0.005589805711, -0.0004776094033, -0.002645400279, -0.0004370755029, -0.001236028531, -0.001746665927, -0.001295880822, 0.0002444308415, 0.002248199036, 0.003629857284, 0.003492267915, 0.001784469938, -0.0003706330378, -0.001100294645, -1.46324677e-05, -2.777132486e-05, -1.527760365e-05, 3.529473293e-05, 0.0001141312642, 0.0001844295333, 0.0001901732358, 8.70008662e-05, -0.0001081785486, -0.0002784566312, -0.0002411941459, -6.434222145e-05, -0.0001197386856, -4.549397919e-05, 0.0002312493722, 0.0006770201972, 0.001123355323, 0.001297437656, 0.0009580909986, 0.0001229164772, -0.0007376819226, -0.0008142091303, -0.0001690129991, -0.0003224866135, -0.0001321114623, 0.0006164436739, 0.001854994559, 0.003150763788, 0.003783219353, 0.003088474373, 0.001038479001, -0.001244989815, -0.001728898206, -0.0003308865929, -0.0006586003525, -0.0003422089658, 0.001061312965, 0.003453386765, 0.00602955507, 0.007424714974, 0.006351956494, 0.002674090139, -0.001623894052, -0.002818186021, -0.000520494883, -0.001088363487, -0.0007185935297, 0.001305326205, 0.004882708851, 0.008836609369, 0.01113167165, 0.009815422309, 0.004589680229, -0.001738668306, -0.003756254659, -0.0006743841384, -0.001487990447, -0.001213478699, 0.001090142821, 0.005368341663, 0.01023514656, 0.01323366659, 0.01196343134, 0.005958284075, -0.00154953623, -0.004153997179, -0.0007132597713, -0.001671668589, -0.001652104181, 0.0003432459257, 0.004351941558, 0.009093485564, 0.01220692975, 0.0113266632, 0.005884336771, -0.001159867904, -0.003740116905, -0.0005810070554, -0.001466194647, -0.00175327563, -0.0006395942354, 0.002008369523, 0.005358488791, 0.007753928917, 0.007462056526, 0.003958738114, -0.0007936445919, -0.002565211182, -0.0002926661899, -0.0008127006588, -0.001181420682, -0.001009767516, -0.000156579149, 0.001117135751, 0.002174491296, 0.002287451504, 0.001161053029, -0.0005111100217, -0.001078995644 +-1.176217995e-05, -3.683512941e-05, -5.088463717e-05, -1.309633477e-05, 0.0001026559036, 0.0002747024814, 0.000421340128, 0.0004216784374, 0.0001726807071, -0.0002790852863, -0.000491240516, -4.812495632e-05, -0.0001489864495, -0.0001918265178, 1.535797359e-05, 0.0006101845972, 0.0015187114, 0.002379926524, 0.002618783685, 0.001696984897, -0.0002928267357, -0.001549637406, -0.0001187761177, -0.0003734216535, -0.0004927377637, 1.453873653e-05, 0.001530493175, 0.003922003734, 0.006315576989, 0.007238603235, 0.005229591788, 0.0003468567263, -0.003122151329, -0.0002194348278, -0.0007075858501, -0.0009903408333, -0.0001643318627, 0.00252426315, 0.006925708349, 0.01152180041, 0.0136118881, 0.01038481522, 0.001707686928, -0.004878276042, -0.0003266102767, -0.001084480803, -0.001625061253, -0.0006387508858, 0.003041580409, 0.009336382533, 0.01617504861, 0.01966214518, 0.01556085114, 0.003382483573, -0.006279705368, -0.0004010817206, -0.001374672905, -0.002209246303, -0.001363741374, 0.00262917775, 0.009849593835, 0.01802908951, 0.0226195533, 0.01845070617, 0.004614009712, -0.00674633564, -0.0004021644777, -0.001427919827, -0.002467264634, -0.002068639676, 0.001254633568, 0.007771304461, 0.01553638309, 0.02032078136, 0.01707544568, 0.004608287182, -0.005936761225, -0.0003097068405, -0.001147425377, -0.002147939483, -0.002298110838, -0.0004604327933, 0.003736647008, 0.009122555259, 0.01281568378, 0.01115656915, 0.003031303815, -0.004025504253, -0.0001463539952, -0.0005726571568, -0.001175482853, -0.001550618399, -0.001178066661, 0.0002111069461, 0.002274365884, 0.003918994483, 0.003622381192, 0.0007869537337, -0.001717136468, -4.838840228e-06, -1.537888203e-05, -2.38305753e-05, -1.362336193e-05, 3.472290734e-05, 0.0001277712668, 0.0002347682792, 0.0002693489561, 0.0001099224012, -0.0002642355444, -0.0004649005038, -2.129061782e-05, -6.678305543e-05, -9.656858841e-05, -2.602946332e-05, 0.0002456256153, 0.000760042723, 0.001384412385, 0.001721033027, 0.001187523705, -0.0003986483494, -0.001502664116, -5.581849438e-05, -0.0001769572519, -0.0002574774147, -6.877839469e-05, 0.0006642844975, 0.002066437347, 0.003813216087, 0.004891263122, 0.0037842819, -7.98035195e-05, -0.00308094218, -0.000108957097, -0.0003525097577, -0.0005326859855, -0.0002098051589, 0.001151904843, 0.003812646645, 0.007197888516, 0.009441993322, 0.007706339098, 0.0008123780631, -0.004876363391, -0.0001707901056, -0.000566510561, -0.0009000825128, -0.0005080475974, 0.00143127905, 0.005343836929, 0.01043098448, 0.0139814605, 0.01180257033, 0.002038834757, -0.006336977992, -0.0002203781268, -0.0007519844496, -0.001263427067, -0.0009451292086, 0.001228628251, 0.005829173552, 0.01197100317, 0.01646210498, 0.0142715431, 0.003049722767, -0.006855411543, -0.0002318956439, -0.0008179701381, -0.001462777068, -0.00137956989, 0.0004637750396, 0.004696203199, 0.0105660373, 0.01508705218, 0.01342498264, 0.003188326539, -0.006063669289, -0.0001876053528, -0.0006906330946, -0.001331293839, -0.001549230234, -0.0005627868627, 0.002168976815, 0.006230990144, 0.009595330446, 0.008824811671, 0.002084502957, -0.004127752585, -9.366361526e-05, -0.0003656992751, -0.0007736447963, -0.001095730307, -0.0009810511684, -0.000134884454, 0.001373129919, 0.002800217827, 0.002758101206, 0.0004115523419, -0.001767820127 +-3.381666611e-06, -1.535658824e-05, -3.557127093e-05, -4.986153628e-05, -2.854451012e-05, 6.318025818e-05, 0.0002396112214, 0.0004455549925, 0.0004751487493, 1.884849088e-05, -0.0005793172663, -1.37938473e-05, -6.231618651e-05, -0.0001411540155, -0.0001827231234, -4.613409803e-05, 0.0004377670186, 0.001349188806, 0.002455503175, 0.00285115865, 0.001127670534, -0.001574981705, -3.383562421e-05, -0.0001542386729, -0.00035255509, -0.0004608203572, -0.0001185854589, 0.001121798024, 0.003500903504, 0.006478322262, 0.007815544668, 0.003950161922, -0.002750711883, -6.206871649e-05, -0.0002870739835, -0.0006704420521, -0.0009176153069, -0.000368221701, 0.001829140287, 0.006184678142, 0.0117985726, 0.01464943182, 0.008215961703, -0.003740734716, -9.170113798e-05, -0.00043141114, -0.001034676939, -0.001500275074, -0.0008768017355, 0.002112866506, 0.00831289822, 0.01655714947, 0.02112731966, 0.01258497218, -0.004207788987, -0.0001117364181, -0.0005356584629, -0.001323023899, -0.002038831645, -0.001573700401, 0.001629912888, 0.008702139978, 0.01845070617, 0.02427795881, 0.0150834595, -0.003970873338, -0.0001110722285, -0.0005440045368, -0.001388522705, -0.002280802957, -0.002190595786, 0.0004088745854, 0.006737191675, 0.01588042109, 0.02177908079, 0.01398652779, -0.003132786926, -8.464415047e-05, -0.0004256775866, -0.001130127438, -0.00199257463, -0.002311776167, -0.0009677989435, 0.003038760646, 0.009278313833, 0.01369005663, 0.009010929937, -0.002081285285, -3.947354332e-05, -0.0002055896781, -0.0005735077162, -0.001096104887, -0.001507328223, -0.001326178254, -5.779299224e-05, 0.002265911971, 0.004147991837, 0.002729439574, -0.001081687951, -1.357075939e-06, -6.494702471e-06, -1.67834619e-05, -2.815572913e-05, -2.524204011e-05, 2.0911617e-05, 0.0001397614498, 0.0003111208036, 0.0003601941533, -3.260141443e-05, -0.0005811841478, -5.949886026e-06, -2.814500766e-05, -7.051412751e-05, -0.0001094659007, -6.695088384e-05, 0.000198941848, 0.000833418755, 0.001760839201, 0.002225079529, 0.0007944644854, -0.001636983849, -1.551597701e-05, -7.35696819e-05, -0.0001838513698, -0.0002827280939, -0.0001634681047, 0.0005479457234, 0.002239534315, 0.004748733823, 0.006214100996, 0.003048737128, -0.002954534254, -3.010602364e-05, -0.0001439546596, -0.0003633409094, -0.0005711633772, -0.0003793697721, 0.000918642342, 0.004069009536, 0.008821532672, 0.01183057635, 0.006576616988, -0.004144235915, -4.689237045e-05, -0.0002268405037, -0.0005818493021, -0.0009477159443, -0.0007546367833, 0.001049656945, 0.005600382137, 0.01260737162, 0.01730171351, 0.01030383629, -0.004798997341, -6.00950975e-05, -0.0002948477463, -0.0007717496774, -0.001311198396, -0.001239049006, 0.0007180211019, 0.005971478907, 0.014282184, 0.02013273871, 0.01255334696, -0.004652543248, -6.274169096e-05, -0.0003132943184, -0.0008409134371, -0.001500075877, -0.001660138586, -8.529901031e-05, 0.004647204567, 0.01244753154, 0.0182425881, 0.01177029628, -0.00375137663, -5.026042533e-05, -0.000257082346, -0.0007136865559, -0.001351505852, -0.00174577269, -0.001004400076, 0.001963844352, 0.007254831091, 0.01148615367, 0.007578752324, -0.002497542483, -2.477524906e-05, -0.0001312620386, -0.0003818253185, -0.0007784363509, -0.001169615714, -0.001183297198, -0.0003128443763, 0.001604753408, 0.00335398892, 0.00218344255, -0.001249569758 +-6.989382427e-07, -4.337802805e-06, -1.444852627e-05, -3.335800888e-05, -5.694670752e-05, -6.688356782e-05, -2.279040769e-05, 0.0001281942893, 0.000360640472, 0.0003909639922, -1.109908448e-07, -2.844052831e-06, -1.76179557e-05, -5.820160353e-05, -0.0001317267916, -0.0002145347863, -0.0002169140172, 5.170490287e-05, 0.0008422490177, 0.002080241431, 0.002547498897, 0.0009192726193, -6.942169993e-06, -4.325793127e-05, -0.0001436164307, -0.0003261790128, -0.0005313145209, -0.0005302894219, 0.0001667209768, 0.002219069336, 0.005520531633, 0.007133709917, 0.003340604786, -1.266229255e-05, -7.961690897e-05, -0.0002671015787, -0.0006148210591, -0.001022894058, -0.001079124738, 0.0001211821593, 0.003830710123, 0.009995277674, 0.01348081467, 0.007106823416, -1.859416112e-05, -0.0001181598839, -0.0004016073626, -0.0009411093576, -0.00161319406, -0.001839049305, -0.0003022309578, 0.004880660989, 0.0138393095, 0.01949639394, 0.01111082733, -2.250961453e-05, -0.0001447384429, -0.0004992707384, -0.001194205631, -0.002117603758, -0.002618576821, -0.001144296245, 0.004614009712, 0.0150834595, 0.02239406083, 0.01360986447, -2.220972935e-05, -0.0001447535232, -0.0005078879914, -0.001243643554, -0.002289996089, -0.003074800218, -0.002136336643, 0.002807649024, 0.01248336822, 0.02000616239, 0.01296874767, -1.6767041e-05, -0.0001111304645, -0.0003981932611, -0.001003218331, -0.001930476633, -0.002827391089, -0.002681978492, 0.0002010117305, 0.006654101645, 0.01241187706, 0.00873565676, -7.721616996e-06, -5.233711172e-05, -0.000192724377, -0.0005032276133, -0.001020208547, -0.001637761674, -0.001962058807, -0.001252856174, 0.001038405179, 0.003585964649, 0.002965213513, -2.88843874e-07, -1.95975399e-06, -7.394168345e-06, -1.982948725e-05, -4.016702429e-05, -5.86530216e-05, -4.165061203e-05, 6.850449393e-05, 0.0002697263981, 0.0003085584614, -3.573671054e-05, -1.25723714e-06, -8.434216407e-06, -3.123424504e-05, -8.142832568e-05, -0.000157262805, -0.0002054790034, -6.300303875e-05, 0.0005443740933, 0.001645879833, 0.002156455225, 0.0007470790059, -3.251584356e-06, -2.175551412e-05, -8.011305086e-05, -0.0002071714112, -0.0003953993815, -0.0005038572049, -0.0001102257392, 0.001498747368, 0.00446549621, 0.006176866094, 0.002913866872, -6.255665625e-06, -4.190919338e-05, -0.0001543771984, -0.0003997241137, -0.0007670407162, -0.0009982560227, -0.0003121204525, 0.00262889349, 0.008197402469, 0.01182928938, 0.006361591007, -9.660301323e-06, -6.495037056e-05, -0.0002401255633, -0.0006256347911, -0.001217461902, -0.00165153374, -0.000792357709, 0.003343496285, 0.01146101794, 0.01727416201, 0.0100958143, -1.227063536e-05, -8.295061493e-05, -0.0003085613965, -0.0008117244919, -0.001610104224, -0.002296852798, -0.001537055529, 0.003066608198, 0.0125678022, 0.019990035, 0.0124963945, -1.268609885e-05, -8.643151601e-05, -0.0003244475084, -0.0008650527829, -0.001758122351, -0.00265520327, -0.002308158029, 0.001618031842, 0.0103930362, 0.01794432276, 0.01199656048, -1.004178305e-05, -6.923832641e-05, -0.0002635675051, -0.0007165230588, -0.00150385196, -0.002427972481, -0.002637061112, -0.0004240835449, 0.005393491042, 0.01110726302, 0.008105077448, -4.873235823e-06, -3.424285292e-05, -0.0001331803682, -0.0003722553812, -0.0008146190344, -0.001419075737, -0.00186465844, -0.001418052518, 0.000602994705, 0.003102265562, 0.002723721911 +-7.887652112e-08, -6.500570063e-07, -2.957989041e-06, -9.836586123e-06, -2.674497688e-05, -6.288849452e-05, -0.0001292237584, -0.000211904961, -0.0001648740318, 0.0003451793001, 0.000959161405, -3.20380602e-07, -2.640511674e-06, -1.198594021e-05, -3.964414261e-05, -0.0001068251748, -0.0002477113511, -0.0004970883464, -0.0007713025575, -0.0004255420333, 0.001867767062, 0.004314438523, -7.790454077e-07, -6.447753016e-06, -2.936519391e-05, -9.734076612e-05, -0.0002624679872, -0.0006075237412, -0.001210771683, -0.001839647501, -0.0008657964097, 0.004881779449, 0.01068290154, -1.414542619e-06, -1.177739115e-05, -5.394992628e-05, -0.0001798278204, -0.0004873270358, -0.001132401375, -0.002260176603, -0.003426373949, -0.001617601915, 0.008826782129, 0.01906899168, -2.067085236e-06, -1.732910162e-05, -7.994384296e-05, -0.0002684029779, -0.0007326332728, -0.001714013994, -0.00344100299, -0.005257484904, -0.002720896011, 0.01230408473, 0.02683360806, -2.48898632e-06, -2.102515884e-05, -9.777145053e-05, -0.0003310113899, -0.0009113506831, -0.00215046843, -0.004354011729, -0.00674633564, -0.003970873338, 0.01360986447, 0.03057664752, -2.44033203e-06, -2.079254096e-05, -9.757653111e-05, -0.0003335581006, -0.0009276884762, -0.002211774496, -0.004528101, -0.007157315352, -0.00488756851, 0.01158799424, 0.02771509835, -1.826992295e-06, -1.573101178e-05, -7.464931897e-05, -0.0002582038593, -0.0007270448079, -0.001755979735, -0.003649054621, -0.005935097576, -0.004808084788, 0.006612715951, 0.01832127835, -8.313978935e-07, -7.256736636e-06, -3.492504865e-05, -0.0001225780425, -0.0003504003943, -0.0008599020302, -0.001822471289, -0.003084356494, -0.003018121812, 0.001474544351, 0.006635845315, -3.510002916e-08, -3.249069106e-07, -1.691802812e-06, -6.477824714e-06, -2.019181565e-05, -5.370038954e-05, -0.0001221628369, -0.000217363228, -0.0001938421104, 0.0002972794064, 0.0009241683032, -1.512911461e-07, -1.385549582e-06, -7.12173266e-06, -2.6876376e-05, -8.244034158e-05, -0.0002151731654, -0.0004769689233, -0.0008058254768, -0.0005563505132, 0.001664932253, 0.004171067574, -3.873011409e-07, -3.528119983e-06, -1.801480021e-05, -6.749730853e-05, -0.0002054697448, -0.0005316900254, -0.001164678444, -0.001922181247, -0.001172786624, 0.004410146098, 0.0103527675, -7.375738298e-07, -6.700463986e-06, -3.408995416e-05, -0.0001272511223, -0.0003859835281, -0.0009951454255, -0.002169461049, -0.003552148109, -0.002125314985, 0.008038039489, 0.01851741767, -1.127571883e-06, -1.023152315e-05, -5.196182326e-05, -0.0001936297403, -0.0005865626228, -0.001510872366, -0.003290903362, -0.005392994402, -0.003372203216, 0.01126717681, 0.02610544779, -1.417652217e-06, -1.286547806e-05, -6.531372915e-05, -0.0002433289132, -0.00073734775, -0.001901037988, -0.004148037317, -0.006843776577, -0.004635625127, 0.01250987773, 0.02979734016, -1.449497875e-06, -1.317621976e-05, -6.697078018e-05, -0.0002498461084, -0.0007585990687, -0.00196132194, -0.004298497198, -0.007182902434, -0.005414503026, 0.01066201267, 0.0270492136, -1.132178491e-06, -1.033297566e-05, -5.270306313e-05, -0.0001973315412, -0.0006016910868, -0.001563913591, -0.003455505364, -0.005899313436, -0.005104528311, 0.006038771288, 0.01789882437, -5.397900724e-07, -4.963916549e-06, -2.548569843e-05, -9.602369583e-05, -0.0002947155298, -0.0007720181447, -0.001727103366, -0.003046093913, -0.003110472895, 0.001267565455, 0.006478924922 +0.0006780684901, -5.63770062e-05, -0.0003213389928, -0.0002377655858, -0.0001242237647, -5.485777433e-05, -2.10881111e-05, -6.907151779e-06, -1.825987745e-06, -3.496617678e-07, -3.678845927e-08, 0.003485016751, 0.000377574623, -0.001155731473, -0.0009841254633, -0.0005374507601, -0.0002421627681, -9.434934994e-05, -3.127235825e-05, -8.364115454e-06, -1.620566333e-06, -1.725424724e-07, 0.009925432289, 0.002322402489, -0.002433954961, -0.002446975642, -0.001400488256, -0.0006436667349, -0.0002537843226, -8.495161241e-05, -2.293643363e-05, -4.48586837e-06, -4.821350264e-07, 0.02038168831, 0.006792149601, -0.003688599336, -0.004573992995, -0.002755336589, -0.001292614537, -0.0005153991844, -0.0001740245332, -4.736574965e-05, -9.337655325e-06, -1.01161568e-06, 0.03309132089, 0.01393887763, -0.004150671751, -0.00690040638, -0.004403640282, -0.002112382619, -0.0008518408158, -0.0002899715403, -7.950542728e-05, -1.57865229e-05, -1.722553745e-06, 0.04390347884, 0.02219765971, -0.003121986229, -0.008541231872, -0.005832897804, -0.002869791184, -0.001171617889, -0.0004021644777, -0.0001110722285, -2.220972935e-05, -2.44033203e-06, 0.0472494001, 0.02790416608, -0.0006249071444, -0.008478589781, -0.006293141093, -0.003190870348, -0.001321625254, -0.0004579406457, -0.0001274847265, -2.568330456e-05, -2.842685618e-06, 0.03852557415, 0.02605250354, 0.001891440889, -0.006252551523, -0.005149998509, -0.002706893226, -0.001140824303, -0.0003997314949, -0.0001122988233, -2.281259122e-05, -2.544727751e-06, 0.01851450854, 0.01397760811, 0.001987996437, -0.002744350202, -0.002534990262, -0.001384662741, -0.0005948742775, -0.0002109987792, -5.983851183e-05, -1.22527111e-05, -1.376098199e-06, 0.0001586884495, -0.0002726438976, -0.0002887881908, -0.0001588652662, -6.895682993e-05, -2.655848744e-05, -9.278995915e-06, -2.881870081e-06, -7.548170881e-07, -1.494299139e-07, -1.686786199e-08, 0.00111446092, -0.0008505181225, -0.001199474279, -0.0007177659272, -0.0003237731189, -0.0001273323843, -4.512444361e-05, -1.416781378e-05, -3.740860795e-06, -7.446682895e-07, -8.436106063e-08, 0.003716385648, -0.001403058196, -0.002944398154, -0.001924864031, -0.0009032940894, -0.0003626037204, -0.0001301781547, -4.126059794e-05, -1.096908669e-05, -2.193335717e-06, -2.491232945e-07, 0.008477749861, -0.001235248463, -0.005354479094, -0.003856068758, -0.001887125507, -0.0007736904134, -0.0002812601813, -8.992344293e-05, -2.40522304e-05, -4.828003696e-06, -5.495001546e-07, 0.01491684322, 0.000369790546, -0.007737170767, -0.006218952023, -0.003185355072, -0.001335599719, -0.0004917282032, -0.0001585410422, -4.265286334e-05, -8.593202707e-06, -9.799197323e-07, 0.02114206379, 0.003526585439, -0.009007526392, -0.008248613123, -0.004443813399, -0.001909697844, -0.0007126545589, -0.0002317761609, -6.273048831e-05, -1.268759064e-05, -1.449987794e-06, 0.02401978306, 0.007027331506, -0.008253853013, -0.00887855253, -0.005061428588, -0.002235737944, -0.0008469148695, -0.0002780616378, -7.574986854e-05, -1.538740532e-05, -1.763036521e-06, 0.02031712497, 0.008099429763, -0.005653373492, -0.007334219418, -0.004438972757, -0.002020113422, -0.0007779385646, -0.0002580038113, -7.074235251e-05, -1.442523467e-05, -1.655580054e-06, 0.00979876317, 0.004519981392, -0.002591620641, -0.003823342362, -0.002428080285, -0.001135683375, -0.0004443046545, -0.0001486214685, -4.089667438e-05, -8.336750678e-06, -9.535762833e-07 +0.0002710133336, 0.0002289408572, -2.432990095e-05, -0.0001625801723, -0.0001672910761, -0.0001167788641, -6.409688046e-05, -2.832531122e-05, -9.778605875e-06, -2.402247288e-06, -3.219692719e-07, 0.001532818234, 0.001548048754, 0.0003474554474, -0.0004506363067, -0.0006149211624, -0.0004695369247, -0.0002703361475, -0.0001233880456, -4.367811268e-05, -1.095995703e-05, -1.496976173e-06, 0.004691535452, 0.005174958023, 0.001873654317, -0.0006236021874, -0.001366391217, -0.001148556041, -0.0006916904112, -0.000324784777, -0.0001174186673, -2.997730542e-05, -4.156760837e-06, 0.01026169985, 0.01200098005, 0.005310197856, -0.0002844157031, -0.002287184533, -0.002137639472, -0.001344435667, -0.0006477315869, -0.0002385333018, -6.180750438e-05, -8.680525173e-06, 0.01766877474, 0.02165936158, 0.01082483684, 0.0009316187399, -0.003070428431, -0.003247884653, -0.002134159691, -0.001053694806, -0.0003946944149, -0.0001036543787, -1.472530202e-05, 0.02475937859, 0.03171686436, 0.01736302478, 0.003069699387, -0.003296598067, -0.004092472659, -0.002820399352, -0.001427919827, -0.0005440045368, -0.0001447535232, -2.079254096e-05, 0.02790416608, 0.03742204501, 0.0221602236, 0.005458009822, -0.00265277132, -0.004181043219, -0.003048830853, -0.001587310573, -0.0006158663698, -0.0001661609475, -2.414287757e-05, 0.02329259301, 0.03283939076, 0.02089018318, 0.006304456179, -0.001384693154, -0.003231548585, -0.002518328145, -0.001352405451, -0.0005351710149, -0.0001465154319, -2.15404689e-05, 0.01086564214, 0.01614972244, 0.01090202613, 0.003663139592, -0.0004363206412, -0.00155709467, -0.00127760498, -0.0007031158677, -0.000282665098, -7.828377458e-05, -1.161085357e-05, -5.162777463e-05, -1.244896683e-05, -7.055454816e-05, -0.0001000386178, -8.263167485e-05, -5.176862193e-05, -2.686895765e-05, -1.174785014e-05, -4.187585277e-06, -1.102447109e-06, -1.629035464e-07, -4.754668862e-05, 0.0001835587558, -0.0001279394303, -0.0003562702138, -0.0003419506923, -0.0002294098496, -0.0001239027598, -5.558770121e-05, -2.016350472e-05, -5.373505144e-06, -8.011737697e-07, 0.0002873708108, 0.001014688724, 8.484000525e-05, -0.0007365592815, -0.0008479727157, -0.0006094768141, -0.0003416893878, -0.0001568857007, -5.777254832e-05, -1.555091759e-05, -2.334447353e-06, 0.001302753165, 0.002937943666, 0.0009294114459, -0.001081758415, -0.001580989427, -0.001220623976, -0.0007094430533, -0.0003328227199, -0.0001242342265, -3.373030495e-05, -5.091460647e-06, 0.003164156408, 0.006095151371, 0.002665836531, -0.001131886812, -0.002375777868, -0.001982980486, -0.001195273402, -0.0005726350805, -0.0002165340705, -5.926498375e-05, -8.990351049e-06, 0.00548708491, 0.009861896322, 0.005126587034, -0.0006485754893, -0.00291558797, -0.002665062658, -0.001670188515, -0.0008177557327, -0.0003133491103, -8.647088833e-05, -1.318409437e-05, 0.00700825753, 0.01237151998, 0.00724058575, 0.0002634254327, -0.00288168805, -0.002931402542, -0.001915533926, -0.0009594207927, -0.0003726998627, -0.0001037232213, -1.589703457e-05, 0.005839566873, 0.01062049618, 0.006729519629, 0.0006892617419, -0.002322898898, -0.002556090294, -0.00172346584, -0.0008781340063, -0.0003445239652, -9.641254081e-05, -1.481636145e-05, 0.001921101237, 0.003963947336, 0.002477303114, -0.0001854341167, -0.001536686736, -0.001540962415, -0.00101786218, -0.0005140664276, -0.0002002964849, -5.564720657e-05, -8.484614373e-06 +-1.553521898e-05, 0.0002086494357, 0.0001766663134, 1.898008815e-05, -9.488991549e-05, -0.0001264209227, -0.0001030022045, -6.216139432e-05, -2.822574222e-05, -8.9704432e-06, -1.550421977e-06, -1.918511452e-05, 0.001233641465, 0.001262324063, 0.0005147597333, -0.0001325918779, -0.0004065268476, -0.0003917160444, -0.0002557888453, -0.0001220047854, -4.018747145e-05, -7.147233295e-06, 1.964543672e-05, 0.00383346606, 0.004320749011, 0.002272644518, 0.0002592813544, -0.0007547352649, -0.0009058585965, -0.0006403798534, -0.0003192518025, -0.0001083774919, -1.97248116e-05, 9.943074767e-05, 0.00841501287, 0.01016482562, 0.006047119621, 0.001547296833, -0.0009648137981, -0.001590740251, -0.001220505176, -0.0006338427387, -0.0002209266677, -4.100464057e-05, 0.0001523550615, 0.01445184578, 0.01853210911, 0.01195544503, 0.004005287653, -0.0007774600454, -0.002269168046, -0.001902005908, -0.001027517644, -0.0003669412624, -6.931325322e-05, 9.764987759e-06, 0.02008469009, 0.02733960549, 0.01882365667, 0.007345285934, -1.472837869e-05, -0.00265377385, -0.002467264634, -0.001388522705, -0.0005078879914, -9.757653111e-05, -0.0006249071444, 0.0221602236, 0.03237409232, 0.02369748562, 0.01031376228, 0.001178137877, -0.002459843577, -0.002614593366, -0.001540157973, -0.0005778362344, -0.000112968339, -0.001918611289, 0.01734306857, 0.02818530072, 0.02203679472, 0.01045250049, 0.001987637795, -0.00168141863, -0.002120066073, -0.001311821163, -0.0005051575802, -0.000100485023, -0.00255846493, 0.006515285004, 0.01324809975, 0.01124132261, 0.00566882251, 0.001263411224, -0.0007614304047, -0.001074039921, -0.0006854748931, -0.0002684612655, -5.399615772e-05, -0.0001001354654, 6.010313186e-05, 6.871468376e-05, 5.827655562e-07, -4.483795365e-05, -5.416032127e-05, -4.320923968e-05, -2.678723228e-05, -1.299245323e-05, -4.542720874e-06, -8.800852098e-07, -0.0004685422609, 0.0003959197212, 0.0005339104499, 0.0001881396927, -9.586350701e-05, -0.0001981346953, -0.0001810030346, -0.0001196256978, -6.023628195e-05, -2.15863328e-05, -4.256455312e-06, -0.001307874473, 0.001297508993, 0.001940122586, 0.0009512094935, 2.984957228e-06, -0.0004206080521, -0.0004550187392, -0.0003209432293, -0.0001672580837, -6.12023628e-05, -1.223641169e-05, -0.002741471501, 0.002932316977, 0.004794543227, 0.002753990667, 0.000506781555, -0.0006346086365, -0.0008613863319, -0.0006502384727, -0.0003500428712, -0.0001304645271, -2.638528601e-05, -0.004674409683, 0.005097227999, 0.009116938837, 0.00582369141, 0.001648369633, -0.0006841928459, -0.001317136362, -0.001070816237, -0.0005952975914, -0.0002257387769, -4.612587094e-05, -0.006716548931, 0.007013470601, 0.01391866897, 0.009695353978, 0.003403484597, -0.0004122790113, -0.001651050214, -0.001463293746, -0.0008415266272, -0.0003247251141, -6.702688438e-05, -0.008279600995, 0.00721919057, 0.01675503339, 0.01266407058, 0.005100552851, 0.0001394120546, -0.001679572938, -0.001643814718, -0.0009790213414, -0.0003843956035, -8.012911345e-05, -0.008665063694, 0.004049535554, 0.01398872747, 0.01158110823, 0.005046224709, 0.0004114728638, -0.001408811906, -0.001467465704, -0.0008921656836, -0.0003536799642, -7.408704286e-05, -0.006261964933, -0.0009170331149, 0.005071136629, 0.004899039804, 0.002043505521, -0.0001448693141, -0.0009637414217, -0.0008951294718, -0.000524502777, -0.0002038595484, -4.21254843e-05 +-6.274512627e-05, 8.304659312e-05, 0.0001699981539, 0.0001249162928, 1.877419056e-05, -7.013287785e-05, -0.0001054012226, -9.222213039e-05, -5.66938159e-05, -2.382951229e-05, -5.437074995e-06, -0.0003160164256, 0.0004948557049, 0.001097983737, 0.0009923057147, 0.000480019629, -3.024935204e-05, -0.0003105960361, -0.0003430295368, -0.0002335356076, -0.0001043462284, -2.485073088e-05, -0.0009625137618, 0.001496382258, 0.003585684809, 0.003539769869, 0.002109257224, 0.0005133165688, -0.0004946236677, -0.0007747575197, -0.0005857079557, -0.0002763011759, -6.816238183e-05, -0.002208660554, 0.003128153097, 0.00817121453, 0.008545836008, 0.005606818301, 0.002022474042, -0.000436737414, -0.001325977491, -0.001119213502, -0.0005548066026, -0.0001410622784, -0.004118344865, 0.004992241386, 0.01449806914, 0.01590580085, 0.01109189044, 0.004725752738, 8.95248412e-05, -0.001836401722, -0.001750221953, -0.0009095382754, -0.0002376285501, -0.006437305883, 0.006182044431, 0.02078678542, 0.02391414957, 0.01749247451, 0.008245023749, 0.001162270776, -0.002068639676, -0.002280802957, -0.001243643554, -0.0003335581006, -0.008478589781, 0.005458009822, 0.02369748562, 0.02884711921, 0.02206602909, 0.01121033603, 0.002473541315, -0.001818615862, -0.002432999464, -0.001397756564, -0.0003851139533, -0.009040355481, 0.00203487972, 0.01928617523, 0.02555386061, 0.02053438248, 0.01108427776, 0.003043623437, -0.001161088409, -0.001994207513, -0.00120814764, -0.0003415971895, -0.006215565743, -0.001770776013, 0.007685583071, 0.01213542665, 0.01040890572, 0.005874786929, 0.001737913292, -0.0005265295439, -0.001026766857, -0.0006386759662, -0.0001830402508, -6.226682437e-05, 2.244545575e-05, 6.86510377e-05, 4.728326691e-05, 2.896621304e-06, -3.211036975e-05, -4.669719398e-05, -4.292909852e-05, -2.882961272e-05, -1.353767354e-05, -3.48487243e-06, -0.0003279153738, 0.0001473217969, 0.0004716026241, 0.00040857267, 0.0001755691022, -3.896053402e-05, -0.0001563690308, -0.0001737648212, -0.0001268449129, -6.245621081e-05, -1.658206355e-05, -0.001015805617, 0.0004587596427, 0.001632291662, 0.001567921572, 0.0008699675467, 0.0001537984523, -0.0002909858871, -0.0004228913684, -0.0003364456731, -0.0001728225605, -4.704655173e-05, -0.002342422995, 0.0009444171089, 0.003922729196, 0.004043524433, 0.002518588415, 0.0008065129559, -0.00034351467, -0.0007752380685, -0.00067555331, -0.0003607966317, -0.0001003208199, -0.00436511881, 0.001396161098, 0.00730060266, 0.007994483846, 0.005356671521, 0.0021309308, -0.0001659004066, -0.001146038051, -0.001104858938, -0.000612740808, -0.0001736650563, -0.006796280442, 0.001371896296, 0.01089217928, 0.012682963, 0.008993735625, 0.004045881302, 0.0003414748064, -0.001382675236, -0.001502530699, -0.0008661901079, -0.0002501054413, -0.008895729092, 0.0002412119379, 0.01265240672, 0.01589658061, 0.01186423334, 0.005792478781, 0.001021006792, -0.001348028917, -0.001683435198, -0.001008729005, -0.0002964722957, -0.009437927045, -0.002366721756, 0.009716264019, 0.01393145405, 0.0109596758, 0.005597847858, 0.001171120515, -0.00111218009, -0.001500232911, -0.0009169444692, -0.00027189359, -0.006507311369, -0.00418751449, 0.002405725048, 0.005507294272, 0.004663646033, 0.002283274696, 0.0002151639398, -0.0008186120857, -0.0009084013167, -0.0005288147627, -0.0001533754424 +-4.281306006e-05, 5.40854768e-06, 9.112396691e-05, 0.0001310661342, 9.74594367e-05, 1.775946752e-05, -5.854037526e-05, -9.490483018e-05, -8.526671883e-05, -4.956194706e-05, -1.552921945e-05, -0.0002236736939, 5.204946909e-05, 0.0005862650366, 0.0009141133046, 0.0008346787878, 0.0004486222037, 6.614310016e-06, -0.0002746454663, -0.0003229973719, -0.0002102637114, -7.035553183e-05, -0.0006949782077, 0.0001361906693, 0.00188005217, 0.003088451406, 0.003046935529, 0.001968092405, 0.000580623167, -0.0004212890574, -0.0007448679256, -0.000542094206, -0.0001917421459, -0.001614853342, 0.0001467234237, 0.004175138594, 0.007195410461, 0.007441448219, 0.005225959399, 0.002105431805, -0.0003273300734, -0.001306600416, -0.001063776614, -0.0003949401372, -0.0030388229, -0.0001510905507, 0.007160890495, 0.01300101445, 0.0139537905, 0.01032842161, 0.0047844327, 0.0002126124657, -0.00186563862, -0.001708332074, -0.0006628965035, -0.004779351462, -0.001036466673, 0.009792155163, 0.01897440019, 0.02110066595, 0.01627058062, 0.008220799307, 0.001254633568, -0.002190595786, -0.002289996089, -0.0009276884762, -0.006293141093, -0.00265277132, 0.01031376228, 0.02206602909, 0.02557702924, 0.02048852333, 0.01105033707, 0.002481141522, -0.002054736021, -0.002522501841, -0.001068051719, -0.006619222738, -0.004573340336, 0.006974974504, 0.01841705759, 0.02272079891, 0.01898638683, 0.01079770543, 0.002943548263, -0.001459959633, -0.002141483974, -0.0009448023718, -0.004418160801, -0.004571311822, 0.001119794595, 0.007620439674, 0.01072612622, 0.009505529691, 0.005623088115, 0.001617065769, -0.0007261903694, -0.001127194218, -0.000505100869, -2.895712496e-05, -5.168491903e-06, 3.26244132e-05, 4.772870448e-05, 3.403503916e-05, 2.705316512e-06, -2.986395471e-05, -4.933979204e-05, -4.874262811e-05, -3.180056065e-05, -1.121316874e-05, -0.0001587260468, -1.915743137e-05, 0.0002290129778, 0.0003640900255, 0.0003284864746, 0.0001706231084, -2.064996629e-05, -0.0001598011435, -0.0001973260034, -0.0001414171272, -5.251801956e-05, -0.0005095917542, -7.138534953e-05, 0.0007890750351, 0.001327269171, 0.001303524001, 0.0008402960504, 0.000215674809, -0.0002850804791, -0.0004827646887, -0.00037928975, -0.000147103207, -0.001215530531, -0.0002457520334, 0.001865686313, 0.003311126705, 0.003420154389, 0.002417743227, 0.0009442148109, -0.0003112868585, -0.000894222639, -0.0007704337556, -0.0003102843346, -0.002340974455, -0.0006839932714, 0.003379412635, 0.00636901592, 0.006841796486, 0.005113155589, 0.002361277249, -9.219287376e-05, -0.001344538994, -0.001276133506, -0.0005320158289, -0.003763016597, -0.001540105798, 0.004819336056, 0.009824708238, 0.01095857034, 0.008539754323, 0.004346174653, 0.0004562653335, -0.001666389606, -0.001761438932, -0.0007595027025, -0.005069248235, -0.002895351066, 0.005089209655, 0.01185961818, 0.01384684908, 0.01120349076, 0.006088105084, 0.001148970815, -0.0016890819, -0.002005362872, -0.0008928237749, -0.005489101535, -0.004483512244, 0.002795656213, 0.009631328879, 0.0121796335, 0.01026299901, 0.00578966744, 0.001264555693, -0.001424127142, -0.001794780291, -0.0008121219456, -0.003813844738, -0.004435182544, -0.001016404651, 0.002838643824, 0.004720133704, 0.00426040048, 0.002338701133, 0.0002539280529, -0.0009691613642, -0.001042088837, -0.0004543061094 +-2.173466252e-05, -1.933887574e-05, 2.407659748e-05, 8.133984145e-05, 0.000109860675, 8.538764998e-05, 1.83094411e-05, -5.451677784e-05, -9.402654608e-05, -8.327112373e-05, -3.822804453e-05, -0.0001142300126, -9.304056458e-05, 0.0001751966213, 0.0005556425743, 0.0008052744253, 0.0007578387235, 0.0004313722813, 6.839749098e-06, -0.0002917320665, -0.0003357718436, -0.0001714860019, -0.0003550310699, -0.0002992688779, 0.000557736628, 0.001836003965, 0.002774150618, 0.00279758417, 0.001884436027, 0.0005467392445, -0.0005108741091, -0.0008263025258, -0.0004638526744, -0.0008237441376, -0.000759035022, 0.001165578823, 0.004170617495, 0.006536516019, 0.006873935705, 0.005001458552, 0.001984197221, -0.000581023349, -0.001552994617, -0.0009498893671, -0.001547569572, -0.001589245575, 0.00178502289, 0.007310830785, 0.01190734329, 0.0129430049, 0.009889646302, 0.004516189876, -0.0003081188374, -0.00239281182, -0.001586924018, -0.002429980395, -0.002802887443, 0.001976856813, 0.01025515393, 0.01749983624, 0.01963395582, 0.01558990072, 0.007771304461, 0.0004088745854, -0.003074800218, -0.002211774496, -0.003190870348, -0.004181043219, 0.001178137877, 0.01121033603, 0.02048852333, 0.02385102451, 0.01963202074, 0.01044829508, 0.001375724569, -0.003238328647, -0.002536757296, -0.003336366768, -0.005077354134, -0.0008675117333, 0.008194271928, 0.01721211335, 0.02118377703, 0.01814835518, 0.01017126555, 0.001846261446, -0.002642890834, -0.002236787555, -0.002206244581, -0.003979676303, -0.002502842891, 0.002045032777, 0.007144690856, 0.009924424664, 0.009004220535, 0.005228001229, 0.0009836302104, -0.001392595358, -0.001194145418, -1.185819968e-05, -1.133528217e-05, 5.867522545e-06, 2.809548258e-05, 4.055546615e-05, 3.306786206e-05, 4.774359146e-06, -3.332251687e-05, -6.108669616e-05, -6.030514203e-05, -3.078743845e-05, -6.598625549e-05, -5.979000271e-05, 5.428854213e-05, 0.0002139827146, 0.0003290238683, 0.0003291357674, 0.0001957217651, -1.969739613e-05, -0.0002067294719, -0.0002544426826, -0.0001418827837, -0.0002145901448, -0.0001986692969, 0.0001919079115, 0.0007672056999, 0.001223290869, 0.001307811819, 0.0009341518436, 0.0002480017061, -0.0004032665691, -0.0006509099848, -0.0003921839876, -0.0005181073371, -0.0005093003145, 0.0004276298888, 0.001869870812, 0.003080123538, 0.003419396323, 0.002639331826, 0.001050296095, -0.0005451347967, -0.001265776553, -0.0008179347869, -0.001009907837, -0.001074691554, 0.0006740345471, 0.003490409443, 0.005958539518, 0.006808304045, 0.005504374286, 0.002580240444, -0.0004812438749, -0.002011131523, -0.001388460331, -0.001643023319, -0.001919823492, 0.0007041569158, 0.005164182872, 0.009234804581, 0.01085234232, 0.009085829658, 0.00468460531, -9.685284652e-05, -0.002662702288, -0.001963882028, -0.002238492716, -0.002937489446, 0.0001331570632, 0.005789587154, 0.01120397574, 0.01364882933, 0.01180203183, 0.006490121191, 0.0004913981987, -0.002909940027, -0.002288145962, -0.002446154781, -0.00375022642, -0.0013797272, 0.003806916615, 0.009155512404, 0.01194780864, 0.0107365795, 0.006133608281, 0.0006723230808, -0.002539505347, -0.002063341591, -0.001711184302, -0.003170183145, -0.002609835108, -0.0001979081362, 0.002719304151, 0.004593291103, 0.004472731742, 0.002514801042, -2.830416012e-05, -0.001515719331, -0.001144723383 +-9.283353699e-06, -1.833343558e-05, -8.973479319e-06, 2.582345173e-05, 7.168749912e-05, 9.936859013e-05, 8.34179307e-05, 2.106538299e-05, -6.013588392e-05, -0.0001103162735, -8.255713561e-05, -4.87497564e-05, -9.348388479e-05, -2.806464711e-05, 0.0001975206881, 0.0005117203452, 0.0007464496678, 0.000736591389, 0.0004328558328, -3.819575833e-05, -0.0004010398187, -0.0003650482479, -0.0001508294547, -0.0002925102681, -8.470562819e-05, 0.0006538905215, 0.001724075764, 0.002599134331, 0.002722590391, 0.001873249369, 0.0003878764971, -0.0008830334242, -0.0009757900644, -0.0003479274168, -0.0006957896593, -0.0002563333401, 0.001431191468, 0.003967820797, 0.006167810694, 0.006706538497, 0.004966805836, 0.00160579729, -0.001469911821, -0.001978347342, -0.0006496668029, -0.001352544602, -0.0006617300143, 0.002341134117, 0.007032492395, 0.01130031685, 0.01266545584, 0.009834494414, 0.003821296915, -0.001972289568, -0.003275983277, -0.001013682296, -0.002211350718, -0.001402036908, 0.002916574426, 0.009974751079, 0.0166927361, 0.01927227708, 0.01553638309, 0.006737191675, -0.002136336643, -0.004528101, -0.001321625254, -0.003048830853, -0.002459843577, 0.002473541315, 0.01105033707, 0.01963202074, 0.02347232726, 0.01959885726, 0.009192605161, -0.001793252317, -0.005152386956, -0.001369666694, -0.003397500815, -0.003488118265, 0.0005062720435, 0.008252152946, 0.01654104261, 0.02086006833, 0.01810499645, 0.008985665301, -0.001146406194, -0.004515674996, -0.0008969298048, -0.002441126658, -0.003160114171, -0.001641635808, 0.002223147535, 0.006853118576, 0.009732842817, 0.008928382414, 0.004546512256, -0.0006534745847, -0.00241119562, -4.411700687e-06, -8.651978065e-06, -5.849953029e-06, 7.23768587e-06, 2.732098108e-05, 4.376911069e-05, 4.141832307e-05, 9.387670729e-06, -4.566336249e-05, -8.985225146e-05, -7.287184357e-05, -2.469589225e-05, -4.72956174e-05, -2.405432662e-05, 6.933171406e-05, 0.0002171991537, 0.0003567428746, 0.0003929607542, 0.0002489320355, -5.610959014e-05, -0.0003444331573, -0.000329248126, -8.061662172e-05, -0.0001556687425, -7.428798613e-05, 0.0002548039628, 0.0007880412971, 0.001319367912, 0.001527959403, 0.001140473639, 0.0001847646065, -0.0007989537444, -0.0008950603845, -0.0001951889196, -0.0003863981973, -0.0002009287071, 0.0006007214269, 0.001930375092, 0.003299750214, 0.003933897929, 0.003153312687, 0.000970237514, -0.0014027251, -0.001839735383, -0.0003813539632, -0.0007813420566, -0.0004718332073, 0.001039859713, 0.003616301168, 0.006341357151, 0.007735601879, 0.006474291361, 0.002502859604, -0.001994158517, -0.00308187684, -0.0006215910376, -0.001328972046, -0.0009546459107, 0.001333579471, 0.005376559605, 0.009770978548, 0.0122020938, 0.01055416312, 0.004631239977, -0.002321735175, -0.004304593751, -0.0008476835255, -0.001917479673, -0.001681388777, 0.001021706473, 0.006092161024, 0.0118066693, 0.01522384198, 0.01358187783, 0.006473241568, -0.002191936273, -0.00495452585, -0.0009258977071, -0.002274999128, -0.002528581427, -0.0004129077782, 0.004159353752, 0.00966379587, 0.01330485939, 0.01233562723, 0.006152744618, -0.001754931428, -0.004419314194, -0.0006473714959, -0.001779384057, -0.002517975549, -0.001991184561, 6.516914172e-05, 0.002978727946, 0.005258496016, 0.005299666562, 0.002569312159, -0.001237951721, -0.002435278497 +-3.330361982e-06, -1.062276201e-05, -1.554850636e-05, -7.341691521e-06, 2.087594459e-05, 6.33068585e-05, 9.827088683e-05, 9.374660816e-05, 2.268612988e-05, -0.0001000776101, -0.0001488737151, -1.745445755e-05, -5.493970127e-05, -7.532480375e-05, -1.383923076e-05, 0.0001753724531, 0.0004660052955, 0.0007346404414, 0.0007861406334, 0.0004402321068, -0.0002552688171, -0.0006380324541, -5.374108642e-05, -0.0001701615158, -0.0002323714811, -2.943295625e-05, 0.0005995761951, 0.001590838872, 0.002561377006, 0.00287291358, 0.001901097739, -0.0002774728446, -0.00165880221, -0.0001232215547, -0.0003962044733, -0.0005565060508, -0.0001115784464, 0.001339003519, 0.003692358154, 0.00609563241, 0.007056993742, 0.005049082907, 0.0001165073316, -0.003279135256, -0.0002285790253, -0.0007501805613, -0.001100764224, -0.0003695832396, 0.002228681583, 0.006587505312, 0.0112070047, 0.01333207012, 0.01002407188, 0.001157904679, -0.005301746699, -0.0003541320228, -0.001190983294, -0.001842027828, -0.000923155433, 0.00283154127, 0.009395002693, 0.01661518472, 0.02032078136, 0.01588042109, 0.002807649024, -0.007157315352, -0.0004579406457, -0.001587310573, -0.002614593366, -0.001818615862, 0.002481141522, 0.01044829508, 0.01959885726, 0.0247909759, 0.02006719906, 0.004441816714, -0.007958894477, -0.0004698102906, -0.00169666265, -0.003028159499, -0.002827757496, 0.0006421836032, 0.007792780089, 0.01651834384, 0.02202847184, 0.01849395071, 0.00458302131, -0.006861117887, -0.0003042063745, -0.001161615376, -0.002285966175, -0.002755298057, -0.001464905915, 0.002041068012, 0.006803712614, 0.01024222169, 0.009015032294, 0.002127010631, -0.003685877353, -1.462593959e-06, -4.718965539e-06, -7.624128679e-06, -5.638793979e-06, 6.383367778e-06, 2.981798911e-05, 5.581232289e-05, 6.069486916e-05, 1.206936188e-05, -9.263699621e-05, -0.0001408040727, -8.198889518e-06, -2.606164966e-05, -3.944377145e-05, -1.867947888e-05, 7.027984174e-05, 0.0002390932523, 0.0004379102383, 0.0005264347964, 0.0003057959721, -0.0002678386682, -0.0006144718127, -2.675013453e-05, -8.522189848e-05, -0.0001269951661, -4.964200548e-05, 0.0002653771988, 0.0008633484574, 0.001587231279, 0.001980334844, 0.001382545718, -0.0003973927775, -0.001620226317, -6.466890121e-05, -0.0002083601059, -0.000314479849, -0.0001319160645, 0.0006325839676, 0.002099803686, 0.003911439027, 0.004995855893, 0.003781969448, -0.0002513221631, -0.003239075153, -0.0001260728628, -0.0004130390813, -0.0006415937692, -0.0003268157899, 0.001104392909, 0.003904574297, 0.007426718583, 0.009676371944, 0.007691373472, 0.0003999219694, -0.005285597753, -0.000204891084, -0.0006859290107, -0.001109576319, -0.0007094774952, 0.001436238847, 0.005765217913, 0.01132847684, 0.0150809462, 0.01243207215, 0.001598739153, -0.007194938445, -0.0002782191329, -0.0009597694001, -0.001643559916, -0.001345358276, 0.001155629595, 0.006499834365, 0.01358998141, 0.01865736192, 0.01589478921, 0.002873042728, -0.008076482693, -0.0003019637711, -0.001091551943, -0.002034542947, -0.002179878155, -0.000271737625, 0.00445934117, 0.0111492055, 0.01633117684, 0.0144428762, 0.002921827663, -0.007069272289, -0.0002096270407, -0.0008112161883, -0.00168652845, -0.002309277387, -0.001886879003, 0.0001915193338, 0.003663457768, 0.00676301804, 0.006402225116, 0.0009402592058, -0.003900628618 +-9.558189429e-07, -4.385944408e-06, -1.038155376e-05, -1.535799364e-05, -1.152202976e-05, 1.043731466e-05, 5.448775931e-05, 0.0001056841347, 0.0001074971103, -2.282366382e-05, -0.0001796600175, -5.000600226e-06, -2.280473856e-05, -5.281038859e-05, -7.288723647e-05, -3.56282835e-05, 0.0001165863637, 0.000411324883, 0.0007668009792, 0.0008633302375, 0.000219010407, -0.0006916386788, -1.533378046e-05, -7.020841051e-05, -0.0001625489976, -0.0002212208813, -9.136245827e-05, 0.0004201974032, 0.001415966547, 0.002650202934, 0.003116390004, 0.001267583296, -0.001615390203, -3.497967469e-05, -0.0001616273189, -0.0003783544676, -0.000524030336, -0.0002372179237, 0.0009464644464, 0.003297314732, 0.00628512565, 0.007612107784, 0.003693092595, -0.002862048932, -6.452151983e-05, -0.0003017398691, -0.0007185906194, -0.001029626198, -0.000568405579, 0.001549399427, 0.005884128578, 0.01153572985, 0.01433169754, 0.007672734708, -0.00412022238, -9.933295966e-05, -0.0004712971263, -0.001146893785, -0.001716611026, -0.001173116947, 0.001869247241, 0.008363461185, 0.01707544568, 0.02177908079, 0.01248336822, -0.00488756851, -0.0001274847265, -0.0006158663698, -0.001540157973, -0.002432999464, -0.002054736021, 0.001375724569, 0.009192605161, 0.02006719906, 0.02644750331, 0.01599217729, -0.004711458537, -0.000129518484, -0.0006414429441, -0.001664881551, -0.002819843601, -0.00295276601, -0.0003030598449, 0.00658426701, 0.01672462165, 0.02324767848, 0.01463147002, -0.003654883135, -8.287518033e-05, -0.0004249217451, -0.001158564328, -0.002133892149, -0.002727899232, -0.001895436553, 0.001336680926, 0.006658113573, 0.0105189269, 0.006720904939, -0.00213957892, -4.096505838e-07, -1.969766924e-06, -5.146563534e-06, -8.917397221e-06, -9.189898734e-06, 1.774396189e-06, 3.172289115e-05, 7.451451323e-05, 8.130517042e-05, -3.352741534e-05, -0.0001790824901, -2.291103377e-06, -1.08854277e-05, -2.761194365e-05, -4.463936034e-05, -3.523218298e-05, 4.91330189e-05, 0.000257004442, 0.0005571645317, 0.0006770163158, 0.0001247477012, -0.0007053755468, -7.447481501e-06, -3.53208577e-05, -8.872273049e-05, -0.0001397529541, -9.733293957e-05, 0.0002015906538, 0.000921174136, 0.001971092802, 0.002495958162, 0.0009307284534, -0.001682958094, -1.792538912e-05, -8.532662846e-05, -0.0002145990379, -0.000338168133, -0.0002367464817, 0.000481295274, 0.002214201765, 0.004772159129, 0.006200711215, 0.002896231079, -0.003043390676, -3.477486472e-05, -0.000166712048, -0.0004226393694, -0.0006768755409, -0.0005146366163, 0.0008083551697, 0.004059356238, 0.008925807726, 0.01184894763, 0.006231052617, -0.004473170003, -5.619849889e-05, -0.0002721930401, -0.0006994274671, -0.001151694984, -0.0009888796576, 0.0009517530187, 0.00589227131, 0.01342878973, 0.01823577929, 0.01037414185, -0.005432489042, -7.576749151e-05, -0.0003726692678, -0.0009784502697, -0.001681032798, -0.00168296579, 0.0005023923013, 0.006487439602, 0.01590621066, 0.02229941049, 0.01345566074, -0.005400955408, -8.142114147e-05, -0.0004109174957, -0.001118438245, -0.002051587835, -0.002475240825, -0.0009351729631, 0.004239977146, 0.01294531498, 0.01936597175, 0.01217982095, -0.004361626647, -5.583106221e-05, -0.0002932248078, -0.0008410224897, -0.001677641264, -0.002428711269, -0.002245800798, -4.84640696e-05, 0.004370870823, 0.008116873091, 0.005155745871, -0.002619185537 +-1.973854264e-07, -1.233129725e-06, -4.150928325e-06, -9.750041412e-06, -1.717394059e-05, -2.175575384e-05, -1.277177919e-05, 2.397324653e-05, 8.119396063e-05, 8.319186782e-05, -1.906115556e-05, -1.031323058e-06, -6.42742466e-06, -2.145962599e-05, -4.94869802e-05, -8.36777944e-05, -9.453997177e-05, -1.726046648e-05, 0.0002339538592, 0.0006291035303, 0.0007485325543, 0.0001965378411, -3.152431133e-06, -1.970889441e-05, -6.587670738e-05, -0.0001515281302, -0.0002534293855, -0.0002746040028, -2.810989379e-06, 0.0008467960217, 0.002209390832, 0.002791585044, 0.001139183002, -7.162500173e-06, -4.505042166e-05, -0.0001514830219, -0.0003505539437, -0.0005901221091, -0.0006453115324, -1.783928183e-05, 0.001974468918, 0.005248131106, 0.006918376068, 0.003350642424, -1.315145703e-05, -8.336085656e-05, -0.0002827772854, -0.0006616056844, -0.001132161578, -0.001285884849, -0.0001969454627, 0.003433207585, 0.009574927668, 0.01312265037, 0.007039281415, -2.014190369e-05, -0.0001288453043, -0.0004418916349, -0.001048992511, -0.001836795193, -0.002202094041, -0.0007333256976, 0.004608287182, 0.01398652779, 0.02000616239, 0.01158799424, -2.568330456e-05, -0.0001661609475, -0.0005778362344, -0.001397756564, -0.002522501841, -0.003238328647, -0.001793252317, 0.004441816714, 0.01599217729, 0.02423413755, 0.01503478987, -2.586118831e-05, -0.0001698998237, -0.000602133708, -0.001494482464, -0.002809400119, -0.003931864725, -0.003222206659, 0.001920506118, 0.01242279297, 0.02093951902, 0.01400160671, -1.635014515e-05, -0.0001097072118, -0.0003987538903, -0.001023101168, -0.002022461784, -0.003115708903, -0.00341779236, -0.001399672927, 0.003817449337, 0.008920313325, 0.006706239045, -8.677119696e-08, -5.877916341e-07, -2.217867688e-06, -5.975391824e-06, -1.228273098e-05, -1.871349556e-05, -1.636617296e-05, 1.007130529e-05, 5.921493248e-05, 6.305883977e-05, -2.774824708e-05, -4.826031507e-07, -3.234014879e-06, -1.199052111e-05, -3.147070429e-05, -6.198803742e-05, -8.618683306e-05, -4.867376939e-05, 0.0001434847072, 0.0004938668758, 0.0006260693923, 0.0001428599226, -1.558797743e-06, -1.039896114e-05, -3.823894921e-05, -9.914144605e-05, -0.0001915320357, -0.0002552569961, -0.0001066539743, 0.0005610440054, 0.001785766118, 0.002407262608, 0.000968953455, -3.726815608e-06, -2.483733355e-05, -9.105499968e-05, -0.0002350776358, -0.0004518027586, -0.0005975492699, -0.0002384053546, 0.001353685583, 0.004319820878, 0.00607019339, 0.002971526568, -7.179814221e-06, -4.791158842e-05, -0.0001756994467, -0.0004539687304, -0.000875743305, -0.001175161051, -0.0005432933642, 0.002391697861, 0.007987501635, 0.01165684546, 0.006378204749, -1.151619862e-05, -7.710659111e-05, -0.0002836476701, -0.0007364650063, -0.001435763104, -0.001985504025, -0.001150849551, 0.003199515517, 0.01177734128, 0.01793781801, 0.01064615177, -1.53864977e-05, -0.0001036849004, -0.0003841110456, -0.001007549541, -0.002001935983, -0.002902310851, -0.002178542742, 0.002890969213, 0.0134707207, 0.02183509181, 0.01393134681, -1.633100561e-05, -0.0001114082683, -0.000418474512, -0.001118652571, -0.002294530114, -0.003566593603, -0.003512451234, 0.000544258905, 0.01012425673, 0.01872921595, 0.0129789478, -1.101466363e-05, -7.66806491e-05, -0.0002944241961, -0.0008092146924, -0.001731838515, -0.002921362169, -0.003620919691, -0.002250971834, 0.002427642899, 0.007600471108, 0.006100903646 +-2.227331845e-08, -1.844083629e-07, -8.441952041e-07, -2.828480035e-06, -7.759549685e-06, -1.843164313e-05, -3.830152072e-05, -6.388320318e-05, -5.415702747e-05, 8.458348416e-05, 0.0002545171023, -1.162841902e-07, -9.625437215e-07, -4.395895314e-06, -1.465635953e-05, -3.988970627e-05, -9.360915074e-05, -0.0001905630072, -0.0003031109467, -0.0001995032275, 0.0005990304751, 0.001466910001, -3.54620145e-07, -2.943526795e-06, -1.346583723e-05, -4.491329709e-05, -0.0001220705296, -0.0002852840022, -0.0005750370282, -0.0008902858273, -0.0004918419558, 0.002049413325, 0.004624699393, -8.032663369e-07, -6.69650976e-06, -3.075328005e-05, -0.0001029044497, -0.0002803185481, -0.000655438581, -0.001316665175, -0.002011842445, -0.001019053204, 0.004829609626, 0.01048751458, -1.469713264e-06, -1.231731365e-05, -5.685822567e-05, -0.0001911904759, -0.0005231161135, -0.001227127493, -0.002466657391, -0.003754122689, -0.001881981763, 0.008818143062, 0.01883443751, -2.241542907e-06, -1.890046028e-05, -8.778492674e-05, -0.0002970047266, -0.000817476621, -0.001927624466, -0.003888545964, -0.005936761225, -0.003132786926, 0.01296874767, 0.02771509835, -2.842685618e-06, -2.414287757e-05, -0.000112968339, -0.0003851139533, -0.001068051719, -0.002536757296, -0.005152386956, -0.007958894477, -0.004711458537, 0.01503478987, 0.03302994241, -2.839235187e-06, -2.433609703e-05, -0.0001149417138, -0.0003955788035, -0.001107647847, -0.002656605664, -0.005458312356, -0.008646843283, -0.006185272984, 0.01205313178, 0.02923146471, -1.773303774e-06, -1.537670182e-05, -7.343901628e-05, -0.0002554663115, -0.0007228369968, -0.001752869721, -0.003658059251, -0.006029112004, -0.005426793416, 0.004204723, 0.01430076474, -1.046811539e-08, -9.642174807e-08, -4.999934839e-07, -1.909430005e-06, -5.947256436e-06, -1.583485708e-05, -3.614126424e-05, -6.489756985e-05, -6.129810472e-05, 7.241433784e-05, 0.0002455625948, -5.776484826e-08, -5.268513706e-07, -2.699500201e-06, -1.017239127e-05, -3.122124773e-05, -8.172478473e-05, -0.0001822251282, -0.0003125572435, -0.0002410688275, 0.0005329646778, 0.001419926303, -1.850512218e-07, -1.677834462e-06, -8.533889142e-06, -3.189657448e-05, -9.703783796e-05, -0.0002514425284, -0.0005527617045, -0.0009215971559, -0.0006177895347, 0.001853611632, 0.004487569206, -4.387738122e-07, -3.963786795e-06, -2.00655177e-05, -7.460960066e-05, -0.0002257532959, -0.0005814053615, -0.001267204368, -0.002077631749, -0.001287727899, 0.004413079424, 0.01019789245, -8.382777403e-07, -7.556682197e-06, -3.813869351e-05, -0.0001413486684, -0.0004262950366, -0.001093981387, -0.002372462011, -0.003855301631, -0.002329794149, 0.008117960029, 0.01834889097, -1.332826021e-06, -1.20049383e-05, -6.049330566e-05, -0.0002238063471, -0.0006738784104, -0.001726464868, -0.003735456475, -0.006054829835, -0.003739290857, 0.01200436805, 0.0270462292, -1.762545806e-06, -1.588873969e-05, -8.006911702e-05, -0.0002961940769, -0.0008918582041, -0.002285439722, -0.004948200756, -0.008064364618, -0.005383777468, 0.01394463177, 0.03227371672, -1.844584617e-06, -1.6685586e-05, -8.427768578e-05, -0.0003123091398, -0.0009419634769, -0.002419014529, -0.00526154182, -0.008731845171, -0.006783692119, 0.01108283596, 0.02856456585, -1.219604623e-06, -1.110359701e-05, -5.631384704e-05, -0.0002091997617, -0.0006320009983, -0.001626565584, -0.003563938054, -0.006102857874, -0.005787669932, 0.003653099271, 0.01393458533 +0.000121867822, -1.541466516e-05, -6.90487106e-05, -5.162856865e-05, -2.708248142e-05, -1.193761726e-05, -4.571691089e-06, -1.491610328e-06, -3.929551283e-07, -7.502123315e-08, -7.872814256e-09, 0.000790638804, 4.93615806e-05, -0.0003367099419, -0.0002831321015, -0.0001544528154, -6.925851305e-05, -2.680669821e-05, -8.826644306e-06, -2.346509237e-06, -4.52176023e-07, -4.791028474e-08, 0.002834271758, 0.0005556888556, -0.0009434691756, -0.0009096095643, -0.0005177113178, -0.0002363098569, -9.238058858e-05, -3.066154909e-05, -8.21401459e-06, -1.595248367e-06, -1.703820446e-07, 0.007353367309, 0.002243787841, -0.001917062406, -0.002184949234, -0.001303381414, -0.0006063911815, -0.0002394046548, -8.003945266e-05, -2.158790369e-05, -4.221307477e-06, -4.54015302e-07, 0.0152589692, 0.0061629335, -0.002992003352, -0.004259815839, -0.002681166746, -0.001274367964, -0.0005084088297, -0.0001711935553, -4.647027795e-05, -9.144785279e-06, -9.899242081e-07, 0.02644823081, 0.01325897467, -0.003417189484, -0.006900455243, -0.004634032421, -0.002259417811, -0.0009124877822, -0.0003097068405, -8.464415047e-05, -1.6767041e-05, -1.826992295e-06, 0.03852557415, 0.02329259301, -0.001918611289, -0.009040355481, -0.006619222738, -0.003336366768, -0.001369666694, -0.0004698102906, -0.000129518484, -2.586118831e-05, -2.839235187e-06, 0.04448062988, 0.03188644814, 0.002252935561, -0.008532491797, -0.007134352696, -0.003772270941, -0.001587338054, -0.0005534060844, -0.0001545288574, -3.119185981e-05, -3.45652618e-06, 0.03130147924, 0.02600813428, 0.005270240095, -0.004100045171, -0.004344473785, -0.002469163678, -0.00107911146, -0.0003857973029, -0.0001097676567, -2.247887031e-05, -2.517943366e-06, 2.856832286e-05, -5.65671956e-05, -6.263563412e-05, -3.563913376e-05, -1.575913063e-05, -6.122012429e-06, -2.145635563e-06, -6.659230832e-07, -1.736709755e-07, -3.412325452e-08, -3.813944923e-09, 0.000251607244, -0.0002413495869, -0.0003418390749, -0.0002103783027, -9.651562781e-05, -3.822321033e-05, -1.356025726e-05, -4.245644097e-06, -1.114169102e-06, -2.197907789e-07, -2.462235292e-08, 0.001066402399, -0.000547105944, -0.001078106108, -0.0007214354384, -0.0003440295532, -0.0001389465347, -4.986706294e-05, -1.573746073e-05, -4.152705871e-06, -8.220121653e-07, -9.22518751e-08, 0.003103921191, -0.000742916298, -0.002508567415, -0.001840764705, -0.0009150755705, -0.0003773080069, -0.0001369846687, -4.355613384e-05, -1.155172918e-05, -2.293714042e-06, -2.578069369e-07, 0.007042377557, -0.0002571667888, -0.004668317379, -0.003806391334, -0.00198069766, -0.000835292174, -0.0003069471853, -9.833413963e-05, -2.621027537e-05, -5.220354218e-06, -5.876530279e-07, 0.01314118155, 0.001763653024, -0.007099960125, -0.006574611601, -0.003602645977, -0.001558503089, -0.0005805089937, -0.0001875062087, -5.025021682e-05, -1.004263324e-05, -1.132522295e-06, 0.02032009222, 0.00587853181, -0.008618813546, -0.009409957381, -0.005477456903, -0.002442328889, -0.000924866796, -0.0003017492884, -8.139335382e-05, -1.6330649e-05, -1.844998917e-06, 0.02442184645, 0.01051573057, -0.00762147082, -0.01042301612, -0.006514747618, -0.003014230924, -0.001166228557, -0.0003855628246, -0.0001048319355, -2.111423013e-05, -2.386348512e-06, 0.01745271763, 0.009582985303, -0.00374232545, -0.006931394283, -0.004686166901, -0.002263477707, -0.0008995485479, -0.0003023511867, -8.292715562e-05, -1.67380957e-05, -1.885127876e-06 +5.163275833e-05, 3.630574992e-05, -1.511940421e-05, -4.064156925e-05, -3.877404802e-05, -2.630208092e-05, -1.420823024e-05, -6.212542114e-06, -2.128172356e-06, -5.197106505e-07, -6.932801905e-08, 0.0003707656444, 0.000324190082, 9.073350466e-06, -0.0001786709401, -0.0001985035547, -0.0001427748728, -7.975468264e-05, -3.570742307e-05, -1.246634874e-05, -3.094993405e-06, -4.191314332e-07, 0.001442754226, 0.001411674564, 0.0003038459669, -0.0004450082809, -0.0006006857938, -0.0004588699765, -0.0002645739406, -0.0001210014442, -4.294900431e-05, -1.081382791e-05, -1.483041731e-06, 0.004032420841, 0.004254172164, 0.001375776611, -0.0007736037133, -0.001369213798, -0.001114488998, -0.0006625908538, -0.0003090570795, -0.0001113438856, -2.83853745e-05, -3.936064954e-06, 0.008988662186, 0.01007513645, 0.004026371151, -0.0009075677679, -0.002540553798, -0.002220366074, -0.001362179076, -0.0006477480226, -0.0002367026207, -6.105188733e-05, -8.552851968e-06, 0.01671634263, 0.01983400728, 0.009201180826, -0.0002792075558, -0.003878943253, -0.003713726202, -0.002362395859, -0.001147425377, -0.0004256775866, -0.0001111304645, -1.573101178e-05, 0.02605250354, 0.03283939076, 0.01734306857, 0.00203487972, -0.004573340336, -0.005077354134, -0.003397500815, -0.00169666265, -0.0006414429441, -0.0001698998237, -2.433609703e-05, 0.03188644814, 0.04299550652, 0.02572809206, 0.006313483959, -0.003265325687, -0.005075226089, -0.003700959141, -0.001929080242, -0.0007493692049, -0.0002023461164, -2.940293436e-05, 0.02336944723, 0.03381454199, 0.0227165051, 0.008030462891, -0.0002661774743, -0.002671658541, -0.002293354109, -0.001280107427, -0.0005170915325, -0.0001431603396, -2.114438865e-05, -1.011520603e-05, -9.346547144e-06, -2.159445664e-05, -2.573694293e-05, -2.024354664e-05, -1.243463865e-05, -6.375252711e-06, -2.756112175e-06, -9.704034129e-07, -2.52073198e-07, -3.673918173e-08, -1.23056787e-05, -9.198720442e-07, -8.705435256e-05, -0.0001326997046, -0.0001140868884, -7.341998922e-05, -3.873580854e-05, -1.706513605e-05, -6.085527781e-06, -1.594639919e-06, -2.338709206e-07, 0.0001017507957, 0.0001601553162, -0.0001771862851, -0.0003979635247, -0.0003768430365, -0.000253903047, -0.0001376286856, -6.169453486e-05, -2.225337024e-05, -5.87526144e-06, -8.660184498e-07, 0.0005985178423, 0.0007970634601, -0.0001654129965, -0.0008833931084, -0.0009332001427, -0.0006586462361, -0.0003665054671, -0.0001670144142, -6.08834596e-05, -1.618338061e-05, -2.395715394e-06, 0.001913742535, 0.002457304013, 0.0002544685885, -0.001558039967, -0.001881660858, -0.001395401629, -0.0007974553455, -0.0003693866503, -0.0001360641259, -3.6405313e-05, -5.411236469e-06, 0.004478439407, 0.005762840804, 0.00157563614, -0.002186001595, -0.003173717377, -0.002490435225, -0.001464959378, -0.000690441485, -0.0002571171851, -6.926685736e-05, -1.033877776e-05, 0.008067434614, 0.01062634545, 0.004088109174, -0.002331858029, -0.004463908698, -0.003741913593, -0.002272339037, -0.001091013361, -0.0004109106045, -0.0001114422914, -1.669378658e-05, 0.01041470002, 0.01417454474, 0.006435732231, -0.001859869218, -0.005057580406, -0.004517094216, -0.002825824455, -0.001379392039, -0.0005241610366, -0.0001426760903, -2.137052691e-05, 0.007239587288, 0.01014212391, 0.00483293858, -0.00126667935, -0.003794107902, -0.003480213663, -0.002210700213, -0.001087433109, -0.000413772422, -0.0001121801715, -1.666437371e-05 +-3.406931821e-06, 3.597593645e-05, 2.738854889e-05, -4.554678844e-06, -2.619037566e-05, -3.043623223e-05, -2.366708069e-05, -1.393869881e-05, -6.232742102e-06, -1.959772345e-06, -3.360493778e-07, -4.860215787e-06, 0.0002738212596, 0.0002607225993, 6.58272751e-05, -9.03814922e-05, -0.0001439851029, -0.0001237967997, -7.690879937e-05, -3.563705758e-05, -1.151330776e-05, -2.018914006e-06, 2.311856847e-05, 0.001095417784, 0.001165102107, 0.000484918605, -0.0001318794641, -0.0003974371941, -0.0003836009413, -0.0002512206723, -0.0001202629553, -3.978380567e-05, -7.109581608e-06, 0.000143872151, 0.003111911553, 0.003562672463, 0.001813450284, 5.482762374e-05, -0.000809862365, -0.0008979413603, -0.0006202624335, -0.0003061497577, -0.0001034589981, -1.879870615e-05, 0.0004600533353, 0.007025317593, 0.008522267166, 0.004894950181, 0.000879468482, -0.001292205338, -0.001719609694, -0.001257568152, -0.000639825476, -0.0002206587995, -4.071930392e-05, 0.001072048782, 0.0132341686, 0.01691276723, 0.0106459241, 0.002970851447, -0.001531925363, -0.002741232314, -0.002147939483, -0.001130127438, -0.0003981932611, -7.464931897e-05, 0.001891440889, 0.02089018318, 0.02818530072, 0.01928617523, 0.006974974504, -0.0008675117333, -0.003488118265, -0.003028159499, -0.001664881551, -0.000602133708, -0.0001149417138, 0.002252935561, 0.02572809206, 0.03701193538, 0.02756052545, 0.01210249444, 0.001297623969, -0.003037952838, -0.003199830256, -0.001881831249, -0.0007053577261, -0.0001376774942, 0.001222604472, 0.01867573064, 0.02903459394, 0.02351733719, 0.01199099749, 0.003061080296, -0.001115737028, -0.001886388271, -0.001236220828, -0.0004864847537, -9.746986948e-05, -2.059765155e-05, 8.454188493e-06, 9.723854537e-06, -4.174673817e-06, -1.298330622e-05, -1.392987936e-05, -1.062054653e-05, -6.398445854e-06, -3.033255869e-06, -1.039671666e-06, -1.979264724e-07, -0.0001208607726, 7.641672931e-05, 0.0001058652686, 1.601526709e-05, -5.376370833e-05, -7.28965762e-05, -6.036842287e-05, -3.796396263e-05, -1.847366287e-05, -6.443731813e-06, -1.242361634e-06, -0.0004114135034, 0.0003332951801, 0.0005102272185, 0.0001843049095, -0.0001111489596, -0.0002212705117, -0.0002012025848, -0.000132102149, -6.587499446e-05, -2.333479671e-05, -4.546396583e-06, -0.001039692312, 0.0009999645759, 0.001651061866, 0.0007918152098, -0.0001004196528, -0.0004956668408, -0.0005029843662, -0.0003451930759, -0.0001762361314, -6.3313558e-05, -1.24481041e-05, -0.002131132062, 0.002343784301, 0.004134454055, 0.002330172948, 0.0001912000817, -0.0008795908155, -0.001024841313, -0.0007377242108, -0.000385722292, -0.0001404825282, -2.785572965e-05, -0.003708492769, 0.004480738266, 0.008463122738, 0.005356122903, 0.001108152917, -0.001242150762, -0.001752366621, -0.001331670737, -0.0007141519262, -0.0002637781142, -5.274542674e-05, -0.005694317844, 0.006702123788, 0.0139947155, 0.009735705044, 0.002812025568, -0.001371063787, -0.002525870154, -0.002034566093, -0.001118985647, -0.0004187677111, -8.434078159e-05, -0.00774020869, 0.006350642935, 0.01662066492, 0.01258601042, 0.004174493448, -0.001312459765, -0.00300996587, -0.002518344442, -0.001405480127, -0.0005289692604, -0.0001066323372, -0.007187317772, 0.001559246205, 0.009908161198, 0.008219059953, 0.002622730317, -0.001261804185, -0.002444267574, -0.001999969633, -0.001103082378, -0.0004105043585, -8.173161697e-05 +-1.312045058e-05, 1.384250981e-05, 2.906102545e-05, 1.813700553e-05, -3.771204259e-06, -2.073646922e-05, -2.601638036e-05, -2.142930628e-05, -1.277407432e-05, -5.2686054e-06, -1.18672525e-06, -8.2648669e-05, 0.0001075834328, 0.0002431433891, 0.0002003390218, 6.387161394e-05, -6.003664253e-05, -0.0001176334718, -0.0001106079136, -7.059996163e-05, -3.044287345e-05, -7.086069478e-06, -0.000306667507, 0.0004247198956, 0.001026304042, 0.0009478922237, 0.0004609649396, -3.246896103e-05, -0.0003057518175, -0.0003381282267, -0.0002310822601, -0.0001037446531, -2.483742815e-05, -0.0008533934557, 0.001169619285, 0.003030298699, 0.003001855621, 0.001718724386, 0.0003004452022, -0.0005710705744, -0.0007804503393, -0.0005719326493, -0.0002665911004, -6.543581019e-05, -0.001941662386, 0.002521383498, 0.007057899191, 0.007378868375, 0.004645000763, 0.001378343268, -0.0007837451598, -0.001471325687, -0.001162852698, -0.0005623893184, -0.0001413040367, -0.003756647592, 0.004445534867, 0.01365369473, 0.01499999208, 0.01013305077, 0.00382784364, -0.0006174568217, -0.002298110838, -0.00199257463, -0.001003218331, -0.0002582038593, -0.006252551523, 0.006304456179, 0.02203679472, 0.02555386061, 0.01841705759, 0.008194271928, 0.0005062720435, -0.002827757496, -0.002819843601, -0.001494482464, -0.0003955788035, -0.008532491797, 0.006313483959, 0.02756052545, 0.03417936891, 0.02635997549, 0.01339138807, 0.002877858903, -0.00228383693, -0.002993629527, -0.001710630034, -0.000469208373, -0.007312733948, 0.002878586974, 0.02008171643, 0.02712966617, 0.0224588537, 0.0127172009, 0.004102448892, -0.0006193487463, -0.001773791947, -0.0011373713, -0.0003261520828, -1.329053877e-05, 3.098137361e-06, 1.204493703e-05, 6.856784763e-06, -2.819946639e-06, -9.921584615e-06, -1.224638407e-05, -1.054444615e-05, -6.805191086e-06, -3.105378392e-06, -7.819231518e-07, -8.787560949e-05, 2.826107779e-05, 0.0001076939331, 8.485556982e-05, 1.982798257e-05, -3.54131886e-05, -6.095126242e-05, -5.848457887e-05, -3.986100165e-05, -1.880176298e-05, -4.841664591e-06, -0.0003357113852, 0.0001181116957, 0.0004819098162, 0.0004346090586, 0.0001870478319, -4.696425771e-05, -0.0001741812589, -0.0001905650155, -0.0001372638331, -6.673617871e-05, -1.751504867e-05, -0.0009522261745, 0.000327873307, 0.001499280493, 0.001472358976, 0.0007816827659, 6.815624945e-05, -0.0003604671348, -0.0004661706666, -0.000355594511, -0.0001778893827, -4.747531177e-05, -0.002197979839, 0.0006787730216, 0.003654511173, 0.003838322225, 0.002290869743, 0.0005543903703, -0.0005675983751, -0.0009292121034, -0.0007544858533, -0.0003882863332, -0.0001052655955, -0.004316058408, 0.001025144554, 0.007286583199, 0.0081515683, 0.005281130907, 0.001769508226, -0.0006411531448, -0.001551770294, -0.001353456308, -0.0007174098934, -0.0001975306651, -0.007359160207, 0.0006615617223, 0.01156984828, 0.01393420301, 0.00963820984, 0.003810845378, -0.0004134917315, -0.002182807431, -0.00205424062, -0.001119949575, -0.0003126122884, -0.01049122418, -0.001935694709, 0.01255074294, 0.01701723719, 0.01246142191, 0.005300054294, -0.0001559053081, -0.002562454865, -0.002515647027, -0.001389768444, -0.0003896341642, -0.009533578009, -0.005226318876, 0.005706569242, 0.01032668349, 0.008028317416, 0.003300337047, -0.0004694635181, -0.002099844563, -0.001959159998, -0.001059422069, -0.0002924535426 +-9.002657835e-06, -3.307524781e-07, 1.525866055e-05, 2.126549059e-05, 1.292848313e-05, -3.535228773e-06, -1.804225105e-05, -2.365806124e-05, -1.982569402e-05, -1.112868778e-05, -3.414250355e-06, -5.920195967e-05, 4.404168365e-06, 0.0001285410551, 0.0001961592109, 0.0001626042288, 5.957467067e-05, -4.744790859e-05, -0.0001062313091, -0.0001036876487, -6.288356728e-05, -2.026086929e-05, -0.0002270782073, 1.964601051e-05, 0.0005380042996, 0.0008659824261, 0.0007989630008, 0.0004301874704, 1.853471896e-06, -0.0002733343138, -0.0003214759694, -0.000210173592, -7.067754943e-05, -0.0006502925527, 2.788766258e-05, 0.001565221612, 0.002632613031, 0.002578924924, 0.001604310546, 0.0003694961813, -0.0005022718954, -0.0007536011789, -0.0005308145474, -0.000185504929, -0.001520499117, -5.041261819e-05, 0.003575680447, 0.006278106779, 0.006421133743, 0.004337231462, 0.00148711794, -0.0006667811598, -0.001446311327, -0.001101561957, -0.0003992900829, -0.003021622449, -0.0004045984457, 0.006742130978, 0.01242131584, 0.01319508513, 0.009466554221, 0.003954286467, -0.0004604327933, -0.002311776167, -0.001930476633, -0.0007270448079, -0.005149998509, -0.001384693154, 0.01045250049, 0.02053438248, 0.02272079891, 0.01721211335, 0.008252152946, 0.0006421836032, -0.00295276601, -0.002809400119, -0.001107647847, -0.007134352696, -0.003265325687, 0.01210249444, 0.02635997549, 0.03071079571, 0.02461224076, 0.01320851297, 0.002852779963, -0.00259475099, -0.003100898298, -0.001299436798, -0.006138914207, -0.004270686932, 0.007527849397, 0.01969437267, 0.02456679128, 0.02088613258, 0.0122970507, 0.003878780315, -0.0009883394495, -0.001944271377, -0.0008848611081, -6.311202326e-06, -1.773968356e-06, 5.601096488e-06, 7.963926293e-06, 4.266257395e-06, -2.770760486e-06, -9.463200519e-06, -1.284349545e-05, -1.174703871e-05, -7.335505024e-06, -2.512384252e-06, -4.350940486e-05, -9.555938057e-06, 5.203198891e-05, 8.136786811e-05, 6.512587217e-05, 1.920810796e-05, -3.084374747e-05, -6.252953559e-05, -6.49292328e-05, -4.317865183e-05, -1.535369613e-05, -0.0001729859542, -3.684685117e-05, 0.000234820944, 0.0003887827022, 0.0003527758026, 0.0001804166357, -2.707231493e-05, -0.0001747963123, -0.0002114671904, -0.0001495161156, -5.492593659e-05, -0.0005104997614, -0.0001227968584, 0.0007285550772, 0.001266275238, 0.001229178315, 0.0007504201479, 0.0001260073483, -0.0003529917514, -0.0005185090996, -0.0003897406122, -0.0001474238699, -0.001226866301, -0.0003595195792, 0.001756731779, 0.00320861343, 0.0032656201, 0.00219046509, 0.0006835290869, -0.0005378374967, -0.001039226478, -0.0008329393365, -0.000323941592, -0.002509939632, -0.0009462836126, 0.003414088232, 0.006638056147, 0.007040579687, 0.005032795467, 0.002002893911, -0.0005692910067, -0.001750926765, -0.001506498638, -0.0006023931597, -0.004449328588, -0.002339243763, 0.005033529049, 0.01095433433, 0.01217857801, 0.009153322936, 0.004153249219, -0.0002802242809, -0.002482548396, -0.002298470408, -0.0009430362732, -0.006541393085, -0.00509886392, 0.004141811666, 0.01244718581, 0.01494717097, 0.01176126026, 0.005682245219, 4.50696742e-05, -0.002879906697, -0.00278319248, -0.001156747503, -0.006064817383, -0.006722152285, -0.0005119975028, 0.006136844662, 0.008934815137, 0.007448886426, 0.003552539884, -0.0002638102891, -0.002234836439, -0.002072270225, -0.0008473613806 +-4.56351349e-06, -4.592682312e-06, 3.115748889e-06, 1.305978409e-05, 1.703647829e-05, 1.07847701e-05, -3.067901772e-06, -1.693259099e-05, -2.322368891e-05, -1.911687039e-05, -8.466610648e-06, -3.028329194e-05, -2.806061021e-05, 3.332672648e-05, 0.0001186688731, 0.0001684732315, 0.0001452298563, 5.814707256e-05, -4.479602684e-05, -0.0001083519618, -0.0001043688862, -4.989019491e-05, -0.0001168161831, -0.0001074482359, 0.0001457075778, 0.0005152340046, 0.0007643186359, 0.0007268467743, 0.0004145937332, 8.540697953e-07, -0.0002937265716, -0.0003379166293, -0.0001730494271, -0.0003361041321, -0.0003206189773, 0.0004167717066, 0.001537965188, 0.002360144569, 0.002368224314, 0.001542929627, 0.0003462908056, -0.0005837581483, -0.0008283018023, -0.0004520633677, -0.0007898154411, -0.0007993924637, 0.0009025353873, 0.003593648011, 0.005691946957, 0.005933795819, 0.004171186381, 0.001401456506, -0.0008943788412, -0.001668448998, -0.0009689141646, -0.001578593932, -0.001719400381, 0.001548242847, 0.006939392085, 0.01137227771, 0.01225463574, 0.00910697036, 0.003736647008, -0.0009677989435, -0.002827391089, -0.001755979735, -0.002706893226, -0.003231548585, 0.001987637795, 0.01108427776, 0.01898638683, 0.02118377703, 0.01654104261, 0.007792780089, -0.0003030598449, -0.003931864725, -0.002656605664, -0.003772270941, -0.005075226089, 0.001297623969, 0.01339138807, 0.02461224076, 0.02867219133, 0.02353176058, 0.0123853021, 0.00143649859, -0.004036428843, -0.003077546465, -0.00326854706, -0.005054342588, -0.0006772766227, 0.008886658396, 0.0185104627, 0.02284366696, 0.01973637523, 0.01135633215, 0.002574928033, -0.002234542063, -0.002049681679, -2.612135318e-06, -2.731559554e-06, 5.094983961e-07, 4.549168365e-06, 6.293353304e-06, 3.835299051e-06, -2.62364118e-06, -1.045918703e-05, -1.543336257e-05, -1.408121559e-05, -6.894951674e-06, -1.830162044e-05, -1.813259506e-05, 9.530164804e-06, 4.712520619e-05, 7.073669775e-05, 6.348872669e-05, 2.3439424e-05, -3.312404496e-05, -7.650139813e-05, -7.976917377e-05, -4.157910189e-05, -7.386893885e-05, -7.280620952e-05, 4.911228626e-05, 0.0002236237394, 0.0003489059493, 0.0003475750477, 0.0002027290432, -2.609835167e-05, -0.0002205188632, -0.0002667108596, -0.0001470491614, -0.0002212901688, -0.0002236745654, 0.0001544927254, 0.0007185235279, 0.0011545517, 0.001212052524, 0.0008210462401, 0.0001449922953, -0.0004686203127, -0.0006727877273, -0.0003906853416, -0.0005401381275, -0.0005713292282, 0.0003534425334, 0.001787582035, 0.002955574571, 0.003214487755, 0.002356999569, 0.0007494400676, -0.0007828751458, -0.001392292673, -0.0008503497371, -0.001123033834, -0.001271976941, 0.0005841062365, 0.00359710442, 0.006165961297, 0.006915308482, 0.005350172104, 0.002158161527, -0.001014340139, -0.002434092101, -0.001565916192, -0.002023529666, -0.00256337073, 0.0004035696088, 0.005592513429, 0.01025988151, 0.01194309318, 0.009653963935, 0.004444977395, -0.0009493530463, -0.003575680909, -0.002422032222, -0.003022543084, -0.004534625507, -0.001331757578, 0.005287458454, 0.01175769575, 0.01464683759, 0.0123845496, 0.006126339047, -0.0006708423413, -0.004159960575, -0.002918026767, -0.002847784251, -0.005153581515, -0.003819687352, 0.0007056593863, 0.005830156275, 0.008741166846, 0.0079249464, 0.00398901855, -0.0006024178635, -0.002995235686, -0.002080087349 +-1.942188629e-06, -4.007564449e-06, -2.689967034e-06, 3.292141667e-06, 1.108537117e-05, 1.509358134e-05, 1.067156851e-05, -2.266312177e-06, -1.791974091e-05, -2.631527494e-05, -1.841498202e-05, -1.290082104e-05, -2.582708539e-05, -1.285340617e-05, 3.753024261e-05, 0.0001070018665, 0.0001546509558, 0.0001420488021, 6.059049262e-05, -5.500824789e-05, -0.0001346378767, -0.0001073515779, -4.969215584e-05, -9.920556489e-05, -4.337815567e-05, 0.0001704793343, 0.0004765985801, 0.0007118298664, 0.0007109097636, 0.0004186068428, -4.587659388e-05, -0.0004079040795, -0.0003688808152, -0.0001426427612, -0.0002884488705, -0.000128445103, 0.0005067721028, 0.001445514592, 0.002217993754, 0.002320819944, 0.001548094962, 0.0002018609062, -0.0009330479574, -0.0009555268981, -0.0003343872305, -0.0006910147366, -0.0003401217192, 0.001149594626, 0.003419923171, 0.005386294496, 0.005829764443, 0.004179939462, 0.001053607269, -0.001741351427, -0.002031380866, -0.0006668019001, -0.001417358339, -0.0008000395473, 0.002104906558, 0.00668007539, 0.01082429474, 0.01206672608, 0.009122555259, 0.003038760646, -0.002681978492, -0.003649054621, -0.001140824303, -0.002518328145, -0.00168141863, 0.003043623437, 0.01079770543, 0.01814835518, 0.02086006833, 0.01651834384, 0.00658426701, -0.003222206659, -0.005458312356, -0.001587338054, -0.003700959141, -0.003037952838, 0.002877858903, 0.01320851297, 0.02353176058, 0.02807178533, 0.0232508401, 0.01061613393, -0.002483358976, -0.006219598816, -0.001377424359, -0.003451055594, -0.003518266272, 0.0006991460769, 0.008860160619, 0.01755791237, 0.02202314863, 0.01908044959, 0.00966862738, -0.0005767310689, -0.004043102074, -9.770147923e-07, -1.993012187e-06, -1.641471839e-06, 6.689176654e-07, 4.151217002e-06, 6.595773487e-06, 5.0747074e-06, -2.236516387e-06, -1.350982931e-05, -2.155832397e-05, -1.632948531e-05, -6.890386708e-06, -1.370326473e-05, -9.138867203e-06, 1.247948008e-05, 4.615214677e-05, 7.525092684e-05, 7.639690682e-05, 3.27168987e-05, -4.705711494e-05, -0.0001145339286, -9.689033291e-05, -2.795460039e-05, -5.540213683e-05, -3.314136183e-05, 6.600095076e-05, 0.0002236673746, 0.0003705709304, 0.0004062264893, 0.000253181541, -6.425454498e-05, -0.0003593204742, -0.0003377896965, -8.412667896e-05, -0.000168364691, -9.860056264e-05, 0.0002159339886, 0.0007254871337, 0.001220534447, 0.00139112855, 0.0009893090911, 6.456030108e-05, -0.0008496562553, -0.000885779621, -0.0002062404124, -0.0004205919769, -0.0002568927098, 0.0005244950681, 0.001815722816, 0.003108601791, 0.003639141623, 0.002780142829, 0.0006077799518, -0.00164097985, -0.001903890582, -0.0004306093326, -0.0009048021045, -0.0006120763101, 0.0009778724388, 0.00367732928, 0.006458288735, 0.007746301709, 0.006218331313, 0.001949255886, -0.00264841299, -0.003460285218, -0.0007788760642, -0.001725960056, -0.001411923049, 0.001169210438, 0.005789233133, 0.01073467195, 0.01329685106, 0.01113309049, 0.004219656646, -0.003528900697, -0.005268514153, -0.001168441121, -0.002831829582, -0.003017887343, -0.00016101737, 0.005683153002, 0.0123888713, 0.01636290478, 0.01435519614, 0.006064861258, -0.003691365795, -0.006212655882, -0.001109027832, -0.003002879743, -0.004071841503, -0.002788614416, 0.001162135868, 0.00635946974, 0.01003623131, 0.009504518677, 0.004227306754, -0.002475342627, -0.004299758812 +-6.945613041e-07, -2.263976644e-06, -3.529165977e-06, -2.445830737e-06, 2.281774536e-06, 9.518016044e-06, 1.510431823e-05, 1.294111021e-05, -2.022757754e-06, -2.624010222e-05, -3.349111434e-05, -4.610320468e-06, -1.481704668e-05, -2.17875701e-05, -9.935156589e-06, 3.161302023e-05, 9.611782424e-05, 0.0001534039817, 0.000156259558, 6.194201633e-05, -0.0001125350289, -0.0001905999994, -1.771017426e-05, -5.687334923e-05, -8.193611004e-05, -2.856690941e-05, 0.0001513156443, 0.000435995141, 0.0007060221239, 0.0007650417749, 0.0004248782905, -0.0002692704577, -0.0006404897296, -5.065333218e-05, -0.0001637654654, -0.000236715278, -7.837500749e-05, 0.0004624946845, 0.001337189688, 0.002204424473, 0.002478177516, 0.001571655516, -0.0004339616115, -0.001624198373, -0.0001182637823, -0.0003866345427, -0.0005685305116, -0.0002090437523, 0.001070654192, 0.003190035366, 0.005367921166, 0.006205741931, 0.00424956475, -0.0004092592697, -0.003380318376, -0.0002347962827, -0.0007788272238, -0.001175770131, -0.0005158092791, 0.001996686056, 0.006271625688, 0.01081067751, 0.01281568378, 0.009278313833, 0.0002010117305, -0.005935097576, -0.0003997314949, -0.001352405451, -0.002120066073, -0.001161088409, 0.002943548263, 0.01017126555, 0.01810499645, 0.02202847184, 0.01672462165, 0.001920506118, -0.008646843283, -0.0005534060844, -0.001929080242, -0.003199830256, -0.00228383693, 0.002852779963, 0.0123853021, 0.0232508401, 0.02919448881, 0.02317055627, 0.004511893866, -0.009551764866, -0.0004788787275, -0.001740414934, -0.003108644887, -0.002874367676, 0.000756103442, 0.008129709317, 0.01693591394, 0.02222691571, 0.01841433721, 0.004812370593, -0.005999786349, -3.244672782e-07, -1.066881713e-06, -1.810111837e-06, -1.667309663e-06, 3.300899595e-07, 4.361231832e-06, 8.586737485e-06, 8.327849411e-06, -2.608064131e-06, -2.394017532e-05, -3.165972689e-05, -2.293042485e-06, -7.422526083e-06, -1.187048422e-05, -8.27480966e-06, 1.150650285e-05, 4.962256391e-05, 9.277708957e-05, 0.0001056762899, 4.004518185e-05, -0.0001089796407, -0.0001826822577, -9.309457192e-06, -3.002437942e-05, -4.669822531e-05, -2.699762227e-05, 6.508100897e-05, 0.0002405063789, 0.0004456798133, 0.000534582878, 0.0003038657494, -0.0002824239268, -0.0006207855826, -2.801437057e-05, -9.066695038e-05, -0.0001400123924, -7.486533393e-05, 0.0002181257532, 0.0007766387625, 0.001443289215, 0.001780784138, 0.001172858287, -0.0005178869824, -0.001588912407, -6.863900304e-05, -0.0002240174, -0.0003483667324, -0.0001895175592, 0.0005371634067, 0.001933210258, 0.003627475507, 0.004569006087, 0.003262432792, -0.0006738710998, -0.003334301454, -0.0001431240653, -0.0004738841742, -0.0007533100108, -0.0004565509348, 0.001016573973, 0.003897705053, 0.007458727342, 0.009585597397, 0.007238987722, -0.000440790199, -0.005908771127, -0.0002582066425, -0.000878714959, -0.001467962721, -0.001111375708, 0.001267446101, 0.006136970718, 0.01233475664, 0.01632081038, 0.01292482013, 0.0005213054305, -0.008744973006, -0.0003860491548, -0.001380916551, -0.002520184441, -0.002561855228, 5.127398349e-05, 0.006137937678, 0.01436587509, 0.02020228968, 0.01683271729, 0.0018080263, -0.009986457107, -0.0003660499595, -0.001399323279, -0.002833019149, -0.003668465372, -0.002508023703, 0.001570753141, 0.007818057497, 0.01290791095, 0.01158359616, 0.001609946018, -0.00668458655 +-1.98914548e-07, -9.241110655e-07, -2.242400872e-06, -3.513872944e-06, -3.271424262e-06, 2.790555263e-07, 7.929675737e-06, 1.673624194e-05, 1.541020322e-05, -1.198119555e-05, -4.143455153e-05, -1.319374204e-06, -6.088416681e-06, -1.447105462e-05, -2.138473898e-05, -1.548965707e-05, 1.722891546e-05, 8.355448033e-05, 0.000162818494, 0.0001738907321, -6.900924322e-07, -0.0002181327276, -5.056247479e-06, -2.334259044e-05, -5.513791204e-05, -7.940720284e-05, -4.906116119e-05, 9.519161436e-05, 0.0003845426399, 0.0007391783669, 0.0008352648333, 0.0001965080982, -0.0006779233229, -1.441540091e-05, -6.684850761e-05, -0.0001582880944, -0.0002271040347, -0.000133021274, 0.000304496492, 0.00118780295, 0.002293742923, 0.002681009254, 0.0009500580509, -0.001586482646, -3.353346519e-05, -0.0001565773679, -0.0003735625086, -0.0005412319134, -0.0003255175277, 0.0007137855254, 0.002843766567, 0.005564425506, 0.006672755335, 0.002865948595, -0.003027916918, -6.629852884e-05, -0.0003122855416, -0.0007534136, -0.001112325419, -0.0007220704073, 0.001318145657, 0.005589805711, 0.01115656915, 0.01369005663, 0.006654101645, -0.004808084788, -0.0001122988233, -0.0005351710149, -0.001311821163, -0.001994207513, -0.001459959633, 0.001846261446, 0.008985665301, 0.01849395071, 0.02324767848, 0.01242279297, -0.006185272984, -0.0001545288574, -0.0007493692049, -0.001881831249, -0.002993629527, -0.00259475099, 0.00143649859, 0.01061613393, 0.02317055627, 0.03002233519, 0.01733028048, -0.005866953022, -0.0001329711935, -0.0006608806078, -0.0017155999, -0.002896618601, -0.003016092301, -0.0003317425166, 0.006446131525, 0.0160662518, 0.02179710398, 0.01339026565, -0.003142142678, -9.072554009e-08, -4.394614659e-07, -1.165794627e-06, -2.098346275e-06, -2.464175947e-06, -7.794129182e-07, 4.421740121e-06, 1.178441091e-05, 1.137582409e-05, -1.334211933e-05, -4.106097518e-05, -6.403380805e-07, -3.064975916e-06, -7.909206306e-06, -1.34063314e-05, -1.310002729e-05, 4.812744131e-06, 5.190885243e-05, 0.0001191076518, 0.0001357954262, -1.842972222e-05, -0.0002194485485, -2.593759436e-06, -1.235712968e-05, -3.143878956e-05, -5.152187114e-05, -4.445186166e-05, 4.010354059e-05, 0.000251455896, 0.0005550482857, 0.0006698151047, 0.0001115038056, -0.0006913800488, -7.783165794e-06, -3.706793262e-05, -9.376785753e-05, -0.0001513280992, -0.0001226908759, 0.0001460692704, 0.0008060581596, 0.001760633446, 0.002191968535, 0.0006856355178, -0.001638728874, -1.900729544e-05, -9.076286301e-05, -0.0002295938677, -0.0003696451403, -0.0002970608495, 0.0003645996071, 0.001986667735, 0.004351738073, 0.00554085569, 0.002232242859, -0.003168797044, -3.946927713e-05, -0.000189623002, -0.0004825336956, -0.0007850484317, -0.0006596045613, 0.00066583507, 0.003960516258, 0.008822146302, 0.01147547574, 0.00537568761, -0.005118882624, -7.077128237e-05, -0.0003445724009, -0.0008919146753, -0.001498781919, -0.001420274898, 0.0006788228148, 0.006159418396, 0.01444395107, 0.01935519421, 0.0101021927, -0.006802347196, -0.000104909266, -0.000524378215, -0.001405351235, -0.002513409356, -0.002872605637, -0.0006563572567, 0.006084144973, 0.01684784341, 0.0239360586, 0.01359985769, -0.006944230809, -9.865329694e-05, -0.0005118013131, -0.001436624021, -0.002766266624, -0.003754792618, -0.002888443467, 0.001560600488, 0.009540830088, 0.01559678403, 0.009547436258, -0.004308691713 +-4.102964682e-08, -2.583171761e-07, -8.802242625e-07, -2.108323179e-06, -3.842385632e-06, -5.245021022e-06, -4.27013797e-06, 1.832264727e-06, 1.15323525e-05, 1.026481644e-05, -8.891013808e-06, -2.720372971e-07, -1.708049768e-06, -5.774662268e-06, -1.360348147e-05, -2.394938367e-05, -3.001319127e-05, -1.610533148e-05, 3.873178304e-05, 0.0001259398364, 0.0001426219445, 1.036167609e-05, -1.040735306e-06, -6.542492905e-06, -2.208730133e-05, -5.171400584e-05, -8.957620094e-05, -0.0001069513019, -3.867282063e-05, 0.0002028289383, 0.0005913922398, 0.0007238987705, 0.0002184279178, -2.9600012e-06, -1.867253641e-05, -6.31845229e-05, -0.0001479848321, -0.0002552955543, -0.000299242551, -8.500431931e-05, 0.0006522432124, 0.001857654595, 0.002382677772, 0.0009804132682, -6.866048767e-06, -4.352213707e-05, -0.000147945646, -0.0003479753946, -0.0006024997596, -0.0007077982696, -0.0001976493944, 0.001570996227, 0.004518332184, 0.00601293317, 0.002891551521, -1.352884499e-05, -8.625790776e-05, -0.0002950257092, -0.0006987188073, -0.001220618149, -0.001458280237, -0.0004776094033, 0.003031303815, 0.009010929937, 0.01241187706, 0.006612715951, -2.281259122e-05, -0.0001465154319, -0.0005051575802, -0.00120814764, -0.002141483974, -0.002642890834, -0.001146406194, 0.00458302131, 0.01463147002, 0.02093951902, 0.01205313178, -3.119185981e-05, -0.0002023461164, -0.0007053577261, -0.001710630034, -0.003100898298, -0.004036428843, -0.002483358976, 0.004511893866, 0.01733028048, 0.02618622031, 0.01606469241, -2.663276954e-05, -0.0001750682566, -0.0006188152004, -0.001527153766, -0.002848546189, -0.003964594045, -0.003330062225, 0.001333888138, 0.01055860624, 0.01764435895, 0.01150463167, -1.912597547e-08, -1.29602809e-07, -4.902337141e-07, -1.330861978e-06, -2.786341669e-06, -4.445412062e-06, -4.624148639e-06, -3.951802878e-07, 7.78504543e-06, 6.772917386e-06, -1.039493836e-05, -1.344254055e-07, -9.016231594e-07, -3.355267274e-06, -8.893949298e-06, -1.793756832e-05, -2.659750517e-05, -2.153344595e-05, 1.971902579e-05, 9.635072247e-05, 0.0001155377161, -1.464155532e-06, -5.419356461e-07, -3.614340743e-06, -1.331971138e-05, -3.480115271e-05, -6.861310802e-05, -9.711949023e-05, -6.396448715e-05, 0.0001245343134, 0.0004723320307, 0.0006153355168, 0.0001706204384, -1.618129919e-06, -1.076081427e-05, -3.943192823e-05, -0.0001021660295, -0.0001988973523, -0.0002745426261, -0.0001588231276, 0.0004300862009, 0.001521322028, 0.002075560532, 0.0008442704072, -3.931044519e-06, -2.611714023e-05, -9.542633147e-05, -0.0002461880614, -0.0004765668935, -0.0006518088234, -0.0003613138239, 0.001075058865, 0.0037650349, 0.005322670426, 0.002583889591, -8.113797727e-06, -5.396222676e-05, -0.00019710962, -0.0005082323015, -0.0009844331686, -0.001354084525, -0.0007895430614, 0.002088494749, 0.00757834753, 0.01109750333, 0.006025183369, -1.442646032e-05, -9.639298513e-05, -0.0003534872431, -0.0009160899539, -0.001792276019, -0.002534089923, -0.001746089904, 0.002931947322, 0.01218458508, 0.01872055562, 0.01106687826, -2.112053176e-05, -0.0001426673796, -0.0005287043482, -0.001388361192, -0.002778679305, -0.004149602062, -0.003673632457, 0.001829976696, 0.01361623223, 0.02293783714, 0.01465299735, -1.957107533e-05, -0.0001343883691, -0.0005056522127, -0.001351661164, -0.002783597947, -0.004427140241, -0.004870980719, -0.001555130014, 0.006878302537, 0.01458770214, 0.01022337423 +-4.628226947e-09, -3.852023317e-08, -1.775496943e-07, -5.999314912e-07, -1.662346522e-06, -3.993266193e-06, -8.402917429e-06, -1.428771118e-05, -1.322191757e-05, 1.419451925e-05, 4.878433104e-05, -3.068733454e-08, -2.553177066e-07, -1.174212409e-06, -3.950343144e-06, -1.087091282e-05, -2.584398217e-05, -5.343149652e-05, -8.726800847e-05, -6.711078364e-05, 0.0001327264159, 0.0003565289464, -1.172762961e-07, -9.774635394e-07, -4.498236182e-06, -1.512218924e-05, -4.151170217e-05, -9.817712003e-05, -0.0002007492428, -0.0003186684594, -0.000210073758, 0.000593844831, 0.001424356519, -3.33005436e-07, -2.783813624e-06, -1.284056637e-05, -4.32298823e-05, -0.0001186970228, -0.0002801967625, -0.0005691610016, -0.0008857653984, -0.0005189128841, 0.001828746381, 0.004110248862, -7.708775302e-07, -6.468240825e-06, -2.993370277e-05, -0.0001010520662, -0.000277972715, -0.0006562708605, -0.001328026211, -0.002038581406, -0.001099512909, 0.004408667183, 0.009499060222, -1.515023188e-06, -1.276549608e-05, -5.930525763e-05, -0.000200894442, -0.000554113931, -0.00130984744, -0.002645400279, -0.004025504253, -0.002081285285, 0.00873565676, 0.01832127835, -2.544727751e-06, -2.15404689e-05, -0.000100485023, -0.0003415971895, -0.0009448023718, -0.002236787555, -0.004515674996, -0.006861117887, -0.003654883135, 0.01400160671, 0.02923146471, -3.45652618e-06, -2.940293436e-05, -0.0001376774942, -0.000469208373, -0.001299436798, -0.003077546465, -0.006219598816, -0.009551764866, -0.005866953022, 0.01606469241, 0.03511414726, -2.922356885e-06, -2.497643335e-05, -0.0001172087162, -0.0003993578456, -0.001103502998, -0.002605933372, -0.005271699992, -0.008282163023, -0.006305344352, 0.00912664986, 0.02339149723, -2.291454054e-09, -2.1031605e-08, -1.08759128e-07, -4.14815391e-07, -1.292735219e-06, -3.450493373e-06, -7.913499585e-06, -1.43786989e-05, -1.447654573e-05, 1.195904584e-05, 4.712028247e-05, -1.600395903e-08, -1.455619597e-07, -7.444965433e-07, -2.805008629e-06, -8.625444264e-06, -2.267235674e-05, -5.092540548e-05, -8.889420534e-05, -7.645610609e-05, 0.0001173325477, 0.0003454750132, -6.410267944e-08, -5.794568842e-07, -2.941106636e-06, -1.098688959e-05, -3.34726768e-05, -8.704745406e-05, -0.000192616845, -0.0003263878508, -0.0002464326969, 0.0005359837344, 0.001383636832, -1.901606366e-07, -1.711524053e-06, -8.638931485e-06, -3.207233783e-05, -9.706032622e-05, -0.0002504666226, -0.0005481260626, -0.0009083687745, -0.0006190914445, 0.0016718613, 0.00400126206, -4.589427957e-07, -4.117972207e-06, -2.069945015e-05, -7.64888919e-05, -0.0002303166992, -0.0005908699427, -0.001282045587, -0.002088808938, -0.001319224435, 0.004067515552, 0.009264459449, -9.403640803e-07, -8.420500669e-06, -4.219479314e-05, -0.0001553440682, -0.0004658547155, -0.001189373213, -0.002562687873, -0.004123210328, -0.002492042609, 0.008106848989, 0.01789452844, -1.655308215e-06, -1.48104036e-05, -7.40407382e-05, -0.0002716736906, -0.000811359733, -0.002061250328, -0.004414619684, -0.00706081648, -0.004350832785, 0.01298499928, 0.02856109421, -2.386235982e-06, -2.136280984e-05, -0.0001065608046, -0.0003892679776, -0.001155437213, -0.002914445467, -0.006204914713, -0.009973286413, -0.006927865796, 0.01466426834, 0.03424276755, -2.166722549e-06, -1.942069614e-05, -9.653553582e-05, -0.0003500558207, -0.001028373481, -0.00256420327, -0.005417918856, -0.00883629501, -0.007363299922, 0.007893638491, 0.02268257192 +1.193459012e-05, -2.399397186e-06, -8.388828959e-06, -6.317126064e-06, -3.326829923e-06, -1.463758155e-06, -5.582794519e-07, -1.813519196e-07, -4.758089786e-08, -9.050497442e-09, -9.466346893e-10, 9.709526108e-05, -1.359074561e-06, -5.491232905e-05, -4.554004401e-05, -2.482684585e-05, -1.108514438e-05, -4.262872608e-06, -1.394138483e-06, -3.682533313e-07, -7.054494777e-08, -7.434097988e-09, 0.000437627409, 5.425955212e-05, -0.0002065983898, -0.0001907832232, -0.0001079586383, -4.895660554e-05, -1.897604692e-05, -6.242639576e-06, -1.658356811e-06, -3.195748289e-07, -3.388822381e-08, 0.001441441804, 0.000342843356, -0.0005771558267, -0.0006024058476, -0.0003549942777, -0.000163699004, -6.395540077e-05, -2.115170932e-05, -5.646482622e-06, -1.093621262e-06, -1.165881462e-07, 0.003873370809, 0.001325795796, -0.00130100874, -0.001574232783, -0.0009708877675, -0.0004562747079, -0.0001798149711, -5.978694397e-05, -1.603366819e-05, -3.119802851e-06, -3.341918893e-07, 0.009007377065, 0.004077501175, -0.002329036025, -0.003489910548, -0.002277257201, -0.001096294002, -0.0004370755029, -0.0001463539952, -3.947354332e-05, -7.721616996e-06, -8.313978935e-07, 0.01851450854, 0.01086564214, -0.00255846493, -0.006215565743, -0.004418160801, -0.002206244581, -0.0008969298048, -0.0003042063745, -8.287518033e-05, -1.635014515e-05, -1.773303774e-06, 0.03130147924, 0.02336944723, 0.001222604472, -0.007312733948, -0.006138914207, -0.00326854706, -0.001377424359, -0.0004788787275, -0.0001329711935, -2.663276954e-05, -2.922356885e-06, 0.03163703761, 0.02865170404, 0.00761916274, -0.003172397188, -0.004209292674, -0.002534427806, -0.001139368171, -0.0004137524539, -0.0001186543728, -2.434486526e-05, -2.717430275e-06, 2.695251845e-06, -6.685669487e-06, -7.649184129e-06, -4.49364805e-06, -2.023999187e-06, -7.928239773e-07, -2.785556227e-07, -8.633235859e-08, -2.240785033e-08, -4.368496364e-09, -4.833671435e-10, 2.9937866e-05, -3.893390056e-05, -5.459915175e-05, -3.447589384e-05, -1.608381564e-05, -6.414028818e-06, -2.277037731e-06, -7.105752662e-07, -1.852583239e-07, -3.620587432e-08, -4.009858002e-09, 0.0001612398639, -0.0001241381742, -0.0002240206531, -0.0001526667787, -7.390856425e-05, -3.002521243e-05, -1.076712396e-05, -3.381008427e-06, -8.849171808e-07, -1.732911979e-07, -1.920270126e-08, 0.0006008752206, -0.0002690488487, -0.0006857271412, -0.0005072473064, -0.000255461672, -0.000105842183, -3.834314055e-05, -1.211093315e-05, -3.180748216e-06, -6.238896832e-07, -6.914781781e-08, 0.001776193325, -0.0003778135559, -0.001721313644, -0.001393880875, -0.0007328158279, -0.0003102533883, -0.000113633322, -3.610746084e-05, -9.514624348e-06, -1.868889649e-06, -2.07117334e-07, 0.004465940602, -4.003105096e-05, -0.003645315012, -0.003284124173, -0.001813297203, -0.0007875595035, -0.0002923766073, -9.360494005e-05, -2.476819304e-05, -4.873320593e-06, -5.399278581e-07, 0.009790916072, 0.00195908298, -0.006210614618, -0.006476140579, -0.003801289128, -0.001707225363, -0.0006463287271, -0.0002094053193, -5.579831566e-05, -1.101264785e-05, -1.219774954e-06, 0.0174348424, 0.007372398558, -0.00701802304, -0.009433958765, -0.006025647998, -0.002835594562, -0.00110578839, -0.0003653291937, -9.853320732e-05, -1.955947478e-05, -2.166528924e-06, 0.01838204777, 0.01162604561, -0.002833620875, -0.007212033057, -0.005221485552, -0.002619986982, -0.001064844902, -0.0003617946349, -9.932961732e-05, -1.989153839e-05, -2.204688288e-06 +5.281373782e-06, 2.69233379e-06, -3.167996541e-06, -5.70468202e-06, -5.083161692e-06, -3.34942518e-06, -1.77878469e-06, -7.68689003e-07, -2.609990346e-07, -6.32888332e-08, -8.39340338e-09, 4.778302048e-05, 3.310108285e-05, -1.304774616e-05, -3.672960965e-05, -3.550562621e-05, -2.426182197e-05, -1.317446976e-05, -5.787555166e-06, -1.992187764e-06, -4.890572217e-07, -6.561211257e-08, 0.0002353761483, 0.0001901350684, -1.804362203e-05, -0.0001384352405, -0.0001458431702, -0.0001031567991, -5.714904275e-05, -2.546834882e-05, -8.870098198e-06, -2.200259448e-06, -2.980549701e-07, 0.0008412797484, 0.0007501999555, 4.87298462e-05, -0.0003963604875, -0.0004571922647, -0.0003340936052, -0.0001884563308, -8.504662064e-05, -2.992103162e-05, -7.48832138e-06, -1.022767918e-06, 0.002449707409, 0.002361473397, 0.0004079125361, -0.0009372783487, -0.001198862324, -0.0009054954929, -0.0005197457884, -0.0002373288462, -8.427646471e-05, -2.126232073e-05, -2.925429953e-06, 0.006198457789, 0.006472696373, 0.001777238032, -0.001764814573, -0.002665059423, -0.002105625265, -0.001236028531, -0.0005726571568, -0.0002055896781, -5.233711172e-05, -7.256736636e-06, 0.01397760811, 0.01614972244, 0.006515285004, -0.001770776013, -0.004571311822, -0.003979676303, -0.002441126658, -0.001161615376, -0.0004249217451, -0.0001097072118, -1.537670182e-05, 0.02600813428, 0.03381454199, 0.01867573064, 0.002878586974, -0.004270686932, -0.005054342588, -0.003451055594, -0.001740414934, -0.0006608806078, -0.0001750682566, -2.497643335e-05, 0.02865170404, 0.04152326986, 0.0283951128, 0.01083559093, 0.0006922877789, -0.002527647163, -0.002379534302, -0.001366008664, -0.0005573007553, -0.0001543292903, -2.263753286e-05, -1.225423672e-06, -2.035845992e-06, -3.516985642e-06, -3.718071181e-06, -2.797575392e-06, -1.683266576e-06, -8.513775113e-07, -3.635572829e-07, -1.26349654e-07, -3.236610251e-08, -4.650236629e-09, -3.024472472e-06, -9.130168953e-06, -2.265354147e-05, -2.673061965e-05, -2.11778891e-05, -1.313323815e-05, -6.772989756e-06, -2.929692255e-06, -1.026808625e-06, -2.644628163e-07, -3.81323286e-08, 1.167877888e-05, -1.505418248e-05, -8.413555501e-05, -0.0001123017127, -9.352888505e-05, -5.964020898e-05, -3.13015129e-05, -1.3695063e-05, -4.835035362e-06, -1.250863483e-06, -1.808327926e-07, 0.0001141152386, 2.671213455e-05, -0.0002335141968, -0.000358783868, -0.0003135658633, -0.0002051384725, -0.0001093762518, -4.833840775e-05, -1.717255047e-05, -4.458536734e-06, -6.457129829e-07, 0.0005065006318, 0.0002771460666, -0.0005269183862, -0.0009600447947, -0.0008804386393, -0.0005901334082, -0.0003192705783, -0.0001423893204, -5.085882565e-05, -1.324146954e-05, -1.919658511e-06, 0.001660432672, 0.001195324852, -0.0009394873262, -0.002212001578, -0.002146442811, -0.001477605931, -0.0008119674893, -0.0003655675718, -0.0001312692928, -3.425488886e-05, -4.966544007e-06, 0.004468994807, 0.003961745158, -0.0008755217551, -0.004149630639, -0.00441465554, -0.003161717422, -0.001776638849, -0.0008105894492, -0.0002931653396, -7.66967578e-05, -1.110889999e-05, 0.009419120839, 0.01013298893, 0.001685378941, -0.005112318763, -0.006660565961, -0.005127696913, -0.002993993719, -0.00139698913, -0.0005114172924, -0.0001343772135, -1.942792157e-05, 0.01139661718, 0.014375454, 0.006119092321, -0.002044946775, -0.005078669469, -0.004494361928, -0.002799896938, -0.001354551542, -0.000505693866, -0.0001338979092, -1.932694323e-05 +-4.865329022e-07, 3.129409998e-06, 1.826127868e-06, -1.771706128e-06, -3.98664726e-06, -4.141832374e-06, -3.07776827e-06, -1.766912474e-06, -7.768375843e-07, -2.412780492e-07, -4.098091229e-08, -1.495347538e-06, 3.065848246e-05, 2.501963267e-05, -3.041622561e-06, -2.321071949e-05, -2.766914936e-05, -2.178325842e-05, -1.294200917e-05, -5.831179943e-06, -1.846924846e-06, -3.190106157e-07, 1.731024467e-06, 0.0001573274648, 0.0001487520125, 2.368798862e-05, -7.711455016e-05, -0.0001087168392, -9.068364135e-05, -5.56108804e-05, -2.560362826e-05, -8.246848455e-06, -1.444685037e-06, 3.100761071e-05, 0.0005767661988, 0.0005950415788, 0.0001795211839, -0.0001878244696, -0.0003263074893, -0.0002881894684, -0.0001819297563, -8.537251311e-05, -2.789920849e-05, -4.946344867e-06, 0.0001570598954, 0.00171723328, 0.001883301598, 0.0007430386432, -0.0003512880462, -0.0008184473968, -0.0007674184605, -0.0004982685383, -0.0002380038651, -7.880705734e-05, -1.412167478e-05, 0.000597258213, 0.004500805662, 0.00519526436, 0.002485944479, -0.0003523891154, -0.001710865411, -0.001746665927, -0.001175482853, -0.0005735077162, -0.000192724377, -3.492504865e-05, 0.001987996437, 0.01090202613, 0.01324809975, 0.007685583071, 0.001119794595, -0.002502842891, -0.003160114171, -0.002285966175, -0.001158564328, -0.0003987538903, -7.343901628e-05, 0.005270240095, 0.0227165051, 0.02903459394, 0.02008171643, 0.007527849397, -0.0006772766227, -0.003518266272, -0.003108644887, -0.0017155999, -0.0006188152004, -0.0001172087162, 0.00761916274, 0.0283951128, 0.03782981306, 0.02964309004, 0.01537321168, 0.004453040812, -0.0007797831502, -0.001919575351, -0.001308794582, -0.0005177386601, -0.0001028857937, -2.403176493e-06, 3.570717293e-07, 3.792205642e-07, -1.181349449e-06, -2.077545164e-06, -2.018605891e-06, -1.472471342e-06, -8.614772812e-07, -3.987840104e-07, -1.338554275e-07, -2.501151821e-08, -1.780414733e-05, 5.484659877e-06, 8.155118237e-06, -4.615002564e-06, -1.35607097e-05, -1.466349613e-05, -1.12161798e-05, -6.738623101e-06, -3.171370904e-06, -1.076352403e-06, -2.027327897e-07, -7.557718696e-05, 3.352500512e-05, 5.574405732e-05, -3.064357706e-06, -5.091051652e-05, -6.216775216e-05, -4.984734335e-05, -3.069899518e-05, -1.466162697e-05, -5.022668209e-06, -9.519729606e-07, -0.0002384753762, 0.0001345221612, 0.0002402695901, 4.069760526e-05, -0.0001431999612, -0.0002004479688, -0.0001682413589, -0.0001059827199, -5.126781735e-05, -1.769771701e-05, -3.370316704e-06, -0.0006175323137, 0.0004179538449, 0.0007899384334, 0.0002363892454, -0.0003336799208, -0.0005435872374, -0.0004765421854, -0.0003063640375, -0.0001498257841, -5.203352617e-05, -9.941890759e-06, -0.001376913616, 0.001084205054, 0.002156461642, 0.0008433155044, -0.0006629678919, -0.001290050915, -0.001180804313, -0.0007737699283, -0.0003820355571, -0.0001332795287, -2.550591116e-05, -0.002644896966, 0.002443776083, 0.00507851353, 0.002427050691, -0.000999418831, -0.002600920609, -0.002514898643, -0.001686171911, -0.0008413312636, -0.0002946264228, -5.635979482e-05, -0.003919778109, 0.004712446967, 0.009916757857, 0.00576370832, -0.0004624624093, -0.003791186602, -0.004060033107, -0.002829994021, -0.001436556751, -0.0005059295857, -9.661730442e-05, -0.003104420192, 0.005923927952, 0.01202135279, 0.008303482071, 0.001604224963, -0.00255410935, -0.003486722861, -0.002618655942, -0.001372197738, -0.0004888878308, -9.329613289e-05 +-1.55019538e-06, 1.102004538e-06, 2.446045819e-06, 9.521371076e-07, -1.565769082e-06, -3.311823527e-06, -3.623163347e-06, -2.818864491e-06, -1.627322039e-06, -6.572470992e-07, -1.45826153e-07, -1.22579422e-05, 1.127766867e-05, 2.684900811e-05, 1.799427418e-05, -2.098772021e-06, -1.822466935e-05, -2.366395623e-05, -1.980976667e-05, -1.194536208e-05, -4.975286507e-06, -1.130723353e-06, -5.630352464e-05, 5.780596816e-05, 0.0001465976149, 0.0001177235042, 2.599042756e-05, -5.555099613e-05, -9.077787365e-05, -8.194568552e-05, -5.145149201e-05, -2.201558808e-05, -5.106064352e-06, -0.0001942845668, 0.0002072777358, 0.0005603545425, 0.0004963659034, 0.0001837299517, -0.000116840024, -0.0002656976832, -0.0002589904101, -0.0001687672483, -7.393865276e-05, -1.744715603e-05, -0.0005536550424, 0.0005964406958, 0.001719562774, 0.001631598261, 0.0007507523663, -0.0001554697277, -0.0006479725281, -0.000686162417, -0.0004634962802, -0.0002075175057, -4.972456346e-05, -0.001349439696, 0.001513278299, 0.00459811012, 0.004641615133, 0.002493874138, 0.0001138305291, -0.001295880822, -0.001550618399, -0.001096104887, -0.0005032276133, -0.0001225780425, -0.002744350202, 0.003663139592, 0.01124132261, 0.01213542665, 0.007620439674, 0.002045032777, -0.001641635808, -0.002755298057, -0.002133892149, -0.001023101168, -0.0002554663115, -0.004100045171, 0.008030462891, 0.02351733719, 0.02712966617, 0.01969437267, 0.008886658396, 0.0006991460769, -0.002874367676, -0.002896618601, -0.001527153766, -0.0003993578456, -0.003172397188, 0.01083559093, 0.02964309004, 0.03599241393, 0.02898970127, 0.01648763497, 0.00570851485, -0.0002050742632, -0.001774797229, -0.001181354735, -0.0003372740225, -1.592140438e-06, 9.213273641e-08, 9.882839262e-07, 2.721516909e-07, -8.944577089e-07, -1.663893169e-06, -1.807235489e-06, -1.462857583e-06, -9.06724069e-07, -4.014342492e-07, -9.868323401e-08, -1.322170387e-05, 1.694346468e-06, 1.177489504e-05, 7.235220371e-06, -2.730152692e-06, -1.027516379e-05, -1.276354441e-05, -1.095146792e-05, -7.013303033e-06, -3.170685831e-06, -7.909865173e-07, -6.297374211e-05, 9.927882767e-06, 6.832221439e-05, 5.293048196e-05, 4.686132351e-06, -3.573291218e-05, -5.261636378e-05, -4.794060809e-05, -3.165091696e-05, -1.457161056e-05, -3.678862697e-06, -0.0002239473067, 3.5086593e-05, 0.0002738834487, 0.0002401938578, 6.716724501e-05, -9.003139728e-05, -0.0001650243957, -0.0001596892831, -0.0001083889769, -5.067558635e-05, -1.291605388e-05, -0.0006593002536, 8.395826337e-05, 0.000863907179, 0.0008261322903, 0.0003175893955, -0.0001781100939, -0.0004359024292, -0.0004471993382, -0.0003110336331, -0.0001472659424, -3.780479639e-05, -0.001696225522, 0.0001017093621, 0.002259136224, 0.002331699556, 0.001058337388, -0.0002724028001, -0.001010515091, -0.001096995978, -0.0007794088496, -0.000372695805, -9.612173938e-05, -0.003852322839, -0.0002144938806, 0.004889183058, 0.00551106065, 0.002845645903, -0.0001938196586, -0.001991123463, -0.002311355337, -0.001679653373, -0.0008102164593, -0.0002094335334, -0.007029446109, -0.001370411146, 0.008175588255, 0.01033068628, 0.006157770855, 0.0007229878987, -0.002781639305, -0.003669074317, -0.002769050461, -0.001353412368, -0.000350503499, -0.007368466646, -0.002220153436, 0.008220985389, 0.01173873865, 0.008173197893, 0.002497009423, -0.001611048908, -0.003047146038, -0.002492742468, -0.001252288159, -0.0003262755763 +-1.062355541e-06, -2.568499832e-07, 1.223045894e-06, 1.583433566e-06, 4.180070966e-07, -1.477245522e-06, -2.961061912e-06, -3.325169987e-06, -2.609418371e-06, -1.41173243e-06, -4.228601089e-07, -8.787280649e-06, -1.25791649e-06, 1.378629758e-05, 2.027636727e-05, 1.315056181e-05, -2.063701419e-06, -1.592339722e-05, -2.1685802e-05, -1.851511546e-05, -1.05325287e-05, -3.266178707e-06, -4.201367963e-05, -4.733005084e-06, 7.548557191e-05, 0.0001183465196, 9.370690752e-05, 2.38631846e-05, -4.667889992e-05, -8.3069261e-05, -7.73262269e-05, -4.604500637e-05, -1.470751646e-05, -0.0001506877255, -1.876491025e-05, 0.0002870185737, 0.000471412145, 0.000409965219, 0.0001704612921, -9.074686955e-05, -0.00024282842, -0.0002467174744, -0.0001530999646, -5.015318469e-05, -0.0004475093289, -7.088526874e-05, 0.0008734151737, 0.001494027026, 0.001379278634, 0.0006992257068, -9.140693977e-05, -0.0005913625553, -0.0006598820288, -0.0004258180288, -0.0001426717309, -0.001149258594, -0.0002165762826, 0.002318506186, 0.004120402158, 0.004006448576, 0.002330409453, 0.0002444308415, -0.001178066661, -0.001507328223, -0.001020208547, -0.0003504003943, -0.002534990262, -0.0004363206412, 0.00566882251, 0.01040890572, 0.01072612622, 0.007144690856, 0.002223147535, -0.001464905915, -0.002727899232, -0.002022461784, -0.0007228369968, -0.004344473785, -0.0002661774743, 0.01199099749, 0.0224588537, 0.02456679128, 0.0185104627, 0.008860160619, 0.000756103442, -0.003016092301, -0.002848546189, -0.001103502998, -0.004209292674, 0.0006922877789, 0.01537321168, 0.02898970127, 0.03323018764, 0.02728288908, 0.01594571389, 0.005369572905, -0.000634188128, -0.001930999019, -0.0008908881571, -7.696693345e-07, -3.239604932e-07, 4.262298901e-07, 5.622130217e-07, 5.904724281e-09, -8.70715142e-07, -1.610825403e-06, -1.88333229e-06, -1.601147175e-06, -9.552690466e-07, -3.169054754e-07, -6.665031156e-06, -2.454519469e-06, 5.493867268e-06, 8.381890884e-06, 4.709809348e-06, -2.6335793e-06, -9.623581336e-06, -1.309552369e-05, -1.191618595e-05, -7.389661819e-06, -2.51310561e-06, -3.308823121e-05, -1.175879233e-05, 3.274207374e-05, 5.358987305e-05, 3.988860098e-05, 4.591368451e-06, -3.206820422e-05, -5.324890358e-05, -5.193767273e-05, -3.335688394e-05, -1.158143463e-05, -0.0001227318054, -4.55574294e-05, 0.000132463892, 0.0002287645592, 0.0001917022341, 6.48801319e-05, -7.592363018e-05, -0.0001649737273, -0.0001724106431, -0.0001142166013, -4.033383037e-05, -0.0003775580993, -0.0001563875577, 0.0004158039286, 0.000758535009, 0.0006814553897, 0.0003056190143, -0.0001349672375, -0.0004307256943, -0.0004810754041, -0.0003273060756, -0.0001171501043, -0.001018525225, -0.0005062913418, 0.001050092073, 0.0020721601, 0.001966489867, 0.001015285303, -0.0001597679103, -0.0009846131657, -0.001172343648, -0.0008159838265, -0.0002950671541, -0.002439049023, -0.001552661266, 0.002031541565, 0.004658006919, 0.004717872287, 0.002716160824, 5.915616261e-05, -0.00189440931, -0.002434919337, -0.001735081401, -0.0006328485944, -0.004723497458, -0.003850287816, 0.00257852893, 0.008007191933, 0.008930705954, 0.005830129646, 0.001157027409, -0.002518568504, -0.003765344147, -0.002789641925, -0.001030013077, -0.005283049758, -0.005175238372, 0.001525867417, 0.008137277052, 0.0102317044, 0.007674068401, 0.002886191325, -0.001253966632, -0.003004934605, -0.00242316667, -0.0009179021958 +-5.367797173e-07, -6.196332981e-07, 7.917124173e-08, 9.432869149e-07, 1.115821138e-06, 2.172062677e-07, -1.377241559e-06, -2.796065085e-06, -3.23839431e-06, -2.482449351e-06, -1.056895885e-06, -4.488749034e-06, -4.853948673e-06, 2.336253936e-06, 1.203767729e-05, 1.639844586e-05, 1.107754621e-05, -1.780757659e-06, -1.51250928e-05, -2.158957014e-05, -1.812654831e-05, -8.126833666e-06, -2.165962149e-05, -2.295278609e-05, 1.524237101e-05, 6.952676614e-05, 0.0001002571348, 8.271338756e-05, 2.352556977e-05, -4.471497364e-05, -8.470443569e-05, -7.777428511e-05, -3.646631465e-05, -7.839239626e-05, -8.384759419e-05, 6.030386481e-05, 0.0002734509339, 0.0004091389265, 0.0003686368037, 0.0001653397006, -8.82935425e-05, -0.00025410359, -0.0002544763518, -0.0001240089525, -0.00023525078, -0.0002578653276, 0.0001820407318, 0.0008553661547, 0.00131835391, 0.00125398664, 0.0006760058579, -9.41443815e-05, -0.0006371511271, -0.000697270464, -0.0003518206004, -0.0006129525105, -0.0006879874677, 0.0004824412325, 0.002334225779, 0.003693652433, 0.003675856007, 0.002248199036, 0.0002111069461, -0.001326178254, -0.001637761674, -0.0008599020302, -0.001384662741, -0.00155709467, 0.001263411224, 0.005874786929, 0.009505529691, 0.009924424664, 0.006853118576, 0.002041068012, -0.001895436553, -0.003115708903, -0.001752869721, -0.002469163678, -0.002671658541, 0.003061080296, 0.0127172009, 0.02088613258, 0.02284366696, 0.01755791237, 0.008129709317, -0.0003317425166, -0.003964594045, -0.002605933372, -0.002534427806, -0.002527647163, 0.004453040812, 0.01648763497, 0.02728288908, 0.0308811373, 0.02551331899, 0.01446405615, 0.003705954589, -0.001992017301, -0.001998991092, -3.214752775e-07, -3.748847081e-07, -6.756352902e-08, 2.90239759e-07, 3.49531693e-07, -7.065014006e-08, -8.905787084e-07, -1.764101334e-06, -2.202783855e-06, -1.859455314e-06, -8.69997703e-07, -2.830722389e-06, -3.159649754e-06, 2.295457422e-07, 4.63035224e-06, 6.647755458e-06, 4.215946482e-06, -2.391084852e-06, -1.036944586e-05, -1.538151993e-05, -1.400517414e-05, -6.825506282e-06, -1.428435811e-05, -1.574844662e-05, 3.44340221e-06, 2.98971766e-05, 4.536694098e-05, 3.773615664e-05, 6.86260759e-06, -3.400572053e-05, -6.29925854e-05, -6.175120928e-05, -3.116253399e-05, -5.387594321e-05, -6.003646585e-05, 1.666312844e-05, 0.0001270766532, 0.0001995412115, 0.0001837929698, 7.514130152e-05, -7.907982108e-05, -0.0001969536024, -0.000207126028, -0.0001076296731, -0.0001687000961, -0.000194107801, 4.98684533e-05, 0.0004155684791, 0.0006735255948, 0.0006563696111, 0.0003395193624, -0.0001363224023, -0.0005187700101, -0.0005824889301, -0.000310089337, -0.0004642358833, -0.0005687720688, 7.697578832e-05, 0.001098359996, 0.001865449849, 0.00190066972, 0.001111656132, -0.0001413249384, -0.0011888507, -0.001422319775, -0.0007730219046, -0.001139073761, -0.001548025973, -0.000153090576, 0.002276133121, 0.004254041343, 0.004585135651, 0.002966719025, 0.0001768555725, -0.002258912598, -0.002929133114, -0.001628930337, -0.002274996641, -0.00350461173, -0.001290310333, 0.003277425981, 0.007434321858, 0.008729210489, 0.006342340822, 0.001547047942, -0.002911757017, -0.004441642655, -0.002568624824, -0.00263943035, -0.004536397943, -0.0026028072, 0.002461482175, 0.007660250155, 0.009990157921, 0.008191280173, 0.003432187554, -0.001386628347, -0.003467286868, -0.002175496794 +-2.273825491e-07, -4.950310715e-07, -4.361462751e-07, 7.154375859e-08, 7.161391327e-07, 9.196076095e-07, 2.397523658e-07, -1.25775286e-06, -2.886842299e-06, -3.551100912e-06, -2.316629103e-06, -1.9055052e-06, -4.039240214e-06, -2.985267875e-06, 2.649508268e-06, 1.030443163e-05, 1.463543492e-05, 1.096995205e-05, -1.136466793e-06, -1.636416048e-05, -2.496375626e-05, -1.767964163e-05, -9.200991984e-06, -1.934113109e-05, -1.291146065e-05, 1.816089276e-05, 6.206159964e-05, 9.17270606e-05, 8.151271178e-05, 2.567203362e-05, -5.212094678e-05, -0.0001034088497, -7.881398002e-05, -3.331050458e-05, -7.023238979e-05, -4.515702267e-05, 7.491991474e-05, 0.0002497384199, 0.0003793387457, 0.0003634606226, 0.0001712943713, -0.0001182811903, -0.0003277028851, -0.0002664746323, -0.0001000353862, -0.0002127903303, -0.0001368007608, 0.0002364568971, 0.0007940590861, 0.001233747407, 0.001238366117, 0.0006909560649, -0.0001904414843, -0.0008705189339, -0.0007516631047, -0.0002613221672, -0.0005606651946, -0.0003585898468, 0.0006536539717, 0.002200159235, 0.003482869277, 0.003629857284, 0.002274365884, -5.779299224e-05, -0.001962058807, -0.001822471289, -0.0005948742775, -0.00127760498, -0.0007614304047, 0.001737913292, 0.005623088115, 0.009004220535, 0.009732842817, 0.006803712614, 0.001336680926, -0.00341779236, -0.003658059251, -0.00107911146, -0.002293354109, -0.001115737028, 0.004102448892, 0.0122970507, 0.01973637523, 0.02202314863, 0.01693591394, 0.006446131525, -0.003330062225, -0.005271699992, -0.001139368171, -0.002379534302, -0.0007797831502, 0.00570851485, 0.01594571389, 0.02551331899, 0.02907452188, 0.02383090075, 0.0119188107, 0.0001366776311, -0.00380798471, -1.207251562e-07, -2.588744945e-07, -2.59604533e-07, -6.833371563e-08, 2.12879275e-07, 3.367757615e-07, 5.335733097e-09, -9.258638523e-07, -2.18476509e-06, -2.928466595e-06, -2.06338921e-06, -1.070350377e-06, -2.244029917e-06, -1.958629067e-06, 4.668750735e-07, 4.187281358e-06, 6.852085916e-06, 5.441765228e-06, -1.851107287e-06, -1.313232506e-05, -2.117377935e-05, -1.597950044e-05, -5.433726537e-06, -1.130677791e-05, -9.040945663e-06, 5.53988725e-06, 2.840065362e-05, 4.714367053e-05, 4.529099886e-05, 1.201624886e-05, -4.486934949e-05, -8.992266907e-05, -7.211748935e-05, -2.061148911e-05, -4.30203217e-05, -3.30435808e-05, 2.71843813e-05, 0.0001232596829, 0.000207299343, 0.0002143549977, 9.957304484e-05, -0.0001122939581, -0.0002915359871, -0.0002464691298, -6.491315932e-05, -0.0001372456534, -0.0001061334306, 8.974402607e-05, 0.0004083164032, 0.0006987937773, 0.0007535546792, 0.0004246559139, -0.0002219138981, -0.0007942081403, -0.0007027401718, -0.0001797897944, -0.0003910771055, -0.0003237669742, 0.0002054618169, 0.001095273239, 0.001939500804, 0.002168368481, 0.001364708676, -0.0003214851835, -0.00187078183, -0.001729459968, -0.000445221768, -0.001020449259, -0.0009677269984, 0.0002106130747, 0.002333394397, 0.004464483654, 0.005244548759, 0.003643836992, -6.890694475e-05, -0.003635211379, -0.003569168292, -0.0009026551426, -0.00221955587, -0.002457770759, -0.0004833455003, 0.003541054501, 0.007912786099, 0.01001609382, 0.007786496116, 0.001525040756, -0.004896478588, -0.005426942577, -0.001070150777, -0.002815054006, -0.003509071984, -0.001630875101, 0.00287768161, 0.008192879345, 0.01132484291, 0.009833568792, 0.003825040138, -0.002893234021, -0.004328925969 +-8.098462673e-08, -2.712853301e-07, -4.543946206e-07, -4.220178928e-07, -4.440062184e-08, 5.56020729e-07, 9.485539081e-07, 5.115103352e-07, -1.249317515e-06, -3.850716499e-06, -4.254147612e-06, -6.787270518e-07, -2.244483157e-06, -3.588654673e-06, -2.70794393e-06, 1.767206972e-06, 8.896110651e-06, 1.471970969e-05, 1.31506817e-05, -1.126570534e-06, -2.480700587e-05, -3.189415114e-05, -3.273294006e-06, -1.078446507e-05, -1.684632907e-05, -1.09963224e-05, 1.439990899e-05, 5.535059457e-05, 9.191166102e-05, 9.194179723e-05, 2.569193899e-05, -9.375980681e-05, -0.0001398762507, -1.182875926e-05, -3.904630397e-05, -6.05371448e-05, -3.662838538e-05, 6.315799449e-05, 0.0002265703172, 0.0003803091688, 0.0004015248836, 0.0001716247156, -0.0002703592775, -0.0004658031315, -3.545639095e-05, -0.0001175887879, -0.0001824397404, -0.0001071921471, 0.0002066398018, 0.0007288363955, 0.001238715445, 0.00135362501, 0.0006922112318, -0.0006481089743, -0.001294467048, -9.252219568e-05, -0.0003081708629, -0.0004777708164, -0.0002701381086, 0.0005897383714, 0.0020376035, 0.003492267915, 0.003918994483, 0.002265911971, -0.001252856174, -0.003084356494, -0.0002109987792, -0.0007031158677, -0.001074039921, -0.0005265295439, 0.001617065769, 0.005228001229, 0.008928382414, 0.01024222169, 0.006658113573, -0.001399672927, -0.006029112004, -0.0003857973029, -0.001280107427, -0.001886388271, -0.0006193487463, 0.003878780315, 0.01135633215, 0.01908044959, 0.02222691571, 0.0160662518, 0.001333888138, -0.008282163023, -0.0004137524539, -0.001366008664, -0.001919575351, -0.0002050742632, 0.005369572905, 0.01446405615, 0.02383090075, 0.02796402017, 0.02178752869, 0.006155410216, -0.005433954372, -4.011790317e-08, -1.352723066e-07, -2.435685161e-07, -2.73608136e-07, -1.295078923e-07, 1.961011076e-07, 4.967400987e-07, 2.745979953e-07, -1.101341954e-06, -3.481812995e-06, -4.019682855e-06, -3.565504871e-07, -1.185229738e-06, -2.034271171e-06, -1.942235002e-06, 1.145781703e-07, 4.308485179e-06, 8.742792404e-06, 8.669691452e-06, -2.128152666e-06, -2.317165095e-05, -3.04574884e-05, -1.812753146e-06, -5.991133925e-06, -9.997751902e-06, -8.470775355e-06, 4.337230648e-06, 2.965442491e-05, 5.774532187e-05, 6.371037261e-05, 1.438334192e-05, -9.044409188e-05, -0.0001347382526, -6.882600243e-06, -2.27468702e-05, -3.745731198e-05, -2.95593236e-05, 2.404718045e-05, 0.0001289421013, 0.0002483744529, 0.0002870177636, 0.0001166675768, -0.0002695124375, -0.0004519994895, -2.168562513e-05, -7.204490393e-05, -0.0001185921194, -9.185214048e-05, 8.343962211e-05, 0.0004272358217, 0.0008261909457, 0.0009826321118, 0.0004937253957, -0.0006736383744, -0.001265501718, -6.00620857e-05, -0.0002022317971, -0.0003384582054, -0.0002750603927, 0.0002009224467, 0.001153017939, 0.002282890693, 0.00279229663, 0.001594590489, -0.001427169929, -0.003050633014, -0.0001488315811, -0.0005147988695, -0.0008964329306, -0.0008202231983, 0.0002517969191, 0.00251030809, 0.005289437284, 0.00674485062, 0.00434765209, -0.002270902303, -0.006112018751, -0.0003030675067, -0.001089971867, -0.00200445701, -0.002104642025, -0.0002672213087, 0.003985083954, 0.009493015372, 0.01288194077, 0.009503752743, -0.001587385725, -0.008850090544, -0.0003630225251, -0.001358854665, -0.002625798287, -0.003052738421, -0.001251669508, 0.003444026603, 0.009846547257, 0.01434775796, 0.01201466985, 0.001533919841, -0.006490863814 +-2.312518972e-08, -1.091330272e-07, -2.729148355e-07, -4.559781418e-07, -5.113536977e-07, -2.531687341e-07, 4.040964899e-07, 1.144157624e-06, 7.353196559e-07, -2.471884496e-06, -5.410538174e-06, -1.937967034e-07, -9.089285474e-07, -2.233410569e-06, -3.56862514e-06, -3.477078918e-06, -1.337865412e-07, 7.362398796e-06, 1.618315884e-05, 1.515105522e-05, -1.102285939e-05, -3.841940244e-05, -9.335109673e-07, -4.373192131e-06, -1.06616257e-05, -1.661450311e-05, -1.465789394e-05, 4.941510103e-06, 4.730975e-05, 9.844976547e-05, 0.0001018690312, -2.052589378e-05, -0.00015993944, -3.367519409e-06, -1.58052792e-05, -3.846905216e-05, -5.929295953e-05, -4.941343763e-05, 2.883691709e-05, 0.000196453256, 0.0004025994095, 0.0004373064203, 9.225377971e-06, -0.0005066345727, -1.007426646e-05, -4.743971577e-05, -0.0001156327501, -0.0001776198632, -0.0001437882609, 0.000104585221, 0.0006367561488, 0.001300765235, 0.001456284563, 0.0002162857214, -0.001339824969, -2.624431488e-05, -0.0001239394972, -0.00030225909, -0.0004618933112, -0.0003609720645, 0.0003236187428, 0.001784469938, 0.003622381192, 0.004147991837, 0.001038405179, -0.003018121812, -5.983851183e-05, -0.000282665098, -0.0006854748931, -0.001026766857, -0.0007261903694, 0.0009836302104, 0.004546512256, 0.009015032294, 0.0105189269, 0.003817449337, -0.005426793416, -0.0001097676567, -0.0005170915325, -0.001236220828, -0.001773791947, -0.0009883394495, 0.002574928033, 0.00966862738, 0.01841433721, 0.02179710398, 0.01055860624, -0.006305344352, -0.0001186543728, -0.0005573007553, -0.001308794582, -0.001774797229, -0.000634188128, 0.003705954589, 0.0119188107, 0.02178752869, 0.02600871819, 0.01528364374, -0.002521507445, -1.119047247e-08, -5.482246351e-08, -1.485605182e-07, -2.800474665e-07, -3.733559013e-07, -2.767533586e-07, 1.587376288e-07, 7.701073399e-07, 4.519901527e-07, -2.51614743e-06, -5.333264755e-06, -9.939310708e-08, -4.817094793e-07, -1.274686373e-06, -2.291552518e-06, -2.72124502e-06, -1.038563823e-06, 4.233751594e-06, 1.168038809e-05, 1.136404906e-05, -1.247469098e-05, -3.824282985e-05, -5.046675569e-07, -2.432320365e-06, -6.343540922e-06, -1.105503731e-05, -1.20458743e-05, -1.075785875e-06, 2.977372994e-05, 7.351050758e-05, 8.003624344e-05, -3.052219877e-05, -0.0001605275425, -1.912756771e-06, -9.199993211e-06, -2.380187413e-05, -4.072259764e-05, -4.199294182e-05, 4.5547413e-06, 0.0001296786752, 0.0003076765371, 0.0003522083319, -3.304323953e-05, -0.0005121588139, -6.012751147e-06, -2.894663715e-05, -7.467842993e-05, -0.0001267494175, -0.0001275255704, 2.512427148e-05, 0.0004286462734, 0.001005412989, 0.001186801423, 7.469446334e-05, -0.00136489547, -1.659591809e-05, -8.030365327e-05, -0.0002078446601, -0.0003539287974, -0.00035973647, 5.521362806e-05, 0.001159266056, 0.002753425031, 0.003345751173, 0.0005929579896, -0.00311724015, -4.093287079e-05, -0.0002004329494, -0.0005247110892, -0.0009084661023, -0.0009689671296, -2.867717595e-05, 0.00256585504, 0.006392344172, 0.008099654204, 0.002408020581, -0.005799796034, -8.305435587e-05, -0.0004142760543, -0.001103907101, -0.001959370408, -0.002232943695, -0.0005985259913, 0.004228734704, 0.01157472222, 0.01557433568, 0.006851607718, -0.007378285024, -9.954802978e-05, -0.0005065379852, -0.001373389758, -0.002491913033, -0.002997482731, -0.00136902563, 0.003849174966, 0.01203254148, 0.01730166279, 0.01009561254, -0.004070508501 +-4.761265215e-09, -3.026867136e-08, -1.046966716e-07, -2.566715691e-07, -4.862197224e-07, -7.164738994e-07, -7.38723375e-07, -2.652714456e-07, 5.27253744e-07, 1.317582898e-07, -1.773937511e-06, -3.990952389e-08, -2.530996591e-07, -8.696024481e-07, -2.10310099e-06, -3.879505205e-06, -5.394843993e-06, -4.628824149e-06, 1.168733738e-06, 1.068706349e-05, 1.047560949e-05, -6.176226639e-06, -1.921084031e-07, -1.218776433e-06, -4.178150119e-06, -1.003853786e-05, -1.823896611e-05, -2.441990867e-05, -1.795983748e-05, 1.558606862e-05, 7.0765635e-05, 8.087028183e-05, 1.680349496e-07, -6.921924425e-07, -4.40047694e-06, -1.509392618e-05, -3.61939719e-05, -6.529598663e-05, -8.558206674e-05, -5.65295105e-05, 7.718824833e-05, 0.000298992028, 0.0003660438892, 7.938912375e-05, -2.067873122e-06, -1.318296332e-05, -4.530219939e-05, -0.0001086638754, -0.0001954874985, -0.0002533274688, -0.0001563056537, 0.0002681236718, 0.0009786518773, 0.001250803241, 0.0004164435223, -5.379389668e-06, -3.437168049e-05, -0.0001182331399, -0.0002833472323, -0.0005075261048, -0.0006489128542, -0.0003706330378, 0.0007869537337, 0.002729439574, 0.003585964649, 0.001474544351, -1.22527111e-05, -7.828377458e-05, -0.0002684612655, -0.0006386759662, -0.001127194218, -0.001392595358, -0.0006534745847, 0.002127010631, 0.006720904939, 0.008920313325, 0.004204723, -2.247887031e-05, -0.0001431603396, -0.0004864847537, -0.0011373713, -0.001944271377, -0.002234542063, -0.0005767310689, 0.004812370593, 0.01339026565, 0.01764435895, 0.00912664986, -2.434486526e-05, -0.0001543292903, -0.0005177386601, -0.001181354735, -0.001930999019, -0.001992017301, 0.0001366776311, 0.006155410216, 0.01528364374, 0.01981863304, 0.01087491412, -2.347079649e-09, -1.595192813e-08, -6.069420799e-08, -1.667269622e-07, -3.574020108e-07, -6.003564921e-07, -7.27094123e-07, -4.367523812e-07, 1.988373217e-07, -1.845783255e-07, -1.910063032e-06, -2.077968572e-08, -1.399399939e-07, -5.248428019e-07, -1.412549535e-06, -2.937331287e-06, -4.676603418e-06, -4.936792384e-06, -8.12894758e-07, 7.340049146e-06, 7.340975968e-06, -7.542061762e-06, -1.051363493e-07, -7.039447808e-07, -2.614795101e-06, -6.940142529e-06, -1.413377378e-05, -2.166197005e-05, -2.042822014e-05, 4.850164493e-06, 5.343417071e-05, 6.480713168e-05, -6.880521931e-06, -3.969957105e-07, -2.648725636e-06, -9.775755562e-06, -2.57058201e-05, -5.163486053e-05, -7.7183838e-05, -6.714700181e-05, 3.692963381e-05, 0.0002353521728, 0.0003073417989, 5.35189263e-05, -1.242711807e-06, -8.276135184e-06, -3.041949006e-05, -7.950131372e-05, -0.0001583092293, -0.0002331529449, -0.0001934076448, 0.0001432481309, 0.0007856526954, 0.001074106961, 0.0003385700757, -3.410423642e-06, -2.271060374e-05, -8.327634762e-05, -0.0002167531572, -0.000429214502, -0.0006272074269, -0.0005108000633, 0.000410860246, 0.002180248546, 0.003095637834, 0.001260961537, -8.340420074e-06, -5.565651543e-05, -0.0002038312303, -0.0005285825025, -0.001041362643, -0.001514366135, -0.001236606633, 0.0009397004748, 0.005150585541, 0.007589697429, 0.00364271935, -1.675228708e-05, -0.0001122285356, -0.0004104769782, -0.001058774957, -0.002069838733, -0.002989871999, -0.002467779533, 0.001615519748, 0.009545435974, 0.01457743438, 0.007883768462, -1.991607313e-05, -0.0001339775461, -0.0004887894714, -0.001250852006, -0.002417683037, -0.003454324797, -0.002872285732, 0.001556228647, 0.0101083061, 0.01589106298, 0.009343634848 +-5.365993151e-10, -4.494627149e-09, -2.088729238e-08, -7.128674488e-08, -1.998476551e-07, -4.863680798e-07, -1.038582852e-06, -1.806782144e-06, -1.834670836e-06, 1.124234131e-06, 5.054714119e-06, -4.500560236e-09, -3.769152495e-08, -1.748630149e-07, -5.947698304e-07, -1.658464571e-06, -4.003366888e-06, -8.428700767e-06, -1.42006883e-05, -1.270865963e-05, 1.445443851e-05, 4.657718875e-05, -2.166078726e-08, -1.816539175e-07, -8.430386376e-07, -2.865031746e-06, -7.970183111e-06, -1.914909387e-05, -3.99190741e-05, -6.559854575e-05, -5.261156008e-05, 8.543763487e-05, 0.0002354168555, -7.800502641e-08, -6.556655887e-07, -3.047731209e-06, -1.036543347e-05, -2.882434709e-05, -6.908894302e-05, -0.0001430306449, -0.0002305080828, -0.0001686552743, 0.0003452032229, 0.000867019695, -2.32858242e-07, -1.962368295e-06, -9.140427412e-06, -3.112941948e-05, -8.659832857e-05, -0.000207274786, -0.0004267549988, -0.0006767603493, -0.0004582817528, 0.001102532984, 0.002597773058, -6.051425822e-07, -5.109337029e-06, -2.382369533e-05, -8.114294248e-05, -0.0002254726876, -0.0005380465863, -0.001100294645, -0.001717136468, -0.001081687951, 0.002965213513, 0.006635845315, -1.376098199e-06, -1.161085357e-05, -5.399615772e-05, -0.0001830402508, -0.000505100869, -0.001194145418, -0.00241119562, -0.003685877353, -0.00213957892, 0.006706239045, 0.01430076474, -2.517943366e-06, -2.114438865e-05, -9.746986948e-05, -0.0003261520828, -0.0008848611081, -0.002049681679, -0.004043102074, -0.005999786349, -0.003142142678, 0.01150463167, 0.02339149723, -2.717430275e-06, -2.263753286e-05, -0.0001028857937, -0.0003372740225, -0.0008908881571, -0.001998991092, -0.00380798471, -0.005433954372, -0.002521507445, 0.01087491412, 0.02115954061, -2.792432067e-10, -2.558345141e-09, -1.321758663e-08, -5.044253498e-08, -1.575812911e-07, -4.224632856e-07, -9.758269659e-07, -1.801183493e-06, -1.950591004e-06, 9.016689284e-07, 4.885700645e-06, -2.459585503e-09, -2.235254186e-08, -1.14358004e-07, -4.317279113e-07, -1.333050332e-06, -3.526934623e-06, -8.003357675e-06, -1.429012307e-05, -1.381266653e-05, 1.25209952e-05, 4.516386738e-05, -1.238029854e-08, -1.118519343e-07, -5.680930225e-07, -2.12739513e-06, -6.511645329e-06, -1.705714023e-05, -3.817436184e-05, -6.636553229e-05, -5.812396436e-05, 7.622748868e-05, 0.0002288445911, -4.650736852e-08, -4.183357555e-07, -2.112843035e-06, -7.862754295e-06, -2.390444137e-05, -6.212982237e-05, -0.0001375091905, -0.0002339035181, -0.000188427371, 0.0003131422654, 0.0008445577863, -1.447776408e-07, -1.297774525e-06, -6.524042262e-06, -2.414894648e-05, -7.298623688e-05, -0.0001883874089, -0.0004128364505, -0.0006891542202, -0.0005173625647, 0.001010042234, 0.002534347586, -3.944223435e-07, -3.523978285e-06, -1.762715009e-05, -6.484240693e-05, -0.0001945510408, -0.0004978045821, -0.001078380125, -0.001766854135, -0.001248818622, 0.002722740885, 0.006476266203, -9.536586024e-07, -8.483201196e-06, -4.210870425e-05, -0.000153287173, -0.0004539995538, -0.001143930237, -0.002433676955, -0.003898157108, -0.002616848056, 0.006100490659, 0.01393111153, -1.885691036e-06, -1.666271801e-05, -8.169149497e-05, -0.0002922136694, -0.0008464885221, -0.002077833644, -0.004295444829, -0.006678524316, -0.004303044672, 0.01022525373, 0.0226804969, -2.205702427e-06, -1.932407171e-05, -9.322314316e-05, -0.0003258307601, -0.0009162630487, -0.00217126775, -0.004321061944, -0.006480658888, -0.004062209024, 0.009346769089, 0.02037727627 +0.03183956151, -0.0218973458, -0.0192106563, -0.009112369486, -0.003705562777, -0.001398064535, -0.0004905272972, -0.0001570313036, -4.372633723e-05, -9.467202514e-06, -1.189047245e-06, 0.02097185169, -0.01096089973, -0.01125654184, -0.005601649597, -0.002332386684, -0.0008961637852, -0.0003196345825, -0.0001036313013, -2.905262831e-05, -6.294720089e-06, -7.880176972e-07, 0.01138491919, -0.004899241944, -0.005860202166, -0.003056561776, -0.001302146946, -0.0005081984202, -0.000183540443, -6.000552456e-05, -1.686775384e-05, -3.644717506e-06, -4.534377459e-07, 0.005171163573, -0.002002302786, -0.002707239253, -0.001472516012, -0.000640311327, -0.0002529762245, -9.214251221e-05, -3.02621473e-05, -8.504797041e-06, -1.829034404e-06, -2.258235659e-07, 0.001962389891, -0.0006949338671, -0.001068810263, -0.0006080723004, -0.0002702947621, -0.0001081002531, -3.967943639e-05, -1.308011295e-05, -3.672533113e-06, -7.856720532e-07, -9.622114865e-08, 0.0006245289739, -0.0002064015304, -0.0003609598525, -0.000214997067, -9.777351374e-05, -3.95797307e-05, -1.46324677e-05, -4.838840228e-06, -1.357075939e-06, -2.88843874e-07, -3.510002916e-08, 0.0001586884495, -5.162777463e-05, -0.0001001354654, -6.226682437e-05, -2.895712496e-05, -1.185819968e-05, -4.411700687e-06, -1.462593959e-06, -4.096505838e-07, -8.677119696e-08, -1.046811539e-08, 2.856832286e-05, -1.011520603e-05, -2.059765155e-05, -1.329053877e-05, -6.311202326e-06, -2.612135318e-06, -9.770147923e-07, -3.244672782e-07, -9.072554009e-08, -1.912597547e-08, -2.291454054e-09, 2.695251845e-06, -1.225423672e-06, -2.403176493e-06, -1.592140438e-06, -7.696693345e-07, -3.214752775e-07, -1.207251562e-07, -4.011790317e-08, -1.119047247e-08, -2.347079649e-09, -2.792432067e-10, 0.1918861958, 0.04648796063, -0.006777745862, -0.01086486192, -0.006877081867, -0.003478723043, -0.001496093384, -0.0005387272372, -0.0001544404025, -3.171875278e-05, -3.546743489e-06, 0.1126034445, 0.03088156089, -0.003122737452, -0.006462140685, -0.00417902717, -0.002123929777, -0.0009160660195, -0.0003309848886, -9.528011709e-05, -1.966372145e-05, -2.210835312e-06, 0.05656869934, 0.01707368276, -0.001327596015, -0.003425330714, -0.002249332996, -0.001145254093, -0.0004940874539, -0.0001786603259, -5.15074973e-05, -1.06523583e-05, -1.200783396e-06, 0.02450514999, 0.007931660282, -0.0005472348741, -0.001611019907, -0.001067499298, -0.0005430774387, -0.0002338161298, -8.442282105e-05, -2.432120713e-05, -5.029445834e-06, -5.671868711e-07, 0.00890550157, 0.003093545546, -0.0001958296292, -0.0006485557956, -0.0004335742949, -0.0002202789938, -9.456628825e-05, -3.406754615e-05, -9.800906023e-06, -2.025530933e-06, -2.284361997e-07, 0.00273076673, 0.001018588116, -6.081895578e-05, -0.0002234885696, -0.0001508201939, -7.653918697e-05, -3.275817118e-05, -1.177153837e-05, -3.381201341e-06, -6.982723588e-07, -7.874862667e-08, 0.0006776856235, 0.0002701633494, -1.63147507e-05, -6.320746212e-05, -4.302472771e-05, -2.181337047e-05, -9.306509919e-06, -3.335184742e-06, -9.562796709e-07, -1.973105023e-07, -2.224872658e-08, 0.0001218003807, 5.145798712e-05, -3.577388543e-06, -1.322649487e-05, -9.053497135e-06, -4.583462739e-06, -1.948536332e-06, -6.960980407e-07, -1.99155326e-07, -4.10417194e-08, -4.625923361e-09, 1.192811193e-05, 5.261341773e-06, -5.074135979e-07, -1.563841185e-06, -1.069193918e-06, -5.395921465e-07, -2.28332927e-07, -8.123753589e-08, -2.317337254e-08, -4.766519794e-09, -5.367224312e-10 +-0.02188581046, 0.03141153552, 0.02081647715, 0.006197132181, 0.0003474160839, -0.000943016864, -0.000821336022, -0.0004709327227, -0.000206871968, -6.540165362e-05, -1.136456602e-05, -0.02401044063, 0.01302103878, 0.01145815014, 0.003663315053, 0.0001731063128, -0.0006318362772, -0.0005491602195, -0.0003153157545, -0.0001380988818, -4.339846478e-05, -7.492766014e-06, -0.01564907599, 0.004711983986, 0.005616443328, 0.001898255622, 5.961475192e-05, -0.0003762224338, -0.0003229037931, -0.0001846267243, -8.032749097e-05, -2.502422227e-05, -4.281878655e-06, -0.007451742568, 0.001614837715, 0.002451201736, 0.0008558606879, 5.99117347e-06, -0.0001971425662, -0.0001657329987, -9.397547394e-05, -4.05284957e-05, -1.250030012e-05, -2.117616037e-06, -0.002922496212, 0.0004179932869, 0.0008928060855, 0.0003205673664, -1.048238685e-05, -8.9429047e-05, -7.318851065e-05, -4.105271654e-05, -1.752615943e-05, -5.347182477e-06, -8.961282418e-07, -0.000981383312, 5.533626491e-05, 0.0002659955589, 9.788732235e-05, -9.800460022e-06, -3.503852949e-05, -2.777132486e-05, -1.537888203e-05, -6.494702471e-06, -1.95975399e-06, -3.249069106e-07, -0.0002726438976, -1.244896683e-05, 6.010313186e-05, 2.244545575e-05, -5.168491903e-06, -1.133528217e-05, -8.651978065e-06, -4.718965539e-06, -1.969766924e-06, -5.877916341e-07, -9.642174807e-08, -5.65671956e-05, -9.346547144e-06, 8.454188493e-06, 3.098137361e-06, -1.773968356e-06, -2.731559554e-06, -1.993012187e-06, -1.066881713e-06, -4.394614659e-07, -1.29602809e-07, -2.1031605e-08, -6.685669487e-06, -2.035845992e-06, 3.570717293e-07, 9.213273641e-08, -3.239604932e-07, -3.748847081e-07, -2.588744945e-07, -1.352723066e-07, -5.482246351e-08, -1.595192813e-08, -2.558345141e-09, 0.04648796063, 0.1067498757, 0.06865545263, 0.02785340336, 0.006612004816, -0.001025048981, -0.002290962114, -0.001532931691, -0.0006655547187, -0.0001905341587, -2.85704634e-05, 0.0095827944, 0.05127364228, 0.03605021409, 0.01469676779, 0.003142638376, -0.000950279228, -0.001508470886, -0.0009716822324, -0.0004176293288, -0.0001193795761, -1.794363717e-05, -0.0003130637851, 0.02248118218, 0.01708705465, 0.006979029731, 0.001323925212, -0.0006463849401, -0.0008565958029, -0.0005364390612, -0.0002285070581, -6.514610174e-05, -9.794238579e-06, -0.0007278647183, 0.009349329665, 0.00740499998, 0.003016895429, 0.0005103617021, -0.0003489332737, -0.0004188666779, -0.0002572319026, -0.0001087627468, -3.090955809e-05, -4.641827742e-06, -0.0003622090444, 0.003321920624, 0.002727794289, 0.001105106151, 0.0001589486641, -0.0001589266524, -0.0001749713198, -0.0001053633362, -4.419618917e-05, -1.251430991e-05, -1.876502787e-06, -0.0001527213275, 0.0009835273662, 0.0008431766088, 0.0003382900062, 3.671719072e-05, -6.193089541e-05, -6.276652671e-05, -3.701495121e-05, -1.539079629e-05, -4.339952438e-06, -6.496142176e-07, -5.527105411e-05, 0.0002288467385, 0.0002074547644, 8.175836796e-05, 4.51820303e-06, -1.980883903e-05, -1.852835795e-05, -1.06841788e-05, -4.399196233e-06, -1.234577397e-06, -1.843874171e-07, -1.519337183e-05, 3.628966311e-05, 3.572424988e-05, 1.356180858e-05, -5.302010221e-07, -4.700948808e-06, -4.054031693e-06, -2.279370866e-06, -9.277501797e-07, -2.588243324e-07, -3.854130331e-08, -2.374532684e-06, 2.690900833e-06, 3.099619621e-06, 1.067573309e-06, -2.820274044e-07, -6.336879241e-07, -5.012607725e-07, -2.734409732e-07, -1.096793113e-07, -3.03563434e-08, -4.500611362e-09 +-0.01917730875, 0.02084320615, 0.02569168234, 0.01611063206, 0.007414615192, 0.00238313877, 0.0001289936692, -0.000549880672, -0.0005003204245, -0.0002465884087, -6.04547166e-05, -0.01997982566, 0.006176946585, 0.01291192375, 0.008855155937, 0.004156773864, 0.001265848706, -4.420644074e-05, -0.0004126006321, -0.000344535128, -0.0001648983392, -3.984665526e-05, -0.01328288604, 0.001035630927, 0.006008039967, 0.00446554019, 0.002126181859, 0.0006125401539, -7.700060558e-05, -0.0002576071515, -0.0002035280959, -9.515831678e-05, -2.267778039e-05, -0.00664291423, -3.968806386e-05, 0.002633043782, 0.002061437856, 0.0009864783117, 0.0002697108451, -5.604455901e-05, -0.0001357443434, -0.000103296002, -4.739210449e-05, -1.11507026e-05, -0.002765539411, -0.0002125772696, 0.0009796966213, 0.0008107959673, 0.0003886055168, 9.875520466e-05, -3.209790618e-05, -6.130840581e-05, -4.492991004e-05, -2.021102494e-05, -4.690785364e-06, -0.0009855107649, -0.0001534062805, 0.0002985797472, 0.0002663032922, 0.0001274587517, 2.877356479e-05, -1.527760365e-05, -2.38305753e-05, -1.67834619e-05, -7.394168345e-06, -1.691802812e-06, -0.0002887881908, -7.055454816e-05, 6.871468376e-05, 6.86510377e-05, 3.26244132e-05, 5.867522545e-06, -5.849953029e-06, -7.624128679e-06, -5.146563534e-06, -2.217867688e-06, -4.999934839e-07, -6.263563412e-05, -2.159445664e-05, 9.723854537e-06, 1.204493703e-05, 5.601096488e-06, 5.094983961e-07, -1.641471839e-06, -1.810111837e-06, -1.165794627e-06, -4.902337141e-07, -1.08759128e-07, -7.649184129e-06, -3.516985642e-06, 3.792205642e-07, 9.882839262e-07, 4.262298901e-07, -6.756352902e-08, -2.59604533e-07, -2.435685161e-07, -1.485605182e-07, -6.069420799e-08, -1.321758663e-08, -0.006777745862, 0.06865545263, 0.08438625304, 0.06219130642, 0.03368198862, 0.01289425959, 0.002203257711, -0.001269793115, -0.001330673911, -0.0005944193971, -0.0001254435318, -0.01971868085, 0.02437492876, 0.03923550567, 0.03070464275, 0.01679098439, 0.006157565903, 0.0006652368816, -0.001011368507, -0.0008847893547, -0.000381780059, -7.983740021e-05, -0.01517938915, 0.007240981, 0.01685019692, 0.0139442789, 0.007664269826, 0.002676696417, 0.0001023447595, -0.0006322253495, -0.0005018882264, -0.0002116273105, -4.393815944e-05, -0.007666318861, 0.00227597228, 0.007038413693, 0.005994474907, 0.003284541114, 0.001099339518, -2.041138717e-05, -0.0003222970208, -0.0002435551253, -0.0001012945116, -2.09238406e-05, -0.003148010732, 0.0005664279295, 0.002531614562, 0.002212627426, 0.001203834437, 0.000381747654, -3.469063248e-05, -0.0001392762939, -0.0001007862768, -4.136703075e-05, -8.500739473e-06, -0.001104697258, 6.502114923e-05, 0.0007570268625, 0.0006855965549, 0.0003694207303, 0.0001081453457, -2.219193728e-05, -5.169725437e-05, -3.579812935e-05, -1.448407061e-05, -2.959109307e-06, -0.0003196303347, -2.315896402e-05, 0.000176227577, 0.0001685529147, 8.9577475e-05, 2.294925596e-05, -9.593193383e-06, -1.580554755e-05, -1.045716056e-05, -4.164274647e-06, -8.450107922e-07, -6.869826943e-05, -1.486612552e-05, 2.730439004e-05, 2.875423612e-05, 1.492165036e-05, 2.864865798e-06, -2.831056981e-06, -3.589455404e-06, -2.260974313e-06, -8.838131115e-07, -1.778414033e-07, -8.348559188e-06, -3.137253341e-06, 1.817222373e-06, 2.40944899e-06, 1.181687411e-06, 4.769466664e-08, -4.542606572e-07, -4.623598977e-07, -2.754721265e-07, -1.052272139e-07, -2.093816574e-08 +-0.009090812105, 0.006223067317, 0.01612343065, 0.01682272892, 0.01279531576, 0.007689137139, 0.003358515092, 0.0005575436, -0.00062138921, -0.0006325956222, -0.0002329694406, -0.009453203639, -0.0008394351218, 0.006490382097, 0.008270418905, 0.006700696045, 0.004065775474, 0.001677068774, 0.0001205000102, -0.0004956131234, -0.0004348211352, -0.0001544353903, -0.006399293101, -0.00205745267, 0.00237076419, 0.003817809079, 0.003269006252, 0.001992176799, 0.000773687734, -1.960028029e-05, -0.0003141067006, -0.0002538436125, -8.785658797e-05, -0.00329297397, -0.001332990066, 0.0008893352161, 0.001694064568, 0.00149380011, 0.0009073370565, 0.0003347686894, -3.459564549e-05, -0.0001642010517, -0.0001266552763, -4.303441268e-05, -0.001418154158, -0.0006708667708, 0.0002732530491, 0.0006432812089, 0.0005835428072, 0.0003520300236, 0.0001215901567, -2.521576803e-05, -7.327033149e-05, -5.406852287e-05, -1.802651758e-05, -0.0005235474993, -0.0002865446529, 5.52530648e-05, 0.0002005912996, 0.0001894333428, 0.0001131851276, 3.529473293e-05, -1.362336193e-05, -2.815572913e-05, -1.982948725e-05, -6.477824714e-06, -0.0001588652662, -0.0001000386178, 5.827655562e-07, 4.728326691e-05, 4.772870448e-05, 2.809548258e-05, 7.23768587e-06, -5.638793979e-06, -8.917397221e-06, -5.975391824e-06, -1.909430005e-06, -3.563913376e-05, -2.573694293e-05, -4.174673817e-06, 6.856784763e-06, 7.963926293e-06, 4.549168365e-06, 6.689176654e-07, -1.667309663e-06, -2.098346275e-06, -1.330861978e-06, -4.14815391e-07, -4.49364805e-06, -3.718071181e-06, -1.181349449e-06, 2.721516909e-07, 5.622130217e-07, 2.90239759e-07, -6.833371563e-08, -2.73608136e-07, -2.800474665e-07, -1.667269622e-07, -5.044253498e-08, -0.01086486192, 0.02785340336, 0.06219130642, 0.07024396777, 0.05644445148, 0.034118586, 0.01466513035, 0.003159592326, -0.001031072715, -0.001204679946, -0.0003965083595, -0.01520986377, 0.002806922768, 0.02348797877, 0.03127048988, 0.02668677166, 0.01641805391, 0.006828708454, 0.001065715637, -0.0009234892501, -0.0008173441056, -0.0002575311895, -0.01079756, -0.003087309184, 0.007823022494, 0.0128771431, 0.01165957661, 0.007270750623, 0.002908858113, 0.0002600246174, -0.0006022388921, -0.0004677317964, -0.0001434451211, -0.005449357717, -0.002252380397, 0.002784495667, 0.005279740383, 0.004920700152, 0.003073750287, 0.001188477142, 4.440211269e-05, -0.0003107556726, -0.0002274700181, -6.874698538e-05, -0.002266150917, -0.001128936239, 0.0008491052568, 0.001874141445, 0.001788699701, 0.001114084268, 0.0004123151172, -1.129892594e-05, -0.0001353546942, -9.426276195e-05, -2.810532224e-05, -0.0008064680782, -0.0004722309893, 0.0001897766645, 0.0005504848064, 0.0005431605211, 0.0003366908034, 0.0001166125421, -1.51957485e-05, -5.063362432e-05, -3.353018278e-05, -9.851033843e-06, -0.0002363462179, -0.0001607295926, 1.979433597e-05, 0.0001242831249, 0.0001295269529, 7.970265929e-05, 2.462575036e-05, -7.983088753e-06, -1.560148076e-05, -9.807665134e-06, -2.83422912e-06, -5.133292426e-05, -4.024469636e-05, -4.370390239e-06, 1.801072712e-05, 2.093758168e-05, 1.270318994e-05, 3.026308985e-06, -2.591324978e-06, -3.57081952e-06, -2.12252532e-06, -6.015357151e-07, -6.282605058e-06, -5.656868915e-06, -1.748246434e-06, 9.381527389e-07, 1.544173632e-06, 8.995469991e-07, 3.828149596e-08, -4.406298546e-07, -4.634804937e-07, -2.586317285e-07, -7.152994571e-08 +-0.003696383312, 0.0003624492319, 0.007425848059, 0.01279870632, 0.01472798344, 0.01321724258, 0.009182535065, 0.004271437807, 0.0004366973411, -0.001100353934, -0.0007180487119, -0.003802181563, -0.002525019168, 0.001549105154, 0.005211846044, 0.006975098395, 0.006615816591, 0.004627769947, 0.002006507005, -5.989779894e-05, -0.000819086322, -0.0004822038704, -0.00259220106, -0.002328927255, -0.0001947709903, 0.001940912567, 0.003107245279, 0.003098787788, 0.002170054429, 0.0008705979884, -0.0001527330058, -0.0004962809249, -0.0002753839859, -0.001353463815, -0.001329347867, -0.0003204083186, 0.0007437846522, 0.00135201055, 0.001383670638, 0.0009628346231, 0.0003622899424, -0.0001051824328, -0.0002508663229, -0.0001346793155, -0.0005932018587, -0.0006224246788, -0.0002148836814, 0.000236176339, 0.0005035682786, 0.0005291593196, 0.0003648051944, 0.0001264911084, -5.624420274e-05, -0.0001082090528, -5.628697406e-05, -0.000223070888, -0.0002499636978, -0.000111107218, 5.17287627e-05, 0.0001524919565, 0.0001672941459, 0.0001141312642, 3.472290734e-05, -2.524204011e-05, -4.016702429e-05, -2.019181565e-05, -6.895682993e-05, -8.263167485e-05, -4.483795365e-05, 2.896621304e-06, 3.403503916e-05, 4.055546615e-05, 2.732098108e-05, 6.383367778e-06, -9.189898734e-06, -1.228273098e-05, -5.947256436e-06, -1.575913063e-05, -2.024354664e-05, -1.298330622e-05, -2.819946639e-06, 4.266257395e-06, 6.293353304e-06, 4.151217002e-06, 3.300899595e-07, -2.464175947e-06, -2.786341669e-06, -1.292735219e-06, -2.023999187e-06, -2.797575392e-06, -2.077545164e-06, -8.944577089e-07, 5.904724281e-09, 3.49531693e-07, 2.12879275e-07, -1.295078923e-07, -3.733559013e-07, -3.574020108e-07, -1.575812911e-07, -0.006877081867, 0.006612004816, 0.03368198862, 0.05644445148, 0.06283224081, 0.05222571287, 0.03260635918, 0.01390975376, 0.002355834108, -0.001496738642, -0.001006615184, -0.008142188959, -0.005140790019, 0.007930672677, 0.0213620155, 0.02734140221, 0.02416854672, 0.01539213877, 0.006304914887, 0.0005745453936, -0.001184899716, -0.0006732178712, -0.00559979549, -0.005697267449, 0.000144121757, 0.007136011146, 0.01097694578, 0.01034149722, 0.006697243076, 0.002614378671, 1.399782469e-06, -0.000731562467, -0.0003812007414, -0.002817922196, -0.003167878109, -0.0006594497157, 0.002546727152, 0.004433293306, 0.004317069242, 0.002807310544, 0.001052058863, -7.363551561e-05, -0.0003679196505, -0.0001841733753, -0.001174351638, -0.001401832721, -0.0004712192144, 0.0007800088711, 0.001550682243, 0.001553731587, 0.001009929116, 0.0003592016677, -5.706371683e-05, -0.0001568731683, -7.58664198e-05, -0.0004192832779, -0.0005303627742, -0.0002397039924, 0.0001762051084, 0.0004455319988, 0.0004650822441, 0.0003018227331, 9.889515039e-05, -3.03332687e-05, -5.747347979e-05, -2.681080532e-05, -0.0001233411078, -0.0001655462403, -9.326285161e-05, 1.932559387e-05, 9.670398364e-05, 0.0001082997931, 7.008260814e-05, 1.975201948e-05, -1.206899978e-05, -1.73412811e-05, -7.782438964e-06, -2.689711572e-05, -3.840083184e-05, -2.583466039e-05, -3.641382891e-06, 1.27757811e-05, 1.670373719e-05, 1.07360087e-05, 2.032480993e-06, -3.395594217e-06, -3.881778324e-06, -1.668160033e-06, -3.304993139e-06, -5.038304026e-06, -3.942874971e-06, -1.548587301e-06, 4.008318636e-07, 1.075964881e-06, 6.733178282e-07, -7.556812971e-08, -5.272467951e-07, -4.914389579e-07, -2.006694565e-07 +-0.001395017034, -0.0009369705075, 0.002387740885, 0.007688501976, 0.01321335402, 0.01678548718, 0.01643235032, 0.01168193521, 0.004621119904, -0.0008296132802, -0.001848776891, -0.001410974066, -0.001998292029, -0.0007319808125, 0.002051209138, 0.005319517708, 0.00772020146, 0.007988843742, 0.005711108611, 0.001987925967, -0.0009119433482, -0.001269968773, -0.0009633177643, -0.001591497297, -0.00116886778, 0.0001971641984, 0.001947797812, 0.003326601532, 0.00362631018, 0.002592781146, 0.0007770741055, -0.000635860914, -0.0007318575866, -0.0005069535634, -0.0008807099189, -0.0007357433307, -0.0001047426457, 0.000737853334, 0.001415950799, 0.001585030144, 0.001124898847, 0.0002979970265, -0.0003382045806, -0.0003582144865, -0.0002243030142, -0.000404753815, -0.0003666530806, -0.0001158109732, 0.0002322605948, 0.0005170772402, 0.0005947665519, 0.0004174790687, 9.358064355e-05, -0.0001517635401, -0.0001496640466, -8.51465199e-05, -0.0001595983521, -0.0001556465535, -7.196837224e-05, 5.038638622e-05, 0.0001530586729, 0.0001844295333, 0.0001277712668, 2.0911617e-05, -5.86530216e-05, -5.370038954e-05, -2.655848744e-05, -5.176862193e-05, -5.416032127e-05, -3.211036975e-05, 2.705316512e-06, 3.306786206e-05, 4.376911069e-05, 2.981798911e-05, 1.774396189e-06, -1.871349556e-05, -1.583485708e-05, -6.122012429e-06, -1.243463865e-05, -1.392987936e-05, -9.921584615e-06, -2.770760486e-06, 3.835299051e-06, 6.595773487e-06, 4.361231832e-06, -7.794129182e-07, -4.445412062e-06, -3.450493373e-06, -7.928239773e-07, -1.683266576e-06, -2.018605891e-06, -1.663893169e-06, -8.70715142e-07, -7.065014006e-08, 3.367757615e-07, 1.961011076e-07, -2.767533586e-07, -6.003564921e-07, -4.224632856e-07, -0.003478723043, -0.001025048981, 0.01289425959, 0.034118586, 0.05222571287, 0.05789678935, 0.04870375159, 0.030025917, 0.01123765164, -3.526023742e-05, -0.002161682288, -0.003725163004, -0.005611492686, -0.0009938884051, 0.00926127299, 0.01984222032, 0.0250245657, 0.0224023881, 0.01406069585, 0.00486555042, -0.000749698753, -0.001507358032, -0.002500482416, -0.004599617927, -0.003396536498, 0.001186457998, 0.006659796182, 0.009965297623, 0.009526497929, 0.006069835272, 0.001912117096, -0.0006577772254, -0.0008723922985, -0.001251551251, -0.002419972708, -0.002086210078, -0.0001207557459, 0.002382080464, 0.004004399559, 0.003965013182, 0.002534292183, 0.0007391573777, -0.0003708482899, -0.0004256431823, -0.0005202321902, -0.001037471256, -0.000970985665, -0.0002436372592, 0.000730521864, 0.001393398151, 0.001423391934, 0.0009083655379, 0.0002397402441, -0.0001718991661, -0.0001768701832, -0.0001853305833, -0.0003810935245, -0.000383728102, -0.0001574043291, 0.0001652047322, 0.0003968046589, 0.000424158725, 0.0002697563961, 6.009460085e-05, -6.807025984e-05, -6.30905256e-05, -5.440983852e-05, -0.0001155535503, -0.0001247204177, -6.875342979e-05, 1.810493337e-05, 8.456565729e-05, 9.786900407e-05, 6.185485904e-05, 9.51407531e-06, -2.21208574e-05, -1.849757692e-05, -1.184314522e-05, -2.604036368e-05, -3.006802279e-05, -2.043114695e-05, -3.448976086e-06, 1.0617552e-05, 1.477394155e-05, 9.201999915e-06, 7.405172871e-08, -5.328385466e-06, -4.009154952e-06, -1.452576796e-06, -3.318012767e-06, -4.096971951e-06, -3.273745331e-06, -1.46521644e-06, 1.982632848e-07, 8.813352709e-07, 5.173019294e-07, -2.788226922e-07, -7.272010759e-07, -4.885162551e-07 +-0.0004897598416, -0.0008199001749, 0.0001285899636, 0.003352925195, 0.009171759408, 0.01642236358, 0.02199850138, 0.02189864089, 0.01419782286, 0.002480313609, -0.003932588013, -0.0004852562558, -0.001158162152, -0.001297774132, -0.0001730054338, 0.002597905565, 0.006549029486, 0.01000450135, 0.01056057453, 0.006796054729, 0.0005010665138, -0.002815879638, -0.0003306380877, -0.000865490165, -0.001193405529, -0.0008685632634, 0.0003772370928, 0.002361737466, 0.004241853513, 0.004735302384, 0.003010303596, -8.488906842e-05, -0.0016518428, -0.0001747258484, -0.0004716258479, -0.000685071573, -0.0005863432408, -3.563276288e-05, 0.000886402856, 0.001782873496, 0.002047330182, 0.001281518191, -0.0001243874463, -0.0008116277624, -7.770426976e-05, -0.0002146166408, -0.0003226623738, -0.0003016986326, -9.037445926e-05, 0.0002791879646, 0.000645080555, 0.0007613258275, 0.0004666743311, -8.23478343e-05, -0.0003397015419, -2.96337498e-05, -8.376352653e-05, -0.0001302072794, -0.0001313268951, -6.370277395e-05, 6.221062875e-05, 0.0001901732358, 0.0002347682792, 0.0001397614498, -4.165061203e-05, -0.0001221628369, -9.278995915e-06, -2.686895765e-05, -4.320923968e-05, -4.669719398e-05, -2.986395471e-05, 4.774359146e-06, 4.141832307e-05, 5.581232289e-05, 3.172289115e-05, -1.636617296e-05, -3.614126424e-05, -2.145635563e-06, -6.375252711e-06, -1.062054653e-05, -1.224638407e-05, -9.463200519e-06, -2.62364118e-06, 5.0747074e-06, 8.586737485e-06, 4.421740121e-06, -4.624148639e-06, -7.913499585e-06, -2.785556227e-07, -8.513775113e-07, -1.472471342e-06, -1.807235489e-06, -1.610825403e-06, -8.905787084e-07, 5.335733097e-09, 4.967400987e-07, 1.587376288e-07, -7.27094123e-07, -9.758269659e-07, -0.001496093384, -0.002290962114, 0.002203257711, 0.01466513035, 0.03260635918, 0.04870375159, 0.05465846486, 0.04625934449, 0.02665465233, 0.005888296073, -0.003901759524, -0.001485013478, -0.003692494045, -0.00378844822, 0.0006564223821, 0.00930955932, 0.01864360928, 0.0237760552, 0.02146072036, 0.01246108013, 0.001935640556, -0.002907605471, -0.0009759889296, -0.002709973586, -0.003682350464, -0.00234259249, 0.001516304622, 0.006321428508, 0.009532376631, 0.009202444559, 0.005365329153, 0.000458946407, -0.001736392829, -0.0004857947112, -0.001389948093, -0.002006291983, -0.001570597789, 8.173925721e-05, 0.002276588177, 0.003846844086, 0.003850008558, 0.002234791215, 8.11768914e-05, -0.0008575617865, -0.0002012333482, -0.0005868420876, -0.0008781390028, -0.0007610490686, -0.0001508069713, 0.0007032183588, 0.001344385892, 0.001389394407, 0.0007983430983, -1.635560022e-05, -0.0003598616647, -7.144159949e-05, -0.0002123772465, -0.0003289557179, -0.000310683791, -0.0001214824748, 0.0001610850241, 0.0003848882477, 0.00041667538, 0.0002355774364, -2.485567432e-05, -0.0001296955298, -2.089880316e-05, -6.341558744e-05, -0.0001017292936, -0.0001038674631, -5.739420547e-05, 1.851047485e-05, 8.260527933e-05, 9.692771604e-05, 5.330317971e-05, -1.339216741e-05, -3.844945628e-05, -4.531682747e-06, -1.406290722e-05, -2.339293723e-05, -2.568191071e-05, -1.778624331e-05, -3.012998628e-06, 1.050577937e-05, 1.481815637e-05, 7.671790074e-06, -4.408424797e-06, -8.43729097e-06, -5.535333956e-07, -1.761366934e-06, -3.044558495e-06, -3.582090106e-06, -2.928819364e-06, -1.369029208e-06, 2.209140079e-07, 9.143151008e-07, 3.724961323e-07, -7.560912338e-07, -1.043076727e-06 +-0.0001569145639, -0.0004710117684, -0.0005519020607, 0.0005504443155, 0.004257089353, 0.01166278491, 0.021883365, 0.03036115847, 0.02914354443, 0.01291101595, -0.005781520895, -0.0001514113104, -0.0005522863993, -0.001072025911, -0.001205865676, -5.337653038e-05, 0.003285793928, 0.008714133733, 0.01391211912, 0.01411467366, 0.005548985328, -0.00465082798, -0.0001025203086, -0.0003954929584, -0.0008426414994, -0.001190680892, -0.0009382367172, 0.0004741793232, 0.003129774752, 0.005923420516, 0.006327887942, 0.002173615803, -0.002861406979, -5.41874422e-05, -0.0002126460473, -0.0004636279983, -0.0006864866752, -0.0006367484289, -3.626984755e-05, 0.001173398856, 0.00248926253, 0.002724413486, 0.0008449323754, -0.001423604198, -2.412163982e-05, -9.580294361e-05, -0.0002118619945, -0.0003222448421, -0.000324652651, -0.0001022403861, 0.0003733033495, 0.0009029641144, 0.001009260166, 0.0002755866478, -0.0005999425099, -9.204207546e-06, -3.701397774e-05, -8.305506188e-05, -0.0001296202797, -0.0001399551231, -7.172728685e-05, 8.70008662e-05, 0.0002693489561, 0.0003111208036, 6.850449393e-05, -0.000217363228, -2.881870081e-06, -1.174785014e-05, -2.678723228e-05, -4.292909852e-05, -4.933979204e-05, -3.332251687e-05, 9.387670729e-06, 6.069486916e-05, 7.451451323e-05, 1.007130529e-05, -6.489756985e-05, -6.659230832e-07, -2.756112175e-06, -6.398445854e-06, -1.054444615e-05, -1.284349545e-05, -1.045918703e-05, -2.236516387e-06, 8.327849411e-06, 1.178441091e-05, -3.951802878e-07, -1.43786989e-05, -8.633235859e-08, -3.635572829e-07, -8.614772812e-07, -1.462857583e-06, -1.88333229e-06, -1.764101334e-06, -9.258638523e-07, 2.745979953e-07, 7.701073399e-07, -4.367523812e-07, -1.801183493e-06, -0.0005387272372, -0.001532931691, -0.001269793115, 0.003159592326, 0.01390975376, 0.030025917, 0.04625934449, 0.05414373047, 0.04558626025, 0.01983688806, -0.004733866421, -0.0005028405544, -0.001813716892, -0.00320975544, -0.00290542093, 0.0009310290145, 0.008635286558, 0.01793341495, 0.02407101953, 0.02159935042, 0.008756946681, -0.004218904386, -0.0003243309359, -0.001251483129, -0.00250180106, -0.00312153041, -0.001967177328, 0.001439056615, 0.00618845193, 0.009881342783, 0.009446792569, 0.003530700455, -0.002701784821, -0.0001606172333, -0.0006320251721, -0.00130389153, -0.00173380604, -0.001360925369, 9.148386445e-05, 0.002257454747, 0.00404558516, 0.003993883218, 0.001399314118, -0.001364286427, -6.632341092e-05, -0.0002643577199, -0.0005564065403, -0.0007682246449, -0.0006697478702, -0.000135287903, 0.0007076112278, 0.001434380923, 0.001455129382, 0.000470183747, -0.0005812507721, -2.346978724e-05, -9.478367339e-05, -0.0002035036816, -0.0002911269664, -0.0002768880439, -0.0001121662913, 0.000166632073, 0.0004190669785, 0.000441757199, 0.0001254489707, -0.0002127563133, -6.841467988e-06, -2.802392944e-05, -6.143711003e-05, -9.105801088e-05, -9.359057163e-05, -5.357358971e-05, 2.118929023e-05, 9.302195799e-05, 0.0001045916118, 2.3165973e-05, -6.414221714e-05, -1.477718708e-06, -6.148356196e-06, -1.378334914e-05, -2.117753349e-05, -2.337040129e-05, -1.672085326e-05, -2.229183782e-06, 1.279326375e-05, 1.65037209e-05, 1.656292556e-06, -1.434615161e-05, -1.797026718e-07, -7.610089121e-07, -1.748176457e-06, -2.788218503e-06, -3.289697682e-06, -2.769251916e-06, -1.251844806e-06, 4.94711472e-07, 1.116371074e-06, -2.868596676e-07, -1.814206202e-06 +-4.373044138e-05, -0.000207112209, -0.0005018399181, -0.000626572306, 0.0004246267425, 0.004600380422, 0.01417159325, 0.02912247936, 0.04152681925, 0.03265762277, 0.0008756763568, -4.076991085e-05, -0.0002147889103, -0.0006245590956, -0.001233422859, -0.001581482699, -0.0005144192803, 0.003623122184, 0.01148885884, 0.01900863273, 0.01489762049, -0.002229170375, -2.728169822e-05, -0.0001483098254, -0.0004506287733, -0.0009617528188, -0.001481580949, -0.001398497808, 0.0002620999711, 0.004060658885, 0.008052639685, 0.006272556002, -0.002081252312, -1.435550135e-05, -7.858444854e-05, -0.0002407347513, -0.0005217069081, -0.0008332466365, -0.0008859931973, -0.0002055548987, 0.00150352002, 0.003361755285, 0.002595198218, -0.001139247557, -6.367041053e-06, -3.49784726e-05, -0.0001074981517, -0.0002346156258, -0.0003819873141, -0.0004319908791, -0.0001889675141, 0.0004740818606, 0.001212133811, 0.0009238777976, -0.0005070949612, -2.420352324e-06, -1.335317188e-05, -4.120034646e-05, -9.059581059e-05, -0.0001502403082, -0.0001791993188, -0.0001081785486, 0.0001099224012, 0.0003601941533, 0.0002697263981, -0.0001938421104, -7.548170881e-07, -4.187585277e-06, -1.299245323e-05, -2.882961272e-05, -4.874262811e-05, -6.108669616e-05, -4.566336249e-05, 1.206936188e-05, 8.130517042e-05, 5.921493248e-05, -6.129810472e-05, -1.736709755e-07, -9.704034129e-07, -3.033255869e-06, -6.805191086e-06, -1.174703871e-05, -1.543336257e-05, -1.350982931e-05, -2.608064131e-06, 1.137582409e-05, 7.78504543e-06, -1.447654573e-05, -2.240785033e-08, -1.26349654e-07, -3.987840104e-07, -9.06724069e-07, -1.601147175e-06, -2.202783855e-06, -2.18476509e-06, -1.101341954e-06, 4.519901527e-07, 1.988373217e-07, -1.950591004e-06, -0.0001544404025, -0.0006655547187, -0.001330673911, -0.001031072715, 0.002355834108, 0.01123765164, 0.02665465233, 0.04558626025, 0.05700771921, 0.04206394895, 0.00353794457, -0.0001369249653, -0.0006730111174, -0.001721978983, -0.002845685498, -0.002825227906, 8.974500987e-05, 0.007261851997, 0.01785925463, 0.02586414182, 0.01939236187, -0.000905805992, -8.683530919e-05, -0.0004455428697, -0.001214453912, -0.002240523561, -0.002899873022, -0.00216826725, 0.0009181799759, 0.006244461696, 0.01082967405, 0.008233603029, -0.001484039164, -4.280976214e-05, -0.0002225957442, -0.0006179952956, -0.001173185886, -0.001603643199, -0.001416513291, -0.0001188299293, 0.002296269866, 0.004477907971, 0.003412465729, -0.0008868695775, -1.763057261e-05, -9.251339442e-05, -0.0002600462386, -0.0005029165801, -0.0007105150873, -0.0006829471615, -0.0002113292037, 0.0007253465127, 0.001601174938, 0.001217052466, -0.0004157075186, -6.221877737e-06, -3.295764455e-05, -9.381614335e-05, -0.0001848107687, -0.0002693948465, -0.0002782485469, -0.0001355470058, 0.0001729103821, 0.0004731267117, 0.0003581310603, -0.0001659599597, -1.80814734e-06, -9.676350275e-06, -2.791735473e-05, -5.606026876e-05, -8.430799582e-05, -9.29609471e-05, -5.93688377e-05, 2.278830483e-05, 0.0001069375858, 8.047307875e-05, -5.447938552e-05, -3.891826781e-07, -2.10643484e-06, -6.16683831e-06, -1.263789577e-05, -1.961812688e-05, -2.299044883e-05, -1.77477212e-05, -1.992345396e-06, 1.529639047e-05, 1.137913602e-05, -1.329286031e-05, -4.713310713e-08, -2.584033126e-07, -7.68921008e-07, -1.610857399e-06, -2.584120992e-06, -3.209628171e-06, -2.865079165e-06, -1.244499537e-06, 7.224310834e-07, 5.089689457e-07, -1.843457398e-06 +-9.474236659e-06, -6.550375019e-05, -0.0002472034531, -0.0006349272753, -0.001106827621, -0.0008437236316, 0.002455589783, 0.01287728709, 0.03262793304, 0.04932408475, 0.03379188615, -8.475921568e-06, -6.185641797e-05, -0.0002513471286, -0.0007264792759, -0.001597395865, -0.002619112791, -0.002590835523, 0.001127604191, 0.01080192366, 0.02074136497, 0.01498411312, -5.576071104e-06, -4.129898559e-05, -0.0001709997558, -0.0005084579481, -0.001172778988, -0.002114286394, -0.002754375466, -0.001633443966, 0.002756026238, 0.007997815561, 0.006194260966, -2.908443129e-06, -2.15419581e-05, -8.922256035e-05, -0.0002660750188, -0.0006188868044, -0.001138006468, -0.001561743165, -0.001196223577, 0.0007184768925, 0.003174189112, 0.002598165836, -1.279837806e-06, -9.458233509e-06, -3.907238922e-05, -0.0001164059831, -0.0002715008504, -0.0005042964999, -0.0007123283799, -0.0006144045361, 0.0001102615265, 0.001098528158, 0.0009590878916, -4.82774821e-07, -3.562429976e-06, -1.468795645e-05, -4.373733798e-05, -0.000102316584, -0.0001919356364, -0.0002784566312, -0.0002642355444, -3.260141443e-05, 0.0003085584614, 0.0002972794064, -1.494299139e-07, -1.102447109e-06, -4.542720874e-06, -1.353767354e-05, -3.180056065e-05, -6.030514203e-05, -8.985225146e-05, -9.263699621e-05, -3.352741534e-05, 6.305883977e-05, 7.241433784e-05, -3.412325452e-08, -2.52073198e-07, -1.039671666e-06, -3.105378392e-06, -7.335505024e-06, -1.408121559e-05, -2.155832397e-05, -2.394017532e-05, -1.334211933e-05, 6.772917386e-06, 1.195904584e-05, -4.368496364e-09, -3.236610251e-08, -1.338554275e-07, -4.014342492e-07, -9.552690466e-07, -1.859455314e-06, -2.928466595e-06, -3.481812995e-06, -2.51614743e-06, -1.845783255e-07, 9.016689284e-07, -3.171875278e-05, -0.0001905341587, -0.0005944193971, -0.001204679946, -0.001496738642, -3.526023742e-05, 0.005888296073, 0.01983688806, 0.04206394895, 0.05769629081, 0.03756432794, -2.691604758e-05, -0.0001744506887, -0.0006065380087, -0.0014677343, -0.002667540705, -0.003542070056, -0.002461348524, 0.00318259133, 0.01469110553, 0.02476824964, 0.01697568859, -1.680994468e-05, -0.0001119885189, -0.0004030994278, -0.00102257973, -0.001998050795, -0.003045958641, -0.003305676804, -0.001245390942, 0.00420644632, 0.009765429332, 0.007137507174, -8.254414237e-06, -5.549946375e-05, -0.0002020170749, -0.0005199263306, -0.001036789222, -0.001634554062, -0.001914403971, -0.001135425597, 0.001275922175, 0.003914583539, 0.003006184213, -3.392196866e-06, -2.296118673e-05, -8.425939004e-05, -0.0002190971303, -0.0004430626596, -0.0007139036835, -0.0008741720695, -0.0006209994569, 0.0002977422625, 0.00136598344, 0.00110991702, -1.194483853e-06, -8.142080424e-06, -3.013110368e-05, -7.917856012e-05, -0.0001623852357, -0.0002672614361, -0.0003408493105, -0.000277113046, 1.9208673e-05, 0.000390012263, 0.0003445222539, -3.462475932e-07, -2.37811996e-06, -8.880368214e-06, -2.359756157e-05, -4.911031512e-05, -8.258825652e-05, -0.000109535845, -9.948772347e-05, -2.269693809e-05, 8.293056056e-05, 8.439067966e-05, -7.429988447e-08, -5.145925968e-07, -1.940591318e-06, -5.219016302e-06, -1.103170325e-05, -1.896940696e-05, -2.614528579e-05, -2.610911713e-05, -1.194872536e-05, 1.021208877e-05, 1.415259077e-05, -8.964952153e-09, -6.267912499e-08, -2.389830466e-07, -6.51287129e-07, -1.400017867e-06, -2.464526228e-06, -3.530244122e-06, -3.834314158e-06, -2.467259583e-06, 1.258370285e-07, 1.119105953e-06 +-1.190356808e-06, -1.138253764e-05, -6.057359658e-05, -0.0002334961229, -0.000719837937, -0.001853781147, -0.003944508121, -0.0058054461, 0.0008389015501, 0.03375995736, 0.06856250434, -1.019015823e-06, -9.976700906e-06, -5.455812904e-05, -0.0002174226404, -0.0006987381646, -0.001899826304, -0.004398319472, -0.008005536767, -0.007611802676, 0.01020373633, 0.0350670937, -6.569000624e-07, -6.459374573e-06, -3.551367688e-05, -0.000142583343, -0.0004628583261, -0.001275591413, -0.00301433832, -0.005741649624, -0.006685792922, 0.002124051514, 0.01647595979, -3.386883214e-07, -3.317279423e-06, -1.817354262e-05, -7.278889497e-05, -0.0002360608975, -0.0006509209363, -0.001542068514, -0.002960693028, -0.003582129687, 0.00045506417, 0.007312185367, -1.474544881e-07, -1.436397561e-06, -7.827993509e-06, -3.121998037e-05, -0.0001009535854, -0.0002779209332, -0.000658145881, -0.001266250975, -0.001558207835, 4.581248019e-05, 0.002817040534, -5.504628824e-08, -5.336195262e-07, -2.89407051e-06, -1.14964546e-05, -3.707215611e-05, -0.0001018981165, -0.0002411941459, -0.0004649005038, -0.0005811841478, -3.573671054e-05, 0.0009241683032, -1.686786199e-08, -1.629035464e-07, -8.800852098e-07, -3.48487243e-06, -1.121316874e-05, -3.078743845e-05, -7.287184357e-05, -0.0001408040727, -0.0001790824901, -2.774824708e-05, 0.0002455625948, -3.813944923e-09, -3.673918173e-08, -1.979264724e-07, -7.819231518e-07, -2.512384252e-06, -6.894951674e-06, -1.632948531e-05, -3.165972689e-05, -4.106097518e-05, -1.039493836e-05, 4.712028247e-05, -4.833671435e-10, -4.650236629e-09, -2.501151821e-08, -9.868323401e-08, -3.169054754e-07, -8.69997703e-07, -2.06338921e-06, -4.019682855e-06, -5.333264755e-06, -1.910063032e-06, 4.885700645e-06, -3.546743489e-06, -2.85704634e-05, -0.0001254435318, -0.0003965083595, -0.001006615184, -0.002161682288, -0.003901759524, -0.004733866421, 0.00353794457, 0.03756432794, 0.07118620414, -2.898184989e-06, -2.438360564e-05, -0.0001125529783, -0.0003771817297, -0.001026344478, -0.002400277959, -0.004896894688, -0.008061766212, -0.006698390698, 0.01201523392, 0.03649520064, -1.784923923e-06, -1.527704066e-05, -7.18352922e-05, -0.0002456204793, -0.0006831569956, -0.001636833754, -0.003440794401, -0.005993625806, -0.006436821046, 0.002911710356, 0.01716661928, -8.73422035e-07, -7.523205139e-06, -3.561782669e-05, -0.00012268252, -0.0003439070679, -0.0008308184309, -0.001762123235, -0.003110788084, -0.003506744019, 0.0007840389922, 0.007613156687, -3.583429711e-07, -3.102176952e-06, -1.476782209e-05, -5.117000085e-05, -0.0001443536242, -0.0003510142523, -0.0007492641008, -0.001332736213, -0.001538612122, 0.0001646913603, 0.002928873829, -1.259682522e-07, -1.096324801e-06, -5.249276171e-06, -1.830225355e-05, -5.197351316e-05, -0.0001272319015, -0.0002733470187, -0.000489780767, -0.0005780746814, 5.274208255e-07, 0.0009594322723, -3.643945992e-08, -3.189511741e-07, -1.536563102e-06, -5.39268615e-06, -1.541962386e-05, -3.801100063e-05, -8.221189988e-05, -0.0001484501622, -0.0001792976284, -1.887550332e-05, 0.0002545889419, -7.799176587e-09, -6.86893613e-08, -3.331089914e-07, -1.177284398e-06, -3.390886661e-06, -8.420233214e-06, -1.834101956e-05, -3.340004226e-05, -4.135619643e-05, -8.851002166e-06, 4.879827143e-05, -9.379151657e-10, -8.317529295e-09, -4.063053875e-08, -1.446980454e-07, -4.200608635e-07, -1.051324373e-06, -2.307716702e-06, -4.243127778e-06, -5.400999106e-06, -1.769083118e-06, 5.056213252e-06 +0.02090890912, -0.02405319997, -0.02001543398, -0.009472782258, -0.003810251274, -0.001413651551, -0.0004859476341, -0.0001515284901, -4.077315911e-05, -8.47168476e-06, -1.018134746e-06, 0.0378665682, -0.009585525016, -0.01434975667, -0.007611210873, -0.003217682667, -0.001237307202, -0.000439288785, -0.0001410328392, -3.890384449e-05, -8.24785923e-06, -1.007425228e-06, 0.03087823923, -0.003794776057, -0.009773870629, -0.005600257605, -0.002450556653, -0.0009637783622, -0.0003484165501, -0.0001134349388, -3.157626823e-05, -6.723124971e-06, -8.218502392e-07, 0.0180657581, -0.001676921092, -0.00594532704, -0.003591278453, -0.001612604622, -0.0006440357703, -0.0002353615908, -7.716233242e-05, -2.153309327e-05, -4.576826154e-06, -5.568658357e-07, 0.008700580638, -0.000635439052, -0.003077688603, -0.001955474171, -0.0009004903289, -0.0003646976766, -0.0001344762282, -4.431403635e-05, -1.237898486e-05, -2.623692237e-06, -3.174636053e-07, 0.003495199452, -0.0001908139558, -0.001337072599, -0.0008931087097, -0.0004217877663, -0.0001731239487, -6.434222145e-05, -2.129061782e-05, -5.949886026e-06, -1.25723714e-06, -1.512911461e-07, 0.00111446092, -4.754668862e-05, -0.0004685422609, -0.0003279153738, -0.0001587260468, -6.598625549e-05, -2.469589225e-05, -8.198889518e-06, -2.291103377e-06, -4.826031507e-07, -5.776484826e-08, 0.000251607244, -1.23056787e-05, -0.0001208607726, -8.787560949e-05, -4.350940486e-05, -1.830162044e-05, -6.890386708e-06, -2.293042485e-06, -6.403380805e-07, -1.344254055e-07, -1.600395903e-08, 2.9937866e-05, -3.024472472e-06, -1.780414733e-05, -1.322170387e-05, -6.665031156e-06, -2.830722389e-06, -1.070350377e-06, -3.565504871e-07, -9.939310708e-08, -2.077968572e-08, -2.459585503e-09, 0.1126034445, 0.0095827944, -0.01971868085, -0.01520986377, -0.008142188959, -0.003725163004, -0.001485013478, -0.0005028405544, -0.0001369249653, -2.691604758e-05, -2.898184989e-06, 0.1301533701, 0.03319580645, -0.00713887586, -0.009692814048, -0.005854891779, -0.002851897637, -0.001191005399, -0.0004193781685, -0.0001181981866, -2.396614611e-05, -2.65468462e-06, 0.09871408099, 0.03093277743, -0.002395551572, -0.006273019214, -0.004070669735, -0.002041645966, -0.0008689569194, -0.0003106429161, -8.870045433e-05, -1.81954427e-05, -2.036958338e-06, 0.05739591647, 0.019875297, -0.0009518929347, -0.003823416416, -0.002553173147, -0.001290278363, -0.0005509510681, -0.0001974718814, -5.653751329e-05, -1.163144471e-05, -1.306200935e-06, 0.0275469571, 0.01039165188, -0.0003380104777, -0.002009181531, -0.001369391879, -0.00069453193, -0.0002966041243, -0.0001063123033, -3.045543612e-05, -6.272776526e-06, -7.055886378e-07, 0.01098596256, 0.00448630017, -9.486379474e-05, -0.000888905971, -0.0006174197572, -0.0003141041349, -0.0001340632031, -4.801952159e-05, -1.37553062e-05, -2.83479415e-06, -3.192402948e-07, 0.003482959806, 0.001529588886, -2.166679579e-05, -0.0003172312438, -0.00022408476, -0.0001143087039, -4.87376589e-05, -1.743600626e-05, -4.991858951e-06, -1.028940027e-06, -1.159673619e-07, 0.0007901866004, 0.0003698750605, -5.63986537e-06, -8.308677319e-05, -5.938541767e-05, -3.034194484e-05, -1.29134267e-05, -4.610839936e-06, -1.318502428e-06, -2.716769498e-07, -3.063048836e-08, 9.704154127e-05, 4.764867848e-05, -1.627374901e-06, -1.234006962e-05, -8.825980796e-06, -4.503421315e-06, -1.909913101e-06, -6.796823324e-07, -1.939040691e-07, -3.990083524e-08, -4.496634276e-09 +-0.01098770317, 0.0129916575, 0.006141165276, -0.0008662442034, -0.002539314127, -0.00200388005, -0.001159540986, -0.0005522965196, -0.0002146219151, -6.17822072e-05, -9.963569995e-06, -0.009575984325, 0.01862352907, 0.01267438766, 0.003301523038, -0.0004937642035, -0.001144112402, -0.000843372681, -0.0004524158732, -0.0001890485356, -5.713853778e-05, -9.541121773e-06, -0.00912629722, 0.01394261517, 0.01095220402, 0.003494084245, 5.117031822e-05, -0.0007412328947, -0.0006211077321, -0.0003495213538, -0.0001494398738, -4.567900119e-05, -7.669420497e-06, -0.007212659896, 0.007378820616, 0.006692406804, 0.002266545806, 4.433609959e-05, -0.0004949120566, -0.0004205768626, -0.0002377497979, -0.0001015368978, -3.089714801e-05, -5.157190918e-06, -0.004452944682, 0.003050299088, 0.00329700495, 0.00116264139, -3.21932334e-06, -0.0002918442654, -0.0002445911434, -0.0001375849763, -5.841475707e-05, -1.764541663e-05, -2.922346498e-06, -0.002191085499, 0.0009553034753, 0.00131349538, 0.0004783604618, -2.19535725e-05, -0.0001463636788, -0.0001197386856, -6.678305543e-05, -2.814500766e-05, -8.434216407e-06, -1.385549582e-06, -0.0008505181225, 0.0001835587558, 0.0003959197212, 0.0001473217969, -1.915743137e-05, -5.979000271e-05, -4.72956174e-05, -2.606164966e-05, -1.08854277e-05, -3.234014879e-06, -5.268513706e-07, -0.0002413495869, -9.198720442e-07, 7.641672931e-05, 2.826107779e-05, -9.555938057e-06, -1.813259506e-05, -1.370326473e-05, -7.422526083e-06, -3.064975916e-06, -9.016231594e-07, -1.455619597e-07, -3.893390056e-05, -9.130168953e-06, 5.484659877e-06, 1.694346468e-06, -2.454519469e-06, -3.159649754e-06, -2.244029917e-06, -1.185229738e-06, -4.817094793e-07, -1.399399939e-07, -2.235254186e-08, 0.03088156089, 0.05127364228, 0.02437492876, 0.002806922768, -0.005140790019, -0.005611492686, -0.003692494045, -0.001813716892, -0.0006730111174, -0.0001744506887, -2.438360564e-05, 0.03319580645, 0.06301967587, 0.03895810915, 0.01379719907, 0.001404374744, -0.002317860624, -0.002288487103, -0.001319904399, -0.0005375055934, -0.0001485502385, -2.180309511e-05, 0.02252945123, 0.04803774913, 0.03206518357, 0.01263602282, 0.002326688343, -0.001166577729, -0.001509017087, -0.0009334843964, -0.000393854743, -0.0001113948004, -1.663447577e-05, 0.01136234878, 0.0275963801, 0.01927079189, 0.007726930331, 0.001401144853, -0.0007601995009, -0.0009640991345, -0.0005956344297, -0.0002516870925, -7.136669878e-05, -1.069024469e-05, 0.00465910474, 0.01302635533, 0.009482523789, 0.003816330636, 0.00062475504, -0.0004556550386, -0.0005338721575, -0.0003248637473, -0.0001365849607, -3.867598758e-05, -5.795868608e-06, 0.001554132, 0.005077592428, 0.003853567208, 0.001549273845, 0.0002143418496, -0.0002306567347, -0.0002491708064, -0.0001489516869, -6.221619558e-05, -1.757502872e-05, -2.632833826e-06, 0.0003811475571, 0.001547144455, 0.001228944125, 0.0004902451318, 4.916332295e-05, -9.437277903e-05, -9.392936983e-05, -5.502720109e-05, -2.280116897e-05, -6.419270628e-06, -9.606490575e-07, 5.034359752e-05, 0.0003239905029, 0.0002724962804, 0.0001061941956, 3.474311811e-06, -2.852893316e-05, -2.600798802e-05, -1.486734727e-05, -6.09641468e-06, -1.707935669e-06, -2.550633613e-07, -1.209919117e-06, 3.307779178e-05, 3.045125601e-05, 1.104691224e-05, -1.421111532e-06, -4.941464385e-06, -4.076064668e-06, -2.256304863e-06, -9.115671761e-07, -2.53417847e-07, -3.769466496e-08 +-0.01124822068, 0.0114586622, 0.01289770453, 0.006472990351, 0.001537548585, -0.0007361482302, -0.001297361195, -0.001070317365, -0.0006233277648, -0.0002508633715, -5.446684415e-05, -0.01432694897, 0.01269334454, 0.01765013155, 0.01118961161, 0.004858098239, 0.001198131022, -0.0003316461397, -0.0006621241967, -0.0004852210787, -0.0002179637437, -5.049137236e-05, -0.01368800216, 0.008453310016, 0.01430158239, 0.009744919002, 0.004552951907, 0.001350142776, -8.243709901e-05, -0.0004607970906, -0.0003680523829, -0.0001703597532, -4.002386389e-05, -0.01023235198, 0.003876162152, 0.008683368264, 0.006232795602, 0.002965742177, 0.000873752988, -7.275947407e-05, -0.0003184181749, -0.0002501120933, -0.0001146644723, -2.674484984e-05, -0.006191181682, 0.001194002003, 0.004307717707, 0.003268354914, 0.001570774685, 0.0004446290686, -6.584020228e-05, -0.0001910902735, -0.0001449627314, -6.537481386e-05, -1.508235332e-05, -0.00305856836, 0.0001165435271, 0.001739095438, 0.001408415419, 0.0006816464329, 0.000180912991, -4.549397919e-05, -9.656858841e-05, -7.051412751e-05, -3.123424504e-05, -7.12173266e-06, -0.001199474279, -0.0001279394303, 0.0005339104499, 0.0004716026241, 0.0002290129778, 5.428854213e-05, -2.405432662e-05, -3.944377145e-05, -2.761194365e-05, -1.199052111e-05, -2.699500201e-06, -0.0003418390749, -8.705435256e-05, 0.0001058652686, 0.0001076939331, 5.203198891e-05, 9.530164804e-06, -9.138867203e-06, -1.187048422e-05, -7.909206306e-06, -3.355267274e-06, -7.444965433e-07, -5.459915175e-05, -2.265354147e-05, 8.155118237e-06, 1.177489504e-05, 5.493867268e-06, 2.295457422e-07, -1.958629067e-06, -2.034271171e-06, -1.274686373e-06, -5.248428019e-07, -1.14358004e-07, -0.003122737452, 0.03605021409, 0.03923550567, 0.02348797877, 0.007930672677, -0.0009938884051, -0.00378844822, -0.00320975544, -0.001721978983, -0.0006065380087, -0.0001125529783, -0.00713887586, 0.03895810915, 0.04960066394, 0.03557244777, 0.01786214823, 0.005528852214, -0.0002753583862, -0.00167844982, -0.001207005706, -0.0004866422299, -9.806627064e-05, -0.009393487825, 0.0269994654, 0.0382267168, 0.02885374487, 0.01532077826, 0.005378688566, 0.000404142283, -0.001031079883, -0.0008487210867, -0.0003592800162, -7.443115904e-05, -0.008317900421, 0.01385283243, 0.02213891093, 0.01721144328, 0.009214618436, 0.003205986241, 0.0001809561469, -0.0006808501606, -0.0005484881545, -0.0002315211748, -4.802273104e-05, -0.005495596447, 0.005624558385, 0.01053412834, 0.008436037436, 0.004517933691, 0.001518237951, 1.354639745e-05, -0.000395335148, -0.0003036539735, -0.0001266554691, -2.617985458e-05, -0.002846175619, 0.001756633691, 0.004132047546, 0.003424664672, 0.001829912201, 0.0005845209327, -3.557514682e-05, -0.0001929805365, -0.0001412546605, -5.813097046e-05, -1.196099538e-05, -0.001149233621, 0.0003514789594, 0.001259918605, 0.00109201697, 0.0005804124288, 0.0001712666452, -3.001214729e-05, -7.601210207e-05, -5.295503659e-05, -2.146388612e-05, -4.391196019e-06, -0.0003349318662, 1.02837165e-05, 0.0002601407202, 0.0002414632049, 0.0001268025377, 3.209913002e-05, -1.350225156e-05, -2.204182323e-05, -1.453872436e-05, -5.783976602e-06, -1.17416927e-06, -5.464284931e-05, -1.284805076e-05, 2.494241441e-05, 2.658581176e-05, 1.350016562e-05, 2.125383855e-06, -3.102382386e-06, -3.637850635e-06, -2.248168403e-06, -8.723131743e-07, -1.750534417e-07 +-0.005591988669, 0.003672718635, 0.008856234065, 0.008266211331, 0.005209199316, 0.00205376718, -0.0001664957375, -0.001199004432, -0.001228851334, -0.0007245393573, -0.0002170026723, -0.007595937938, 0.003320476042, 0.01119920631, 0.01201887408, 0.008991340113, 0.00506698014, 0.001836300625, -9.435486086e-05, -0.0007489552665, -0.0005793094034, -0.0001947649894, -0.007426477514, 0.001285993681, 0.008557800465, 0.009944633795, 0.007781512561, 0.00458591739, 0.001827227953, 0.000115891645, -0.0005196456677, -0.0004404150624, -0.0001524493302, -0.005656114802, -0.0002729578251, 0.00485135208, 0.006142009957, 0.004939265976, 0.002929102025, 0.001147581857, 4.076980872e-05, -0.0003604681201, -0.0002962888702, -0.0001014445705, -0.00350354951, -0.0007723390475, 0.002203829904, 0.003110600817, 0.002571071112, 0.001524482244, 0.0005741202684, -1.356897268e-05, -0.0002167212188, -0.000169587158, -5.704879257e-05, -0.001778582072, -0.0006466119455, 0.000782452451, 0.001288324761, 0.001099394813, 0.0006501285789, 0.0002312493722, -2.602946332e-05, -0.0001094659007, -8.142832568e-05, -2.6876376e-05, -0.0007177659272, -0.0003562702138, 0.0001881396927, 0.00040857267, 0.0003640900255, 0.0002139827146, 6.933171406e-05, -1.867947888e-05, -4.463936034e-05, -3.147070429e-05, -1.017239127e-05, -0.0002103783027, -0.0001326997046, 1.601526709e-05, 8.485556982e-05, 8.136786811e-05, 4.712520619e-05, 1.247948008e-05, -8.27480966e-06, -1.34063314e-05, -8.893949298e-06, -2.805008629e-06, -3.447589384e-05, -2.673061965e-05, -4.615002564e-06, 7.235220371e-06, 8.381890884e-06, 4.63035224e-06, 4.668750735e-07, -1.942235002e-06, -2.291552518e-06, -1.412549535e-06, -4.317279113e-07, -0.006462140685, 0.01469676779, 0.03070464275, 0.03127048988, 0.0213620155, 0.00926127299, 0.0006564223821, -0.00290542093, -0.002845685498, -0.0014677343, -0.0003771817297, -0.009692814048, 0.01379719907, 0.03557244777, 0.04060852567, 0.03196501094, 0.01831081618, 0.006798734266, 0.0004136775354, -0.001473223336, -0.001076198186, -0.0003193979183, -0.0100622435, 0.007427335657, 0.02568116109, 0.03126139486, 0.0256310697, 0.01534731732, 0.006202457842, 0.0008613410386, -0.0009184915416, -0.0007759690056, -0.0002412628656, -0.007877565881, 0.002120778093, 0.01379014215, 0.01794935148, 0.01507870004, 0.009110679526, 0.003653650965, 0.0004362754906, -0.0006229513196, -0.0005063623545, -0.0001565892507, -0.004899798699, -0.000205928775, 0.00597574867, 0.008458213342, 0.00727937887, 0.004411072743, 0.001721747357, 0.0001332488229, -0.0003700081542, -0.0002820228231, -8.601354576e-05, -0.002463653677, -0.0006573224316, 0.002071178554, 0.00328503374, 0.002906409574, 0.001762257203, 0.0006608078782, 1.095209263e-05, -0.0001839148122, -0.0001318052051, -3.959948713e-05, -0.0009784030978, -0.0004435352361, 0.0005172845281, 0.0009890505288, 0.000907672255, 0.0005493154655, 0.0001932235534, -1.593024436e-05, -7.356581298e-05, -4.959886453e-05, -1.465499393e-05, -0.0002815527939, -0.0001766135196, 6.666448885e-05, 0.0001995143818, 0.0001943416779, 0.0001167997942, 3.620325701e-05, -1.062020694e-05, -2.163079229e-05, -1.365580851e-05, -3.954052623e-06, -4.529819757e-05, -3.639957232e-05, -2.891856403e-06, 1.787888136e-05, 1.999088748e-05, 1.173128271e-05, 2.423500838e-06, -2.830161546e-06, -3.615671272e-06, -2.114512279e-06, -5.959813383e-07 +-0.002327655011, 0.0001804903792, 0.004162349362, 0.006704086833, 0.00698014542, 0.005329867119, 0.002613116129, -3.765677598e-05, -0.001569946128, -0.001591723685, -0.0006972643773, -0.003210982857, -0.0004825022369, 0.004866838871, 0.008994275876, 0.01035025827, 0.008983044508, 0.005808425866, 0.00223251727, -0.0003173462395, -0.001113968774, -0.0006054439798, -0.003169231631, -0.001300528208, 0.003225670447, 0.007017969033, 0.008525055089, 0.007644115355, 0.00511480928, 0.002139669765, -5.201925814e-05, -0.0008119055305, -0.0004685745798, -0.002439304647, -0.001527749593, 0.001411817408, 0.004043694178, 0.005207439925, 0.004763430593, 0.003192557684, 0.00130361126, -8.597977972e-05, -0.000552049043, -0.0003112841368, -0.001531095581, -0.001214387358, 0.0003660913372, 0.001875251597, 0.002602399424, 0.002432068963, 0.001624242556, 0.0006316775672, -9.337789188e-05, -0.0003216530162, -0.000175000263, -0.0007892203084, -0.0007342808449, -3.114089664e-05, 0.0006867447336, 0.001060560964, 0.001018765419, 0.0006770201972, 0.0002456256153, -6.695088384e-05, -0.000157262805, -8.244034158e-05, -0.0003237731189, -0.0003419506923, -9.586350701e-05, 0.0001755691022, 0.0003284864746, 0.0003290238683, 0.0002171991537, 7.027984174e-05, -3.523218298e-05, -6.198803742e-05, -3.122124773e-05, -9.651562781e-05, -0.0001140868884, -5.376370833e-05, 1.982798257e-05, 6.512587217e-05, 7.073669775e-05, 4.615214677e-05, 1.150650285e-05, -1.310002729e-05, -1.793756832e-05, -8.625444264e-06, -1.608381564e-05, -2.11778891e-05, -1.35607097e-05, -2.730152692e-06, 4.709809348e-06, 6.647755458e-06, 4.187281358e-06, 1.145781703e-07, -2.72124502e-06, -2.937331287e-06, -1.333050332e-06, -0.00417902717, 0.003142638376, 0.01679098439, 0.02668677166, 0.02734140221, 0.01984222032, 0.00930955932, 0.0009310290145, -0.002825227906, -0.002667540705, -0.001026344478, -0.005854891779, 0.001404374744, 0.01786214823, 0.03196501094, 0.03597559278, 0.02950684943, 0.01761418474, 0.006524778756, 4.147044323e-05, -0.001654833429, -0.0008417138655, -0.005799138444, -0.001306861988, 0.01142529598, 0.02328650957, 0.02762490918, 0.02352005126, 0.01461952552, 0.005854699254, 0.0004693906231, -0.001136032308, -0.0006329418787, -0.004410593828, -0.002513468, 0.005014215392, 0.01254966353, 0.0157387252, 0.01373516132, 0.00862104522, 0.003413454385, 0.0001780019036, -0.0007646842034, -0.0004141938991, -0.002701145536, -0.002188467634, 0.001496853754, 0.005459727359, 0.007340905755, 0.00657308325, 0.004144596692, 0.001589891179, -4.301831239e-06, -0.0004434302974, -0.0002297671423, -0.001348222056, -0.001332842383, 0.0001669839882, 0.001904356659, 0.002813942343, 0.002596470522, 0.001641659208, 0.0006007971264, -4.991140049e-05, -0.0002152996538, -0.0001068119672, -0.0005337792228, -0.000607905181, -0.0001264634077, 0.0004814969071, 0.0008309680222, 0.0007987387683, 0.000505473064, 0.0001713021644, -3.742034695e-05, -8.413301019e-05, -3.992401618e-05, -0.0001534345683, -0.0001964977559, -8.855117664e-05, 6.442048261e-05, 0.0001616448628, 0.0001666274965, 0.0001051605993, 3.036005493e-05, -1.607678765e-05, -2.411789116e-05, -1.089065245e-05, -2.466992766e-05, -3.518716408e-05, -2.290823299e-05, -1.992524181e-06, 1.301331853e-05, 1.610832992e-05, 1.00031767e-05, 1.554339041e-06, -3.581828012e-06, -3.912125905e-06, -1.663106447e-06 +-0.0008944527921, -0.0006282122326, 0.001269869848, 0.004069805471, 0.006622524358, 0.007733597158, 0.006570345287, 0.003311026533, -0.0004925215562, -0.002606034764, -0.001895577766, -0.001235027372, -0.001139412164, 0.001202112936, 0.005067326541, 0.008980809821, 0.01127134701, 0.01064988607, 0.007043195616, 0.002129003274, -0.001338258044, -0.001587537896, -0.001220560262, -0.00143506038, 0.000326825598, 0.003554260865, 0.006985555929, 0.009147526637, 0.008889848835, 0.006085001314, 0.002073185623, -0.0008705635303, -0.001215752809, -0.0009423337813, -0.001306507954, -0.0003259130981, 0.001722704087, 0.00399830067, 0.005497402708, 0.005439511395, 0.00372549602, 0.001214099387, -0.0006277118473, -0.0008085299298, -0.0005944143725, -0.0009206970328, -0.0004871429494, 0.0005889031718, 0.001841611926, 0.002701717611, 0.002727835068, 0.001858620234, 0.0005550784016, -0.0003936357243, -0.0004556592157, -0.0003082907935, -0.000518388532, -0.0003715785436, 9.600387033e-05, 0.0006705029526, 0.001082712769, 0.001123355323, 0.000760042723, 0.000198941848, -0.0002054790034, -0.0002151731654, -0.0001273323843, -0.0002294098496, -0.0001981346953, -3.896053402e-05, 0.0001706231084, 0.0003291357674, 0.0003567428746, 0.0002390932523, 4.91330189e-05, -8.618683306e-05, -8.172478473e-05, -3.822321033e-05, -7.341998922e-05, -7.28965762e-05, -3.54131886e-05, 1.920810796e-05, 6.348872669e-05, 7.525092684e-05, 4.962256391e-05, 4.812744131e-06, -2.659750517e-05, -2.267235674e-05, -6.414028818e-06, -1.313323815e-05, -1.466349613e-05, -1.027516379e-05, -2.6335793e-06, 4.215946482e-06, 6.852085916e-06, 4.308485179e-06, -1.038563823e-06, -4.676603418e-06, -3.526934623e-06, -0.002123929777, -0.000950279228, 0.006157565903, 0.01641805391, 0.02416854672, 0.0250245657, 0.01864360928, 0.008635286558, 8.974500987e-05, -0.003542070056, -0.002400277959, -0.002851897637, -0.002317860624, 0.005528852214, 0.01831081618, 0.02950684943, 0.03316710479, 0.02765619966, 0.01630697661, 0.005035203368, -0.001341447912, -0.001895845482, -0.002740758087, -0.003211043632, 0.002233415414, 0.01219211542, 0.02160768409, 0.02547209656, 0.02201373252, 0.01351111466, 0.004586307521, -0.0007331592255, -0.00141877361, -0.00204192089, -0.002962248701, -0.0001849013775, 0.005706498772, 0.01167015011, 0.01448707405, 0.01283895536, 0.007951859365, 0.002628182927, -0.000578482649, -0.0009384735722, -0.001233963695, -0.002038185415, -0.0009205388545, 0.001961060793, 0.005085672645, 0.006738933265, 0.006134457475, 0.003813462624, 0.00118920109, -0.0003963868066, -0.0005270584957, -0.0006105926135, -0.001101345044, -0.0007581470036, 0.0004124668207, 0.001776269093, 0.002572405328, 0.002417220589, 0.001504939321, 0.0004301195042, -0.0002193042964, -0.0002479135404, -0.0002402630473, -0.0004644702325, -0.0003997472244, -2.512331416e-05, 0.0004493385393, 0.0007539372127, 0.0007401951707, 0.0004603549862, 0.0001132567627, -9.570635243e-05, -9.376565331e-05, -6.873059544e-05, -0.0001413371529, -0.0001420121738, -5.847482729e-05, 5.990517726e-05, 0.0001442093439, 0.0001528833514, 9.445253572e-05, 1.620091393e-05, -3.040197468e-05, -2.590788138e-05, -1.100354348e-05, -2.403492074e-05, -2.73501791e-05, -1.796159911e-05, -1.991897563e-06, 1.092980495e-05, 1.435751147e-05, 8.623710068e-06, -3.088156344e-07, -5.465044852e-06, -4.016415977e-06 +-0.0003191587141, -0.0005479881954, -4.287514775e-05, 0.001678338697, 0.004630949602, 0.007998353417, 0.01002438317, 0.008743783267, 0.00365543474, -0.002566236411, -0.004387882566, -0.0004386931579, -0.0008421321319, -0.0003314321456, 0.001833086624, 0.005801567361, 0.01064330558, 0.01416111641, 0.0136999121, 0.008159779044, 0.0002456231312, -0.003504992707, -0.0004321521356, -0.0009322645035, -0.0007234464276, 0.0008880752587, 0.004097302899, 0.00817872328, 0.01132287601, 0.01128014858, 0.007009058196, 0.0005847893099, -0.00265185724, -0.0003331600432, -0.000784981919, -0.0008218514003, 5.686660742e-05, 0.002021144706, 0.004628690398, 0.006719310341, 0.00682497605, 0.004228840313, 0.000218594509, -0.001771553423, -0.0002101829093, -0.0005274257, -0.0006465049535, -0.0002673657257, 0.0007268845639, 0.002111753513, 0.003265202524, 0.00338823832, 0.002074509655, -4.548649032e-06, -0.001004439117, -0.0001091192994, -0.0002873904027, -0.0003893233619, -0.0002649950236, 0.0001511242081, 0.0007649430429, 0.001297437656, 0.001384412385, 0.000833418755, -6.300303875e-05, -0.0004769689233, -4.512444361e-05, -0.0001239027598, -0.0001810030346, -0.0001563690308, -2.064996629e-05, 0.0001957217651, 0.0003929607542, 0.0004379102383, 0.000257004442, -4.867376939e-05, -0.0001822251282, -1.356025726e-05, -3.873580854e-05, -6.036842287e-05, -6.095126242e-05, -3.084374747e-05, 2.3439424e-05, 7.639690682e-05, 9.277708957e-05, 5.190885243e-05, -2.153344595e-05, -5.092540548e-05, -2.277037731e-06, -6.772989756e-06, -1.12161798e-05, -1.276354441e-05, -9.623581336e-06, -2.391084852e-06, 5.441765228e-06, 8.742792404e-06, 4.233751594e-06, -4.936792384e-06, -8.003357675e-06, -0.0009160660195, -0.001508470886, 0.0006652368816, 0.006828708454, 0.01539213877, 0.0224023881, 0.0237760552, 0.01793341495, 0.007261851997, -0.002461348524, -0.004896894688, -0.001191005399, -0.002288487103, -0.0002753583862, 0.006798734266, 0.01761418474, 0.02765619966, 0.03160057891, 0.02658496041, 0.01445419398, 0.001674375504, -0.003671558371, -0.001117466834, -0.002467314596, -0.001556719445, 0.003476069743, 0.01192346701, 0.02034136865, 0.02433093646, 0.02121451357, 0.01205249746, 0.00184464974, -0.002726132026, -0.0008180934059, -0.001996064497, -0.001933255847, 0.0007106848372, 0.00570726906, 0.01102907851, 0.01388776667, 0.01242765976, 0.007096837291, 0.0009201105573, -0.001828825231, -0.0004883211317, -0.001275465297, -0.001507337309, -0.0003974979909, 0.002043933286, 0.004827899683, 0.006487737583, 0.005969481581, 0.003399989767, 0.0003043104342, -0.001043323372, -0.0002394590067, -0.0006572513785, -0.0008732343969, -0.0005076219945, 0.0004820286763, 0.00169489482, 0.002487852506, 0.002365692226, 0.001338061303, 4.675892801e-05, -0.0004978831076, -9.35355555e-05, -0.0002674639725, -0.0003864788779, -0.0003045031628, 1.084863181e-05, 0.000431605618, 0.0007328242381, 0.0007290705093, 0.000406745702, -1.945067759e-05, -0.0001909949411, -2.658050457e-05, -7.894414487e-05, -0.0001222934713, -0.0001158425908, -4.613972252e-05, 5.833063819e-05, 0.0001410571127, 0.0001518289081, 8.220199244e-05, -1.678951098e-05, -5.358419761e-05, -4.227878495e-06, -1.304714189e-05, -2.154312805e-05, -2.337143071e-05, -1.570012863e-05, -1.733411806e-06, 1.082549967e-05, 1.447202782e-05, 7.140837423e-06, -4.74634109e-06, -8.457354467e-06 +-0.0001035415649, -0.0003151514725, -0.000412790311, 0.0001194319916, 0.002005262662, 0.005713029418, 0.01057128086, 0.013936258, 0.01152508226, 0.001165100969, -0.00798375843, -0.0001409321954, -0.0004523759159, -0.0006632875588, -9.887411615e-05, 0.002223062703, 0.007030351153, 0.01368955308, 0.01907968483, 0.01778681444, 0.006362574438, -0.00579127343, -0.0001377509213, -0.0004703928063, -0.0007950067742, -0.0005483211116, 0.001122847174, 0.004904767928, 0.01039303652, 0.01510708582, 0.01454619362, 0.005628054935, -0.004279449504, -0.0001055936691, -0.0003788435822, -0.0007062646462, -0.0007235268177, 0.0001445758715, 0.002392434056, 0.005831112075, 0.008920914122, 0.008751885869, 0.003249929209, -0.002899119599, -6.635718798e-05, -0.0002468692022, -0.0004901494454, -0.0005988448309, -0.0002487983941, 0.0008540367137, 0.002644771518, 0.004324446676, 0.00432354115, 0.001489536006, -0.001671582414, -3.435034152e-05, -0.0001314659149, -0.0002728737728, -0.0003689532856, -0.0002665314753, 0.0001800025895, 0.0009580909986, 0.001721033027, 0.001760839201, 0.0005443740933, -0.0008058254768, -1.416781378e-05, -5.558770121e-05, -0.0001196256978, -0.0001737648212, -0.0001598011435, -1.969739613e-05, 0.0002489320355, 0.0005264347964, 0.0005571645317, 0.0001434847072, -0.0003125572435, -4.245644097e-06, -1.706513605e-05, -3.796396263e-05, -5.848457887e-05, -6.252953559e-05, -3.312404496e-05, 3.27168987e-05, 0.0001056762899, 0.0001191076518, 1.971902579e-05, -8.889420534e-05, -7.105752662e-07, -2.929692255e-06, -6.738623101e-06, -1.095146792e-05, -1.309552369e-05, -1.036944586e-05, -1.851107287e-06, 8.669691452e-06, 1.168038809e-05, -8.12894758e-07, -1.429012307e-05, -0.0003309848886, -0.0009716822324, -0.001011368507, 0.001065715637, 0.006304914887, 0.01406069585, 0.02146072036, 0.02407101953, 0.01785925463, 0.00318259133, -0.008061766212, -0.0004193781685, -0.001319904399, -0.00167844982, 0.0004136775354, 0.006524778756, 0.01630697661, 0.02658496041, 0.0318659525, 0.02656545631, 0.009886591687, -0.005382807303, -0.0003857719436, -0.001303367148, -0.002000734675, -0.0008972682857, 0.003464926349, 0.01108770174, 0.01963149685, 0.02465520149, 0.02132106652, 0.008462372879, -0.003899466937, -0.0002782330848, -0.0009939986621, -0.001726782131, -0.001463498736, 0.0008278326283, 0.005325462321, 0.01070899674, 0.01420391953, 0.01259238429, 0.004871689407, -0.002687182344, -0.0001642740926, -0.0006111972856, -0.001148120945, -0.001235930609, -0.0002763366681, 0.001914733262, 0.004724818195, 0.006712793448, 0.006105252252, 0.002245016531, -0.001578797795, -7.988974763e-05, -0.0003065776941, -0.0006078914161, -0.0007447285884, -0.0004308275442, 0.0004535003047, 0.001675120062, 0.002609714745, 0.002444026073, 0.0008348667025, -0.0007731186398, -3.098703279e-05, -0.0001220986313, -0.0002527439382, -0.000338242199, -0.0002694147036, 1.033578969e-05, 0.0004328918883, 0.0007828323316, 0.0007623058187, 0.0002308887053, -0.0003039646549, -8.747415267e-06, -3.534528589e-05, -7.604312171e-05, -0.0001092262553, -0.0001046871088, -4.370928085e-05, 6.070235151e-05, 0.0001553869049, 0.0001615469477, 3.782071468e-05, -8.754517763e-05, -1.381887198e-06, -5.730907528e-06, -1.280493752e-05, -1.958777503e-05, -2.143236426e-05, -1.493847344e-05, -1.102761327e-06, 1.302336947e-05, 1.59832459e-05, 1.018769672e-06, -1.424964207e-05 +-2.904719409e-05, -0.0001381580931, -0.0003450019857, -0.0004971707073, -6.305557854e-05, 0.0019841052, 0.006795398474, 0.01412413318, 0.01903537541, 0.01084467195, -0.007575841647, -3.890190369e-05, -0.0001891869987, -0.0004861885998, -0.0007523705682, -0.0003254417609, 0.002114940086, 0.008141857626, 0.01777234372, 0.02546414123, 0.01832049119, -0.003074832618, -3.753119877e-05, -0.0001882130192, -0.0005080503394, -0.0008834521151, -0.0007919571072, 0.0008714115654, 0.00550120602, 0.01330913471, 0.01996487617, 0.01493433233, -0.001862976616, -2.847298165e-05, -0.0001464796064, -0.0004110686339, -0.0007749124786, -0.0009214116035, -0.0001319977528, 0.002551341558, 0.007383545723, 0.01169979311, 0.008772814077, -0.001495601733, -1.774815085e-05, -9.303988616e-05, -0.0002681433885, -0.0005314244791, -0.0007227737184, -0.0004517117856, 0.0008277975878, 0.003312194361, 0.005629527725, 0.004200060473, -0.001016136875, -9.12581685e-06, -4.854755421e-05, -0.0001426607702, -0.0002924731976, -0.0004302920713, -0.0003783081319, 0.0001229164772, 0.001187523705, 0.002225079529, 0.001645879833, -0.0005563505132, -3.740860795e-06, -2.016350472e-05, -6.023628195e-05, -0.0001268449129, -0.0001973260034, -0.0002067294719, -5.610959014e-05, 0.0003057959721, 0.0006770163158, 0.0004938668758, -0.0002410688275, -1.114169102e-06, -6.085527781e-06, -1.847366287e-05, -3.986100165e-05, -6.49292328e-05, -7.650139813e-05, -4.705711494e-05, 4.004518185e-05, 0.0001357954262, 9.635072247e-05, -7.645610609e-05, -1.852583239e-07, -1.026808625e-06, -3.171370904e-06, -7.013303033e-06, -1.191618595e-05, -1.538151993e-05, -1.313232506e-05, -2.128152666e-06, 1.136404906e-05, 7.340049146e-06, -1.381266653e-05, -9.528011709e-05, -0.0004176293288, -0.0008847893547, -0.0009234892501, 0.0005745453936, 0.00486555042, 0.01246108013, 0.02159935042, 0.02586414182, 0.01469110553, -0.006698390698, -0.0001181981866, -0.0005375055934, -0.001207005706, -0.001473223336, 4.147044323e-05, 0.005035203368, 0.01445419398, 0.02656545631, 0.0339271858, 0.02346989852, -0.001661149835, -0.0001069332311, -0.0005062478454, -0.001218911981, -0.001772440315, -0.001048268216, 0.002443689476, 0.00970784172, 0.01962584817, 0.02630735799, 0.01892383677, -0.0007206014091, -7.614232141e-05, -0.0003727882047, -0.0009480926451, -0.001546413201, -0.001466244468, 0.0003023775748, 0.004546765674, 0.01074536484, 0.01525079206, 0.01106991527, -0.0008260873062, -4.453007123e-05, -0.0002236745542, -0.0005914926592, -0.00103628967, -0.001192717142, -0.0004949443969, 0.001549956639, 0.004762957851, 0.007260507179, 0.005287292171, -0.0006945654221, -2.149779779e-05, -0.0001101938112, -0.0003000667567, -0.0005521450804, -0.0007079176838, -0.0005042206245, 0.0003095730107, 0.001696382739, 0.002844229118, 0.002072852791, -0.0004281564507, -8.285939081e-06, -4.323534515e-05, -0.0001206868067, -0.0002308689332, -0.0003190402433, -0.000287462376, -3.531581322e-05, 0.0004403017219, 0.0008608064167, 0.0006261979346, -0.0002006402632, -2.324840263e-06, -1.234256282e-05, -3.526527913e-05, -6.984001864e-05, -0.0001025449774, -0.0001070932876, -5.41170814e-05, 6.204218767e-05, 0.0001732264565, 0.0001251158123, -6.746004936e-05, -3.649075706e-07, -1.972905919e-06, -5.772744097e-06, -1.182469856e-05, -1.833134621e-05, -2.138317806e-05, -1.621164772e-05, -1.098035701e-06, 1.505440758e-05, 1.055728417e-05, -1.276764288e-05 +-6.297129477e-06, -4.34384542e-05, -0.0001651420871, -0.0004357199224, -0.0008214420045, -0.0009166005894, 0.0004942540946, 0.00554325728, 0.01490209291, 0.02076826462, 0.01024213434, -8.251920905e-06, -5.720356905e-05, -0.0002183690196, -0.0005808730526, -0.001118357965, -0.001347897805, 0.0002286407359, 0.006339332434, 0.01830003941, 0.02752447735, 0.01676440731, -7.822211907e-06, -5.488540899e-05, -0.0002129161923, -0.0005820829292, -0.001185408347, -0.001681480583, -0.0008715430321, 0.003561018927, 0.01303524275, 0.02116516753, 0.01377151212, -5.848732254e-06, -4.146905016e-05, -0.0001631011498, -0.00045613742, -0.0009702240382, -0.00152962684, -0.001392088133, 0.0009755687455, 0.006695118921, 0.01209080579, 0.008260259162, -3.602472141e-06, -2.572910769e-05, -0.0001021308088, -0.0002899565892, -0.0006343161877, -0.001063791935, -0.001194861067, -0.0001826502318, 0.002681332861, 0.005648369689, 0.004074813008, -1.833583842e-06, -1.316628404e-05, -5.25998981e-05, -0.000150894165, -0.0003364886455, -0.0005873359393, -0.0007376819226, -0.0003986483494, 0.0007944644854, 0.002156455225, 0.001664932253, -7.446682895e-07, -5.373505144e-06, -2.15863328e-05, -6.245621081e-05, -0.0001414171272, -0.0002544426826, -0.0003444331573, -0.0002678386682, 0.0001247477012, 0.0006260693923, 0.0005329646778, -2.197907789e-07, -1.594639919e-06, -6.443731813e-06, -1.880176298e-05, -4.317865183e-05, -7.976917377e-05, -0.0001145339286, -0.0001089796407, -1.842972222e-05, 0.0001155377161, 0.0001173325477, -3.620587432e-08, -2.644628163e-07, -1.076352403e-06, -3.170685831e-06, -7.389661819e-06, -1.400517414e-05, -2.117377935e-05, -2.317165095e-05, -1.247469098e-05, 7.340975968e-06, 1.25209952e-05, -1.966372145e-05, -0.0001193795761, -0.000381780059, -0.0008173441056, -0.001184899716, -0.000749698753, 0.001935640556, 0.008756946681, 0.01939236187, 0.02476824964, 0.01201523392, -2.396614611e-05, -0.0001485502385, -0.0004866422299, -0.001076198186, -0.001654833429, -0.001341447912, 0.001674375504, 0.009886591687, 0.02346989852, 0.03227816698, 0.01894498341, -2.137746183e-05, -0.0001356941889, -0.0004589792178, -0.001066000611, -0.001800762994, -0.001991978029, -0.0001481187871, 0.005925278072, 0.0167817847, 0.02475959771, 0.0154679438, -1.505480624e-05, -9.756852594e-05, -0.0003392528413, -0.0008204155994, -0.001485992794, -0.00194732008, -0.001250947238, 0.002104486481, 0.008735493591, 0.01415794165, 0.009265939531, -8.731948689e-06, -5.753453892e-05, -0.0002043406583, -0.0005089230693, -0.0009656069548, -0.001389315826, -0.001273381913, 0.0002320837409, 0.003590884883, 0.006630370664, 0.004567888382, -4.188648888e-06, -2.797515229e-05, -0.0001010505767, -0.0002574075566, -0.0005049535453, -0.0007712567004, -0.0008319551282, -0.0002874844666, 0.001128004375, 0.002544396739, 0.001866242262, -1.605490299e-06, -1.085441141e-05, -3.979732653e-05, -0.0001033525896, -0.0002083541262, -0.0003329332485, -0.000397878095, -0.0002530019785, 0.0002193316868, 0.0007474049831, 0.0005983712607, -4.480073332e-07, -3.065619795e-06, -1.140402263e-05, -3.016259457e-05, -6.234053696e-05, -0.0001035530796, -0.000133713898, -0.0001118468097, -5.49181833e-07, 0.000142326242, 0.000132525554, -6.990271123e-08, -4.845016414e-07, -1.829863226e-06, -4.931221673e-06, -1.044646736e-05, -1.799592393e-05, -2.48134653e-05, -2.469117285e-05, -1.099280408e-05, 1.043278505e-05, 1.442084028e-05 +-7.886029895e-07, -7.500900574e-06, -3.990011845e-05, -0.0001546685493, -0.0004829788573, -0.001272077746, -0.002820717877, -0.00465989214, -0.002240718305, 0.01498134951, 0.03508165392, -1.008259724e-06, -9.552964092e-06, -5.05710851e-05, -0.0001951220177, -0.0006066660815, -0.001590974548, -0.003513205016, -0.005807751173, -0.003100015592, 0.01674280098, 0.03957703924, -9.367122632e-07, -8.889470696e-06, -4.715813636e-05, -0.0001826415727, -0.0005713524172, -0.001512301559, -0.003391525183, -0.005834785355, -0.004331093216, 0.01161178138, 0.03096425503, -6.885548087e-07, -6.544153605e-06, -3.47874385e-05, -0.0001352258725, -0.0004255456195, -0.001136427571, -0.002585314606, -0.004600605825, -0.004175760268, 0.005937350464, 0.01903370673, -4.180429921e-07, -3.97391837e-06, -2.113457324e-05, -8.229404533e-05, -0.00025987053, -0.0006979183553, -0.00160262082, -0.002915043277, -0.002959912682, 0.002406647717, 0.009755085646, -2.101274031e-07, -1.996471022e-06, -1.061296788e-05, -4.134250479e-05, -0.0001307858849, -0.0003524516138, -0.0008142091303, -0.001502664116, -0.001636983849, 0.0007470790059, 0.004171067574, -8.436106063e-08, -8.011737697e-07, -4.256455312e-06, -1.658206355e-05, -5.251801956e-05, -0.0001418827837, -0.000329248126, -0.0006144718127, -0.0007053755468, 0.0001428599226, 0.001419926303, -2.462235292e-08, -2.338709206e-07, -1.242361634e-06, -4.841664591e-06, -1.535369613e-05, -4.157910189e-05, -9.689033291e-05, -0.0001826822577, -0.0002194485485, -1.464155532e-06, 0.0003454750132, -4.009858002e-09, -3.81323286e-08, -2.027327897e-07, -7.909865173e-07, -2.51310561e-06, -6.825506282e-06, -1.597950044e-05, -3.04574884e-05, -3.824282985e-05, -7.542061762e-06, 4.516386738e-05, -2.210835312e-06, -1.794363717e-05, -7.983740021e-05, -0.0002575311895, -0.0006732178712, -0.001507358032, -0.002907605471, -0.004218904386, -0.000905805992, 0.01697568859, 0.03649520064, -2.65468462e-06, -2.180309511e-05, -9.806627064e-05, -0.0003193979183, -0.0008417138655, -0.001895845482, -0.003671558371, -0.005382807303, -0.001661149835, 0.01894498341, 0.04114687551, -2.33938712e-06, -1.948530736e-05, -8.899877123e-05, -0.0002948539142, -0.0007920425348, -0.001823379025, -0.00363160306, -0.005650625863, -0.003347984762, 0.0132428261, 0.03216212461, -1.631843058e-06, -1.376753848e-05, -6.378487696e-05, -0.0002147108827, -0.0005871438242, -0.00137921517, -0.002816390286, -0.004595555737, -0.003677554406, 0.006869597273, 0.01974591363, -9.397232152e-07, -8.013214742e-06, -3.756157334e-05, -0.0001280735486, -0.0003551926503, -0.0008473049699, -0.00176165001, -0.002965427304, -0.002757337425, 0.002848151462, 0.01010653016, -4.482811318e-07, -3.857326936e-06, -1.825941233e-05, -6.292526141e-05, -0.0001765241642, -0.0004262608843, -0.0008983448057, -0.001545234767, -0.001571356936, 0.0009211950307, 0.004315579217, -1.70990648e-07, -1.483654411e-06, -7.086521803e-06, -2.465784503e-05, -6.988360972e-05, -0.0001705615227, -0.0003635983551, -0.000636287951, -0.0006901806732, 0.0001973027013, 0.001467294863, -4.748243734e-08, -4.154411905e-07, -2.002020599e-06, -7.032158555e-06, -2.012836443e-05, -4.96293196e-05, -0.00010693992, -0.0001901003365, -0.0002177098775, 1.058143518e-05, 0.000356622922, -7.368368319e-09, -6.504241152e-08, -3.163905549e-07, -1.122324414e-06, -3.24544109e-06, -8.08580464e-06, -1.761451555e-05, -3.18144508e-05, -3.835118768e-05, -6.141077124e-06, 4.658984764e-05 +0.01133227799, -0.01568354996, -0.01330671182, -0.00641175955, -0.002597294576, -0.0009650116817, -0.0003310807243, -0.0001025985124, -2.728556786e-05, -5.573889516e-06, -6.564104755e-07, 0.0308518323, -0.009150397778, -0.01371246134, -0.007441046689, -0.003175450391, -0.001222654803, -0.0004326969064, -0.0001378435203, -3.753362749e-05, -7.81877121e-06, -9.359966288e-07, 0.03405329753, -0.004550534938, -0.0122434742, -0.0072372217, -0.003206000639, -0.001263160099, -0.0004551142587, -0.0001470437472, -4.043291164e-05, -8.46990208e-06, -1.016382592e-06, 0.0271538159, -0.001595442379, -0.009212935448, -0.005857767651, -0.002680409336, -0.001075708853, -0.0003926250712, -0.0001280220018, -3.538476092e-05, -7.422164882e-06, -8.892625681e-07, 0.01745443397, -5.662232093e-05, -0.005831197846, -0.003977195542, -0.001877988024, -0.0007665065161, -0.0002828222618, -9.287267938e-05, -2.575620113e-05, -5.401909163e-06, -6.454586123e-07, 0.009113826392, 0.0003833002222, -0.003078434941, -0.002246586644, -0.001094018039, -0.0004537238176, -0.0001690129991, -5.581849438e-05, -1.551597701e-05, -3.251584356e-06, -3.873011409e-07, 0.003716385648, 0.0002873708108, -0.001307874473, -0.001015805617, -0.0005095917542, -0.0002145901448, -8.061662172e-05, -2.675013453e-05, -7.447481501e-06, -1.558797743e-06, -1.850512218e-07, 0.001066402399, 0.0001017507957, -0.0004114135034, -0.0003357113852, -0.0001729859542, -7.386893885e-05, -2.795460039e-05, -9.309457192e-06, -2.593759436e-06, -5.419356461e-07, -6.410267944e-08, 0.0001612398639, 1.167877888e-05, -7.557718696e-05, -6.297374211e-05, -3.308823121e-05, -1.428435811e-05, -5.433726537e-06, -1.812753146e-06, -5.046675569e-07, -1.051363493e-07, -1.238029854e-08, 0.05656869934, -0.0003130637851, -0.01517938915, -0.01079756, -0.00559979549, -0.002500482416, -0.0009759889296, -0.0003243309359, -8.683530919e-05, -1.680994468e-05, -1.784923923e-06, 0.09871408099, 0.02252945123, -0.009393487825, -0.0100622435, -0.005799138444, -0.002740758087, -0.001117466834, -0.0003857719436, -0.0001069332311, -2.137746183e-05, -2.33938712e-06, 0.100645839, 0.03042906229, -0.005363632129, -0.008660024989, -0.005338228785, -0.00259658318, -0.001079140265, -0.0003784498631, -0.0001063778509, -2.15396504e-05, -2.385319443e-06, 0.07746768663, 0.02716328595, -0.002630052271, -0.006491615185, -0.004194170793, -0.002073746749, -0.0008697266866, -0.0003072032209, -8.691580672e-05, -1.770878379e-05, -1.973017454e-06, 0.0484567654, 0.01905450392, -0.000962508885, -0.004148022127, -0.002790701142, -0.001396953121, -0.0005891953463, -0.0002089829273, -5.935972977e-05, -1.214258778e-05, -1.358413877e-06, 0.0247327407, 0.01072057189, -0.0002019059541, -0.002226442804, -0.001553712109, -0.0007858374777, -0.0003327112684, -0.0001183061503, -3.368778316e-05, -6.910080427e-06, -7.753776739e-07, 0.0099195361, 0.004684297896, 1.535422016e-05, -0.000963740184, -0.000694792217, -0.000354581303, -0.0001505169244, -5.359474582e-05, -1.528424991e-05, -3.141109885e-06, -3.532745126e-07, 0.002832650769, 0.00144011837, 2.110091697e-05, -0.0003076136398, -0.0002273555097, -0.0001168368494, -4.96588834e-05, -1.76855197e-05, -5.046148665e-06, -1.038159077e-06, -1.169469043e-07, 0.0004373925022, 0.0002348593208, 1.251006481e-06, -5.658353613e-05, -4.213347637e-05, -2.169845798e-05, -9.209519505e-06, -3.273752846e-06, -9.329797395e-07, -1.918816485e-07, -2.162468451e-08 +-0.004924136379, 0.004686798712, 0.001010337038, -0.002075272028, -0.002338217452, -0.00159510913, -0.0008664007261, -0.0003955235544, -0.0001482164912, -4.125614231e-05, -6.451750685e-06, -0.003802000611, 0.0139291691, 0.00843001865, 0.001266593828, -0.001311369598, -0.001439427558, -0.0009333805399, -0.0004704185682, -0.0001880859778, -5.482721266e-05, -8.879025262e-06, -0.004540598659, 0.01511454668, 0.01069329851, 0.002722677187, -0.0007050147159, -0.001260883901, -0.0009069223926, -0.0004790615401, -0.0001964547671, -5.808873182e-05, -9.485363704e-06, -0.004830363247, 0.01149691731, 0.009174197873, 0.002712095312, -0.0003763065521, -0.0009973609564, -0.0007579035842, -0.0004094219466, -0.000169568246, -5.030703485e-05, -8.214530535e-06, -0.004015460914, 0.006838694315, 0.00615745115, 0.001982222307, -0.0002027774539, -0.0006891797335, -0.0005393035431, -0.0002947114615, -0.0001225235227, -3.633027789e-05, -5.916048668e-06, -0.002665031029, 0.003145613292, 0.003263354646, 0.001112343024, -0.0001186129398, -0.000408142148, -0.0003224866135, -0.0001769572519, -7.35696819e-05, -2.175551412e-05, -3.528119983e-06, -0.001403058196, 0.001014688724, 0.001297508993, 0.0004587596427, -7.138534953e-05, -0.0001986692969, -0.0001556687425, -8.522189848e-05, -3.53208577e-05, -1.039896114e-05, -1.677834462e-06, -0.000547105944, 0.0001601553162, 0.0003332951801, 0.0001181116957, -3.684685117e-05, -7.280620952e-05, -5.540213683e-05, -3.002437942e-05, -1.235712968e-05, -3.614340743e-06, -5.794568842e-07, -0.0001241381742, -1.505418248e-05, 3.352500512e-05, 9.927882767e-06, -1.175879233e-05, -1.574844662e-05, -1.130677791e-05, -5.991133925e-06, -2.432320365e-06, -7.039447808e-07, -1.118519343e-07, 0.01707368276, 0.02248118218, 0.007240981, -0.003087309184, -0.005697267449, -0.004599617927, -0.002709973586, -0.001251483129, -0.0004455428697, -0.0001119885189, -1.527704066e-05, 0.03093277743, 0.04803774913, 0.0269994654, 0.007427335657, -0.001306861988, -0.003211043632, -0.002467314596, -0.001303367148, -0.0005062478454, -0.0001356941889, -1.948530736e-05, 0.03042906229, 0.05120978123, 0.03173319679, 0.01088903921, 0.0005784665584, -0.002365554934, -0.002156223988, -0.001214986835, -0.0004896422906, -0.0001346351733, -1.971824272e-05, 0.02230973697, 0.04020444629, 0.02628808051, 0.009622696611, 0.0009490978411, -0.001705111924, -0.001676520336, -0.0009693959675, -0.0003965553137, -0.0001102341841, -1.629011001e-05, 0.0132600851, 0.02545610745, 0.01737961528, 0.006578809291, 0.0007324946447, -0.001111435356, -0.001123005198, -0.0006560761363, -0.0002702476183, -7.55585553e-05, -1.122532074e-05, 0.006367073135, 0.01304366452, 0.009263478685, 0.003574416516, 0.0003846431179, -0.0006338054861, -0.0006365615876, -0.00037216776, -0.0001536346034, -4.307653226e-05, -6.420453093e-06, 0.002328953556, 0.005171591724, 0.003822655252, 0.00148697761, 0.0001312097716, -0.0003009248581, -0.0002926512227, -0.0001699363426, -7.004537179e-05, -1.965150943e-05, -2.93409996e-06, 0.0005581638697, 0.001410714327, 0.001091380439, 0.0004207810076, 1.721908224e-05, -0.0001085275404, -9.953721179e-05, -5.692017644e-05, -2.332819271e-05, -6.532452036e-06, -9.75414819e-07, 5.477692169e-05, 0.0001899936851, 0.0001564942924, 5.691223932e-05, -5.341239291e-06, -2.326270946e-05, -1.946221075e-05, -1.081873759e-05, -4.378921513e-06, -1.218825515e-06, -1.815037582e-07 +-0.005859726031, 0.005611613871, 0.005995904108, 0.002358383494, -0.00020250188, -0.00117158417, -0.001193172754, -0.0008416002179, -0.0004498838339, -0.0001707097165, -3.545942487e-05, -0.00976182922, 0.01095956029, 0.01429518452, 0.008546193153, 0.003216991658, 0.0003233341816, -0.0007233874422, -0.0007938080293, -0.0005071291456, -0.0002125436378, -4.708653371e-05, -0.01222398041, 0.01070977548, 0.01632369542, 0.0106611221, 0.004588130889, 0.001005441976, -0.0004620027584, -0.0007275542737, -0.0005050440927, -0.0002192973854, -4.950526835e-05, -0.01186060752, 0.007382488637, 0.01362536264, 0.009445958298, 0.004270742334, 0.001060931503, -0.0003117391978, -0.0005977008578, -0.0004276496137, -0.000187498658, -4.246783712e-05, -0.009253232132, 0.003772783845, 0.009079666876, 0.006658421087, 0.003102028753, 0.0007995277271, -0.0002081320199, -0.0004255135234, -0.0003065070306, -0.0001343688431, -3.037067618e-05, -0.005864563378, 0.001262459591, 0.004827102736, 0.003762847916, 0.00179077464, 0.0004585924837, -0.0001321114623, -0.0002574774147, -0.0001838513698, -8.011305086e-05, -1.801480021e-05, -0.002944398154, 8.484000525e-05, 0.001940122586, 0.001632291662, 0.0007890750351, 0.0001919079115, -7.428798613e-05, -0.0001269951661, -8.872273049e-05, -3.823894921e-05, -8.533889142e-06, -0.001078106108, -0.0001771862851, 0.0005102272185, 0.0004819098162, 0.000234820944, 4.911228626e-05, -3.314136183e-05, -4.669822531e-05, -3.143878956e-05, -1.331971138e-05, -2.941106636e-06, -0.0002240206531, -8.413555501e-05, 5.574405732e-05, 6.832221439e-05, 3.274207374e-05, 3.44340221e-06, -9.040945663e-06, -9.997751902e-06, -6.343540922e-06, -2.614795101e-06, -5.680930225e-07, -0.001327596015, 0.01708705465, 0.01685019692, 0.007823022494, 0.000144121757, -0.003396536498, -0.003682350464, -0.00250180106, -0.001214453912, -0.0004030994278, -7.18352922e-05, -0.002395551572, 0.03206518357, 0.0382267168, 0.02568116109, 0.01142529598, 0.002233415414, -0.001556719445, -0.002000734675, -0.001218911981, -0.0004589792178, -8.899877123e-05, -0.005363632129, 0.03173319679, 0.04144375436, 0.02971351115, 0.01461166256, 0.004181722043, -0.0006069568806, -0.001643342613, -0.001125177628, -0.0004464616498, -8.938993167e-05, -0.007016384239, 0.02300128875, 0.03292260887, 0.0244845489, 0.0124204306, 0.00380185068, -0.0002851446083, -0.001261188284, -0.0009002815605, -0.0003641018465, -7.383104074e-05, -0.006421983169, 0.01321178322, 0.02105215847, 0.01617018196, 0.008336316247, 0.002590135808, -0.000175763309, -0.0008512093899, -0.0006137064662, -0.0002499180134, -5.098330428e-05, -0.004491853298, 0.005920193388, 0.01086344455, 0.00863185772, 0.004491936269, 0.001378529189, -0.0001296829326, -0.0004922029903, -0.0003515391584, -0.0001431191481, -2.92606258e-05, -0.00241937407, 0.001881569252, 0.004313460578, 0.003571164669, 0.001867162388, 0.00055003907, -8.785564557e-05, -0.000233064589, -0.0001624598094, -6.575256645e-05, -1.343298572e-05, -0.0009382365312, 0.0003071622627, 0.001162879595, 0.001020961422, 0.0005328203733, 0.000142280398, -4.503472002e-05, -8.249365135e-05, -5.524000535e-05, -2.208244941e-05, -4.492614705e-06, -0.000205554284, -1.729368661e-05, 0.0001483802122, 0.000145501236, 7.433801865e-05, 1.442554922e-05, -1.334657104e-05, -1.70186395e-05, -1.070838122e-05, -4.184952088e-06, -8.431173678e-07 +-0.00305255216, 0.00190122912, 0.004463962089, 0.003814169731, 0.001939227755, 0.0001991256665, -0.0008641799639, -0.001186263914, -0.0009588897856, -0.0005072671995, -0.0001423297006, -0.005590143868, 0.003505670932, 0.009749132209, 0.009942656219, 0.007015501908, 0.003555143319, 0.0008921528996, -0.000543537641, -0.0008800966145, -0.0005806128242, -0.000182316122, -0.007223954882, 0.002739483879, 0.01066974466, 0.01169327639, 0.008730633965, 0.004802451892, 0.001604311787, -0.000237214408, -0.0007982820494, -0.00057932964, -0.0001887960901, -0.007176432448, 0.001061496991, 0.008536692769, 0.0100115222, 0.007720813808, 0.004360629043, 0.001535157652, -0.0001248329033, -0.0006548029111, -0.0004886435341, -0.0001606466488, -0.005741611912, -0.0002622901495, 0.005408377927, 0.006853790278, 0.005435438435, 0.003111323943, 0.001103803204, -8.597920553e-05, -0.0004665026498, -0.0003480146435, -0.0001142433661, -0.003736064146, -0.0008136674214, 0.002678035366, 0.003757289956, 0.00306785002, 0.001768819517, 0.0006164436739, -6.877839469e-05, -0.0002827280939, -0.0002071714112, -6.749730853e-05, -0.001924864031, -0.0007365592815, 0.0009512094935, 0.001567921572, 0.001327269171, 0.0007672056999, 0.0002548039628, -4.964200548e-05, -0.0001397529541, -9.914144605e-05, -3.189657448e-05, -0.0007214354384, -0.0003979635247, 0.0001843049095, 0.0004346090586, 0.0003887827022, 0.0002236237394, 6.600095076e-05, -2.699762227e-05, -5.152187114e-05, -3.480115271e-05, -1.098688959e-05, -0.0001526667787, -0.0001123017127, -3.064357706e-06, 5.293048196e-05, 5.358987305e-05, 2.98971766e-05, 5.53988725e-06, -8.470775355e-06, -1.105503731e-05, -6.940142529e-06, -2.12739513e-06, -0.003425330714, 0.006979029731, 0.0139442789, 0.0128771431, 0.007136011146, 0.001186457998, -0.00234259249, -0.00312153041, -0.002240523561, -0.00102257973, -0.0002456204793, -0.006273019214, 0.01263602282, 0.02885374487, 0.03126139486, 0.02328650957, 0.01219211542, 0.003476069743, -0.0008972682857, -0.001772440315, -0.001066000611, -0.0002948539142, -0.008660024989, 0.01088903921, 0.02971351115, 0.03410932043, 0.02670805681, 0.01505841418, 0.005312796211, -7.575203327e-07, -0.001463407436, -0.001006615362, -0.0002938879917, -0.008954390325, 0.006194065249, 0.02238731357, 0.02708148448, 0.02179747627, 0.01259518991, 0.004631908889, 0.000165869851, -0.001139820572, -0.0008171494282, -0.000242912986, -0.007278409964, 0.002190469484, 0.01347844399, 0.01729556453, 0.01425461234, 0.008347560639, 0.003093425425, 0.0001019818611, -0.0007827414186, -0.0005631704112, -0.0001683159467, -0.004746147182, 1.458740852e-05, 0.006440904738, 0.008912709984, 0.00752777683, 0.004443947418, 0.00162759978, 1.032676697e-05, -0.0004606930018, -0.0003254178796, -9.707657187e-05, -0.002433301573, -0.0006075389936, 0.002276729276, 0.003530175015, 0.00307247556, 0.001821653725, 0.0006450751539, -3.30838928e-05, -0.0002220199261, -0.0001514691453, -4.484364164e-05, -0.0009047009305, -0.0004388099696, 0.0004870414037, 0.000944831115, 0.0008601132948, 0.0005095476645, 0.0001666728085, -3.038097676e-05, -7.997296766e-05, -5.17960765e-05, -1.511709547e-05, -0.0001898017588, -0.000137113452, 2.423794685e-05, 0.0001171825013, 0.0001171419133, 6.828047206e-05, 1.727080745e-05, -1.145930748e-05, -1.678280435e-05, -1.007524469e-05, -2.867902373e-06 +-0.001299895732, 6.299861535e-05, 0.002128746909, 0.003271192312, 0.003111456905, 0.001955745932, 0.0003879907225, -0.0009277194057, -0.001474151905, -0.001169229175, -0.0004619568222, -0.00244582688, 5.889375137e-05, 0.004558834984, 0.007784066575, 0.008527140965, 0.00699087439, 0.004106633202, 0.001133468381, -0.0007836933603, -0.001181183719, -0.000570223623, -0.003200064334, -0.0006948982846, 0.004596095082, 0.008733401658, 0.01003877782, 0.008573318645, 0.005368866893, 0.001901516195, -0.0004618748935, -0.001120308917, -0.0005820083071, -0.00321807581, -0.00141059482, 0.003240288997, 0.00712448601, 0.008554085393, 0.007468450248, 0.004760645408, 0.001755288318, -0.0003229800393, -0.0009301203313, -0.0004919924488, -0.002611021504, -0.001625178814, 0.001677593185, 0.004610176817, 0.005818319722, 0.005180861077, 0.003327392597, 0.001224794908, -0.0002360192311, -0.0006606742289, -0.0003485288473, -0.001725303301, -0.001353930302, 0.0005469777472, 0.002345843818, 0.003162977472, 0.002879500119, 0.001854994559, 0.0006642844975, -0.0001634681047, -0.0003953993815, -0.0002054697448, -0.0009032940894, -0.0008479727157, 2.984957228e-06, 0.0008699675467, 0.001303524001, 0.001223290869, 0.0007880412971, 0.0002653771988, -9.733293957e-05, -0.0001915320357, -9.703783796e-05, -0.0003440295532, -0.0003768430365, -0.0001111489596, 0.0001870478319, 0.0003527758026, 0.0003489059493, 0.0002236673746, 6.508100897e-05, -4.445186166e-05, -6.861310802e-05, -3.34726768e-05, -7.390856425e-05, -9.352888505e-05, -5.091051652e-05, 4.686132351e-06, 3.988860098e-05, 4.536694098e-05, 2.840065362e-05, 4.337230648e-06, -1.20458743e-05, -1.413377378e-05, -6.511645329e-06, -0.002249332996, 0.001323925212, 0.007664269826, 0.01165957661, 0.01097694578, 0.006659796182, 0.001516304622, -0.001967177328, -0.002899873022, -0.001998050795, -0.0006831569956, -0.004070669735, 0.002326688343, 0.01532077826, 0.0256310697, 0.02762490918, 0.02160768409, 0.01192346701, 0.003464926349, -0.001048268216, -0.001800762994, -0.0007920425348, -0.005338228785, 0.0005784665584, 0.01461166256, 0.02670805681, 0.03017496096, 0.02467155655, 0.01453765661, 0.005123880128, -0.0003038224091, -0.001607591991, -0.0007830310389, -0.005329196313, -0.001448754148, 0.009845565059, 0.02024664866, 0.02387046855, 0.02003286567, 0.01207868231, 0.004412856577, -0.0001331274805, -0.001294921409, -0.0006482978829, -0.004244008091, -0.002344295235, 0.005029712053, 0.01226225573, 0.01516192237, 0.01302421116, 0.007958029698, 0.002917100746, -0.0001211885576, -0.0009012811943, -0.0004513604592, -0.002734413837, -0.002120156368, 0.001797723808, 0.005903635043, 0.007754427339, 0.006827874459, 0.004208717913, 0.001517048856, -0.0001222868597, -0.0005310451983, -0.0002620093992, -0.001391422701, -0.001349676157, 0.0002727698234, 0.002110773979, 0.00303626188, 0.002757864426, 0.001709742132, 0.0005910937216, -9.452760337e-05, -0.000253923776, -0.0001219960061, -0.0005144524775, -0.000594405434, -0.0001264223392, 0.0004621777618, 0.0007954837994, 0.0007583389486, 0.0004709532902, 0.0001476862215, -5.062714059e-05, -8.99570166e-05, -4.153447721e-05, -0.0001073049741, -0.0001445305472, -7.59012338e-05, 2.636334636e-05, 9.307677579e-05, 9.902998352e-05, 6.082970591e-05, 1.355627891e-05, -1.505668202e-05, -1.835525284e-05, -7.984424371e-06 +-0.0005073289408, -0.0003743012953, 0.0006150718395, 0.001995705558, 0.003105188574, 0.00333790534, 0.002377826646, 0.0004918284669, -0.001383971234, -0.002105944522, -0.001272964068, -0.000962116652, -0.0007377722506, 0.001353460128, 0.004587745773, 0.007646060766, 0.009153298412, 0.008190616147, 0.004920899052, 0.0008865767082, -0.001671938736, -0.001509086994, -0.001261113965, -0.001256603661, 0.001009194514, 0.00480303218, 0.008571535909, 0.01063821421, 0.009851110717, 0.006308409842, 0.001703693492, -0.001412324459, -0.001517828498, -0.001271781686, -0.001535151378, 0.0002624490933, 0.003557147648, 0.006960312321, 0.008937800492, 0.008429801648, 0.00548840117, 0.001562661776, -0.001140526768, -0.001276344475, -0.001036367793, -0.001432570416, -0.0003053652741, 0.002002325392, 0.004483403184, 0.00599785816, 0.005754068816, 0.003769044558, 0.001059200573, -0.0008173282207, -0.0009021965687, -0.0006884888069, -0.001057519958, -0.0005081398088, 0.0007997780845, 0.002272483031, 0.003218003287, 0.003150763788, 0.002066437347, 0.0005479457234, -0.0005038572049, -0.0005316900254, -0.0003626037204, -0.0006094768141, -0.0004206080521, 0.0001537984523, 0.0008402960504, 0.001307811819, 0.001319367912, 0.0008633484574, 0.0002015906538, -0.0002552569961, -0.0002514425284, -0.0001389465347, -0.000253903047, -0.0002212705117, -4.696425771e-05, 0.0001804166357, 0.0003475750477, 0.0003705709304, 0.0002405063789, 4.010354059e-05, -9.711949023e-05, -8.704745406e-05, -3.002521243e-05, -5.964020898e-05, -6.216775216e-05, -3.573291218e-05, 4.591368451e-06, 3.773615664e-05, 4.714367053e-05, 2.965442491e-05, -1.075785875e-06, -2.166197005e-05, -1.705714023e-05, -0.001145254093, -0.0006463849401, 0.002676696417, 0.007270750623, 0.01034149722, 0.009965297623, 0.006321428508, 0.001439056615, -0.00216826725, -0.003045958641, -0.001636833754, -0.002041645966, -0.001166577729, 0.005378688566, 0.01534731732, 0.02352005126, 0.02547209656, 0.02034136865, 0.01108770174, 0.002443689476, -0.001991978029, -0.001823379025, -0.00259658318, -0.002365554934, 0.004181722043, 0.01505841418, 0.02467155655, 0.02787497975, 0.02320954745, 0.01350827823, 0.00387583917, -0.001493360371, -0.001785406783, -0.00253343528, -0.003053752428, 0.001723473884, 0.01050706414, 0.01876492932, 0.02205315856, 0.01884184167, 0.01121833062, 0.003347296768, -0.001171462814, -0.001481530476, -0.001986495261, -0.002842619515, -7.937414806e-05, 0.005663771906, 0.01139315343, 0.01399716073, 0.01224469648, 0.007384832336, 0.002187766818, -0.0008454634944, -0.001037611436, -0.001265975098, -0.002044377855, -0.0007975647657, 0.002254821261, 0.00549619689, 0.007145401294, 0.00641239709, 0.003898651825, 0.001110946473, -0.0005323053618, -0.0006070681894, -0.0006388819514, -0.001136124004, -0.0007387743954, 0.0005243314272, 0.001967898831, 0.002786594923, 0.002583565265, 0.00157785499, 0.0004132898112, -0.0002765690718, -0.000285363996, -0.0002345901073, -0.000454265235, -0.0003912855016, -2.785896632e-05, 0.0004307527972, 0.0007232184543, 0.000706111196, 0.0004308848652, 9.222006791e-05, -0.0001079684497, -9.830460315e-05, -4.861123499e-05, -0.0001022052029, -0.0001073995935, -5.449691591e-05, 2.410138678e-05, 8.204705827e-05, 9.055319446e-05, 5.423613056e-05, 4.248370337e-06, -2.468507759e-05, -1.919390749e-05 +-0.0001832826863, -0.0003221806858, -7.57870628e-05, 0.0007758423366, 0.002174814755, 0.00363627052, 0.004258669222, 0.003151915187, 0.0002843788836, -0.002738340583, -0.003007817499, -0.000347969936, -0.0006201035415, -8.179016516e-05, 0.001826453307, 0.005113396083, 0.008891319035, 0.01133153106, 0.01041011122, 0.005522447818, -0.0008540754457, -0.003383739993, -0.0004545723729, -0.0009057541822, -0.0004616417431, 0.001601747137, 0.00536311682, 0.009845513749, 0.0129591765, 0.01232598699, 0.007095501548, -0.0001171131937, -0.00334105561, -0.0004573445894, -0.001000241038, -0.0008103912128, 0.0008109956642, 0.003987050955, 0.007898023971, 0.01073551574, 0.01040954925, 0.0061085291, -2.231425673e-07, -0.002794829299, -0.0003722833795, -0.0008745556612, -0.000896235691, 0.0001099939056, 0.00227364753, 0.005035656494, 0.007118746482, 0.00702654795, 0.004141801977, -5.67173497e-05, -0.001973556003, -0.0002472191059, -0.0006158710867, -0.0007333875112, -0.0002484770006, 0.0009433039051, 0.002533443827, 0.003783219353, 0.003813216087, 0.002239534315, -0.0001102257392, -0.001164678444, -0.0001301781547, -0.0003416893878, -0.0004550187392, -0.0002909858871, 0.000215674809, 0.0009341518436, 0.001527959403, 0.001587231279, 0.000921174136, -0.0001066539743, -0.0005527617045, -4.986706294e-05, -0.0001376286856, -0.0002012025848, -0.0001741812589, -2.707231493e-05, 0.0002027290432, 0.0004062264893, 0.0004456798133, 0.000251455896, -6.396448715e-05, -0.000192616845, -1.076712396e-05, -3.13015129e-05, -4.984734335e-05, -5.261636378e-05, -3.206820422e-05, 6.86260759e-06, 4.529099886e-05, 5.774532187e-05, 2.977372994e-05, -2.042822014e-05, -3.817436184e-05, -0.0004940874539, -0.0008565958029, 0.0001023447595, 0.002908858113, 0.006697243076, 0.009526497929, 0.009532376631, 0.00618845193, 0.0009181799759, -0.003305676804, -0.003440794401, -0.0008689569194, -0.001509017087, 0.000404142283, 0.006202457842, 0.01461952552, 0.02201373252, 0.02433093646, 0.01963149685, 0.00970784172, -0.0001481187871, -0.00363160306, -0.001079140265, -0.002156223988, -0.0006069568806, 0.005312796211, 0.01453765661, 0.02320954745, 0.02670093437, 0.02245190994, 0.01198385775, 0.000936498322, -0.003502636338, -0.001033076968, -0.002308452536, -0.001581302516, 0.002825425666, 0.01028749111, 0.01772731222, 0.02120170608, 0.01830280882, 0.009998054169, 0.0008708861016, -0.002910306423, -0.0007987293794, -0.001934304641, -0.001841223211, 0.0007699199976, 0.005651369667, 0.0108073202, 0.01350906608, 0.01194912939, 0.006595318276, 0.000491621774, -0.002051346537, -0.0005034456093, -0.001297875575, -0.001488125122, -0.0002693880172, 0.002323092973, 0.005235541434, 0.006924281128, 0.006288529948, 0.003482226773, 0.000160113238, -0.001210975705, -0.0002517067866, -0.0006845026396, -0.000893097335, -0.0004803834355, 0.0005895851311, 0.001883304133, 0.002712145974, 0.002547571151, 0.001405517509, -7.218934543e-06, -0.0005756301274, -9.163500155e-05, -0.000261937905, -0.0003787982491, -0.000300181101, 5.696402048e-06, 0.0004147610871, 0.0007074360811, 0.0007009459399, 0.0003804124013, -4.061828205e-05, -0.0002011200312, -1.882639135e-05, -5.66087392e-05, -8.967538203e-05, -8.956830742e-05, -4.578310086e-05, 2.367299382e-05, 8.087004111e-05, 9.08691439e-05, 4.640637869e-05, -1.842112733e-05, -4.002406163e-05 +-5.995135485e-05, -0.0001844701269, -0.0002573749215, -1.913450719e-05, 0.0008723082916, 0.002598094246, 0.004747305425, 0.00594384486, 0.004087234532, -0.001608257189, -0.005727879501, -0.0001133556501, -0.0003494361723, -0.000461355467, 0.0001135955779, 0.002135316235, 0.0060806853, 0.01128068905, 0.01511764382, 0.01333070536, 0.003586544332, -0.005818871214, -0.0001469490782, -0.0004789933108, -0.0007284830641, -0.0002410033313, 0.001893475073, 0.006297417214, 0.01231709635, 0.0170628214, 0.01565715406, 0.005181411141, -0.005532011709, -0.0001469042924, -0.0005032623497, -0.0008550584134, -0.0006293905859, 0.000995287971, 0.004620626555, 0.009767115116, 0.01400928546, 0.01312150468, 0.004451085345, -0.004585506138, -0.0001189851923, -0.0004241544889, -0.0007785866779, -0.0007730976215, 0.0001982114296, 0.002606143492, 0.006171725636, 0.009231440397, 0.008797271553, 0.002926751718, -0.003239095996, -7.867712335e-05, -0.0002900712629, -0.0005647466509, -0.000663231669, -0.0002177983589, 0.001074127613, 0.003088474373, 0.004891263122, 0.004748733823, 0.001498747368, -0.001922181247, -4.126059794e-05, -0.0001568857007, -0.0003209432293, -0.0004228913684, -0.0002850804791, 0.0002480017061, 0.001140473639, 0.001980334844, 0.001971092802, 0.0005610440054, -0.0009215971559, -1.573746073e-05, -6.169453486e-05, -0.000132102149, -0.0001905650155, -0.0001747963123, -2.609835167e-05, 0.000253181541, 0.000534582878, 0.0005550482857, 0.0001245343134, -0.0003263878508, -3.381008427e-06, -1.3695063e-05, -3.069899518e-05, -4.794060809e-05, -5.324890358e-05, -3.400572053e-05, 1.201624886e-05, 6.371037261e-05, 7.351050758e-05, 4.850164493e-06, -6.636553229e-05, -0.0001786603259, -0.0005364390612, -0.0006322253495, 0.0002600246174, 0.002614378671, 0.006069835272, 0.009202444559, 0.009881342783, 0.006244461696, -0.001245390942, -0.005993625806, -0.0003106429161, -0.0009334843964, -0.001031079883, 0.0008613410386, 0.005854699254, 0.01351111466, 0.02121451357, 0.02465520149, 0.01962584817, 0.005925278072, -0.005650625863, -0.0003784498631, -0.001214986835, -0.001643342613, -7.575203327e-07, 0.005123880128, 0.01350827823, 0.02245190994, 0.02714266973, 0.0225596759, 0.007920405493, -0.005233715726, -0.0003565855888, -0.001213395333, -0.001902834955, -0.001001554848, 0.002820947043, 0.009597848459, 0.01723988708, 0.0217041627, 0.01851624077, 0.006640331346, -0.004331020544, -0.0002723373689, -0.0009694542902, -0.001676259115, -0.001401136002, 0.0008642647211, 0.005291476023, 0.01057337327, 0.01394537972, 0.01217518737, 0.004315373366, -0.003076691356, -0.00016994535, -0.0006277622699, -0.001165774538, -0.001218395356, -0.0001636911664, 0.002181571316, 0.005157731639, 0.007218916059, 0.006456709927, 0.002207083818, -0.001841521322, -8.421577634e-05, -0.0003215104192, -0.0006327914678, -0.0007631216362, -0.0004090746549, 0.0005541264903, 0.001871936173, 0.002863844153, 0.002639145848, 0.0008399510402, -0.0008918247441, -3.039813435e-05, -0.0001198102904, -0.0002484097086, -0.0003337158063, -0.0002685255302, 4.053869703e-06, 0.0004186275103, 0.0007620180438, 0.0007351068008, 0.0002000864928, -0.0003194144354, -6.189861505e-06, -2.522590067e-05, -5.502881124e-05, -8.101226018e-05, -8.201859364e-05, -4.396287785e-05, 2.577442875e-05, 9.13812481e-05, 9.761298147e-05, 1.498048814e-05, -6.578538888e-05 +-1.686223757e-05, -8.033085867e-05, -0.0002036297879, -0.0003144260167, -0.0001530799986, 0.0007778376877, 0.00301480667, 0.006339955374, 0.008075249749, 0.00278639516, -0.006662579732, -3.157322439e-05, -0.0001495220962, -0.0003686469611, -0.0005216994588, -5.664233672e-05, 0.002065905007, 0.007001657995, 0.01454462819, 0.01997659391, 0.01306187944, -0.004305791536, -4.042953841e-05, -0.0001965653939, -0.0005058552728, -0.0008011865073, -0.0004688025599, 0.001691624722, 0.007080108423, 0.0156447339, 0.02229297295, 0.0155824346, -0.003217468683, -3.999455212e-05, -0.0001993642092, -0.0005338429317, -0.0009264508378, -0.0008666698538, 0.0006926847993, 0.005031176141, 0.01224763114, 0.01812375371, 0.01291349285, -0.002538363468, -3.211140381e-05, -0.0001633810507, -0.000451066698, -0.0008333284674, -0.0009644698388, -9.825028898e-05, 0.002717037448, 0.007647497695, 0.01183174462, 0.008492667208, -0.001845753031, -2.106989221e-05, -0.0001091245981, -0.0003089033184, -0.0005978888551, -0.0007850049361, -0.0004333025216, 0.001038479001, 0.0037842819, 0.006214100996, 0.00446549621, -0.001172786624, -1.096908669e-05, -5.777254832e-05, -0.0001672580837, -0.0003364456731, -0.0004827646887, -0.0004032665691, 0.0001847646065, 0.001382545718, 0.002495958162, 0.001785766118, -0.0006177895347, -4.152705871e-06, -2.225337024e-05, -6.587499446e-05, -0.0001372638331, -0.0002114671904, -0.0002205188632, -6.425454498e-05, 0.0003038657494, 0.0006698151047, 0.0004723320307, -0.0002464326969, -8.849171808e-07, -4.835035362e-06, -1.466162697e-05, -3.165091696e-05, -5.193767273e-05, -6.29925854e-05, -4.486934949e-05, 1.438334192e-05, 8.003624344e-05, 5.343417071e-05, -5.812396436e-05, -5.15074973e-05, -0.0002285070581, -0.0005018882264, -0.0006022388921, 1.399782469e-06, 0.001912117096, 0.005365329153, 0.009446792569, 0.01082967405, 0.00420644632, -0.006436821046, -8.870045433e-05, -0.000393854743, -0.0008487210867, -0.0009184915416, 0.0004693906231, 0.004586307521, 0.01205249746, 0.02132106652, 0.02630735799, 0.0167817847, -0.003347984762, -0.0001063778509, -0.0004896422906, -0.001125177628, -0.001463407436, -0.0003038224091, 0.00387583917, 0.01198385775, 0.0225596759, 0.02897466322, 0.01964485473, -0.002107191551, -9.890768909e-05, -0.0004707798532, -0.001145689725, -0.001708140586, -0.001147361995, 0.001909082365, 0.00841705263, 0.01736826609, 0.02325603532, 0.01611364312, -0.00164015125, -7.475133415e-05, -0.0003656457447, -0.0009295868995, -0.001515468641, -0.001431226017, 0.0003263861538, 0.004544877546, 0.01068346282, 0.01500466408, 0.01052020959, -0.001265388711, -4.624046355e-05, -0.0002315133742, -0.0006097446965, -0.00106058904, -0.001196825775, -0.0004189841577, 0.001793206189, 0.005225395706, 0.007800650788, 0.005507000492, -0.0008693762098, -2.273314896e-05, -0.0001162811377, -0.0003159121581, -0.000579063415, -0.0007352287377, -0.0005008476324, 0.0003940510163, 0.001900208994, 0.003109541151, 0.002202399362, -0.0004941448619, -8.141480191e-06, -4.253819035e-05, -0.0001190410256, -0.0002286131663, -0.0003178186193, -0.0002897893214, -4.322726665e-05, 0.0004249494954, 0.0008329864434, 0.0005887994177, -0.0002110646272, -1.643863616e-06, -8.787025053e-06, -2.535339389e-05, -5.093842777e-05, -7.655172847e-05, -8.384563175e-05, -5.150216319e-05, 2.578418814e-05, 0.0001014478155, 7.02298149e-05, -5.284141518e-05 +-3.645388113e-06, -2.503835147e-05, -9.524607965e-05, -0.0002541551096, -0.0004970270357, -0.0006370809986, -8.588112117e-05, 0.00217528619, 0.006282069978, 0.008020494003, 0.002150171506, -6.725827816e-06, -4.572269777e-05, -0.0001706290769, -0.0004414338999, -0.0008146858677, -0.0008764269721, 0.0005751065378, 0.005616446238, 0.0149283658, 0.0211768986, 0.01163650865, -8.473150325e-06, -5.814325601e-05, -0.000219641996, -0.0005806674969, -0.001124075036, -0.001420603097, -0.0001316874159, 0.005161517643, 0.0155650304, 0.02348685062, 0.01420999862, -8.264397947e-06, -5.727604184e-05, -0.0002192269613, -0.0005926246214, -0.00120029773, -0.001719638794, -0.001028704274, 0.003006562068, 0.01160203091, 0.01879324982, 0.01203002466, -6.556040729e-06, -4.581179675e-05, -0.0001771949245, -0.0004872847959, -0.001020041957, -0.001583058377, -0.001409757632, 0.00103542653, 0.006785171683, 0.01203459681, 0.008112994816, -4.255853165e-06, -2.995641848e-05, -0.0001169019089, -0.0003259838589, -0.000700015799, -0.001149259088, -0.001244989815, -7.98035195e-05, 0.003048737128, 0.006176866094, 0.004410146098, -2.193335717e-06, -1.555091759e-05, -6.12023628e-05, -0.0001728225605, -0.00037928975, -0.0006509099848, -0.0007989537444, -0.0003973927775, 0.0009307284534, 0.002407262608, 0.001853611632, -8.220121653e-07, -5.87526144e-06, -2.333479671e-05, -6.673617871e-05, -0.0001495161156, -0.0002667108596, -0.0003593204742, -0.0002824239268, 0.0001115038056, 0.0006153355168, 0.0005359837344, -1.732911979e-07, -1.250863483e-06, -5.022668209e-06, -1.457161056e-05, -3.335688394e-05, -6.175120928e-05, -8.992266907e-05, -9.044409188e-05, -3.052219877e-05, 6.480713168e-05, 7.622748868e-05, -1.06523583e-05, -6.514610174e-05, -0.0002116273105, -0.0004677317964, -0.000731562467, -0.0006577772254, 0.000458946407, 0.003530700455, 0.008233603029, 0.009765429332, 0.002911710356, -1.81954427e-05, -0.0001113948004, -0.0003592800162, -0.0007759690056, -0.001136032308, -0.0007331592255, 0.00184464974, 0.008462372879, 0.01892383677, 0.02475959771, 0.0132428261, -2.15396504e-05, -0.0001346351733, -0.0004464616498, -0.001006615362, -0.001607591991, -0.001493360371, 0.000936498322, 0.007920405493, 0.01964485473, 0.02725603558, 0.01593931916, -1.980439366e-05, -0.0001263112647, -0.0004303609097, -0.00101078566, -0.001740835075, -0.002019992075, -0.0004784103708, 0.004917532295, 0.01466099707, 0.02172894476, 0.01340921017, -1.483437106e-05, -9.624355191e-05, -0.0003353191968, -0.000813229374, -0.001478320233, -0.001945859516, -0.001261627624, 0.002074265491, 0.00863246475, 0.01388607488, 0.009004121126, -9.107382454e-06, -5.998385163e-05, -0.0002130355929, -0.0005305180703, -0.00100531723, -0.001438701548, -0.001286966567, 0.0003552228414, 0.003948951452, 0.007127281201, 0.004879775267, -4.446386083e-06, -2.970349817e-05, -0.0001073758101, -0.0002737801822, -0.000537319286, -0.0008193426351, -0.0008755203558, -0.0002724568268, 0.001267751196, 0.002788634491, 0.002048122115, -1.581214815e-06, -1.071562357e-05, -3.942115397e-05, -0.0001028223832, -0.0002084046824, -0.0003352941045, -0.0004049930033, -0.0002671899603, 0.0001968170849, 0.0007229195649, 0.0005932909446, -3.16780524e-07, -2.180527843e-06, -8.173307625e-06, -2.182667866e-05, -4.567838652e-05, -7.722229657e-05, -0.0001027811066, -9.328622744e-05, -2.041474153e-05, 8.068963696e-05, 8.530980786e-05 +-4.536803148e-07, -4.285300756e-06, -2.270013222e-05, -8.795243837e-05, -0.0002756948247, -0.0007326761244, -0.001653631725, -0.002864440377, -0.002083885395, 0.006198090989, 0.01648814502, -8.22442297e-07, -7.677730444e-06, -4.007913382e-05, -0.0001526936251, -0.0004693986212, -0.001218031963, -0.002657191594, -0.004289800734, -0.001877634612, 0.01376219692, 0.03097047196, -1.017082277e-06, -9.495431581e-06, -4.957345489e-05, -0.0001891023631, -0.0005830576027, -0.001520777138, -0.003348083153, -0.00554603102, -0.003238672834, 0.01419208576, 0.03376312295, -9.759745363e-07, -9.122301008e-06, -4.769622879e-05, -0.0001824617499, -0.0005653311569, -0.001485654276, -0.003311517516, -0.00565912814, -0.004215599434, 0.01059186224, 0.02790446823, -7.633458741e-07, -7.140604435e-06, -3.737018768e-05, -0.000143249543, -0.0004454742565, -0.001177496281, -0.002649895674, -0.004636505622, -0.004012076273, 0.006274194245, 0.01879504843, -4.892482714e-07, -4.579841736e-06, -2.398492782e-05, -9.20789976e-05, -0.0002871605357, -0.0007625003602, -0.001728898206, -0.00308094218, -0.002954534254, 0.002913866872, 0.0103527675, -2.491232945e-07, -2.334447353e-06, -1.223641169e-05, -4.704655173e-05, -0.000147103207, -0.0003921839876, -0.0008950603845, -0.001620226317, -0.001682958094, 0.000968953455, 0.004487569206, -9.22518751e-08, -8.660184498e-07, -4.546396583e-06, -1.751504867e-05, -5.492593659e-05, -0.0001470491614, -0.0003377896965, -0.0006207855826, -0.0006913800488, 0.0001706204384, 0.001383636832, -1.920270126e-08, -1.808327926e-07, -9.519729606e-07, -3.678862697e-06, -1.158143463e-05, -3.116253399e-05, -7.211748935e-05, -0.0001347382526, -0.0001605275425, -6.880521931e-06, 0.0002288445911, -1.200783396e-06, -9.794238579e-06, -4.393815944e-05, -0.0001434451211, -0.0003812007414, -0.0008723922985, -0.001736392829, -0.002701784821, -0.001484039164, 0.007137507174, 0.01716661928, -2.036958338e-06, -1.663447577e-05, -7.443115904e-05, -0.0002412628656, -0.0006329418787, -0.00141877361, -0.002726132026, -0.003899466937, -0.0007206014091, 0.0154679438, 0.03216212461, -2.385319443e-06, -1.971824272e-05, -8.938993167e-05, -0.0002938879917, -0.0007830310389, -0.001785406783, -0.003502636338, -0.005233715726, -0.002107191551, 0.01593931916, 0.0350041022, -2.172594319e-06, -1.818115751e-05, -8.354359424e-05, -0.0002788288714, -0.0007554812959, -0.00175541686, -0.003525104034, -0.00551840657, -0.003406631495, 0.01193717959, 0.02888512252, -1.615048282e-06, -1.366169871e-05, -6.352231796e-05, -0.0002147840943, -0.000590341431, -0.001393461118, -0.002850995675, -0.004619326042, -0.003549716209, 0.007116450764, 0.01942660863, -9.851298396e-07, -8.414967426e-06, -3.954474192e-05, -0.0001352671797, -0.0003764798037, -0.0009007333509, -0.001871537023, -0.003114104877, -0.002744381728, 0.003344038599, 0.01068558512, -4.78045243e-07, -4.121911213e-06, -1.956723177e-05, -6.766601847e-05, -0.0001905396281, -0.0004615251794, -0.0009721976604, -0.001654577429, -0.001611962769, 0.001141013703, 0.004625842816, -1.689346554e-07, -1.47062685e-06, -7.053078872e-06, -2.465825712e-05, -7.024035749e-05, -0.0001721962383, -0.0003675499583, -0.0006388999953, -0.000676603943, 0.0002191229486, 0.00142470737, -3.360120398e-08, -2.955766587e-07, -1.433332545e-06, -5.069830005e-06, -1.461849404e-05, -3.629124803e-05, -7.853828177e-05, -0.0001395424411, -0.0001596572188, 3.147255888e-07, 0.000235476219 +0.005144328883, -0.007469879871, -0.00665480106, -0.003299101648, -0.001355968021, -0.0005077894895, -0.0001749459362, -5.422714835e-05, -1.435786214e-05, -2.907482197e-06, -3.384616355e-07, 0.01803848588, -0.007235551677, -0.01025096349, -0.00566661019, -0.002443739799, -0.000943828967, -0.0003335522058, -0.0001056624185, -2.847592633e-05, -5.846614997e-06, -6.880906446e-07, 0.02713790289, -0.00484983577, -0.01188130748, -0.007189222642, -0.003223681638, -0.001273704234, -0.0004578544966, -0.0001469948149, -3.99987071e-05, -8.261671857e-06, -9.753669836e-07, 0.02899470289, -0.001692142612, -0.01104834506, -0.007292214814, -0.003393044288, -0.001367917777, -0.0004985524059, -0.0001616854817, -4.428569699e-05, -9.176166168e-06, -1.083897497e-06, 0.02431776113, 0.0006761576134, -0.008493778478, -0.006115210877, -0.002951451655, -0.001212766162, -0.000447354642, -0.000146278808, -4.026206874e-05, -8.357308276e-06, -9.865346098e-07, 0.01630066269, 0.001581256281, -0.005390240342, -0.004234080733, -0.002119645145, -0.0008872637626, -0.0003308865929, -0.000108957097, -3.010602364e-05, -6.255665625e-06, -7.375738298e-07, 0.008477749861, 0.001302753165, -0.002741471501, -0.002342422995, -0.001215530531, -0.0005181073371, -0.0001951889196, -6.466890121e-05, -1.792538912e-05, -3.726815608e-06, -4.387738122e-07, 0.003103921191, 0.0005985178423, -0.001039692312, -0.0009522261745, -0.0005104997614, -0.0002212901688, -8.412667896e-05, -2.801437057e-05, -7.783165794e-06, -1.618129919e-06, -1.901606366e-07, 0.0006008752206, 0.0001141152386, -0.0002384753762, -0.0002239473067, -0.0001227318054, -5.387594321e-05, -2.061148911e-05, -6.882600243e-06, -1.912756771e-06, -3.969957105e-07, -4.650736852e-08, 0.02450514999, -0.0007278647183, -0.007666318861, -0.005449357717, -0.002817922196, -0.001251551251, -0.0004857947112, -0.0001606172333, -4.280976214e-05, -8.254414237e-06, -8.73422035e-07, 0.05739591647, 0.01136234878, -0.008317900421, -0.007877565881, -0.004410593828, -0.00204192089, -0.0008180934059, -0.0002782330848, -7.614232141e-05, -1.505480624e-05, -1.631843058e-06, 0.07746768663, 0.02230973697, -0.007016384239, -0.008954390325, -0.005329196313, -0.00253343528, -0.001033076968, -0.0003565855888, -9.890768909e-05, -1.980439366e-05, -2.172594319e-06, 0.07774507548, 0.0273150756, -0.004549205988, -0.008338776953, -0.005240576638, -0.002543043986, -0.0010494828, -0.0003657149575, -0.000102318401, -2.065511025e-05, -2.283796395e-06, 0.06228052536, 0.02524460364, -0.002139761729, -0.006505045193, -0.004304967415, -0.002126279607, -0.0008854292604, -0.0003106296404, -8.743781989e-05, -1.775515498e-05, -1.97454441e-06, 0.04026052655, 0.01833181252, -0.0005528853524, -0.004225587591, -0.002940558883, -0.001476076704, -0.0006191696879, -0.0002183151608, -6.173332324e-05, -1.25923127e-05, -1.40680473e-06, 0.02036974772, 0.01024981472, 9.507768703e-05, -0.002207373933, -0.001612056582, -0.0008215833092, -0.0003467630817, -0.0001227413712, -3.48299355e-05, -7.13025858e-06, -7.996081441e-07, 0.007349319478, 0.0040267145, 0.0001402125915, -0.0008545258224, -0.0006501718223, -0.0003357250534, -0.000142372847, -5.052604165e-05, -1.437223854e-05, -2.950137456e-06, -3.318342245e-07, 0.001440810213, 0.000839876795, 2.973001451e-05, -0.0001949783548, -0.0001509398874, -7.844636928e-05, -3.330686047e-05, -1.181922182e-05, -3.362787268e-06, -6.908825467e-07, -7.782966974e-08 +-0.002015534345, 0.001601400572, -5.251521605e-05, -0.001341887727, -0.001333972037, -0.0008825137041, -0.0004720889387, -0.0002126690497, -7.854186764e-05, -2.152184973e-05, -3.313675745e-06, -0.001687993909, 0.007364000469, 0.003857409659, -0.0002874917326, -0.001535685769, -0.001309683533, -0.0007858047181, -0.0003788780062, -0.0001463971686, -4.143030057e-05, -6.537168478e-06, -0.00159690915, 0.01148758571, 0.007363006608, 0.001044379979, -0.001420448516, -0.001539233262, -0.001001344731, -0.0005033312801, -0.0001992652226, -5.722714052e-05, -9.113310227e-06, -0.001681808705, 0.01226758411, 0.008852039007, 0.001979052527, -0.001099030115, -0.001503868439, -0.001040303537, -0.0005382089684, -0.0002163356691, -6.261676861e-05, -1.000853137e-05, -0.001730086876, 0.01003777579, 0.007992756253, 0.002158120334, -0.0007400156106, -0.001251123448, -0.0009059457105, -0.000478300743, -0.0001941458957, -5.642353286e-05, -9.026999209e-06, -0.001590491163, 0.006361340983, 0.005597599583, 0.001685389901, -0.0004459359038, -0.0008815492667, -0.0006586003525, -0.0003525097577, -0.0001439546596, -4.190919338e-05, -6.700463986e-06, -0.001235248463, 0.002937943666, 0.002932316977, 0.0009444171089, -0.0002457520334, -0.0005093003145, -0.0003863981973, -0.0002083601059, -8.532662846e-05, -2.483733355e-05, -3.963786795e-06, -0.000742916298, 0.0007970634601, 0.0009999645759, 0.000327873307, -0.0001227968584, -0.0002236745654, -0.000168364691, -9.066695038e-05, -3.706793262e-05, -1.076081427e-05, -1.711524053e-06, -0.0002690488487, 2.671213455e-05, 0.0001345221612, 3.5086593e-05, -4.55574294e-05, -6.003646585e-05, -4.30203217e-05, -2.27468702e-05, -9.199993211e-06, -2.648725636e-06, -4.183357555e-07, 0.007931660282, 0.009349329665, 0.00227597228, -0.002252380397, -0.003167878109, -0.002419972708, -0.001389948093, -0.0006320251721, -0.0002225957442, -5.549946375e-05, -7.523205139e-06, 0.019875297, 0.0275963801, 0.01385283243, 0.002120778093, -0.002513468, -0.002962248701, -0.001996064497, -0.0009939986621, -0.0003727882047, -9.756852594e-05, -1.376753848e-05, 0.02716328595, 0.04020444629, 0.02300128875, 0.006194065249, -0.001448754148, -0.003053752428, -0.002308452536, -0.001213395333, -0.0004707798532, -0.0001263112647, -1.818115751e-05, 0.0273150756, 0.04234880719, 0.02597729766, 0.008222342407, -0.0004769711505, -0.002699838975, -0.002221308878, -0.001209627541, -0.0004794593754, -0.0001306516118, -1.904280445e-05, 0.02180214541, 0.03519586824, 0.02270058247, 0.007786813173, 8.095731538e-05, -0.002076520246, -0.001812614409, -0.001010305245, -0.0004061371065, -0.0001118360818, -1.64428406e-05, 0.01391132204, 0.02338637108, 0.01573413395, 0.00566473954, 0.000226039957, -0.001376329051, -0.00124487547, -0.000703807112, -0.0002855188806, -7.91910839e-05, -1.171719761e-05, 0.00680025398, 0.01199280559, 0.008396889232, 0.00311502942, 0.0001420697431, -0.0007586464047, -0.0006940305874, -0.0003948612481, -0.000161002692, -4.48664657e-05, -6.669184069e-06, 0.002248293516, 0.004251213824, 0.003102840307, 0.001161536921, 2.352159302e-05, -0.0003221017084, -0.0002885944101, -0.0001635786628, -6.670949653e-05, -1.862326081e-05, -2.77569655e-06, 0.0003442699097, 0.0007496974936, 0.0005742576186, 0.0002046753629, -2.045687457e-05, -8.465218177e-05, -7.051203603e-05, -3.910712565e-05, -1.580678467e-05, -4.396628715e-06, -6.546821738e-07 +-0.002707776442, 0.002448040787, 0.002626613548, 0.000883017075, -0.0003243161624, -0.0007371327204, -0.0006849902319, -0.0004631371828, -0.000240379642, -8.908403008e-05, -1.814764317e-05, -0.005940357125, 0.006693682625, 0.008676369969, 0.004841980873, 0.001405278873, -0.0003284733114, -0.0008218277649, -0.0007054335704, -0.0004104333245, -0.0001628460099, -3.473873715e-05, -0.009200794609, 0.009182723242, 0.01362099165, 0.008526654182, 0.003232282797, 0.00025894114, -0.0008106343315, -0.000854144577, -0.0005330799537, -0.0002189094717, -4.763430187e-05, -0.01103066716, 0.008867213036, 0.01526053486, 0.01026714158, 0.004301173266, 0.0007241549334, -0.0006850783548, -0.0008602848284, -0.0005621419912, -0.0002353678908, -5.171469448e-05, -0.01069388148, 0.006412207004, 0.0133380954, 0.009540067804, 0.004230840794, 0.000876828085, -0.0005125367843, -0.0007366368699, -0.0004952739617, -0.0002095511278, -4.623801363e-05, -0.008466446598, 0.003315823138, 0.009197987016, 0.006998340224, 0.003228843605, 0.0007278174111, -0.0003422089658, -0.0005326859855, -0.0003633409094, -0.0001543771984, -3.408995416e-05, -0.005354479094, 0.0009294114459, 0.004794543227, 0.003922729196, 0.001865686313, 0.0004276298888, -0.0002009287071, -0.000314479849, -0.0002145990379, -9.105499968e-05, -2.00655177e-05, -0.002508567415, -0.0001654129965, 0.001651061866, 0.001499280493, 0.0007285550772, 0.0001544927254, -9.860056264e-05, -0.0001400123924, -9.376785753e-05, -3.943192823e-05, -8.638931485e-06, -0.0006857271412, -0.0002335141968, 0.0002402695901, 0.0002738834487, 0.000132463892, 1.666312844e-05, -3.30435808e-05, -3.745731198e-05, -2.380187413e-05, -9.775755562e-06, -2.112843035e-06, -0.0005472348741, 0.00740499998, 0.007038413693, 0.002784495667, -0.0006594497157, -0.002086210078, -0.002006291983, -0.00130389153, -0.0006179952956, -0.0002020170749, -3.561782669e-05, -0.0009518929347, 0.01927079189, 0.02213891093, 0.01379014215, 0.005014215392, -0.0001849013775, -0.001933255847, -0.001726782131, -0.0009480926451, -0.0003392528413, -6.378487696e-05, -0.002630052271, 0.02628808051, 0.03292260887, 0.02238731357, 0.009845565059, 0.001723473884, -0.001581302516, -0.001902834955, -0.001145689725, -0.0004303609097, -8.354359424e-05, -0.004549205988, 0.02597729766, 0.03516148278, 0.02510860474, 0.01183929336, 0.00281776538, -0.001129158559, -0.001780625347, -0.00113885989, -0.0004407068984, -8.722603529e-05, -0.005538697216, 0.020049425, 0.02953145531, 0.02191449075, 0.01072905265, 0.002847618566, -0.0007352284606, -0.001434555548, -0.0009527135108, -0.0003755830924, -7.527628543e-05, -0.005131954949, 0.01208011032, 0.01976222398, 0.01521549237, 0.007631533036, 0.002115618207, -0.0004501755411, -0.0009849921389, -0.0006669670306, -0.0002657838791, -5.37051276e-05, -0.00366456281, 0.005320883875, 0.01014890592, 0.008145153272, 0.004154816411, 0.001155690938, -0.0002586144385, -0.0005556593922, -0.0003772485632, -0.0001509709092, -3.064814578e-05, -0.001905658033, 0.001382358254, 0.003556522054, 0.003017691146, 0.001553866839, 0.0004099145725, -0.0001312953913, -0.0002373738632, -0.0001582317126, -6.308219491e-05, -1.281281426e-05, -0.0005740884705, 5.085228375e-05, 0.0005937227091, 0.0005569083497, 0.000283549269, 5.792865694e-05, -4.635953605e-05, -6.09764833e-05, -3.856985374e-05, -1.510123318e-05, -3.04574148e-06 +-0.00147086434, 0.0008569012791, 0.002060332842, 0.001692094775, 0.0007428874966, -0.0001038014235, -0.0005842086291, -0.0006843408984, -0.0005203211981, -0.0002655008814, -7.266706044e-05, -0.003585650957, 0.002272547739, 0.006234046275, 0.006139790065, 0.004041864154, 0.001723559563, 5.996991719e-05, -0.000720048938, -0.0007725321398, -0.000455112021, -0.0001350018398, -0.005848015471, 0.002723894829, 0.009450906496, 0.01001009687, 0.007121891833, 0.003557233786, 0.0008140009535, -0.0006255194658, -0.0009236356441, -0.0005913670516, -0.0001821799888, -0.007280005029, 0.001994875736, 0.01027540022, 0.01157250604, 0.008591126225, 0.004551465579, 0.001311413221, -0.0004691152813, -0.0009243897136, -0.0006225907077, -0.00019567587, -0.007291454891, 0.000636318494, 0.008682286462, 0.01043637554, 0.008003714521, 0.004375555198, 0.00137121777, -0.000321243067, -0.0007895440035, -0.0005469069824, -0.0001735926303, -0.005944679792, -0.000565196245, 0.005715405663, 0.007447774782, 0.005889826907, 0.003283830075, 0.001061312965, -0.0002098051589, -0.0005711633772, -0.0003997241137, -0.0001272511223, -0.003856068758, -0.001081758415, 0.002753990667, 0.004043524433, 0.003311126705, 0.001869870812, 0.0006007214269, -0.0001319160645, -0.000338168133, -0.0002350776358, -7.460960066e-05, -0.001840764705, -0.0008833931084, 0.0007918152098, 0.001472358976, 0.001266275238, 0.0007185235279, 0.0002159339886, -7.486533393e-05, -0.0001513280992, -0.0001021660295, -3.207233783e-05, -0.0005072473064, -0.000358783868, 4.069760526e-05, 0.0002401938578, 0.0002287645592, 0.0001270766532, 2.71843813e-05, -2.95593236e-05, -4.072259764e-05, -2.57058201e-05, -7.862754295e-06, -0.001611019907, 0.003016895429, 0.005994474907, 0.005279740383, 0.002546727152, -0.0001207557459, -0.001570597789, -0.00173380604, -0.001173185886, -0.0005199263306, -0.00012268252, -0.003823416416, 0.007726930331, 0.01721144328, 0.01794935148, 0.01254966353, 0.005706498772, 0.0007106848372, -0.001463498736, -0.001546413201, -0.0008204155994, -0.0002147108827, -0.006491615185, 0.009622696611, 0.0244845489, 0.02708148448, 0.02024664866, 0.01050706414, 0.002825425666, -0.001001554848, -0.001708140586, -0.00101078566, -0.0002788288714, -0.008338776953, 0.008222342407, 0.02510860474, 0.02912187691, 0.02256794354, 0.01232187871, 0.003880482681, -0.0005667455178, -0.001610576192, -0.001020398844, -0.0002902899218, -0.008503312874, 0.004962973926, 0.02017648126, 0.02458332121, 0.01957557833, 0.0109904779, 0.003682967942, -0.0002897877697, -0.00131210157, -0.0008647457795, -0.0002505638103, -0.006992368316, 0.001720366516, 0.01277783954, 0.01652851869, 0.01350058328, 0.007717039494, 0.002648426567, -0.000163336676, -0.0009134172984, -0.0006122100146, -0.0001791510235, -0.004549768633, -0.0002578161078, 0.006050313859, 0.008525079524, 0.007165985749, 0.004146967026, 0.001418791414, -0.0001150938844, -0.0005236493106, -0.0003497388219, -0.0001026369067, -0.002173608617, -0.000759778415, 0.001817121403, 0.002993493273, 0.002618495876, 0.001525180973, 0.0004988465865, -8.171123001e-05, -0.0002278731381, -0.0001479571674, -4.317340055e-05, -0.0005994053171, -0.0003923741383, 0.0001810185226, 0.0004944761588, 0.0004675760234, 0.000269626106, 7.228233659e-05, -3.793936452e-05, -5.973529398e-05, -3.62754351e-05, -1.036764722e-05 +-0.0006393067299, 7.481584813e-06, 0.0009875977554, 0.001494841977, 0.001354151926, 0.000741866861, -3.027406485e-05, -0.0006315631565, -0.000829614686, -0.0006171635237, -0.0002356259907, -0.001609788021, 4.886020086e-05, 0.002969154972, 0.004941019791, 0.005209590155, 0.004003074319, 0.002028620818, 0.0001525850414, -0.0009154056356, -0.0009672305076, -0.000424761033, -0.002675806385, -0.0003685815903, 0.004276751791, 0.007723238359, 0.008555332336, 0.006963960931, 0.003994248455, 0.001003940457, -0.0008597350699, -0.001196687541, -0.0005643550621, -0.003387460004, -0.00108934499, 0.004308948555, 0.008593951667, 0.009897138324, 0.008299476974, 0.004976798431, 0.001519572672, -0.0007144487951, -0.001223592047, -0.0006002166105, -0.003450057038, -0.001716647364, 0.003246237278, 0.007431159167, 0.008910454846, 0.007642097466, 0.004686950273, 0.001532921536, -0.0005431484888, -0.001057081991, -0.0005289176019, -0.002860896678, -0.001908725885, 0.001747448208, 0.005027518588, 0.006337466112, 0.005556156664, 0.003453386765, 0.001151904843, -0.0003793697721, -0.0007670407162, -0.0003859835281, -0.001887125507, -0.001580989427, 0.000506781555, 0.002518588415, 0.003420154389, 0.003080123538, 0.001930375092, 0.0006325839676, -0.0002367464817, -0.0004518027586, -0.0002257532959, -0.0009150755705, -0.0009332001427, -0.0001004196528, 0.0007816827659, 0.001229178315, 0.0011545517, 0.0007254871337, 0.0002181257532, -0.0001226908759, -0.0001988973523, -9.706032622e-05, -0.000255461672, -0.0003135658633, -0.0001431999612, 6.716724501e-05, 0.0001917022341, 0.0001995412115, 0.0001232596829, 2.404718045e-05, -4.199294182e-05, -5.163486053e-05, -2.390444137e-05, -0.001067499298, 0.0005103617021, 0.003284541114, 0.004920700152, 0.004433293306, 0.002382080464, 8.173925721e-05, -0.001360925369, -0.001603643199, -0.001036789222, -0.0003439070679, -0.002553173147, 0.001401144853, 0.009214618436, 0.01507870004, 0.0157387252, 0.01167015011, 0.00570726906, 0.0008278326283, -0.001466244468, -0.001485992794, -0.0005871438242, -0.004194170793, 0.0009490978411, 0.0124204306, 0.02179747627, 0.02387046855, 0.01876492932, 0.01028749111, 0.002820947043, -0.001147361995, -0.001740835075, -0.0007554812959, -0.005240576638, -0.0004769711505, 0.01183929336, 0.02256794354, 0.02567061816, 0.0208421979, 0.01195587748, 0.003776538252, -0.0008057811281, -0.001712784229, -0.000784376955, -0.0052415802, -0.001906002354, 0.008591962219, 0.01828733207, 0.02162443828, 0.01800429435, 0.01059618672, 0.003535323275, -0.0005441313481, -0.001437397379, -0.0006775490173, -0.004252535379, -0.002562765357, 0.004629296399, 0.01168984119, 0.01448171996, 0.01235172919, 0.007394855162, 0.002512460868, -0.0003676732079, -0.001019625912, -0.0004859488847, -0.002738683115, -0.002257716011, 0.00156867593, 0.005605148368, 0.007418647614, 0.006506254544, 0.003943763105, 0.001326709826, -0.0002403833692, -0.0005897057774, -0.0002798470047, -0.001295612374, -0.001354586692, 6.681540724e-05, 0.001720204487, 0.002569551877, 0.00234567986, 0.001432686548, 0.0004548278698, -0.0001359395328, -0.0002557901375, -0.0001186460075, -0.000352943558, -0.0004531133599, -0.0001841582902, 0.0001846819808, 0.0004077979564, 0.0004052195402, 0.0002459359242, 6.064027229e-05, -5.05494662e-05, -6.560011813e-05, -2.885317243e-05 +-0.0002525761195, -0.0001962457063, 0.0002709497619, 0.0009091814925, 0.001387058769, 0.001421813737, 0.0008945736696, -2.745199323e-05, -0.0008788263505, -0.001133932973, -0.0006496493595, -0.0006430115067, -0.0004927406397, 0.0008760511511, 0.002931034371, 0.004766305172, 0.005503526376, 0.004639058756, 0.002405187769, -0.000120663826, -0.00152275495, -0.001134174384, -0.001074077824, -0.0009939128758, 0.001064226789, 0.004362156076, 0.007469359472, 0.008941484465, 0.007906944741, 0.004633585907, 0.0007053126929, -0.001711521987, -0.001482882963, -0.001365960625, -0.001499692034, 0.0007279846355, 0.004552383252, 0.0082980712, 0.01022623795, 0.009265498641, 0.005669537358, 0.001209222008, -0.001650733873, -0.001562087507, -0.00139830478, -0.001765108733, 0.0001102327288, 0.003605431843, 0.007158549393, 0.009105968695, 0.008406200652, 0.00525351668, 0.001242162567, -0.001384213738, -0.001368342109, -0.001166045929, -0.001655698251, -0.0004271628197, 0.002126303688, 0.00483283707, 0.006407296973, 0.00602955507, 0.003812646645, 0.000918642342, -0.0009982560227, -0.0009951454255, -0.0007736904134, -0.001220623976, -0.0006346086365, 0.0008065129559, 0.002417743227, 0.003419396323, 0.003299750214, 0.002099803686, 0.000481295274, -0.0005975492699, -0.0005814053615, -0.0003773080069, -0.0006586462361, -0.0004956668408, 6.815624945e-05, 0.0007504201479, 0.001212052524, 0.001220534447, 0.0007766387625, 0.0001460692704, -0.0002745426261, -0.0002504666226, -0.000105842183, -0.0002051384725, -0.0002004479688, -9.003139728e-05, 6.48801319e-05, 0.0001837929698, 0.000207299343, 0.0001289421013, 4.5547413e-06, -7.7183838e-05, -6.212982237e-05, -0.0005430774387, -0.0003489332737, 0.001099339518, 0.003073750287, 0.004317069242, 0.004004399559, 0.002276588177, 9.148386445e-05, -0.001416513291, -0.001634554062, -0.0008308184309, -0.001290278363, -0.0007601995009, 0.003205986241, 0.009110679526, 0.01373516132, 0.01448707405, 0.01102907851, 0.005325462321, 0.0003023775748, -0.00194732008, -0.00137921517, -0.002073746749, -0.001705111924, 0.00380185068, 0.01259518991, 0.02003286567, 0.02205315856, 0.01772731222, 0.009597848459, 0.001909082365, -0.002019992075, -0.00175541686, -0.002543043986, -0.002699838975, 0.00281776538, 0.01232187871, 0.0208421979, 0.02375301421, 0.0196941383, 0.01115768214, 0.002713832603, -0.001851193412, -0.001816448379, -0.002507148867, -0.003195395188, 0.001121580549, 0.009254066851, 0.01694792142, 0.02001978735, 0.01701524588, 0.009889102432, 0.002575381582, -0.001509577408, -0.001570328424, -0.002011486153, -0.002949018721, -0.0003110365853, 0.005274382812, 0.01086423217, 0.01340103677, 0.0116699657, 0.006897037191, 0.001819792585, -0.001077785501, -0.001130353263, -0.001283633322, -0.002114975579, -0.0009371612363, 0.002039179544, 0.005221354659, 0.006850760251, 0.006138835861, 0.00367047853, 0.0009365124578, -0.0006470056915, -0.0006549440843, -0.0006022130741, -0.001103498674, -0.0007956195505, 0.0003104067162, 0.001604337245, 0.002358582289, 0.00220415871, 0.001325553996, 0.000298232668, -0.0003010782433, -0.000280300802, -0.0001625974711, -0.0003310832655, -0.0003222035532, -0.0001136598537, 0.0001710146453, 0.0003663775501, 0.000375594477, 0.000223129116, 2.677081114e-05, -8.632997622e-05, -6.919995869e-05 +-9.202094466e-05, -0.0001653782962, -5.539781916e-05, 0.0003360017815, 0.0009655193931, 0.001590407133, 0.001791634032, 0.001184644696, -0.0001944480036, -0.00155386597, -0.001538904926, -0.0002350770663, -0.0004198876406, -7.206374545e-05, 0.001147951918, 0.003193478799, 0.005443375014, 0.006728549851, 0.005845772812, 0.002567865214, -0.00137925936, -0.002579814216, -0.0003921822057, -0.0007568901769, -0.0003110833205, 0.001534220921, 0.004758499251, 0.008429484972, 0.01074111868, 0.009780253015, 0.005048548707, -0.001013974721, -0.003304842625, -0.0004980241505, -0.001039112009, -0.0006845051893, 0.001309390098, 0.004971840685, 0.009260555299, 0.01211037683, 0.01129889235, 0.006160960042, -0.0006595714442, -0.003440684749, -0.0005092401717, -0.001138574156, -0.0009903830532, 0.0006822142475, 0.003959079024, 0.007912441854, 0.01065588933, 0.01013177476, 0.005663967923, -0.0004300846597, -0.002993294367, -0.0004242784571, -0.001009362597, -0.001060668019, 3.053117664e-05, 0.002371544385, 0.005300929381, 0.007424714974, 0.007197888516, 0.004069009536, -0.0003121204525, -0.002169461049, -0.0002812601813, -0.0007094430533, -0.0008613863319, -0.00034351467, 0.0009442148109, 0.002639331826, 0.003933897929, 0.003911439027, 0.002214201765, -0.0002384053546, -0.001267204368, -0.0001369846687, -0.0003665054671, -0.0005029843662, -0.0003604671348, 0.0001260073483, 0.0008210462401, 0.00139112855, 0.001443289215, 0.0008060581596, -0.0001588231276, -0.0005481260626, -3.834314055e-05, -0.0001093762518, -0.0001682413589, -0.0001650243957, -7.592363018e-05, 7.514130152e-05, 0.0002143549977, 0.0002483744529, 0.0001296786752, -6.714700181e-05, -0.0001375091905, -0.0002338161298, -0.0004188666779, -2.041138717e-05, 0.001188477142, 0.002807310544, 0.003965013182, 0.003846844086, 0.002257454747, -0.0001188299293, -0.001914403971, -0.001762123235, -0.0005509510681, -0.0009640991345, 0.0001809561469, 0.003653650965, 0.00862104522, 0.01283895536, 0.01388776667, 0.01070899674, 0.004546765674, -0.001250947238, -0.002816390286, -0.0008697266866, -0.001676520336, -0.0002851446083, 0.004631908889, 0.01207868231, 0.01884184167, 0.02120170608, 0.01723988708, 0.00841705263, -0.0004784103708, -0.003525104034, -0.0010494828, -0.002221308878, -0.001129158559, 0.003880482681, 0.01195587748, 0.0196941383, 0.02291381914, 0.01921724559, 0.009885865368, 4.428671189e-05, -0.003622955917, -0.001020854232, -0.002337151151, -0.001812737111, 0.002178157416, 0.009100162587, 0.01608134385, 0.01938239359, 0.01666922615, 0.008810091279, 0.0002029260146, -0.003128575489, -0.0008097141491, -0.001982682711, -0.001966329262, 0.0005291922153, 0.005285257959, 0.01035082491, 0.01302376549, 0.01148297088, 0.006162047241, 0.0001163748415, -0.002258305326, -0.0005114433438, -0.001331045965, -0.001567704582, -0.0004123782396, 0.002118576326, 0.004995568482, 0.006684745213, 0.006070017449, 0.003279849357, -2.386469558e-05, -0.00131677079, -0.0002375707181, -0.0006561971266, -0.0008865197841, -0.0005582318283, 0.0003777148665, 0.001542168913, 0.00231169276, 0.00219218428, 0.001178449013, -8.901565443e-05, -0.0005697413358, -6.34729529e-05, -0.0001867268868, -0.0002849953253, -0.0002619253955, -8.804233053e-05, 0.0001656419576, 0.000361308366, 0.0003769974344, 0.0001936760331, -5.78901392e-05, -0.0001433157795 +-3.023563365e-05, -9.389050061e-05, -0.0001355813168, -3.421300921e-05, 0.000363460457, 0.001128041162, 0.002053888963, 0.002499919146, 0.001516971097, -0.001183756858, -0.002953998767, -7.710860587e-05, -0.0002376565133, -0.000318577833, 3.99276224e-05, 0.001302274629, 0.00372535344, 0.00682914596, 0.008932209965, 0.007401633633, 0.0009948730236, -0.004589255546, -0.0001279410602, -0.0004093201465, -0.0005982154338, -0.0001271189113, 0.001750669658, 0.0054830894, 0.01040785358, 0.0140161584, 0.01226454133, 0.003027733406, -0.00564562367, -0.0001615890086, -0.0005380999199, -0.000861018054, -0.0004723820971, 0.001512471073, 0.005659725557, 0.01129091432, 0.01561996563, 0.01404594021, 0.004006839175, -0.005741324466, -0.0001644014529, -0.000568193458, -0.0009814176597, -0.0007958584462, 0.0008273730071, 0.004458742171, 0.009550805734, 0.01362723838, 0.01249820848, 0.003733373561, -0.004929190689, -0.0001363176364, -0.0004877442776, -0.0008989841888, -0.0009153050329, 0.0001107153966, 0.002648038148, 0.006351956494, 0.009441993322, 0.008821532672, 0.00262889349, -0.003552148109, -8.992344293e-05, -0.0003328227199, -0.0006502384727, -0.0007752380685, -0.0003112868585, 0.001050296095, 0.003153312687, 0.004995855893, 0.004772159129, 0.001353685583, -0.002077631749, -4.355613384e-05, -0.0001670144142, -0.0003451930759, -0.0004661706666, -0.0003529917514, 0.0001449922953, 0.0009893090911, 0.001780784138, 0.001760633446, 0.0004300862009, -0.0009083687745, -1.211093315e-05, -4.833840775e-05, -0.0001059827199, -0.0001596892831, -0.0001649737273, -7.907982108e-05, 9.957304484e-05, 0.0002870177636, 0.0003076765371, 3.692963381e-05, -0.0002339035181, -8.442282105e-05, -0.0002572319026, -0.0003222970208, 4.440211269e-05, 0.001052058863, 0.002534292183, 0.003850008558, 0.00404558516, 0.002296269866, -0.001135425597, -0.003110788084, -0.0001974718814, -0.0005956344297, -0.0006808501606, 0.0004362754906, 0.003413454385, 0.007951859365, 0.01242765976, 0.01420391953, 0.01074536484, 0.002104486481, -0.004595555737, -0.0003072032209, -0.0009693959675, -0.001261188284, 0.000165869851, 0.004412856577, 0.01121833062, 0.01830280882, 0.0217041627, 0.01736826609, 0.004917532295, -0.00551840657, -0.0003657149575, -0.001209627541, -0.001780625347, -0.0005667455178, 0.003776538252, 0.01115768214, 0.01921724559, 0.02356486353, 0.01946261988, 0.006102091207, -0.005550206336, -0.0003515878373, -0.001213039685, -0.001968872845, -0.001264634141, 0.002201560985, 0.008526114162, 0.01577130682, 0.02005635909, 0.0169780693, 0.005509757743, -0.004748550763, -0.0002759715214, -0.0009892020118, -0.001737681854, -0.00153822738, 0.0006283535032, 0.004967886465, 0.01020923222, 0.01357927382, 0.01176782533, 0.003816910957, -0.003426465385, -0.0001726086233, -0.0006415361393, -0.001206453794, -0.001305079555, -0.0003065294118, 0.001994920184, 0.004961194689, 0.007038230016, 0.006264770231, 0.001963348939, -0.002013502462, -7.938579017e-05, -0.0003061340778, -0.0006134606308, -0.0007699734886, -0.0004911943637, 0.0003531326853, 0.001547194092, 0.002470306, 0.002283991749, 0.0006461368662, -0.0008871857284, -2.098032048e-05, -8.426408307e-05, -0.0001800653597, -0.0002560299926, -0.0002395441898, -8.60122961e-05, 0.0001714945156, 0.000399668565, 0.000399959283, 7.534650007e-05, -0.0002310423949 +-8.501739605e-06, -4.0525185e-05, -0.0001033187892, -0.000164266112, -0.0001051280201, 0.0002988006604, 0.001284383022, 0.002731127129, 0.00337355074, 0.0007337066284, -0.003570808047, -2.152967498e-05, -0.0001015726196, -0.0002504019419, -0.0003614638394, -8.810153125e-05, 0.001211192105, 0.004227124212, 0.008755207352, 0.01171233043, 0.006716564564, -0.00415739277, -3.538041599e-05, -0.0001696395362, -0.000428204924, -0.0006567810989, -0.0003275593157, 0.00155515445, 0.00610016643, 0.01311763153, 0.01813138955, 0.01162327318, -0.004194558806, -4.428025392e-05, -0.0002164230983, -0.0005628413857, -0.0009269544829, -0.0007206314884, 0.001198393163, 0.006147113862, 0.01403476422, 0.01997717867, 0.01337671022, -0.003747636493, -4.467572402e-05, -0.0002224714333, -0.0005951228827, -0.001041645726, -0.001040979, 0.0004555572439, 0.004700715446, 0.01172456337, 0.01724623286, 0.01180665696, -0.002999253303, -3.675162005e-05, -0.0001863590564, -0.0005117897304, -0.0009432171209, -0.001108853042, -0.0002266596806, 0.002674090139, 0.007706339098, 0.01183057635, 0.008197402469, -0.002125314985, -2.40522304e-05, -0.0001242342265, -0.0003500428712, -0.00067555331, -0.000894222639, -0.0005451347967, 0.000970237514, 0.003781969448, 0.006200711215, 0.004319820878, -0.001287727899, -1.155172918e-05, -6.08834596e-05, -0.0001762361314, -0.000355594511, -0.0005185090996, -0.0004686203127, 6.456030108e-05, 0.001172858287, 0.002191968535, 0.001521322028, -0.0006190914445, -3.180748216e-06, -1.717255047e-05, -5.126781735e-05, -0.0001083889769, -0.0001724106431, -0.0001969536024, -0.0001122939581, 0.0001166675768, 0.0003522083319, 0.0002353521728, -0.000188427371, -2.432120713e-05, -0.0001087627468, -0.0002435551253, -0.0003107556726, -7.363551561e-05, 0.0007391573777, 0.002234791215, 0.003993883218, 0.004477907971, 0.001275922175, -0.003506744019, -5.653751329e-05, -0.0002516870925, -0.0005484881545, -0.0006229513196, 0.0001780019036, 0.002628182927, 0.007096837291, 0.01259238429, 0.01525079206, 0.008735493591, -0.003677554406, -8.691580672e-05, -0.0003965553137, -0.0009002815605, -0.001139820572, -0.0001331274805, 0.003347296768, 0.009998054169, 0.01851624077, 0.02325603532, 0.01466099707, -0.003406631495, -0.000102318401, -0.0004794593754, -0.00113885989, -0.001610576192, -0.0008057811281, 0.002713832603, 0.009885865368, 0.01946261988, 0.02527769616, 0.01659942763, -0.00287704242, -9.739433632e-05, -0.0004679148333, -0.001157568604, -0.001788152519, -0.001397081572, 0.001360526985, 0.007468367148, 0.01599950046, 0.02155469598, 0.0144858707, -0.002255653588, -7.575887285e-05, -0.0003725822885, -0.0009559685993, -0.001586016724, -0.001575039151, 9.641244218e-05, 0.004254204663, 0.01037323329, 0.01462495412, 0.009976636941, -0.001620489924, -4.697129561e-05, -0.000236354697, -0.000627545473, -0.001106929844, -0.00128927336, -0.0005638600997, 0.001614950924, 0.005045000527, 0.007598063065, 0.005235573739, -0.001022275826, -2.140668481e-05, -0.000110326661, -0.0003031555812, -0.0005659595144, -0.0007449047313, -0.0005746513494, 0.0002075907563, 0.001571115937, 0.002675134592, 0.001851560338, -0.0005209617988, -5.599167622e-06, -2.965121879e-05, -8.45645827e-05, -0.0001671222599, -0.0002442561114, -0.0002514091274, -0.00011638955, 0.0001718319032, 0.0004359270167, 0.0002973247489, -0.0001693296869 +-1.829235189e-06, -1.25056313e-05, -4.742581834e-05, -0.0001267722662, -0.0002511291342, -0.0003385644119, -0.0001244169794, 0.0008464752233, 0.00260075353, 0.003185980323, 0.000467934015, -4.578184202e-06, -3.09206081e-05, -0.0001148099592, -0.0002968331893, -0.0005534997008, -0.0006306497244, 0.0002140956921, 0.003245513982, 0.008773457375, 0.01210330506, 0.005956258999, -7.42444383e-06, -5.034675197e-05, -0.0001877498687, -0.0004896093487, -0.0009327928918, -0.001146249658, -9.879931837e-06, 0.004438982373, 0.01290569156, 0.01880083286, 0.01061153537, -9.178736916e-06, -6.266377837e-05, -0.0002356721392, -0.0006237844402, -0.001226970571, -0.001658179283, -0.0006726839724, 0.003988977581, 0.01336117496, 0.02055088604, 0.01247117514, -9.157431171e-06, -6.297224676e-05, -0.0002389817696, -0.0006420784286, -0.001301283197, -0.001901831516, -0.001340324475, 0.00246716923, 0.01067041234, 0.0175223506, 0.01125572881, -7.454162563e-06, -5.164794735e-05, -0.0001978153599, -0.0005391800865, -0.001122567478, -0.001747710742, -0.001623894052, 0.0008123780631, 0.006576616988, 0.01182928938, 0.008038039489, -4.828003696e-06, -3.373030495e-05, -0.0001304645271, -0.0003607966317, -0.0007704337556, -0.001265776553, -0.0014027251, -0.0002513221631, 0.002896231079, 0.00607019339, 0.004413079424, -2.293714042e-06, -1.618338061e-05, -6.3313558e-05, -0.0001778893827, -0.0003897406122, -0.0006727877273, -0.0008496562553, -0.0005178869824, 0.0006856355178, 0.002075560532, 0.0016718613, -6.238896832e-07, -4.458536734e-06, -1.769771701e-05, -5.067558635e-05, -0.0001142166013, -0.000207126028, -0.0002915359871, -0.0002695124375, -3.304323953e-05, 0.0003073417989, 0.0003131422654, -5.029445834e-06, -3.090955809e-05, -0.0001012945116, -0.0002274700181, -0.0003679196505, -0.0003708482899, 8.11768914e-05, 0.001399314118, 0.003412465729, 0.003914583539, 0.0007840389922, -1.163144471e-05, -7.136669878e-05, -0.0002315211748, -0.0005063623545, -0.0007646842034, -0.000578482649, 0.0009201105573, 0.004871689407, 0.01106991527, 0.01415794165, 0.006869597273, -1.770878379e-05, -0.0001102341841, -0.0003641018465, -0.0008171494282, -0.001294921409, -0.001171462814, 0.0008708861016, 0.006640331346, 0.01611364312, 0.02172894476, 0.01193717959, -2.065511025e-05, -0.0001306516118, -0.0004407068984, -0.001020398844, -0.001712784229, -0.001851193412, 4.428671189e-05, 0.006102091207, 0.01659942763, 0.02358439641, 0.01386935964, -1.949816169e-05, -0.0001252499552, -0.000431065606, -0.001027550785, -0.001813997851, -0.002229602429, -0.0009471223739, 0.004037361433, 0.01324665159, 0.02001174915, 0.01242482482, -1.505022915e-05, -9.812254751e-05, -0.0003441946398, -0.0008427002614, -0.001553901494, -0.002101577705, -0.001522370275, 0.001716250386, 0.008210822863, 0.01347053957, 0.008825277499, -9.260500089e-06, -6.127786708e-05, -0.0002190112703, -0.0005500511802, -0.00105492316, -0.001540398118, -0.001456860496, 0.0001243402707, 0.00369194307, 0.00691250625, 0.004827876789, -4.18605166e-06, -2.814042869e-05, -0.0001025616581, -0.0002643299846, -0.0005265263573, -0.0008220398684, -0.0009262612615, -0.0004293615151, 0.0009503860506, 0.002380228562, 0.001827634608, -1.084461652e-06, -7.423921364e-06, -2.766031944e-05, -7.332824289e-05, -0.0001519226806, -0.000252717824, -0.0003257260013, -0.0002688999792, 9.530351219e-06, 0.0003654678676, 0.0003448354364 +-2.259239598e-07, -2.119048781e-06, -1.116004472e-05, -4.307414423e-05, -0.0001348064527, -0.0003585429111, -0.000812323865, -0.001424704237, -0.001139870484, 0.002600798403, 0.007318451356, -5.572003726e-07, -5.161912529e-06, -2.677615996e-05, -0.0001015819715, -0.000311742948, -0.0008097825114, -0.001774432295, -0.002904526167, -0.001502630222, 0.008257678788, 0.01904023815, -8.897923516e-07, -8.222153339e-06, -4.251921616e-05, -0.0001608757553, -0.0004927702747, -0.001278506365, -0.00279990741, -0.004595394002, -0.002552525686, 0.01202019667, 0.02790836973, -1.084500739e-06, -1.00174178e-05, -5.177551735e-05, -0.0001959505416, -0.0006011600331, -0.001564739715, -0.003446992893, -0.005753835368, -0.003766346969, 0.01245563813, 0.03034536961, -1.067953324e-06, -9.868468482e-06, -5.102068756e-05, -0.0001933001028, -0.0005944347541, -0.001553475111, -0.003445824765, -0.005858393148, -0.004427614315, 0.01005664542, 0.02636155557, -8.586967004e-07, -7.942597571e-06, -4.109800282e-05, -0.0001559389389, -0.000480818905, -0.00126181786, -0.002818186021, -0.004876363391, -0.004144235915, 0.006361591007, 0.01851741767, -5.495001546e-07, -5.091460647e-06, -2.638528601e-05, -0.0001003208199, -0.0003102843346, -0.0008179347869, -0.001839735383, -0.003239075153, -0.003043390676, 0.002971526568, 0.01019789245, -2.578069369e-07, -2.395715394e-06, -1.24481041e-05, -4.747531177e-05, -0.0001474238699, -0.0003906853416, -0.000885779621, -0.001588912407, -0.001638728874, 0.0008442704072, 0.00400126206, -6.914781781e-08, -6.457129829e-07, -3.370316704e-06, -1.291605388e-05, -4.033383037e-05, -0.0001076296731, -0.0002464691298, -0.0004519994895, -0.0005121588139, 5.35189263e-05, 0.0008445577863, -5.671868711e-07, -4.641827742e-06, -2.09238406e-05, -6.874698538e-05, -0.0001841733753, -0.0004256431823, -0.0008575617865, -0.001364286427, -0.0008868695775, 0.003006184213, 0.007613156687, -1.306200935e-06, -1.069024469e-05, -4.802273104e-05, -0.0001565892507, -0.0004141938991, -0.0009384735722, -0.001828825231, -0.002687182344, -0.0008260873062, 0.009265939531, 0.01974591363, -1.973017454e-06, -1.629011001e-05, -7.383104074e-05, -0.000242912986, -0.0006482978829, -0.001481530476, -0.002910306423, -0.004331020544, -0.00164015125, 0.01340921017, 0.02888512252, -2.283796395e-06, -1.904280445e-05, -8.722603529e-05, -0.0002902899218, -0.000784376955, -0.001816448379, -0.003622955917, -0.005550206336, -0.00287704242, 0.01386935964, 0.03135306626, -2.140956044e-06, -1.802559359e-05, -8.343964467e-05, -0.0002808895294, -0.0007684826986, -0.001803716306, -0.003653781848, -0.005760712336, -0.003747156075, 0.01120333166, 0.02719359898, -1.641796379e-06, -1.395485301e-05, -6.526500028e-05, -0.0002221776616, -0.0006152385015, -0.00146282379, -0.003007177133, -0.004867497735, -0.003732813844, 0.007111207846, 0.01907356013, -1.003573896e-06, -8.61254342e-06, -4.06998848e-05, -0.0001401115258, -0.0003926625991, -0.000945542746, -0.001971765953, -0.003271612964, -0.002856186542, 0.003353821759, 0.01048996621, -4.503619972e-07, -3.904910042e-06, -1.865779181e-05, -6.499202587e-05, -0.0001844306201, -0.0004499872416, -0.0009523304237, -0.001620450395, -0.001583445989, 0.0009820286878, 0.004111196192, -1.156442597e-07, -1.01464759e-06, -4.909292124e-06, -1.732939454e-05, -4.986527468e-05, -0.0001234461796, -0.0002655954967, -0.0004647506209, -0.0005057571396, 7.98461091e-05, 0.0008672212592 +0.00195144772, -0.002930266126, -0.002770467713, -0.001420667663, -0.0005942304451, -0.0002246478008, -7.779571424e-05, -2.413844813e-05, -6.368183472e-06, -1.27948339e-06, -1.473662512e-07, 0.008681879963, -0.004468594359, -0.006202530969, -0.003509714631, -0.001533684497, -0.0005952893392, -0.0002104144685, -6.639894632e-05, -1.77505325e-05, -3.60140989e-06, -4.177949735e-07, 0.01743504774, -0.004035505083, -0.009270222046, -0.005751480861, -0.002615288203, -0.001037829075, -0.0003726728623, -0.0001190557673, -3.211543268e-05, -6.554223695e-06, -7.629203335e-07, 0.02430595294, -0.00174823552, -0.01071306752, -0.007303537258, -0.00345546511, -0.001400189741, -0.0005097490498, -0.0001644953552, -4.468166429e-05, -9.155196765e-06, -1.067410177e-06, 0.026188698, 0.001101174464, -0.01004603738, -0.007562309176, -0.00372618855, -0.00154131778, -0.000568255193, -0.0001849836204, -5.053469186e-05, -1.038513858e-05, -1.211710577e-06, 0.02241973831, 0.00300988426, -0.007682534336, -0.006426712789, -0.003302372365, -0.00139480134, -0.000520494883, -0.0001707901056, -4.689237045e-05, -9.660301323e-06, -1.127571883e-06, 0.01491684322, 0.003164156408, -0.004674409683, -0.00436511881, -0.002340974455, -0.001009907837, -0.0003813539632, -0.0001260728628, -3.477486472e-05, -7.179814221e-06, -8.382777403e-07, 0.007042377557, 0.001913742535, -0.002131132062, -0.002197979839, -0.001226866301, -0.0005401381275, -0.0002062404124, -6.863900304e-05, -1.900729544e-05, -3.931044519e-06, -4.589427957e-07, 0.001776193325, 0.0005065006318, -0.0006175323137, -0.0006593002536, -0.0003775580993, -0.0001687000961, -6.491315932e-05, -2.168562513e-05, -6.012751147e-06, -1.242711807e-06, -1.447776408e-07, 0.00890550157, -0.0003622090444, -0.003148010732, -0.002266150917, -0.001174351638, -0.0005202321902, -0.0002012333482, -6.632341092e-05, -1.763057261e-05, -3.392196866e-06, -3.583429711e-07, 0.0275469571, 0.00465910474, -0.005495596447, -0.004899798699, -0.002701145536, -0.001233963695, -0.0004883211317, -0.0001642740926, -4.453007123e-05, -8.731948689e-06, -9.397232152e-07, 0.0484567654, 0.0132600851, -0.006421983169, -0.007278409964, -0.004244008091, -0.001986495261, -0.0007987293794, -0.0002723373689, -7.475133415e-05, -1.483437106e-05, -1.615048282e-06, 0.06228052536, 0.02180214541, -0.005538697216, -0.008503312874, -0.0052415802, -0.002507148867, -0.001020854232, -0.0003515878373, -9.739433632e-05, -1.949816169e-05, -2.140956044e-06, 0.06321197624, 0.02624545058, -0.003456257051, -0.008171289304, -0.005331863554, -0.002603250429, -0.001071395109, -0.0003719536405, -0.0001037802335, -2.092060053e-05, -2.312728591e-06, 0.05160211559, 0.02454213087, -0.001247911706, -0.006475039483, -0.004484937122, -0.002235079516, -0.0009289118025, -0.0003246877698, -9.11395651e-05, -1.847954005e-05, -2.054659112e-06, 0.0330727943, 0.017653889, 0.0001519245692, -0.00411031902, -0.003030364556, -0.001541998438, -0.0006468881422, -0.000227489449, -6.41945175e-05, -1.30832235e-05, -1.462175742e-06, 0.01525198527, 0.008979597313, 0.0004555599517, -0.001941448908, -0.001518566499, -0.0007881340093, -0.0003334382526, -0.0001178631205, -3.340681182e-05, -6.838540543e-06, -7.677378718e-07, 0.003873221854, 0.00244750254, 0.0001545157816, -0.0005550113152, -0.0004478695328, -0.0002352195441, -9.994593396e-05, -3.540208555e-05, -1.005362853e-05, -2.062830019e-06, -2.322318104e-07 +-0.0007005842487, 0.0004121560599, -0.0002179575793, -0.0006745613786, -0.0006243443239, -0.0004055065995, -0.0002148136468, -9.581576154e-05, -3.496229842e-05, -9.450332141e-06, -1.434968856e-06, -0.0006442764605, 0.003039400319, 0.001182143469, -0.0007811220973, -0.001219118062, -0.000922588182, -0.0005279248986, -0.0002468996939, -9.299649422e-05, -2.57079602e-05, -3.970075921e-06, -6.346373536e-05, 0.00682642438, 0.003755792617, -0.0002760083402, -0.001632866732, -0.001435723503, -0.0008754121732, -0.0004242172991, -0.0001633115408, -4.577668358e-05, -7.134132224e-06, 0.000676963268, 0.01002963256, 0.006394041104, 0.0006199071322, -0.001726285231, -0.001769186037, -0.001139726487, -0.0005683013563, -0.0002223906746, -6.292868816e-05, -9.860265766e-06, 0.001111966156, 0.01109364962, 0.007803559212, 0.001425356717, -0.001513809234, -0.001810555354, -0.001223358758, -0.0006244709202, -0.0002475027459, -7.050850744e-05, -1.108412345e-05, 0.0009768336401, 0.009523861062, 0.007284854938, 0.001725647384, -0.001112375913, -0.001546059978, -0.001088363487, -0.000566510561, -0.0002268405037, -6.495037056e-05, -1.023152315e-05, 0.000369790546, 0.006095151371, 0.005097227999, 0.001396161098, -0.0006839932714, -0.001074691554, -0.0007813420566, -0.0004130390813, -0.000166712048, -4.791158842e-05, -7.556682197e-06, -0.0002571667888, 0.002457304013, 0.002343784301, 0.0006787730216, -0.0003595195792, -0.0005713292282, -0.0004205919769, -0.0002240174, -9.076286301e-05, -2.611714023e-05, -4.117972207e-06, -0.0003778135559, 0.0002771460666, 0.0004179538449, 8.395826337e-05, -0.0001563875577, -0.000194107801, -0.0001372456534, -7.204490393e-05, -2.894663715e-05, -8.276135184e-06, -1.297774525e-06, 0.003093545546, 0.003321920624, 0.0005664279295, -0.001128936239, -0.001401832721, -0.001037471256, -0.0005868420876, -0.0002643577199, -9.251339442e-05, -2.296118673e-05, -3.102176952e-06, 0.01039165188, 0.01302635533, 0.005624558385, -0.000205928775, -0.002188467634, -0.002038185415, -0.001275465297, -0.0006111972856, -0.0002236745542, -5.753453892e-05, -8.013214742e-06, 0.01905450392, 0.02545610745, 0.01321178322, 0.002190469484, -0.002344295235, -0.002842619515, -0.001934304641, -0.0009694542902, -0.0003656457447, -9.624355191e-05, -1.366169871e-05, 0.02524460364, 0.03519586824, 0.020049425, 0.004962973926, -0.001906002354, -0.003195395188, -0.002337151151, -0.001213039685, -0.0004679148333, -0.0001252499552, -1.802559359e-05, 0.02624545058, 0.03790090828, 0.02298402817, 0.00673771485, -0.001191379999, -0.003023834444, -0.002351541113, -0.001254606109, -0.0004923895124, -0.0001335115855, -1.941979897e-05, 0.02177070974, 0.03252614001, 0.02073270022, 0.006705674231, -0.0005350042249, -0.002413594144, -0.001975412002, -0.00107728792, -0.0004286344477, -0.0001174329817, -1.72298267e-05, 0.01394529651, 0.02164453885, 0.01442850398, 0.004980496324, -0.0001497489652, -0.001582414926, -0.001346271231, -0.0007465064054, -0.0003002272953, -8.294695469e-05, -1.225888025e-05, 0.006169918172, 0.01006870072, 0.007009106789, 0.002508626054, -5.569155148e-05, -0.0007998025981, -0.0006898342567, -0.0003855952864, -0.0001560705029, -4.336923768e-05, -6.445198921e-06, 0.001330024093, 0.002360591125, 0.001710955298, 0.0005900638293, -7.478331106e-05, -0.0002595316994, -0.0002132527756, -0.0001176212023, -4.739882493e-05, -1.316199996e-05, -1.958402333e-06 +-0.001069261012, 0.0008912799842, 0.0009769263865, 0.0002705864244, -0.000216531085, -0.0003672508283, -0.0003226465719, -0.0002116707151, -0.0001073571451, -3.901709519e-05, -7.817638998e-06, -0.003076339434, 0.003296054046, 0.004302604219, 0.002197881102, 0.0003620943734, -0.0004887007143, -0.0006465234253, -0.0004896878735, -0.0002677872265, -0.0001019878945, -2.110737595e-05, -0.005825427621, 0.006160055779, 0.00907394833, 0.005399667655, 0.001671167918, -0.0003080854723, -0.0008964190957, -0.0007779001053, -0.0004504997789, -0.0001769610877, -3.732492614e-05, -0.008482016095, 0.00800136725, 0.01333431321, 0.008672634233, 0.003238263449, 0.0001065369055, -0.0009908604966, -0.0009806760303, -0.0005944467461, -0.0002386931306, -5.096372007e-05, -0.01002906624, 0.007818345707, 0.01509148333, 0.01052377465, 0.004336025543, 0.0005369632916, -0.0009176084794, -0.00102806096, -0.0006461344162, -0.0002636035545, -5.673714169e-05, -0.009775077856, 0.005680858797, 0.01344696593, 0.01001396809, 0.004407258495, 0.0007613816366, -0.0007185935297, -0.0009000825128, -0.0005818493021, -0.0002401255633, -5.196182326e-05, -0.007737170767, 0.002665836531, 0.009116938837, 0.00730060266, 0.003379412635, 0.0006740345471, -0.0004718332073, -0.0006415937692, -0.0004226393694, -0.0001756994467, -3.813869351e-05, -0.004668317379, 0.0002544685885, 0.004134454055, 0.003654511173, 0.001756731779, 0.0003534425334, -0.0002568927098, -0.0003483667324, -0.0002295938677, -9.542633147e-05, -2.069945015e-05, -0.001721313644, -0.0005269183862, 0.0007899384334, 0.000863907179, 0.0004158039286, 4.98684533e-05, -0.0001061334306, -0.0001185921194, -7.467842993e-05, -3.041949006e-05, -6.524042262e-06, -0.0001958296292, 0.002727794289, 0.002531614562, 0.0008491052568, -0.0004712192144, -0.000970985665, -0.0008781390028, -0.0005564065403, -0.0002600462386, -8.425939004e-05, -1.476782209e-05, -0.0003380104777, 0.009482523789, 0.01053412834, 0.00597574867, 0.001496853754, -0.0009205388545, -0.001507337309, -0.001148120945, -0.0005914926592, -0.0002043406583, -3.756157334e-05, -0.000962508885, 0.01737961528, 0.02105215847, 0.01347844399, 0.005029712053, -7.937414806e-05, -0.001841223211, -0.001676259115, -0.0009295868995, -0.0003353191968, -6.352231796e-05, -0.002139761729, 0.02270058247, 0.02953145531, 0.02017648126, 0.008591962219, 0.001121580549, -0.001812737111, -0.001968872845, -0.001157568604, -0.000431065606, -8.343964467e-05, -0.003456257051, 0.02298402817, 0.03213612844, 0.02302158467, 0.01050403646, 0.002049165777, -0.001511610376, -0.001942241423, -0.001195430346, -0.0004559562463, -8.969455992e-05, -0.004271796541, 0.01825736455, 0.02776910518, 0.02075381343, 0.009905786014, 0.002279621867, -0.001079742293, -0.001612266238, -0.001027767784, -0.000399222918, -7.95265189e-05, -0.004119656927, 0.01083417777, 0.01850457944, 0.01446120144, 0.007137347802, 0.001778374136, -0.0006586171268, -0.001095620371, -0.0007152357948, -0.0002815041173, -5.662181314e-05, -0.002971839035, 0.004036444896, 0.008508552855, 0.007033848887, 0.003556029057, 0.0008922826101, -0.0003431194251, -0.0005682712303, -0.0003727689698, -0.0001475407881, -2.984736184e-05, -0.001293258913, 0.0004128883038, 0.001879301306, 0.001710420632, 0.0008646527968, 0.0001763296332, -0.0001395010958, -0.0001833101077, -0.0001157699952, -4.528269806e-05, -9.129077661e-06 +-0.0006074850218, 0.0003208826282, 0.000810251365, 0.0006424099121, 0.0002357668488, -0.0001154545618, -0.000300846497, -0.0003213822415, -0.0002340578674, -0.0001161750006, -3.117102916e-05, -0.001952862455, 0.001165202279, 0.003268349942, 0.003108937626, 0.001874099921, 0.0005894353338, -0.0002655246717, -0.0005968206007, -0.0005300567539, -0.0002893732362, -8.216766176e-05, -0.003971298277, 0.001988998884, 0.006660453693, 0.006851879346, 0.004608107671, 0.002002610392, 0.0001124902357, -0.0007700631286, -0.0008311816246, -0.0004863428565, -0.0001430413627, -0.00610575388, 0.002169952123, 0.009545294807, 0.01043508009, 0.007428351887, 0.003605017359, 0.0006846356276, -0.0007924563779, -0.001039100885, -0.0006409260752, -0.0001930399943, -0.007550417963, 0.001441113277, 0.01053214009, 0.01222580967, 0.009060591164, 0.004658434491, 0.001163678278, -0.0006858097083, -0.001084107481, -0.0006956567419, -0.0002129572172, -0.007638590283, 0.0001028913306, 0.009077407325, 0.01130127987, 0.008675896871, 0.004629619348, 0.001305326205, -0.0005080475974, -0.0009477159443, -0.0006256347911, -0.0001936297403, -0.006218952023, -0.001131886812, 0.00582369141, 0.007994483846, 0.00636901592, 0.003490409443, 0.001039859713, -0.0003268157899, -0.0006768755409, -0.0004539687304, -0.0001413486684, -0.003806391334, -0.001558039967, 0.002330172948, 0.003838322225, 0.00320861343, 0.001787582035, 0.0005244950681, -0.0001895175592, -0.0003696451403, -0.0002461880614, -7.64888919e-05, -0.001393880875, -0.0009600447947, 0.0002363892454, 0.0008261322903, 0.000758535009, 0.0004155684791, 8.974402607e-05, -9.185214048e-05, -0.0001267494175, -7.950131372e-05, -2.414894648e-05, -0.0006485557956, 0.001105106151, 0.002212627426, 0.001874141445, 0.0007800088711, -0.0002436372592, -0.0007610490686, -0.0007682246449, -0.0005029165801, -0.0002190971303, -5.117000085e-05, -0.002009181531, 0.003816330636, 0.008436037436, 0.008458213342, 0.005459727359, 0.001961060793, -0.0003974979909, -0.001235930609, -0.00103628967, -0.0005089230693, -0.0001280735486, -0.004148022127, 0.006578809291, 0.01617018196, 0.01729556453, 0.01226225573, 0.005663771906, 0.0007699199976, -0.001401136002, -0.001515468641, -0.000813229374, -0.0002147840943, -0.006505045193, 0.007786813173, 0.02191449075, 0.02458332121, 0.01828733207, 0.009254066851, 0.002178157416, -0.001264634141, -0.001788152519, -0.001027550785, -0.0002808895294, -0.008171289304, 0.00673771485, 0.02302158467, 0.02703039149, 0.02079420274, 0.01105070056, 0.003111407925, -0.0009591435538, -0.001776781382, -0.001075242171, -0.0003013822491, -0.008360166219, 0.003990837919, 0.01906766168, 0.02358581511, 0.01868014315, 0.01025119556, 0.003146091079, -0.000627311879, -0.001489617759, -0.0009359139495, -0.0002671971306, -0.006866337083, 0.0009656189759, 0.01195256806, 0.01586987437, 0.01295788423, 0.007281222115, 0.00232997245, -0.0003688489755, -0.001025660856, -0.0006591099684, -0.0001905417585, -0.00423863402, -0.0008829315441, 0.004898952529, 0.007360341425, 0.006250584467, 0.003570735914, 0.001136923001, -0.0002132225276, -0.0005413900949, -0.0003474110526, -0.0001008416705, -0.001566599236, -0.0009273840569, 0.0007462163852, 0.001626058167, 0.001483813421, 0.0008455987471, 0.0002299953374, -0.0001102222482, -0.0001785362733, -0.0001087826677, -3.11162639e-05 +-0.0002699082881, -9.913727954e-06, 0.0003890243685, 0.0005839463728, 0.0005044386508, 0.0002339031769, -8.818593131e-05, -0.0003225418594, -0.0003805136897, -0.0002708039036, -0.0001007782735, -0.0008990756307, -9.796562881e-07, 0.001572440455, 0.002572038857, 0.002603869995, 0.001844725347, 0.0007315096934, -0.0002440047602, -0.0007192575844, -0.0006325919265, -0.0002594244786, -0.001875022661, -0.0001978679248, 0.003105790967, 0.00543713535, 0.00581983009, 0.004487083182, 0.002279917412, 0.000205240574, -0.0009590561689, -0.001017297277, -0.0004447466841, -0.002946896152, -0.0007322078627, 0.004237020177, 0.008006167541, 0.008911364381, 0.007161446659, 0.003965293428, 0.0008351087252, -0.001034669112, -0.001297965886, -0.0005935329012, -0.003720631762, -0.001504002484, 0.004344041475, 0.009063615138, 0.01046535925, 0.008652314992, 0.005007065143, 0.001326221669, -0.0009511117382, -0.0013760163, -0.0006492603279, -0.003840088226, -0.00218223005, 0.003317276935, 0.008039227451, 0.009681556985, 0.008205598474, 0.004882708851, 0.00143127905, -0.0007546367833, -0.001217461902, -0.0005865626228, -0.003185355072, -0.002375777868, 0.001648369633, 0.005356671521, 0.006841796486, 0.005958539518, 0.003616301168, 0.001104392909, -0.0005146366163, -0.000875743305, -0.0004262950366, -0.00198069766, -0.001881660858, 0.0001912000817, 0.002290869743, 0.0032656201, 0.002955574571, 0.001815722816, 0.0005371634067, -0.0002970608495, -0.0004765668935, -0.0002303166992, -0.0007328158279, -0.0008804386393, -0.0003336799208, 0.0003175893955, 0.0006814553897, 0.0006735255948, 0.0004083164032, 8.343962211e-05, -0.0001275255704, -0.0001583092293, -7.298623688e-05, -0.0004335742949, 0.0001589486641, 0.001203834437, 0.001788699701, 0.001550682243, 0.000730521864, -0.0001508069713, -0.0006697478702, -0.0007105150873, -0.0004430626596, -0.0001443536242, -0.001369391879, 0.00062475504, 0.004517933691, 0.00727937887, 0.007340905755, 0.005085672645, 0.002043933286, -0.0002763366681, -0.001192717142, -0.0009656069548, -0.0003551926503, -0.002790701142, 0.0007324946447, 0.008336316247, 0.01425461234, 0.01516192237, 0.01139315343, 0.005651369667, 0.0008642647211, -0.001431226017, -0.001478320233, -0.000590341431, -0.004304967415, 8.095731538e-05, 0.01072905265, 0.01957557833, 0.02162443828, 0.01694792142, 0.009100162587, 0.002201560985, -0.001397081572, -0.001813997851, -0.0007684826986, -0.005331863554, -0.001191379999, 0.01050403646, 0.02079420274, 0.0237954674, 0.01921477268, 0.01077599391, 0.003056073962, -0.001174203627, -0.001862936406, -0.0008231168249, -0.005391815139, -0.002466636551, 0.007824303025, 0.0174239535, 0.02074373819, 0.01719649469, 0.009929201089, 0.003039070469, -0.0008676155021, -0.001605261968, -0.000730012828, -0.004379211401, -0.003029427957, 0.004030484265, 0.01108132744, 0.01391453239, 0.01186236681, 0.007001420726, 0.002216722504, -0.0005681657741, -0.001129113993, -0.0005218103598, -0.002666164185, -0.002513085088, 0.0009003034861, 0.004644644643, 0.006400565484, 0.005663531919, 0.003396594816, 0.001058110412, -0.0003292827053, -0.0006025072277, -0.0002776332328, -0.0009655524903, -0.001188368738, -0.000342158568, 0.0007525901701, 0.001373066053, 0.00130792216, 0.0007843129663, 0.0002004377942, -0.0001464245323, -0.0001961082216, -8.662852155e-05 +-0.0001079423067, -8.907223089e-05, 9.925930469e-05, 0.0003528030738, 0.0005305878069, 0.000519528372, 0.0002825720605, -9.861641236e-05, -0.0004290641082, -0.0005026422012, -0.0002774072288, -0.0003641641276, -0.0002906940063, 0.0004459437688, 0.001525852968, 0.002434314603, 0.002706044331, 0.002118491489, 0.000861909237, -0.0004449457049, -0.001059786331, -0.0006966291802, -0.0007654225332, -0.0006868614003, 0.0008019117636, 0.003112990047, 0.005182865494, 0.006002496849, 0.005044215808, 0.002617214474, -8.810929806e-05, -0.001576789262, -0.001175414594, -0.001211127212, -0.001247600383, 0.0008802614799, 0.004377143517, 0.007642751893, 0.009108900526, 0.00792015721, 0.004470337719, 0.0004670495382, -0.001894375947, -0.00155091773, -0.001539337507, -0.001806251449, 0.0005410614713, 0.004659696462, 0.008651167337, 0.01060178027, 0.009435903198, 0.005558019466, 0.000921798556, -0.001921464642, -0.001682466307, -0.001599533062, -0.002116558525, -9.192416729e-05, 0.003773727889, 0.007671287985, 0.009721722918, 0.008836609369, 0.005343836929, 0.001049656945, -0.00165153374, -0.001510872366, -0.001335599719, -0.001982980486, -0.0006841928459, 0.0021309308, 0.005113155589, 0.006808304045, 0.006341357151, 0.003904574297, 0.0008083551697, -0.001175161051, -0.001093981387, -0.000835292174, -0.001395401629, -0.0008795908155, 0.0005543903703, 0.00219046509, 0.003214487755, 0.003108601791, 0.001933210258, 0.0003645996071, -0.0006518088234, -0.0005908699427, -0.0003102533883, -0.0005901334082, -0.0005435872374, -0.0001781100939, 0.0003056190143, 0.0006563696111, 0.0006987937773, 0.0004272358217, 2.512427148e-05, -0.0002331529449, -0.0001883874089, -0.0002202789938, -0.0001589266524, 0.000381747654, 0.001114084268, 0.001553731587, 0.001393398151, 0.0007032183588, -0.000135287903, -0.0006829471615, -0.0007139036835, -0.0003510142523, -0.00069453193, -0.0004556550386, 0.001518237951, 0.004411072743, 0.00657308325, 0.006738933265, 0.004827899683, 0.001914733262, -0.0004949443969, -0.001389315826, -0.0008473049699, -0.001396953121, -0.001111435356, 0.002590135808, 0.008347560639, 0.01302421116, 0.01399716073, 0.0108073202, 0.005291476023, 0.0003263861538, -0.001945859516, -0.001393461118, -0.002126279607, -0.002076520246, 0.002847618566, 0.0109904779, 0.01800429435, 0.02001978735, 0.01608134385, 0.008526114162, 0.001360526985, -0.002229602429, -0.001803716306, -0.002603250429, -0.003023834444, 0.002049165777, 0.01105070056, 0.01921477268, 0.02206533714, 0.01824090344, 0.0101027019, 0.002062939458, -0.002183160894, -0.001927426496, -0.002607003558, -0.003505264232, 0.0005952465204, 0.008554820282, 0.01616234508, 0.01924866586, 0.016328606, 0.009310671513, 0.002111261498, -0.001831361082, -0.001709652434, -0.002098878834, -0.003215010153, -0.0007400518199, 0.004743639884, 0.01031370817, 0.01290339554, 0.01125706187, 0.006559020535, 0.001539836288, -0.001284849679, -0.00122522738, -0.001266129377, -0.002199130373, -0.001265697741, 0.001395176141, 0.004334196961, 0.005912852013, 0.005359090105, 0.003168819187, 0.0007035785228, -0.0007099881617, -0.0006560142149, -0.0004533578146, -0.0008975889839, -0.000807844927, -0.0001475551759, 0.0007001057598, 0.001247617184, 0.001223824248, 0.0007200418717, 9.952488297e-05, -0.0002550292102, -0.0002074783539 +-3.963058756e-05, -7.304282309e-05, -3.182126409e-05, 0.0001221333702, 0.0003659782209, 0.0005970682428, 0.0006487662092, 0.0003779736055, -0.0001844011617, -0.0007091170442, -0.0006568661689, -0.0001343231476, -0.0002441968056, -6.53344364e-05, 0.0005747115186, 0.001625550092, 0.002731195401, 0.003271774969, 0.002654252444, 0.0008379171059, -0.001187281677, -0.001599456039, -0.0002825198277, -0.0005385722424, -0.0002074522349, 0.001103887327, 0.003327484462, 0.005756397078, 0.007125856953, 0.006184071981, 0.00273159596, -0.001398154863, -0.002644844836, -0.0004469025728, -0.0009048804232, -0.0005117618067, 0.001370410589, 0.004684758871, 0.00840540849, 0.01066042678, 0.009562390685, 0.004716438571, -0.001326839181, -0.003439688415, -0.0005677111794, -0.001222084085, -0.0009168186675, 0.0011620261, 0.005002547269, 0.009431279783, 0.01226080558, 0.01125263678, 0.005857014062, -0.00108327692, -0.003692292718, -0.0005895140112, -0.001347854699, -0.001250192715, 0.0005436436914, 0.004085500604, 0.008301727821, 0.01113167165, 0.01043098448, 0.005600382137, -0.000792357709, -0.003290903362, -0.0004917282032, -0.001195273402, -0.001317136362, -0.0001659004066, 0.002361277249, 0.005504374286, 0.007735601879, 0.007426718583, 0.004059356238, -0.0005432933642, -0.002372462011, -0.0003069471853, -0.0007974553455, -0.001024841313, -0.0005675983751, 0.0006835290869, 0.002356999569, 0.003639141623, 0.003627475507, 0.001986667735, -0.0003613138239, -0.001282045587, -0.000113633322, -0.0003192705783, -0.0004765421854, -0.0004359024292, -0.0001349672375, 0.0003395193624, 0.0007535546792, 0.0008261909457, 0.0004286462734, -0.0001934076448, -0.0004128364505, -9.456628825e-05, -0.0001749713198, -3.469063248e-05, 0.0004123151172, 0.001009929116, 0.001423391934, 0.001344385892, 0.0007076112278, -0.0002113292037, -0.0008741720695, -0.0007492641008, -0.0002966041243, -0.0005338721575, 1.354639745e-05, 0.001721747357, 0.004144596692, 0.006134457475, 0.006487737583, 0.004724818195, 0.001549956639, -0.001273381913, -0.00176165001, -0.0005891953463, -0.001123005198, -0.000175763309, 0.003093425425, 0.007958029698, 0.01224469648, 0.01350906608, 0.01057337327, 0.004544877546, -0.001261627624, -0.002850995675, -0.0008854292604, -0.001812614409, -0.0007352284606, 0.003682967942, 0.01059618672, 0.01701524588, 0.01938239359, 0.01577130682, 0.007468367148, -0.0009471223739, -0.003653781848, -0.001071395109, -0.002351541113, -0.001511610376, 0.003111407925, 0.01077599391, 0.01824090344, 0.02143607735, 0.01794959843, 0.008941487511, -0.000567593118, -0.003882351671, -0.001061461237, -0.002488103367, -0.002133324021, 0.001672270154, 0.008460048836, 0.01540820505, 0.01876742647, 0.01613048971, 0.008293052863, -0.0003009503253, -0.003435740608, -0.0008457964437, -0.002114232191, -0.002236253714, 0.000121726162, 0.004797321119, 0.009873705548, 0.0126284741, 0.01116884946, 0.005861648487, -0.0002019936546, -0.002465018772, -0.0005047431013, -0.001349599656, -0.001697661538, -0.0007600439386, 0.001500721835, 0.004166956147, 0.005810134922, 0.005343952153, 0.002826847095, -0.0002039489193, -0.001328453524, -0.0001785225403, -0.0005151458631, -0.0007590160249, -0.0006382195392, -8.467021022e-05, 0.0006763436327, 0.001232400875, 0.0012300181, 0.0006297305474, -0.0001595763996, -0.0004273665778 +-1.306918956e-05, -4.101571149e-05, -6.122966368e-05, -2.502287613e-05, 0.000127046451, 0.0004188859751, 0.0007641573326, 0.0009074585309, 0.0004796619874, -0.0006092999345, -0.001263541937, -4.428346902e-05, -0.0001375155735, -0.0001910823273, -1.373152539e-05, 0.0006316182562, 0.001859718564, 0.003392173197, 0.004332501487, 0.003323757749, -0.0001710278609, -0.002908473102, -9.281472679e-05, -0.0002946098611, -0.0004257017545, -8.701605186e-05, 0.001222872243, 0.003767680646, 0.007028750261, 0.009240188935, 0.007662935111, 0.001052622694, -0.004626194787, -0.0001461932172, -0.0004781698795, -0.0007370658971, -0.0003233797467, 0.001528435888, 0.00524811798, 0.01012949713, 0.01363284372, 0.01173961543, 0.002486402727, -0.005846078026, -0.0001848804621, -0.0006243201395, -0.001028660124, -0.0006887863437, 0.001319580417, 0.005548743334, 0.01124505541, 0.01551745195, 0.01369992009, 0.003396327319, -0.00614320513, -0.0001910745599, -0.0006666899728, -0.001170936347, -0.001028126583, 0.000666803793, 0.004492562753, 0.009815422309, 0.0139814605, 0.01260737162, 0.003343496285, -0.005392994402, -0.0001585410422, -0.0005726350805, -0.001070816237, -0.001146038051, -9.219287376e-05, 0.002580240444, 0.006474291361, 0.009676371944, 0.008925807726, 0.002391697861, -0.003855301631, -9.833413963e-05, -0.0003693866503, -0.0007377242108, -0.0009292121034, -0.0005378374967, 0.0007494400676, 0.002780142829, 0.004569006087, 0.004351738073, 0.001075058865, -0.002088808938, -3.610746084e-05, -0.0001423893204, -0.0003063640375, -0.0004471993382, -0.0004307256943, -0.0001363224023, 0.0004246559139, 0.0009826321118, 0.001005412989, 0.0001432481309, -0.0006891542202, -3.406754615e-05, -0.0001053633362, -0.0001392762939, -1.129892594e-05, 0.0003592016677, 0.0009083655379, 0.001389394407, 0.001434380923, 0.0007253465127, -0.0006209994569, -0.001332736213, -0.0001063123033, -0.0003248637473, -0.000395335148, 0.0001332488229, 0.001589891179, 0.003813462624, 0.005969481581, 0.006712793448, 0.004762957851, 0.0002320837409, -0.002965427304, -0.0002089829273, -0.0006560761363, -0.0008512093899, 0.0001019818611, 0.002917100746, 0.007384832336, 0.01194912939, 0.01394537972, 0.01068346282, 0.002074265491, -0.004619326042, -0.0003106296404, -0.001010305245, -0.001434555548, -0.0002897877697, 0.003535323275, 0.009889102432, 0.01666922615, 0.02005635909, 0.01599950046, 0.004037361433, -0.005760712336, -0.0003719536405, -0.001254606109, -0.001942241423, -0.0009591435538, 0.003056073962, 0.0101027019, 0.01794959843, 0.02227880693, 0.01829315526, 0.005138343411, -0.006006908593, -0.0003648234629, -0.001275819585, -0.002136064593, -0.001585176111, 0.001724207014, 0.007961442343, 0.01523736976, 0.01961814924, 0.01652221727, 0.004869749308, -0.005253871754, -0.0002877828819, -0.001044307098, -0.001881282125, -0.001806816169, 0.0002398131733, 0.004526317975, 0.009820042576, 0.01330044739, 0.01150567608, 0.003419511492, -0.003754452901, -0.0001698745913, -0.0006419236595, -0.001244236235, -0.001451261028, -0.0006463842701, 0.001412742407, 0.004175926379, 0.006188986409, 0.005545504687, 0.001560203393, -0.002040515161, -5.932435966e-05, -0.0002352300222, -0.0004933087053, -0.0006783698461, -0.0005828503033, -8.841767493e-05, 0.0006911715325, 0.00134858405, 0.001293927593, 0.0002635423799, -0.0006779962589 +-3.671174734e-06, -1.752350488e-05, -4.493247999e-05, -7.327466373e-05, -5.616805589e-05, 9.401118308e-05, 0.0004679998564, 0.001012188283, 0.001217110563, 0.0001165415251, -0.001553625368, -1.237636939e-05, -5.842557193e-05, -0.0001450749911, -0.000217106601, -9.413097892e-05, 0.0005543160343, 0.002074949316, 0.004327249968, 0.005638469025, 0.002694728905, -0.002949166624, -2.575201058e-05, -0.0001225584225, -0.0003068119048, -0.0004675889914, -0.000238441337, 0.001055572598, 0.004138713986, 0.008798439162, 0.01184146926, 0.006803667236, -0.003995723295, -4.025605727e-05, -0.0001942048214, -0.0004957835822, -0.0007914125768, -0.0005475463212, 0.001234839794, 0.005655596464, 0.01249380685, 0.01725247149, 0.01068935396, -0.004408715795, -5.052712925e-05, -0.0002475742553, -0.0006467715673, -0.001086505462, -0.0009569558429, 0.0009115093973, 0.00584383046, 0.01368928184, 0.01941340466, 0.01253076972, -0.004154118821, -5.18238426e-05, -0.0002582285616, -0.0006913528609, -0.001220992174, -0.001287948541, 0.0002162292043, 0.004589680229, 0.01180257033, 0.01730171351, 0.01146101794, -0.003372203216, -4.265286334e-05, -0.0002165340705, -0.0005952975914, -0.001104858938, -0.001344538994, -0.0004812438749, 0.002502859604, 0.007691373472, 0.01184894763, 0.007987501635, -0.002329794149, -2.621027537e-05, -0.0001360641259, -0.000385722292, -0.0007544858533, -0.001039226478, -0.0007828751458, 0.0006077799518, 0.003262432792, 0.00554085569, 0.0037650349, -0.001319224435, -9.514624348e-06, -5.085882565e-05, -0.0001498257841, -0.0003110336331, -0.0004810754041, -0.0005187700101, -0.0002219138981, 0.0004937253957, 0.001186801423, 0.0007856526954, -0.0005173625647, -9.800906023e-06, -4.419618917e-05, -0.0001007862768, -0.0001353546942, -5.706371683e-05, 0.0002397402441, 0.0007983430983, 0.001455129382, 0.001601174938, 0.0002977422625, -0.001538612122, -3.045543612e-05, -0.0001365849607, -0.0003036539735, -0.0003700081542, -4.301831239e-06, 0.00118920109, 0.003399989767, 0.006105252252, 0.007260507179, 0.003590884883, -0.002757337425, -5.935972977e-05, -0.0002702476183, -0.0006137064662, -0.0007827414186, -0.0001211885576, 0.002187766818, 0.006595318276, 0.01217518737, 0.01500466408, 0.00863246475, -0.003549716209, -8.743781989e-05, -0.0004061371065, -0.0009527135108, -0.00131210157, -0.0005441313481, 0.002575381582, 0.008810091279, 0.0169780693, 0.02155469598, 0.01324665159, -0.003747156075, -0.0001037802335, -0.0004923895124, -0.001195430346, -0.001776781382, -0.001174203627, 0.002062939458, 0.008941487511, 0.01829315526, 0.02394483785, 0.01528582558, -0.003414606598, -0.0001009115166, -0.0004892831655, -0.001229243337, -0.001959199909, -0.001712229459, 0.0009027576952, 0.006951579301, 0.01553902643, 0.02109452022, 0.01381897009, -0.002721040447, -7.889014267e-05, -0.0003913478116, -0.00101802664, -0.001732171012, -0.001841127334, -0.0002855516334, 0.003830358525, 0.0100132876, 0.01430821972, 0.009556923647, -0.001884936976, -4.61020128e-05, -0.0002346561373, -0.0006338741591, -0.001151160021, -0.001429644154, -0.000877534304, 0.001063232179, 0.004246841235, 0.006660384589, 0.004506752275, -0.001102786249, -1.590531217e-05, -8.354847129e-05, -0.0002358375901, -0.0004591176083, -0.0006533882257, -0.0006301288543, -0.0001856244202, 0.0006925849467, 0.0014526119, 0.0009744016151, -0.0004599043299 +-7.857189922e-07, -5.348949901e-06, -2.022246818e-05, -5.410750084e-05, -0.0001082911818, -0.0001518523367, -8.224859425e-05, 0.0002763924653, 0.0009263584783, 0.001103484312, 5.103837519e-05, -2.624228305e-06, -1.765577735e-05, -6.543994241e-05, -0.0001698282856, -0.0003222779581, -0.0003948358104, -6.185624458e-06, 0.001488532326, 0.004202398189, 0.005657245287, 0.002418055429, -5.403165907e-06, -3.63537768e-05, -0.0001345185819, -0.0003485856708, -0.0006622254542, -0.0008205481297, -6.18570977e-05, 0.002921106041, 0.008491269776, 0.01204421214, 0.006290363959, -8.359184751e-06, -5.645967134e-05, -0.0002097859679, -0.000547821771, -0.001059634182, -0.001389713165, -0.0004394222696, 0.003721551747, 0.01179867392, 0.01752849273, 0.01007383807, -1.03872437e-05, -7.055132247e-05, -0.0002638879237, -0.0006967847666, -0.001379225649, -0.001928552355, -0.001095756636, 0.003379378376, 0.01251613418, 0.01958817004, 0.012036858, -1.05487294e-05, -7.214082055e-05, -0.0002720493929, -0.0007276185377, -0.001476189691, -0.002194461876, -0.001738668306, 0.002038834757, 0.01030383629, 0.01727416201, 0.01126717681, -8.593202707e-06, -5.926498375e-05, -0.0002257387769, -0.000612740808, -0.001276133506, -0.002011131523, -0.001994158517, 0.0003999219694, 0.006231052617, 0.01165684546, 0.008117960029, -5.220354218e-06, -3.6405313e-05, -0.0001404825282, -0.0003882863332, -0.0008329393365, -0.001392292673, -0.00164097985, -0.0006738710998, 0.002232242859, 0.005322670426, 0.004067515552, -1.868889649e-06, -1.324146954e-05, -5.203352617e-05, -0.0001472659424, -0.0003273060756, -0.0005824889301, -0.0007942081403, -0.0006736383744, 7.469446334e-05, 0.001074106961, 0.001010042234, -2.025530933e-06, -1.251430991e-05, -4.136703075e-05, -9.426276195e-05, -0.0001568731683, -0.0001718991661, -1.635560022e-05, 0.000470183747, 0.001217052466, 0.00136598344, 0.0001646913603, -6.272776526e-06, -3.867598758e-05, -0.0001266554691, -0.0002820228231, -0.0004434302974, -0.0003963868066, 0.0003043104342, 0.002245016531, 0.005287292171, 0.006630370664, 0.002848151462, -1.214258778e-05, -7.55585553e-05, -0.0002499180134, -0.0005631704112, -0.0009012811943, -0.0008454634944, 0.000491621774, 0.004315373366, 0.01052020959, 0.01388607488, 0.007116450764, -1.775515498e-05, -0.0001118360818, -0.0003755830924, -0.0008647457795, -0.001437397379, -0.001509577408, 0.0002029260146, 0.005509757743, 0.0144858707, 0.02001174915, 0.01120333166, -2.092060053e-05, -0.0001335115855, -0.0004559562463, -0.001075242171, -0.001862936406, -0.002183160894, -0.000567593118, 0.005138343411, 0.01528582558, 0.0222060967, 0.01324532747, -2.019414757e-05, -0.0001306434808, -0.0004540008537, -0.001097215916, -0.001979982374, -0.002551204649, -0.001456012235, 0.003386841389, 0.01257382544, 0.01948291946, 0.01230420014, -1.566526113e-05, -0.0001028317779, -0.0003640071821, -0.0009023752587, -0.001695286689, -0.002374843695, -0.001954749656, 0.001166613484, 0.007668175029, 0.01311307613, 0.008816661498, -9.072732738e-06, -6.055530539e-05, -0.0002188561445, -0.0005578952786, -0.001093151376, -0.001656388754, -0.001728665086, -0.000401262765, 0.002865600925, 0.006007891134, 0.004406932327, -3.094862943e-06, -2.108777202e-05, -7.816275584e-05, -0.000205879909, -0.0004226783706, -0.0006926144154, -0.0008653371364, -0.0006443532199, 0.0002169946362, 0.001249290868, 0.001101646559 +-9.625727912e-08, -8.966510294e-07, -4.694195698e-06, -1.804093712e-05, -5.633262273e-05, -0.0001497800338, -0.0003399405325, -0.0006002941067, -0.000507181165, 0.0009603420691, 0.002819638105, -3.176202839e-07, -2.924583533e-06, -1.509717852e-05, -5.711344335e-05, -0.0001752139621, -0.0004562345055, -0.001005734161, -0.001673919072, -0.001018832025, 0.004074931592, 0.009759656429, -6.457854322e-07, -5.920781231e-06, -3.040250749e-05, -0.00011438445, -0.0003490036668, -0.0009035013446, -0.001976572247, -0.003244805576, -0.001853384575, 0.008109231518, 0.01879991986, -9.870140997e-07, -9.034083614e-06, -4.628635203e-05, -0.0001738096277, -0.0005296570469, -0.001370400342, -0.002998124266, -0.004938555937, -0.003012580781, 0.01124640806, 0.02636461531, -1.212259812e-06, -1.109242565e-05, -5.679459307e-05, -0.0002132180389, -0.0006501581296, -0.001684989758, -0.003698276851, -0.006154988453, -0.004171511998, 0.01202269226, 0.02921926826, -1.217111099e-06, -1.11451074e-05, -5.708892501e-05, -0.0002145083884, -0.0006552440314, -0.001703105899, -0.003756254659, -0.006336977992, -0.004798997341, 0.0100958143, 0.02610544779, -9.799197323e-07, -8.990351049e-06, -4.612587094e-05, -0.0001736650563, -0.0005320158289, -0.001388460331, -0.00308187684, -0.005285597753, -0.004473170003, 0.006378204749, 0.01834889097, -5.876530279e-07, -5.411236469e-06, -2.785572965e-05, -0.0001052655955, -0.000323941592, -0.0008503497371, -0.001903890582, -0.003334301454, -0.003168797044, 0.002583889591, 0.009264459449, -2.07117334e-07, -1.919658511e-06, -9.941890759e-06, -3.780479639e-05, -0.0001171501043, -0.000310089337, -0.0007027401718, -0.001265501718, -0.00136489547, 0.0003385700757, 0.002534347586, -2.284361997e-07, -1.876502787e-06, -8.500739473e-06, -2.810532224e-05, -7.58664198e-05, -0.0001768701832, -0.0003598616647, -0.0005812507721, -0.0004157075186, 0.00110991702, 0.002928873829, -7.055886378e-07, -5.795868608e-06, -2.617985458e-05, -8.601354576e-05, -0.0002297671423, -0.0005270584957, -0.001043323372, -0.001578797795, -0.0006945654221, 0.004567888382, 0.01010653016, -1.358413877e-06, -1.122532074e-05, -5.098330428e-05, -0.0001683159467, -0.0004513604592, -0.001037611436, -0.002051346537, -0.003076691356, -0.001265388711, 0.009004121126, 0.01942660863, -1.97454441e-06, -1.64428406e-05, -7.527628543e-05, -0.0002505638103, -0.0006775490173, -0.001570328424, -0.003128575489, -0.004748550763, -0.002255653588, 0.01242482482, 0.02719359898, -2.312728591e-06, -1.941979897e-05, -8.969455992e-05, -0.0003013822491, -0.0008231168249, -0.001927426496, -0.003882351671, -0.006006908593, -0.003414606598, 0.01324532747, 0.03008767741, -2.218846487e-06, -1.879441088e-05, -8.762079912e-05, -0.0002973822153, -0.0008209135762, -0.001943888982, -0.003963901579, -0.006268692937, -0.004200611354, 0.01111490206, 0.02683974035, -1.709831807e-06, -1.461873848e-05, -6.884036171e-05, -0.0002361702221, -0.0006594509366, -0.001580463277, -0.003266441111, -0.005291257609, -0.004112528298, 0.007043511834, 0.01883858853, -9.824224468e-07, -8.489289333e-06, -4.043381089e-05, -0.0001404118862, -0.000397149824, -0.0009648245844, -0.002025181238, -0.003373214986, -0.003022347929, 0.002894517955, 0.009501080327, -3.31614609e-07, -2.903342068e-06, -1.402128347e-05, -4.94068111e-05, -0.0001418984645, -0.000350317874, -0.000749334742, -0.001291713828, -0.001337571982, 0.0004175977552, 0.002598304561 +0.0006207393133, -0.0009842218228, -0.0009872642009, -0.0005244312068, -0.0002234326333, -8.526824575e-05, -2.966626505e-05, -9.210291819e-06, -2.420814525e-06, -4.826643374e-07, -5.501697337e-08, 0.00348543859, -0.002199437189, -0.003064224149, -0.001781565969, -0.0007904665151, -0.0003087129688, -0.0001092319184, -3.437113185e-05, -9.127237647e-06, -1.833143152e-06, -2.100172184e-07, 0.009098939294, -0.002679871323, -0.005875721682, -0.00374225541, -0.00172795004, -0.000689394937, -0.000247461992, -7.872202242e-05, -2.107291503e-05, -4.254873878e-06, -4.890047615e-07, 0.01628513745, -0.001609585543, -0.008482849561, -0.005954346949, -0.002865147493, -0.001167522157, -0.0004246779783, -0.0001363923887, -3.675693199e-05, -7.452616415e-06, -8.583012563e-07, 0.02240974709, 0.0009586476206, -0.009794063909, -0.007650686839, -0.003845598942, -0.001601482738, -0.0005900491055, -0.0001911767697, -5.183185844e-05, -1.054686644e-05, -1.216604103e-06, 0.0245637689, 0.00390350525, -0.009131024195, -0.008049965348, -0.00424015189, -0.001806772736, -0.0006743841384, -0.0002203781268, -6.00950975e-05, -1.227063536e-05, -1.417652217e-06, 0.02114206379, 0.00548708491, -0.006716548931, -0.006796280442, -0.003763016597, -0.001643023319, -0.0006215910376, -0.000204891084, -5.619849889e-05, -1.151619862e-05, -1.332826021e-06, 0.01314118155, 0.004478439407, -0.003708492769, -0.004316058408, -0.002509939632, -0.001123033834, -0.0004306093326, -0.0001431240653, -3.946927713e-05, -8.113797727e-06, -9.403640803e-07, 0.004465940602, 0.001660432672, -0.001376913616, -0.001696225522, -0.001018525225, -0.0004642358833, -0.0001797897944, -6.00620857e-05, -1.659591809e-05, -3.410423642e-06, -3.944223435e-07, 0.00273076673, -0.0001527213275, -0.001104697258, -0.0008064680782, -0.0004192832779, -0.0001853305833, -7.144159949e-05, -2.346978724e-05, -6.221877737e-06, -1.194483853e-06, -1.259682522e-07, 0.01098596256, 0.001554132, -0.002846175619, -0.002463653677, -0.001348222056, -0.0006105926135, -0.0002394590067, -7.988974763e-05, -2.149779779e-05, -4.188648888e-06, -4.482811318e-07, 0.0247327407, 0.006367073135, -0.004491853298, -0.004746147182, -0.002734413837, -0.001265975098, -0.0005034456093, -0.00016994535, -4.624046355e-05, -9.107382454e-06, -9.851298396e-07, 0.04026052655, 0.01391132204, -0.005131954949, -0.006992368316, -0.004252535379, -0.002011486153, -0.0008097141491, -0.0002759715214, -7.575887285e-05, -1.505022915e-05, -1.641796379e-06, 0.05160211559, 0.02177070974, -0.004271796541, -0.008360166219, -0.005391815139, -0.002607003558, -0.001061461237, -0.0003648234629, -0.0001009115166, -2.019414757e-05, -2.218846487e-06, 0.05340631525, 0.02636403929, -0.002197237367, -0.008192181551, -0.005641949723, -0.002793007368, -0.001150299638, -0.0003984948895, -0.0001109927488, -2.236005564e-05, -2.472997221e-06, 0.04388293768, 0.02474752744, 1.895836241e-05, -0.00641801695, -0.004762286998, -0.002419442709, -0.001008619823, -0.000352201245, -9.876678089e-05, -2.002615831e-05, -2.228992034e-06, 0.02644559875, 0.01671055785, 0.001070998636, -0.003751602584, -0.003015169087, -0.001573961045, -0.0006643893174, -0.0002338279828, -6.600389529e-05, -1.346681403e-05, -1.508127715e-06, 0.009017927788, 0.006201988811, 0.0005942614303, -0.001351705153, -0.001149523464, -0.0006124925596, -0.0002609200349, -9.232280994e-05, -2.617573062e-05, -5.363668114e-06, -6.032770169e-07 +-0.0002084673809, 5.316018219e-05, -0.0001553441171, -0.0002878597591, -0.0002506464128, -0.000159867454, -8.383527575e-05, -3.701970055e-05, -1.334795578e-05, -3.559779164e-06, -5.331354162e-07, -0.000195937753, 0.0009491622668, 0.0001104678111, -0.0006509595582, -0.0007365990626, -0.0005193158905, -0.0002876395163, -0.0001314852752, -4.852870816e-05, -1.315671913e-05, -1.994717321e-06, 0.0003763181203, 0.00313537366, 0.001250805686, -0.0008225316064, -0.001358802091, -0.001059507313, -0.0006164160164, -0.0002901179554, -0.0001090852834, -2.993589871e-05, -4.576037779e-06, 0.001576185003, 0.006349626507, 0.003299247269, -0.0005788150157, -0.001916484722, -0.001658940903, -0.0010102787, -0.0004878361662, -0.0001863001095, -5.161546386e-05, -7.93647121e-06, 0.003011539557, 0.009515552297, 0.005662549253, 8.613846709e-05, -0.002192212916, -0.002120855787, -0.001349115079, -0.000666840716, -0.0002581610952, -7.210018752e-05, -1.113725492e-05, 0.003915018728, 0.01110701859, 0.007269213848, 0.0009009552023, -0.002049339588, -0.002240884742, -0.001487990447, -0.0007519844496, -0.0002948477463, -8.295061493e-05, -1.286547806e-05, 0.003526585439, 0.009861896322, 0.007013470601, 0.001371896296, -0.001540105798, -0.001919823492, -0.001328972046, -0.0006859290107, -0.0002721930401, -7.710659111e-05, -1.20049383e-05, 0.001763653024, 0.005762840804, 0.004480738266, 0.001025144554, -0.0009462836126, -0.001271976941, -0.0009048021045, -0.0004738841742, -0.000189623002, -5.396222676e-05, -8.420500669e-06, -4.003105096e-05, 0.001195324852, 0.001084205054, 0.0001017093621, -0.0005062913418, -0.0005687720688, -0.0003910771055, -0.0002022317971, -8.030365327e-05, -2.271060374e-05, -3.523978285e-06, 0.001018588116, 0.0009835273662, 6.502114923e-05, -0.0004722309893, -0.0005303627742, -0.0003810935245, -0.0002123772465, -9.478367339e-05, -3.295764455e-05, -8.142080424e-06, -1.096324801e-06, 0.00448630017, 0.005077592428, 0.001756633691, -0.0006573224316, -0.001332842383, -0.001101345044, -0.0006572513785, -0.0003065776941, -0.0001101938112, -2.797515229e-05, -3.857326936e-06, 0.01072057189, 0.01304366452, 0.005920193388, 1.458740852e-05, -0.002120156368, -0.002044377855, -0.001297875575, -0.0006277622699, -0.0002315133742, -5.998385163e-05, -8.414967426e-06, 0.01833181252, 0.02338637108, 0.01208011032, 0.001720366516, -0.002562765357, -0.002949018721, -0.001982682711, -0.0009892020118, -0.0003725822885, -9.812254751e-05, -1.395485301e-05, 0.02454213087, 0.03252614001, 0.01825736455, 0.003990837919, -0.002466636551, -0.003505264232, -0.002488103367, -0.001275819585, -0.0004892831655, -0.0001306434808, -1.879441088e-05, 0.02636403929, 0.03622062309, 0.02167682262, 0.005843370017, -0.001858472055, -0.003465432961, -0.002594375879, -0.001364363629, -0.0005318224806, -0.0001437622983, -2.089491639e-05, 0.02220036621, 0.0316968004, 0.02006253037, 0.006180329601, -0.00102141167, -0.002784385784, -0.002197753863, -0.001183781481, -0.0004685074897, -0.0001281139633, -1.880055581e-05, 0.01327299833, 0.01982547608, 0.01321058374, 0.004430244763, -0.0004067895768, -0.001714970065, -0.001412384768, -0.00077572143, -0.0003109657626, -8.588983538e-05, -1.271286534e-05, 0.004093843067, 0.006474023553, 0.00448621502, 0.001498776751, -0.0002245005612, -0.0006907240602, -0.0005610155838, -0.0003079059835, -0.0001237258752, -3.429468127e-05, -5.096573147e-06 +-0.0003612046866, 0.000265370339, 0.0002975551548, 5.42875499e-05, -0.0001117029428, -0.0001558671482, -0.0001302083583, -8.299161485e-05, -4.11525296e-05, -1.466909148e-05, -2.890530826e-06, -0.001337034117, 0.001312364615, 0.001736228885, 0.0007793958023, -3.314496397e-05, -0.0003723620957, -0.0003893507636, -0.0002726636864, -0.0001424961044, -5.2533706e-05, -1.060038831e-05, -0.003076612673, 0.003262989616, 0.004822343349, 0.002672077867, 0.0005427974078, -0.0005098803794, -0.0007335202448, -0.0005643357896, -0.0003085627328, -0.0001167618973, -2.395795056e-05, -0.005384488724, 0.005600371504, 0.009192542418, 0.005706715792, 0.001740839094, -0.0004301155115, -0.001061034225, -0.0008984034968, -0.0005112682837, -0.0001975949444, -4.105485534e-05, -0.007671085539, 0.007293293826, 0.0134430831, 0.009067406918, 0.003308850829, -9.599667052e-05, -0.001250908968, -0.001170314123, -0.0006907226743, -0.0002717732551, -5.703382419e-05, -0.009113727568, 0.007284509861, 0.01556841464, 0.01129777566, 0.004607919151, 0.0003732897548, -0.001213478699, -0.001263427067, -0.0007717496774, -0.0003085613965, -6.531372915e-05, -0.009007526392, 0.005126587034, 0.01391866897, 0.01089217928, 0.004819336056, 0.0007041569158, -0.0009546459107, -0.001109576319, -0.0006994274671, -0.0002836476701, -6.049330566e-05, -0.007099960125, 0.00157563614, 0.008463122738, 0.007286583199, 0.003414088232, 0.0005841062365, -0.0006120763101, -0.0007533100108, -0.0004825336956, -0.00019710962, -4.219479314e-05, -0.003645315012, -0.0009394873262, 0.002156461642, 0.002259136224, 0.001050092073, 7.697578832e-05, -0.0003237669742, -0.0003384582054, -0.0002078446601, -8.327634762e-05, -1.762715009e-05, -6.081895578e-05, 0.0008431766088, 0.0007570268625, 0.0001897766645, -0.0002397039924, -0.000383728102, -0.0003289557179, -0.0002035036816, -9.381614335e-05, -3.013110368e-05, -5.249276171e-06, -9.486379474e-05, 0.003853567208, 0.004132047546, 0.002071178554, 0.0001669839882, -0.0007581470036, -0.0008732343969, -0.0006078914161, -0.0003000667567, -0.0001010505767, -1.825941233e-05, -0.0002019059541, 0.009263478685, 0.01086344455, 0.006440904738, 0.001797723808, -0.0007975647657, -0.001488125122, -0.001165774538, -0.0006097446965, -0.0002130355929, -3.954474192e-05, -0.0005528853524, 0.01573413395, 0.01976222398, 0.01277783954, 0.004629296399, -0.0003110365853, -0.001966329262, -0.001737681854, -0.0009559685993, -0.0003441946398, -6.526500028e-05, -0.001247911706, 0.02073270022, 0.02776910518, 0.01906766168, 0.007824303025, 0.0005952465204, -0.002133324021, -0.002136064593, -0.001229243337, -0.0004540008537, -8.762079912e-05, -0.002197237367, 0.02167682262, 0.03113657192, 0.02249504638, 0.009990116792, 0.001535948393, -0.001912979477, -0.002188811586, -0.00131287577, -0.0004959476625, -9.721136173e-05, -0.003090421478, 0.01736471414, 0.02730038725, 0.02074554039, 0.00977488305, 0.001982236097, -0.001387468192, -0.001829368966, -0.001140007758, -0.0004395073057, -8.736710261e-05, -0.003386536758, 0.009212252969, 0.01688603551, 0.01361506033, 0.00671517949, 0.001538103391, -0.0007995021174, -0.001172078979, -0.0007506752196, -0.000293932738, -5.909668652e-05, -0.002310829941, 0.001786252712, 0.005182936335, 0.004575863896, 0.002299026671, 0.0004707418036, -0.0003635063283, -0.0004789725519, -0.0003022185863, -0.0001180814325, -2.378083409e-05 +-0.0002148251059, 9.795507104e-05, 0.0002660765231, 0.0002002600311, 5.156786878e-05, -7.185544163e-05, -0.0001310369913, -0.0001293240839, -9.040389786e-05, -4.365787333e-05, -1.147963375e-05, -0.0008921151947, 0.0004792276284, 0.001408125008, 0.001287368927, 0.0006861381042, 9.625265565e-05, -0.0002641123818, -0.0003679897768, -0.0002918269254, -0.0001506203341, -4.128354159e-05, -0.002243698472, 0.00111544377, 0.003763236628, 0.003755661162, 0.002344460373, 0.000800007182, -0.000246870188, -0.0006613336784, -0.0005965681961, -0.0003254113754, -9.195372115e-05, -0.004228189406, 0.001692433063, 0.007000652342, 0.00744586725, 0.005025167733, 0.002126171592, 3.263895373e-05, -0.0009125366914, -0.0009412058507, -0.0005382860594, -0.000155739942, -0.006417304436, 0.001737723303, 0.01001941751, 0.01129988959, 0.008036057723, 0.003772869549, 0.0005456940344, -0.00102495933, -0.001218560198, -0.0007265046974, -0.0002142556093, -0.008037671196, 0.0009175854526, 0.01130675169, 0.01359528694, 0.01009508785, 0.005060824837, 0.001090142821, -0.0009451292086, -0.001311198396, -0.0008117244919, -0.0002433289132, -0.008248613123, -0.0006485754893, 0.009695353978, 0.012682963, 0.009824708238, 0.005164182872, 0.001333579471, -0.0007094774952, -0.001151694984, -0.0007364650063, -0.0002238063471, -0.006574611601, -0.002186001595, 0.005356122903, 0.0081515683, 0.006638056147, 0.00359710442, 0.0009778724388, -0.0004565509348, -0.0007850484317, -0.0005082323015, -0.0001553440682, -0.003284124173, -0.002212001578, 0.0008433155044, 0.002331699556, 0.0020721601, 0.001098359996, 0.0002054618169, -0.0002750603927, -0.0003539287974, -0.0002167531572, -6.484240693e-05, -0.0002234885696, 0.0003382900062, 0.0006855965549, 0.0005504848064, 0.0001762051084, -0.0001574043291, -0.000310683791, -0.0002911269664, -0.0001848107687, -7.917856012e-05, -1.830225355e-05, -0.000888905971, 0.001549273845, 0.003424664672, 0.00328503374, 0.001904356659, 0.0004124668207, -0.0005076219945, -0.0007447285884, -0.0005521450804, -0.0002574075566, -6.292526141e-05, -0.002226442804, 0.003574416516, 0.00863185772, 0.008912709984, 0.005903635043, 0.002254821261, -0.0002693880172, -0.001218395356, -0.00106058904, -0.0005305180703, -0.0001352671797, -0.004225587591, 0.00566473954, 0.01521549237, 0.01652851869, 0.01168984119, 0.005274382812, 0.0005291922153, -0.00153822738, -0.001586016724, -0.0008427002614, -0.0002221776616, -0.006475039483, 0.006705674231, 0.02075381343, 0.02358581511, 0.0174239535, 0.008554820282, 0.001672270154, -0.001585176111, -0.001959199909, -0.001097215916, -0.0002973822153, -0.008192181551, 0.005843370017, 0.02249504638, 0.02682866964, 0.02054055472, 0.01065322468, 0.002662536044, -0.001339718938, -0.002021410237, -0.001186569399, -0.0003293466874, -0.008502917363, 0.003101912451, 0.01880786258, 0.0238627118, 0.01892366664, 0.01022886196, 0.00291531699, -0.0009123085143, -0.001706162389, -0.001043846543, -0.000295805686, -0.00686772496, -0.0002443985099, 0.01064521425, 0.01496486118, 0.01237651589, 0.006906470936, 0.002090284723, -0.000517612291, -0.001109710365, -0.0006967101748, -0.0002003383236, -0.003473291375, -0.001744832789, 0.002489932126, 0.004626652563, 0.00409644348, 0.00231269625, 0.000640275279, -0.0002758393519, -0.0004632685067, -0.0002833420961, -8.105801839e-05 +-9.764748373e-05, -9.617140042e-06, 0.0001275896166, 0.0001895641062, 0.0001527920773, 5.095953721e-05, -6.293929755e-05, -0.0001392205685, -0.0001497289747, -0.0001020754919, -3.701170926e-05, -0.0004211944497, -2.102871899e-05, 0.0006823177394, 0.001099822422, 0.001061324463, 0.0006720964148, 0.0001534241879, -0.0002641965162, -0.0004286048872, -0.0003356709453, -0.0001305764513, -0.001092444602, -0.0001160448282, 0.001792698183, 0.003068793218, 0.003164126903, 0.00227513212, 0.0009475097008, -0.0002132733985, -0.0007816102372, -0.0006983267814, -0.0002867194194, -0.002116609776, -0.0004407978404, 0.003232826813, 0.005891514561, 0.00633864535, 0.004835944005, 0.002377184217, 0.000117232857, -0.001103751245, -0.001119956726, -0.0004801232515, -0.003297719677, -0.001104250165, 0.004413783394, 0.00867848113, 0.009682300061, 0.007673802505, 0.004091276067, 0.000674181615, -0.001281857562, -0.00147296829, -0.0006543661141, -0.004234290854, -0.002038820371, 0.004616669974, 0.0100985075, 0.01170561872, 0.009567501441, 0.005368341663, 0.001228628251, -0.001239049006, -0.001610104224, -0.00073734775, -0.004443813399, -0.00291558797, 0.003403484597, 0.008993735625, 0.01095857034, 0.009234804581, 0.005376559605, 0.001436238847, -0.0009888796576, -0.001435763104, -0.0006738784104, -0.003602645977, -0.003173717377, 0.001108152917, 0.005281130907, 0.007040579687, 0.006165961297, 0.00367732928, 0.001016573973, -0.0006596045613, -0.0009844331686, -0.0004658547155, -0.001813297203, -0.002146442811, -0.0006629678919, 0.001058337388, 0.001966489867, 0.001865449849, 0.001095273239, 0.0002009224467, -0.00035973647, -0.000429214502, -0.0001945510408, -0.0001508201939, 3.671719072e-05, 0.0003694207303, 0.0005431605211, 0.0004455319988, 0.0001652047322, -0.0001214824748, -0.0002768880439, -0.0002693948465, -0.0001623852357, -5.197351316e-05, -0.0006174197572, 0.0002143418496, 0.001829912201, 0.002906409574, 0.002813942343, 0.001776269093, 0.0004820286763, -0.0004308275442, -0.0007079176838, -0.0005049535453, -0.0001765241642, -0.001553712109, 0.0003846431179, 0.004491936269, 0.00752777683, 0.007754427339, 0.00549619689, 0.002323092973, -0.0001636911664, -0.001196825775, -0.00100531723, -0.0003764798037, -0.002940558883, 0.000226039957, 0.007631533036, 0.01350058328, 0.01448171996, 0.01086423217, 0.005285257959, 0.0006283535032, -0.001575039151, -0.001553901494, -0.0006152385015, -0.004484937122, -0.0005350042249, 0.009905786014, 0.01868014315, 0.02074373819, 0.01616234508, 0.008460048836, 0.001724207014, -0.001712229459, -0.001979982374, -0.0008209135762, -0.005641949723, -0.001858472055, 0.009990116792, 0.02054055472, 0.02364645568, 0.0190069488, 0.01044184513, 0.002641464095, -0.001554029804, -0.002104857171, -0.0009075935767, -0.005803974694, -0.00325183249, 0.007364743309, 0.01746638569, 0.02104455592, 0.01744580258, 0.009945261693, 0.002827748495, -0.001164542937, -0.001829064837, -0.0008148957076, -0.004610042427, -0.003836832167, 0.002998966803, 0.01012533821, 0.013156711, 0.0113257283, 0.006645901669, 0.001981566503, -0.0007239983416, -0.001218554282, -0.0005530435971, -0.002265432007, -0.002642314428, -0.0003336543555, 0.002495688774, 0.00399059268, 0.003669513834, 0.002178788445, 0.0005769342277, -0.000365885808, -0.0005083883573, -0.0002254020561 +-3.952657485e-05, -3.491757564e-05, 2.894814676e-05, 0.0001134607615, 0.0001678073132, 0.0001539335156, 6.340858055e-05, -7.045354325e-05, -0.0001781768799, -0.000191360891, -0.0001017205915, -0.0001728911587, -0.000145854632, 0.0001815308813, 0.0006508662134, 0.00102003623, 0.001085047454, 0.0007684123984, 0.0001839265272, -0.0003750121263, -0.0005854183767, -0.0003518432544, -0.0004531274976, -0.0004068522874, 0.000460004796, 0.001770073886, 0.002881331923, 0.003221700032, 0.002539531009, 0.001081507602, -0.0004268069098, -0.001145352758, -0.0007612303351, -0.0008861359884, -0.0008791051478, 0.0007303375337, 0.003285483848, 0.00555785667, 0.006411315051, 0.005308679066, 0.002658322457, -0.0002171005569, -0.001741751607, -0.001259830922, -0.001393095604, -0.001542331161, 0.0007651067953, 0.00463143736, 0.008206279558, 0.009724433442, 0.008309045974, 0.004503721936, 0.0002273704692, -0.002187210479, -0.001700618041, -0.001804649927, -0.00223618762, 0.000377924039, 0.00506254196, 0.009566574466, 0.01167447381, 0.01023514656, 0.005829173552, 0.0007180211019, -0.002296852798, -0.001901037988, -0.001909697844, -0.002665062658, -0.0004122790113, 0.004045881302, 0.008539754323, 0.01085234232, 0.009770978548, 0.005765217913, 0.0009517530187, -0.001985504025, -0.001726464868, -0.001558503089, -0.002490435225, -0.001242150762, 0.001769508226, 0.005032795467, 0.006915308482, 0.006458288735, 0.003897705053, 0.00066583507, -0.001354084525, -0.001189373213, -0.0007875595035, -0.001477605931, -0.001290050915, -0.0002724028001, 0.001015285303, 0.00190066972, 0.001939500804, 0.001153017939, 5.521362806e-05, -0.0006272074269, -0.0004978045821, -7.653918697e-05, -6.193089541e-05, 0.0001081453457, 0.0003366908034, 0.0004650822441, 0.0003968046589, 0.0001610850241, -0.0001121662913, -0.0002782485469, -0.0002672614361, -0.0001272319015, -0.0003141041349, -0.0002306567347, 0.0005845209327, 0.001762257203, 0.002596470522, 0.002572405328, 0.00169489482, 0.0004535003047, -0.0005042206245, -0.0007712567004, -0.0004262608843, -0.0007858374777, -0.0006338054861, 0.001378529189, 0.004443947418, 0.006827874459, 0.007145401294, 0.005235541434, 0.002181571316, -0.0004189841577, -0.001438701548, -0.0009007333509, -0.001476076704, -0.001376329051, 0.002115618207, 0.007717039494, 0.01235172919, 0.01340103677, 0.01035082491, 0.004967886465, 9.641244218e-05, -0.002101577705, -0.00146282379, -0.002235079516, -0.002413594144, 0.002279621867, 0.01025119556, 0.01719649469, 0.01924866586, 0.01540820505, 0.007961442343, 0.0009027576952, -0.002551204649, -0.001943888982, -0.002793007368, -0.003465432961, 0.001535948393, 0.01065322468, 0.0190069488, 0.02198226847, 0.01813044517, 0.009835603185, 0.001640474692, -0.002603462182, -0.002143847508, -0.002853304434, -0.004054333719, 2.39993716e-05, 0.008254788533, 0.01623957382, 0.01957757891, 0.01664037386, 0.00936753068, 0.001866537049, -0.002194887075, -0.001923391774, -0.002245901841, -0.00367983272, -0.001491860796, 0.003849336856, 0.009454818612, 0.01221601821, 0.0107797865, 0.006240564315, 0.001306074806, -0.001458754388, -0.001308424052, -0.001089674955, -0.002087898192, -0.001687661499, 0.0001301461943, 0.002330482647, 0.003660089397, 0.003460242839, 0.002018598574, 0.0003134188322, -0.0006518899551, -0.0005382222388 +-1.46156933e-05, -2.772021421e-05, -1.517680622e-05, 3.549796043e-05, 0.0001145673761, 0.0001852702997, 0.0001914985604, 8.865983408e-05, -0.0001065722884, -0.000277336496, -0.0002407513342, -6.427328991e-05, -0.0001195520191, -4.521549667e-05, 0.0002316669047, 0.0006779220326, 0.001125361861, 0.001301011896, 0.0009629686583, 0.0001279388357, -0.0007340161974, -0.0008127094632, -0.0001688416604, -0.0003220510464, -0.0001316026879, 0.0006168732156, 0.001855861212, 0.003153402854, 0.003788936893, 0.003097187646, 0.00104808266, -0.001237652596, -0.001725799312, -0.0003305673998, -0.0006578144042, -0.0003414572806, 0.001061394702, 0.003453265184, 0.006031356095, 0.007430997567, 0.00636332564, 0.002687753359, -0.001612901052, -0.002813385295, -0.000520015774, -0.001087198723, -0.0007176333446, 0.001304736551, 0.004880660628, 0.008835783632, 0.01113596072, 0.00982659243, 0.004604936855, -0.001725562914, -0.003750305488, -0.0006737907076, -0.001486549109, -0.001212402293, 0.001088807976, 0.005364053768, 0.01023061447, 0.01323366659, 0.01197100317, 0.005971478907, -0.001537055529, -0.004148037317, -0.0007126545589, -0.001670188515, -0.001651050214, 0.0003414748064, 0.004346174653, 0.009085829658, 0.0122020938, 0.01132847684, 0.00589227131, -0.001150849551, -0.003735456475, -0.0005805089937, -0.001464959378, -0.001752366621, -0.0006411531448, 0.002002893911, 0.005350172104, 0.007746301709, 0.007458727342, 0.003960516258, -0.0007895430614, -0.002562687873, -0.0002923766073, -0.0008119674893, -0.001180804313, -0.001010515091, -0.0001597679103, 0.001111656132, 0.002168368481, 0.002282890693, 0.001159266056, -0.0005108000633, -0.001078380125, -3.275817118e-05, -6.276652671e-05, -2.219193728e-05, 0.0001166125421, 0.0003018227331, 0.000424158725, 0.0003848882477, 0.000166632073, -0.0001355470058, -0.0003408493105, -0.0002733470187, -0.0001340632031, -0.0002491708064, -3.557514682e-05, 0.0006608078782, 0.001641659208, 0.002417220589, 0.002487852506, 0.001675120062, 0.0003095730107, -0.0008319551282, -0.0008983448057, -0.0003327112684, -0.0006365615876, -0.0001296829326, 0.00162759978, 0.004208717913, 0.00641239709, 0.006924281128, 0.005157731639, 0.001793206189, -0.001286966567, -0.001871537023, -0.0006191696879, -0.00124487547, -0.0004501755411, 0.002648426567, 0.007394855162, 0.0116699657, 0.01302376549, 0.01020923222, 0.004254204663, -0.001522370275, -0.003007177133, -0.0009289118025, -0.001975412002, -0.001079742293, 0.003146091079, 0.009929201089, 0.016328606, 0.01876742647, 0.01523736976, 0.006951579301, -0.001456012235, -0.003963901579, -0.001150299638, -0.002594375879, -0.001912979477, 0.002662536044, 0.01044184513, 0.01813044517, 0.02150618649, 0.01798829236, 0.008692054235, -0.001134202757, -0.004345132914, -0.001164090746, -0.002796461515, -0.002616574131, 0.001194013187, 0.008224821229, 0.01555838803, 0.01921994297, 0.01656914014, 0.008342306614, -0.0007328255397, -0.003883579855, -0.0009063726755, -0.002341843069, -0.002706527163, -0.0005821758013, 0.003970850523, 0.009094056179, 0.01203104966, 0.01077190098, 0.005565565906, -0.00048433464, -0.002644533253, -0.0004340981313, -0.00122553858, -0.001727807091, -0.001274544897, 0.0002583374636, 0.002247523594, 0.00361558763, 0.003472944888, 0.001769765307, -0.0003768821587, -0.001101205046 +-4.834988013e-06, -1.536514081e-05, -2.379879216e-05, -1.3543095e-05, 3.494417122e-05, 0.0001283064915, 0.0002358117971, 0.0002709699444, 0.0001119031833, -0.0002624470832, -0.0004639628082, -2.12761548e-05, -6.674404124e-05, -9.652761475e-05, -2.598766996e-05, 0.0002458588143, 0.0007609981511, 0.001386844258, 0.001725426381, 0.001193432959, -0.0003929497448, -0.001499538065, -5.578406147e-05, -0.0001768815286, -0.00025749399, -6.908105763e-05, 0.0006638558424, 0.002066865708, 0.003816227563, 0.004898322538, 0.003795015152, -6.869161114e-05, -0.003074575507, -0.0001088941254, -0.0003523881702, -0.0005328404723, -0.0002108330838, 0.001149877224, 0.003810947552, 0.007199440169, 0.009449786455, 0.007720658911, 0.0008285562467, -0.004866644689, -0.000170696074, -0.0005663408034, -0.0009004180844, -0.0005100345956, 0.001426959506, 0.00533854363, 0.01042866323, 0.01398680743, 0.01181714103, 0.002057459146, -0.006325129068, -0.0002202614905, -0.0007517784007, -0.001263911406, -0.0009479536192, 0.001222119275, 0.005819963873, 0.01196343134, 0.01646210498, 0.014282184, 0.003066608198, -0.006843776577, -0.0002317761609, -0.0008177557327, -0.001463293746, -0.001382675236, 0.0004562653335, 0.00468460531, 0.01055416312, 0.0150809462, 0.01342878973, 0.003199515517, -0.006054829835, -0.0001875062087, -0.000690441485, -0.001331670737, -0.001551770294, -0.0005692910067, 0.002158161527, 0.006218331313, 0.009585597397, 0.008822146302, 0.002088494749, -0.004123210328, -9.360494005e-05, -0.0003655675718, -0.0007737699283, -0.001096995978, -0.0009846131657, -0.0001413249384, 0.001364708676, 0.00279229663, 0.002753425031, 0.000410860246, -0.001766854135, -1.177153837e-05, -3.701495121e-05, -5.169725437e-05, -1.51957485e-05, 9.889515039e-05, 0.0002697563961, 0.00041667538, 0.0004190669785, 0.0001729103821, -0.000277113046, -0.000489780767, -4.801952159e-05, -0.0001489516869, -0.0001929805365, 1.095209263e-05, 0.0006007971264, 0.001504939321, 0.002365692226, 0.002609714745, 0.001696382739, -0.0002874844666, -0.001545234767, -0.0001183061503, -0.00037216776, -0.0004922029903, 1.032676697e-05, 0.001517048856, 0.003898651825, 0.006288529948, 0.007218916059, 0.005225395706, 0.0003552228414, -0.003114104877, -0.0002183151608, -0.000703807112, -0.0009849921389, -0.000163336676, 0.002512460868, 0.006897037191, 0.01148297088, 0.01357927382, 0.01037323329, 0.001716250386, -0.004867497735, -0.0003246877698, -0.00107728792, -0.001612266238, -0.000627311879, 0.003039070469, 0.009310671513, 0.01613048971, 0.01961814924, 0.01553902643, 0.003386841389, -0.006268692937, -0.0003984948895, -0.001364363629, -0.002188811586, -0.001339718938, 0.002641464095, 0.009835603185, 0.01798829236, 0.02257044081, 0.01841914142, 0.004610448494, -0.006738210296, -0.0003994006232, -0.001416376927, -0.002442745382, -0.002035794891, 0.001280735216, 0.00777333497, 0.01550845718, 0.0202763879, 0.01703966899, 0.004596572467, -0.005933624582, -0.0003074820711, -0.001137760863, -0.002126304885, -0.002266599224, -0.0004302461381, 0.003750313552, 0.009111243611, 0.012785861, 0.01112660398, 0.003016533557, -0.004026788965, -0.0001452792189, -0.0005678247239, -0.00116419595, -0.001533149343, -0.001159387918, 0.0002231462623, 0.002274071238, 0.003907556402, 0.003607806295, 0.0007777819304, -0.001719324152 +-1.356560841e-06, -6.493305697e-06, -1.678195017e-05, -2.814930683e-05, -2.519619895e-05, 2.10985724e-05, 0.0001402801673, 0.0003122105731, 0.0003619902501, -3.038562179e-05, -0.0005795980328, -5.948380482e-06, -2.814642192e-05, -7.054694501e-05, -0.0001095788854, -6.713443329e-05, 0.0001989179733, 0.0008341565713, 0.001763264689, 0.002229958508, 0.0008012009728, -0.001631835261, -1.551286366e-05, -7.358146825e-05, -0.0001839820592, -0.0002831964909, -0.0001644536653, 0.0005467024162, 0.00223918926, 0.004751410175, 0.006221953831, 0.003061234114, -0.002944313338, -3.0100624e-05, -0.0001439835309, -0.0003636321677, -0.00057223765, -0.0003818178327, 0.0009148774337, 0.004065571961, 0.008822035228, 0.01183925906, 0.006593757451, -0.004129051912, -4.68842788e-05, -0.0002268874181, -0.0005823222306, -0.0009495069832, -0.0007589100117, 0.00104248951, 0.005592145727, 0.01260298448, 0.01730768009, 0.01032203387, -0.004781057017, -6.008472352e-05, -0.0002949055959, -0.000772353997, -0.001313547832, -0.001244849867, 0.0007077464636, 0.005958284075, 0.0142715431, 0.02013273871, 0.0125678022, -0.004635625127, -6.273048831e-05, -0.0003133491103, -0.0008415266272, -0.001502530699, -0.001666389606, -9.685284652e-05, 0.004631239977, 0.01243207215, 0.01823577929, 0.01177734128, -0.003739290857, -5.025021682e-05, -0.0002571171851, -0.0007141519262, -0.001353456308, -0.001750926765, -0.001014340139, 0.001949255886, 0.007238987722, 0.01147547574, 0.00757834753, -0.002492042609, -2.476819304e-05, -0.0001312692928, -0.0003820355571, -0.0007794088496, -0.001172343648, -0.0011888507, -0.0003214851835, 0.001594590489, 0.003345751173, 0.002180248546, -0.001248818622, -3.381201341e-06, -1.539079629e-05, -3.579812935e-05, -5.063362432e-05, -3.03332687e-05, 6.009460085e-05, 0.0002355774364, 0.000441757199, 0.0004731267117, 1.9208673e-05, -0.0005780746814, -1.37553062e-05, -6.221619558e-05, -0.0001412546605, -0.0001839148122, -4.991140049e-05, 0.0004301195042, 0.001338061303, 0.002444026073, 0.002844229118, 0.001128004375, -0.001571356936, -3.368778316e-05, -0.0001536346034, -0.0003515391584, -0.0004606930018, -0.0001222868597, 0.001110946473, 0.003482226773, 0.006456709927, 0.007800650788, 0.003948951452, -0.002744381728, -6.173332324e-05, -0.0002855188806, -0.0006669670306, -0.0009134172984, -0.0003676732079, 0.001819792585, 0.006162047241, 0.01176782533, 0.01462495412, 0.008210822863, -0.003732813844, -9.11395651e-05, -0.0004286344477, -0.001027767784, -0.001489617759, -0.0008676155021, 0.002111261498, 0.008293052863, 0.01652221727, 0.02109452022, 0.01257382544, -0.004200611354, -0.0001109927488, -0.0005318224806, -0.00131287577, -0.002021410237, -0.001554029804, 0.001640474692, 0.008692054235, 0.01841914142, 0.02424156782, 0.01506611382, -0.003966967947, -0.0001102868565, -0.0005398180474, -0.001376956629, -0.002259599364, -0.002163475062, 0.0004307254379, 0.006740144297, 0.01585935888, 0.02174643237, 0.01396591706, -0.003133394225, -8.401802024e-05, -0.0004222431177, -0.001120298268, -0.001973655597, -0.002285581812, -0.0009426371046, 0.003051031994, 0.009270593164, 0.01366849489, 0.008993097387, -0.002085062412, -3.917383903e-05, -0.0002039031075, -0.0005685330988, -0.001086147059, -0.001492719804, -0.0013105805, -4.727164914e-05, 0.002266642554, 0.004140146489, 0.002720673402, -0.001084824793 +-2.88847353e-07, -1.960222659e-06, -7.397327284e-06, -1.98399398e-05, -4.018666714e-05, -5.86631729e-05, -4.157600193e-05, 6.884907097e-05, 0.0002706689608, 0.0003103397703, -3.392268976e-05, -1.2573958e-06, -8.437939404e-06, -3.125815531e-05, -8.151575035e-05, -0.0001574809661, -0.0002058654276, -6.342482166e-05, 0.0005444704303, 0.001647718428, 0.00216127672, 0.0007526577983, -3.2521127e-06, -2.176668354e-05, -8.018527451e-05, -0.0002074446021, -0.0003961246552, -0.0005053001081, -0.0001123408849, 0.001496964747, 0.004466790085, 0.006184594722, 0.002924352303, -6.256707559e-06, -4.193133196e-05, -0.0001545227126, -0.0004002873966, -0.000768585993, -0.001001490604, -0.0003173365113, 0.002623033894, 0.008195496007, 0.01183779644, 0.006376232963, -9.661808144e-06, -6.498384967e-05, -0.000240350115, -0.0006265210893, -0.00121995046, -0.001656911172, -0.0008014899125, 0.003331965585, 0.01145327723, 0.01727997866, 0.01011182101, -1.227234002e-05, -8.29912008e-05, -0.0003088398711, -0.0008128437307, -0.001613308067, -0.002303944894, -0.00154953623, 0.003049722767, 0.01255334696, 0.019990035, 0.01250987773, -1.268759064e-05, -8.647088833e-05, -0.0003247251141, -0.0008661901079, -0.001761438932, -0.002662702288, -0.002321735175, 0.001598739153, 0.01037414185, 0.01793781801, 0.01200436805, -1.004263324e-05, -6.926685736e-05, -0.0002637781142, -0.0007174098934, -0.001506498638, -0.002434092101, -0.00264841299, -0.000440790199, 0.00537568761, 0.01109750333, 0.008106848989, -4.873320593e-06, -3.425488886e-05, -0.0001332795287, -0.000372695805, -0.0008159838265, -0.001422319775, -0.00187078183, -0.001427169929, 0.0005929579896, 0.003095637834, 0.002722740885, -6.982723588e-07, -4.339952438e-06, -1.448407061e-05, -3.353018278e-05, -5.747347979e-05, -6.807025984e-05, -2.485567432e-05, 0.0001254489707, 0.0003581310603, 0.000390012263, 5.274208255e-07, -2.83479415e-06, -1.757502872e-05, -5.813097046e-05, -0.0001318052051, -0.0002152996538, -0.0002193042964, 4.675892801e-05, 0.0008348667025, 0.002072852791, 0.002544396739, 0.0009211950307, -6.910080427e-06, -4.307653226e-05, -0.0001431191481, -0.0003254178796, -0.0005310451983, -0.0005323053618, 0.000160113238, 0.002207083818, 0.005507000492, 0.007127281201, 0.003344038599, -1.25923127e-05, -7.91910839e-05, -0.0002657838791, -0.0006122100146, -0.001019625912, -0.001077785501, 0.0001163748415, 0.003816910957, 0.009976636941, 0.01347053957, 0.007111207846, -1.847954005e-05, -0.0001174329817, -0.000399222918, -0.0009359139495, -0.001605261968, -0.001831361082, -0.0003009503253, 0.004869749308, 0.01381897009, 0.01948291946, 0.01111490206, -2.236005564e-05, -0.0001437622983, -0.0004959476625, -0.001186569399, -0.002104857171, -0.002603462182, -0.001134202757, 0.004610448494, 0.01506611382, 0.02237934593, 0.01361221087, -2.205356993e-05, -0.0001437103311, -0.0005042351215, -0.001234930538, -0.002274622678, -0.003054651489, -0.002118588731, 0.00281300868, 0.0124729675, 0.01999305414, 0.01296858223, -1.664377329e-05, -0.0001102896161, -0.00039517647, -0.0009957996789, -0.00191682508, -0.002808264026, -0.00266263059, 0.0002119723458, 0.006651582885, 0.01240314569, 0.008733581436, -7.663198963e-06, -5.193090289e-05, -0.0001912347869, -0.000499465834, -0.001013040789, -0.001627195525, -0.001950368668, -0.00124442476, 0.001040039651, 0.003582750933, 0.002963390579 +-3.511085828e-08, -3.250668313e-07, -1.692847495e-06, -6.482209867e-06, -2.02055031e-05, -5.373438658e-05, -0.0001222300673, -0.0002174510961, -0.0001938124011, 0.0002977801612, 0.0009250876767, -1.513517017e-07, -1.3864289e-06, -7.127564001e-06, -2.690163744e-05, -8.252286937e-05, -0.0002153916015, -0.0004774478702, -0.0008066439465, -0.0005571258415, 0.001665575678, 0.004173512182, -3.874644752e-07, -3.530515204e-06, -1.803090802e-05, -6.756828844e-05, -0.0002057063524, -0.000532331641, -0.00116613293, -0.001924835702, -0.001175997537, 0.004409566288, 0.01035661864, -7.378792468e-07, -6.705021946e-06, -3.412103184e-05, -0.0001273898898, -0.0003864524563, -0.0009964360497, -0.002172441208, -0.003557764495, -0.002132782962, 0.008034222773, 0.01852158105, -1.128015368e-06, -1.023828438e-05, -5.200856659e-05, -0.0001938409083, -0.000587284109, -0.00151288031, -0.003295599396, -0.005402026035, -0.003384867768, 0.01125851542, 0.02610824098, -1.418172485e-06, -1.287360289e-05, -6.537070219e-05, -0.0002435891697, -0.000738245761, -0.001903560782, -0.004153997179, -0.006855411543, -0.004652543248, 0.0124963945, 0.02979734016, -1.449987794e-06, -1.318409437e-05, -6.702688438e-05, -0.0002501054413, -0.0007595027025, -0.001963882028, -0.004304593751, -0.007194938445, -0.005432489042, 0.01064615177, 0.0270462292, -1.132522295e-06, -1.033877776e-05, -5.274542674e-05, -0.0001975306651, -0.0006023931597, -0.001565916192, -0.003460285218, -0.005908771127, -0.005118882624, 0.006025183369, 0.01789452844, -5.399278581e-07, -4.966544007e-06, -2.550591116e-05, -9.612173938e-05, -0.0002950671541, -0.0007730219046, -0.001729459968, -0.003050633014, -0.00311724015, 0.001260961537, 0.006476266203, -7.874862667e-08, -6.496142176e-07, -2.959109307e-06, -9.851033843e-06, -2.681080532e-05, -6.30905256e-05, -0.0001296955298, -0.0002127563133, -0.0001659599597, 0.0003445222539, 0.0009594322723, -3.192402948e-07, -2.632833826e-06, -1.196099538e-05, -3.959948713e-05, -0.0001068119672, -0.0002479135404, -0.0004978831076, -0.0007731186398, -0.0004281564507, 0.001866242262, 0.004315579217, -7.753776739e-07, -6.420453093e-06, -2.92606258e-05, -9.707657187e-05, -0.0002620093992, -0.0006070681894, -0.001210975705, -0.001841521322, -0.0008693762098, 0.004879775267, 0.01068558512, -1.40680473e-06, -1.171719761e-05, -5.37051276e-05, -0.0001791510235, -0.0004859488847, -0.001130353263, -0.002258305326, -0.003426465385, -0.001620489924, 0.008825277499, 0.01907356013, -2.054659112e-06, -1.72298267e-05, -7.95265189e-05, -0.0002671971306, -0.000730012828, -0.001709652434, -0.003435740608, -0.005253871754, -0.002721040447, 0.01230420014, 0.02683974035, -2.472997221e-06, -2.089491639e-05, -9.721136173e-05, -0.0003293466874, -0.0009075935767, -0.002143847508, -0.004345132914, -0.006738210296, -0.003966967947, 0.01361221087, 0.03058329587, -2.423823045e-06, -2.06558626e-05, -9.697793289e-05, -0.0003317400683, -0.0009234721218, -0.002204059764, -0.004517112816, -0.007145964028, -0.004880136143, 0.01159210417, 0.02772077111, -1.814091546e-06, -1.562258148e-05, -7.416648097e-05, -0.0002567091163, -0.0007234973838, -0.001749293021, -0.003639113968, -0.005924063993, -0.004799888561, 0.006616947589, 0.01832468597, -8.253469468e-07, -7.205144315e-06, -3.469166506e-05, -0.0001218425313, -0.0003486181304, -0.0008564565424, -0.001817175148, -0.003078179726, -0.003013200456, 0.001476921367, 0.006636887748 +0.0001576115921, -0.000273494449, -0.0002893028977, -0.0001591212354, -6.906146405e-05, -2.659380304e-05, -9.288490808e-06, -2.883675958e-06, -7.549673178e-07, -1.494019055e-07, -1.685986796e-08, 0.001110552828, -0.0008539749542, -0.001201714003, -0.0007189181431, -0.0003242514253, -0.0001274946781, -4.516803105e-05, -1.417601938e-05, -3.741497216e-06, -7.445226858e-07, -8.432183762e-08, 0.003708144622, -0.001411293882, -0.00295015611, -0.001927941128, -0.0009045949553, -0.0003630487458, -0.0001302980652, -4.128316409e-05, -1.097080662e-05, -2.192920236e-06, -2.49012666e-07, 0.008465345812, -0.001249574708, -0.005365448545, -0.003862203126, -0.001889777246, -0.0007746078388, -0.0002815091381, -8.997067179e-05, -2.405593738e-05, -4.827164991e-06, -5.492720198e-07, 0.01490322221, 0.0003505290458, -0.007753817994, -0.006228815482, -0.003189738407, -0.001337138236, -0.0004921501756, -0.0001586223585, -4.265969855e-05, -8.591909927e-06, -9.795472374e-07, 0.0211328631, 0.003506518588, -0.009028511307, -0.008261998206, -0.004449938186, -0.001911877213, -0.0007132597713, -0.0002318956439, -6.274169096e-05, -1.268609885e-05, -1.449497875e-06, 0.02401978306, 0.00700825753, -0.008279600995, -0.008895729092, -0.005069248235, -0.002238492716, -0.0008476835255, -0.0002782191329, -7.576749151e-05, -1.53864977e-05, -1.762545806e-06, 0.02032009222, 0.008067434614, -0.005694317844, -0.007359160207, -0.004449328588, -0.002023529666, -0.0007788760642, -0.0002582066425, -7.077128237e-05, -1.442646032e-05, -1.655308215e-06, 0.009790916072, 0.004468994807, -0.002644896966, -0.003852322839, -0.002439049023, -0.001139073761, -0.000445221768, -0.0001488315811, -4.093287079e-05, -8.340420074e-06, -9.536586024e-07, 0.0006776856235, -5.527105411e-05, -0.0003196303347, -0.0002363462179, -0.0001233411078, -5.440983852e-05, -2.089880316e-05, -6.841467988e-06, -1.80814734e-06, -3.462475932e-07, -3.643945992e-08, 0.003482959806, 0.0003811475571, -0.001149233621, -0.0009784030978, -0.0005337792228, -0.0002402630473, -9.35355555e-05, -3.098703279e-05, -8.285939081e-06, -1.605490299e-06, -1.70990648e-07, 0.0099195361, 0.002328953556, -0.00241937407, -0.002433301573, -0.001391422701, -0.0006388819514, -0.0002517067866, -8.421577634e-05, -2.273314896e-05, -4.446386083e-06, -4.78045243e-07, 0.02036974772, 0.00680025398, -0.00366456281, -0.004549768633, -0.002738683115, -0.001283633322, -0.0005114433438, -0.0001726086233, -4.697129561e-05, -9.260500089e-06, -1.003573896e-06, 0.0330727943, 0.01394529651, -0.004119656927, -0.006866337083, -0.004379211401, -0.002098878834, -0.0008457964437, -0.0002877828819, -7.889014267e-05, -1.566526113e-05, -1.709831807e-06, 0.04388293768, 0.02220036621, -0.003090421478, -0.008502917363, -0.005803974694, -0.002853304434, -0.001164090746, -0.0003994006232, -0.0001102868565, -2.205356993e-05, -2.423823045e-06, 0.04724378562, 0.02790997061, -0.0006001009485, -0.008446235935, -0.006266906393, -0.003175196245, -0.001314253795, -0.0004551794263, -0.0001266883657, -2.552303622e-05, -2.825564214e-06, 0.03856378396, 0.02607909408, 0.001905029557, -0.006237645965, -0.005135481584, -0.002697094843, -0.001135892838, -0.0003978079573, -0.0001117284321, -2.26952848e-05, -2.531961772e-06, 0.01858230128, 0.01401780286, 0.001989708436, -0.002748213925, -0.002534681059, -0.001382833005, -0.0005935503121, -0.0002103966899, -5.964360293e-05, -1.221009785e-05, -1.371230286e-06 +-5.225124097e-05, -1.311889156e-05, -7.11311888e-05, -0.0001004243654, -8.283146674e-05, -5.184770518e-05, -2.689040108e-05, -1.174984533e-05, -4.186209467e-06, -1.101716703e-06, -1.627687707e-07, -4.979553021e-05, 0.0001808853337, -0.000130405571, -0.0003579820769, -0.0003428550827, -0.0002297719152, -0.0001240015452, -5.559678902e-05, -2.015698103e-05, -5.370044831e-06, -8.005332641e-07, 0.0002828048838, 0.001008487705, 7.860171036e-05, -0.0007410774443, -0.0008504142363, -0.0006104689024, -0.0003419641936, -0.0001569125027, -5.775504228e-05, -1.554141627e-05, -2.332673341e-06, 0.001296575344, 0.002927641298, 0.0009177337766, -0.001090672033, -0.001585937143, -0.001222672165, -0.0007100233812, -0.0003328855592, -0.0001242005477, -3.371115454e-05, -5.087834501e-06, 0.003159454936, 0.006082614776, 0.002648559374, -0.001146052907, -0.002383908171, -0.001986424215, -0.001196278557, -0.0005727593073, -0.0002164843548, -5.923437589e-05, -8.984433578e-06, 0.005489955797, 0.00985246466, 0.005106042159, -0.0006673297385, -0.002926800526, -0.002669942525, -0.001671668589, -0.0008179701381, -0.0003132943184, -8.643151601e-05, -1.317621976e-05, 0.007027331506, 0.01237151998, 0.00721919057, 0.0002412119379, -0.002895351066, -0.002937489446, -0.001917479673, -0.0009597694001, -0.0003726692678, -0.0001036849004, -1.588873969e-05, 0.00587853181, 0.01062634545, 0.006702123788, 0.0006615617223, -0.002339243763, -0.00256337073, -0.001725960056, -0.000878714959, -0.0003445724009, -9.639298513e-05, -1.48104036e-05, 0.00195908298, 0.003961745158, 0.002443776083, -0.0002144938806, -0.001552661266, -0.001548025973, -0.001020449259, -0.0005147988695, -0.0002004329494, -5.565651543e-05, -8.483201196e-06, 0.0002701633494, 0.0002288467385, -2.315896402e-05, -0.0001607295926, -0.0001655462403, -0.0001155535503, -6.341558744e-05, -2.802392944e-05, -9.676350275e-06, -2.37811996e-06, -3.189511741e-07, 0.001529588886, 0.001547144455, 0.0003514789594, -0.0004435352361, -0.000607905181, -0.0004644702325, -0.0002674639725, -0.0001220986313, -4.323534515e-05, -1.085441141e-05, -1.483654411e-06, 0.004684297896, 0.005171591724, 0.001881569252, -0.0006075389936, -0.001349676157, -0.001136124004, -0.0006845026396, -0.0003215104192, -0.0001162811377, -2.970349817e-05, -4.121911213e-06, 0.01024981472, 0.01199280559, 0.005320883875, -0.0002578161078, -0.002257716011, -0.002114975579, -0.001331045965, -0.0006415361393, -0.000236354697, -6.127786708e-05, -8.61254342e-06, 0.017653889, 0.02164453885, 0.01083417777, 0.0009656189759, -0.003029427957, -0.003215010153, -0.002114232191, -0.001044307098, -0.0003913478116, -0.0001028317779, -1.461873848e-05, 0.02474752744, 0.0316968004, 0.01736471414, 0.003101912451, -0.00325183249, -0.004054333719, -0.002796461515, -0.001416376927, -0.0005398180474, -0.0001437103311, -2.06558626e-05, 0.02790997061, 0.03740538479, 0.02214801973, 0.005474201656, -0.002618508386, -0.004147973386, -0.003026767135, -0.001576265595, -0.000611753559, -0.0001651151138, -2.400355485e-05, 0.0233358758, 0.03283908325, 0.02086020494, 0.006291097619, -0.00137618992, -0.003215663089, -0.002505559321, -0.001345401536, -0.0005324096822, -0.0001457838246, -2.143979027e-05, 0.01092759269, 0.01616177448, 0.01086593193, 0.003630473032, -0.0004505136116, -0.001559671244, -0.001276281123, -0.000701615032, -0.0002818989433, -7.80493465e-05, -1.157528433e-05 +-0.0001002338733, 5.989260748e-05, 6.840120402e-05, 2.943741601e-07, -4.501537882e-05, -5.422721005e-05, -4.321146052e-05, -2.676996743e-05, -1.297912683e-05, -4.537430562e-06, -8.790907438e-07, -0.0004687406733, 0.000395245913, 0.0005326661451, 0.0001868971594, -9.66628515e-05, -0.0001984490251, -0.0001810210676, -0.0001195497072, -6.017555007e-05, -2.156184434e-05, -4.251804209e-06, -0.001307755472, 0.001296437706, 0.00193723812, 0.0009480293204, 8.355743996e-07, -0.0004214951438, -0.0004550977364, -0.0003207505675, -0.0001670965149, -6.113599123e-05, -1.222366334e-05, -0.002739848294, 0.002931753342, 0.004789726433, 0.002747928992, 0.0005024436119, -0.0006364992401, -0.0008616250284, -0.0006498855866, -0.000349726356, -0.0001303314857, -2.635939947e-05, -0.004669114339, 0.005099394188, 0.009110984861, 0.005814466215, 0.001641283347, -0.0006874787082, -0.001317689571, -0.001070319931, -0.0005948057442, -0.0002255257838, -4.608376661e-05, -0.006704093812, 0.007022301432, 0.01391397471, 0.009683954825, 0.003393837888, -0.0004170989096, -0.001652104181, -0.001462777068, -0.0008409134371, -0.0003244475084, -6.697078018e-05, -0.008253853013, 0.00724058575, 0.01675503339, 0.01265240672, 0.005089209655, 0.0001331570632, -0.001681388777, -0.001643559916, -0.0009784502697, -0.0003841110456, -8.006911702e-05, -0.008618813546, 0.004088109174, 0.0139947155, 0.01156984828, 0.005033529049, 0.0004035696088, -0.001411923049, -0.001467962721, -0.0008919146753, -0.0003534872431, -7.40407382e-05, -0.006210614618, -0.0008755217551, 0.00507851353, 0.004889183058, 0.002031541565, -0.000153090576, -0.0009677269984, -0.0008964329306, -0.0005247110892, -0.0002038312303, -4.210870425e-05, -1.63147507e-05, 0.0002074547644, 0.000176227577, 1.979433597e-05, -9.326285161e-05, -0.0001247204177, -0.0001017292936, -6.143711003e-05, -2.791735473e-05, -8.880368214e-06, -1.536563102e-06, -2.166679579e-05, 0.001228944125, 0.001259918605, 0.0005172845281, -0.0001264634077, -0.0003997472244, -0.0003864788779, -0.0002527439382, -0.0001206868067, -3.979732653e-05, -7.086521803e-06, 1.535422016e-05, 0.003822655252, 0.004313460578, 0.002276729276, 0.0002727698234, -0.0007387743954, -0.000893097335, -0.0006327914678, -0.0003159121581, -0.0001073758101, -1.956723177e-05, 9.507768703e-05, 0.008396889232, 0.01014890592, 0.006050313859, 0.00156867593, -0.0009371612363, -0.001567704582, -0.001206453794, -0.000627545473, -0.0002190112703, -4.06998848e-05, 0.0001519245692, 0.01442850398, 0.01850457944, 0.01195256806, 0.004030484265, -0.0007400518199, -0.002236253714, -0.001881282125, -0.00101802664, -0.0003640071821, -6.884036171e-05, 1.895836241e-05, 0.02006253037, 0.02730038725, 0.01880786258, 0.007364743309, 2.39993716e-05, -0.002616574131, -0.002442745382, -0.001376956629, -0.0005042351215, -9.697793289e-05, -0.0006001009485, 0.02214801973, 0.03232660679, 0.0236626843, 0.01031442314, 0.001203924188, -0.002429361298, -0.00259267218, -0.0015292791, -0.000574279198, -0.0001123700418, -0.001877395797, 0.01734384121, 0.02813413564, 0.02198240958, 0.01042554586, 0.001987282288, -0.001669601016, -0.002108431177, -0.001305205292, -0.0005028132147, -0.0001000680572, -0.002520311146, 0.006519759005, 0.0132068795, 0.01118955647, 0.005630902376, 0.001244253768, -0.000767322199, -0.001074032711, -0.0006843404423, -0.0002678474765, -5.386241316e-05 +-6.22284372e-05, 2.245043713e-05, 6.857347811e-05, 4.717915336e-05, 2.844682388e-06, -3.208143302e-05, -4.66161454e-05, -4.284545179e-05, -2.877530664e-05, -1.351519543e-05, -3.480121365e-06, -0.0003276264453, 0.0001475265209, 0.0004713891537, 0.0004081475535, 0.0001753122948, -3.887294326e-05, -0.0001560350856, -0.0001734005669, -0.0001266016808, -6.235365998e-05, -1.656009308e-05, -0.001014728362, 0.0004597937176, 0.001632092531, 0.001566911697, 0.0008692230407, 0.0001539135821, -0.0002901856815, -0.0004219601898, -0.0003358050158, -0.0001725473991, -4.698682815e-05, -0.0023396228, 0.0009475284501, 0.003923144452, 0.004041800115, 0.002516990068, 0.0008064867651, -0.0003421259012, -0.0007734826871, -0.0006743034459, -0.0003602488954, -0.0001002002991, -0.004359355221, 0.001403173557, 0.007302835068, 0.00799230313, 0.005353930117, 0.002130428075, -0.0001640590204, -0.001143419786, -0.001102913274, -0.0006118676952, -0.0001734699336, -0.006786064431, 0.00138502296, 0.01089800421, 0.0126811847, 0.008989876534, 0.004044460305, 0.0003432459257, -0.00137956989, -0.001500075877, -0.0008650527829, -0.0002498461084, -0.00887855253, 0.0002634254327, 0.01266407058, 0.01589658061, 0.01185961818, 0.005789587154, 0.001021706473, -0.001345358276, -0.001681032798, -0.001007549541, -0.0002961940769, -0.009409957381, -0.002331858029, 0.009735705044, 0.01393420301, 0.01095433433, 0.005592513429, 0.001169210438, -0.001111375708, -0.001498781919, -0.0009160899539, -0.0002716736906, -0.006476140579, -0.004149630639, 0.002427050691, 0.00551106065, 0.004658006919, 0.002276133121, 0.0002106130747, -0.0008202231983, -0.0009084661023, -0.0005285825025, -0.000153287173, -6.320746212e-05, 8.175836796e-05, 0.0001685529147, 0.0001242831249, 1.932559387e-05, -6.875342979e-05, -0.0001038674631, -9.105801088e-05, -5.606026876e-05, -2.359756157e-05, -5.39268615e-06, -0.0003172312438, 0.0004902451318, 0.00109201697, 0.0009890505288, 0.0004814969071, -2.512331416e-05, -0.0003045031628, -0.000338242199, -0.0002308689332, -0.0001033525896, -2.465784503e-05, -0.000963740184, 0.00148697761, 0.003571164669, 0.003530175015, 0.002110773979, 0.0005243314272, -0.0004803834355, -0.0007631216362, -0.000579063415, -0.0002737801822, -6.766601847e-05, -0.002207373933, 0.00311502942, 0.008145153272, 0.008525079524, 0.005605148368, 0.002039179544, -0.0004123782396, -0.001305079555, -0.001106929844, -0.0005500511802, -0.0001401115258, -0.00411031902, 0.004980496324, 0.01446120144, 0.01586987437, 0.01108132744, 0.004743639884, 0.000121726162, -0.001806816169, -0.001732171012, -0.0009023752587, -0.0002361702221, -0.00641801695, 0.006180329601, 0.02074554039, 0.0238627118, 0.01746638569, 0.008254788533, 0.001194013187, -0.002035794891, -0.002259599364, -0.001234930538, -0.0003317400683, -0.008446235935, 0.005474201656, 0.0236626843, 0.02878579306, 0.02202037615, 0.01120045871, 0.002491509662, -0.001792832988, -0.002414330532, -0.001389589543, -0.0003833382272, -0.009000848579, 0.002066429486, 0.01926594463, 0.025494277, 0.02047387315, 0.01104945623, 0.003036758006, -0.001153008956, -0.001984724028, -0.001203201253, -0.0003404119036, -0.00618693197, -0.001744397907, 0.007678510347, 0.01209621399, 0.01035900872, 0.005834874924, 0.001716057163, -0.0005338701725, -0.001027235776, -0.0006378172652, -0.0001827062098 +-2.892399682e-05, -5.121184584e-06, 3.265653127e-05, 4.776256361e-05, 3.41197944e-05, 2.869815689e-06, -2.964473173e-05, -4.912940918e-05, -4.859664729e-05, -3.173196924e-05, -1.119603546e-05, -0.000158528581, -1.885567617e-05, 0.00022922299, 0.000364234654, 0.0003287895655, 0.0001712579124, -1.974927265e-05, -0.0001588999505, -0.0001966822581, -0.0001411081033, -5.24395436e-05, -0.000508935115, -7.033289264e-05, 0.0007898338223, 0.001327665791, 0.001304152006, 0.0008417248776, 0.0002178518106, -0.0002828033837, -0.0004810897348, -0.0003784688566, -0.0001468914996, -0.001213943457, -0.0002431088104, 0.001867665912, 0.003312001427, 0.003421078939, 0.002420062792, 0.0009480814394, -0.0003070283285, -0.0008909879646, -0.0007688134855, -0.0003098598437, -0.002337894147, -0.0006786965849, 0.003383536387, 0.00637068806, 0.006842789209, 0.005115985307, 0.002366649748, -8.587002322e-05, -0.001339547924, -0.001273570205, -0.0005313324586, -0.003757910352, -0.001531136682, 0.004826582462, 0.009827582423, 0.01095925192, 0.008542131407, 0.004351941558, 0.0004637750396, -0.001660138586, -0.001758122351, -0.0007585990687, -0.005061428588, -0.00288168805, 0.005100552851, 0.01186423334, 0.01384684908, 0.01120397574, 0.006092161024, 0.001155629595, -0.00168296579, -0.002001935983, -0.0008918582041, -0.005477456903, -0.004463908698, 0.002812025568, 0.00963820984, 0.01217857801, 0.01025988151, 0.005789233133, 0.001267446101, -0.001420274898, -0.001792276019, -0.000811359733, -0.003801289128, -0.00441465554, -0.000999418831, 0.002845645903, 0.004717872287, 0.004254041343, 0.002333394397, 0.0002517969191, -0.0009689671296, -0.001041362643, -0.0004539995538, -4.302472771e-05, 4.51820303e-06, 8.9577475e-05, 0.0001295269529, 9.670398364e-05, 1.810493337e-05, -5.739420547e-05, -9.359057163e-05, -8.430799582e-05, -4.911031512e-05, -1.541962386e-05, -0.00022408476, 4.916332295e-05, 0.0005804124288, 0.000907672255, 0.0008309680222, 0.0004493385393, 1.084863181e-05, -0.0002694147036, -0.0003190402433, -0.0002083541262, -6.988360972e-05, -0.000694792217, 0.0001312097716, 0.001867162388, 0.00307247556, 0.00303626188, 0.001967898831, 0.0005895851311, -0.0004090746549, -0.0007352287377, -0.000537319286, -0.0001905396281, -0.001612056582, 0.0001420697431, 0.004154816411, 0.007165985749, 0.007418647614, 0.005221354659, 0.002118576326, -0.0003065294118, -0.00128927336, -0.00105492316, -0.0003926625991, -0.003030364556, -0.0001497489652, 0.007137347802, 0.01295788423, 0.01391453239, 0.01031370817, 0.004797321119, 0.0002398131733, -0.001841127334, -0.001695286689, -0.0006594509366, -0.004762286998, -0.00102141167, 0.00977488305, 0.01892366664, 0.02104455592, 0.01623957382, 0.008224821229, 0.001280735216, -0.002163475062, -0.002274622678, -0.0009234721218, -0.006266906393, -0.002618508386, 0.01031442314, 0.02202037615, 0.02551066136, 0.02043834564, 0.01103541733, 0.002494422727, -0.002033612284, -0.002508862095, -0.001064049578, -0.006588960591, -0.0045249079, 0.006997760104, 0.01839009001, 0.02265874871, 0.01892389207, 0.0107606101, 0.00293493165, -0.001453482213, -0.002134290817, -0.0009422746766, -0.004397120054, -0.004533217913, 0.001146723613, 0.007614104929, 0.01068860788, 0.009457009942, 0.00558421789, 0.001596495639, -0.0007322070617, -0.00112709255, -0.0005045163416 +-1.184364167e-05, -1.130191014e-05, 5.916866226e-06, 2.817607822e-05, 4.070713299e-05, 3.332505566e-05, 5.123698956e-06, -3.295383615e-05, -6.079269653e-05, -6.014087441e-05, -3.073700224e-05, -6.590508012e-05, -5.961031249e-05, 5.451809844e-05, 0.0002142863145, 0.0003295666681, 0.0003301061973, 0.0001971196294, -1.81533723e-05, -0.000205455505, -0.0002537120655, -0.0001416538494, -0.0002143299046, -0.0001981003952, 0.0001925670066, 0.0007679009208, 0.00122441658, 0.00130994569, 0.00093744238, 0.0002518205286, -0.0004000040134, -0.0006489908543, -0.000391571132, -0.0005174927, -0.0005079575138, 0.000429090444, 0.001871091001, 0.003081775073, 0.003422763346, 0.002645005971, 0.001057281115, -0.0005389315186, -0.001262028404, -0.0008167145683, -0.00100873693, -0.001072118463, 0.000676729664, 0.003492196992, 0.005960265113, 0.006812231566, 0.0055119608, 0.00259034761, -0.0004718314667, -0.002005265352, -0.001386509437, -0.001641131431, -0.001915636958, 0.0007084620907, 0.005166489782, 0.009235807298, 0.01085531012, 0.009093485564, 0.004696203199, -8.529901031e-05, -0.00265520327, -0.00196132194, -0.002235737944, -0.002931402542, 0.0001394120546, 0.005792478781, 0.01120349076, 0.01364882933, 0.0118066693, 0.006499834365, 0.0005023923013, -0.002902310851, -0.002285439722, -0.002442328889, -0.003741913593, -0.001371063787, 0.003810845378, 0.009153322936, 0.01194309318, 0.01073467195, 0.006136970718, 0.0006788228148, -0.002534089923, -0.002061250328, -0.001707225363, -0.003161717422, -0.002600920609, -0.0001938196586, 0.002716160824, 0.004585135651, 0.004464483654, 0.00251030809, -2.867717595e-05, -0.001514366135, -0.001143930237, -2.181337047e-05, -1.980883903e-05, 2.294925596e-05, 7.970265929e-05, 0.0001082997931, 8.456565729e-05, 1.851047485e-05, -5.357358971e-05, -9.29609471e-05, -8.258825652e-05, -3.801100063e-05, -0.0001143087039, -9.437277903e-05, 0.0001712666452, 0.0005493154655, 0.0007987387683, 0.0007539372127, 0.000431605618, 1.033578969e-05, -0.000287462376, -0.0003329332485, -0.0001705615227, -0.000354581303, -0.0003009248581, 0.00055003907, 0.001821653725, 0.002757864426, 0.002786594923, 0.001883304133, 0.0005541264903, -0.0005008476324, -0.0008193426351, -0.0004615251794, -0.0008215833092, -0.0007586464047, 0.001155690938, 0.004146967026, 0.006506254544, 0.006850760251, 0.004995568482, 0.001994920184, -0.0005638600997, -0.001540398118, -0.000945542746, -0.001541998438, -0.001582414926, 0.001778374136, 0.007281222115, 0.01186236681, 0.01290339554, 0.009873705548, 0.004526317975, -0.0002855516334, -0.002374843695, -0.001580463277, -0.002419442709, -0.002784385784, 0.001982236097, 0.01022886196, 0.01744580258, 0.01957757891, 0.01555838803, 0.00777333497, 0.0004307254379, -0.003054651489, -0.002204059764, -0.003175196245, -0.004147973386, 0.001203924188, 0.01120045871, 0.02043834564, 0.02378469161, 0.01958292652, 0.010433743, 0.001387352058, -0.003222070587, -0.002529717028, -0.00331854964, -0.005034832768, -0.0008224434768, 0.008208699709, 0.01718112726, 0.02112277935, 0.01808934621, 0.01013821591, 0.001840556196, -0.002636619143, -0.002232692172, -0.002193899507, -0.003947498923, -0.002462983017, 0.002068848675, 0.007136777246, 0.009888806219, 0.008960020207, 0.005194610007, 0.0009683725102, -0.001395310678, -0.001193518712 +-4.406992208e-06, -8.637296311e-06, -5.819821314e-06, 7.300148144e-06, 2.745446363e-05, 4.402226847e-05, 4.181121905e-05, 9.87329412e-06, -4.519805252e-05, -8.953073852e-05, -7.274586771e-05, -2.467104086e-05, -4.722532994e-05, -2.393711331e-05, 6.953286088e-05, 0.0002176299511, 0.0003576340951, 0.0003944597625, 0.0002508998385, -5.41382689e-05, -0.0003430243538, -0.000328681884, -8.053931971e-05, -0.0001554628185, -7.400372773e-05, 0.000255167172, 0.0007887947202, 0.0013211472, 0.00153129324, 0.001145172254, 0.0001897018716, -0.0007953044369, -0.0008935579695, -0.0001950094684, -0.0003859364605, -0.0002003865634, 0.0006011476521, 0.001931138309, 0.003302138893, 0.003939223327, 0.003161558591, 0.0009794031697, -0.001395697281, -0.001836769709, -0.0003810158419, -0.0007804871647, -0.0004709506701, 0.001040110653, 0.00361633842, 0.006343258838, 0.007741899383, 0.006485585537, 0.002516377918, -0.001983328447, -0.003077178263, -0.0006210510613, -0.001327613954, -0.0009533610854, 0.001333370863, 0.005374889246, 0.00977056506, 0.01220692975, 0.0105660373, 0.004647204567, -0.002308158029, -0.004298497198, -0.0008469148695, -0.001915533926, -0.001679572938, 0.001021006792, 0.006088105084, 0.01180203183, 0.01522384198, 0.01358998141, 0.006487439602, -0.002178542742, -0.004948200756, -0.000924866796, -0.002272339037, -0.002525870154, -0.0004134917315, 0.004153249219, 0.009653963935, 0.01329685106, 0.01233475664, 0.006159418396, -0.001746089904, -0.004414619684, -0.0006463287271, -0.001776638849, -0.002514898643, -0.001991123463, 5.915616261e-05, 0.002966719025, 0.005244548759, 0.005289437284, 0.00256585504, -0.001236606633, -0.002433676955, -9.306509919e-06, -1.852835795e-05, -9.593193383e-06, 2.462575036e-05, 7.008260814e-05, 9.786900407e-05, 8.260527933e-05, 2.118929023e-05, -5.93688377e-05, -0.000109535845, -8.221189988e-05, -4.87376589e-05, -9.392936983e-05, -3.001214729e-05, 0.0001932235534, 0.000505473064, 0.0007401951707, 0.0007328242381, 0.0004328918883, -3.531581322e-05, -0.000397878095, -0.0003635983551, -0.0001505169244, -0.0002926512227, -8.785564557e-05, 0.0006450751539, 0.001709742132, 0.002583565265, 0.002712145974, 0.001871936173, 0.0003940510163, -0.0008755203558, -0.0009721976604, -0.0003467630817, -0.0006940305874, -0.0002586144385, 0.001418791414, 0.003943763105, 0.006138835861, 0.006684745213, 0.004961194689, 0.001614950924, -0.001456860496, -0.001971765953, -0.0006468881422, -0.001346271231, -0.0006586171268, 0.00232997245, 0.007001420726, 0.01125706187, 0.0126284741, 0.009820042576, 0.003830358525, -0.001954749656, -0.003266441111, -0.001008619823, -0.002197753863, -0.001387468192, 0.00291531699, 0.009945261693, 0.01664037386, 0.01921994297, 0.01550845718, 0.006740144297, -0.002118588731, -0.004517112816, -0.001314253795, -0.003026767135, -0.002429361298, 0.002491509662, 0.01103541733, 0.01958292652, 0.02341136113, 0.01955626794, 0.009182781665, -0.001782079473, -0.005142976977, -0.001361383235, -0.003370624153, -0.003445360906, 0.0005445834803, 0.008260972444, 0.01651060953, 0.02080542645, 0.01805548934, 0.008962053022, -0.001146918183, -0.004511001501, -0.0008912265066, -0.00242145856, -0.003125952067, -0.001605257277, 0.002243217452, 0.006845451721, 0.009702223448, 0.008892638686, 0.004522812512, -0.0006611979059, -0.002411256599 +-1.461479524e-06, -4.714777538e-06, -7.613684673e-06, -5.611711615e-06, 6.455532531e-06, 2.998565294e-05, 5.612951634e-05, 6.117701541e-05, 1.264878273e-05, -9.212115854e-05, -0.0001405372, -8.19342355e-06, -2.604490027e-05, -3.941618886e-05, -1.862504208e-05, 7.045310021e-05, 0.0002395963219, 0.0004390147895, 0.0005282837273, 0.0003081693632, -0.0002656238753, -0.0006132878902, -2.673381811e-05, -8.517928782e-05, -0.0001269614295, -4.964908889e-05, 0.0002654832755, 0.000864085213, 0.001589386677, 0.001984467431, 0.00138827998, -0.0003917697432, -0.001617124018, -6.463182792e-05, -0.0002082736257, -0.0003144766285, -0.0001322055223, 0.0006321232741, 0.002100101727, 0.003914177668, 0.005002491864, 0.00379217721, -0.0002407231182, -0.003233028871, -0.0001260036762, -0.0004128884569, -0.0006416749071, -0.0003277120494, 0.001102551089, 0.003903088829, 0.007428462539, 0.00968426517, 0.007705626267, 0.0004158490896, -0.005276152297, -0.000204780882, -0.0006856951125, -0.001109778425, -0.0007112702021, 0.001432160539, 0.005760249198, 0.0113266632, 0.01508705218, 0.01244753154, 0.001618031842, -0.007182902434, -0.0002780616378, -0.0009594207927, -0.001643814718, -0.001348028917, 0.001148970815, 0.006490121191, 0.01358187783, 0.01865736192, 0.01590621066, 0.002890969213, -0.008064364618, -0.0003017492884, -0.001091013361, -0.002034566093, -0.002182807431, -0.0002802242809, 0.004444977395, 0.01113309049, 0.01632081038, 0.01444395107, 0.002931947322, -0.00706081648, -0.0002094053193, -0.0008105894492, -0.001686171911, -0.002311355337, -0.00189440931, 0.0001768555725, 0.003643836992, 0.00674485062, 0.006392344172, 0.0009397004748, -0.003898157108, -3.335184742e-06, -1.06841788e-05, -1.580554755e-05, -7.983088753e-06, 1.975201948e-05, 6.185485904e-05, 9.692771604e-05, 9.302195799e-05, 2.278830483e-05, -9.948772347e-05, -0.0001484501622, -1.743600626e-05, -5.502720109e-05, -7.601210207e-05, -1.593024436e-05, 0.0001713021644, 0.0004603549862, 0.0007290705093, 0.0007828323316, 0.0004403017219, -0.0002530019785, -0.000636287951, -5.359474582e-05, -0.0001699363426, -0.000233064589, -3.30838928e-05, 0.0005910937216, 0.00157785499, 0.002547571151, 0.002863844153, 0.001900208994, -0.0002724568268, -0.001654577429, -0.0001227413712, -0.0003948612481, -0.0005556593922, -0.0001150938844, 0.001326709826, 0.00367047853, 0.006070017449, 0.007038230016, 0.005045000527, 0.0001243402707, -0.003271612964, -0.000227489449, -0.0007465064054, -0.001095620371, -0.0003688489755, 0.002216722504, 0.006559020535, 0.01116884946, 0.01330044739, 0.0100132876, 0.001166613484, -0.005291257609, -0.000352201245, -0.001183781481, -0.001829368966, -0.0009123085143, 0.002827748495, 0.00936753068, 0.01656914014, 0.0202763879, 0.01585935888, 0.00281300868, -0.007145964028, -0.0004551794263, -0.001576265595, -0.00259267218, -0.001792832988, 0.002494422727, 0.010433743, 0.01955626794, 0.02474022277, 0.02003531288, 0.004438926609, -0.007950345873, -0.0004667474964, -0.001683714779, -0.003000272109, -0.002789521004, 0.0006745515835, 0.007800155376, 0.01649362351, 0.02198529157, 0.01845833025, 0.004570950891, -0.006858527604, -0.000302121176, -0.001152413786, -0.002264998922, -0.002723915699, -0.00143307081, 0.00205914215, 0.006799366523, 0.0102201995, 0.008991018372, 0.00211434412, -0.003687766036 +-4.094902069e-07, -1.969219225e-06, -5.145370714e-06, -8.913039967e-06, -9.170614283e-06, 1.839759493e-06, 3.188971226e-05, 7.484905894e-05, 8.183978736e-05, -3.288341001e-05, -0.000178630986, -2.290442657e-06, -1.088472479e-05, -2.761760688e-05, -4.465908933e-05, -3.524440465e-05, 4.923527571e-05, 0.0002574579703, 0.0005583014377, 0.0006790709751, 0.0001274185119, -0.0007034156671, -7.44571539e-06, -3.532239731e-05, -8.876211229e-05, -0.0001398963395, -9.759987189e-05, 0.0002014015567, 0.000921659261, 0.001973215821, 0.002500559226, 0.0009372670995, -0.001677931048, -1.792158898e-05, -8.533478603e-05, -0.0002147202685, -0.00033862215, -0.0002377243804, 0.0004800247472, 0.002213748639, 0.004774587002, 0.006208112722, 0.002908056078, -0.003033810562, -3.476786079e-05, -0.0001667313656, -0.0004228995818, -0.0006778770382, -0.0005169474386, 0.0008048082986, 0.004056209172, 0.00892660666, 0.01185776382, 0.006247916013, -0.004458580891, -5.6187088e-05, -0.0002722241789, -0.0006998619869, -0.001153422011, -0.000993061884, 0.0009447347651, 0.005884336771, 0.01342498264, 0.0182425881, 0.0103930362, -0.005414503026, -7.574986854e-05, -0.0003726998627, -0.0009790213414, -0.001683435198, -0.0016890819, 0.0004913981987, 0.006473241568, 0.01589478921, 0.02229941049, 0.0134707207, -0.005383777468, -8.139335382e-05, -0.0004109106045, -0.001118985647, -0.00205424062, -0.002482548396, -0.0009493530463, 0.004219656646, 0.01292482013, 0.01935519421, 0.01218458508, -0.004350832785, -5.579831566e-05, -0.0002931653396, -0.0008413312636, -0.001679653373, -0.002434919337, -0.002258912598, -6.890694475e-05, 0.00434765209, 0.008099654204, 0.005150585541, -0.002616848056, -9.562796709e-07, -4.399196233e-06, -1.045716056e-05, -1.560148076e-05, -1.206899978e-05, 9.51407531e-06, 5.330317971e-05, 0.0001045916118, 0.0001069375858, -2.269693809e-05, -0.0001792976284, -4.991858951e-06, -2.280116897e-05, -5.295503659e-05, -7.356581298e-05, -3.742034695e-05, 0.0001132567627, 0.000406745702, 0.0007623058187, 0.0008608064167, 0.0002193316868, -0.0006901806732, -1.528424991e-05, -7.004537179e-05, -0.0001624598094, -0.0002220199261, -9.452760337e-05, 0.0004132898112, 0.001405517509, 0.002639145848, 0.003109541151, 0.001267751196, -0.001611962769, -3.48299355e-05, -0.000161002692, -0.0003772485632, -0.0005236493106, -0.0002403833692, 0.0009365124578, 0.003279849357, 0.006264770231, 0.007598063065, 0.00369194307, -0.002856186542, -6.41945175e-05, -0.0003002272953, -0.0007152357948, -0.001025660856, -0.0005681657741, 0.001539836288, 0.005861648487, 0.01150567608, 0.01430821972, 0.007668175029, -0.004112528298, -9.876678089e-05, -0.0004685074897, -0.001140007758, -0.001706162389, -0.001164542937, 0.001866537049, 0.008342306614, 0.01703966899, 0.02174643237, 0.0124729675, -0.004880136143, -0.0001266883657, -0.000611753559, -0.0015292791, -0.002414330532, -0.002033612284, 0.001387352058, 0.009182781665, 0.02003531288, 0.02641091595, 0.01597505545, -0.004707472334, -0.0001286473247, -0.000636764734, -0.001651843719, -0.002795606688, -0.002920867341, -0.0002751604651, 0.00659352763, 0.01670895485, 0.02321845861, 0.01461168919, -0.003656367072, -8.229019685e-05, -0.000421681735, -0.00114917996, -0.002115491065, -0.002701546751, -0.001868124074, 0.001354357451, 0.006659010035, 0.01050654343, 0.006708241669, -0.002143409089 +-8.676809954e-08, -5.8787897e-07, -2.21850801e-06, -5.97738533e-06, -1.228548537e-05, -1.870974654e-05, -1.633198031e-05, 1.019043831e-05, 5.950997102e-05, 6.358670927e-05, -2.723007626e-05, -4.826305451e-07, -3.235023397e-06, -1.199723801e-05, -3.149481547e-05, -6.204457248e-05, -8.627232957e-05, -4.871563613e-05, 0.0001437108265, 0.0004948028187, 0.0006280902136, 0.0001450168384, -1.558945894e-06, -1.040297381e-05, -3.826558033e-05, -9.924114963e-05, -0.0001917878236, -0.0002557314668, -0.0001072410689, 0.0005608888126, 0.001787297546, 0.00241176823, 0.0009742553533, -3.727212435e-06, -2.484760283e-05, -9.112399767e-05, -0.0002353429034, -0.0004525134054, -0.0005989718116, -0.000240503415, 0.001351886126, 0.004320964646, 0.006077406129, 0.002981170296, -7.180558038e-06, -4.793149607e-05, -0.0001758357929, -0.0004545044994, -0.0008772210089, -0.001178252401, -0.0005482433435, 0.002386257594, 0.007986060305, 0.01166538263, 0.006392094135, -1.151724193e-05, -7.713755551e-05, -0.0002838655769, -0.0007373402342, -0.001438236656, -0.001990848872, -0.001159867904, 0.003188326539, 0.01177029628, 0.01794432276, 0.01066201267, -1.538740532e-05, -0.0001037232213, -0.0003843956035, -0.001008729005, -0.002005362872, -0.002909940027, -0.002191936273, 0.002873042728, 0.01345566074, 0.02183509181, 0.01394463177, -1.6330649e-05, -0.0001114422914, -0.0004187677111, -0.001119949575, -0.002298470408, -0.003575680909, -0.003528900697, 0.0005213054305, 0.0101021927, 0.01872055562, 0.01298499928, -1.101264785e-05, -7.66967578e-05, -0.0002946264228, -0.0008102164593, -0.001735081401, -0.002929133114, -0.003635211379, -0.002270902303, 0.002408020581, 0.007589697429, 0.006100490659, -1.973105023e-07, -1.234577397e-06, -4.164274647e-06, -9.807665134e-06, -1.73412811e-05, -2.21208574e-05, -1.339216741e-05, 2.3165973e-05, 8.047307875e-05, 8.293056056e-05, -1.887550332e-05, -1.028940027e-06, -6.419270628e-06, -2.146388612e-05, -4.959886453e-05, -8.413301019e-05, -9.570635243e-05, -1.945067759e-05, 0.0002308887053, 0.0006261979346, 0.0007474049831, 0.0001973027013, -3.141109885e-06, -1.965150943e-05, -6.575256645e-05, -0.0001514691453, -0.000253923776, -0.0002765690718, -7.218934543e-06, 0.0008399510402, 0.002202399362, 0.002788634491, 0.001141013703, -7.13025858e-06, -4.48664657e-05, -0.0001509709092, -0.0003497388219, -0.0005897057774, -0.0006470056915, -2.386469558e-05, 0.001963348939, 0.005235573739, 0.00691250625, 0.003353821759, -1.30832235e-05, -8.294695469e-05, -0.0002815041173, -0.0006591099684, -0.001129113993, -0.001284849679, -0.0002019936546, 0.003419511492, 0.009556923647, 0.01311307613, 0.007043511834, -2.002615831e-05, -0.0001281139633, -0.0004395073057, -0.001043846543, -0.001829064837, -0.002194887075, -0.0007328255397, 0.004596572467, 0.01396591706, 0.01999305414, 0.01159210417, -2.552303622e-05, -0.0001651151138, -0.000574279198, -0.001389589543, -0.002508862095, -0.003222070587, -0.001782079473, 0.004438926609, 0.01597505545, 0.02421941915, 0.01503681216, -2.568831692e-05, -0.0001687397341, -0.0005980476689, -0.001484644261, -0.002791746865, -0.003907944306, -0.003199331334, 0.001931395042, 0.01241658327, 0.02092759844, 0.01400014062, -1.623575453e-05, -0.0001089219828, -0.0003959115036, -0.001016012025, -0.002009107527, -0.003096209353, -0.00339631938, -0.001383961688, 0.003821373814, 0.008915799429, 0.006703564142 +-1.047064994e-08, -9.646039924e-08, -5.002465591e-07, -1.910480852e-06, -5.950465766e-06, -1.584254141e-05, -3.615540348e-05, -6.491175003e-05, -6.127081204e-05, 7.25776541e-05, 0.0002458306303, -5.778306821e-08, -5.271227363e-07, -2.701303471e-06, -1.01801397e-05, -3.124617503e-05, -8.178924288e-05, -0.0001823611564, -0.0003127703327, -0.0002411957946, 0.0005333980672, 0.001420933846, -1.851141221e-07, -1.67877665e-06, -8.540236088e-06, -3.192435895e-05, -9.712934111e-05, -0.0002516863145, -0.0005532994452, -0.0009225263409, -0.000618729934, 0.001854043066, 0.004489774695, -4.389231427e-07, -3.966058501e-06, -2.008103092e-05, -7.467847821e-05, -0.0002259836687, -0.0005820301539, -0.001268615596, -0.002080184034, -0.001290765988, 0.004412543497, 0.01020135606, -8.385529206e-07, -7.560957783e-06, -3.816830802e-05, -0.0001414818113, -0.0004267458877, -0.001095220218, -0.002375305273, -0.003860589628, -0.002336639896, 0.008114759867, 0.01835290694, -1.333237306e-06, -1.201151496e-05, -6.053961381e-05, -0.0002240172381, -0.0006746007312, -0.001728471283, -0.003740116905, -0.006063669289, -0.00375137663, 0.01199656048, 0.0270492136, -1.763036521e-06, -1.589703457e-05, -8.012911345e-05, -0.0002964722957, -0.0008928237749, -0.002288145962, -0.00495452585, -0.008076482693, -0.005400955408, 0.01393134681, 0.03227371672, -1.844998917e-06, -1.669378658e-05, -8.434078159e-05, -0.0003126122884, -0.0009430362732, -0.002422032222, -0.005268514153, -0.008744973006, -0.006802347196, 0.01106687826, 0.02856109421, -1.219774954e-06, -1.110889999e-05, -5.635979482e-05, -0.0002094335334, -0.0006328485944, -0.001628930337, -0.003569168292, -0.006112018751, -0.005799796034, 0.00364271935, 0.01393111153, -2.224872658e-08, -1.843874171e-07, -8.450107922e-07, -2.83422912e-06, -7.782438964e-06, -1.849757692e-05, -3.844945628e-05, -6.414221714e-05, -5.447938552e-05, 8.439067966e-05, 0.0002545889419, -1.159673619e-07, -9.606490575e-07, -4.391196019e-06, -1.465499393e-05, -3.992401618e-05, -9.376565331e-05, -0.0001909949411, -0.0003039646549, -0.0002006402632, 0.0005983712607, 0.001467294863, -3.532745126e-07, -2.93409996e-06, -1.343298572e-05, -4.484364164e-05, -0.0001219960061, -0.000285363996, -0.0005756301274, -0.0008918247441, -0.0004941448619, 0.002048122115, 0.004625842816, -7.996081441e-07, -6.669184069e-06, -3.064814578e-05, -0.0001026369067, -0.0002798470047, -0.0006549440843, -0.00131677079, -0.002013502462, -0.001022275826, 0.004827876789, 0.01048996621, -1.462175742e-06, -1.225888025e-05, -5.662181314e-05, -0.0001905417585, -0.0005218103598, -0.00122522738, -0.002465018772, -0.003754452901, -0.001884936976, 0.008816661498, 0.01883858853, -2.228992034e-06, -1.880055581e-05, -8.736710261e-05, -0.000295805686, -0.0008148957076, -0.001923391774, -0.003883579855, -0.005933624582, -0.003133394225, 0.01296858223, 0.02772077111, -2.825564214e-06, -2.400355485e-05, -0.0001123700418, -0.0003833382272, -0.001064049578, -0.002529717028, -0.005142976977, -0.007950345873, -0.004707472334, 0.01503681216, 0.03303591411, -2.8210217e-06, -2.418487078e-05, -0.0001142766531, -0.0003935460439, -0.001102889654, -0.002647789417, -0.005445543856, -0.008633338779, -0.006176238115, 0.01205714997, 0.02923558951, -1.761427526e-06, -1.527641678e-05, -7.298917183e-05, -0.0002540583348, -0.0007194447076, -0.001746349853, -0.003648116127, -0.006017662758, -0.00541791622, 0.004208599589, 0.01430208549 +2.834255174e-05, -5.675511947e-05, -6.274768456e-05, -3.569405711e-05, -1.578150498e-05, -6.129578112e-06, -2.147681008e-06, -6.663177506e-07, -1.737063151e-07, -3.411805708e-08, -3.812334902e-09, 0.0002504944146, -0.0002423728482, -0.0003424830566, -0.0002107020059, -9.66489852e-05, -3.826847211e-05, -1.357247914e-05, -4.247982583e-06, -1.114368204e-06, -2.197559377e-07, -2.461217878e-08, 0.001063244416, -0.0005503251366, -0.001080255586, -0.0007225473722, -0.000344493856, -0.0001391050342, -4.99099386e-05, -1.574565136e-05, -4.153391003e-06, -8.218846843e-07, -9.221530346e-08, 0.003097410927, -0.0007503612055, -0.002513898617, -0.001843621286, -0.0009162884171, -0.0003777252932, -0.0001370980605, -4.35779015e-05, -1.155357953e-05, -2.293383544e-06, -2.577106139e-07, 0.007032244127, -0.0002708128076, -0.004679137888, -0.003812475296, -0.001983330938, -0.0008362050023, -0.0003071966894, -9.838262228e-05, -2.62146411e-05, -5.219703823e-06, -5.874504321e-07, 0.01313083719, 0.001742393083, -0.007120325803, -0.006586768174, -0.003607938889, -0.001560324478, -0.0005810070554, -0.0001876053528, -5.026042533e-05, -1.004178305e-05, -1.132178491e-06, 0.02031712497, 0.005839566873, -0.008665063694, -0.009437927045, -0.005489101535, -0.002446154781, -0.0009258977071, -0.0003019637711, -8.142114147e-05, -1.633100561e-05, -1.844584617e-06, 0.02442184645, 0.01041470002, -0.00774020869, -0.01049122418, -0.006541393085, -0.003022543084, -0.001168441121, -0.0003860491548, -0.000104909266, -2.112053176e-05, -2.386235982e-06, 0.0174348424, 0.009419120839, -0.003919778109, -0.007029446109, -0.004723497458, -0.002274996641, -0.0009026551426, -0.0003030675067, -8.305435587e-05, -1.675228708e-05, -1.885691036e-06, 0.0001218003807, -1.519337183e-05, -6.869826943e-05, -5.133292426e-05, -2.689711572e-05, -1.184314522e-05, -4.531682747e-06, -1.477718708e-06, -3.891826781e-07, -7.429988447e-08, -7.799176587e-09, 0.0007901866004, 5.034359752e-05, -0.0003349318662, -0.0002815527939, -0.0001534345683, -6.873059544e-05, -2.658050457e-05, -8.747415267e-06, -2.324840263e-06, -4.480073332e-07, -4.748243734e-08, 0.002832650769, 0.0005581638697, -0.0009382365312, -0.0009047009305, -0.0005144524775, -0.0002345901073, -9.163500155e-05, -3.039813435e-05, -8.141480191e-06, -1.581214815e-06, -1.689346554e-07, 0.007349319478, 0.002248293516, -0.001905658033, -0.002173608617, -0.001295612374, -0.0006022130741, -0.0002375707181, -7.938579017e-05, -2.140668481e-05, -4.18605166e-06, -4.503619972e-07, 0.01525198527, 0.006169918172, -0.002971839035, -0.00423863402, -0.002666164185, -0.001266129377, -0.0005047431013, -0.0001698745913, -4.61020128e-05, -9.072732738e-06, -9.824224468e-07, 0.02644559875, 0.01327299833, -0.003386536758, -0.00686772496, -0.004610042427, -0.002245901841, -0.0009063726755, -0.0003074820711, -8.401802024e-05, -1.664377329e-05, -1.814091546e-06, 0.03856378396, 0.0233358758, -0.001877395797, -0.009000848579, -0.006588960591, -0.00331854964, -0.001361383235, -0.0004667474964, -0.0001286473247, -2.568831692e-05, -2.8210217e-06, 0.04463027747, 0.03199723858, 0.002295271564, -0.008505430825, -0.00711041691, -0.003756264402, -0.001579388415, -0.0005503650102, -0.0001536463543, -3.101423302e-05, -3.437586244e-06, 0.03151725813, 0.02614529091, 0.00528826398, -0.004104979068, -0.004341633783, -0.002463846068, -0.001075685238, -0.0003843391653, -0.0001093196416, -2.238517237e-05, -2.507638967e-06 +-1.025478302e-05, -9.49963477e-06, -2.172196761e-05, -2.582078725e-05, -2.02867894e-05, -1.245180526e-05, -6.379975747e-06, -2.756606798e-06, -9.701361487e-07, -2.519244807e-07, -3.671145654e-08, -1.300515246e-05, -1.753239063e-06, -8.778115415e-05, -0.0001331894618, -0.0001143430224, -7.352251721e-05, -3.876415008e-05, -1.706808637e-05, -6.083887898e-06, -1.593728528e-06, -2.33700624e-07, 9.975945204e-05, 0.0001575391347, -0.0001795975023, -0.0003996343494, -0.0003777306949, -0.0002542621955, -0.0001377290475, -6.170536883e-05, -2.224772266e-05, -5.872063601e-06, -8.654169442e-07, 0.0005945198506, 0.0007910790214, -0.0001713568565, -0.0008876602266, -0.0009355099692, -0.0006595933533, -0.0003667745944, -0.0001670456276, -6.086946334e-05, -1.617512677e-05, -2.394145053e-06, 0.001908455893, 0.002446922272, 0.0002426203566, -0.001567020876, -0.001886636431, -0.001397474412, -0.0007980584945, -0.0003694647217, -0.0001360374639, -3.638825425e-05, -5.407926346e-06, 0.004479157012, 0.005750671868, 0.00155503894, -0.00220310019, -0.003183399865, -0.002494527616, -0.001466194647, -0.0006906330946, -0.000257082346, -6.923832641e-05, -1.033297566e-05, 0.008099429763, 0.01062049618, 0.004049535554, -0.002366721756, -0.004483512244, -0.00375022642, -0.002274999128, -0.001091551943, -0.0004109174957, -0.0001114082683, -1.6685586e-05, 0.01051573057, 0.01417454474, 0.006350642935, -0.001935694709, -0.00509886392, -0.004534625507, -0.002831829582, -0.001380916551, -0.000524378215, -0.0001426673796, -2.136280984e-05, 0.007372398558, 0.01013298893, 0.004712446967, -0.001370411146, -0.003850287816, -0.00350461173, -0.00221955587, -0.001089971867, -0.0004142760543, -0.0001122285356, -1.666271801e-05, 5.145798712e-05, 3.628966311e-05, -1.486612552e-05, -4.024469636e-05, -3.840083184e-05, -2.604036368e-05, -1.406290722e-05, -6.148356196e-06, -2.10643484e-06, -5.145925968e-07, -6.86893613e-08, 0.0003698750605, 0.0003239905029, 1.02837165e-05, -0.0001766135196, -0.0001964977559, -0.0001413371529, -7.894414487e-05, -3.534528589e-05, -1.234256282e-05, -3.065619795e-06, -4.154411905e-07, 0.00144011837, 0.001410714327, 0.0003071622627, -0.0004388099696, -0.000594405434, -0.000454265235, -0.000261937905, -0.0001198102904, -4.253819035e-05, -1.071562357e-05, -1.47062685e-06, 0.0040267145, 0.004251213824, 0.001382358254, -0.000759778415, -0.001354586692, -0.001103498674, -0.0006561971266, -0.0003061340778, -0.000110326661, -2.814042869e-05, -3.904910042e-06, 0.008979597313, 0.01006870072, 0.004036444896, -0.0008829315441, -0.002513085088, -0.002199130373, -0.001349599656, -0.0006419236595, -0.0002346561373, -6.055530539e-05, -8.489289333e-06, 0.01671055785, 0.01982547608, 0.009212252969, -0.0002443985099, -0.003836832167, -0.00367983272, -0.002341843069, -0.001137760863, -0.0004222431177, -0.0001102896161, -1.562258148e-05, 0.02607909408, 0.03283908325, 0.01734384121, 0.002066429486, -0.0045249079, -0.005034832768, -0.003370624153, -0.001683714779, -0.000636764734, -0.0001687397341, -2.418487078e-05, 0.03199723858, 0.04301644696, 0.0256884323, 0.006304902987, -0.003238654488, -0.005041791624, -0.003677208034, -0.001916968703, -0.0007448362186, -0.0002011925878, -2.92492598e-05, 0.02353012596, 0.0338434744, 0.02263603623, 0.007969386012, -0.0002833994039, -0.002667819842, -0.002285993988, -0.00127529819, -0.0005150572834, -0.0001426003168, -2.106515459e-05 +-2.062526998e-05, 8.401751204e-06, 9.652471161e-06, -4.238579273e-06, -1.30224241e-05, -1.394484774e-05, -1.062141651e-05, -6.394976243e-06, -3.030509845e-06, -1.038574973e-06, -1.97720006e-07, -0.0001209747738, 7.61607086e-05, 0.0001054771428, 1.56490951e-05, -5.399518557e-05, -7.298808994e-05, -6.037553359e-05, -3.794401822e-05, -1.845737697e-05, -6.43714209e-06, -1.241110679e-06, -0.0004116376558, 0.0003325968248, 0.0005090029622, 0.0001830797249, -0.0001119507326, -0.0002215993346, -0.000201236219, -0.0001320368351, -6.581938497e-05, -2.331194715e-05, -4.542019722e-06, -0.001039780285, 0.000998693802, 0.001648218239, 0.0007887514709, -0.0001025043873, -0.0004965578069, -0.0005031014811, -0.0003450376738, -0.0001760959803, -6.325487234e-05, -1.243674542e-05, -0.002129700748, 0.002342740279, 0.004129288035, 0.002323912868, 0.0001867279955, -0.0008815974036, -0.001025177369, -0.0007374371526, -0.0003854388138, -0.0001403606722, -2.783182014e-05, -0.003699130004, 0.004484889998, 0.008456062099, 0.005344982121, 0.001099622953, -0.001246241381, -0.00175327563, -0.001331293839, -0.0007136865559, -0.0002635675051, -5.270306313e-05, -0.005653373492, 0.006729519629, 0.01398872747, 0.009716264019, 0.002795656213, -0.0013797272, -0.002528581427, -0.002034542947, -0.001118438245, -0.000418474512, -8.427768578e-05, -0.00762147082, 0.006435732231, 0.01662066492, 0.01255074294, 0.004141811666, -0.001331757578, -0.003017887343, -0.002520184441, -0.001405351235, -0.0005287043482, -0.0001065608046, -0.00701802304, 0.001685378941, 0.009916757857, 0.008175588255, 0.00257852893, -0.001290310333, -0.002457770759, -0.00200445701, -0.001103907101, -0.0004104769782, -8.169149497e-05, -3.577388543e-06, 3.572424988e-05, 2.730439004e-05, -4.370390239e-06, -2.583466039e-05, -3.006802279e-05, -2.339293723e-05, -1.378334914e-05, -6.16683831e-06, -1.940591318e-06, -3.331089914e-07, -5.63986537e-06, 0.0002724962804, 0.0002601407202, 6.666448885e-05, -8.855117664e-05, -0.0001420121738, -0.0001222934713, -7.604312171e-05, -3.526527913e-05, -1.140402263e-05, -2.002020599e-06, 2.110091697e-05, 0.001091380439, 0.001162879595, 0.0004870414037, -0.0001264223392, -0.0003912855016, -0.0003787982491, -0.0002484097086, -0.0001190410256, -3.942115397e-05, -7.053078872e-06, 0.0001402125915, 0.003102840307, 0.003556522054, 0.001817121403, 6.681540724e-05, -0.0007956195505, -0.0008865197841, -0.0006134606308, -0.0003031555812, -0.0001025616581, -1.865779181e-05, 0.0004555599517, 0.007009106789, 0.008508552855, 0.004898952529, 0.0009003034861, -0.001265697741, -0.001697661538, -0.001244236235, -0.0006338741591, -0.0002188561445, -4.043381089e-05, 0.001070998636, 0.01321058374, 0.01688603551, 0.01064521425, 0.002998966803, -0.001491860796, -0.002706527163, -0.002126304885, -0.001120298268, -0.00039517647, -7.416648097e-05, 0.001905029557, 0.02086020494, 0.02813413564, 0.01926594463, 0.006997760104, -0.0008224434768, -0.003445360906, -0.003000272109, -0.001651843719, -0.0005980476689, -0.0001142766531, 0.002295271564, 0.0256884323, 0.0369160694, 0.02749285867, 0.01208975297, 0.001321013007, -0.003005948759, -0.003176087726, -0.001869927233, -0.0007014469341, -0.0001370171031, 0.00127950978, 0.01863769597, 0.02892224993, 0.02341696725, 0.01193511582, 0.00304256965, -0.001114749371, -0.001880334957, -0.001231880934, -0.0004847875421, -9.71488544e-05 +-1.328512014e-05, 3.095491565e-06, 1.202531067e-05, 6.8324613e-06, -2.832324996e-06, -9.916207558e-06, -1.222962796e-05, -1.052696915e-05, -6.793824557e-06, -3.100677212e-06, -7.809314183e-07, -8.782089297e-05, 2.828193207e-05, 0.0001076053018, 8.471984511e-05, 1.974863887e-05, -3.539178282e-05, -6.08599144e-05, -5.838467352e-05, -3.979450246e-05, -1.877384749e-05, -4.835712645e-06, -0.0003354465762, 0.0001183076137, 0.0004816995208, 0.0004341709954, 0.0001867540298, -4.692719408e-05, -0.0001738951964, -0.0001902347466, -0.0001370385787, -6.664020359e-05, -1.749437436e-05, -0.0009513272526, 0.0003287236127, 0.001499003827, 0.001471317606, 0.0007808746451, 6.81515508e-05, -0.0003598123567, -0.0004653628339, -0.0003550282999, -0.0001776442653, -4.742194597e-05, -0.002195383843, 0.0006815606024, 0.003654637038, 0.003836365629, 0.002289056687, 0.0005541403137, -0.0005664248015, -0.0009276241354, -0.0007533342094, -0.0003877781868, -0.0001051535912, -0.004308346144, 0.00103379149, 0.007288991243, 0.008148703906, 0.005277577174, 0.001768426084, -0.0006395942354, -0.001549230234, -0.001351505852, -0.0007165230588, -0.0001973315412, -0.007334219418, 0.0006892617419, 0.01158110823, 0.01393145405, 0.009631328879, 0.003806916615, -0.0004129077782, -0.002179878155, -0.002051587835, -0.001118652571, -0.0003123091398, -0.01042301612, -0.001859869218, 0.01258601042, 0.01701723719, 0.01244718581, 0.005287458454, -0.00016101737, -0.002561855228, -0.002513409356, -0.001388361192, -0.0003892679776, -0.009433958765, -0.005112318763, 0.00576370832, 0.01033068628, 0.008007191933, 0.003277425981, -0.0004833455003, -0.002104642025, -0.001959370408, -0.001058774957, -0.0002922136694, -1.322649487e-05, 1.356180858e-05, 2.875423612e-05, 1.801072712e-05, -3.641382891e-06, -2.043114695e-05, -2.568191071e-05, -2.117753349e-05, -1.263789577e-05, -5.219016302e-06, -1.177284398e-06, -8.308677319e-05, 0.0001061941956, 0.0002414632049, 0.0001995143818, 6.442048261e-05, -5.847482729e-05, -0.0001158425908, -0.0001092262553, -6.984001864e-05, -3.016259457e-05, -7.032158555e-06, -0.0003076136398, 0.0004207810076, 0.001020961422, 0.000944831115, 0.0004621777618, -2.785896632e-05, -0.000300181101, -0.0003337158063, -0.0002286131663, -0.0001028223832, -2.465825712e-05, -0.0008545258224, 0.001161536921, 0.003017691146, 0.002993493273, 0.001720204487, 0.0003104067162, -0.0005582318283, -0.0007699734886, -0.0005659595144, -0.0002643299846, -6.499202587e-05, -0.001941448908, 0.002508626054, 0.007033848887, 0.007360341425, 0.004644644643, 0.001395176141, -0.0007600439386, -0.001451261028, -0.001151160021, -0.0005578952786, -0.0001404118862, -0.003751602584, 0.004430244763, 0.01361506033, 0.01496486118, 0.01012533821, 0.003849336856, -0.0005821758013, -0.002266599224, -0.001973655597, -0.0009957996789, -0.0002567091163, -0.006237645965, 0.006291097619, 0.02198240958, 0.025494277, 0.01839009001, 0.008208699709, 0.0005445834803, -0.002789521004, -0.002795606688, -0.001484644261, -0.0003935460439, -0.008505430825, 0.006304902987, 0.02749285867, 0.0340901235, 0.0262962389, 0.01337323314, 0.002894368539, -0.002256587416, -0.002973318489, -0.001701628563, -0.0004672350651, -0.007283646329, 0.002878118208, 0.02002651265, 0.02704177486, 0.02237486362, 0.0126625341, 0.004080387548, -0.0006209875663, -0.001769117163, -0.00113405329, -0.0003252521522 +-6.304959282e-06, -1.765326488e-06, 5.606468846e-06, 7.970127599e-06, 4.28387313e-06, -2.735826593e-06, -9.416592887e-06, -1.279889061e-05, -1.171620145e-05, -7.321073617e-06, -2.508795093e-06, -4.346279875e-05, -9.486844186e-06, 5.207648494e-05, 8.140117857e-05, 6.521110548e-05, 1.938963243e-05, -3.058893676e-05, -6.227748151e-05, -6.475095387e-05, -4.309381387e-05, -1.53323267e-05, -0.0001727923751, -3.654524069e-05, 0.0002350234089, 0.0003888939415, 0.0003530121794, 0.0001809608907, -2.626464304e-05, -0.0001739694838, -0.0002108689263, -0.0001492268044, -5.485219552e-05, -0.0005099094012, -0.0001218408704, 0.0007292248709, 0.001266574335, 0.001229654283, 0.0007516171808, 0.0001279023407, -0.0003509771474, -0.000517015973, -0.0003890065797, -0.0001472345642, -0.001225354058, -0.0003570130403, 0.001758562688, 0.003209344162, 0.00326637166, 0.002192543735, 0.0006870983342, -0.0005338675873, -0.001036201452, -0.0008314245257, -0.0003235459691, -0.002506169721, -0.0009400952962, 0.00341877376, 0.006639907662, 0.007041555484, 0.005035617789, 0.002008369523, -0.0005627868627, -0.00174577269, -0.00150385196, -0.0006016910868, -0.004438972757, -0.002322898898, 0.005046224709, 0.0109596758, 0.0121796335, 0.009155512404, 0.004159353752, -0.000271737625, -0.002475240825, -0.002294530114, -0.0009419634769, -0.006514747618, -0.005057580406, 0.004174493448, 0.01246142191, 0.01494717097, 0.01175769575, 0.005683153002, 5.127398349e-05, -0.002872605637, -0.002778679305, -0.001155437213, -0.006025647998, -0.006660565961, -0.0004624624093, 0.006157770855, 0.008930705954, 0.007434321858, 0.003541054501, -0.0002672213087, -0.002232943695, -0.002069838733, -0.0008464885221, -9.053497135e-06, -5.302010221e-07, 1.492165036e-05, 2.093758168e-05, 1.27757811e-05, -3.448976086e-06, -1.778624331e-05, -2.337040129e-05, -1.961812688e-05, -1.103170325e-05, -3.390886661e-06, -5.938541767e-05, 3.474311811e-06, 0.0001268025377, 0.0001943416779, 0.0001616448628, 5.990517726e-05, -4.613972252e-05, -0.0001046871088, -0.0001025449774, -6.234053696e-05, -2.012836443e-05, -0.0002273555097, 1.721908224e-05, 0.0005328203733, 0.0008601132948, 0.0007954837994, 0.0004307527972, 5.696402048e-06, -0.0002685255302, -0.0003178186193, -0.0002084046824, -7.024035749e-05, -0.0006501718223, 2.352159302e-05, 0.001553866839, 0.002618495876, 0.002569551877, 0.001604337245, 0.0003777148665, -0.0004911943637, -0.0007449047313, -0.0005265263573, -0.0001844306201, -0.001518566499, -5.569155148e-05, 0.003556029057, 0.006250584467, 0.006400565484, 0.004334196961, 0.001500721835, -0.0006463842701, -0.001429644154, -0.001093151376, -0.000397149824, -0.003015169087, -0.0004067895768, 0.00671517949, 0.01237651589, 0.013156711, 0.009454818612, 0.003970850523, -0.0004302461381, -0.002285581812, -0.00191682508, -0.0007234973838, -0.005135481584, -0.00137618992, 0.01042554586, 0.02047387315, 0.02265874871, 0.01718112726, 0.008260972444, 0.0006745515835, -0.002920867341, -0.002791746865, -0.001102889654, -0.00711041691, -0.003238654488, 0.01208975297, 0.0262962389, 0.03062597916, 0.0245485825, 0.01318744185, 0.002865683266, -0.002571635617, -0.003085618765, -0.001294922655, -0.006114772467, -0.004235042245, 0.007536745832, 0.01965346579, 0.02448933231, 0.02080694094, 0.01224406205, 0.003857767986, -0.0009891830366, -0.001939990315, -0.0008829436602 +-2.609233366e-06, -2.724855906e-06, 5.196972837e-07, 4.566529911e-06, 6.326518451e-06, 3.891323278e-06, -2.548152027e-06, -1.038014397e-05, -1.537078311e-05, -1.404648677e-05, -6.884360807e-06, -1.828126173e-05, -1.808703718e-05, 9.591265019e-06, 4.72137792e-05, 7.09006824e-05, 6.377702276e-05, 2.384513571e-05, -3.268450615e-05, -7.614433299e-05, -7.956706732e-05, -4.151652022e-05, -7.378748209e-05, -7.262644738e-05, 4.933223943e-05, 0.0002238919202, 0.0003493744871, 0.0003484331401, 0.0002039948377, -2.467753262e-05, -0.0002193346428, -0.0002660277513, -0.000146834637, -0.0002210485741, -0.0002231434511, 0.0001551020476, 0.0007191441976, 0.001155535022, 0.001213931466, 0.000823971715, 0.0001484066033, -0.000465696584, -0.0006710684863, -0.0003901379556, -0.0005395417397, -0.0005700195211, 0.0003548831455, 0.001788808888, 0.002957218895, 0.00321775592, 0.002362435458, 0.0007560838649, -0.0007770086081, -0.001388770433, -0.0008492126457, -0.001121655417, -0.001268977936, 0.0005873412608, 0.003599466045, 0.006168285328, 0.006919896982, 0.005358488791, 0.002168976815, -0.001004400076, -0.002427972481, -0.001563913591, -0.002020113422, -0.002556090294, 0.0004114728638, 0.005597847858, 0.01026299901, 0.01194780864, 0.00966379587, 0.00445934117, -0.0009351729631, -0.003566593603, -0.002419014529, -0.003014230924, -0.004517094216, -0.001312459765, 0.005300054294, 0.01176126026, 0.01464683759, 0.0123888713, 0.006137937678, -0.0006563572567, -0.004149602062, -0.002914445467, -0.002835594562, -0.005127696913, -0.003791186602, 0.0007229878987, 0.005830129646, 0.008729210489, 0.007912786099, 0.003985083954, -0.0005985259913, -0.002989871999, -0.002077833644, -4.583462739e-06, -4.700948808e-06, 2.864865798e-06, 1.270318994e-05, 1.670373719e-05, 1.0617552e-05, -3.012998628e-06, -1.672085326e-05, -2.299044883e-05, -1.896940696e-05, -8.420233214e-06, -3.034194484e-05, -2.852893316e-05, 3.209913002e-05, 0.0001167997942, 0.0001666274965, 0.0001442093439, 5.833063819e-05, -4.370928085e-05, -0.0001070932876, -0.0001035530796, -4.96293196e-05, -0.0001168368494, -0.0001085275404, 0.000142280398, 0.0005095476645, 0.0007583389486, 0.0007232184543, 0.0004147610871, 4.053869703e-06, -0.0002897893214, -0.0003352941045, -0.0001721962383, -0.0003357250534, -0.0003221017084, 0.0004099145725, 0.001525180973, 0.00234567986, 0.002358582289, 0.001542168913, 0.0003531326853, -0.0005746513494, -0.0008220398684, -0.0004499872416, -0.0007881340093, -0.0007998025981, 0.0008922826101, 0.003570735914, 0.005663531919, 0.005912852013, 0.004166956147, 0.001412742407, -0.000877534304, -0.001656388754, -0.0009648245844, -0.001573961045, -0.001714970065, 0.001538103391, 0.006906470936, 0.0113257283, 0.01221601821, 0.009094056179, 0.003750313552, -0.0009426371046, -0.002808264026, -0.001749293021, -0.002697094843, -0.003215663089, 0.001987282288, 0.01104945623, 0.01892389207, 0.02112277935, 0.01651060953, 0.007800155376, -0.0002751604651, -0.003907944306, -0.002647789417, -0.003756264402, -0.005041791624, 0.001321013007, 0.01337323314, 0.0245485825, 0.02859190556, 0.02347346551, 0.01236838219, 0.001450486184, -0.004017239249, -0.003069406093, -0.003252586798, -0.005015768082, -0.0006374017929, 0.008894448633, 0.01847070842, 0.02277157106, 0.01966491458, 0.01131193103, 0.002561569174, -0.002231752434, -0.002046514105 +-9.760466763e-07, -1.989915069e-06, -1.634834368e-06, 6.830998128e-07, 4.181472501e-06, 6.652298325e-06, 5.161087938e-06, -2.131145234e-06, -1.340999401e-05, -2.149003863e-05, -1.630299525e-05, -6.883909241e-06, -1.368417433e-05, -9.103901676e-06, 1.254545578e-05, 4.629322104e-05, 7.55296883e-05, 7.6846757e-05, 3.328946692e-05, -4.649684091e-05, -0.0001141411126, -9.673509008e-05, -2.79294171e-05, -5.533190262e-05, -3.303017278e-05, 6.617770429e-05, 0.0002240395555, 0.0003713589393, 0.0004075824518, 0.0002549894944, -6.242581561e-05, -0.0003580070341, -0.0003372616067, -8.405337466e-05, -0.0001681673306, -9.832560719e-05, 0.0002162805484, 0.0007261800723, 0.001222146569, 0.001394139323, 0.0009935464719, 6.900324902e-05, -0.0008463852956, -0.0008844422792, -0.0002060627278, -0.0004201230657, -0.0002563021808, 0.0005250425025, 0.001816664586, 0.003111139382, 0.003644464491, 0.002788162696, 0.0006165461289, -0.001634353016, -0.001901136662, -0.0004302119341, -0.0009037586721, -0.0006108227842, 0.0009787118844, 0.003678202695, 0.006461295203, 0.007753928917, 0.006230990144, 0.001963844352, -0.002637061112, -0.003455505364, -0.0007779385646, -0.00172346584, -0.001408811906, 0.001171120515, 0.00578966744, 0.0107365795, 0.01330485939, 0.0111492055, 0.004239977146, -0.003512451234, -0.00526154182, -0.001166228557, -0.002825824455, -0.00300996587, -0.0001559053081, 0.005682245219, 0.0123845496, 0.01636290478, 0.01436587509, 0.006084144973, -0.003673632457, -0.006204914713, -0.00110578839, -0.002993993719, -0.004060033107, -0.002781639305, 0.001157027409, 0.006342340822, 0.01001609382, 0.009493015372, 0.004228734704, -0.002467779533, -0.004295444829, -1.948536332e-06, -4.054031693e-06, -2.831056981e-06, 3.026308985e-06, 1.07360087e-05, 1.477394155e-05, 1.050577937e-05, -2.229183782e-06, -1.77477212e-05, -2.614528579e-05, -1.834101956e-05, -1.29134267e-05, -2.600798802e-05, -1.350225156e-05, 3.620325701e-05, 0.0001051605993, 0.0001528833514, 0.0001410571127, 6.070235151e-05, -5.41170814e-05, -0.000133713898, -0.00010693992, -4.96588834e-05, -9.953721179e-05, -4.503472002e-05, 0.0001666728085, 0.0004709532902, 0.000706111196, 0.0007074360811, 0.0004186275103, -4.322726665e-05, -0.0004049930033, -0.0003675499583, -0.000142372847, -0.0002885944101, -0.0001312953913, 0.0004988465865, 0.001432686548, 0.00220415871, 0.00231169276, 0.001547194092, 0.0002075907563, -0.0009262612615, -0.0009523304237, -0.0003334382526, -0.0006898342567, -0.0003431194251, 0.001136923001, 0.003396594816, 0.005359090105, 0.005810134922, 0.004175926379, 0.001063232179, -0.001728665086, -0.002025181238, -0.0006643893174, -0.001412384768, -0.0007995021174, 0.002090284723, 0.006645901669, 0.0107797865, 0.01203104966, 0.009111243611, 0.003051031994, -0.00266263059, -0.003639113968, -0.001135892838, -0.002505559321, -0.001669601016, 0.003036758006, 0.0107606101, 0.01808934621, 0.02080542645, 0.01649362351, 0.00659352763, -0.003199331334, -0.005445543856, -0.001579388415, -0.003677208034, -0.003005948759, 0.002894368539, 0.01318744185, 0.02347346551, 0.02800312957, 0.02320631209, 0.01061011966, -0.002467317014, -0.006208283695, -0.001369616919, -0.003425537007, -0.00347801005, 0.0007336533499, 0.008863919877, 0.0175213262, 0.02196179526, 0.01902513452, 0.009641584378, -0.0005787379125, -0.004039234522 +-3.242299996e-07, -1.065940914e-06, -1.807595415e-06, -1.660622459e-06, 3.474423469e-07, 4.400146807e-06, 8.658278888e-06, 8.434239468e-06, -2.482435753e-06, -2.383003478e-05, -3.160358059e-05, -2.291546709e-06, -7.417431213e-06, -1.185982804e-05, -8.249903837e-06, 1.157616121e-05, 4.97977011e-05, 9.312886239e-05, 0.0001062333226, 4.073345998e-05, -0.0001083557871, -0.0001823568421, -9.303852717e-06, -3.000750892e-05, -4.667277039e-05, -2.695439251e-05, 6.522149283e-05, 0.0002409399154, 0.0004466675992, 0.0005362711343, 0.0003060577177, -0.0002803692723, -0.000619690416, -2.799840424e-05, -9.062309719e-05, -0.0001399691645, -7.484950279e-05, 0.0002182539939, 0.0007773462905, 0.001445283198, 0.001784555314, 0.001178044268, -0.0005128494876, -0.001586169395, -6.860074133e-05, -0.0002239178591, -0.0003483073757, -0.0001896602054, 0.0005369711127, 0.001933862989, 0.003630526328, 0.004575723411, 0.003272353508, -0.0006638494749, -0.003328727622, -0.0001430387754, -0.0004736606265, -0.0007531955364, -0.0004570413572, 0.001015453277, 0.003897358922, 0.007462056526, 0.009595330446, 0.007254831091, -0.0004240835449, -0.005899313436, -0.0002580038113, -0.0008781340063, -0.001467465704, -0.00111218009, 0.001264555693, 0.006133608281, 0.01233562723, 0.01633117684, 0.01294531498, 0.000544258905, -0.008731845171, -0.0003855628246, -0.001379392039, -0.002518344442, -0.002562454865, 4.50696742e-05, 0.006126339047, 0.01435519614, 0.02020228968, 0.01684784341, 0.001829976696, -0.009973286413, -0.0003653291937, -0.00139698913, -0.002829994021, -0.003669074317, -0.002518568504, 0.001547047942, 0.007786496116, 0.01288194077, 0.01157472222, 0.001615519748, -0.006678524316, -6.960980407e-07, -2.279370866e-06, -3.589455404e-06, -2.591324978e-06, 2.032480993e-06, 9.201999915e-06, 1.481815637e-05, 1.279326375e-05, -1.992345396e-06, -2.610911713e-05, -3.340004226e-05, -4.610839936e-06, -1.486734727e-05, -2.204182323e-05, -1.062020694e-05, 3.036005493e-05, 9.445253572e-05, 0.0001518289081, 0.0001553869049, 6.204218767e-05, -0.0001118468097, -0.0001901003365, -1.76855197e-05, -5.692017644e-05, -8.249365135e-05, -3.038097676e-05, 0.0001476862215, 0.0004308848652, 0.0007009459399, 0.0007620180438, 0.0004249494954, -0.0002671899603, -0.0006388999953, -5.052604165e-05, -0.0001635786628, -0.0002373738632, -8.171123001e-05, 0.0004548278698, 0.001325553996, 0.00219218428, 0.002470306, 0.001571115937, -0.0004293615151, -0.001620450395, -0.0001178631205, -0.0003855952864, -0.0005682712303, -0.0002132225276, 0.001058110412, 0.003168819187, 0.005343952153, 0.006188986409, 0.004246841235, -0.000401262765, -0.003373214986, -0.0002338279828, -0.00077572143, -0.001172078979, -0.000517612291, 0.001981566503, 0.006240564315, 0.01077190098, 0.012785861, 0.009270593164, 0.0002119723458, -0.005924063993, -0.0003978079573, -0.001345401536, -0.002108431177, -0.001153008956, 0.00293493165, 0.01013821591, 0.01805548934, 0.02198529157, 0.01670895485, 0.001931395042, -0.008633338779, -0.0005503650102, -0.001916968703, -0.003176087726, -0.002256587416, 0.002865683266, 0.01236838219, 0.02320631209, 0.02914590235, 0.02314568751, 0.004516139159, -0.009540733669, -0.0004759512195, -0.001728051654, -0.003082223918, -0.002838715944, 0.0007851220206, 0.00813401634, 0.01691003465, 0.02218614654, 0.01838423518, 0.004804670639, -0.005996872149 +-9.068872966e-08, -4.393114083e-07, -1.165363823e-06, -2.096828028e-06, -2.458629077e-06, -7.627535366e-07, 4.461428617e-06, 1.186062273e-05, 1.149388379e-05, -1.320345192e-05, -4.096593655e-05, -6.401327814e-07, -3.06445974e-06, -7.908996428e-06, -1.340571874e-05, -1.308835212e-05, 4.870135848e-06, 5.207943827e-05, 0.0001194778658, 0.0001364149187, -1.766414735e-05, -0.0002189075307, -2.593051007e-06, -1.235627722e-05, -3.144466059e-05, -5.154446263e-05, -4.44755899e-05, 4.017470234e-05, 0.0002518436591, 0.0005560694936, 0.0006716964194, 0.0001139603586, -0.0006895912245, -7.781235684e-06, -3.706739363e-05, -9.379724157e-05, -0.0001514428691, -0.0001229027413, 0.0001459487551, 0.0008065702267, 0.001762636161, 0.002196177598, 0.0006914909923, -0.001634330313, -1.900270176e-05, -9.076348677e-05, -0.0002296806453, -0.0003699956244, -0.0002978089266, 0.0003637239267, 0.001986735502, 0.004354632962, 0.005548342445, 0.002243498682, -0.003160051125, -3.945849905e-05, -0.0001896197453, -0.0004827163988, -0.0007858489784, -0.0006614785667, 0.0006631175967, 0.003958738114, 0.008824811671, 0.01148615367, 0.005393491042, -0.005104528311, -7.074235251e-05, -0.0003445239652, -0.0008921656836, -0.001500232911, -0.001424127142, 0.0006723230808, 0.006152744618, 0.0144428762, 0.01936597175, 0.01012425673, -0.006783692119, -0.0001048319355, -0.0005241610366, -0.001405480127, -0.002515647027, -0.002879906697, -0.0006708423413, 0.006064861258, 0.01683271729, 0.0239360586, 0.01361623223, -0.006927865796, -9.853320732e-05, -0.0005114172924, -0.001436556751, -0.002769050461, -0.003765344147, -0.002911757017, 0.001525040756, 0.009503752743, 0.01557433568, 0.009545435974, -0.004303044672, -1.99155326e-07, -9.277501797e-07, -2.260974313e-06, -3.57081952e-06, -3.395594217e-06, 7.405172871e-08, 7.671790074e-06, 1.65037209e-05, 1.529639047e-05, -1.194872536e-05, -4.135619643e-05, -1.318502428e-06, -6.09641468e-06, -1.453872436e-05, -2.163079229e-05, -1.607678765e-05, 1.620091393e-05, 8.220199244e-05, 0.0001615469477, 0.0001732264565, -5.49181833e-07, -0.0002177098775, -5.046148665e-06, -2.332819271e-05, -5.524000535e-05, -7.997296766e-05, -5.062714059e-05, 9.222006791e-05, 0.0003804124013, 0.0007351068008, 0.0008329864434, 0.0001968170849, -0.000676603943, -1.437223854e-05, -6.670949653e-05, -0.0001582317126, -0.0002278731381, -0.0001359395328, 0.000298232668, 0.001178449013, 0.002283991749, 0.002675134592, 0.0009503860506, -0.001583445989, -3.340681182e-05, -0.0001560705029, -0.0003727689698, -0.0005413900949, -0.0003292827053, 0.0007035785228, 0.002826847095, 0.005545504687, 0.006660384589, 0.002865600925, -0.003022347929, -6.600389529e-05, -0.0003109657626, -0.0007506752196, -0.001109710365, -0.0007239983416, 0.001306074806, 0.005565565906, 0.01112660398, 0.01366849489, 0.006651582885, -0.004799888561, -0.0001117284321, -0.0005324096822, -0.001305205292, -0.001984724028, -0.001453482213, 0.001840556196, 0.008962053022, 0.01845833025, 0.02321845861, 0.01241658327, -0.006176238115, -0.0001536463543, -0.0007448362186, -0.001869927233, -0.002973318489, -0.002571635617, 0.001450486184, 0.01061011966, 0.02314568751, 0.02999568268, 0.01732122643, -0.005861057316, -0.0001321402346, -0.0006564411462, -0.001703312506, -0.002873924893, -0.002986297271, -0.0003051891839, 0.00645745318, 0.01605894538, 0.02178175137, 0.01338181035, -0.003141674597 +-1.912435894e-08, -1.296101907e-07, -4.903063261e-07, -1.331045222e-06, -2.786238142e-06, -4.44302554e-06, -4.613841303e-06, -3.65071415e-07, 7.853495799e-06, 6.888928492e-06, -1.028540419e-05, -1.344242189e-07, -9.017940962e-07, -3.356495783e-06, -8.898200035e-06, -1.794621429e-05, -2.660491312e-05, -2.151376195e-05, 1.983134952e-05, 9.667116899e-05, 0.0001161438671, -8.607444217e-07, -5.419507639e-07, -3.615277889e-06, -1.332625746e-05, -3.482523059e-05, -6.867095075e-05, -9.721100646e-05, -6.40243748e-05, 0.0001247162938, 0.0004731704674, 0.0006171675068, 0.0001725511938, -1.618198205e-06, -1.076395335e-05, -3.945397423e-05, -0.000102249906, -0.0001991126112, -0.0002749362313, -0.0001592858507, 0.0004300553189, 0.001522826838, 0.002079633849, 0.0008488564981, -3.931201515e-06, -2.612494476e-05, -9.548247922e-05, -0.0002464077628, -0.0004771541013, -0.0006529613119, -0.00036292683, 0.001073947765, 0.003766805427, 0.005329820099, 0.002592649378, -8.113887177e-06, -5.39771889e-05, -0.0001972248705, -0.0005087008159, -0.0009857318964, -0.001356759365, -0.0007936445919, 0.002084502957, 0.007578752324, 0.01110726302, 0.006038771288, -1.442523467e-05, -9.641254081e-05, -0.0003536799642, -0.0009169444692, -0.001794780291, -0.002539505347, -0.001754931428, 0.002921827663, 0.01217982095, 0.01872921595, 0.01108283596, -2.111423013e-05, -0.0001426760903, -0.0005289692604, -0.001389768444, -0.00278319248, -0.004159960575, -0.003691365795, 0.0018080263, 0.01359985769, 0.02293783714, 0.01466426834, -1.955947478e-05, -0.0001343772135, -0.0005059295857, -0.001353412368, -0.002789641925, -0.004441642655, -0.004896478588, -0.001587385725, 0.006851607718, 0.01457743438, 0.01022525373, -4.10417194e-08, -2.588243324e-07, -8.838131115e-07, -2.12252532e-06, -3.881778324e-06, -5.328385466e-06, -4.408424797e-06, 1.656292556e-06, 1.137913602e-05, 1.021208877e-05, -8.851002166e-06, -2.716769498e-07, -1.707935669e-06, -5.783976602e-06, -1.365580851e-05, -2.411789116e-05, -3.040197468e-05, -1.678951098e-05, 3.782071468e-05, 0.0001251158123, 0.000142326242, 1.058143518e-05, -1.038159077e-06, -6.532452036e-06, -2.208244941e-05, -5.17960765e-05, -8.99570166e-05, -0.0001079684497, -4.061828205e-05, 0.0002000864928, 0.0005887994177, 0.0007229195649, 0.0002191229486, -2.950137456e-06, -1.862326081e-05, -6.308219491e-05, -0.0001479571674, -0.0002557901375, -0.0003010782433, -8.901565443e-05, 0.0006461368662, 0.001851560338, 0.002380228562, 0.0009820286878, -6.838540543e-06, -4.336923768e-05, -0.0001475407881, -0.0003474110526, -0.0006025072277, -0.0007099881617, -0.0002039489193, 0.001560203393, 0.004506752275, 0.006007891134, 0.002894517955, -1.346681403e-05, -8.588983538e-05, -0.000293932738, -0.0006967101748, -0.001218554282, -0.001458754388, -0.00048433464, 0.003016533557, 0.008993097387, 0.01240314569, 0.006616947589, -2.26952848e-05, -0.0001457838246, -0.0005028132147, -0.001203201253, -0.002134290817, -0.002636619143, -0.001146918183, 0.004570950891, 0.01461168919, 0.02092759844, 0.01205714997, -3.101423302e-05, -0.0002011925878, -0.0007014469341, -0.001701628563, -0.003085618765, -0.004017239249, -0.002467317014, 0.004516139159, 0.01732122643, 0.0261764347, 0.01606606282, -2.64692371e-05, -0.0001739773682, -0.0006149892279, -0.001517937269, -0.002831838782, -0.003941205928, -0.003305351927, 0.0013517729, 0.01056487962, 0.01764316679, 0.01150408766 +-2.291854871e-09, -2.103807237e-08, -1.088016331e-07, -4.1498864e-07, -1.293244209e-06, -3.45162892e-06, -7.915272708e-06, -1.437909747e-05, -1.446636125e-05, 1.199824447e-05, 4.71781781e-05, -1.600770212e-08, -1.456201065e-07, -7.448844405e-07, -2.806655401e-06, -8.630616542e-06, -2.26852285e-05, -5.095077691e-05, -8.892718743e-05, -7.644734189e-05, 0.0001175004506, 0.0003457718236, -6.411921006e-08, -5.797137533e-07, -2.942843939e-06, -1.099442506e-05, -3.349704462e-05, -8.711058625e-05, -0.0001927498568, -0.000326595318, -0.0002465598965, 0.0005363660618, 0.001384516588, -1.902104712e-07, -1.712309772e-06, -8.644321579e-06, -3.209608948e-05, -9.713855941e-05, -0.0002506739607, -0.0005485776786, -0.0009091276488, -0.0006197954504, 0.001672374604, 0.004003177932, -4.59058872e-07, -4.119853992e-06, -2.071258011e-05, -7.654759867e-05, -0.0002305128747, -0.0005913981185, -0.001283220436, -0.002090868733, -0.001321485144, 0.00406760662, 0.009267739293, -9.405773058e-07, -8.42419781e-06, -4.222137399e-05, -0.0001554652621, -0.0004662656994, -0.001190493071, -0.002565211182, -0.004127752585, -0.002497542483, 0.008105077448, 0.01789882437, -1.655580054e-06, -1.481636145e-05, -7.408704286e-05, -0.00027189359, -0.0008121219456, -0.002063341591, -0.004419314194, -0.007069272289, -0.004361626647, 0.0129789478, 0.02856456585, -2.386348512e-06, -2.137052691e-05, -0.0001066323372, -0.0003896341642, -0.001156747503, -0.002918026767, -0.006212655882, -0.009986457107, -0.006944230809, 0.01465299735, 0.03424276755, -2.166528924e-06, -1.942792157e-05, -9.661730442e-05, -0.000350503499, -0.001030013077, -0.002568624824, -0.005426942577, -0.008850090544, -0.007378285024, 0.007883768462, 0.0226804969, -4.625923361e-09, -3.854130331e-08, -1.778414033e-07, -6.015357151e-07, -1.668160033e-06, -4.009154952e-06, -8.43729097e-06, -1.434615161e-05, -1.329286031e-05, 1.415259077e-05, 4.879827143e-05, -3.063048836e-08, -2.550633613e-07, -1.17416927e-06, -3.954052623e-06, -1.089065245e-05, -2.590788138e-05, -5.358419761e-05, -8.754517763e-05, -6.746004936e-05, 0.000132525554, 0.000356622922, -1.169469043e-07, -9.75414819e-07, -4.492614705e-06, -1.511709547e-05, -4.153447721e-05, -9.830460315e-05, -0.0002011200312, -0.0003194144354, -0.0002110646272, 0.0005932909446, 0.00142470737, -3.318342245e-07, -2.77569655e-06, -1.281281426e-05, -4.317340055e-05, -0.0001186460075, -0.000280300802, -0.0005697413358, -0.0008871857284, -0.0005209617988, 0.001827634608, 0.004111196192, -7.677378718e-07, -6.445198921e-06, -2.984736184e-05, -0.0001008416705, -0.0002776332328, -0.0006560142149, -0.001328453524, -0.002040515161, -0.001102786249, 0.004406932327, 0.009501080327, -1.508127715e-06, -1.271286534e-05, -5.909668652e-05, -0.0002003383236, -0.0005530435971, -0.001308424052, -0.002644533253, -0.004026788965, -0.002085062412, 0.008733581436, 0.01832468597, -2.531961772e-06, -2.143979027e-05, -0.0001000680572, -0.0003404119036, -0.0009422746766, -0.002232692172, -0.004511001501, -0.006858527604, -0.003656367072, 0.01400014062, 0.02923558951, -3.437586244e-06, -2.92492598e-05, -0.0001370171031, -0.0004672350651, -0.001294922655, -0.003069406093, -0.006208283695, -0.009540733669, -0.005861057316, 0.01606606282, 0.03511703697, -2.905293687e-06, -2.483535674e-05, -0.0001165883627, -0.0003974507884, -0.00109898197, -0.002597373255, -0.005258813882, -0.008267407269, -0.006293748931, 0.009131781293, 0.02339267359 +2.668753846e-06, -6.708906135e-06, -7.66291277e-06, -4.500275857e-06, -2.026683694e-06, -7.937319797e-07, -2.788021691e-07, -8.638050972e-08, -2.241242219e-08, -4.367958838e-09, -4.831851432e-10, 2.976367887e-05, -3.910098163e-05, -5.470244533e-05, -3.452670376e-05, -1.610454588e-05, -6.421053274e-06, -2.278941453e-06, -7.109442177e-07, -1.852919823e-07, -3.620122712e-08, -4.008381956e-09, 0.0001605834321, -0.000124828476, -0.0002244697729, -0.0001528928429, -7.400165788e-05, -3.00568526e-05, -1.077569853e-05, -3.382665248e-06, -8.850656075e-07, -1.732692319e-07, -1.919589647e-08, 0.0005990920717, -0.0002711487998, -0.0006871970669, -0.0005080139347, -0.0002557814676, -0.0001059512117, -3.837271221e-05, -1.211666149e-05, -3.181268555e-06, -6.238162233e-07, -6.91246188e-08, 0.001772818777, -0.0003829222861, -0.001725499716, -0.001396212298, -0.0007338011294, -0.0003105875377, -0.0001137236822, -3.612518516e-05, -9.516376036e-06, -1.868716649e-06, -2.070535935e-07, 0.004463587569, -5.176594971e-05, -0.003658450237, -0.003292028151, -0.001816602401, -0.0007886454969, -0.0002926661899, -9.366361526e-05, -2.477524906e-05, -4.873235823e-06, -5.397900724e-07, 0.00979876317, 0.001921101237, -0.006261964933, -0.006507311369, -0.003813844738, -0.001711184302, -0.0006473714959, -0.0002096270407, -5.583106221e-05, -1.101466363e-05, -1.219604623e-06, 0.01745271763, 0.007239587288, -0.007187317772, -0.009533578009, -0.006064817383, -0.002847784251, -0.001109027832, -0.0003660499595, -9.865329694e-05, -1.957107533e-05, -2.166722549e-06, 0.01838204777, 0.01139661718, -0.003104420192, -0.007368466646, -0.005283049758, -0.00263943035, -0.001070150777, -0.0003630225251, -9.954802978e-05, -1.991607313e-05, -2.205702427e-06, 1.192811193e-05, -2.374532684e-06, -8.348559188e-06, -6.282605058e-06, -3.304993139e-06, -1.452576796e-06, -5.535333956e-07, -1.797026718e-07, -4.713310713e-08, -8.964952153e-09, -9.379151657e-10, 9.704154127e-05, -1.209919117e-06, -5.464284931e-05, -4.529819757e-05, -2.466992766e-05, -1.100354348e-05, -4.227878495e-06, -1.381887198e-06, -3.649075706e-07, -6.990271123e-08, -7.368368319e-09, 0.0004373925022, 5.477692169e-05, -0.000205554284, -0.0001898017588, -0.0001073049741, -4.861123499e-05, -1.882639135e-05, -6.189861505e-06, -1.643863616e-06, -3.16780524e-07, -3.360120398e-08, 0.001440810213, 0.0003442699097, -0.0005740884705, -0.0005994053171, -0.000352943558, -0.0001625974711, -6.34729529e-05, -2.098032048e-05, -5.599167622e-06, -1.084461652e-06, -1.156442597e-07, 0.003873221854, 0.001330024093, -0.001293258913, -0.001566599236, -0.0009655524903, -0.0004533578146, -0.0001785225403, -5.932435966e-05, -1.590531217e-05, -3.094862943e-06, -3.31614609e-07, 0.009017927788, 0.004093843067, -0.002310829941, -0.003473291375, -0.002265432007, -0.001089674955, -0.0004340981313, -0.0001452792189, -3.917383903e-05, -7.663198963e-06, -8.253469468e-07, 0.01858230128, 0.01092759269, -0.002520311146, -0.00618693197, -0.004397120054, -0.002193899507, -0.0008912265066, -0.000302121176, -8.229019685e-05, -1.623575453e-05, -1.761427526e-06, 0.03151725813, 0.02353012596, 0.00127950978, -0.007283646329, -0.006114772467, -0.003252586798, -0.001369616919, -0.0004759512195, -0.0001321402346, -2.64692371e-05, -2.905293687e-06, 0.03194008015, 0.02885386312, 0.007658989236, -0.003168813194, -0.004200478495, -0.002525454469, -0.001134290332, -0.0004117304837, -0.0001180629081, -2.42262648e-05, -2.704865671e-06 +-1.243003787e-06, -2.055550789e-06, -3.53289759e-06, -3.728325701e-06, -2.802829269e-06, -1.685354761e-06, -8.519589028e-07, -3.636239534e-07, -1.263205558e-07, -3.234910214e-08, -4.647036298e-09, -3.143980593e-06, -9.273896829e-06, -2.277324357e-05, -2.680888144e-05, -2.121832512e-05, -1.314939389e-05, -6.777500225e-06, -2.930206376e-06, -1.026578244e-06, -2.643286359e-07, -3.810704066e-08, 1.121706526e-05, -1.565628917e-05, -8.465731188e-05, -0.000112649007, -9.371005385e-05, -5.971307274e-05, -3.132199656e-05, -1.369744891e-05, -4.83401035e-06, -1.25025807e-06, -1.807181649e-07, 0.0001128860506, 2.488748654e-05, -0.0002352196688, -0.00035995625, -0.0003141855062, -0.0002053897183, -0.0001094477449, -4.834722636e-05, -1.716925263e-05, -4.456507162e-06, -6.453247015e-07, 0.0005049114392, 0.0002731842769, -0.0005315946034, -0.0009635128023, -0.000882306212, -0.0005908970192, -0.0003194929253, -0.0001424206186, -5.085100386e-05, -1.323594739e-05, -1.918570983e-06, 0.001666678669, 0.001190778171, -0.0009521918104, -0.00222274201, -0.002152302592, -0.001480011945, -0.0008127006588, -0.0003656992751, -0.0001312620386, -3.424285292e-05, -4.963916549e-06, 0.004519981392, 0.003963947336, -0.0009170331149, -0.00418751449, -0.004435182544, -0.003170183145, -0.001779384057, -0.0008112161883, -0.0002932248078, -7.66806491e-05, -1.110359701e-05, 0.009582985303, 0.01014212391, 0.001559246205, -0.005226318876, -0.006722152285, -0.005153581515, -0.003002879743, -0.001399323279, -0.0005118013131, -0.0001343883691, -1.942069614e-05, 0.01162604561, 0.014375454, 0.005923927952, -0.002220153436, -0.005175238372, -0.004536397943, -0.002815054006, -0.001358854665, -0.0005065379852, -0.0001339775461, -1.932407171e-05, 5.261341773e-06, 2.690900833e-06, -3.137253341e-06, -5.656868915e-06, -5.038304026e-06, -3.318012767e-06, -1.761366934e-06, -7.610089121e-07, -2.584033126e-07, -6.267912499e-08, -8.317529295e-09, 4.764867848e-05, 3.307779178e-05, -1.284805076e-05, -3.639957232e-05, -3.518716408e-05, -2.403492074e-05, -1.304714189e-05, -5.730907528e-06, -1.972905919e-06, -4.845016414e-07, -6.504241152e-08, 0.0002348593208, 0.0001899936851, -1.729368661e-05, -0.000137113452, -0.0001445305472, -0.0001022052029, -5.66087392e-05, -2.522590067e-05, -8.787025053e-06, -2.180527843e-06, -2.955766587e-07, 0.000839876795, 0.0007496974936, 5.085228375e-05, -0.0003923741383, -0.0004531133599, -0.0003310832655, -0.0001867268868, -8.426408307e-05, -2.965121879e-05, -7.423921364e-06, -1.01464759e-06, 0.00244750254, 0.002360591125, 0.0004128883038, -0.0009273840569, -0.001188368738, -0.0008975889839, -0.0005151458631, -0.0002352300222, -8.354847129e-05, -2.108777202e-05, -2.903342068e-06, 0.006201988811, 0.006474023553, 0.001786252712, -0.001744832789, -0.002642314428, -0.002087898192, -0.00122553858, -0.0005678247239, -0.0002039031075, -5.193090289e-05, -7.205144315e-06, 0.01401780286, 0.01616177448, 0.006519759005, -0.001744397907, -0.004533217913, -0.003947498923, -0.00242145856, -0.001152413786, -0.000421681735, -0.0001089219828, -1.527641678e-05, 0.02614529091, 0.0338434744, 0.01863769597, 0.002878118208, -0.004235042245, -0.005015768082, -0.003425537007, -0.001728051654, -0.0006564411462, -0.0001739773682, -2.483535674e-05, 0.02885386312, 0.0415582815, 0.02830683438, 0.01078135595, 0.0006899402352, -0.002511586834, -0.002365408226, -0.001358398591, -0.0005544057521, -0.0001535890453, -2.253849165e-05 +-2.407375134e-06, 3.497330068e-07, 3.700299966e-07, -1.189328088e-06, -2.082391328e-06, -2.02048135e-06, -1.472620422e-06, -8.610857616e-07, -3.984662032e-07, -1.337278074e-07, -2.498746943e-08, -1.783127597e-05, 5.433461654e-06, 8.087782719e-06, -4.675239333e-06, -1.359809775e-05, -1.467832248e-05, -1.121758959e-05, -6.735699715e-06, -3.168931561e-06, -1.075362355e-06, -2.025450211e-07, -7.567334497e-05, 3.332070237e-05, 5.545773574e-05, -3.329003174e-06, -5.10784938e-05, -6.223616295e-05, -4.985514746e-05, -3.068655947e-05, -1.465087155e-05, -5.018248764e-06, -9.511289974e-07, -0.0002386557111, 0.0001339623676, 0.0002393620079, 3.981503293e-05, -0.0001437752098, -0.0002006896114, -0.0001682747914, -0.0001059438909, -5.123242116e-05, -1.768293443e-05, -3.367469468e-06, -0.0006169284057, 0.0004172873694, 0.0007876486607, 0.0002338633792, -0.0003353956491, -0.0005443407296, -0.0004766763128, -0.00030627086, -0.0001497304748, -5.199247265e-05, -9.933859441e-06, -0.001367902207, 0.001088302366, 0.002151870526, 0.0008362444522, -0.000668122422, -0.001292494586, -0.001181420682, -0.0007736447963, -0.0003818253185, -0.0001331803682, -2.548569843e-05, -0.002591620641, 0.002477303114, 0.005071136629, 0.002405725048, -0.001016404651, -0.002609835108, -0.002517975549, -0.00168652845, -0.0008410224897, -0.0002944241961, -5.631384704e-05, -0.00374232545, 0.00483293858, 0.009908161198, 0.005706569242, -0.0005119975028, -0.003819687352, -0.004071841503, -0.002833019149, -0.001436624021, -0.0005056522127, -9.653553582e-05, -0.002833620875, 0.006119092321, 0.01202135279, 0.008220985389, 0.001525867417, -0.0026028072, -0.003509071984, -0.002625798287, -0.001373389758, -0.0004887894714, -9.322314316e-05, -5.074135979e-07, 3.099619621e-06, 1.817222373e-06, -1.748246434e-06, -3.942874971e-06, -4.096971951e-06, -3.044558495e-06, -1.748176457e-06, -7.68921008e-07, -2.389830466e-07, -4.063053875e-08, -1.627374901e-06, 3.045125601e-05, 2.494241441e-05, -2.891856403e-06, -2.290823299e-05, -2.73501791e-05, -2.154312805e-05, -1.280493752e-05, -5.772744097e-06, -1.829863226e-06, -3.163905549e-07, 1.251006481e-06, 0.0001564942924, 0.0001483802122, 2.423794685e-05, -7.59012338e-05, -0.0001073995935, -8.967538203e-05, -5.502881124e-05, -2.535339389e-05, -8.173307625e-06, -1.433332545e-06, 2.973001451e-05, 0.0005742576186, 0.0005937227091, 0.0001810185226, -0.0001841582902, -0.0003222035532, -0.0002849953253, -0.0001800653597, -8.45645827e-05, -2.766031944e-05, -4.909292124e-06, 0.0001545157816, 0.001710955298, 0.001879301306, 0.0007462163852, -0.000342158568, -0.000807844927, -0.0007590160249, -0.0004933087053, -0.0002358375901, -7.816275584e-05, -1.402128347e-05, 0.0005942614303, 0.00448621502, 0.005182936335, 0.002489932126, -0.0003336543555, -0.001687661499, -0.001727807091, -0.00116419595, -0.0005685330988, -0.0001912347869, -3.469166506e-05, 0.001989708436, 0.01086593193, 0.0132068795, 0.007678510347, 0.001146723613, -0.002462983017, -0.003125952067, -0.002264998922, -0.00114917996, -0.0003959115036, -7.298917183e-05, 0.00528826398, 0.02263603623, 0.02892224993, 0.02002651265, 0.007536745832, -0.0006374017929, -0.00347801005, -0.003082223918, -0.001703312506, -0.0006149892279, -0.0001165883627, 0.007658989236, 0.02830683438, 0.03767968785, 0.02953851662, 0.01533333984, 0.004453620017, -0.0007651703703, -0.001906481296, -0.001301794943, -0.0005153596705, -0.0001024726086 +-1.591879092e-06, 9.12809264e-08, 9.854905242e-07, 2.689433264e-07, -8.961118871e-07, -1.663345923e-06, -1.80528921e-06, -1.460805571e-06, -9.053877951e-07, -4.008823118e-07, -9.856710039e-08, -1.321746482e-05, 1.691472621e-06, 1.175615147e-05, 7.211143304e-06, -2.743865465e-06, -1.027237718e-05, -1.274962751e-05, -1.093618079e-05, -7.00315716e-06, -3.166445643e-06, -7.900870681e-07, -6.294472382e-05, 9.93110534e-06, 6.82504164e-05, 5.282565341e-05, 4.620585392e-06, -3.572689979e-05, -5.255921581e-05, -4.787491284e-05, -3.160645651e-05, -1.4552814e-05, -3.674844906e-06, -0.0002237935902, 3.517084755e-05, 0.0002736884044, 0.0002398502574, 6.693074223e-05, -9.00342992e-05, -0.0001648500907, -0.0001594775986, -0.0001082425495, -5.061290407e-05, -1.290254859e-05, -0.0006584126857, 8.468531684e-05, 0.0008636034544, 0.0008252044455, 0.0003168600904, -0.000178205142, -0.0004354768816, -0.0004466357775, -0.0003106312062, -0.0001470905685, -3.776659749e-05, -0.001690653738, 0.000106957183, 0.002259942996, 0.002329594432, 0.001056159028, -0.000273089468, -0.001009767516, -0.001095730307, -0.0007784363509, -0.0003722553812, -9.602369583e-05, -0.003823342362, -0.0001854341167, 0.004899039804, 0.005507294272, 0.002838643824, -0.0001979081362, -0.001991184561, -0.002309277387, -0.001677641264, -0.0008092146924, -0.0002091997617, -0.006931394283, -0.00126667935, 0.008219059953, 0.01032668349, 0.006136844662, 0.0007056593863, -0.002788614416, -0.003668465372, -0.002766266624, -0.001351661164, -0.0003500558207, -0.007212033057, -0.002044946775, 0.008303482071, 0.01173873865, 0.008137277052, 0.002461482175, -0.001630875101, -0.003052738421, -0.002491913033, -0.001250852006, -0.0003258307601, -1.563841185e-06, 1.067573309e-06, 2.40944899e-06, 9.381527389e-07, -1.548587301e-06, -3.273745331e-06, -3.582090106e-06, -2.788218503e-06, -1.610857399e-06, -6.51287129e-07, -1.446980454e-07, -1.234006962e-05, 1.104691224e-05, 2.658581176e-05, 1.787888136e-05, -1.992524181e-06, -1.796159911e-05, -2.337143071e-05, -1.958777503e-05, -1.182469856e-05, -4.931221673e-06, -1.122324414e-06, -5.658353613e-05, 5.691223932e-05, 0.000145501236, 0.0001171825013, 2.636334636e-05, -5.449691591e-05, -8.956830742e-05, -8.101226018e-05, -5.093842777e-05, -2.182667866e-05, -5.069830005e-06, -0.0001949783548, 0.0002046753629, 0.0005569083497, 0.0004944761588, 0.0001846819808, -0.0001136598537, -0.0002619253955, -0.0002560299926, -0.0001671222599, -7.332824289e-05, -1.732939454e-05, -0.0005550113152, 0.0005900638293, 0.001710420632, 0.001626058167, 0.0007525901701, -0.0001475551759, -0.0006382195392, -0.0006783698461, -0.0004591176083, -0.000205879909, -4.94068111e-05, -0.001351705153, 0.001498776751, 0.004575863896, 0.004626652563, 0.002495688774, 0.0001301461943, -0.001274544897, -0.001533149343, -0.001086147059, -0.000499465834, -0.0001218425313, -0.002748213925, 0.003630473032, 0.01118955647, 0.01209621399, 0.007614104929, 0.002068848675, -0.001605257277, -0.002723915699, -0.002115491065, -0.001016012025, -0.0002540583348, -0.004104979068, 0.007969386012, 0.02341696725, 0.02704177486, 0.01965346579, 0.008894448633, 0.0007336533499, -0.002838715944, -0.002873924893, -0.001517937269, -0.0003974507884, -0.003168813194, 0.01078135595, 0.02953851662, 0.03588103292, 0.02890742503, 0.01644814659, 0.00570300974, -0.0001953561117, -0.001764665865, -0.001176276428, -0.0003360746411 +-7.690411628e-07, -3.231396751e-07, 4.266531849e-07, 5.628030653e-07, 7.947299786e-09, -8.665469589e-07, -1.605253508e-06, -1.878016051e-06, -1.597487386e-06, -9.535643551e-07, -3.164836831e-07, -6.65920092e-06, -2.446342329e-06, 5.498302169e-06, 8.385674347e-06, 4.722924621e-06, -2.604807932e-06, -9.583457423e-06, -1.305622226e-05, -1.188864592e-05, -7.376669711e-06, -2.509860689e-06, -3.305784089e-05, -1.171402048e-05, 3.276758026e-05, 5.360444609e-05, 3.993683529e-05, 4.706070933e-06, -3.190095734e-05, -5.308072065e-05, -5.181778511e-05, -3.329965118e-05, -1.156701981e-05, -0.000122609002, -4.537160511e-05, 0.000132575247, 0.0002288114653, 0.000191834799, 6.522361508e-05, -7.539847707e-05, -0.0001644310455, -0.0001720170095, -0.0001140264723, -4.028557489e-05, -0.0003770667593, -0.0001556522868, 0.0004162742366, 0.0007587131812, 0.0006817718655, 0.0003064784925, -0.000133587085, -0.0004292546196, -0.0004799861831, -0.0003267727824, -0.000117013774, -0.001016208229, -0.0005029269341, 0.001052433158, 0.002073157156, 0.001967296065, 0.001017170623, -0.000156579149, -0.0009810511684, -0.001169615714, -0.0008146190344, -0.0002947155298, -0.002428080285, -0.001536686736, 0.002043505521, 0.004663646033, 0.004720133704, 0.002719304151, 6.516914172e-05, -0.001886879003, -0.002428711269, -0.001731838515, -0.0006320009983, -0.004686166901, -0.003794107902, 0.002622730317, 0.008028317416, 0.008934815137, 0.005830156275, 0.001162135868, -0.002508023703, -0.003754792618, -0.002783597947, -0.001028373481, -0.005221485552, -0.005078669469, 0.001604224963, 0.008173197893, 0.0102317044, 0.007660250155, 0.00287768161, -0.001251669508, -0.002997482731, -0.002417683037, -0.0009162630487, -1.069193918e-06, -2.820274044e-07, 1.181687411e-06, 1.544173632e-06, 4.008318636e-07, -1.46521644e-06, -2.928819364e-06, -3.289697682e-06, -2.584120992e-06, -1.400017867e-06, -4.200608635e-07, -8.825980796e-06, -1.421111532e-06, 1.350016562e-05, 1.999088748e-05, 1.301331853e-05, -1.991897563e-06, -1.570012863e-05, -2.143236426e-05, -1.833134621e-05, -1.044646736e-05, -3.24544109e-06, -4.213347637e-05, -5.341239291e-06, 7.433801865e-05, 0.0001171419133, 9.307677579e-05, 2.410138678e-05, -4.578310086e-05, -8.201859364e-05, -7.655172847e-05, -4.567838652e-05, -1.461849404e-05, -0.0001509398874, -2.045687457e-05, 0.000283549269, 0.0004675760234, 0.0004077979564, 0.0001710146453, -8.804233053e-05, -0.0002395441898, -0.0002442561114, -0.0001519226806, -4.986527468e-05, -0.0004478695328, -7.478331106e-05, 0.0008646527968, 0.001483813421, 0.001373066053, 0.0007001057598, -8.467021022e-05, -0.0005828503033, -0.0006533882257, -0.0004226783706, -0.0001418984645, -0.001149523464, -0.0002245005612, 0.002299026671, 0.00409644348, 0.00399059268, 0.002330482647, 0.0002583374636, -0.001159387918, -0.001492719804, -0.001013040789, -0.0003486181304, -0.002534681059, -0.0004505136116, 0.005630902376, 0.01035900872, 0.01068860788, 0.007136777246, 0.002243217452, -0.00143307081, -0.002701546751, -0.002009107527, -0.0007194447076, -0.004341633783, -0.0002833994039, 0.01193511582, 0.02237486362, 0.02448933231, 0.01847070842, 0.008863919877, 0.0007851220206, -0.002986297271, -0.002831838782, -0.00109898197, -0.004200478495, 0.0006899402352, 0.01533333984, 0.02890742503, 0.03313085732, 0.02720184606, 0.01590251429, 0.005360183508, -0.0006271685222, -0.001923319472, -0.0008882163992 +-3.211581938e-07, -3.741462959e-07, -6.639929788e-08, 2.92328096e-07, 3.536044023e-07, -6.378406901e-08, -8.813991388e-07, -1.754569453e-06, -2.195296974e-06, -1.855332172e-06, -8.687501018e-07, -2.827942066e-06, -3.153368176e-06, 2.384203327e-07, 4.644500619e-06, 6.674976952e-06, 4.263335781e-06, -2.325633557e-06, -1.029974137e-05, -1.532571722e-05, -1.397399547e-05, -6.815969219e-06, -1.427042767e-05, -1.571749907e-05, 3.48353951e-06, 2.995357958e-05, 4.547257666e-05, 3.792588323e-05, 7.133389452e-06, -3.371009229e-05, -6.275159938e-05, -6.161477452e-05, -3.112040738e-05, -5.382253204e-05, -5.991930276e-05, 1.680550742e-05, 0.0001272518266, 0.0001998530656, 0.0001843679137, 7.598895785e-05, -7.813128829e-05, -0.0001961667121, -0.0002066751121, -0.000107489397, -0.0001685095212, -0.0001936984886, 5.034477801e-05, 0.0004160784172, 0.0006743341442, 0.0006578563902, 0.0003417704926, -0.0001337410858, -0.0005165901781, -0.0005812266007, -0.0003096955525, -0.0004634636278, -0.0005671568303, 7.883607829e-05, 0.001100120118, 0.001867623456, 0.001904276737, 0.001117135751, -0.000134884454, -0.001183297198, -0.001419075737, -0.0007720181447, -0.001135683375, -0.001540962415, -0.0001448693141, 0.002283274696, 0.00426040048, 0.004593291103, 0.002978727946, 0.0001915193338, -0.002245800798, -0.002921362169, -0.001626565584, -0.002263477707, -0.003480213663, -0.001261804185, 0.003300337047, 0.007448886426, 0.008741166846, 0.00635946974, 0.001570753141, -0.002888443467, -0.004427140241, -0.00256420327, -0.002619986982, -0.004494361928, -0.00255410935, 0.002497009423, 0.007674068401, 0.009990157921, 0.008192879345, 0.003444026603, -0.00136902563, -0.003454324797, -0.00217126775, -5.395921465e-07, -6.336879241e-07, 4.769466664e-08, 8.995469991e-07, 1.075964881e-06, 1.982632848e-07, -1.369029208e-06, -2.769251916e-06, -3.209628171e-06, -2.464526228e-06, -1.051324373e-06, -4.503421315e-06, -4.941464385e-06, 2.125383855e-06, 1.173128271e-05, 1.610832992e-05, 1.092980495e-05, -1.733411806e-06, -1.493847344e-05, -2.138317806e-05, -1.799592393e-05, -8.08580464e-06, -2.169845798e-05, -2.326270946e-05, 1.442554922e-05, 6.828047206e-05, 9.902998352e-05, 8.204705827e-05, 2.367299382e-05, -4.396287785e-05, -8.384563175e-05, -7.722229657e-05, -3.629124803e-05, -7.844636928e-05, -8.465218177e-05, 5.792865694e-05, 0.000269626106, 0.0004052195402, 0.0003663775501, 0.0001656419576, -8.60122961e-05, -0.0002514091274, -0.000252717824, -0.0001234461796, -0.0002352195441, -0.0002595316994, 0.0001763296332, 0.0008455987471, 0.00130792216, 0.001247617184, 0.0006763436327, -8.841767493e-05, -0.0006301288543, -0.0006926144154, -0.000350317874, -0.0006124925596, -0.0006907240602, 0.0004707418036, 0.00231269625, 0.003669513834, 0.003660089397, 0.002247523594, 0.0002231462623, -0.0013105805, -0.001627195525, -0.0008564565424, -0.001382833005, -0.001559671244, 0.001244253768, 0.005834874924, 0.009457009942, 0.009888806219, 0.006845451721, 0.00205914215, -0.001868124074, -0.003096209353, -0.001746349853, -0.002463846068, -0.002667819842, 0.00304256965, 0.0126625341, 0.02080694094, 0.02277157106, 0.0175213262, 0.00813401634, -0.0003051891839, -0.003941205928, -0.002597373255, -0.002525454469, -0.002511586834, 0.004453620017, 0.01644814659, 0.02720184606, 0.03078406218, 0.02543449145, 0.01442377229, 0.003700042998, -0.00198410038, -0.001994249607 +-1.206149806e-07, -2.585115217e-07, -2.587879344e-07, -6.652853531e-08, 2.167349093e-07, 3.438823586e-07, 1.603160102e-08, -9.12993988e-07, -2.172718506e-06, -2.92031951e-06, -2.060264248e-06, -1.069421835e-06, -2.241175085e-06, -1.952917908e-06, 4.785389695e-07, 4.212310826e-06, 6.899978488e-06, 5.516554517e-06, -1.758426815e-06, -1.30435833e-05, -2.111271192e-05, -1.595577921e-05, -5.429194822e-06, -1.129351985e-05, -9.017154622e-06, 5.583909333e-06, 2.849470545e-05, 4.733081711e-05, 4.559469578e-05, 1.240382817e-05, -4.449012487e-05, -8.965756483e-05, -7.20134071e-05, -2.05945445e-05, -4.297240999e-05, -3.296529055e-05, 2.731296644e-05, 0.0001235280768, 0.0002078537485, 0.0002152905572, 0.000100802334, -0.0001110664709, -0.0002906663099, -0.0002461251292, -6.485542991e-05, -0.0001370855007, -0.0001058876665, 9.009572523e-05, 0.0004089934037, 0.0007002102384, 0.0007560240762, 0.0004279881815, -0.0002185296544, -0.0007917933583, -0.0007017869181, -0.0001795717794, -0.000390471265, -0.0003228454497, 0.0002066215854, 0.001097086175, 0.001942999508, 0.002174491296, 0.001373129919, -0.0003128443763, -0.00186465844, -0.001727103366, -0.0004443046545, -0.00101786218, -0.0009637414217, 0.0002151639398, 0.002338701133, 0.004472731742, 0.005258496016, 0.003663457768, -4.84640696e-05, -0.003620919691, -0.003563938054, -0.0008995485479, -0.002210700213, -0.002444267574, -0.0004694635181, 0.003552539884, 0.0079249464, 0.01003623131, 0.007818057497, 0.001560600488, -0.004870980719, -0.005417918856, -0.001064844902, -0.002799896938, -0.003486722861, -0.001611048908, 0.002886191325, 0.008191280173, 0.01132484291, 0.009846547257, 0.003849174966, -0.002872285732, -0.004321061944, -2.28332927e-07, -5.012607725e-07, -4.542606572e-07, 3.828149596e-08, 6.733178282e-07, 8.813352709e-07, 2.209140079e-07, -1.251844806e-06, -2.865079165e-06, -3.530244122e-06, -2.307716702e-06, -1.909913101e-06, -4.076064668e-06, -3.102382386e-06, 2.423500838e-06, 1.00031767e-05, 1.435751147e-05, 1.082549967e-05, -1.102761327e-06, -1.621164772e-05, -2.48134653e-05, -1.761451555e-05, -9.209519505e-06, -1.946221075e-05, -1.334657104e-05, 1.727080745e-05, 6.082970591e-05, 9.055319446e-05, 8.087004111e-05, 2.577442875e-05, -5.150216319e-05, -0.0001027811066, -7.853828177e-05, -3.330686047e-05, -7.051203603e-05, -4.635953605e-05, 7.228233659e-05, 0.0002459359242, 0.000375594477, 0.000361308366, 0.0001714945156, -0.00011638955, -0.0003257260013, -0.0002655954967, -9.994593396e-05, -0.0002132527756, -0.0001395010958, 0.0002299953374, 0.0007843129663, 0.001223824248, 0.001232400875, 0.0006911715325, -0.0001856244202, -0.0008653371364, -0.000749334742, -0.0002609200349, -0.0005610155838, -0.0003635063283, 0.000640275279, 0.002178788445, 0.003460242839, 0.00361558763, 0.002274071238, -4.727164914e-05, -0.001950368668, -0.001817175148, -0.0005935503121, -0.001276281123, -0.000767322199, 0.001716057163, 0.00558421789, 0.008960020207, 0.009702223448, 0.006799366523, 0.001354357451, -0.00339631938, -0.003648116127, -0.001075685238, -0.002285993988, -0.001114749371, 0.004080387548, 0.01224406205, 0.01966491458, 0.02196179526, 0.01691003465, 0.00645745318, -0.003305351927, -0.005258813882, -0.001134290332, -0.002365408226, -0.0007651703703, 0.00570300974, 0.01590251429, 0.02543449145, 0.02898540828, 0.02376547191, 0.01189466656, 0.0001410966672, -0.003801210216 +-4.008975845e-08, -1.351542462e-07, -2.43230775e-07, -2.726888001e-07, -1.271705385e-07, 2.011831909e-07, 5.058323427e-07, 2.878239415e-07, -1.086011222e-06, -3.468595606e-06, -4.013055263e-06, -3.563241555e-07, -1.184381184e-06, -2.032180396e-06, -1.936902476e-06, 1.286530318e-07, 4.341053853e-06, 8.804223533e-06, 8.762700387e-06, -2.017055732e-06, -2.307371212e-05, -3.04076495e-05, -1.811681745e-06, -5.98746957e-06, -9.99012855e-06, -8.453324919e-06, 4.3852779e-06, 2.977454911e-05, 5.798597737e-05, 6.409037481e-05, 1.485078655e-05, -9.002353892e-05, -0.0001345215916, -6.878669979e-06, -2.273427272e-05, -3.74351962e-05, -2.951679918e-05, 2.416870461e-05, 0.000129275984, 0.0002490900211, 0.0002881972512, 0.0001181585596, -0.0002681485816, -0.0004512911644, -2.1672396e-05, -7.200327586e-05, -0.0001185261016, -9.175167236e-05, 8.371217077e-05, 0.0004280439594, 0.0008280325256, 0.0009857804468, 0.0004977775241, -0.0006699150952, -0.001263577127, -6.00123565e-05, -0.0002020678084, -0.0003381856083, -0.0002747007733, 0.0002016403864, 0.001154988586, 0.002287451504, 0.002800217827, 0.001604753408, -0.001418052518, -0.003046093913, -0.0001486214685, -0.0005140664276, -0.0008951294718, -0.0008186120857, 0.0002539280529, 0.002514801042, 0.005299666562, 0.00676301804, 0.004370870823, -0.002250971834, -0.006102857874, -0.0003023511867, -0.001087433109, -0.001999969633, -0.002099844563, -0.0002638102891, 0.00398901855, 0.009504518677, 0.01290791095, 0.009540830088, -0.001555130014, -0.00883629501, -0.0003617946349, -0.001354551542, -0.002618655942, -0.003047146038, -0.001253966632, 0.003432187554, 0.009833568792, 0.01434775796, 0.01203254148, 0.001556228647, -0.006480658888, -8.123753589e-08, -2.734409732e-07, -4.623598977e-07, -4.406298546e-07, -7.556812971e-08, 5.173019294e-07, 9.143151008e-07, 4.94711472e-07, -1.244499537e-06, -3.834314158e-06, -4.243127778e-06, -6.796823324e-07, -2.256304863e-06, -3.637850635e-06, -2.830161546e-06, 1.554339041e-06, 8.623710068e-06, 1.447202782e-05, 1.302336947e-05, -1.098035701e-06, -2.469117285e-05, -3.18144508e-05, -3.273752846e-06, -1.081873759e-05, -1.70186395e-05, -1.145930748e-05, 1.355627891e-05, 5.423613056e-05, 9.08691439e-05, 9.13812481e-05, 2.578418814e-05, -9.328622744e-05, -0.0001395424411, -1.181922182e-05, -3.910712565e-05, -6.09764833e-05, -3.793936452e-05, 6.064027229e-05, 0.000223129116, 0.0003769974344, 0.000399668565, 0.0001718319032, -0.0002688999792, -0.0004647506209, -3.540208555e-05, -0.0001176212023, -0.0001833101077, -0.0001102222482, 0.0002004377942, 0.0007200418717, 0.0012300181, 0.00134858405, 0.0006925849467, -0.0006443532199, -0.001291713828, -9.232280994e-05, -0.0003079059835, -0.0004789725519, -0.0002758393519, 0.0005769342277, 0.002018598574, 0.003472944888, 0.003907556402, 0.002266642554, -0.00124442476, -0.003078179726, -0.0002103966899, -0.000701615032, -0.001074032711, -0.0005338701725, 0.001596495639, 0.005194610007, 0.008892638686, 0.0102201995, 0.006659010035, -0.001383961688, -0.006017662758, -0.0003843391653, -0.00127529819, -0.001880334957, -0.0006209875663, 0.003857767986, 0.01131193103, 0.01902513452, 0.02218614654, 0.01605894538, 0.0013517729, -0.008267407269, -0.0004117304837, -0.001358398591, -0.001906481296, -0.0001953561117, 0.005360183508, 0.01442377229, 0.02376547191, 0.02790000993, 0.0217540838, 0.006155248713, -0.005426123702 +-1.118575239e-08, -5.480023885e-08, -1.484858313e-07, -2.797876396e-07, -3.725003581e-07, -2.743938704e-07, 1.640434915e-07, 7.798908496e-07, 4.666781722e-07, -2.499352437e-06, -5.322036249e-06, -9.935819015e-08, -4.815811821e-07, -1.27438117e-06, -2.29051854e-06, -2.717102838e-06, -1.025171358e-06, 4.267115521e-06, 1.174619874e-05, 1.146756318e-05, -1.235250468e-05, -3.815963272e-05, -5.045112142e-07, -2.431878806e-06, -6.343119255e-06, -1.105395374e-05, -1.203654299e-05, -1.034176925e-06, 2.989378203e-05, 7.376701395e-05, 8.045987967e-05, -3.000681037e-05, -0.0001601710943, -1.912196768e-06, -9.198713215e-06, -2.380268401e-05, -4.072818237e-05, -4.198642286e-05, 4.644582822e-06, 0.0001300022985, 0.0003084346961, 0.0003535216466, -3.140385882e-05, -0.0005110123007, -6.010816648e-06, -2.894212272e-05, -7.46821807e-05, -0.000126779442, -0.0001275529027, 2.528167196e-05, 0.0004294057329, 0.001007345965, 0.001190253808, 7.904226963e-05, -0.00136185948, -1.658799487e-05, -8.027915094e-05, -0.0002078282132, -0.0003539822054, -0.0003598226199, 5.553024382e-05, 0.001161053029, 0.002758101206, 0.00335398892, 0.000602994705, -0.003110472895, -4.089667438e-05, -0.0002002964849, -0.000524502777, -0.0009084013167, -0.0009691613642, -2.830416012e-05, 0.002569312159, 0.006402225116, 0.008116873091, 0.002427642899, -0.005787669932, -8.292715562e-05, -0.000413772422, -0.001103082378, -0.001959159998, -0.002234836439, -0.0006024178635, 0.004227306754, 0.01158359616, 0.01559678403, 0.006878302537, -0.007363299922, -9.932961732e-05, -0.000505693866, -0.001372197738, -0.002492742468, -0.003004934605, -0.001386628347, 0.003825040138, 0.01201466985, 0.01730166279, 0.0101083061, -0.004062209024, -2.317337254e-08, -1.096793113e-07, -2.754721265e-07, -4.634804937e-07, -5.272467951e-07, -2.788226922e-07, 3.724961323e-07, 1.116371074e-06, 7.224310834e-07, -2.467259583e-06, -5.400999106e-06, -1.939040691e-07, -9.115671761e-07, -2.248168403e-06, -3.615671272e-06, -3.581828012e-06, -3.088156344e-07, 7.140837423e-06, 1.59832459e-05, 1.505440758e-05, -1.099280408e-05, -3.835118768e-05, -9.329797395e-07, -4.378921513e-06, -1.070838122e-05, -1.678280435e-05, -1.505668202e-05, 4.248370337e-06, 4.640637869e-05, 9.761298147e-05, 0.0001014478155, -2.041474153e-05, -0.0001596572188, -3.362787268e-06, -1.580678467e-05, -3.856985374e-05, -5.973529398e-05, -5.05494662e-05, 2.677081114e-05, 0.0001936760331, 0.000399959283, 0.0004359270167, 9.530351219e-06, -0.0005057571396, -1.005362853e-05, -4.739882493e-05, -0.0001157699952, -0.0001785362733, -0.0001464245323, 9.952488297e-05, 0.0006297305474, 0.001293927593, 0.0014526119, 0.0002169946362, -0.001337571982, -2.617573062e-05, -0.0001237258752, -0.0003022185863, -0.0004632685067, -0.000365885808, 0.0003134188322, 0.001769765307, 0.003607806295, 0.004140146489, 0.001040039651, -0.003013200456, -5.964360293e-05, -0.0002818989433, -0.0006843404423, -0.001027235776, -0.0007322070617, 0.0009683725102, 0.004522812512, 0.008991018372, 0.01050654343, 0.003821373814, -0.00541791622, -0.0001093196416, -0.0005150572834, -0.001231880934, -0.001769117163, -0.0009891830366, 0.002561569174, 0.009641584378, 0.01838423518, 0.02178175137, 0.01056487962, -0.006293748931, -0.0001180629081, -0.0005544057521, -0.001301794943, -0.001764665865, -0.0006271685222, 0.003700042998, 0.01189466656, 0.0217540838, 0.02598668246, 0.01528361461, -0.002514170053 +-2.346761704e-09, -1.595132666e-08, -6.069438933e-08, -1.667165545e-07, -3.5729697e-07, -5.998576298e-07, -7.254548245e-07, -4.325157581e-07, 2.077752463e-07, -1.702212683e-07, -1.897055419e-06, -2.07781464e-08, -1.399495309e-07, -5.249338731e-07, -1.412826127e-06, -2.937567447e-06, -4.675195282e-06, -4.928847632e-06, -7.877723272e-07, 7.399052492e-06, 7.441673776e-06, -7.448094456e-06, -1.051319036e-07, -7.040344058e-07, -2.615519413e-06, -6.942681025e-06, -1.413871584e-05, -2.166484324e-05, -2.041053016e-05, 4.933509498e-06, 5.365917358e-05, 6.521670282e-05, -6.487706175e-06, -3.969825274e-07, -2.649128756e-06, -9.778989639e-06, -2.571781876e-05, -5.166205606e-05, -7.7218686e-05, -6.713678143e-05, 3.712882546e-05, 0.0002359968985, 0.0003085950502, 5.475040548e-05, -1.242638659e-06, -8.277263573e-06, -3.04296661e-05, -7.95412723e-05, -0.0001584063456, -0.0002333010313, -0.0001934779344, 0.0001436357954, 0.0007871919394, 0.001077262605, 0.0003417228543, -3.409844417e-06, -2.271157628e-05, -8.329866923e-05, -0.0002168552747, -0.0004294817204, -0.0006276456366, -0.0005111100217, 0.0004115523419, 0.00218344255, 0.003102265562, 0.001267565455, -8.336750678e-06, -5.564720657e-05, -0.0002038595484, -0.0005288147627, -0.001042088837, -0.001515719331, -0.001237951721, 0.0009402592058, 0.005155745871, 0.007600471108, 0.003653099271, -1.67380957e-05, -0.0001121801715, -0.0004105043585, -0.001059422069, -0.002072270225, -0.002995235686, -0.002475342627, 0.001609946018, 0.009547436258, 0.01458770214, 0.007893638491, -1.989153839e-05, -0.0001338979092, -0.0004888878308, -0.001252288159, -0.00242316667, -0.003467286868, -0.002893234021, 0.001533919841, 0.01009561254, 0.01589106298, 0.009346769089, -4.766519794e-09, -3.03563434e-08, -1.052272139e-07, -2.586317285e-07, -4.914389579e-07, -7.272010759e-07, -7.560912338e-07, -2.868596676e-07, 5.089689457e-07, 1.258370285e-07, -1.769083118e-06, -3.990083524e-08, -2.53417847e-07, -8.723131743e-07, -2.114512279e-06, -3.912125905e-06, -5.465044852e-06, -4.74634109e-06, 1.018769672e-06, 1.055728417e-05, 1.043278505e-05, -6.141077124e-06, -1.918816485e-07, -1.218825515e-06, -4.184952088e-06, -1.007524469e-05, -1.835525284e-05, -2.468507759e-05, -1.842112733e-05, 1.498048814e-05, 7.02298149e-05, 8.068963696e-05, 3.147255888e-07, -6.908825467e-07, -4.396628715e-06, -1.510123318e-05, -3.62754351e-05, -6.560011813e-05, -8.632997622e-05, -5.78901392e-05, 7.534650007e-05, 0.0002973247489, 0.0003654678676, 7.98461091e-05, -2.062830019e-06, -1.316199996e-05, -4.528269806e-05, -0.0001087826677, -0.0001961082216, -0.0002550292102, -0.0001595763996, 0.0002635423799, 0.0009744016151, 0.001249290868, 0.0004175977552, -5.363668114e-06, -3.429468127e-05, -0.0001180814325, -0.0002833420961, -0.0005083883573, -0.0006518899551, -0.0003768821587, 0.0007777819304, 0.002720673402, 0.003582750933, 0.001476921367, -1.221009785e-05, -7.80493465e-05, -0.0002678474765, -0.0006378172652, -0.00112709255, -0.001395310678, -0.0006611979059, 0.00211434412, 0.006708241669, 0.008915799429, 0.004208599589, -2.238517237e-05, -0.0001426003168, -0.0004847875421, -0.00113405329, -0.001939990315, -0.002231752434, -0.0005787379125, 0.004804670639, 0.01338181035, 0.01764316679, 0.009131781293, -2.42262648e-05, -0.0001535890453, -0.0005153596705, -0.001176276428, -0.001923319472, -0.00198410038, 0.0001410966672, 0.006155248713, 0.01528361461, 0.01982349191, 0.01088008787 +-2.792725653e-10, -2.558881675e-09, -1.322113645e-08, -5.045644445e-08, -1.576186625e-07, -4.225317262e-07, -9.758731129e-07, -1.800882293e-06, -1.948797687e-06, 9.069308917e-07, 4.89273449e-06, -2.459958023e-09, -2.235883899e-08, -1.144003172e-07, -4.319034967e-07, -1.333576142e-06, -3.528138143e-06, -8.005343201e-06, -1.429114974e-05, -1.380453085e-05, 1.255415275e-05, 4.521222757e-05, -1.238241987e-08, -1.118874724e-07, -5.6833536e-07, -2.128428556e-06, -6.514870961e-06, -1.706502691e-05, -3.818930448e-05, -6.638260941e-05, -5.810892813e-05, 7.634730296e-05, 0.0002290371933, -4.651537168e-08, -4.184730897e-07, -2.113796583e-06, -7.866899283e-06, -2.391768258e-05, -6.216324463e-05, -0.0001375762088, -0.0002339956876, -0.0001884371118, 0.0003134619175, 0.0008451325529, -1.447991157e-07, -1.298180603e-06, -6.526965118e-06, -2.416193011e-05, -7.302841568e-05, -0.0001884957534, -0.0004130601336, -0.0006894895811, -0.0005175356261, 0.00101071019, 0.002535736638, -3.944512065e-07, -3.524890745e-06, -1.763452514e-05, -6.487682031e-05, -0.0001946653283, -0.0004981004098, -0.001078995644, -0.001767820127, -0.001249569758, 0.002723721911, 0.006478924922, -9.535762833e-07, -8.484614373e-06, -4.21254843e-05, -0.0001533754424, -0.0004543061094, -0.001144723383, -0.002435278497, -0.003900628618, -0.002619185537, 0.006100903646, 0.01393458533, -1.885127876e-06, -1.666437371e-05, -8.173161697e-05, -0.0002924535426, -0.0008473613806, -0.002080087349, -0.004299758812, -0.00668458655, -0.004308691713, 0.01022337423, 0.02268257192, -2.204688288e-06, -1.932694323e-05, -9.329613289e-05, -0.0003262755763, -0.0009179021958, -0.002175496794, -0.004328925969, -0.006490863814, -0.004070508501, 0.009343634848, 0.02037727627, -5.367224312e-10, -4.500611362e-09, -2.093816574e-08, -7.152994571e-08, -2.006694565e-07, -4.885162551e-07, -1.043076727e-06, -1.814206202e-06, -1.843457398e-06, 1.119105953e-06, 5.056213252e-06, -4.496634276e-09, -3.769466496e-08, -1.750534417e-07, -5.959813383e-07, -1.663106447e-06, -4.016415977e-06, -8.457354467e-06, -1.424964207e-05, -1.276764288e-05, 1.442084028e-05, 4.658984764e-05, -2.162468451e-08, -1.815037582e-07, -8.431173678e-07, -2.867902373e-06, -7.984424371e-06, -1.919390749e-05, -4.002406163e-05, -6.578538888e-05, -5.284141518e-05, 8.530980786e-05, 0.000235476219, -7.782966974e-08, -6.546821738e-07, -3.04574148e-06, -1.036764722e-05, -2.885317243e-05, -6.919995869e-05, -0.0001433157795, -0.0002310423949, -0.0001693296869, 0.0003448354364, 0.0008672212592, -2.322318104e-07, -1.958402333e-06, -9.129077661e-06, -3.11162639e-05, -8.662852155e-05, -0.0002074783539, -0.0004273665778, -0.0006779962589, -0.0004599043299, 0.001101646559, 0.002598304561, -6.032770169e-07, -5.096573147e-06, -2.378083409e-05, -8.105801839e-05, -0.0002254020561, -0.0005382222388, -0.001101205046, -0.001719324152, -0.001084824793, 0.002963390579, 0.006636887748, -1.371230286e-06, -1.157528433e-05, -5.386241316e-05, -0.0001827062098, -0.0005045163416, -0.001193518712, -0.002411256599, -0.003687766036, -0.002143409089, 0.006703564142, 0.01430208549, -2.507638967e-06, -2.106515459e-05, -9.71488544e-05, -0.0003252521522, -0.0008829436602, -0.002046514105, -0.004039234522, -0.005996872149, -0.003141674597, 0.01150408766, 0.02339267359, -2.704865671e-06, -2.253849165e-05, -0.0001024726086, -0.0003360746411, -0.0008882163992, -0.001994249607, -0.003801210216, -0.005426123702, -0.002514170053, 0.01088008787, 0.02116143878 \ No newline at end of file